Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

このエントリは、PHP Advent Calendar 2021 の20日目のエントリです。19日目は @takoba さんによる PHPプロジェクトのComposerパッケージをRenovateで定期アップデートする でした。 SQLインジェクションやクロスサイトスクリプティング(XSS)の対策を行う際には「エスケープ処理」をしましょうと言われますが、その割にPHP以外の言語ではあまりエスケープ処理の関数が用意されていなかったりします。それに比べてPHPはエスケープ処理の関数が非常に豊富です。これだけ見ても、PHPはなんてセキュアなんだ! と早とちりする人がいるかもしれませんが、しかし、他言語でエスケープ処理関数があまりないのはちゃんと理由があると思うのです。 本稿では、PHPのエスケープ処理用の関数を紹介しながら、その利用目的と、その関数を使わないで済ませる方法を説明します。 SQL用
TruffleでPHPを実装したら爆速だった話です
私がプログラミングをするときの第一言語は Perl です。周囲には「私は Perl 以外のプログラミング言語はよくわかりません」と念を押すくらいには Perl ばかり書いています。 しかし、2018年の今日 Perl は一定の役割を終えた古い言語とみなされ、メインストリームからは退いたと多くの人が考えています。10年前の2008年を思い返しても、複数の対抗言語の登場で Perl に陰りがあった事は事実ですし、今日のメインストリームに Perl が居ないことを改めて言う必要も無いでしょう。 それでもなぜ私は Perl を書き続けるのか、少し考えてみました。 私と Perl 私と Perl との本格的な出会いの場は、大学院を卒業した2003年に入社したIT企業です。その会社がメインで使用していたプログラミング言語が Perl だったので自然と Perl を書くようになりました。 2003年3月
概要 1582年10月5日〜1582年10月14日までの10日間は、何らかの自然現象(ゴゴゴゴゴ)によって時間が消し去れてた期間として知られています。プログラミング言語を使ってこの日を取り扱おうとすると、いろんな結果が出力されます。 今日はそんな素敵な日付である1582年10月5日と戯れて、貴重な1日を無駄にしてみたいと思います。 Java とりあえずJavaから。バージョンは7。 // 1582/10/05をパース Date dt1 = new SimpleDateFormat("yyyy/MM/dd").parse("1582/10/05"); System.out.println(dt1); // 1582/10/04をパース Date dt2 = new SimpleDateFormat("yyyy/MM/dd").parse("1582/10/04"); System.out.p
これは 1 年 7 ヶ月 6 日 前に投稿されたものです。最新のものではありませんので、間違っているかも知れません。 そんなこと無いわけで。 さて、PHPの高速化といえば、 コード最適化 Accelerator入れる PHP Extensionを作る くらいだと思いますが、今回は「PHP Extension」を使いたいと思います。 なお、この記事で登場するPHPのバージョンは、5.3.3です。 SWIGを使う 素でPHP Extensionの作成となると、覚えることが多くて結構大変なので、「SWIG」というものを利用します。 これは、C/C++のプログラムをPHPを含めたインタプリタ言語やJava、C#などで半自動的に使えるようにしてくれるというものです。便利ですね。 「.i」というSWIGに向けた処理内容を示した「インターフェースファイル」というものを作成する必要がありますが、一度作れ
プログラマとして Symfony 歴は 2 年くらい(フルタイムではない) Symfony1 時代はほぼ知らない Java, Ruby, JavaScript, elisp, PHP github 上では JavaScript プログラマ? 代表作は power-assert Why Symfony? なぜ Symfony を選んだか 「コードがしっかりしている」 メンテ方針がしっかりしている(長期サポート, 後方互換性) DIベースの疎結合設計で自分でアーキテクチャを進化させやすい 中長期的な生産性が高まることを期待できる
TL;DR User Agent 判定器 Woothee の PHP 実装を作った Packagist には登録できてなかったりするので少々お待ちください (2014-12-18 追記 Packagist に woothee/woothee として登録しました) Woothee は便利プロジェクトなので盛り上がってほしい Woothee とは Woothee というのは @tagomoris さんが作った User Agent 判定器プロジェクトです。 Perl, Java, JavaScript, Python と、複数の言語に実装が用意されていて、元になるデータセットや、テスト用のデータセットは YAML 形式で公開されています。 詳しくは以下のブログ記事を読むのが良いでしょう。 UserAgent判定器 Project Woothee はじめました 最近の多言語対応User-Agen
開発したいプログラム ECサイト内の2つの異なる商品(値段は同じでも構わない)を購入し、その合計価格が指定の価格以内で最大になる組み合せを探してください。 →問題詳細 新人女子プログラマの野田さんが途中まで書いたプログラム Item_a_b = 4500 // a+bの価格 Item_a_c = 500 // a+cの価格 Item_a_d = 2300 // a+dの価格 Item_b_a = 1240 // b+aの価格 Item_b_c = 5020 // b+cの価格 (中略) if Item_a_b == campaign_price print “AとBの組み合わせが最大!” if Item_a_b == campaign_price -10 print “AとBの組み合わせは-10円差でおしい!” if Item_a_c == campaign_price (以下略)
ライブドアブログの PSGI 化の話 は良いはなしだと思う。一方で、私はあんまり Perl が好きじゃないので、10年にわたって生き続けた Perl アプリケーションが、次の10年にむけてアップをはじめているのは、ちょっとしたホラーでもある。 Twitter と Ruby と JVM ライブドアブログが、将来に向けて mod_perl から PSGI + Starlet にかえたように、将来に向けてプログラミング言語をかえる人達も存在する。最近の事例で有名なのは、Twitter の Ruby から JVM 言語群への移行だろう。 OSCON Java 2011 の Twitter: From Ruby on Rails to the JVM では、JVM への移行に至った理由として Ability to handle server workloads A real concurrency
市民、Rubyからようこそお帰りなさい 〜ScalaのようでJavaだけど少しScalaなJSON API〜 Javaから Rubyへ! ・・・そんな時期が、俺にもありました。 Rubyの記述力は Javaと比べて本当に魅力的で、設定より規約だ!ダックタイピングだ!なんていいながら一時期みんなして Railsに群がってたんだけど。互換性がそれほど重視されないから言語やフレームワークのバージョンアップに置いて行かれるとひどい目にあうし、タイプミスひとつさえテスト回してやらないと拾えないし、なにより実行速度がひどく遅い。そうこうしているうちに Javaの方はアノーションが積極的に使われる始めることで設定ファイルは小さくなったし、動的な型のほうが柔軟でいいというのは誰が言い始めたのか知らないが実は気のせいじゃないかと皆が気付き始めるのも無理はない。 やあ、Javaへお帰りみんな。 そうして J
「JSON文字列へのインジェクション」と「パラメータの追加」:NoSQLを使うなら知っておきたいセキュリティの話(2)(1/2 ページ) MongoDBを用いたWebアプリケーションで生じる可能性がある4種類の脆弱性のうち、今回は「JSON文字列へのインジェクション」と「パラメータの追加」のメカニズムと対策について説明します。 前回の「『演算子のインジェクション』と『SSJI』」では、MongoDBを用いたWebアプリケーションで生じうる脆弱性のうち「演算子のインジェクション」と「SSJI」について、攻撃の実例と対策について解説しました。今回はさらに、「JSON文字列へのインジェクション」と「パラメータの追加」について説明します。 JSON文字列へのインジェクション これまで見てきたように、PHP言語においては連想配列を指定してデータの登録処理や検索処理を実行できます。しかし型の扱いが厳格
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く