タグ

2014年6月7日のブックマーク (33件)

  • シェルスクリプトは文字通りの逐次実行 - シリコンの谷のゾンビ

    知り合いに気になったことを指摘された. 「シェルスクリプトは実行中にスクリプトを変更すると,変更されたスクリプト通りに動く」というものである. んなことあるかい,スクリプトは実行時にメモリに読み込まれるんでい!と思い込んでいたので,早速調べてみた. 同時作業をするので複数端末を立ち上げるか,screenを使うか,emacsのshellモードを使う. 以下のようなスクリプトを書く. # test.sh echo "start" sleep 5 echo "1" sleep 5 echo "2" sleep 5 echo "3" sleep 5 echo "4" echo "done" 実行する. % sh test.sh startすかさず上記コードの最後の行をコメントアウト # test.sh echo "start" sleep 5 echo "1" sleep 5 echo "2" s

    シェルスクリプトは文字通りの逐次実行 - シリコンの谷のゾンビ
  • 使いやすいライブラリAPIデザイン(pdf)

  • gitだからこそできるチケット駆動開発のやり方 - kunitの日記

    ここ数ヶ月の成果。やっぱり中心にはgitがある。 チケット駆動開発の良さはわかっていたが、なかなかうまくいかないなぁと思っていたが、gitをちゃんと使うようになってそれができるようになってきた。 チケット駆動開発を実践するにはまずはチケットをきらないといけない。けど、それができない。やっぱりいきなり手をつけちゃうんだよね。それってなんでそうなっちゃんだろうと常々思っていた。 それをある意味抑制するやり方。今やっている方法は、作業するなら作業用のブランチを切れ!それにはチケット番号を付けろ!という方式にしている。 たとえば会員管理の機能に追加したい場合は以下のような手順になる。 会員管理を拡張したいなぁ じゃRedmineでチケットを切るぞ チケット番号が振られた(たとえば #567 だとする) さぁ、ブランチ切るか(members_567) そのブランチで作業開始! 濱野さんがWEB+DB

    gitだからこそできるチケット駆動開発のやり方 - kunitの日記
  • TDDを理解するためのまとめ - Logic Dice

    わんくま同盟名古屋勉強会#9に置いて、biacさんのTDDに関する話が出たので、少し自分がTDDについて思うことを纏めてみました。 TDDが説明されるのを聞く度、見る度、多分説明している人は分かっているのだろうけれど、それが他の人に当に伝わっているのかが怪しいと思ったためです。 というのも、自分が(多分)理解するまでに、酷い回り道をしたもので。 また、biacさんのTDDに関するWebサイトはこちら。 TDD.NET - http://www.tdd-net.jp/ 以下、長文注意。 背景 まず、自分がTDD(より正確に記述するなら、「テストファースト*1」が正しく、TDDではない)をまともに実践しようと思って始めたのが、大学の4年時の最初なので、今から18ヶ月程度前です。 とある研究室のプロジェクトで使いたいという話になり、そこで実践を行いました。当時の環境はJDK + JUnit

    TDDを理解するためのまとめ - Logic Dice
  • 高速アルゴリズムが生んだゼビウスもどき - シューティングゲーム探究記

    ゼビウス周りの加筆部分です。「アルフォス」は厳密に言えばゼビウスの「移植」ではありませんが、後にPC-8801のゲームに影響を与えるプログラムテクニックを考案して作成されたという点が重要だと思います。 とにかく、アルフォスは「人気があった」と紹介されている割には文献などへの露出が少ないゲームという印象を受けます。今回公開できるのはこれだけの分量しかありませんが、それでも文献蒐集には数ヶ月掛ってしまいました。オセロや将棋のプログラムで名を馳せているせいか、どうしてもその方面ばかりが紹介されています。 日におけるマイコンブームは高度なテクニックを持ったプログラマを多く産み出しました。前述の中村光一や堀井裕二がスポットライトを浴びることになった第1回ゲーム・ホビー・プログラムコンテスト。このコンテストへ「森田のバトルフィールド」を出品し、見事グランプリを獲得した森田和郎もそんな一人でした。森田

    高速アルゴリズムが生んだゼビウスもどき - シューティングゲーム探究記
  • 国際プログラミングコンテスト、1位優勝は14歳 | スラド

    15日まで開かれていた国際情報オリンピックで、ベラルーシの14歳の少年が金メダルを受賞したそうだ(家/.記事)。 国際情報オリンピック(IOI)は高校生を主体とした、数理情報科学の問題解決能力に長けた人々たちがプログラミングを競う大会である。大会は毎年開かれ、今年は第21回大会がブルガリアのプロブディフで開催されていた。大会の難易度は非常に高く、学校によっては授業を数カ月休ませてオリンピック対策をしているところもあるという。今回14歳で金メダルを受賞したHenadzi Karatkevich君は11歳から大会に参加しており、初年度には銀メダル、12歳と13歳には既に金メダル受賞者となっていた。Karatkevich君は今大会最高得点で金メダルを獲得し、最年少1位優勝の記録を打ち破ったという。IOIのインタビューにKaratkevich君は「僕は天才じゃない、ただ上手いだけなんだ」と答えて

  • RESTfulな設計とCRUDはちょっと相性悪いという話 - yojikのlog

    http://www.infoq.com/jp/news/2009/08/CRUDREST 上記URLを読んで自分なりに例題を考えてみる。(todo:あとで状態遷移図を追加) RestBucks cafe 完全にオンライン化されていてWebAPIで注文できるというすごいカフェを想定します。(この手の例にStarbucksを使うのはGregor Hopeさん以来の伝統らしいです) 客側から見たユースケースはこんな感じ 客はレジのサービスを呼び出して、注文を入力して支払い 自席で注文状況をチェック、出来上がっていたら取りに行く。 注文というエンティティと、[注文編集] [支払い] [受け取り] という(アプリケーション)状態によって上手く表現できそうです。 (RESTfulだけど)CRUDな設計 CURDな設計では、リソースをURLにマッピングします。それに対してCRUDするというイメージです

    RESTfulな設計とCRUDはちょっと相性悪いという話 - yojikのlog
  • 優秀なプログラマにたまに起こる逆行(退行)現象

    あれは私がまだ大学助手をしていたころだから3年ほど前のことだと思う。 私の勤めていた大学(情報系)では「プログラミング研究会」みたいなサークル活動が行われていて プログラミングの講義を受け持っていた私はそのサークルにちょくちょく顔を見せるようになっていた。 そこにはとびっきりかわいい女子学生が一人いたのだけれど、その子はゲームが大好きで 「自分でもゲームが作りたい」と一念発起してゲームコンテストに作品を出品することになった。 しかし、彼女はプログラミングの講義(Java)を1年くらい受けているものの、 格的なモノを作った経験がなく、ひとりでは行き詰まりをみせているようだった。 彼女はひとりでいることが多く、パソコンに向かって黙々とプログラムを書いているのをよく見かけた。 それを気にかけていた私はたまに彼女をランチに誘うようになり、彼女の方もしだいに私に打ち解けてきた。 私たちはだんだんと

    優秀なプログラマにたまに起こる逆行(退行)現象
  • TDDでのスクラッチコーディング - 千里霧中

    非オブジェクト指向言語でのTDDの問題 テスト駆動開発ではコードが部分最適を取り全体最適にしずらい、なんて指摘は、例えばここのように時々言及されています。そうした背景からテスト駆動開発では、スマートな実装を進めるために、ある程度アウトサイドイン開発の視点が必要だと一部で言われています。 アウトサイドイン開発とは、簡単に説明すると、Mockやスタブ等を使って、上位レイヤ(呼び出し元の関数・クラス)から、下位レイヤ(呼び出し先の関数・クラス)へ、開発を進めていく方法を指します。そうした方法を取ると、「どういう使われ方をするか」「どのような機能を要求されているか」というイメージを明快にした状態で下位のクラスやメソッドを実装できるため、全体的な視点で見て冗長な機能・設計の実装を削減することができます。決定的な改善策ではありませんが、部分最適の問題の改善を促進できる方法の1つと言ってよいでしょう。

    TDDでのスクラッチコーディング - 千里霧中
  • 浪漫の求道者:GoogleTestがかなりいけてる その2

    GoogleTest Assertions まとめ】 ↓のWikiから、Assertionを和約(適当)してまとめてみる。 http://code.google.com/p/googletest/wiki/GoogleTestPrimer http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide 注)勢いで書いたので、自分に都合の良い所だけ抽出、意訳しています。 あと、実はバージョン1.2.0の時に訳したもののコピペです。 基 Fatal assertionNonfatal assertionVerifiesASSERT_TRUE(condition);EXPECT_TRUE(condition);condition is trueASSERT_FALSE(condition);EXPECT_FALSE(condi

  • テストを書くときはコストベネフィットを考えろ - ひがやすを blog

    InfoQにKent Beckの最新の提案がでてますね。Kent Beck氏、ごく短期のプロジェクトではテストを省略することを提案 でも、これは、Kent Beckが「ごく短期のプロジェクトではテストを省略しても良い」といってるわけではないと思うんですよ。キャッチーなタイトルをたまたまつけられてしまっただけで。 重要なポイントはここだと思います。 Maxを開発しているとき、テストを書くか否かという質問は、要するに、そのテストが単位時間当たりにより多くの有効な実験をするのに役立つかどうかでした。もし役に立つのであれば、私はテストを書きます。そうでなければ、不要だと判断します。私はMaxの収入を軌道に乗せるためのチャンスを最大化しようとしているのです。 つまり、「テストがかけた時間の割りに役に立つと思ったら書くし、そうでなければ書かない」ということだと思います。別に短期のプロジェクトでも、コス

    テストを書くときはコストベネフィットを考えろ - ひがやすを blog
  • TDD、TDDと言うけれども。TDDのダークサイドについてそろそろ一言語ってみる。 - Fly me to the Luna

    id:t-wadaさんの話の中で、TDDが品質を保証するわけではない、という話があったんですが、それについて私見をつらつらと。ちなみに自分は2年くらい仕事でTDDをやってきました。 やってきた中で下記のTDDの利点を感じることができました。 その時に気づいた最もシンプルなコード、クリーンなコードができる テストコードからコードを書く、と言うのはプロダクトコードの利用方法が考えられるのでとても有効に作用します。id:t-wadaさんもリファクタリングが一番重要と話されていましたが、テストコードがあれば安心してリファクタリングができます。 より高い品質のコードが書けるようになる これはt-wadaさんの話の中でもありましたね。なぜかと言うと、プロダクトコードが実行される時の前提条件を知ろうとすると、結構いろいろなコードに目を通すことになります。コードに目を通すことで優れた先人の知恵を見つけるこ

    TDD、TDDと言うけれども。TDDのダークサイドについてそろそろ一言語ってみる。 - Fly me to the Luna
  • vmstatの見方と考え方: ぴろにっき

    なにもここで説明しなくてもvmstatの説明なんてそこらじゅうにある訳ですが、同じコマンドでもカーネルのバージョンとかディストリビューションとかで結構違ってくるので、ここではCentOS5.2でのvmstatについて記載しておくことに。 vmstatを実行すると… [root@chihiro ~]# vmstat 5 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 136 10836 3744 1940256 0 0 174 2050 128 96 1 6 74 19 0 0 0 136 10456 3720 1940424 0 0 0 6731 606

    vmstatの見方と考え方: ぴろにっき
  • Java開発者の読むDjangoの設計思想 - やさしいデスマーチ

    Djangoのサイトには「Djangoの設計思想」というドキュメントがあります。どんなフレームワークでもそうですが、設計思想を理解し、その流れをつかむ事で正しい利用への最短ルートです。もし、自分の思想にあわないならば問題です。可能であれば、そのフレームワークの検討を取り止めるべきでしょう。それが出来ないならば利用している時にはそのフレームワークの思想で思考することが求められます。 Djangoの設計思想は、緩く結合し、必要最低限のコードで、だが隠蔽せずに明示するという事です。DjangoではMVT(モデル/ビュー/テンプレート)と呼ばれるMVCに近い構造をとります。それらの3つのレイヤーはお互いに疎な関係を持ち、モデルとテンプレートはデフォルトの実装以外を容易に採用できるようになっています。また、ほどよく規約を適用し必要なコード量は少なくなっていまが、なんでもかんでも裏側で処理せずに、なに

    Java開発者の読むDjangoの設計思想 - やさしいデスマーチ
  • https://blog.8-p.info/2009/05/code-smell

  • Shibu's Diary: きれいなソースコードを書けるようになるためには

    渋日記@shibu.jp 渋川よしきの日記です。ソフトウェア開発とか、ライフハックを中心に記事を書いていきます。 by chazmatazz 「構造のきれいなプログラムを書けるようになるためにはどうすればいいのか?」という質問を受けたので、「はて?どうしているだろうか?」と考えてみました。あ、形式知にきちんとなっているようなテクニックみたいなもんじゃなくて、モノローグなので、あまり凝ったものは期待しないように。あ、Pythonに限定してますが、他の言語でも似たようなものはあると思いますので、脳内変換をお願いします。 事前の設計はしません 「こういう処理が必要」「こういう計算しなきゃね」みたいなロジックや「要件はこうかな?」ということは事前に考えたりするけど、クラス構造とかは基的に考えないで手をつけます。そして、ある程度規模が大きくなって「あ、ちょっとこの関数大きすぎて理解しにくいなぁ」と

  • 進化を諦めた保守などありえない - GoTheDistance

    さんが刺激的なエントリを書いていらした。 場当たり的な対応で工数が少なくてすみ、影響範囲も少ないが、コードは汚くなるという案と 影響範囲が広いし工数も掛かりそうだが、コードは綺麗になるという案があるとき、 僕は、よほどの差でない限り、コードが綺麗になるほうを選ぶ。 安全策が後手後手を生む - 山大@クロノスの日記 場当たりなので手間はかからないけどコードが汚染される 挑戦的なので手間もお金もかかるけどコードが綺麗になる それ自体は「よくある」葛藤だと思います。 山さんはよほどの差で無い限り後者を選ぶとおっしゃられており、僕は極めて英断だと思っています。そのような「英断」を支持してもらうためにはどうすべきか、という視点で続きを書いていきます。 コードが汚染されてしまうと、システムが技術的負債を抱えることにつながります。とても可視化しにくいコストなのですが、「ちょっと何かを変更するだけ

    進化を諦めた保守などありえない - GoTheDistance
  • Webstemmerによるブログの本文抽出 - FutureInsight.info

    Pythonで記載されたレイアウト+diffベースで文抽出を行うWebstemmerを用いてブログの文抽出にチャレンジしました。いつも通り技術エントリーは非常に長いので、興味のある人だけ続きをごらん下さい。 検索エンジンのフロントエンド部分の実装の目処がたったので、次はクローラ、インデクサの実装です。PythonにはTwistedという極めて優秀な非同期Webアプリケーションフレームワークがあるので、クローラを記載することは全く難しくありません。この辺りはPythonクックブックの14章ウェブプログラミングを参照して下さい。Python クックブック 第2版鴨澤 眞夫 當山 仁健 吉田 聡 おすすめ平均 リファレンスとセットで 2.5以降対応版の第3版を Amazonで詳しく見る by G-Toolsさて、クローラ部分の目処は立ったとして、問題はインデクサです。Luxを検索エンジンに使

    Webstemmerによるブログの本文抽出 - FutureInsight.info
  • プロセス間通信の比較 - ka2yanの日記

    デバイスドライバによるプロセス間通信 - ka2yanの日記のデバイスドライバは、既存のプロセス間通信と比べて当に早いのか、を測定した。 調べること 100バイト程度のメッセージ(画像データ等の大容量データを対象にしているのではない)をやりとりするプロセス間通信で一番早いのは何か? 測定するプロセス間通信は、前回の日記に書いたデバイスドライバ(共有メモリ方式)とデバイスドライバ(メッセージRead/Write)、そして、メッセージキュー(POSIX)、UNIXドメインソケット、名前付パイプ(FIFO)の5種類。 メッセージキュー(System V)は、fd として扱えないので、測定しない。 測定プログラムの概要 −2プロセス間で128バイトのメッセージを送受信を繰り返すプログラム −2プロセスは、NON_BLOCKING でメッセージをread/write −read/writeする前に

    プロセス間通信の比較 - ka2yanの日記
  • ハル研究所 プログラミングコンテスト2008で一位になった - Programming Magic

    最近、サイトの更新をサボっていたのだが、実は「ハル研究所 プログラミングコンテスト2008」に「xnights」という名前で参加していた。参加前にコンテストの宣伝と参加の宣言でもしようかとも思ったが、上位に名前が載らなかったりすると恥ずかしいかと思ってこっそり参加してた。 で、その結果、運良く一位になれた。 そのソースコードとか解説に関しては、プロコンの結果発表ページに載ってるので、ココでは来年(プロコン2009)に参加する人向けにアドバイスでも書いておこうと思う。 続きを読む

  • syslog に書き込んでみる - すがブロ

    syslog 経由でログを出力 ターミナルから書き込むには logger コマンドを使うと書き込む事が出来る。 logger -t sample hoge こんな風にすると、 Mar 10 01:52:56 siegfried sample[761]: hoge こんな風に出力される。 -t xxx の部分がプロセス名が出力される部分になる。ちなみに、Mac で実行しているので、Linux 等では出力形式が異なるかもしれない。 C言語では? syslog を使う。基的にはオープンして、書き込んで、閉じる。 Pinkdragon.netここを参考に作ってみた。 無駄にラッピングしてしまった。ただ、こーしておけば汎用的に使えるかなーと。・・・とか考えて作ったのだけど、 syslog の使い方自体が非常に簡単なので、あまり役に立たないかもしれない。 #include <stdio.h> #in

    syslog に書き込んでみる - すがブロ
  • デバッグ手順(スタックトレース重要) - jfluteの日記

    よくある会話 こないだ久しぶりにある方とお会いして、色々情報交換したのですが、「StackTraceをみないでデバッグし始めてしまう人」はだいぶ少なくなってきたように思っているのですが、まだまだ結構こういうことがあるようです。 X「例外がでてるのですが一時間かけても原因がわからなくて...」 Y「お、じゃあStackTraceは見た?」 X「いやみてないです」 Y「ちょっと見せてみて」 X「これです」 Y「(StackTrace見てすぐに)ああもう原因わかった」 X「...」 Y「...」 ポイントは二つ 大きく二つのポイントがあると考えました。 A. 例外発生時のデバッグ作業が手順化されてない B. スタックトレースの見方がわからない A. 例外発生時のデバッグ作業が手順化されてない 例外が発生したら、まず何をするべきか!? A-1. 例外クラス名・例外メッセージを読む A-2. スタッ

    デバッグ手順(スタックトレース重要) - jfluteの日記
  • http://nicosia.is.s.u-tokyo.ac.jp/pub/essay/hagiya/7bits/genron

  • http://nicosia.is.s.u-tokyo.ac.jp/pub/essay/hagiya/h/sunos

  • コンピュータ・サイエンスの天才

  • はてなブログ | 無料ブログを作成しよう

    粗大ゴミに車輪を付けて捨てに行く マンションで暮らしていると自宅から粗大ゴミ置き場まで若干の距離があったりします。手で持てるサイズ・重量の粗大ゴミなら手で運べばよいし、それよりも一回り大きいくらいのものならマンション共用設備から台車を借りられる場合があります。 今回、キッチンで 10 年…

    はてなブログ | 無料ブログを作成しよう
  • メモリの中身を読んでみよう (プロセスをダンプ+解析する方法) - 主に言語とシステム開発に関して

    実行中のプログラムは,メモリ上に存在する。 そのメモリ上のデータを読み取れば,アプリケーションが扱っている生のデータを,そっくりそのまま取得できてしまう。 ユーザがどのような値を入力したか,アプリケーションがどこと通信してどういうデータを取得したか,全て丸見えである。 逆アセンブルの場合,プログラムの「実行前」のスタティックな姿しかわからない。 しかしメモリ上のイメージをダンプすれば,まさに「実行中」のプログラムの姿がわかる。これが逆アセンブルとダンプの大きな違いだ。 下記では,Windows上で実行中のプロセスをダンプし,プログラムにユーザが入力した値をメモリ上から実際に読み取る。 利用するフリーソフトは User Mode Process Dumper バイナリエディタ WinDbg の3つ。(これに加え,適当なC言語コンパイラがあるとよい。) ちなみに,ソフトウェアの利用承諾書に「無

    メモリの中身を読んでみよう (プロセスをダンプ+解析する方法) - 主に言語とシステム開発に関して
  • 64ビットCPU(AMD64+EM64T)でアセンブラ

    仮想化技術の考察 x86系CPUの仮想化技術を読み解いてみます。 仮想化とは、ひとつのマシン(CPU、メモリ、ディスク他を備えたPC)上に複数の(仮想的な)マシンを 作ることです。それぞれのマシンはCPU、メモリなどを備えた、れっきとしたPCです。 ただ複数のマシンがあるように見えても実際には(物理的には)ひとつのマシンしか存在しないところが、仮想化たる所以です。 x86系CPUの仮想化では、インテルの「Intel Virtualization Technology」 (以下、VTと略。x86(IA-32)用VTの旧コードネームはVanderpool Technology、Itanium(IA-64)用VTの旧コードネームはSilverdale Technology)と AMDの「Pacifica」がありますが、とりあえず稿執筆時に仕様書が公開されている VTについて考えます。(Paci

  • TDDはYAGNIに矛盾する? - カタチづくり

    Joel on Softwareに面白そうな記事が載っていた。 とはいえ、どうも僕の英語力では完全な読解が難しい。会話を書き起こしたものなので当然ながら文体が会話調で、僕にはなかなか理解が難しいのだ。以下で僕の読み間違いがあれば指摘して欲しい。 さて、冒頭で Joel 氏はこう言っている。 Joel: There's a debate over Test Driven Development... should you have unit tests for everything, that kind of stuff... a lot of people write to me, after reading The Joel Test, to say, "You should have a 13th thing on here: Unit Testing, 100% unit tests

    TDDはYAGNIに矛盾する? - カタチづくり
  • その3 拡張できて修正不要の原則 : OCP

    ホーム < ゲームつくろー! < オブジェクト指向設計編 < 拡張できて修正不要の原則 : OCP その3 拡張できて修正不要の原則 : OCP オブジェクト指向には幾つか「原則」と呼ばれるものが存在しています。原則(Principle)というのは約束(Promise)や指針(Guideline)よりもはるかに強い戒めです。オブジェクト指向における原則は、よっぽどの理由が無い限り破る事は許されないものばかりです。沢山ある原則の中で、ここではオブジェクト指向の基原則である「Open-Closed Principle : OCP」について見ていくことにします。尚、今回の話は「まさーるのページ」(石井様作成)にあるオブジェクト指向に関する素晴らしいお話の影響を多大に受けております。このページをご覧になりますと、オブジェクト指向のが読みたいと熱望してしまうこと間違いなしです。私も思わず関連

  • Julia : スクリプト言語最速? 手軽さと速さを求めた科学技術計算向け言語 | プログラマーズ雑記帳

    一般的に Ruby, Python といったスクリプト言語は手軽に書けるけど、遅いという特徴があります。 今回はスクリプト言語でありながら、速度も求めた Julia という言語を紹介します。 Julia は科学技術計算向けですが、汎用的な用途にも使えると思います。 ちなみに計算時間は速いみたいですが、立ち上がりがすごく遅いので、 タイトルにはちょっと偽りがあります。 The Julia Language 先に科学技術計算の分野と、よく使われている言語について簡単に説明します。 科学技術計算というのは線形代数、数値解析、統計解析など専門的な数値計算をする分野です。 大抵のアプリではディスクアクセスやネットワーク通信が先にスピードネックになることが多いので、 純粋に言語としての速度が求められる分野でもあります。 数値計算に関しては Fortran という言語が大昔からあります。 これは簡単なも

  • PSD Viewing & Diffing

    ProductPSD Viewing & DiffingWe've supported image viewing and diffing for quite some time now, but today we're happy to announce that we're adding PSD files to the images we support for this. Any… We’ve supported image viewing and diffing for quite some time now, but today we’re happy to announce that we’re adding PSD files to the images we support for this. Any PSD assets in your repositories wil

    PSD Viewing & Diffing
  • ShortNote

    ShortNote は、体験談や思い出などを、 エッセイのような文章にして投稿したり、 みんなのエッセイを読める、サイトです。

    ShortNote