タグ

ブックマーク / zenn.dev (422)

  • 未ログインでも叩けるAPIエンドポイントにレートリミットを導入する

    先日だれでもAIメーカーというWebサービスをリリースしました。このサービスは例によってOpenAI APIを使っており、トークンの使用量がランニングコストに大きく影響します。 また、気軽に使ってもらえるよう未ログインでも使用できる仕様にしているため、気をつけないと悪意のある人に大量にトークンを使用されてしまう可能性があります。 ノーガードだとどうなるか 例えば、POST /api/askという「リクエストbodyのpromptの値を取り出し、OpenAI APIのChat Completionsに投げる」という単純なエンドポイントを作ったとします。 「未ログインでも使ってもらいたいから」と認証を一切しなかった場合どうなるでしょうか? 悪意のある攻撃者に見つかれば、promptを上限ギリギリの長さの文章に設定したうえで、/api/askに対してDoS攻撃するかもしれません。 トークンを大量

    未ログインでも叩けるAPIエンドポイントにレートリミットを導入する
  • ドッカー入門

    Dockerは現代の開発において不可欠なツールとなりました。書では、Dockerの基から応用まで、幅広く解説しています。Dockerの導入方法やコンテナの作成・管理、Docker Composeを使ったアプリケーションの構築、Dockerのネットワークやストレージなど、多彩なトピックを扱っています。さらに、実践的な例題を用いて、読者がDockerを使った開発をスムーズに進めるためのヒントを提供しています。書は、Dockerを初めて使う人から上級者まで幅広く対応できる、実践的な一冊です。

    ドッカー入門
  • データベースのロックの基礎からデッドロックまで

    データベースのロックについて、資料を読んだり実際に試してみたので、学んだことを整理してみようと思います。はじめにロックについての基的な知識を整理して、最終的にはデッドロックとその対策について説明します。 使用したソフトウェアのバージョン MySQL 8.0.31 この記事ではMySQLを使用しています。その他のデータベースについては、基的な部分は共通していると思いますが、異なる点があることをご了承ください。 ロックとは何か(概要) ロックはデータの更新を正しく行うための仕組みの一つで、あるデータに対する更新処理を制御するためのものです。ここで、データを正しく更新するとはどういうことかを説明するために、口座への振込を例に考えてみます。 例えば、口座Aから口座Bに1万円の振込を行うとします。このとき、口座Aの出金処理と口座Bの入金処理は、必ず両方が成功しなければなりません。このための仕組み

    データベースのロックの基礎からデッドロックまで
  • chatGPTにアドバイスをもらったらデータサイエンスを知って1週間の友人がコンペで上位6.5%に入った話

    先日、データ解析のセミナーを開催しました。 未経験の方でも、2時間で予測モデルを作成することができるハンズオンセミナーでした。 好評だったので、その内容をYouTubeにまとめたのでご興味ある方はご覧ください。 このハンズオンセミナーで予測モデルの作り方を知った友人chatGPTにアドバイスをもらって、データサイエンスのコンペティションサイトに応募したところ、上位6.5%に入ることができたという報告を受け、驚愕しました。 chatGPTを上手く使えば素人がプロに勝つことも十分できるのだなと実感しました。 友人が参加したデータサイエンスのコンペは、SIGNATEの糖尿病予測問題でした。 以下のような進め方をしたとのことでした。 まず、問題の概要を説明して、どのように進めていけば良いかを確認したそうです。 そうすると、chatGPTからデータサイエンスの問題を解くための手順を一覧化してくれて

    chatGPTにアドバイスをもらったらデータサイエンスを知って1週間の友人がコンペで上位6.5%に入った話
    bongkura
    bongkura 2023/04/26
  • ChatGPTをぬるぬるにする🐌Server-Sent Eventsの基礎知識

    単方向通信であるということと、HTTP/1.1上で動作しているのが大きな特徴です。 また、HTTP上で動作することから、通信の互換性が高く、セキュリティモデルも使いまわせるので安心です。 どんな用途と相性がいいの? 双方向通信がしたいわけでなければ、相性の幅がとても広いです。 今回の ChatGPT のような、GPT がトークンを生成するごとに送るケースはもちろん、通知の未読件数バッジの更新、ニュース速報の表示など、サーバからイベントを送りたい時ならなんでも使えます。 HTTP/1.1で動くカラクリ SSEはHTTPのレスポンスヘッダにContent-Type: text/event-streamを指定した上で動作します。 SSEが動く流れ クライアントがサーバーに HTTP/1.1 リクエストを送信し、イベントストリームに接続します。 サーバーは、Keep-Alive 接続を使用して、T

    ChatGPTをぬるぬるにする🐌Server-Sent Eventsの基礎知識
  • httpとhttpsの違い

    TLSの有無 言うまでもないことですが、httpsでは通信路をTLSを使って保護することが想定されています。[1][2] デフォルポート httpは80、httpsは443です。[3][4] 権威性 以降の説明に入る前に前提を確認します。稿は「httpとhttpsの違い」と題されていますが、これはURLのスキーム部分のことを指しています。URLはリソースの所在を指すものであり、通信方法はそこから二次的に決まるものです。このことを前提に置きつつ権威性について説明します。 Webにおいて、所望のリソースにアクセスする方法はひとつではありません。このような方法のうち、リソースの所有者の制御下にある(第三者による加工などが行われていないと期待される)方法で取得することを権威的アクセスと呼びます。[5] どのようなアクセス方法が権威的とみなせるかについて100%客観的で統一的な指標があるわけではな

    httpとhttpsの違い
  • 「Auto-GPTとAgentGPTは別物です」という話

    ChatGPTを皮切りとしたAIブーム。流石にちょっと過熱気味になってきた印象があります。 中でも気になるのは「AutoGPT」の話題。Twitter上だと、 他にも、AgentGPTを使って「AutoGPTすごい!AGIだ!」としている投稿を多く見かけました。 ですが、「AgentGPTはAuto-GPTのブラウザ版」ではありません(少なくとも2023年4月15日時点は)。 両者とも似たアプローチはとっていますが、Auto-GPTは 「GPT-4に情報探索・処理や長期記憶の手段を持たせている」 という点が大きく異なります。 AgentGPTは、 ユーザーが設定したゴールをAIにいくつかの問い(タスク)に分解させる それぞれの問いに回答を出させ、その結果を踏まえて追加で必要な問いを考えさせてタスクリストに追加する という自問自答のループを回すことで思考を深めています。 一方、Auto-GP

    「Auto-GPTとAgentGPTは別物です」という話
  • GitHub を使うなら通知くらいまともに設定してくれ

    4 月から新入社員となって格的にエンジニアとして生活し始めた方も多いかと思います.いままであまり GitHub を使っておらず,会社から要求されてはじめてまともに使い始めた方もいるかもしれません. そんな方々にお願いがあります. GitHub を使うなら通知くらいまともに設定してくれ あなたがこのタイトルを読んでピンときていないのであれば,あなたの通知設定はおそらく間違っています.GitHub は初期設定だと非常に多くの通知を送信します.それは GitHub 自身が通知ページで述べているくらいです. 通知はあなたが思う以上に大切な存在です.必要とする通知は人によって様々であり,それを見逃してはいけないため,ときに GitHub は必要以上の通知を送信しています.しかし,必要以上な通知を受け取ると,人は通知を見ないようになってしまいます. 個人開発ならそれでもよいかもしれません.しかし,あ

    GitHub を使うなら通知くらいまともに設定してくれ
    bongkura
    bongkura 2023/04/16
  • Chat GPT-4にDDDのドメインモデルを考えさせたら凄かった件

    バックエンド兼インフラエンジニアのrevenue-hackです! DDD(ドメイン駆動設計)でドメインモデル考えますよね? その時にGPT-4にやってもらったらどうなんだろう?とふと思い、実際にユースケースからドメインモデルを作ってもらいました! ↓記事移行しました!↓

    Chat GPT-4にDDDのドメインモデルを考えさせたら凄かった件
  • ブラウザキャッシュの仕組み

    はじめに 最近Denoをよく触っており、DenoのSSRフレームワークであるFreshのミドルウェア・キャッシュについて調べている際にブラウザキャッシュのEtagヘッダが使用されており、気になったのでブラウザキャッシュの仕組みについて調べてみました。 Etagの正体 Etagとは、ブラウザキャッシュの仕組みの中で使用されるHTTPレスポンスヘッダーでリソースの特定のバージョンに関する識別子のことです。 Etagがあることでウェブサーバーは、コンテンツが変更されていない場合はレスポンス全体を再送する必要がないので、キャッシュがより効率的になる。 ブラウザキャッシュの設定について ブラウザキャッシュを設定する際に必要なHTTPレスポンスヘッダーはEtagを含めて以下の通りです。 Expiresヘッダー Cache-Controlヘッダー Last-Modifiedヘッダー Etagヘッダー そ

    ブラウザキャッシュの仕組み
  • Dockerについて網羅してみた(ハンズオンあり)

    Dockerコンテナの概要と利点 コンテナでぐぐると、「仮想サーバー技術がうんたらこんたら〜」と出てくるが、それは忘れていいというのから衝撃を受けた。笑 それから入る情報が多かったので、(正直意味不だった) 一言で、コンテナとは「互いに影響しない隔離された実行環境を提供する技術」 もっとシンプルに考えていい。難しく考えようとしていた →システムの実行環境を隔離した空間のこと 例)システムAとシステムBは、コンテナがあれば例えば、共通のフレームワークをアップデートしたりしても互い影響はない コンテナの特徴は、「独立」していること(ここで言う独立とは単体で完結していること) 1台のサーバーにシステムが複数あっても競合しないこと コンテナを実現するソフトの代表が「DockerDockerLinux上で動作するソフトで、Linuxに「Docker Engine」をインストールするとDocke

    Dockerについて網羅してみた(ハンズオンあり)
  • PostgreSQLに関するNTTデータのSlideShareのスライドリスト

    はじめに SlideShareの広告対策です。 更新履歴 2023/12/13 CloudNative Days Tokyo 2023の資料を追加しました。 2023/12/07 PostgreSQL Conference Japan 2023の資料を追加しました。 2023/11/16 NTTデータで以前使われていたSlideShareのスライドを追加しました。 2024/03/08 第45回PostgreSQLアンカンファレンス@オンライン、DEIM2024の資料を追加しました。 2024 OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)

    PostgreSQLに関するNTTデータのSlideShareのスライドリスト
  • Docker一強の終焉にあたり、押さえるべきContainer事情

    章立て はじめに Docker・Container型仮想化とは Docker一強時代終焉の兆し Container技術関連史 様々なContainer Runtime おわりに 1. はじめに Containerを使うならDocker、という常識が崩れつつある。軽量な仮想環境であるContainerは、開発からリリース後もすでに欠かせないツールであるため、エンジニアは避けて通れない。Container実行ツール(Container Runtime)として挙げられるのがほぼDocker一択であり、それで十分と思われていたのだが、Dockerの脆弱性や消費リソースなどの問題、Kubernetes(K8s)の登場による影響、containerdやcri-o等の他のContainer Runtimeの登場により状況が劇的に変化している。記事では、これからContainerを利用したい人や再度情報

    Docker一強の終焉にあたり、押さえるべきContainer事情
    bongkura
    bongkura 2023/04/03
  • ChatGPTにCtrl+Fを覚えさせるアプローチについて

    この記事は何 Techカテゴリに含まれてこそいるものの、この記事はあくまで理論の側面でアプローチについて語るメモのようなものです。このアプローチに沿ったプロンプトやプログラムを書いてはいるものの、まだ期待通りの挙動をするとは言い難いです。 なぜ公開したかというと、自分より賢くて素早い誰かが理屈だけを見て代わりにやってくれたりしないか、という期待からです。 ChatGPT Plus(GPT-4 APIではない)とPythonを使います。 今回作ったプロンプト そういう前提を踏まえ、まだ完成していないプロンプトを掲載します。 プロンプト(コードブロック記法の関係で```が``に置換されている) # イントロダクション あなたはCLIを使用中の凄腕エンジニアとして振る舞ってください。 今からゲームをしましょう。 あなたの目の前にとあるtxtファイルがあります。 このtxtファイルに書かれている内

    ChatGPTにCtrl+Fを覚えさせるアプローチについて
    bongkura
    bongkura 2023/03/21
  • ChatGPTのプロンプトをLispで書く

    ChatGPTのプロンプトをLispで書けることに気づきました。プロンプトによって処理系としてふるまってもらうという話は聞いたことがありましたが、Lispの場合はそのようなプロンプトがなくても解釈されました。 モデルはGPT-4です。言語としてはClojureをベースにした擬似コードを書いています。 ※いくつか例を追加しました。思った以上にプログラミング的なことができるみたいです。 単純な生成と変換の例 子供っぽくする 静かなヤンデレっぽくする (しっぽりやんでれ?) 対偶を返す 小説を作ってそれを要約する 鶏の唐揚げのレシピのJSONを生成する Lispについて執事っぽく説明する クラムチャウダーのレシピを妹として箇条書きにする お兄ちゃんとツンデレの妹の誕生日ケーキについての会話を生成する Clojureの関数を使う例 3つの文を元気にする 犬の名前を5個生成してひらがなにする キリン

    ChatGPTのプロンプトをLispで書く
    bongkura
    bongkura 2023/03/20
  • GPT-4を使って ぷよぷよ 作ってみたときの感想

    以下のツイートに反響があったので、どういう感じで作っていったかと感想をメモ 要約 この記事ではAIChatGPT(GPT-4)を使用して、JavaScriptでぷよぷよを作成する手法について紹介しています。最初の依頼は「JavaScriptで動くぷよぷよのコードを書いて」とされており、最初に生成されたコードは不完全であったとのことです。 その後、AI側からは、1.ぷよの衝突検出、2.プレイヤーの入力によるぷよの操作、3.ぷよの回転の順に実装するように指示があり、徐々に改善を施していきました。 短時間で開発を終えることができるため、エンジニアとしてのスキルや要求、不具合の言語化能力があれば有効だとされています。現時点では優秀なプログラミングのアシスタントとして機能しています。 エンジニアが直面するストレスや不安を軽減できる可能性があります。一例として、短期間で開発を終えることができるため、

    GPT-4を使って ぷよぷよ 作ってみたときの感想
  • 「怠惰・短気・高慢」であれ、ChatGPTを使って業務効率化しよう(要件定義編)

    例として読書記録アプリをつくります! 筆者が欲しいサービスを作ろうと思い、今回は「読書記録アプリ」をつくります。 最低限の要件は、次のように設定しました。 デモアプリの要件(読み飛ばしてOK) 読書記録アプリを作る目的 読書が苦手なエンジニア読書記録をし、記録を共有することで、継続して技術を読めるようになること ターゲット 新人、中堅のWebエンジニア おおまかな要件 ユーザーは新規登録することで、読書記録アプリにログインできる ユーザーは読むを登録できる ユーザーはを何ページ読み終えたかを記録できる ユーザーはを読み終わったら次のを登録できる ユーザーは他の人がどのを読んでいるのか、また何ページ読み終えたかを閲覧できる 質問する前に... また、ChatGPTに業務で使用するコードを渡す場合、環境キーやサービスを特定できる情報を送信しないでください。入力内容が他の人に渡って

    「怠惰・短気・高慢」であれ、ChatGPTを使って業務効率化しよう(要件定義編)
  • GPT-4との新たな開発体験: AIとペアプロを極める

    こんにちは、クレスウェア株式会社の奥野賢太郎 (@okunokentaro) です。記事では、GPT-4を使った開発体験について語りたいと思います。 2023年3月14日、GPT-4が発表されました。GPT-4とは、OpenAI社が開発した最新のAI技術で、自然言語処理の能力が従来のGPT-3.5と比較して、さらに向上しています。これにより、文章生成やコーディングの補助といった様々な分野での応用が期待されており、開発者にとっても非常に興味深いツールとなっています。現在は、GPT-4を利用するためにはChatGPT Plusという課金コンテンツに月額20ドルを支払う必要があります。驚くことに、この記事もChatGPTに大半を書いてもらいました。それでは、GPT-4を活用したコーディング体験について紹介します。 AIとのペアプロに近いコーディング体験 筆者はGPT-4公開初日である日時間の

    GPT-4との新たな開発体験: AIとペアプロを極める
  • バックエンドの設計で直したほうが良いコード9選

    バックエンド兼インフラエンジニアのrevenue-hackです! 今回は今までバックエンドエンジニア10年くらいやってきて、「これはまずいなー」と思ったコードについて紹介していきます。 ↓記事はこちらに移しました!↓

    バックエンドの設計で直したほうが良いコード9選
  • 「有能なバカ」ChatGPTを使って1週間でiOSアプリを公開する方法

    初めまして、にわとろです。 さて今回は、ChatGPTを使ってiOSアプリをイチから作ってみました。ChatGPTの記事なんてもうオーバーフローするほどあるのですが、今のところiOSアプリを最後まで作り通した記事はありません。 理由は簡単で、ChatGPTは「バカ」なのでiOSアプリなんて複雑なモノを完成させられないからです。 しかしバカも使いようです。上手く使いこなしてやれば、アプリだって作ることができます。ChatGPTはバカですが、有能なバカです。でもあなたがヤツをわかっていなければ、やっぱり無能のままです。だから、この記事を読んで理解してあげないといけません。 それじゃあ、ChatGPTと仲良くなりにいきましょう。 ChatGPTを使う極意 早速ChatGPTを使う極意を教えます。全部読み通せなくても、これだけは覚えてください。 いい上司になれ。 何を言っているかというと、Chat

    「有能なバカ」ChatGPTを使って1週間でiOSアプリを公開する方法
    bongkura
    bongkura 2023/03/13