タグ

プログラミングに関するibushiのブックマーク (75)

  • エンジニアとして支えるということ - カイワレの大冒険 Third

    昔こんなことを呟いたことがある。「インフラエンジニアは、いつ暗殺されるか分からない、明治時代の倒幕者だと思えば気が楽かもしれん」と。 そう呟いたときも、今でさえも分かっていないけど、思うところがあるので、記してみる。 技術 VS 心意気 エンジニアとして生きる上で、サービスを常に安定させることは死活問題だったりする。そういう気持ちを持っていてさえ、365日常に稼働させる自信あるかと言われると、まだ足りない部分があると言わざるを得ない。とても、「ずっと安定してますよ、問題ないですよ」とは言えない。というのは、どんなに手を打っても、それを上回る力で何かしら起こる可能性が0.01%でもあることを心の底で感じているからだったりする。 もちろん、ホットスタンバイの準備や、SPOFをなくす構成、原因を特定しやすい仕組みなど、技術を学んでは適用し、応用し、常に改善をしていくようにはしている。新しい技術

    エンジニアとして支えるということ - カイワレの大冒険 Third
  • Selenium 中級者になろう (変数+XPath+JavaScriptを,テストケース中で利用する方法) - 主に言語とシステム開発に関して

    回帰テストツール「Selenium」の中級 Tips。 初級の使い方については 今から3分で selenium の使い方を身に付ける (回帰テスト自動化) http://language-and-engineering.hatenablog.jp/entry/20081016/1224080409 selenium 主なコマンド一覧 http://language-and-engineering.hatenablog.jp/entry/20081016/1224123118 で入門のこと。 Seleniumのより便利な使い方として,下記で (1)変数の使い方 (2)XPathの使い方 (3)テストケース中へのjavascriptの埋め込み (4)Ajaxアプリのテスト方法 を学ぶ。 まず,まとめを掲載。そのあとで,実際のテストでどう役立つのか詳しく解説する。 まとめ 要素の指定方法まとめ

    Selenium 中級者になろう (変数+XPath+JavaScriptを,テストケース中で利用する方法) - 主に言語とシステム開発に関して
    ibushi
    ibushi 2010/02/24
    参考にさせていただいて中級者を目指そうと思います。
  • 株式会社マジカジャパンの羽生章洋が書いてるブログ:否定表現と仕様書 - livedoor Blog(ブログ)

    ここでいう仕様書というのはコンピュータのシステム開発における仕様書です。とあるシステムの仕様書を眺めていました。うちが関与しているものではなくて、他社さんがまとめられたものです。それを見てるうちにふと思うところあって、過去の色んな資料などを掘り返してみました。すると改めて感じるものがあったのです。 例えば、「Aの場合にBでなく、あるいはCでなければ、当該処理は実施しない」というようなものです。何となくわかったつもりになってしまいそうですが、コンピュータのプログラミングを経験している方であれば、これを仕様書として渡されて実装するとなると、間違いなく色々なケースについて再質問をすることになるのはご理解頂けることと思います。そして今回様々な資料などを読み返してこの「言質を取らせない」的な、あるいは「文学的表現」な文言が実に多いことを改めて実感したのです。 上記の表現は当該処理なるものを実施しない

    ibushi
    ibushi 2009/01/28
    国語大事だよなぁ。でも国語の先生は論理は教えてくれなかったなぁ
  • Build seven good object-oriented habits in PHP

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Build seven good object-oriented habits in PHP
    ibushi
    ibushi 2008/12/04
    オブジェクト指向ちゃんと身に着けよう。
  • JavaScript はどのように実行されるか - IT戦記

    JavaScript はどのように実行されるか Safari*1 の実装を例に JavaScript はどのようにして実行されているかを書く。自分用のメモ。日語の出来は気にしない 1. ブラウザを起動して以下のようなページを開いたとする <html> <head> <script> var a = 1; var b = 2; alert(a + b); </script> </head> <body> </body> </html> 2. インターネットからデータが到着する そうすると WebCore::FrameLoader::write という関数に生の文字列が渡される。型は char* だ。 http://trac.webkit.org/browser/trunk/WebCore/loader/FrameLoader.cpp#L990 この関数の中では、到着した文字の文字コードを解

    JavaScript はどのように実行されるか - IT戦記
    ibushi
    ibushi 2008/10/28
    昔読んだBasicのインタプリタの解説とか思い出す。見た感じ構文木作るとこボトルネックになりそうね
  • コードの最適化に役立つPHPスクリプトのベンチマーク:CodeZine

    はじめに どのようなソフトウェアも、市場に出て洗練された製品になるまでには、最適化のプロセスを経る必要があります。メモリリークを見つけて製品のパフォーマンスを向上させるのは、多くの作業時間と人的資源を必要とする難しい作業です。最適化という課題においてベンチマークは重要です。個別のコード部品と全体のコードの両方を検証できますし、ベンチマークのレポートや統計データから、実際の実行時のパラメータやパフォーマンスを推測できるからです。 PHPではBenchmarkパッケージを使用できます。これはPHPスクリプトや実行する関数のベンチマークに使われるPEARパッケージです。リリースされている最新版は1.2.7(安定版)です。パッケージのダウンロード後、次のようにしてインストールすることができます。 Benchmarkパッケージで何ができるかを示すため、フィボナッチ数列の生成という古典的な問題を例に、

    ibushi
    ibushi 2008/08/01
    測定できなければ制御できない、って言ったのはケルビン卿だっけ。
  • Firefox拡張機能開発チュートリアル - outsider reflex

    Firefox拡張機能開発チュートリアル XULの基礎からXPCOMの利用方法まで徹底解説! 2008/4/12 2008/9/25 2009/3/12 Software Design誌2007年4月号第2特集「Firefox拡張機能開発チュートリアル」をFirefox Developers Conference Summer 2007でテキストとして頒布するために再録したものです。また、付録として知って役立つOSSのライセンスも収録させていただいています。 ダウンロード 目次 奥付 ライセンス 関連文書 Home Back to List 目次 1章:Firefox拡張機能ことはじめ(江村 秀之(level)) はじめに 拡張機能普及の背景 拡張機能でできること 拡張機能を作ってみよう! 2章:拡張機能開発で使う技術(下田 洋志) 拡張機能開発に利用する技術 それぞれの技術の役割 最低限

    ibushi
    ibushi 2008/07/30
    これは読まずにはおけない。夏休みの宿題だな
  • PHPSpecでユニットテスト

    pear channel-discover pear.phpspec.org pear install phpspec/PHPSpec を実行すればOKです。 使い方、というか振舞駆動開発の流れですが、 1.要求仕様を文章に直し(it should … の形式で)、それに沿ったテストコード(スペックファイル)を作成。 2.作ったスペックファイルで正しい結果が出てくるようなプログラムを作成。 3.スペックファイルを完成させてテストを実行して、正しい結果になることを確認。 1から3の繰り返しになります。 マニュアルにわかりやすい例がいろいろ載っているので、ぜひぜひそちらを見てみて下さい。 一応、やってみると、、、 MyStringクラスという、渡した文字列をどんどんつなげていくクラスを作ることにします。 まずはスペックファイルの作成です。 DescribeMyString.php <?php

    PHPSpecでユニットテスト
  • JavaScript1.7 の yield を使って、非同期処理を同期処理のように書く方法 - IT戦記

    経緯 id:kazuhooku さんが一年前にやってたことですが Kazuho@Cybozu Labs: JavaScript/1.7 で協調的マルチスレッド 今日やっと挙動が理解できたのと、 Weave のソースを読んでいたらこのテクニックをバリバリ使っていて「ちょwwおまwww」ってなったので、自分でも作ってみようと思いました。 ほとんど id:kazuhooku さんのと同じものなので、既出です><当にありがとうございました>< まず、 yield とは何か yield とは、 JavaScript 1.7 から導入された機能です。 以下に yield の細かい挙動を示しておきます。 function f() { // なんかの処理 yield; // ... (1) // なんかの処理 yield; // ... (2) // なんかの処理 } var g = f(); // こ

    JavaScript1.7 の yield を使って、非同期処理を同期処理のように書く方法 - IT戦記
    ibushi
    ibushi 2008/03/11
    Javascriptを同期処理っぽく動かすのは苦労する。大きなヒントをもらった
  • PHP 1ファイルのみでDB不要のTODO管理ツール - Todo.php [ゼロと無限の間に]

    コメントと更新履歴はゼロと無限の間のログ » Todo.phpへどうぞ。 (MOONGIFT風に)みなさんはタスク管理にどんなものを使っているだろうか。Webのサービスでもインストール型のツールでも、TODO管理の方法は色々あるが、いざ探してみると意外に帯に短し襷に長しである。 Remember The Milkは高機能だが重いし、Tracは共有するには良いが個人で使うには冗長、iGoogleのTODOガジェットはシンプルでよいが痒いところに手が届かない。 それならいっそ、自分のサーバで手軽に管理できるTODOツールはどうだろうか。今日紹介するのはPHPが1ファイルのみ、しかもDBも不要なTODO管理ツール、「Todo.php」だ。 下記のソースコードをコピーして適当な名前でPHPファイルとして保存し、Todoクラスの先頭で定義してある定数(const)をお好みで変更してください。また、定

    ibushi
    ibushi 2008/03/06
    後で試させていただきます。
  • Lifehacker:Firefoxアドオンの作り方 - ITmedia Biz.ID

    多少のプログラミング経験があれば、Firefoxアドオンを作るのはそんなに難しくない。自作アドオンを作るためのハウツーを紹介する。 ここで自家製Firefoxアドオンをリリースし始めて以来、何人ものユーザーから「Firefoxアドオンを作るのは難しいの?」という問い合わせを受けた。多少プログラミングの経験がある人なら、その答えは「そんなに難しくない」だ。 Firefoxアドオンの中身はJavascript――ブックマークレットや従来のWebページで使われている、あまりミステリアスではない言語――とXUL(「ズール」と発音する)というマークアップ言語だ。独自のアドオンを作るには、ある程度のJavascriptのノウハウとXMLファイルの快適な編集、それからお気に入りのブラウザを思いのままにすることへの健全な好奇心が必要だ。 わたしがWeb上のフリーチュートリアルを使ってFirefoxアドオン

    Lifehacker:Firefoxアドオンの作り方 - ITmedia Biz.ID
    ibushi
    ibushi 2008/03/04
    keyconfig.xpiがあんまりメンテされていないから、自分が使うキーのカスタマイズだけやってみようか
  • 複数のjsライブラリを利用する際にonloadを書き換える方法[to-R]

    複数のjsライブラリを利用する際にonloadを書き換える方法 複数のJavaScriptライブラリを利用していて、正常に動作しないや、どちらか一方しか動作しないなどの状況に陥ることがあります。 原因は様々なのですが、一番多いのがJavaScriptライブラリのonload記法に依存する問題です。 onload記法とはJavaScriptを実行するタイミングをonloadイベント(ブラウザがすべてを読み込んでから実行)に設定する際の書き方です。 DreamWeaverを利用している方は、以下のようなソースをよく見るかもしれません。 <body onload="MM_preloadImages('hogehoge')"> これはonloadイベントにMM_preloadImagesという関数を設定しているという意味です。 他にもソースコード中の window.onload = functio

    複数のjsライブラリを利用する際にonloadを書き換える方法[to-R]
    ibushi
    ibushi 2008/02/27
    実は先日はまったばかり。汎用addEventは使わせていただいた。
  • perl - the best friend of find(1) : 404 Blog Not Found

    2008年02月24日22:45 カテゴリLightweight Languages perl - the best friend of find(1) find(1)ネタというのも、定期的にネットを賑やかにする時候ネタになりつつあるようです。 いまさらxargsの便利さを主張してみる findでファイル検索入門 - builder by ZDNet Japan というわけで、いまさらfindとperlの相性のよさを再確認してみることにしてみます。 基形 まずは、これを覚えておきましょう。 find [options and args of find] -print0 | perl -l0ne 'perl program' findが見つけたファイルを一つ見つけると、perlの$_にそのファイル名が入るのでそれに対して何らかの処理を行います。 perl側の-l0neというのは、以下と同等

    perl - the best friend of find(1) : 404 Blog Not Found
    ibushi
    ibushi 2008/02/25
    実はいまだにxargsを上手く使えていない自分。参考にしてみる。
  • コメント: PHPは駄目な言語なのか? - スラッシュドット・ジャパン

    趣味でやっている人のことは、まあ、いいとして(踏み台にされる可能性はあるけど)、仕事PHPを使うときの注意を書いておこう。 コーディング規約を守る。組織にコーディング規約がないなら、Zend Framework PHP標準コーディング規約 [zend.com]を使う。オレ流コーディングスタイルは禁止。 内部コードにはEUC-JPかUTF-8を使う。入出力もできるだけShift JISを避ける。Shift JISを使う場合には2byte目に0x5Cを含む文字の動作を忘れずに確認する。 開発環境の警告レベルをE_STRICTにする。番環境ではdisplay_errorsをオフにする。 register_globals、magic_quotesはオフにする。 type hintingを積極的に使う。 スコープの長い配列をクラスでラップする。 プレゼンテーションとロジックを分割すること。プレゼ

    ibushi
    ibushi 2008/02/05
    全部あたりまえなんだけど、うちの会社にこの「あたりまえ」を実践している人間が何人いるか...
  • Geekなぺーじ : 人生の全てはTCP/IPに学んだ

    1. ゆずり合うこと TCPはネットワーク帯域を他のTCPセッションと譲り合います。 TCPには、ネットワークが混雑(輻輳:ふくそう)してくると、送信されるパケット量を減らす仕組みがあります。 この譲り合いがあるからこそ、現在のインターネットは多数の人間が同時に使えています。 同様に、現実世界においても無理な競い合いを行うよりも譲り合いを行った方がスケーラビリティが上昇します。 2. 信頼はきめ細やかな確認応答で実現されること TCPでは、信頼性を確保するためにAck(Acknowledgement、確認応答)を送信してデータの到着を伝えます。 TCPのセッションが確立している間は、Ackが細かく送受信され続けます。 このきめ細かな確認応答が信頼の根幹であると言っても過言ではありません。 現実世界においても、きめ細かく応答を行う事が重要です。 メールなどを受け取っても、全く返事をしない相手

    ibushi
    ibushi 2008/01/29
    [TCP/IP] 深い。これでいくと、おいらのファイアウォールはぎちぎちだな
  • Geekなぺーじ : 良いプログラマの見分け方

    「How to recognise a good programmer」という記事がありました。 良いプログラマを見分けて雇用するためのTIPSが書いてありました。 原文前半では、Paul Graham氏が書いている「The 18 mistakes that kill startups, 日語版:スタートアップを殺す18の誤り」というエッセーに書かれている「90年代のE-コマースで多くのベンチャーを失敗させたのが質の悪いプログラマであるが、プログラマではない起業家には良いプログラマと悪いプログラマを見分ける術がない。」といった内容に対して反論すると書いています。 見分け方をまとめると、以下のようになるそうです。 流石に全ての項目を満たすような人は少ないそうですが、どれか一つでもあてはまる項目があれば、それは良いプログラマなのかも知れないそうです。 原文には、詳細な説明があるので興味のある

    ibushi
    ibushi 2008/01/23
    採用面接で使ったらどうなるだろう(w
  • not found

    not found

    ibushi
    ibushi 2008/01/21
    やりたいと思ってやれていなかったこと。せめて自分の権限の及ぶ部分だけでもやってまおうか。
  • ITエンジニアの「やってはいけない」---目次:ITpro

    設計・実装から運用,メソドロジまで,最新アンチパターンを徹底解説 先輩から教わったことのなかに多くの「やってはいけないこと」(アンチパターン)があるだろう。だが,その理由を問われると,うまく説明できないことがあるのではないだろうか。突き詰めて考えると,状況によっては「やっても構わない」こともあるし,技術の進化に伴い「やれるようになってきた」こともある。そこで設計,実装,テスト,運用,メソドロジの各分野について,取材を通じて浮かび上がった最新アンチパターンを徹底解説する。テーマごとに「どれくらいやってはいけないか」のレベルも表した。レベル3~レベル1の3段階あり,レベルの数字が大きいほど,やってはいけない度合いも大きい。 関連サイト: ■設計編 ■メソドロジ編 ■実装編 ■テスト編 ■運用編 ■サーバー運用編 ■データベース編 ■セキュリティ編 ■記録メディア編 ■方式設計編 ■内部統制編

    ITエンジニアの「やってはいけない」---目次:ITpro
    ibushi
    ibushi 2008/01/09
    ときどき振り返ってみるといいかも
  • 試訳 - コードをセキュアにする10の作法 : 404 Blog Not Found

    2008年01月05日02:45 カテゴリ翻訳/紹介Code 試訳 - コードをセキュアにする10の作法 全コーダー必読。プログラマーだけではなく法を作る人も全員。 Top 10 Secure Coding Practices - CERT Secure Coding Standards 突っ込み希望なので、いつもの「惰訳」ではなく「試訳」としました。 Enjoy -- with Care! Dan the Coder to Err -- and Fix コードをセキュアにする10の作法 (Top 10 Secure Coding Practices) 入力を検証せよ(Validate input) - 信頼なきデータソースからの入力は、全て検証するようにしましょう。適切な入力検証は、大部分のソフトウェア脆弱性を取り除きます。外部データは疑って掛かりましょう。これらにはコマンドライン引数、

    試訳 - コードをセキュアにする10の作法 : 404 Blog Not Found
    ibushi
    ibushi 2008/01/07
    小さな事からこつこつと...
  • 第1回 PHPUnit入門 | gihyo.jp

    はじめに 皆さん、テストしてますか? 近年、システム開発を発注する顧客や利用ユーザーの品質に対する要求レベルは格段に向上しています。そのため、システムの品質を保証するための「テストフェーズ」はますます欠かせなくなってきています。 ここで、一口に「テスト」といっても、フェーズによって以下のような様々なテストがあります。 ユニットテスト・単体テスト 結合テスト・システムテスト 総合テスト 受け入れテスト 負荷テスト セキュリティテスト 筆者の経験上、一般的なシステム開発でもっとも大きな工数を占めるのは、この「テスト」フェーズと考えています。なぜなら、テストフェーズは例外なく「繰り返し作業」だからです。前述の様々なテストフェーズで共通することですが、テストフェーズは「テストで発見されたバグ・障害を修正して再度テストを行う」という作業を何度も繰り返し行うフェーズです。あとのフェーズで不具合が発見さ

    第1回 PHPUnit入門 | gihyo.jp
    ibushi
    ibushi 2007/12/13
    PHPUnitを導入するときの参考にさせていただいた