oinume journal

Scratchpad of what I learned

GoでLRU Cacheを実装する

LRU Cacheは何かをキャッシュする際によく使うデータ構造の一つだと思う。よく使う一方でその実装はやったことがなかったので、今回Goで実装してみたよ、という話。 LRUCacheとは? Least Recentry Used Cache のこと。一定のキャパシティを持つもので、キャ…

Review on Jan 2020

What I did on Jan 2020 Got flu on the beginning of this year... Went to GoDays 2020 in Berlin! Went to Warsaw as a persona trip Work, work, work Output Wrote a blog post about GitHub Actions. Sleep 6 hours 50 min. 1st week: many sleep hour…

GitHub ActionsでReleaseが作成されたら次のバージョンのrelease branchを自動的に作る

はじめに 自分のチームではA successful Git branching modelに近い感じで、リリースする前にrelease branchを作りそこにfeature branchをmergeしてからテストしてリリースする、という流れで開発からリリースまでのサイクルを回している。 リリースする前に…

2020の抱負

新年あけましておめでとうございます。年末年始はインフルエンザになって寝込んでいて、そういえば今年は厄年だったことを思い出しました。もう1/15になってだけど2020年の抱負をあらためて書いておこうと思います。 1日6時間15分以上寝る 昨年は1日6時間以…

2019年の振り返り

2019年も早いものであっという間に終わってしまった。以下が2019年初頭に考えていた抱負だったので、これをベースに振り返りをしてみよう。 journal.lampetty.net アウトプット ちゃんとした記事を月に一つは書く!というの目標に対しては以下のように未達だ…

OpenCensusとhttptrace.ClientTraceを使ってHTTPリクエストのlatencyを可視化する

Go

はじめに みなさんこんにちは。これはGo5 Advent Calendar 2019の19日目の記事です。この記事はOpenCensusとhttptrace.ClientTraceを使ってHTTPリクエストの内部的なlatencyを可視化する話です。「内部的なlatency」というのは、HTTPリクエストの中で名前解…

Go言語における並行処理 - ユースケース編

Go

はじめに これは以下の記事の続きの記事。以下の2つではgoroutineとchannelについて説明したので、これらを使って具体的な並行処理のユースケースを書いてみる。 Goにおける並行処理 - goroutine編 - oinume journal Goにおける並行処理 - channel編 - oinum…

2019年9月の振り返り

8月の振り返りをサボってしまったのでまとめて。 アウトプット Goの並行処理の記事とMySQL 8.0へアップデートする記事を書いた。 Goにおける並行処理 - goroutine編 - oinume journal Goにおける並行処理 - channel編 - oinume journal Problems when updati…

初めてIELTSを受験した

IELTSってなに? 国際的な英語の試験。大学の入学の条件に使われたり、国によっては永住権を申請する時のポイントとして使われるもの。 会場 自分は東京会場で、場所は幸ビルディングという新橋付近の貸し会議室っぽいところだった。 持ち込みできるもの 中…

Problems when updating MySQL from 5.7 to 8.0

Introduction I updated MySQL from 5.7 to 8.0. There were some problems when updating. This is just a memo how to solve the problems. InnoDB deprecated file format parameters These parameters are deprecated in 8.0. innodb_file_format innodb…

Goにおける並行処理 - channel編

Go

はじめに これはGoにおける並行処理 - goroutine編 - oinume journalの続きの記事。goroutineに引き続き、Goの並行処理を支える重要な概念であるchannelについて説明する。 channelとは? channelはメモリに対するアクセスを同期するためやgoroutine間の通信…

Goにおける並行処理 - goroutine編

Go

はじめに Goでは、goroutineとchannelが言語仕様として組み込まれているため、他の言語に比べてとても並行処理のコードが書きやすい。この2つの基本的な動作原理についてまとめた自分用のメモである。(channelについては別の記事で書く予定) goroutineとは?…

2019年7月の振り返り

アウトプット 7月も小ネタだけどブログを書いた。 xargsでファイルの内容をコマンドの引数として渡す - oinume journal Intellij IDEAを2019.2にアップグレードするとコピペや入力がおかしくなる問題のワークアラウンド - oinume journal path-shrinker path…

Intellij IDEAを2019.2にアップグレードするとコピペや入力がおかしくなる問題のワークアラウンド

先日IntelliJ IDEAを2019.2にアップグレードしたところ、以下の問題に遭遇した。 エディタでのコピー&ペーストすると同じものが2回ペーストされる 文字の入力に取りこぼしがある(publicって入力してもpubcみたいなる) バグトラッカーを見たところ、Copied t…

xargsでファイルの内容をコマンドの引数として渡す

dates.txt 2019-01-01 2019-02-01 2019-03-01 みたいなファイルがあった時に、このファイルの行をxargsコマンド経由で任意のコマンドの引数として渡す方法。 $ cat dates.txt | xargs -I{} 'echo {}'

MacBookAir 2019を買おうか悩み中

今使っているのはMacBookPro 13inch late 2016 Two Thunderbolt3 portsなんだけど、2018年モデルのMacBookAirにCPUスコアは負けている... browser.geekbench.com Single-Core Score: 3886 Multi-Core Score: 7701 以下は2018年モデルのGeekBenchのスコア。 b…

2019年6月の振り返り

2019年がもう半分が過ぎてしまった。やばい。 ▓▓▓▓▓▓▓▓░░░░░░░ 50%— Year Progress (@year_progress) July 2, 2019 アウトプット 6月は頑張ってブログを書いた。それなりの分量の記事を書こうとすると週に1個が限界な気がするので、良いペースだと思う。 タ…

Goのcontextによるキャンセルやタイムアウト

Go

これはなに? Go言語におけるcontextパッケージを使ったキャンセルやタイムアウトについて説明する。この記事を読むと以下について詳しくなれるはず...! context.WithCancel context.WithTimeout context.Done context.Err とはいいつつも、かなり自分向けの…

zshをやめてbashにした

TL;DR Bashを使うにあたって、zshが持つ標準機能のレベルと同じにするには初期設定が面倒だったけどなんとかいける。Bashは進化していると感じた。 bash-itが便利 設定は .bash_profile も含めてoinume/dotfilesに上げているので参考にどうぞ 動機 ターミナ…

2019年5月の振り返り

仕事 4月はもっぱら仕事が忙しく、最終的にGWは半分以上出勤するという体たらくだったので振り返りはスキップしてしまった。おかげでメルペイあと払いのリリースは何とかできたけど、技術的負債が多すぎて運用で死んでいる。 アウトプット GCPのCloud PubSub…

ターミナル環境を見直す: pecoからfzfへ

zsh

コマンドの履歴やディレクトリ移動の履歴を選択するためのツールとして長らくpecoを使ってきたけど、fzfに移行してみた。理由は大したものではなく pecoはshellで複数行のコマンドを検索して実行する場合に、 \ が \\ と2重になってしまうという問題があった…

GCPのCloud Runを使って簡単なリダイレクタを作った話

GCP

今年5月にbetaとしてリリースされたGCPのCloud Runを使って、もともとGAEで運用していたリダイレクタを移植してみたのでその紹介。 Cloud Runとは HTTPリクエストを処理するためのFull ManagedなステートレスのContainerの実行環境。公式サイトには以下のよ…

2019年3月の振り返り

アウトプット GCPのCloud PubSubをGoで動かしてみただけのメモ のみ。とにかく仕事が忙しくてプライベートで勉強したり何かをアウトプットすることを疎かにしてしまった(おかげで仕事は捗った)。 英語 3月から会社がDMM英会話から試験的にNativeCampに切り替…

GCPのCloud PubSubをGoで動かしてみただけのメモ

これはGCPのCloud PubSubのチュートリアルをやってみただけの自分用のメモ。この記事で紹介されているサンプルコードはGitHubに置いてある。 Cloud PubSubとは GCPで提供されているメッセージキュー。メッセージの送信をして(publish)、複数のシステムがその…

2019年02月の振り返り

アウトプット 特になし 英語 1月とほぼ変わらずという状態。ふと、2年前ぐらいに受けたTOEICの結果を見ていたら、Readingにおいて自分は単語力が弱いと書かれていたので、単語をちゃんと勉強するのが一番効果的っぽい。なお、今まで会社の補助で使えていたDM…

楽天銀行のデビットカードはいいぞ

最近メインバンクを三菱UFJから楽天銀行に移している。現在進行系なのは、様々な引き落としの手続きに時間がかかっているためだけど、近日中には終わると思う。 デビットカードってなに?メリットは? 使うときはクレジットカードと同じように使える。例えば…

クライアントを作って理解するOAuth2(実装編)

はじめに クライアントを作って理解するOAuth2(準備編) - oinume journalの続編。前の記事ではGoogle APIsのプロジェクトを作成してOAuth2 clientを登録した。この記事では発行されたClient idを使って実際にAccess tokenを取得する部分をGoで実装してみたい…

2019年01月の振り返り

アウトプット OAuth 2.0について以下の記事を書いた。少しかじった程度だけど、その知識をアウトプットした感じ。 journal.lampetty.net 英語 Daily Tech News Showをほぼ毎日聞いている 1エピソードが5分以内なので聞きやすい。長い英語のpodcastは途中で集…

クライアントを作って理解するOAuth2(準備編)

はじめに GoogleやFacebookなどの外部サービスのAPIを利用する上で欠かせないのがOAuth2という仕様なんだけど、この仕様だけ読んでいてもつまらないしよーわからんので、実際に手を動かしてみて理解を深めよう、というのがこの記事の趣旨です。実際にはOAuth…

2019年の抱負

もう10日以上経ってしまったけど2019年の抱負。 大方針:アウトプット 今年のテーマは アウトプット を第一にする。昨年は本を読んだりUdemyでいろいろ勉強していたけど、雑でもいいからアウトプットすることで自分の血肉にしていきたいと思っている。 1日6…