読者です 読者をやめる 読者になる 読者になる

purazumakoiの[はてなブログ]

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

javaScriptで指定の時間以前、以後で処理を変える

年末年始対応などで、一時的に予約で表示、非表示などをしたい場合用に

コード例

html部分

<style type="text/css">
<!--
    #hoge.hide {
        display: none;
    }
-->
</style>
<div id="hoge" class="hide">
    テキストや画像など
</div>

js部分

<script>
    var hiduke= new Date();
    var year = hiduke.getFullYear();
    var month = hiduke.getMonth()+1;
    var week = hiduke.getDay();
    var day = hiduke.getDate();

    var hour = hiduke.getHours();
    var minute = hiduke.getMinutes();
    var second = hiduke.getSeconds();

    var now = parseInt(year +""+ ("0"+month).slice(-2) +""+ ("0"+day).slice(-2) +""+ + ("0"+hour).slice(-2));

    if(2016123012 <= now){
        // 今が2016年12月30日12時以降の場合処理を行う
    }
</script>

注意点

ゼロパディングしておかないと1月とか2日とか3時とか一桁数字の時の罠が・・・ということで以下の部分は必須です。

("0"+month).slice(-2)

参照

今日の日付と現在時刻-JavaScript入門

JavaScriptでゼロパディングして桁をそろえる方法

WordPressからはてなブログにもどってきました。

やはりこっちのほうが使いやすいですね。

はてなブログに戻った理由

WordPressは何でもできるので、プラグインとか、手を入れてあげればカスタムはできるのですが、なるべく、自分でがんばって快適空間を作りたくなかったというのがまとめです。

スパム

WordPressは、デフォルト設定だとスパムが結構くるので、このあたりは仕方がないんですがやはり来ないほうがうれしいですね。

以下、後ほど更新します。

MovableTypeにSNSボタンを設置

デザインは自分でカスタムしたい!という要件のもと、調べたら以下のような実装でおちつきました

fbのogpタグ周りはこんな感じになりました。

<meta property="og:url"           content="<$mt:EntryPermalink$>" />
<meta property="og:type"          content="website" />
<meta property="og:title"         content="<$mt:EntryTitle$> | タイトル" />
<meta property="og:description"   content="<$mt:EntryExcerpt$>" />
<mt:If tag="CF_eyeCatch">
<meta property="og:image"         content="<mt:CF_eyeCatchAsset><mt:AssetURL></mt:CF_eyeCatchAsset>" />
</mt:If>

html部分はこんな感じになりました

<div class="snsArea">
                            <div class="snsInner">
                                <!-- facebook -->
                                <div id="fb-root"></div>
                                <script>(function(d, s, id) {
                                  var js, fjs = d.getElementsByTagName(s)[0];
                                  if (d.getElementById(id)) return;
                                  js = d.createElement(s); js.id = id;
                                  js.src = "//connect.facebook.net/ja_JP/sdk.js#xfbml=1&version=v2.8";
                                  fjs.parentNode.insertBefore(js, fjs);
                                }(document, 'script', 'facebook-jssdk'));</script>
                                <div class="" data-href="<$mt:EntryPermalink$>" data-layout="box_count" data-size="large" data-mobile-iframe="true">
                                    <a class="btnBlack facebook" href="https://www.facebook.com/sharer/sharer.php?u=<$mt:EntryPermalink$>&src=sdkpreparse" onclick="window.open(this.href, 'tweetwindow', 'width=650, height=470, personalbar=0, toolbar=0, scrollbars=1, sizable=1'); return false;"><span>シェア</span></a>
                                </div>

                            </div>
                            <div class="snsInner">
                                <!-- twitter -->
                                <a class="btnBlack twitter" onclick="window.open(this.href, 'tweetwindow', 'width=650, height=470, personalbar=0, toolbar=0, scrollbars=1, sizable=1'); return false;" href="https://twitter.com/share?url=<$mt:EntryPermalink$>&text=<$mt:EntryTitle$>"><span>ツイート</span></a>
                                <!--<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>-->

                            </div>
                            <div class="snsInner">
                                <!-- line -->
                                <a href="http://line.me/R/msg/text/?<$mt:EntryTitle$>%0D%0A<$mt:EntryPermalink$>" class="btnBlack line" onclick="window.open(this.href, 'tweetwindow', 'width=650, height=470, personalbar=0, toolbar=0, scrollbars=1, sizable=1'); return false;"><span>LINEで送る</span></a>


                            </div>
                        </div>

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 のコンフィグオプションを削除