タグ

PHPに関するt-murachiのブックマーク (54)

  • 【PHP8.1】PHPで簡単に非同期処理を書けるようになる - Qiita

    PHPは長きにわたり同期的、すなわち、あらゆる処理を上から順に実行していくというスタイルを取ってきました。 しかしたとえば、複数のURLからデータを取ってきて結果をまとめたいといった場合、時間のかかるHTTPリクエストは同時に投げたいですよね。 この用途にはGuzzleというライブラリが存在し、これを使えば同時にリクエストを投げられます。 しかし、ではHTTPアクセスとDBアクセスを同時にやりたい場合は? 時間のかかる計算を裏でやりたい場合は? などと考え始めると、こういった個別のライブラリでは対処しきれません。 ということで汎用的な非同期処理をPHPで書けるようにするRFCが提出されました。 PHP RFC: Fibers Introduction 人類史上ほぼ全ての期間において、人々はPHPを同期的なコードとしてのみ書いてきました。 同期的に実行されるコードのみが存在し、そしてそれを同

    【PHP8.1】PHPで簡単に非同期処理を書けるようになる - Qiita
    t-murachi
    t-murachi 2021/03/18
    構文糖衣を喧伝するのでなく、最低限の価値あるコア機能で足場を整えようという発想。とても良いと思う。
  • 駆け出しエンジニアの皆さんに知ってほしい脆弱性のこと。

    セキュリティは難しいです。 ですが、プログラミング初学者の皆さんは必要以上に萎縮せず、どんどんアプリケーションを作り、公開することにチャレンジして欲しいと私は思っています。 一方、事実として、脆弱なアプリケーションが公開されている(サーバ上でアクセス可能な状態になっている)だけで、全く無関係な第三者が被害を被る可能性があることは知っておく必要があります。 それはWordPressを使った単なるWebサイトであったとしても同じです。 また、あなたのアプリケーションが破壊されて困らないものであったり、 個人情報を保持していないものであったとしても、です。 だから、知らなかった、では済まされないこともあります。 この記事では、PHPのソースを例に、 特にプログラミング初学者が生み出しやすいアプリケーションの脆弱性について、 具体的なコードを挙げながら解説します。 なお、記事のサンプルコードはも

    駆け出しエンジニアの皆さんに知ってほしい脆弱性のこと。
    t-murachi
    t-murachi 2020/09/27
    「危険な変数」という言い方は本質を見失いそうな気がする。「汚染された値」という考え方が古典的ではあるけど、重要なのは何に使うかで、値の出処を気にせずに済む方法が正しい作法として定着すべきと思う。
  • 25年に渡る PHP の歴史

    PHPエコシステムに長年関与してきたことで知られるコントリビューターが JetBrains に入社。PhpStorm チームとともに PHP 言語とエコシステムの改善を目指す。

    25年に渡る PHP の歴史
    t-murachi
    t-murachi 2020/06/09
    え? ああ、痒いです。痒いですね、ホントに(´・ω・`)=3
  • P++: 静的型付けをめざすPHP

    PHP: pplusplus:faq PHP 8から、PHPは「PHP」と「P++」という2つの言語を提供するようになる。P++はPHPとの下位互換性を削りながら除々にPHPを静的型付け言語にする試みだ。 PHP開発者の中には2つの流派がある。PHPの源流であり現在の形である動的型付け言語としてのPHPを良しとする流派と、PHPをより強い静的型付け言語へと発展させたい流派だ。良い悪いの問題ではない。どちらの流派も正当な理由がある。しかし、ゆるふわな動的型付け言語とガチガチの静的片付け言語は同じ一つの言語として同居できない。 そこで、コードネームP++として、PHPを静的型付け言語に発展させる新しい言語の開発が提案された。P++はforkではなく、PHPと同じコードベースを共有する。PHP 8のバイナリはPHPとP++を同時に実装する。言語の切り替えは何らかの宣言によって指定する。 P++は

    t-murachi
    t-murachi 2019/08/13
    例えば `<?p++` と書くと P++ になる、とかなんだとすると、同一ファイル内で共存が可能ってことになるのかな? (perl5 の `use strict;` / `no strict;` みたいな…)
  • trimやstripが全角スペースをトリミングしない理由で盛り上がったのでまとめてみた - Qiita

    はじめに RubyのString#stripが全角スペースをトリミングしてくれないことにこの間初めて気づきました。 そこでフィヨルドブートキャンプのSlackで質問してみたところ、結構盛り上がったので記事にまとめます。 編 自分で調べたこと まず自力で調査したことをまとめます。 Javaのtrimメソッド Javaのtrimのロジックは「\u0020(半角スペース)の文字コードより大きいか小さいか」が判断基準になっています。 ただ、それが他の言語の場合同様のロジックで実装されているのかまではわかりませんでした。 RubyのString#strip(Cのコード) 前後のオフセット値を算出してそれを利用して前後のスペースのトリミングを実現しています。 ただ、C力が圧倒的に足りないのでどういうロジックでそのオフセット値を算出しているかまではわかりませんでした。 追記 RubyRuby実装、R

    trimやstripが全角スペースをトリミングしない理由で盛り上がったのでまとめてみた - Qiita
    t-murachi
    t-murachi 2019/06/20
    そもrubyよりUnicodeの方が後発なんですよね… やるとしたら他の言語でもそうであるようにUnicode対応に伴う国際化対応の一環での機能追加でしょうし、そのために既存の関数の挙動を変えることはしないでしょ(´・ω・`)
  • PHP 8でのJIT採用が可決、賛成50反対2。PHP 7.4への試験的採用は否決

    現在開発中のPHP 8にJITコンパイラを組み込むべきかどうかを決定する投票が3月28日に締め切りを迎え、賛成が50票、反対が2票と圧倒的多数で可決されたことが、発表されました。 JITコンパイラはプログラムの実行時にコンパイルを行い、ネイティブコードを生成して実行するというもの。事前にコンパイル作業が不要なためプログラムを手軽に実行できるうえ、ネイティブコードによる高速な実行が期待できることが特徴です。 投票に参加したのはPHPの開発に貢献しているプログラマなど。同時にPHP 7.4へのJITコンパイラの実験的組み込みについても投票が行われましたが、こちらは賛成18、反対36の結果となり否決されました。 PHPは2015年12月、PHP 7へと10年ぶりにバージョンアップした際、PHP 5と比較して2倍以上の大幅な性能向上を果たしています。 参考:「PHP 7」登場。10年ぶりのメジャー

    PHP 8でのJIT採用が可決、賛成50反対2。PHP 7.4への試験的採用は否決
    t-murachi
    t-murachi 2019/04/09
    誰もこれまでJIT版のPHPコンパチブル処理系を作ろうとしなかった (煽るな / cpython だって JIT やってるのにあんなに遅いんだし期待は禁物 (やめれ
  • PHPはもうダメだ、PHP万歳! | POSTD

    (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) GutenbergとWordPressに関する騒動は、PHPの終焉につながる最新記事です。深呼吸をしてください、みなさん。トロールは無視し、Mark TwainとFidel CastroとPHPとの共通点を見ていきましょう。そして、もっと重要なのは、スタートアップやスモールビジネスにとって、PHPが今でも合理的な選択である理由です。 PHPはいつから廃れ始めたのか “PHPはもうダメだ”といったブログの投稿が、登場し始めたのは2011年のようです(これより古いものを見つけたら、お知らせください)。Mediumや、mushroomsのように突然出現したcoding bootcampsを探し回れば、その唯一の共通点は、みんながPHPを嫌っているか、あるいは単に無視しているかです。どうやら、法外な値段のコー

    PHPはもうダメだ、PHP万歳! | POSTD
    t-murachi
    t-murachi 2019/03/29
    PHPが終わってるなんて誰が言ってるの? 悪名高いmagic_quotes_*系の仕様が削除された5.4のリリースが2012年、それ以降PHPへの評価はむしろマシになってる。あとクソ遅いcpythonを引き合いに出すのやめろw
  • 脆弱性が多いプログラミング言語、第2位はPHP - 第1位は?

    WhiteSource Softwareは3月19日(米国時間)、「Is One Programming Language More Secure Than The Rest?」において、過去の脆弱性情報を集計し、どのプログラミング言語がより多くの脆弱性とかかわりを持っていたのかについて伝えた。 脆弱性情報が多い順にまとめたプログラミング言語ランキングとしては、以下が報告されている。 C言語 (47%) PHP (17%) Java (12%) JavaScript (11%) Python (6%) C++ (6%) Ruby (5%) 資料: WhiteSource Software データソースはNVD (National Vulnerability Database)、各種セキュリティアドバイザリ、GitHub、そのほか人気の高いトラッキングシステムなどで集計された脆弱性情報など。

    脆弱性が多いプログラミング言語、第2位はPHP - 第1位は?
    t-murachi
    t-murachi 2019/03/26
    Cはもう、ちょっと前まで外部入力のバイト列を長さも検査せずに処理しちゃうような関数ばかりが標準ライブラリで幅きかせてた世界だししゃあないとしか…(´・ω・`) ていうかPHP…(´・ω・`)
  • 60代からでも学べるプログラミング言語はある?(@DIME) - Yahoo!ニュース

    ソニー生命保険の調査ではシニアのプログラミング熱が高まっていることがわかっている。そこで、シニアのプログラミング教室に、60代から始められる難易度の低い言語と学び方を教えてもらった。自分の親や自分がシニアになったときに役立てよう。 男性シニアの2割弱がプログラミング学習に意欲的 ソニー生命保険が2018年10月5日~10月9日に全国のシニア(50~79歳)の男女に対して行った「シニアの生活意識調査」では、「65歳以降の就労意向がある」シニアの3人に1人、「学び直し意向がある」ことがわかった。 シニアが学習したいことのトップ3は、1位「語学」2位「歴史」3位「パソコン・インターネット」。さらに学び直し意向がある男性シニアの2割弱が「プログラミング学習」に意欲的という結果になった。 プログラミングは今、小学生から大人まであらゆる世代に注目が集まっているが、シニアにまで浸透しているようだ。 60

    60代からでも学べるプログラミング言語はある?(@DIME) - Yahoo!ニュース
    t-murachi
    t-murachi 2019/03/03
    正直言語は何でもいいと思うがそれにしたって何故Web? サーバーサイドでPHPったらLinux+Apacheの設定からは逃れられんし挙動を理解するにはHTTP通信のしくみやHTMLなどを同時に抑えなきゃならず動いてもイマイチピンと文字数
  • PHPのハマりポイントのリンク集 - Qiita

    PHPのハマり情報のまとめです。主に罠な仕様、予想外の振る舞い、ドキュメントに詳しくは書いてない振る舞いについての情報をまとめていきます。ここに載ってない情報があればぜひとも教えて下さい。頂いた情報をもとに随時更新していきます。 PHPは引数が足りないときはエラーになるが、引数が多いぶんには何も言わない - Qiita PHPはときどき掛け算ができない - Qiita PHPのDateTime::ISO8601はISO8601ではない - Qiita SplFileObjectのREAD_AHEAD, SKIP_EMPTY, DROP_NEW_LINEPHPのバージョンによって挙動がバラバラな件 - Qiita PHP: iterable型はiterator_to_array()に渡しちゃいけない - Qiita PHPの正規表現で^$より\A\zがいい理由 - Qiita PHP:文字

    PHPのハマりポイントのリンク集 - Qiita
    t-murachi
    t-murachi 2019/01/24
    壮観だなおい(´・ω・`)
  • PHP って JavaScript に変換できるの?できるわけないだろ! babel-preset-php ってのが今日リリースされた?これまさか・・・。ファーーーーーーーーーーーwwwwwwwwwwww - Qiita

    PHP って JavaScript に変換できるの?できるわけないだろ! babel-preset-php ってのが今日リリースされた?これまさか・・・。ファーーーーーーーーーーーwwwwwwwwwwwwPHPJavaScriptbabel PHP (7) を Javascript (ES7) に変換するための Babel プリセット babel-preset-php日 (2017-7-12) リリースされたみたいです 正直、「は?凄すぎだろ (小並感) 」という言葉しか出てきませんww とりあえず面白そうなので試してみます! 使い方 公式の通りですが、プロジェクトを作成し babel-cli と babel-preset-php をインストールします。

    PHP って JavaScript に変換できるの?できるわけないだろ! babel-preset-php ってのが今日リリースされた?これまさか・・・。ファーーーーーーーーーーーwwwwwwwwwwww - Qiita
    t-murachi
    t-murachi 2017/07/13
    使いどころが分からん…(´・ω・`) JavaScriptそのものを書きたくない人はTypeScriptとか使うだろうしPHPの遺産を他に移植したいにしてもJavaScript選ぶ意味が分からん。
  • PHP 5からPHP 7への移行で、Tumblrはレイテンシが半分、CPU負荷も半減。テストツールでPHP 7への移行に問題ないかをチェック

    PHP 5からPHP 7への移行で、Tumblrはレイテンシが半分、CPU負荷も半減。テストツールでPHP 7への移行に問題ないかをチェック PHPの10年ぶりのメジャーバージョンアップとして昨年12月に登場した「PHP 7」は、PHP 5と比べて2倍以上の実行速度を実現するとリリース前からPHPの生みの親であるRasmus Lerdorf氏自身が説明してきました。 PHP 5からPHP 7へと内部システムのアップデートを行ったTumblrはその成果をブログで発表し、たしかにPHP 7のへ移行したことで実行速度が2倍になったことを裏付けています。 静的解析と自動テストでPHP 7への移行に問題がないかを確認 Tumblrが公開したブログ「Tumblr Engineering — PHP 7 at Tumblr」によると、Tumblrがその内部で稼働しているシステムをPHP 5からPHP 7

    PHP 5からPHP 7への移行で、Tumblrはレイテンシが半分、CPU負荷も半減。テストツールでPHP 7への移行に問題ないかをチェック
  • フリーエンジニアのIT案件ならレバテックフリーランス

    2016年11月3日(祝)、大田区産業プラザPiOにて開催された国内最大のPHPイベント「PHPカンファレンス2016」。レバテックフリーランスでは、カンファレンスセッションの登壇者のひとり・和田卓人氏にインタビューを実施しました。 テスト駆動開発の先駆者として知られる和田氏ですが、今回の講演テーマは「PHP7で堅牢なコードを書く-例外処理、表明プログラミング、契約による設計」。あえてテスト以外のテーマを設定した理由をはじめ、PHPの優位性や今注目している言語、初心者エンジニアへのアドバイスなど、幅広くお話を伺ってきました。 <この記事の要約> 1. PHPの良い点は、ゆるふわな言語に見せかけて堅牢なコードも書けるところ。悪い点は、覚えることが多くて難しいところ。 2. テストを書いていればコードの品質が高いわけではない。また、テストが書けないくらい問題を抱えたコードでも、中から改善してい

    フリーエンジニアのIT案件ならレバテックフリーランス
    t-murachi
    t-murachi 2016/11/16
    和田さんめっさイケメソだった…(´・ω・`)
  • PHP7 で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016

    2016/11/03 @ PHPカンファレンス2016 2016/12/15 @ PHPカンファレンス2016再演イベントにて改訂 2017/06/10 @ PHPカンファレンス福岡2017にて改訂 2017/06/10 @ PHPカンファレンス福岡2017講演録画 https://www.…

    PHP7 で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016
    t-murachi
    t-murachi 2016/11/04
    最近単体テスト以外の目的でAssertion書いてないなぁ…(´・ω・`)=3
  • PHP勉強会10年の歴史をふりかえる - hnwの日記

    PHP勉強会@東京が今月で10周年の節目ということで、大変めでたいですね。僕にとっては初めて参加・発表した社外勉強会だったこともあり、不思議な感慨があったりします。 そこで、ふと思いついてPHP勉強会の10年を表形式でまとめてみました。古参の人が懐古する以外の用途はほぼ無いと思いますが、現在の参加者の方や他の勉強会の運営をしている方の参考になる部分が1%くらいはあるかもしれません。 (企業名などは全て当時の名前です) 2005年 開催日 募集ページ 募集人数 会場提供 幹事 2005-06-18 (土) 第1回PHP勉強会 in Tokyo 24 株式会社HDE ELF 2005-07-23 (土) 第2回PHP勉強会 in Tokyo ? 株式会社HDE ELF 2005-08-28 (日) 第3回PHP勉強会 in Tokyo ? 株式会社ぷらっとホーム ELF 2005-09-18

    PHP勉強会10年の歴史をふりかえる - hnwの日記
    t-murachi
    t-murachi 2015/06/26
    開催頻度が高いのは純粋に羨ましい。
  • PHPでAPC/APCuのCAS機能を使うときの注意点 - hnwの日記

    PHPのAPC/APCuエクステンションをKVSとして使うときの話題です。 APC/APCuにはCAS(楽観ロックに基づくアトミックな値の書き換え)の関数として次の3つが用意されています。 apc_cas ― 古い値を新しい値に更新する apc_inc ― 保存した数値を増やす apc_dec ― 保存した数値を減らす memcachedにも同様の機能があるので一見すると悩まず使えそうですが、実は罠があります。APC/APCu自体は全ての型の変数値をストアできるのですが、これらの関数については整数しか扱えないため、この機能を使う場合に限っては最初にストアする値を整数型にしておく必要があります。整数型以外の値がストアされていた場合、型エラーとして扱われて失敗します。 これの何が罠かというと、これらの関数がfalseを返したときに、ロック競合だったのか型エラーだったのかの区別が付かないという点

    PHPでAPC/APCuのCAS機能を使うときの注意点 - hnwの日記
    t-murachi
    t-murachi 2014/10/08
    エラーの内容を取得する方法が提供されていないのか…。
  • PHP 5.4.4から==の挙動が一段と難しくなりました - hnwの日記

    PHPの==は両辺を適当に型キャストしてから比較するような演算子です。この型キャストの規則は難解すぎる上にドキュメントも不十分なため、PHPプログラマでも完璧に理解している人はほとんど居ないくらいの印象です。バグの原因になりかねないため、なるべく==を使わないようにしているPHPプログラマも多いはずです。 ところで、この==演算子の挙動がPHP 5.4.4から変更されていることはあまり知られていません。稿ではこの内容を紹介します。 Bug #54547 の騒動 まずはこの仕様変更の経緯を紹介します。 2年ほど昔、Hacker Newsで2^63付近の整数に対応する文字列をPHPで比較したときの挙動がおかしいというスレッドが盛り上がったことがありました。具体的には、PHPでは「'9223372036854775807' == '9223372036854775808'」がtrueになるとい

    PHP 5.4.4から==の挙動が一段と難しくなりました - hnwの日記
    t-murachi
    t-murachi 2014/08/25
    たのしいPHP。つか、PHPがヒドイというより、この手の混乱を避けるために最初から数値比較と文字列比較とで演算子を分けていたPerlのLarry Wallがむしろハイセンス過ぎるんだと思ってる。
  • PHPの次のバージョンはPHP 7かもしれない

    PHP: rfc:php6 PHPの次のバージョンは、PHP 6ではなく、PHP 7となる可能性があるとのこと。 敬意を説明すると、PHP 6は、次のPHPのメジャーリリースとして、2005年から盛んに開発されていたが、2010年にUnicode実装の難しさから頓挫した。言語でUnicodeを直接サポートする以外のPHP 6向けの機能は、大方PHP 5.3か5.4に取り込まれた。 この経緯のため、既存の多くのドキュメントや参考書などが、すでにPHP 5.xに存在する機能をPHP 6にやってくる新機能として紹介している。このままPHP 6を出すと、すでにPHP 6であると喧伝されているものとはことなるので、利用者が混乱するのではないか。 そういう理由で、PHPではバージョン番号6をスキップして7に行く議論があるそうだ。 ドワンゴ広告 この記事はドワンゴ勤務中に書かれた。 そういえば、今日はあ

    t-murachi
    t-murachi 2014/07/25
    バージョン番号スキップというと、どうしても Netscape を思い出してしまうのですが… ('A`)
  • JSON SQL Injection、PHPならJSONなしでもできるよ

    DeNAの奥さんと、はるぷさんがJSON SQL Injectionについて公表されています。 The JSON SQL Injection Vulnerability 不正なJSONデータによるSQL Injectionへの対策について (Json.pm+SQLクエリビルダー) 上記の記事は、主にPerlスクリプトがJSONデータを受け取るシナリオで説明されています。もちろん、この組み合わせに限定したはなしではないわけで、それではPHPではどうだろうと思い調べてみました。 JSON SQL Injectionとは 以下、はるぷさんの「不正なJSONデータによる…」にしたがってJSON SQL Injectionについて説明します。 Perl向けのSQLジェネレータの一つであるSQL::Makerにおいて、以下のスクリプトを想定します。 my ($sql, @bind) = $builde

    t-murachi
    t-murachi 2014/07/10
    これ、SQL を動的生成する必要がないんであれば、where に渡すパラメータは実際の値じゃなくて仮の値にしておいて、生成した SQL (だけ、bind list は無視) を静的に使いまわすようにするのが正解なんじゃ…
  • PHP考古学: PHP4.2.xではmb_eregは複数行モードで動作していた

    大垣さんのブログエントリに刺激を得て、古いmb_eregの挙動を調査しました。その結果、 PHP4.2.x上のmb_eregは複数行モードで動作していたことが分かりましたので報告します。 前回までのまとめ 「正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう」にて、RubyPerlPHPの正規表現では、^ と $ は、「行」の先頭と末尾を示していて、文字列の先頭と末尾を指定するには、\A と \z を使うべきであることを説明しました。そして、Rubyの場合はデフォルトが複数行モードであるので、^○○○$ という形で全体一致検索を指定したつもりでも、簡単にチェックをすり抜け重大な脆弱性に直結します。一方、PerlPHPの正規表現はデフォルトでは単一行モードであるので、文字列末尾の改行をチェックできないという問題はあるものの、重大な脆弱性に直結するケースはあ

    t-murachi
    t-murachi 2014/04/11
    時事ネタ盛り込み過ぎやて^^;