Year: 2017

pythonで言語作ってみた(ply(Python Lex-Yacc)使ってみた)

言語作ってみたいけどc言語かけぬ、、、と思い検索すると、ply(Python Lex-Yacc)というものを発見。使ってみた。 https://github.com/dabeaz/ply 猿でもわかる解説 自分の理解では、3つのパートからできている 「ヘルプ」と打つと使い方を表示してくれる「HELP」という機能を作る例をみていく (0)requirements pythonバージョンは3 plyというモジュールを入れておく (1)言葉を決める トークンとやらをまず作る トークンは文章を品詞分解したあとのパーツのようなもの、今回は「ヘルプ」と一言打つだけなので一個だけ定義する HELPトークンに「ヘルプ」または「help」が入るとする 正規表現が使える (2)やることを決める lexという、入力された情報を先ほど定義したトークンでどう理解するかを決めるモジュールを読み込む トークン「HELP」、つまり、先ほど定義した「ヘルプ」か「help」が入力されたら、printで説明文を出すようにする ちなみに ちなみに、トークン「INPUT」と「VAR」を使って以下のように定義されていた場合、t[1]にINPUT、t[2]にVARの値が入る なので とすると、以下のように値を返すことができる (INPUTにはinput、VARには文字列何でも入るとする) (3)どう実行するかを決める 最後に、構文解析をするyaccというモジュールを読み込む 入力とパースの制御について記述(雑) 合体させると 以上合体させるとこんな感じに これでヘルプだけ実行できるようになる コード 機能をちょっと強化すると以下のような感じに 最新版はこちら 実行 実行するとこんな感じ 色々ツッコミどころ満載ですが、一旦これで

Starwarsの予習

明日StarWarsを見に行く。StarWars全然知らないので、ubuntuで以下コマンド実行すれば予習ができる? 参考: Watch Star Wars In Linux Terminal  

電気の話(複線図の書き方事始め)

文系ど素人が電気工事士2種の勉強をしたのだが、前提知識についてはあまり無く苦労したので、 配線図を中心に詰まったところまとめ 「そこから?」というところから記載しているので悪しからず ケーブルと電線 芯線:針金みたいややつ 電線:芯線にカラフルな被覆をまとったもの ケーブル:電線に被覆がついたやつ 接地と非接地 接地:常に電気が通っている、白色の電線を使う、複線図では「N」って記載されている 非接地:スイッチがつながっているので通ったり通らなかったり、黒色の電線を使う、複線図では「L」って記載されている 複線図の理解 登場人物は大きく三つ 電球(負荷):スイッチによってオンオフされるもの コンセント:常に電気が通っているもの スイッチ:電球のオンオフをするもの いつもこの輪っかをコンセントや電球ごとに作っていたら電源が足りないので、 がっちゃんこしたのが以下の図 電線をくっつけるところは決まっていて、下の図では真ん中の点線の中 ちゃんと、コンセントは常に通電している、かつ、電球はスイッチによってオンオフできる状態になっている 書き方についてはググればたくさん出てくるので省略

goのバージョン管理(goenvのインストール)

pythonのpyenvのように、goにもバージョン管理ができる「goenv」があったのでインストール 以下エラーが出たので、 homebrewアップデート 何も起こらなかったが、これで無事にインストールできた 何もインストールされていない状態 せっかくなので、いくつか入れてみる まずはどんなバージョンがあるかチェック どのバージョンが流行っているのかわからないので適当に入れてみる 入っている

VMware FusionでNATしたい時Gatewayはどこを指定すれば良いの?

Macbook上のVMware Fusion上の仮想ストレージをAWS S3と繋ぎたかった時にハマったこと。 移動するたびにゲートウェイを気にするのが手間だったので、NATを使いたかった。 ifconfigを確認すると、vmnet1とvmnet8がある。 vmnet1はホストオンリー、vmnet8はNATのネットワーク。 なので、今回は192.168.154.0/24の範囲で設定する。 安易に192.168.154.1をゲートウェイに設定してもS3に繋がらないと思ったら、 ゲートウェイのアドレスが違っていた。 /Library/Preferences/VMware Fusion/vmnet8を確認すると書いてあるので、 そちら設定することで解決。

svmで天気を分析してみる

dockerでpython環境を整えた話の続き ■準備 特に何も分析したいものがないので、天気のデータを分析する 気象庁のページから情報を拝借、データの形を整える csvデータはこちら できたのは、こんな感じの中身のデータ 気温、降水量(mm)、日照時間(h)、降雪量(cm)、風速(m/s)などの情報から天気を当てさせようとしている ■中身 中身はこんな感じ ■実行 リストで出ているのが、予測天候 テストデータとして使われたデータ(答え)はtest_labelに入っているので照らし合わせても良いが、一応一番下を見ると、80%くらい(0.804347826087)の割合で当たっていることがわかる 今は、cross_validationを使って学習データと、テストデータを作成してしまっているが、もう少し地道に学習データとテストデータの割合を調整すれば正答率も変わってきそう

dockerでpython環境を整えた話

■docker install Install Docker ■create container プロセス確認 コンテナの名前は指定しないとランダムにつけられるらしい Dockerコンテナのおもしろい名前 ■operate container dockerを始める dockerに入る 意味があるのかわからないがログインをしておく docker.comで登録したアカウント ■ディレクトリをマウントしてログインする わかるようにファイルを作っておく そしてマウントしつつログイン ■imageとして保存 ■必要モジュール入れる padasが入らない pip3でも入らない なぜか一度pythonコンソールに入ったら入った これで一旦環境は整ったので機械学習入門するぞ

pexpectで処理自動化する

他の機器にsshしてどうこうする処理を自動化したくてpexpectで書いてみた。for文で回したいときなど便利。 linuxではない機器でもいじれるのが良いと思った。