php

巨大なpng画像をjpegに変換しようとするとエラーになる

でかいpng画像をjpegに変換しようとするとエラーになる話。 変換しようとした画像は、101000 x 2400の画像。 $ identify sample.png sample.png PNG 101000x2400 101000x2400+0+0 8-bit DirectClass 495MB 0.000u 0:00.000 convertコマンドを使って変換しよ…

igo-PHPを使って形態素解析をやってみる

形態素解析と言うとMecabやらChasenやらKuromojiやらを使ってやる場合が多いんだけど、いざPHPでやろうとするとそれぞれにバインディングを準備したりして意外と面倒臭い。 ぼやぼや探していると、igo-PHPというお手軽そうなものがあるので、以下のサイトを…

zoomify-image-phpを修正した

php

Zoomifyという画像表示ソフトウェア向けに画像を加工するプログラムを探していた。加工のプログラム自体はPythonやRuby、Windowsなど色々あったのだけど、今後の扱いを含めるとPHP版で準備したかった。 探してみた で、色々と探してみるとZoomifyImage porte…

Mysql/MariaDBとPHPでデータを暗号化、復号化する

Mysql/MariaDBの場合 -- AESで暗号化。BLOB型(バイナリ)で入れるならHEX()は不要 -- "E0827B40347D3227B65775B8226A1BF1"が返ってくる select HEX( AES_ENCRYPT('hogehoge', 'cryptkey') ); -- AESで暗号化されたものを復号化。BLOB型(バイナリ)で入れてある…

PHP経由でダウンロードしたファイルが壊れてしまう

php

現象 PHPを経由してダウンロードさせたファイルが壊れてしまう 原因 PHPないからファイルを出力する際に出力バッファに残ったゴミが一緒に出力されてしまい、結果ファイルが壊れてしまう 対策 出力バッファの中に残ったゴミが問題なので、ファイルの中身を出…

file_get_contents()と readfile() をベンチで比較してみた

php

PHPでファイルの中身をそのまま出力する際に、file_get_contents() を使う場合と readfile() を使う場合があって、あんまり考えてなかったのだけど、改めて調べてみた。 単純に比較してもよく分からなかったので、PHPで簡単にベンチとるならUbenchがよさげ …

PHPでXMLファイルを配列に簡単に変換する

php

なんか色々使うの面倒くさいなぁっと思ってたら簡単な方法が紹介されてた。 ref. PHPでXMLをArrayに変換する多分一番簡単な方法 $xml = file_get_contents("sample.xml"); $array = json_decode(json_encode(simplexml_load_string($xml)), true); var_dump(…

n次元の距離と類似度を計算する

php

n次元の距離と類似度を計算する 類似度と距離 - CatTail Wikiのサイトを見ながら、簡単そうなのをPHPで書いてみた。探せば普通にライブラリがありそうだが、はじめに手を動かすくらいはする。他にも色々載ってるのだけど、簡単そうなものだけピックアップ。 …

画像の類似度を判定するためのライブラリ Libpuzzleを試してみる

php

Libpuzzleは画像の類似度を計算することができるPHPのライブラリ。extensionの形で導入するので、コンパイル等が必要。 以下のサイトを参考に - libpuzzleを使ってみる - phpでlibpuzzleを使ってみる【備忘】 - how to install the libpuzzle extension for …

Atomエディタでatom-beautifyを使ってPHPのソースコードを整形する(追記あり)

使っているPCが凄まじく貧弱なのが悪いのだけど、今まで使ってきたEclipseの遅さに耐え切れなくなってきた。しかたがないので幾つかのIDEを触ってみたのだけど、ぶっちゃけAtomエディタでいいんじゃないかという結論に陥ってしばらく前から使ってみている。 …

Composerを触ってみる

php

使い方 Composerが動作にはPHP 5.3.2以上が必要 1. composer.pharをダウンロードする $ curl -sS https://getcomposer.org/installer | php #!/usr/bin/env php All settings correct for using Composer Downloading... Composer successfully installed to…

公共クラウドの動作確認

php

先日公開された観光地情報を提供する公共クラウドについて動作確認をしてみた。 - 自治体の観光情報をまとめたウェブサイト開設--オープンデータで活用、APIも提供 - 「全国移住ナビ」及び「公共クラウド」の供用開始 - 公共クラウドシステム ひとまずPHPで…

多言語の混ざったCSVを出力する

普通にCSVを作ろうとすると、大体Shift-JISで出力してしまうのだけど、CSV中に複数言語入っているともちろん文字化ける。ならばとUTF-8で出力するとExcel先生的にぐっちゃになる。さてどうしたものかと思案したのだけど、要するにBOM付きUTF-8にしてしまえば…

HDFSのラッパー

作りかけの何かが出てきたのでサルベージしておく ぶっちゃけ、$ hadoop dfs ~ をPHPのコマンド風に呼び出せるようにしてみただけ ※ で、execしている たしか途中でいらなくなったので、作ってる途中でお蔵入りしたはず めっちゃ遅い

PHPでCKANのAPIを叩くサンプル

php

CKANのAPIは、HTTP経由でアクセスする。 取得に関しては、通常のGETで可能だが、更新についてはAPIキーを使ったPOSTが必要 $ cat samplh.php

FizzBuzz問題のテストをPHP-Unitで書いてみる

今まであまりテストを書いたことがなかったので簡単な問題のテストを書いてみた。内容は、以前話題になったFizzBuzz問題。フレームワークはCakePHP2系。 ref. どうしてプログラマに・・・プログラムが書けないのか? やってみてわかったけど、この問題だと骨…

PHP-Unitをインストールする

php

手元の環境に入っていなかったのでインストールする そもそもPEARが入っていなかったので追加 $ yum install php-pear CakePHPのサイトを見ながら道なりに $ pear upgrade PEAR $ pear config-set auto_discover 1 $ pear update-channels インストールして…

json_encodeで変換しようとすると怒られる Invalid UTF-8 sequence in argument

php

PHPで、配列をjsonに変換しようとjson_encode()を使用すると以下の様なエラーが出て怒られる json_encode(): Invalid UTF-8 sequence in argument 文字コードは事前に変換していたので、UTF-8になっているはず。じゃぁ変換ミスかと思って確認してみても特に…

PHPWordのテンプレートで改行を含む文字列をsetValueで追加する

php

docxを読み込んでPHPで編集できるPHPWord。 予めテンプレートを準備してPHPで文字を挿入するのが便利 なんだけど、普通に改行を入れようとすると空白文字になる。なるほどタグを突っ込むのかと思い、nl2brをしてみると不正なファイルですなどと言われてしま…

FacebookページにGraph APIを使って投稿する

FacebookのAPIを通して、Facebookページに投稿するプログラム 基本的には、Facebook PHP SDKを使う。使い方はそちらのサンプルをベースに。 Facebookにログインする際に、"manage_pages"を付けておく。 これで投稿者が管理するFacebookページを操作できるよ…

ドキュメントビューアを作ってみた

php

先日からマニュアル的なものを書いていこうと思って色々と考えたところ、結局手慰み的に作ってしまったというお話。内容的にはMarkdown形式のファイルを特定のディレクトリに放り込んでおく。プログラムにアクセスするとファイルを結合してHTMLとして表示し…

PAERのインストールディレクトリを確認する

php

以下のコマンドを実行し「PEAR directory」で確認可能 $ pear config-show Configuration (channel pear.php.net): ===================================== Auto-discover new Channels auto_discover <not set> Default Channel default_channel pear.php.net HTTP P</not>…

CakePHPを使ったサイトにab(Apache Bench)をかけるとFailedしまくる件

php

CakePHPを使ったサイトに対して調子に乗ってab(Apache Bench)をかけるとFailedしまくる。試しに10回程度にしても9回失敗とかざら。かと言ってブラウザ経由でアクセスしてもそんなにひどいような状態には思えない。なんじゃらほい。 っと思ってたのだけど、と…

Youtubeに投稿された内容をRSSで取得する

php

ユーザが登録した動画を新着順に取得する http://gdata.youtubh.com/feeds/base/users/[ユーザID]/uploads?orderby=updated&alt=rss&client=ytapi-youtube-rss-redirect&v=2 例)ユーザ名:「nihonfalcomsince1981」の場合 : http://gdata.youtubh.com/feeds/…

Pinterestに投稿された内容をRSSで取得する

php

ユーザの全ボード内で最新25件取得 http://pinterest.com/[ユーザID]/feed.rss 例)ユーザ名:「atyks」の場合 : http://pinterest.com/atyks/feed.rss ユーザの特定ボード内で最新25件取得 http://pinterest.com/[ユーザID]/ [ボード名].rss 例)ユーザ名:…

Fukuoka.php Vol.4

概要 項目 内容 日程 10月23日(金) 20:00 to 23:00 会場 ギルドカフェコスタ(福岡市中央区大名1-10-14) Facebookグループ https://www.facebook.com/groups/355557634510818/ Togetter http://togetter.com/li/398486 場所がギルドカフェコスタということ…

機種依存文字を変換して置き換える

php

概要 ・例えば「㈱」を「(株)」に置き換えるような処理。 ・なんか昔やったことがあったけど、改めて書いておく。 ・Perlで言う「Unicode::Normalize」的なもの 使うもの 自分で頑張ってもいいし、新しいものを探してもいいんだけど昔からあるPEARのライブラ…

Fukuoka.php Vol.3

項目 内容 *日程 9月28日(土) 19:00 to 21:00 *会場 paperboy&co. 福岡支社(福岡市中央区天神2-7-21 天神プライム8階) *参加者のまとめ http://togetter.com/li/382026 *Facebookグループ https://www.facebook.com/groups/355557634510818/ @akase244氏の…

phpで特定のディレクトリ配下のパーミッションを再帰的に変更する

php

// 出力バッファをクリアする ob_end_flush(); ob_start('mb_output_handler'); // 検索対象の基点となるディレクトリ $base = "/path/to/parent/dir"; $dir = "target"; print( "**start " . date("Y-m-d H:i:s"). "<br>"); traceDir($base , $dir); print( "**…

PHPでパスワードを生成する

php

ランダムな英数字を組み合わせたパスワードを生成したい。 自分で作っても良かったのだけど、面倒くさかったので探してみた。 CakePHPのバージョン1の頃に含まれていたらしいライブラリにそれっぽいのがあったのでサルベージ http://api11.cakephp.org/neat_…

preg_matchが文字数によってマッチしたりしなかったりする(Last RSS)

php

Last RSSを使ってRSSを取得する際に正常に取得できない(0件になってしまう)現象があったので追いかけていったところ気がついた問題 概要 PHPの正規表現で最小マッチをある程度以上の長さの文字列に使用した場合、マッチング自体が失敗する ※ 正確に言うと文…

CakePHPでCSSを呼び出すときに印刷用などのMediaタイプを指定する方法

オプションは第3引数 $html->css( array('/css/filename'), 'stylesheet', array('media' => 'print') ); Set media=print Using The CakePHP CSS HtmlHelper | michaelkrol.com

CakePHPで言語ファイルを作成する

php

何回やっても忘れるので、覚書程度に 4.8.1 アプリケーションを地域化する 前準備 前準備として、言語ごとに切り替えたい文言を「("文言")」のように括っておく。 単純にそのまま呼び出すと値を出力しようとするので、変数などに入れる場合は「("文言", true…

trimで取れない半角空白文字(C2A0)がある

php

文字列として表示させてみると半角空白のようだけど、trimを使っても消えないものがあったので調べてみた パッと見分からないので、取り敢えず文字列を文字コードに変換してみると件の半角空白文字は「0xc20xa0」。 通常の半角空白文字は「0x20」のはずなの…

GraphvizをインストールしてPHPから使う

Graphviz チュートリアル Blog: Graphviz Pluginのインストール – Neo Titans Graphvizのインストール $ wget http://www.graphviz.org/graphviz-rhel.repo $ mv graphviz-rhel.repo /etc/yum.repos.d/ $ chown root:root /etc/yum.repos.d/graphviz-rhel.re…

Mecabで取り扱う名詞と接尾語を連結させる

parseToNode($str); $node; $node = $node->getNext()) { if (($last_posid == 46 || $last_posid == 47) && ($node->posid == 46 || $node->posid == 47)) { // 前後が地名同士ならば連結させる $tokens[count($tokens) - 1]["surface"] .= $node->getSurf…

phpでCSVを読み込むらしいライブラリ

古いディレクトリを漁っていると出てきたので一応サルベージ もはや、いつどうして作ったのか不明なので、動作確認すらせずに公開だけしておくことにする handle = $handle; $this->length = $len…

imagecreatefromjpegでの画像リサイズ時にエラーが出力される

php

この問題、ちゃんと解決はしてないけどこのままだと放置しそうなので一応公開しておくことにする PHPで画像リサイズを行なっていた際に、以下のようなエラーが出力される Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg, libjpeg:…

APIを使ってPHPで自分のみ公開のアルバムを生成する

以下を参考に、必要そうな部分のみ。 Create photo albums and upload photos using the Facebook Graph API 基本的には、アルバム生成時に与えるパラメータにprivacy項目を追加して公開権限を設定する $album_details = array( 'message' => 'Album desc', …

画像のデータ容量を減らす

php

画像の縦横を変えずに、クオリティのみを減らす $quality = 75; // 75がデフォルト $img = ImageCreateFromJpeg($path); ImageJpeg($img, null, $quality); ※ 必要であればループを回し、必要であればファイルに書き落とす サンプルほぼそのまま。PHP: image…

画像からIPTC情報を取得する

php

GoogleのPicasaなどで入力したコメントやタグをPHPで取得する。

RSSヘルパーでRSSを生成する際にNameSpaceを追加する

通常通りRSSヘルパーでRSSを生成する際に名前空間を指定する RSS用のLayoutを修正する $ cat /app/views/layout/rss/default.ctp header(); if (!isset($channel)) { $channel = array(); } if (!isset($channel['title'])) { $channel['title'] = $title_fo…

LastRSS.phpを使った際にcontent

php

http://lastrss.oslab.net/ 現在配布されているバージョンでは、RSSに含まれるcontent:encodedを拾ってこれないので対応した 修正箇所 修正前 var $channeltags = array ('title', 'link', 'description', 'language', 'copyright', 'managingEditor', 'webM…

mysqlで「server has gone away」というエラーが返ってくる

おそらく、Mysqlのセッションがタイムアウトしてしまっていると思われる。確かに若干sleepを長くしすぎていたかも とりあえず、セッションの有効時間を調べてみる SHOW VARIABLES LIKE 'wait_timeout' 英語ですが、下記のページがまとまっていると思います。…

PHPを使ってカスタムマップ用に画像を自動生成する

Google Maps APIが提供するカスタム マップ タイプで使用するタイル画像をPHPで動的に生成することを考える ・カスタム マップ タイプ ・グーグルマップのしくみを探る » GAMMA Blog やりたいこと 「世界測地系の緯度経度」を元に、カスタムマップで使用する…

Googleの画像検索をAPI経由で使う

以下を参考に ・43.Google画像検索API。クエリを作って欲しい情報をゲット ・画像(imgae)を検索する方法とcurl関数群について うずら技術メモ ・JSON Developer's Guide - Google Image Search API - Google Code 基本的には、URLを構築してCURL経由でGETメ…

PEARのライブラリを呼ぶとエラーになる件について

php

PEAR/Exception.phpを継承しているクラスでPEARが呼べないというエラー Warning: require_once(PEAR/Exception.php) [function.require-once]: failed to open stream: No such file or directory in HTTP/Request2/Exception.php on line 47 3Fatal error: …

PHPからHyperEstraierを使ってみる

公式では、Ruby、Java、Perlのバインディングモジュールが提供されているがPHPはない。 調べてみると、「estraierpurh.php」というモジュールを作成公開してくれている人がいるらしいのだけど、その人のサイトがなくなっている。 http://page2.xrea.jp/ で、…

バイナリデータと文字列の相互変換

php

なんとなく機会がありそうで無い感じ。あまり意味は無い ※ 当たり前だが、純粋なバイナリファイルを16進文字列に変換するとデータ量は増える

phpの中からPerlのプログラムを記述して実行する

いったいなぜこう言うことになったのか、色々と混ぜるな危険な感じですがとりあえず。 まだ、簡単なプログラムでしか試してないので色々とエスケープとか足りてない気がするし、ステータスコードをみて強制終了するのではなくちゃんと結果を返したほうがいい…