purazumakoiの[はてなブログ]

技術メモから最近はライフログも増えてきてます。

MacのMailアプリにBccを自由に設定

自分のメールアドレス以外にBccを送りたい

defaults write com.apple.mail UserHeaders '{"Bcc" = "exsample@gmail.com,exsample@m.evernote.com"; }' 

クリアしたいときは

defaults read com.apple.mail UserHeaders

でいけるみたい

このようにカンマ分けすれば自分のメールアドレスの他に、複数アドレスにBccを遅れる メールの作成画面のBcc枠には出てないが送信される

参照 【Mac】Mail.appで自由にBccを設定する方法 | TokyoHeadTerminal

google Analytics apiでディレクトリ毎にページ別訪問者数を取得

管理者登録やらAnalytics側で許可とかいるみたい

PHPでGoogle Analytics APIを利用して、アクセス解析のデータをSlackに投げる(前編) | Tips Note

ちなみにメールアドレスってのはこんな感じのアカウントIDみたい google_Analytics_api用ユーザ

/shop/と/shopをまとめたい

filtersで、ページ指定で取得する

どうも正規表現にしないと /english/shop とかの計測も拾っちゃうので正規表現でで先頭から一致するようにした

$results = $analytics->data_ga->get(
        'ga:' . $profile,   // アナリティクス ビュー ID
        '7daysAgo',        // 取得を開始する日付
        'yesterday',        // 取得を終了する日付
        'ga:uniquePageviews',   // ページ訪問者数
        array(
          'dimensions'  => 'ga:date',  // データの区切り
          'sort'        => '-ga:date', // ページビューでソート
          'filters' => 'ga:pagePath=~^/shop',            // フィルター
        )
    );

ただこの場合「/shop2/」とかのディレクトリがあった場合も拾ってしまうので注意 それを省きたい場合2回処理しなければならないが

'filters' => 'ga:pagePath=~^/shop/'
と
'filters' => 'ga:pagePath==/shop'

でそれぞれ取得して足せば良い

参照

GoogleAnalyticsアドオンのTIPS - Qiita

Google Analytics Data Export API リファレンス日本語訳

Google Analytics APIで日付×ページ別にPVを集計する方法 | スマホサイト・アプリをつくろう。

gitで fatal: The remote end hung up unexpectedly エラー

何かしばらくpushしずにいて、久しぶりにpushしようとしたら

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags 【Bitbucket】xxxxxxxx refs/heads/master:refs/heads/master 
Pushing to https://xxxxxxx@bitbucket.org/xxxxxxxx/xxxxxx.git
POST git-receive-pack (chunked)
error: RPC failed; curl 56 SSLRead() return error -9820
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date
Completed with errors, see above

こんなエラーがでた。 要は、量が多すぎるからでるみたい

postBufferを増やしましょう

特に、gitのローカルリポジトリがある場所じゃなくてもgit本体の設定だからどこで実行しても問題ない(--globalだからかな)

git config --global http.postBuffer 524288000

参照

gitでの fatal: The remote end hung up unexpectedly git config --global http.postBuffer 524288000

Fatal error: Uncaught exception 'ImagickException' with message 'Postscript delegate failed

Fatal error: Uncaught exception 'ImagickException' with message 'Postscript delegate failed 
〜〜
No such file or directory @ error/pdf.c/ReadPDFImage/664

といったようなエラーがでる。 これはphpのimage

$pdf = new imagick( 'name.pdf[0]' ); 

ってやったらでました。

可能性

664ってとこから、どうもGhostScriptが見つかってないっぽい。

ということで phpから

$results = shell_exec('/usr/bin/convert /usr/home/html/a.pdf /usr/home/html/b.png >/tmp/err.txt 2>&1');
echo "<pre>$results</pre>";

で /tmp/err.txt にエラーが出てるので確認。こんなのが出た

convert: Postscript delegate failed `/usr/home/html/a.pdf': No such file or directory @ error/pdf.c/ReadPDFImage/664.
convert: missing an image filename `/usr/home/html/b.png ' @ error/convert.c/ConvertImageCommand/3015.

解決策1(解決になってないけど)

「vi /etc/sudoers」に


#sorry, you must have a tty to run sudoというエラーがでるので↓をコメントアウト #Defaults requiretty # 末尾に追加 %username ALL=NOPASSWD: /usr/bin/convert

phpの実行ユーザ名で許可する

参考

こんな感じのコードでテストしました。

<?php 

#sudo してpdf → png変換
$results = shell_exec('/usr/bin/sudo /usr/bin/convert /usr/home/chz3005002/html/test/1/b.pdf /usr/home/chz3005002/html/test/1/bdesuyo.png >/tmp/err.txt 2>&1');
echo "<pre>$results</pre>";


# phpの実行ユーザ名は /tmp/whoami.txt に出力
$results = shell_exec('/usr/bin/whoami >/tmp/whoami.txt 2>&1');
echo "<pre>$results</pre>";

こうすることで、そもそもphpからのconvertが出来ない件は一応解決。つまり権限の問題だったっぽい。 ※phpのバージョンを複数いれてるからその辺りが関係あるのかな。

ただこれだと結局imagick関数は使えないのでその場合のは未解決

suPHP環境にphp7.0.2を入れる

こんな感じの方法でPHPを複数バージョンで利用してるのですが 64bitCentOS6.2にsuPHPで複数バージョンのPHPを入れた際ハマったこと | ハサミできって貼ってみた

ハマったところ

その1

WARNING: unrecognized options: --with-mysql

PHP7ではmysqlコマンドが削除になったからですかね? コンフィグオプションから「--with-mysql」の部分を削除で対応。

その2

こんな感じのエラー

/usr/local/src/php-7.0.0/ext/pcre/php_pcre.c: In function 'zm_info_pcre':
/usr/local/src/php-7.0.0/ext/pcre/php_pcre.c:153: error: 'PCRE_CONFIG_JIT' undeclared (first use in this function)
/usr/local/src/php-7.0.0/ext/pcre/php_pcre.c:153: error: (Each undeclared identifier is reported only once
/usr/local/src/php-7.0.0/ext/pcre/php_pcre.c:153: error: for each function it appears in.)
make: *** [ext/pcre/php_pcre.lo] Error 1

–with-pcre-regex=/usr のコンフィグオプションを削除

PHP Warning: PHP Startup: imagick: Unable to initialize module Module compiled with module API=20100525 PHP compiled with module API=20121212 というエラーの対処法

こんな感じの方法でPHPを複数バージョンで利用してるのですが 64bitCentOS6.2にsuPHPで複数バージョンのPHPを入れた際ハマったこと | ハサミできって貼ってみた

なんかImageMagickPHPから使うためのモジュールで「imagick」というものがあって、それを入れて、要はphpinfoにこうやって出てくるようにしてくれといわれました。 imagick

で、色々がんばって入れてみるんですけど、なんか色々調べてインストールしてみてphp.iniに

extension=imagick.so

を追加してphpinfoを見たらページの最後の方に

PHP Warning: PHP Startup: imagick: Unable to initialize module Module compiled with module API=20100525 PHP compiled with module API=20121212

と書いてある

これはどうも、「PHP5.5系 → API=20121212」でうごかしてるけどimagickが「PHP5.4系 → API=20100525」だと言っている感じ

要するにこうして解決した

# 各バージョン用のimagickモジュール マイナーバージョンごとに1つあれば良い

mkdir /usr/local/src/php5.4
cd /usr/local/src/php5.4
git clone -b phpseven --depth 1 https://github.com/mkoppanen/imagick
cd /usr/local/src/php5.4/imagick
./configure --with-php-config=/usr/local/bin/php-config-5.4.39
make
make install

mkdir /usr/local/src/php5.5
cd /usr/local/src/php5.5
git clone -b phpseven --depth 1 https://github.com/mkoppanen/imagick
cd /usr/local/src/php5.5/imagick
/usr/local/bin/phpize-5.5.23
./configure --with-php-config=/usr/local/bin/php-config-5.5.23
make
make install

mkdir /usr/local/src/php5.6
cd /usr/local/src/php5.6
git clone -b phpseven --depth 1 https://github.com/mkoppanen/imagick
cd /usr/local/src/php5.6/imagick
/usr/local/bin/phpize-5.6.7
./configure --with-php-config=/usr/local/bin/php-config-5.6.7
make
make install

解説

  • 各バージョンごとのソース置き場を作り
  • git cloneでソースをDL
  • それぞれのversionのphpizeを実行して
  • インストール

ブログ移転

はてなブログは使い慣れてて好きなんですけど、勉強も兼ねて自分のドメインに移転しようかなと思います。

http://blog.purazumakoi.info

移転先の整備は(時間が取れ次第なので未定ですけど)ぼちぼちやっていきます。

.htaccessで特定のディレクトリ内に来たらリダイレクトさせる(直下のindex.html以外)

要件

http://exsample.com/hoge/index.html → そのまま
http://exsample.com/hoge/fuga1/以下 → http://exsample.com/piyo/
http://exsample.com/hoge/fuga2/以下 → http://exsample.com/piyo/
http://exsample.com/hoge/fuga3/以下 → http://exsample.com/piyo/

こんな風にリダイレクトしたい場合

ホワイトリストでディレクトリを指定してリダイレクトする場合

/hoge/.htaccess を設置して↓の通りに記述

RewriteEngine on

RewriteCond %{REQUEST_URI} (fuga1|fuga2|fuga3)
RewriteRule ^(.*)$ /piyo/ [R=301,L]

office365 新規ライセンス登録方法

office365で新たにOffice 365 Business Openプランでアプリのみ利用しようとしたら 元々の

  • Office 365 M 1-seat
  • Office 365 Midsize Business Open

で契約していたアカウントにはひも付けられない模様

そこで、仕方ないので新規アカウントを作った際のメモです。

前準備

元々の問題

ここから「ライセンス認証の開始」から認証が失敗します。

f:id:purazumakoi:20150306192449j:plain

シリアルは調査済み

購入したら、メールが来ているのでそこからシリアル番号を入手します。

f:id:purazumakoi:20150306192520j:plain

新規アカウント作成

http://office.com/setup365

f:id:purazumakoi:20150306192621j:plain

プロダクトキーを入れます。
f:id:purazumakoi:20150306192636j:plain

確認画面がでます。「プロダクトキーの追加を完了する」を押します。 f:id:purazumakoi:20150306192646j:plain

ステップ2へ移動します。 f:id:purazumakoi:20150306192702j:plain

↓以下のように、アカウント登録情報のところまでこれば一安心。 ※元のアカウントでログイン済みのブラウザでやると前のログイン情報が残っている場合があるので、別のブラウザを使いましょう

f:id:purazumakoi:20150306192724j:plain

入力したら、OKおめでとうございます\(^o^)/ f:id:purazumakoi:20150306192740j:plain

初回ログイン時に

f:id:purazumakoi:20150306192813j:plain

こんな感じの画面は出たので電話番号だけ入力しました。