僕が考えた最強の文字コード設定

エンコードと関係ない設定もあるけどこれ。pnp.iniで設定したいんですが、サーバー側の設定でできなかったりするのでとりあえずこれを持っとくと安心。

gist7f513df2a9e05b98ce992abc468618d1

とか とか機種依存文字が超辛かった(eucJP-win -> UTF-8)けど、これでなんとか乗り越えられそう。5年以上のつらみがこれで乗り越えられたら良いのだけど。。。

楽天Goldの常時SSL化対応が面倒なのでスクリプト書いた

突然お客様から電話。楽天から電話があって、どうしていいのかわからないのでお願い、とのこと。内容はこう。

「2017年の6月末だかいつだかわかんないですけど、ともかく 常時SSL します、対応しないと 表示できなくなりますよ って脅されました。」

脅されてるかどうかは別として超めんどくさいな、ってのは想像がつく。商品ページの方は、楽天から紹介されたWEBサービスで対応できたみたいだけど、楽天GOLDへアップしたhtmlファイルのリンクを変更しないといけないらしい。ただ、ラッキーなことに楽天GOLDにアップしてるhtmlファイル内のリンクはほとんど楽天ドメインばかり。じゃあもう単純に http://https:// でよいのでは?ってことで済ませちゃった。なので、もしかすると需要は少ないかもしれませんが、誰かの役に立てば。

使い方

composer使える前提です。なので普段楽天の商品ページいじったりしてるだけの人には少々ハードル高いかも。

git clone https://github.com/comeonly/rakuten_gold_ssl
compose install

でインストール。

あとは、スクリプトを実行するだけ。

php run.php <ftp_username> <ftp_password>

ってな感じで引数にftpのユーザー名とパスワードを入れてください。直接FTPで接続してhtmlファイルを再帰的に検索しながら文字列置き換えして、ファイルを上書き保存してくれます。

で、実際どのリンクが置き換えられるかわからないことが起こりそうなので、ドライランのオプションも付けました。

php run.php <ftp_username> <ftp_password> dry

これで対象リンクとそのファイルの有るパスが一覧で表示されます。これを元に手動でやるっててもなくもないです。

中身どうなってんの?

touki/ftpってライブラリをpackagistで見つけたので使わせて頂きました。昔にこんな記事を書いて自力でFTPを操作しようとしたことがありましたが、ライブラリ使ったほうが安心できます。この頃はライブラリという言葉すらよくわかってなかったんで、若気の至りです。

comeonly.hatenablog.com

で、実際の処理ですがこんな感じ。

  1. FTP接続する
  2. ディレクトリ内のファイルを検索する
  3. ファイル名を /(.html|.htm)$/ って感じで正規表現で調べる
  4. 見つかったら str_replace で単純に http://https:// に置き換え
  5. ファイルをその内容で上書きする
  6. カレントディレクトリのディレクトリ一覧を取得する
  7. 2.に戻って再帰的にじゃんじゃんやっつけていく

とまあ超単純なスクリプトです。FTPって再帰的な処理ができないのでこういうライブラリつかって一覧を簡単に取得できると楽で良いですね。

アディオス!

ComposerとPagoda Boxで今どきなDeployしたらモテ期到来で彼女が出来ました

うそです。

JAWS FESTA Kansai 2013へ行って来たんですが、関西PHP勉強会でAWSと関係のないものを習得してきましたよwという話。 大きくは2点で、@omoonさんのSaaSの話。HerokuなどのSaaS全盛期の中、PHPのSasSであるPagoda Boxなるものがあるらしい。ってのと@slywalkerさんのComposerの話。これも今流行のパッケージ管理の話でJSなどのフロントエンドパッケージ管理ツールのBOWERなんかがありますが、PHPならComposerでしょ!?ってことで。

当日のスライド一覧

用意するもの

必須

  • Git

あると便利

今回は手元のGitをdeployするだけなので、Clientからの操作で説明します。Webからの処理が意外と不便だったってのもありますが。。。

Demo

自分と言えばヤフオク、ヤフオクといえば俺、みたいなところがあるので、ヤフオクネタで作ってみました。開くとYConnect(Yahoo! Japan oauth2.0)で認証取りに行って、出品中一覧を表示します。

YCoonect Demo

読み込みにやたらと時間がかかるのだけど、YConnectにいきなり接続しに行くからかな?この辺課題だなぁ。

作業手順

1) てきとーにプロジェクトを作る

Demoそのまま使うのであればgithubにpagodaboxbranchで置いたのでそれをクローン。

➜  ~  git clone -b pagodabox https://github.com/comeonly/YConnectDemo.git

2) Pagoda BoxのSSH設定をする(初回のみ)

ここ参照 Pagoda Box Portal | Deploy and Scale PHP Apps Setting Up Git - Mac

3) Pagoda BoxでNew Appする

➜  ~  cd YConnectDemo
➜  YConnectDemo git:(pagodabox)  pagoda create

*Webの管理画面からの場合は別途gitremoteを設定する必要あり ここ参照

➜  YConnectDemo git:(pagodabox)  git remote add pagoda git@git.pagodabox.com:yconnect-demo.git

4) Deployする

➜  YConnectDemo git:(pagodabox)  pagoda deploy

Helpの記事にはpagoda deploy -b [brandch neme]的なことを書いていますが、そんなオプションないよと言われますし、pagoda deploy -hでもこんなのしかでません。

➜  ~  pagoda deploy -h
Usage: pagoda [options]
    -a, --app VAL

deployしたいbranchにいれば、そのbranchでdeployされる仕様みたいです。

勘所

「そんなBoxfileで大丈夫か?」

Boxfileの設定がさっぱりわかんなくてかなりハマった。

web1:
  name: yconnect-demo   #app名(無くても良いっぽい)
  shared_writable_dirs: #書き込み可能なディレクトリ
    - tmp
  php_extensions:       #PHPの設定
    - curl              #composerインストールするのとOauthに必要
    - zip               #composerでパッケージを開くのに必要
    - intl              #composerに必要っぽい
  after_build:          #サーバーのビルドが終わったあと実行する(bash)
    #composerのダウンロード
    - "curl -sS https://getcomposer.org/installer | php"
    #composerのインストール
    - "php composer.phar install"
    #opauthのyconnect用pluginのファイル名修正
    - "mv vendor/opauth/yahoojp/YahoojpStrategy.php vendor/opauth/yahoojp/yahoojpStrategy.php"

enjoy it !!!!

MovableType 4.27からWordpressへ移行したメモ

なんでこんなこと書くかというと、ツール -> インポート にある標準のプラグインだと動かなかったから。
あと、リダイレクト これが意外と大変でした。

使ったプラグイン

こいつらです。

上記のプラグイン入れれば手順書いてあるので以下は読み飛ばし可です

1. MTのバックアップ

該当のブログから ツール -> バックアップ でバックアップ

2. WPへプラグインのインストール

こいつ。 Movable Type Backup Importer

3. 指定のフォルダへアップロード

プラグインを適用したら指定されるんでそれの通りにすればおk。

4. あとはプラグインの指示通りでおk

あー、書くのめんどくさくなってしまったよ。

サムネイルが適用されない。。。

100%では無いけど、このプラグインで何とかなりました。

Automatic Post Thumbnail at SANIsoft

記事内の画像を消すなら、SQLで一括消したらいいんじゃないかな?やってないのでわからんけど。まあ最悪スクリプト組んじゃえ。

需要あれば重い腰をあげるかも。そんときゃコメント下さい。

リダイレクト

Redirection – Manage 301 redirections without modifying Apache

このプラグイン、無茶苦茶使える!!301リダイレクトとかしてくれるから超助かる。

例えば /hoge.html/hoge へ飛ばすには

正規表現にチェック
ソースURL     /(.*).html?$
ターゲットURL /$1/

といった感じ。

あと、Movable Type Backup Importer使うと、post-3post_3 とかになることがあるので、これも設定する。

正規表現にチェック
ソースURL      /-(.*)$
ターゲットURL /_$1/

みたいな。

あとはよしなに。。。

PHPカンファレンス関西2013へ行ってきた

でまあそこで Debugging and Profiling PHP てタイトルで 楽天のGraham Weldon氏がセッションされてたわけです。 すごい良い話だったのでまとめたいなぁ、と思ったんですが、どうも時間が取れないし、温度が下がってきちゃうので、備忘録だけ。あと、プロファイリングについても話されたたのですが、それはパスしてデバッグの話だけ。

デバッグについて

X-debug使ってるよね?

はい。phpcsで入れろと言われたので入れました。

んじゃ、デバッグvar_dumpとか使うな。

え?マジですか?それしか無いと思ってましたよ。

MacならCodebugがGUIで出来るからオススメ

(もうひとつアプリをおっしゃったんですが失念。。。)

設定方法

で、このあと設定方法なんかを解説されてたんですが、

  1. X-debug入れる
  2. Chrome Xdebug helper入れる

これが超楽だったのでこれにしました。

一応Codebug入れてみたんすけど、どうもvimmerな自分にはしっくり来ないので、探してみると、、、

Vim + Vdebug + Xdebug でPHPのリモートデバッグ | Code Life

こんな記事を見つけたので、もうあとはこっち見てもらえばいいやってんで終わります。

なにが良いの?

上記のブログでも書かれてますが、「なんでデバッグするのにコード書くんだ?」に尽きます。消し忘れるし、コード見にくいし。

僕なんかよくあるパターンですが、var_dump($hoge)したけど原因はそこじゃなくてvar_dump($fuga)だった場合。時間の無駄だなぁと。

ほかにも利点はたくさんだと思います。

おまけ

CakePHPでもおなじみの(多分このアイコン見たことあるはず)markstory (Mark Story)氏もブログに書かれてました。 Remote debugging with vim and xdebug | Mark Story

ってことで、これだけでも行った価値がかなりあったぞPHPカンファレンス関西2013、と。

あ、あと Graham Weldon 氏はかなり温和な感じの話し方の人だったので、上記のような強い語調ではないです。すげーやさしそうな人でした。

Nuflair+LectureというopenFrameworksのワークショップへGalaxy Galleryへ行ってきた[追記有り]

内容

Nuflair+Lecture
~openFrameworksを使ったAudio Reactiveな映像製作~
2013.4.14 (sun) at GalaxyGallery

http://www.galaxygallery.info/now/nuflair/

  • 1時限目(14:00-15:30) 休憩10分
    • oF(openFrameworks)とは、インストールと基本
  • 2時限目(15:40-17:10) 休憩10分
    • 基本的な描画
  • 3時限目(17:20-18:50) 休憩10分
    • 描画2
    • プログラミング基礎
    • 音との連携
  • 4時限目(19:00-20:30)
    • 音との連携2
    • 製作と発表

配布されたSamples目次

  1. emptyExample
    • コンパイル
  2. basicDrow
    • 簡単な描写
  3. basicDrow2
    • 少し複雑な描写
  4. hensu
    • 変数
    • 関数
  5. blending
    • 画像合成関数の紹介
  6. keyboard&if
  7. for & for2
    • for構文
  8. rectMode
    • 四角形の描写
    • `ofRotateZ()`Zはz軸(回転軸)を基準に回る
  9. rotate
    • `ofTransLate()`中心軸の変更
  10. scale
    • サイズの倍率
    • `ofMap()`関数 => 最小値と最大値を設定する
    • `ofPushMatrix()`と`ofPopMatrix()`で`ofScele`や`ofRotate`の影響を制御する
  11. basicAnimation
    • 動きを付ける
  12. basicEasing
    • マウス押下で動きをつける(イージング関数)
    • `testApp::mousePressed()`でマウス押下を検知
  13. simpleAudioInput
    • 音の取得`ofSoundStream`型を使用する
  14. simpleAudioInput2
    • 変化を付けてみる
  15. simpleAudioInput3
    • 閾値で制御する
  16. simpleVJ1-4,6
    • 13-15をまとめてやってみる
  17. simpleVJ5
    • アニメーションを加える
  18. simpleVJ7
    • 音量に応じて変わる
  19. simpleVJFinal
    • 全部のせ

Tips

main.cppで画面全体の設定をする

e.g) フィルターを画面全体にかけるなど

// 円をスムーズにする。
window.setGlutDisplayString("rgba double depth alpha samles>=4");
デバッグ

<<この感じがヒアドキュメントを思い出させる。

// var : 変数
// xcodeで変数の内容を表示させる
cout << var << endl;
画像の読み込み
img.loadImage()

感想

プログラミングの基礎についての事前通知が必要だったと思う

わりとマジで。明らかにプログラミングの基礎があることが前提な気がする。条件分岐とか初歩的なのも説明してたけど、はしょりすぎで理解してるのが前提の説明だったと思う。
IT勉強会なら普通だけど、Galaxy GalleryでC++のソースガリガリ書くとは思わんがなw
昨日Xcodeインストールしたばかりのバーのマスターには無理だろうて(実際にいた)。

高い

4,000円にしてはスタッフ3人(講師含む)は少ないかもなぁ。20人で全くの素人が4人いれば絶対無理だしなー。まあ素人の問題は上記と関係するけど。スポンサー募ればよかったんじゃね?みたいな。
さらにプラス500円のワンドリンクなら場所代も安くなってるだろうし、う〜ん、というかあの内容だったからどうしてもIT勉強会と比較するからダメなんだろうけども。。。

内容は大満足

プログラミングの基礎知識がある自分にとってはとても楽しかった。C++に触れる良いきっかけになった。特に音声の出力で色やデザインを変更できるところはサードアイがオープンしそうでかなりキテマス。
できたらslideshare.netにあげてくれないかな、今日のスライド。

途中まで制作したものをもうちょっと作って機会があれば映像をアップしてみたい。
個人的には大満足。

2013-04-15 1:52追記

このスライドよくまとまってる。たぶん同じのを使ってたような気がする。

Yahoo!オークション : このサーバーで操作できません。URLを確認してください。

2017/06/19追記

どうやらSSL化と並行してpageで始まるドメインは数字がつかない、 `page.auction.yahoo.co.jp` に移行し始めてるかもしれません。

追記ここまで



オークションが再出品できない

このサーバーで操作できません。URLを確認してください。

こんなメッセージが出て再出品ができなくなりました。
なんでかこんなことにハマッてしまったので備忘録。

いや、言われた通りにすりゃいいだろ

そうです。その通り。
URL確認すれば良いんです。

ただ、自分と同じくツール使ってる(作ってる)人とかはハマったかもなぁ

地味にYahoo!の仕様変更?

http://page3.auctions.yahoo.co.jp/
このドメインだけ、仕様が変わっています。

  1. エンコードEUC-JPからUTF-8
  2. 再出品ページはhttp://pageinfo3.auctions.yahoo.co.jp/

いや、page3ドメインだけなので全体的に仕様変更する気なのか、サーバー移転の関係なのかわからん。
なにがしたいんだよお前ら。



障害対応の皆様、ご苦労様でした。
現場からは以上です。