Kohei Kondo

Kohei Kondo
C++algorithmbinary_search

二分探索の応用

皆さんご存知の二分探索。この応用について今回は書いていきたいと思う。 二分探索の一般化 二分探索とはつまり、範囲を特定することである。 例億マス計算 そこで今回は二分探索を使う下記問題を解いていく C - 億マス計算AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.AtCoderAtCoder Inc. [https://atcoder.jp/contests/arc037/tasks/arc037_c] 愚直に2重ループで解くと O(N²)になるため、時間が足りなくなる blog-binary_search_2blog-binary_search_2. GitHub Gist: instantly share code, notes, and snippets.Gist262588213843476 [https://gist.github.com/kooooohe/8cc33e0f1e
Kohei Kondo
Kohei Kondo
3 min read
algorithmBITGo

Signed bitとBITとGoと

目次 * きっかけ * Two’s complement(2の補数) * 累積和 * BIT(binary indexed tree) * 転倒数 きっかけ 先日友人から下記の結果についての質問がきた。 package main import ( "fmt" ) func main() { const a = ^0 fmt.Println(a) } 皆さんも予想してみてほしい。 実行は↓から The Go Playground [https://play.golang.org/p/qpWRExXsJ8E] ^0 はNOTでbit反転なのだが、値はintegerのmax値になることなく `-1` となる。 これは、ご存知Signed Integer で全bitが1の場合はTwo’s complement(2の補数)となり `-1`が出力される。 そして、Goのconstは数値が右辺に来た場合はSigned Integer Typeとデフォルトで解釈する。 では uintのmaxの値をbit反転で取りたい場合はというと package
Kohei Kondo
Kohei Kondo
5 min read
CognitoNuxt.js

Nuxt.jsでAmazon Cognitoを使う

nuxt.jsAmplifyを使わずに、認証の部分のみをCognitoに任せてNuxt.jsで使いたい 今回はこの中のAuth.tsのみを使用する。 amplify-js/Auth.ts at master · aws-amplify/amplify-jsA declarative JavaScript library for application development using cloud services. - amplify-js/Auth.ts at master · aws-amplify/amplify-jsGitHubaws-amplify [https://github.com/aws-amplify/amplify-js/blob/master/packages/auth/src/Auth.ts] Amplifyを使用して、認証画面の自動生成等を行っている記事は多く見かけた。 認証にのみCognitoを使うケース&認証画面はすでにあるものを使いたい場合の記事が少なかったので、こちらに書き記す。 * 下準備 * login処理 * Middlewa
Kohei Kondo
Kohei Kondo
3 min read
DPVue.jsalgorithm

区間DPのテーブルを可視化してわかりやすくしてみた

前回 DP(Dynamic Programming)をVue3.0 With TS & PrimeVUEで視覚化するやることMediumkooooohe [https://medium.com/@1211lta/dp-dynamic-programming-%E3%82%92vue3-0-with-ts-primevue%E3%81%A7%E8%A6%96%E8%A6%9A%E5%8C%96%E3%81%99%E3%82%8B-2c84c749f340] 区間DP DP(動的計画法)の中で区間を状態として表すものをいう。 [a,b,c,d]とあった際に、 * a→b cost 3 * a→c cost 10 * b→d cost 2 etc といったような条件が有り、適切に区切ったさいの 最小、最大のコストを取るか見積もる際などに使われる ※なので今回の区切る個数は 添字0~4の5つとなる dp[i][j] = (i,j] の最適解 となるように計算していく イメージ図参考問題(応用) https://judge.u-aizu.ac.jp/onlinejudge/d
Kohei Kondo
Kohei Kondo
3 min read
DPVuealgorithm

DP(Dynamic Programming)をVue3.0 With TS & PrimeVUEで視覚化する

やること 典型的な動的計画法(Dynamic Programming)を使うナップサック問題をVue3.0の学習がてら視覚化していく 技術 * Vue3.0 * TypeScript * PrimeVUE PrimeVUE [https://primefaces.org/primevue/showcase/#/] PrimeVUEはVue3.0に対応しており、良さげだったので使用。 あとせっかくなのでVueのCompositon APIで書いてみた。 余談: Vue3.0のビルドが早くて驚いた。 また、Compositon APIを使うことにより型が厳密に定義できとても良いなと感じた。 ナップサック問題 ナップサック問題 - Wikipediaウィキメディア財団Contributors to Wikimedia projects [https://ja.wikipedia.org/wiki/%E3%83%8A%E3%83%83%E3%83%97%E3%82%B5%E3%83%83%E3%82%AF%E5%95%8F%E9%A1%8C#:~:text=%E3%83%
Kohei Kondo
Kohei Kondo
3 min read
GoDESCrypt

共通鍵暗号の1つであるS-DES(Simplified DES)をGoで実装してみたその1~key generate編~

共通鍵暗号の1つであるS-DES(Simplified DES)をGoで実装してみたその1~key generate編~ 前回は公開鍵暗号の1つであるRSA暗号を実装してみたが、今回は共通鍵暗号の1つであるS-DESを実装していく。 公開鍵暗号の1つを実装してみたのであれば、共通鍵暗号の1つも実装しないわけには行かないだろう 公開鍵暗号の1つであるRSA暗号をGolangで実装してみる注意: ところどころ簡素化してあるところはありますMediumkooooohe [https://medium.com/@1211lta/%E5%85%AC%E9%96%8B%E9%8D%B5%E6%9A%97%E5%8F%B7%E3%81%AE1%E3%81%A4%E3%81%A7%E3%81%82%E3%82%8Brsa%E6%9A%97%E5%8F%B7%E3%82%92golang%E3%81%A7%E5%AE%9F%E8%A3%85%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B-a8d8ad01b903] GitHub - kooooohe/SimplifiedDE
Kohei Kondo
Kohei Kondo
4 min read
fibonacci numberGogolang

【高速】フィボナッチ数列をビネの公式を使いGoで実装する

結論 O(log (n))となり 1000項目めを求めるには0.000199s 10000項目めは0.000405sで求められました。 完成品 https://github.com/kooooohe/fibonacci/blob/master/main.g [https://github.com/kooooohe/fibonacci/blob/master/main.go]o 通常の再帰を使った簡単な解き方 fib_blog_1.goGitHub Gist: instantly share code, notes, and snippets.Gist 262588213843476 [https://gist.github.com/kooooohe/17818f61bcfe287eb2709466eaccbf7f]func fib(num int) int { if num <= 1 { return num } return fib(num-2) + fib(num-1) } これだとO(2^n)となるためかなり遅い。 ※メモ化については今回は割愛
Kohei Kondo
Kohei Kondo
6 min read
GoRSACrypt

公開鍵暗号の1つであるRSA暗号をGoで実装してみる

注意: ところどころ簡素化してあるところはあります 公開鍵暗号とは > 公開鍵暗号Public-key cryptography [https://en.wikipedia.org/wiki/Public-key_cryptography]暗号化 [https://ja.wikipedia.org/wiki/%E6%9A%97%E5%8F%B7%E5%8C%96]復号 [https://ja.wikipedia.org/wiki/%E5%BE%A9%E5%8F%B7]暗号方式 [https://ja.wikipedia.org/wiki/%E6%9A%97%E5%8F%B7%E6%96%B9%E5%BC%8F] 公開鍵暗号 - Wikipediaウィキメディア財団Contributors to Wikimedia projects [https://ja.wikipedia.org/wiki/%E5%85%AC%E9%96%8B%E9%8D%B5%E6%9A%97%E5%8F%B7]流れ * 2種類の素数p,qを準備する(p != q) * 各素数の積 Nを計算 (p * q)
Kohei Kondo
Kohei Kondo
4 min read
TerraformAWSGitHub Actions

Terraformを使いAWSにSSL通信と独自ドメインを使ったStatic websiteを構築する話し(GitHub Actionsもあるよ)

ざっくりしたいこと Vue.js でできたStatic websiteを独自ドメイン with SSLで公開する SSL証明書の発行、サブドメイン作成などもすべて、できる限りTerraformで作成する 使用技術: ・Vue.js ・Terraform(v0.12.26) ・GitHub Actions その他実行環境: * aws-cli/2.0.19 * Python/3.8.3 * Linux/5.4.0–37-generic botocore/2.0.0dev23 Vue.js Static websiteの作成 Terraform 前提: State用のS3は作成済み。ドメインはRoute53で取得済み。 Deployで作ったものはすべて壊せるようにしたい S3,Cloud Front,ACM,Route53あたりをTerraformで触っていく。 以下のことをすべてTerraformで自動化する S3:Privateで作成&Force Deleteの有効化 blog-terraform-aws-static-site-s3.tfGitHub G
Kohei Kondo
Kohei Kondo
5 min read
TypeScriptDialogflowClean Archittecture

InversifyJSを使ってフロントエンドのTypeScriptでDIを実装してみた

クリーンアーキテクチャをTypeScriptで実装する際のDIをInversifyJSを使ってみた * Firebase & Firestore & Hosting * Nuxt.js & TypeScript を使い、サービスを実装する際にクリーンアーキテクチャを採用した。 その際のDIライブラリとしてInverstifyJSを選定 InversifyJSInversifyJS is a lightweight inversion of control (IoC) container for TypeScript and JavaScript apps.http://inversify.io/Remo H. Jansen [https://inversify.io/] 想定サービス レストランの一覧を取得するもの Firestore とりあえず今回はPublicなRestaurantデータを取得するものを作成、 データモデルはこんな感じ Clean Architecture 有名な図 これをもとにフロント側を実装 Inverstify JS GitHub -
Kohei Kondo
Kohei Kondo
5 min read
CCPCloud SchedulerCloud Run

Cloud Scheduler と Cloud Runを使用し、期限切れの GitHubのISSUEをSlackへ飛ばす

構成 全体のソースコードはこちら GitHub - kooooohe/notify-github-todoContribute to kooooohe/notify-github-todo development by creating an account on GitHub.GitHubkooooohe [https://github.com/kooooohe/notify-github-todo/tree/master]まずは開発環境で試してみる docker-compose.yaml medium-blog-cloud-run-docker-compose.jsmedium-blog-cloud-run-docker-compose.js. GitHub Gist: instantly share code, notes, and snippets.Gist262588213843476 [https://gist.github.com/kooooohe/03d99ac8d08c7ee46dd894c122fd1d41]version: "3" services: n
Kohei Kondo
Kohei Kondo
3 min read
math

強いABC予想とフェルマーの最終定理

望月教授のIUT理論を使用した、ABC予想の証明査定が終わったというニュースが流れてきた。 もともと、証明が終わったというニュース自体は数年前から知っていた。 エンジニアリングも数学も何でもこういった、新しい概念やモノが生まれてくるのはワクワクする。 それの影響を受けて、一般向けにその内容を噛み砕いてくださっている下記の本を購入し読んでいる。 宇宙と宇宙をつなぐ数学 IUT理論の衝撃 | 加藤 文元 |本 | 通販 | AmazonAmazonで加藤 文元の宇宙と宇宙をつなぐ数学 IUT理論の衝撃。アマゾンならポイント還元本が多数。加藤 文元作品ほか、お急ぎ便対象商品は当日お届けも可能。また宇宙と宇宙をつなぐ数学 IUT理論の衝撃もアマゾン配送商品なら通常配送無料。Amazon加藤 文元 [https://www.amazon.co.jp/%E5%AE%87%E5%AE%99%E3%81%A8%E5%AE%87%E5%AE%99%E3%82%92%E3%81%A4%E3%81%AA%E3%81%90%E6%95%B0%E5%AD%A6-IUT%E7%90%86%E8%AB%96
Kohei Kondo
Kohei Kondo
3 min read