生涯未熟

生涯未熟

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

pigoを用いた🤔ツールの開発

昨日のお昼休憩中に暇だったのでこんなツールを作りました。 Goで顔を判定してにする謎ツールを昼休憩中に作成した pic.twitter.com/QcyfcOiLwk— しょっさん@ʕ ◔ϖ◔ʔ (@syossan27) January 16, 2019 見た目のインパクトからかプチバズりになり恐縮しておりま…

ioutil.ReadDirでのシンボリックリンクの扱い

ioutil.ReadDirでディレクトリ内を走査した時にシンボリックリンクがあった場合、LStatとStatのどちらでFileInfoが返ってくるか分からなかったため試してみた。 testディレクトリ内に別のディレクトリに対してシンボリックリンクを張ったものを置いてありま…

os.Stat, os.Lstatのシンボリックリンク指定時の違い

いつまで経っても覚えられないので自戒のために書く。 os.Stat 指定されたファイルパスの情報(os.FileInfo)を返す。 シンボリックリンクを指定した場合には、リンクを辿った先の情報を返す。 os.Lstat 指定されたファイルパスの情報(os.FileInfo)を返す…

echoのmiddlewareで一度読んだRequestBodyをもう一度読む

Gopherの皆さんはecho使ってますでしょうか?僕は薄くて好きなのでよく使ってます。 さて、echoにはmiddlewareという機能がございます。 Middleware | Echo - High performance, minimalist Go web framework ハンドラの実行前に処理差し込めるやつですが、…

刺し身たんぽぽについて

刺し身たんぽぽについて調べてみました。 刺し身たんぽぽとは一体何なのか? 刺身の盛り合わせに添えられている食菊(食用菊)の通称。花の大きさからタンポポと誤認されやすい。菊には殺菌作用があり、かつ見た目の彩りや香りも添える。さらに刺身のツマと…

treeコマンド 〜Rオプションの謎〜

treeコマンド、皆さん知ってますか? そうです、あのファイルやらディレクトリやらを良い感じに木構造で出力してくれるニクい奴です。 こんな感じ さて、そんなtreeコマンドには多くのオプションがあります。 よく使われるのは -L だったり、 -a とかですか…

2018年の棚卸し

2018年もそろそろ終わりですね。 恒例の本年の棚卸しをやっていきたいと思います。 1月 syossan.hateblo.jp 今年の抱負は「つよく いきる」でした。 つよく いきました、よかったですね。 syossan.hateblo.jp homebrewに自作ツール登録しようとして失敗した…

GoでSSH Managerを作成した際の知見

この記事は Go Advent Calendar 2018 の23日目の記事です。 今回は過去に作成したSSH Managerのお話をさせて頂きます。 github.com どんなツールなのか? ざっくり言うとSSH接続情報を管理するツールになります。 今の所パスワード認証のみ対応しております…

Goのあるコードを発端とした衝撃の結末

はい、というわけで今回はGoのあるコードから紡がれるストーリーに纏わるお話です。 一体何が起こったのか? 発端はこのツイートでした。 — しょっさん@ʕ ◔ϖ◔ʔ (@syossan27) December 20, 2018 むむー、一体なんじゃらほい?とGoの当該ソースコードを見たら…

初心者Elmerがクソアプリを作った時に気付いたこと

この記事は Elm Advent Calendar 2018 の17日目の記事です。 今回は初心者Elmerが別のアドベントカレンダーでアプリケーションを作ってみた時に気付いたことをつらつらと書いてみます。 syossan.hateblo.jp github.com 書き始め 以前、Elmに入門してからだい…

ウルヴァリンがハッキングする映画はいいぞ

というわけで、こちらは プログラマーにおすすめしたい映画 Advent Calendar 2018 14日目の記事になります。 君は『ソードフィッシュ』を知っているか? 名前からして何の映画か分からない『ソードフィッシュ』 まずはパッケージ画像を見てみましょう。 キャ…

チャレンジングなことをしてみたらエッチなクソアプリが誕生した

どうも、この記事は クソアプリアドベントカレンダー の10日目のようです。 さて、今年ひり出したクソアプリは エッチなやつです エッチなリンク 業務で触った技術がなんか活かせないかな〜?と考えていたら、何故かエロクソアプリが誕生していました。不思…

GoLandにCassandra対応が来たぞ!!

掲題の通り、GoLand 2018.3でCassandraのDataSourceが使えるようになりましたぞ! おー!Cassandra追加されてーら! pic.twitter.com/IjfkDRZaFI— しょっさん@ʕ ◔ϖ◔ʔ (@syossan27) November 23, 2018 www.jetbrains.com 今までCassandraのGUIツールといえば…

guregu/nullでぬるぬるする

Goでサーバーサイドの開発を行っているとMySQLなどのRDBに接続して、取得した値をJSONで返す機会は多いはず。 そして大概ハマるのが「NULLを許容してJSONで返すのはどうやればいいんだ・・・」というところでしょう。 今回はそんな話をします。 ノーガード戦…

S3にファイルがアップロードされた時にCloudFrontのキャッシュを削除してみる

掲題の通りのことが社で必要になったのでGoでやってみました。 やりたいこと S3に置いた静的HTMLをCloudFrontを通してアクセスする、という形で配信しているシステムがあり、運用する中で静的HTMLを置き換えた時にすぐに切り替わるようにしたいということで…

Elmハンズオンに行ってきた

最近ある方がElmを猛プッシュしているので、Elmハンズオンに行ってきました。 elm-jp.connpass.com togetter.com Elm is 何? Elmはウェブブラウザベースのグラフィカルユーザインタフェースを宣言的に作成するためのドメイン固有プログラミング言語である。…

Ergo42を買った

最近、非常に肩こりが酷くなって「そろそろ分割キーボードってものに手を出すか」って感じになったのでErgo42を買ってみました。 Ergo42とは? Biacco42さんが作製された分割キーボードで、こちらにどういうキーボードなのかの詳細が書かれております。 biac…

buildersconに初参加してきたぞ!

というわけで、以前から気になっていたbuildersconに行ってきました。 どんなイベント? builderscon.io buildersconではトークに関して技術的な制約はありません。 特定のプログラミング言語や技術スタックによるくくりも設けません。 必要なのは技術者達に…

kafka2.0にした時にShopify/saramaでCRCエラーが出る件

皆さん、Goでkafkaやっとりますか?僕はバリバリ伝説な感じでバリバリやっとります。 というわけで、最近kafka2.0がリリースされましたね。 うちでも使うかと2.0にアップグレードしたんですが、見事にsaramaを使ったGo製のProducer/Consumerが死にました、南…

「Docker/Kubernetes 実践コンテナ開発入門」はコンテナ初心者に最高の本だった

Docker/Kubernetes 実践コンテナ開発入門posted with amazlet at 18.08.24山田 明憲 技術評論社 売り上げランキング: 455Amazon.co.jpで詳細を見る 今回ありがたくも初心者枠として「Docker/Kubernetes 実践コンテナ開発入門」のレビューをさせて頂きました…

Sparkにおける不正なCSV読み込みへの立ち向かい方

Apache Sparkを使い、あるデータをHDFSにCSVとして保存し、保存したCSVから読み込んだデータをDBに格納するということを想定して、もし不正なCSVファイルが紛れ込んでいたらどうする?ということを考えていく。 状況 この疑問が生じた発端となった不正なCSV…

ランサーズ開発ランチにお邪魔してきた!

クラウドソーシングで超有名なランサーズさんが、開発ランチという面白いイベントをやっていたのでカツ丼食べたくてブログ枠として参加してまいりました!! lancers-engineer.connpass.com ランサーズ開発ランチ(Lunchers)について このイベントはランサ…

runtime.Goexitを改めて理解する

序文 runtime packageには Goexit() というfunctionがあります。 // Goexit terminates the goroutine that calls it. No other goroutine is affected. // Goexit runs all deferred calls before terminating the goroutine. Because Goexit // is not a p…

「Go言語でつくるインタプリタ」を読んだ

読んだので思ったことを書く。 Go言語でつくるインタプリタposted with amazlet at 18.07.01Thorsten Ball オライリージャパン 売り上げランキング: 9,186Amazon.co.jpで詳細を見る どんな感じの本なのさ? 詳しくはこちら Writing An Interpreter In Goを読…

Cassandraが墓石まみれになり死

TombStoneが出てこなくて、ついTotemと言ってしまった私です。 今回はTombStoneで死んだ話をします。 状況 Apache SparkでCassandraに向けて、1000万件程のデータ を流し込む処理を実行していたのですが、途中で処理が完全に止まってしまい死にました。 何故…

saramaでAsyncProducerを使う時に気を付けなければいけないたったひとつのこと

AsyncCloseを使うな どういうこと? AsyncProducerには AsyncClose Close の2種類がある。 なんの違いが? それぞれのコメント読みましょ。 AsyncClose AsyncClose triggers a shutdown of the producer. The shutdown has completed when both the Errors …

OS Xのnetstatに立ち向かう

ある時、手持ちのMacからTIME_WAITが出てるか調べようと netstat を叩いた所、想定していた挙動と全く違ったので、メモ代わりに書いておく。 何が違ったのか? -p オプションの挙動 TIME_WAITの扱い -p オプションの挙動 これは完全にLinuxとBSD系であるOSX…

入社から一年経ちました

株式会社アイスタイルに去年の6/1に入社してから一年経ちました。 もう30手前になると一年があっという間だなぁ、としみじみ感じております。 何をやったか? ・最初の2,3ヶ月は久々にWindows使った ・雑にScalaやった ・ガッツリGoやってる ・hadoop, hbase…

TIME_WAITを引き起こさないhttp.Getを実現する

大量にhttp.Getするという書き捨てコードを書いていたのですが、途中までは順調に進むのですがあるところから急に通信を行わなくなる、という事態にハマりました。 一体何が? なんじゃこりゃ、というわけでとりあえずコネクションの状況を確認してみたので…

High-performance concurrencyという話をしました

主催をしている勉強会でGoのConcurrencyにまつわる話をしました。 gounconference.connpass.com 最近、Concurrency in Goという本を読んだことに触発され、「並行処理はサラッとこんな感じでやるといい感じになるのでは?」というTipsを本書よりチョイスして…