Members' blog

CAMPHOR-カンファー運営メンバー個々人が綴るブログ記事を収集して表示しています。
メンバーの得た技術的・学術的・日常的な知見を共有します

KubeSchedulerConfigrationのv1beta3(Kubernetes v1.23)で追加されるMulti-point plugin configurationについて

こんにちは。この記事はKubernetes scheduler pluginsの記念すべき 1 日目の記事にしようと思ったけど、やっぱりやめたボツ記事です。1 日目はまた別で書きます。(遅い) この記事では(SSIA ですが)、リリース目前の Kubernetes v1.2…

第8回 超もくもく会を開催しました

この記事は、 CAMPHOR- Advent Calendar の6日目の記事です。 みなさんこんにちは。CAMPHOR-運営の ほない です。CAMPHOR-ではお問い合わせ担当をしております。 12月4日に「第8回 […] The post 第8回 超もくもく会を開催しました first appeared on CAMPHOR- Blog.

セマンティックセグメンテーションでやっていく年賀状作成 2022

この記事は、CAMPHOR- Advent Calendar 2021 の3日目の記事です。 概要 年賀状やメッセージカード作成に役立つWebツール、SSフォトカードメーカー を作りました。 このツールを使うと、写真からこういった画像を作成できます1。 全面写真の年賀状と「上に文字が乗らない問題」 年末といえば、年賀状作成ですね。最近はSNSで送る人もいるみたいです。 テンプレートに小さい写真を入れていくのではなく、全面が写真の年賀状もおしゃれですよね。 ですが、どんな写真でも全面写真年賀状にできるわけではありません。 写真の上に文字を貼ると、文字が見づらくなってしまいます。 この「上に文字が…

「インターン報告大会 2021」を開催しました

こんにちは。CAMPHOR-運営の へいほぅ です. 今回は10/9(土)に開催した「インターン報告大会 2021」の様子をお伝えします。 イベント内容 インターン報告大会とは、インターンの参加者から体験談を聞いて企業や […] The post 「インターン報告大会 2021」を開催しました first appeared on CAMPHOR- Blog.

CAMPHOR- 説明会

こんにちは。shiba6v です。 2021/10/23(土)に初心者向けイベントとして、CAMPHOR-説明会というイベントを開催しました。 このイベントは、CAMPHOR-に興味があるが訪問したことがない人向けに、訪 […] The post CAMPHOR- 説明会 first appeared on CAMPHOR- Blog.

CloudNative Days Tokyo 2021に'自作して学ぶKubernete Scheduler入門'で登壇しました

こんにちは。最近は引っ越しの準備に追われている@sanposhihoです。 先日開催された CloudNative Days Tokyo 2021 に登壇しました。これはトークの内容やその振り返りに関する記事です。 CloudNative Days Tokyo 202…

ISUCON11本選で学生1位をとった

こんにちは 9/19 に行われた ISUCON11 の本選に@masibw くんと@tosa_now くんと一緒にチーム「雑談係」として参加しました。結果は学生 1 位でした!!!!! 予選の記事はこちら。予選は学生枠の…

メルカリに入社します(しました)

こんにちは。 メルカリで 9 月からは内定者インターンとして働き、無事卒業できれば来年から晴れて full-time…

Kubernetes での Google Summer of Code を修了した & kubernetes-sigs / kube-scheduler-simulator の紹介

こんにちは。 @sanposhiho です 6 月から参加していた、Google Summer of Code (以下 GSoC) を無事修了しました。 この記事では、開発していた kubernetes-sigs/kube-scheduler-simulator…

ISUCON11予選を学生枠で通過した

こんにちは 8/21 に行われた ISUCON11 の予選に@masibw くんと@tosa_now くんと一緒にチーム「雑談係」として参加しました。 これまでのチームの戦績は isucon10 は泣かず飛ばず、NTT Performance Tuning Challenge…

SvelteKitでブログを作ってみた

プレビュー段階のSvelteKitというフレームワークでブログを作ってみました。この記事では、SvelteKitを静的サイトジェネレータとして使うためのアイデアの紹介や、SvelteKitと他のフレームワークとの比較を行っています。

golangci-lint を理解する

この記事は長いので Zenn で本として公開しています :) golangci-lint を理解する

【mixi】Gitの内部構造を学び、その一部を実装するハンズオンを開催しました!

こんにちは!CAMPHOR- 運営メンバーのPanoramaです! 6月26日(土)に株式会社ミクシィのエンジニアの方をお招きして「【mixi】ハンズオン: 内部構造を学びGitを自作できるようになろう!」というイベント […] The post 【mixi】Gitの内部構造を学び、その一部を実装するハンズオンを開催しました! first appeared on CAMPHOR- Blog.

「Kubernetes v1.22でスケジューラーのevent handlerを動的に設定できるようになるよ」って話をふわっと理解しよう

この記事は Zenn でも公開されています https://zenn.dev/sanpo_shiho/articles/22e57dc25a5b2f この記事は、「Kubernetes なんとなくわかるくらいの人が、 “スケジューラーの event handler…

オンライン国際学会に参加した

6月にNAACL2021という自然言語処理系の国際学会に参加し、 投稿した論文の発表を行いました。 完全オンラインでの開催でした。その記録と振り返りの記事です。

【Wantedly】Custom Controllerを使ってKubernetesを学ぶハンズオンを開催しました!

こんにちは、CAMPHOR- 運営のあたらんです。 5/15にWantedlyのエンジニアの方をお招きして「Custom Controllerを使ってKubernetesを学ぶハンズオン」を開催しました! 今回はZoom […] The post 【Wantedly】Custom Controllerを使ってKubernetesを学ぶハンズオンを開催しました! first appeared on CAMPHOR- Blog.

株式会社いい生活のエンジニアの方とトークイベントを開催しました

こんにちは。CAMPHOR-運営の ほない です。 5月30日(日)に、 株式会社いい生活 のエンジニアの方と、オンラインでのトークイベントを開催しました。 今回はZoomを利用したオンラインイベントとなりました。「不動 […] The post 株式会社いい生活のエンジニアの方とトークイベントを開催しました first appeared on CAMPHOR- Blog.

K3s でサーバーと Raspberry PI からなるクラスターを構築する

お久しぶりです。 @km_conner です。 この記事では軽量な Kubernetes ディストリビュー

CAMPHOR- Makeをオープンします!

こんにちは、 CAMPHOR- 運営メンバーの れおまる です。 3/27 に開催した CAMPHOR- DAY 2021 にてCAMPHOR- Makeのスタートを告知しました! Makeに関するLTのアーカイブは こ […] The post CAMPHOR- Makeをオープンします! first appeared on CAMPHOR- Blog.

Google Summer of Code 2021 で Kubernetes に出していたProposalが採択された

追記(2021/08): 無事修了しました: Kubernetes での Google Summer of Code を修了した (+ kubernetes-sigs/kube-scheduler-simulator の紹介 Google Summer of Code 202…

Go公式のlinter、Golintが非推奨になった

この記事は Zenn でも公開されています。 https://zenn.dev/sanpo_shiho/articles/09d1da9af91998 Go が公式で出していた Golint が deprecated/frozen しました。 https://github.com…

CAMPHOR- DAY 2021 を開催しました

こんにちは、 CAMPHOR- 運営の @kmconner です。 3/27 に CAMPHOR- DAY 2021 を開催しましたので当日の様子をお伝えします! 今年も昨年同様に YouTube Live 上で開催しま […] The post CAMPHOR- DAY 2021 を開催しました first appeared on CAMPHOR- Blog.

GoでFunctional Options Patternを使うとモックで引数の比較ができない問題に対応したい

この記事は Zenn でも公開されています。 https://zenn.dev/sanpo_shiho/articles/c06f6b156029a5 TL;DR モックしている関数が Functional Options Pattern…

メルカリのインターンで3ヶ月バックエンドエンジニアとして働いた

こんばんは 今年の 1 月中頃〜4 月中頃の 3 ヶ月間、メルカリでバックエンドエンジニアのインターン生として勤務していました。 この記事ではメルカリで何したん?っていう話を書きます。 技術スタック メルカリでは多くのマイクロサービスに Go…

Goで大量のモックをより統一的に管理し、もっと高速に生成したい!そうだ!!gomockhandlerを使おう!!

この記事は mercari engineering で公開されています。 Go で大量のモックをより統一的に管理し、もっと高速に生成したい!そうだ!!gomockhandler を使おう!!

ブログをリニューアルした

みなさんお久しぶりです。 この度ブログをリニューアルしました。

gomockを完全に理解する

この記事は 3/27 に開催されたCAMPHOR- DAY内で発表した内容を元にした記事です。 後日アーカイブが公開されるはずなので興味のある方はそちらをご覧ください。 当日使用したスライドはこちらです gomock 完全に理解した / I completely…

DeNAのエンジニアの方をお招きし、Goのテスタビリティに関するハンズオンを開催しました!

こんにちは、CAMPHOR-運営のさんぽしです 3/6にDeNAのエンジニアの方をお招きして「テスタビリティの高いGoのAPIサーバを開発しよう」と言うハンズオンのイベントを開催しました。 イベントのconnpassペー […] The post DeNAのエンジニアの方をお招きし、Goのテスタビリティに関するハンズオンを開催しました! first appeared on CAMPHOR- Blog.

Gatsbyでさくっと自作ブログを作った

こんにちは。 Gatsby にブログを乗り換えてみたよ、という記事です。前回の記事はこちら ↓ Hugo でさくっと自作ブログを作った このように去年の 9 月から Hugo…

Goでビットを利用したフラグ管理を行う実装パターン

今回は Go でビットを利用してフラグ管理を行う際の実装パターンを紹介します go/tools のssa.BuilderModeはこの方法を用いて実装されています。 (というかこの BuilderMode…

NTT Performance Tuning Challengeに参加したこの日、人類は思い出した。再起動試験の存在を。奴らに最終スコアが支配されている恐怖を。

こんばんは、さんぽしです。 タイトルは打ち上げに送られてきたビールをたくさん開けた後の僕が勢いでつけたようです。プレモルがいっぱい送られてきて 💕 になりました。 2/6 に NTT Performance Tuning Challenge に参加してきました。ISUCON…

2021年1月の雑振り返り&2月の雑目標

こんにちは、さんぽしです。 一時期 note で毎月の振り返りを出してたんですけど飽きてやめちゃってました。今年は頑張って続けるぞという思いがあります。(飽きっぽいのでまたすぐやめるかも ということで 2021 年 01 月の振り返りです。 OSS pipecd 去年の CA…

2020 年の振り返り & 2021 年の抱負

お久しぶりです @km_conner です。 この記事では 2020 年の振り返りをしつつ、2

CyberAgentでOSS「PipeCD」の開発をしてきた

こんばんは 12/1 - 12/25 で Cyber Agent の就業型インターン CA Tech Job に参加していました。 今回、OSS である継続的デリバリーツールPipeCDの開発を行いました。配属先は Developer Productivity…

2020 年の CAMPHOR- 総括  〜この時代に「リアル」なコミュニティを作り続ける意味〜

この記事は、CAMPHOR- Advent Calendar 2020 25 日目の記事です。 こんにちは、CAMPHOR- 10 期代表の @p1ass です。 今年も多くの方に Advent Calendar を書い […] The post 2020 年の CAMPHOR- 総括 〜この時代に「リアル」なコミュニティを作り続ける意味〜 first appeared on CAMPHOR- Blog.

2020年やったことを振り返る

こんにちは、さんぽしです。 この記事はCAMPHOR- Advent Calendar 2020の 2…

Phoenixにおける現代的なアーキテクチャを考える

この記事はElixir Advent Calendar 2020の 20 日目、CAMPHOR- Advent Calendar 2020の 18 日目の記事です。 この記事では DDD の思想を取り入れ、Phoenix の恩恵を受けられるようある程度の Phoenix…

CAMPHOR- VPSのコンテナロギングを支える技術

この記事はCAMPHOR- Advent Calendar 2020の 17 日目の記事です。 11 月の終わり頃、個人的にインターンとインターンの合間で暇していた時期に CAMPHOR-のサーバーに Grafana/Loki を導入しました。 この記事では、Grafana…

MakeをPythonのタスクランナーとして使う

この記事は Kyoto University Advent Calendar 2020 - Adventar と CAMPHOR- Advent Calendar の16日目の記事です。 こんにちは、ほないです。今年も残り半月、アドベントカレンダーも後半に入っていますね。

学生起業して思ったこと

この記事は、CAMPHOR- Advent Calendar 2020 の10日目の記事です。 こんにちは、あたらんです。大学では情報学を学んでいます。 何をしていたのか 5月から9月まで、札幌ToGoという札幌でテイクアウトを予約してオンライン決済できるサービスを運営していました。4月に高校の友人に誘われて開発に参加しました。営業していたレストランの関係から5月の初めにリリースすることが決まっていましたが、僕が参加したときは要件や仕様すらしっかり決まっておらず、なかなかに炎上プロジェクトでした。が、ビジネスとして0からサービスを開発したことがなかったこともあって、「やりきったらインターンの選考とかでアピールできそう」という軽い気持ちで参加することにしました。 サービスの概要 サービス内容はマクドナルドのモバイルオーダーに近いと思います。まず、ユーザーは札幌ToGoのサイトを訪れ、検索ボックスやマップからテイクアウトできるお店やメニューを探し、カートに追加します。受け取りたい時間を選んで決済を行うとお店に通知され、お店が注文を承認するとユーザーに承認されたことと受け取り時間、受け取り場所が通知されます。ユーザーは受け取り時間にお店で商品を受け取ります。お店がユーザーに商品の受け渡しを完了すると、代金が送金されます。決済の部分はStripeを使用し、お店の通知や承認などのインターフェースはLINE bot、ユーザーへの通知はメールを使いました。 5月6月はこの活動がとても楽しく、前期は10単位ぐらい落としました。テイクアウトがタイムリーな話題だったこともあり、テレビの取材を受けたり接点のない人たちが使ってレビューしてくれていたりしてとても刺激的な経験でした。 次のサービス ただ、夏休みに僕がインターンに行っていて開発にほとんど参加できず、UI/UXなどの改善があまり行えませんでした。注文数が伸び悩んでいることや、menuやUber Eatsなどの似たようなサービスが札幌に進出することもあり、新しいサービスをやろうという話になりました。 いくつかの新しいビシネスモデルを考え、需要や実現可能性を検証しました。例えば、支払い形態を変えてみて(サブスクリプションなど)2週間ほどコワーキングスペースの会員に使ってみてもらい意見を集めたり、企業向けのサービスにして社食として使ってもらうことを考えたりしました。しかし、実際にサービスを開発してリリースすることはできませんでした。 コミュニケーション 新しいアイディアを形にできなかった理由はいくつかあると思います。法律の問題や競合との兼ね合い、お金の問題、etc… しかし、最も大きかったのは チーム内のコミュニケーションの不足 だと思っています。Discordで定期的にミーティングはしていましたが、知らない間に意思決定が進んでいたり、意思決定の経緯が分からないことがしばしばありました。これによって新しいアイディアに対するチーム内での認識の齟齬や、サービス内容に対する共感の不足がありました。最終的に、どうやってチームに合ったビジネスモデルを見つけるかオフラインで話し合いました。そこでよく話し合ったところ、「サービス内容はそれほど重要ではなく、起業によって社会に大きい影響を与えたい」、「共感する課題を解決できるサービスを作りたい」、「面白い技術に触れたい」など、それぞれこの活動に参加している目的が全く違いました。結局一旦解散することになり、札幌ToGoも閉じることにしました。 さいごに 結局「方向性の違い」というよくある解散理由でしたが、始めからしっかりコミュニケーションをとっていればもっと本質的な議論ができ、チームに合ったビジネスモデルも見つかったかもしれないなと思っています。もしくは、サービスへの共感とか深く考えずにとりあえずやってみる精神が大事なのかもしれません。札幌ToGoはそうやって開発していました。なにはともあれ、開発経験という意味でもいい経験になったし、自分が本当にやりたいことは何なのか見つめ直すいい機会になったと思います。

Comet.ml で機械学習のログをクラウドに保存する

この記事は CAMPHOR-アドベントカレンダー2020 6日目の記事です。 みなさんこんにちは、ほないです。 私は今年度から大学で自然言語処理の研究に取り組んでいて、データセットを作ってニューラル言語モデルをトレーニングして評価する機会がたくさんありました。 最近はPyTorch, TensorFlow, scikit-learnなど様々な機械学習フレームワークによって、ニューラルネットワークモデルの実装が簡単に行えるようになっています。

タスクバーからツイートしたい!

これは CAMPHOR- Advent Calendar 2020 の5日目の記事です 皆さんこんにちは @kmconner です! 今回

論文のPDFから図を自動で抽出する

PDFの構造を使って、論文のPDFから論文の図を抽出します。

【Hack the Box write-up】Sunday

筆者は Hack the Box 初心者です。 何か訂正や補足、アドバイスなどありましたら、コメントか Twitter までお願いします。 さんぽし(@sanpo_shiho) | Twitter また、今回の記事はいつにも増して雑になってます:pray…

【Hack the Box write-up】Buff

筆者は Hack the Box 初心者です。 何か訂正や補足、アドバイスなどありましたら、コメントか Twitter までお願いします。 さんぽし(@sanpo_shiho) | Twitter cheat sheet 以下で cheat sheet…

Optional Chaining と Nullish Coalescing

Optional Chaining と Nullish Coalescing ES2020, TypeScript 3.7 から導入された記法。 node では 13系からオプション指定をすることで (--harmony)、14系からは標準で使用できるようになっている。 記法 項目 記法 Optional Chaining ?. Nullish Coalescing ?? Optional Chaining 挙動: プロパティを取るチェーンの途中でエラーを出さず、最終的に取れればそれを、取れなければ undefined を返す 例えば以下のコードにおいて optionalChaining.js const users = [ { id: 1, name: 'sample user', career: { university: 'Hoge大', }, }, { id: 2, name: 'invalid user', }, ] users.forEach(user => console.log(user.name, user.career.university)); users[1] の user.career.university にアクセスしようとすると TypeError: Cannot read property 'university' of undefined というエラーが起こる。 user.career までなら undefined が帰ってくるが、user.career.university までアクセスしようとすると怒られる。 これを何重に行っても怒られず、そのチェーン先プロパティが存在しない場合に、常に undefined を返してくれるようにするのが Optional Chaining である。 最後の行の . を ?. とするだけで、その挙動になる。 optionalChaining.js users.forEach(user => console.log(user.name, user?.career?.university)); // 実行結果 // sample user Hoge大 // invalid user undefined Nullish Coalescing 挙動: null か undefined の場合のみ右側を評価し、そうでない場合は左側の被演算子を返す 例えば以下のようなコードがあったとする。 nullishCoalescing.js const user = { id: 1, name: 'sample user', career: { university: 'Hoge大', high_school: null, }, } console.log(user.career.high_school || '高校登録なし') ただし、|| は falsy な値すべてを false 扱いしてしまう。 false "" 0 undefined null そうではなく、純粋に左側の被演算子が null (存在しないという意味) か undefined (定義されていない) の場合に、右側を評価したい場合 Nullish Coalescing が有効である。 そしてそれは先ほどのコードの || を ?? に書き換えるだけで完了する。 nullishCoalescing.js const user = { id: 1, name: 'sample user', career: { university: 'Hoge大', high_school: null, }, } console.log(user.career.high_school ?? '高校登録なし') // => 高校登録なし 結論 今後ネストしたプロパティにアクセスするときは Optional Chaining null または undefined という判定をしたいなら Nullish Coalescing を使うと、短く簡潔にかける。

RECRUIT Job for Student 2020 ~Engineer/Data Specialist~に参加してきた

こんにちは 10/5 - 11/13 で RECRUIT Job for Student 2020 ~Engineer/Data Specialist~ に参加していました。 RECRUIT Job for Student 2020 ~Engineer/Data…

ElixirでDialyzerを用いた静的解析を行い、型(Typespec)を最大限に活用する

Elixir には静的解析ツールの Dialyxir というものが存在します jeremyjh/dialyxir - GitHub Mix tasks to simplify use of Dialyzer in Elixir projects. Dialyxir…

【Elixir】moxを使用してmock用いたテストを書く

5 年前の José のこの記事、みたことがある人も多いのではないでしょうか Mocks and explicit contracts 内容を超意訳すると「テストのために特定のモジュールに対する mock…

Kustomizeを利用しているプロジェクトでArgoCD Resource Hooksを用いて複数リソースで同一Jobを使用したいときに詰まるポイント

こんにちは ArgoCD を使用している Kustomizeでリソースを管理している ArgoCD Resource Hooksで同じ Job を複数のリソースで使用したい 2020/11/08 現在で上記の条件下に存在する問題の、詰まり bility…