タグ

programmingに関するbluespearのブックマーク (253)

  • Ruby 2.0.0で学ぶ、14個のデザインパターンを作りました[GoF][Design Pattern] - 酒と泪とRubyとRailsと

    GoFのデザインパターンとは、「プログラミングのベストプラクティスを体系化したもの」です。このベスト・プラクティスをしっかりと理解して設計すれば、ソフトウェア設計の効率を高めることができます。またデザインパターンが「プログラミングの思想」の共有をよりスムーズにしてくれます。先人たちの試行錯誤の結果を効果的に利用して、プログラミングをもっと楽しんでしまいましょう! 🗻 デザインパターンのポイントGoFのデザインパターンには下のプリンシパルがあります。 変わるものを変わらないものから分離する インタフェースに対してプログラミングし、実装に対して行わない 継承より集約 委譲、委譲、委譲 必要になるまで作るな(You Ain’t Gonna Need It./YAGNI) 🤔 デザインパターン一覧 アブストラクトファクトリ ビルダ ファクトリメソッド シングルトンパターン アダプタ コンポジッ

    Ruby 2.0.0で学ぶ、14個のデザインパターンを作りました[GoF][Design Pattern] - 酒と泪とRubyとRailsと
  • C++ implementation of the C# Property and Indexer with Accessor-Modifiers

    bluespear
    bluespear 2012/06/11
    C++でプロパティ
  • プロとしての行為 Act as Proffesional

    僕が新社会人になったときには、「このを読んで学ぶと良いよ!」なんて、紹介してくれる先輩がいなかった。 だから、無駄な書籍を読んで、あんなクソな読んでる暇があったら、この読んでおけば良かった。と、何度も思った@HIROCASTERでございませう。 新社会人の皆様に技術書は高価なので、厳選してオススメを紹介します。カテゴリ・言語別で上の方に並んでいる者が初級者にオススメ、下にいくほど、上級者向けです。数ヶ月かけてステップアップすれば良いのではないでしょうか。 新しいプログラマの教育担当者やメンターになった人は、この記事を教えてあげれば良いんじゃないかな。

    プロとしての行為 Act as Proffesional
  • algorithm - bucket sort - 比較しなければソートは相当速い : 404 Blog Not Found

    2012年01月11日07:00 カテゴリアルゴリズム百選Math algorithm - bucket sort - 比較しなければソートは相当速い 珠玉のプログラミング Jon Bentley / 小林健一郎訳 絶賛風邪こじらせ中につきコードと戯れることに。 新ソートアルゴリズム「配列挿入ソート」だ! - hp12c その名も「配列挿入ソート」! すでに突っ込み入ってるけど、それ、もしかしたら人類最古のアルゴリズムだから。 最古にして最速? おそらくプログラムを組んだことがない人でも「誰にも教えられずに」知った「天然の」アルゴリズムの筆頭に来るのがこのバケットソートではないでしょうか。 ソートしたいものに適当に番号を振っておく 番号がついたバケツを用意する ソートしたいものの番号がついたバケツにそれを放り込む 必要があればバケツの中身を同じやり方でソートする 番号順にバケツの中身をぶち

    algorithm - bucket sort - 比較しなければソートは相当速い : 404 Blog Not Found
  • algorithm - mapBetween - 配列の隣接する2項にそれぞれ演算を施した配列 : 404 Blog Not Found

    2012年01月04日21:00 カテゴリLightweight Languages algorithm - mapBetween - 配列の隣接する2項にそれぞれ演算を施した配列 言語を増やしたかったのと、そういう関数に名前を付けたかったのとで1 entry割くことにしました。 等差数列 - タイトル 配列の隣接する2項にそれぞれ演算を施した配列を得たい。つまり、 f (+) [1,2,3,4,5] = [3,5,7,9] のような f が欲しい。 名前 もちろん等差数列を作るのにもこの関数は使えるのですが、この一般的に使える関数に使う名前としてはあまりに局所的。というわけで mapBetween としてみました。使いどころはかなり多そうです。各言語に標準装備されていないのがちょっと不思議なほど。 JavaScriptによる実装 Array.prototype.mapで滅多に使われない第

    algorithm - mapBetween - 配列の隣接する2項にそれぞれ演算を施した配列 : 404 Blog Not Found
  • DHTML - 最低限文化的なCSSアナログ時計 : 404 Blog Not Found

    2011年10月09日14:15 カテゴリLightweight Languages DHTML - 最低限文化的なCSSアナログ時計 これ見たら一つ作り置きしたくなってきたので。 Demo 右の通り。 一応 WebKit (Safari & Chrome on Mac/PC/iOS/Android)、Firefox、Operaで動くのを確認。Operaで動く分、AppleのiPod Nanoのページよりも互換性は少し上です。 なぜかIEで動かない。参考にした Fun with CSS Transforms in Firefox and Webkit - zachstronaut ではIEでもぐるぐる回転しているのですが。 何をやっているかは、ソースを見ればおわかり頂けるかと。 それよか、ちょっと驚いたのが、これ。 WebKitのWeb InspectorってリアルタイムでDOMの変化追え

    DHTML - 最低限文化的なCSSアナログ時計 : 404 Blog Not Found
  • Qtライブラリについて

    GUIウィジェット(部品) QCalendarWidget QCheckBox QComboBox QDateEdit    (日付編集) QDateTimEdit  (日時編集) QDial QDoubleSpinBox  (倍精度浮動小数点のスピン・ボックス) QFontComboBox QFrame QGroupBox QIconView QLabel QLCDNumber  (LCDの数値様な表示) QLineEdit (1行テキスト編集) QListBox QListView QListWidget QMenu QMenuBar QMultiLineEdit QProgressBar QPushButton QRadioButton QScrollArea QScrollBar QSlider QSpinBox QTableView QTableWidget QTabWidget

  • デバッグしやすいassert_equalの書き方 - 2011-02-28 - ククログ

    デバッグしやすいassert_equalの書き方とデバッグしにくいassert_equalの書き方があるのは知っていますか?1 デバッグしやすいassert_equalの書き方を2パターン紹介します。 まとめたassert_equal まず、1つ目のよくみるデバッグしにくいassert_equalの書き方です。 def test_parse assert_equal(29, parse_integer("29")) # (1) assert_equal(29, parse_integer("+29")) # (2) assert_equal(-29, parse_integer("-29")) # (3) end これがデバッグしにくいのは、(1)が失敗したら(2)、(3)が実行されないからです。すべてのassert_equalが実行されて、どのassert_equalが失敗したかを確認す

    デバッグしやすいassert_equalの書き方 - 2011-02-28 - ククログ
    bluespear
    bluespear 2011/09/05
    Ruby test debug
  • C++用xUnitでのテストの書き方 - 2009-11-07 - ククログ

    注: 長いです。 スクリプト言語でのxUnit実装を使ったことがある方なら、テストを定義するだけでテストが実行されることが当たり前ではないでしょうか。c2.comのWikiによると、これはTest Collectorというそうです。定義したテストを自動的に集めてくる機能のことです。 一般的にTest Collectorの機能は言語が提供するリフレクション機能やメタプログラミング機能を使って実現されます。 例えば、Rubyのtest-unit 2.xでは、リフレクションを使う方法とメタプログラミングを使う方法の両方をサポートしています。リフレクションを使う方法ではObjectSpace.each_object(Class)ですべてのクラスを取得し、その中のTest::Unit::TestCaseのサブクラスを集めます。メタプログラミングを使う方法ではTest::Unit::TestCase.

    C++用xUnitでのテストの書き方 - 2009-11-07 - ククログ
  • STL風に使えるマップ型コンテナの紹介と性能比較 - Preferred Networks Research & Development

    最近スマートフォンに乗り換えました。徳永です。 C++は世に数あるプログラミング言語の中では比較的メモリをわない方ですが、それでもメモリ使用量が問題となる場合はあります。そのような場合の対処方法はいくつか有りますが、手軽に選択できる方法として、今日はSTLのmapやunordered_mapと同じ感じで使えるデータ構造をいくつか紹介したい思います。 以下、計算量の表記をする際には、要素数をnとします。 Loki::AssocVector LokiはModern C++ Designというの作者であるAndrei Alexandrescuが開発したライブラリです。AssocVectorはその中の一つとして提供されているクラスで、vector<pair<key, value> >という型のベクターをkeyでソートした状態で持つ事により、二分探索による要素の探索を可能にしたデータ構造です。こ

  • Ruby 1.9.2 に win32-service を入れる

    cles::blog 平常心是道 blogs: cles::blog NP_cles() « Lhaplus をアップデート :: Ruby/MySQLMysql::ProtocolError が出たときに... » 2010/10/16 Ruby 1.9.2 に win32-service を入れる  ruby 25 0へぇ RubyWindowsのデーモンを実装したかったので、Ruby1.9.2 に gem で win32-service をインストールしようとしたら、一筋縄ではインストールできなかったので、インストール方法をメモしておきます。 作業の前提条件としてはWindowsRubyInstaller for Windowsを使ってRuby 1.9.2がインストールしてあり、DevKit-4.5.0が正しくインストールされているものとします。インストール先はデフォルトの

    Ruby 1.9.2 に win32-service を入れる
  • Twitter の JSON に罪はない

    TwitterのステータスIDが53bitを越えたお話 - tmytのらくがき http://d.hatena.ne.jp/tmyt/20101201/1291166929 から引用。 このうちXMLで処理してる場合は内部で64bit INTで処理していれば特に問題は起きません。 こういう微妙なまちがいをしてる人はこの記事書いた人だけでなく大勢いるようだけど、記事としてはまとまっていたので参照。 JSON という書式は、確かに JavaScript から派生したサブセットですので、 JSONを仕様書通りにパースするとidの値はdouble と考えてしまうのも無理はない気はします。 が、まちがいであるのも確かです。 RFC 4627 - The application/json Media Type for JavaScript Object Notation (JSON) http://t

    Twitter の JSON に罪はない
    bluespear
    bluespear 2010/12/02
    "JSON で 53bit を越える整数値を表現することは全然可能なわけです"
  • javascript - ブログパーツ/ウィジェット開発者におねがい : 404 Blog Not Found

    2010年11月26日18:00 カテゴリTipsLightweight Languages javascript - ブログパーツ/ウィジェット開発者におねがい JavaScript: The Good Parts Douglas Crockford / 水野貴明訳 [原著:JavaScript: The Good Parts] たった二つです。 名前空間を一つだけ用意して、それのみを使うこと 設定はグローバル変数ではなく、引数渡しにすること そうでないと、導入したサイトで変数衝突が起こる公算が大きくなります。 それが実際に発生したのが、右の画像です。表示がぐしゃぐしゃになっています。 問題を起こしたのは、以下のsnippetでした。 <script type="text/javascript" src="http://blogchart.jp/js/blogparts.js"></sc

    javascript - ブログパーツ/ウィジェット開発者におねがい : 404 Blog Not Found
  • google appengine に関してひと言

    ここ数日、Twitter上で appengine に関する発言をたくさん目にする。それを見る限り、「注目をされてはいるが、手を出しかねている人が多い」というのが現状だろう。そこで、私からもひと言。 App Engine は純粋なソフトウェア・エンジニアにとっての天国 私自身、色々な開発環境を試して来たが、私のようにプログラミングが大好きで、新しい言語や環境を学ぶのが楽しくて仕方が無いエンジニアにとっては、「App Engineは天国」というのが正直な感想。SQLRailsのように一見開発効率を良くしてはくれるが、直感的に実行効率とかが把握できない「補助輪付きプログラミング」と違い、App Engine上でのプログラミングは、ちょっと手を抜くとすぐに実行効率の悪さとして跳ね返ってくる「一輪車プログラミング」。 新しい言語を学ぶのが苦ならApp Engineは避けた方が良い 現時点で、Pyt

  • こてさきAjax:HTTPで、サーバーPushサービス Server-Sent Events - livedoor Blog(ブログ)

    リアルタイムWebの代名詞としてWebSocketに注目が集まる中、あまり話題になることはありませんが、HTML5には、もう一つリアルタイムWebを実現するAPIとして、忘れてはならないもの〜Server-Sent Events〜があります。今日は、そのお話。 Server-Sent EventsはCometを簡単に使えるようにするAPI。ここで、Cometと言うと最近の風潮として「WebSocketに完全にreplaceされる、ワークアラウンドでしょ」的な空気が(最近は特に)流れがちですが、そんなことは決してありません。。。というのが筆者の意見です。 Cometは、HTTPでサーバーPushするための技術の総称。その中の一つで良く取り沙汰される、periodically polling(一定間隔で、ポーリングパケットを投げる)などは、確かに「ワークアラウンドだね」という言葉ですませていい

    bluespear
    bluespear 2010/10/15
    server-sent event
  • 防御的プログラミング(2): 柴田 芳樹 (Yoshiki Shibata)

    防御的プログラミングに関して、いくつか記事を書いています。 防御的プログラミング 防御的プログラミングとテスト駆動開発 防御的プログラミングしない後ろ向きの理由 防御的プログラミングしない後ろ向きの理由(2) 防御的プログラミングとカバレッジ 防御的にプログラミングするというのは、公開APIの仕様にその内容を反映するということです。つまり、不正なパラメータが渡された時に、どのように振る舞うか(どのような例外をスローするかとか)を仕様書に記述する訳です。しかし、開発組織として防御的プログラミングの重要性を認識していない場合には、次のようなことが起きています。 開発者の多くが言葉としての「防御的プログラミング」を聞いたこともない。 APIの仕様書には正常な場合の処理内容しか書かれておらず、不正なパラメータが渡された場合の振る舞いが何も記述されていない。 結果として、APIの実装コードでは不正パ

    防御的プログラミング(2): 柴田 芳樹 (Yoshiki Shibata)
    bluespear
    bluespear 2010/10/14
    "APIの実装コードでは不正パラメータの検査されていない。あるいは、検査はしているが例外をスローすることなく、単純にリターンしている。"
  • 防御的プログラミングとカバレッジ: 柴田 芳樹 (Yoshiki Shibata)

    防御的プログラミングでは、外部からの呼び出しから防御します。しかし、それ以外に、自分自身の誤りに対して防御するということがあります。 次のコードは、『Effective Java 第2版』(p.147)に掲載されているコードです。// 値によって切り替えるenum 型- 問題が多い public enum Operation { PLUS, MINUS, TIMES, DIVIDE; // 定数で表される算術操作を行う double apply(double x, double y) { switch(this) { case PLUS: return x + y; case MINUS: return x - y; case TIMES: return x * y; case DIVIDE: return x / y; } throw new AssertionError("Unknow

    防御的プログラミングとカバレッジ: 柴田 芳樹 (Yoshiki Shibata)
  • IBM Developer

    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.

    IBM Developer
    bluespear
    bluespear 2010/10/13
    HashMap<String, List<String>>みたいになったときのイディオム
  • cygwinでWindowsアプリを作るためのメモ - cygwinを使って、

    コンパイルしてそのまま実行形式を作る場合 g++ -mno-cygwin appli.cpp とか g++ -mno-cygwin appli.cpp -o appli.exe コンパイルとリンクを分ける場合 g++ -c appli.cpp g++ -mno-cygwin appli.o -o appli.exe リンクのほうに「-mno-cygwin」をつけます。 ↑ 「-mwindows」オプション gccやg++でそのままビルドして作ったものをマウスのダブルクリックあどで実行すると、 GUIベースのアプリでもコマンドプロンプトやDOSプロンプトが表示されます。 コンソールアプリを作りたい場合や、 コマンドプロンプトとかが表示されても別にかまわないのであればそれでいいですが、 そうでないなら「-mwindows」オプションをつけて コマンドプロンプトとかが表示されない実行形式を

  • Develop/Timer - SyncHack

    Windows の Timer について † 結論:正確な時間計測には QueryPerformanceCounter(), QueryPerformanceFrequency() を使いなさいってこった。 High Performance Timing under Windows (http://www.devsource.com/ ) 元ネタ。 GetTickCount()、SetTimer() + WM_TIMER † Windows はリアルタイム性を強く求めていないので、Timer としての精度は悪い。 WM_TIMER の優先順位はかなり低く、他のプロセスに CPU パワーの優先順位が高く割り当てられている等の場合、100ms 程度の制度しか期待できない。システム全体のパフォーマンスの均一化によるパフォーマンスの向上を考えると一概に悪い仕様とは言えないだろう。 逆に 100ms