サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ブックレビュー
qiita.com/5t111111
Zsh => fish に移行するときに Zsh の history も移行したいときに変換したメモ。 fish の history ファイルは ~/.local/share/fish/fish_history にあるが、中を見ると基本的にコマンドとタイムスタンプを記録した YAML だったので Ruby のワンライナーで簡単に変換できた (パスの情報とかも含まれるようだったが無視した) 。 $ fc -lni 1 | ruby -rtime -r yaml -e 'puts STDIN.inject([]) { |a, l| a << { "cmd" => l[16..-1].strip, "when" => Time.parse(l[0..15]).to_i } }.to_yaml(options = { line_width: -1 })' > history-from-zsh.ym
fish 2.7.0 で cdh というコマンドが追加されました。 これはディレクトリの履歴から cd するディレクトリを選択できるものです。fish だとこれまで pushd / popd とか z とかを使ってディレクトリの移動はやりくりするしかなかったので、このコマンドの追加はかなりありがたいと感じています。zsh の cd - や cdr をご存知の方であれば、そういったユーザーフレンドリーなディレクトリ移動をサポートするものと思ってもらえればよいです。 まあ一回使ってみれば使い方はすぐわかるのでわざわざ紹介するまでもないのですが、どうせお前らリリースノートとか読んでないだろうからな! 使いかた
デコレータの書き方はわかった。 デコレータとはその名の通りデコレートするものだ。 何をデコレートするのかといえばそれはもう関数、関数である。 あとメソッドである。 俺はわかった。たいへんだ。デコレータをわかってしまった。 タケシはそう呟くと弾かれたように走りだした。 だが信号が点滅し始めたので止まった。 そう、彼は交通ルールを守るのだ。 そして暇を持て余すように考える。 書けるようになったら使っていきたいのが人情というものだ。 だが、実際使ってみたいと思うと、いまいち使いどころがわからない。 有効な使い道が思い浮かばないのだ。 そんな人。 ハイ!俺もわかりません! いや、でも、ちょっとわかってきたかも。 なぜデコレータを使うのか なぜデコレータを使うのか? 好ましくない冗長性の排除やDRYのためにデコレータを使う 読みやすさの向上のためにデコレータを使う 思いつくものとしてこういうのがあり
Vim でテストコードを書きながら、Vim を抜けずその場でそのファイルとかその行のテストを流したい そういうとき Emacs とか Atom だとプラグインでやってたけど、いまいち Vim だとそういうやり方がしっくりこないなと思っていたところで「もう tmux で別ペイン開いといて send-keys するのでいいのでは」という結論になった。 この方法だとテストの種類によって変えるのも実行コマンドを変えるだけで簡単にできるし、実際にテストを流すのが Docker コンテナの中、とかいうときにもそのまま応用できるのでなかなかよい。 具体的にどういうことができるかというと、これから書く例では、tmux を左右の2ペインに分割しておいて、 左ペインに Vim 右ペインにテストコマンドを実行したい場所 が設定された状態で、Vim でテストコードを書きながら右ペインでテストを実行するというもの。
Ruby Advent Calendar 2016 の7日目が未投稿だったので埋めちゃいます。 これは Ruby Advent Calendar 2016 の7日目の (代理) 投稿です。 「Railsのポリモーフィック関連とはなんなのか」という投稿の中で、 ポリモーフィック自体は非常に便利だけどもRubyのシンタックス的に厳しいものがある との意見がありました。 個人的には Ruby 開発ではガンガンコーディングを気分良く進めていける一方で、その分ランタイムで落ちたり想定外のバグを出したりするのはもうある程度仕方ないものだと考えていて、だから気をつけてコード書かないとね、ちゃんとバグを拾えるテストコード書いとかないとね、と心得てやっていくのがいいと思っているのですが、それでせっかくの柔軟な機能の利用を自ら制限してしまったり、本来不要であるはずのドキュメンテーションを要求されたりすることも
だいたいぼくは Rails のプロジェクトではテストフレームワークとして Minitest を使っているのですが、だいたい「RSpec しか書いたことなくて Minitest わかんねー」という苦情をいただくので、なんとなく Minitest について、なんか使い方だとか、書き方のコツだとか、なんかそんなようなやつをまとめていこうと思います。 内容は「Minitest Cookbook」の「Rails Recipes」の章を思いっきり参考にさせてもらっています。なので Minitest 自体の説明は少なくて Rails のテストに特化した内容となっています。この本はほとんど唯一の Minitest 本だと思うし、ここで紹介する Rails 絡み以外の部分も良い内容なので読んでおくといいでしょう (そこそこ高いけど) 。 ちなみにこれは「その1」で、まだまだ続く予定ですがいつ書くかは未定です
Rails で Markdown をレンダリングするとき、Qiita みたいにコードブロックにファイル名をつけられるようにしたいな。と思って拡張を書き始めましたが、よく考えたら Qiita::Markdown そのものが公開されているので、それを使わせてもらうのが一番よさそうじゃん!というお話です。 Rails のバージョンは現時点で一番新しかった 4.2.0rc2 を使いました。 事前に準備しておかないと、とか考えてるからお前はいつまでたってもそこから動けないんだよ Python が必要だからインストールしたいって?その節穴の目をいますぐ潰したほうがいいんじゃないか?よく見ろ、もう入ってるだろ? Qiita::Markdown はコードのシンタックスハイライトに pygments.rb を使っているので、Python のツールである Pygments をインストールする必要がある、と思う
今は多分 JavaScript のライブラリでかっこいいグラフとかをひょいひょい作ってくれたりすんじゃないかな、と思うのですが、いや、よく知らないですが、やはり使い慣れた matplotlib を web アプリでも使いたいです。 でも、いかんせん matplotlib は X11 を使って描画するものですので、web アプリで使うのは難しいのではないか、と思ったら、そんなことはありません。 バックエンドに AGG (Anti-Grain Geometry) を使い、画像データを作ります。 やること matplotlib で作ったグラフを flask web アプリケーションで描画します。 flask を使う理由は、便利だから、ぐらいなので、使わなくても同じようにすれば同じようにできると思います。 また、以下の2パターンでやります。 png データをレスポンスで返す 画像ファイルを一時ファ
この記事は Crystal Advent Calendar 2015 の21日目の記事です。 昨日は、mihyaeru21 さんによる Crystal 0.7.4の時代に作ったbotを0.9.1に対応させてStreamingを使う でした。破壊的変更を大胆に入れられるのも今でこそだと思うので、より良くなっていくなら後方互換性を切っていくのも大歓迎です。ですが、ハマっちゃうことも多そうなのでこのように実際の事例でまとまってると嬉しいですね。あとは、ライブラリ作者の方々にはほんとに頭が下がります… Crystal のドキュメント翻訳 さて、タイトルの通り、Crystal のドキュメントの翻訳をしたので、そのやり方なんかをまとめます。自分でも忘れそうだし、あとは「コントリビュートよろしくね!」って意味も込めて。 で、あくまでこれは Crystal のドキュメントに関する話になりますが、有志による
Rails アプリケーションの開発をするとき、頻繁にメソッドの定義内容や Gem のコードを参照することがあります。 そこで、ソースコードタグ付けツールの GNU GLOBAL (gtags) を使って少しでも楽に、快適にしたい、という話です。 タグ付けツールでは ctags が有名で、こっちは Ruby や Rails での利用例も結構見つかるのですが、GLOBAL は定義へのジャンプだけでなく、参照へのジャンプもできる点が優れています。ビルトインパーサーが対応している言語が少ないのが難点なのですが (Ruby も未対応)、プラグインパーサーとして先の ctags と Pygments を利用することで、多くの言語に対応させることが可能です。 やりたいこと 以下を実現するのが目的です。 アプリケーションコードで「定義」「参照」「シンボル」のタグジャンプを使えるようにする アプリケーション
この記事では、RubyのOSCライブラリを使ってOSCの送受信を行う基礎のところから、OSC経由でiTunesをリモート操作するという1つの活用例までを書こうと思います。 OSCって何?という人でも理解できると思いますが、Rubyのコードがまったく読めないとちょっと理解しにくいかもしれません。 OSCって? OSCとは、正式名称をOpen Sound Controlといい、公式サイトでは以下のように説明されています。(訳は適当な意訳) Open Sound Control (OSC) は、現代的なネットワーク機構を持ったコンピューター、サウンドシンセサイザー、その他のマルチメディアデバイス同士でコミュニケーションするための通信プロトコルです。現代的なネットワーク技術を電子楽器の世界で利用することで、OSCは様々な利点を持っています。 名前や、この説明からも分かるように、OSCは電子楽器を連
最近話題の Ruby ライクなプログラミング言語 Crystal について。 「Ruby コードが変更なく動く」という衝撃的な発言や、「静的型付けの Rails 嬉しい」といった気の早すぎるように思える発言なども目にして、「じゃあ実際どのくらい Ruby コードがそのまま動くの?」ということを知りたく、「なんかの Gem を Ruby コードのコピペで実装してみよう!」と思いました。 とりあえず空いてる時間が5時間くらいあったので、その範囲という制限でやります。文章も進めながらだらだらと書いていったものそのままで整理していないので超読み辛いかもしれません。 お題の Gem Crystal でコピペ実装する Gem は dotenv です。 これを選択したのは、 他の Gem への依存がない そんなに大きくない コードリーディングで使われたりしてたので Ruby っぽいコードだろう 自分がま
簡単な API サーバーを作る必要があったので、Elixir の WAF である Phoenix を使ってみました。API バージョンでスコープを分けた RESTful API 構成にしようとしたのですが、なんだか結構ハマってしまったので簡単な手順を残します。 title と completed という2つのフィールドを持つ todo という単純なリソースを例とします。 アプリケーションの作成 phoenix.new タスクで新規の Phoenix アプリケーションを作成します。このとき、今回は REST API リソースを構築するので、アセットを管理するためのツールである Brunch は不要です。したがって --no-brunch オプションをつけて実行します。
はじめに これからも Volt 推しでいきます。 「Volt を試してみたいけど、例やチュートリアルが少ない」という意見をしばしば聞きます。確かに、公式ドキュメントのチュートリアルはホントに触りだけで、モデルすらほとんど出てこない内容です。 そこで、モデル側の実装やユーザー機構にも少し触れることができる「Volt を使って10分でリアルタイムチャットアプリケーションを作る」というチュートリアルを公開します。「10分」というのはとりあえず何かこういうフレーズがあった方がキャッチーかな、と思って適当に付けただけなので、本当に10分でできる保証はどこにもないですすいません。 それと、「公開します」って言っても、実はこのチュートリアルは以下のスクリーンキャストの内容をほぼそのまま作っていますので、英語で全然 OK ってことなら、そっちを見てもらった方が動画なのでわかりやすいかもしれません。 Bui
Middleman Blog を Bourbon, Neat, and Bitters で styling したテンプレートを作りましたRubySassslimmiddleman middleman-blog-bourbon-template Thoughtbot の Styling a Middleman Blog with Bourbon, Neat, and Bitters という記事を読んでみて試しに作ったものです。 公開してみたものの、ぶっちゃけ自分ではブログを書かないので、優しいどなたかが試してくれることに淡い期待を抱いております。 スクリーンショット ふぃーちゃー テンプレートエンジンは Slim middleman-syntax を使ったシンタックスハイライト (ハイライトは rouge による) Neat のグリッドシステムを使ったレスポンジブデザイン など。 インストー
Ubuntu 14.04 LTSでvenvを利用して速攻でPython3.4 + Nginx + uWSGI + FlaskなWebアプリケーション実行環境を作るPythonnginxUbuntuFlaskuwsgi Ubuntu 12.04でpyenvを利用して速攻でPython3.4 + Nginx + uWSGI + FlaskなWebアプリケーション実行環境を作る http://qiita.com/5t111111/items/e170fead91261621b054 この14.04版ではpyenv依存をやめてvenvだけを使うようにしています。 登場人物 ぼく 去年まで女子校だった私立高校に通う普通の高校生。人間が嫌い。これ以降登場しない。 Ubuntu Linuxらしいが、よく知らない。 venv Pythonの実行環境を切り替えるやつ。標準でついてくるようになったらしいが、よ
$ pyvenv-3.4 <directory> Error: Command '['<directory>/bin/python3.4', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1
先日、Ruby技術者認定試験Silver version 2.1を受験して合格してきました。 今、再受験無料キャンペーンというのをやっていますが、「そんなキャンペーンあるなら受けてみよっかなー、でもまだガイド本でてないしなー」と迷っている方もいると思います。 ぶっちゃけ、この資格取りたい人であればこのチャンスに受けた方がいいです。 ただ落ちてももちろん責任はとれません! ※勝手にRuby技術者認定試験Silver 必勝合格法の続編みたくしてます。ごめんなさい。 試験の内容 試験は50問あり、すべて選択問題です。100点満点中75点以上を取れば合格です。 試験範囲は前述のRuby技術者認定試験制度公式サイトの出題範囲の通りです。 対策 Ruby でのプログラミング経験が豊富な人 Ruby公式資格教科書 Ruby技術者認定試験 Silver/Gold対応の「第6章 添付ライブラリ」以外を読んで
[妄想] Rubyに欲しい文法 の記事を読んでいて、ここに書いてあるような動的型チェックであれば Contracts を使えばいいんじゃないのかな、と思いました。 Contracts とは Contracts という gem は、メソッドにコードコントラクトを設定する機構を追加するものです。 コードコントラクトというのは、あるコード(主にメソッド)に対して「事前条件(pre condition)」や「事後条件(post condition)」などを追加するもので、C++ や .NET Framework ではよく使われている(ような気がする)ものです。 ただ、この Contracts gem においては、もっと単純に、「メソッドの引数と戻り値がある条件を満たしているかをチェックするもの」と考えて良いと思います。そこに条件を設定できるなら、当然型チェックだって可能ですし、想定している用途とし
このように、すでに作成済みの Middleman プロジェクト内で Gemfile に middleman-blog を追加して blog テンプレートを指定して再度初期化を行うか、もしくは、以下のように blog テンプレートを Middleman と同じようにグローバルにインストールしておいて、プロジェクト作成時にそれを指定することでブログサイトの雛形を生成され、すぐに利用を開始することができます。 これで、source ディレクトリ以下に 2014-10-15-example-article.html.markdown などの記事ファイルを作成して bundle exec middleman とすると・・・ ブログが完成しました!!! Middleman を使うと、このようにすぐにブログを作成することができます! 読んでくれてありがとうございました! ・・・って、いやこの見た目じゃち
MD_EXTENSIONS = ['linkify', 'del_ins', 'fenced_code', 'codehilite(css_class=highlight)', 'tables'] おしまい。 詳しく見ていきたい人以外はここでお別れです。 単語の中のアンダースコア 普通のMarkdownは、単語の中にアンスコ(_)が複数あると悲しいことになります。 wow_great_stuff が wowgreatstuff みたいな。 これはこれでファンキーで良いと感じる人もいるかもしれませんが、普通は嫌だと思います。 なのでまずはこうならないようにします。 と思ったら、PythonのMarkdownはすでにこの機能がついてました。 何もしなくてよかった! めでたしめでたし! さようなら! URLの自動リンク こんにちは! リンクを貼るときはこうしますよね。
OgaというXML/HTMLパーサーがありました。 XML/HTMLパーサーには、標準のREXML以外にもすでにNokogiriやOxがありますが、 Rubiniusでうまく動かなかった(GVLでロックされないから?)ので、極力C拡張を使わずに作ったものだそうです。 MRIでもNokogiriのインストールは時として鬼門になったりするので、ナイスな代替があれば嬉しいかも。 機能とか特徴 XMLとHTML(5)のパース DOMパース ストリーム/プルパース SAXパース 少ないメモリ消費量 高パフォーマンス。パフォーマンスが十分に出てなければそれはバグだ。 XPath 1.0のサポート XML名前空間のサポート らしいです。 インストール いつものように。
これから来るか!? Volt (Reactive Web Application Framework for Ruby)RubyHTMLJavaScriptVoltvoltrb 追記 (2014/11/29) 最近、この記事をストックしてくれる方が増えて嬉しいのですが、 結構昔に書いたやつなので内容が微妙に古いです。 特にチュートリアルに関しては今は別物に変わっているので、 こちらの記事を参照し公式のドキュメントを見ていただければと思います。 Volt チュートリアル http://qiita.com/5t111111/items/e1c207d780b7af1aef8c はじめに 最近、VoltというRubyのReactive Webアプリケーションフレームワークについて目にすることが増えた気がします。 特徴 バックエンド、フロントエンド共にRubyでコードを記述する (フロントエンドで
先日リリースされたGLOBAL-6.3.2で、yoshizowさん作の、Pygmentsを使ったプラグインパーサーが公式に取り込まれました。 GLOBAL-6.3.2 released. つまりこれは、GLOBALがサポートしていなかった言語についても、Pygmentsの豊富な言語に対応したlexerを利用してGLOBALのタグを生成することができるということです。 そして、ctagsパーサーでは不可能だった参照タグもできる! 追記 (2014-09-16) MacでHomebrewからインストールする場合、Homebrew側に修正が入り、--with-pygments オプションが追加されました。 これを指定すると、Python 2.xが依存パッケージとなり、更に自動的にPygmentsをPypiからダウンロードしてインストールするようになっています。 したがって、Homebrewからイ
BatsはCLIで実行するUNIXプログラムのテストをするためのツールです。 Bash Automated Testing SystemでBatsとのこと。 Bats自体がbashで書かれていて、特にbashスクリプトのテストに最適なようですが、出力と終了ステータスをチェックするような単純な作りなので、CLIで動作するプログラムであれば何でもテストできるでしょう。 元々、ruby-buildのテストファイル眺めてたら拡張子が*.batsになってて、「なんだろこれ?」と思って見たら同じ作者のBatsというツールでした。 使ってみたら結構手軽で便利だったので紹介します。 簡単な例 以下の例を見れば大体どんな感じかわかると思います。 bc, dcの演算結果をチェックするためのテストですね。 #!/usr/bin/env bats @test "addition using bc" { resul
最初はほんとにとっつきにくいJavaScriptのクロージャへの理解の助けとなるように、いくつか例をあげてクロージャの説明をします。 各サンプルコードにはおまけでjsfiddleのリンクをつけてあるので、実際の実行結果を確認しつつ進めてください。 実際にクロージャを活用するために これから、プログラマーが実際のコードでクロージャを利用できるようになるための説明をします。 クロージャは今やごく一般的なプログラミングのテクニックとなっていて、プログラミングの上級者だけに許されたものでもなければ、関数型プログラマーのためだけのものでもありません。 実は、核となるコンセプトさえ理解できれば、クロージャを理解することは難しくないのです。 が、いわゆる「クロージャとは?」みたいな解説を読んだだけでは理解しづらいのが厄介です。 前提として、次のJavaScriptが理解できる人を対象としています。 fu
pm2でNode.jsをプロセスを起動すると、pm2自身はすぐに終了してしまう。 なのでDockerのCMDでpm2を開始してもコンテナは停止してしまう。 こまったーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー。 全然困らなかった。 pm2に --no-daemon というオプションが追加されていたので、それでOKでした。 Dockerfileやら何やら Dockerfile FROM node WORKDIR /nodeapp ADD package.json /nodeapp/ ADD index.js /nodeapp/ RUN npm install EXPOSE 1337 CMD ["node_modules/pm2/bin/pm2", "--no-daemon", "start", "index.js"] { "name": "d
関数は型を持つ 関数が型を持つ? 関数型ってやつ? 関数型言語ってやつ? そうなの? よくわかりませんが、型を持つらしいです。 後で書きますが、Swiftでは関数がファーストクラスであり、 それはつまり、関数の引数や戻り値に 関数そのもの を指定できるということです。 Swiftは静的型付け言語です。 関数の引数や戻り値に関数を指定できるのであれば、 静的型付け言語では当然それは型を持つ必要がある。 関数が型を持てばこそ、静的型付け言語でも関数がファーストクラスとして振る舞える。 まあこれはなんか論理的に納得できるような気がします。 関数の型って何すか? 関数の型は、その引数と戻り値によって決まります。 例えば以下の関数があったとき、その型は (Int, Int) -> Int と示すことができます。
コードブロックは今までテキトーにshとかnoneとかしてて、ちょっとハイライトが変でも気にしてなかったんですが、あまりにも見た目が酷いときとかもあったんで、ホントにめんどくさがりなのでホントにめんどくさいんですが、いい加減ちゃんと確認しとこうかと思いました。ああめんどくさい。もっと楽して暮らしたい。お金がいっぱいほしい。 コンソール(シェル)のために指定するやつ たぶんこの用途で指定する言語は主に3つデス。 そのまま見た目を載せておくのが一番わかりやすいかと思うので、そうすることにします。 sh (bash, ksh) ・・・ シェルスクリプト console ・・・ 単発のコマンド、ワンライナー shell-session ・・・ 出力も含めセッションをそのまま書きたいとき と使い分けるのが綺麗なのかな。 てか、Qiitaの、というよりはハイライトに使われてるPygmentsライブラリの
次のページ
このページを最初にブックマークしてみませんか?
『@5t111111のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く