読者です 読者をやめる 読者になる 読者になる

IntelliJでバックスラッシュ

Sierra、Dock(アプリの切り替え)が気に入らないので😩というかんじだがそれでもいつかはあげないといけない

表題の件については、

qiita.com

こちらのよく書かれた記事の、luaの必要な部分だけ短縮したもの

とりあえず円マークはこれでやってる。luaかわいい

gist.github.com

maji (ポーリングのwatcher)

tokuhirom氏の App-watcher を便利につかっているのですが、いまやってるプロジェクトで(fatpackとかせず)go getで入れられるもの欲しいなとおもい書いた

github.com

本当は c9s/gomon とか既存のものを使いたかったのだけど、だいたいが fsnotify 利用で、そちらはNFSでは発動しない。vagrantNFSマウントディレクトリで使いたかったのだけど。いちおう fsnotifyの将来の計画で polling fallbackがあるようなのだけどしばらくは無理そう(ということをうえさまが調べてくれました

file pollingの radovskyb/watcher 利用した、 gomon や App-watcher のような – の後に任意のコマンドかけるようなインターフェースのコマンド。

iphoneの画面半分が使えなくなった時にすること

はろー 私はバケーションでしばらく海外にきております。

ある日iphoneがぶっ壊れ、(たぶんぶつけた)画面右半分のタッチができなくなってしまいました。電話番号でいうと2590はなんとか入力できるけど469が入力できないかんじです。そんなときすること!

【大事】まずは電源へつなごう!!

f:id:tomi-ru:20161016111557j:plain

私のかわいそうなiphoneの図

アプリ自体は、特に「カメラ」や「地図」あたりはランドスケープモードがあるのでがんばれば画面が半分タッチできなくてもなんとか使えます。(入力枠にタッチしたあと反転させてキーボード入力、そのあとまた反転させて進む)

ただ、電源がまったくきれてしまうと、次に起動する時にパスコードが求められます。たまたま使えるところだけのパスコードなら良いのですが、そうじゃない場合アウト(私は電源切らしてしまいましてアウトでしたw

リセットする場合

ネットにつながったPCとitunesがあれば、工場出荷時状態にリセットできます。(DFUモードで検索

私もしかたないので、リセットしてただのカメラとして使おうとしましたが、初期ウィザードを突破するのが至難の技。

次へ行くボタンは右上にあるからです!

そんなときは、アラビア語で進めるという手が使えます

まったくわからんですが、書いてあることはいっしょなのでなんとかなります

f:id:tomi-ru:20161016111708j:plain

ただし、アラビア語の場合「進む」ことはできますが「戻る」ことはできませんので注意深く進めます。とくに位置情報をonにするところは確実にonにします。(あとでonにするコントロールは画面半分では難しい)

アラビア語状態で右半分が使えないと、「戻る」が一切できないので、戻りたい時は強制リブート(電源+ホームボタン長押し)でしてやりなおします

アプリのインストールや、ホーム画面の配置はitunesからやる。

f:id:tomi-ru:20161016113419p:plain

最後にEnglishに表記をもどして完了。この画面のあと、今度は「決定」ができませんので要注意

f:id:tomi-ru:20161016111711j:plain

みなさまの画面半分タッチできなくなったときライフにお役立てください

次は機種何にしようかな〜

go-assets 使い方

週末やったルー語変換のgo版(でーーっかいけどシングルバイナリな lougo)で使ったやつ。あんまし日本語の情報でてなかったのと、つい今ほど作成されるコードが go vet や goimports で指摘されないような pr mergeされたので記念にかいとく

go-assetsとは!

go-bindataと同じアプローチだけど、ファイルの内容そのままじゃなくて http.FileSystem interfaceなラッパーにくるんだgoコードを作ってくれる。なのでファイルを受け取るのを期待したfuncにそのまま渡せる。

ファイル群のpackの仕方

ライブラリ go-assets の方はまあ最悪見なくていいので、コマンドラインツール go-assets-builderを高速でgetします

go get -u github.com/jessevdk/go-assets-builder

例: data/以下のファイル群を、package hoge な assets.go 作成

go-assets-builder --package=hoge data/ > assets.go

できたファイル見ると一目瞭然!

goマニアはgo:generateコメントの機能でファイルを作成するとオシャレかもしれませんが、マニアじゃない場合はふつうにmakefileにでも並べておくとよいかと

使う方

デフォルトだと Assets() というので呼べるので(--valiable 引数で変更可能)

使う方

f, err := Assets.Open("/data/fileeeee.txt")

とか。

くわしくはこちらにものってございます。

みんなのGo言語【現場で使える実践テクニック】

みんなのGo言語【現場で使える実践テクニック】

みんGo読んだ!

非プライム民なのでやっと読めました!

みんなのGo言語【現場で使える実践テクニック】

みんなのGo言語【現場で使える実践テクニック】

かかか かわいい! 我々が求めていたのはゴルーチンだとか静的型だとか充実したユーティリティとかじゃなく、かわいいキャラクターだったのか!と思わせられます

私は業務ではちょっとしたAPIサーバー書いたくらいです。

  • GOPATHとか、ハマりやすい流儀まわりで始まってくれるのがいいですね。
  • さいしょの雛形みんなどうやってつくってるのかなーと思ってたのですがディレクトリやMakefileの例などあってよかった
  • CLIの構成あたりも。
  • 爆笑(?)オヤジギャグのかわりに「「第2章 Windows」」という方向のまじめギャグがよかった
  • reflectionは大人になったら読みます
  • testはExampleのが多めに書いてあっていいですね。あの機能好き。モックとかも現実的

全体的に、go-tourと実際業務の間を埋めてくれるような内容で、雑誌のようなライトさでフムフムいいながらさくっと読めて今日から使えるのがいいなとおもいました 😊

今週末、筆者のひとりでもあるすずけんおつかれさまでした会的なのを弊社のバーでやるので参加者LT発表者募集中です! ↓↓↓

connpass.com

イラストレータデビューされた牧さんのビールGopherグッズ好評発売中です ↓↓↓

https://suzuri.jp/lestrrat

なんでPimple、ArrayAccessなのかな〜

ふつうに $container->get('namae')でいいじゃんね作者がphp人生一度は訪れるというArrayAccess期だったんすかね〜と思ったのですが、


ところでArrayAccessとは!

これ。PHP: ArrayAccess - Manual

連想配列のようにアクセスできる(内部でメソッドが呼ばれる)というちょっとかっこいい機能である。perlだとTIEぽいかな。


もしコンテナに(オブジェクトではなく)連想配列を突っ込んで使う場合に、5.3でも直接その値のキーにアクセスできて便利だからじゃないかなーと思いました。

PHP 5.4 以降では、関数やメソッドの返す結果を直接配列として扱えるようになりました。 以前は、いったん一次変数に代入しないと配列としては扱えませんでした。

why Pimple uses ArrayAccess interface?

みたいな項目がトップにあっても良いかと思ったのですが、5.3が過去のものになりつつありますのでまあいいです

use Pimple\Container;

$container = new Container();
$container['namae'] = array('foo' => 'foooo');
print_r($container['namae']['foo']); // => "foooo" 5.3でも取れるぅ
function get($key)
{
    $c = array(
        'namae' => array( 'foo' => 'foooo')
    );

    return $c[$key];
}

print_r(get('namae')['foo']); // =>  PHP Parse error:  syntax error, unexpected '['

fabricとhostと私 2014

fabric、fabfileかかなくても

fab -H "web1, web2" -- "hostname"

みたいにできるのがかわいくて好きだ

ところで、2.x系では @task(depends="foo") のような依存関係が解決されるAPIが追加されるらしいのだけど、今versionではそれは無いので自分で書くことにした。

fabric.api.task()をwrapperした@commandというデコレータとすることにした。@taskの代わりにこれを使っておくと、envを調べてて規定の前処理がおわってないとそもそも動かない、みたいな。

デコレータ機能が追加されてからまじめにpython書いたのがひさしぶりだー。@command@command()両方をサポートしないといけなくなるとデコデコしてくるのがアレだな。

@runs_once
def check_env():
    # なんかしらべて場合によってはabort()
    pass


def command(*args, **kwargs):

    # @command(role="web", ...) or just @command
    invoked = bool(not args or kwargs)

    def deco(func):

        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            execute(check_env)  # <-- check env!
            return func(**kwargs)

        if len(kwargs) > 0:
            return task(**kwargs)(wrapper)
        else:
            return task(wrapper)

    if not invoked:
        return deco(args[0])
    else:
        return deco

とちゅうでハマったのだけど、fabricはtaskの対象hostの扱いがややカオスなので要注意だ。

env.hosts, -H, -x@hosts=...、roleなどが関係してくる。あと、Taskクラスはインスタンス化される前にその対象ホストが解決されるので、タスク自体が動き出した後はできることが限られているのが要注意。

あと、execute()documentでwarningされているように、気をつけないと同じタスクが倍々に動いてしまうことがあるので要注意。

そこだけ気をつければ思ったようにうごいてそこそこ良かった。