Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
高速にGo言語のCLIツールをつくるcli-initというツールをつくった tcnkms/cli-init・GitHub cli-initを使えば,Go言語コマンドラインツール作成時のお決まりパターンをテンプレートとして自動生成し,コア機能の記述に集中することができる. デモ 以下は簡単な動作例. 上のデモでは,addとlist,deleteというサブコマンドをもつtodoアプリケーションを生成している.生成結果は,tcnksm/sample-cli-initにある. 背景 Go言語で作られたコマンドラインツールを見ていると,codegangsta/cliというパッケージがよく使われている. これは,コマンドラインツールのインターフェースを定義するためのライブラリで,これを使えば,サブコマンドをもつコマンドラインツールを簡単につくることができる(Usageを自動で生成してくれたり,bash
Building Command Line Tools in Node with LiftoffPosted by Tyler Kellen One of my favorite things about programming in node is the package management system. In almost all instances, the practice of locally installing modules for each project has simplified my life as a developer. However, as a long time contributor to Grunt, I have become intimately familiar with one edge case where this practice
僕はコマンドラインで使うシェルスクリプトを書くことがけっこうあるんだけど、インターフェイスというか呼び出し方はとても大事だと思ってるので、そこにわりと時間をかけて考えるようにしてる。実装はいつでも変更できるけど呼び出し方を変えた時は利用者にも変更を強いるので、できれば最初から良い設計で作りたいと思っている。 そこで、僕がシェルスクリプトのオプションとか引数とかの仕様を決める上で注意していることをまとめてみた。シェルスクリプトや、その他コマンドラインのツールを作るときに参考にしてほしい。 シェルの種類は bash や zsh を想定してるけど、実装によらない話なのでどんなシェルでも使えると思う。 エラーの時に Usage (使い方ヘルプメッセージ)を表示するのはやめる エラーになった時に Usage (使い方ヘルプメッセージ) を表示するスクリプトがあるけど、やめたほうがいいと思う。例えばこ
こんにちわ。日々の作業の80%がターミナルで完結する原です。 最近、他チームに向けてCLI(コマンドライン・インタフェース)ツールを作成する機会がありました。 ツール動作環境がOS Xである点、モジュールのインストールが簡単である点、内部DSLの実装が比較的用意である点などを考慮し、Pythonで実装・配布しました。 また、自分自身も、普段の開発で行うような定形作業をPythonでスクリプト化することで、効率化しています。 シェルスクリプトでは実装が面倒くさいような外部サービスとの連携も、Pythonであればサードパーティのモジュールや例がたくさんあるため、実装が容易です。 当エントリでは、このように色々なシーンで活用できるPython製CLIツールの実装および配布方法をご紹介します。 サンプルとして「wonder_tool」という名前のCLIツールを作ってみましょう。 サンプルの仕様 こ
I noticed that Eric Wendelin wrote an article "awk is a beautiful tool." In this article he said that it was best to introduce Awk with practical examples. I totally agree with Eric. When I was learning Awk, I first went through Awk - A Tutorial and Introduction by Bruce Barnett, which was full of examples to try out; then I created an Awk cheat sheet to have the language reference in front of me;
linux のコマンドラインから、wi-fi の情報をつかって位置情報を得る 表題の件につきまして、解説します。 firefox などの web browser は geo location API を提供していますが、この位置情報のデータをコマンドラインからとる方法というのが、すんなりとした方法で提供されているものがちょっとみあたりませんでした。 これができると、自分の note pc の中で cron をうごかしておいて、何時から何時までのあいだにどこにいたかを記録するとかできておもしろそう。ライフログ!!! というわけでやってみようとおもったのだが、存外情報がすくなくてこまった。 結論からもうしますと、iwlist コマンドをつかうと wi-fi のアクセスポイントを scan してくれるので、この出力をつかいましょう。 iwlist wlan0 scan とかうつといいですね。 で
linux のコマンドラインから、wi-fi の情報をつかって位置情報を得る - tokuhirom's blog. を見て、面白そうだと思ったのでそのMac版。MacでコマンドラインからWiFiスポットをスキャンするのは、 /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -s でいけます。ってことで、 use strict; use warnings; use utf8; use 5.012; use JSON; use LWP::UserAgent; my @addresses = do { my @lines = split /\n/, qx{/System/Library/PrivateFrameworks/Apple80211.framework/Version
今回から、OS付属のシェルスクリプトを読んでいく。多くの人が使っているスクリプトを読むことで、シェルスクリプトならではの書き方、テクニックを身に付けることができるはずだ(編集部) 他人の技術を盗まなければ進歩はない 外国語をマスターするにも、楽器の演奏を覚えるにも、上達するにはただ練習するだけではダメだ。素晴らしいお手本を見つけて、よく観察し、何度もまねることが必要だ。お手本から技術を「盗む」ことが大切だということだ。 プログラミングでも同じことが言えると思う。文法を覚えて、ただひたすらプログラムを書くだけではなかなか上手にならない。スキルのある人のコードを見て、技術を盗もう。開発チームのメンバーそれぞれが書いたコードを持ち寄って、お互いに批評し合う「コードレビュー」に参加している、あるいはリーダーとして主催しているという人は多いと思う。このコードレビューも、人から技術を盗む良い機会と言え
Writing Ruby Scripts That Respect Pipelines Published on December 12, 2011 by Jesse Storimer Pipes are the most powerful concept on the command line. With pipes you can string together small, simple commands into bigger, more useful pipelines. This is the secret sauce that goes along with the Unix philosophy of "Do one thing, and do it well". Take this as an example: # Look for any lines mentionin
1行プログラミング awk でデータの単純なフォーマット変換することを目的としています。 まず、次のようなデータ(/tmp/a とします)に対して、処理を行うことを考えます。 1 2 3 4 -5 6 7 8 0 9 10 113 入力行の総数を印字する 入力行の総数を出力します(他の方法 cat /tmp/a | wc)。 cat /tmp/a | awk 'END {print NR }' 実行結果 3 N行目の入力行を印字する 3行目の入力行を出力します(他の方法 cat /tmp/a | head -3 | tail -1)。 cat /tmp/a | awk 'NR==3' 実行結果 9 10 113 N個より多い欄を持つすべての入力行を印字する 1 行に3 個以上のデータが記述されている行をすべて出力する。 % cat /tmp/a | awk 'NF > 3 {print}'
UNIXの基本的なコマンドの1つであるdiff。 これに実装されているアルゴリズムは実に興味深い世界が広がっています。 本稿では、筆者が開発した独自ライブラリ「dtl」をもとに「diffのしくみ」を解説します。 はじめに diffは2つのファイルやディレクトリの差分を取るのに使用するプログラムです。 ソフトウェア開発を行っている方であれば、SubversionやGitなどのバージョン管理システムを通して利用していることが多いかと思います。本稿ではそのdiffの動作原理について解説します。 差分の計算の際に重要な3つの要素 差分を計算するというのは次の3つを計算することに帰結します。 編集距離 2つの要素列の違いを数値化したもの LCS(Longest Common Subsequence) 2つの要素列の最長共通部分列 SES(Shortest Edit Script) ある要素列を別の要
Javascript で diff というのはいくつか試された例はあるようですが、まだこれといった決定打は出ていない様子です。 実は diff は見た目ほど軽い処理ではないので、Javascript にやらせるのはこれが結構大変…… diff の計算量は、おおざっぱに言うと比較対象の要素数の二乗に比例し(実際にはそれより小さくすることができるのですが、まあ話のイメージとして)、かつメモリを大量に消費するので、バッチ的な処理に最適化されていない Javascript にはどうしても荷が重いものとなってしまいます。 比較対象の要素数を減らせば当然計算量は減りますが、行単位で比較してもあまり嬉しくない(わざわざ Javascript で処理するということは自然文が対象と思って良いでしょう)。最小の文字単位だとギブアップ。 ということは形態素解析で分かち書きして、単語単位で diff するのが J
前回は、RVMのインストール、RVMで Rubyをインストールして使う方法を紹介しました。今回は、以下の3つを紹介していきます。 RVMを最新版にアップデートする RVMを使って複数のバージョンのRubyでスクリプトを実行する GemSetsについて RVMを最新版にアップデートする RVMは、Bugfixや機能追加が毎日行なわれている活発なプロジェクトです。開発者の方は、なるべく最新のバージョンを使うことを推奨しています。ここでは、RVMを最新版にする方法をみてみましょう。 "rvm update --head"を使用すると開発リポジトリであるhttp://github.com/wayneeseguin/rvmから最新版を取得します。githubから取得するため、環境にgitがインストールされている必要があります。 % rvm update --head アップデートされたRVMを使うた
iPhone SimulatorはMac OSX用のオープンソース・ソフトウェア。iPhoneアプリを開発する場合、現状ではMac OSXを使うのが一般的だ。そしてその開発環境としてXCodeを利用する。だがこのXCodeが重たく感じている方もいるはずだ。 エラーの取得もできる XCodeを使わずにアプリケーションを指定してiPhoneシミュレータを立ち上げられるのがiPhone Simulatorだ(名前が紛らわしいが)。iPhone Simulatorはターミナルから呼び出せるのでユニットテストのような自動化したテストを行うのに便利そうだ。 iPhone SimulatorはiPhoneアプリとしてコンパイルされたアプリケーションファイルを指定して実行するとiPhoneシミュレータが立ち上がるようになっている。シミュレータ上でのログやデバッグメッセージはコンソールに流れるので分かりやす
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く