タグ

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

  • すべてのソースコードが手元にあるのに不要な抽象化を行うのはよくない

    「よい」とされているプログラミング手法のひとつに差分プログラミングがある。クラスを継承して親クラスとの差分だけのコードを書けば、親ですでに実装されている機能はそのまま使えて、かつカスタマイズもできるというやつだ。 たとえばGUIのボタンをカスタマイズしてマウスオーバーするとなにかちょっと特殊なことを行うボタンを作りたいとしたら、ボタンクラスを継承して、マウスオーバーのイベントハンドラをちょいちょいとカスタマイズしてやればよい。差分プログラミングは大変素直でよいプログラミング手法のような感じがする。 よいのはよいと思う。 しかしこういういい例だけをみてそれをどこでも真似しようと思ってしまうと、不必要な抽象化を積み重ねる困ったプログラマになってしまう(そういう人は結構たくさんいる)。自分でプログラムを書く場合には、よくできたクラスライブラリやフレームワークをお手にして抽象化を行うのは、ほとん

  • 社内向けWebサービス開発のススメ - kotas.tech

    社内向けWebサービス「ニコニコプロデュース」 例えば、コードレビューをしている時に誰かが鋭いツッコミを入れてくれた時。 例えば、社内のチャットで、ふと誰かが名言を書き込んだ時。 そんな「もっと評価されるべき」を、「評価」する手段が欲しい。 そんな思いから、社内向け Web サービス「ニコニコプロデュース」を作りました。 画面はこんな感じです。 使い方は簡単で、「だれうま」とか「GJ」とか思ったらポイントをあげる。それだけです。もらったポイントの使い道は特にありません。 こんな感じで、趣味としてちょこちょこ社内向けサービスを作ったり、簡単なツールを作ったりしているので、その魅力について語りたいと思います。 作っている間 なにせ自分で1から企画して自分で全て実装するので、作っている間はとても楽しいです。 「こういうページがあってー、こういう UI でポイントをつけれてー・・・あ、ユーザー認証

    社内向けWebサービス開発のススメ - kotas.tech
  • iPhone Dev Center 日本語リファレンス

    iOS 18に向けた準備 コントロール、ウィジェット、ライブアクティビティを使用して、iOS上で快適に動作しシステム全体においてより多くの箇所に表示される、高度にカスタマイズされたアプリを作成できます。Apple Intelligenceの導入により、優れたパフォーマンスとプライバシー機能を兼ね備えたパーソナルインテリジェンスをアプリに取り入れ、新しい機能を提供することができます。 Apple Intelligence Apple Intelligenceは、iPhoneiPadMacの中核にパワフルな生成モデルをもたらすパーソナルインテリジェンスシステムです。ユーザーのコミュニケーションや仕事、自己表現に役立つ、驚くような新機能を備えています。 Writing Tools(作文ツール)はシステム全体に組み込まれており、文章の書き直し、校正、要約に利用することができます。Image P

    iPhone Dev Center 日本語リファレンス
    BoBpp
    BoBpp 2010/06/01
    日本語版だ!
  • RubyからScalaに乗り換えた15くらいの理由 - ヽ( ・∀・)ノくまくまー(2010-04-26)

    ● [Scala] RubyからScalaに乗り換えた15くらいの理由 [注意] この文章を読むと、既存のRubyコードをScalaでrewriteしたくなる、 Rubyコードで型チェックをやるのがになる、Ruby案件でやる気が出なくなる、 などの幻覚や異常行動が報告されています。 現在関わっているプロジェクトや家族のことを常に意識し、 気を強く持って冷静に読むとよいでしょう。 「Scalaプログラミング入門」を読みはじめて、いきなり大きく頷いてしまった。 "コーディング時間の半分をテスト作成に費やさなければならなかった"(p.3) "Railsによって得られた生産性の向上は、テスト作成の作業に失われてしまいました"(p.3) まさにここ数年私が抱いてた漠然としたストレスの正体が、的確に文章となっていたからだ。そしてほどなく、「あ、この機能がRubyに欲しかった!」という驚きと共に Sc

  • LD_LIBRARY_PATH 覚書 | ブーログ

    LD_LIBRARY_PATHはLinuxのダイナミックリンカーであるld-linux.soが共有ライブラリを探すためのパスを設定した環境変数。 プログラムが起動したとき、まずld-linux.soが読み込まれ、これが必要な共有ライブラリを探してリンクする。その後プログラムが実行される。 ld-linux.soはまず環境変数LD_LIBRARY_PATHから探す。ただし、 setuid/setgid去れているプログラムは除外される。 次に、/etc/ld.so.cacheから探す。これはバイナリファイル。速い。 最後に、/usr/lib, /libから探す。 /etc/ld.so.cacheは/sbin/ldconfigによってつくられる。ldconfigはライブラリのシンボリックリンクも作成する。ldconfigは/etc/ld.so.confファイルに記述してあるディレクトリに対して操

  • 環境変数 LD_PRELOAD - 技術メモ帳

    LD_PRELOAD という環境変数に、共有オブジェクトを指定すると 任意のプログラムを実行する時にその共有オブジェクトを読み込ませる事が出来るらしい。 そして、もし読み込ませたときに シンボル名 が衝突していたときは、 先に定義されたシンボル名が優先されるという仕様になっているらしい。 そこから考えられるのが、 LD_PRELOAD でわざと同じ名前のラッパー関数を作成して、 ロギング処理を注入するという事だ。(アスペクト指向だ!!) (今度やってみよう。) とりあえず、以下は LD_PRELOAD で同名関数を上書きできる例です。 まず、main.c 1 #include <stdio.h> 2 3 int main() { 4 puts("hello world!!"); 5 return 0; 6 } ただ単に、puts 関数を呼び出しています。 実行すると、当然のように hell

  • プログラマーの力量を見極めることは困難ではない - komagataのブログ

    プログラマーの力量を見極める--面接官になったら尋ねるべき質問実例集 - IT業界を生き抜く秘密10箇条 - ZDNet Japan ソフトウェア開発者を採用する面接の場においては、応募者の専門家としての力量を見極めることが最も困難な作業の1つである。 現時点でプログラマーの面接についての自分の考えをまとめておきます。 結論: プログラマー採用にあたって応募者の力量を見極めることは困難ではない。(面接で見極めることは困難である。) 前提: 短時間の面接(対面して話す事)でプログラマーの力量を実用的な精度で見極めることは不可能である。 中途採用において、PCやネットと切り離した無菌室状態での力量と現実世界での成果には大きな差がある。 専門技能(プログラミング)の高低と人間性の良し悪しは無関係である。 採用方法: ソースを見る。(githubのアカウント名を教えてもらえれば十分である) 会って

  • アーカイブ・ライブラリの作成

    再配置可能オブジェクト・コードを含む 1 つ以上のオブジェクト・ファイルを作成します。通常、各オブジェクト・ファイルには、関数 1 つ、プロシージャ、またはデータ構造体が含まれていますが、複数のルーチンとデータが含まれる場合もあります。ar コマンドを使用して、これらのオブジェクト・ファイルを結合し、1 つのアーカイブ・ライブラリ・ファイルを作成します。 ar を実行するときに、r キーを指定します。(「キー」はコマンド行オプションに似ていますが、先行-は不要です)。

  • GDBで歴史をさかのぼれるように!なりました! GDB 7.0 の新機能Reverse Debuggingを使ってみた - 日記を書く [・w・] はやみずさん

    Twitter上で、@alohakun が言及していた GDB の reverse debugging の機能を使ってみました。 GDB にトレースと逆実行機能入ったのか。 http://www.gnu.org/software/gdb/news/reversible.html http://twitter.com/alohakun/status/4481139191 まずは簡単な使い方を説明したあとに、インストール方法を説明します。 こんなときに便利 「変なこと」が起きている大体の場所がわかっているとき デバッグ中に、大体どこで変なことが起きているかはわかっているけど、細かい場所は特定できていないとき、reverse debuggingが効果を発揮します。 GDBでステップ実行をしていて、「しまった!行きすぎた!」という経験はよくあると思います。こういうとき、今まではプログラムの実行を最

    GDBで歴史をさかのぼれるように!なりました! GDB 7.0 の新機能Reverse Debuggingを使ってみた - 日記を書く [・w・] はやみずさん
  • Alcor の Abbreviation Scoring - steps to phantasien(2009-09-12)

    同僚の生産性ツール愛好家が熱に浮かされて言った. "QuickSilver の検索がすごいんだよ!" どう凄いのかというと, たとえば "Skype を検索するのに <sp> でいい!" らしい. それは凄いのかも. 私もいちおう QuickSilver を使っているけれど, 素敵機能の類はまったく活用していない. だいたい私の使うアプリケーションはどれも一文字で特定できる. Firefox, Emacs, iTerm, Activity Monitor... そういえば iTunes は iTerm と被ってる. ためしに <iu> と打ってみたら iTunes にマッチする. なんとなく凄い気がしてきた. 同僚はこのアルゴリズムが気になるらしい. 編集距離の仲間かとも思ったけれど, 違う気がする. とりあえずぐぐってみたところ, QuickSilver は 2007 年に オープンソー

  • 生年月日から年齢を計算する簡単な計算式 - sanonosa システム管理コラム集

    インフラエンジニアの教科書」シリーズや「クラウドエンジニアの教科書」などの著者。現在(株)ハートビーツ勤務。LINE社元創業メンバー。K-POP/韓国語/お酒/サイゼリヤワイン好き。

    生年月日から年齢を計算する簡単な計算式 - sanonosa システム管理コラム集
  • ネットワークプログラムのI/O戦略 - sdyuki-devel

    図解求む。 以下「プロトコル処理」と「メッセージ処理」を分けて扱っているが、この差が顕著に出るのは全文検索エンジンや非同期ジョブサーバーなど、小さなメッセージで重い処理をするタイプ。ストリーム指向のプロトコルの場合は「プロトコル処理」を「ストリーム処理」に置き換えるといいかもしれない。 シングルスレッド・イベント駆動 コネクションN:スレッド1。epoll/kqueue/select を1つ使ってイベントループを作る。 マルチコアCPUでスケールしないので、サーバーでは今時このモデルは流行らない。 クライアントで非同期なメッセージングをやりたい場合はこのモデルを使える: サーバーにメッセージを送信 イベントハンドラを登録;このときイベントハンドラのポインタを取っておく イベントハンドラ->フラグ がONになるまでイベントループを回す イベントハンドラ->結果 を返す 1コネクション1スレッ

    ネットワークプログラムのI/O戦略 - sdyuki-devel
  • 実行中のアプリケーションを外から観察するコマンド。 - こせきの技術日記

    strace システムコールをトレース。カーネルと何を話しているか。 strace -p PID でプロセスにアタッチ。実行中のプロセスをトレース。 straceを使ったデバッグ - SourceForge.JP Magazine : オープンソースの話題満載 Linuxカーネルの作り出す世界 − @IT自分戦略研究所 - ふつうのLinuxプログラミング 青木峰郎 システムコールとライブラリ関数 − @IT自分戦略研究所 システムコール・ライブラリルーチン - UNIX の部屋 ltrace 共有ライブラリの呼び出しをトレース。*.soと何を話しているか。 ltrace -p PID でプロセスにアタッチ。実行中のプロセスをトレース。 ltrace で共有ライブラリの関数呼び出しをトレースする - bkブログ 404 - エラー: 404 - Linux JF ƒ‰ƒCƒuƒ‰ƒŠ‚ÌŠ

  • ウノウラボ Unoh Labs: vi ctags : 関数等の定義位置にジャンプ

    こんにちは,ttsuruoka です. vi で PHP のコードを見ているときに, myhogefunc($foo, CONST_BAR); のような処理があって,myhogefunc() や定数 CONST_BAR がどんな定義になっているか知りたいときには,ctags が使えます. vi と ctags を連携させると,myhogefunc() の上や CONST_BAR の上にカーソルを置いて CTRL + ] を押すだけで,それが定義されている場所までジャンプすることができます. * ctags のダウンロードとインストール - http://pcmania.jp/~moraz/tools/ctags.html ctags をインストールしたら, タグファイル(tags)を作成します. タグファイルは,関数等の定義位置が記録されるファイルです. カレントディレクトリ以下の

  • ウノウラボ Unoh Labs: LD_PRELOADを使って任意の関数呼び出しにフックしてみる

    尾藤正人(a.k.a BTO)です 先日の社内勉強会のLTでLD_PRELOADについて簡単にやってみました。 LD_PRELOADって? 環境変数$LD_PRELOADを使うと他のライブラリの読み込みの前に任意のライブラリを先に読み込ませることができます。 実行プログラムの形式にELF形式を採用しているOSで使うことができます。 Linuxであれば問題なく使用できるはずです。 何ができるのか プログラムを変更することなく、任意の関数を上書きしたり、任意の関数にフックすることができます。 libhookwriteを作ってみた 簡単なサンプルプログラムとしてlibhookwriteというのを作ってみました。 libhookwriteはその名の通りwrite(2)にフックをかけることができます。 といってもできることは限られていてファイルのタイムスタンプの更新か、任意のプログラムをsh

  • Comet/Ajaxの上を行く技術 - Blog by Sadayuki Furuhashi

    上を行くかどうかは知りませんが :-p Ajaxはクライアントの都合でサーバーに通信を仕掛けるpull型の通信ができ、Cometはサーバーが好きなタイミングでクライアントへデータを送りつけるpush型の通信ができるわけですが、新たに双方向の通信ができる技術を開発しました。 具体的には、JavaScriptとサーバーの間で双方向のRPCができます。すなわち、サーバーからクライアント側のJavaScriptのメソッドが呼べるし、逆にクライアント側からサーバー側のメソッドを呼ぶこともできます。 サーバー側で call("addMessage", "Hello!") とやると、JavaScript側の function addMessage(msg) { ... } という関数が呼ばれたりします。 この技術を使って、試しにチャットシステムを作ってみました > デモ (ソースコード)*1 リアルタイ

    Comet/Ajaxの上を行く技術 - Blog by Sadayuki Furuhashi
  • 1