所属している会社のアドベントカレンダーを書いた

ブログをリニューアルしてから初めての投稿です。 今年はブログを全然更新できていなかったので、心機一転+記事を書く手間を極力減らして気軽に投稿できるようにリニューアルしました。 無理せず継続する予定なので今後もよろしくお願いします! アドベントカレンダー書いた Qiitaのアドベントカレンダーを書いたのでURL載せておきます。 Scala + Play Frameworkでリクエストを値オブジェクトにする Scalaに関する記事を書いていて、今年はScalaを触ることがほとんどで強い型付けには非常に助けられてます。(型パズル化したときは難しくて時間を溶かしてますが、、) アプリを作るなら、Java, Scala, Goあたりの静的言語はマストだなーと最近思っています。

December 12, 2022 · 1 min · 13 words · Yu

最新の継続日数を取得するSQLを作ろうとした

このブログは技術記事メインで運用しようとして始めましたが、気付いたら本のアウトプットメインになってました。笑 たまには技術記事を書こうということで今週取り組んでて苦しんだPostgreSQLを使った最新の継続日数取得について書きます。 経緯 今コツコツと取り組んでいる個人開発でGitHubとかで見る最新の継続日数の取得をしたいと考えたところから始まりました。 ちなみにこんな感じのやつです。 Current StreakをSQLで実現しようとしました。 実装 ネットで最新の継続日数を取得するSQLの情報が全然なくどうしようかなと迷っていたら、Latest Number of Consecutive Days(Current Streak)を見つけました。 この記事を見ていると何やらSQL Serverで実現したいことを実装しているっぽい!ということでこれをPostgreSQLに書き換えてみようと試みました。 上記記事で最終的にできてたSQLはこんな感じでした。これをPostgreSQLに変えていきます。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 DECLARE @habits TABLE (ID INT IDENTITY, [Target] INT) INSERT INTO @habits ([Target]) VALUES (1) DECLARE @entries TABLE (ID INT IDENTITY, HabitID INT, EntryDate datetime) INSERT INTO @entries (HabitID, EntryDate) VALUES (1, '20150221'),(1, '20150222'),(1,'20150223') ;WITH distinct_dates AS ( SELECT DISTINCT HabitID, convert(date, dateadd(HOUR, -3, EntryDate)) AS Day FROM @entries ), numbering AS ( SELECT distinct_dates....

January 31, 2021 · 2 min · 336 words · Yu

TablePlusで追加したデータが取得できない

PostgreSQLにTablePlusからデータを作成したはいいもののGolangから作成したデータが取得できない。。 ということが発生していました。解決策はとても単純でしたが、少しハマったので記事にしました。 解決策 TablePlusの画面でデータを作成した後にコミットができていなかったです。 上記画像の状態だとコミットができていません。⌘Sなどでコミットしてあげましょう。 しっかりと公式ドキュメントを読まなあかんですね。

December 7, 2020 · 1 min · 6 words · Yu

Next.jsのgetServerSidePropsでリダイレクトをする

勉強用にNext.jsで個人開発をしていて、cookieに値がない時トップ画面にリダイレクトする実装をしたかったのですが、参考にできる情報が少なかったので記事にしました。 リダイレクト方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import { parseCookies } from "nookies"; import { GetServerSideProps } from "next"; // ... export const getServerSideProps: GetServerSideProps = async (context) => { const cookies = parseCookies(context); const userId = typeof cookies.userId === "undefined" ? "" : cookies.userId; if (userId === "") { context.res.writeHead(302, { Location: "/" }); context.res.end(); } return { props: {}, }; }; cookieにuserIdを仕込んでいて、userIdがなかったらログインしていないとみなしてトップ画面に戻す実装をしました。...

September 13, 2020 · 1 min · 86 words · Yu

「Type '型' is not assignable to type 'never'」のエラーを解消した

仕事でVueを使っていて、追加と削除が繰り返される配列要素のオブジェクトに一意のid番号を振るの記事に書かれているオブジェクトの追加と削除を実装しようとして、 TypeScriptで書いている時にエラーが発生したので、その解消法について記載します。 発生したエラー 以下コードの3行目でType 'boolean' is not assignable to type 'never'.Vetur(2322)のエラーが発生しました。このエラーは解消しなくてもアプリが動きましたがエラー状態は気持ちが悪いので解消法を探しました。 1 2 3 4 5 6 7 8 getNewId() { const usedIds = this.stats.reduce((accumulator, stat) => { accumulator[stat.id] = true; return accumulator; }, []); const nextid = usedIds.findIndex((exists) => !exists); return nextid < 0 ? usedIds.length : nextid; } 解消法 [] → [] as boolean[]のように記載することでエラーを解消できます。TypeScriptは、連結を使用して配列を削減するときに「never」型を推測するのはなぜですか?に記載されているようにboolean[]にキャストしてあげればOKです。 これは、[]の型がnever[]であると推論されているためだと思います。これは、空でなければならない配列の型です。型キャストを使用してこれに対処できます。 今回のコードは無理やり配列を作っているので、TypeScriptが値を持たないと判断してnever[]を返していたみたいです。 1 2 3 4 5 6 7 8 const usedIds = this....

September 8, 2020 · 1 min · 89 words · Yu