2017年2月27日月曜日

[解決]Linuxでクリックポストを利用すると印刷時に文字化けする

追記2:
2017/06/30 1つずつ申し込みをしてPDFを読み込んでも問題なくなりました。


追記:
2017/04/17現在、csvテンプレートから住所を読み込むことが出来るようになり、下記の文字化けは起こらなくなりました。

--

タイトルの通りなのですが、WindowsとMacは対応しているけどLinuxはダメだそうです。Chromeで画面表示までは上手く行くのですが、pdfにするときにダメみたいです。無念。いろいろな文字が「?」に化けています。

オフィシャルなFAQにはhttps://clickpost.jp/faq/index

4 印字したラベルの情報に誤りがあったので、手書きで修正又は追記してもよいですか。
印字後のラベルを修正等したものは、お引き受けすることができません。お手数ですが、再度発送の申込みをしていただき、ラベルを印字し直してください。

と書かれていたりして。でも手書きで直しています、そして届いています。申し訳ないけど、何度やってもなるのでそういうものなのでしょう。

2017年2月20日月曜日

応用情報技術者試験に申し込んだ

4月16日(日)の試験を受けることに。データベーススペシャリストとか狙ってみようかと思ったけど、受けたことがないので応用情報技術者試験からに。基本は過去問がサクサクとけたからそういうものなのでしょう。

模試を解くのを中心に試験勉強を頑張りたいです。

2017年2月19日日曜日

[R]ロト6の結果を抽出

rvestをインストールするときに少し苦労、というか追加でいろいろインストールする必要あり。
install.packages("rvest)
から出てくるエラーを追いかけて、ターミナルでインストールしました。自分の環境の問題な気もします。

--
ここからはスクレイピングの話です。
参考にしたのは本家の<a href="https://github.com/hadley/rvest">GitHub</a>です。

URLは、みずほ銀行サイトにあるロト6の過去の当選番号です。
> loto <- backnumber="" https:="" loto60001.html="" loto="" num_joy="" read_html="" table="" takarakuji="" typetk="" www.mizuhobank.co.jp="">%
+ html_nodes('table.typeTK tbody tr') %&gt;%
+ html_text()
出てきたものは\n 改行が入っています。
> num_joy
 [1] "第1回\n2000年10月5日\n02\n08\n10\n13\n27\n30\n39\n"
  [2] "第2回\n2000年10月12日\n01\n09\n16\n20\n21\n43\n05\n"
・・・
とりあえず\nをスペースに置換して見やすく。
&gt; gsub('[\n]', ' ', num_joy)
 [1] "第1回 2000年10月5日 02 08 10 13 27 30 39 "
  [2] "第2回 2000年10月12日 01 09 16 20 21 43 05 "
・・・
rvestが入っているとここまでは比較的簡単です。
library(rvest)
df <- data.frame() # initialize
# 開催回でループ
for (kai in seq(1,1040, by=20)){
  url_pre = "https://www.mizuhobank.co.jp/takarakuji/loto/backnumber/loto6"
  url_all = paste0(url1, sprintf("%04d",kai),".html")
  # htmlを読む
  loto <- read_html(url_all)

  # htmlのタグを読む
  num_joy <- loto %>%
    html_nodes('table.typeTK tbody tr') %>%
    html_text()

  # 20回ずつデータが取れるのでdfに追加していく
  for (i in 1:20){
    arg0 = c(strsplit(num_joy[i],'\n'))
    if (nrow(df) == 0){ # 初回データが書き込まれないので
      df <-data.frame(lapply(arg0, function(x) t(data.frame(x))))
    }else{
      df <- merge(df, data.frame(lapply(arg0, function(x) t(data.frame(x)))), all=T)
    }
  }
}
メモ:
# loto6XXXX.html の部分を変えていけば良い。20回分ごと
# toString: num to string
# paste0: str連結(間に何もいれない)
# seq(1,100, by=20):seq(a,b,by=c)からbまでcとびで。
# sprintf("%04d",x) フォーマッティング、必ず4桁になるようにゼロ挿入
# %>% のあとの改行は + はいらない(Consoleで表示されているだけ) 引き続きロト6です。2017/02/19現在で、20個ずつデータが取れる1040回分まで取得しました。1年以上たった回のものです。1年以内のものは、払い戻しが可能であるため別ページで払い戻し金も含めて書いてあります。1等で少なくとも8,000万円とか当たるらしいです。夢が広がりますね。

さておき続きです。

ヒストグラムを見たいのですが・・・

hist((df$X9))

と打つと、以下のエラーが出ています。numericじゃないからダメだと。

Error in hist.default((df$X9)) : 'x' must be numeric

c(df$X9)
でベクトルに置き換えたらできました。

linux に Rstudioを入れるときに失敗した話

結論:UbuntuLinuxが32bitだと思ったら64bitを入れていた。

Ubuntu 16.04LT

マシンは32bitなのですが、OS入れ直しも面倒なので、Rも64bit版を入れることに。
rstudio-1.0.136-amd64.debをダウンロード
ここ→https://www.rstudio.com/products/rstudio/download/

先にR本体を入れる。
$ sudo apt-get install r-base

続いてRstudioを入れるのですが・・・
$ sudo dpkg -i rstudio-1.0.136-amd64.deb

とやってみるとディペンデンシーの問題があるとのこと。
dpkg: error processing package rstudio (--install):
dependency problems - leaving unconfigured

こうやると関係のあるものを集めてくれる。
$ sudo apt-get -f install

もう必要ないパッケージは消してね、というメッセージ
The following packages were automatically installed and are no longer required:
  ・・・
Use 'sudo apt autoremove' to remove them.

消す
$ sudo apt autoremove

もう1回インストール。
$ sudo dpkg -i rstudio-1.0.136-amd64.deb

特に問題なく終了。

$ rstudio
で起動。成功。





経緯メモ:自分用
--
もうひとつ失敗。サーバ用のRを入れようとしていた。(stackoverflowを見ている間にごちゃごちゃになった)

export SUDO_FORCE_REMOVE=yes

You have asked that the sudo package be removed,
but no root password has been set.
Without sudo, you may not be able to gain administrative privileges.

ルートパスワードを設定しないといけない?

$ sudo gdebi rstudio-server-1.0.136-i386.deb


・・・とかやっていたが、サーバ用だったのが問題と判明、終了。見るところ間違えていた。

--

E: Unable to locate package <package>
というエラーが出たとき。それが自分のUbuntuにあるかどうかを調べる。

http://askubuntu.com/questions/378558/unable-to-locate-package-while-trying-to-install-packages-with-apt

パッケージを検索できる。
http://packages.ubuntu.com/

--

こんなのが出て
rstudio: error while loading shared libraries: libuuid.so.1: cannot open shared object file: No such file or directory

調べるとありますよ。
$ locate libuuid.so.1
/lib/x86_64-linux-gnu/libuuid.so.1
/lib/x86_64-linux-gnu/libuuid.so.1.3.0


どうやら32bitのマシンにLinux64bitが乗っていることでおかしなことになっているようだ。

http://askubuntu.com/questions/539842/app-cant-find-libs-even-though-they-exist

2017年2月15日水曜日

読んだ本 2017

暗号がカネになる ビットコインのからくり

ブルーバックスの本で、技術的な解説と経済的な解説が2人によってなされている。技術的な話はまぁまぁ理解できた。著者の立ち位置として、ビットコイン推しの人の本で、国家による通貨の危うさなどを説いている。自分としては、ビットコインのマイニングによって与えられる、しかもどんどんなるのに与えられる量は減っている「仕組み」というのが理解できないです。最初に持っていた人=開発者が得をするだけなのでは、という感想。


基準値のからくり

ブルーバックスの本。けっこう真面目に書かれていて、面白かったです。卵の賞味期限、消費期限の決め方や、携帯電話の電波は15cm人体から話しましょう、の人体の定義(塩水の袋)などなど。制度が変わることで基準がころころ変わったりしているのも大変ですね。個人的には放射線測定が気になりますが・・・どうしようもありませんけど。


進撃の巨人と解剖学

ブルーバックス。解剖学の先生(養老 孟司の弟子だそうです)が書いた本。著者と対談なりコンタクトしていないのが残念。同じ講談社ですし、何とかならなかったのでしょうか。本の内容としては、人体を解剖学的に説明(骨とか筋肉とか)して、それが進撃でどうかかれているかを論じる内容です。勉強にはなったが、残念。


なぜ蚊は人を襲うのか

岩波科学ライブラリー。蚊の研究者の本。なかなか「なぜ」なのかを説明してくれない。このシリーズはだいたいそうなんでしょうか。ハトも同じでしたけど。


ハトはなぜ首を振って歩くのか

岩波科学ライブラリー。ハトの本。二足歩行の研究をしている沖縄の研究者のようです。なぜ、の答えまでの前置きが長い。視野の問題と、運動の補助のようですが、未解明の部分も多いようです。面白かった。


連鎖する大地震

岩波科学ライブラリー。パラパラ読んだだけ。データをプロットすると、地震のマグニチュードと頻度が曲線に乗るらしいです。グーテンベルク・リヒターの関係と呼ぶとか。他にもそういう関係があるとか。日本人研究者がけっこういろいろな法則を発見しているとか。地震大国と呼ばれているだけはありますね?しかし予知技術とかはどうなんでしょうか。読み飛ばしてしまったかもしれないが・・・。


iPS細胞はいつ患者に届くのか
塚崎朝子 岩波科学ライブラリー

iPS細胞を広く利用するための過程などを書いた本。ちょっと感情的な面や、努力推しの雰囲気です。科学なのに、最後は人の感情でどうにかする、って話なんですかね。ガンダム逆襲のシャアを少し思い出しました。


2017年2月8日水曜日

MySQLの勉強

追加。例がある
https://cloud-textbook.com/131/

https://dev.mysql.com/doc/refman/8.0/en/creating-database.html

===

ドットインストールで勉強したのでメモ
一通り試して2時間半くらい

■MySQLにrootユーザでログインする パスワードあり
mysql -u root -p

■MySQLから抜ける
exit または quit

■データベース(の名前)を見る(※複数形に注意)
show databases;

■MySQLを起動してからの時間を見る
mysql> show status like 'Uptime';
+---------------+---------+
| Variable_name | Value   |
+---------------+---------+
| Uptime        | 1073461 |
+---------------+---------+



■作業ユーザ dbuserを作る パスワードは弱いとNG
grant all on blog_app.* to dbuser@localhost identified by 'PAssw0rd'


■テーブルを作る。名前users。項目a1,a2,....

create table users (
a1,
a2,
...
);

型は char, varchar, int, double, text, enum , date, datetimeなどあり
not null 必ず値があること
auto_increment primary key
unique ダブらない
default XXX デフォルト値設定
key XXX (XXX) 検索キー

■テーブルを見る(※複数形に注意)

show tables;

■テーブルを消す。名前users

drop tabel users;

■テーブルusersの中を見る

desc users;

■テーブルusersに挿入する

insert into users (a1, a2, (省略可)...) values ('b1', ,,,)

■テーブルusersから選択して表示

select * from users;

select a1 , a2,,, from users;

■テーブルのアイテムごとに表示(※; は不要)

select * from users \G

■whereを使ったusersの検索

select * from users where (検索式);
検索式は a1 > 10など。 = , !=(<>)

select * from users where a1 like '%XXX'

% : 0文字以上の文字列
_ (アンダースコア):1文字
■where, between で数字の以上以下

■where a1 in ('XXX', 'YYY') で

■条件式は and でつなげる or も可能

■ソートする

select * from users order by a1

(逆順にソート)
select * from users order by a1 desc 

■数を制限する
limit 3

■数を制限する、オフセットをつける。ゼロ始まり
(3番目から2個抽出)
limit 2, 2

order by a1 limit 3 とか組み合わせも可能

■集計する
同じ項目を無視する
select distinct a1 from users;


select *  from users order by rand() limit 1;
ランダムに1つ選ぶ


mysql> select email,length(email) from users;

文字列の連結
concat 

mysql> select concat(name, email) as label from users;

文字列の部分を選ぶ substring
mysql> select substring(name,1,1) from users;

現在時刻の表示
mysql> select now();

テーブルの更新
mysql> update users set score = 2 where id =3;

テーブルの中から条件をつけて削除
mysql> delete from users where score <= 3.0;

full_nameという項目を増やす。nameの後に増やす。
mysql> alter table users add full_name varchar(255) after name;

変更 afterで場所を変えることもできる

mysql> alter table users change full_name full_name varchar(100) after email;

消す
mysql> alter table users drop full_name;

インデックス追加(add->dropで消す)
mysql> alter table users add index email (email);


テーブルusersをblog_usersにリネーム
mysql> alter table users rename blog_users;

複数のテーブルを指定するときは . で指定する。テーブル名(.)コラム from XXX,YYY where 条件
mysql> select users.name,posts.title from users,posts where users.id=posts.user_id;

+逆向きに並べる
mysql> select users.name,posts.title,posts.created from users,posts where users.id=posts.user_id;


テーブルを作るとき、既に存在するなら上書き
drop table if exists users;

外部ファイルのコマンド
linuxで XXX.sql ファイルを同じディレクトリに作る。Vimとか使う
mysql -u dbuser -p blog_app < XXX.sql
(password type)

で実行できる。


#19 バックアップ
dump する
mysqldump -u dbuser -p blog_app > blog_app.dump.sql
復元
mysql - u dbuser -p blog_app < dumpファイル名

UbuntuにMySQLをインストール

https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-14-04

上記サイト参考にして、MySQLをインストール。
3行目まではできたが、4行目はできず。

  • sudo apt-get update
  • sudo apt-get install mysql-server
  • sudo mysql_secure_installation
  • sudo mysql_install_db


~$ sudo mysql_install_db
2017-02-08 20:20:06 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2017-02-08 20:20:06 [ERROR]   The data directory needs to be specified.

よく分からず。

とりあえず、インストール自体はできました。ドットインストールでシコシコ勉強します。

~$ mysql --version mysql Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using EditLine wrapper