今週もやってまいりました。 全日本デスマーチ選手権。 日本中の兵どもが、プロジェクトを破壊するために死闘を尽くします。 本日は解説にギコさんをお呼びしております。 さぁ、ギコさん、ウンコーダ選手のまなざしはどうですか? 「いやー面接じゃなにもわかりませんからねぇ。どんな荒業が飛び出すか想像もできません」 では、注目してみてまいりましょう。 おっと!ウンコーダ選手、テストコードの記述を拒否!!!!! やったことがないから、できませません!!!!! でたーーーー!!開幕早々の大技だ! 「これはすごいですね。難しそうな作業は全部拒否するATフィールドを展開して、リーダを牽制しています」 おっと、リーダ、食い下がる。 しかし、理屈にならない理屈を並べて攻撃をかわします。 「面接でみせた、一見、口が上手くてコミュニケーションが得意そうにみえるという罠にはまりましたね。現場を離れた人が面接官だとよくひ
http://rebuild.fm/44/ Androidアプリ作ろうとしてJavaプログラマ募集したらクズしかこなかった全部クズだったとか、ひどくありません? まあそれは置いといて、UIみたいに最初から仕様を決められなくて何度も作り直すようなコードはJavaは不向きみたいな話もまったく同意できないわ。 JavaじゃなくてC#だけど、昨日コードを書いていて string url = "http://www…"; のように、URLを文字列で持っていたけど、やっぱアドレス用のクラスでもったほうが安心だなって思って URI url = new URI("http://www…"); と書き直しました。 当然、このurlを参照しているところは全部エラーになります。 Javaをはじめとする静的型の言語をけなしてる人たちは、これが面倒だと思うんでしょうか。 逆にエラーの出ている箇所を片っ端から直してエ
株式会社アクトキャットのCEOのブログです。Web系スタートアップ・ベンチャー企業に興味がある人や就活生に役立ちそうな事を自由に考えて投稿しています。 Rubyist is better than PHPer、ルビー使いがペチパーより優れている理由を3つ上げます。PHPおよびPHPerはコードを書くのが嫌いPHPerは実はHTMLに毛が生えた程度しか使えない人が多いPHPは低級プログラマと過去の負債に引きずられるRubyとだけ比較してますが、Pythonと比較しても、Node.jsと比較しても別に良いでしょう。結果は一緒です。さぁPHPを投げ捨てよう!PHPおよびPHPerはコードを書くのが嫌いこの根拠は、PHPがほかの言語に比べてPaaSで動きにくい、というのを根拠にしています。PaaSで動くためには、少なくても下記の条件を満たしている必要があります。DB Schemeをコードで管理して
2,3,5,7,11,13,...と素数を順に列挙することで落ち着く人が世の中にはいるようです(参考:「素数を数えて落ち着くんだ…」)。とはいえ人力では素数を100個列挙するのさえつらいので、プログラミング言語に頼った方が落ち着けるはずです。PHPには、そんな状況で使えそうな関数が存在します。 gmp_nextprime ― 次の素数を見つける PHP: gmp_nextprime - Manual よし、この関数さえあれば落ち着けるぞ、と思いきや、マニュアルにはこんな記述もあります。 注意: この関数は素数を識別するのに確率的アルゴリズムを使用します。 誤って合成数を取得してしまうことは、まずありません。 PHP: gmp_nextprime - Manual えっ?「まずありません」ってことは少しくらいはあるんでしょうか。逆に不安で落ち着かなくなってしまいそうです。 本稿ではこの関数に
ふつーのプログラマです。主に企業内Webシステムの要件定義から保守まで何でもやってる、ふつーのプログラマです。 高学歴で長い経験に自信を持つエンジニアは他人の話を聞かなくなる、というのは広く世に知られた真理の1つである。 K自動車ICTシステム部の三浦技術担当マネージャは、そのようなエンジニアの生き見本のような人だった。初めに言葉ありき。私が聞いた三浦マネージャーの最初の言葉はこうだ。 「オブジェクト指向など、実業務では使いものにならない!」 私の名前は川嶋ミナコ。横浜市内の某所にオフィスを構えるシステム開発会社――いわゆるベンチャー企業というやつ――に勤務しているエンジニアだ。社員数は20人前後。最近は受託開発の案件はほとんどなく、大手ベンダやエンドユーザーのシステム部門に常駐して開発を行うことが多い。 K自動車への常駐もその1つだった。部品調達システムの大規模なリニューアル中で、あちこ
あれは、僕がデータベースを扱ううち最初から3件目のプロジェクトだった。 C++のソースが難解で火を吹いているという話で、自分は低スキルの若造。火にくべるには丁度良い程度のやる気と責任感をもっていた。折悪く別のプロジェクトが終了した直後だったもので投入されたのでした。 現場で『DBからデータを吸い出すツールかSQLを作ってくれ』といわれ話をきくと他社が作ったDB定義がすこぶる使いづらいという。 ER図やDB定義を見せてくださいと言ったのだけど、そんなものは無いという返事。 今ならもうここら辺で逃げ出すところですが、当時は『ふーん。』てなもんでそういうこともあるのかくらいの軽い気持ちで考えていました。 で、プロジェクトの資料をあさりまくって何とかDB定義のようなものも見つけDBのデータを調査し始めたのですが何かがおかしい。 機能の数に比して異様にテーブル数が少ないのです。 ふと周りを見ると、皆
いかにしてパスワード認証を脆弱にするか。プログラミング黎明期からずっとデベロッパーの頭を悩ませ続ける問題です。 ここでは脆弱なパスワード認証を実現するための方法を紹介します。 パスワード自動入力の禁止 不届きなブラウザがパスワードを記憶してしまうことがあります。 パスワードは間違いの無いように、ひともじひともじ、人間が入力するべきです。 <input name="pw" type="password" autocomplete="off" /> とするのは常識ですね。ブラウザのパスワード管理機能より、脳内の文字列の方がずっと安心です。 フォームを動的生成、AjaxでPOST cursor: textスタイルで偽input などで、ブラウザのパスワード保存をスキップする方法もあります。 パスワード貼り付けの禁止 貼り付けも自動入力と同罪です。onpaste属性を利用して <input nam
現在のパスワードを教えてくれるからといって、「平文で保存してる!くぁwせdrftgyふじこlp」と脊髄反射してはいけません。 JALの6桁数字パスワードがどう格納されているか? 古いシステムなのでMD5でハッシュ化していると想定しますが、もちろんsaltは付けているでしょう。 さて、そんなパスワード保管方式で、現在のパスワード問合せに応答するシステムを作ってみます。 パスワードを「567890」、saltを「hoge」として、データベースには"hoge$567890"のMD5値"4b364677946ccf79f841114e73ccaf4f"が格納されているとします。 総当りしてみましょう。 (ns six-length.core (:require [clojure.core.reducers :as r]) (:import [java.security MessageDigest
今のPHPを作ったのは、何十人もの開発者ですよ。私は1人目の開発者だったに過ぎません。 問題を解くのが好きなだけで、プログラミングは大嫌いです。 いかにプログラミングを避けるかを考えていたら、コードを再利用するためのツールとしてPHPができました。PHPは、歯ブラシみたいなものですね。毎日使うものですけど、だから何でしょう?誰が歯ブラシの本なんて読みたがります? パーザを書くのは苦手です。本当にダメなんです。今でもね。PHPには「protected属性」も「仮想メソッド」もありますよ。情報学科の教官が「重要だ」っていうやつは何でもね。僕自身は、こんなものどうでもいいと思ってますけど。プログラミングを好む人がいるのは知ってますが、全く理解できないですね。 僕はホンモノのプログラマではありませんから、やっつけ仕事ですよ。ホンモノのプログラマは、「動いてるように見えるけど、メモリリークだらけじゃ
バッファオーバーフロー攻撃の仕組みを知ろう 皆さんがよく利用しているアプリケーションにセキュリティホールが見つかり、「悪意のあるコードが実行される可能性がある」というような内容のニュースをよく耳にします。 しかし、自分でインストールしたわけでもなければ、実行させたつもりもない「悪意のあるコード」がなぜ実行できるのでしょうか? 今回は、バッファオーバーフローを利用して、ほかのアプリケーション上で悪意のあるコードが実行される仕組みについて説明していきます。
あれは私がまだ大学助手をしていたころだから3年ほど前のことだと思う。 私の勤めていた大学(情報系)では「プログラミング研究会」みたいなサークル活動が行われていて プログラミングの講義を受け持っていた私はそのサークルにちょくちょく顔を見せるようになっていた。 そこにはとびっきりかわいい女子学生が一人いたのだけれど、その子はゲームが大好きで 「自分でもゲームが作りたい」と一念発起してゲームコンテストに作品を出品することになった。 しかし、彼女はプログラミングの講義(Java)を1年くらい受けているものの、 本格的なモノを作った経験がなく、ひとりでは行き詰まりをみせているようだった。 彼女はひとりでいることが多く、パソコンに向かって黙々とプログラムを書いているのをよく見かけた。 それを気にかけていた私はたまに彼女をランチに誘うようになり、彼女の方もしだいに私に打ち解けてきた。 私たちはだんだんと
if ("0x0A" == "10") { print '(´ε` )チュッ'; } チュッ。されちゃいます。 文字列であっても整数と解釈できる文字列の場合は勝手に型変換しやがる今世紀最大の愚行を犯してしまうってのは有名な話だよね。 文字列であっても整数と解釈できる文字列の場合は自動的に整数に型変換してくれる超便利機能があるってのは有名な話だよね。 だけどなんでコレが一致するかわけがわからんかった。 0x0Aは10進数で10になるので一致する。と、言いたいところなんですがそう単純な話じゃないんだ。 以下の例を目ん玉見開いて見て欲しい。 var_dump(0x0A); var_dump("0x0A"); var_dump((int)"0x0A"); var_dump((float)"0x0A"); var_dump(intval("0x0A")); 実行結果 int(10) string(4
やぁみんな、元気かい? オレ”たち”は超テンションあがってるよ!! 今日は完全な身内ネタなんだが、タイトルに釣られた方は是非とも最後まで見て欲しい。 先にネタばらしだが、初心者が将棋で勝てたのにはトリックがある。 そう、これは将棋が強いと言い張る人に対するドッキリなのだ。 ちなみに本人にはまだネタばらしをしていないので、この記事の閲覧にてネタバレとなる。 そのため、本人が激怒したらどうしようかと震えながら執筆している。 記事を公開する前に一言謝っておこうと思う。 また、この記事内に社内っぽい気配を感じるかもしれないが、全て定時後にやっていることだけは覚えておいて欲しい。 嘘の登場人物紹介 今回の記事では、4人の人物が出てくる。 記事をわかりやすくするため、先に登場人物の紹介をしておこう。 本人たちに許可はとっていないが、Twitterのアイコンを使用して簡単に紹介させてもらう。 将棋が超強
納涼!ほんとにあった怖いコード(by CodeIQ×はてな) システム開発の仕事を始めて、はや二十年。。。 ごく普通の退屈なおじさんエンジニアですが、 長年やっていると自然とこの手のお話はたまっていくものの様で。。。 今宵はいくつかご紹介しましょう。。。 ■念のためロジック 今からおよそ20年程前。私が駆け出しだった頃のお話です。 当時のシステム開発といえば、大型のコンピュータで、COBOL(コボル)という 言語を使うものが主流でした。(多分 (^_^;) COBOLのプログラムの特徴は、上から下へ長々と処理手続きを順番に書く。。。 サブルーチンという機能は有り、一部は使っていましたが、 基本的には上から下へ、長々と処理を書くというやりかたでした。 ある意味読みやすい、ある意味非効率な書き方でした。 1つのプログラムで、1000行2000行は当たり前、酷いものになると1万行以上 という、他
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く