タグ

PHPに関するshawのブックマーク (308)

  • 選定した技術が1年で死んだ話 | そど

    今年の夏頃から、特にサービスとして出すわけではなく、社内で使っているシステムのリプレースを行う事になりました。主な目的はレガシーすぎる設計をある低度モダンにする事、そして他のシステムと連携出来るようにする事、です。 対象のシステム 見積書や請求書などを管理・発行している。機能はそれなりに多いがUI操作はFormベース、テーブルタグで諸情報を表示するシンプルな物。ノンフレームワークで1画面1PHPファイルな古き良き時代のコード。おそらく10年ぐらい?稼働している。当初はPHP 5.1、PostgreSQL 8.x系だったが、現在はPHP 5.6とPostgreSQL 9.6で稼働しています。 その他の社内システム かつてはノンフレームワークだったり、太古のバージョンのCakePHPだったり、PHPが4系だったりしたが、概ねCodeIgniter 3系最新版 + PHP 5.6~7.1 + P

    shaw
    shaw 2018/03/13
  • PHP コミュニティでブーメランを投げ合うのはやめよう - Frasco

    私は約7年間、PHP でプログラミングをしてきました。その間に、私が発見したもの。それはフレームワークとライブラリ(コンテンツ管理プラットフォーム周辺のエコシステムなど)、そして、PHP を選んだプログラマーたちの巨大コミュニティです。私と同じツールを使っているにせよ、いないにせよ、プログラマーたちの多くは、当の友人になりました。私が参加したカンファレンスでの基調講演の多くから判断するに、私たちはお互いに助け合い、学び、成長し、より良いソフトウェアを構築し、キャリアにおいて次のステップを踏み出すときには、一丸となってお互いをサポートしてきたと思います。そう信じているのは、私だけではないでしょう。 言語としての PHP は、「まっとう」なプログラマーたちに、皮肉を言われ、馬鹿にされ、過小評価され、批判され、嘲笑されて、最低の極みともいえるような評価を受けてきました。そのプログラマーたちは、

    PHP コミュニティでブーメランを投げ合うのはやめよう - Frasco
    shaw
    shaw 2017/11/13
  • ChatWorkとPHPと私

    PHPConference 2017 ChatWork株式会社 田中佑樹

    ChatWorkとPHPと私
    shaw
    shaw 2017/10/11
  • [それWeb] HTMLでデバイスのカメラから写真をとり、PHPでOCRにかけて文字列を返す - Qiita

    それWebでできるよ! こんにちは皆さん スマホのカメラを使って写真を撮ると、なんと文字列が返ってくる。 そんなアプリがあるような気がするのですが、現在ではブラウザでもカメラにアクセスできるので、わざわざアプリにする必要もなく ( OSの差異にあまり煩わされることなく ) Webアプリで簡単に作ることができるのではなかろうか、と考えました。 考えたらやるしか無いでしょう。 休日を利用して、ちゃっちゃか作ってみました。 あ、いつものようにPHP使いますね TL;DR 今回の見所は以下のとおりです。 HTML + JavaScriptでカメラを取る tesseract-ocrをインストールしたコンテナを作る PHPでOCRする 何がやりたいのか 掲示板とかで無線wifiのssidとか貼ってあるとき、いちいち手打ちするの面倒なんで、カメラで取ってそのままはっつけられるようになったら嬉しいのになぁ

    [それWeb] HTMLでデバイスのカメラから写真をとり、PHPでOCRにかけて文字列を返す - Qiita
  • PHPネイティブのDOMによるスクレイピング入門 - Qiita

    はじめに 淫夢要素はありません。 Simple HTML DOM Parser や Goutte の使い方は至る所で説明されていますが、PHPネイティブのDOMに関しての記事がかなり少ないので書いてみることにします。 ちなみに… Simple HTML DOM Parserは内部で何回も正規表現を使って全ての要素をパースするので、かなり遅いです。これ使うぐらいなら最初から自分で正規表現一で書いたほうがマシ。自分で正規表現を使って必要部分だけを抜き出す方法は、全ての方法の中で最も高速なので、正規表現が得意な人だったらこれでもいいと思います。 Goutteは内部でPHPネイティブのDOMを使ってます。PHPネイティブのDOMはDOMとして読ませる方法の中では最も高速なので良い方法をチョイスしていることになるのですが、そもそもGoutteに頼らなくてもそれなりに十分やっていけます。何より依存フ

    PHPネイティブのDOMによるスクレイピング入門 - Qiita
    shaw
    shaw 2017/09/06
  • 2017年にプロが今更PHPを学ぶための本、Webまとめ - BASEプロダクトチームブログ

    BASE CTOの藤川です。 リブセンスさんが運営されている転職ドラフトという転職サイトで、全員のプロフィールを読んでいて薄々気がついていたことに改めて気がつかされたのですが、BASEの方でサーバサイドに使っているメインの技術はCakePHPというフレームワークでありPHP技術なのですが、 新卒の就職先がRubyを使っていて、今、25〜27歳ぐらいになっている若手エンジニアPHPの経験がない人が増えている! という大きな問題にぶちあたりました。我々は転職いただく方の前職については、いくつか期待している流れがあります。決済、EC視点ではEC-cubeなどでPHPを扱っていた会社からの転職組というのが重要な人材供給源だったりするのですが、それ以外に「モバイル、スマホアプリ、最強のUX」というスタートアップ的な視点においては、モダンなスタートアップのサービスに携わっている経験は魅力的です。(

    2017年にプロが今更PHPを学ぶための本、Webまとめ - BASEプロダクトチームブログ
    shaw
    shaw 2017/04/27
  • コマンドラインでPHPを使うときの11のTips

    明示的 意味 แพลตฟอร์มการเรียนรู้และพัฒนาทักษะด้วยเทคโนโลยี https://suin.io เป็นแพลตฟอร์มที่ให้คุณเรียนรู้และพัฒนาทักษะทางเทคโนโลยีอย่างสะดวกสบาย เรามุ่งมั่นในการให้ความรู้และประสบการณ์ที่มีคุณค่าในการพัฒนาตนเอง pascalcase

    コマンドラインでPHPを使うときの11のTips
    shaw
    shaw 2017/03/31
  • 2017年のPHPフレームワーク——2強時代に何を学ぶべきか?

    動きの早いフロントエンド界隈や他の言語の躍進の話題に押されて、いつまでも古い知識のままPHPで開発していませんか? 知識のアップデートに役立つ、最近のフレームワークの動向を、ちょっと辛口な現状分析とともに。 私が約1年前に書いた記事の続きを書くことにしたのは次の質問を受けたからです。 Q:PHP MVCフレームワークについて近況を教えてください。(2017/2/24) A:PHPのフレームワークといえば、現時点ではLaravelとSymfonyに尽きます。これから新しいプロジェクトを始めるなら、わざわざCakePHP、Zend、CodeIgniter、Yiiなどを使う理由は見当たりません。これらのフレームワークを使い慣れているか開発経験のある開発者がいないのなら、使う理由はないでしょう。 実際に開発が始まったら、ツールやプラグインを集めたり、よくある問題への対処方法を調べたりする必要があり

    2017年のPHPフレームワーク——2強時代に何を学ぶべきか?
    shaw
    shaw 2017/03/22
  • DateTime クラスのまとめメモ - Qiita

    はじめに phpで日付関連のこと調べると、手続き型の方法が検索上位に来てあまり手続き型で書きたくないなーと思ったので、DateTimeクラスを使った日付関連のことを個人メモ的にまとめた。 サンプル 現在日時を作成 $date = new DateTime(); echo $date->format('Y-m-d H:i:s'); // 2014-08-06 21:15:49 // 文字列から $date = new DateTime('2014-08-01 23:01:05'); echo $date->format('Y-m-d H:i:s'); // 2014-08-01 23:01:05 // 数値から $date = new DateTime(); $date->setDate(2014,8,1); echo $date->format('Y-m-d H:i:s'); // 201

    DateTime クラスのまとめメモ - Qiita
    shaw
    shaw 2017/02/21
  • APIなどにfile_get_contents()を使うのはオススメしない理由と代替案

    file_get_contents() はファイルパスを指定してデータを取得するだけではなく URLを指定すればそのURLの情報を手軽にとれる関数ですが 対API等に使うと色々とハマるポイントが多いので、それを簡単に解説したものです。 ※このページ向け に書いていたものですが、コード量が多いので分割しました。 問題点 file_get_contents() は ヘッダ情報の保持ルールやタイムアウト処理に癖があるため 返却されるステータスコードや、タイムアウト時に再リクエストなどを行うような 対APIの処理では、それらを知らないと想定していない事態に陥る。 コード例と解説 以下の要件でfunctionを書くとします。 jsonが返ってくるAPIにアクセスして、jsonをarray化する。 タイムアウトは3秒とし、そうなった場合は空の配列が返ってくる。 ステータスコードが200以外で返ってきた

    APIなどにfile_get_contents()を使うのはオススメしない理由と代替案
    shaw
    shaw 2017/01/24
  • PDOに複文実行を禁止するオプションが追加されていた

    エグゼクティブサマリ PHP 5.5.21、PHP 5.6.5 以降、PHPにPDO::MYSQL_ATTR_MULTI_STATEMENTSというオプションが追加され、PDO+MySQLの組み合わせで、SQLの複文を禁止できるようになった。この設定はSQLインジェクションの緩和策として有効である。 はじめに 2013年12月に公開した PHP+PDO+MySQLの組み合わせではSQLインジェクション攻撃で複文呼び出しが可能 にて、PDOとMySQLの組み合わせで、SQLインジェクションの文脈で複文呼び出しが可能であることを報告していましたが、その後のPHPのバージョンアップで、複文実行を禁止するオプションが追加されていましたので報告します。 対象のバージョンは以下の通りです。 PHP 5.5.21 以降 PHP 5.6.5 以降 全ての PHP 7.0、7.1 前述の記事を書いた後、3大

    shaw
    shaw 2016/12/19
  • CentOS6/CentOS7にPHP5.6/PHP7をyumでインストール - Qiita

    はじめに CentOS6系の標準リポジトリのPHPバージョンは5.3、 CentOS7系の標準リポジトリのPHPバージョンは5.4です。 それ以外のバージョンを使用したい場合は、リポジトリを追加してのインストール作業が必要になります。 今回、PHP5.6, PHP7.0, PHP7.1のインストール手順について記載します。 (※2017-07-23時点の情報です) Yumリポジトリ追加 EPELとRemiリポジトリを追加します。 EPELリポジトリ [CentOS6系] yum install epel-release または rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm [CentOS7系] yum install epel-release または rpm -Uvh http

    CentOS6/CentOS7にPHP5.6/PHP7をyumでインストール - Qiita
    shaw
    shaw 2016/12/08
  • 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への移行に問題ないかをチェック
    shaw
    shaw 2016/11/16
  • PHPで利用できる配列操作系高階関数 - MANA-DOT

    PHP5.3からクロージャが利用可能であり、高階関数を積極的に利用して簡潔なコードを心がけたいのですが、一度調べておかないと意外な関数が利用可能であることに気づかなかったりするのでまとめ(個人的によく使う順)。 array_map PHP: array_map - Manual 高階関数で最も代表的と思われるもの。map-reduceのmap。配列の各要素をクロージャを用いたマッピングを行い、別の配列を作ります。 <?php $prices = [100, 200, 300]; $taxInPrices = array_map(function($price) { return $price * 1.08; }, $prices); var_dump($taxInPrices); // array(3) { // [0]=> float(108) // [1]=> float(216) /

    PHPで利用できる配列操作系高階関数 - MANA-DOT
    shaw
    shaw 2016/11/11
  • 安全なPHPアプリケーションの作り方2016

    PHPカンファレンス2020での講演資料です。 アジェンダ 誤解1: Cookieは誤解がいっぱい 誤解2: 脆弱性があるページにのみ影響がある 誤解3: 脆弱なECサイトはセキュリティコードを保存している 誤解4: クレジットカードをサイトに保存すると漏洩リスクが高まる 誤解5: ハッシュ値で保存されたパスワードは復元されない 誤解6: 高価なSSL証明書ほど暗号強度が高い 誤解7: TRACEメソッドの有効化は危険な脆弱性である 誤解8: 怪しいサイトを閲覧すると情報が盗まれたりウイルスに感染する 誤解9: イントラのウェブサイトは外部からは攻撃できない 誤解10: セキュリティ情報はウェブで収集する

    安全なPHPアプリケーションの作り方2016
  • PHPでは正規表現コンパイル結果のキャッシュが暗黙に行われている - hnwの日記

    筆者がPHPをさわり始めたころ、「PerlのコレはPHPではどうやるんだろう?」と思うことが頻繁にありました。一部の疑問については解説を見つけたり自分でソースコードを読んだりして解決したものの、考えるのをやめてしまったものもあります。その一つが正規表現コンパイル結果の保存に関するもので、最近まで完全に忘れていました。 正規表現のコンパイルというのは与えられた正規表現を解釈して実行しやすいデータ構造に変換する作業のことを指します。具体的にはDFA(決定性有限オートマトン)を構成するか、正規表現エンジン内部で用いられるVM命令列に変換するかといった処理になります。これらは複雑な処理ですので、性能の観点で言えば同じ正規表現に対するコンパイル処理はできるだけ繰り返したくありません。 Perlの場合、/foobar/ のようなスタティックな正規表現のコンパイルは1回しか行われません。一方で、正規表現

    PHPでは正規表現コンパイル結果のキャッシュが暗黙に行われている - hnwの日記
    shaw
    shaw 2016/10/31
  • composer 導入をまじめに考える - Qiita

    これは結構大きいPHPプロジェクトに composer を導入する機会があったので、そのときに考えてたことや行ったこと、使い方などをメモするために書いた。 モチベーション 私達は PHP のパッケージの管理を管理する際は pear と git submodule を利用していた。これらのやり方は意外と長続きした。これらにはついて様々な問題を抱えており、ついに限界がきてしまった。 pear pear でパッケージを導入するには root 権限が必要なので、毎回インフラチームに導入を依頼するのが必要があった。 pear で導入されたパッケージについてバージョンを上げようとすると、全APサーバーで更新をかける必要があった。 これらの点から面倒だったのと、気軽に変更できないので、不要になったものも削除されることなく、放置されるのが問題だった git submodule こちらは pear とは異

    composer 導入をまじめに考える - Qiita
    shaw
    shaw 2016/10/17
  • PHP5.3で継承して使うSingletonをちゃんとやる - 絶品ゆどうふのタレ

    発端 02:51:51 (sotarok) で, hoge_klass::get_instance() も,同じように動くようにしたい,でも,hoge_klass には, get_instance を再実装したくないよね 略しすぎてなんだか分からない人のために言っとくと、まぁSingletonの実装ってメンドいから継承したいよねと。 昔、Objective-Cでもそれやったけど 継承して使えるSingletonクラス - ゆどうふろぐ PHP5.3で遅延静的束縛ができたから、継承できるSingletonを実装できるようになったから。 まぁあちこちサンプルあるけど、なんかcloneとかconstructとかちゃんとやって無いし。 で、まぁノリで書いてみたらfinalとかがcloneやconsructに付けられるという事実が分かって*1、なんか思ったよりきちんと重複を排除できる感じで、継承して

    PHP5.3で継承して使うSingletonをちゃんとやる - 絶品ゆどうふのタレ
    shaw
    shaw 2016/10/14
  • 小規模PHPアプリケーションをDeployerでサッとデプロイする話 - コネヒト開発者ブログ

    こんにちは! 東京なのに周辺にポケストップが1つもない田舎に住んでいます、@fortkle です(世田谷公園の徒歩圏内に引っ越したいです)。 さて、みなさんはPHPアプリケーションのデプロイツールに何を使っているでしょうか。 今回コネヒトで Deployer というPHPで書かれたデプロイツールを採用したのですが、なぜDeployerなのかという理由と、実際に使っているおすすめの設定をいくつか共有したいと思います。 ※ Deployerのインストール方法や基的な使い方を知りたい場合は既にインターネット上に良い記事がたくさんあるのでそちらを参考にしてみてください。 デプロイツール、どうする? 今回、新しく小規模PHPアプリケーションをデプロイする機会があったため下記の条件で新しくデプロイツールの選定を行いました。 PHPのアプリケーションなので デプロイツールもPHP製のもの を採用したい

    小規模PHPアプリケーションをDeployerでサッとデプロイする話 - コネヒト開発者ブログ
    shaw
    shaw 2016/07/29
  • Composerを速くするために必要だったもの // Speaker Deck

    PHPカンファレンス関西2016の基調講演です。

    Composerを速くするために必要だったもの // Speaker Deck
    shaw
    shaw 2016/07/19