雑多なブログ

音楽や語学、プログラム関連の話題について書いています

2021-01-01から1年間の記事一覧

rust: ループ

rust には次の3種類のループが使用できる。 loop while for loop loop は同じコードを停止するまで実行する。 loop { println!("Helloooooooooo"); } while 条件が真の間実行され続ける。 なお、whileの場合も条件式をまる括弧で囲まずに記述する。 let mut …

rust: if式

if式 let x = 2; if x == 1 { println!("xの値は1です。"); } else if x > 1 { println!("xの値は1より大きいです。"); } else { println!("xに想定外の値が代入されています。"); } 単一の条件の場合については、括弧を使わずに記述する。 次の例のように記…

Typescript: 型エイリアス

定義方法 型エイリアスは type キーワードを使って宣言する。 エイリアスは先頭を大文字で記述する。 プリミティブ型 type AgeValue = number const age: AgeValue = 29 ユニオン型 type StringOrNull = string | null let string_value = 'value' string_va…

楽器練習におけるメトロノームの有効な活用法について

メトロノーム使って練習するのは当たり前? 楽器の練習にメトロノームは必要だし、メトロノーム使わずに練習するのは良くない、とは楽器のレッスンを受けていて言われてきた。 たしかにメトロノームを全く使わずに練習していると、リズムやテンポ感を甘い状…

Typescript: 型

2022年5月2日更新 最近改めてTypescriptの型について学んだので、過去に記述した内容のアップデートも含めて今回記事の更新を行なった。 型の定義 型の指定は次の形式で記述する。 const 変数名: データ型 let : データ型 プリミティブ型 代表的なプリミティ…

スパムコメントが付いた。

怪しげなコメントが付いたので晒しておく。 メールアドレスのドメインからして怪しいので、該当するメールアドレスからメールが届いたり、ブログなどにコメントが付いていた場合は注意してくらはい。 下記コメント内容。 林遠 失礼致しました。Amazonで日本…

Error: "prettier/@typescript-eslint" has been merged into ....

eslintを実行したら下記エラーが発生。 Error: "prettier/@typescript-eslint" has been merged into "prettier" in eslint-config-prettier 8.0.0. See: https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md#version-800-2021-02-2…

GPLライセンスについてのメモ

Wordpressのテーマについて調べていたのだけれども、GPLライセンスのものが大半だったので、GPLライセンスについて調べてみた。 Web 制作会社または Web 制作会社の成果物を検討する場合は GPL の適用範囲が WordPress の派生物でも再配布されるもののみであ…

楽器の演奏で暗譜することについての自己分析

最近、曲を暗譜するほど弾き込んでいれば、目をつぶっても演奏できる事に気づいた。 これまで自分は、ある程度曲が弾けるようになっても不安で常に楽譜を見ながら演奏していた。それによって次のような弊害が生じている、ということに改めて気づいた。 楽譜…

サイトの内容と関係のない中古ドメイン使うな

アフィリエイトの手法で、SEO対策か何かで中古ドメインを使うというのがあるが、使用方法については配慮をしろよ、と思う事が多々ある。 ドメインとは次の要素をわかりやすく表現するためのものだ。 住所を表す サイトのコンテンツを示す(ジャンルや内容) …

動画配信サイトの技術選定

動画コンテンツの配信サービスって独自で開発するの怖いよね。技術的というよりはライセンス怖い。 ffmpegで動画を変換して、ストリーミング再生に対応する解説はネット上にたくさんあるけれど、それって実際の開発案件で使えないよなーともやっとした気持ち…

Vue3 - transitionを使ってみる。

vue.jsではtransitionという機能を利用して、UIの表示を切り替える際にエフェクトをかける事ができる。 例えば、クリックした要素を消すような場合に、エフェクトをかけるなどの処理が簡単に書ける。 対応に必要な作業は次の2つ。 対象の要素を タグで囲む…

vue3 の CompositionAPI

Composition API は大規模な開発で力を発揮する。 ただし、小さなコンポーネントにまで適用する必要はなく、そういった場面ではOptions APIで実装すれば良いと思う。 例えば、単一のラベルテキストやボタンのコンポーネント。 こういった規模のコンポーネン…

javascript: Objectクラスのメソッド

2021年12月11日更新 最近javascriptのObjectクラスについて学習しているので、 学習した内容を随時こちらに追記していく予定。 Objectクラスの機能を使いこなせると便利だなーと思う。 メソッド Object.assign Object.create Object.entries Object.freeze O…

javascript: Object.defineProperty() で変数の変更を検知

javascriptで変数の変更を検知する方法を調べたところ、 Object.defineProperty が使えるようだ。 この機能自体は、Chrome v5、IE9の頃から利用可能だったようだが、今まで知らなかった・・・ 静的メソッドの Object.defineProperty() は、あるオブジェクト…

Vue3 の Composition API と、Options API

Options API とは、Vue2までのコンポーネントの構造を示すようだ。 公式のドキュメントでは唐突に Options API というフレーズが登場し、なんのことか分からず困惑したけれど、ネットの情報をいくつか読んでみると、Vue2までのコンポーネントの構造(という…

アニメーションGIFのファイルを判定する方法

GIF

GIFのファイル構造 バイナリーを解析して判定する方法について調べた。 GIFのファイル構造は次の通り。それぞれのデータのまとまりをブロックと呼ぶ。 ファイル構造 GIF Header Application Extension Graphic Control Extension Image Block : Graphic Cont…

フロントエンドの学習を進めていて湧いた疑問

最近、vue.jsを学習している。 こういったフロントエンドのフレームワークでSPAを構築するイメージはなんとなく湧いてきたのだけど、それと同時に1つ疑問が湧いた。 メンバーサイトのコンテンツどうやって秘匿する? 現時点での自分が思い浮かぶ方法は次の…

javascript: オブジェクトのキーや配列に指定した値があるか調べる。

オブジェクトのキーや、配列の値を調べる時に便利な構文として in がある。 構文 value in array 例(Chrome の デベロッパーツールのconsoleで確認) 1 in [1, 2, 3, 4] >true "key" in {key: "value", key2: "value2"} >true javascriptはいまだに知らない…

指定したサイズのテキストファイルを作成する

指定したサイズの可読可能なテキストファイルを生成する機会があったのでメモ。 用途としては、ファイルアップロードとかそのあたりの検証用。 cat /dev/urandom | base64 | head -c BYTES_TO_OUTPUT > OUTPUT_FILE BYTES_TO_OUTPUT には、生成するファイル…

悪質なフィッシングサイトを見分ける方法

値段が相場価格より極端に安い 残念ながら、そうそううまい話はありません。 価格.com なども確認しつつ、一般的な相場価格を把握して、 相場価格から極端にかけ離れている場合は注意しましょう。 サイト内の日本語が不自然 フィッシングサイトは外国の人間…

Laravelの色々なパッケージ群。

最新のLaravelにはどういった機能があるのか調べている。 2021/9/6時点のLaravel8系の公式ドキュメントを読んで大まかな概要を確認した。 パッケージ名 説明 Breeze 最小構成の認証基盤。 Cashier (Stripe) Stripe向けの決済パッケージ。 Casher (Paddle) Pa…

Laravel Sail を使ってみる。

Laravel Sail とは、Laravel 用のDockerコンテナを操作するコマンドラインインターフェースのことらしい。 とりあえず、初期設定だけ確認してみた。 まずは composer のアップデートを。 $ composer selfupdate 次にLaravelのプロジェクト作成。 $ composer…

MySQL: プリペアドステートメントのプレースホルダーの数は65535まで。

MySQLで大量にインサートするために、複数行を1つのINSERTで追加しようとしたら、次のエラーが発生してINSERTに失敗した。 SQLSTATE[HY000]: General error: 1390 Prepared statement contains too many placeholders .... プリペアドステートメントを使って…

dockerのコマンド一覧

2022/04/01更新 dockerのコマンド一覧 コマンド 説明 docker container ls {オプション} コンテナ一覧を表示する docker container logs {オプション} コンテナID コンテナのログを取得する docker container inspect {オプション} コンテナID コンテナの詳…

動画のcodecはライセンスが厳しい。

動画のcodecはライセンスが厳しい。 例えば、オープンソースで動画の処理をするソフトにffmpegがあるものの、個々のcodecのライセンスの問題は利用者自身が解決する必要がある。 研究用途や非公開の場所で個人的に利用する分には良いかもしれないが、プロダ…

ClamAVのスキャンで `WARNING: INSTREAM: Size limit reached` という警告が出る。

ClamAVのスキャンで次の警告がログに記録されて、スキャンされない現象に遭遇した。 WARNING: INSTREAM: Size limit reached この場合、エラーメッセージ通り、ClamAVで読み込み可能なファイルサイズの上限を超えているので、設定を調整すれば良い。 スキャ…

macの画面共有フリーズ対策

mac

mac端末に画面共有で接続中、負荷がかかると画面共有がフリーズして、アクセスできなくなる事がある。 ただ、画面共有できなくなっても、SSH接続だけはできる事が多いので、 画面共有だけできなくなった場合は、次のコマンドで画面共有のプロセスを再起動す…

goでwasm

goのインストール brew install golang go version go1.16.6 darwin/amd64 がインストールされた。 このバージョンではwasmのモジュールがすでに組み込まれているので、 特別な対応は不要。 wasm のテストプログラムコンパイル hello worldするだけのコード…

Laravel - SoftDeletesを適用したモデルクラスでテーブル名のエイリアスが使えない

SoftDeletesを適用したモデルクラスでクエリーを実行すると、 カラムが存在しない、という内容のSQLエラーが発生する。 >>> \App\Models\Comment::from('comments', 'c')->where('c.id', '<>', 1)->get() Illuminate\Database\QueryException with message '…