タグ

progとunixに関するNeanのブックマーク (10)

  • コマンドラインツールを作るときに参考にしている資料 | SOTA

    コマンドラインツールについて語るときに僕の語ること - YAPC::Asia Tokyo 2014 コマンドラインツールが好きで昔からつくってきた. 今年のYAPCで,そのコマンドラインツールをつくるときにどういうことを意識して作っているのか?どのような流れで開発しているのか?といったことを語る機会をもらえた. 具体的な内容については,是非トークを聴きに来てもらうとして, スライドをつくるにあったって過去に読んだ資料や,よく参考にしている記事を集め直したので,その一部を参考資料としてまとめておく. UNIXという考え方 UNIXという考え方 Mike GancarzによるUNIXの思想や哲学をまとめた.古いが全然色あせてない. コマンドラインツールの作り方を書いたではないが,これらの思想の上で動くツールはこの思想に準拠して作られるべきだと思う.何度も読んで考え方を染み付かせた. 小さい

  • 黒い画面の魔法(UNIX のコマンド)をアドベンチャーゲーム形式で学べる Terminal Quest が楽しい - 僕は発展途上技術者

    1993年、大学の学部の電算機室に行けば Sun か NeXT のワークステーションがいつでも使えるという日でこれ以上ないんじゃないかという恵まれた環境にいながら、僕はプログラミングはもとよりコンピューターにはほとんど興味がなく、UNIX の授業でなんだか cd とか ls とか微かに教わった気がするのだが「なんじゃ、こりゃ、わけがわからんしつまらんなあ」という感じだった。タイムマシンがあったら、20数年前の自分を説教したい。 そんな時代にこの Terminal Quest と出会っていたら僕の人生変わっていたかもしれない。。俗に黒い画面と呼ばれるターミナルで入力するコマンド(UNIXコマンド)をアドベンチャーゲーム形式で楽しく学べるゲームだ。 ↑ こんな感じでストーリーが進んでいき、 ↑ まわりを見回すには ls とか、何かものを調べるときは cat といった実際の UNIX のコマン

    Nean
    Nean 2016/02/24
    ちょっとほしいかも。
  • シェルスクリプトはエレガントでなければならない

    /bin/shの実体としてはash(dash)、bash、kshの採用例が多い。どのシェルもBourne shellの機能に加えて、拡張機能を提供する。 FreeBSDなどの*BSD系のOSは、ashを/bin/shとして使っている。ashはPOSIX.1(POSIX:2008)にいくらかのBSD拡張機能を取り込んだシェルだ。メモリをあまり消費せず、高速に動作し、ほかのライブラリに依存することが少ない。従って、rootやレスキューシステムのインタラクティブシェル、システムのシェルスクリプトといった場面で採用されている。 Mac OS Xはbashを/bin/shに採用している。FedoraやopenSUSEなどのLinuxディストリビューションもbashを/bin/shに採用している。LinuxディストリビューションでもUbuntuやDebian、Linux Mintなどは、高速に動作する

    シェルスクリプトはエレガントでなければならない
  • https://jp.techcrunch.com/2011/10/18/20111015what-can-we-learn-from-dennis-ritchie/

    https://jp.techcrunch.com/2011/10/18/20111015what-can-we-learn-from-dennis-ritchie/
    Nean
    Nean 2011/10/20
  • 訃報: C 言語の開発者、デニス・リッチー氏が死去 | スラド デベロッパー

    Google+ で Rob Pike 氏が語ったところによると、C 言語の開発者、K&R の R であるところの Dennis Ritchie 博士が亡くなられた。70 歳 (Rob Pike 氏による Google+ への投稿) 。 長らく闘病中だったとのことで、先週末に自宅で息を引き取ったそうだ。

    Nean
    Nean 2011/10/13
    printf("hello, heaven!\n");
  • Git管理の神ツール「Gitolite」なら、ここまでできる!

    「Git」使ってますか? 近年、分散バージョン管理システム「Git」が急速にシェアを伸ばしています。筆者は、チケットシステムやバージョン管理の勉強会などを開催したりしていますが、Gitユーザーがかなり増えてきていると感じます。 しかしながら、そのような勉強会でアンケートを取ってみると、実案件では半分以上の人がSubversionを利用しており、Gitの導入はまだまだ進んでいません。移行コストが掛かったり、プロジェクトマネージャ層への知名度がまだまだ低いというのもありますが、理由の1つとして、ユーザー管理が煩雑であったり、アクセス制御に関する情報が不足しているということもあると思います。 そういうわけで稿では、Gitリポジトリのユーザー管理やアクセス制御を簡単に行う「Gitolite」を紹介します。 なお、稿ではGitの利用方法については紹介しませんので、Git自身の使い方については改め

    Git管理の神ツール「Gitolite」なら、ここまでできる!
  • ウノウラボ Unoh Labs: シェルの仕組み(前編)

    尾藤正人(a.k.a BTO)です 社内勉強会でシェルの仕組みというのをやってみましたので、資料を公開します。 シェルはUNIXを使う上で、必ず使用される非常に身近なツールです。 毎日使用しているツールにも関わらず、具体的にどのような動作をしているのか知らない方も多いのではないのでしょうか。 シェルの使い方に関する情報はたくさんありますが、シェルの実装についての情報はほとんどないなと思ってシェルを題材に取り上げました。 シェルにはUNIXプログラミングのエッセンスがぎっしりつまっています。 シェルの内部の仕組みが分かるようになると、UNIXプログラミングが分かるようになると言っても過言ではないのかもしれません。 シェルの仕組み(前編) - Upload a Document to Scribd 社内勉強会中にustreamで動画を流していたのですが、動画を保存するのを忘れてしまいました。

  • ウノウラボ Unoh Labs: シェルスクリプトでプログラミング

    パワプロよりパワポケが好きなbokkoです。でも最近はPSPで遊んでいます。 今回はシェルスクリプトやコマンドラインでよく使うプログラムとその使用例の紹介です。 シェルスクリプトでは既にあるコマンドを組み合わせてプログラムを書きます。しかし、シェルスクリプトは分岐や繰り返しといった制御構造を持ち、関数や変数を扱ったり、四則演算を行うこともできます。 演算 シェルスクリプトで演算を行うにはexprを使います。 add.sh #!/bin/sh A=1 B=2 C=`expr ${A} + ${B}` echo ${C} ↑のadd.shを実行すると、 $ sh test.sh 3 $ と表示されます。↓のようにexprの引数をスペースで区切らず渡してしまうと、単に1+2と表示されてしまいますので、注意しましょう。 #!/bin/sh A=1 B=2 C=`expr ${A}+${B}` ec

  • システムコール概論

    プロセス プロセスについて考える プロセスの選択的なkillコマンド・zap システムコール 低レベル入出力 ファイル指定子 readとwrite 標準入出力と低レベル入出力 標準入出力と低レベル入出力---読みと書き 眠るシステムコール sleep 標準入出力以外のファイルのオープンとクローズ ファイルの作成とオープン ファイルを作成する。 creat システムコール ファイルのオープン---単純な形式 creat と open を使ったcopyのプログラム ファイルのオープン・オプションフラグ 前回のmycpの問題 オプションフラグでのファイルのオープン --- 様々なオープン mycp2 --- オーバーライトチェックの試作品 mycp3 --- UNIXの精神に反する親切なコピーツール オプションフラグの別の利用の仕方 C言語の復習 関数 function 制御 If-Else w

    Nean
    Nean 2008/02/18
  • inetd の仕組みを見てみる - naoyaのはてなダイアリー

    inetd や xinetd (以下 inetd) はインターネットサービスをデーモン化するのに共通している処理を担い、ほとんどの時間をアイドル状態で過ごすその手のサービスに必要なリソースを節約する役割を果たします。 inetd のひとつ面白いところは、inetd でサービス化したいプログラムの標準入力/標準出力がクライアントソケットの入出力に接続されるところです。例えば daytime 相当のサービスを自分で作ろうと思った場合 #!/usr/local/bin/perl # daytime.pl use strict; use warnings; use DateTime; use IO::Handle; STDOUT->autoflush(1); STDOUT->printf( "%s\n", DateTime->now(time_zone => 'Asia/Tokyo') ); と標

    inetd の仕組みを見てみる - naoyaのはてなダイアリー
  • 1