タグ

ブックマーク / motemen.hatenablog.com (18)

  • Makefileの代わりにnpm scripts+zxを使う - 詩と創作・思索のひろば

    そこそこの規模があるプロジェクトで実行すべきタスクを定義するとき、初手として Makefile を使いがち。 Pros make は事実上どんな環境にもあることを期待してよい シェルで実行されるコマンドをそのまま書ける タスクの依存関係が明示できる Cons make では positional arguments が使えない 少し複雑なことをしようとすると Makefile 専用の文法を覚える必要がある 現代では、ファイルベースのタスクの依存関係は make が発明されたころほどは必要ではない Docker とか Go とか Webpack がよしなにしてくれることが多い 例: docker compose のラッパー ちょっとしたコマンドのラッパーを書きたいことがある。Makefile を書きはじめたらすべてのエントリポイントを make にしたい。ということで、以下のような Make

    Makefileの代わりにnpm scripts+zxを使う - 詩と創作・思索のひろば
    moznion
    moznion 2022/04/19
  • DevTools上でesbuildするChrome拡張を書いた - 詩と創作・思索のひろば

    社内ではドキュメントの共有に Scrapbox が活発に使われており、するといきおい UserCSS や UserScript もさかんである。具体的には、/customize という共有のプロジェクトがあってみんなの自慢の装飾やカスタマイズが共有されている。これを個々人で import して使うんである。 こんな感じ。 自分の場合は /motemen/UserCSS/common に常に適用したいスタイルを書いておいて各プロジェクトから読み込んでいる。このページからさらに、共有プロジェクトや他人の個人プロジェクトページからよさそうな設定を import している次第。 つまりは多段インポート。こういうことを続けていると、だんだんと読み込みの遅さが気になってくる。こういうのはバンドルすればいいのだけど、巷のツールを普通に使うことはできない。インポートしてるリソースに認証がかかっているからだ

    DevTools上でesbuildするChrome拡張を書いた - 詩と創作・思索のひろば
    moznion
    moznion 2022/03/01
    ゴツカッコイイ
  • Google App EngineでGoを動かすときに知っておくべきこと(ソースコード・ビルド編) - 詩と創作・思索のひろば

    Google App Engine(GAE)で Go 製のウェブアプリを動かしたかった話。いっぺん動かしてみると GAE/Go はウェブアプリを動かす環境としてはとてもいい。ただ、中途半端な知識だけで始めると開発者としてはつまずくことが多かったので、分かりにくい点をまとめておく。 Google App Engine Go Standard Environment について goapp は $GOPATH 以下もアプリケーションのソースとしてアップロード/コンパイルする goapp はプロジェクトルート以下のソースコードをすべてコンパイルしようとする go-app-builder: Failed parsing input: parser: bad import "syscall" in ... go-app-builder: Failed parsing input: app file x

    Google App EngineでGoを動かすときに知っておくべきこと(ソースコード・ビルド編) - 詩と創作・思索のひろば
    moznion
    moznion 2018/10/17
  • git commit --fixup とは何か - 詩と創作・思索のひろば

    git commit --fixup というオプションの存在を最近知って調べた。 ヘルプとリリースノートより "git commit" learned the --fixup and --squash options to help later invocation of interactive rebase. Git v1.7.4 Release Notes --fixup=<commit> Construct a commit message for use with rebase --autosquash. The commit message will be the subject line from the specified commit with a prefix of "fixup! ". See git-rebase(1) for details. 1.7.4 から入って

    git commit --fixup とは何か - 詩と創作・思索のひろば
    moznion
    moznion 2017/06/29
  • Go のシンプルかつ明快な SQL クエリビルダ go-sqlf - 詩と創作・思索のひろば

    Go でリレーショナルデータベースを利用したアプリケーションを書いているとき、動的に SQL を組み立てたい場合には、いくつかの方法が考えられます: クエリビルダを使う。世の中にすでにいろいろ存在します。(そのためのライブラリなので)動的に生成するにはもってこいですが、この場合、それぞれのライブラリに合わせた書き方をしなければならないので読み手にもある程度負荷がある点、また、Go は言語として冗長に書くことをよしとする思想を持っているため、DSL 的な API との相性が悪いという欠点があります(map の組み立てが冗長、条件分岐する式が書けないなど)。また、一般にクエリビルダから生成される SQL がコードから想像しづらくなる問題もあります。 文字列連結や fmt.Sprintf を使う。発行される SQL は比較的分かりやすくなりますが、動的に組み立てると SQL プレースホルダとバイ

    Go のシンプルかつ明快な SQL クエリビルダ go-sqlf - 詩と創作・思索のひろば
    moznion
    moznion 2015/09/10
    スマート!
  • 秒速でLGTMするコマンド - 詩と創作・思索のひろば

    LGTM するときはよさげなアニメーション GIF を探し出してきて lgtm.herokuapp.com にかけるのがデファクト[要出典]だけどこの「よさげなアニメーション GIF を探し出す」というのがくせ者で、大量のアニメーション GIF をブラウザで開くと CPU パワーを浪費するし選択にかける人的な労力もばかにならない。エコではない。そこで Tumblr のランダムな画像を LGTM 化するコマンドラインツールを書いた。その名も lgtm.sh だ。Tumblr には /random というエンドポイントがあるのでこれを利用して特定の Tumblr ブログ群からランダムに画像 URL を得ている。 ./lgtm.sh -m | pbcopy -m オプションをつけると Markdown フォーマットで出力する。つけない場合は画像 URL のみ。 /random へのアクセスには少

    秒速でLGTMするコマンド - 詩と創作・思索のひろば
    moznion
    moznion 2015/03/15
    たのしい
  • コード補完もできる Go の REPL「gore」を作った - 詩と創作・思索のひろば

    タイトルの通りです。Go は LL 的に使える、とはよく申しますが、そういう意識で使っていると REPL 的なことをしたいときに困りがちですよね。そこで作りました。gore。いい名前ですね。 motemen/gore · GitHub 以下のスクリーンキャストでだいたいの雰囲気をお察し下さい。 (スクリーンキャストは cho45/KeyCast を使って撮影しました) 特徴 gore の特徴は以下の通りです。 ラインエディタと履歴 複数行入力 パッケージのインポート、補完つき 式および文を実行可能 コード補完(nsf/gocode を利用) プリティプリント(k0kubun/pp か davecgh/go-spew がおすすめ) ドキュメントも引ける(godoc が必要) 以上のように、非常に便利なものになっております。むしろこの程度 REPL には当然あってほしい機能だとも言える。 イン

    コード補完もできる Go の REPL「gore」を作った - 詩と創作・思索のひろば
    moznion
    moznion 2015/02/19
    かっこいい
  • 【想定はてブ数つき】2014 年のボツネタを一挙公開!!! - 詩と創作・思索のひろば

    飽きっぽい性格がそうさせるのか、何かこれをやるぞ! と決めたことをやっている間に他のことを思いついてとりあえずメモっている間にどんどん積み上がっていって、果たせないままに今年も大晦日が近づいてきました。残された人生の時間と話し合って、自分が手を出すのはやめとこうと思ったアイデアをここに記しておきます。ブログに書くときの記事タイトルと想定はてブ数を併記しますので、参考にしてください。 「Perl プログラムを変数名で静的解析する」 YAPC::Asia 2013 で Perl の静的解析の話が盛り上がっていて考えた。Perl のような言語に静的解析のために型アノーテーションをつけるのは煩雑で間違いを起こしやすいと考えられるけれど、静的型のない言語は名前付けが相対的に重要であることを利用して、変数名を型アノーテーション代わりに使用するというもの。例をあげると sub get_req { ...

    【想定はてブ数つき】2014 年のボツネタを一挙公開!!! - 詩と創作・思索のひろば
    moznion
    moznion 2014/12/29
    想定はてブ数面白い
  • Wercker で Go のプロジェクトをクロスコンパイルし、GitHub にリリースする - 詩と創作・思索のひろば

    ghq をメンテナンスするにあたっていくつか無料の CI サービスを試してみたのですが、今回は Wercker を使うことにしました。いろいろ試行錯誤した結果表題のことがなんとか実現できた(ghq のリリースは GitHub 上 にあります)ので、ハマりポイントと共にこのエントリで紹介します。 Wercker Wercker は CI サービスのひとつで、ビルド環境やデプロイの 1 ステップを box および step という形でユーザが公開・共有し、それらを組み合わせることで CI の設定をシンプルにしようとしているところが特徴です。 ghq の wercker.yml を見てもらえばだいたい雰囲気は分かると思いますが、大まかに言って “box”, “build”, “deploy” の 3 項目をプロジェクトごとに設定します。 box はビルドが走る環境です。OS や、テストに必要なパ

    Wercker で Go のプロジェクトをクロスコンパイルし、GitHub にリリースする - 詩と創作・思索のひろば
    moznion
    moznion 2014/12/28
  • 『Write Great Code: Volume I: Understanding the Machine』を読んだ - 詩と創作・思索のひろば

    『Write Great Code: Volume I: Understanding the Machine』を読んだ。副題に注目。予想していた以上にマシンの話だった。 自分たちが書くあらゆるプログラムは、それが現実界で動いている以上、必ず物理的な実体を持つコンピュータの上で動いている。こう動いてほしいと願って書いたコードがどんな風に解釈され、表現され、実行されるかということを、このではごくごくマシンの側から描いてくれる。C言語が一種の高級言語という範疇に収められているところから、その立ち位置を想像されたし。 今自分が書き、走らせているプログラムは様々な抽象の上に構築されているのだけれど、それらのあらゆる抽象化を取り去って、数値や文字列といった、プログラムが扱うデータはどんな風にメモリ上に配置されるのか。CPU への命令はどんな風にビット列として表されるのか、それを CPU はどんな風に

    『Write Great Code: Volume I: Understanding the Machine』を読んだ - 詩と創作・思索のひろば
    moznion
    moznion 2014/08/16
  • スーパーハッカーの夢を諦め、普通自動車免許を取得しました - 詩と創作・思索のひろば

    photo by Thomas Hawk 表題の通りです。実のところ、もう一年も前のことになります。 優秀なエンジニアの多くが自動車免許を所持していないことは有名な事実です[要出典]。私も彼らに憧れ、免許を持たずに生活していましたが、歳を取るにつれ「自分はスーパーハッカーにはなれない」と次第に実感してきたこと、新たな自分に変身したい、という思いと、あまりに暇でヤケになった気持ちから思い立って自動車学校に入学したのが一昨年の年末です。会社に通いながらの教習でしたが、週末と早退・遅刻を活用することで、半年かけて免許を獲得しました。当時のチームメイトに感謝。 すべてを終え、保有者サイドに堕ちてしまった私からそうでないあなた方に伝えられることは……「初心者マークの車に近づくな」。いち歩行者しかなかった頃は車であればどれも同じやろと考えていましたが、運転する側になると全然違う。初心者マークの車は生ま

    スーパーハッカーの夢を諦め、普通自動車免許を取得しました - 詩と創作・思索のひろば
    moznion
    moznion 2014/07/09
    めっちゃいい
  • ghq: リモートリポジトリのローカルクローンをシンプルに管理する - 詩と創作・思索のひろば

    以前紹介したghqというツールで GitHub のリポジトリを手元に簡単クローンしてたのを、環境が新しくなったついでに Go で書き直し、完全リニューアルしました。(前は zsh だったのでなんだかなーと思ってた。) そもそも何をするツールか GitHubGoogle Code Project でホストされている Git、Mercurial のリポジトリを手元にクローンすることができます。リポジトリは設定したルート(デフォルトで ~/.ghq)以下に、以下のようなパスで置かれます。 ~/.ghq/github.com/motemen/ghq go get と似てますね。同じような感じで ghq get <URL> します。 % ghq get https://github.com/motemen/ghq clone https://github.com/motemen/ghq ->

    ghq: リモートリポジトリのローカルクローンをシンプルに管理する - 詩と創作・思索のひろば
    moznion
    moznion 2014/06/02
    クールだ
  • gulp, TypeScript, Browserify で Chrome 拡張を書く - 詩と創作・思索のひろば

    先日紹介した chrome-Flavoured-Favicon ですが、以下のような技術によって支えられています。 gulp ビルドツール。 TypeScript 型つき JS。 Browserify JS の依存関係の解決。 AngularJS HTML と JS を綺麗に結合させる。 最後の AngularJS は TypeScript との相性を試してみたかっただけのおまけです。結果は最高に気持ちよくなれました。 ディレクトリ構成 app/ 最終的に配布する拡張体です。ほとんどのファイルはバージョン管理されておらず、gulp によって生成されます。 src/ TypeScript のソースなどが置いてあります。基的にこの中だけを弄る。 DefinitelyTyped/ DefinitelyTyped(TypeScript の型定義ファイル)。Git の submodule で管理

    gulp, TypeScript, Browserify で Chrome 拡張を書く - 詩と創作・思索のひろば
    moznion
    moznion 2014/05/12
    カッチョいい
  • 700を越えるJavaScriptライブラリを自由に試せるページを作った - 詩と創作・思索のひろば

    こちらです ☞ JavaScript Libraries Playground(jQuery 2.1.0 と underscore の例) jQuery や underscore などの JavaScript ライブラリをインタラクティブに試したいとき、最近はブラウザで自分のブログ(ここ)や GitHub など、当該のライブラリがロードされていることを知っているページを開いておもむろに ⎇⌘J(Chrome)! していたのですがこれは直接的ではないなと思ってそれ専用のページを作った次第です。 冒頭の例にもあるように location.search 部に library[@version],… 形式でライブラリを与えてやればページに <script> 要素が追加されて、あとは開発者コンソールなりでお楽しみください、という仕組みになっています。 cdnjs にはかなり多くのライブラリがホスト

    700を越えるJavaScriptライブラリを自由に試せるページを作った - 詩と創作・思索のひろば
    moznion
    moznion 2014/03/25
    便利だった
  • Introducing Pusheen Explorer - 詩と創作・思索のひろば

    Japanese follows English.(日人は英語をたどる。*) Pusheen! Meet the world's cutest cat at pusheen.com, who is also famous by her stickers available in facebook messenger. If you have not seen her, take a look at her cute animated gifs, and you will soon like her. There are so many pictures of Pusheen, however, that you are easily in lost while searching for a picture you know you have seen before. Pusheen E

    Introducing Pusheen Explorer - 詩と創作・思索のひろば
    moznion
    moznion 2014/03/20
    かわいい
  • はてなブログについた訂正コメントを適用する JavaScript パーツ - 詩と創作・思索のひろば

    記事に typo があったとき、見知らぬ人に「s/荻原雪歩/萩原雪歩/」などといったコメントを書き残されることがありますが、それをいちいち適用するのも面倒なので、そのような形の訂正コメントをそのまま記事文に適用するスクリプトを書きました。この記事でも有効になっています(何が起きるのか分からないと思うので、下部の「例文」をご覧ください)。 設置方法 デザイン編集画面 の「フッタ」部など HTML が書けるところに、以下の内容を貼り付けるだけでインストール完了です。 <script src="http://motemen.github.io/hatenablog-scripts/auto-apply-correction-comments/auto-apply-correction-comments.js"></script> 場所はこのへんですね。 リポジトリ https://github

    はてなブログについた訂正コメントを適用する JavaScript パーツ - 詩と創作・思索のひろば
    moznion
    moznion 2013/12/12
    なにが正しい情報なのかわからなくなってきた
  • いい感じに出力をインデントしてくれるモジュール #perl - 詩と創作・思索のひろば

    [2013-11-20: Print::IndentedがCPANになくてしょんぼりしている。 とのことで shipit いたしました。 あざーす!] 過去のよく分からないコードの挙動を把握したいときには print (warn) するのが少なくともとりあえずの方法としては常套手段ですが、これがただ平坦に画面に現れるだけだと見づらい。例えば条件分岐やループの中にいる時は出力をインデントするようにすると動きが掴みやすくなるけれど、ただでさえ人間に単純労働を課す print デバッグにそこまで労力を使うのは辛い。そういう面倒さを減らそうという動機で、このモジュールは書かれました。 https://github.com/motemen/perl5-Print-Indented 一体何をするのかというと今書いた通りですが、print 時に、その print 関数の呼び出しコードのインデントに応じて

    いい感じに出力をインデントしてくれるモジュール #perl - 詩と創作・思索のひろば
    moznion
    moznion 2013/11/19
    格好いい
  • Shipped AnyEvent::Plackup - 詩と創作・思索のひろば

    https://metacpan.org/release/MOTEMEN/AnyEvent-Plackup-0.01 (Japanese entry at: http://subtech.g.hatena.ne.jp/motemen/20120920/1348138250) Simple obvious usage use AnyEvent::Plackup; my $server = plackup(app => \&psgi_app, port => $port); say $server; # stringifies to server origin, e.g. "http://0.0.0.0:$port" You may omit port number and random open one is chosen. In this example, this is only a w

    Shipped AnyEvent::Plackup - 詩と創作・思索のひろば
    moznion
    moznion 2013/10/15
    Cool!
  • 1