- 0.0.1. How to Trim Whitespace from JavaScript String
- 0.0.2. スプレッド演算子を用いてオブジェクトの更新操作を行う方法
- 0.0.3. クラス属性を取得する
- 0.0.4. スマホでペット用監視カメラを作ってみた
- 0.0.5. p5.js で randomGaussian() を使って偏りのある乱数を得る
- 0.0.6. アクセシビリティを意識した実装の意義について確認する
- 0.0.7. 【2023年1月】エンジニアなら読むべき技術書TOP5
- 0.0.8. オンラインゲームが”サ終”しても一生遊べるようにブラウザ移植した
- 0.0.9. Next.js requires react >= 18.2.0 to be installed.
- 0.0.10. リスト内包表記の二重ループと flatMap
- 0.0.11. TypeError: Cannot read properties of undefined (reading ‘JsonRpcProvider’)
- 0.0.12. HTML無限スクロール
- 0.0.13. D3 v7 グラフ – d3-scale、d3-axis、d3-shape
- 0.0.14. 寺社巡りの管理ページを作った
- 0.0.15. サムネイルを押すとメイン画像が切り替わる動作の実装方法
- 1. サムネイルを押すとメイン画像が切り替わる動作の実装方法
How to Trim Whitespace from JavaScript String
This quick javascript tutorial helps to remove extra whitespaces including tabs, and line breaks from your data. We will explore various techniques and best practices for stripping whitespace in JavaScript.
スプレッド演算子を用いてオブジェクトの更新操作を行う方法
“`javascript
const updateLikability = { …someoneSpecial,
likability: {…someoneSpecial.likability, funnyRating:increaseLikabilityByFunnyJoke }“`
気になるあの子の好感度を更新してゆきたいと思います。まず、気になるあの子(someoneSpecial)の現在の状態を
スプレッド演算子を用いてコピーします。このコピーは表面的なもので、内部のlikabilityオブジェクトは元のsomeoneSpecialからの参照として保持されています。
次に好感度オブジェクト(someoneSpecial.likability)もコピーしておいて、その中の面白さプロパティを新しい値(increaseLikabilityByFunnyJoke)で更新しています。
以上で「ノリの良い軽口であの子を笑わせて自分の好感度を上げる」オブジェクトを作ることができました。
現実世
クラス属性を取得する
“`js
Object.prototype.toString.call([]) // [object Array]
Object.prototype.toString.call(/./) // [object RegExp]
Object.prototype.toString.call(()=>{}) // [object Function]
“`
JavaScriptオブジェクトに対してクラス属性を取得するには、上記のObject.prototype.toString.call()を使用します。ですが、この方法以外では取得できない型情報が含まれています。typeof演算子ではオブジェクトの型を区別しないので、下記に作成したclassof()関数の方が便利です。
“`js
function classof(o) {
return Object.prototype.toString.call(o).slice(8, -1);
}classof(null) // Null
classof(undefined) // Undefined
classof(
スマホでペット用監視カメラを作ってみた
# はじめに
スマートフォンを使った監視カメラシステムを作ってみました
作ろうと思い立ったきっかけですが、昨年ワンちゃんを一頭飼い始めて
最近もう一頭増えたのと、その子が保護犬ということでなかなか目が離せないということもあり、スマホを使って外出先から自宅のワンちゃんの様子を確認出来る仕組みを作ってみようと思ったのがきっかけです| 1頭目 | 2頭目 |
|:-:|:-:|
| |
p5.js で randomGaussian() を使って偏りのある乱数を得る
## はじめに
今回の内容は、p5.js の randomGaussian() に関する話です。●reference | randomGaussian()
https://p5js.org/reference/#/p5/randomGaussian### randomGaussian() を使った描画を試してみた
今回扱う randomGaussian() を、とりあえず描画に使ってみました。
いくつか試してみたのですが、その中で以下の内容を例に説明などを書いていきます。#p5js の randomGaussian() を使った描画を試してみる
(平均と標準偏差はデフォルト値ではなく、特定の値を指定したものにして、それで x・y座標を作成) pic.twitter.com/c1GFMOLLaA
— you (@youtoy) January 5, 2024
それでは、randomGaussian()自体の話、それを使った描画を試した話や、関連情報のメモ的な内容を書いていきます。
## p5.js の randomGaussian() について
p5.js の randomGaussian() は、いわゆる「正規分布」「ガウス分布」にしたがって乱数を得る関数です。以下が、[randomGaussian() の公式リファレンスのページ](https:/
アクセシビリティを意識した実装の意義について確認する
# 1. 背景
アクセシビティにも色々定義がありますが、身体に関わる障害を持つ方のための実装をする意義を確認したいと思った為です。# 2. 各身体に関わる障害と有効なアクセシビリティ
https://developer.mozilla.org/ja/docs/Learn/Tools_and_testing/Cross_browser_testing/Accessibility
| 身体に関わる障害のカテゴリ | 有効なアクセシビリティ |
| —- | —- |
| 視覚 | スクリーンリーダーや拡大/ズームを使用してテキストにアクセス |
| 運動機能 | キーボード(または他のマウス以外の機能)を使用してウェブサイトの機能をアクティブ化 |
|聴覚|音声や動画のコンテンツのキャプション/字幕またはその他の代替テキストに依存# 3. 令和4年度 国内雇用 身体に関わる障害を持つ方の人数とその割合
令和5年6月1日時点のデータです。357,767.5人です。
実雇用率は1.31%です。https://www.zenjukyo.or.jp/news/r05_k
【2023年1月】エンジニアなら読むべき技術書TOP5
# [世界一流エンジニアの思考法](https://amzn.to/3TPtEuz)
[![画像タイトル](https://m.media-amazon.com/images/I/71a2wfX4UwL._SL1500_.jpg)](https://amzn.to/3TPtEuz)**noteでも大人気! 米マイクロソフトのエンジニアが放つ最前線の仕事術**
頭が先、手は後。一流の仕事のカギは順序にある。
――楠木建(経営学者)知的生産へのリスペクトがイノベーションの源泉だ。
――落合陽一(メディアアーティスト)「怠惰であれ!」「早く失敗せよ」――
米マイクロソフトの現役ソフトウェアエンジニアの著者が、超巨大クラウドの開発の最前線で学んだ思考法とは?
“三流プログラマ”でもできた〈生産性爆上がり〉の技術!・試行錯誤は「悪」。“基礎の理解”に時間をかける
・より少ない時間で価値を最大化する考え方とは?
・「準備」と「持ち帰り」をやめて、その場で解決する
・マルチタスクは生産性が最低なのでやらない
・“脳の負荷を減らす”コミュニケーションの極意
・コントリビュート文化で「
オンラインゲームが”サ終”しても一生遊べるようにブラウザ移植した
![](https://storage.googleapis.com/zenn-user-upload/9b77d57d8294-20231230.png)
ふと思い立った。
PCオンラインゲームの老舗「REDSTONE(レッドストーン)」をパソコンにインストールせずに誰でもブラウザでプレイできたらどんなに幸せだろう?
もし叶えば、本家がサービス終了しても永遠に遊び続けられるじゃないか!
**よし、ブラウザで動くレッドストーンを作ろう!**
こうしてゴールのみえない過去最大級のプロジェクト「レッドストーンブラウザ版開発計画」は始まった。
## 成果物だけ見たい忙しい人向け
「記事を読むのめんどくさいから、できたものだけ見せて!」という方はこちらの動画を御覧ください。
※コレは何?: REDSTONEというオンラインゲームをGoogleChromeなどで開くだけで動くようにした「ブラウザ移植版」のテストプレイ動画です。
[YouTube: 赤石ブラウザ版 2023年末アプデ](https://youtu.be/EDfWIh6I244)
リスト内包表記の二重ループと flatMap
Python でのリスト内包表記の二重ループと JavaScript での `flatMap` を比較します。順を追ってコードを構築します。
# 題材
項目の一部を結合することを考えます。
入力 1 2 3 4 5 6 出力 1 2 3 4 5 6 これをコード化します。
構成を文字列で表現して、ネストしたリストに変換します。
* `1,2+3,4+5+6` → `[[1], [2, 3], [4, 5, 6]]`
使用されている項目を並べる際には、フラット化すると便利です。
* `[[1], [2, 3], [4, 5, 6]]` → `[1, 2, 3, 4, 5, 6]`
# Python
:::note info
REPL での実行状況を示します。`>>> ` はプ
TypeError: Cannot read properties of undefined (reading ‘JsonRpcProvider’)
# エラー内容
smart contract を利用したプロジェクト開発の際に、
“`
> npx hardhat test
“`
と行ったとき、
“`
TypeError: Cannot read properties of undefined (reading ‘JsonRpcProvider’)
“`
から始まるエラーが出る。# 解決策
2024年1月現在、“ether.js“のversion6以降はNodeJS上で正しく動作しない。
これについて議論された2023年2月の[記事](https://ethereum.stackexchange.com/questions/144381/ethersjs-listening-to-events-with-nodejs-strange-errors)があるが、どうやらまだ修正には至っていないようだ。
[“ether.js“のdocs](https://www.npmjs.com/package/ethers?activeTab=versions)を見る限り、最も安定したバージョンは“5.7.2“のようだ。とい
HTML無限スクロール
# HTML無限スクロール
ブラウザでページ遷移ではなくスクロールで次々とデータロードして続きを見せるページのサンプルを作成しました1.仕組みとしては前(又は次)のデータを読み込んで新しいHTML要素を追加する
2.現在のスクロール位置から前後5000ピクセル以上離れた要素を削除する端に到達するたびに 1~2 を繰り返し無限にスクロールしていきます
特定範囲外のHTML要素は削除されるためメモリ消費量は一定になります
超高解像度なモニター使ってる方はサンプルが上手く動かないかもしれませんサンプル動作はこちら
[https://ikuo0.github.io/infinite-scroll/infinite_scroll.html](https://ikuo0.github.io/infinite-scroll/infinite_scroll.html)# サンプルソース
## HTML
[https://github.com/ikuo0/infinite-scroll/blob/main/infinite_scroll.html](https://github.com/
D3 v7 グラフ – d3-scale、d3-axis、d3-shape
[D3 v7 入門 – Enter / Update / Exit – Qiita](https://qiita.com/sand/items/8b5ca42d1bf511e61ccd)
[D3 v7 応用 – Enter / Update / Exit – Qiita](https://qiita.com/sand/items/999715cebe52ade66c0b)
[D3 v7 グラフ – d3-scale、d3-axis、d3-shape – Qiita](https://qiita.com/sand/items/721db51592e1d161d69d)D3 の基本概念である Data Join – Enter / Update / Exit の説明は上記の記事で述べましたが、今回は実際に D3 でグラフを描く際に必要となる d3-scale、d3-axis、d3-shape について述べたいと思います。この3つのモジュールは大きなものですが、今回は必要最小限な部分についてまとめました。
# 1.d3-scale
[d3-scale – 公式ドキュメント](http
寺社巡りの管理ページを作った
よく神社やお寺をめぐっているのですが、行ったことのある場所を備忘録として残しておこうと思い、管理ページを作成しました。
特に特別な機能を使っておらず、今まで習得した技術の詰め合わせです。(完全に自分用です ^_^;)こんな感じのページです。
行ったところのある場所にマーカーを表示させるようにしています。数が多くなってきたので、都道府県でフィルタリングできるようにしました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/c458fee2-afec-cb4b-092b-98c513d1a720.png)
地図の描画にはLeafletを使っています。
マーカーをクリックすると、詳細情報が表示されるようにしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/8457b1e5-8e19-4736-6942-fdd6aaf1c01c.png)
登録は、別の
サムネイルを押すとメイン画像が切り替わる動作の実装方法
サムネイルを押すとメイン画像が切り替わる動作の実装方法
サムネイル画像をクリックするとメイン画像をふわっと切り替えるjQuery
【jQuery】サムネイルをクリックしてメイン画像を切り替える方法【枠線の変更方法も解説】
JavaScript forEachを何度も調べがちな方々へ
# はじめに
この記事は`JavaScript`の`forEach`の仕様について書いています。
開発作業中に調べる頻度が高いと思ったので、一度しっかり理解しておこうと思い記事を書きました。同じような方は参考にしていただけますと幸いです。公式ドキュメントを参考にして書いています。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
# forEachとは
念の為、`forEach`について確認しておきたいと思います。
>forEach() メソッドは反復処理メソッドです。指定された関数 callbackFn を配列に含まれる各要素に対して一度ずつ、昇順で呼び出します。 map() と異なり、 forEach() は常に undefined を返し、連鎖させることはできません。典型的な使用する用途は、チェーンの終わりで副次効果を実行することです。上記は公式ドキュメントの一部を引用したものです。
配列の要素数の数だけループを回すメソッドで、返り値
pdf-libで日本語のカスタムフォント使用時にpdfが作成できない
pdf-libで日本語のカスタムフォント使用時にpdfが作成されず、真っ白な状態になってしまった。
特にエラーなどは表示されていない状態だったのでどこがまずいのかがわからなかった。最初のコードは以下
“`js
const pdfDataUri = await pdfDoc.saveAsBase64({ dataUri: true });
document.getElementById(‘pdf’).src = pdfDataUri;
“`日本語フォントを使って正常にpdfを作成できているサンプルコードを探したところ以下のように読み込んでいたので、同じように変更したところ見事に作成できた。
“`js
const pdfBytes = await pdfDoc.save();
const file = new Blob([pdfBytes], { type: ‘application/pdf’ });
const fileURL = URL.createObjectURL(file);
document.getElementById(‘pdf’).src = fileUR
JavaScriptでかの有名な水の移し替えパズルを解く【幅優先探索】
## 元ネタ
https://qiita.com/jerrywdlee/items/c7bbcbb6c68e37e7ef71
## 問題
水が5L入る容器と3L入る容器がある、この2つの容器だけを使って、
4Lの水を量るにはどうすれば良いですか?
水はいくらでも使えるものとします。## ソース
“`js
function 水を捨てる_3L(容器3Lの容量, 容器5Lの容量, need操作テキスト = false) {
const result = {
new容器3Lの容量: 0,
new容器5Lの容量: 容器5Lの容量
}
if (need操作テキスト) {
result.操作テキスト = “3L容器を空っぽにした。 ”;
}
return result;
}
function 水を捨てる_5L(容器3Lの容量, 容器5Lの容量, need操作テキスト = false) {
const result = {
new容器3Lの容量: 容器3Lの容量,
JSで完全なイミュータブルは難しいが、知っておくとよいこと
# はじめに
[前回の記事](https://qiita.com/kohki_takatama/items/a3035c025f30d185a9db#comment-2bfa8ce16e109733c4a3)でJSの`const`、イミュータブル性について無知を晒した私です。
ありがたいことにコメントをいただきまして、それがどうも私が求めていることが書かれているっぽい。
大変丁寧に説明いただき、ありがとうございます。
# 問題
#### いただいたコメントがこちら
> ## Primitive型
> JavaScriptの世界でイミュータブル性を持つのはPrimitive型です。“`js
const number = 1;
console.log(number.toString === Number.prototype.toString); // true
number.toString = 2;
console.log(number.toString === Number.prototype.toString); // true
“`> Object型はイミュータブルでは
【TypeScript】画面表示までの仕組みを図解で理解する
# はじめに
先日、下記動画を用いてTypeScriptを勉強したときに、そもそもどうやってTypeScriptで書いたコードを画面で表示させるのか??といった概念理解が難しいなと感じました。勉強する前に、TypeScriptを用いたソースコードを実務で眺めていたのですが、仕組みをほぼ理解していなかったため、「なぜwebpackやNode.jsを途中で使っているのか?」「bundleって何?」など疑問が多く出ていました。
そのため、TypeScriptで書いたコードの画面表示方法(build手順)を図解形式でまとめました。皆さんの理解の一助になれれば幸いです。参考動画:https://www.youtube.com/watch?v=qSHlXcSces8
# 画面表示までの仕組み
TypeScriptファイルを作成して画面を表示させるまでの流れは以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661690/2d3f0922-eb82-d5e1-2344