TL;DRPHPで動くファミコンエミュレータを作ったphp-terminal-nes-emulator画面描画は点字を使って文字出力コントローラは標準入力からfread() 経緯 2016年の2月にPHPで動くゲームボーイのエミュレータ、php-terminal-gameboy-emulator に衝撃を受けて、その実装の解説を勉強会やカンファレンスでトークしたりSoftware Design誌に書いたりしました。(*1) カンファレンスでのトークでは時間の都合もあって全体のごく一部しか話が出来ないのですが、Software Design誌では誌面をたっぷり頂いてCPU、メモリアクセス、画面表示とphp-terminal-gameboy-emulator のほぼ全域を解説出来たので満足し、その熱は落ち着いていました。 そんな中、9月に開催されたbuilderscon tokyo 201

調査の結果、これらのPHPファイルが改ざんされたことにより、Webサイトからのレスポンス内に不正なコードが、閲覧者のアクセス毎に動的に挿入されていたことが判明しました。 改ざんされたPHPファイルによって不正なコードが挿入される仕組み 改ざんされたPHPファイルには、「//istart」および「//iend」というコメントに挟まれた、図 1のような不正なPHPコードが挿入されていました(不正なPHPコードが難読化されている場合も確認しています)。 この不正なPHPコードは、外部から取得したコードを挿入する機能を持っており、特定のURLから不正なコードを受け取り、特定の位置に挿入します。 図 1: 「//istart」および「//iend」に挟まれた不正なPHPコード 挿入される不正なコード Webサイトに閲覧者がアクセスすると、改ざんされたPHPファイル中の不正なPHPコードは、図 2のよ
こちらはピクシブ株式会社 Advent Calendar 2015の2日目の記事です。 こんにちは。Vimエンジニアの kana です。 さて、皆さんもご存知の通り、WebサービスのpixivにはPHPが使用されています:PHPについては様々な噂を聞き及んでいた為、 これまでPHPとは関わらないように注意して過ごしてきましたが、pixiv.netの開発ではPHPを避けて通ることは出来ません。 仕方なくPHPを使うことになる訳ですが、 実際に使ってみると……これが予想していた以上に様々な方向から毎日新鮮な驚きを届けてくれます。 今回は実際に遭遇したPHP初心者が躓くポイントを幾つか紹介しようと思います。switch の中で continue したらswitch の直後に飛ぶ 大量のデータをループでぶん回して処理するのはよくある話です。 その中で特定の種類のデータについては処理をスキッ
![PHP初心者が仕事で躓いた4つの罠 - pixiv inside [archive]](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2f9b5697703abc478063724be69f4dce6c427a860b%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Fcdn.image.st-hatena.com%252Fimage%252Fscale%252Ff5fb65d61ed5e659327efb4c61b209f2b63301e9%252Fbackend%253Dimagemagick%253Bversion%253D1%253Bwidth%253D1300%252Fhttp%25253A%25252F%25252Fcdn-ak.f.st-hatena.com%25252Fimages%25252Ffotolife%25252Fk%25252Fka-nacht%25252F20151202%25252F20151202201442.png&f=jpg&w=240)
Photo by Robyn Jay こんにちは。谷口がお送りします。 プログラミングをこれから学ぼうとしている方の中には、「PHPを使えるようになりたい」という方も多いかと思います。PHPは日本国内に20万人もの開発エンジニアがいるともいわれ、求人案件も非常に多い言語です。広くWeb系のサービス開発、ゲーム開発などで利用されており、少し前までその多くがLAMP環境(Linux+Apache+MySQL+PHP)と呼ばれる組み合わせの開発環境で開発されていました。最近では、CakePHPやSymfonyといった、よりWebアプリケーションを素早く作れるフレームワークによる開発も増えています。 実際のサービスでは、Facebookは現在はHackというPHP互換の言語で作られていますが、少し前まではPHPで開発されていました。また、国内ではグリーやpixivなどのサービスもPHPで開発され

まずは以下のサンプルをご覧ください。サーバーはWindowsで、内部・外部の文字エンコーディングはUTF-8です。UTF-8のファイル名を外部から受け取り、Windowsなのでファイル名をShift_JISに変換してファイルを読み込んでいます。basename関数を通すことにより、ディレクトリトラバーサル対策を施しています。 <?php header('Content-Type:text/plain; charset=UTF-8'); $file_utf8 = basename($_GET['file']); $file_sjis = mb_convert_encoding($file_utf8, 'cp932', 'UTF-8'); $path = './data/' . $file_sjis; var_dump($path); readfile($path); しかし、ディレクトリト

phpbrew install時にインストールしわすれたライブラリを追加でインストールするときもphpbrew ext install でインストールできる。 ComposerRubyのgemコマンドとBundlerに相当するものだ。rubygems.orgやPyPIに相当するのはPackagistだ。PHPのモダンなライブラリとかフレームワークと呼ばれてるものはだいたいComposer対応してるので、現在では避けて通ることができない。 Getting Startedに従ってインストールしてほしい。どうやらWindowsでも動くようだ。PHPのライブラリ管理リポジトリとしてPEARとかPear2とかPyrusの名前を記憶してる方も居るかもしれないが、残念ながら全て死に体だ。 忘れてあげてくださいね。 既存のプロジェクトにComposerを導入する 拙作のzonuexe/http-a

こんにちは、エンジニアの王です。 今回はデザインパターンと、デザインパターンの中の「Strategy」について紹介したいと思います。 デザインパターンとは? 端的にいうと、「よくある問題へのよくある解決策」です。 ここでは、あくまでもソフトウェア設計の場合に限定しているのですが、さまざまなコンテキストで活かせる概念です。 「今までの経験上、この手の問題なら、この方法(パターン)でやればうまくいくよ!」という経験則は誰にでもあると思います。それがゲームの場合なら「攻略法」、料理の場合なら「レシピ」、語学の場合なら「定型文」だったりします。 ソフトウェア設計の場合、特にオブジェクト指向プログラミングにおいて言うなら、「デザインパターン」とは、過去のソフトウェア設計者が失敗に失敗を重ね、試行錯誤の中から導き出した再利用しやすいノウハウの集大成のようなものです。 そう、要するに、柔軟性、拡張性、再

この記事はPHPアドベントカレンダー2014の22日目の記事です 。 2002年3月に公開されたIPAの人気コンテンツ「セキュアプログラミング講座」が2007年6月に大幅に更新されました。そして、その一節がPHPerたちを激しく刺激することになります。 (1) プログラミング言語の選択 1) 例えば、PHPを避ける 短時日で素早くサイトを立ち上げることのみに着目するのであれば、PHPは悪い処理系ではない。しかし、これまで多くの脆弱性を生んできた経緯があり、改善が進んでいるとはいえまだ十分堅固とは言えない。 セキュアプログラミング講座(アーカイブ)より引用 「PHPを避ける」とまで言われてしまったわけで、当然ながらネット界隈では炎上を起こし、現在はもう少しマイルドな表現に変わっています(参照)。本稿では、当時のPHPの状況を振り返る手段として、この後PHPのセキュリティ機能がどのように変化
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
みなさんお仕事の進捗どうですか? 今日は ふと今こそ保守性・管理性が劇的に上がるPHPのスマートなコードの書き方まとめを俺が書くときじゃないだろうか。 — そーだい@初代ALF (@soudai1025) 2014, 8月 12 こんな軽はずみな発言をしてしまったが故にネットで触れては行けない3大炎上案件について触れる。 ※ネットで触れては行けない3大炎上案件とは?Excel関連(スクショとか) 宗教(エディタとか)PHP のこと。 で今話題の元ネタを既に@sue445さんが魚拓してくれてる。 「Hello! my name is 404 お探しのページはありませんでした!申し訳ありません。。」 http://t.co/MS8Xy0bCMz 魚拓とっててよかったw http://t.co/UvG3gzsPul — sue445 (@sue445) 2014, 8月 12 (炎上したら即
LAMP(Linux ApacheMysqlPHP)。これのインパクトと莫大な成功(バブル)、そして後に残された膨大な負債については疑う余地はないでしょう。 当時、 「P」を争うPerl(CGI)-PHP戦争 で、「お手軽」「ゆるふわ」「コピペコード」でシェアで勝ったPHPですが、慢心を抱いてクソコードの沼に沈んでいきました。 最早一部界隈では滅んだと見なされているPHPですが、実はPHPの進化は続いています。PHPerとしては 長年の宿敵であるPerl Mongerの皆様にいまどきのPHPを知って頂きたい 、それがこのトークの目標です。 というかですね、私のようなPHP大好きPHPerとしては、よくある10年前のPHP知識でDisられてもそろそろお愛想笑いしかできないのです(Perlの方もCGIとDisられるでしょうが、アレみたいなものです)。多くのPHPerも皆様同様やさしいのでそ
PHPの関数やコード例の動作確認をどのように行っていますか? 最も基本的な方法は変数や関数の戻り値を逐次、echoで出力する方法でしょう。 しかしこの方法では何度もコード編集と実行を繰り返す必要があり非効率です。デバッガやIDEの使用も解決策の1つですが、大げさすぎたりパフォーマンスの問題がある時もあります。 一方でRubyの世界を見てみるとirbやpryを使ってコンソール上でリアルタイムにコードを試す姿が一般的です。 今回はPHPで対話的なデバッグやコード実行を行えるPshSHを紹介します。 PsySH 従来の手法php -aPHPには標準で対話シェルモードがPHP5.1以降から搭載されています。 しかしこの機能を利用するには--with-readline付きでPHPがコンパイルされている必要があります。 readlineが利用できない場合はインタラクティブシェルの変わりにインタラク

なにかと dis られる言語PHP ですが、dis られる要因としては 利用者が多い(少なければそもそも話題にならない) 言語自体に開発者を導くコンパスがない 結果的に負の遺産が多く築かれる ということがあると考えています。PHP をうまく使ってご飯を食べている身としていくら dis られようと何ら弊害はないのですが、PHP は OSS で安定性・拡張性・言語自体の開発の活発さを保っておりコミュニティもとても活発な言語なので、今回は「PHP を使うとしたらこうやるといいよ」という方向性で書いてみようと思います。 あくまで個人の主観に基づいた記事です。ご了承下さい。 あくまでウェブアプリケーションを開発することを想定しています。 (それ以外の用途があるとは思いませんが) その前に、なぜPHP を使うのかPHP は書けば動くから簡単だよ という罠 この言葉を耳にしたのは専門学校時代です

Edited by Ryutaro Mori(グロースハックジャパン書いてる人) 最新記事『「グロースハックとは」 FB、Twitterの成長請負人が語るあなたの考えを覆すグロースの真実』 この度Facebookは、独自のプログラミング言語「Hack」をオープンソース化しました。 Business Insiderの元記事を基に、最新情報をお伝えします。 growth hack japan最新情報をTwitterで受け取る growth hack japan最新情報をFacebookで受け取る 「Hack」とは Facebookがこのほどリリースした「Hack」は、静的プログラミング言語と動的プログラミング言語両方の要素を持ち合わせ、迅速にコーディングを行いながら(動的の特徴)、簡単にエラーを回避出来る(静的の特徴)ことに特徴付けられます。PHPファイルとの互換性もHackの魅力の1つです。

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く