JavaScript関連のことを調べてみた

JavaScript関連のことを調べてみた

【備忘録】休業日と営業日の表示を非同期通信で切り替えるRailsアプリの実装

## 内容
休業日と営業日を切り替えて表示するために、以下のコードを実装しました。
備忘録なので説明は省いています(面倒くさいので・・・)

### `app/controllers/reservations_controller.rb`

“`ruby
def update_slots
date = params[:date]
@date = Date.parse(date)
@company = current_company
@time_slots = generate_time_slots(@company)
@non_business_day = ScheduleService.is_non_business_day?(@company, @date)
@services = @company.services
@service_availability = ScheduleService.calculate_availability(@company, @date, @services, @time_slots)
response_data

元記事を表示

globalThis【JavaScript】

# はじめに

https://qiita.com/kohki_takatama/items/5f1c6f75e6bbf6553682

前回の記事では、ホスト環境によってglobal objectの名称と挙動が違うことを書きました。
– Node.js:`global`
– ブラウザ:`window`

(この他にもホスト環境は存在します)

この記事にコメントを頂いたのですが、どうやら`globalThis`という共通の名称が使用できるようです。

名称は同じ。では挙動はどうでしょうか。検証してみます。

# ブラウザ:`window`

前回の記事で確認した、いずれの点も`window`と同じ挙動でした。

– `const`を使用した変数宣言は、`window.name`ではアクセスできない
→`globalThis.name`も同様
– `var`を使用した変数宣言は、`window.name`でアクセスできる
→`globalThis.name`も同様
– `console.log`と`window.console.log`は完全に等しい
→`globalThis.cons

元記事を表示

eslint-plugin-import-accessを使ってみる

:::note
## 概要
`defaultImportability: ‘package’`のオプションで丸ごとpackage-privateにできます
このオプションがない場合だと`@package`のつけ忘れによる誤exportが起こり得ますがそれを防いでくれます 👍
[dependency-cruiser](https://github.com/sverweij/dependency-cruiser)と[eslint-plugin-strict-depenencies](https://github.com/knowledge-work/eslint-plugin-strict-dependencies)との使い分けを考え直す必要性を感じました
:::

# 1. 背景 🖼️

TypeScirptではexport宣言した変数や関数は全てのファイルからimportできてしまいます。

これにpackage-privateの機能を組み合わせれば外部のディレクトリからimportを制限できたり、モジュール管理がしやすくなると思い調査しました。

https://qiita.com/

元記事を表示

【Next.js エラー対応】”Image with src “/images/[image-file-name.png]” has either width or height modified, but not the other…”

Next.js の next/image で画像の縦横比を設定しろと怒られた場合の対処法。
(公式マニュアルをちゃんと読んでおけば遭遇しないやつ)

### エラーメッセージ

“`
“Image with src “/images/[image-file-name.png]” has either width or height modified, but not the other. If you use CSS to change the size of your image, also include the styles ‘width: “auto”‘ or ‘height: “auto”‘ to maintain the aspect ratio.”
“`

直訳:「[画像名]は幅か高さのどちらかが変更されていますが、もう一方は変更されていません。CSSを使って画像のサイズを変更する場合は、縦横比を維持するために「width: “auto”」または「height: “auto”」スタイルも含めてください。」

### 元のコード

“`reacttypescript

元記事を表示

面接官「0.1 + 0.2 == 0.3 が成立しない理由を説明せよ」

## 面接官「0.1 + 0.2 == 0.3 が成立しない理由を説明せよ」

という質問がきたらどう答えるだろうか。

## 0.3にはならない

### Javascript
適当なブラウザから以下のようなJavascript実行した。結果「0.1+0.2==0.3」は「false」となった。

“`js
0.1+0.2==0.3
//false
0.1+0.2===0.3
//false
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552182/e0a4c538-1729-487b-503c-e1f632b2a7c6.png)

ちなみに以下のような先頭に0をつけなくても、小数点として解釈される。
“`js
.1+.2==.3
//false
“`

### Python
バージョン3.10.11で検証する。同様に「0.1+0.2==0.3」は「false」となった。

“`py
>>> 0.1+0.2==0.3
False
“`

## なぜか

これは

元記事を表示

JavaScript の async/await について

曖昧な理解ではなく、確実な理解を目指す立場から、まずコルーチンとイベントループを簡単に説明してから、Promiseとasync/awaitを解説します。

### コルーチンと `yield`:フィボナッチ数列のジェネレーター

コルーチン(coroutine)と`yield`を理解するには、ジェネレーター関数を用いると効果的です。ここでは、フィボナッチ数列を生成する例を通じて説明します。

#### フィボナッチ数列のジェネレーター

フィボナッチ数列は、次の数が前の二つの数の和である数列です。以下に、フィボナッチ数列を生成するジェネレーター関数を示します。

“`javascript
function* fibonacci() {
let [a, b] = [0, 1];
while (true) {
yield a;
[a, b] = [b, a + b];
}
}
“`

このジェネレーター関数`fibonacci`を使用する呼び出し元のコード例は以下の通りです:

“`javascript
const gen =

元記事を表示

Teachable Machineを使ったWebアプリの作り方

こんにちは!小売業で働いているHaMaです。

私の勤めている店舗には、共有PCが事務所に4台あります。
皆さんが使うため、エクセルファイルやPDFファイルなど、データがデスクトップに散らかり放題です。
よく使うアプリケーションが埋もれてしまい、探すのに一苦労します。

そこで今回は、Teachable Machineを用いてデスクトップの散らかり具合を測定するWebアプリを制作しました。
「整頓済み」「散らかっている」という判断を、人の感覚ではなく、アプリにさせることで、あるべき姿を店舗従業員の皆さんで統一しようという試みです。

# 作品の紹介

WordPressでJavaScriptを埋め込む方法

## はじめに
今回はWordPressでモーダルを実装する際にJavaScriptをどこに埋め込めばいいか悩んだのでその解決策をまとめる
## 問題点
WordPressでJavaScriptのコードをどのphpファイルに埋め込めばいいのか
## 解決策
footer.phpの“`“`の直前に埋め込むことで解決する
ただしこれは非推奨な方法のようなので別の方法は後日追記する

“`footer.php




“`

元記事を表示

遅延シーケンス in JavaScript (function 使わない版)

[遅延シーケンスを用いた無限素数列 in JavaScript](https://qiita.com/kohyama/items/0f6643d30ce2ffa98572)
で使っている遅延連結リストを function を使わずに実装
するために必要な前提知識の再確認および演習です.

# function と =>

「function」で関数を定義する場合と「=>」で関数を定義する場合で

| | function | => |
|:——————–|:——–:|:——-:|
|prototype | 使える | 使えない|
|名前を使った再帰 | 使える | 使えない
|new で呼び出して
コンストラクタとして | 使える | 使えない |

のような違いがあります.

本記事では, 上記機能を使わず「=>」を使っていきます.
(function を使う版は[こちら](https://qiita.com/kohyama/items/d

元記事を表示

SIP-1000準拠のデコーダーを作る

# はじめに

### SIPについて
コミュニティのみなさんがまとめていただいてます。

https://symbol-community.com/ja/community/304

https://drive.google.com/file/d/122hovzaodAAie1dueN1LEuTag9gpj3rW/view

> SIP は “Symbol Improvement Proposal” の頭文字を取り略称表記したもので、Symbolの仕様や機能を改善するための提案、その申請の形式で、Bitcoinでは BIP 、Ethereumでは EIP という形式があります。
現在Symbolの仕様や機能の改善等についての提案は、Discordなどでコアチームに対して都度任意の形式で行われており、 BIP や EIP のようなフォーマルな形式は存在していません。
そのため今回の SIP-1000 もフォーマルな形式に則ったものではありませんが、 BIP や EIP に倣い SIP-1000 として提案し、意見を募集するものです。同時に、その提案フローを書くためのガイドラインを SI

元記事を表示

配列 [JavaScript]

配列とは・・・

>はい‐れつ【配列/排列】
読み方:はいれつ
>
>1 [名](スル)順序を決めて並べること。また、その並び。「五十音順に—する」
>
>2 (「配列」と書く)コンピューターのプログラミング言語における、データ形式の一つ。同じ型のデータの集合を意味し、個々のデータは変数の添え字で区別する。

データ構造。データの集まりのこと。

一つの値を単体で書くのではなく、
複数のデータの集まりを関連付けて一つのまとまりとして使いたい場合に使う。

例:

嵐のメンバー5人を一つのまとまりとして定義したいが・・・

const = Jun Matsumoto
const = Kazunari Ninomiya
const = Masaki Aiba
const = Satoshi Ohno
const = Sho Sakurai

これだと、1つの変数にそれぞれ5人の名前を定義しているだけなので5つの変数がそれぞれ関連付いていない・・

どうすれば1つにまとめられるのか?

この場合、1つにまとめられる手段として
配列を使用できる。

配列を使用することで、5人全員をコレクシ

元記事を表示

kintoneの保存時(submit)にSweetAlert2を使って保存させるか選ばせる方法

# 環境
– kintone
– javascript
– jQuery
– SweetAlert2

# 対象
– kintoneの保存時(submit)にSweetAlert2を使って保存させるか選ばせたい人

# 通常の書き方(ダメなパターン)
通常は以下の様な書き方になると思います。
“`javascript
kintone.events.on(
[“app.record.create.submit”, “app.record.edit.submit”],
(event) => {
Swal.fire({
title: “保存”,
text: “保存処理を続けますか?”,
icon: “warning”,
showCancelButton: true,
confirmButtonColor: “#3085d6”,
cancelButtonColor: “#d33”,
confirmButtonText: “保存する”,

元記事を表示

ArrayBuffer transfer/detachedについて意識しないとひどい目にあう話

# TL;DR;
“`
Uncaught (in promise) TypeError: Cannot perform Construct on a detached ArrayBuffer
“`
みたいな問題に遭遇したときへの対処です。
また原因についてそれっぽいことを書いておきます

# 例
Chrome バージョン: 124.0.6367.119(Official Build) (arm64)
“`javascript
const audioCtx = new AudioContext();
const arrayBuffer = await fetch(‘./test.aac’)
.then((response) => response.arrayBuffer());
const audioBuffer = await audioCtx.decodeAudioData(arrayBuffer);
const binary = new Uint8Array(arrayBuffer);
“`
コードそのものはaacのメタデータとか

元記事を表示

Discord.js v14 botの作り方【基礎・埋め込み編】 (2024/5/22現在)

# Discord.js とは
Discord.js (以下d.js) とは、discordのbotを開発するときに使用するパッケージの1つです。
同様に、Discord.pyというものがあります。これはpythonで開発する場合のパッケージになります。
詳しくは[こちら](https://qiita.com/minoru_kinugasa/items/e1bdee4ca016b2a38e2c)をごらんください!

# 埋め込みとは
見たほうが早いです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3794632/e9f599f1-93c4-cfa4-8cc6-362bbeadca13.png)
これです。
この埋込みはすべてのプロパティが入っていますが、タイトルだけ や 画像だけ という埋め込みを送信することもできます。

### 送信方法
`send()`関数の中にオブジェクトで`embed`を入れます。
これも見たほうが早いです。
“`js:index.js
const { C

元記事を表示

外部トリガーからカメラを起動してTeachable Machineに繋げてみる

Node-REDからTeachable Machine(以下、TM)を使う時に[node-red-contrib-browser-utils](https://flows.nodered.org/node/node-red-contrib-browser-utils)のカメラで写真を撮影してを使うのが一般的?です。

## カメラボタン以外から起動させたい

このやり方だとカメラボタン以外からの起動ができず、外部のスイッチを押して起動、何かLINEが届いたらカメラ起動など外部トリガーからの起動ができません。

> ![](https://i.gyazo.com/f6915251699613d95e424ed0ce8cf77b.png)

[@sumit_shinde_84/node-red-dashboard-2-ui-webcam](https://flows.nodered.org/node/@sumit_shinde_84/node-red-dashboard-2-ui-webcam)というノードを使うことで外部トリガーからカメラ起動ができます。

> こちらのノードは入力の口

元記事を表示

クライアント側での添付ファイル読み込みとアップロード

VercelのNext.js/Reactアプリでファイルアップロードを実装しようとしましたが、アップロードする画像を保存したいわけではない(生成AIに画像ファイルの解釈をしてもらうだけなので処理後は破棄してOK)ので、簡易的な方法を探しました。

結果、クライアント側でBase64に変換してからサーバー側に送信することにしました。
デメリットとしては通信量が多くなります。

“`TypeScript
{
// Read the file content and convert to data URI in the client side
const selectedFile = evt.target.files![0];
if (!selectedFile) {
setImageUrl(”)

元記事を表示

global object 【JavaScript】

# はじめに

global object とは、簡単に言えば「コードのどこからでもアクセスできるオブジェクト」です。
ホスト環境(Node.jsや各種ブラウザなど)によって実装が変わります。

※コメントいただきました。
`globalThis`を使用すればホスト環境に関係なくglobal objectにアクセスできるようです。
ただし、挙動が変化することはないようです。Node.jsの`globalThis`は`global`と同じ挙動をし、ブラウザの`window`もしくは`globalThis`とは違う挙動をします。

# ブラウザの場合:`window`

Chrome, Firefox, Safari, Edgeの各ブラウザはglobal objectとして`window`を使用します。

Qiita APIで特定ユーザーのQiitaの記事を検索する

以前、
[[Qiita記事を量産している人必見!]自分の記事を検索する](https://qiita.com/ELIXIR/items/ff7a9ce49476c6161ed0)
という記事で特定ユーザーの記事を検索するツールを公開しました。

https://elix.jp/app/tools/qiita_index.html

投稿した記事も200を超え、投稿したことすら忘れているような記事も見つけられるので個人的に重宝していますが、それ以外にも、自分が興味を持った記事を投稿したユーザーがどんなジャンルの記事が多いのかを調べたりするのにも使用しています。
そんなとき、上には上がいるもので、200どころか1000を超える記事を投稿していらっしゃる方もおります。
記事が多い場合、現状は記事を集めている間はフリーズしたような感じに見えてしまうので、
“`処理中…“`の表示を出すように改良しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59911/b83a69af-d11

元記事を表示

Discord.js v14 botの作り方【基礎・メッセージ編】 (2024/5/22現在)

# Discord.js とは
Discord.js (以下d.js) とは、discordのbotを開発するときに使用するパッケージの1つです。
同様に、Discord.pyというものがあります。これはpythonで開発する場合のパッケージになります。
詳しくは[こちら](https://qiita.com/minoru_kinugasa/items/e1bdee4ca016b2a38e2c)をごらんください!

# 今回の目標
メッセージの仕組みと、複数の送信方法を理解する。
いろんな種類があるので、できるだけわかりやすく簡単に説明します!

# メッセージについて
送信方法は大きく分けて3つあります。
1. チャンネルを探して、送信する
1. メッセージに対して、返信する
1. ユーザーを探して、ダイレクトメッセージ (DM) を送信する

それぞれ方法を簡単に説明します!

## チャンネルを探して、送信する
### チャンネルを探す とは
まず`探す`ってどういうことでしょうか?
Botは、複数のサーバーに導入されます。
また、チャンネルにはそれぞれ唯一無二のidが紐づけられ

元記事を表示

OTHERカテゴリの最新記事