タグ

phpとprogrammingに関するnobodyplaceのブックマーク (21)

  • はてなブックマーク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 つきまし

  • 【メモ】 CUIに実行ログを書き出す(1行を上書きしていく) 【PHP】

    やりたいこと フレームワークのタスクなどを実行する際に、きちんと進行しているかインジケータを表示させたい。ただし、処理数分だけ行数を重ねるのではなくて1行に上書きしていきたい。上手く説明できなくて歯がゆいんですけど、つまりこうではなくて、 doSomething ... 1/5 doSomething ... 2/5 doSomething ... 3/5 doSomething ... 4/5 doSomething ... 5/5 finished こう。 doSomething ... 5/5 finished ← この行だけで更新されていく わかりますかね… 解法:改行ではなく「キャリッジリターンを使う」 「キャリッジリターン」というのはカーソルを行末から行頭に戻すためのコードで改行コードを含まないので、そのコードまで行くとカーソルは同じ行の先頭に移動して入力を待ちます。で、次の行

    【メモ】 CUIに実行ログを書き出す(1行を上書きしていく) 【PHP】
  • 昨日、一時的にサービスが落ちていました。

    15時くらいにサーバの1つが突然繋がらなくなり、何かやっちまったのか(例えばデータベースへの過剰なアクセスとか)と思ってサーバを再起動してみたのだけど全然ダメでおろおろしていたら、しれっとこんな告知が出てました。 メンテナンス・障害情報・機能追加|さくらインターネット公式サポートサイト 平素よりさくらインターネットをご利用いただき、誠にありがとうござ います。 日、ご提供サービスにおきまして、以下の通り障害が発生いたしました。 ご利用中のお客様には大変ご迷惑をおかけしておりますことを深くお詫び 申し上げます。 影響範囲 : さくらのVPS 1Gプランの一部 IPアドレスが下記の範囲のお客様 219.94.245.15 ~ 219.94.245.134 障害内容 : サーバに接続できなくなる障害が発生しました。 障害によりVPSの意図しない再起動が発生しました。 ああうん、ドンピシャだよさ

  • 【メモ】 PDOで空文字をNULLに変換する

    #需要がどれだけあるかわかりませんが PDOを使ってデータを取得する際に、空文字をNULLに変換して取得することが出来ます。 PHP: PDO::setAttribute – Manual PDO::ATTR_ORACLE_NULLS NULL と空文字列の変換 「ORACLE」とありますが、Oracle だけでなく、全てのドライバで利用可能です。 PDO::NULL_NATURAL 変換しない PDO::NULL_EMPTY_STRING 空文字は NULL に変換される PDO::NULL_TO_STRING NULL は空文字に変換される 使用例 $connection = new PDO( 'mysql:dbname=dbname;host=your_host', 'user', 'pass' ); $connection->setAttribute( PDO::ATTR_ORAC

    【メモ】 PDOで空文字をNULLに変換する
  • MLBのデータを引っ張るためのPHPライブラリを書いてみたけど、

    MLBのデータを引っ張ってくるためのRubyライブラリ「Gameday_API」に影響されて、 とりあえずバッターの成績を引っ張ってくるようなPHPライブラリを書いてみた。 なんかこんな感じで使えるようになってます。 イチロー選手の情報を取得する require_once 'Gameday/Batter.php'; $batter = new Gameday_Batter(400085); var_dump($batter); 結果↓ object(Gameday_Batter)[1] protected 'gid' => string '2011_06_18_phimlb_seamlb_1' (length=26) protected 'pid' => int 400085 protected 'position' => string 'RF' (length=2) protected

    MLBのデータを引っ張るためのPHPライブラリを書いてみたけど、
  • Amazonアフリエイト用テスト

    目的 Amazonの商品ページを開いて、そこからなるべく少ないステップでブログエントリに貼り付けるアフリエイト用パーツを取得できるようにする。 やったこと ASINなどを与えるとその商品の情報を取得し整形して表示するプログラムを作成 Amazonの商品ページでアフリエイト用パーツを取得するBookmarkletを作成 1. ASINなどを与えるとその商品の情報を取得し整形して表示するプログラム 大体次のような感じ。 PHPベース フレームワークはSymfony PEAR::Services_Amazonを使用 【メモ】 PEAR::Services_Amazonを使って商品情報を取得(署名認証対応) – nplll サービスURLはこんな感じ。 //amazon.nplll.com/asin/[Amazon ASIN] → 特定の商品の情報を表示する あ、一応オープンになってますが、あくま

    Amazonアフリエイト用テスト
  • 【メモ】 DOMDocument::loadHTMLで文字化けする場合

    HTML文書を読み込んでパースするときに、今までは正規表現でやっていたんですが、 処理がどうしても面倒な感じになるし改変にも弱いので、DOMでやることにしてみたらば見事に嵌るなど。 読み込む文書がXMLだと問題ないんですが、HTML、特にShift-JISで書かれた文書だとなぜか文字化け。 色々と検索した結果、多分これで行けると言うのにたどり着いたのでメモ。 参考 DOM拡張モジュールでHTMLをパースする【PHP】 – Programming Magic 文字化けさせないためのポイント 読み込む文書をUTF-8に変換しておく あらかじめ日語文字列を数値文字参照に変換しておく 1. 読み込む文書をUTF-8に変換しておく PHPのデフォルト文字コードに合わせる、と言う意味です。 2. あらかじめ日語文字列を数値文字参照に変換しておく よく解らなかったんですがこれが文字化けの直接できな原

    【メモ】 DOMDocument::loadHTMLで文字化けする場合
  • PHP で凄く簡単に GET/POST 送信ができる関数を作りました | ウェブル

    以前こちらの URL で GET/POST を簡単にできるコードを書きましたが、問題があるとのことで多くの指摘を頂きました。zaru さんに正しいコードを書いて頂きましたので下記の記事をご覧ください。 PHP で凄く簡単に GET/POST 送信ができる関数を勝手に改良した | zaru blog 下記にコードを引用させて頂きます。いくらか稼働させた所 curl の方が安定していることが分かりましたので、こちらを引用させて頂きます。curl がインストールできない環境等では zaru さんの記事の別のコードを使用してください。 function wbsRequest2($method, $url, $params = array()) { $data = http_build_query($params); if($method == 'GET') { $url = ($data != '

    nobodyplace
    nobodyplace 2011/03/08
    PEARでいいじゃんと思っちゃう派
  • 知っとくと便利なPHPのテクニック9つ:phpspot開発日誌

    9 Useful PHP Functions and Features You Need to Know | Nettuts 知っとくと便利なPHPのテクニック9つが掲載されていました。 初心者の方は勿論、PHPを長年使ってる人にも使えるテクニックが載っていましたので勉強がてらにメモ。 func_get_args() 関数で可変引数 を受け取る 通常、関数といえば、次のように引数と共に定義します。 function hoge($arg1, $arg2) { } のように定義して引数を受け取りますが、好きな個数で引数を受け取りたい場合は、次のようにfunc_get_argsで受け取れます。 function hoge() { $args = func_get_args(); foreach ($args as $key=>$value) { echo "arg{$key} is $value

  • 【読書感想文】 パーフェクトPHP / 小川 雄大/柄沢 聡太郎/橋口 誠

    各所で話題になっていたPHP。 そういえばPHP関連の知識って、マニュアルとソースコードと検索結果からしか得てないなぁと気づいたので、見返す意味で読んでみた。結果、確かにこれは良書だなーと思いましたです。特にセキュリティ周り。言及されているとおり、わかりやすくて良い。 既に修正済みのものや簡単な設定で防げるもの、コーディングの基礎として大事なものまでPHPで書かれたアプリケーションに見られがちな脆弱性を具体的に網羅しており、単なる「脆弱性リスト」というだけではなくて、そもそも何を大事にしていけばアプリケーションをセキュアに保てるか?と言う部分の教育として大事なことがたくさん書かれています。ここはPHP触る人なら必ず読むべき。 PHPって言うと初心者向けか、特定のフレームワークものが多くて知識が偏りがちな印象があるけど(少なくとも昔はそうだった気がする)これは網羅的にカバーしていて凄く良

  • 【tips】 PEAR::Cache_Liteのディレクトリ構造を深くする

    レンタルサーバではmemcachedなどを使用することが出来ないので、何らかのファイルキャッシュを使うことが多いと思うんですが、いくつかのサービスではPEAR::Cache_Liteを導入しています。 Cache_Lite 規模が大きくなるとI/Oがネックになるので、ファイルキャッシュはいずれ問題になってくるのですが、小規模なサービスであればこれで十分。 で、導入自体は極めて簡単なんですけど、気になったのはディレクトリ。UNIX系サーバでは1ディレクトリにおけるファイル数は10,000くらいなので、サービスを継続しているといずれキャッシュが作れなくなってしまう。でもCache_Liteの設定(インスタンス生成時にオプションを配列で渡す)ではディレクトリを渡すだけ。今は大丈夫だけど念のためディレクトリを構造化したいな… と思ったら、ちゃんとその設定がありました。 マニュアルは細かく読まないと

  • PDO::FETCH_CLASSとgetter/setterのマジックメソッド

    わず嫌い」とはアレなものでして、長いことPDOでfetchといえばFETCH_ASSOCと思ってたんですが、なんだよ、FETCH_CLASS超便利じゃん、と言うことに気付いたのでいくつか試行錯誤してみるなど。 まぁ便利さ言うならちゃんとO/Rマッパー使えこの野郎という話ですけど、設定が面倒なときもあってついあれなので…FETCH_CLASSとマジックメソッド使ってみたかった的なアレでひとつ。 詳細はこの辺に。 PHP: 定義済み定数 – Manual PDO::FETCH_STYLE – 酔いどれコード クラス名を別途指定してやることで、オブジェクトに値を格納して返す。 サンプル class SampleObject { protected $foo; } $pdo = new PDO('mysql:host=host;dbname=test', 'user', 'pass') $st

  • 未定義の特殊文字の実体参照が含まれるXMLファイルを無理矢理パースする

    RSSを始めとするXMLで使用できるる特殊文字の実体参照は、以下の5つだけです。 (何の定義も与えられていない場合) &lt; → < &gt; → > &amp; → & &apos; → ' &quot; → " これ以外の特殊文字の実体参照(例えば&times → &timesや、∞ → &infin;)が含まれている場合、パース時にパースエラーとなって読み込めないことがあります。ブラウザで表示しようとしてもそこで途切れてしまったり、返り値がfalseになったり(例えばSimpleXML)。動作としてはそれで正しいのですが、 RSSを配信しているのが自分ではない 何らかの処理のために無理矢理読み込んでパースしたい と言うときがあります。 来であれば、パース処理の方に手を加えるべきなのでしょうが、面倒なので次のような過程を踏んでみました。 手順 HTTP_Clientなどでファイルの

    未定義の特殊文字の実体参照が含まれるXMLファイルを無理矢理パースする
  • 【メモ】Symfony1.4でのバッチ処理

    自分でしっかり理解しているとは言い難いので自信がないけど一応メモ書き。 Symfony1.2以降ではタスクを使用することでバッチ処理が書けるらしい。 (1.0系ではinit-batch的な何かだった) Symfony1.4(Symfony1.3)でバッチ処理 » 森の夢 「generate:task」コマンドを使ってタスクを作成したあと、 symfony generate:task helloworld 設定と処理を書いてあげれば、 symfony batch:helloworld という感じで実行できるという話。 おー。1.0系に比べると随分と楽。 当然、cronもそれで動く。 任意のmoduleの任意のactionを動作させるには Symfony Tasks: Getting the output of a module / action – efreedom タスク設定内の「appl

  • 【メモ】さくらインターネットでSymfonyを使う

    フレームワークを使わない管理から、俺俺フレームワークもどきに移行しかけていたのですが、そもそもフレームワークを設計する技量など無く便利な部分だけを抜き書きしただけ(autoload周りとか)だったので、これ以上カオスな状態にするのは止めようとフレームワーク導入を決定。導入するのは何にするかほんの少し考えたけど、CakePHPとZendFrameworkもよぎりましたが、CakePHPは複数プロジェクトを管理できないっぽかったし、ZendFrameworkは全然わかんないし、そもそもどれも解ってるとは言い難いので、仕事で使ってて少しはなじみがあるSymfonyを入れてみました(ただし、入れたのは1.4系。仕事で使ってるのは1.0系)。 インストールはここを参考にして、PEAR経由で。 さくらインターネットでsymfonyをインストール | ueblog レンタルサーバできちんと動くのかしら?

    【メモ】さくらインターネットでSymfonyを使う
  • 書籍「PHPによるデザインパターン入門」のGoF23パターン公開完了 - Do You PHP はてブロ

    ずいぶん時間がかかりましたが、日公開したVisitorパターンで、GoF全23パターンの公開が完了しました。 で、これに伴い、校正前の原稿テキストを(一部を除き)順次公開しようと思います。基的に『原稿テキストをHTML形式に変換したもの+図画そのまま』ですので、誤字/脱字、説明不足の箇所もあるかも知れませんがご了承ください。挿絵はありません。 http://www.doyouphp.jp/book/book_phpdp.shtml とりあえず、第1章、第4章のTemplateMethodを公開しました。残りの22パターンは週一ペースでアップしていこうかと思います。 コードの書き方がなってないとか、autoload使ってないとか、namespace使ってないとか、こんなところでこんなパターン使わねーよとか、いろいろとツッコミたい人はこれをダシにして是非Blogエントリ書いてください;-)

    書籍「PHPによるデザインパターン入門」のGoF23パターン公開完了 - Do You PHP はてブロ
  • 【メモ】 autoloadの実装について。

    autoloadの実装に少し迷ったので、Symofnyの実装を見てみた。 また、マニュアルを参考にして小さなレベルで使用できるautoloadを書いてみた。 以下、メモ。 Symfony 1.0 実務で使用しているのが1.0系なので、まずそれを。 /vender/lib/util/sfCore.class.php(抜粋) static public function splAutoload($class) { // load the list of autoload classes if (!self::$classes) { $file = sfConfigCache::getInstance()->checkConfig(sfConfig::get('sf_app_config_dir_name').'/autoload.yml'); self::$classes = include(

    【メモ】 autoloadの実装について。
  • 【メモ】ぼんやり理解のまま使ったり使わなかったりしてること

    結構、適当な好き嫌いでぼんやり理解のまま放置してること。 もうちょっと何とかしたいので列挙。 (使用言語は例によってPHP) 例外処理 特にメソッドでの処理。 メソッドで例外を投げて呼び出し側でキャッチするように処理すべきなんでしょうけど、つい、戻り値のtrue/falseで処理してしまいます。例外処理の方が楽だし応用も利くのに。心がけの問題。 Service層、Logic層 プログラムの基礎なんでしょうけども、どうもこういうレイヤーに弱いです。を参考にしながら、実地できちんと書かれたコードを読んで、それを真似て次のコードを書けば6割くらい理解できるような程度のことなんでしょうが、なかなかそれをやる気が起きないっていう。LL脳ってことなんでしょうねぇ… こちらを見てみると規模に応じて3種類のモデルが挙げられていました。 Teeda Extension featuring Goya ~アー

    【メモ】ぼんやり理解のまま使ったり使わなかったりしてること
  • 例外を使う - Do You PHP はてブロ

    via. http://d.hatena.ne.jp/uratch/20100303/1267587165、2010-03-18 - ます’s Diary - どうでもいい事100選 前のエントリにも続きますが、Javaっぽく書くのであれば、例外を使うのもそうかもしれません。 一番のメリットが、ロジックの中にCライク(?)な"戻り値が0だったら〜、そうじゃなかったら〜"みたいな処理を書かなくて済むのと、例外をcatchする箇所を絞って、エラー処理をまとめて書ける事じゃないかと思います。 たとえば、"DBに繋いでデータを取得するコード"を考えてみます。例外を使わない場合は次のようなコード。 <?php $conn = oci_connect("scott", "tiger", $db); if ($conn === false) { // エラー処理 } $stmt = oci_parse(

    例外を使う - Do You PHP はてブロ
  • テスト

    全然気づいてなかったけど、PEAR::Services_Hatenaっていうライブラリがあるんですね。 Services_Hatena しかもPEARに収録されたのは2006年のこと。 今までWSSEとか自分で実装してましたが、これ使えばそういう煩雑な部分全部省略できますね。 なんというか、まったくもって迂闊でした。 というわけで、この中のServices_Hatena_Bookmarkを使ってブックマークのポストその他をしてみるテスト。 ドキュメント Docs For Class Services_Hatena_Bookmark はてなブックマークAtomAPIとは – はてなキーワード はてなブックマークにポストする ポストはWSSE認証でログインしたのち、URLとコメントをAPIに渡してやれば完了です。はてなブックマークAtomAPIの仕様上、タイトルは自動取得されポスト時には設定で