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

  • 小さなEventEmitterライブラリ - eventmitを書いた

    EventEmitterのようにPub/Subを行うeventmitという小さなライブラリを書きました。 azu/eventmit: Simple EventEmitter. A single event object per an event. eventmitは、TypeScriptで書かれています。 また、Node.jsのEventEmitterなどとは違って、イベント一つに対してeventmitのオブジェクトを一つ作成して使います。 import { eventmit } from "eventmit"; const event = eventmit<{ key: string }>(); // Register handler event.on((value) => { console.log(1, value); }); event.on((value) => { consol

    小さなEventEmitterライブラリ - eventmitを書いた
    yug1224
    yug1224 2020/06/13
    “最近はwebpack 5でNode.jsのコアモジュールのpolyfillはされなくなる点”
  • JavaScript Primerを出版しました!/JavaScript Primerはなぜ書かれたのか?

    この3つの原則は書籍の構成にも現れています。 第一部の基文法で「書き方」を学び、第二部のユースケースで「作り方」を学べるようになっています。 「学び方」は、章としてではなく全体的な流れとして取り入れることにしました。 なぜなら、「学び方」自体は学びたいことによっても異なる方法を取る場合があります。 そのため、「学び方」で個別の章とするよりは、他の章で「書き方」や「作り方」と一緒に見たほうがよいと考えたためです。 たとえば、基文法などの学び方にはMDNのようなリファレンスサイトを見たほうがいいし、 アプリケーションの作り方は実際のサイトなどを参考にしたほうがよいためです。 第一部と第二部がどのように書かれたのかをざっくりと振りかえってみます。 第一部: 基文法 第一部: 基文法はJavaScriptの基的な文法について扱っています。 プログラミングの入門書で文法については避けること

    JavaScript Primerを出版しました!/JavaScript Primerはなぜ書かれたのか?
    yug1224
    yug1224 2020/04/27
  • ミーティングログ/議事録の取り方についてのメモ

    この記事はミーティングログの取り方についてのメモです。 以前書いた勉強会でのメモの取り方と似た話です。 勉強会でのメモの取り方について | Web Scratch 自分は書きながら話を聞くのが習慣化しているので、こんな感じでミーティングログ(ミーティングノート)を書いていますという話です。 この記事はメモ書きなのであんまり読みやすくないです。 このログの取り方は正確さログや整形されたログを取る方法ではありません。 2種類のミーティングログ 自分の場合は主に2種類のミーティングログを取ることが多いです。 ミーティングの内容によってどちらで取るのかを使い分けています。 リアルタイムモード 対面、リモートでのミーティング 回想モード ブレスト系のミーティング(JavaScript Primerの出版に関するミーティングなど) この記事ではこの2つのミーティングログの取り方について書いていきます。

    ミーティングログ/議事録の取り方についてのメモ
    yug1224
    yug1224 2020/04/25
  • ルールに沿っていないGitHubのブランチを削除するツール/GitHub Actions

    delete-github-branchesというブランチの命名ルールを定義して、そのルールにあっていないブランチを削除するCLIツールを書きました。 delete-github-branchesはCLIですが、GitHub Actionsのcron処理と合わせれば、ルールにあってないブランチGitHubから自動的に削除できます。 不要なブランチを削除することで、リポジトリからノイズとなるブランチを減らすのが目的です。 Pull Requestなしで放置されてるブランチが単なる消し忘れ以外であることは少ないので、そのようなブランチを減らすことでpullした時のノイズやサイズを減らすの目的です。 (活発なリポジトリだと放置ブランチがconflictだらけになるのでマージが難しいです。またGitHubにはDraft PRもあります) CLIの使い方 delete-github-branche

    ルールに沿っていないGitHubのブランチを削除するツール/GitHub Actions
    yug1224
    yug1224 2020/04/18
  • Node.jsでUnhandled Rejectionsのときにexis statusが0となる問題を回避する

    Node.jsでUnhandled Rejectionsが発生してprocessが終了すると、Exit Statusが0となる問題とその対策についてのメモです。 追記: Node.js 15+からUnhandle Rejectionが発生するとプロセスがExit Status 1で終了する動作がデフォルトとなりました Node.js v15ではunhandled rejectionでプロセスがエラー終了する 事前知識: Async FunctionはPromiseを返す関数定義です。 その辺について詳しくは次のサイトを読んでください。 JavaScript Promiseの 非同期処理:コールバック/Promise/Async Function · JavaScript Primer #jsprimer 今回のサンプルコードは次のリポジトリにあります。 azu/unhandled-rej

    Node.jsでUnhandled Rejectionsのときにexis statusが0となる問題を回避する
    yug1224
    yug1224 2020/03/21
  • [クライアントサイド〜サーバーサイド] テンプレートエンジンでのセキュリティ的な問題や考え方

    この記事は次のスライドの文字起こし的な内容です。 スライド: クライアントサイドからサーバサイドまで破壊するテンプレートエンジンを利用した攻撃と対策 スライドの画像 + 喋った内容のNote的なものをそれぞれのページごとに書き込んでいます。 リンクとかはスライド版ならクリックできるので、そっちを見るといいのかもしれません。 画像だらけなので、画像が読み込み終わるのを待つといい気がします。 クライアントサイドからサーバサイドまで破壊するテンプレートエンジンを利用した攻撃と対策 テンプレートエンジンに関するセキュリティ的な問題についてのお話です。 テンプレートだからエンドユーザー(サービスの利用者)に書かせて安全だと思っていても、選んだテンプレートエンジンの性質によっては安全ではない場合があります。 また、JavaScriptのテンプレートエンジンはクライアントサイド(Browser)とサーバ

    [クライアントサイド〜サーバーサイド] テンプレートエンジンでのセキュリティ的な問題や考え方
    yug1224
    yug1224 2019/12/28
  • JavaScript Promiseの本 v2リリース、ES2015+に対応、Async Functionの章を追加

    JavaScript Promiseの v2リリース、ES2015+に対応、Async Functionの章を追加 JavaScriptのPromiseについて学ぶ書籍であるJavaScript Promiseの v2をリリースしました。 Promise 1.0.0をリリースしたのは2014年6月ですが、そこから少しづつアップデートしていました。 JavaScript Promiseのを書きました | Web Scratch ES6がリリースされたのでPromiseについて学びましょう | Web Scratch 今回のメジャーアップデートとなる2.0.0では、サンプルコードのコードベースをES2015前提のものへと変更しています。 1.x系からの主な変更点としては次のものがあります。 ES6をES2015に表記を変更 コードベースをES5からES2015+(ES2015以降ベース

    JavaScript Promiseの本 v2リリース、ES2015+に対応、Async Functionの章を追加
    yug1224
    yug1224 2019/10/24
  • Inside Frontend 2019 アウトラインメモ

    Inside Frontendに参加してきたのでアウトラインメモ。 A1: TypeScript: Why and how we adopted it at Slack - Felix TypeScript + React Battle Field 1のUIReact TIL Battlefield 1 user interface is powered by React+MobX : javascript Electronアプリで書かれてるSlackとかSkypeとかはJavaScriptで動いてる Slackでは、C++とかのネイティブコードも使ってる JSDocなどを使ったドキュメントや型も書いてたけど、スケールしなかった このような場面でTypeScriptを使うことにした TypeScriptはRuntimeに関与しない 多くのnpmモジュールは @types をサポートしてる

    Inside Frontend 2019 アウトラインメモ
    yug1224
    yug1224 2019/05/18
  • lernaでのmonorepoにおけるリリースフロー(Fixed/Independent)

    一つのリポジトリで複数のパッケージを管理する際にはLernaとYarnのワークスペースを組み合わせて運用するmonorepoにすることが多いです。 lerna/lerna: A tool for managing JavaScript projects with multiple packages. LernaにはFixed(すべてのパッケージが同じバージョン)とIndependent(パッケージごとに異なるバージョン)のモードがあります。 https://github.com/lerna/lerna#how-it-works 基的にはFixedの方が運用は簡単ですが、不自然なバージョンの上がり方を避けたい場合などはIndependentのmodeを使うことになります。 この記事では、Fixed modeとIndependent modeでのパッケージのリリースフローについて見ていきます

    lernaでのmonorepoにおけるリリースフロー(Fixed/Independent)
    yug1224
    yug1224 2019/01/26
  • Babelで書かれたJavaScriptライブラリをTypeScriptへ移行する方法

    Babelを使ってJavaScriptで書いていたライブラリをTypeScriptへマイグレーションする方法についてのメモ書きです。 数十回はライブラリやアプリケーションのコードベースをJavaScriptからTypeScriptへ変換しているので、 ある程度やり方がパターン化されています。 この記事では、自分がよく利用している次の構成のライブラリを元にしています Babel 6 or 7 Mocha + @babel/register この構成を、次のようなTypeScriptを使った構成へと変換していきます。 Babel -> TypeScript Mocha + ts-node + ts-node-test-register Babelで書かれたライブラリをTypeScriptへ変換 今回はtextlint-rule-helperというライブラリを例にしていきます。 このライブラリは

    Babelで書かれたJavaScriptライブラリをTypeScriptへ移行する方法
    yug1224
    yug1224 2019/01/10
  • VSCodeで音声読み上げでの文章デバッグする拡張 - vscode-read-aloud-text

    vscode-read-aloud-textという文章を読み上げるVisual Studio Codeの拡張機能を作りました。 azu/vscode-read-aloud-text: VSCode extension that read aloud text like Markdown and text etc… Read Aloud text - Visual Studio Marketplace vscode-speechを元にしていますが、vscode-read-aloud-textは文章の構造をパースしてから読み上げたり、読み上げている部分をハイライト表示する機能が追加されています。 Markdownなどをパースして、コードブロックなどは読み上げない textlintのプラグインを再利用してるので、現在対応しているのはMarkdown、Txt、Re:Viewのみ 読み上げるのはHe

    VSCodeで音声読み上げでの文章デバッグする拡張 - vscode-read-aloud-text
    yug1224
    yug1224 2019/01/05
  • JavaScriptの入門書を jsprimer.net で公開しました | Web Scratch

    ここ数年書いているJavaScript入門ですが https://jsprimer.net/ というURLで無料で公開しました。 まだ開発中です これからJavaScriptを始める人がES2015以降をベースにして学べる プログラミングをやったことがあるが、今のJavaScriptがよくわからないという人が、今のJavaScriptアプリケーションを読み書きできるようになるもの Webサイト: https://jsprimer.net/ リポジトリ: asciidwango/js-primer: JavaScriptの入門書 もともと公開してありましたが、jsprimer.net というドメインを取ったのでURLが変わっただけです。リダイレクトされているので既存のブックマークはリンク切れにはなりませんが、気になる人はブックマークしなおしてください。 またリポジトリ(asciidwan

    JavaScriptの入門書を jsprimer.net で公開しました | Web Scratch
    yug1224
    yug1224 2018/11/12
  • 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`を理解する
    yug1224
    yug1224 2018/01/05
  • 東京Node学園祭2014 アウトラインメモ

    東京Node学園祭2014 に参加してきたのでその時のメモ 企業JavaScript飯 #企業JavaScript飯というご飯イベントをNode学園祭のお昼に(勝手に)やってました。 @teppeis、@ahomu、@kyosuke、Layzie (敬称略)で企業内でのJavaScript状況ですかという感じの話をしてきました。 質問テーマのスライド: https://github.com/azu/slide/raw/gh-pages/nodefest2014/lunch.pdf という感じのテーマを元に話をしてきました。 参加していただいた皆さん興味深いお話ありがとうございました。 最近企業のJavaScript(er)ってどんな感じになってて、どういうものを求めているのかに興味を持ってるので、面白い話があったらお話きかせて下さい。(to @azu_re にmention) どうやったら

    東京Node学園祭2014 アウトラインメモ
    yug1224
    yug1224 2014/11/15
    行けなかったからありがたい!
  • npm 2.0.0でローカルモジュールを使ってrequire('../../../')を回避する

    概要 npm 1.xの時はローカルにあるディレクトリへの相対パスをdependencyフィールドで指定できなかった。 そのため、ローカルにあるモジュールをたどるにはrequire("../../../")のような指定が必要になっていた(ライブラリに切り出せればいいけど、アプリケーション固有のUtilsなどがある場合これ面倒になる) Better local require() paths for Node.js avoiding ../../../../../../.. How I Work Around The require(“../../../../../../../”) Problem In NodeJS | ThoughtStream.new :derick_bailey そのため、npm linkやnode_modulesにそのまま追加してやるなど、微妙なハックがひつようだった

    npm 2.0.0でローカルモジュールを使ってrequire('../../../')を回避する
    yug1224
    yug1224 2014/10/15