- 1. パソコンが熱々になっても気づかないので炎を出してみた
- 2. 音声コマンドに基づくカラフルなパーティクルシステムの実装
- 3. 【Javascript】テンプレートリテラル(テンプレート文字列)
- 4. フェーズドアレーレーダーの原理。ステレオスピーカーを用いた擬似的な音のビーム形成のゲームです。
- 5. 体を動かすとモーションに応じて音が変わるゲーム。
- 6. 【p5.js】p5.sound の getSources() を使って複数のマイク入力のリストをシンプルに出力
- 7. 【Cypressコンポーネントテスト】Object.assign を使ってVueのprops.dataを上書きする
- 8. [JavaScript] ライブラリなしで配列操作の遅延評価ができる(予定)
- 9. 「npm i」と「npm ci」の違いについて簡単にまとめ
- 10. React入門メモ
- 11. 右クリック禁止とmouseover
- 12. 64パッドのレイアウト図示用MIDIモニタを作った
- 13. window.openのメモ
- 14. 【初めての個人開発】『これおれがわるいんか?』- 超局所的SNS
- 15. v0を使ってみた
- 16. 知らない(見たことない)メソッドをコードレビュー中に見たとき、どうしたらいいんだろう、、
- 17. 【備忘録】GAS(Javascript)におけるブーリアン型の判別
- 18. RailsでJavaScriptファイルを新しく作ったら動かない
- 19. Remix SPA modeでMUIを使用するとビルド時にエラーになる件
- 20. ReactでオシャレなプロフィールWebサイトを作成してみた【初心者向け】
パソコンが熱々になっても気づかないので炎を出してみた
# PCで作業をしている傍らで炎が出るデスクトップアプリ
こんな演出をつくってみました。温度が上がるほど炎が激しくなります。![無題の動画 (2).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/896a8a0c-0ca5-9ac1-f1ca-52817cbbc667.gif)
デスクトップの左下に表示させました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/7465b423-a69f-2e79-16a9-1bc6adeacf69.png)**PCが火傷しそうなくらい熱くなる時はありませんか?** 気づいた時にはPCを冷やすようにしていますが、作業に集中しているときは気づかないこともあります。そこで、PCの温度が高いと炎の大きさで知らせるアプリをつくりました
温度はこのようにセンサーがPCの熱を持つ部分に設置します。ベタ付けです!
![IMG_20241001_
音声コマンドに基づくカラフルなパーティクルシステムの実装
論文風の解説: 音声コマンドに基づくカラフルなパーティクルシステムの実装
概要
本研究では、音声コマンドをトリガーとして、視覚的に魅力的なカラフルなパーティクルシステムを生成するウェブアプリケーションの設計および実装について述べる。音声認識技術とCSSアニメーションを用いて、音声コマンド「hello」に応答して、画面中央からランダムな方向に向かって噴出するパーティクルを表示するシステムを構築した。音声認識の設定
音声認識には、Web Speech APIを用いて、ブラウザ上で音声コマンドをリアルタイムで認識する。音声認識の初期設定において、以下のパラメータが設定されている:
recognition.lang : ‘en-US’(英語の音声コマンドを認識)
recognition.interimResults : false(最終的な認識結果のみを取得)
recognition.continuous : true([音声認識を継続的に行う](https://daynghekimhoan.weebly.com/blog/vang-hong-la-gi-nhung-thac-mac-ph
【Javascript】テンプレートリテラル(テンプレート文字列)
# 文字列の中に式や変数を埋め込むことができる
“`ruby:書き方
var name = “ペンギン”;
var age = 30;console.log(“こんにちは。私は” + name + “です。” + age + “歳です。”);
↓
console.log(`こんにちは。私は${name}です。${age}歳です。`);
“`
“`
こんにちは。私はペンギンです。30歳です。
“`# 改行文字がそのまま改行として扱われる
“`ruby:書き方
var msg = `こんにちは。
私はペンギンです。
30歳です。`;console.log(msg);
“`
“`
こんにちは。
私はペンギンです。
30歳です。
“`
フェーズドアレーレーダーの原理。ステレオスピーカーを用いた擬似的な音のビーム形成のゲームです。
### ステレオスピーカーを用いた擬似的な音のビーム形成
![スクリーンショット 2024-10-01 044245.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846020/cec2b6c1-a252-9071-2c59-c9c80913e027.png)
フェーズドアレーレーダーの基本的な原理のゲームです。
このコードでできること:
スピーカーから音波をビーム状に発射する擬似シミュレーションを体験できます。
位相差に基づいてビームの方向が変化し、その方向がリアルタイムでキャンバスに描画されます。
マイクで取得した反射音をスペクトログラムとして表示し、音波の反射状況を視覚的に確認できます。コードの概要:
音波ビームの擬似形成:左右のスピーカーに位相差を持たせることで、音のビームを擬似的に形成します。Math.sin() 関数を使って、時間とともに音の位相を変化させ、音波ビームの方向を変更します。
反射音の検知:マイクからの音声入力を取得し、AnalyserNode を使って周波数デー
体を動かすとモーションに応じて音が変わるゲーム。
### ウェブカメラで体を動かすと音が生成され、そのモーションに応じて音が変わります。
ページを開くと「Start」というボタンが表示されます。
ボタンをクリックすると、音声の生成が開始され、PoseNetが動作を開始します。手の高さによって音の周波数が変わり、手の位置が低いほど低い音、位置が高いほど高い音になります。
手の位置が画面の下に近いほど音が大きくなり、上に近いほど音が小さくなります。![スクリーンショット 2024-10-01 042342.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846020/23e8ed23-2592-9b83-500e-126c6977f51d.png)
“`html
【p5.js】p5.sound の getSources() を使って複数のマイク入力のリストをシンプルに出力
タイトル通り [p5.sound](https://github.com/processing/p5.sound.js) を使った内容です。
前に書いた以下の記事でも、今回と似たようなことをやっていました。
その際、p5.js Web Editor・p5.js を使ったものの、マイク入力の取得は JavaScript の「[MediaDevices: enumerateDevices() メソッド](https://developer.mozilla.org/ja/docs/Web/API/MediaDevices/enumerateDevices)」を使っていました。●PC で利用できるマイクなどのオーディオ入力のリストを p5.js Web Editor上で見てみる(ブラウザの MediaDevices) – Qiita
https://qiita.com/youtoy/items/8339313b561c503ffe39![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5
【Cypressコンポーネントテスト】Object.assign を使ってVueのprops.dataを上書きする
Cypressのコンポーネントテストで、テストごとに props.data の値を変えてVueコンポーネントをmountする時、値の変わらない props.data も都度追加するのが手間だったので、良い感じにマージ出来ないか調べた際の備忘録です。
| package | version |
| ——- | ——- |
| cypress | 13.7.1 |
| vue | 3.2.47 |### コンポーネントテストの下準備
#### まず mount する vue ファイルを importし、
“`javascript
import Page1 from “@/views/Page1.vue”;
“`#### props に渡す data を定義し、 `cy.mount` でコンポーネントをマウントする。
参考: https://docs.cypress.io/api/commands/mount
“`javascript
const optionsDefault = {
props: {
userId: 1,
hog
[JavaScript] ライブラリなしで配列操作の遅延評価ができる(予定)
JavaScriptの言語仕様に新しく追加される予定の「Iterator Helpers」について解説します。
# Iterator Helpers Proposalについて
JavaScriptの言語仕様に、イテレータを操作するための便利なメソッドを追加しようという提案です。
2024年9月現在Stage3であり、**今のところまだ全てのブラウザやランタイムで利用できるわけではありません。**https://github.com/tc39/proposal-iterator-helpers
この機能を使うと、配列操作を遅延評価することができます。
# 配列操作の遅延評価とは
従来のJavaScriptの配列操作関数では、メソッドを呼び出した瞬間に配列操作が走っていました。
“`ts:従来の配列操作
// .map()を呼び出すと、即時関数で渡した関数がすぐに実行され、結果の配列が作成される
const result = [0, 1, 2]
.map(val => val + 1)
.map(val => val ** 2);
“`“`merm
「npm i」と「npm ci」の違いについて簡単にまとめ
# はじめに
Node.jsの世界で開発をしていると、避けて通れないのがnpm(Node Package Manager)です。npmは、JavaScriptのパッケージ管理ツールとして広く使われており、プロジェクトの依存関係を管理する上で欠かせない存在です。
特に`npm install`コマンドは、エンジニアであれば馴染み深いコマンドかと思います。
今回は`npm install`(npm i)コマンドと似ている`npm ci`コマンドについて記事にしました。# `npm i`とは
`npm i`は`npm install`の略称で、Node.jsプロジェクトの依存関係をインストールするためのコマンドです。
`npm i`は、`npm install`の略称として機能します。
また、`npm i <パッケージ名>`のように特定のパッケージをインストールすることも可能です。
“`
$ npm i
“`
コマンド実行をすると、`package.json`ファイルを読み込み、必要なパッケージを`node_modules`ディレクトリにインストールします。# `npm ci`と
React入門メモ
初投稿です。
以下Udemy講座用のメモ書きとして残します。###### モダンJavaScriptの基礎から始める挫折しないためのReact入門
https://www.udemy.com/course/modern_javascipt_react_beginner/?couponCode=24T4MT92724B
## セクション3 ReactやVue等を使うために知っておきたいJavaScriptの基本
### 1. DOMとは。
* HTMLを木構造で解釈したものであり、HTMLと同じ意味である。
* 従来のDOM操作として、以下のように素のDOMに対して直接操作していた
“`javascript:test.js
$(‘ul > li:first-child’).remove();
“`### 2. 仮想DOMとは
* JavaScriptのオブジェクトで仮想的に作られたDOM
* JS上で仮想DOMの操作により差分を出し、変更部分のみDOMへ反映する
* 変更差分が出せるようになったため、レンダリングの複雑さが楽になりパフォーマンスが向上した。##
右クリック禁止とmouseover
## 毎日javascriptを学習します
コピペですが
本日のテーマは、mouseover
mouseleave
右クリック禁止“`html
サンプルページ
//右クリック禁止 document.oncontextmenu = function () {return false;}
const box = document.getElementById('box');
64パッドのレイアウト図示用MIDIモニタを作った
# 64パッドのレイアウト図示用MIDIモニタ
作った:[Major/Minor 3rd Perfect 5th Layout MIDI Monitor (64pad)](https://codepen.io/ucosarv/full/abeoapg)
See the Pen window.openのメモ
## はじめに クリックしてダイアログを表示して処理する場合で、window.openを使用して対応する場合のメモ。 現状の画面(親ウィンドウ)から、新たにウィンドウを開いてその値を取得する手順です。
## window.openメソッド - **親ウィンドウ** は、`window.open` を使って子ウィンドウを開き、`postMessage` を使って子ウィンドウから送られてきたデータを受け取ります。 - **子ウィンドウ** は、`window.opener.postMessage` を使って親ウィンドウに選択結果を送信し、送信後に自分自身を閉じます。
#### 親ウィンドウ (`index.html` 側のスクリプト)
```javascript function openModalDialog(url) { const width = 500; const height = 400; const left = (window.screen.width - width) / 2; const top = (window.scree
【初めての個人開発】『これおれがわるいんか?』- 超局所的SNS
# はじめに
デプロイはしているものの、リリースというほど大そうなものではありません。 納得できる品質には達していませんが、どんな機能を実装したのか、 自分なりにおさらい/デモンストレーションしてみようという趣旨の記事です。
季節の変わり目による風邪のフルパッケージに見舞われた状態で執筆します。
https://koreore.vercel.app/
(使ってもらえたら嬉しいです)
---
# 自己紹介 東京都在住、29歳男性。Webディレクター/CC字幕制作エディターの経験あり。 現在はWebエンジニアへのキャリアチェンジに向けて学習~就職活動中です。 今回の開発も、就職の役に立てばと思い作り始めました。
# Webサービス概要 X(旧Twitter)ライクなSNS。
タイムラインには、ユーザーが経験した 「これおれがわるいんか?」と言いたくなるような理不尽な出来事が流れてくる。
それを "わるくない" と "う~ん" の二択で評価する/される。
---
※実際の画面 ![image.png](https://qiita-image-store.s3.ap-no
v0を使ってみた
webエンジニアの風速です。 以前Vercelのサービスを触ってみたのですが、今回はVercelが提供しているv0というサービスを使ってみようと思います。
https://qiita.com/pesysyon/items/a256afcb279870365073
# v0とは v0は、AIを搭載したVercelによる生成型ユーザーインターフェースシステムで、shadcn/uiとTailwind CSSに基づいて、コピペしやすいReactコードを生成できるサービスです。チャットでの対話形式でReactのコードを生成してくれて、プレビューまで確認できます。
# 使ってみた 今回はfreeプランで使用します。freeプランだと月に200クレジットという制限があり、初回の生成では30クレジット、追加の生成では10クレジット消費されます。
画面は以下のような感じです。 ![スクリーンショット 2024-09-30 20.09.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3780649/ec2e14
知らない(見たことない)メソッドをコードレビュー中に見たとき、どうしたらいいんだろう、、
# はじめに
きっかけは後輩のコードレビューをしているときです。後輩は私がその当時、知らないメソッドを使っていました(`flatMap` というやつ)(てか後輩私より優秀、、、)
具体的には以下のようなコードを後輩は書いていました。
```typescript const roles: string[] = [ ...groupMembership, ...realmRoles, ...clientRoles, ].flatMap((fullName) => fullName.split("/").filter((name) => name.startsWith(rolePrefix)) ); ```
```ts const clientRoles: string[] = Object.values(loginInfo.resourceAccess ?? {}).flatMap((client: any) => client.roles ?? []); ```
この時自分は「やばい、自分のコーディング力がなさ過ぎて読めなさすぎる、、」 「ひとまず、こういった
【備忘録】GAS(Javascript)におけるブーリアン型の判別
久々にGASコード書いたら、はまったので備忘録のメモです。 下記のコードでうまいこと動作せず、悩んでいました。 原因はindexOfの使い方を誤っていたのと、ブーリアン型になるのでおかしくなっていたという 結論です。
誤コード function test3(){ const array = ['テレビ','エアコン','洗濯機','冷蔵庫'] const machine = '乾燥機'; if(array.indexOf(machine)){
console.log('yes'+array.indexOf(machine)); }else{ console.log('no'+array.indexOf(machine)); } }
乾燥機はarrayにないので'no'にいってほしいのですが、'yes'の方にいってしまいます。
結論をいうと//array.indexOf(machine=乾燥機)は-1を返す、-1はブーリアン型 だとtrueということで'yes'になっていたようでした。 0、""(空文字)や null、undefinedはfa
RailsでJavaScriptファイルを新しく作ったら動かない
新人エンジニアの私が、入って1ヶ月ほどの時にハマった落とし穴。
### 「RailsでJavaScriptファイルを新しく作ったけど動かない。うまく繋げられない。」
一人で解決するのに相当な時間をかけてしまいましたので、同じ状況で困っている方のお力になれれば幸いです。
## 状況
Ruby on Railsで、JavaScriptファイル `sample.js` を新しく作りました。
```sample.js class Sample {} ```
この `sample.js` に書いたクラスを、`html.erb` で呼び出します。
```html.erb
$(function () { new Sample(); });
```しかし、、、ページを読み込むとコンソールに以下のエラーが出てしまいました。
```
Uncaught ReferenceError: Sample is not defined
```ReferenceError、、、Sampleなんてのは見つからないと、、、
完全にJa
Remix SPA modeでMUIを使用するとビルド時にエラーになる件
# 環境
* pc: MacBookAir 2020 intel model 16gb
* "vite": "^5.1.0"
* "remix": "^2.12.1"参考までに上記はpackage.jsonから抜粋
# ビルド時に発生するエラー原因
viteが自動的に依存関係を最適化する過程で、特定のライブラリを外部化してしまうとエラーが発生するようです。
回避方法はvite.config.tsにnoExternalを追加してエラー原因となるものを明示的に【外部化しない】という指示を追記してあげることで回避できます。Next.jsではこういったものが必要ありませんでしたが、Remix(vite)を使用していく過程でやはり細かな部分は違いがあるようです。
## MUIとの相性
悪いですね〜。
使うことができないわけではないんですが、こういったエラーの他にSPA modeを使用するとアイコン系でもエラーがでました。
今回はnoExtarnalに追記する方法を記載しましたが、import で各コンポーネントでそのまま@mui/icons-materialを使用するとエラーとな
ReactでオシャレなプロフィールWebサイトを作成してみた【初心者向け】
# はじめに
こんにちは!今回は、**React**を使って簡単かつオシャレなプロフィールWebサイトを作成する方法をご紹介します。プロフィールサイトを手軽に作りたい方や、Reactを使ってみたい初心者の方に向けた内容です。
## 使用技術
- **React**
- **styled-components**(CSS-in-JSで簡単にスタイルを適用)
- **Node.js**(Reactアプリの作成)---
## 完成イメージ
![スクリーンショット 2024-09-30 18.30.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75802/2f3f5e52-b6b7-de26-ee20-9ee7ba9d9bc2.png)## プロジェクトの作成手順
まずは、Reactアプリを作成していきます。
### 1. Reactプロジェクトのセットアップ
```bash
npx create-react-app profile-website
cd profile-website