サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
route477.net
■ [vim] Vimで「いまペーストした部分」をインデントする よく忘れるのでメモ。 yでヤンク pでペースト 「>」「'」「]」の順に押す これで、いまペーストした部分だけが「>」で右にインデントされる。 ']については:help ']に説明があるけど、]という特別なマークがあって、これが「最後に変更またはペーストした部分の末尾」を指すのであった。 (2016/07/10追記:surround.vimを入れていたら、同じ要領で「y」「s」「'」「]」「`」で、ペーストした箇所を「```」で囲むことができる。頭がこんがらがりそうだが…。) (2016/07/13追記:「```」で囲むのはsurround.vimの標準機能ではないのを思い出した。.vimrcに以下の設定が必要。) let g:surround_{char2nr('`')} = "```\r ```"
■ [gadget] ErgoDox EZとUltimate Hacking Keyboardを比較する 最近セパレート式のキーボードに興味があるのでちょっと調べてみた。 モチベーション 肩が体の真横にあるのが自然な姿勢、というのを読んでなるほどと思ったから。普通のキーボードだとどうしても肩が前に来て、肺が圧迫されたりするんだけど、セパレート式だとそれがない。MacBookに外付けキーボードを2台繋いで試してみたんだけど確かに良さそうだった。というかしばらくその構成で行こうと思ったんだけど、Ctrl+Hを入力したいときに左手Ctrl、右手HだとCtrl+Hと認識されず断念した。 ErgoDox EZ ErgoDoxというオープンソースハードウェアを、組み立てた状態で売ってくれるもの。indiegogoでクラウドファンディングしていたが、最近公式サイトが出来たようだ。 ErgoDoxを購入し
■ [book] 超絶技巧プログラミング本のレビュアーをしました 書籍『あなたの知らない超絶技巧プログラミングの世界』に、レビュアーとして参加していました。著者はRubyコミッタの遠藤(@mametter)さんで、来週9月25日に発売予定です。 4774176435 内容について一言で説明するのは難しいですが、このスライドとかこの発表とかを見れば理屈でなく心で理解できると思います。あえて言葉で説明すると、ソースコードが模様になってるとか、記号だけでプログラミングするとか、プログラムを実行すると別のプログラムが出力されるとか、そういう頭おかしい感じのプログラミングに関する専門書籍です。 内容について 本書を開くと冒頭から3分の1、実に100ページに渡って著者のこれまでの作品が列挙されます。自分では書ける気がしないという人も、ここを眺めてるだけでも楽しめると思います。 以降の章では、それらの作
■ [ruby] gemを作るときに実行ファイルをbin/以下ではなくexe/以下に置くことについて 例えばあなたがコマンドラインからピザを注文するようなRubyGemsを書いているとすると、今まではbin/order_pizzaに実行用のファイルを置いていたと思うけど、それがexe/order_pizzaに変わるかもしれない、という話。 仕様変更なの? 実行ファイルをどこに置くかというのは完全に慣習の話で、.gemspecの仕様上は好きなところに置けるようになっている。なので既存のgemが動かなくなるという話ではない。 ただbundle gemコマンドでgemを新規生成したときに、以前のBundlerでは.gemspecが以下のようになっていたのに対し、 spec.bindir = "bin" spec.executables = spec.files.grep(%r{^bin/}) {
■ [git] Gitで最新のコミットのハッシュを得る Dockerイメージをビルドする際に、gitのcommit hashをタグにしたかったのだけど、git HEADのcommit hashを得るコマンドが分からなかったので調べてみた。 以下でいけるらしい。 $ git log -1 --pretty=format:%h 1b234ab %Hにすると省略しないフルのハッシュを取得できる。詳細はgit help logの「PRETTY FORMATS」の項を参照。 ■ [ruby] YAMLで変数が欲しくなったときはアンカーとエイリアスが使えるかも 設定ファイルにYAMLを使っていて、以下のように同じ値が複数箇所に出てくる場合、変数か定数みたいなものが欲しくなる。かといってこれだけのために.yml.erbにするのはちょっとヘビーすぎる。 server: "1.2.3.4" app_env:
■ [ruby][event] 近況報告@RubyHiroba2014 (パターンマッチ、Hash#map、Opal/Yeahの話) 本日行われたRubyHiroba 2014 (RubyKaigiの後夜祭的イベント) にて、「近況報告」というタイトルでRubyの話をしてきました。 スライド(speakerdeck) 以下はテキスト版です(内容は少し差異があります)。 近況について いちおうBoomがメインの感心事のつもりなのですが、あまり進んでいません。 理由の一つはケータイを持って社寺仏閣を回るゲームにうつつを抜かしていたことですが、最近はプレイしてないのでもう大丈夫だと思います。 Rubyとパターンマッチについて Boomの実装にはpattern-matchというgemを使っています。その名の通り、Rubyでパターンマッチをやるためのライブラリです。 Rubyにはパターンマッチがない
■ [misc] Markdownで作業メモを取る なんか社内勉強会でメモ取りの話をするらしいので、自分のやり方を書いておく。 作業メモはいつもテキストで書いてて、昔はHikiDocで書いてたんだけど、最近はMarkdownにしてる。 1行目にタイトルを書く ファイル冒頭にストック的な内容をまとめる ファイル後半を日記として使う 具体的にはこんな感じ。 # <プロジェクト名> ←プロジェクトごとにメモを分けてるので、ここにタイトルを書く。 ## まとめ1 メモは以下のように日付と時刻を入れて記録するが、これはフローとして流れてしまうので、 ストック的なものはファイルの冒頭部分にまとめておく。 ## TODO このへんに直近のTODOを書いたりする。 ---- ←この下から日記ですよ、という境界線 <追記するときはここに追記する> ## 2014/08/25 ← 日付。IMEで「きょう」とか
■ [ruby] Rails使いが静的サイト作るならmiddlemanがいいよ〜という話をした 最近middlemanを少し触っていたので、社内勉強会でその話をした。 middlemanとは Ruby製の静的サイトジェネレータ。erbとかmarkdownとかsassとかを書くと、HTMLやCSSにコンパイルしてくれるやつ。 (競合はJekyllとかNanocとかだけどあまり詳しくないので省略) RubyKaigi 2013のサイトでも使われていたりした。https://github.com/ruby-no-kai/rubykaigi2013 Railsとの親和性 普段Railsのビューを書いてると素のHTMLを書くのが辛くなるけど、middlemanならRailsの便利なあれこれがそのまま使えるので、Railsのビューを書くような感じで静的サイトが作れる。 layoutが使える parti
■ [prog] コメントの話 去年くらいから仕事のコードでは、privateも含めて全部のメソッドに「何をするメソッドか」という簡単な説明を書くように心がけています。 こういうやつですね。 # このレコードの種類を文字列で返す # 種類が未定義の場合はnilを返す def type_name FOO_NAMES[self.foo_type] end 理由をメモ的にまとめておきます。 1. コメントがあると読む人が助かる バグ修正や機能追加とかで、コードを読む機会というのはけっこうある。そういうときにメソッド単位でコメントがあるとすごく助かる。*1 1行書いておくだけで情報共有のコストが下がるなら、充分良い投資ではないかと思います。 あるいはメソッドを短くして適切なメソッド名を付ければ、コメントは要らないのではと考えたこともあるけど、本当に意図がソースから自明になることって少ないんですよね
■ [types] 型推論のある言語作った まだλ計算に毛が生えたようなものなので、Hello Worldくらいしか動かないですが。 https://github.com/yhara/boom TAPLを読んだからには*1静的型付け言語の一つでも作らなければならないと思って、とりあえず動くとこまで実装した。Boomという名前は適当に付けたのであとで変えるかもしれない。 最初はTAPLのfullreconをベースにしようと思ったのだけど、動かしてみたらこいつは多相型が実装されてなくて(練習問題になってた)、pi8027さんのtypeinferをベースにすることにした。 動かし方 Ruby 2.1が必要*2。 $ git clone https://github.com/yhara/boom $ gem i bundler $ bundle install $ bundle exec rspe
■ [ruby] Rakefileを分割するときに気をつけること Railsプロジェクトの場合lib/tasks/*.rakeにタスク定義を書きますが、non-RailsなプロジェクトでRakeを使った場合、開発が進むにつれてRakefileが肥大化するケースがあります。 この場合、lib/tasks/*.rakeを読むようにする修正は特に難しくなくて、以下のようにDir.[]で検索してそれぞれloadしてやれば済みます。*1 PROJ_ROOT = __dir__ # Ruby 1.xの場合はFile.dirname(__FILE__) Dir["#{PROJ_ROOT}/lib/tasks/**/*.rake"].each do |path| load path end あとは好きな粒度(例えばnamespaceごととか)でlib/tasks/foo.rakeを設置し、タスク定義をそっ
■ [ruby] middlemanをRackアプリとして(powで)動かす middlemanは静的サイトジェネレータですが、middleman serverコマンドを実行するとlocalhostでサーバが起動し、ブラウザで逐次出力結果を確認することができます。 で、それはいいのですが、いちいちmiddleman serverコマンドを叩くのも面倒になってきたため(怠惰)、pow経由で起動したいなと思いました。 powから起動するためにはconfig.ruを用意しなくてはなりません。適当に検索したところ、以下の2行でいけるようです。 require 'middleman' run Middleman.server 素晴らしいですね…と言おうとしたのですが、これだと自動リロードが動きませんでした。これはPaaSで動かすためのもののようです。 検索すると、middlemanの#540, #5
■ [ruby] Rubyに「ユーザ定義演算子」を追加するライブラリ、superators http://www.rubyinside.com/superators-add-new-operators-to-ruby-592.html Twitterで衝撃的なgemが流れてきたので調べてみた。superatorsを使うと<---や-~+~-のような独自演算子をユーザが自由に定義できるようになる。しかも驚くべきことに、Pure Rubyで実装されているのだ。 /Users/yhara/r/superators % irb -Ilib -r superators irb(main):0> class Array irb(main):1> superator "<---" do |operand| irb(main):2* if operand.kind_of? Array irb(main):
■ [ruby] Middleman用のHikiDocプラグインを作りました この記事はMiddleman Advent Calendar 2013の11日目の記事です。 Ruby製の静的サイトジェネレータMiddlemanをHikiDocに対応させるgemを作りました。 HikiDocって? HikiDocはHikiというWikiエンジンで使われているマークアップ書式です。最近はマークアップというとMarkdownが人気で、HikiDocでできることもMarkdownとそんなに変わらないのですが、わりと複雑な表が書けるところが地味に便利だったりします (Markdownだと自分でhtmlタグを書かないといけない)。 Hikiからmiddlemanへの移行 昔はメモ置き場用CMSとしてHikiを使っていたのですが、静的な記事を公開するだけならMiddlemanでいいじゃんということで、Mi
■ [event] 今年もアドベントカレンダーの季節が始まりました (その数300個超!) 昨年に引き続き、アドベントカレンダーのまとめを作成しています。カレンダーはツールを作ってだいたい1日1回チェックしていました。昨年はまとめが長くなりすぎて見づらかったので、今年は言語別・技術系・非技術系の3トラックに分割してみました。 それぞれの個数は以下です。 Advent Calendar 2013まとめ[プログラミング言語別] (JavaScript関係が一番多く、あとはJava/PHP/Rubyが多いですね) 67個 Advent Calendar 2013まとめ[技術系] (Web系・モバイル・クラウド・データベース等々) 118個 Advent Calendar 2013まとめ[非技術系] (趣味関係が多いですが、食べ物・飲み物が盛り上がってたりします) 115個 ということで、ちょうど
■ [esobook] 『Rubyで作る奇妙なプログラミング言語』が復刊します 4839927847 絶版になっていた『Rubyで作る奇妙なプログラミング言語』ですが、このたびPDF版+オンデマンド印刷版という形で復刊になります。 発売日は1/7で、いまのうちに予約すると割引があるので、PDFなら買うのにな、と思っていた方はこの機会にぜひどうぞ。 【先行予約】Rubyで作る奇妙なプログラミング言語 ~ヘンな言語のつくりかた~ | マイナビブックス 一応、第二版という形にはなりますが、内容は基本的に前のものと同じです。違うのは正誤表にある誤植が直っているのと、「はじめに」のRubyのインストール方法のところを直したくらいです。 サポートサイト 復刊に当たって、ダウンしてたサポートサイトも新たに復旧しています。(スタイルシートをちゃんと書いてないのですごくプレーンな感じですが…) http:/
■ [node.js] Node.js用の静的サイトジェネレータ、Wintersmith 所用で「node.js static site generator」で検索していたところ、Wintersmithというのを見つけました。 Rubyでいうmiddlemanに相当するもので、.scssや.mdから静的サイトを生成してくれます。 https://github.com/jnordberg/wintersmith#quick-start 以下、使い方を簡単に。 インストール npm install -g wintersmith で入ります。 サイトを作ってみる wintersmith 2.0.8では、basic、blog、webappという3つのテンプレートが用意されています。 とりあえずblogを使ってみましょう。以下のようにすると、./blog1/ にファイル一式が生成され、http://
■ [github] GitHubのforkリポジトリを普通のリポジトリにしてもらう 最近githubの緑バー(Your Contributionsの欄)を伸ばすのがマイブームなのですが、実はこれ、forkしたリポジトリへのコミットは(本体にマージされない限り)カウントされないというルールがあります。 で、BiwaSchemeのメインリポジトリはgithubのbiwascheme/biwaschemeなんですが、これはyhara/biwaschemeからforkして作ったため、緑バーにカウントされないという問題がありました。 このような場合、ここの「contact a human」からメールを送ると、fork側を普通のリポジトリにしてもらうことができます。 参考のために文面を(うろ覚えですが)書いておくと、こんな感じで送ったと思います。手短なのは入力欄に「If you use 140 ch
■ [event] 2013年のアドベントカレンダーまとめを始めました 11月になったので、Advent Calendarのまとめ作業を始めました。 去年のやつはちょっと長くなりすぎたので、今年は言語別・技術系・その他の3つに分けてみました。 Advent Calendar 2013まとめ[プログラミング言語別] - NAVER まとめ Advent Calendar 2013まとめ[技術系] - NAVER まとめ Advent Calendar 2013まとめ[非技術系] - NAVER まとめ 主にQiitaとAdventarをチェックしています。漏れがあったら@yharaまでお知らせください。 ■ [github] Githubの緑のバーを伸ばすには、登録したメールアドレスを使うことが必要 Githubのユーザトップ (https://github.com/yhara ) の緑のや
■ [git] git grepの検索結果から長すぎる行を省くコマンドを作った git grepはgitリポジトリ内のソースコードを高速に検索してくれる便利なやつですが、「git grep Date」とかしたときに、 jquery.min.jsなど圧縮された(=1行が異常に長い)ファイルが検索結果に含まれてしまい、非常にウザい感じになります。 で、ふと解決策を思いついたのですが、git grepの出力をパースして長い行をたたんでやればいいんじゃないでしょうか。 以下のコードをgit-grep-nolongのようなファイルに保存し、パスの通った場所に置いてchmod +xしておきます。 #!/usr/bin/env ruby require 'open3' stdin, stdout, stderr = *Open3.popen3('git', 'grep', *ARGV) LIMIT =
■ [rails][javascript] JavaScriptのテストフレームワークをRailsのためにパッケージングしたKonachaを使ってみた 「RailsでJavaSciriptのテストを」と言った場合、画面上でダイアログ開く処理とかをcapybara-webkitやpoltergeistでテストしたい…という話のときと、 そうではなくシングルページアプリとかでJS部分に複雑なロジックがあり、その部分をテスト駆動的に開発したい…というケースの2種類がありますが、今日は後者の話。 Rails + CoffeeScriptでぷよぷよシミュレータを書いていたのだけど、coffee部分のテストがしたくなって「coffeescript テスト」でググったところ、Konachaというライブラリが見つかった。 RailsでJavascript/CoffeeScriptをテストするときの決定版(
■ [javascript] JS MVCフレームワークについてちょっと調べた (2013夏) JS MVC戦国時代ってそういえばどうなったんだろう、と思いつついくつかのライブラリを調べてみたところ、意外とそれぞれキャラが違うことが分かった。 Backbone.js 1.0.0 いまのところ一番人気らしい 意外と小さい。ソースが1ファイルしかない。 Model、Collection、Viewという、自作してもこういう感じになりそうだなぁという構成。(Router/HistoryはURLいじらないなら使う必要はないので、実質この3つだけ) 薄いフレームワークなので、他のライブラリと組み合わせるのは簡単そう。 デメリット:以下のフレームワークが持っているdata bindingのような高度な機能はないので、相対的にコード量が増える。これは小さなアプリでもそこそこ行数を書かないといけないというこ
■ [ubuntu] Ubuntuにthe silver searcherを入れてみた the silver searcher(Ag)はgrepとかackとかrakみたいな検索ツール。速いらしい。 aptで入らないらしいので、ソースからコンパイルする。 $ git clone https://github.com/ggreer/the_silver_searcher $ cd the_silver_searcher $ aptitude install automake pkg-config libpcre3-dev zlib1g-dev liblzma-dev (READMEにあるとおり) $ ./build.sh agというファイルができるので、パスを通す。 あとは $ ag foo とかで、カレントディレクトリ以下の全ファイルから"foo"を探すことができる。 あと.agignore
■ [ruby][event] TRICK2013 結果発表、最もクレイジーで美しいRubyプログラムはこれだ! というわけでTRICK2013の結果発表が、昨日のRubyKaigi 2013最終日にて行われました。いいコンテストでしたね。 ustream録画:http://www.ustream.tv/recorded/33618033 結果発表スライド:http://www.slideshare.net/mametter/trick2013-results 入賞作品(github):https://github.com/tric/trick2013 優勝はkinabaさんの「すべての文字を1回ずつ使って、すべての文字を1回ずつ表示するプログラム」でした。おめでとうございます。 !@THEqQUICKbBROWNfFXjJMPSvVLAZYDGgkyz&[%r{\"}mosx,4
■ [scala][macro] Scalaマクロについて少しだけ調べた Scalaにも、Lispのような構文木マクロを入れようという動きがあるらしい。静的型言語の世界では構文木マクロがどのようになるのか興味があったので、少し調べてみた。 http://scalamacros.org というサイトがあるのだが、これを見ると既にScala本体にexperimental扱いで取り込まれているようだ。 http://docs.scala-lang.org/ja/overviews/macros/overview.html 概要についてはこのへんの資料が参考になった。 Scala 2.10のマクロを試してみた - 新・たけぞう瀕死の日記 Scala 2.10 におけるメタプログラミング: 構文木、シンボル、型について|eed3si9n 初めての Scala マクロ|eed3si9n どんなものか
■ [haskell][types] Haskellの型クラスの実現方法について調べてみた 型クラスの実装について調べていたら、1988年の「How to make ad-hoc polymorphism less ad hoc」という論文に行き当たった。 http://homepages.inf.ed.ac.uk/wadler/topics/type-classes.html (How to make ad-hoc polymorphism less ad hoc) (Macだとpsファイルがそのまま開けるようです) これによると、型クラスを使ったHaskellプログラムは、型クラスを使わない(代数的データ型のみの)プログラムに変換できるそうだ。*1 内容は、Haskellのclass構文とinstance構文の使い方を知っている人なら、上から順に読んでいけば理解できると思います。実装の
■ [ruby] whytheluckystiff.net が微妙に更新される via @yukihiro_matz 最新の_why情報です http://whytheluckystiff.net/ にアクセスすると謎のデータが…? Public Print Queue SPOOL/DESOLEE2013-01-06T08:21Z SPOOL/TRUMPETS2013-04-12T19:43Z SPOOL/SOLICIT2013-04-12T20:10Z SPOOL/CAPRICE 2013-04-12T22:06Z SPOOL/HOMEWORK2013-04-12T23:19Z reddit HN このページのコンテンツと一致するgithubリポジトリ その中の印刷データっぽいものの復元画像 http://ja.scribd.com/doc/135650965/Caprice http:
■ [ruby][event] 頭のおかしいRubyプログラムのコンテストが開催されるぞ (5/18〆切) 5月末のRubyKaigiに合わせて、IOCCCのRuby版的なコンテストが開催されるようです。 TRICK 2013 TRICK 2013 (第一回 超絶技巧 Ruby 意味不明コンテスト in rubyKaigi) をやります - まめめも 「ようです」っていうか僕も審査員なんですが…。しかし他の審査員が強力すぎるので、どの方向からどんな投稿が来ても大丈夫な安心感があります。 mameさんのスライドや、本家にIOCCC入賞した人の記事とか見ると雰囲気が掴めるかもしれません。 なお、要件は「このプログラム、こんな風に動くんだ!」ということですので、本家IOCCC同様、たとえばワンライナでのエントリもアリです。(just another perl hackerみたいなね) 例 int
■ [misc] TrelloでTODO管理 TODOツールはいろいろ試したあげく、最終的に「テキストファイル+TotalTerminal最強」っていう結論になったんだけど(どんなツールより自由度が高い:-/)、 でもやっぱり時にはWebでポチポチするタイプのTODOツールを使いたい気分になる。 で、TrelloをToDo/Doing/Done/Skippedに分けて使っているスクリーンショットを見て、なんだか良さそうだったので、趣味の開発を管理するのに使うことにしてみた。 http://blog.mootoh.net/post/46922967648/coursera ルールは以下。 Doing/Backlog/Done/Cancelledというリストを作る 前はプロジェクトごとにリスト作ってたけど、こっちの方がずっと見通しがいい プロジェクト名はprefixとして[foo]とか書いとけ
次のページ
このページを最初にブックマークしてみませんか?
『https://route477.net/』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く