タグ

programmingに関するdekillcanerのブックマーク (150)

  • 404 Blog Not Found:アルゴリズム百選 - 二分探索(binary search)

    2007年12月04日08:30 カテゴリアルゴリズム百選Math アルゴリズム百選 - 二分探索(binary search) 今回は二分探索を取り上げます。 検索:コンピューターの最もよくある利用法 「二分探索って何?」「ググレカス」と言われないためにこの記事は存在するのですが、Webの検索に限らず、「目的のデータを見つけて取り出す」というのは、およそコンピューターの利用法で最もポピュラーなものです。 配列:コンピューターがデータを扱う根的な方法 そのデータはコンピューターのなかでどう置かれているかというと、非常に単純です。デジタル化されたデータ=数値が一定間隔で並んでいるだけです。こういうデータ構造を、配列(array)といい、この数値一個一個のことを要素(element)と言います。 現代のコンピューターでは、最小要素はバイト(byte)と呼ばれています。このバイトの中には0と1

    404 Blog Not Found:アルゴリズム百選 - 二分探索(binary search)
  • 簡単なWebサーチエンジンの作り方 - Imagine with 加藤和彦

    筑波大学は3学期制で,12月1日から3学期が始まりました.3学期には私が担当している学類生(普通の大学の学部生)3年生向けの実験があります.約3ヶ月を掛けて,ほどほどの規模のプログラム作成を行います.私が作り,担当しているプログラム実験は「Webサーチエンジン」といいまして,テキストはこちらに公開しています. この実験,結構,自信作なんです.Javaの基的なプログラミングができることだけを仮定して,漏れのない全文検索を行うWebサーエンジンを作ります.Webデータ収集を自動的に行うクローラー付き.Googleのようなページランキング機能はありませんが,一応,サーチエンジンの基機能を備えます.自慢は,このテキストが実質A4で印刷して2ページくらいであること.数学の小問を解いていくように,順番に小問を解いていくと,最後にはWebサーチエンジンができます. ミソはサフィックス・アレイ(suf

    簡単なWebサーチエンジンの作り方 - Imagine with 加藤和彦
  • How To Become A Hacker: Japanese

    なぜこんな文書を書いたか わたしは Jargon Fileの編集者で、またその他似たような有名文書いくつかの著者なので、しばしば熱心なネットワーク初心者から「ウィザード級の大ハッカーになるにはどうやって勉強すればいいの?」といったようなお尋ねメールを頂きます。でもかつて 1996 年に、こんな大事な問題を扱った FAQ や Web 文書 はみあたらないことに気がつきました。というわけで、これを書き始めました。多くのハッカーがいまやこれを決定版と見なしているし、つまり実際に決定版なんだと思います。でも、この問題について自分が唯一無二の権威だと主張するつもりもありません。気にくわなければ、自分なりのヤツをどうぞ。 この文書をオフラインで読んでいるなら、最新版は次のところにあります。 http://www.catb.org/~esr/faqs/hacker-howto.html なお、この文書の

  • 「テトリスを1時間強で作ってみた」動画の投稿者にインタビュー──「プログラミングの楽しさ伝えたい」

    1時間強でテトリスを作れるのはすごいですね。プログラミング歴を教えてください。 幼稚園のころからですね。当時,セガが「SC-3000」というパソコンを出していて,これが家にありました。あるとき,親が「ベーマガDX」(注:電波新聞社が発行していたプログラミング雑誌「マイコンBASICマガジン」の別冊。様々なパソコン用のゲーム・プログラムなどを掲載していた)を買ってきたので,そこに載っているプログラムを打ち込んでいました。 当時は「これを打ち込むとゲームができる」という認識しかなかったですが。SC-3000には顔のキャラクタがあってそれをBASICのPRINT文で表示して親に自慢げに見せていたそうです。 幼稚園のころに? はい,あまり信じてもらえないかもしれないのですけど(苦笑)。 小学校に入ってからは,PC-88(NEC製の8ビット・パソコン)もあったのですが,それはほとんど使わずに小学校4

    「テトリスを1時間強で作ってみた」動画の投稿者にインタビュー──「プログラミングの楽しさ伝えたい」
  • Rubyを最大63%高速化した中学生は超多忙!

    金井仁弘(HN:CanI)氏                    撮影:平沼久奈 ハンドルネームCanIの由来は、「“Can I”→キャナイ→カナイ」。C#、Visual Studio、Microsoft .NETとマイクロソフト製品が大好きな「.NETer」と自称する 筑波大学付属駒場中学校は、東京都内にある中高一貫の国立校だ。入学試験の偏差値と東京大学への進学率の高さから“東の筑駒、西の灘”と称される進学校である。強いのは受験だけではない。国際情報オリンピックや国際数学オリンピックでは、同校の生徒が毎年のように金・銀メダルを制するなど才能あふれる理数系人材が多数在籍している。 金井氏はこの夏の「セキュリティ&プログラミングキャンプ2009」(2009年8月12~16日)に参加し頭角を現した中学生プログラマである。 今年に入って、Ruby 1.9のフィボナッチ数列による演算(多倍長加算

    Rubyを最大63%高速化した中学生は超多忙!
  • 60分間プログラミングが面白い - 未来私考

    ニコニコ動画で人気のあるジャンルの一つに「描いてみた」というものがあります。イラストを制作する過程を高速再生して徐々に絵が完成していく様子を楽しむというものですね。合間合間に小ネタを挟んだりBGMに併せてみたり、人気のある動画は数十万再生を誇るものもありますね。 描いてみたとは (カイテミタとは) [単語記事] - ニコニコ大百科 人気の「描いてみた」動画 84,791 - ニコニコ動画 個人的なお気に入りはこのあたり。 今回紹介する動画はそのプログラミングバージョンとでもいうべきもの。実況しながら約60分で実際に遊べるゲームをプログラミングをしてしまおうというもの。 第1弾はJavascriptによるオセロの作成。メモ帳でサラサラとコードを記述しながらみるみるとプログラミングが完成していくのがとても心地よい。 第2弾はWindowsアプリケーション環境でのテトリスの作成なのですが、これ

    60分間プログラミングが面白い - 未来私考
  • アルゴリズムの紹介

    ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意していま

  • 【プログラミング】オセロを1時間で作ってみた【実況解説】

    ■最近業の調子が悪いので、気分転換にオセロを作る様子を実況してみました。■プログラムがどうやって作られるのか全くわからない方にとって、徐々にオセロが出来ていく姿が参考になれば幸いです。■一発撮りですので、ミスが多い点はご容赦ください。バグや間違いを頻発させており、気づいた人にとってはイライラ動画でしょう。お詫びいたします。■IE6.0、ペイントブラシ、メモ帳、電卓での制作です。■引き分けの判定にバグがありますね。コメントでのご指摘ありがとうございました!■今までの作品はこちら→http://void-main.org/niconicoprogram/■マイリスト→mylist/16170739

    【プログラミング】オセロを1時間で作ってみた【実況解説】
  • 【プログラミング】テトリスを1時間強で作ってみた【実況解説】 ‐ ニコニコ動画(原宿)

    【プログラミング】テトリスを1時間強で作ってみた【実況解説】 [技術・工作] ■今回は、Win32API + C言語でテトリスを作る様子を実況してみました。■徐々にテトリスが出来ていく...

    【プログラミング】テトリスを1時間強で作ってみた【実況解説】 ‐ ニコニコ動画(原宿)
  • 何故オライリーの本を買うのか - komagataのブログ

    (KLab×はてな エンジニア応援ブログコンテストへの応募エントリーです。) 会社の棚には僕の個人的な持ち物であるオライリーのが多い。最近もC++を勉強するためにとこれまたオライリーの"C++実践プログラミング"を買った。会社でC++に詳しいShu MASUDAさんは不思議そうに、 「何でそのを買ったんですか?」 と聞いてきた。確かにC++ならば他に良書が多数あるし、オライリーの"入門C++プログラミング"は大きく期待外れだったし、オライリーのの翻訳は品質もバラバラなので当然の疑問だ。 Perlがわからない 2002年の暮れ頃、深夜の会社で一人、Perlモジュールのソースをわけも分からず端から読んでいた。5日間の期限でキャンペーン応募フォームの作成を命じられたためだ。その頃の僕は専門学校での教科書レベルのCと前職で使ったVBやASPのWindows上のWebアプリ経験しか無く、Pe

  • 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
  • ソースコードの心脳問題 - プログラマーの脳みそ

    先のコードコメントに書くべきは「意図」 - プログラマーの脳みその関連でソースコードの心脳問題という話をしよう。 心脳問題というのは脳という分子機械が、いかにして心を持つのかという哲学のような脳科学のようなテーマの話題。*1紀元前にプラトンのイデア論にて意識とは何かという基礎命題は与えられていたわけだけども、古代には哲学の範疇に収まっていた。 ところが現代のコンピュータサイエンスでは、脳みそのシュミレーションがかなりの規模でできるようになってきていて、工学的に脳を作れる時代が近く迫ってきている。2007年の記事になるが 今回、現在世界最速の性能を持つ「BlueGene L」スーパー・コンピューター上に、マウスの脳の半分にあたる800万のニューロンの働きを再現させる事に成功したそうです。 使われたのは、それぞれが256MBのメモリを使用する、4096台のプロセッサを持つ「BlueGene L

    ソースコードの心脳問題 - プログラマーの脳みそ
  • 第2回 「あなたを、犯人です」 ─ デバッグという名のミステリー | gihyo.jp

    Linuxに代表されるオープンソースソフトウェア(OSS)は、文字通りソースコードを公開していることが最大の特徴です。ソースコードが企業秘密のベールに覆われている伝統的な商用ソフトウェアでは、ソースコードにアクセスできる開発者とコンパイル済みのバイナリファイルしか利用できないユーザは厳格に区別され、ユーザがソフトウェアに不具合を見つけても、開発者がそれに対応してくれるまでは指をくわえて待つしかありませんでした。 一方、ソースコードが公開されているOSSの世界では、ユーザと開発者がソースコードという同じ土俵の上で互いに切磋琢磨することができます。今回はそのような例として、ソースコードの不具合を見つけて修正した例を紹介しましょう。 今回取りあげるソフトウェアはfile-rollerという GNOME用の書庫ソフトウェアです。 file-rollerとは file-roller とは、GNOME

    第2回 「あなたを、犯人です」 ─ デバッグという名のミステリー | gihyo.jp
  • Webアプリにおける11の脆弱性の常識と対策

    Webアプリにおける11の脆弱性の常識と対策:Webアプリの常識をJSPとStrutsで身につける(11)(1/4 ページ) 連載は、JSP/サーブレット+StrutsのWebアプリケーション開発を通じて、Java言語以外(PHPASP.NETRuby on Railsなど)の開発にも通用するWebアプリケーション全般の広い知識・常識を身に付けるための連載です 【2013年2月25日】編集部より、おわびと訂正のお知らせ 稿において読者の皆さまより多数のご指摘をいただきまして、誠にありがとうございます。編集部であらためて調べた結果、間違いを把握し、あらためて修正版を掲載させていただきます。この度は、長期にわたり誤った内容を掲載したので、読者の皆さまに多大なご迷惑をお掛けしたした点をおわび申し上げます。 通常、記事に間違いがあった場合には、筆者確認後に修正版を掲載するのですが、今回の場

    Webアプリにおける11の脆弱性の常識と対策
  • 無料かつ(おそらく)最速であなたのWebアプリケーションを世界に公開する方法 - 愛と勇気と缶ビール

    無料なのは間違いないが、(おそらく)最速にしてあるところがミソ。 魔法使いに必要なもの 基的なRubyの知識 基的なhttp, htmlに関する知識 Googleアカウント 魔法使いに必要でないもの 自宅サーバ レンタルサーバ MVCとかDBとかの知識 前提 アプリケーションはGoogle App Engine(Java)の上で動かす JRuby+Sinatraで構成。JRubyはJava仮想マシン上のRuby実行環境のことで、SinatraはRubyの超お手軽・軽量Webフレームワーク。 そんじゃあ始めます。俺の環境がLinuxなので、WinやMacを使ってる方は適宜読み替えてね。 1、まずGoogle App Engineのアカウントを取得する。アプリケーションを適当に登録する。 Googleのアカウントがない人はまずそこから。既に持ってる人はGoogle App Engineに登

    無料かつ(おそらく)最速であなたのWebアプリケーションを世界に公開する方法 - 愛と勇気と缶ビール
  • オーダーを極める思考法

    プログラムの実行に掛かる時間を把握しておくのは、プログラミングを行う上で基的な注意点です。今回は、計算量のオーダーについて学びながら、TopCoderのMedium問題を考えてみましょう。 プログラムの実行時間 業務としてプログラミングをされている方には釈迦に説法かもしれませんが、プログラムの実行に掛かる時間を把握しておくのは、プログラミングを行う上で基的な注意点です。そしてこれは、TopCoderなどのコンテストでプログラムを組む際にもよく当てはまります。通常、こうしたことは感覚的に理解している方がほとんどだと思いますが、具体的にどれくらいのループを回すと何秒掛かる、といった基準を持っている人は少ないのではないでしょうか? 非常に基的なことですが、プログラムの実行時間に関して再確認しておきたいと思います。 TopCoderの制限に関して TopCoderでは、実行時間およびメモリ使

    オーダーを極める思考法
  • プログラム未経験からiPhoneアプリを作った僕が今度はiPhoneゲームを作りました。というわけで参考資料等のまとめ。 - らっこのじゆうちょう

    前回エントリ プログラム未経験の僕が初めて作ったiPhoneアプリが2月16日に発売されます!というわけで使用した参考資料等のまとめ。 2月に初のiPhoneアプリをリリースしてから半年。 今度はCocos2d for iPhoneを使ってiPhone / iPod touch向けゲーム「Star Snake」を作りました(現在Appleの審査中。リリース時価格115円) というわけで、前回より使った資料が大幅に増えたので再度まとめ。 参考書籍 たのしいCocoaプログラミング[Leopard対応版] 自作アプリをApp Storeで世界に向けて販売できる!! iPhone SDKプログラミング大全 (MacPeople Books) iPhone デベロッパーズ クックブック (大型) iPhone SDKの教科書―Cocoa Touchプログラミング、最初の一歩 (単行) ユメみる

  • あなたのソースを汚くして生産性も下げている、たったひとつの間違い - よくわかりません

    この内容には私も全面的に賛成で、クラスやフィールド、メソッド、名前空間など、とにかく文字として表れる名前には、必ず、例外なく、正しく誤解のない命名を徹底することが非常に重要だ。 http://blog.livedoor.jp/lalha/archives/50261226.html 先のエントリは、danさん*1やlalhaさんにまで言及いただき大変光栄で、なにより多くの人に読んでもらえた。多謝。 一方で、自分で読み直すと「先のエントリ」は、いくぶん観念的でいまいちよく分からないところもあるかなと思った。というわけで、より実践に結びつきやすいように、「何に気をつければいいのか」「どういう考え方でコードを書けばいいのか」を書いてみる。 lalhaさんがエントリで強調したかったという (1) 適当に書いたコードは後でとても大きな被害をもたらす可能性が高い への包括的な対策であり、 (2) たく

    あなたのソースを汚くして生産性も下げている、たったひとつの間違い - よくわかりません
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at