((Pythonで) 書く(Lisp) インタプリンタ) というやつをpython3でとりあえず動かす
タイトルの通り. やってみたら以外とあっさりPython3対応できた
元ネタは以下の記事
Python3対応自体も既出のネタかもしれないが、書いてしまったので公開する
環境準備
適当にPyhton3のインタプリンタを持ってくる.
自分はDockerを使って、python3.6.0
の環境を入手した
下準備
lis.py
がpython2のインタプリンタでは走るようになっていると思う.
まず、おもむろに
以下を先頭に
#! /usr/bin/env python
以下を最後尾に
if __name__ == "__main__": repl()
そして、lis.py に実行権限をつける
# chmod +x lis.py
手順
基本的にはpython2からpython3で変更されているものを対応をしたら良い
./lis.py
で、最初にエラーが出るのは、
if val is not None: print to_string(val)
python3では、printがステートメントから関数に変わっているエラーなので、 print()
に直す
それを直すと,
AttributeError: module ‘operator’ has no attribute ‘div’
がでてくる。 div
が truediv
と floatdiv
にわかれたらしい。 どちらが正しいとか本来はあると思うが、 ひとまず truediv
を選ぶ
最後が
NameError: name ‘raw_input’ is not defined
というエラーで、標準入力を待ち受ける関数名が input
に変わったとのことなので、そちらに変更する。
以上の3つのエラー対応でとりあえず再び動き始める
本来は必要な残りの作業
テストコードがあれば良いのだが、今回の元ネタにはテストコードがないので、暇があれば実装してPython3対応が正しく完了しているかを確かめたい。
DigitalOceanをざっと眺めて気になった点
クラウド事業を展開しているところに従事している都合上、他社サービスがどんな風になっているかきになるお年頃なのです。
先日、DigitalOceanを触り始めたのでそのメモ
コンパネ
- 白を基調に水色で綺麗
- 何が動作するのかは分かりやすい
- ただしわかりづらいところは、本当によく分からない(後述する)
- 料金が明示的ではないので、お金のかかり方がよく分からない
インスタンス
メモ
- 基本10個まで
- 上限解放できそう
- OS
- リージョン
- いろいろあるが日本リージョンは無い
- 地理的な話だと一番近いのがシンガポール?
- オプション
価格 | cpu(vCPU) | メモリ(GB) | ディスク(GB) | ネットワーク流量(TB) |
---|---|---|---|---|
5 | 1 | 512MB | 20 | 1000GB |
10 | 1 | 1 | 30 | 2 |
20 | 2 | 2 | 40 | 3 |
40 | 2 | 4 | 60 | 4 |
80 | 4 | 8 | 80 | 5 |
160 | 8 | 16 | 160 | 6 |
320 | 12 | 32 | 320 | 7 |
480 | 16 | 48 | 480 | 8 |
640 | 20 | 64 | 640 | 9 |
雑感
インスタンスの設定とローカルディスクのサイズが関連してしまっているので, 中サイズのインスタンスを後に, 小さいインスタンスにすることができなさそう.
なので「インスタンスのサイズを下げてコストを抑える」とかのクラウド的な基本テクが使いづらい.
日本リージョンが無いのは割と残念.
$10でまともなVMが借りることができるのは本当にすごい.
ネットワーキング
雑感
- LBが安いと思う
触っていないもの
- volume
- API
- Image
最後に
あなたがdocker-ceをcentos7にansibleでインストールしたい時に読むべき記事
タイトルの通り。
あと2017/03/03に書かれている記事なので注意
dockerがリリースサイクルを変えて、多分リポジトリの情報の配布方法も変更した模様。
具体的に言うと、 yum-config-manager
ってやつを使うようになった。
ansibleでyum-config-managerコマンドを扱ってくれるモジュールは現状なさそう。
yum_repositoryモジュールはrpmで配布するやつを扱うので今回のケースではうまくいかない?っぽいのでワークアラウンドを書く。
ワークアラウンドだと思うし、本当にyum-config-managerを扱うモジュールがいないのか?は疑問なところだが、それは後日もう少し調べる。
以下はplaybook
- name: install yum-utils yum: name=yum-utils state=present - name: add docker repo shell: "yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo" args: chdir: "/etc/yum.repos.d" creates: docker-ce.repo - name: install docker-ce yum: name=docker-ce state=present - name: restart docker systemd: name: docker.service state: restarted daemon_reload: yes enabled: yes
shell moduleでなんとかする方向でやってあげると良さそう?
ちなみに、この記事を書いてる時点でインストールされるdockerのバージョンは以下
# docker --version Docker version 17.03.0-ce, build 3a232c8
Emacsでドキュメントを読む
2017年、何としてもemacsを捨てたい気持ちと、emacsの使い方を学んでしまいより快適な環境が手に入ることによる喜びで葛藤が生まれています。
そんなことはさて置き、emacsで諸々のドキュメントを読む方法を軽く纏めます。
man
標準パッケージの woman
を使えば良い
M-x woman
の後に適当に知りたいコマンドを叩く
python
helmを使う前提になってしまうが、以下を参考に、helm-pydoc.elを使う
golang
go-modeから引ける
M-x godoc
の後に、適当にパッケージ名を入れる
ansible
以下を使う
yaml-modeと連携するので、yaml-modeを先にインストールしておくのがベター
以下は軽く調べて無かったもの
- Dockerfileのためのドキュメントを見る.el
- docker-compose.ymlのためのドキュメントを見る.el
2015年以降に増えたgTLDにご注意を
仕事でネームサーバーを扱うことになるかもしれなくて、DNSとはどのような働きをするかを調べてるうちに、
ふと思い立って、 .cloud
ドメインがあるかないかを調べてみた。
結果としてはあったのだが、それはさて置き、それ以外も調べた結果、現在所属している会社的に取られたらまずそうなドメインを2こほど抑える結果となった。
調べた過程で分かったこととして、 fujitsu.cloud
や ntt.cloud
あたりは全然関係のない外国の方が抑えている
なにやら2015年あたりに増えたgTLDあたりが割とノーマークになっている様子
現在のTLDのリストは以下で観れる
厄介なのは、 .コム (xn--tckwe)
などの文字列に対してaliasが貼ってあるドメイン。政府などがあるが、読みを見るに中国のドメインっぽい。「グーグル」なんてドメインもあるらしい。
真面目に調べたら、これ抑えられていなくて良いのか?というやつが山ほどある気がするので、転売目的の方などに取られて不要なお金を支払う羽目になる前に各自ご注意を.
メンテナンス用データを生成するツールについて僕の思う事
結論
bin/rake db:migrate
が 機械的に 実行されるような環境が最強だって事に気がついた.
不要な中間形式もなく、誤ったデータを使う可能性もかなり減らせる.
良いと思う所
手動で bin/rake db:migrte
すると考慮すべきパターンが増えるため, 機械的に が超重要. 考慮すべき間違いが減る. おそらくは, 間違ったデータを挿入しないか否かだけを考慮すべき状態になる.
また上記のコマンドは暗黙的に、gitできちんとワークフローを回していれば、productionやstagingに取り入れられて問題ないとされるデータしか入ってこないはずなのも良い点である.
但し書き
bin/rake db:migrate
でokなのは、ActiveRecordを使ったプログラミングがみんな出来る前提なので、そこら辺だけ要考慮
BSD系のコマンドを読む下準備
TypeScriptのブログを書くと言っていたけど, そんな暇もなさそう.
業務で色々なプロトコルに触れて(OSIで言うところのデータリンク層~アプリケーション層まで), わからないことだらけで困っているのが現状です.ただ分からないと嘆くだけでは前進できないので, せめてwebシステム開発の出身なんだから, HTTPサーバーを切り口に色々と勉強しよう!と思ったわけです.web上の人達もサラッとhttpサーバー書きました!みたいなノリなので.
まぁ結果としては、C言語を殆ど触ってこなかった自分としてはムズい.
もう少しレベルを下げて, まずC言語を取得しよう!というところに焦点を当てて勉強をしようと思った際に見つけた記事が以下
lsコマンドをハックしてみよう - Yahoo! JAPAN Tech Blog
なるほど. 過去の(現在でも?)yahooでは新人にBSD系のコマンドを読んで学習することを推奨しているのか.ならば自分も取り組めるのではないか?というところで, 本日はその下準備.
必要なもの
- FreeBSD
- VMを立てられる環境
- The FreeBSD Project から入手できるiso
前提
普段は CentOS + zsh + tmux + emacs で作業をしているので, それっぽい環境に近づけたい
準備
- VMに対してisoでFreeBSDをインストール
- tuiに乗せられて適当にエンターを押していけば問題なし
- その過程で適当にユーザーを作る
- 作ったユーザーを
wheel
グループに属させる pkg install sudo
visudo
でwheel
ユーザーにsudo
する権限を与える
- 適当に作ったユーザーでsshし、
zsh
tmux
emacs
git
あたりをインストール - GitHub - freebsd/freebsd: FreeBSD src tree (read-only mirror) から
git clone
してくる