ブックマーク / efcl.info (131)

  • gas-webpagetestでWebPagetestのパフォーマンス計測を自動化、可視化する | Web Scratch

    gas-webpagetestというGoogle Apps Scriptで動作するパフォーマンス計測ツールがあります。 このツールでは、WebPagetestという指定URLなどにウェブブラウザでアクセスし、パフォーマンスに関するメトリクスを取得するツールの計測や結果の記録を自動化できます。 記録はGoogle SpreadSheetに逐次書き込まれ、その記録をGoogle DataStudioで可視化したりダッシュボードを作成できます。 ここまででてきたツールは無料で十分に使えます。 gas-webpagetestを使うことでとりあえず計測を自動化してみるようなところを殆どコストなしに実現できます。 gas-webpagetestを使って取得した記録データをGoogle DataStuidoで可視化したサンプルは次のURLで確認できます。 DataStudio + gas-webpage

    gas-webpagetestでWebPagetestのパフォーマンス計測を自動化、可視化する | Web Scratch
  • LDRライクなRSSリーダのIrodr 1.0.0をリリースした | Web Scratch

    InoreaderのPCフロントエンドとして動くRSSリーダのIrodrが十分安定したので1.0.0をリリースしました。 LDRライクなInoreaderクライントのIrodr 1.0.0リリース。https://t.co/oco0VlPbBDhttps://t.co/UTPYfW3FnW pic.twitter.com/GzKLSj9zeo — azu (@azu_re) September 30, 2018 Release Release 1.0.0 · azu/irodr IrodrはLDRライクな操作感を実現するために作成したInoreaderのフロントエンドです。 RSSの管理やRSSのクロールなどはInoreaderが行っていて、IrodrはAPI経由でRSSを取得しているだけです。 未読などはInoreaderと同期しているため、Inoreaderのウェブ版やモバイルアプリと

    LDRライクなRSSリーダのIrodr 1.0.0をリリースした | Web Scratch
  • js-primer(JavaScript入門本)がオフラインで読めるようになりました

    現在開発中のjs-primer(JavaScript入門)がServiceWorkerを使ってオフラインでも読めるようになりました。 Service Workersに対応しているブラウザ(IE以外)なら一度開いた後はキャッシュを使ってオフラインでも読めるようになっています。 また、ただのウェブページでもあるので書籍の内容が更新されれば最新の内容に更新されます。 js-primer workboxを使ってオフライン表示に対応しました。 モバイルでもオフラインで読めるようになってます。 “JavaScriptの入門書 #jsprimer” https://t.co/gyX5MqW4r8 pic.twitter.com/CVSAV325sV — azu (@azu_re) May 19, 2018 iPhoneAndroidなどホームにアプリとして追加もできます。 サイト: [WIP] Ja

    js-primer(JavaScript入門本)がオフラインで読めるようになりました
  • モバイル/オフラインでも動作するはてなブックマーク検索のPWAを作った

    はてなブックマーク検索PWAというはてなブックマークでブクマしたデータをオフラインでも検索できるPWAを作りました。 サイト: https://hatebupwa.netlify.com/ ソース: https://github.com/azu/hatebupwa はてなブックマークの自分のブクマを検索できるPWAを作りました。 Service Workerに対応してるブラウザ(IOS Safari 11.3+を含む)ではオフラインでも検索できます。https://t.co/RCVkRYAFz0 モバイルはホームスクリーンアプリで、macOSはアプリ版もあります。https://t.co/5MDuyC9baN pic.twitter.com/KAc3KV690b — azu (@azu_re) April 16, 2018 使い方 使い方は特に難しい話でもないですが、次のように任意のはてな

    モバイル/オフラインでも動作するはてなブックマーク検索のPWAを作った
  • ECMAScriptの仕様/プロポーザルの調べ方を知る

    このステージの詳細についてはThe TC39 Processを参照してください。 2ヶ月に1度行われるTC39のミーティングにおいて、プロポーザルごとにステージを進めるかどうかを議論します。 このミーティングの議事録もGitHub上のtc39/tc39-notesにて公開されています。 ステージ4となったプロポーザルはドラフト版であるtc39/ecma262へマージされます。 そして毎年の決まった時期にドラフト版を元にしてECMAScript 20XXとしてリリースします。 この仕様策定プロセスの変更は、ECMAScriptに含まれる機能の形にも影響しています。 たとえば、class構文の策定は最大限に最小のクラス(maximally minimal classes)と呼ばれる形で提案されています。 これによりES2015でclass構文が導入されましたが、クラスとして合意が取れる最低限の

    ECMAScriptの仕様/プロポーザルの調べ方を知る
  • Jestなどを使わずにスナップショットテストを書く

    次のようなテストコードを書きます。(これはMochaを使っていますが大体どんなテストフレームワークでも同じことが出来ます。) 次のスナップショットでは、transformというJSONを入力に受け取り、JSONを出力する関数をテストしています。 snapshot-test.js: const fs = require("fs"); const path = require("path"); const assert = require("assert"); const fixturesDir = path.join(__dirname, "snapshots"); // transform function const transform = require("../transform"); describe("Snapshot testing", () => { fs.readdirSy

    Jestなどを使わずにスナップショットテストを書く
  • ECMAScript 2015以降のJavaScriptの`this`を理解する

    この記事はJavaScriptの入門書として書いているjs-primerのthisに関する部分をベースにしています。 またjs-primerでは書けなかった現在時点(2018年1月1日)でのブラウザの挙動についてを加えたものです。 次の場所にjs-primer版(書籍版)のthisについての解説があります。 この記事と違って実際にコードを実行しながら読めるので、学習ソースとしては書籍版を推奨します。 書籍版: 関数とthis · JavaScriptの入門書 #jsprimer また、バグ報告やPRも直接リポジトリにして問題ありません。 asciidwango/js-primer: JavaScriptの入門書 おかしい場所を選択した状態で右下にある”Bug Report”ボタンを押せば、簡単にtypoとかのバグを報告できます。(PRでも歓迎) 前置きはこの辺までで、ここから編。 この記

    ECMAScript 2015以降のJavaScriptの`this`を理解する
  • ページ上でずっと動いているsetTimeout、setInterval、requestAnimationFrameを見つけてパフォーマンス改善する

    ページ上でずっと動いているsetTimeout、setInterval、requestAnimationFrameを見つけてパフォーマンス改善する 複雑なウェブアプリケーションになってくると、1つのページで複数のTimerなどを回すことがあります。 例えば、Twitterのようなアプリならば、ポーリングで更新するためにsetInvervalのようなタイマーを回します。 また、ゲームなどCanvasで描画を行うアプリケーションならば、メインループをrequestAnimationFrameで回します。 このように色々なタイマー系がありますが、アプリが多機能になっていくと色々なタイマーが同時に動くようになっていきます。 特に問題がなりやすいのが表示中だけタイマーを回すコンポーネントです。 よくあるのが次のようなmount時にtimerを開始して、unmount時にtimerを停止するコンポーネ

    ページ上でずっと動いているsetTimeout、setInterval、requestAnimationFrameを見つけてパフォーマンス改善する
  • ローカルのPDFを全文検索するクライアント/サーバ/Electronアプリを書いた

    ローカルにあるPDFを全部検索して、その結果を一覧したいことがあります。 例えば、今、js-primerという書籍を書いていて、ある用語が他の書籍ではどんな扱い/用語になっているのかを調べたいことがよくありました。 この手のアプリとしては論文管理のPapers for Macなどがありますが、検索したいだけなのに色々な機能がついていてまた、とりあえず作ってみることにしました。 searchiveというプロジェクト名にしてPDFからテキストを取り出す所やフロントエンドのElectronアプリ、PDFからテキストを取り出すのはブラウザでやるには遅いので、そこをサーバ側でやってくれる仕組みを作りました。 大体100冊ぐらいをインデックスに入れて検索していますが、数百ms以内に検索結果が出てるので意外と動くようです。 インストール Release pageからElectronアプリをダウンロードし

    ローカルのPDFを全文検索するクライアント/サーバ/Electronアプリを書いた
  • kuromoji.jsで形態素解析した結果とテキストの関係をビジュアライズする

    azu/text-map-kuromoji: テキストを形態素解析した結果とテキストの関係をビジュアライズするエディタというツールを作った話。 くだけた表現を高精度に解析するための正規化ルール自動生成手法という論文誌では、「ヵゎぃぃ」,「ゎた Uゎ」みたいな普通の形態素解析では未知語として検出されるものをどうやって正規化していくかという話が書かれていました。 これを読んでいて面白かったのは形態素解析をした結果の未知語となった部分と穴埋め的にパターンを作って、そのパターンにマッチする同じようなテキストを探すというアプローチでした。 プログラミング言語と違って、大抵の自然言語パーサはパース失敗ではなく、単なる未知な言葉として検出されます。 また、その未知な言葉は常に増えていて、さきほどのくだけた表現を高精度に解析するための正規化ルール自動生成手法によると手動では登録できない増加量らしいです。

    kuromoji.jsで形態素解析した結果とテキストの関係をビジュアライズする
  • Clean ArchitectureとBuilding Evolutionary Architecturesを読んだ

    Clean ArchitectureというBuilding Evolutionary Architecturesというを最近読んだのでざっくりとしたメモ。(両方共2-3時間ぐらいでざっくりとしか読んでないので、解釈間違いは普通にありそうです) 両方共アーキテクチャに対するメタ的な視点な部分があるので、合わせて読むと面白いかも。 Clean Architecture(Clean Codeの人のシリーズ)というを読んだ。 Clean Architecture: A Craftsman’s Guide to Software Structure and Design | InformIT PDFとかEpubとかMobiが買える Robert C. MartinのClean *シリーズでいわゆるクリーンアーキテクチャそのものだけを扱ったという内容ではない。 でもクリーンアーキテクチャについ

    Clean ArchitectureとBuilding Evolutionary Architecturesを読んだ
  • LDRがサービス終了のため、Inoreader/Feedlyをバックエンドに動くRSSリーダを書いている

    LDRがサービス終了のため、Inoreader/Feedlyをバックエンドに動くRSSリーダを書いている 追記: 1.0.0を出して説明を書き直したので、Irodrを使いたい方はLDRライクなRSSリーダのIrodr 1.0.0をリリースした | Web Scratchを参照してください。 2017年8月31日をもってLDRはサービス終了です。乗り換え先となるRSSリーダを探したりしましたが、求めるものを見つけることができなかったので作ることにしました。 【重要】Live Dwango Reader/LDR Pocketサービス終了のお知らせ|LDR / LDRポケット 開発日誌 次の記事でも書いていましたが、RSSリーダのバックエンドを自前で管理するのはコスト的に難しそうでした。そのため、バックエンドとしてInoreaderやFeedlyのAPI使ったRSSリーダのウェブクライアントを書

    LDRがサービス終了のため、Inoreader/Feedlyをバックエンドに動くRSSリーダを書いている
  • #teppeis_sushi でクライアントサイドDDDについて発表した

    #teppeis_sushiというイベントで、Faao - ドメイン駆動設計で作るGitHub Issue Client -という話をしました。 Electronやブラウザなどで動くfaaoというGitHubクライアントを書いていてそれの技術的な話です。 クライアントサイドでDDDを取り入れた設計になっていて、その設計や規約の作り方やそれを守る方法についての話をしました。 azu/faao: Faao is a GitHub issue/pull-request client on Electron. Living Documentation by design, with Domain-Driven Design by Cyrille Martraire [PDF/iPad/Kindle]という無料から買える書籍では、ドキュメントとコードを同じ速度で成長させていくためにはドキュメントに対

    #teppeis_sushi でクライアントサイドDDDについて発表した
  • JavaScriptのライブラリを徐々にTypeScriptに移行する

    Alminというライブラリは元々JavaScript(+Babel)で書かれていましたが、今年の2月にsrc/下のソースコードはTypeScriptに移行しました。 その時のコミットログは次のPRに残っているため、コミットログを1コづつ見ていけばどのように行われていったが分かると思います。 Convert src/ to TypeScript by saneyuki · Pull Request #68 · almin/almin この時取った方法は大まかに次のような手順でした src/ の TypeScript化 Babel -> JS(js -> js)だったものをTypeScript -> Babel -> JSにビルドスクリプトを変更 TypeScriptはtargetをesnextにすることで単純に型を取り除くだけの変換にする ES2015 -> ES5を実際にやるのは既存のBa

    JavaScriptのライブラリを徐々にTypeScriptに移行する
  • textlintのElectronアプリを作った

    textlint-app textlint-appという、インストールするだけで動くtextlintのElectronアプリを作成しました。 インストール方法 https://github.com/textlint/textlint-app/releases/latest からバイナリをダウンロード ダウンロードしたインストーラー(Windows)、app(Mac)を実行すれば動きます。(Node.jsの環境なども不要です) 実行する際に署名されてないバイナリなので警告がでるので、その辺は許可しないと動きません。 Windows: インストーラーで許可を選択する必要がある Mac: /Application/textlint.app をコンテキストメニューから”開く”をして許可する必要がある 特徴 一番の特徴はNode.jsなどの環境を作る必要なくインストールするだけで動く点です。 tex

    textlintのElectronアプリを作った
  • 東京Node学園祭2016 アウトラインメモ

    東京Node学園祭2016に参加してきたのでメモ Demystifying JavaScript Engines - Alejandro Oviedo a0viedo/demystifying-js-engines: A list of resources about JavaScript engines 2006年のJavaScriptエンジン インタプリタ 遅い 最適化しても遅い Fortran、Self、Smalltalkの人がより良い方法を考えた (Source) -> Parse -> (bytecode) -> executionPhase <-> JIT Compiler 何度も実行するコードはJITコンパイラを通すようにした プロパティのアクセスの最適化、Hidden Classなど色々な最適化 Design Elements · v8/v8 Wiki evalとtry-c

    東京Node学園祭2016 アウトラインメモ
  • TestCafeでブラウザの自動テスト(E2Eテスト)

    TestCafeという自動テストフレームワーク(いわゆるE2Eテストフレームワークジャンルとしておきます)を試してみました。 TestCafeの特徴としては、Seleniumを使っていないこと、設定ファイルなしで利用できる点です。 Seleniumを使ったテストフレームワークとしては、Protractor、testium、WebdriverIOなどがあります。 (Seleniumを使わない他のテストフレームワークだとNightmareなど) Seleniumを使わずにどうやって自動的にブラウザを操作するかというと、中継サーバーを起動してそこにテストコードなどを追加して動かすことができるSelenium RC(1)方式に近いものだと思います。 同名のウェブサービス/クライアントアプリも出していて、こちらはSelenium IDEのようにGUIで操作して記録したものを再生などができます。 なぜ

    TestCafeでブラウザの自動テスト(E2Eテスト)
  • pdf.jsなPDFビューアアプリをElectronで作った

    タイトルどおりですが、FirefoxのPDFビューアをスタンドアローン化したようなアプリを作りました。 azu/mu-pdf-viewer: PDF viewer on electron. 特徴は次の通りです。 PDF.jsベース J, Kでスクロールなどいじっています Drag and Dropをサポートしてます Install npm でインストールするか バイナリをダウンロードして使えます(OS Xのみ) https://github.com/azu/mu-pdf-viewer/releases/latest Travis CIとかでelectronを自動ビルドするのがかなり難しくなったので、自分用にOS X版のみバイナリを作ってます。 READMEにその他の環境のバイナリの作り方を書いてあります。 Usage npmでインストールした場合はCLIから起動できます。

    pdf.jsなPDFビューアアプリをElectronで作った
  • AbemaTV Developer Conference 2016のアウトラインメモ

    AbemaTV Developer Conference 2016に参加してきたメモ。 途中でメモが吹っ飛んだので最初のほうがありません。 イマドキの Web サービス運営で突き当たるフロントエンド課題とつらみ 開発上の様々な依存のつらみと FRESH! by AbemaTV の話 // Speaker Deck ahomuさんすごい!!! リニア放送型動画サービスの Web フロントエンド リニア放送型動画サービスの 
Web フロントエンド 動画のストリーミング配信について Flux with RxSwift FluxをRxSwiftで実装する話 dekatotoro/FluxWithRxSwiftSample デザイナーとエンジニアの境界線 デザイン 人の話 AbemaTC 社長からの要望 すぐ再生 ザッピング再生 受身的な再生 最初のモック 縦画面 pixate サービス終了..

    AbemaTV Developer Conference 2016のアウトラインメモ
  • JavaScriptの配列のパターン

    JavaScriptの配列をどう解説するかを考えていて、配列って普段どういう風に使ってるけ?みたいなことを書き出してみました。 Arrayオブジェクト · Issue #49 · asciidwango/js-primer 皆さんは配列をどう使いますか? 追記: 次のページでこの記事をブラッシュアップした話をhttps://jsprimer.net/で公開しています。 配列 · JavaScriptの入門書 #jsprimer 配列の作成 配列の作成には配列リテラル([])を使います。 配列リテラルには初期値も指定できます。 var emptyArray = []; // 空の配列を作成 var array = [1, 2, 3]; // 値をもった配列を作成 Arrayオブジェクトをnew演算子でインスタンス化する方法は基的には使いません。 こちらは配列リテラルとは異なり、初期値ではな

    JavaScriptの配列のパターン