Slack用Notion Botを作ったのでここまでのCHANGELOGを振り返る

本記事は、GMOペパボエンジニア Advent Calendar 2023の23日目の記事です。 以下が自分が現在開発中のSlack用Notion botであるnotion-botのレポジトリです github.com ちなみにGPT4で作成したのですがアイコンが可愛いです notion-bot使うとどういうふうに検…

はてなブログのMarkdown記法内でmermaidを使えるようにする

公式でやりかたが案内されていますが、自分のブログのCSS設定ではmermaidのコードブロック内にもそのスタイルが反映されて黒く塗りつぶされてしまう状態でした。 staff.hatenablog.com そこで以下記事を参考にmermaid記法で記述する箇所についてはスタイルが…

Notionを色々触っていたらターミナルからCRUD操作+αを実行したくなったのでCLIツールを作った

今年のお盆期間中は特にやることもなかったので、やりたくて時間が取れていなかったNotionのCLIツール作成をずっとやっていて、それがある程度は使えるレベルになったのでその紹介記事を書きました。 背景 Notion関連のツールはこれまでに以下作成してきまし…

任意条件でフィルタリングしたNotion DBのページリンクをSlack通知したい

そんな要望?に答えるべく以下GitHub Actionsを作成しましたが、こういう系の名称を正確にあらわそうとしすぎてかなり冗長な名前になってしまいました github.com Actionsの概要 対象とするNotion DBに対して任意のフィルタ条件を指定する 今回のActionsがSla…

Goの構造体内のinterface{}型のフィールドにはどうアクセスすればいいのか?

SQLファイルから型安全なコードを自動してくれるsqlcというライブラリを使用してアプリ開発を行っているのですが、sqlcで以下のようなsqlよりgenerateを実行すると -- name: GetUsers :many SELECT id, case when name = "foo" then true when name = "bar" …

自作ソシャゲ用CLIツールにWebサーバ機能を追加し誰でもデータを閲覧しやすくしました

以前の記事でCLIツールを作成した記事を書きました。 litencatt.hatenablog.com 早いものであれから133日経過しています。その間、4/1は横浜スタジアムに行っていたりなどもしていました。 その間も引き続き自分のペースでゲームを続けていますが、ただ続け…

ginでWebアプリのログイン処理を実装してセッションについて学ぶ

この記事の対象者 Go言語で書かれたWebアプリケーションフレームワークであるginでCookieを使用した基礎的なセッション管理の実装について知りたい方向け github.com この記事内で紹介している実装の全体が見たい方はこちら github.com セッションとは Rails…

1000日間遊んでいるソシャゲ用CLIツールを開発した話

この記事は「GMOペパボエンジニア Advent Calendar 2022」の11日目の記事です。 今回はタイトルにある通り、現在も絶賛プレイ中のソシャゲのCLI開発からリリースに至る過程などについてお話します! adventar.org UNI’S ON AIR(ユニエア)について 今回の記事…

非推奨なJSONの配列型をUnmarshalする

Unmarshalシリーズ3回目?となりましたが今回非推奨なJSONの配列型のUnmarshal方法を扱います。 通常JSONの配列は以下に示すような書き方が一般的ですが、 { "list": { "listItem": [ { "foo": "1", "bar": "2", "buz": "3" }, { "foo": "4", "bar": "5", "bu…

reflectionを使用した構造体データと独自フォーマット文字列の相互変換

TL;DR 今回の記事内に出てくるコードの全体は以下レポジトリにあります https://github.com/litencatt/playground-go/blob/main/convert-struct/main.go 出力結果 $ go run main.go === Struct to String Lines === Input: {Param1:Val1 Param2:[Val2 Val3]}…

一部可変的な構造体の要素を含むJSONをUnmarshalして可変部の値を取り出す

背景 以下に示すような一部データ構造が可変的な要素を含むJSONをUnmarshalしてかつその要素の値を取り出したい 前提として可変部のタイプはJSONに含まれるある値(ここではkeyとする)で判定可能とする 今回"variable"の要素が[]stringまたは[]structの場合を…

個人PC(Mac)でdocker pullが途中で止まる原因を突き止める

Macのスペックなど MacBook Pro (13-inch) Intel Chip macOS Catalina Docker for Mac 4.11.1(発生時点での最新) 状況 個人PC(Mac)でdocker pullが途中で止まる $ docker pull golang:latest latest: Pulling from library/golang 1671565cc8df: Downloading…

NotionのDBのリレーション作成・更新を自動化するGitHub Actions

TL;DR notion-db-auto-relatorをNotion上における複数DB間の複雑なリレーションを自動かつ定期的に更新したい場合に導入してみてほしいです notion-db-auto-relatorとは NotionのDBにはRelationという機能(DBにあるページの相互参照可能な仕組み)が存在しま…

昔作成してほったらかしていたツールが今になって役に立ったというちょっといい話

TLDR; 約2年前に作成してそこからずっとほったらかしていたGrettというGmailのSlack通知ツールが今になってちょっと役に立ちました github.com 背景 自作OSSへのPRレビューや他のOSSへのコントリビューションをする機会がここ最近あった その際にPR内の情報…

REST APIのスキーマ駆動開発を始めるために読んだ資料

スキーマ駆動開発とOpenAPI Generatorのこれまでの流れがわかる資料(2019年2月) speakerdeck.com スキーマ駆動Web API開発特集のWEB+DB PRESS(2018年12月発売) gihyo.jp OpenAPIツール この記事でStudioとPrismを知った future-architect.github.io Prismの…

メールアドレスなど特定の情報を貼り付け時に置き換えるChrome拡張機能を作成中

github.com メールアドレスやパスワード、トークンなどを意図せず貼り付けられたままSlackやGitHub上に投稿されてしまうことを防ぐため、設定した正規表現に引っかかった文字列をフィルターするChrome機能を作成中(まだβ版です!)。 こんな感じで今はまだメ…

Go言語で作成したCLIツールをリリースする1

この記事でわかること Go言語で作成したアプリケーションへのversion情報の埋め込み方法 Go言語で作成したアプリケーションのバイナリをGitHubで配布する方法 1. Go言語で作成したアプリケーションののversion情報の埋め込み方法 Golangでビルド時にバージョ…

GASとスプレッドシートを活用したサーバレス通知システム

この記事はGMOペパボ Advent Calendar 2019 - Qiita 14日目の記事です。 目次 社内・自作Slack通知ツール紹介 おすすめGAS開発方法(clasp + TypeScript) Slack通知ツールの仕組み まとめ 社内・自作Slack通知ツールの紹介 ペパボではコミュニケーションツー…

Webサーバのログ集計の素振りに便利なツール達

k1low.hatenablog.com この記事を見て、そういえば自分もよくgrepコマンドなど組み合わせてアクセスログから条件に応じた集計をよくやってるなと気づきました すぐにfilt試してみたかったのですが、記事にあるようなアクセスログを常時吐いてくれるような環…

RubyKaigi 2019に参加していました

遅くなりましたが、福岡国際会議場で2019/04/18(Tue) - 4/20(Sat)に開催されたRubyKaigi 2019に参加しました。 rubykaigi.org 業務の都合で4/18は不参加でしたが、4/19, 4/20の2日間で10以上のセッションを拝聴しました。 参加してみての感想 過去にPHPカン…

SamplarというRailsエンジンでAPIクライアント達にWeb UIを生成してあげた

概要 Rails app(以下app)で使用しているAPIクライアントを画面上から実行して結果を画面表示するためのRailsエンジンを作成してみました 誰得?というとまぁRailsエンジン作ってみる練習がてらのプロダクトなので自分得です github.com 背景 業務で開発して…

DovecotのIMAPサーバにRoundcubeでアクセスできるまで

この記事は GMOペパボ Advent Calendar 2018 - Qiitaの15日目の記事として書いてます。 業務においてたまにメールサーバ周りを調査することがあるのですが、今回メールサーバ側のインフラの基礎的な知識の学習のためDovecotを用いたIMAPメールサーバを構築し…

dovecot IMAP server 環境の構築

とりあえずtelnetでIMAPサーバにつなげて、INBOXがselectできる状態までにはなった // gist.github.com

Hashieについて少しだけ調べた1

Hashieとは? Hashを拡張して便利にしてくれる言わずと知れた有名なgemですね。 github.com 使用例 [5] pry(main)> mash = Hashie::Mash.new => {} [6] pry(main)> mash.name? => false [7] pry(main)> mash.name = "Taro" => "Taro" [8] pry(main)> mash.na…

OAuth・OPICについてのまとめ

一番分かりやすい OAuth の説明 - Qiita 一番分かりやすい OpenID Connect の説明 - Qiita OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜 from Masaru Kurahayashi www.slideshare.net OAuthまとめ 認可技術(Authorization) 登場人物(と…

SafariのリーディングリストをPocketへエクスポートする

情報収集の手段としてiPhoneからTwitterを使って行っています。 ちなみにfeatherというアプリを使っています。 feather for Twitter アプリの機能の一つにSafariのリーディングリストへの追加がアプリ上から行えて便利なのですが、自宅のMacの方でもリーディ…

Herokuへのdeploy方法を思い出す

1年ぶりくらいにHerokuにdeployしてみようとして色々詰まったので調べたことを残しておく。 ほぼ下記記事の内容で事足りました。 [Ruby] RailsをHerokuへデプロイする時の7つの注意事項 [Heroku] - Qiita 1年以上前にRailstutorialでHeroku使ったきりだった…

PC上で快適にEPUB形式データを読む

iOSデバイスをお持ちの方はiBooksという素晴らしい電子書籍リーダーアプリが標準でインストールされており、スクロール表示でWebページを見るように縦or横スクロールさせて電子書籍を読むことができてとても快適です。 Mac版も同様にスクロール表示機能があ…

2017年の振り返り

今年はサービスで2つの大きな機能リリースと、2つのイベントでの発表を行いました。 大きめのリリースを2回経験したことで、最近は若干設計について議論していけるくらいのスキルが身について来たなと感じつつも、まだまだ足りないスキルとのギャップも感じ…

DockerについてLTした内容と細かい話

speakerdeck.com ホスティング事業部内のホスtechMTG#3にてDockerについてLTしました 資料に入り切らなかった小ネタなどをここでは紹介。 LT資料の言い回しついての補足 specコンテナ: コンテナ内でRSpecを実行してコードをテストするためのコンテナ dbコン…