タグ

ブックマーク / motemen.hatenablog.com (12)

  • Google App EngineでGoを動かすときに知っておくべきこと(ソースコード・ビルド編) - 詩と創作・思索のひろば

    Google App Engine(GAE)で Go 製のウェブアプリを動かしたかった話。いっぺん動かしてみると GAE/Go はウェブアプリを動かす環境としてはとてもいい。ただ、中途半端な知識だけで始めると開発者としてはつまずくことが多かったので、分かりにくい点をまとめておく。 Google App Engine Go Standard Environment について goapp は $GOPATH 以下もアプリケーションのソースとしてアップロード/コンパイルする goapp はプロジェクトルート以下のソースコードをすべてコンパイルしようとする go-app-builder: Failed parsing input: parser: bad import "syscall" in ... go-app-builder: Failed parsing input: app file x

    Google App EngineでGoを動かすときに知っておくべきこと(ソースコード・ビルド編) - 詩と創作・思索のひろば
  • Ether を送金した人だけコンテンツを閲覧できる Ðapp を書いた - 詩と創作・思索のひろば

    Ethereum はブロックチェーン上でアプリケーションを動かせる(スマートコントラクト)ってので興味を惹かれて、どんなことができるのか調べてたんだけど、感じを掴むために一つ書いてみた。 やりたいことは、ウェブページに送金ボタンがあって、そこから特定のアドレスに Ether を送金し、送金が確認されたら秘密のコンテンツをページ上に表示する、てなもの。送金の確認はスマートコントラクトで行えるが、秘密の情報をブロックチェーン上に記録するわけにはいかないのでこれはウェブサーバに秘匿することになる。とすると、ウェブサーバに私はこの Ethereum アドレスです、とセキュアに伝えてやる必要がある。後で書くけど、あまりいい解法ではない。 知識ゼロの状態から分からないことを潰しつつなんとか動くところまでこれたので、ウェブアプリケーション開発者がつまづいたところをメモっとく。 デモ MetaMask W

    Ether を送金した人だけコンテンツを閲覧できる Ðapp を書いた - 詩と創作・思索のひろば
    hatz48
    hatz48 2018/03/08
  • go-sql-driver/mysql の接続に SOCKS5 プロキシを利用する - 詩と創作・思索のひろば

    Go では proxychains みたいな方法が利用できないので、プログラム側で対応してやる必要がある。Go で SOCKS5 プロキシを利用する - 詩と創作・思索のひろば と同様に golang.org/x/net/proxy を利用して実現できる。 import ( "database/sql" "net" "golang.org/x/net/proxy" "github.com/go-sql-driver/mysql" ) func main() { dialer := proxy.FromEnvironment() mysql.RegisterDial("tcp", func(network string) (net.Conn, error) { return dialer.Dial("tcp", network) }) db, err := sql.Open("mysql",

    go-sql-driver/mysql の接続に SOCKS5 プロキシを利用する - 詩と創作・思索のひろば
  • エンジニアがチームで価値を発揮するために気をつけたいこと - 詩と創作・思索のひろば

    この記事は、はてなディレクターアドベントカレンダー2016の17日目のエントリです。(昨日は id:daiksy の『嫌われない勇気』でした。) id:motemen です。過去には立ち上げ期の Mackerel チームのディレクターをしていましたが、当時のことは 過去の記事 にあるとおりで、あまりディレクターとしてほかに書けることもないので違う話を。 今年のはじめごろに エンジニアの専門性を伸ばすためにディレクターに気をつけてほしい3つのこと - Hatena Developer Blog という記事が書かれましたが、これはディレクターからエンジニアに向けた話だったのでこれの逆バージョンを書いてみようと思います。 先に書いておくと、ぼくは新卒ではてなに入社し、ディレクターの id:nmy さん(アドベントカレンダー最終日)や id:chris4403 さん(アドベントカレンダーのエントリ

    エンジニアがチームで価値を発揮するために気をつけたいこと - 詩と創作・思索のひろば
  • なぜプレゼンで失敗するのか - 詩と創作・思索のひろば

    自分も大方の人間と同じように人前で喋るのは苦手で、可能であれば避けたいと思っているけれど、一方でこの業界で生きのこる方法のひとつとして避けられないものでもあると思っている(ので苦しい)。若かりしころ手痛い失敗をしたこともあって、かなり苦手意識を持ちつづけていたが、最近はわりかし上手く付き合えるようになってきたかなとふり返って思う。 今もうまいプレゼンテーションをする方法は知らないし、それを僕から知りたいという人はいないとおもうが、プレゼンでしくじる方法なら経験から知っている。準備をしないこと。自分の経験からはそうだし、まずいプレゼンを見ていてもそうなんだろうな、と思うことはやっぱり多い。 このエントリはプレゼンがいやでいやで仕方がなかった自分のための分析であり、プレゼンのマイナスレベルをゼロまで引き上げようとする努力です。ソフトウェアエンジニア技術者間交流のためのプレゼンというのが前提。

    なぜプレゼンで失敗するのか - 詩と創作・思索のひろば
    hatz48
    hatz48 2016/12/06
    全然できてない。。。
  • git fetch の裏側では何が起こっているか - 詩と創作・思索のひろば

    git fetch の裏側でどんな通信が行われてリモートリポジトリの内容が取得できるのか調べたのでまとめる。もともとは git の HTTP や SSH といったプロトコルでどのように実現されているか、というところに興味があった。Git v2.7.1 を基にしている。 事前準備 pack プロトコル pkt-line フォーマット Reference discovery Packfile negotiation Packfile の送受信 packfile への圧縮・packfile からの展開 各種トランスポートの実装 file トランスポート ssh トランスポート git トランスポート http(s) トランスポート まとめ 参考資料 事前準備 手を動かしてプロトコルを理解できるよう、gist の小さなリポジトリ を使う。適当なディレクトリ下に bare リポジトリとして clon

    git fetch の裏側では何が起こっているか - 詩と創作・思索のひろば
    hatz48
    hatz48 2016/03/10
  • 2015年に作ったもの20点(セルフレビューつき) - 詩と創作・思索のひろば

    いちおう振り返っておかないと 2016 年を迎えられないという心持ちになったので、全部ではないけど列挙する。また、作ってブログに書いたけど自分では使ってません、というのも無責任なので、現在自分で利用中かどうかも添える。 go-typeswitch-gen (Go、コマンドラインツール) Pocket Expose(Go、ウェブサービス) gore(Go、コマンドラインツール) goquickfix(Go、コマンドラインツール) lgtm.sh(シェルスクリプト) hub-pr(Go、コマンドラインツール) go-cli(Go、ライブラリ) google-apps-script.d.ts(TypeScript、型定義ファイル) Mackerel APIホスト名を補完(いろいろ) gobump(Go、コマンドラインツール) Goの簡易ベンダリングシェルスクリプト(シェルスクリプト) go-

    2015年に作ったもの20点(セルフレビューつき) - 詩と創作・思索のひろば
    hatz48
    hatz48 2016/02/04
    尊敬する
  • 社内ブログで連載していた小説『ひとでクロニクル』を公開します #HTDCHRNCL - 詩と創作・思索のひろば

    1 「はあ、はあ……これは奴らの陰謀だっ」 ひとでは走っていた。会社に遅刻しそうだったからだ。急いで電車に駆け込んでハアハアと息をついた。 「マサ、元気にしてるかな?」 ひとではマサのことを思い出した。 「さあ今日も仕事だっ☆」 マサは仕事していた。 「やあおはよう、寝坊かい」 イケメンがひとでに挨拶した。イケメンは、東京からやってきた。イケメンは、上場企業出身で、来週もRuby合宿に参加する奴だ。 はこべ「ひとでさん……ぽっ♥」 はこべさんが壁から見ていた。 ☆100でつづきます 2 オレははこべ。都内の私立高校に通う高校2年生だ。 tdk(続く) 3 「あーあ、数学の授業かったるいな〜」 なぜならオレは▒▒▒▒[プライバシー保護のため墨塗り]だからだ。俺の名ははこべ。その日も下らん授業を受けてアクビをしていた。 TDK 4 ▒▒▒▒?そう、俺は▒▒▒▒だ。オレはこの国の国家元首なのだ。

    社内ブログで連載していた小説『ひとでクロニクル』を公開します #HTDCHRNCL - 詩と創作・思索のひろば
    hatz48
    hatz48 2015/12/21
    支援
  • Go のシンプルかつ明快な SQL クエリビルダ go-sqlf - 詩と創作・思索のひろば

    Go でリレーショナルデータベースを利用したアプリケーションを書いているとき、動的に SQL を組み立てたい場合には、いくつかの方法が考えられます: クエリビルダを使う。世の中にすでにいろいろ存在します。(そのためのライブラリなので)動的に生成するにはもってこいですが、この場合、それぞれのライブラリに合わせた書き方をしなければならないので読み手にもある程度負荷がある点、また、Go は言語として冗長に書くことをよしとする思想を持っているため、DSL 的な API との相性が悪いという欠点があります(map の組み立てが冗長、条件分岐する式が書けないなど)。また、一般にクエリビルダから生成される SQL がコードから想像しづらくなる問題もあります。 文字列連結や fmt.Sprintf を使う。発行される SQL は比較的分かりやすくなりますが、動的に組み立てると SQL プレースホルダとバイ

    Go のシンプルかつ明快な SQL クエリビルダ go-sqlf - 詩と創作・思索のひろば
    hatz48
    hatz48 2015/09/10
    使いたい
  • コード補完もできる Go の REPL「gore」を作った - 詩と創作・思索のひろば

    タイトルの通りです。Go は LL 的に使える、とはよく申しますが、そういう意識で使っていると REPL 的なことをしたいときに困りがちですよね。そこで作りました。gore。いい名前ですね。 motemen/gore · GitHub 以下のスクリーンキャストでだいたいの雰囲気をお察し下さい。 (スクリーンキャストは cho45/KeyCast を使って撮影しました) 特徴 gore の特徴は以下の通りです。 ラインエディタと履歴 複数行入力 パッケージのインポート、補完つき 式および文を実行可能 コード補完(nsf/gocode を利用) プリティプリント(k0kubun/pp か davecgh/go-spew がおすすめ) ドキュメントも引ける(godoc が必要) 以上のように、非常に便利なものになっております。むしろこの程度 REPL には当然あってほしい機能だとも言える。 イン

    コード補完もできる Go の REPL「gore」を作った - 詩と創作・思索のひろば
    hatz48
    hatz48 2015/02/19
    すごい便利・・・
  • Go で reflect パッケージを使わずにジェネリックな関数を実現する - 詩と創作・思索のひろば

    あけおめ〜。Go 界においてジェネリクスを求めるのは(今のところ)はかない望みでしかないし、もちろん重々承知していることですが、それでもときどき複雑なものを書こうとするとどうしても複数の型に対応する関数が欲しくなる。そこでこの冬休みになにかうまい方法はないかと考えて、作ってみました。 要件 今回はこんな関数が実現したくなりました。(擬似コードです) // map[string]int とか map[string]foo.Bar を受けつける func keys(m map[string]T) []string { keys := make([]string, 0, len(m)) for k := range m { keys = append(keys, k) } return keys } そしてこれを実現するためのアプローチを以下のように定めました。 reflect パッケージを使わ

    Go で reflect パッケージを使わずにジェネリックな関数を実現する - 詩と創作・思索のひろば
  • Git の diff を美しく表示するために必要なたった 1 つの設定 #git - 詩と創作・思索のひろば

    Git に同梱されている contrib/diff-highlight を使います。 あとは README に書いてあることの引き写しですが、PATH の通ったディレクトリに置いて、~/.gitconfig に以下のように設定を書く。 [pager] log = diff-highlight | less show = diff-highlight | less diff = diff-highlight | less すると、対応するコマンドの出力がこんな風になります。 行レベルの diff に加えて、単語レベルでの diff もハイライトされ、GitHub での diff のように描画されました。 組み込みのオプションで --color-words というのがありますが、こちらを使うと行レベルの diff 情報が失われるので、少し不便だったわけですね。とすべて README に書いてあ

    Git の diff を美しく表示するために必要なたった 1 つの設定 #git - 詩と創作・思索のひろば
    hatz48
    hatz48 2013/11/27
  • 1