サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
var.blog.jp
Fastify 速いですね Express が hapi より遅いのは意外でした Koa は本体だけだと Express 以上に何もしないので その分速めです よくみると驚きなのが http.Server より Fastify が速いというところ http.Server はフレームワークを使わない Node.js 自体の API です Koa や hapi はこれを中で使っています これより速いということは Fastify は http.Server は使わずに net などを使って ソケット通信部分を直接操作しているのでしょうか? http.Server を使ってない?Fastify のソースコードを見た限りでは 特に設定をしなければ http.createServer でサーバを作成しています つまり http.Server を使っています https://github.com/fas
2016/06/26 03:37 Blob, ArrayBuffer, Uint8Array, DataURI の変換 ◆ Blob からは FileReader をつかって非同期で変換処理 ◆ ArrayBuffer, DataURI, text, BinaryString ◆ ArrayBuffer や BinaryString, Uint 系配列 から Blob は Blob のコンストラクタでできる ◆ Uint 系配列の buffer プロパティが ArrayBuffer ◆ ArrayBuffer を Uint 系のコンストラクタに入れるとその TypedArray に変換できる 色々あって変換するときにどうすればいいんだっけと思うのでまとめ 今回の対象はこれ BlobArrayBufferUintXXArrayFileBinaryStringDataURI UintXXArr
◆ ストアからインストールしたのはソース変更すると無効にされる ◆ 自作拡張機能のチェック用の機能を使ってローカルインストールする 前にもイジっていたはてブの拡張機能です 入れておくと 今開いてるページのBookmark数が緑色で表示されていて どれくらい人気なサイトなのかぱっと分かるメリットがあります ですが このカウント https のページだと表示されません ソースを見てみると現時点では /lib/04-HTTPCache.js 88行目 にある isValid 関数で https を拒否しています HTTPCache.counter.isValid = function(url) { // XXX if (url.indexOf('https') == 0) { return false; } else { return true; } }; https は個人のアカウントページと
Vista に限り IE9 がありますが 今時 Vista でかつ IE 使うような人はほぼいないでしょうし いないものとして扱います 一応あと 1 年です IE11 は Windows7 から Windows10 まででサポートされて 2020年から2025年までサポート期間があるようです OS のサポート切れということで 幅があります IE11 に機能が増えていくならいいのですが 増えるわけもなく CSS などのバグが直るわけもないので IE 向けに作る人はまだまだ苦痛が続くわけです 私は ただで Chrome や Firefox などの新しい機能が使えるのに好みで IE を使い続ける人のサポートをする気はないので 基本的にどうでもいいです ですが アプリやツール部分はともかく ブログなどのページの基本部分は一応動くようにしておこうかなと思います ボタン押しても反応しない とかならとも
◆ ある程度の規模のしっかりしてるソフトはみんな Win32 ◆ WPF は VisualStudio しかみつからなかった ◆ 外側だけで中は C++ で作った dll でしょ と疑ってみる WindowsForms なんか比べ物にならないほどです でも便利な反面 速度面はちょっと遅め WindowsForms のものと比べると全然違います 個人的にはブラウザ でタブの切り替えが WindowsForms で リロードが WPF ってくらいに感じてます WindowsForms は基本一瞬で Windows 出てきて快適に動きます WPF は体感するくらいにロードしてるんだな とか思うほどです 特に最初の起動や 数百・数千のデータを入れたリストの表示などではわかりやすいです WPF は中で大量のリフレクションが行われていて仕方ない気もします でも作る側からすれば圧倒的に WPF なんです
Windows のリンクですが普通に Windows だけで使ってると「ショートカット」と「シンボリックリンク」だけで十分です この2つの違いは主にユーザが使うかコンピュータが使うかです ショートカットは エクスプローラなどの対応ソフトでショートカットのlnkファイルを開くと lnkファイルが指定するフォルダやファイルを開いたことにするもの 何を開くかの指定はコマンドラインで実行する文字列を書くので プログラムをオプションや入力ファイルなどの引数や作業用フォルダを設定して実行することができます 名前の通りショートカットらしい動きをします ついでに ショートカットキーの設定までできたりします また リンク先を移動させたりしても 多くの場合リンク先を追従してくれます 右クリックから作れて PC不慣れな人でも困らない作りです 欠点はプログラム上からパスとして lnkファイルを含むように指定しても
◆ robocopy G:\dir F:\dir /DCOPY:T ◆ robocopy の GUI 版 richcopy というソフトが古いけど便利 タイムスタンプ変えるのやめてvvv ウィルスが流行ってたこともあって ふとバックアップは大切だよね と思って 外付けハードにバックアップ取ることを考えました HDD のコピーで思うことは更新日時と作成日時を変えてほしくない!です 昔 確か PSP でメモリースティックのデータをコピーして大きいサイズのものに移し替えた時に気づいたのですがコピーすると作成日時や更新日時がコピーした日時に書き換えられるんですよね 作成日時「コピーを作成した日時」なんて使わないのにそんなデータのために本来の最初にファイルをつくった日時という意味のある日時のほうを消すなんておかしいです 電子データなのでコピー元もコピー先も全く同じデータです どれが本当に最初に作った
◆ バグが多くて放置されてるのは致命的だと思う ◆ Windows Forms 使うのは 昔の IE 使うようなもの ◆ バグ修正してる自作コントロールがいっぱいな人ならともかく新しく始める人が Windows Forms 使う理由はないと言っていいと思う ◆ 最近の WPF, Windows 8 ストアアプリ, UPW などは全部 XAML を使ってる ◆ Windows Forms は使えないからデザインが大変 ◆ 凄くシンプルで固定なデザインでもないと Windows Forms の利点がない ◆ HTML, CSS, JavaScript の知識ある人は XAML の難易度がかなり下がる ◆ 使ってみると意外と簡単と感じるはず (高度なことをしようとしなければ) Windows Forms を使ってみたら少し前に Electron と C# で簡単な何か作って比べてみようかな とい
◆ JSON を開いた時に文字化けするようになった ◆ HTTP header で UTF-8 が指定されてればちゃんと表示できてる ◆ 手動でエンコーディング切り替えれないから使い物にならない ◆ Firefox だと console.log のオブジェクト表示と同じように見やすく表示されてる UTF-8 の JSON のページを開くと文字化けします エンコーディングを自分で切り替えれるなら特に文句はありません 問題なのは Chrome 55 からエンコーディングの手動切り替え機能が削除されたことです エンコーディングの自動判別に自信があるとか言って削除してすぐにこれです いくら自信があっても webメールの表示だったり 画面全体と 画面の一部でエンコーディングが違うページもあるので エンコーディングの切り替えを消してしまうなんてありえないとしか言えません ここ最近の Google の暴
◆height:100%のtextareaとiframeは100%を超えてスクロールバーが出る ◆transitionalモードにしたほうがいいかも ◆overflow:hiddenという方法もあり ◆Firefoxちゃんと動いてくれる cssでheight:100%;をしていた時にstrictモードとtransitionalモードで挙動が違うことでデザインが崩れる問題です モードの指定方法は strictモード
◆ 定期的に AppData のフォルダ 3 つの違いが気になって調べてるのでまとめ ◆ 個人 PC なら Roaming も Local も一緒 ここを参考にしてます ほかも見てますが 同じようなことを書いてました https://superuser.com/questions/150012/what-is-the-difference-between-local-and-roaming-folders https://superuser.com/questions/21458/why-are-there-directories-called-local-locallow-and-roaming-under-users-user 大きな企業や学校などで多数の PC をドメイン機能でまとめて管理してる場合に どの PC でログインしてもアプリケーションのデータを引き継いで扱えるようにしてい
◆ display: flex; + align-items: center; 子要素に margin: auto; または ◆ display: flex; + justify-content: center; align-items: center; flexbox だと簡単なのですが IE11 でも見れるようにしないといけない場合は メンドクサそうです ですが 実は IE11 は display:flex; が使えます でも 使えるからといってちゃんと動くかは別問題です Chrome だと <div style=" width:300px; height:300px; background:yellow; display:flex; flex-direction:row; "> <span style="margin:auto;">a</span> </div>
◆ DataURI 自体は 2MB 以上にもできるけど URL として開くときは 2MB まで ◆ a タグで開いて保存しようとするとエラーになる ◆ copy() で DataURI の文字列でクリップボードに保存して Node.js でファイルとして保存できる ◆ URL.createObjectURL だと 200MB 超えても保存できるので保存するときはこっちがよさそう ですが DataURI 形式にも欠点がありました ファイルサイズです Chrome だと 2MB までらしいCanvas の画像を保存していたのですが 一部のファイルだけ保存エラーになっていました 何が原因だろうととりあえず img タグの src にエラーになっていた DataURI を設定してみたらちゃんと表示されました 保存するために a タグに download 属性をつけて click() しているので
◆ 要素のメソッドで querySelector しても検索は全体からされて内側だけってフィルタしてる ◆ 直接要素を指すものじゃなければ基準にする要素の外側の id や class 使える ◆ セレクタにいきなり ">" を使って 子要素をセレクタで検索できない ◆ 自分自身をセレクタで書いて ">" を使うのもありだけど そのセレクタが自分自身以外にマッチするかもしれない セレクタの基準は常にルートquerySelector って root からの document.querySelector 以外にも好きな要素に対して実行できます
◆ 単純に文字列化のみで良い値なら JavaScript で実装した方が速い ◆ 文字列のエスケープ処理は JSON.stringify の方が速い ◆ オブジェクトのプロパティ列挙も JSON.stringify の方が速い ◆ 基本は JSON.stringify で十分 ◆ 更に速度が必要ならスキーマ定義して Fastify で使われてるライブラリなどを使う Fastify が生の Node.js より速い理由を調べたときは JSON.stringify が遅いのが原因でした ただの文字列結合と比べたら 40 倍近く差がありました これはもしかするとインデントや置換のオプションなしが前提なら普通に JavaScript で実装したほうが速い可能性もあったりするのでしょうか? というわけで JSON.stringify を自作しました オプションはなしで 事前のスキーマ定義も使わないも
◆ 物理メモリ+ページファイル=仮想メモリ ◆ プライベート+共有=ワーキングセット=物理メモリ上にあるメモリ ◆ コミットサイズ = プロセスが確保しているメモリ(ページファイルも含む) ◆ ワーキングセット≦コミットサイズ とは限らない ◆ 共有ワーキングセットでプロセス間で共有しているサイズでずれる 表示されるのがいろいろあって結局よくわかってないのでまとめ プロセス・詳細タブ タスクマネージャの「詳細」 7 以前だと「プロセス」 で表示される値 プライベートワーキングセット共有ワーキングセットワーキングセットコミットサイズ この 4 つが基本の見るところです ピークとデルタもありますが 今使ってる値を知りたい時には使わないです ピークはその名の通り最大値です 起動してから今までで最大になった値を覚えています デルタもそのまま差分です 今が上昇中なのか減少中なのか変化なしかを知りたい
その非同期処理がタイムアウト機能に対応してれば 時間がすぎれば Promise が reject されたりしそうですが中にはタイムアウトに対応してなかったり 設定してるのになぜか終わってくれないライブラリもあったりします そういうときのために自分でタイムアウトできるようなものを作ります まずは基本のタイムアウトとか考えない非同期処理をする関数を用意します async function p() { const result = await fn() return result } この関数は 非同期関数の fn を実行した結果を返すもので fn の処理が一定以上かかってるようならタイムアウトするようにします やることは単純で自分で Promise を作って fn の結果を受け取ったら resolve し 受け取るより先に時間がくれば reject します async function p(t
◆ @babel/polyfill は deprecated になってた ◆ 代替は core-js と regenerator-runtime のインポート ◆ core-js だとモジュールごとにロードできるので IE が消えれば 最低限の polyfill のみにできて効率よさそう @babel/polyfill が deprecated になってたES2015+ のバンドル時に IE 用に @babel/polyfill を使ってたのですが 7.4 から deprecated になってたようです https://babeljs.io/docs/en/babel-polyfill 大きく赤色で警告っぽい見た目じゃなかったので ドキュメントは一応見てたはずなのにスルーしてしまっていました 変わった理由は core-js の方に書いてます https://github.com/zloir
CSSでアニメーションするにはtransitionもありますが今回は animationを使う方法です このページでは手抜きのため ベンダープレフィックスは-webkitだけ書いてますが必要に応じて-mozなどをつけてください animationの使いかた /* キーフレームを作成 */ @-webkit-keyframes fadein { 0%{ opacity:0; } 75%{ opacity:0.5; } 100% { opacity:1; } } /* キーフレームをanimationプロパティで指定 */ div#in{ -webkit-animation: fadein 3s linear 0s 1; } key-framesは0%や100%などの%ごとにスタイルを指定します 0%が最初で100%最後のフレームです 0%から100%の間で途中経過を指定できます 50%ならち
◆ key と code が新しいもの ◆ code は物理的な押されたキーを取得 ◆ IE11 非対応 ◆ key は入力された文字を取得 ◆ Shift キーや CapsLock や NumLock 状態なども判断 ◆ IE11 も動くけどキーの呼び方が違うところが多々 じゃあキーを見分けるのに何を使えば良いのと思って調べてみました キーを見分けれそうなプロパティはいくつかあります keyCodecodekeywhichcharCodekeyIdentifier この中で keyCode, which, charCode, keyIdentifer は deprecated です keyIdentifer と charCodekeyIdentifer については Firefox と Chrome 両方ともに存在しません Chromodo 52 ではあったのでこの 1 年くらいのうちに消
jasmine とか jest とか使ってやる単体テストじゃなくて 実際にブラウザで input に文字を入れたりボタン押したりして DOM がどうなってるかを確認したりするやつです 有名なのは WebDriver を使った Selenium 系です しかし 個人的に Selenium 嫌いなので気が進みません 以前 Selenium を使わずに同じことをするというすごくレアなライブラリを見かけて期待していたのですが それも更新されず非推奨になりました そのときに TestCafe に移行するといいよ みたいなことが書かれてましたが 結局 TestCafe もほぼ使わずいつか使うカテゴリに入って放置でした それから何年か経ってるのでまた調べてみましたが そこまで種類は多くないようです やはり WebDriver (Selenium) を使ったものが多く 新しいものが出ててもこれ系です 異な
◆ Canvas は更新面で不利 ◆ アニメーションとかマウスホバーの処理などで全体再描画になるので重い ◆ データ数が少ないとたいしたことないけど すごく多くのデータを扱うとかなら SVG が無難 いろいろありますが 大きな違いに描画部分を Canvas でするか SVG でするかというのがあります どっちでもいいやと思ってたのですが 使ってみると気になる違いがありました 結論を先に書くと SVG のほうが軽いです 大量のデータになると Canvas だと表示されるまでに時間がかかりますが SVG の方はそこまでかかりません SVG のほうが良さそうな理由仕組みを考えても Canvas は部分的に変更できなくて 1 から再描画する必要があるのに比べて SVG は HTML みたいな XML ベースなので部分的に変更ができるのでブラウザがいい感じに最適化してくれます 例えばマウスを乗せたと
◆ chrome.runtime.sendMessage で送信 ◆ chrome.runtime.onMessage.addListener で受信 ◆ content script へ送る場合は chrome.tabs.sendMessage そんなときの メッセージ通信の説明です extension 内部で通信まずは単純に background ページと popup ページで通信します popup を開くとメッセージを送って background からのレスポンスを受け取ります 送る側 (popup.js)
◆ n-install でインストールしないと管理者権限必要で使いづらい ◆ dnf で入れた Node.js 使うと一般ユーザに権限のない場所に node_modules ができる ◆ 使いやすいけど切り替えで指定バージョンのファイル全部コピーしてるみたいで遅い ◆ シンボリックリンクでいいのに nodebrew の必要性なかった?新しい環境に Node.js を入れようといたのですがこれまで使ってた nodebrew って perl が必要なんですよね 昔 Node.js のバージョン管理ツールを比較して nodebrew をオススメしてるところがあって以来 nodebrew を使っています はっきり覚えてないのですが そのおすすめの理由がたしか 「デフォルトで入ってる perl があれば動く」 というものだったと思います 適当にググって時期と内容からするとこのブログ? ここの人は M
◆ samba で Linux のフォルダを Windows に共有する ◆ samba のインストール → smb を起動 → ユーザとパスワード設定 ◆ これだけで使える 前に WinSCP とかで十分だからと Windows どうしのようにエクスプローラで \\ から始まるアドレスで Linux の共有フォルダにアクセスする方法は流してましたが 今回はそれをやってみます ぐぐってみると 複雑そうに色々書いてるところとか よくわからないコマンドの説明を色々書いてるところとかばかりで分かりづらかったのでシンプルにまとめます samba をインストWindows と共有できるようにするためには samba というソフトが必要です
◆ Babel 使うと面倒も増える ◆ devtools で楽できない ◆ 設定とか準備 ◆ Babel の知識がいる ◆ 他 ◆ モダンブラウザはそのままの JavaScript でいいんじゃないかな ◆ ES6 の判定はとりあえず Symbol が綺麗で polyfill 影響受けないはず Babel は altJS ですが JavaScript を書きます ブラウザで対応していない機能でも実行できるように ES5 に変換してくれます なので JavaScript が好きでわざわざ altJS なんて使う気がしない人でも使える良い altJS です ただ Chrome や Firefox では ES6 はほぼ使えるようになったので ES7 以降の proposal も使いたいとか IE 対応しないといけないってときくらいしか使わなくてもいいと思います そんなに気にしない人も多いですが
◆ apt で jupyter-notebook をインストール ◆ jupyter notebook コマンド ◆ WSL だと Windows の Chrome で起動もできる でも 重いしインストール時間かかるし 専用のコマンドプロンプト使わないとパス関係でうまくいかないしで 機械学習するわけでもないのに Anaconda 入れるのもなぁ という感じです Win10 なら WSL があって Python を Windows 側には入れず WSL だけにできるし と WSL に Jupyter Notebook を入れて使うことにしました インストールpip で入れればいいのかなと思ってましたが Ubuntu では apt にパッケージがありました 検索した感じでは Jupyter Notebook が入りそうなものに jupyter-notebook と python3-notebo
vi でも emacs でもなんでもいいです ~/.bashrc などの rc ファイルに書いておくと 次から書かなくていいので楽です /etc/incron.conf でも設定できるみたいです こっちのほうが全部のユーザに対して設定できるのでいいのかもしれません エディタを終了すると設定が更新されます incrontab -d が必要と書いてるところもありましたがなくていいです 何かの理由があって設定ファイルのリロードしたいときに -d を使います 確認したいときは incrontab -l 削除したいときは incrontab -r です 設定ファイルの書き方監視するディレクトリかファイル どのイベントを監視するか イベントが起きた時に実行するコマンド の 3 つをスペース区切りで書きます パス/ からの絶対パスじゃないとダメです ディレクトリでも大丈夫です マスクイベントを選びます
◆ スクロールバーの範囲外と範囲内に固定の列をつくる ◆ 範囲内の固定列分のスペースを確保するようにダミーの tr を最初に入れる ◆ 固定したい td を absolute で固定 前にテーブルでも css でいろいろできると知ったので 今回は横をスクロール固定してみます 縦スクロールの固定は HTML 構造が行単位なので thead の tr を移動するだけで簡単そうですが 横スクロールはいろいろと大変です 作ったものはこんなの なんと IE8 でも動きました 複雑な css は使ってないですし サンプル スクロールバーの外側と内側で固定する列を作ってます コードはこんなの <!doctype html> <meta charset="utf-8"> <div class="area"> <div class="wrapper"> <table> <tr class="dummy"><
次のページ
このページを最初にブックマークしてみませんか?
『(*x).b=z->a+y/c』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く