2016年1月9日土曜日

AppVeyorでgo buildしたものをデプロイする方法

artifactsまわりでハマったのでメモ

appveyor.yml

ssh/scp/sftpでアップする例


version: 1.0.{build}
os: Windows Server 2012 R2
clone_folder: c:\gopath\src\github.com\dopin\hoge
environment:
  GOPATH: C:\gopath
  GO15VENDOREXPERIMENT: 1
install:
  - set PATH=C:\gopath\bin;C:\msys64\mingw64\bin;%PATH%
  - go get github.com/kr/godep
  - godep restore
build_script:
  - cmd: go build -o hoge.exe cmd\hoge\main.go
after_build:
  - cmd: 7z a hoge.zip hoge.exe
test_script:
  - cmd: godep go test -v
deploy:
  provider: FTP
  protocol: sftp
  host: devml.blogspot.jp
  username: user
  folder: appveyor # /home/user/appveyor にアップロードされる
  password:
    secure: # https://ci.appveyor.com/tools/encrypt で生成
artifacts:
  - path: hoge.zip
    name: hoge

artifactsを指定しないと何も生成したことにならない

deployのartifactで頑張って指定してたけど、Neither artifacts nor application were uploaded.
と言われて全然できなかった。

正解はartifactsで指定。deployの方はartifactを省略すれば、artifactsで指定したものすべてが対象になるので、最終的に削除した。

ビルドはクロスコンパイルすることもできるから、そこでAppVeyorを使う意味はもしかするとないのかもしれないけど、テストついでにアップロードまでしてくれる方がいいじゃん!ということで。

crates.ioでreverse dependenciesを見る方法

そのcrateがどのcrateで使われているか

それがreverse dependency。何が嬉しいのかというと、そのcrateの実例サンプルコード一覧として参照できるということ。ドキュメントよりもサンプルコードで学ぶ質なので、すごくありがたい。


/reverse_depedenciesを付けるだけ

もしかするとどこか画面上にリンクがあるかもしれないけど、URLに直接入力すればOK

https://crates.io/crates/docopt/

の場合、

https://crates.io/crates/docopt/reverse_dependencies


助かる。助かる。

2016年1月2日土曜日

CircleCIでruby 2.3.0を使う方法

注意事項

この情報は2016年1月2日現在の情報です。CircleCIが環境を更新すれば情報が古くなっている可能性が高いです。


circle.ymlに普通に書いてもダメな場合の対処方法


rubyのバージョンを指定してもうまく指定できない時は、machineの項目にpreを追加して、rvmで明示的にrvm use 2.3.0を書きます。これによって、ruby-2.3.0がインストールされていない場合は、rvmがインストールしてくれます。

machine:
  pre:
    - rvm use 2.3.0
  ruby:
    version: ruby-2.3.0

いずれはpreの部分は不要になると思います。それまではこのワークアラウンドで。

ボッチオペレータを使いましょう! &.

ネーミングと英語で困った時に頼りにしているもの

コードは英語で書いていますか?

普段からコードは英語で書いている。変数名などを日本語ローマ字で書いたりはしないし、なるべく複数形単数形の使い分けも、それが自然であればやる。とはいってもネイティブじゃないし、たとえ日本語であってもネーミングは難しい。できればうまい人に任せたい。でも現実はそうはいかない。それがましてや英語でとなると、さらに難しくなる。というか基本的に生活にないものを取り入れるのは難しい。。


請求先という日本語英語変換の例


例えば今、ユーザやユーザのグループがあって、それがそれぞれ請求先情報を持てるとして、請求先を英語にするにはどうするかで悩んでいる。billing information、billing address、payment informationなどがあると思う。billing informationだと曖昧で、billing addressだと限定的すぎる気もして、さぁどうしようというところ。こういう時に頭のいいネイティブスピーカーがいると相談できるんだけど...


英語に困ったらcodic


英語が苦手なプログラマー向けにcodicというのがある、みたい。これをメモしたいがためにこの記事を書いているようなものだけど、実はまだ全然つかったことがない。これからお世話になるかも。


さっそく「請求先」で調べたら「request destination」と出た。よくわからないけど、そんな言い方するの?と疑問に思ったので今回はあてにしない方がいいかも。


とはいえ、codicはメソッド名や関数名に使うのは向いていると思う。動詞で始めるのが普通だけど、それがわからない人でもそれなりに良い名前に出会えるんじゃないかと思う。


辞書


Weblioとか英辞郎あたりも参考にするし、Googleで「請求先 英語」と調べもする。やっぱりbilling addressなどが出てくる。


オープンソース


ネーミングに限らず困った時はいつもオープンソースを頼りにしている。お金関係で目にしたことのあるものってあったっけ?と考えたら1つあった。balancedのコントロールパネルらしきものがOSSになっている。それがEmberで作られているので、モデルのディレクトリをざっと眺めてみる。が、ちょっと今回の件にピッタリまっちするものはなさそう。


そういえば、EC-Cubeもあった。ソースコードを見るのは初めてな気がするけど、この辺かな?Entity


DB設計例


他に参考にできるものあるかなーと思ったら、そういえばこんなサイトがあるのを思い出した。



どちらもDB設計の例を集めたサイト。ドンピシャなものは探せなかったけど、英語で困った時は参考になると思う。

余談だけど、SQLで困った時は、SQL Fiddleを使ってやり取りすると効率がいいかも。


終わりに


さて、結局billing addressに落ち着くかなぁ。。。ちょっと凝ったことをやるから、addressだと合わないかもしれない。まぁプロトタイプだし、進めてみて間違ってるかどうか確認するのもありかな。。うーんwww


2016年1月1日金曜日

2016年の抱負

やばい思い浮かばない

毎年そういうの書いてた気がして書こうと思い久しぶりにbloggerの投稿ボタンを押した。が、いいけど、今年の抱負が特に思い浮かばない。。。


継続

何か毎年新しいことに挑戦したい気持ちはあるけど、特に思い浮かばないので、まずは継続とかやり残したことを今年も引き続きやっていこうと思う。

  • Rust習得
  • 英語力アップ
  • Emberの使い方を忘れない程度に活用する
こんなところかな。


Rust


Rustについては、まだLifetimeのことをがいまいちよく分かってない。けど、やっぱり追っていて面白い。開発体制でいうと、 ビルドボットのHomu(まどマギのキャラ由来)とか、highfiveを使った自動化。仕様の策定にRUST RFCsでやり取りしている。これらを見ていて、自分の仕事にも流用できそうなので良い意味でパクっていきたい。

実用的かどうかは置いといて、RustでOSを作っている人もいれば(Redox)、intermezzOSというシステムプログラミング言語のコンセプトを教えるために取り組み始めた人たちもいるみたい。底レイヤーを知っておくことは強みになるし、intermezzOSには期待している。

Rubyの中にRustを埋め込んで高速化しちゃうTurboRubyにも期待している。


英語力アップ

TOEICを受ける機会があって755点は取れたけど、もっと海外のイベントとかの動画を理解できるようになりたいし、ミートアップで海外のエンジニアや国内在住で日本語より英語の方が話せる人と英語で話せるようになりたい。海外ドラマや映画も字幕なしくらいでいけるようになりたい。普段使わない単語とか単語帳を頑張っては覚えられないけど、betrayとかaccomplishとか、映画で覚えた単語もあるし、自分にはそういう学習方法が向いてるんだと思う。使うシチュエーションとストーリーとがリアルじゃないと覚えられない。英語に限らずそうだけど。最近は塊で覚える、捉えるようにしてる。


Ember


Emberは個人的に二周してるところがあって、古い仕様を忘れることと、新しい仕様に追いつくことを今後も継続しつつ、よくある初心者がはまるポイントみたいなのは、難なくこなして経験者として役に立てるくらいのレベルには達したい。


新規


書いてるうちに思いついたというか思い出したので書こう


WAI-ARIA


障害者差別禁止(解消)法が出て、民間企業は義務はなくても努力しようということだったと思うのと、2014年末くらいに買ったBootstrapベースのテーマがWAI-ARIAに対応していたのと、Bootstrap本体も4から、その他のフレームワークも対応しだしたので、きちんと扱えるようになりたい。

例えばタブとか、突然現れたり消えたりするものを、WAI-ARIAを使わずに作ってしまうと、パソコンになれた視覚障害者の人でもとても使いにくいものになってしまう。(その現れたタブとかを操作するためにtabキーを何回押してたどり着くのか、消したあと元いたところにカーソルが当たっているかとか考えると分かる。)GoogleドライブがWAI-ARIAに対応して比較的使えるようになったという声も聞いたので、2016年にこの動きの波及の妨げにならないよう、Webアプリをメインで開発している開発者として、最低限の知識を得ておこうと思ったし、必要なところでは使える準備はしておきたい。最近はWAI-ARIAのことがきちんとまとまった書籍等も日本語で読めるみたい。手に入れて良かったらこのブログでも紹介するかも。


その他


そういえば、去年からGoも触ってはいるけど、いまいち好きじゃない。けど、やっぱり便利な面もあるので、好き嫌いを乗り越えて、使えるようになりたい。

それとプロトタイピングツールがどんどん出てきているので、ある程度自分でデザインもできるようになりたい。


今年の目標はそんなところかな。