- 1. React + React Router + TypeScript: チュートリアル[02] 遷移の細かな制御と検索の機能
- 2. バリデーションチェックの実装
- 3. TauriのUIテンプレートをまとめた
- 4. javascript / typescript – 日本時間で今日の日付の文字列を得る
- 5. div タグのスタイルを参照しようとしたら参照できなかった話
- 6. useEffectに書いた処理が実行されるタイミング
- 7. p5.js Web Editor上で Gamepad API を使う: DualShock 4 を使ったシンプルな接続確認・ボタン押下判定
- 8. JS&TS用に画期的なログ出力ライブラリを作ったので報告
- 9. PleasanterのWebAPIを内部から実行する!?
- 10. htmlでJavascript処理を出来るようにテキストファイルを読み込む
- 11. express routing
- 12. expressの備忘
- 13. そこに i はあるんか、という話
- 14. JavaScriptで複素数クラスを作る
- 15. ESP8266で電源電圧を自己測定し、Googleスプレッドシートに記録して推移を可視化する
- 16. Windows上Subline Text3 javascript実行させる
- 17. PleasanterのAddResponseの使いどころ
- 18. JavaScriptのsortについて
- 19. JavaScriptで数値計算---二分法とニュートン法
- 20. GitHub ActionsでのJavaScriptヒープメモリエラーの解決方法
React + React Router + TypeScript: チュートリアル[02] 遷移の細かな制御と検索の機能
React Routerのv6.4から採り入れらた新しいData API(「[Using v6.4 Data APIs](https://reactrouter.com/en/main/routers/picking-a-router#using-v64-data-apis)」参照)を使った公式サイト「[Tutorial](https://reactrouter.com/en/main/start/tutorial)」の作例にもとづくチュートリアルの後編です。TypeScriptを用い、モジュールの組み立てやコードは手直ししました。解説も書き改めています。さらに、要所ごとに[StackBlitz](https://stackblitz.com/)のコードサンプルを掲げました。各モジュールのコードが開けて見られ、動作を確認しつつ、書き替えて試すこともできるでしょう。
* [React + React Router + TypeScript: チュートリアル[01] loaderとactionでデータを作成・編集・削除する](https://qiita.com/FumioNonaka/i
バリデーションチェックの実装
Javascriptを使ったバリデーションの実装について学習記録用として残しておきます。
動かすことを目的としているのでスタイルシートは最低限の記述にしています。**今回使った技術、ライブラリ等**
・bootstrap
・jQuery
・Javascript
・HTML
・SCSS## 概要
今の会社でバリデーションチェックや、アラート表示などちょっとしたJavascriptを書く機会が増えたので使いまわせるようにある程度の型を作っておくと良いかと考えた## HTMLファイルの作成
まずはHTMLファイルに必要最低限のコードを書きます。“`html
Document
TauriのUIテンプレートをまとめた
# はじめに
Tauriを使ってマークダウンエディターを作ろうと現在奮闘中です。
([このライブラリ](https://milkdown.dev/)をつかいたい)そこでUIテンプレートに`React`を指定していたのですが、どうもうまく作れず・・。
Reactが理解出来る気がしない・・。ということで、他のUIテンプレートがなにあったっけ?と調べようと思ったのですがリスト出してくれているページが全くなかったので、まとめておきました。
**JavaScript系のフレームワークはほぼほぼ触ったことがないので、知識皆無です。
検討ハズレな感想があっても見逃してください・・。**# UIテンプレート
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2603116/2faaaa23-1034-bcbb-37e5-c2ca2171a1c3.png)## Vanilla
ピュアJavaScriptってやつですね。
なんだかんだこれで良くない?という気持ちもありつつ、それだと勉強にならな
javascript / typescript – 日本時間で今日の日付の文字列を得る
# 概要
– 第一引数に日付フォーマットの国の種類を指定する
– 第二引数の timeZone には得たいタイムゾーンを指定する# 日付を得る
“`js
new Date().toLocaleString(‘ja-JP’, {
timeZone: ‘Asia/Tokyo’,
year: ‘numeric’,
month: ‘2-digit’,
day: ‘2-digit’,
})
“`結果の例:
`’2024/03/22’`
# 時刻まで得る
“`js
new Date().toLocaleString(‘ja-JP’, {
timeZone: ‘Asia/Tokyo’,
year: ‘numeric’,
month: ‘2-digit’,
day: ‘2-digit’,
hour: ‘2-digit’,
minute: ‘2-digit’,
second: ‘2-digit’
})
“`結果の例:
`’2024/03/22 12:19:31’`
# 参考
div タグのスタイルを参照しようとしたら参照できなかった話
例えば、次のような HTML と CSS があったときに、
“`html:hoge.html
“`
“`css:hoge.css
#hoge {
display: flex;
}
“`以下のコードでコンソールに出力されたのは “flex” ではなく**空文字**だったという話です。
“`javascript:hoge.js
const divElement = document.getElementById(“hoge”);
console.log(divElement.style.display); // 空文字が出力される
“`## 解決方法
上記のコードで言うと `divElement.style.xxxx` で参照できるのは JavaScript で動的に設定したスタイルとなるため、CSS で適用したスタイルを参照する場合は `window.getComputedStyle()` を使用します。
https://developer.mozilla.org/ja/docs/Web/API/Window/
useEffectに書いた処理が実行されるタイミング
### useEffect内の処理はマウント時 + 依存配列内の変数の値が変更された時に実行される。
– useEffectの第二引数である依存配列`[]`に何も入れなかった時は**初期レンダリング後のみ**(コンポーネントに書いた記述がDOM構成に反映された後)実行される。
– 依存配列に変数を指定した場合は **初期レンダリング後 + 依存配列内の変数の値が変更された時**に実行される
– アンマウント時に実行される、と言われるのは下記の `return () => {}` に書いた記述がコンポーネントが画面から消えるときに実行される**クリーンアップ関数**のこと。つまり、**クリーンアップ関数を書かなければアンマウント時はなにも実行されない。**“`tsx:UseEffect.tsx
useEffect(() => {
// ここに副作用を実行するコードを記述// クリーンアップ関数を返す
return () => {
// コンポーネントのアンマウント時に実行されるコード
};
}, [
p5.js Web Editor上で Gamepad API を使う: DualShock 4 を使ったシンプルな接続確認・ボタン押下判定
今回の内容は、以下の記事で取り扱ってきた「Gamepad API」の話です。
●【完走賞ゲット-11】gamecontroller.js を p5.js Web Editor上で使ってみる(DualShock 4 との組み合わせ) – Qiita
https://qiita.com/youtoy/items/1cf1fe244d992456140f●【完走賞ゲット-13】p5.js Web Editor上でボールが跳ね返る時に DualShock 4 を振動させる(gamecontroller.js での実装) – Qiita
https://qiita.com/youtoy/items/c4d3b6fde5365090a5deGamepad API は、ゲーム用のコントローラーをブラウザで扱える API です。
上に掲載していた記事では、API を直接使うのではなく「gamecontroller.js」というライブラリを用いていました。
今回は、API を直接扱ってみようと思います。
## 今回利用する環境・参照する情報
### 今回利用する環境
今回、開発・実
JS&TS用に画期的なログ出力ライブラリを作ったので報告
# 何を作ったの?
今回自分が作ったライブラリはこちらになります。https://www.npmjs.com/package/log4debug
このリンクだけだとまだ分からないと思うので説明していこうと思います。
## どういうライブラリ?
簡単に言うと従来のconsole.logを改造する様なライブラリです。
まず以下のコードを見てみてください
“`typescript
import log4debug from “log4debug”log4debug.set(log4debug.defaultTemplate)
console.log(“This Package is JavaScript and TypeScript’s Logger”)
“`
これ普通にログ出力されると思いますよね?
実はこれlog4debug.setをやることによって、console.logが改造されて以下のようにログが出力されるんです。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26
PleasanterのWebAPIを内部から実行する!?
# Pleasanterのサーバスクリプト「httpClient」を使ったUsersの拡張項目の取得
突然ですが、皆様はPleasanterのAPIやスクリプト、サーバースクリプトを利用されたことがありますでしょうか。
私たちエンジニアはこちらの機能を使い慣れていますが、ユーザ目線で考えると少し難しいと思われます。今回、アサインされている案件で「全ユーザを対象にユーザテーブルの拡張項目で表示非表示制御を実装したい」というご要望から意外な使い方をしたため、本記事でご紹介いたします。## はじめに
APIやスクリプト、サーバスクリプトについてよくわからないという方もいらっしゃると思いますので、まずは基礎知識からご紹介いたします。
## Pleasanterの開発者向け機能について・・・
Pleasanterの開発者向け機能の中で本記事で対象としている下記についてご紹介いたします。
* API
* スクリプト
* サーバスクリプトそもそも、上記の3つは下記のように大きく2つに分けられます。
* 外部用
* API* 内部用
htmlでJavascript処理を出来るようにテキストファイルを読み込む
一度やったのだけど忘れてしまって、やり直してみました。
fileからtextareaに出すにはJavascriptを読み込み時に一度だけ読み込めば、objectが常駐して閉じるまでtextareaの選択リストを更新してくれます。
textareaをクリックして、実行ルーチンはこれとは関係ありません。
**htmlの見本**
“`html
studio
express routing
# express routing
## 基本
```
app.METHOD(PATH, HANDLER)
```- app : expressのインスタンス
- METHOD : post, get, put ...(HTTPメソッドを小文字にしたもの)
- PATH : サーバ上のパス(URLのパス?)
- HANDLER: URLがPATHとマッチしたしたときに実行するメソッド## 基本サンプル
- 基本はHTTPメソッド毎に、処理(メソッド)を割り当てる
```
// GET メソッドルート
app.get('/', function (req, res) {
res.send('GET request to the homepage')
})// POST メソッドルート
app.post('/', function (req, res) {
res.send('POST request to the homepage')
})
```- すべてのHTTPメソッドを割り当てる
```
// 共通処理を仕込んでメソッド毎の処理はnex
expressの備忘
# express
## 参考
- [Express](https://expressjs.com)
## インストール
```
# package.jsonの作成
# entry point: (index.js) はお好みで。"app.js" もよくある。
npm init# --save でpackage.jsonに追加されるので、後で構築しやすくなる。
# これはモジュールのみnode_modulesにインストールされる
npm install express --save
```## Hello Wolrd サンプル
- 000.HelloWolrd_index.js
```
const express = require('express')
const app = express()
const port = 3000app.get('/', (req, res) => res.send('Hello World!'))
app.listen(port, () => console.log(`Example app list
そこに i はあるんか、という話
# 1. 今回記事の内容
知っている人は知っている話ですが、JavaScript のちょっとした書き方の違いで意外な動きの違いを生むという話です。# 2. コード例
以下の2つのコードを見て下さい。``` JavaScript: ソース1
console.log("1つ目:iがfor()の中にある場合");
const a = [];
for (let i = 0; i < 3; i++) { a[i] = () => {
console.log(i);
};
}
a.forEach((e) => e());
let i = 4;
console.log('逆順にも回してみる');
a.reverse().forEach((e) => e());
```
``` JavaScript: ソース2
console.log("2つ目:iがfor()の外にある場合");
const a = [];
let i = 0; // ここが違う
for (; i < 3; i++) {
JavaScriptで複素数クラスを作る
# 概要
JavaScriptで数値計算するたに前に[JavaScriptが実行できるテストページ](https://qiita.com/I-Yasusi/items/8180ca49f12fb0464cde)を作った。
そのテストページには四則演算子をBabelを使ってJavaScriptでなんちゃって演算子オーバーロード化してある](https://qiita.com/I-Yasusi/items/ad0f174e8d5f14d598b9)。
その演算子オーバーロードを使ったクラスの例として作った複素数クラスについて解説する。
作ったものはGithubの[https://github.com/T-Yasusi/t-yasusi.github.io/blob/main/js/modules/calc/class/Complex.js](https://github.com/T-Yasusi/t-yasusi.github.io/blob/main/js/modules/calc/class/Complex.js)においてあります。## TypeScriptによる擬似メソッド列挙
ESP8266で電源電圧を自己測定し、Googleスプレッドシートに記録して推移を可視化する
# 目的
Arduinoで無線LANを利用したい場合、ESP8266やESP32を使用する場面は多いと思います。低消費電力モードを備え、乾電池により駆動することもできますが、実際、どのくらい動作し続けることができるのか検証してみようと思い立ち、定期的に電源電圧を取得するところから始めてみました。データはSDカード等のローカルに保存することもできますが、今回はGoogleスプレッドシートを活用し、クラウドに保存してみます。リアルタイムに確認できるので便利です。
![picture.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/792999df-c327-9628-dd78-83905910d8e4.jpeg)
# 開発環境
特にライブラリのバージョンは注意してください。バージョンが異なると仕様も大きく異なるためです。
* Windows 11 Home 23H2
* Arduino IDE 2.3.0
* ArduinoJson 5.13.5
# 概要
全体的な流れとしてはGASでWebア
Windows上Subline Text3 javascript実行させる
概要
---
Subline Text3上で、.jsファイルをビルド実行させる方法を説明します。Node.js を[インストール](https://nodejs.org/en/download)
---- Node.jsバージョンなど選択してダウンロードします。
![0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159490/e1455de1-4e3f-a360-343b-b5c87a97e2de.png)
- ダウンロードしたファイルをクリックして、インストールします。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159490/be16a9ea-c3f9-6c27-8d59-5d3926bb63d7.png)
- ライセンス同意して次のボタン押して、インストールまで進みます。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw
PleasanterのAddResponseの使いどころ
# 前置き
Pleasanterのサーバスクリプトに、"AddResponse"という物があります。
[マニュアルリンク](https://pleasanter.org/manual/server-script-context-add-response)いろいろできそう?と思いつつ、いまいち使いどころが見えなかったのですが、業務の中で活用できる場面があったのでまとめてみます。
# 実装要件
以下のような要件でテーブルを作ることを考えました
- 一覧のガイドにリンクを設定する
- マークダウンを使う
- リンクは別タブ別ウィンドウで開きたくないざっくり画面イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922382/bb0c8bc0-1a02-5a42-0201-9db0a5807d0e.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922382/0a09
JavaScriptのsortについて
JavaScriptのsortについて、結果が出力されるまでの動きが理解できていなかったので記事にしました。
まだ経験が浅いため、認識に間違いがありましたらコメント頂けますと幸いです。下記コードは引数として' 'で区切られた値の中から最も短い文字列の値を出力するコードです。
コードを実行した際に出力される結果は'5'となります。```diff_javascript
function shortest(str) {
let splitWord = str.split(' ').sort(function(a, b) {
let result = a.length - b.length
return result
});
return splitWord[0].length
}
console.log(shortest('osaka aomori akita kanagawa'))
// console.logの出力結果は'5'
```a, bには配列に変換された'osaka aomori akita kanagawa'が入ってきます。
```di
JavaScriptで数値計算---二分法とニュートン法
# 要するに
前回の記事のJavaScriptを実行できるWebサイトを使って
汎用的な方程式の数値的開放である二分法とニュートン法について解説する。
これらはあらゆる$f(x)=0$を解ける、つまり汎用的な数値的解放として代表的な2つである。
JSでのコーディングの例として数値計算の例として代表的な$\sqrt(2)$を求める問題を取り上げる。### Github
これらはgithub,ioのページとして公開している。それらへのリンクは解説のあとにつけておく
github自体へのリンクは[ここ](https://github.com/T-Yasusi/t-yasusi.github.io)である## 二分法
ある2つの値、$x_0,x_1$、としそれらの関数の値がそれぞれ正と負であるとする。
その時、必ず$x_0$と$x_1$の間に答え(解)がある。
なので、その平均$x_{center}=\frac{x_0+x_1}{2}$を新たな値として範囲を狭めていく方法である。
解が求まったという条件は$x_0$と$x_1$のが十分小さいとする。
JSの数値型は倍精度浮動点少数であ
GitHub ActionsでのJavaScriptヒープメモリエラーの解決方法
## はじめに
GitHub Actionsでのテスト実行中にJavaScriptヒープメモリエラーが発生した経験を共有します。エラー内容、その原因、そして解決策について詳しく解説します。## エラー内容
以下が発生したエラーメッセージです。```
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
```このエラーは、JavaScriptプログラムが実行中にメモリ制限に達したことを示しています。
## 原因
JavaScriptヒープメモリエラーの原因は、プログラムが使用するメモリ量が多すぎるか、無限ループなどが原因でメモリが不足している可能性があります。## 解決策
1. ヒープメモリサイズの調整
GitHub Actionsのワークフローで実行されるNode.jsのプロセスに対して、ヒープメモリのサイズを増やします。
```yaml
env:
NODE_OPTIONS: --max-old-space-size=4096