タグ

phpに関するnobodyplaceのブックマーク (136)

  • PHPでgettextする際の注意事項というか、setlocaleの罠 - tohokuaikiのチラシの裏

    PHPでgettextを使って国際化しようとかいうとだいたいこういう記事がヒットする。 <?php // 日-日語にロケールをセットして setlocale(LC_ALL, 'ja_JP'); // 翻訳カタログが入ったmessage.moファイルのエンコードをUTF-8と宣言して bind_textdomain_codeset('message', 'UTF-8'); // message.moのディレクトリを指定して bindtextdomain('message', dirname(__FILE__)); // gettext()がコールされた際に、message.moからカタログを検索するようにして textdomain('message'); // 翻訳言語を出す echo gettext('hoge'); 罠1:message.moのディレクトリは指定したディレクトリ+ロケ

    PHPでgettextする際の注意事項というか、setlocaleの罠 - tohokuaikiのチラシの裏
  • staticメソッド内でサブクラス自身を表す際にはselfではなくstatic - Qiita

  • PHPUnitとデータプロバイダとテストケース生成

    PHPUnitのデータプロバイダという機能について、自分なりにまとめます。 データプロバイダとは何か PHPUnitで、複数のテストパターンを書くことはよくあります。この時、似たようなアサーションを何度も書くことになります。 例えば… 足し算するだけの関数をテストするとして、

    PHPUnitとデータプロバイダとテストケース生成
    nobodyplace
    nobodyplace 2018/06/06
    こんなつもりじゃなかったんだけど割とちゃんとプログラマやる羽目になってる
  • PHPを高速に動かす書き方 | utututizu

    PHPのプログラムを高速に処理をさせる書き方を紹介します。 1回1回の処理に人が知覚出来る程の差はないですが、ループの中や実行回数が多い処理では塵も積もれば山になります。 同じ処理を書くのでも、初期の実装から処理時間を意識する事で後に続く負荷テストや改修作業をずいぶん楽にしてくれます。 知ってさえいれば手間がかかる内容ではないので、是非参考にしてみてください。 インクリメント、デクリメントは後ろではなく前に 一般的に書籍でよく見るのは後ろですが、前に付けた方が高速に動きます。 for文などループでよく使うので、じわじわと効いてきます。 // 遅い例 for ( $i = 0; $i < 10000; $i++ ) { ... } for ( $i = 0; $i < 10000; $i-- ) { ... } // 速い例 for ( $i = 0; $i < 10000; ++$i )

    PHPを高速に動かす書き方 | utututizu
  • IPアドレスが指定した範囲内にあるかどうか判別する - Qiita

    アクセスしてきたIPアドレスが、サブネットマスクを含んだ指定のIPアドレスに該当するものかどうかを判断します。 $accept = '203.0.113.0/24'; $remote_ip = $_SERVER['REMOTE_ADDR']; list($accept_ip, $mask) = explode('/', $accept); $accept_long = ip2long($accept_ip) >> (32 - $mask); $remote_long = ip2long($remote_ip) >> (32 - $mask); if ($accept_long == $remote_long) { echo 'acceptable'; } else { echo 'not acceptable'; }

    IPアドレスが指定した範囲内にあるかどうか判別する - Qiita
  • 自分のはてなブックマーク一覧を取得するスクリプトが上手く動いていなかったのを修正した

    このエントリの続き。 はてなブックマークの何かが壊れて直った | mutter 結論から言うと、PHPプログラムからRSS(http://b.hatena.ne.jp/nobodyplace/rss)へのアクセスが遮断されているっぽい。20分に1回GETリクエストを投げているだけなのだけど、それが嫌がられたんだろうか。それともサーバの不調?よくわからないがSimpleXml_load_fileだけでなくfile_get_contentsでも取得出来ない(falseが返る。エラーをよく見ると503が返されてる)ので、XMLパース出来ないとかいう問題ではないみたい。 修正方法 はてなブックマークAPIのatom/feedにGETリクエストを出して文字列を取得、XMLとして読み込んで処理するようにした。 プログラム内でのはてなブックマークAPI関連の処理はすべて、「PEAR::Services_

    自分のはてなブックマーク一覧を取得するスクリプトが上手く動いていなかったのを修正した
  • 【メモ】PukiWikiのURLの短縮化

    前提 短縮URLサービスを使っても良いんだけど、URLを見てpukiwikiのリンクであることがわかると社内共有とかで便利なので、ほどほどに短縮したい。 プラグインを使う umoriguさん制作のプラグインを使う 自作プラグイン/s.inc.php – PukiWiki-official umorigu/pukiwiki.urlshortener · GitHub これで、こんな感じに短縮される http://hoge/pukiwiki/index.php?PHP%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%83%BB%E3%82%AC%E3%82%A4%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3 ↓ http://hoge/pukiwiki/?&2dc9e012b6 mod_rewriteを

  • 【メモ】楽天GOLDのFTPにPHPでファイルをアップロードする

    (今どきFTPですか?っていう議論はさておき)FTPサーバにアップロードするってこれまでも需要がありそうだったのになぜかやったことがなかったので、調べてやってみた。サンプルコードはこんな感じ。 ポイント ポート番号を「16910」で設定する パッシブモードをオンにする 割と何も難しいこと考えずに実行出来ました。 これで何がやりたいか やりたいことは、楽天市場のショップページに掲載しているバナー(セール情報など)をタイマーセットして更新する、です。バナーはショップサイト内の「共通説明文(大)」というパーツにimgタグを貼り付けることで表示させているので、これを更新する(掲載または削除)場合には、管理ページを開きログインして更新しなくてはいけません(「共通説明文(大)」に関するAPIにはGETしか実装されていない)。 ログイン自体が煩雑であるのと同時に、楽天のセールはなぜか終了時間が毎回違って

    【メモ】楽天GOLDのFTPにPHPでファイルをアップロードする
  • 楽天市場の商品ページにPHPでの処理結果を表示させる

    色々制約がある楽天市場の商品ページ。通常だとJavaScriptも使えませんが、店舗用のサーバサービスである「楽天GOLD」を使うとJavaScriptが使えます。また「楽天GOLD」のページであれば、楽天市場のページにiframeを使って埋め込むことも可能です。 楽天GOLDでは基的にhtmlしか使えないので、基的にJavaScriptでの処理になります。それでやっても良いんですが、楽天GOLDは基的にファイルサーバ的なサービスなので、処理系を作るのには向いてません。なので、プログラム処理する部分はサーバを借りてそこに置くしかありません。 で、結局流れとしては、 [自サーバ] プログラム処理して結果出力 ↓ [楽天GOLD] Ajaxで出力を取得して表示 ↓ [楽天市場] 楽天GOLDのページをiframe使って商品ページに埋め込む という感じ。 注意点 自サーバの出力を取得するた

  • PHPマイクロフレームワーク「Slim」を使ってみた

    1度使うと2度とそれ無しの生活に戻れない、それがフレームワーク。 PHPで代表的なフレームワークと言えば、「Zend Framework」とか「Symfony」とか「CakePHP」とか「FuelPHP」とか。最近だと「Laravel」というフレームワークが人気のようです。 2014年 Webアプリケーションフレームワークトレンド(PHP / Java / Ruby / Python / Perl) – Qiita これらはサービスを提供するのに必要な機能がすべて揃っている、いわゆる「フルスタック」というやつで、それさえ入れればすべて解決する(自分で何かを開発する必要は無い)一方で、インストールするにはある程度の知識と権限が必要。また少しツールを作りたいとか、小さいサービスを作りたいだけとか言った場合には、使わない機能が多すぎて逆にコストが高くなってしまいます。 で、最近流行ってるのは機能

    PHPマイクロフレームワーク「Slim」を使ってみた
  • php軽量フレームワークslimでちょっとしたアプリケーションを作る - Qiita

    よくある、ちょっとしたものを作るつもりでフルスタックな感じになっていった記録をサンプル的に書き留めておきます サンプル機能の内容に脈絡は無いです 注意 この記事はslim version2の記事です。3はPSR-7準拠でrequest,responseの書き方がガラッと変わっています。 (個人的にはその辺はフレームワーク側で穏便してくれないかと思うのですが...) 概要 マイクロフレームワークのslimを使用 DIはよくわからないのでpimpleはサービスのコンテナのような形で使用 ormlaravelに使われているEloquentを単体で使用 monolog 個人的にはちょっとしたものでも開発にロガーは必須 mailerはswiftmailer テンプレートエンジンは個人的趣味でtwig 雑感 slimは勝手にテンプレートをレンダリングしたり 余計なことをしないので $app->get

    php軽量フレームワークslimでちょっとしたアプリケーションを作る - Qiita
  • Slim Framework

    Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs. <?php use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Slim\Factory\AppFactory; require __DIR__ . '/../vendor/autoload.php'; $app = AppFactory::create(); $app->get('/hello/{name}', function (Request $request, Response $response, ar

  • Slim php フレームワークの使い方 - それマグで!

    CakePHP やfuelPHP とか Litiumuとか symfony とか zendFrameworkとか。。。全部入りのPHPフレームワークは色々と面倒だしやり方覚えるのが面倒だし。ぶっちゃけPHPとかjson返すだけでいいんだし。シンプルなモノほしいなってことで Slim を愛用しています。 Slim は Ruby の Sinatra のような軽量フレームワークです。 Slimのインストール composer が便利です。 { "require": { "slim/slim": "*" } } composer install Slim の使い方 <?php require 'vendor/autoload.php'; $app = new \Slim\Slim(array( 'debug' => true, 'log.level' => \Slim\Log::DEBUG, 'l

    Slim php フレームワークの使い方 - それマグで!
  • Eclipseでgetter/setterの自動生成

    macで開発するに当たり、半年くらい「NetBeans」を使っていたのですけど、どうもコード補完の動作が怪しいことがあって、CSSの補完をしなくなってしまうことがあるとか、他のPHPファイルのメソッドを補完してくれないとか(何か設定したら良いんでしょうけどわからなかった)、ちょっと不便に感じてきたのでWindowsで使い慣れた「Eclipse」に戻りました。出戻り。 で、Eclipseは良くも悪くもEclipseなので、大した問題も起こらず快適に使えているのですけど、NetBeansにあってEclipseにない機能で唯一欲しいなとおもったのが「getter/setter」の自動生成機能。クラス内に定義した変数の中から任意のものを選んで、getter/setterを自動生成、挿入してくれるという機能で、コンテナ的なクラスを定義しているときにとても重宝します。 Eclipseの定番と言えば、g

    Eclipseでgetter/setterの自動生成
  • 【メモ】 楽天RMS APIを使ってみるテスト

    仕事の関係で楽天市場関連の作業をしています。 楽天市場には、店舗が自分の出品している商品情報などを取得するAPI(RMS WEB SERVICE)があるのですが、ものがものだけに情報が少なく楽天のドキュメントも最低限しかない(その上、一般ユーザー向けの「楽天ウェブサービス API」と混同しやすい)んですよね。ちゃんと理解してるのは在庫連動ソフトを作ってる会社のエンジニアくらいなのかな。ま、仕方ない。 というわけで、楽天市場RMS APIの動作サンプル 特定の商品を取得する簡単なサンプルはこんな感じ。「serviceSecret」と「licenseKey」は「基設定 > 利用設定 > 利用情報」に表示されています。それらを結合しBase64エンコードして、接頭辞「ESA 」を付加してAuthorizationとして渡します。そんだけ。簡単。 取得出来るデータはドキュメント(要RMSアカウン

  • Google Analytics API v3.0でデータを取得するようにプログラムを改修

    毎月投稿している記事に「Access Report」というものがあるんですが、この記事を生成するに当たっては、 前月の「ページビュー」「訪問者」を集計して取得しDBに保存 前月の「アクセスTOP10」などのデータを集計して記事にしてMovableTypeに下書き記事として投稿 という2つのプログラムが動いています。今まで特に問題なく動いていたのですが、今月から突然動かなくなってしまいました。調べてみると、今までの僕のプログラムはGoogle APIの古いバージョンで動いていたようで、廃止予告が出てからいつ止まってもおかしくない状況で、それが5月下旬だったということのようです。全然しらなんだ。 というわけでこれを現行の仕様に合わせて改修する必要があります。 最初は、利用しているライブ来で対応してくれていないかなと思ったのですが、どうやら対応してくれていない様子。対応のためにはGoogleの公

    Google Analytics API v3.0でデータを取得するようにプログラムを改修
  • 「CREATIVE OFFICE CUE」サイトリニューアルに伴う各RSSの変更について

    CREATIVE OFFICE CUEのサイトがリニューアルされました。 オフィシャルサイトリニューアルのお知らせ – INFORMATION | CREATIVE OFFICE CUE CREATIVE OFFICE CUEのオフィシャルサイトが 12月24日(水)10時にプチ・リニューアル! メインビジュアルが大きく! ブログ系をCUE DIARYに統合して読みやすく! 出演情報が見やすく! プチ・リニューアルではありますが、クリスマス仕様にてオープン! お楽しみに!!! 実のところ、見た目のデザインが多少変わっただけで、サイト構造というかHTML構造というかは変わってないのですが、大きな変更として、今まで鈴井さん、森崎さん、戸次さんがそれぞれ書かれていたブログがそれぞれ終了し(正確に言うと「戸次式」は12/2で終了していましたが)、他のタレントさんが書き込まれていた「CUE DIAR

  • 制御文字を取り除く方法(改行コードは保持) - Qiita

    <?php preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $string); // The line feed and carriage return will be saved.

    制御文字を取り除く方法(改行コードは保持) - Qiita
    nobodyplace
    nobodyplace 2014/03/22
    制御文字を取り除く。XMLパースエラー対策のため
  • はてなブックマークAtomAPIへの接続が上手く行っていなかった件 【解決】

    この件の続き。 (訂正あり)PEAR::Services_Hatenaが上手く動いていない影響でいくつか止まってます | mutter あまりに広範囲に影響がある&今まで動いていたものがそのまま動いていないので、結局はてなに問い合わせました。 質問 3/5頃より、はてなブックマークAtomAPIが上手く動いていないようなのですが、なにか仕様変更等あったのでしょうか?実行環境は、PHP5.3+PEAR::Services_Hatenaで、ユーザーネームとパスワードで認証しようとすると401が返ります。お手数ですが調査をお願いいたします。 翌日、すぐに回答が。 回答 お問い合わせの件につきまして、3月5日にはてな各種APIでのパスワードによるWSSE認証を終了しております。 http://hatena.g.hatena.ne.jp/hatena/20140305/1394012936 つきまし

  • 【メモ】 GridSystemなどのリセットCSSを導入してXdebugが改行されなくなってしまった場合

    ダンプの結果を綺麗に整形して表示してくれるモジュール「Xdebug」はPHP開発の定番ですが、今開発しているサービスであるタイミングから表示が崩れてしまいました。具体的には改行されなくて1行になってしまう(上画像参照)。 PEAR/PECLの変更も行っていたのでサーバの設定の問題だと考えてあれこれいじっても直らず、結果的にはGridSystem導入によるリセットCSSの影響であることが解りました。なんだそれ。 具体的には、この部分。 xdebugの表示に使われている「pre」タグに「white-space: normal」が設定されてるために表示が崩れてたと。 わかってみれば超簡単なことで、難しく考えすぎてしまってました。問題の切り分けって大事ね。 というわけで 以下の設定を行って、リセットCSSの設定を上書きしてやればOK。 pre.xdebug-var-dump { white-spa

    【メモ】 GridSystemなどのリセットCSSを導入してXdebugが改行されなくなってしまった場合