purazumakoiの[はてなブログ]

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

複数のcsvをそれぞれのシートに分けてExcelファイルとしてインポートする方法

結論から言うと

こちらの方法でできました www.excel.studio-kazu.jp ※ 65536行を超えるCSVファイルはエラーとなります。

手順

1.CSV達と新規BOOKを同じフォルダにいれる

f:id:purazumakoi:20180606164019p:plain

2.標準モジュール(ALT+F11)を開き以下のコードを適当にsheet1のあたりに入れて「実行」する

Sub CSV読み込み()
    Dim myFile As String
    Dim myPath As String
    Dim newWB As Workbook
    myPath = ThisWorkbook.Path & "\"
    myFile = Dir(myPath & "*.csv")
    Do Until myFile = ""
       Set newWB = Workbooks.Open(myPath & myFile)
       newWB.Sheets(1).Copy Before:=ThisWorkbook.Sheets(1)
       newWB.Close False
       myFile = Dir()
    Loop
 End Sub

f:id:purazumakoi:20180606164200p:plain

3.保存する

1ファイル1、2秒読み込みにかかった。これはデータ量などによりそう。 望みのものが出来上がった。

cssなどのファイルの有効期限を設定する

こんなシーンで有用

サイトをリニューアルしたけど、読み込んでいるcssが古いため、キャッシュを読んでしまってサイトが崩れてしまっている。 これはpcで多い印象。

しかしながら、全ユーザーにキャッシュをクリアしてくれと言うこともできず。

そこで予めサイトのキャッシュの有効期限を決めておきましょうと

.htaccessにこう書くテンプレート

<Files ~ ".(gif|jpe?g|png|svg|ico|otf|ttf|eot|woff)$">
Header set Cache-Control "max-age=2592000, public"
</Files>
 
<Files ~ ".(css|js|html|gz)$">
Header set Cache-Control "max-age=604800, public"
</Files>

画像やフォントはおいておくとして css、js、html, gzを最大7日間(604,800秒)のキャッシュ保持としている

リニューアルの1、2週間前に設定しておけば、とりあえず1週間経てばいい感じになります! という担保はできる。 本当はcssのパラメータ付与といった形でデプロイして、リニューアルのタイミングで全員が崩れないようにしたいところだが、WEB制作は、色々他にもやることがおおいので、このあたりは往々にしておなざりにされるので、 そのことも考慮して、キャッシュコントロールは事前にしておいたほうがよい。

参照

www.terakoya.work

Apacheのmod_deflateでコンテンツを圧縮して転送

mod_deflateを使うと、圧縮してから転送するので、 要するに、サイトが早く表示されるし、転送量も少なくてすむとのこと。 これは良さそう。

調べてみると、、

要するにこう書けばよいとのこと

検証はおいておいて、ひとまずメモ。 某大手サイトのhataccessにもこれで書いてあったので、いちおうこれでOKかと思われる。

<IfModule mod_deflate.c>
     SetOutputFilter DEFLATE
 
     # Mozilla4系などの古いブラウザで無効、しかしMSIEは除外
     BrowserMatch ^Mozilla/4\.0[678] no-gzip
     BrowserMatch ^Mozilla/4 gzip-only-text/html
     BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
 
     # gifやjpgなど圧縮済みのコンテンツは再圧縮しない
     SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
     SetEnvIfNoCase Request_URI _\.utxt$ no-gzip
 
     # htmlやcssなどは圧縮
     AddOutputFilterByType DEFLATE text/plain
     AddOutputFilterByType DEFLATE text/html
     AddOutputFilterByType DEFLATE text/xml
     AddOutputFilterByType DEFLATE text/css
     AddOutputFilterByType DEFLATE application/xhtml+xml
     AddOutputFilterByType DEFLATE application/xml
     AddOutputFilterByType DEFLATE application/rss+xml
     AddOutputFilterByType DEFLATE application/atom_xml
     AddOutputFilterByType DEFLATE application/x-javascript
     AddOutputFilterByType DEFLATE application/x-httpd-php
</IfModule>

参考サイト

oxynotes.com

jyn.jp

LINE配信PDCA ファーストビューが可能&画像クリックが出来たほうがいい

f:id:purazumakoi:20180417091528p:plain

かなり画像は歯抜けになってしまったが、LINEの配信PDCAのメモです。

仮説

画像がクリックできないのはまずいのでは?

実施

  1. カルーセルタイプ(左)で配信をしていた。だがこれだと画像がクリックできないので、機会損失では?と思い

  2. 画像型に(右)にした所、クリック数、クリック率が向上した。また1st viewで全部が見えていたほうが良いような気がする。

課題としては2番目のバナーのほうがクリック数が低いこと、 これは単純に1st viewで、認知領域に入ってさえしまえばあとはクリエイティブ勝負ということが読み取れる

自動的に更新される日付範囲フィルターを作成する

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 を使って待ち受けているか調べる

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