JavaScript
PCのWeb版のRadikoで、早送り・巻き戻しをする方法です。 PCのWeb版のRadikoには早送り・巻き戻し機能がありません。何かいい方法ないかとネットで調べると「友達に教えるボタンをクリックすると、60秒・5秒で早送り・巻き戻しボタンがでてくる」という、…
JavaScriptでMicrosoft SQL Server(MSSQL)を使う方法メモです。 ライブラリはMicrosoftも推奨しているtediousを使い、あまり凝ったことはせず、必要最低限の機能に絞ってまとめました。 tediosはコールバックスタイルのライブラリなのですが、今風にasync…
Markdownを読み込んで、色々好きなように編集して、再度Markdownに出力したいことがありました。 その際、remarkというJavaScriptのMarkdownパーサーを使いました。 ただ、使い方が分かりにくく、次にプログラムの修正が必要になった時には確実に使い方を忘…
普段SQLを使うことが多いのですが、JavaScriptで配列のデータを扱っている時、JavaScriptの配列に対してもSQLでクエリが書けたらいいのになと思うことがあります。 一方、C#には配列をSQLライクなクエリで処理できる、LINQという言語が備わっています。 Java…
最近Playwrightを試していたので、使い方を忘れてもまた思い出せるよう、Playwrightの使い方をメモしておこうと思います。 インストール npm install --save playwright Playwrightをインストールすると、同時にブラウザChromium・Firefox・Webkitもインスト…
下記の記事を読んで知ったのですが、JavaScriptのPromiseは同期呼び出しされるんですね。 https://zenn.dev/yuhua_shi/articles/331569ef2fe886 Promiseに渡される関数は、非同期関数だと思い込んでました。 以下、自分用にPromise呼び出し順をまとめておき…
WebのクローリングにPuppeteerを使っています。 いつかPuppeteerの使い方をまとめたいなと思っていたのですが、そうこうしている内に月日は流れ、Puppeteerと同様のブラウザ操作ツールとして、Playwrightの名前をよく聞くようになってきました。 ならばいっ…
Reactでサンプルサイトを作る時など、サイトデザインはあまり深く考えず、有りものの設定を組み合わせて、ササッと手軽に作りたいことがあります。 普段、ReactのUIコンポーネントは、Microsoft Office365で使われている、UI Fabric(現 Fluent UI)を使って…
認証機能付きReactサイトを手軽に作りたかったのですが、都度バックエンドを構築するのが面倒で諦めてました。 しかし、AWS Amplifyを使えば、手軽にバックエンドを構築できるのではと試してみました。 一通り欲しかった機能は試したので、再利用可能なよう…
AWS AmplifyでLambda Functionを追加すると、JavaScriptで雛形が生成されるので、それをTypeScriptにする方法メモです。 下記ドキュメントを参考にしました。 https://docs.amplify.aws/cli/function/build-options 手順 Functionを追加すると、下記のフォル…
create-react-app app-name --template typescriptで、TypeScriptのReactアプリを作って、VSCodeで編集しようとすると Cannot use JSX unless the '--jsx' flag is provided. ts(17004) というエラーが。 調べたところ、Reactのバージョン17から、TypeScript…
以前、AWS CloudFormationテンプレートを手書きしようとして挫折しました…。 www.kwbtblog.com その時学んだのは、CloudFormationテンプレートは人の手で書く類のものではなく、何かしらのツールを使って生成するものだなと。 そして、そのためのツールが、A…
Reactの状態管理はReduxが有名で、大衆迎合主義の自分としては、ご多分に漏れずReduxを使っています。 ただ、Reduxを使っていてしんどいなぁと感じるところがいくつかあります。 1つは、とにかくボイラープレートが多いことです。 ちょっとしたステート(変…
現時点でまだ正式リリースされていない、ReactのConcurrent ModeをTypeScriptで試す方法のメモです。 型関連でエラーが出ることが多いので、その対処方法をメモ書きとして記載しました。 インストール create-react-appでTypeScriptのテンプレートを作成し、…
JavaScriptでSQLiteを使う方法メモです。 あまり凝ったことはせず、必要最低限の機能に絞ってまとめました。 SQLiteそのものの使い方は割愛しますが、こちらが詳しいのでご参照ください。 インストール パッケージ「sqlite3」を使いました。 npm install sql…
JavaScript(TypeScript)で書かれたプログラムを、Go言語で書き直しました。 その動機や、書き換えた結果などを書こうと思います。 また、今回Go言語が初めてだったので、Go言語とはどういったものかや、Go言語をやってみた感想なども合わせて書こうと思いま…
沢山のタスクがあって並行処理したいのですが、全てを並行実行させると重くなってしまうので、同時実行数を指定しつつ並行実行させたい時があります。 恥ずかしながらJavaScriptでそれをやる方法を知らず、代案として、処理したいタスクを同時実行数づつに分…
普段Webのクローリングにpuppeteerを使っていて、puppeteerの実行はDockerで行っています。 クロール項目を追加することがあって、プログラムを修正してDockerでビルドして実行したところ、下記のようなエラーが出て動きませんでした。 /node_modules/puppet…
データ処理を行う時、ついつい面倒くさくて、全てのデータをメモリに読み込んでから処理しがちです。 データサイズが小さい時は問題ないのですが、巨大なデータを扱う場合は、メモリを大量に消費しますし、1つのデータの読み込みや書き込みが完了するまで、…
Google Cloud Storageで、サブディレクトリ内のファイル一覧を取得して、それらのファイルの処理をしようとしました。 しかし、ファイルがおかしいとエラーが出るので見てみたら、取得したファイル一覧に、サブディレクトリが含まれていました。 原因 前に勘…
以前、Google Cloud Storageのサブディレクトリ一覧を、GCP Pyhtonライブラリを使って取得したのですが、そのNode.jsバージョンです。 Pythonバージョンはこちら www.kwbtblog.com 手順 GCP Node.js SDKのドキュメントにサンプルがあるので親切ですね。 http…
CSVファイルの読み込みは、今までSheetJSを使っていました。 しかし、どうしても文字化けしてうまく読み込めないCSVファイルがあったので、他のライブラリを試してみることにしました。 npmで「csv」で検索すると一番上に出てくる、その名も「csv」というラ…
世の中の動向を知るのに使えないかと、Twitterのデータを、Twitter APIを使って取得してみました。 結論から言うと、Twitter APIの制限がキツイと噂には聞いていましたが、本当にキツ過ぎて使い物になりませんでした…。 Twitter APIでデータを取得するところ…
Web版のOffice365を操作する方法の1つに、Microsoft Graph (Office365) APIというものがあります。 例えば、Microsoft Graph (Office365) APIを使えば、Office365の外部から OutLookからメール送信 Excel Onlineのファイル編集 SharePointのファイル取得 な…
JavaScriptで日付演算をする際、組み込みのDate関数は扱いが難しいため、一般的に何かしらのライブラリを使います。 ライブラリは、よく見かける「Moment.js」を使っています。 何度やっても使い方を忘れるし、同じ所でハマっているので、自分用使い方メモを…
JavaScript(TypeScript)でExcelファイルを読み込むのに、SheetJS(xlsx)を使っています。 使い方はちょっとクセがあって、すぐに忘れてしまうので自分用使い方メモです。 マニュアル https://www.npmjs.com/package/xlsx インストール npm install xlsx …
PHPのmcryptで暗号化されたデータを、Node.jsで復号化しようとしてハマったので、その原因と解決方法メモです。 状況 PHPでAES256-CBCで暗号化した物ですよと言われて受け取ったデータを、Node.jsで復号化しようとするとエラーになりました。 データは暗号化…
Node.jsで、AES暗号化・復号化する機会があったので、そのメモです。 暗号化アルゴリズム「AES-256-CBC」で行いました。 ざっくりAES CBC暗号化について AES CBCは、任意の長さのバイナリデータを、鍵を使って暗号化し、同じ鍵を使って復号化する暗号化アル…
クローラーとしてPuppeteerを使っています。 クロールしていて、サイトのTableタグで作られた表のデータを取得したい時があります。 Pythonなら、htmlからTableタグ以下のみを抽出し、それからPandasを使ってDataFrameを生成することにより、エレガントにで…
Passport.jsを使う機会があったので、また必要になった時用のPassport.jsの使い方個人メモです。 Passport.jsとは Passport.jsとは、Node.js+Expressで作ったWebサイトに、ユーザーがログインできる、ユーザー認証を入れるためのライブラリ ユーザー認証の種…