タグ

programmingに関するt_a_oのブックマーク (317)

  • iterable と iterator - methaneのブログ

    イテレータを介して見るPHPクラスの内部構造 を読んだのですが、 最近の php はちゃんと Python などの言語を参考にしてるなーと思うことが多かったのにこの仕様は残念です。 Python など多くの言語では、イテレータの取得とイテレータの使用を明確に区別しています。 Python ではイテレータを取得できるオブジェクトを iterable と呼び、イテレータを iterator と呼びます。 iterable は __iter__ メソッドを実装し、 iterator は __next__ メソッド (Python 2 では next)を実装します。 また、 iterator は同時に iterable も実装し、自分自身を返すようにします。 これにより、 for 文などは「イテレータを取得しそれをイテレートする」というシンプルな動作ができます。 iterable と iterat

    iterable と iterator - methaneのブログ
  • Create Your Own Programming Language

    Want to create a programming language, but don't feel like going through one of those expensive and boring 1000-page books ? Well, you're not alone ... The best system to create your first programming language.

  • ファイルアップローダを作ろう - 鳩舎

    How to じゃなくて、何かの言語を学ぶ、もしくはあるパラダイムにチャレンジするとき、に僕がよく使うサンプルアプリケーションとして、ファイルアップローダというのがあり、それの仕様をまとめておこうと思い至っただけです。 ちょっと研修資料っぽい感じになっちゃったけど、まぁいいか。 アプリケーションの概要 非ログイン型のファイルアップローダです。ファイルの保持先は S3 や Disk 、 DB への Blob などいくつかの選択肢が提供されます。 HTTP のフォームからファイルがアップロードされ、リストで表示されるだけの簡単なアプリケーションです。 ファイルには有効期限があり、それを過ぎるとダウンロードできなくなる、かつリストにも表示されなくなります(保存先の実ファイルも削除されていることが望ましいです)。 また、ファイルにはプライベートモードがあります。プライベートモードのファイルはリスト

    ファイルアップローダを作ろう - 鳩舎
  • GNU catを読む - 全体的な流れ - ボクノス

    GNU catのソース読んでます。長くなってきたので分割しました。 ソースコードのありか オンラインで見るときはCVSを sources Index of /coreutils/coreutils/src ソースはftpからゲットせよ。 Coreutils - GNU core utilities グローバル グローバル変数static int input_descが入力ファイルディスクリプタ。超重要。 小さな関数 usageの処理はGNU定番の超絶テク。必見。 行番号の処理が凄い。写経しよう。 解析結果 -> ボクノス - GNU catを読む - next_line_num()編 main() getopt_longは定番の処理。 fstat (STDOUT_FILENO, &stat_buf)の意味がイマイチわからん。STDOUTのfstat??何が出てくる?? 調べた。cat >

    GNU catを読む - 全体的な流れ - ボクノス
  • 本当に怖いパフォーマンスが悪い実装 #phpcon2013

    (PHPカンファレンス2013での発表内容です) Yahoo! JAPANほどの大規模サイトにおいては、小さなコードでも圧倒的に使われることで大量のコストを生み出します。実例を交えて非効率な実装と、その改善例を紹介します。 Read less

    本当に怖いパフォーマンスが悪い実装 #phpcon2013
  • 書籍『プログラミング作法』: 柴田 芳樹 (Yoshiki Shibata)

    ソフトウェア開発では、ある課題を解決するための方法は複数あることが普通です。しかし、それぞれに、長所や短所があったりして、適用すべき状況に応じて選択できることが必要です。そのためには、それぞれの長所や短所を理解しておくことが重要です。 書籍『プログラミング作法』の第1章と第2章を用いた勉強会用に作成した「勉強会ノート」には、書籍の内容を深く理解するための「説明ポイント」として、多くの設問を用意してあります。設問の中には、「〇〇とXXは、どちらがよいか説明しなさい」というのがあったりします。そして、両方の長所と短所を説明してどちらが良いと断定できないというのが期待する解答の場合があります。 しかし、そこまで質問の意図を読み取れる人は少ないです。特にプログラミング経験が浅い※人は、期待される解答の長所と短所を実際に経験したことがないため、どうしても2つの解法に白黒を着けた答えとなってしまいます

    書籍『プログラミング作法』: 柴田 芳樹 (Yoshiki Shibata)
  • LLVMによるプログラミング言語の実装 – 日曜研究室

    最近の投稿 問題: 積み木を10個積み上げるのにかかる時間は 2020/8/20 木曜日 Google の G Suit Team から “[Action Required] Remove internal links to the G Suite Domain Contact page for your organization” ていうメールが来た 2020/8/14 金曜日 NZXT H1 と ROG STRIX B550-I GAMING で組んでみた 2020/7/17 金曜日 花粉症対策2019 2019/3/16 土曜日 マルチディスプレイ時のDisplayPort問題を何とかしてみた 2019/1/12 土曜日 REALFORCEソフトウェアがインストールできない(解決済) 2018/12/6 木曜日 GeForce RTX 2080 Founders Edition を買

  • 例外設計の話

    例外設計の話。 こんな指針がいいのかなー 2013 夏 ver. 例外の目的とは? 「例外をキャッチする主な目的は、エラーの原因を取り除いて、回復すること」 via http://dobon.net/vb/dotnet/beginner/exceptionhandling.html .NET の「例外のデザインのガイドライン」にもこう書いてある。 特定の例外が特定のコンテキストでスローされる理由を把握できている場合は、その例外をキャッチするようにしてください。 回復可能な例外だけをキャッチする必要があります。たとえば、存在しないファイルを開こうとした場合に発生する FileNotFoundException は、アプリケーションで処理できる例外です。それは、アプリケーションがユーザーに問題を知らせ、ユーザーが別のファイル名を指定したり、ファイルを作成したりできるようにすることが可能だからで

    例外設計の話
  • 第3回 ブランチvs.フラグ | gihyo.jp

    とっておきの変更 ソフトウェアをいつでもリリースできるようにしろと求める継続的デリバリの広まりにより、毎日のようにソフトウェアがリリースされるようになりました。早いうちからコードを野にさらせば、隠れた問題を前もって見つけることができるからです。 短いリリース間隔に身を置くと気づくことがあります。「⁠リリースできること」と「リリースしたいこと」は、必ずしも一致しないのです。たとえば大規模なビジュアルデザインの変更やとっておきの新機能を想像してみましょう。こうした粒度の大きい変更は、たとえ動作する、つまりリリース可能な状態でも、そのまま衆目にさらしたいとは限りません。期待を裏切らない形でお披露目したい、とっておきの変更があります。息を飲む新しい体験がもたらすユーザの驚きや喜びも、ソフトウェアにとっては大切な財産だからです。 とっておきの変更を仕上げるには時間がかかります。一方で、その仕上げが終

    第3回 ブランチvs.フラグ | gihyo.jp
  • ネットワークプログラミングの基礎知識

    ネットワークプログラミングの基礎知識 ここでは IP アドレスやポート番号、クライアントとサーバの役割などを説明し、 perl・C言語・Java などでソケット (Socket) を使った HTTP クライアントや POP3 クライアント、簡単なサーバを作成してみます。 要はネットワークプログラミングをやってみよう、ということです。 このページのサンプルプログラムは、RFC などの規格に準拠した「正しい」プログラムではありません。 また、全体的にエラー処理が不十分です (今後改善する予定です)。 あくまでも概要を理解するためのサンプルととらえてください。 もし気でしっかりとしたクライアントやサーバを書きたいなら、このページを読んだ上で、 さらに RFC を熟読し、そして wget・Apache・ftp コマンドなどのソースを参考にしてください。 このページに間違いを見付けたら、掲示板

  • 俺が25歳の頃にプログラマーになる機会があった話、そしてプログラマーにならなかった話 - Line 1: Error: Invalid Blog('by Esehara' )

    いま、『計算機プログラムの構造と解釈』 を読んでいたりしていた関係で、その辺について書かれた「Javaスクールの危険 - The Joel on Software Translation Project」の文章を興味深く読んでいた。この文章を読みながら、「そういえば俺も知人の紹介でJavaを教えて派遣するという奴を受けたな」ということを思い出した。今回はそのことについて書いておこうと思った。もう時効だからいいと思う。 25歳の頃の俺 25歳の頃、俺は無職だった。当時、グッドウィルというものがあって、今じゃてんで気かなくなった企業だけど(Wikipediaを見たら廃業していた)、当時は日雇いということでブイブイ言わせていた企業だ。そこで俺は毎日をすごすための小銭を得ていた。そのときに、知人に「もしプログラマーになりたければ、Javaを教えていているところがあるよ」と言われた。俺はそれに興味を

    俺が25歳の頃にプログラマーになる機会があった話、そしてプログラマーにならなかった話 - Line 1: Error: Invalid Blog('by Esehara' )
  • Double Dispatch(二重ディスパッチ) - Strategic Choice

    師曰く段階的に次々と行われる選択を表現するために、送信される各メッセージの実装者を2つの軸に沿ってそれぞれ変動させなさい。どういうこと?Javaを含めた多くのオブジェクト指向言語はシングルディスパッチを提供しています。これは、「メッセージ」と「受け取り手オブジェクト」から実際に起動されるメソッドが決定されます。これに対して、ダブルディスパッチは、「メッセージ」と「2つの受け取り手オブジェクト」から起動されるメソッドが決まります*1。こんなイメージです。どうして?1つの次元だけの変動性を表現するのであれば、単なる「選択メッセージ」パターンで問題ありません。しかし、もし2つの独立した次元の変動性を表現する必要があるなら、「2つの選択メッセージ」を順に呼び出す必要があります。どうすれば?たとえば、「描画」と「図形」という独立した次元の変動性を考えます。「PostScript」上の「楕円」が、「ス

  • Ruby Best Practices - The Double Dispatch Dance

    EDITORIAL NOTE: This is the first of hopefully many guest posts to the RBP blog. If you are interested in writing an article for us, contact any of the RBP bloggers for details on how to submit content. Sandi Metz recently blogged about ruby case statements being similar to calling is_a? on a particular object, and how we should be using duck typing rather than inspecting the type of the class. He

    t_a_o
    t_a_o 2013/07/10
    DoubleDispatch
  • コード内で「現時刻」を気軽に取得してはいけない | Nekoya press

    日付を扱う処理についていろいろまとめたついでに、わりと簡単なことだけど知らないと落とし穴にハマる系のネタを。 日頃いろいろな処理を書いていて、現時刻を扱うこともは少なくないはずです。ですが、これを適当にやっていると困ることが多々あります。 実行中に「現時刻」を元にした処理がい違う 例えばこんなコード。ログ集計とかやってるイメージです。 class Analyzer(object): def analyze(self): logfile = datetime.datetime.now().strftime('my_log_file.%H') self.save(self.analyze_logfile(logfile)) def save(self, result): now = datetime.datetime.now() self.result[now.hour] = result

  • シンプルさの必要性 · eed3si9n

    2013-06-24 2012年4月23日にテキサスの Austin で行われた RailsConf 2012 での Rich Hickey (@richhickey) さんによる基調講演、Simplicity Matters を書き起こして翻訳しました。 Rich Hickey さんは Clojure や Datomic の作者です。 この翻訳は Creative Commons Attribution ShareAlike 3.0 ライセンスに基いて公開します。 Rich Hickey 講演 e.e d3si9n 訳 談: こんにちは。ご招待いただきありがとうございます。 聞く所によると RailsConf はいつもコミュニティーからかなり外れた人を選ぶらしく、今回は僕ということになりました。 僕の電話ボックスは外に駐車してあります。(会場、笑) だけど、今日は言語の壁を越える話題を持

  • 画像処理入門

    画像処理入門 はじめにお読み下さい Qtの機能とその使用法 Gnuplotの機能とその使用法 サンプルのダウンロード ソースコード SIDBAの標準画像(グレー) SIDBAの標準画像(カラー) コンテンツ 画像処理の世界への招待(第1章) 画像処理を体験する(第2章) 物体を抜き出す(第3章) 輪郭を抜き出す(第4章) 雑音を除く(第5章) 見やすい画像を作る(第6章) 特徴を調べる(第7章) 色を変える(第8章) 色で抜き出す(第9章) 形を変える(第10章) 周波数で処理する(第11章) copyright © 2005 Hashimoto Lab All Rights Reserved

  • 本当は怖いstrptimeと%Y%m%dの関係 | Nekoya press

    「%Y%m%d」をstrptimeで処理すると曖昧になることを今更ながらに知りました。 社内で「201312」を渡すとキモいという話が出て、 Pythonでdatetime.datetime.strptime('201312', '%Y%m%d')がエラーにならず1月2日として成立するの具合悪いと思うの — nekoya (@nekoya) June 7, 2013 ってPostしたら@hirataraさんが「2013129と2013130もキモいぞ」と教えてくれました。 普段は%Y-%-%dを使うんだけど、URLに日付を埋め込む場合はデリミタ無しの方が自然だなーと思ったらご覧の有様だよ。 Python2.7.1 >> datetime.strptime('201312', '%Y%m%d') datetime.datetime(2013, 1, 2, 0, 0) >> datetime.

  • Wikipediaのダウンロードできるデータファイル一覧 | mwSoft

    概要 記事はWikipediaのダウンロード可能なデータについてまとめたものです。 Wikipediaではクロール行為は禁止されています(ここを見る限りでは)が、代わりに全記事の情報を圧縮したファイルが公開されています。 日Wikipedia情報ダウンロードページ http://download.wikimedia.org/jawiki/latest/ 記事は2009年の10月下旬に取得した情報を元に書いています。時間が経つと結果が変わる可能性があるのでご注意ください。 事前情報 2009/10/25に確認した時点では、日Wikipediaのダウンロードページには55個のファイルが置いてありました(うち半分は更新を通知する為のRSS)。 ファイルの形式は「XML」、「MySQLのダンプ」、「テキスト」などがあります。 詳しいデータのインポート方法は、こちらのリンク集が参考になる

  • Locks, Actors, And Stm In Pictures - adit.io

    Written May 15, 2013 All programs with concurrency have the same problem. Your program uses some memory: When your code is single-threaded, there's just one thread writing to memory. You are A-OK: But if you have more than one thread, they could overwrite each others changes! You have three ways of dealing with this problem: Locks Actors Software Transactional Memory I'll solve a classic concurren

  • RailsのDebug環境を改善する | Webシステム開発/教育ソリューションのタイムインターメディア

    皆さん、Railsの開発でデバッガ使ってますか? 私は最近ようやく使うようになりました。 それまでは、Rubyistなら誰もがやっているであろう、ppデバッグ(ppで変数を表示)のみでデバッグを行なっていました。 C#でプログラムを開発していた頃は、 「デバッガ無しで開発とかありえない!大きなプロジェクトでppデバッグとか、そんな手法使えるわけないだろ」 と思っていましたが、Rubyだとデバッガ無しでも案外なんとかなってしまいます。 ppを埋め込んで変数を表示、などもお手軽にできるのが、軽量言語の素晴らしい所でもあると思います。 しかし、流石にプロジェクトの規模が大きくなるに連れて、ppデバッグだけではプログラムの流れを追いにくい、という問題に直面していました。 エラーがどこで発生したのかを確認するために、ppを至る所に埋め込んでデバッグ。そんな手法に限界を感じていた、ある日、同じプロジェ

    RailsのDebug環境を改善する | Webシステム開発/教育ソリューションのタイムインターメディア