Skip to content

Instantly share code, notes, and snippets.

@Altech
Altech / chatgpt_function.ts
Created October 4, 2023 10:03
chatgpt_function.ts
import { DefineFunction, Schema, SlackFunction } from "deno-slack-sdk/mod.ts";
import { SlackAPIClient } from "deno-slack-sdk/deps.ts";
export const ConfigFunctionDefinition = DefineFunction({
callback_id: "config_function",
title: "Config function",
description: "Operate the configuration of the bot",
source_file: "functions/config_function.ts",
input_parameters: {
properties: {
@Altech
Altech / youtube_transcription_overlay.js
Last active May 21, 2023 03:01
YouTube Transcription Overlay
// 目的: YouTube の字幕の機械翻訳の質が悪いので、DeepL を使いたい
// 機能: YouTube のメニューから開ける「文字起こし」の内容を動画にオーバーレイすることができる
// 使い方: 「文字起こし」を開いた状態で DeepL Chrome Extention でページ全体を翻訳することで、DeepL で翻訳された字幕が表示できる
// ※ コンソールから実行しているが、ブックマークレット形式にして使うのも良いかも
// ソース
// ------------------------------------
function setupCaption() {
const player = document.querySelector("#movie_player")
@Altech
Altech / software_desing_lecture.org
Created May 26, 2021 06:24
ソフトウェア設計の Why / What / How

ソフトウェア設計の Why / What / How

この文章(講義)の目的

はじめに

  • ソフトウェアの設計について書かれた情報は世の中に多いが、その情報の多くは How であり、それだけを読んで適切に使うことが難しいと感じています。
    • その直接的な理由は、How に対しての What、What に対しての How が語られることが少ないからです。
  • とはいえ、やはり How だけを知っていることは危険であり、場合によってはどこにこ行きつかないということにもなります。
    • How に閉じずに、目的志向で考えることは、相応の思考を要求されることではありますが、やはり必要なのです。
@Altech
Altech / resct_intro.org
Created April 23, 2021 02:14
React Study

React

create-react-app (typescript mode)

立ち上げ

  • `yarn start` で立ち上げると、ブラウザで React アプリケーションが開く
  • ファイルを編集すると即座にブラウザの表示も反映された(すごい)
  • 試しにプログラムエラーを起こしてみたら、ターミナルの方にエラーが表示された
  • ちょっと色々良い感じにやってくれすぎて何が起こっているのかわからないので仕組みの理解を進める
@Altech
Altech / draft.org
Last active February 11, 2021 08:49
Blog Draft

Protobuf によるプロダクト開発速習会(前編)

入り

  • 以前社内向けに行った「Protobuf 速習会」で話した内容を記事として公開します。
  • JSON / RESTful API と、Protobuf / gRPC を使った開発は何が違うのか
    • 経験:Wantedly People での開発を通じて何度か大規模に Protobuf を使って開発をしてきた
    • 単に「型がついて嬉しい」というレベルではないメリットがあった
    • 前編となるこの記事では、Protobuf を使うと開発がどういう風に変わるのかについて話している
    • 後編となるこの記事では、それについての技術的な事柄や、開発フローを実現するためのいろいろな道具立て、具体的な tips について説明している
@Altech
Altech / imperial_year.js
Created April 22, 2019 05:44
西暦から和暦を出す Notion Formula
// https://www.benricho.org/nenrei/sei-gen.all.html
// notion formula
if(prop("西暦") < 1532,
"未定義(<1532)",
if(prop("西暦") <= 1555,
concat("天文", format(subtract(add(prop("西暦"), 1),1532)), "年"),
if(prop("西暦") <= 1558,
concat("弘治", format(subtract(add(prop("西暦"), 1),1555)), "年"),
if(prop("西暦") <= 1570,
@Altech
Altech / newgrad_books.md
Last active May 22, 2020 11:48
新卒でソフトウェアエンジニアになる人におすすめの書籍 - 非技術書編

サービス開発をするソフトウェアエンジニアを想定しています。★は読み切る難易度であり、ほぼイコールでおすすめ度。

仕事…というか問題を解決するやり方的な本。一回さらっと読んでおいて、働きだしてしばらく立ってからもう一回読むくらいが良い読み方な気がする。

キーワード:仕事,プロジェクトマネジメント

人月の神話 - ★☆☆

@Altech
Altech / v2.md
Created November 7, 2017 00:48
API v2 - protocol and implementation

API Protocol

v1 との違い

一番大きなところでは、以下のように設計の考え方が異なる。

  • v1 : 1 screen, 1 API call. 画面に必要なものを全て返すエンドポイントを作っていく設計。
  • v2 : リソースごとにエンドポイントを作っていく設計(RESTful API)。

RESTful に API を作っていくことの大きなメリットは、アプリの画面と API の結合性が低くなり、生産性が上がること。

module Api
class Preloader
# @param [Array] attributes fields to select.
# @param [Hash] associations associations to include and fields to select of them.
# @example When you select id and name from companies,
# preload_for(companies, [:id, :name], {})
# @example When you includes posts and employees and employees avatar,
# preload_for(companies, [], {posts: {}, employees: {avatar: {}}})
def self.preload_for(rel, attributes, associations)
unless rel.is_a?(ActiveRecord::Relation)
module Api
class PreloadRule
def initialize
@attributes, @associations = {}, {}
end
attr_accessor :attributes, :associations
def attribute(name, includes:)
unless name.is_a?(Symbol)