pythonコマンドのデフォルトバージョンを2から3にする

pythonコマンドを調べると下記のようにシンボリックリンクが貼られているので、シンボリックリンクを削除して、python3の方にシンボリックリンクを貼り直せば良いが

$ which python
/usr/bin/python
$ ls -la /usr/bin/python
lrwxrwxrwx 1 root root 7  6月  8  2018 /usr/bin/python -> python2
$ which python3
/usr/bin/python3
$ ls -la /usr/bin/python3
lrwxrwxrwx 1 root root 9 10月 25 20:11 /usr/bin/python3 -> python3.6

aptでやってこのようになったにはいろいろ意味がある(システム側で使われている可能性がある)だろうし、python3を使いたいなら、python3と実行するのが今はよく、そのうちpython2が消滅したら自然に変わるかもしれないと思ったので、シンボリックリンクを貼るところはちょっと書いておりません。自己責任でよろしくお願いします。

ただシステム側のバージョンを変更する必要がある時もあるのかなと。python2が消滅した時にpythonのデフォルトバージョンが3に変わったから、python3がシステムにインストールされていないという事態が起きた時に対応しなくて済むようにするとかなどなどの理由。

ちなみに下記の記事ではユーザーの方にパスを通して上書きする方法をとっていたのでこれが一番いいかもしれません。

tetechi.com

pipのアップグレードをする

pipを実行したら下記のような警告が出た

You are using pip version 18.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

言われた通りに実行する

sudo pip install --upgrade pip

警告は邪魔なので極力減らしたい

1日のうち2時間考えて、2時間研究、4時間仕事する(プログラマー編)

仕事をする上で8時間なんとなく働くのは辛いぞ。ちゃんと自分の身になる時間の使い方をすれば、一日に作業する時間は4時間くらいになり、残り4時間を優雅に過ごせるに違いないという妄想です。

1日の8時間の使い方

  1. 2時間考える
  2. 2時間研究する
  3. 4時間仕事する

1. 2時間考える

コーヒー飲みながら、今日これから行う研究や仕事内容について必要なことを考える。それらの内容によってやることが変わってくるはずだけど、例としては下記のような感じ。

  • スケジュールに間に合わせるためのタスク配置を考える(遅れておらんか、オーバーワークではないか?)
  • 今日行う研究内容を決める

2. 2時間研究

先に決めた研究を実践する。とりあえず例をあげるとすると下記のような感じ。

  • 新しい技術の習得
  • 今やっている仕事に関しての深堀りなど
    • 「これから開発する部分は、もっと楽できるのでは?」を調べる
    • 「これから開発する部分は、本当に必要なのか?」を調べる
    • 「これから作業する部分に使うツールは、もっといいツールがあるのでは?」を調べる
  • 技術系ニュースを5本読むなど

なんでもいいかなと思います。

3. 4時間仕事

今日朝決めた予定通り、100%の集中力を発揮して、鬼のように止まらずに仕事する。

事前の2時間考えた事で道筋は決まってるし、2時間の研究で仕事に関する事を研究した場合は効率的な作業方法も分かってると思うので、4時間集中すると、周りの人が3日かけてやる量の作業ができるはずDA(言い過ぎ)

おわり

そして定時であがり、夜はやりたいなら研究でも。

サボったり、一日中働いたり、いろいろしてきたけど、こんな生き方が一番業務の進捗率が俺はいいので、今後はこういうふうにやっていこうかなと決めました。皆様もよかったらぜひ。

2019年の目標

5年前から目標立てずに暮らしてました。でも目標持ったほうが方向性がみえて歩きやすいですよね。

1〜3月って年末のおつかれムードが消えないから、案外4月に目標立てて12月まで頑張るって方針はありかもしれない。

目標

主に副業のことです!

  1. 一番人気のサービスのモバイル対応
  2. 成長率の高いサービスの増強・拡張
  3. 新規サービスの開発2本
  4. AIの導入で雑務を自動化
  5. はてなブログからWPへ移行

1. モバイル対応

一番人気のサービスは、このサイトだけの収益で生活できていたことがありましたが、2年前にアイディアをパクられて急激な利益激減をしました。

負けた原因としてはうちはモバイル対応していないからかなーとも思っておりまして、ちょいと手を入れてどうなるかってのを見てみたいと思っています。

ただそもそも現代的なサービスではないので期待はしてないです。

2. 成長率の高いサービスの増強・拡張

1年前に作ったサービスは5本ほどで、うち2本くらいが成功しました。

昨年比100%以上に成長したサービスは、システム的構造の見直し、コンテンツ増量、システムの拡張をします。既に完結しているサイトなので、できることは限られています。一ヶ月くらい使えば終わるかと。

3. 新規サービス2本

これはいけるというサービスが2本ある。これらは1本あたり一ヶ月あれば作れる。ハゲそうだがやらないと来年楽しくなくなる。

4. 機械学習の導入

毎日コンテンツが生成されるサイトがあり、これも少し成長したんですが、大した成長が起きていない。原因として運営が不定期ってのがあります。

コンテンツは機械が整理して生成するのですが、その成果物の内容を吟味してOKとNGを出す作業は人力で行っています。

人力で何百件も私が処理してきたので(笑)、私の判断パターンを機械学習で学ばせて、今後の運営は自動化しようかと。

追記:あれから実装してみたが思ったより良い成績が出ないので調整中。

5. ブログのWP移行

時間がなかったので一時的にはてなブログを使っているんだけど、やっぱりサポートに連絡しても対応してくれないことが多いしトラブル時に自分で対応できないのでWPで構築して移行することにした。はてなブログのProプランが4月までなので、12月から移行作業を開始すれば間に合うだろう。後回しです。

おわり

また定期的に追記しながら頑張ろう!

Ubuntuで複数のPDFファイルを一つのPDFにまとめる

Web上に落ちているPDFをダウンロードして結合したい。まずは下記のようにして適当なディレクトリの中にPDFをダウンロードしておきます。

mkdir -p ~/Downloads/pdfs
cd ~/Downloads/pdfs
Curl http://example.com/a.pdf -o a.pdf
curl http://example.com/b.pdf -o b.pdf
curl http://example.com/c.pdf -o c.pdf

pdftkをインストールします

sudo apt install pdftk

そして拡張子pdfのファイルを下記のhoge.pdfというファイルにまとめます。

pdftk *.pdf cat output hoge.pdf

MySQLのSQLファイルからER図をCLIで一発生成する

f:id:setouchinatsu:20190406110412p:plain

CLI一発でER図を生成できるコードを書いておきました。Githubにあげてあるので下記のようにcurl経由で実行できますよ。

curl https://raw.githubusercontent.com/setouchi/file-to-schemaspy/master/mysql.sh | bash -s -- \
  -u dev \
  -h database \
  -p dev \
  -p 3306 \
  -n tmp_db \
  -s ~/dev/home/file-to-schemaspy/test.sql \
  -o ~/downloads/er

各パラメータは下記のようになっています。

curl https://raw.githubusercontent.com/setouchi/file-to-schemaspy/master/mysql.sh | bash -s -- \
  -u dev \
  -h database \
  -p dev \
  -p 3306 \
  -n tmp_db \
  -s ~/dev/home/file-to-schemaspy/test.sql \
  -o ~/downloads/er

動作条件として、CREATE DATABASEとかDROP DATABASEなどなどが自由にできるMySQLデータベースがリモートなりローカルなりどっかにあり、あとはDockerもインストールされている必要があります。(データベースについてはローカルに立ち上げるもよし、Vagrantで立ち上げるもよし、Dockerで立ち上げるもよしで簡単なのでやっておこう。)

内部的にSchemaSpyを使っており、SchemaSpyがDockerで起動して処理をしています。PostgreSQLなどはそのうち作っておきます。

SQLファイルからER図を生成するツールは、MySQLWorkBentchのGUIを操作する手もあるが、手作業でER図に表示したいテーブルを持ってきたり、配置を自分で設定したりとか非常に面倒です。ShcmeSpyというCLIが存在しますが、こやつは実際に動作しているデータベースを参照するので、SQLファイルからER図を生成する場合は手動でデータベースにSQLを流し込んでから参照させなければいけず、手作業でいくつかのコマンドを実行する必要があり面倒です。

図でシステム構造の説明を求められることがあり、絵を書いたり手で図を書いたりするのが面倒だったが、SQLファイルからER図を一発で生成できるようにすれば楽に説明ができるし、SQLの整合性も担保できるので非常に良い。

参考

土曜日は家の中でゴロゴロするより無理やり外に出た方がなぜか疲れがすぐ取れる

f:id:setouchinatsu:20190326144333p:plain

 

何かの本で読んだんけど、土曜日は外に出て活発に過ごす、逆に日曜日は家でゆっくりするのがいいらしいので、土曜日は平日の疲れで本当はダラダラしていていたいけど、無理やり外に出るってのを半年くらい続けています。

 

土曜日の朝に外に出るってのを始める前は、だらだらとTwitterを見たりしちゃって、本当はもっと本格的な趣味に時間を割いた方がいいのに、どうでもいいことに時間を割いてしまう。結果、土曜日は無駄におわり、日曜日からやっと自分のために時間を使えるって感じになってました。

 

しかし、土曜日の朝すぐに外に出ると、なんか違う。

一応喫茶店とか公園いったとしても、身体や精神が疲れてることには代わりないから、そこでもまたTwitterみたり何もしないでぼーっとするんですけど、環境を変えた影響なのか、多少身体と精神の疲れの回復が早く感じる。

 

多分、*なんか充実している感* を感じた結果、精神的な疲れを早く回復させているのかな。

逆に、家の中にずっといると「俺はなんて時間を無駄にしているんだ。。」という気持ちが精神に対して別の疲労を蓄積しているから疲れがとれにくくなっているのかもしれない。

 

皆さんも騙されたと思って外に出てみてください。

 

 

 

 

UbuntuでHHKB BTを使うための設定

UbuntuでHHKB BTを使うために設定したことをまとめます。

背面スイッチの調整

HHKBの◇キーをUbuntuにおけるSuperキーとして認識させるにはLite Extモードに切り替えます。このモードは◇キーをWindowsキーとするためのものですが、この設定にしてUbuntuと接続すればSuperキーとして認識されます。

あとはAltとSuperキーの配置転換などは人によって好みがあると思うので自由にどうぞ。

ペアリング

電源ボタンを長押しすると青色のLEDが点滅する。Bluetoothの端末一覧にHHKB BTという端末が出現するので、パスコードを打ち込んでペアリングします。

おわり

当初遅延と打鍵感を心配したが、遅延はなかったし、もともとHHKB Lite2ユーザーだった私としては打鍵感も天地の差でした。やっぱり3万円するだけあります。これから10年くらいよろしくお願いします。

HHKB Lite2と違いコンパクトに感じるのは本当にコンパクトである点とケーブルがない2点によってそう感じさせるのかもしれません。

HHKB Lite2でCAPSが常時ONになった時の解除方法

何かしていたら突然CAPSがONになって大文字しか打てなくなるが、左Shiftと右Shiftを同時に押すと解除できるようだ。調べていてもあんまりこれで悩んでいる人がいない。こちらはLinux環境なのだが、WindowsやMacならなんか解決できるってことなんだろうか。