Kekeの日記

エンジニア、読書なんでも

Argo CDによってGKEでGitOpsをする

はじめに 最近読んだ鎌倉時代の歌人、鴨長明の『方丈記』にも ゆく河の流れは絶えずして、しかももとの水にあらず。 とありますが、私たちのソフトウェアも然りです。 毎日更新され、デプロイされ、時に不可逆に破壊され。そして、ちぐはぐな形に落ち着くま…

CircleCIでSpinnakerのデプロイメントパイプラインをデプロイする

どうも、もうすぐ大学卒業の@timtimtim1026です。 もしコメントなどがございましたらDMなり、リプライしてください。 本記事はCircleCI Advent Calendarの14日目の記事になっています。 本記事 この記事では、CircleCIを使ってSpinnakerのデプロイメントパイ…

Terraformで運用しているLineBot家計簿をGCPで使う

はじめに 私は自分で作ったLineBotを使って家計簿をつけています。 クラウドにはGoogle Cloud Platform(GCP)の無料枠を使っていて、データベースにはCloud SQL(MySQL)を使っています。 自分でデータを集めているので、以前にもApache Supersetなどを用いてデ…

Lighthouseを使ってVue.jsで書いたポートフォリオサイトを爆速化する

本記事はVue.js Advent Calendar 2018の第3日目の記事です。 はじめに **GCPの無料枠が終了したため、ポートフォリオサイトはクローズドしましたが、引き続き本記事はご覧いただけます。 私は以前、インターンシップなどの選考に備えて自分のポートフォリオ…

Github Actionsが使えるようになったので使ってみる

本記事 本記事では、少し前にアナウンスされたGithub ActionsというCIツールのようなものを実際に触ってみて、現時点での使い勝手をまとめてみようと思います。 実際に使えるようになると以下のようなタブが追加されています。 初めて使ってみる Actionペー…

Perlで現ブランチのPull RequestのURLを取得するtig用のスクリプトを書いた

本記事 私は、これまでtigでpushをするとブラウザでプルリク作成に飛ぶスクリプトを使っていましたが、現在のブランチのプルリクをみたい時があります。 今回はperlを使って、その機能を実装するスクリプトを書ければなと思います。 また、スクリプトはすべ…

Glitchを使って簡単にBotをデプロイする

本記事 本記事ではGlichというサービスを使ってアプリケーションをホスティングしてみようと思います。 無料で、かつ、簡単にデプロイできるうえに、GUI上で複数人でソースコードを変更することができる点で新しいので調査も兼ねて使っていこうと思います。 …

Rustの複数の生存期間パラメータでハマった

問題となったソースコード RustでPathcargoを使って、いろいろファイル操作をしていました。 app.rs let input_path_str = matches.value_of("input").unwrap(); let output_path_str = matches.value_of("output"); let (input_path, output_path) = utils:…

CLIツールを作る上で知っとくべき用語

cli

本記事 本記事では、CLIツールを作る時に出てくるフラグやオプション、サブコマンドなどの用語を解説することで、どんな言語でもCLIツールを開発できるようになることを目的に解説します。 用語 Command: コマンド コンピュータに命令を出すためのものです。…

Rustのcrateとmoduleについて

本記事 本記事ではRustのcrateとmoduleを解説していきます。 動機としては公式ドキュメントには簡単な説明がありましたが、実用的なものはなくて、困ったので今回記事にしようと思いました。

超絶便利!maidを使ってTaskRunnerでRustのタスクを実行する

本記事 本記事ではMarkdownでタスクランナーがかけるNode.js製のmaidというものを使ってみます。 特にmarkdownだと言語に縛られることもなく、好きな箇所で好きなように定義できるので便利です。 しかしながら、その柔軟性のためgalpやgruntなどのように高機…

ヒューズの選定方法

本記事 電源回路を作っているときに、考慮すべきがヒューズであると思います。 例えばコンセントからは日本だと100Vという非常に高電圧で電流が流れていて、回路に異常事態が起きた時は発火など重大な事故に繋がるかもしれません。 そのときにヒューズが回路…

第一原理計算と密度汎関数理論

第一原理計算とは 第一原理計算は「非経験的電子状態計算」とも呼ばれている経験に基づかない(パラメーターがない)、第一原理である量子力学を基本法則に立脚した計算手法で物性値を知るための計算手法である。量子力学とは、私たちが中学の頃に学んだ力学…

スーパーコンピュータのPortable Batch System(PBS)の使い方

はじめに はじめにいくつかの概念や用語について説明します。 スーパーコンピュータとは スーパーコンピュータは厳密の定義は存在しません。 しかし、抽象的な概念として「大規模な計算機」と私たちは認識しているかと思いますが、そのようなものです。 また…

CircleCIでOrbsを公開する

Orbsとは Orbsとはconfig.ymlに書いてあるJobやワークフローをシェアする機能になっていて、v2.1から追加された機能になっています。 シェアされたものは自身のWorkflowに取り込んで、開発スピードをあげることができます。 正式なOrbsはOrbs Registryにあり…

React、Typescript、Styled-componentでカスタマイズQRコードを作る

本記事 本記事ではQRコードを使う中で、実用的に使えるまでに必要となるまでの知識をつけて、実際にTypescirptで生成できるまでを目指します。 また、今回はReact上でやってみようと思います。

Cloud Scheduler+Cloud FunctionでCloud SQLに保存してあるLine家計簿BotのデータにBatch処理をする

本記事 私の家族は自分が作成したLineBotを使って家計簿を管理していて、毎月、だれがどのくらい使ったかを算出できる様になっています。 本記事ではGoogle Cloud PlatformのサービスであるCloud Schedulerを使ってCloud FuntionでBatch処理をしようとする記…

自動化好きの道具箱Git hook

medium.com 本記事 Gitにはhookというイベントによって発火し実行できる機能があります。 画像にもあったように、「push前にこの処理を挟みたい、、、」などのケースはたくさんあったので、皆さんもあるのではないでしょうか。 今回はそのhookを詳細に掴んで…

Freenomの無料ドメインでcert-managerを使って、GKEのIngressをHTTPS(TLS)対応する

本記事 本記事ではGKE上でホストしているアプリケーションサーバーのが使っているIngressに対してHTTPS対応をしたいと思います。 背景としては、実はハッカソン用で開発をしていたのですが決済プラットフォームを使うためHTTPSに対応しなければなりませんで…

GPUのイメージを掴む

0. はじめに 本記事では普段使っているGPUImage2をよりよく知るためにGPUの挙動を少し掴められればいいなと思って書きました。 1. GPUImage2とは GPUImage2とは Swiftで書かれたGPUアクセレーションを使って画像や動画に対して処理を行うオープンソースフレ…

DNSの仕組みとIPアドレス

DNSとはおおまかに何? 詳しいことはあとで解説します。 DNSとはDomain Name Systemの略で、例えばhttps://yahoo.co.jpがどのIPアドレスを指して、それを返すことで私たちはヤフーというサイトをみることができる。 そのようにIPアドレスという通信相手の特…

GoでHTTP APIサーバーのテストを書く

本記事 本記事はGolangのHTTP APIサーバーのテストを行なって行こうと思います。 また、うかつにハッカソンで非推奨のGolangのWAFであるIrisを使ってしまい、とんでもなく反省していますが、手法としてはどのフレームワークもだいたい同じなので、この際に包…

Dreddを使ってHTTP APIサーバーとKubernetes Serviceのテストをする

本記事 今回はAPIテストツールであるDreddを使ってHTTP APIサーバーのテストおよびKubernetes Serviceのテストをしようと思います。 テスト対象 今回はStripeSDKを使って構築した決済APIをテストしていきます。

Cloud FirestoreとRxJSを使ってLeafletでリアクティブな座席表をつくる

本記事 本記事ではCloud FirestoreとLeafletを掛け合わせてリアルタイムな座席表を作ります。 リアクティブな座席表とは、単に「誰の席か」だけではなくて「どこに誰が座っているか」を可視化できるものです。 ちょうどドキュメント型データベースを使ったこ…

リアクティブプログラミングとReactive Extentions

画像引用: https://blog.oz-code.com/reactive-wpf-part-1-introduction-reactive-extensions/ 本記事 本記事ではRxについてなるべくわかりやすく解説するつもりです。 また、私の過去の記事で注目していたメッセージシステムについてもリアクティブプログラ…

SVGのsymbol、use要素とviewBox属性の挙動

本記事 私は数ヶ月ほど前に、友人の間で作っていた個別プロジェクトのAIエンジン、インフラ、サーバーサイド、フロントエンドを担当していました。 プロダクトでは人工知能(特にニューラルネットワーク:NN)を考えていたため、プロジェクトの紹介ページでは以…

ポートフォリオサイトをVue.jsからNuxt.jsに書き換えてサーバーサイドレンダリングをする

本記事 本記事はVue.jsを使ってGoogle App Engineにホストしている静的なサイトをNuxt.jsを使って書き直そう思います。 題材は以前使った自分のポートフォリトサイトです。 keisukeyamashita.com GoogleCloudPlatform(GCP)で無料枠を使いきり画像などのコ…

Small Imageと堅牢性のためのDistroless ImageとビルドのためのBuildKitの検証

本記事 本記事ではDockerでコンテナイメージを作るときに使えるBuildKitの話とSmall Containerを作ることができるDistrolessの話をしようと思います。 以前、Building Small Containerのために使えるBuilderパターンを紹介しました。 www.1915keke.com アプ…

Knative、KubelessでServerlessFunctionを構成する

本記事 本記事では実際にKuberenetes上でKnativeとKubelessを使ってみて、使い勝手などをレビューしたいと思います。 目次 本記事 目次 なぜCloud FunctionsやAWS Lamndaではだめなの Knative Knativeとは 公式サイト 特徴 Servingとは Bulidとは インストー…

HelmからKustomizeに乗り換える!軽量で、シンプルで、使いやすい!

kustomizeを使ってみる kustomizeとは YAMLファイルを再利用可能で設定変更のしやすい宣言的管理をします。