- 0.0.1. Storybookのtitleタグやfaviconを無理やり変更する
- 0.0.2. WebビューアでJavaScriptを実行をようやく使ってみた。
- 0.0.3. 便利ページ:plus codeのエンコード・デコード
- 0.0.4. 今まで投稿したQiita記事を振り返りたい
- 0.0.5. [TypeScript]constとreadonlyの違い
- 0.0.6. 【JQuery,Ajax,PHP】JQueryで非同期通信(簡単な仕組み~コード)
- 0.0.7. Node-REDのノードをつくる手順
- 0.0.8. 【JavaScript】URLからクエリパラメータを削除する方法
- 0.0.9. JavaScript学習の記録2
- 0.0.10. プログラマーが落ち着かなくなるコードを書いてみた
- 1. 1~10の数字を入力
- 1.0.1. [TypeScript]ジェネリクスについて簡単にまとめた
- 1.0.2. 【JavaScript】分割代入
- 1.0.3. JavaScript の Segments の使い所を考える
- 1.0.4. 【小ネタ】GitHub.comの経過時間表記をJSTに変換するブックマークレットを作ってみた
- 1.0.5. Youtube Musicでまとめてdislike(低評価)をするスクリプト
- 1.0.6. ゼロ除算のショートハンド
- 1.0.7. p5.js での往復する動きのループアニメーションを frameCount と色の透明度の設定で作る
- 1.0.8. htmlでポップアップwindowを出してみる。
- 2. Pop UP Window
Storybookのtitleタグやfaviconを無理やり変更する
Storybookで[自作のライブラリのドキュメントサイト](https://phavuer.laineus.com)を作ったのですが、そうなると当然titleタグやfaviconを独自のものに変更したいわけですが、正規の設定ではできないっぽい?ので無理やり変更しました。
# 初期レンダリング時のtitleタグを変更
index.htmlに静的に設定される初期レンダリング時のtitleタグですが、どうせ直後にStorybookによって動的に変更されるため、あまり意味はありません。
ただ、シェア時などにシェア先のボットが読みに来る際は、js実行前の静的なhtmlを参照するため、こちらも一応変更しておきたいです。
Storybookの設定でどうこうしようと考えるのはやめて、ビルドされて生成されたhtmlファイルを書き換えちゃいましょう。
htmlファイルを読み込んで、titleタグ部分を文字列置き換えして上書きするスクリプトを作成します。
bashでもなんでもいいんですが、今回はnode.jsで作成しました。
“`js:update-title.js
import fs
WebビューアでJavaScriptを実行をようやく使ってみた。
## WebビューアでJavaScriptを実行をようやく使ってみた。
今回は、19で新登場した[webビューアでjavascriptを実行](https://help.claris.com/ja/pro-help/content/perform-javascript-in-web-viewer.html)をようやく使っていきたいと思います。
まず初めにwebビューアでjavascriptを実行をGoogle先生で調べてみると、自作Formに値を入れて、Webビューアから値を戻す。
といった内容が広く一般的に書かれています。あんまりこんなこと言いたくないんだけどね。
いやそれどこのタイミングで思ってどこで使うん。
※個人的な主観の為、気分を害された方には心よりお詫び申し上げます。なので今回は、自分で使うタイミング作ってみました。
## ヤマト運輸で送り状作ります!
え?そんな急な…
~~私、送り状作る仕事してないから、そんなん言われてもピンとこんわ。~~
特段深い意味はないよ。
過去のサンプル探してたら、それしかなかったんだ。皆様[ヤマト
便利ページ:plus codeのエンコード・デコード
GoogleMapで見かけるようになったPluscodeをエンコードして緯度経度を算出したり、その逆をしてみます。
「[便利ページ:Javascriptでちょっとした便利な機能を作ってみた](https://qiita.com/poruruba/items/6c67c7eef34ed302feb3 )」のシリーズものです。
Pluscodeは、位置情報(緯度経度)を短縮した文字にエンコードしたコードをいいます。
GoogleMapでは以下の部分です。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/ce00e112-e4dd-7b70-ae6b-25698cea12ec.png)
2種類のエンコード方式があります。
* Full:少々長いコードですが、緯度経度の値を表します。
例:8Q7XFJ3V+25* Short:少々短いコードですが、狭い範囲しか位置を特定できません。したがって、どこの場所の狭い範囲なのかおおよその位置を別途町名等で補います。こちらがGo
今まで投稿したQiita記事を振り返りたい
## 目次
* [概要](#概要)
* [構成](#構成)
* [実装内容](#実装内容)
* [実行結果](#実行結果)
* [今後](#今後)
* [参考資料](#参考資料)## 概要
Qiitaを始めて1年ぐらいたったので、今まで書いた記事を振り返ろうと思ったが、今だと情報が少ないので細かい振り返りは断念した。
なので、今年から記事の閲覧数等を日や月単位で取れるようにGASを書いておいて、
また来年振り返るまでの準備をした(もしくは準備中)の話になります。
※GASは一旦日次で動かそうと思います。#### とはいえ今できる振り返り
今までの記事(総数6件)の閲覧数の平均は1500~2000の間ぐらいで、いいね数とストック数の平均も1と多くなかった。
いいね数が0だけど閲覧数が3200ぐらいの記事があり、それが閲覧数トップだったのが意外でした。改善点を[LAPRAS](https://lapras.com/)のAIReviewで確認したところ、もっと説明を追記する必要がありそう。
確かに画面キャプチャとリンクが多かったかなと思うので、次回からもう少し自分の説明を追加しよ
[TypeScript]constとreadonlyの違い
## constとreadonlyの違い
JavaScriptでは、constで宣言した変数は代入不可になります。
TypeScriptではオブジェクトの型のプロパティにreadonly修飾子をつけると、そのプロパティが代入不可になります。## constは変数への代入を禁止にするもの
constは変数への代入を禁止するもの。例えば、constで宣言されたxに値を代入しようとすると、TypeScriptではコンパイルエラーになり、JavaScriptでは実行時エラーになります。“`ts
const x = 1;
x = 2;
// Cannot assign to ‘x’ because it is a constant.(定数であるため、’x’ に代入することはできません。
“`
このように、変数そのものに代入をすることはできません。
以下のように、変数のプロパティへの代入は許可されています。
“`ts
const x = { y: 1 };
x = { y: 2 }; // 変数そのものへの代入は不可
x.y = 2; // プロパティへの代入は許可
“`##
【JQuery,Ajax,PHP】JQueryで非同期通信(簡単な仕組み~コード)
ajaxを実装しようとしたのですが、仕組みからコードまでまとめられているところがなかったため、自分のためにもメモしておきます
参考になれば幸いです# 前提確認
Jqueryはjavascriptの集合
意外とこれを勘違いしている方もおおいのではないかなと思いました
余談ですが、私もはじめのころは勘違いしていました、、、# そもそもAjaxって?
Asynchronous JavaScript + XMLの略
Asynchronous:非同期
だから、簡単に言うと
「JavaScriptを使って非同期通信を行う仕組み」# もう少し詳しく
Javascriptの特徴
基本的にメインスレッドで実行される
(メインスレッドでは、javascriptの処理の他に画面のレンダリングなども行っている)
+ 同期処理
サーバーにリクエストを送ったら、レスポンスが返ってくるまで次の処理はできない
(メインスレッドで処理がされるため)
+ 非同期処理
サーバーにリクエストを送ってレスポンスが返ってきていなくても、画面上での別の操作ができる
(リクエスト処理を一度バックグラウンドに移す(
Node-REDのノードをつくる手順
Node-REDのコントリビュータの横井一仁です。今回は、[公式サイトに掲載されているサンプルノード](https://nodered.jp/docs/creating-nodes/)をもとに、Node-REDのノードを自作する手順について説明します。
現在、Node-REDは月あたり15万回ダウンロードされており、急速に普及しています。また、[reTerminal DM](https://qiita.com/kazuhitoyokoi/items/ecf60f30a15457d48c2b)などの産業向けRaspberry Piの標準ソフトウェアにもなっています。Node-REDが普及が進んでいることの理由の1つとして、「ノードを自由に登録できる」ことによるコミュニティの力が影響していると考えます。現在、[フローライブラリ](http://flows.nodered.org)には、約5000個のノードが登録されており、様々な企業が自社のサービスの利用促進のためにノードを提供しています。
また、Node-REDのユーザ層は、コードが書けないユーザの方が大きく拡大するポテンシャルがあります
【JavaScript】URLからクエリパラメータを削除する方法
以下のように記述することでURLからクエリパラメータを削除できます。
“`js
const url = new URL(window.location.href) // URLを取得history.replaceState(”, ”, url.pathname) // URLからクエリパラメータを削除
“`https://developer.mozilla.org/ja/docs/Web/API/History/replaceState
JavaScript学習の記録2
# はじめに
前回に続いて,JavaScriptの学習内容をアウトプットします.# オブジェクトの省略記法
オブジェクトのプロパティと変数が同じ名前の場合,変数の部分を省略してもよい.例
“`javascript
const myprofile = {
name:name,
age:age,
}
“`
↓
“`javascript
const myprofile = {name, age}
“`# スプレッド構文
「…」を使用する構文で,配列やオブジェクトに対して使用する.配列・オブジェクトの中身を順番に展開して,処理していくもの.
“`javascript
const arr = [1, 2];
console.log(…arr);
“`
↓ 実行結果
“`
1 2
“`### スプレッド構文を使って配列を結合する
“`javascript
const arr1 = [10, 20];
const arr2 = [30, 40];const arr3 = […arr1, ..arr2];
console.log(ar
プログラマーが落ち着かなくなるコードを書いてみた
どうもこんにちはAtsu1209です。
今日はプログラマーが落ち着かないコードを書きます。# 奇数偶数
今日は例として1~10の間で入力された数を
奇数偶数で判定するコードを書きます。# HTML
まずはコードを書く前に、HTMLを書きます。“`html:index.html
偶数奇数(出会いたくない)
1~10の数字を入力
“`# JS
ここからコードを書きます。
“`javascript
c
[TypeScript]ジェネリクスについて簡単にまとめた
# ジェネリクスとは
ジェネリクスとは、**型引数を受け取る関数を作る機能**のことです。
ジェネリクスはTypeScriptプログラミングにおいて欠かすことができない機能の一つです。
例えば、以下のように書くことができます。
“`sample.ts
type User= {
age: N;
};const userAge: User
= { age: “25” };
const userAge2: User= { age: 25 };
console.log(userAge);
console.log(userAge2);
“`
このように、引数の中身(N)を「age」の型定義に適用させることができます。
これが、以下のようにするとコンパイルエラーとなります。
“`sample.ts
type User= {
age: N;
};// コンパイルエラー↓
const userAge: User= { age: “25” };
// コンパイルエラー↓
const userAge2
【JavaScript】分割代入
### 分割代入とは
分割代入とは、配列/オブジェクトを分解して、要素/プロパティの値を個々の変数に分解するための構文である。
### 分割代入 (配列)
代入先変数全体をブラケット[…]でくくる。#### 配列要素と変数が同じ
左辺に要素の数だけ変数を列挙する。“`javascript
const data = [1, 2, 3, 4, 5]
const [x0, x1, x2, x3, x4 ] = data
console.log(x0, x1, x2, x3, x4)
“`“`javascript:実行結果
1 2 3 4 5
“`#### 配列要素と変数の個数が異なる
左辺変数と右辺の配列要素の個数が等しくなくても構わない。“`javascript
const data = [1, 2, 3, 4, 5]// 配列サイズよりも代入先の変数の個数が少ない場合は、残りの要素は無視される。
const [x0, x1, x2] = data
console.log(x0, x1, x2)// 配列サイズよりも代入先の変数の個数が多い場合
JavaScript の Segments の使い所を考える
JavaScript の Segments という機能を知りました。
JavaScript って標準 API でこんなこともできるのかhttps://t.co/ckHTlqcium pic.twitter.com/hrwfgvtF4J
— naporitan (@naporin24690) December 25, 2023
【小ネタ】GitHub.comの経過時間表記をJSTに変換するブックマークレットを作ってみた
リポジトリに書かれているものがそのままなのですが、GitHubの公式サイトの`2 days ago`のような表記を日本時間の`2023/12/31 16:43:01`という表記に変換するブックマークレットを作って公開したのでQiitaでもお知らせです。
https://github.com/Priarts/github_time_JST_bookmarklet
動作確認はMacのChromeだけでやっています。もし他のブラウザで動かなかったらごめんなさい。
あとChrome拡張で、ページに来たらいきなり変換するのを作ろうかと思ったのですが、`2 days ago`は別に良いけど`5 years ago`だと、いつやねん!って思って変換したくなるとかもありそうだったと思ったので、ブックマークレットで作っています。
n番煎じかもしれませんが、良かったら使ってみてください🙏🏻
Youtube Musicでまとめてdislike(低評価)をするスクリプト
### 動機
Youtube Musicを使っていると、聞きたくない曲(特定アーティストの曲)がそれなりに自動で再生されてしまうので何とかしたい フィードバックとしてdislikeボタンがあるが、それを何度も押してもそのアーティストの曲は普通に流れてきたりする。特に顕著なのが協調フィルタリングでおすすめされそうなファンベースが近いアーティストで、全曲dislikeでもしないと普通に自動再生に入ってきてしまう 1個1個手でやってもいいが、途中でめんどくさくなった
### コード 1回やるだけなら、対象のアルバムやアーティストの曲リストのページでChromeの開発者コンソールからこのコードを貼り付けるだけで良い。1.5秒毎に1曲dislikeを付けていく。
``` document.querySelectorAll('yt-button-shape#button-shape-dislike button[aria-pressed="false"]').forEach((button, index) => { setTimeout(() => { button.
ゼロ除算のショートハンド
## 何をしたか
よくありそうな除算の結果を少数切り捨てして、0除算の場合は任意の値(例えばゼロとかエラー文字列)を返す式を短く書く方法を研究した結果こうなりました。
``` js function divide(a, b) { return a / b | 0; } ```
論理和(`||`)じゃなくてビット論理和( `|`)です
## 何故こうなるのか
JavaScriptにおいて数値は内部的に64ビットの浮動小数点数(IEEE 754形式)として扱われるが、ビット演算は32ビット整数で行われるため、この過程で浮動小数点数から整数への変換が行われます。 またJavaScriptでは、`a / b`のbが0の場合、結果は`Infinity`または`-Infinity`になります。これらは浮動小数点数の表現であり、次のビットパターンで表されます。
### `Infinity`の64ビット二進数表現の変換過程
``` 0111111111110000000000000000000000000000000000000000000000000000 ```
上位32ビ
p5.js での往復する動きのループアニメーションを frameCount と色の透明度の設定で作る
## この記事の内容 p5.js で往復する動きを使ったループアニメーションを作るのに、「frameCount と剰余演算を使う方法」と「frameCount と三角関数を使う方法」のそれぞれを試し、その話を以下の記事に書きました。
●p5.js でのループアニメーションで「frameCount」と「剰余演算 or 三角関数」を使う :2D・3D のそれぞれで x方向に往復する動きを例に +α #JavaScript - Qiita https://qiita.com/youtoy/items/47cf23bb16af9f22ced3
今回の記事で扱うのは、それら 2つとは別の方法を試してみた話です。
## 実装した内容 描画する内容は、キャンバスの真ん中の高さのところを円が左右に往復するというものです。 まずは実装した内容全体を示します。
```javascript const c = [190, 160, 250]; let a = 255;
function setup() { createCanvas(450, 350);
noStroke(); }
f
htmlでポップアップwindowを出してみる。
機能説明などで、一時的に見られるウインドーがあると便利ですよね。 そこで、html内にスタイルシート(css)を使ったポップアップウインドーを見つけました。 それに手を加えジャバスクリプト(javascript)で表示位置を変えたのを、紹介します。 特徴としてはちょっとしたテキストを確認したり、コピペして使える。要らない時は消して置いたり邪魔になったら場所を変える。
htmlファイル ```html
Pop UP Window
Pop UP Window
「アドバイザー・にゃんこ」
バッククォート(`)で文字列を囲った際のJavaScriptの挙動について
TypeScriptのソースコードを読んでいると、文字列を囲う際に、シングルクォート `'` やダブルクォート `"` ではなく、バッククォート `` ` `` を使うことがあります。
[JavaScript Primer](https://jsprimer.net/basic/data-type/#string) によると
バッククォート`` ` ``で囲んだ範囲を文字列とするリテラルのことを **テンプレートリテラル** と呼ぶそうです。
ES2015から導入されたリテラルで、TypeScriptを書くなら頻繁に目にしてもおかしくないリテラルですね。## (本題)テンプレートリテラルの主な特徴
1. 複数行の文字列をそのまま書くことができる
2. 文字列内で `${変数名}` と書くと、変数の値を埋め込むことができる### 1.複数行の文字列をそのまま書くことができる
```JavaScript: sample01.js
`複数行の
文字列を
入れたい`; // => "複数行の\n文字列を\n入れたい"
```### 2.文字列内で `${変数名}` と書くと、
JQuery の ready の実装
**コメント欄から情報頂きましたのでコメント欄を参照ください**
# JQuery の ready の実装
DIV でもなんでも ready が実行できて追加要素の描画完了時に実行してくれるのでどういう実装してるのかと思ってソース読んだら setTimeout してた
[JQuery 3.7.1 のソース](https://code.jquery.com/jquery-3.7.1.js)
## 一部抜粋
``` javascript
if ( document.readyState === "complete" ||
( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {// Handle it asynchronously to allow scripts the opportunity to delay ready
window.setTimeout( jQuery.ready );}
```## 動作を推測
* setTimeout を呼び出す