タグ

Programmingとprogrammingに関するf99aqのブックマーク (229)

  • 遅延評価いうなキャンペーンとかどうか - ぐるぐる~

    遅延評価については以前も書いてるんですが、そのときは結論なしでした。 が、ちょっと考えるところがあって、言語を Java に絞って自分の考えを明確にしておきます。 結論から書きましょう。 「Java(とC#) で遅延評価って書いてあるものは遅延評価ではない」です。 Java における「評価」とは まず一番最初に、Java で「評価」って言うと、どういうことを指すのかを確認しておきます。 言語仕様の該当部分を要約すると、こんな感じでしょうか。 プログラム中の式を評価すると、結果は 変数 値 無し のうちのどれかとなる。 評価した結果が値になる、というのはいいでしょう。それ以外の 2 つを軽く説明します。 評価の結果が「変数」とは? コメント欄で指摘が入っています。 代入の結果は変数ではありません(15.26)。 結果が変数となるのは、ローカル変数、現在のオブジェクトやクラスの変数、フィールド

    f99aq
    f99aq 2013/01/05
    Effective C++で遅延評価という単語を見てから余裕で混同していた模様
  • Glibc malloc internal

    SECCON 2016 Online CTF [Memory Analysis] Write-Up (ver.korean)

    Glibc malloc internal
  • PHPerのMVCの一体どこが間違っていたのか - MugeSoの日記

    メリークリスマス! PHP Advent Calendarもいよいよ24日目に突入です。 昨日はxhprofについてでしたね。僕もパフォーマンスチューニングの際に使っています。手軽に利用できるのでお勧めです。 さて、このエントリーでは表題の通りMVCについて書かせていただきます。これは、PHPカンファレンス2012&WordCamp Tokyo2012合同LT大会で発表した「やはりお前らのMVCは間違っている」で煽るだけだったこの問題をきちんと解説するものです。 この発表資料を公開するとPHPの枠を超えて広く閲覧いただき*1、また多くの方から突っ込みを戴きました。「LTだから」と言って逃げていた回答をして、気持ち新たに新年を迎えようと思います。 MVCとはなんなのか 間違いを指摘する前にMVCがそもそもどういうアーキテクチャであるのかを確認しなければいけません。 MVCは1970年代にパロ

    PHPerのMVCの一体どこが間違っていたのか - MugeSoの日記
    f99aq
    f99aq 2012/12/25
    綺麗にまとまっていて、good.
  • 非同期入出力の残念な現状

    asynchronous disk I/O | libtorrent blog Libtorrent experience - the poor state of async disk IO | Hacker News libtorrentの作者が、ディスクI/Oをパフォーマンスを向上させるために非同期I/Oを試した結果、どの環境でも残念なので、ブロックI/Oをスレッドプールで行う擬似非同期I/Oで実装したとブログを書いている。その問題について、Hacker Newsでも議論されている。 非同期I/Oは、話を聞くとたのもしい機能に思える。読み書きが完了するまでブロックせずに、完了したらOSが通知するという仕組みだ。 問題は、その実装がどの環境でも貧弱だという事だ。 環境というのは、主にOS側のことだ。多くのモダンなOSは非同期I/Oを提供している。特に著名なのがみっつある。 Linux A

  • MOVEは望まれなかった子 - the sea of fertility

    なにやらMOVEが話題です。 MVC is dead, it’s time to MOVE on. http://cirw.in/blog/time-to-move-on [翻訳]MVCは死んだ。MOVEするときがきた きしだのはてな http://d.hatena.ne.jp/nowokay/20120704 Twitterで「”MOVEは生まれた瞬間死んだ” って記事まだー?」って騒いでたら「お前が書けよ」の流れだったので息抜きに書きます。息抜きなので図が無いのは勘弁してください。 MOVEが生まれていない理由 この文中ではMOVEが生まれた理由はMVCの問題点に関わるとされており、そのMVCの問題点としてされているのは次の2点です。 MVCではControllerが肥大化する MVCは10年古い技術で設計されていて、最新のプログラミングパラダイムに対応していない。 しかしこの理由のう

  • MVCは死んだ。MOVEするときがきた - きしだのHatena

    Conrad Irwinさんの「MVC is dead, it's time to MOVE on.」を訳してみました。 MVC is dead, it's time to MOVE on. この訳文も原文のライセンスを引き継いでCC-BY-3.0ライセンスで利用可能とします。 追記13:58 すでに訳してた方がいました。MVCの時代は終わった。MOVEを使い始めましょう。 - ふじこのプログラミング奮闘記 MVCは死んだ。MOVEするときがきた MVCはすばらしいアイデアだ。モデルを持ち、モデルは内部に少しの状態をもつ。ビューは内部に少しのUIをもつ。そして、コントローラは内部に少しの・・・ 何を持つ? 私は確かにこのことに気づいた最初の人物ではない。しかし示されたようなMVCの問題のために、あなたは最後には過剰なコードをコントローラに詰め込むことになる。なぜなら、他にどこに入れていいか

    MVCは死んだ。MOVEするときがきた - きしだのHatena
  • 60%の人間はプログラミングの素質がない

    Coding Horror: Please Don't Learn to Code Please Understand Learning to Code Coding Horrorで有名なJeff Atwordが、ある州知事が今年の目標としてプログラミングを習得することを挙げていることに対し、そもそも税金を払う我々市民は、政治家にはプログラミング習得以上に重要な、政治家にしかできない問題の解決を望む、よってプログラミングを学ぶのをやめてくれという記事を書いた。これに対して、反論が多数上がっているが、Jeffも読んでいるある論文をあげて、この議論の参加するためには、必ずこの論文を知っておくべきであると書いた人がいる。この論文は有名で、非常に興味深いので、全プログラマーが読むべきである。 ふたこぶラクダという名前で知られている有名な論文がある。この論文では、60%の人間にプログラミングの素質が

    f99aq
    f99aq 2012/05/17
    一貫したメンタルモデルを構築できるか否か
  • 新卒向けカリキュラムの振り返り

    新卒向けカリキュラムを考え中の記事を書いたのが去年の8月末です。あれから半年以上、時間が経つのは早いものです。 先月、講義がひととおり終わりました。時々、講義資料のメモをここで公開しましたが、公開していなかった初回の講義メモを公開します。 新卒向け講義 Part0 ================================================== 最初に謎かけ - なぜプログラマは0から数えるのか? 今後の進め方 - カリキュラム全体像 - 4柱(プログラミング、システム、Web、開発プロセス) http://dev.ariel-networks.com/wp/archives/821 - プログラミングから開始 途中、システムと開発プロセスを並行して進めながら、Web修了でカリキュラム終了 - 週一回の講義 - 毎回、宿題(課題)を出します http://dev.ar

  • Sign in - Google Accounts

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

    Sign in - Google Accounts
  • カリー化と部分適用の違いと誤用

    kmizu @kmizu 正直に言うと、Groovy自体は別に好きでも嫌いでもないのだけど、カリー化してないのにcurryとかいうメソッド名付けてたり(標準で)、概念の無理解が目立つ部分があって、その辺がちょっと…という思いがあったり。 #scalajp #groovy 2011-09-04 19:43:37

    カリー化と部分適用の違いと誤用
    f99aq
    f99aq 2011/11/06
    カリー化は「複数引数を取る関数を1つ引数を取る関数に展開していく事」、部分適用は文字通り「引数の一部を適用した関数を作る事」として再理解した。
  • プログラミング言語Dart入門 - とくにあぶなくないRiSKのブログ

    編集中。 2011/10/16 ファクトリーコンストラクタ (Factory constructors) を追記 コメント 単一行コメント (single-line comment) // コメント 複数行コメント (multi-line comment) /* コメント コメント コメント */ ドキュメント用コメント (documentation comments) /** ドキュメント用コメント コメント コメント */ main スクリプトはトップレベル関数のmainから。 int main() { // プログラム // : } 出力 print()を使う int main() { print('Hello, world!'); } /* Hello, world! */ リテラル (literal) nullリテラル (nullLiteral) null 真偽値リテラル (bo

    プログラミング言語Dart入門 - とくにあぶなくないRiSKのブログ
  • /dev/keikyuで "ダァ!!シエリイェッス!!" - Shohei Yoshida's Diary

    Linuxデバイスドライバを書く練習。/dev/fizzbuzzにしようかと思ったけど、 なんかあれだったので。まあ中身は fizzbuzzなんですが・・・。 ソース C言語をスクラッチから書くのは慣れない・・・. #include <linux/init.h> #include <linux/module.h> #include <linux/types.h> #include <linux/kernel.h> #include <linux/fs.h> #include <linux/cdev.h> #include <linux/device.h> #include <asm/uaccess.h> #include <asm/string.h> MODULE_LICENSE("Dual BSD/GPL"); static int keikyu_open(struct inode *i

    /dev/keikyuで "ダァ!!シエリイェッス!!" - Shohei Yoshida's Diary
  • PHP5.3.7のcrypt関数のバグはこうして生まれた

    昨日のブログエントリ「PHP5.3.7のcrypt関数に致命的な脆弱性(Bug #55439)」にて、crypt関数の重大な脆弱性について報告しました。脆弱性の出方が近年まれに見るほどのものだったので、twitterやブクマなどを見ても、「どうしてこうなった」という疑問を多数目にしました。 そこで、このエントリでは、この脆弱性がどのように混入したのかを追ってみたいと思います。 PHPのレポジトリのログや公開されているソースの状況から、PHP5.3.7RC4までこのバグはなく、PHP5.3.7RC5でこのバグが混入した模様です。RC5はPHP5.3.7最後のRelease Candidateですから、まさに正式リリースの直前でバグが入ったことになります。 バグの入る直前のソースは、ここの関数php_md5_crypt_rから参照することができます。以下に、おおまかな流れを図示します。まずはバ

    PHP5.3.7のcrypt関数のバグはこうして生まれた
  • 新卒向けカリキュラムを考え中

    今後のアリエルのために、新卒の育成カリキュラムを考えています。基的にはWebプログラマとして一人前になることを目指すカリキュラムです。 教科書に自分の書いたを指定しているのは買わせて儲けようというせこい発想ではなく(直近でアリエルが大量の新卒を採るわけではないので音です)、単に教えやすいからです。誤読の可能性はゼロですし、に何が書かれていないかを完全に分かっています。 色々切り捨てて、Webでプログラミングするならこれぐらいは最低限必要、と思える分野に絞ったつもりですが…それなりに分量があります。今時のWebプログラマは大変です。教える期間は3ヶ月ぐらいと思っていましたが、全部書き出してみると無理な気がしてきました。 各論のコメントは後日、別記事で書きます。 プログラミング基礎 – Java – 教科書「パーフェクトJava (PERFECT SERIES) (PERFECT SE

  • 受け取ったUDPパケットのデスティネーションアドレスを知る方法

    マルチホームホストなどで複数のアドレスが振られている場合に、受け取ったパケットがどのアドレス宛てのものなのかを知りたい場合がある。 ソケットAPIのrecvfrom(2)では、パケットを送出した側のソースアドレスを知ることはできても、相手がどのアドレスに送ってきたのかを知ることはできない。 TCPならばaccept()後にgetsockname()で調べることができるけれども、はて、UDPではどうしたらいいのか(おまけ:TCPでもaccept前に知りたい場合があるよね)、というお話。

    受け取ったUDPパケットのデスティネーションアドレスを知る方法
  • 第48回 Webでプログラミング | WIRED VISION

    第48回 Webでプログラミング 2010年10月12日 ITハッキング コメント: トラックバック (0) フィードITハッキング (これまでの増井俊之の「界面潮流」はこちら) 文書もメールもWeb上で管理する「クラウドコンピューティング」があたりまえになってきましたが、プログラムの開発はまだ手元のパソコンの上で行なわれるのが普通です。 たとえばWindowsのプログラムを開発する場合はWindows上のVisual Studioのような開発ツールを利用するのが普通ですし、iPhoneのプログラムを開発する場合はMacintosh上のXcodeのような開発ツールを利用するのが普通です。Unix上のプログラムを開発する場合はUnixマシン上でEmacsのようなテキストエディタを使ってプログラムを作成し、Unixマシン上のコンパイラを使って実行プログラムを生成するのが普通です。いずれにしても

  • 本当は速いImageMagick: サムネイル画像生成を10倍速くする方法 - 昼メシ物語

    一般的に ImageMagick のサムネイル画像生成は遅いとされており、パフォーマンスが求められるシーンでは Imlib2 などのより高速な画像処理ライブラリが使われることが多いです。 Imlib2 の高速さについては、以前「Imlib2でImageMagickより3倍高速かつ美しいサムネイル画像の生成 - 床のトルストイ、ゲイとするとのこと」という記事で紹介しました。この記事のベンチマークにおいて、Imlib2 によるサムネイル画像の生成は、 ImageMagick の3倍程高速でした。 しかし、 ImageMagick は Imlib2 より画質がよく、高機能で使いやすく、今も頻繁にメンテナンスされており、とてもよく出来ています。その点 Imlib2 は、2004年からメンテナンスされておらず、セキュリティホールが見つかっても、各Linuxディストリビューションがそれぞれパッチを当て

  • おてがるoprofile - 簡潔なQ

    valgrindにあわせて、この前使ったoprofileの記事も書こう。 oprofileはIOIでは使えないけど、SuperConの定数倍最適化のために使った。 前回と同じように、-gオプションを付けてコンパイル。 で、以下のようなシェルスクリプトを用意した。 #!/bin/sh sudo opcontrol --reset >&2 sudo opcontrol --init >&2 sudo opcontrol --start >&2 $@ sudo opcontrol --stop >&2 sudo opcontrol --dump >&2 これを使って以下のように実行する。 $ ./profile.sh ./mecho < Day\ 2/mecho/mecho.007.in 2>/dev/nullで、プロファイル結果を表示。 $ opannotate --source mecho|

    おてがるoprofile - 簡潔なQ
  • SQLiteのテストコードは4567万8000行! 本体のコードは6万7000行

    軽量なリレーショナルデータベースとして人気のSQLite。そのWebサイトに掲載されている「How SQLite Is Tested」の内容が、海外のプログラマなどのあいだで話題になっています。 3月に公開された最新バージョンのSQLite 3.6.23。体のソースコードは約6万7200行(67.2KSLOC、Kilo Source Lines of Code:空行やコメントを除いた行数)なのに対し、テストコードはなんと4567万8300行(45678.3KSLOC)だと紹介されているのです! これはテストコードが体の約679倍もの大きさだということになります。 100%のブランチカバレッジ SQLiteコアのライブラリをテストするテストコードとして、以下の3つが紹介されています。 TCL Tests TCL Testsはもっとも古いテストコードで、TCL scripting lang

    SQLiteのテストコードは4567万8000行! 本体のコードは6万7000行
  • Burrows Wheeler Transform と Suffix Array - naoyaのはてなダイアリー

    ,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ|          あ…ありのまま 今日 起こった事を話すぜ! |i i|    }! }} //| |l、{   j} /,,ィ//|       『BWT について調べていたら Suffix Array のライブラリができていた』 i|:!ヾ、_ノ/ u {:}//ヘ |リ u' }  ,ノ _,!V,ハ | /´fト、_{ル{,ィ'eラ , タ人        な… 何を言ってるのか わからねーと思うが /'   ヾ|宀| {´,)⌒`/ |<ヽトiゝ        おれも何をされたのかわからなかった… ,゙  / )ヽ iLレ  u' | | ヾlトハ〉 |/_/  ハ !ニ⊇ '/:}  V:::::ヽ        頭がどうにかなりそうだった… // 二二二7'T'' /u' __ /:::::::/`ヽ /'

    Burrows Wheeler Transform と Suffix Array - naoyaのはてなダイアリー