ためすう
サイトの URL を変更するときにやること
2018-08-19目的
運営しているブログの URL を変更するときにやることをまとめました。
やること
1. Google の検索インデックスから削除する
Google の Search Console から既にインデックスされている URL を削除します。 下記から削除したい URL を登録します。
2. 変更する前の URL にアクセスされた場合、リダイレクトする
既にリンクを貼ってもらった URL の可能性があるので、
301 Moved Permanently(恒久的な移転)リダイレクトするようにします。
参考
目的
Python から CSV ファイルを読み込むとしたら下記のエラーが発生しました。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/anaconda3/lib/python3.6/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8e in position 0: invalid start byte
このエラーの解決していきたいと思います。
ファイルを utf-8 で読み込むようにする
import csv
with open('data.csv', 'r', encoding="utf_8") as file:
reader = csv.reader(file)
for row in reader:
print(row)
※ data.csv は自分が読み込みたいファイルに変更してください。
しかし、エラーが発生しました。
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
File "/anaconda3/lib/python3.6/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8e in position 0: invalid start byte
ファイルを utf-8 に変換する
ここで nkf 「Network Kanji Filter」を使い文字コードを変換します。
まず nkf コマンドをインストールします。
(すでにインストールしている人はスキップしてください)
$ brew install nkf
文字コードを変換していきます。
# 現在の文字コードの確認
$ nkf -g hogehoge.csv
Shift_JIS
# 文字コードを UTF-8 に変換します
$ nkf -w --overwrite hogehoge.csv
# 変更後の文字コードの確認
$ nkf -g hogehoge.csv
UTF-8
文字コードが変わったあと、下記のコードを実行すると読み込むことができました。
import csv
f = open('hogehoge.csv', 'r')
dataReader = csv.reader(f)
for row in dataReader:
print(row)
f.close()
参考
Anaconda 環境に pip コマンドでインストールする
2018-08-12目的
Anaconda を利用している時、 conda コマンドでインストールできないライブラリがありました。
pip コマンドでインストールした時のメモになります。
方法
Anaconda 環境の確認
$ conda info -e
# conda environments:
#
base * /anaconda3
hogehoge /anaconda3/envs/styletrans
任意の Anaconda 環境を activate する
今回は base 環境にインストールしたいので、
$ source activate base
とします。
pip コマンドでインストールする
(base) $ pip install hogehoge
※ hogehoge はインストールしたいライブラリに変更してください
これで無事にインストールすることができました。
参考
静的サイトのホスティング先を Github Pages から Netlify へ移行する
2018-08-05目的
静的サイトを Github Pages で運用していたのですが、 Netlify へ移行することにしました。
理由としては、 jekyll でサイトを構築しており、利用したいプラグインが使えなかったためです。
Github 側でビルドするときに --safe
オプションが true になるため、利用できないプラグインがあります。 (自作のプラグインも不可)
ローカルでビルドしてから、Github に push するという手もありましたが、
Netlify という良さそうなホスティングサービスを見つけたので
思い切って移行することにしました。
大まかな手順を記します。
手順
Github Pages で利用しているリポジトリをコピーする
Github のリポジトリで1度、Github Pages の設定をしてしまうと、
Github Pages ではないようにするには
- ブランチ削除
- リポジトリ削除
しかないようでした。
Github Pages で初期に発行されるデフォルトのドメインが残るのが嫌だったので、
Github のリポジトリをコピーします。
Netlify でアカウントを作成して、リポジトリを指定
次に Netlify に先ほど作った、リポジトリを指定してあげます。
Netlify についてはこちら
Netlify: All-in-one platform for automating modern web projects.
設定するのは数分で出来ました。
すると、ビルド、デプロイと実行されていきます。
Netlify が付与してくれた新しいドメインでサイトが閲覧できるようになるまでも、数分でした。
Netlify に独自ドメインを設定する
自分が持っているドメインに Netlify のネームサーバーを指定します。
ネームサーバーの設定変更が浸透するまで待ちます。
※ 自分は手順を間違えてサイトが閲覧できなくなる状態が数時間続いてしまいました。
Github Pages のドメイン設定を外して、リポジトリの削除
Netlify のネームサーバーが浸透したら、以前使っていた Github Pages のリポジトリに設定してある
自分が所有しているドメインを削除します。
問題ないことが確認できたら、リポジトリを削除します。
(注意) Goolge Analytics について
Google Analytics で計測されなくなるという問題がありました。
Github Pages では下記の設定をすれば、Goolge Analytics で計測できるようになります。
_config.yml
google_analytics: UA-XXXXXXX
今回、Netlify に移行したので計測できなくなっていました。
トラッキングコードを Netlify の
Settings > Build & deploy > Snippet injection
に埋め込みます。
どのサーバーでも計測できるように、トラッキングコードをソースコードに記載するのも良いかもしれません。
参考
Anaconda をインストールする
2018-08-05目的
Anaconda をインストールします。
Anaconda は、データサイエンスに特化したプラットフォームを提供します。
導入
インストーラーをダウンロード
下記からインストーラーをダウンロードして、インストールしていきます。
インストール後、少し使ってみる
現在使用している環境は下記で見ることができます。
$ conda info -e
# conda environments:
#
base * /anaconda3
xgboost、plotly をインストールする
Kaggle というサイトで、チュートリアルコンペティションに参加してみました。
ここで、チュートリアルを進めて行くと、xgboost
plotly
をインストールする必要が出てきました。
xgboost をインストールします。
$ conda install -c conda-forge xgboost
plotly をインストールします。
$ conda install -c plotly plotly
参考
vagrant で共有フォルダのマウントに失敗するので、解決を試みる
2018-08-05目的
Vagrant で仮想マシンは起動できるのですが、共有フォルダのマウントに失敗しています。
発生しているエラー
default: /vagrant => [動かしている環境]
Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:
mount -t vboxsf -o uid=500,gid=500 vagrant /vagrant
The error output from the command was:
/sbin/mount.vboxsf: mounting failed with the error: No such device
対応手順
$ vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Installed the plugin 'vagrant-vbguest (0.15.1)'!
$ vagrant vbguest --status
[default] GuestAdditions versions on your host (5.2.6) and guest (4.3.8) do not match.
guest が古いので、vbguest プラグインで更新します。
$ vagrant vbguest
[default] GuestAdditions versions on your host (5.2.6) and guest (4.3.8) do not match.
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: ftp.jaist.ac.jp
* extras: ftp.jaist.ac.jp
* remi-safe: mirrors.thzhost.com
* updates: ftp.jaist.ac.jp
No package kernel-devel-2.6.32-573.7.1.el6.x86_64 available.
Package gcc-4.4.7-18.el6.x86_64 already installed and latest version
Package binutils-2.20.51.0.2-5.47.el6_9.1.x86_64 already installed and latest version
Package 1:make-3.81-23.el6.x86_64 already installed and latest version
Package 4:perl-5.10.1-144.el6.x86_64 already installed and latest version
Package bzip2-1.0.5-7.el6_0.x86_64 already installed and latest version
Nothing to do
Copy iso file /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso
Mounting Virtualbox Guest Additions ISO to: /mnt
Installing Virtualbox Guest Additions 5.2.6 - guest version is 4.3.8
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.2.6 Guest Additions for Linux........
VirtualBox Guest Additions installer
Removing installed version 5.2.6 of VirtualBox Guest Additions...
You may need to restart your guest system to finish removing the guest drivers.
Copying additional installer modules ...
Installing additional modules ...
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel modules.
This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
kernel-devel kernel-devel-2.6.32-573.7.1.el6.x86_64
VirtualBox Guest Additions: Starting.
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel modules.
This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
kernel-devel kernel-devel-2.6.32-573.7.1.el6.x86_64
An error occurred during installation of VirtualBox Guest Additions 5.2.6. Some functionality may not work as intended.
In most cases it is OK that the "Window System drivers" installation failed.
VirtualBox Guest Additions: Starting.
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel modules.
This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
kernel-devel kernel-devel-2.6.32-573.7.1.el6.x86_64
groupadd: group 'vboxadd' already exists
modprobe vboxguest failed
The log file /var/log/vboxadd-setup.log may contain further information.
ゲスト側の /var/log/vboxadd-setup.log
は下記が残っていました。
Building the main Guest Additions module.
/tmp/vbox.0/Makefile.include.header:141: *** Error: unable to find the headers of the Linux kernel to build against. Specify KERN_VER=<version> (currently 2.6.32-573.7.1.el6.x86_64) and run Make again. Stop.
Creating user for the Guest Additions.
Creating udev rule for the Guest Additions kernel module.
modprobe vboxguest failed
ここでエラーを追うのはストップしようと思い Vagrant を再起動すると、共有フォルダがマウントされるようになりました。
$ vagrant halt
$ vagrant up
※注意: 根本解決はしていません
参考URL
less で zip、gzip を開く
2018-08-04目的
例えば、ログがローテートされて gzip 形式で保存されているファイルの確認をしたい時
ファイルを展開せずに確認する方法です。
実験
gzip のファイルを見る
$ vim test.txt
下記を入力します
test
test1
test222
test.txt.gz に圧縮します
$ gzip test.txt
方法1. less で見る
$ less test.txt.gz
方法2. gzcatで見る
$ gzcat test.txt.gz
zip のファイルを見る
$ vim ziptest.txt
下記を入力します
ziptest
ziptest1
ziptest222
zip ファイルを作ります
$ zip ziptest.txt.zip ziptest.txt
adding: ziptest.txt (deflated 32%)
方法1. less で見る
zip ファイルの中身を確認することができました。
$ less ziptest.txt.zip
Archive: ziptest.txt.zip
Zip file size: 191 bytes, number of entries: 1
-rw-rw-r-- 3.0 unx 28 tx defN 18-Mar-03 15:35 ziptest.txt
1 file, 28 bytes uncompressed, 19 bytes compressed: 32.1%
php でファイルパスを検索する
2018-08-04目的
アップロードされたファイルが見えないファイルかどうかを判別する時に
php の標準の関数を利用して、ファイルのパスで行うようにしました。
その時に使用する basename と dirname の挙動について調べてみます。
ちなみに
Windows では、スラッシュ(/) とバックスラッシュ () の両方がディレクトリ区切り文字として使われます。 その他の環境ではスラッシュ(/)になります。
やってみる
$ vim test.php
<?php
$files = [
'p_dir1/p_dir2',
'p_dir1/p_dir2/test.jpg',
'test2.jpg',
];
foreach ($files as $v) {
echo $v . "\n";
echo "dirname: " . dirname($v) . "\n";
echo "basename: " . basename($v) . "\n";
echo "\n";
}
実行結果
$ php test.php
p_dir1/p_dir2
dirname: p_dir1
basename: p_dir2
p_dir1/p_dir2/test.jpg
dirname: p_dir1/p_dir2
basename: test.jpg
test2.jpg
dirname: .
basename: test2.jpg
参考URL
php でファイル操作する方法
2018-07-29目的
大量のデータをバッチで処理する時に
最後まで処理した id をファイルに記録しておく必要がありました。
その時にファイル操作が必要だったので、挙動を確認します。
やってみる
position.txt に最後に処理した id を記憶します。
まずは、手動で作っておきます。
position.txt
100
php_file.php
<?php
// 最後に処理した id を取得します
$file_path = './position.txt';
$a = file($file_path);
var_dump($a);
$b = file_get_contents($file_path);
var_dump($b);
// id: 101 を処理
// id: 102 を処理
// ...
// id: 999 を処理
// 最後に処理した id を記録します
$c = file_put_contents($file_path, 999);
$c2 = file($file_path);
var_dump($c2);
実行結果
$ php php_file.php
array(1) {
[0]=>
string(4) "100
"
}
string(4) "100
"
array(1) {
[0]=>
string(3) "999"
}
参考URL
rbenv を使ってみる
2018-07-29目的
ruby のバージョンを任意のタイミングで切り替えることができるようにします。
今回、rbenv を利用します。
方法
利用する ruby を指定します
$ brew upgrade ruby-build
インストールできる ruby を確認します
$ rbenv install --list
今回 ruby の 2.2.7 をインストールしたいので下記のように指定します
$ rbenv install 2.2.7
バージョンを確認します
$ rbenv versions