- 1. [Typescript] オブジェクトのクローン
- 2. GBFSデータ+MapLibre GL JSで世界のシェアモビリティステーションマップを作成する
- 3. フロントエンド学習記No.1 JavaScriptの基礎に触れる
- 4. 「Frame Library」に掲載されているパーティクル「Simple Fire」を題材に Babylon.js Playground の Particle Editor を少し学ぶ【Babylon.js】
- 5. Vitestの内部で使われているvite-nodeを紐解く
- 6. クロージャーコンパイラーでJavaScriptを圧縮する
- 7. 高位合成言語アセンブラを作る。 その30
- 8. イベントリスナーの登録法二種類
- 9. Vueで明示的にDOMを更新する
- 10. 今モノレポやるならどのツール使うのがいいのん??
- 11. JSX(TSX)内で条件分岐
- 12. プロジェクトの学びを捨てることは大きな損失であるをChart.jsで描く
- 13. 【⑥進捗管理】Vite+React+TypeScript+GitHubPagesで爆速サイト公開
- 14. Array.prototype.filter()の第二引数についても理解しよう
- 15. GASでYoutubeの動画投稿をDiscordに通知する
- 16. 【JavaScript】someメソッドについて
- 17. React入門11: タイムトラベル(3)
- 18. 自分のスキルとフリーランスする上であったらいいなぁと思ったスキル
- 19. 動的なスニペットを実現する HyperSnips を使いこなす
- 20. 【JavaScript】超シンプルなブラックジャック
[Typescript] オブジェクトのクローン
## 初めに
NextJS + typescriptでwebアプリケーションを作成していた際、使用しているオブジェクトの内容が意図せず変更されてしまい、とても困惑してしまいました。その原因と解決策をここに残したいと思います。## 意図していない変更の概要
下記のようにオブジェクトAを変数Bに代入して、その代入された変数Bに変更を加えた後に元々のオブジェクトAを確認すると、変数Bにした変更がオブジェクトAにも反映されてしまっていました。
“`
const object_A = {
id: 1,
name: ‘tanaka’
}const B = object_A
B.name = ‘takahashi’console.log(object_A)
// {id: 1, name: ‘takahashi’}“`
## 原因
これの原因としては、Typescript(Javascript)はオブジェクトを変数に代入すると参照渡しになるためでした。
変数BにはオブジェクトAの参照が渡されるため、オブジェクトAと変数Bが同じオブジェクトを参照する事になります。
GBFSデータ+MapLibre GL JSで世界のシェアモビリティステーションマップを作成する
# はじめに
:::note info
この記事は [シェアモビリティの標準的なデータフォーマット GBFS Advent Calendar 2023](https://qiita.com/advent-calendar/2023/gbfs) 15日目の記事です。
:::
公開されている[GBFSデータ](https://raw.githubusercontent.com/NABSA/gbfs/master/systems.csv)と[MapLibre GL JS](https://maplibre.org/maplibre-gl-js/docs/)を用いて、世界のシェアモビリティステーションマップを作成してみました。# アウトプットイメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/205045/b5749337-c6b2-93bf-e133-ae1e9147d3d2.png)
出典)本記事で使用したGBFSデータ[^1]:::note info
2023年12月16日時点
フロントエンド学習記No.1 JavaScriptの基礎に触れる
## はじめに
初めまして。10月より某SES企業でエンジニアとして働き始めた「rky」と申します。
これまであまり経験のなかったフロントエンド技術について、最近学習を始めました。内容は基礎的なものが多くなるかと思いますが、自分自身の学びを記録するとともに、他の初学者の方々の学習にも役立つ情報を提供できればと考え学習記録をつけていくことにしました!## 学習内容
学習方法については以下のように考えています。
1. 目標とするアプリケーションや機能を考える。
2. JavaScriptを使って実装する。
3. TypeScriptで書き直す。
4. Vue.jsなどのフレームワークを使って再実装する。
これはあくまで現時点での計画なので、進行に応じて変更する可能性もあります!
これまで学習はほとんど書籍等による「インプット」に偏っていましたが、今回は「アウトプット」を重視して、学んでいきたいと思い、このような方法を試してみることにしました。## 目標物
* +ボタンをクリックしたら数字を1足す
* -ボタンをクリックしたら数字が1引く
* 数値に対応してメーターが変化する
「Frame Library」に掲載されているパーティクル「Simple Fire」を題材に Babylon.js Playground の Particle Editor を少し学ぶ【Babylon.js】
この記事は「[Babylon.js Advent Calendar 2023](https://qiita.com/advent-calendar/2023/babylonjs)」の 17日目の記事です。
## 今回の内容
この記事では、[以下の「Frame Library」](https://library.framevr.io/)に掲載されているパーティクルのうちの 1つを題材に「[Babylon.js Playground の Particle Editor](https://doc.babylonjs.com/toolsAndResources/inspector/particleEditor)」を少し学んでみた、というものです。![Frame Library](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/9fe541b6-c15b-4958-ccaa-40b164c92c63.png)
### 「Frame Library」を知ったきかっけ
今回の記事で扱う「Frame Libra
Vitestの内部で使われているvite-nodeを紐解く
この記事は[ZOZO Advent Calendar 2023](https://qiita.com/advent-calendar/2023/zozo) シリーズ3 16日目の記事です。
## vite-nodeとは
vite-nodeは、Vitestの内部で利用され、Vitestと共に開発されているライブラリでTypeScriptのトランスパイルなどをよしなにやってくれるランタイムのようなものです。
TypeScriptのトランスパイルをよしなにやってくれるランタイムのようなソリューションは思いつくだけでもいくつかあります。
[Bun](https://bun.sh/)、[Deno](https://deno.com/)、[ts-node](https://www.npmjs.com/package/ts-node)、[tsx](https://www.npmjs.com/package/tsx)、[tsimp](https://www.npmjs.com/package/tsimp)など。対してvite-nodeは、TypeScriptだけではなく、CSSや画像、Vite
クロージャーコンパイラーでJavaScriptを圧縮する
![DALL·E 2023-12-16 11.56.30 – A hacker using Closure Compiler, depicted in a modern, technology-driven setting. The hacker is intensely focused on multiple computer screens, displa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52151/b6ab2e4f-d3c0-122d-1d65-f18c19263aff.png)
# はじめに
クロージャーコンパイラーってご存知ですか?
JavaScriptの最適化ツールで、JavaScriptのコードを圧縮し、実行速度を向上させるための効率化を行なってくれます。ChatGPTにも聞いてみますかね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52151/3482bebb-
高位合成言語アセンブラを作る。 その30
# 概要
高位合成言語アセンブラを作る。
論理式から、真理値表を作る。# 投入する論理式。
“`
( ( ( a & b ) | ( a & c ) ) | ( b & c ) )
( ( ( ( a & b ) & c ) | ( ( a & ( ~b ) ) & ( ~c ) ) ) | ( ( ( ( ~a ) & b ) & ( ~c ) ) | ( ( ( ~a ) & ( ~b ) ) & c ) ) )“`
# 写真
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/f0eaa75a-8170-b131-f9fb-c526bfc5f420.png)
# 生成した論理アセンブラ
“`
make 25
wire 3 23
out 7 24
in 0 2
and 1 2 3
and 0 2 4
and 0 1 5
or 5 4 6
or 6 3 7
not 1 8
not 0 9
and 9 8 10
and 10 2 11
not 2 12
no
イベントリスナーの登録法二種類
“`javascript
//二種類のイベントリスナーの登録法let hoge = function(){/*処理*/};
element.addEventListner(“type”,()=>{ hoge(); });
element.addEventListner(“type”,hoge);//上だと、関数が引数をとる場合にも書くことができ、より柔軟性が高い。
//例
element.addEventListner(“type”,()=>{ hoge(“abc”); });//setIntervalも同様
setInterval(()=>{hoge();},1000);
setInterval(hoge,1000);setInterval(()=>{hoge(“abc”);},1000); //柔軟性が高い
Vueで明示的にDOMを更新する
バックエンドエンジニアとして、普段触ることのないフロントエンド。
とはいえ苦手意識をいつか克服したいと思い、VueやNuxtの勉強を始めていた矢先、業務でVueの修正を行う機会に恵まれました。その際にぶつかった問題について、同僚のフロントエンドエンジニアの方に助けていただいたのでその内容を整理したいと思います。
# ぶつかった問題
サブミット前に、あるフォームの値に応じて他のフォームに自動的に値をセットする、というような処理を書いていた時に、コンソールでは値が入っているように見えるのに送信先では受け取れない、といった問題が発生しました。
# シナリオ
今回は「①好きな動物の名前と②飼っている動物の名前を送信してもらうためのフォームを作っている」という事にしましょう。
“`html
OTHERカテゴリの最新記事
-
- 2024.09.20
JAVA関連のことを調べてみた
-
- 2024.09.20
iOS関連のことを調べてみた
-
- 2024.09.20
JavaScript関連のことを調べてみた
-
- 2024.09.20
Rails関連のことを調べてみた
-
- 2024.09.20
Python関連のことを調べてみた
-
- 2024.09.20
Lambda関連のことを調べてみた