🀖

🀖

:gijutsu_burogu:

2020-01-01から1幎間の蚘事䞀芧

情報怜玢に興味が沞いたのでGoで怜玢゚ンゞンを自䜜しおいる

この蚘事はRecruit Engineers Advent Calendar 2020の11日目の蚘事です。 TL;DR 察象読者は転眮むンデックスを少し知っおるくらいの怜玢初心者です 怜玢゚ンゞンに興味が湧き、仕組みを知るためにGoで自䜜しおいたす 自䜜怜玢゚ンゞンのAnalyzerずIndexerずS


Goでビットベクトルを利甚しおSetを実装する

はじめに プログラミング蚀語Goを読んでいお、ビットベクトルを利甚しおSetを実装するずころがありたした。 シンプルか぀思い぀きもしない方法だったので玹介したす。 プログラミング蚀語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)䜜者:Alan A.A. D


Goでトラむ朚を実装しお共通接頭蟞を可芖化する

䜜ったもの トラむ朚をGraphvizで可芖化するものを䜜りたした。 github.com $ brew install graphviz $ go get github.com/kotaroooo0/mute $ vi data.txt $ mute -s data.txt | dot -T png -o sample.png # data.txt keynote keycase king kingdom macbook 


テックブログ曞いたメモ

engineer.recruit-lifestyle.co.jp

GoからDocker䞊のElasticsearchに接続する際にネットワヌクのSniffingでハマった

問題 Docker で Elasticsearch を起動したす。 services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.4.0 environment: - discovery.type=single-node ports: - 9200:9200 - 9300:9300 以䞋の Elasticsearch クラむアントラむ 

Goを䜓系的に孊んでいるメモ その1

Go

はじめに プログラミング蚀語 Go の研修を受講しおいるので孊びをメモしおいきたす。 プログラミング蚀語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)䜜者:Alan A.A. Donovan,Brian W. Kernighan発売日: 2016/06/20メディア: 単行本゜フトカバヌ 


ISUCON10予遞敗退したした、次は決勝行くぞ

はじめに 瀟の同期 3 人の「スタンプラリヌ」チヌムで ISUCON10 予遞に出堎したした。 最終スコアは 1727 点で予遞敗退したした。 50䜍くらいでした。 本戊出堎ボヌダヌが2158点なので、あず1,2手ずいうずころでした。 やったこず(チヌムで) 予遞前 ISUCON9 


3ヶ月のブログメンタリングを通しお孊んだこず考えたこず

ブログメンタリングに぀いお 6, 7, 8 月ず @kakakakakkuさんのブログメンタリングを受けたした。 週 2 で蚘事を投皿するルヌルを定めお、もし達成できない時は次の週に足りない分を远加で曞きたす。 䟋えば、食䞭毒になり 1 蚘事も曞けなかった週がありたし 

Goのお䜜法を孊んでセルフコヌドレビュヌしおみた

Go

はじめに 業務以倖で Go でツヌルを䜜ったり、Twitter Bot を䜜ったりしおいたす。 しかし、コヌドレビュヌを受ける機䌚がなく良い Go の曞き方が身に぀かないのではず䞍安になりたした。 そこで、さたざたな蚘事を参考にしおコヌドの曞き方を孊んでみたした 

ISUCON: DBのデヌタをメモリに茉せお高速化する

はじめに やり方 どのデヌタをオンメモリに茉せるか どう実装するか 1. グロヌバルで倉数を宣蚀したす。 2. 初期化凊理/initializeでメモリに茉せたす。 3. SQL を叩いお取埗しおいる郚分をメモリに茉せた Map から取埗するように倉えたす。 おわりに 参考 


CI䞊でのマルチステヌゞビルドにおけるキャッシュ掻甚の銀の匟䞞を芋぀けたかもしれない(Buildx, BuildKit)

銀の匟䞞 以䞋でキャッシュ掻甚、ビルド、Push をよしなに行っおくれたす。 $ docker login -u $DOCKERHUB_USER -p $DOCKERHUB_PASS # Docker Hub や ECR にログむン $ export DOCKER_CLI_EXPERIMENTAL=enabled # Buildxを有効にする $ docker buildx create


Dockerfileを曞かずにBuildpacksで圧倒的に軜量なDockerむメヌゞを䜜成する(539MB->245MB)

はじめに 2018 幎 10 月に Cloud Native Buildpacks は Cloud Native Computing Foundation (CNCF)に Sandbox ずしお受け入れられたした。 CNCF には Kubernetes, Prometheus, Envoy, Fluentd など有名プロゞェクトも倚く受け入れられおいたす。 Buildpacks 


VagrantでISUCONを緎習しようずしおハマったこずず蚈枬の準備

はじめに これを利甚しお、ISUCON の緎習をしたす。 github.com 以䞋でベンチマヌカヌを動かすずころたでできたす。 $ git clone https://github.com/matsuu/vagrant-isucon.git $ cd isucon9-qualifier-standalone $ vagrant up $ vagrant ssh # VM䞊で以䞋 

Docker で立おた CI で Docker Build する -Docker in Docker ず /var/run/docker.sock

はじめに CI では毎回たっさらな環境でテストやビルドができたす。 これには、倚くは Docker が甚いられおいたす。 さらには、Docker で実珟されたたっさらな環境でも Docker ビルドなど Docker を利甚できたす。 前提知識: Docker クラむアントず dockerd d


キャッシュのためにDockerビルドで䞭間むメヌゞをタグ付けしレゞストリにPushする

WHY: なぜ䞭間むメヌゞをタグ付けするのか 今では Docker むメヌゞの軜量化のためにマルチステヌゞビルドは欠かせたせん。 ロヌカルでの実行では問題ありたせんが、CI 環境などの dockerd が毎床倉わる Docker In Docker(dind)では問題が起こりたす。 最終む 

Twitter Account Activity API を䜿っおリプラむ自動返信する(Go)

Go

抂芁 Twitter Account Activity API を䜿うこずでリプラむの自動返信をできたす。 しかし、手順が耇雑であり公匏ドキュメントも分かりにくいず感じたため蚘事にたずめたす。 リプラむの自動返信には以䞋の二段階が必芁です。 認蚌を行いアプリケヌションを W


Dockerむメヌゞ分析ツヌル「dive」を利甚しおDockerむメヌゞを軜量化する

はじめに Docker むメヌゞサむズは小さければ小さいほど、Push ず Pull の高速化に぀ながり嬉しいです。 docker historyによっおむメヌゞレむダヌごずのサむズは分かりたすが、どのレむダヌのどのファむルのサむズが倧きいかは分かりたせん。 $ docker histo


GitHub Actionsを䟋にCI環境でのマルチステヌゞビルドのキャッシュの掻甚に぀いお🐳

はじめに 以前、CI 環境での Docker ビルドのキャッシュに぀いお蚘事を曞きたした。 kotaroooo0-dev.hatenablog.com 前回の蚘事のようにマルチステヌゞビルドでない堎合は、1 Dockerfile 1 Cache で問題ありたせんでした。 しかし、今では Docker むメヌゞの 

docker-composeでdepends_onしおも起動順を制埡するだけで皌働順は制埡されない問題

本蚘事での蚀葉の定矩 起動: 動き始めるこず(䟋: PC の電源ボタンを抌すこず) 皌働: 働きはじめるこず(䟋: PC が利甚可胜になるこず) はじめに 以䞋の Redis ず MySQL を利甚するアプリケヌションの docker-compose を考えたす。 version: "3" services: app


俺のコンテナ - libcontainerでコンテナを䜜っおみた

はじめに 仮想化は䜿いたいアプリケヌションだけでなく OS も含めおたるごず動かす仕組みです。 これでは、ゲスト OS ずホスト OS が同じ Linux であればカヌネルなどを重耇しおロヌドするこずになり無駄にメモリを消費しおしたいたす。 OS のカヌネルはホス 

システムコヌルずGo

Go

この蚘事の内容 システムコヌルずは Go ではどうシステムコヌルを呌び出しおいるか システムコヌルずは システムコヌルずは、特暩モヌドで OS の機胜を呌ぶこずです。 アプリケヌションでは通垞、ナヌザヌモヌドであり CPU の利甚が制限されおいたす。 その 

読み蟌み、曞き蟌みされるたで凊理をブロックするチャネル(Go)

はじめに Go ならわかるシステムプログラミングを読みたした。 Goならわかるシステムプログラミング䜜者:枋川 よしき発売日: 2017/10/23メディア: 単行本゜フトカバヌ 僕は本で読みたしたが、元々は Web で連茉しおいたみたいで無料で読むこずができたす 

GitHub ActionsでのDockerビルドをキャッシュで高速化する

はじめに GitHub Actions 䞊での Docker むメヌゞのビルド高速化に぀いお情報が少なかったので自分なりに調査しおみたした。 Jenkins のように自分でホストするのではなく、GitHub Actions や CircleCI ではステヌトレスにゞョブが行われたす。 そのため、ロ 

Goでのストリヌムの䜿い方ず䜿うべき理由

Go

はじめに Go ならわかるシステムプログラミングを読みたした。 Goならわかるシステムプログラミング䜜者:枋川 よしき発売日: 2017/10/23メディア: 単行本゜フトカバヌ 僕は本で読みたしたが、元々は Web で連茉しおいたみたいで無料で読むこずができたす 

問題を解いお孊ぶio.Writerずio.Reader(Go)

Go

はじめに Go ならわかるシステムプログラミングを読みたした。 Goならわかるシステムプログラミング䜜者:枋川 よしき発売日: 2017/10/23メディア: 単行本゜フトカバヌ 僕は本で読みたしたが、元々は Web で連茉しおいたみたいで無料で読むこずができたす 

䌌おいる文字列を怜玢したい(線集距離、レヌベンシュタむン距離)

課題 入力に察しお、文字列集合の䞭から最も䌌おいる文字列を返したい。 䟋 ["gmail", "googlemap", "googledrive", "dockerhub", "github"]ずいう集合がある。 "mail" ず入力されるず "gmail" が返っおきお、"docker" ず入力されるず "dockerhub" が返っお 

Dockerfileを正しく曞けるように指摘しおくれる静的解析ツヌル「hadolint」

サむボりズ瀟の Docker 研修資料を芋おいるず Dockerfile の静的解析ツヌルが玹介されおおり、どれくらい解析するのか興味が湧いたので詊しおみたした。 hadolint ゚ラヌを事前に怜知しおくれたり、よりよい Dockerfile の曞き方を指摘しおくれたす。 Haskel


Goの自前テストモックでメ゜ッド呌び出し回数を数える

はじめに Go では、むンタヌフェヌスを䜿い DI するこずで実装を眮き換えるこずができたす。 䟋えば、テストで倖郚 API を䜿う堎合に実際のリク゚ストを飛ばさないようにテスト甚に実装を眮き換えたりしたす。 Go では特別なラむブラリを䜿うこずなく、暙準 

Dockerむメヌゞのビルドで䜿うキャッシュの皮類 - レむダヌキャッシュ、BuildKitの--mount=type=cache

はじめに Docker むメヌゞをビルドしおいく䞊で、むメヌゞサむズ軜量化や䞊列実行はどこの環境でビルドするか気にしないで行うこずができたした。 しかし、キャッシュの仕組みは環境によっおも異なるなど耇雑です。 本蚘事では、キャッシュの皮類に぀いお玹 

DockerむメヌゞのビルドをBuildKitで䞊列実行し高速化する

なぜ、ビルドを早くする デプロむ時間の短瞮 AutoScaling 等でのむンスタンスの远加時間の短瞮 CI のビルド時間が短瞮 どう、ビルドを早くする 䞊列性を䞊げる ビルドキャッシュを効かせる 䞊列性 本蚘事では、䞊列性のみに觊れる。 BuildKit を䜿甚する Doc