自動的に更新される日付範囲フィルターを作成する
Tableau2日目で、カレンダーで開始日とか終了日でフィルターしたいということで、指定期間で表示することにしました。
自動的に更新される日付範囲フィルターを作成する | Tableau Software
ということでhowto通りやってみたんですけど、どうも終了日を含んで無い気がする コードをみると
式フィールドで、次のような計算フィールドを作成します。 IF [Filter ON/OFF]="OFF" THEN [date] ELSEIF [date]<[End date] AND [date]>[Start date] THEN [date] END
どうも、 [date]<[End date] のあたりが<=じゃないのが怪しいとか思ってやってみたんですけど結局意図通りには以下の通りだと上手くいくっぽいです。
IF [Filter ON/OFF]="OFF" THEN [受注日] ELSEIF [受注日]<[End date]+1 AND [受注日]>[Start date] THEN [受注日] END
つまり、[End date]+1 って感じで+1してあげました。
GAのサンプリングについて
Google Analyticsのサンプリングとは
Google Analyticsのデータが実際と合わない。というのはよくある話で 色々な原因が考えられます。
一例でも以下のようなものがあり、 * 計測タグの設定ミス・・・GTMで管理していると楽ですが、設定者のスキルも高度なものが求められます * Google側制御・・・無料版はセッション辺りのヒット数など、色々あります。 実際の値と異なる場合も多いです。
サンプリングとは要するにサイトのセッション数が50万以上の場合は、その中の一部のデータから想定される数値にしますよということで、そのため事実と異なる部分がでてくるということです。 support.google.com
それでも統計とか、傾向を見るためには十分なのでそれを踏まえた上であれば、分析数値として有効に使えますねということです。
※ページビュー、イベント、eコマースタグの送信回数(ヒット数)を抑えればサンプリングを防ぐことができます support.google.com
ProFTPDに接続できない時のチェックポイント
結論として
ユーザー登録の方法を間違えていると思われるので
0.lsof を使って待ち受けているか調べる
↑こんな感じで、今回は待受ポートを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
私の場合はこんな感じです。ユーザー名、ディレクトリパスは適宜変わってきます。
ちなみに前提条件のコンフィグ
サイトをリニューアルした時のhtaccessでのリダイレクト設定
どのurlに来ても、あたらしいドメイン(www.hogehoge)に301リダイレクト設定をする
指定ディレクトリなどの情報は引き継いてリダイレクト
RewriteRule ^(.*)$ https://www.hogehoge/$1 [R=301,L]
常に、www.hogehogeのTOPにいく
RewriteRule ^.*$ https://www.hogehoge/ [R=301,L]
メンテナンス時など、どこにアクセスしてもTOPを表示などはこちら
Google Tag Manager(GTM)で指定のページだけcssを実行
こんな感じで
- 「トリガー」にて実行ページなど条件を設定
- 「タグ」のカスタムHTMLにCSSを書く
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)
参照
はてなブログの独自ドメインをVALUE DOMAINで設定する
はてなブログProにしたので、独自ドメインの設定をしてみました。 VALUE DOMAINなので、そこのDNS設定に行って
cname blog hatenablog.com.
としてあげました。
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>
パラメータつきurlのリダイレクト
Redirect permanent とか
RedirectMatch permanent だと
だめっぽくて
RewriteCond %{QUERY_STRING} id=([0-9]{3})&name=([a-z]+)$
RewriteRule ^foo/index.html$ /foo/%2/%1.html? [R=301,L]
ならいけるみたい。
パラメータ付きは %{QUERY_STRING} で処理しなさいってことかな。