solidity hello world in Bangkok DevMorning no.10

I attended Bankok DevMorning #10. BKK DevMorning

I tried to run a solidity example in my local environment.

Final version

remix-ide (web based repl) on local machine

$ git clone git@github.com:ethereum/remix-ide.git
$ cd remix-ide
$ git checkout gh-pages
$ rackup -b "run Rack::Directory.new('.')" -p 9494
$ open http://localhost:9494/index.html

code snippet

I read this and copy and paste 🙂
Hello world on solidity Ethereum – Wagner Nicolas – Medium

pragma solidity ^0.4.11;
contract helloWorld {
  function renderHelloWorld () public pure returns (string) {
    return 'helloooooooWorld';
 }
}

how to run

Move to compile tab, Start to compiler. Then move to Run tab. After compile, you can use “hello world”. I chose “hello world” and selected “create”. Then I chose “render hello world”. I can see this in the browser console!

[call] from:0xca35b7d915458ef540ade6068dfe2f44e8fa733c, to:helloWorld.renderHelloWorld(), data:942ae...ae0a7, return: 
Details
Debug
{
    "0": "string: helloooooooWorld"
}

Awesome!

Reduce warning from

I added method visibility public and pure word, according to warn.

Done!

Yak shavings

広告

I don’t have a job offer yet

TL;DR
due to my communication skill ;(

English learner at PINES International Academy in Baguio, Philippines (from 2018-02-19 to 2018-03-16)
After Baguio City, I stayed in Manila, Shenzhen, Hong Kong, Singapore and Hanoi.

I applied for job as senior software engineer in Hong Kong and Singapore, because I had to get visa sponsorship.
I had phone screenings, technical checks at hackerrank.com and onsite interviews several times.

Most efficient feedback after half-day interviews:

  • Communication Issue – It is difficult to discuss deeply technical issue
  • Mentoring – It is difficult to share your technical knowledge to the juniors

I understand these are my weakest skills. I attended a weekly stand up meeting about technical issues, but I understood one-tenth. One reason was that I didn’t understand company “internal” words, and the other reason was that I didn’t understand “natural” speed of English sometimes.

I have a plan to go to English school again, because if I join Japanese company then I have to use English at work.

I left MF to get English skills

2018-02-15 was my last day at Money Forward, Inc.

Previous: Senior Engineer at Money Forward, Inc. in Tokyo, Japan (2016-03-01 – 2018-02-28)
Current: English learner at PINES International Academy in Baguio, Philippines (2018-02-19 -)
Next: Senior Engineer at (TBD) in Hong Kong, Singapore or Shenzhen

There is no amazon wish list, because I moved to Philippines already 🙂

git config parser行き詰まった

git config –list のparserをつくろうとした。
ドットで階層にしていけば余裕だろっておもった。
こんなのparseできねえ。自分でgit config再実装するほうがひょっとして楽なんじゃないか。

$ git config --name-only -l
core.excludesfile
url.git@gist.github.com:.pushinsteadof
url.git://github.com/.insteadof
url.git@github.com:.pushinsteadof
url.git@github.com:.pushinsteadof
alias.permission-reset
core.bare
core.repositoryformatversion
core.filemode
core.logallrefupdates
remote.upstream.url
remote.upstream.fetch
branch.master.remote
branch.master.merge
branch.chore/use-try.remote
branch.chore/use-try.merge
branch.chore/foo.bar.baz.remote
branch.chore/foo.bar.baz.merge

https://git-scm.com/docs/git-config#FILES
これみて、たどって、include sectionを解決するだけでしょ??

もとい、最初のドット、最後のドット、その間、でいけるのか?
セパレータを変える方法ないんだろうか

scaffold tools

2年前ぐらいにもうyeomanはオワコン感でていたし、なによりつくったgeneratorがメンテ不能になる問題があった。しばらくscaffold tool要らなかったので見てなかった。

slashやらplopやら、ながめてるけど、やっぱりまだyeomanでやるのがよさそう。マジカヨ。

メンテ不能になるのは、jsonやjsのテンプレートにif-elseみたいな制御構造が入ってくる結果、シンタックスハイライトも補完も効かなければ、シンタックスエラーすら実行してみないとよくわからんものになるのが多分原因。sindreさんの動向見てくるか。boilerplate +alpha かなあ。

Plop — a micro-generator to ease your daily life | @nicoespeon
slushjs/slush: The streaming scaffolding system – Gulp as a replacement for Yeoman

crate under_score hy-phen

crateはunder_score区切りで命名するようだ。

https://doc.rust-lang.org/1.0.0/style/style/naming/README.html#general-conventions-%5Brfc-#430%5D

なおhyphenのcrateも多い。どっちか迷ってpyphenでつけてしまったので、renameしようとした。できない。
古い方全部yankして、たぶんしなくていいんだけど、新しい方にcargo publishした。ところが最後のuploadでこける。

   Uploading text_to_checkstyle_cli v0.0.5 (file:///mnt/623D90F735FA5D47/sanemat/data/src/github.com/packsaddle/rust-text_to_checkstyle_cli)
error: api errors: crate was previously named `text-to-checkstyle-cli`

前はこの名前でした、って知っとるわ。
crateでpyphenで入力して、underscoreじゃないですか、ってもしかして出たので、内部では同じに持ってるのかな。まじかよ。設計ミスぽい。helpにメールしたので、反応待ち。手作業で何か解決するのかな。

better shell

ベターシェル

私がほしいのって
– みんなでちょっとずつ作ったものが
– ワンバイナリにコンパイルできる
– ベターシェル

人が有象無象山盛りいるのが必須条件。
なので、nodejsで書いたアプリが1MBぐらいに縮んでくれると一番良い。
次にgolangでライブラリパッケージシステムが発展するのが次にいい。
どっちも期待薄なのでrustですかね。前者2つに比べちゃうと人が足りない。
rustの良し悪しはよくわからないですがcargoとcratesが最高便利。

fmtやlintは設定項目ないのがいいですね
gofmt最高
eslintイマイチ prettier最高
rstfmtイマイチ?
rubocopイマイチ

メタデータ設定項目はプログラムかけないのがいいですね
json最高
tomlイマイチ?
yamlイマイチ

jsのpower assert最高

rustのバイナリをgithub releasesに送る仕組み

なんで各言語ごとに作りこみたがるんだろう。バカなのかな? って思いたくもなるけど、自分含めてそうしないとまともに扱うのは無理なのかなと思ってしまう。

コレはやり過ぎだから、自分でわかる範囲で探すかと、cross compileのしくみを探していて結局
japaric/trust: Travis CI and AppVeyor template to test your Rust crate on 5 architectures and publish binary releases of it for Linux, macOS and Windows
コレに戻ってきた話です。

追記
伝わらない気もして追記すると、わたしは、クロスコンパイル環境作るくんと、クロスコンパイルするくんと、パッケージするくんと、ghr でやるほうが正しいと思うんですね。glue codeはnodejsで書くかなあ。一ミリもeasyじゃないが。