生涯未熟

プログラミングをちょこちょこと。

wikipediaの寄付のお願いを非表示にするchrome拡張

作りました👌 chrome.google.com 実装はめっちゃ簡単でdisplay: noneで非表示にしてるだけ、以上。 5分くらいで実装できたので楽ちんでした。

Elasticsearchのbulk APIのMaxファイルサイズを探る

elastic searchと書くとElasticsearchに怒られることを知った今日此の頃。 今回はElasticsearchのbulk APIにどのくらいのサイズのファイルを突っ込めるのか探っていきます。 bulk APIに関する公式ドキュメントはここ www.elastic.co 一言で言うとbulk import…

Golang Weekly #174

GitHub - awalterschulze/goderive: Next generation code generator for go Goでよく使う関数をgenerateしてくれるジェネレーターツール。 例えば、 と書いて、goderive ./... することで、同パッケージ内に以下のようなコードが吐かれます。 このような感…

fluent-plugin-kafkaを使ってkafka streamsでアレコレするのはまだ出来ないよという話

最近、Apache財団に囲まれながらアレコレやってる私です。 今回はfluentdのkafkaプラグインであるfluent-plugin-kafkaを使って、kafka streamsが出来なかったお話をば。 何をしたかったのか fluentdでログを監視しつつ、変更があればfluent-plugin-kafkaを使…

Golang Weekly #173

How I landed my first contribution to Go GoへのContributeを初めてやってみた話。 筆者の方はこちらの動画を見て「やってみよう!」となった様子。 動画を見てみると、物凄く丁寧にGoのContributeの方法を説明してありました。 この方のように、Goのライ…

Golang Weekly #172

Typed nils in Go 2 | Dave Cheney Goのnilについてハマったことは誰にでもあるはず。 そんなnilについての記事です。 この記事中のコードをもし自分が書いた場合、サクッと比較対象のnilを (*T)(nil) としてしまうのだが、どうするのがベストプラクティスな…

関数の自己参照とオプションデザイン

この記事はRob Pike氏の commandcenter.blogspot.jp を翻訳したものになります。 ※Rob Pike氏より翻訳の許可は頂いております。氏に多大な感謝を。 私は自分が書いているGoのパッケージのオプション設定に対して良い方法を度々試してきました。 オプションを…

Golang Weekly #171

A Million WebSockets and Go – freeCodeCamp ロシアの電子メールサービスを扱っている巨大企業、Mail.RuでのWebSockets ✕ Golangの話。 約300万のオンライン接続があるようなサービスで、メールのポーリングには1秒間に約50,000件のHTTPリクエストが含まれ…

Go1.9に追加されるtype aliasを使って遊んでみる

Go1.9で追加されるtype aliasに無限の可能性を感じたので、ちょっと遊んでみます。 type aliasとは? types aliasは型のエイリアスです。 ちょっとそれだけでは雑な説明なので、コードを見てみましょう。 基本的なシンタックスはこんな感じです。 named type…

Golang Weekly #170

Go 1.9 Release Candidate 1 is released Go1.9のrelease candidateがリリースされました! インストール方法はこちらから godoc.org Go1.9には大きな言語仕様の変更として、型エイリアスとFMA(融合積和演算)が実装されます。 型エイリアス 型エイリアスに…

Golang Weekly #169

Toward Go 2 - The Go Blog 来ましたGo2! 1年後にリリース予定のGo 1.12から徐々に後方互換性のある機能をリリースしていき、1.20から後方互換性のない機能をGo2.0に入れ、1.20から2.0に移行しやすくしたいという流れになるみたいです。 他にもGoの開発プロ…

sirupsen/logrusのユーザー名変更問題について

皆さんはGoでプログラミングする際にloggerは何を使ってるでしょうか? 様々なloggerがありますが、その中でも sirupsen/logrus を使っている方は多いと思います。 ただ、このlogrusに大きな問題が起こりました。 それはsirupsen氏がGithubのユーザー名をSir…

Golang Weekly #168

GitHub - d4l3k/go-pry: An interactive REPL for Go that allows you to drop into your code at any point. Goでのpry実装。 Rubyを書いていた時にbinding.pryを多用していたので、こちらも使っていきたい。 Benchmarking Go programs, part 2 - Tit Petri…

3連休を使ってしょうもないものを作ってしまった

素敵な3連休、皆様どうお過ごしでしょうか? 意識の高いエンジニア各位におかれましては、きっとエンジニアリングを磨き上げることに腐心なさっていることでしょう。 さて、そんな中「3連休中にアホなもの作りたい」という欲求を抑えきれずにアホなものを…

depでの "is not within a known GOPATH" エラー in gvm

betaのgo1.9をちょこっと弄るためにgvmを導入したのですが、$GOPATHの扱いが $HOME/.gvm/pkgsets/go1.9beta2/global といった独自のものになります。 で、これの何が問題かというと、例えば普段設定している$GOPATHが $HOME/go だった場合には $HOME/go/src …

sqoopでhbaseへのimport時に好きな文字列をRowKeyにする

sqoopを使ってhbaseへimportする際にRowKeyを指定するには --hbase-row-key を使いますが、 通常はcolumnを一つ指定するか、カンマ区切りのリストで複数のcolumnを指定する形になります。 しかし、好きな文字列とcolumnの値を結合してをRowKeyにしたい場合は…

go1.9で追加されるpprofのLabel機能を見てみる

Golang Weekly #167 - 生涯未熟 でも紹介しましたが、go1.9からプロファイリングツールのpprofでLabel機能が使えるらしいのでサラッと見てみます。 前置き このlabel機能は以下のissueでのproposalが採択され、 github.com 提案者のmatloob氏がPRを投げ、go1…

Golang Weekly #167

Profiler labels in Go · Go, the unwritten parts Go 1.9の新機能としてProfiler Labelsが追加されます。 CPUプロファイラの収集データにラベルを追加することが出来るようになり、 例えば一般的なWebサーバにgoroutineでハンドラが分割された /user と /to…

Golang Weekly #166

Golang Weeklyを読むのが最近の楽しみなしょっさんです。 Golang Weeklyは一週間ごとにメールでGo関連のブログ記事をまとめて送ってくれるサービスになります。 Golang Weekly で、自分のメモがてらにオッと思った記事とかを毎週まとめていこうと思います。 …

リモートサーバーのhbaseをクライアントから叩けるようにする

日本語での情報が無かったのでメモ代わりに書く。 リモートサーバーで構築したhbaseに対して、JavaなりGoなり何らかで作ったクライアントからテーブル操作等々できるようにする。 やることは至って簡単で、 hbase-site.xml にPropertyを追加するだけ。 <property> <name>hbas</name></property>…

Golangで雑にメモリ状況を見る

pprof使うほどでもないよなってなったので、こんな感じで雑に。 var mem runtime.MemStats runtime.ReadMemStats(&mem) fmt.Printf("Alloc [%v] \t HeapAlloc [%v] \n", mem.Alloc, mem.HeapAlloc)

UnmarshalJSONを使ってJSONをシュッと変換する

渡ってきたJSONをUnmarshalしようと、こんな感じのコードを書きました。 package main import ( json "encoding/json" "fmt" ) type User struct { Name []byte `json:name` } func main() { var j = `{ "name": "Ken" }` var u User json.Unmarshal([]byte(…

GraphQLを勉強したのでGolangで書いてみた

ここ最近とてもGraphQLが盛り上がってますね! イベントも続々と開催されていたりするので、勢いを感じています。 そんなGraphQLを遅まきながら勉強してみました。 GraphQLとは? 既に様々な記事で論じられている内容なので割愛します。 この記事が個人的に…

僕の心と他人の心

本日付で勤めていた会社を退職致しました。 会社を含めた周りは悪くなく、全ては自分が原因です。 2ヶ月ほど休職していたのですが、その間に「僕という人間は何がダメで今後どのように向き合えば良いのか?」ということを連々と考えたりしましたので、心の…

goroutine使ってゴニョゴニョするCLIツールを作った時の備忘録

備忘録として自分用に書きます。 cobra良いよ 以前までurfave/cli使ってたんですが、「dockerのcliとかcobra使ってたよな〜」とよくcobra見かけるようになったので使ってみた。 $ cobra initでアプリケーションの土台作ってくれるので、煩わしいこと考えずに…

vim-goの入力補完が動かなくなった

.vimrcの整理整頓作業をしていたところ、突然vim-goの入力補完が下記のようになった。 「いやいや、こっちがPanicだよ」と思いつつ、色々と対策を探しました。 対策 そもそも、vim-goの補完にはgocodeが使われており、そちらのISSUEを探したところありました…

kirimoriにVimのExコマンドを実行する機能を追加しました

細々とkirimoriの開発をしております。 今回はkirimori addとkirimori removeをした際に各プラグインマネージャー毎に対応したExコマンドを叩く機能を追加しました。 例えば、Vundleの場合はkirimori addした際に:PluginInstallが、kirimori removeした際に:…

ranger-cdをzshで使えるようにした

rangerを教えてもらったんですが「めちゃ便利だ!」と今更ながら気付いた私です。 さて、rangerにはexamplesというディレクトリの中に様々な便利関数が置かれています。 その中でもranger-cdは、rangerで最後にqで抜けたところに移動してくれるという便利関…

Dockerでとんでもないハマり方をした

ちょっとDockerを触ってみてるsyossan27です。 雰囲気でkirimoriが動くDockerImageを作成する時にとんでもないハマり方しました。 一体何が ホームディレクトリでDockerfile作って、kirimoriのバイナリファイル置いてCOPYでDockerImageにコピーしようとDocke…

golangのパッケージマネージャdepのIssue覗いてみた

今まではglideを使ってたのですが、公式ご謹製ということでdepをこれから使っていこうかなと思いまして、一旦Issueを覗いてみました。 その中でも気になったIssueはこちら。 github.com 「dep initして生成されたmanifest.jsonが空だよ」ってIssueなんですが…

mattnさんのリファクタリングを読み解く

現在絶賛開発中のkirimoriですが、なんとGolang界隈で有名なmattnさんにリファクタリングをして頂くという、とても嬉しい事態がありました✨ kirimoriについてはこちら↓ syossan.hateblo.jp リファクタリング前提でかなり雑に書いていたのですが、めちゃくち…

golangでScanが上手く動かなかったので原因調べてみた

どうも、今日も元気にGolang生活しております。 今回はbufioパッケージにあるScanの話をば。 問題の発生 とあるライブラリを使ってコードを書いていた時に、Scanを実行しても動かないという現象に遭遇しました。 コードは以下のような感じ で、 hoge.txt の…

webpackerを試してみた

Rails5.1からwebpackが標準装備されるということで、試しにRails5.0.1 + webpackerでやってみました。 インストール Rails5.0.1でプロジェクトを作成し、Gemfileに gem 'webpacker', github:'rails/webpacker' としてmasterから取ってくる。(rails webpacke…

kirimoriというコマンドラインツールを作ってみた

久々にGolangでコマンドラインツール作りました。 その名もkirimori(切り盛り)。 github.com 何が出来るの? Vimのプラグインを追加・削除・一覧表示が出来ます。 例えば、 $ kirimori add Shougo/neocomplete と実行することで、指定した .vimrc にVundle…

2017年の抱負

今年の三が日は食っちゃ寝しながらscalaを勉強してたしょっさんです。 去年も抱負を考えたんですが、今年も何か抱負を立てようかなと。 PMとしての経験値を溜める 去年は年末にちょびっとPMとしてお仕事しました。 自分以外のエンジニアを携えてPMをやるのは…

2016年の棚卸し

あともう少しで2016年が終わりそうですね。 今年は色々とやった年だったので、どんなことをやったか自分のために棚卸ししてみます。 1月 2016年の目標 1月には2016年の目標として以下の4つを設定しました。 エロ系サービスを2つ作る Qiitaで1000Contributio…

このAdvent Calendarがひどい! 2016年版

数年前から流行り始めたAdvent Calendar、今年も大盛況だったみたいですね。 色々と良質なエントリが生成される中、「時間が無くて〜」だとか「やっぱり書く意欲が〜」とかクソみたいな言い訳でクソみたいな記事が量産されていくのも事実。 そういうわけで、…

豚肉が20キロ届きました

天気麗らかな本日。朝11時に「ガラガラ」と音を立て、ダンボール2つ分の荷物が台車に乗せられ届きました。 「ん?俺なんか買ったかな」と訝しみながら蓋を開けてみると、そこには大量の豚肉が。 めっちゃデカいダンボールに肉が…肉が… pic.twitter.com/DKxX…

ittanというGemを作りました

seedファイルをいちいち作成して編集するのってダルくないですか?ってことで ittan というGemを作りました。 github.com どんなGemなの? schema.rb を読み取って、seedファイルを生成します。 自分が普段使いしてるのが seed_fu なので、そっち準拠にして…

一人のエンジニアに見る転職の成功・失敗

転職 Advent Calendar 2016 - Qiita の7日目です。 エンジニアにとっての一大イベント、「転職」。 そんな転職の助けになるかどうか分かりませんが、4回転職した平凡なエンジニアの転職談を書き綴ります。 1社目:老舗の下請け会社 関西にある老舗の下請け…

お布団と私と出社芸

出社芸 Advent Calendar 2016の2日目ということで、実際の出社芸の数々をお見せますよ。 1. 二度寝 これは誰もが経験のある、やっちゃった系の出社芸ですね。 人間は睡眠欲には抗えません、仕方ありません。 2. 服がない まぁこれはよくあるやつだとは思う…

xamarinコミュニティの炎上について思うこと

最近、めっきり寒くなりましたが皆様体調は大丈夫でしょうか? この寒い中、ある界隈が焚き火でボヤ騒ぎになったようです。 Xamarinするには、まず人脈♪ 検索用に残しとこ pic.twitter.com/RWToN6xxqW— ぁわわ (@lune_sta) November 26, 2016 xamarinの勉強…

ちょっと闇を垣間見た話

簡単な要約:なんかやらかしてるGithubリポジトリを発見した 伊藤忠さん、御社のプロダクトがGithubのPublic Repositoryになってて丸見えなんですがそれは・・・(困惑— しょっさん@アローラのすがた (@syossan27) 2016年11月13日 伊藤忠テクノソリューショ…

Rustを触る②

今度は「シンタックスとセマンティクス」やっていきます。 変数束縛 let を使う。 パターン let を用いた際の左式は パターン と呼ばれる。 let (x, y) = (1, 2); こういうことが可能。 型アノテーション let x: i32 = 5; 公式ドキュメントでは推論する型を…

Rustを触る①

以前、こちらの勉強会でRust触ったもののそれ以来ノータッチなので1から勉強し直してみようという試み。 eventdots.jp 一旦、愚直に公式ドキュメントを追いかけてみます。 Hello world! 〜 リリースまで インスコ $ curl -sSf https://static.rust-lang.org…

残営業日数表示ツール作った

最近仕事でPMをやりだして「あれ?今月って残りの営業日数いくつだ?」ってなりだしたのでツール作ったよ。 Macで動くよ。 eigyo-days electronでペッと作りました。 github.com 祝日とかの判定に UltraDate.js を使いました。 作者の方に感謝。 配布 Electr…

エンジニアの採用についての話

色んな人に向けて「積極採用中です!」と言うよりも本当に来てほしい人に「あなたが必要だ頼む来てくれ!」と言う方が断然心に響くという当たり前のことを僕はhotchemiさんから学びましたよ— こにふぁー (@konifar) 2016年11月17日 そうなんですよ、雑多なエ…

エンジニア立ち居振舞い:他人と比較しない

お題「エンジニア立ち居振舞い」 なんか自分のエンジニアとしての立ち居振る舞いあるかなーと振り返ってみたら、掲題の立ち居振る舞いが思い浮かんだので書く。 他人を見すぎるということ TwitterなどSNSで他の技術者と繋がってるよーというエンジニアの方は…

エンジニアが考えたエンジニア獲得戦略

以前このような記事を書きました。 syossan.hateblo.jp しかし、ふと「採用担当者のペルソナに立ってみると、それじゃどうしたらええねん!と思いそうだな」と感じました。 という訳で、別に採用活動をしたことがないごく一般的なエンジニアが、エンジニア獲…

ChromeExtensionをSPAに対応したお話

昨日、gitpomoをリリースしました。 このgitpomo、単純にGithubのISSUEページでポモ記録がつけれるツールなんですが、GithubがSPAということで少々作成に苦労しました。 苦労した点 まず、普通にContent Scriptsで作成していたのですが、ISSUEの一覧ページか…