- 1. React Class内での関数定義(bindしよう)
- 2. elecom WRH-300XX3をAPモードで使うときのDHCPサーバの止め方
- 3. Playframework+axiosによるPOSTするときの注意点(CSRFTokenとlist)
- 4. 非同期APIをPromiseでラップしてasync/awaitで使う
- 5. 【PWA】YouTubeをみんなでワイワイ見るためのサービスをローンチしました!!
- 6. ショートコーディングで階乗計算機を作る
- 7. #twitch の配信中のチャットログを #discord でロギングするBOT
- 8. Next.jsで環境変数を利用するのにdotenvは必要ない
- 9. (JavaScript)イベント駆動について
- 10. Web Speech API で読み上げ位置を取得
- 11. Tabulatorを使ってみた日
- 12. 初心者によるプログラミング学習ログ 232日目
- 13. 【備忘録】コンソール君「ん?そのプロパティ未定義やぞ?」 俺「何言うとんねんワレェ!」【まぬけ注意】
- 14. 任意の HTML 要素をフォーカス可能にする tabindex 属性
- 15. ビット演算による商(切り捨て)・余り計算
- 16. [js] filter,reject,map,reduceの基本を押さえる
- 17. 【サンプルコード】JavaScriptでスロットゲームをプログラミング
- 18. [Vue.js] どうしてVue.set()で配列の更新が検知できるの?
- 19. [超簡単] Reactからfirestoreにアクセスするデモ!
- 20. グループ分けアプリを作って護廷十三隊を分けてみた
React Class内での関数定義(bindしよう)
##はじめに
個人的なメモレベルです。##メソッド記法での問題点
Reactで`setState`を利用する際に、JSXで、以下のように書くことが多いかなと思う。
“`react:クラスのプロパティとして関数を定義
doPlus = () => {
this.setState({count: this.state.count + 1});
};
“`以下のような書き方の場合、エラーになります。
これクラス内に定義されたメソッドであっても、実行方法によって、`thisの参照先`は変わってしまうJSの仕組み故。この場合、`button`に関数オブジェクトをそのまま渡しているので、`thisの参照先`は`button`になってしまう。
JSの初心者が最初にぶつかる壁は`this`の扱いですよね。。。
“`react:ボタンを押下すると、undefindeエラーとなる
doPlus(){
this.setState({count: this.s
elecom WRH-300XX3をAPモードで使うときのDHCPサーバの止め方
elecom WRH-300XX3を使ってるのですが、これのDHCPサーバが悪さをしてうまくつながらないときの対処。設定Webページからは設定が見えないので、Chromeの検証から強制的に見えるようにして変更した話(備忘録)。
– APモードなのでDHCPサーバは不要
– 仮に使ったとしても、デフォルトゲートウェイは(APモードなので)元ルータに指定したいのにできないなお、この方法は下手をするとWRH-300X3にアクセスできなくなる可能性があるので、実施する際には自己責任でお願いします。
# 手順
1. 設定ページにアクセスして、動作モード選択をAPモードにして再起動。
2. 「インターネット設定」→「LAN設定」を開く
3. ページ内で右クリックして、「検証」
4. elementブラウジングで以下をたどる
– <html>→<frameset>→<frameset>→<frame>→#document→<html>→<body>→<blockquote>→<form>
5. ふたつめの→<table>がsty
Playframework+axiosによるPOSTするときの注意点(CSRFTokenとlist)
# PlayFramework(twirl)によるform
PlayFrameworkにはtwirlというテンプレートエンジンが用意されている。“` hoge.scala.html
@helper.form(action=”/hoge/huga”,Symbol(“id”)->”form1″) {
@CSRF.formfield
@helper.inputText(nankanoForm(“nanika”),Symbol(“id”)->”text1″,Symbol(“placeholder”)->”field”)
}
“`このようなテンプレートからレンダリングされたhtmlでsubmitすれば入力したデータが
GET/POSTされ用意したnankanoformのcase classなどで受け取ることが出来るが、
クライアント側でajaxリクエストを行うといくつか問題が発生する。## CSRF対策(POST時)
PlayframeworkではCSRFfilterを有効にするとRequestにCSRFTokenが設定されてないものは
非同期APIをPromiseでラップしてasync/awaitで使う
setTimeout と Web Speech API を Promise でラップする例を示します。
Web Speech API の基本的な使い方については以下の記事を参照してください。
* [Web Speech API で読み上げ位置を取得](https://qiita.com/7shi/items/43452dcd34e57100fc3c)
# setTimeout
Promise の例としては定番です。
## コールバック
非同期 API にコールバックを渡す処理をネストすると、俗に言うコールバック地獄になります。
`setTimeout` によって1秒後に1、2秒後に2、3秒後に3を表示する例です。
“`javascript
setTimeout(() => {
console.log(1);
setTimeout(() => {
console.log(2);
setTimeout(() => {
console.log(3);
}, 3000);
}, 2
【PWA】YouTubeをみんなでワイワイ見るためのサービスをローンチしました!!
みなさんこんにちは!
今回はYouTubeの動画を複数人で同時視聴できるサービスを作りましたので紹介したいと思います。
ブラウザを開くだけで、友達や恋人と同じ動画を見ることができます!複数人で同じ動画を見て、あーでもないこーでもないと意見を交わすのは**めちゃめちゃ楽しい**です。
これはぜひ皆さんにも体験してもらいたいです!YouTube同時再生サービス **DJ7**
https://www.dj7.io初回のアクセスは音がならないように設定してありますのでご安心ください。
![アートボード 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471880/2c81af09-f2ef-7068-992a-64ede9e97b21.png)
# できること
## 同期再生
サービスの要です。複数のデバイス間で再生の状態が同期され、離れている場所でも同じタイミングで同じ動画を視聴できます。
右下をクリックすると動画を画面に大きく表示します。これによって複数人で同じ動画を見ることができま
ショートコーディングで階乗計算機を作る
ショートコーディングで階乗計算機を作る
動作サンプル https://www.o–o.cf/
“`html
“`たったこれだけ。
メモ帳に貼り付けてやってみてください。
以上
#twitch の配信中のチャットログを #discord でロギングするBOT
githubと改行ルールが違って二重管理になるため、詳細は下記のgithubのREADME.mdを参照のこと。
https://github.com/github895439/twitch_chat_logging_bot
Next.jsで環境変数を利用するのにdotenvは必要ない
# tl;dr
`next.config.js`の`env`に任意の値を設定するだけ
`dotenv`を使いたい場合には`next.config.js`で`dotenv`を呼び出せばよい# 解説
Next.jsはVersion 8からbuild-inで環境変数(Environment Variables)に対応しています。
[Blog – Next.js 8 | Next.js](https://nextjs.org/blog/next-8#build-time-environment-configuration)
下記リンクを参考にすれば容易に設定できるでしょう。
[Environment Variables – Documentation | Next.js](https://nextjs.org/docs/api-reference/next.config.js/environment-variables)ただし既存のdotenvシステムを利用したいケースもあるかと思います。
本体レポジトリにdotenvを使用したexampleも存在しているので参照してみましょう。
[
(JavaScript)イベント駆動について
今日はJavaScriptとjQueryについて学習しました。
JavaScriptは「イベント駆動」という概念に基づいて設計されているそうです。
Javaスクリプトにおけるイベントとは、HTMLの要素に対して行われた処理要求のことで
例えば、「ある要素の上にマウスカーソルを乗せる」、「ブラウザ上のボタンをクリックする」なども
イベントに当たります。
そのイベントが発生したらそれをきっかけにコードが実行される仕組みが「イベント駆動」です。
Webページを見ていてカッコいい動作は大体JavaScriptのおかげなのだなと思いました。
Web Speech API で読み上げ位置を取得
ブラウザでテキストを読み上げる Web Speech API で読み上げ位置を取得します。
# Web Speech API
語学学習に音声合成が使えないかとクラウドサービスを調べましたが、契約が必要で料金が気になりました。ですが最近のブラウザでは API として実装されていることを知りました。
* [Web Speech API](https://wicg.github.io/speech-api/)
* [Web Speech API – Web API | MDN](https://developer.mozilla.org/ja/docs/Web/API/Web_Speech_API)概要は次の記事に詳しいです。
* [Webページでブラウザの音声合成機能を使おう – Web Speech API Speech Synthesis](https://qiita.com/hmmrjn/items/be29c62ba4e4a02d305c)
* [Web Speech APIの実装 – Speech Synthesis API | CodeGrid](https://a
Tabulatorを使ってみた日
##Tabulatorとは
html5の表を簡単に作成できるJavaScriptライブラリー##手順
・jqueryを[ここ](https://code.jquery.com/)からCDNで読み込んだ.
・[GitHubリポジトリ](https://github.com/olifolkerd/tabulator)からTabulatorライブラリーをコピーして、tabulator.cssとtabulator.jsファイルをプロジェクトに読み込む。“`hoge.html
```
```hoge.js
$("#example-table").tabulator({
columns:[
{title:"Name", field:"name", sortable:true, widt
初心者によるプログラミング学習ログ 232日目
#100日チャレンジの232日目
twitterの100日チャレンジ#タグ、#100DaysOfCode実施中です。
すでに100日超えましたが、継続。100日チャレンジは、ぱぺまぺの中ではプログラミングに限らず継続学習のために使っています。
232日目は
おはようございます
232日目
・MySQLを自分のパソコンに導入
・udemyでcss+javascript講座#早起きチャレンジ【備忘録】コンソール君「ん?そのプロパティ未定義やぞ?」 俺「何言うとんねんワレェ!」【まぬけ注意】※ご覧いただいてる方々に諸注意です。投稿主はプログラミング・環境構築含め独学のため、誤解している点や間違っている点が多くある場合があります。もし、私が間違った知識・情報をドヤ顔で記載していた場合、優しくご指摘いただくようよろしくお願いします。
#Reactの技術本のソースコード模写中の話
模写終了後ターミナルでサーバー起動を確認。
動かそうとするとlocalhostの接続はできるものの画面は何も表示されず…↓
![64dfa314cc10be07c7d04c18f766ef8f.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463548/714f993f-b36c-e218-080b-4a520271dec6.png)
ハテ・・・困りましたわ・・・
とりあえずchrome側のコンソールでエラーを確認しまっせ。↓
![3cb60ac6d22960ca67f4e1e8b02f851e.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co任意の HTML 要素をフォーカス可能にする tabindex 属性
## はじめに
フロントエンド開発をしている皆さんは普段からアクセシビリティを考慮した実装をしていますか?
近年の SPA を中心としてフロントエンド開発の手法が体系化されてきた流れで、アプリケーションの設計や状態管理等の議論は増えましたが、(特に日本では) アクセシビリティについての議論はまだ少ないように思われます。
そこで今回は、HTML の `tabindex` 属性と具体的な事例を紹介します。## 結論
- アクセシビリティのために Web ページは tab キーのみで操作できるのが理想
- `tabindex` 属性を使えば tab キーで任意の要素にフォーカスさせたり、フォーカスされる順番を変更したりできる
- インタラクティブではない要素に使用すると逆にアクセシビリティが悪化するので注意が必要
- `tabindex` 属性を指定することでインタラクティブな要素を作ることができる## なぜ重要なのか
Web は今や世界中の誰もが利用できる場所となっているため公共施設と言っても過言ではありません。そこでは何の不自由もなく利用できる人もいれば **支援技術の力を
ビット演算による商(切り捨て)・余り計算
ビット演算は低級言語に近いのでどんな言語においても速い.
2 の n 乗での割り算で特に便利.# 一般
商 : 割り算の解(小数)に対して 0 を OR 演算
(余 : % 演算子を使用, ビット演算じゃない)```javascript:ex.17÷6の商と余り
q = (17/6)|0; // 商 = 2
r = 17%6 // 余り = 5
```結局途中で小数が発生するからそんなに速くはないが, Math.floor よりは軽い.
# 2 の n 乗 (1, 2, 4, 8, 16...) での割り算の場合
商 : 左へ n ビットシフト
余 : (2^n)-1 で AND 演算```javascript:ex.17÷8の商と余り
q = 17>>3; // 商 = 2
r = 17&7; // 余り = 1
```
ちなみに```javascript:バイナリ周り
// N bit のデータを格納するのに必要な byte 数は
byteLength = 1 + ((N-1)>>3);
// Uint8Array の先頭から N ビット目を取り出すには
b
[js] filter,reject,map,reduceの基本を押さえる
高階関数(Higher Order Functions)を使いこなしてこそのjsだと偉い人が言っていました。
ここではその代表格である、filter, reject, map, reduceの基本的な使い方を纏めておきます。
ちなみに、これはとあるYoutubeの講座を見て、自分用にまとめておこうと思い立っただけですので悪しからず。##高階関数とは
高階関数とは、引数に値の替わりに関数を受け取る関数のことです。
JavaやPHPなどと違い、jsは関数も値であると考え、変数に代入できたりするのが特徴ですよね。
そうした特徴をふんだんに使っていこうぜってことみたいです。
(高階関数はjsに限った話ではありませんが)##filterとrejectの使い方
filterとrejectは配列に条件を渡して、
その条件を通ったもの要素だけを纏めた新しい配列を作る関数です。
当然要素数は元の配列より少なくなります。早速中身を見てみましょう。
まずは、比較したいので高階関数を使わない例から見てみます。```js
//動物の名前と種類を格納したデータを用意
let animals =
【サンプルコード】JavaScriptでスロットゲームをプログラミング
どうも、UT([@ut_1029](https://twitter.com/ut_1029))です。ブログ([UTの日常](https://blog.mm-kun.com/category/system/))の紹介です。
JavaScriptでスロットゲームをプログラミングしたサンプルコードを紹介します。
スロットゲームは、JavaScriptのアニメーション勉強に最適でした。
***スロットのリールの表示位置をJavaScriptで制御して、回転のアニメーション制御処理がポイントです。***
![スロット.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197791/966e62eb-f2e1-9323-71db-345a68db4724.jpeg)
## JavaScriptで作成したスロットゲームのサンプルコード
JavaScriptでプログラミングしたスロットゲームのサンプルコードを紹介します。
※HTML + CSS + JavaScriptを1つのファイルに記述しています。``
[Vue.js] どうしてVue.set()で配列の更新が検知できるの?
[[Vue.js]配列の変更が検知できない理由の「JavaScriptの制限」って何よ! - Qiita](https://qiita.com/kozzzz/items/feb5e0a16d6f1fad08e8)
こちらの記事で配列の更新検知には`Vue.set`を使うと記載したのですが、
どうして検知できるのかな?って思って調べました。## 結論
内部では`splice()`をしているだけだった。## 実装を見てみる
公式[GitHub](https://github.com/vuejs/vue/blob/6fe07ebf5ab3fea1860c59fe7cdd2ec1b760f9b0/src/core/observer/index.js#L209)を見てみましょう! :eye: :eye:```js
export function set (target: Array| Object, key: any, val: any): any {
// 中略
if (Array.isArray(target) && isValidArrayIndex(key
[超簡単] Reactからfirestoreにアクセスするデモ!
firebase初心者のアクマちゃん([@akumachanit](https://twitter.com/akumachanit))デモ!
firebaseめちゃくちゃ簡単で楽しいからみんなもやってみるデモ!
今日はReactからfirestoreにアクセスする手順を説明するデモ〜〜〜!#今回やること
1. firebaseをReactアプリに**インストール**する
2. **firebaseプロジェクト**を作成する
3. **データベース**を作成する
3. **接続用コンポーネント**を作成する
4. データを**出し入れ**してみる1と2はすでにやってある人は飛ばしていいデモよ!
#firebaseをReactアプリにインストールする
Reactアプリのディレクトリで`npm install`するデモ```terminal
npm install firebase@latest
```#firebaseプロジェクトを作成する
説明しなくてもわかると思うけど、コンソール入ってプロジェクトを追加!
![プロジェクト作成](https://qiita
グループ分けアプリを作って護廷十三隊を分けてみた
##はじめに
- 結構な人数で懇親会をしたい
- テーブルが別れている店を予約してしまった
- 同じ部署の人は離れて座ってほしいこんな条件が揃った時に使うグループ分けアプリを作りました。
試しに最近はまったBLEACHに出てくる護廷十三隊をグループ分けしてみます。(まだ全巻読んでいないので初期メンバーで)##デモ
4ステップでグループ分けしていきます
1. 氏名と部署を入れたCSVファイルを読み込む → csvの内容が下に表示される
2. グループ数を入力 + [表を作成]をクリック → グループの数だけ表が作成される
3. [START]をクリック → ビンゴっぽく動く
4. [STOP]をクリック → 各グループに振り分けられる![demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533386/20070c76-4e85-5fd8-1575-63c9b7505072.gif)
##CSVを読み込んで画面に表示する
[こちらの記事](https://www.sejuku.net/b