purazumakoiの[はてなブログ]

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

ProFTPDに接続できない時のチェックポイント

結論として

ユーザー登録の方法を間違えていると思われるので

0.lsof を使って待ち受けているか調べる

f:id:purazumakoi:20171208152605p:plain

↑こんな感じで、今回は待受ポートを10397にしているのでこんな感じで調べる

lsof  -i:10397

何もでてこなかったら、そりゃ待ち受けて無いから駄目ですよねってなる。

1.直近で追加したユーザーを削除する

AuthUserFile                    /etc/proftpd/ftpd.passwd

この中の直近で追加したユーザーを削除する

2.proftpd再起動してみる

#proftpd再起動
/etc/rc.d/init.d/proftpd restart

これで起動してなかったら、1のリストのアカウントで良くないものがいるので、起動する

3.

改めてユーザーを追加する

ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=user --uid=48 --gid=48 --home=/usr/home/ --shell=/bin/bash

私の場合はこんな感じです。ユーザー名、ディレクトリパスは適宜変わってきます。

ちなみに前提条件のコンフィグ

f:id:purazumakoi:20171208152356p:plain

サイトをリニューアルした時のhtaccessでのリダイレクト設定

どのurlに来ても、あたらしいドメイン(www.hogehoge)に301リダイレクト設定をする

指定ディレクトリなどの情報は引き継いてリダイレクト

RewriteRule ^(.*)$ https://www.hogehoge/$1 [R=301,L]

常に、www.hogehogeのTOPにいく

RewriteRule ^.*$ https://www.hogehoge/ [R=301,L]

メンテナンス時など、どこにアクセスしてもTOPを表示などはこちら

blog.purazumakoi.info

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を集計する方法 | スマホサイト・アプリをつくろう。