A Tour of Goをやってみた(1)
前から気になっていたA Tour of Goをやり始めました。
初日は「welcome」から「Flow control statements: for, if, else, switch and defer」をやってたのだが、その感想を月並みだが箇条書きで書いてみます。
- 電車の中でiPadでやっていたので、ブラウザ上でコードを記述して実行できること。
- 今の所、構文が分かりやすい。ループがforのみである事などに、構文を限定しようとする思想を感じる。
- かなり分かりやすい英文で書かれているように思える。(有名な技術系のドキュメントは大抵そうだけど・・・)
昨今(いや、昔からか・・・?)、プログラマになるには英文が〜・・・、と言われるけど
- 英文の分かりやすさ
- 開発環境構築しなくても試せる
- 構文がry
などの理由から、未経験者にプログラムとはこんなものだよー、と体験してもらうのに
ちょっとイイかもなどと思いました。
nodejs(Lambda用)の自分流の開発環境構築〜実行まで
私がAWS Lambdaで実行するnode.jsを開発する際の、実行環境・開発ツールのセットアップ〜実行までの手順のメモ。
改善点があればアップデートしていくつもり。
プロジェクト作成
参考サイト
- ハンドラをローカルでキックするソース
作成したサンプルソース
- main.js(メイン処理)
exports.handler = (event, context, callback) => { // TODO implement console.log("main called!"); callback(null, "Hello from Lambda"); };
-
- driver.js(main.jsをローカル実行時に呼ぶドライバー)
var event = { "Records": [ { "awsRegion": "ap-northeast-1", "sequenceNumber": "xxxxxx", "partitionKey": "xxxxxx", "eventSource": "aws:s3", "data": "xxxxxx" } ] }; var context = { invokeid: "invokeid", done: function(err, message){ console.log(message); return; } }; var lambda = require("./main"); lambda.handler(event, context, function(error, result){ console.log("main callbacked!"); console.log(error); console.log(result); });
実行環境構築手順
ESLint構築手順
- $ npm install eslint
- プロジェクトのローカルにESLintをインストール。
- $ ./node_modules/.bin/eslint -v
- $ ./node_modules/.bin/eslint —init
- 案内に従いESLintの設定を作る。
? How would you like to configure ESLint? Answer questions about your style ? Are you using ECMAScript 6 features? Yes ? Are you using ES6 modules? No ? Where will your code run? Node ? Do you use JSX? No ? What style of indentation do you use? Spaces ? What quotes do you use for strings? Double ? What line endings do you use? Unix ? Do you require semicolons? Yes ? What format do you want your config file to be in? YAML
- esllintにconsole.logを許可。
- .eslintrc.ymlに以下を追加。
- 「no-console: 0」
pythonの自分流の開発環境構築〜実行まで
私がpythonで開発する際の、実行環境・エディタ等の開発ツールのセットアップ〜実行までの手順のメモです。
改善点があればアップデートしていくつもり。
→Windowsの手順を追加した。またアップデートするかも。
前提条件、開発環境方針
実行環境構築手順
Windowsの場合はpyenvをインストールしない。
開発環境(エディタ)構築手順
フォーマッター
- 「yapf」を使用。
- 適用手順はVisual Studio CodeでPythonの開発環境構築を構築してみた。 | Developers.IOを参照。
実行手順
以下のコマンドを実行する。
プロジェクト作成
mac
- $ pyenv local 3.6.1
- $ pyenv virtualenv 3.6.1 プロジェクト名
- $ pyenv local プロジェクト名
Windows
- $ virtualenv ./venv
- .\venv\Scripts\activate # 仮想環境を有効化
- deactivate # 仮想環境を抜ける
Lintのインストール・実行
- $ pip install pylint
- $ pylint main.py # ファイルを指定して実行
- $ pylint environment # environmentにはパッケージ名 or モジュール名を入れる
作成したサンプルソース(main.py)
""" main module """ class Sample: """Sample Class""" def __init__(self, message): """__init__""" self.message = message def print_message(self): """print_message""" print(self.message) def print_message2(self): """print_message""" print(self.message) def main(): """main""" int_a = 100 int_b = 200 print("main!") print(int_a) print(int_b) message = "This is a Test." sample = Sample(message) sample.print_message() if __name__ == '__main__': main()
(おまけ)pylintでクラス・メソッドの説明コメントが無くてもOKとしたい
pylintの設定は実行ディレクトリの「.pylintrc」ファイルに記述する。
- 以下のコマンドで.pylintrcを作る。
- $ pylint --generate-rcfile > .pylintrc
- .pylintrcの「disable=」に「missing-docstring」を追加し、docstringのエラーを出さないようにする。
参考サイト
http://dev.classmethod.jp/tool/python-pyenv-vscode/
http://uxmilk.jp/43185
http://blog-ja.sideci.com/entry/python-lint-pickup-5tools
http://qiita.com/zaki-yama/items/d05adce9d23d67144fbf
https://stackoverflow.com/questions/7877522/how-do-i-disable-missing-docstring-warnings-at-a-file-level-in-pylint
https://maku77.github.io/python/env/virtualenv.html
https://qiita.com/84zume/items/27d143f529396c9fa1cc
JBuilderが返却するbodyをRSpecで取得できない件
RubyMineでローカルにbundle installしたRSpecを実行する
Railsでbundle installのパスとして「--path vendor/bundle」を指定することは多いかと思います。
この場合、コマンドからRSpecを実行する際には以下のようにするかと思います。
$ bundle exec rspec spec/・・・_spec.rb
つまり「bundle exec」を指定してローカルにインストールしたRSpecを実行するわけです。
これと同じことをRubyMineで行う方法です。
1.[Run]-[Edit Configration]を開く
2.[RSpec]を開き[Bundler]タブを開く
3.「Run the script in context of the bundle・・・」にチェックを入れる
以上です。
sbt + sublime text + ensimeでのプロジェクト作成〜debug
タイトル通りのことを行う為の手順についてです。
予めマシンにはscala、sbt、sublime text、ensimeと、sublimeにはensimeのための
プラグインがインストールしてあるものとします。
1.プロジェクト作成
1-1.プロジェクトのルートフォルダにて、以下のコマンドを実行する。
$ mkdir -p src/main/scala
1-2.build.sbtを作成する。
ルートフォルダ直下に、build.sbtを作成し、以下のように記述する。
lazy val root = (project in file(".")). settings( name := "sample-app", version := "1.0", scalaVersion := "2.10.4" )
ここまでで以下のようなフォルダ構成になればOK。
$ tree . ├── build.sbt └── src └── main └── scala
1-3.mainの作成
scalaフォルダの中に、mainを作成する。
試しにこんな感じでつくった。
object Startup{ def main(args: Array[String]) :Unit = { val a = "aaa" val b = "bbb" val c = a + b println(c) } }
$ sbt compile
1-5.実行
以下のコマンドで実行する。
$ sbt run
2.ensimeでのデバッグ
2-1.sbtでの.ensimeファイルの作成
sbtのコンソールで、以下のコマンドを実行する。
$ sbt
> ensime generate
2-2.ensime serverの起動
sublime textより、ensime serverを起動する。
[右クリック] - [Ensime] - [Maintenance] - [Startup]
2-3.ブレークポイントの指定
ブレークポイントを設定したい行を選択し、[右クリック] - [Ensime] - [Debugging] - [Toggle breakpoint]。
※ブレークポイントは、mainメソッドの一行目では上手くいかなかった・・・
2-4.実行
[右クリック] - [Ensime] - [Debugging] - [Start debugger]
3.外部jarの追加
上記まででdebugまでは終わりだが、ついでに参照するjarを配置してdebugする手順を書いておきます。
3-1.jarの配置
プロジェクト直下にlibフォルダを作成し、jarを配置する。(sbtのアンマネージド管理の場合)
3-2. .ensimeファイルの再作成
以下のコマンドで.ensimeファイルを再作成する。
$ sbt
> ensime generate
参考サイト
【Scala初心者向け】sbtを触ってみよう! | キャスレーコンサルティング 技術ブログ
最強!?Ensimeを利用したSublime Text3のScala開発環境(playでもliftでも) - Qiita
bundle gem が便利な件
gemを作るときのコマンドであるbundle gemについてです。
以下のようなコマンドを実行すると、gemを作るための雛形をRSpecも含めて
作ってくれます。
$ bundle gem gem-sample -t
作られるファイルの構成は、以下の通りです。
create gem-sample/Gemfile create gem-sample/Rakefile create gem-sample/LICENSE.txt create gem-sample/README.md create gem-sample/.gitignore create gem-sample/gem-sample.gemspec create gem-sample/lib/gem/sample.rb create gem-sample/lib/gem/sample/version.rb create gem-sample/.rspec create gem-sample/spec/spec_helper.rb create gem-sample/spec/gem/sample_spec.rb create gem-sample/.travis.yml
何が便利なのかと言うと
・libフォルダの中にロジックを記述するファイルを作ってくれる(上記ではsample.rb)
・それをテストするためのRSpecを、spec_helper込みで実行可能な状態で作ってくれる
・その他、Gemfile・README.mdなど必要なファイルを作ってくれる
あたりでしょうか。
本来はgemを作るためのコマンドですが、RSpecを含んだサンプルソースを作る場合にも便利だと思います。
この場合は
・.gemspecはgemとして公開する場合の情報を記述するファイルなので削除する
・Gemfileから「gemspec」の記述を削除する
ことが必要です。(やらなくても動きはしますが・・・)
本来の目的ではないコマンドの使い方かもしれませんが、便利だと思ったので載せておきます。