nがひとつ多い。

えぬなおの技術的なことを書いていくとこ。

2019-01-01から1年間の記事一覧

【Scala】catsのValidatedの使い所、及びValidatedNecとValidatedNelについて

初めに 本記事は Scala Advent Calendar 2019の12日目の記事の代行です。 仕事でなんとなく使っていた、 Scalaの関数型ライブラリのcatsのバリデーションモナドのValidatedNecとValidatedNelの違いについて勉強していきます。 typelevel.org catsのValidate…

【Kubernetes】KubernetesのCronJobのcronスケジュールはどう管理されているのか?

はじめに 本記事は Kuberenetes Advent Calendar 2019の17日目の記事です。 Kubernetesのリソースの中に、定期的に揮発性のあるジョブを生み出すCronJobについての記事です。 はじめに 本題 ソースを読む。 syncAll syncOne getRecentUnmetScheduleTimes cro…

【kotlin】kotlinで書いたスクリプトを叩きたい人生だった

はじめに 本記事は Kotlin Advent Calendar 2019の9日目の記事です。 はじめに この記事で書くこと ①ktsファイルを書いて実行する。 ②kotlinで書いてgradleで叩く。 ③kscriptを使う。 おわりに この記事で書くこと kotlinのプロジェクトを管理していると、 …

【kotlin】kotlin製ORM Exposed小技集

はじめに 本記事は Kotlin Advent Calendar 2019の8日目の記事です。 Jetbrain社製のkotlinで書かれたORMについて話していきます。 github.com はじめに Exposedの軽い紹介 やっていき そもそもSELECT文で取り出したEntityをData Classに射影するのどうする…

kotlinのコードにReturn Resultを組み込む

はじめに 本記事は Kotlin Advent Calendar 2019の1日目の記事です。 今回は前回当該ブログでも紹介しました、https://github.com/michaelbull/kotlin-resultについて事例をつけてご紹介させていただければと思います。 はじめに michaelbull/kotlin-result…

【Kotlin】kotlinでmichaelbull/kotlin-resultを使うススメ

関数型プログラミングによくあるResultって便利だよね 例えばRustでは標準で搭載されているFunctionalなエラーハンドリングの表現の一つで、 fn hoge() -> Result<String, Error> { match huga() { 0 -> Ok("OK".to_string()) _ -> Err(Error("error occured")) } } みたい</string,>…

【Vue.js】【Nuxt.js】cookie-universal-nuxtで複数の値をcookieのキーとする。

cookie-universal-nuxt? nuxtでcookieを使うライブラリ www.npmjs.com cookieを入れるときはこんな感じ export default { created() { this.$cookies.set('isVisited', true, { path: '/', maxAge: 60 * 60 * 24 * 7 }) } } もらうときは data () { return …

【Scala】関数型初心者のカリーの勉強

カリー この事らしい。 def curry[A,B,C](f: (A, B) => C): A => (B => C) = (a: A) => (b => f(a, b)) // curry: [A, B, C](f: (A, B) => C)A => (B => C) 異なる型パラメータA,B,Cに対してA,Bを引数に取り戻り値がCとなるような関数をAを引数にして戻り値…

botkubeへのプルリクが無事マージされた

botkube? botkubeはinfracloud社が出している、kubernetes上で動くChatOpsをするためのbot。k8s上での必要最低限欲しいイベントをフックしてslackとかに投げてくれたり、 @botkube get node みたいにkubectlみたいにchat上でコマンドを投げればその情報を取…

【Rust】連続した文字列を1個にする。

TL;DR fn main() { println!("{}", space_replacer("hello world dayo e?".to_string().as_mut_str())); } fn space_replacer(src: &mut str) -> String { let dst = &mut src.replace(" ", " "); match dst.find(" ") { Some(_) => { space_replacer(dst) }…

【Rust】【Docker】Cargoプロジェクトで素直に書いたDockerfileをdocker buildするとソースが書き換わるたびにフルビルドが走って滅茶苦茶遅いのを対策する方法を改良してもっとキャッシュさせる。

目次 目次 ソース 問題点 おさらい 対策:ダミーのCargo.toml Cargo.lockを作ってDockerfileに仕込んでおく。 dummy-cargo-toml-createrは何をしている? 最後に ソース RustのCargoプロジェクトで素直に書いたDockerfileをdocker buildするとソースが書き換…

【Kubernetes】【Network】GKEの1.14で追加されるIPマスカレード出来るアドレス範囲について。

ある日、こんな記事が。 Release notes (Rapid channel) | Kubernetes Engine Documentation | Google Cloud GKE Sandbox is supported on v1.14.x clusters running v1.14.2-gke.2 or higher. The following IP ranges have been added to default non-IP-m…

【AWS】【Python】Botoでs3の署名バージョン4でAPI叩くのをソースコード変えるだけでやる

TLDR; botoを対応バージョンにしてから、 $ pip install -U boto==2.49.0 boto.config で指定してやる。 if not boto.config.get('s3', 'use-sigv4'): boto.config.add_section('s3') boto.config.set('s3', 'use-sigv4', 'True') s3 = boto.s3.connect_to_r…

【Docker】指定したDockerのイメージを全部消す

TL;DR docker-rmi-all(){ if [ -z ${1} ]; then echo "Usage: ${0} <docker image name>" return 1 fi docker images | grep ${1} | tr -s ' ' | cut -d ' ' -f 2 | xargs -I {} docker rmi ${1}:{} } docker image prune? docker image pruneだと「システムに利用されてないイ</docker>…

【Rust】Twitterのstream apiの現状とRustでの実装について

とある嫁案件が事の発端 要件と成果物 要件 成果物 Twitterまわり TwitterのStreamって廃止されたんじゃないの? Twitter APIを叩くのに開発者用のアカウントを作らなきゃいけない。 Rustまわり 使ったライブラリについて 420コード 420コードへの対処 420コ…

【zsh】ZshrcやZshのプラグインの開発環境のdockerイメージを作った。

Zshrcの開発環境・・・? zshrcやzshのプラグインの開発環境として、dockerイメージを作成した。 github.com hub.docker.com まぁなんで作ったかって言ったらなかったからだけど。 Dockerfile # 1st stage, for development container FROM centos:7.6.1810 …

【AWS】【Go】GoのSDK(guregu/dynamo)を使ったDynamoDBのテーブル定義とコード設計

DynamoDBとは。 DynamoDBはNoSQLで、速くてサーバレスな奴だが、詳しい説明は他所に任せたい。 www.ketancho.net dev.classmethod.jp DynamoDBをGoで扱うには。 どうやら guregu/dynamo を使ってやるのは一般的らしい。 qiita.com しかし、↑やREADMEにはINDE…

【Fluentd】fluentdでdockerのlogを直接読み込む時にfluent-plugin-dockerが使いやすい

dockerのログのデフォルトのフォーマットはjsonな事が多いね ってか今もデフォルトでjsonだっけ?とりま今現状GKEとかEKSとかECSとかで、アプリがどっかに吐いたJSON形式のログをfluentdのdaemonsetでログを見に行って出力してみるとこんな感じになってる。 …

【Go】zapで出力時のLevelに色をつける

Go

zapって? uber社が作っているgolangで使う超いけてるログドライバ。 github.com 基本というかほとんどの日本語情報は以下を見ればいい。 qiita.com 構造化されたログを吐き出す癖にあらゆる非構造化ログドライバより速いらしい。 (真面目な話、非構造化って…

【Rust】コードで理解するトレイト

はじめに 主に僕は書籍を通じてRustを勉強していたが、はっきり言って全く理解できなかったので生存期間に引き続きコードで記述する事で理解しようと思った。 Rustのモジュールの考え方について Rustは任意の型に対して通常 impl を用いて以下のようにモジュ…

【Go】Go言語で指数表記の文字列型を数値型にパースする。

Go

指数表記の文字列型???何それ? これ。 package main import ( "fmt" ) func main() { fmt.Println(float64(1000000)) //-> 1e+06 } play.golang.org goで浮動小数点数型をデフォルトではフォーマットした時に 1e+06 のように出力され、こういう表記を指…

【Rust】コードで理解する生存期間

はじめに。 Rustの言語機能の核に、所有権、参照、そして生存期間とあります。 個人的に生存期間が特に理解が難しかったので、復習がてらブログを書きます。 生存期間とは? Rustコンパイラは全ての参照型に対して、その参照の使われ方によって生じた制約を…