- 1. [Node.js] Expressサーバーのタイムアウト時間を変更する
- 2. 初めてのブックマークレット
- 3. RxJSのオペレーターの動きをデモアプリを自作して確認してみた
- 4. TypeError: Cannot read properties of undefined (reading ‘byteLength’) AWS SDK for JavaScript v3で少しハマった話
- 5. REST API Design Best Practices を用いたAPI開発 #2 (APIのVersion管理)
- 6. Javascriptでクリックでclassを変更
- 7. JS/TSでバイナリ⇔BASE64はライブラリを使わなくても簡単に出来る
- 8. FineReportによく使われるJavascript
- 9. jQuery – 入力時、リアルタイムで半角に変換していく!
- 10. Three.jsを使ってみる(カメラ制御編)
- 11. JavaScriptでUnicodeの濁点・半濁点を分離する
- 12. 【非同期処理】JavaScriptのPromise, async, awaitなどについての整理と使い方
- 13. Realtime Databaseのルール設定方法(Firebaseバージョン9)
- 14. HTML Canvasのインターフェイスのまとめ #2
- 15. Jestのまとめ –公式ドキュメントを読んで–(最低限で投稿、今後更新)
- 16. REST API Design Best Practices を用いたAPI開発 #1
- 17. 【今度こそわかる】クッキーとセッション
- 18. (備忘録)今日つまづいたスマホレイアウトのあれこれ
- 19. パスパラメータ”/:id(\\d)”はどういう意味? Node.js Expressのパスパラメータの設定の色々
- 20. JavaScript学習:DOM
[Node.js] Expressサーバーのタイムアウト時間を変更する
# デフォルト
Expressでは、リクエストのタイムアウトデフォルト値が**2分**に設定されています。
# タイムアウト時間を設定
以下のように、オプションとして`timeout`が用意されています。そちらの値をミリ秒で指定することで、タイムアウト時間を変更することができます。
“`app.js
const express = require(“express”)
const app = express()
…
const appServer = app.listen(80, () => { })
appServer.timeout = 1000 * 60 * 5 // 5min
“`# 参考
※2022/5/19追記:見れなくなっちゃってますね
[Node.js サーバーのタイムアウトの時間を変更する](http://backham.me/blog/2019/10/24/node-js-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%A2%E3%82
初めてのブックマークレット
## 概要
前々からブックマークレットの自作には興味があったので、今回は重い腰を上げて簡単なプログラムを書いてみました。(都内SE1年目)## 使用方法
1.ブラウザーでブックマークを追加し、URL 欄に下記コードをペースト(名前は任意)
2.任意のページを開き、保存したブックマークを選択成功すると alert表示と共にフォルダーパスの文字列をクリップボードにコピーします
“`javascript
javascript:
let text = location.href;
navigator.clipboard.writeText(text);
alert(“Copied !\n–\n” + text);
“`## ブックマークレットの第一歩
ブックマークレットはJavascriptで書かれたプログラムです。
なのでその先頭に“`javascript:“`を明記しなければ機能しません。(明記していなければそもそもブックマークに登録できない)#### HelloWorld
“`javascript
javascript:alert(“Hello World”
RxJSのオペレーターの動きをデモアプリを自作して確認してみた
## 以下の記事を参照して頂ければと思います
https://note.com/shift_tech/n/n7643a684e947
**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です。**
## 補足
以下で少し上記の記事内の「おまけ」に掲載していた[コード](https://note.com/shift_tech/n/n7643a684e947#%E3%83%87%E3%83%A2%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)について補足をする。#### “this.stream$ = this.stream.asObservable();”に関して
まず、SubjectはObservableでもありObserverでもあると言われる(以下、[公式](https://rxjs.dev/guide/subject)からの引用)。> Ev
TypeError: Cannot read properties of undefined (reading ‘byteLength’) AWS SDK for JavaScript v3で少しハマった話
## はじめに
ローカルではAWS CLIのconfig設定([設定の基本](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-quickstart.html)を参照)をしていたので問題にならなかったが、CIでテスト実行しようとした時に、SDKのクライアントのコンストラクタでクレデンシャルを設定しようとしてハマったので、気を付けたいポイントについて備忘録を残す。※以下ではCI上でSDKのクライアントのインスタンスをmock化しないで利用しているが、CI環境でテストするのにそもそもSDKをそのまま動かしているのはおかしいのでは…?という突っ込みが当然あると思う。結合でテストしたい場面ではないのであれば、単体テストとして実装するので本来はmockにすべきだが、今回は敢えてmockにしないとどういう事が起きるのか?mockにしないでテスト=単体テストではなく結合テストをCI環境で簡単に実行できるのか?を検証してみたかったので、モックではなく、SDKをそのまま使うという事をした。
## 結論 どうすれ
REST API Design Best Practices を用いたAPI開発 #2 (APIのVersion管理)
本記事は[REST API Design Best Practices を用いたAPI開発 #1](https://qiita.com/ryumura/items/9ee28d43ec27edc36e2e)の続きです。
## 動機
[REST API Design Best Practices を用いたAPI開発 #1](https://qiita.com/ryumura/items/9ee28d43ec27edc36e2e)と同様、以下の記事をFollowしながら手を動かすことで、少しでも昨今の流れ・感覚をCatch Upをすること、また自分自身のメモとして残すことを目的として記事に起こす。https://www.freecodecamp.org/news/rest-api-design-best-practices-build-a-rest-api/
## 本記事で実施すること
* APIのVersion管理
* URLを用いたVersion管理の実装
* サーバの起動とアクセス確認## 環境
[REST API Design Best Practices を用い
Javascriptでクリックでclassを変更
## 方法
[参考記事](https://www.delftstack.com/ja/howto/javascript/javascript-toggle-class/)“`javascript
Document
クリックするとスタイルが変わります。
JS/TSでバイナリ⇔BASE64はライブラリを使わなくても簡単に出来る
JS/TSは、バイナリデータをBASE64エンコードするビルトイン機能が無いため、大人しくライブラリを使うか自前でロジックを用意する必要がありました。
結局はライブラリを使用する場合が多いのですが、機密性の高いデータを扱う場面もあるため、ブラックボックスになるのも精神衛生的に良くないなぁと、ずっと思っていました。
とはいえ、アルファベットテーブルを拵えて6ビット区切になるようビットシフトして文字列加算して…を毎回用意するのも気が引けていました。
しかしある時「実はビルトイン機能を組み合わせるだけで簡単に出来るのでは?」と単純な思い付きで書いたコードがすんなり動いてしまったので、本当に大丈夫なのか有識者の意見も欲しく、こうして記事にしてみました。
# 本体コード
“`ts
function base64encode(data:Uint8Array){
return btoa([…data].map(n => String.fromCharCode(n)).join(“”));
}function base64decode(data:string){
FineReportによく使われるJavascript
# ハイパーリンク
## ポップアップで画面を表示する方法
### 一般
“`
//テンプレートパス(必要に応じて設定します)
var url = encodeURI(encodeURI(“/webroot/decision/view/report?viewlet=GettingStarted.cpt”));
//Iframeウィンドウ定義
var $iframe = $(“
jQuery – 入力時、リアルタイムで半角に変換していく!
## 答え
“`
$(document).on(‘input’, function(e) {
// ① 入力内容全体を取得
var target = $(this).val();// ② 半角に変換して上書き
target = target.replace(/[A-Za-z0-9]/g,function(s){
return String.fromCharCode(s.charCodeAt(0)-0xFEE0);
});// ③ 変換したものをinputに代入
$(this).val(target);
})
“`## ポイント
### eventはどれを使う?**change**:inputフォームからカーソルが外れたタイミングで発火
**input**:文字が一つでも変更されたタイミングで発火
今回は、リアルタイムで変更したかったため、**input**を採用しました。
同じタイミングのeventとして、**keyup**がありますが、こちらだと上書きの際に古いデータまで取得してしまう(要するにうまくいかない)ので注意が
Three.jsを使ってみる(カメラ制御編)
# はじめに
おはようございます。こんにちは。こんばんわ。
Watatakuです。
[Three.jsを使ってみる(入門編)](https://qiita.com/watataku8911/items/8cdb5ab91dc2f75b7b73)の最後に地球儀を作成したのですが今回はその地球儀を使ってカメラの制御等を行なっていきます。
では、早速行なっていきましょう。
# 地球を中心としてカメラを回転させる
地球を中心としてカメラが円周上を自動的に移動します。以下のコードを“tick()“に追記してください。“`js
// ラジアンに変換する
const radian = rot * Math.PI / 180;
// 角度に応じてカメラの位置を設定
camera.position.x = 1000 * Math.sin(radian);
camera.position.z = 1000 * Math.cos(radian);
“`
カメラの位置の設定は“cameraオブジェクト“の“positionプロパティ“に数値を代入します。さらに今回は、カメラは常に中央を
JavaScriptでUnicodeの濁点・半濁点を分離する
濁点・半濁点を分離する関数の作成中、Unicode上での濁点・半濁点の扱いに戸惑ったのでメモ書き。
## UFDとUFC
Unicodeの中にも、
**NFC**:Normalization Form Canonical Composition (合成済みの文字)
**NFD**:Normalization Form Canonical Decomposition (複数文字を結合した文字列)
と種類があるらしい。JavaScriptの文字列はデフォルトではNFCとして扱われるが、
`’文字列’.normalize(‘NFD’)`
でNFDに変換できる。## 表記の違い
それぞれencodeURIでエンコードすると分かりやすい。
“`javascript:nfc.js
console.log( encodeURI(‘か’.normalize(‘NFC’)) );
//%E3%81%8Bconsole.log( encodeURI(‘が’.normalize(‘NFC’)) );
//%E3%81%8C
“`
“`javascript:nfd.js
console.l
【非同期処理】JavaScriptのPromise, async, awaitなどについての整理と使い方
# 非同期処理/同期処理について
C言語やPythonから入った私はコードは上から順に実行されるものだと思っていました。しかし、JavaScriptはクライアントサイドの言語であり、 **「ページ更新などレスポンスの即時性が求められているため非同期処理である」** とのことです。
##### ~同期処理とは~ #####
コードを上から順に処理していき、「サーバとのデータのやりとりなど時間がかかる作業を**待って**次の処理を行う」といったイメージです。
##### ~非同期処理とは~ #####
原則的にコードは上から順に処理していきますが、「サーバとのデータのやりとりなど時間がかかる作業と**並行して**次の処理を行う」※詳細なイメージは@don-bu-rakkoさんの以下をご参考にして頂けると良いかと思います。
https://qiita.com/don-bu-rakko/items/b283829c4572a6425a5c
→[記事はこちらに移転したそうです](https://proglearn.com/2020/11/03/%e3%80%90js%e3%80%91%e5%
Realtime Databaseのルール設定方法(Firebaseバージョン9)
Realtime Databeseでのルール指定方法について、公式ドキュメントに一応載っていますが、実戦的に使用するには言葉足らずなところがあるので、具体例を用いながら説明していきます。
これで、あなたも希望したセキュリティのデータベースやアプリケーションを作れる!(はず)
## 前提
– Firebase JavaScript SDK version9を使用(厳密にはバージョン9.8.1)
– Google認証でのログイン機能を実装
– chrome(バージョン: 101.0.4951.67)## Realtime Databeseの「ルール」とは?
Realtime Databeseの「ルール」では、どんな人ならデータベースに読み書きできるかや、データベースでのインデックス作成(※)等を決めることができます。※データベースのインデックスについては、大きなデータベースを作らない場合は気にしないで大丈夫です。詳しく知りたい方はこちらの記事などが参考になるかと思います。
https://qiita.com/Hashimoto-Noriaki/items/bd078d0fabd
HTML Canvasのインターフェイスのまとめ #2
HTMLのCanvasを触れ始めたので備忘録として記事に残しておきます。
本記事で2記事目となります(本記事でも触れきれないインターフェイスが多くあるので恐らく次の記事も執筆します)。前記事で触れた内容は割愛するので必要に応じて前記事もご確認ください。前記事:
https://qiita.com/simonritchie/items/36e34bf409b6bd10f23a
# 描画系インターフェイス(追加分)
前記事で触れられなかった各描画系のインターフェイスについて以降の節で触れていきます。
## beginPathメソッド
beginPathは描画のためのパスを初期化します。初期化しなくとも単純な描画であれば出来るので使用は必須というわけではありませんが、beginPathを使わないと対応が面倒なことになったり厳しいケースがあります。
どのような時に役立つのか・・・のサンプルとして、以下のようなコードを考えてみます。
“`html
Jestのまとめ –公式ドキュメントを読んで–(最低限で投稿、今後更新)
# What is Jest?
Jestは、JavaScriptのためのテスティングライブラリです。# Jestを用いたテストの流れ
![Reactテストの流れ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2303693/849f568f-85c5-ffa0-0f13-45a83d0f0fac.png)
図1.Jestを用いたテストの流れ
## セットアップ
データベースの初期化やコンテナを表示するDOMの準備といった、テストを行う前に実行する処理を記述する。
beforeAllでは、スコープ内(トップレベルならファイル全体、describe内ならdescribe内)のテストを実行する前に1度だけ実行する処理を記述する。
beforeEachでは、スコープ内の各テストの実行前に毎回実行する処理を記述する。
※細かい実行タイミングは、[公式ドキュメント](https://jestjs.io/ja/docs/setup-teardown#%E3%82%B9%E3%82%B3%E3%83%BC%E3%8
REST API Design Best Practices を用いたAPI開発 #1
## 動機
仕事で関わるシステムの大部分が企業の基幹系システムであることが多く、昨今はやりのJavaScriptによる開発手法にCatch Upしきれていないと感じている。
以下の記事をFollowしながら手を動かすことで、少しでも昨今の流れ・感覚をCatch Upをすること、また自分自身のメモとして残すことを目的として記事に起こす。https://www.freecodecamp.org/news/rest-api-design-best-practices-build-a-rest-api/
## 本記事で実施すること
* API開発に必要な基本的なフォルダ階層の作成
* npmを用いた必要なパッケージインストール
* EntryPointとなるindex.jsの作成
* サーバの起動とアクセス確認## 環境
* OS
Microsoft Windows 10 Enterprise 10.0.19042 N/A ビルド 19042* 開発環境
Visual Studio Code 1.64.2* ターミナル環境
GNU bash, version 4.4.23(1
【今度こそわかる】クッキーとセッション
# はじめに
今回、駆け出しエンジニアが何度学んでもすぐに忘れるあるあるトップレベルのクッキーとセッションについて、アウトプットも兼ねて簡単にまとめてみました!この記事を読んでわかることは、
それぞれの**特徴**、**違い**になります。それぞれの具体例も挙げつつ短めにまとめましたので、時間のない方でも気軽に読んでください〜!
# もくじ
1.[?最初の理解](#最初の理解)
2.[?クッキー(Cookie)とは](#クッキーとは)
3.[キャッシュとは](#キャッシュとは)
4.[セッションとは](#セッションとは)
5.[まとめ](#まとめ)# ?最初の理解
クッキー、セッション、キャッシュについて学ぶ前に理解しておくべきことは、
**3つ**とも「**情報を一時的に保存しておく機能**」であるということです。
**3つ**とも「**効率的かつ速く、欲しい画面や情報をくれる**」というメリットがあるということです。また、これら3つは、情報の**種類**と**保存場所**が異なるだけです!
これを念頭に読んでいただければと思います。# ?クッキーとは
###
(備忘録)今日つまづいたスマホレイアウトのあれこれ
今日スマホ実機で確認をした際に躓いたレイアウト、挙動面のエラーが
今後も起こりそうなので、備忘録を残します!# inputエリアをタップ→画面が勝手に拡大
* 原因
iOSではfont-sizeが16pxを基準値としているため
cssでfont-size15px以下を指定すると、画面が勝手に拡大する* 解決策
①font-sizeを16px以上に指定(意外と大きすぎない)
②metaタグのviewportに`maximum-scale=1.0`を挿入する“`html
“`#### ※ダブルタップズームは別途制御が必要
* 解決策
1. htmlに`touch-action:manipulation`
touch-actionには他にも色んなプロパティがあるようだけど
safariでは`auto`と`manipulation`しか使えないみたい。
`m
パスパラメータ”/:id(\\d)”はどういう意味? Node.js Expressのパスパラメータの設定の色々
## はじめに
Node.jsのExpressでは、以下のようにパスパラメータに正規表現を使う事ができる。“`js
app.get(‘/posts/:id(\\d+)’, (req, res) => {
console.log(req.params.id);
res.end();
});
“`今回は、Expressのパスパラメータの書き方の設定方法について、その種類とその挙動(curlコマンドでAPIを呼び出した時のconsole.log(req.params.id)の出力内容)について実際に試してみて理解を深めてみたのでそれについてみていく。
※Expressのversionは4.17.1になります。
## Expressのパスパラメータの設定方法の種類
以下のように設定方法は何種類かあり、それらについてどのようなconsole.log(req.params.id)の結果が得られるか?を見ていく(他にも設定方法があるかもしれないが今回は以下の5種についてみていく事にする)。
![image.png](https://qiita-image-store.
JavaScript学習:DOM
# DOMや要素をイメージしやすくする
![javascript.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2667981/9336107f-059a-b0e5-ada9-85402a228663.png)
チーム開発でメンバーから思わぬ言葉が出たので、どうやって伝えよう?と試行錯誤してみた話。
【全体の話の流れ】
* [背景として](#背景として)
* [先ずはMDNでの解説を見てみる](#先ずはMDNでの解説を見てみる)
* [DOMとはどういうものか?](#DOMとはどういうものか?)
* [実際にDOMをいじってみる](#実際にDOMをいじってみる)
* [まとめ](#まとめ)## 背景として
### 各々の前提知識から情報を提供しておくべきだった話
先ず筆者は、経営情報学部出身である。
同学部では、軽くではあるけれども、 HTMLとCSSの授業は必須であるため、ある程度表側を触った経験はある。
プロゲートのHTML&CSSくらい