- 1. 重みつきランダム選択アルゴリズムの実装[JavaScript]
- 2. async awaitやPromiseはなぜ必要なのか?
- 3. JavaScriptの初心者が学ぶ②~繰り返し~
- 4. 脱出ゲーム#2 アイテムスロット
- 5. Google Analyticsが正しく設定されているかを調べる方法
- 6. HTML / CSS から Nuxt.js で webアプリを開発するまでのロードマップ
- 7. 謎解き用メモ#1 パスワード
- 8. 生JavaScriptでFizzBuzz問題とナベアツ問題を解く方法【jQuery未使用】
- 9. ド素人がLINE botを公開してみた
- 10. 元に戻せるほうのカリー化入門
- 11. Webを使った新人研修 ~SQL基礎編・SELECTクエリでデータ検索~
- 12. 画像ファイルのアップロード時に複数のプレビュー画像を表示する【Vue.js】
- 13. jQueryとeach()とreturn false
- 14. スクロール位置でクラスを付与してくれるDelighters
- 15. Nuxt.jsで初めて作成したポートフォリオをGitHub Pagesで公開しました
- 16. cookieを再設定するとexpiresの値が削除される
- 17. Yarnでローカルのパッケージをaddする方法
- 18. npmでローカルのパッケージをinstallする方法
- 19. HTMLフォームをJSONフォーマットに変換するjQueryライブラリであるjsFormの使い方
- 20. 商品一覧ページ内のカートに入れるボタンの実装(非同期通信)
重みつきランダム選択アルゴリズムの実装[JavaScript]
## 今回やりたいこと
トランプの神経衰弱ゲームをJavaScriptで実装しました。
[ゲームデモ画面](https://github.com/OnoYuta/app-memory-game)
![memory_game_play](https://user-images.githubusercontent.com/49770211/79117954-7bf77400-7dc7-11ea-9103-d6975390cc71.gif)カードをランダムに選択するときに重みづけの方法を考えました。私が調べた限りでは、JavaScriptにそういった関数は用意されていないようでしたので、重みづけの参考になればと思っています。
プログラミング初心者なので、気になる点などありましたらご指摘いただけると非常にありがたいです。
### NPCの仕様
対戦相手(以下、NPC)は、次のような仕様を設定しました。
1. ゲーム開始時はカードの配置と数字を知らない
2. 表になったカードの配置と数字を記憶する
3. 記憶できるカードの枚数には上限(以下、記憶容量)がある
4. 記憶容量を超
async awaitやPromiseはなぜ必要なのか?
# 非同期処理というものが必要な理由
Apache Http Serverは接続ごとにプロセスを生成するような仕組みです。このため、接続してくるクライアントがものすごく多くなると、メモリ領域を圧迫したり、レスポンス性能が壊滅的に低くなります。
この問題は、C10K問題(Client 10,000)と呼ばれ、これを解決するには、小さいリソースで多数のクライアントに対応できる仕組みが必要でした。
その具体的な解決策として出てきたのが、NginxやNode.jsです。今回はJavaScriptにおける`async await`に着目しますので、Node.jsについて焦点を当てます。
Node.jsでは、多数の処理要求をシングルスレッドで(少ないリソースで)高速に捌けるよう、ノンブロッキングIOを実現するアーキテクチャが採用されています。このあたりの詳しい説明は[「Node.jsでのイベントループの仕組みとタイマーについて」](https://blog.hiroppy.me/entry/nodejs-event-loop)で学びましょう。
要求を捌いてくれるスレッドは1つだけなわけで
JavaScriptの初心者が学ぶ②~繰り返し~
##概要
JavaScriptの文法を自分で忘れないためにメモの代わりとして投稿しています。###while
「while」は繰り返す回数が最初から決まっている場合に使用します。
1~100まで表示したい場合は“`javascript:while.js
let number=1;
while(number<=100){ console.log(number); number+=1; } ``` >1
2
3
︙
99
100###for
「for」は「while」と違い繰り返す回数が最初から決まっていない場合に使用します。
数字を3ずつ足していって100以下で最大の数字まで表示したい場合は“`javascript:for.js
let number=0;
for(let i=0;number<100;i++){ console.log(number); number+=3; } ``` >0
3
6
9
︙
96
99##最後に
まだまだ勉強中で未熟ですので、間違いなどありましたら教えていただけるとありがたいです。
脱出ゲーム#2 アイテムスロット
##脱出ゲームのアイテムスロットを作ってみました。
アイテムをクリック→かばんにアイテムが入る→アイテムが消える流れを作りました。
(2020/04/15追記 試作のため、粗削り。)“`nazotoki.html
謎解きWEB
{{bag}}
ボールGoogle Analyticsが正しく設定されているかを調べる方法
Google Analyticsを設定していてよくあるミスとして次のようなものがあります
– 設置したつもりが、データが入ってこない
– 実は狙った値が計測されていなかった
– 二重でページビューが発生したこういう時に、わざわざGoogle Analyticsを見なくても正しくGAに値が入ったかを調べる方法を以下に伝授します
## ChromeのデベロッパーツールのNetworkに全てがある
#### STEP.1 Chromeのデベロッパーツールを画像を参考に開いてください。
![スクリーンショット 2020-04-14 23.27.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/293892/f4cab826-a5a1-c8a3-b33a-402c6191484f.png)#### STEP.2 デベロッパーツールの中からNetworkを選んでください
![スクリーンショット 2020-04-14 23.29.03.png](https://qiita-image-store.s3HTML / CSS から Nuxt.js で webアプリを開発するまでのロードマップ
#はじめに
この記事では、HTML / CSS から学び、Nuxt.js で webアプリを開発するまでの過程を紹介します。本記事は、以下のような方が対象です。同じ初学者を意識しています。
1. web開発に興味がある。
1. HTML / CSS を学んだが、そこからどうすれば良いか謎。不可思議。
1. フレームワークとは何ぞや。フレームワークのフレームワーク?
1. どこまでやれば、どういうものができるのか具体的に知りたい。
1. とりあえず、web開発に興味はあるよ。その道の方でも、「趣味で学ぼうとする人は、こういう学び方をしているんだな」と参考になるかもしれません。
筆者である[うたかた](https://qiita.com/utakata2u)は、web開発を始めて早2ヶ月ですが、わからないことでいっぱいです。基本的に表面的な理解に終始しています。ただ「初学者でも、今あるものを使うと、こういうものができるよ」という具体例とその学習過程を紹介することで、何か少しでもお役に立てたらと思います。Qiita も利用し始めたばかりなので、何かありましたら色々とご指摘いただけ
謎解き用メモ#1 パスワード
##脱出ゲームの謎解きでよくある、3つの数字を入れると進めるやつ
“`nazotoki.html
謎解きWEB
{{message}}
“`
“`vue.js生JavaScriptでFizzBuzz問題とナベアツ問題を解く方法【jQuery未使用】
JavaScriptで分からないことを調べてもjQueryを使用した例ばかりしか出てこずに困った経験があったので、生のJavaScriptでナベアツ問題を解く方法についてまとめます。
## FizzBuzz問題
JavaScriptを使って1から100までの数字を順番にconsole.logで出力する。
ただしその数が3で割り切れるなら”Fizz“、5で割り切れるなら”Buzz“、両方で割り切れるなら”FizzBuzz”をそれぞれ数字の代わりに出力する。### FizzBuzz問題の解答コード
“`javascript
function fizzbuzz() {
for (let i = 1; i <= 100; i++) { if(i % 3 === 0 && i % 5 === 0) { console.log("FizzBuzz"); } else if(i % 3 === 0) { console.log("Fizz"); } else if(i % 5 === 0)ド素人がLINE botを公開してみた
プロトアウトスタジオという、プログラミングスクールではなく、プロトタイピングをアウトプットするというスクールに参加し始めた人の記事です。
授業にて、「heroku」というPaaSサービスにソースコードをのせて動かす体験をしました。
サーバとかOSとか、プログラムを動かすための環境づくりに必要な知識をすっ飛ばしていきなりサービスを無料で動かせる時代になっているのですね。今回の宿題は「HerokuでNode.jsの仕組みをURLを公開しチャットボットを移植しアウトプットする」です。以前の宿題「LINEbot+API」に挑戦した際のコードに少し手を加えて、「いぬ」とリクエストすると犬の画像をレスポンスするLINEbotをherokuに乗せて公開します。
![QR.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599091/49cbcf1c-e51b-5053-87a9-c259a15e6df9.png)
“`js
‘use strict’;const express = require(‘
元に戻せるほうのカリー化入門
# 想定読者
高階関数、カリー化、部分適用、クロージャ
などの言葉を目にするたび不安になってしまい
それぞれの意味を何度も調べてしまう人へ[^誰]。カリー化の反対にあたる逆カリー化に焦点を当て、
もう忘れないように理解をまとめておきたい。[^誰]: おもに自分のためであり、言うまでもないが、記述の正しさは保障できない。
# 高階関数
引数もしくは戻値が関数であるとき
その関数を[高階関数](https://ja.wikipedia.org/wiki/高階関数)と呼ぶらしい。“`javascript:高階関数
const apply = f => x => f(x)
“`関数 `apply` は1引数関数 `f` を引数に取って
関数 `x => f(x)` を返すので高階関数と言える。関数の関数という構造は何となく神秘的で
特別な名前を付けたくなる気持ちは分かる。しかし、本質的に重要なのは
数値などと同じように関数を扱えること[^first-class object]
なのではないかと個人的には思う。[^first-class object]:
Webを使った新人研修 ~SQL基礎編・SELECTクエリでデータ検索~
######[Webを使った新人研修 ~SQL基礎編~](https://qiita.com/fujisystem/items/ed3236c0e73907cf3942)
#SELECTクエリでデータ検索
細かい説明をしていては果てしないので、「習うより慣れろ」の精神で
まずは、「実践」してみましょう。##実践する
[Ideone](https://ideone.com/l/sqlite)をブラウザで開いてみましょう。
右下の緑色ボタン「Run」を押してみましょう。
“`sql
create table tbl(str varchar(20));
insert into tbl values(‘Hello world!’);
select * from tbl;
“`[これ](https://ideone.com/tnBMEM)をforkしてみても良いです。
##解説
例題を示して記憶の定着を図ってみます。
##例題
1.〜“`sql
“`~本日はここまで
画像ファイルのアップロード時に複数のプレビュー画像を表示する【Vue.js】
# ファイルアップロード時に複数の画像プレビューを表示する
題名の通りですが、今回は備忘録として、
画像アップロードを行う際に複数の画像プレビューを
Vue.jsを利用して表示する方法について書いていこうと思います。## FileAPI
FIleAPIについては以下のドキュメントを参照してください。
https://developer.mozilla.org/ja/docs/Web/API/File## 実装例
“`vue
ファイル名: {{ uploadFile.fileName }}
ファイルタイプ: {{ up
jQueryとeach()とreturn false
なんてないことですけど備忘録。
`$(‘hoge’).each()`
なんてので総当たりする。
ifを使って判定して条件にマッチしたときに処理を止めるとき“`
$(‘.hoge’).each(function(){
if(!$(this).hasClass(‘active’)){
$(‘.fuga’).removeClass(‘active’);
return false;
} else {
$(‘.fuga’).addClass(‘active’);
}
});
“`と、「return false;」を入れる。
もしページ内の.hogeに.activeが無ければそこで処理を止める。
ページ内の.hogeに全部.activeがあればelseを通ります。忘れていたのでここに書いとく。
スクロール位置でクラスを付与してくれるDelighters
[Delighters公式サイト](https://q42.github.io/delighters/)スクロール位置によって、表示要素に動きを付けたい際利用できるライブラリです。
散々流行った今更のパララックスかもしれませんが、まだちょっと需要はありそうです。この演出をGoogle先生に聞いてみたところ、jQueryを利用したライブラリばっかりがヒットしてしまいました:cry:
Delightersはピュアなjsで実装できる貴重なライブラリだと思います。## Delighters Good Points :point_up:
◉ 軽量
◉ レスポンシブ対応 – タブレット、スマホもどんとこい!!
◉ スクロール位置で指定した要素にクラスが付与されるだけ。導入がシンプルで簡Nuxt.jsで初めて作成したポートフォリオをGitHub Pagesで公開しました
この記事は、「Nuxt.js ってなんですか?」な状態の人間が、やりたいことを盛り込んで作成したポートフォリオについて書いたものです。
# 作成したポートフォリオ
[https://tayuta.github.io/portfolio/](https://tayuta.github.io/portfolio/)
GitHub Pages に公開しています。[https://github.com/tayuta/portfolio](https://github.com/tayuta/portfolio)
ソースコードです。![キャプチャ4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178572/08478d28-e3ad-cd97-e1df-2c644a61ec31.png)
![キャプチャ5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178572/42a9e873-2b87-20b1-499a-fd52cookieを再設定するとexpiresの値が削除される
cookie操作時に気づいたので共有します。
以下のようなexpires(有効期限)の設定されたcookie情報があった場合に
`key=valA; expires=2020-04-15T14:00:00.000Z;`以下のように値だけ入れ直したところ
`document.cookie = ‘key=valB;’`予想では以下のように値だけ変更される想定でしたが、
`key=valB; expires=2020-04-15T14:00:00.000Z;`実際には以下のように値は変更されるが、
同時に有効期限の値が失われてしまった
`key=valB;`なので、有効期限を設定されていた場合は、
以下のように値だけの更新であっても、有効期限も設定し直す必要があることが分かった
`document.cookie = key=valB; expires=2020-04-15T14:00:00.000Z;`以上。
あまり、この事に触れた記事を見かけたことがなかったので投稿してみました。
ご参考まで!Yarnでローカルのパッケージをaddする方法
この投稿では`yarn`コマンドで、ローカルのパッケージをインストールする方法を紹介します。
通常`yarn add`はnpmjs.comで公開されたパッケージをダウンロードしてきてインストールしますが、ここで説明するのはローカルにのみ存在する自作のライブラリを`add`する方法です。
(`npm`で同様のことをする方法は、「[npmでローカルのパッケージをinstallする方法](https://qiita.com/suin/items/c9c342f557bd885dbe06)」をご覧ください)
## やりかた
ローカルのパッケージをインストールには、単純にインストールしたいパッケージのファイルパスを`yarn add`の引数にします:
“`bash
yarn add インストールしたいパッケージのパス
“`node_modulesにインストールされるパッケージをシンボリックリンクにしたい場合:
“`bash
yarn add link:インストールしたいパッケージのパス
“`## ローカルパッケージをインストールする具体例
少し具体例をもとに説明しま
npmでローカルのパッケージをinstallする方法
この投稿では`npm`コマンドで、ローカルのパッケージをインストールする方法を紹介します。
通常`npm intall`はnpmjs.comで公開されたパッケージをダウンロードしてきてインストールしますが、ここで説明するのはローカルにのみ存在する自作のライブラリを`install`する方法です。
(`yarn`で同様のことをする方法は、「[Yarnでローカルのパッケージをaddする方法](https://qiita.com/suin/items/409dc019de605830b4c2)」をご覧ください)
## やりかた
ローカルのパッケージをインストールには、単純にインストールしたいパッケージのファイルパスを`npm intall`の引数にします:
“`bash
npm install インストールしたいパッケージのパス
“`## ローカルパッケージをインストールする具体例
少し具体例をもとに説明します。
以下の図のように、`myapp`パッケージと`mylib`パッケージがあり、`myapp`から`mylib`を使いたい例を見てみましょう。
![](http
HTMLフォームをJSONフォーマットに変換するjQueryライブラリであるjsFormの使い方
# HTMLフォームからJSONフォーマットに変換
## 序説
HTMLのフォーム関連要素(form, input, textarea, etc.)の値をJSON形式に変換したい(そしてそれをajax等で送信したい)という需要はそれなりにあるようです。私もその必要があったのでそれを探したり試したりしました。私がググった結果では以下のようなものが見つかっています。
– [【JavaScript】「formをjsonにしてpost」する。](https://qiita.com/hnkyi/items/3f2faf2848cc2de0cf8c)
– [フォームの内容をJSON形式で取得「JSON Form」](https://webkaru.net/jquery-plugin/json-form/)
– [postするデータをjson化してpostすればcollectionなどにも対応出来そう。](https://pod.hatenablog.com/entry/2015/03/28/111337)皆さん苦労されているようですね。
試行錯誤の結果、私は素直に[jsForm](htt商品一覧ページ内のカートに入れるボタンの実装(非同期通信)
#はじめに
商品一覧ページ内の各商品に割り振られているカートに入れるボタンが押された際にuser_idとeffector_id(現在作成中のアプリケーションではエッフェクターが商品のため各所でeffectorを使用していく)にログイン中のuserのidとクリックされた商品のidを保存することを目指す。今回は非同期通信を使用したい。
#テーブル、コントローラー、APIの作成
##cartsテーブルの作成
“`:ターミナル
アプリケーションのディレクトリ$ rails g model cart
“`
cartモデルの作成“`(migrateファイル)create_carts.rb
class CreateCarts < ActiveRecord::Migration[5.0] def change create_table :carts do |t| t.references :user, foreign_key: true t.references :effector, foreign_key: true t.timestamps関連する記事
OTHERカテゴリの最新記事
- 2024.09.19
JavaScript関連のことを調べてみた
- 2024.09.19
JAVA関連のことを調べてみた
- 2024.09.19
iOS関連のことを調べてみた
- 2024.09.19
Rails関連のことを調べてみた
- 2024.09.19
Lambda関連のことを調べてみた
- 2024.09.19
Python関連のことを調べてみた