タグ

ブックマーク / int128.hatenablog.com (77)

  • Certified Kubernetes Administratorを取得した - GeekFactory

    Certified Kubernetes Administrator(CKA)を取得しました。すでに多くの受験記があるので、他の人が書いていないことをまとめてみます。 きっかけ いろんな言い訳でCKAの申し込みを先延ばしにしてきたのですが、以下の条件が揃ったので受験するに至りました。 会社で受験費用が支給される(同僚が事務処理をやってくれた) シェアオフィスが営業を再開したので個室を確保できる 勉強時間を捻出できた やる気が出た 事前準備 会社が契約しているシェアオフィスで個室を借りました。自宅からシェアオフィスまでは3.5km程度なので、自転車で行くことにしました。近くに駐輪場があるかどうかや個室が受験要件を満たすかどうかを確認しておきたかったので、前々日にリハーサルを行いました。まあシェアオフィスに着いたら普通に仕事していましたが。 試験は24時間前までに申し込む必要があります。試験の

    Certified Kubernetes Administratorを取得した - GeekFactory
    y0sh1kaw
    y0sh1kaw 2020/06/08
  • 特定URLへのアクセスを契機としたHTTPサーバのGraceful Shutdown - GeekFactory

    Goで特定のURLへのアクセス(例:GET /shutdown)を受けたらHTTPサーバを停止するにはどうすればよいか考えてみました。 HTTPサーバを停止する http.Server にはGraceful Shutdownを行う Shutdown メソッドがあります。/shutdown へのリクエストを受けた契機で Server.Shutdown を実行すれば停止できそうです。 func main() { m := http.NewServeMux() s := http.Server{Addr: ":8000", Handler: m} m.HandleFunc("/shutdown", func(w http.ResponseWriter, r *http.Request) { s.Shutdown(context.Background()) }) if err := s.Liste

    特定URLへのアクセスを契機としたHTTPサーバのGraceful Shutdown - GeekFactory
    y0sh1kaw
    y0sh1kaw 2018/04/04
  • spring.config.locationを複数指定した場合の優先順位 - GeekFactory

    Spring Bootで --spring.config.location に複数のプロパティファイル(またはYAMLファイル)を指定した場合の優先順位を調べてみました。 TL;DR --spring.config.location にはカンマ区切りで複数のプロパティファイルを指定できる。 後に指定したプロパティファイルで値が上書きされる。 例えば a.yaml,b.yaml,c.yaml を指定した場合、 c.yaml の定義値、 b.yaml の定義値、 a.yaml の定義値の順に検索される。 試してみた Spring Boot 2.0.0.M7で試してみました。 @ConfigurationProperties("foo") @RestController class Example { var bar: String = "default.bar" var baz: String

    spring.config.locationを複数指定した場合の優先順位 - GeekFactory
  • KeycloakのSAML SSOでGitLabやMattermostにログインする - GeekFactory

    KeycloakGitLabでSAML SSOを設定する方法を説明します。ユーザ管理をKeycloakで行いながら、GitLabMattermostにSSOできるのでとても便利です。 TL;DR Keycloakはオープンソースの統合ID管理ツールです。OpenID ConnectやSAMLによる認証を提供しています。(こちらの記事が参考になります) GitLabはオープンソースのソースコード管理ツールです。OmniAuth IntegrationでソーシャルアカウントやSAMLによるSSOに対応しています。 KeycloakGitLabの連携にはSAMLを利用します。 Keycloakの設定 Keycloakで新しいClientを追加します。認証連携したいユーザがいるRealmで作業してください。 Client ID: https://gitlab.example.com *1 C

    KeycloakのSAML SSOでGitLabやMattermostにログインする - GeekFactory
    y0sh1kaw
    y0sh1kaw 2017/12/23
  • CloudFront→ELB→EC2構成におけるIPアドレスのアクセス制御 - GeekFactory

    AWSでCloudFront → ELB → EC2の構成を採用する場合に、IPアドレスによるアクセス制御を行う方法を説明します。 方法1: EC2上のWebサーバによるアクセス制御 CloudFrontやELBはリクエストを受けると x-forwarded-for ヘッダにクライアントのIPアドレスを付与します。 このヘッダを利用してIPアドレスによるアクセス制御を実現できます。 CloudFrontとELBを組み合わせる場合は下記のようなヘッダを受け取ります。 クライアント ↓ CloudFront ↓ x-forwarded-for: <クライアントのIPアドレス> ELB ↓ x-forwarded-for: <クライアントのIPアドレス>, <CloudFrontエッジのIPアドレス> EC2 クライアントがヘッダを偽装した場合も考慮しておきましょう。もし、クライアントが x-f

    CloudFront→ELB→EC2構成におけるIPアドレスのアクセス制御 - GeekFactory
    y0sh1kaw
    y0sh1kaw 2017/09/14
  • SetEnvIfでヘッダがない場合の条件の書き方 - GeekFactory

    ApacheのSetEnvIfでヘッダがない場合の条件の書き方を調べてみました。下記のように正規表現に ^$ を指定すると、ヘッダなしにマッチしてくれます。 # x-forwarded-forヘッダがない場合、環境変数noelbを設定する SetEnvIf x-forwarded-for "^$" noelb 例えば、ELBを経由するアクセスのみ認証を有効にしたい場合は下記のように設定します。 Satisfy Any # 認証 AuthUserFile /example/.htpasswd AuthName Example AuthType Basic require valid-user # ELB経由でないアクセスは認証を外す SetEnvIf x-forwarded-for "^$" noelb Order Deny,Allow Deny from all Allow from en

    SetEnvIfでヘッダがない場合の条件の書き方 - GeekFactory
    y0sh1kaw
    y0sh1kaw 2017/04/24
  • Jenkinsfileによるジョブ管理のメリットと実例 - GeekFactory

    ジョブの設定をJenkinsfileで管理し始めてから3か月ぐらい経ったので、知見をまとめてみます。 Jenkinsfileを使うメリット Jenkinsの画面でジョブを管理していると以下のような問題が起きることが多いと思います。 誰かが勝手にJenkinsの設定を変更して動かなくなった ジョブ設定を別リポジトリに横展開したいけど、ポチポチ設定するのが面倒 JenkinsfileをGitで管理することで、以下のメリットがあります。 いつ、誰が、なぜジョブ設定を変更したのか後から調べられる Pull Requestでジョブ設定の変更をレビューできる ブランチを使ってジョブ設定を試行錯誤しやすい Jenkinsの運用ポリシー 前項のメリットを実現するには、Jenkinsを以下のポリシーで運用することが望ましいでしょう。 Jenkinsの設定は最小限に抑える なるべく画面からジョブ設定を変更せず

    Jenkinsfileによるジョブ管理のメリットと実例 - GeekFactory
  • 開発チームがプロダクトコードを書き始めるまでに準備すること - GeekFactory

    頭の中を整理するため、いわゆるZero Feature Releaseに必要なことをまとめてみました。開発チームがプロダクトコードを書き始めるまでに作っておくとよいものです。 ソースコードリポジトリ(例:GitHub) エディタ設定(例:editorconfig) ビルドツール(例:Gradle Wrapper) ビルドスクリプト(例:build.gradle) フレームワーク(例:Spring Boot) テスティングフレームワーク(例:Spock) 静的解析ツール(例:Sonar) ドキュメンテーションツール(例:AsciidoctorDBマイグレーションツール(例:Flyway) CIスクリプト(例:Jenkinsfile) CIとソースコードリポジトリの連携(例:Jenkins Webhook) CIとチャットの連携(例:Slack) 成果物の公開場所(例:GitHub Rel

    開発チームがプロダクトコードを書き始めるまでに準備すること - GeekFactory
    y0sh1kaw
    y0sh1kaw 2016/11/11
  • docker-gitbucketでExternal DBやPrefixなどを設定する - GeekFactory

    DockerでGitBucketを立ち上げる時は f99aq8ove/docker-gitbucket というイメージを利用しています。GitBucket最新版への追随が早いので重宝しています。 github.com このたびPRがマージされたので、環境変数でExternal DBやPrefixなどを設定できるようになりました。例えば、下記のdocker-compose.ymlはPostgreSQLを利用します。 version: "2" services: gitbucket: image: f99aq8ove/gitbucket environment: GITBUCKET_OPTS: --prefix=/gitbucket GITBUCKET_DB_URL: jdbc:postgresql://db/gitbucket GITBUCKET_DB_USER: gitbucket GIT

    docker-gitbucketでExternal DBやPrefixなどを設定する - GeekFactory
    y0sh1kaw
    y0sh1kaw 2016/10/11
  • Multibranch PipelineによるJenkinsとGitBucketの連携 - GeekFactory

    JenkinsのMultibranch Pipelineを利用するとCIで以下ができるようになります。 ビルドの設定を Jenkinsfile に書いてバージョン管理できる。 リポジトリへのpushやPull Requestのマージを契機にジョブを実行できる。 パイプラインでビルドフローを分かりやすく記述できる。 (2017/10/3追記) GitBucketの公式Wikiに設定方法を書きました。 github.com 以下の情報は古いため、GitBucketの公式Wikiを参照してください。 JenkinsとGitBucketを連携させるにはGitBucket Pluginを使う方法がありますが、GitBucketの仕様によりPull Requestのマージを契機にジョブを実行できない制約があります。Multibranch Pipelineを使うとPull Requestのマージを契機に

    Multibranch PipelineによるJenkinsとGitBucketの連携 - GeekFactory
  • Jenkins GitHub PluginをGitBucketで利用する - GeekFactory

    JenkinsとGitBucketの連携にGitHub Pluginが使えるか調べてみました。GitBucket APIGitHubと互換性があるので、理論上はGitHub Pluginが使えるはずです。 結論 GitHub互換のURL形式でリダイレクトを設定することで、GitHub PluginでもGitBucketのWebhookを受けてジョブを実行できました。 ただし、GitHub PluginでできることはGitBucket Pluginとほぼ同じです。GitHub PluginのメリットはPipelineに対応していること、CIのステータスを設定できることでしょうか。 方法 ジョブ設定のGit URLに https://gitbucket.example.org/user/repo.git の形式を指定します。これによってGitHub PluginがWebhookを認識できるよ

    Jenkins GitHub PluginをGitBucketで利用する - GeekFactory
  • VirtualBoxのグラフィックスコントローラをvmsvgaに変更する - GeekFactory

    VirtualBoxでゲストOSを実行する場合、通常はVirtualBoxに対応したディスプレイドライバをゲストOSにインストールする必要があります。ゲストOSが特殊で標準のディスプレイドライバしか利用できない場合は低解像度しか利用できませんが、もしゲストOSがVMwareのディスプレイドライバを持っている場合、グラフィックスコントローラをVMware仕様に変更することで高解像度を利用できる可能性があります。 最近のVirtualBoxにはVMware仕様のグラフィックスコントローラも組み込まれており、コマンドラインからVM設定を変更することで利用できます。 VBoxManage コマンドのヘルプを見ると、以下のように --graphicscontroller オプションで vmsvga が選択できることが分かります。 % /Applications/VirtualBox.app/Cont

    VirtualBoxのグラフィックスコントローラをvmsvgaに変更する - GeekFactory
  • あさりのリゾット - GeekFactory

    あさりのリゾットを作ったらめっちゃ美味しかったのでメモを残します。 材料(2人分) 材料 数量 米 1合 あさり 1パック たまねぎ 半玉 にんにく 適量 じゃがいも 1玉 白ワイン 200ml 水 100ml バター 適量 塩 適量 黒胡椒 適量 オリーブオイル 大量 作り方 まず、あさりを酒蒸しにします。 あさりは2時間ぐらい砂抜きしておきます。 にんにくをみじん切りにします。 フライパンにあさり、にんにく、白ワイン150ml、塩、バター、オリーブオイル、黒胡椒を入れて、蓋をして5分ほど蒸します。 ざるで具材とスープに分けます。 スープに水を加えて、弱火で保温しておきます。 それから、じゃがいもを蒸します。 じゃがいもを適当な大きさに切ります。 ラップで包んで電子レンジで蒸します。800Wで2分程度です。 じゃがいもと並行して米を炒めていきます。 フライパンにオリーブオイルを引いて、塩

    あさりのリゾット - GeekFactory
    y0sh1kaw
    y0sh1kaw 2016/09/05
  • ITのビジネス価値を最大化するには - GeekFactory

    2016年になってもアジャイルはテストをしないとか、計画を立てないとか、1日10回デプロイするための技法といった誤解が広まっているのは残念すぎる。 まず、ITのビジネス価値を最大化するという視点が必要なはず。事業の売上や費用を改善するためにシステムを活用するのであって、システムを作ること自体は目的にならない。 事業を取り巻く環境は変化が速いので、ITもそれに合わせて変えていく必要がある。1年後にシステムが完成したら事業環境が変化していて役に立たないかもしれない。投資が無駄になるリスクを抑えるために、数週間で軌道修正を繰り返す。 だから、事業環境の変化にITを対応させるためにアジャイルが必要、という話の流れになるはず。システムを作るためにアジャイルが必要とはならない。事業上の必要性からアジャイルを選択する。 ここまできて初めて、ITのビジネス価値を最大化するためにスプリントや自動デプロイとい

    ITのビジネス価値を最大化するには - GeekFactory
    y0sh1kaw
    y0sh1kaw 2016/06/22
  • 個人的レトロスペクティヴ - GeekFactory

    2015年の振り返り。 仕事 銀座で働いてた マスターになったりセンセイになったりと忙しい一年だった 企画や開発のチームが最大限の力を発揮できるように悩み抜いた一年だった 聞くこと、描くこと、伝えることでコミュ力が鍛えられた一年だった 転職せずに他の会社で働くという貴重な経験ができてよかった オープンソース 全体的にあまり時間を割けなかった Gradle SSH PluginやGroovy SSHにIssueやPRをいただいたもののあまり対応できなかった Gradle UpdateにWeb UIを追加したかった Go/ES6/Swift/AppleScriptなど言語の幅が広がった 社外勉強会で発表する機会を作れなかった 家庭 娘が生まれて初めての経験の連続だった 遠距離の里帰りで十分にコミュニケーションが取れず、すれ違いが多かった 「見えないものは不安になる」というアンチパターンを回避で

    個人的レトロスペクティヴ - GeekFactory
    y0sh1kaw
    y0sh1kaw 2016/01/05
  • アジャイルな家計の見積もりと計画づくり - GeekFactory

    家庭を支える技術 Advent Calendar 2015の13日目です。 www.adventar.org 記事では、我が家の家計を支える技術を紹介します。昨年も家計を支える技術という記事を書きましたが、今年は環境の変化に対応したグレードアップ版をお届けします。タイトルは有名書籍からパクりました。どうぞお許しください。 ちなみに、業ではソフトウェア開発のプロセス改善を生業としているので、家庭のプロセス改善も好きです。 なお、記事では手元に入ってくるお金のことを収入と表記します。正確には所得(税引き後のお金)と給付金(産前産後休業や育児休業の期間中に支給されるお金)ですが、文章が堅くなってしまうので収入と書きます。 背景 今年の秋に子どもが生まれました。 これまで夫婦の収入に大きな差がなかったため、それぞれ収入を懐に入れつつ生活費を折半する運用としていました。しかし、産前産後休業や育

    アジャイルな家計の見積もりと計画づくり - GeekFactory
    y0sh1kaw
    y0sh1kaw 2015/12/14
  • certtoolコマンドとテンプレートで簡単に証明書を作る - GeekFactory

    Apache httpdやOpenVPNなどで自前のSSL証明書を使うには、一般に以下の手順が必要になります。 CAの秘密鍵を生成する。 CAの自己署名証明書を生成する。 サーバの秘密鍵を生成する。 サーバのCSRを生成してCAに送る。 CAで証明書を発行する。 クライアントの証明書が必要な場合は3〜5を行う。 実際にこれらの手順を行うにはopensslコマンドで煩雑な手順が必要になります。また、途中で間違えた場合はDN(Distinguished Name)を何度も入力する必要があり、面倒でミスを誘発しやすい作業です。 そこで、gnutlsパッケージに含まれるcerttoolコマンドを使うと、あらかじめDNやKey Usageを記述したテンプレートファイルから証明書を生成できます。 certtoolによる秘密鍵や証明書の生成 certtoolコマンドを使うにはgnutlsパッケージをイン

    certtoolコマンドとテンプレートで簡単に証明書を作る - GeekFactory
    y0sh1kaw
    y0sh1kaw 2015/07/28
  • コマンドラインで通知メッセージを表示する - GeekFactory

    Mountain Lion以降のOS Xでは、AppleScriptを使って通知センターにメッセージを表示できるようになりました。下記のような関数定義を .zshrc に書いておくと便利です。 function display_notification () { osascript -e 'on run argv display notification current date as text with title item 1 of argv end run' -- "$*" } function with_display_notification () { "$@" display_notification "($?)" "$@" } 下記を実行するだけで簡単に通知メッセージを表示できます。 display_notification ほげほげ 複数引数もいけるよ 下記のようにコマンド

    コマンドラインで通知メッセージを表示する - GeekFactory
  • git statusを利用したリポジトリ情報のプロンプト表示 - GeekFactory

    zshでGitのステータス情報をプロンプトに表示するにはvcs_infoを使う方法が一般的ですが、vcs_infoで得られる情報には限りがあります。そこで、git statusを使ってプロンプトを表示する方法を調べてみました。なお、OS XのGit 2.3.2で確認しています。 git statusで得られる情報 git status --porcelain --branch を実行するとブランチ、ワーキングツリー、インデックスの状態が得られます。--porcelainを付けることで機械処理に適したフォーマットが得られます。このコマンドの実行結果は下記の2つの部分で構成されます。 ローカルブランチの状態(1行目) ローカルブランチの状態 表示 リモートブランチと同期している ## master...origin/master リモートブランチより古い ## master...origin/

    git statusを利用したリポジトリ情報のプロンプト表示 - GeekFactory
  • Docker Machineで既存サーバにDockerホストを構築する - GeekFactory

    Docker MachineはDockerホストを構築するためのツールです。VirtualBoxやVMwareなどの仮想化基盤、AWSやGCEなどのクラウドに対応しており、環境構築からDockerクライアントの接続設定まで自動的に行ってくれます。これによって気軽にDocker環境を調達できるようになります。 既存サーバにDockerホストを構築する Docker Machineでは、ドライバにGenericを指定することで、既存のサーバにDockerホストを構築することも可能です。Genericを指定したときにどんなコマンドが実行されるのか調べてみました。 下記のコマンドを実行すると、指定したサーバに対してSSH経由で一連の環境構築コマンドが実行されます。 docker-machine -D create --driver generic --generic-ip-address some

    Docker Machineで既存サーバにDockerホストを構築する - GeekFactory