タグ

関連タグで絞り込む (292)

タグの絞り込みを解除

programmingとProgrammingに関するhajimepgのブックマーク (1,287)

  • 強い思想: Go を Web 開発に採用する上で

    フラットパッケージは正義か? 私が SNS で何度か言及した以下の記事がある。 フラットパッケージ戦略は,確かに Go文化圏においては一定の支持を集めている。Go の公式リポジトリや有名ライブラリなんかも,Java などの言語に比べたらずっとパッケージ階層が浅く,ネストしていないものが多いと思う。 しかし,それも 「コードベースを小さく保つ」 を大前提としていることを忘れてはならない。 DDD やクリーンアーキテクチャといった言葉が飛び交うぐらいの規模であれば,パッケージを切ることに関して後ろめたさを感じる必要はない。 むしろ,大きなコードベースが誕生することが開発初期から簡単に予見できるような状況で, YAGNI という言葉に甘んじて設計を放棄するのは極めて悪手であると私は断言する。身を以て失敗を経験した私の口から伝えたい。

    強い思想: Go を Web 開発に採用する上で
  • 楽しくGoを学び合う、LayerXの勉強会文化 / LayerX's study culture of having fun and learning Go together

    Women Who Go Tokyoで発表した内容です。 https://womenwhogo-tokyo.connpass.com/event/323762/ CI/CD に PGO を組み込んだ話 https://speakerdeck.com/shota_tech/cd LayerXイ…

    楽しくGoを学び合う、LayerXの勉強会文化 / LayerX's study culture of having fun and learning Go together
  • 生SQLに型を手書きする時代は終わり?Prismaの新機能「TypedSQL」

    SQLを扱う $queryRaw TypeScript向けのORMライブラリとしてPrismaがあります。Prismaは直感的で型安全なAPIを提供し、TypeScript向けのORMとしては第一に名前が上がることが多いライブラリです。 しかしそんな人気なPrismaでも、裏側では少しクセのあるSQLが発行されていたり、欲しいSQLがPrismaのAPIでは実現できない場合があります。 そういった場合のために $queryRaw というメソッドが用意されており、これを使うことで生SQLを書いてその結果を受け取ることができました。他のORMにもよくある機能です。 例えば以下のように実装することができます。 const users = await prisma.$queryRaw` SELECT id, name FROM "Users" WHERE id = ${userID} `; co

    生SQLに型を手書きする時代は終わり?Prismaの新機能「TypedSQL」
  • 技術選定の失敗 2年間を振り返る TypeScript,Hono,Nest.js,React,GraphQL

    技術選定の失敗 2年間を振り返る TypeScript,Hono,Nest.js,React,GraphQL はじめに 新たに書きました。 MySQLを使っても会社は潰れない 久々に記事を書いたのでどうぞお手柔らかに... 私が過去2年間で行った技術選定の成功と失敗を振り返り、その学びを共有したいと思います。 文才無いので淡々と箇条書きでいきます Twitterエンジニア垢作りました。エンジニアのお友達がいません。 @uncode_jp 注意 意見を押し付けるものではありません。ただ建設的な議論は大事だと思う。 自分の意見は明確に、歯切れのよい表現を意識している。人それぞれだよねみたいな感じに逃げたくない。技術選定に結論はある(過激)。 ただし技術選定にはコンテキストがあり、例えばプロダクトのフェーズや組織の事情によって当然結論は変わる可能性がある。 OSSの開発者さん達は偉大ですごい。あ

    技術選定の失敗 2年間を振り返る TypeScript,Hono,Nest.js,React,GraphQL
    hajimepg
    hajimepg 2024/08/26
    TypeScriptでバックエンドサーバーを書くなら、NestJSが無難だと思っていたのだけど、そうでもなかったのね。Honoという選択肢を知れて助かった
  • Haystack

    Haystack’s AI pinpoints the best order to review your diffs so you can jump straight into reviewing. No more puzzling over complex pull requests! Haystack’s AI pinpoints the best order to review your diffs so you can jump straight into reviewing. No more puzzling over complex pull requests!

    Haystack
  • Goを学ぶときに参照した学習リソースまとめ

    皆さん、新しいプログラミング言語を学ぶ時、どのように学習しているでしょうか? 私は4月に新卒でエンジニアになり、業務でGoを使うことになりました。その際、とりあえず公式チュートリアルであるTour of Goをやりましたが、その後にどうやって学習を進めれば良いか迷ってしまいました。 考えてみると、新しい言語を学ぶ際、毎回学習方法に困っている気がします。ネットでサンプルを探す、動画を見る、書籍を読む、などさまざまな学習方法があると思いますが、私は手を動かしながらいろいろなパターンを学んでいくのが好きです。 そこで今回Goを学ぶ際も、手を動かしてさまざまなコーディングのパターンを学習するために、ネットや書籍でサンプルを探して実践しました。 この学習方法は私にとっては楽しみながら続けることができて、他の言語を学ぶ際も今回実装したサンプルを使って学習しようと考えています! そこで自分と同じ様な悩み

    Goを学ぶときに参照した学習リソースまとめ
  • Go の学習に参考になった資料集

    Credit to Renée French for the Go Gopher logo 概要 この記事では、自分が Go について学ぶために参考になった学習リソースについて紹介します。 自身が初学者のときから今まで、ずっと参考になっているものを集めました。 幅広く参考になれば幸いですが、自分が過去に戻って Go を学び始める自分におすすめするならというような気持ちで書いています。 → メインの想定読者は Go の初学者 リソースについてですが大きく「公式」「書籍」「コード」の3観点(+その他)でまとめました。 結論から言うと、「公式から学ぶ」は誰にでもおすすめできます!それ以外は自分の状況や好みでぜひ参考にしてみて下さい。 というような温度感です。 ※ Go の開発環境の構築やプログラミング基礎の tips などはこの記事でわかりません 公式から学ぶ A Tour of Go 「何も考

    Go の学習に参考になった資料集
  • フロントエンドエンジニアが3ヶ月で Go を覚えてバックエンド開発に参画するまで

    Magic Moment の @aqlwah です。 2021年10月に入社してから1年ほどの間は、フロントエンドエンジニアとして React や Redux を用いた SPA の開発に主に従事していました。 それが昨年10月に行われたチーム体制再編をきっかけとして、バックエンドの開発にも参画するようになりました。 この記事では、フルスタックエンジニア見習いとなった私が Go をキャッチアップしてバックエンド開発を始めるまでに取り組んだ学習の経緯(ほぼ書評)をご紹介します。 余談ですが、この記事は先日にチーム内で開催した LT 会での発表をブログ向けの文章として書き起こしたものです。 私たち Tech チームでは、不定期で自由参加の LT 会を実施しており、業務内外で得た様々な知見を共有しています。 LT 会についての詳細もいずれこのブログでご紹介できればと思っています。ご期待ください。

    フロントエンドエンジニアが3ヶ月で Go を覚えてバックエンド開発に参画するまで
  • Goの学習のため書籍を三冊読んだ - $shibayu36->blog;

    A Tour of Goが終わり、もう少しGo自体の深掘りをしたいためGoの書籍をいくつか読んでみたのでメモ。今回読んだ書籍は以下の三冊。 実用 Go言語 ―システム開発の現場で知っておきたいアドバイス 作者:渋川 よしき,辻 大志郎,真野 隼記オライリージャパンAmazon Go言語プログラミングエッセンス エンジニア選書 作者:mattn技術評論社Amazon 改訂2版 みんなのGo言語 作者:松木 雅幸,mattn,藤原 俊一郎,中島 大一,上田 拓也,牧 大輔,鈴木 健太技術評論社Amazon それぞれの感想としては 実用Go言語:業務で使っていると起こるような色んなHowToを大量に提供してくれている。今の段階で全部読むというより、必要に応じて再度読むインデックス的な使い方が良さそう。クックブック的。 Go言語プログラミングエッセンス:最近出たのため、最近のGoに即した内容を学

    Goの学習のため書籍を三冊読んだ - $shibayu36->blog;
  • (2024年1月時点)RustのWebフレームワークの簡単な比較 - Activ8 Tech Blog

    はじめに こんにちは、エンジニアのクロ(@kro96_xr)です。 エンジニアと言いながら最近コードを書く機会が減っていたので、年末年始にRustにチャレンジしていました。 まだ全然理解しきれていないという自覚はありつつ、今回はRustの主要なWebフレームワークについて簡単に調査、比較していきたいと思います。 間違いなどありましたらDM等でご指摘いただけると幸いです。 なお、情報は全て調査時点(2024/1/8)のものとなります。 Frameworkの候補 フレームワークの比較をしてくれているリポジトリがあるので、この情報を元にピックアップしてみます。 github.com 人気のフレームワーク 名称 Repos Docs スター数 最新バージョン Activity actix-web Repo Doc 19.4k 4.4.1 181/year axum Repo Doc 14.3k 0

    (2024年1月時点)RustのWebフレームワークの簡単な比較 - Activ8 Tech Blog
  • async対応版Rocket、v0.5を試してみる - paild tech blog

    Rocketの特徴 Rocketにはこれまで何が起きていたのか v0.5を使う 今回作るアプリケーションのお題 使用するクレートの追加 Routing JSON Fairings: データベース接続 1. コネクションプールを保持するための構造体を用意する 2. 設定ファイルに情報を書く 3. 1で作った構造体をサーバーにattachし、アプリケーションを起動する。 Todoを作成するRoutingを用意する Responder: エラーハンドリング 注意したいこと まとめ 参考サイト お手伝いの @helloyuki です。 最近、asyncに完全対応したRocketがついにリリースされ、v0.5から使えるようになったというニュースが舞い込んできました。RocketはRustのエコシステムをかなり前から支えてきたクレートではあったものの、いくつかの事情によりしばらくなかなか技術選定されな

    async対応版Rocket、v0.5を試してみる - paild tech blog
  • Rustでsqlxを使ってRDBMSに接続する

    はじめに こんにちは。現在、僕はRustでアプリケーションを実装するために必要な個別のトピックについてひとつずつ学習を進めています。前回は、RustgRPCを実装するサンプルを書いてみた という記事を書きましたが、今回はDB接続を扱います。DB接続に関するRustのライブラリにはいくつか有力な選択肢があるようです。今回はその中の一つであるsqlxを取り上げます。 メモとしてざっくり調べた有力候補のライブラリについて簡単に記録しておきます。 Diesel : GitHubのスター数から見るに最も著名なORMのように思われます。 sqlx : スター数はDieselとほぼ横ばいです。非ORM。 SeaORM : sqlx上に構築されたORMらしいです。そこそこのスター数です。 ormx : SeaORM同様sqlxで実装されているようです。 ※スター数については2023年8月時点のものです

    Rustでsqlxを使ってRDBMSに接続する
  • Rust大好きっ子のためのデータベース考

    経緯 趣味プロジェクトとしてRustをサーバーサイドに採用したWebアプリケーションをぼんやり考えています。その過程で、データベースのチョイスについてかなり悩んだので、一度ここでまとめておきます。 前提 データベースに入れるデータは ・ユーザーデータ(名前、メールアドレスなど) ・アイテムデータ(ユーザーが登録するもの。アイテム名、更新時間など) といったごく一般的なものを考えます。 サーバーサイドのフレームワークは、actix-web…で考えていましたが、最終的には非同期ランタイムとしてtokioを使うaxumにしました(理由は後述)。 また、データ量やアクセス頻度については仮定をおきません。巨大なデータを扱うということになれば、おそらくその時点でかなり候補が絞られることになるかと思いますが、今回は運用面でのパフォーマンスの差については扱わないものとします。 特に今回は「趣味」なので、趣

    Rust大好きっ子のためのデータベース考
  • Rust の hyper は何が嬉しいか

    Rust でWebサーバーを書く時の技術選定をするときに調べていると hyper に必ず出会うと思う。これは黎明期から存在しているライブラリで、Webサーバーにしては珍しく version 1 まで到達している老舗だ(1に到達してたら安心って考え方が正しいかはさておき...)。このライブラリは actix-web や axum のような他のライブラリとは毛色が違い、かなり primitive だ。そのため axum のベースに使われてもいて、hyper はそのまま使わないライブラリなのかもしれない。 サンプルコードから存在意義がわかりにくい さて、そんな hyper だが公式の example はこのようになっている。 #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>>

    Rust の hyper は何が嬉しいか
  • RustのWebフレームワークで実現する“爆速アプリ開発” 「こういうのやりたい」がすぐできる、actix-webの活用 

    ウェブアプリケーションをRustで開発している、株式会社estie。今回開催された「Rust、何もわからない…」では、実サービスで活用されているRustについて、その活用方法の事例を紹介しました。estieでアルバイトとしてRustを用いたウェブアプリの開発に取り組んでいるkenkoooo氏。「actix-web」の活用について発表しました。 アジェンダの紹介 kenkoooo氏:では僕、kenkooooが「actix-webで快適Webアプリ生活」というタイトルで発表します。よろしくお願いします。 (スライドを示して)今日発表したいことは、actix-webというRustのWebフレームワークが、どれだけ使いやすいかということです。それから、これは立ち入った話なのですが、actix-webのミドルウェアという機能があって、それも今estie(株式会社estie)でけっこう使っているので、

    RustのWebフレームワークで実現する“爆速アプリ開発” 「こういうのやりたい」がすぐできる、actix-webの活用 
  • Rust by Example 日本語版が公式に公開されるまで

    はじめに 2024/07/25 にリリースされた Rust 1.80.0 にて Rust by Example の日語版が公式に公開されました。画面右上にある地球儀のアイコンから日語を選択可能になっています。 この取り組みを始めたのは2023年の10月頃だったのですが、さまざまなレビュー待ちやRustにおけるドキュメント公開フローをよく分かっていなかったことによる失敗もあり、最終的には1年近くかかってしまいました。 Rustはコンパイラの開発などかなり良くドキュメント化されている(Rust Compiler Development Guide)のですが、ドキュメントの管理についてはほとんど資料がなく、Zulip で聞かないと分からないようなこともありました。 この記事ではこの1年でやってきたことを時系列で書いていきます。Rustのドキュメントに貢献したい人には参考になる部分があるかもし

    Rust by Example 日本語版が公式に公開されるまで
  • Electron代替を目指す「Tauri 2.0」リリース候補版が公開。Windows/Mac/Linuxに加えてiOS/Androidアプリ開発も可能に

    Electron代替を目指す「Tauri 2.0」リリース候補版が公開。Windows/Mac/Linuxに加えてiOS/Androidアプリ開発も可能に Electronの代替を目指すRust製のアプリケーションフレームワーク「Tauri」の開発チームは、「Tauri 2.0」リリース候補版の公開を発表しました。 Everyone assumes your dev environment and network are safe. Tauri doesn't assume that & protects you as a dev. Tauri 2.0 RC for Mobile and Desktop available right now. Read the announcement:https://t.co/SXv1tgNHGm — Tauri (@TauriApps) August

    Electron代替を目指す「Tauri 2.0」リリース候補版が公開。Windows/Mac/Linuxに加えてiOS/Androidアプリ開発も可能に
  • export {}; が使われるTypeScript特有の事情

    TypeScriptのコードでは、export {}; という記述を見かけることがあります。これはECMAScriptの構文ではあるものの、これが使われる背景にはTypeScript特有の事情があります。この記事では、export {}; がなぜ使われるのか、どのような効果があるのかを解説します。 export {}; とは この構文は、exportというキーワードから分かるように、モジュールに関連する構文です。 一般に、export { ... };という構文は、既存の変数をモジュールからエクスポートするために使われます。例えば、次のようなコードが考えられます。 const foo = 42; const bar = "hello"; const banana = "banana"; export { foo, bar as hello, banana as "🍌", }; 変数をエク

    export {}; が使われるTypeScript特有の事情
  • Rust 1.80を早めに深掘り - あずんひの日

    日7/26(金)にリリースされたRust 1.80の変更点を詳しく紹介します。 もしこの記事が参考になれば記事末尾から活動を支援頂けると嬉しいです。 7月25日は蒸気機関車が初めて走った日 ピックアップ 遅延初期化されるグローバル変数を書けるようになった Optionの値を条件を満たしたときだけ取り出せるようになった スライスをパニックなしに分割できるようになった 配列を含むスライスを一次元化できるようになった パターンとして終端の含まれない範囲を使えるようになった useなしにsize_of等が使えるようになった 安定化されたAPIのドキュメント LazyCell サンプル LazyLock サンプル Duration::div_duration_f32 サンプル Duration::div_duration_f64 サンプル Option::take_if サンプル Seek::se

    Rust 1.80を早めに深掘り - あずんひの日
  • これまでと違う学び方をしたら挫折せずにRustを学べた話 / Programming Rust techramen24conf LT

    2024/07/27 TechRAMEN 2024 Conference 概要: 私にとって何番目の言語になるかはもう数えていませんが、昨年 Rust を学び、 OSS の開発ができるところまでやってきました。私はそれまで Rust の学習に何度か挫折しており、今回ようやくその壁を乗り越えたので…

    これまでと違う学び方をしたら挫折せずにRustを学べた話 / Programming Rust techramen24conf LT