タグ

ブックマーク / qiita.com (165)

  • Spring Boot 3.0 (Spring Framework6.0) へのアップデートで対応したこと - Qiita

    概要 自分自身の学習用に作成した Spring Boot アプリケーションを3.0に上げました。その際に対応したことをまとめます。 複雑なアプリでは無いので修正内容も限定的ですが誰かの参考になればと思います。 尚、修正箇所は Spring Security関連が多めです。また 言語はKotlinですがJavaの場合でも同じ対応でOKだと思います。 TL;DR 修正内容はPRを作成しているのでよければそちらをご覧ください。 いくつかの修正はSpring Bootのアップデートと関係ないのでここでは説明しません。 修正点 主に自分がつまずいた点を挙げていきます。詳細を確認したい場合は冒頭のPRをご覧ください。 依存関係のアップデート spring-boot-starter-xxx のバージョンを全て 2.7.5 から 3.0.0 上げました。 つまずいた点 spring-security-te

    Spring Boot 3.0 (Spring Framework6.0) へのアップデートで対応したこと - Qiita
  • Bolt for Python + AWS Lambda & S3 で運用するほぼゼロコスト Slack アプリ - Qiita

    こんにちは、Slack の公式 SDK 開発と日の Developer Relations を担当している瀬良 (@seratch) と申します 次世代プラットフォーム機能が盛り上がりつつある昨今ですが、以下の記事でも書きました通り、Bolt フレームワークも引き続きご利用いただけます。 この記事では、Bolt for Python を使ってほぼゼロコストで運用することができる Slack アプリのデザイン例についてご紹介します。 Bolt for Python とは? Bolt とは、Slack が提供する公式の Slack アプリ開発フレームワークです。全てのプラットフォーム機能をサポートしており、Express.js のルーティング機能に似たインターフェースでリスナー関数を登録するだけで、様々なイベントに応答するインタラクティブな Slack アプリを簡単に開発することができます。

    Bolt for Python + AWS Lambda & S3 で運用するほぼゼロコスト Slack アプリ - Qiita
    jukuringo
    jukuringo 2022/12/03
  • テックリードとして入社してからやったことをまとめてみた。 - Qiita

    現在の会社にテックリード(1人目の正社員エンジニア)として入社して、2年間やってきたことを書いています。 エンジニア二年目でテックリードとして試行錯誤してきて、自分の振り返りもしたいという思いから記事を書きました。 (前提として、シード期のスタートアップで実行してきたことです。) 入社時のチーム課題 入社当時は、2週間単位のスプリントでスクラムを回してましたが、全員が業務委託だったこともあり、完全な内製化を進める必要があり、主な課題は以下でした。 継続的リリースが困難な状態になっており、それを解消することが急務 社内にエンジニアがいなかったので、開発組織体制づくりが必要だった。 ウォーターフォール寄りのリリースが多く、継続的にリリースする文化がなかった。 リファクタリングやテストコードが不十分だった。 改善したこと Zenhubを導入 それまでは、GitHub Projectで進捗管理をし

    テックリードとして入社してからやったことをまとめてみた。 - Qiita
  • Spring Bootのログ設定を変更する - Qiita

    Spring Bootを使う時のログ設定方法とlogback.xmlを記述する際のガイドラインです。 Spring Bootのデフォルトログ設定 コンソールにのみログが出力されます。 ルートのログレベルは[INFO]です。 ログの書式は 25.1 Log format に書かれています。 ログ実装はLogbackが使用されます。 Logback以外を使用したい場合は 66.2 Configure Log4j for logging を参考にpom.xmlを変更します。 ログ設定方法 Spring Bootでのログ設定方法は2つあります。 プロパティで設定する application.ymlなどでプロパティを設定します。 設定は簡単ですが、設定できる内容は限られています。 logback.xmlを記述する Logbackの通常の使い方と同じでクラスパスのルートにlogback.xmlを作成し

    Spring Bootのログ設定を変更する - Qiita
  • Remark使い方メモ(Markdown でスライドを作るやつ) - Qiita

    gnab/remark | GitHub Markdown で記述したテキストをスライド形式にして表示してくれるツール。 同種のツールに reveal.js があるが、あちらよりもシンプル。 というか、デフォルトだとスタイルについては基なにもしない。 スタイルは CSS を使って自力で調整する。 必要なファイルも、特別なフォントを指定しないのであれば、実質 js ファイルのみ。 シンプルなスライドをパパっと作りたい場合は、 Remark がいい気がする。 凝りたい場合は、 CSS 使っていくらでも凝ることができる。 Hello World <!DOCTYPE html> <html> <head> <title>Title</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <style

    Remark使い方メモ(Markdown でスライドを作るやつ) - Qiita
    jukuringo
    jukuringo 2022/11/03
  • RDB - 実例で学ぶ、JOIN (NLJ) が遅くなる理屈と対処法 - Qiita

    "Nested Loop Joinしか取り上げて無いのにタイトルが大きすぎないか" と指摘を頂いたので、タイトルを修正しました。Merge JoinとHash Joinのことはまた今度書こうと思います。 「JOINは遅い」とよく言われます。特にRDBを使い始めて間がない内にそういう言説に触れた結果「JOIN=悪」という認識で固定化されてしまっている人も多いように感じています。 たしかに、JOINを含むようなSELECT文は、含まないものに比べて重たくなる傾向があることは事実です。また、質的に問い合わせたい内容が複雑で、対処することが難しいものも存在します。しかし、RDBの中で一体どういうことが起きているのかを知り、それに基いて対処すれば高速化できることも少なくないと考えています。 稿では、JOINの内部動作を解説した上で、Webサービスを作っているとよく出てくるJOIN SQLを例題に

    RDB - 実例で学ぶ、JOIN (NLJ) が遅くなる理屈と対処法 - Qiita
  • 【絶対に観るべき】英語のYoutubeチャンネル集【プログラミング】 - Qiita

    こんにちは。masakichiです。 わたしはプログラミングの学習をしたり、情報収集をする時に好んで動画を閲覧することが多いです。 そんな中、最近英語圏のYoutubeチャンネルのクオリティが有料級並みに高いことに気づきドハマりしています。 ぜひ、プログラミングを学ぶ同志にも視聴してほしいと思い、おすすめのYoutubeチャンネルをまとめました。 なお、わたしはフロントエンドを主としていますので、紹介するチャンネルにも偏りがあります。予め、ご了承のほどよろしくお願いいたします。 The Coding Train 所感 スネークゲームやパズルゲームなどクリエイティブなチュートリアルがたくさんあるチャンネルです。運営者が教育仕事もしているようなので、説明がわかりやすいと思いました。また、語学学校の先生みたいなノリで喋るので、聞き取りやすく親しみを感じることができると思います。 技術範囲 p5

    【絶対に観るべき】英語のYoutubeチャンネル集【プログラミング】 - Qiita
  • Reactに有利なベンチマークを作ってみた - Qiita

    皆さんこんにちは。現在、フロントエンドでは宣言的UIが大流行しており、そのためのライブラリもReactを筆頭に複数存在しています。 ライブラリが複数存在するところには当然のように比較や論争が起こるものですが、UIライブラリの場合はパフォーマンスがよく焦点となります。 筆者はReactの信者ですが、Reactは古株ということもあってか、最近の議論ではReactは他のライブラリと比較されるかませ犬のような役割を担うのがよく見られます。「仮想DOMは必要ない」といった類のものです。 しかし、筆者の考えではReactは今でも、もっとも真剣にパフォーマンスに取り組んでいるUIライブラリです。特に、Reactはパフォーマンスを高いユーザーエクスペリエンスのための手段として捉えており、ドキュメントにもユーザーエクスペリエンスという言葉が多く出てきます。 そこで、今回はReactが最も有利になるようなベン

    Reactに有利なベンチマークを作ってみた - Qiita
  • PHPでトランザクションと関係なく排他制御したい - Qiita

    Webアプリケーションは基はHTTPリクエストごとにステートレスなので、いくらプログラムが並列で動いていても、それをほとんど意識せずに書けて簡単です。が、データを保存するとなると少々厄介です。ユーザーが自分専用のデータを変更するときは問題ありません。同じ共有データに同時に複数の人から書き込みがある場合が問題です。 といっても、WebではRDBを使って当たり前というこの時代、トランザクションという高級で暗黙な排他制御があるんだから任せればいいやと、同時書き込みを気にする人は少なくなりました。むかしはファイルシステムのロックを利用したりして、アクセスを排他制御したものです。 なーんだ、いまどきトランザクション切れないSQLなんてないから、排他制御なんてもう忘れていいんじゃん... とは言えない事情が最近出てきています。NoSQLを併用したとき、バックグラウンドに非同期のジョブキューがあるとき

    PHPでトランザクションと関係なく排他制御したい - Qiita
  • WHERE 条件のフィールドを UPDATE するのって,明示的にロックしてなくても安全?全パターン調べてみました! - Qiita

    WHERE 条件のフィールドを UPDATE するのって,明示的にロックしてなくても安全?全パターン調べてみました!MySQLSQLPostgreSQLDatabaseQiitaEngineerFesta2022 TL; DR MySQL/Postgres とも, MVCC アーキテクチャの恩恵で, SELECT と UPDATE は基的には競合しない。 単一レコードのシンプルな UPDATE でも排他ロックされ,排他ロック中のレコードへの UPDATE での変更操作は トランザクション分離レベルによらず ブロックされる。UPDATE 文に含まれる WHERE 句での検索もブロックされ,これはブロックされない SELECT による検索とは別扱いになる。 但し UPDATE 文の WHERE 句上で,更新対象をサブクエリの SELECT から自己参照している場合は例外。トランザクション分離

    WHERE 条件のフィールドを UPDATE するのって,明示的にロックしてなくても安全?全パターン調べてみました! - Qiita
  • 初心者プログラマーのための変数/関数/メソッドの英語命名規則 - Qiita

    はじめに 「なんか、レビューのたびに変数名を指摘されてる気がする...」 「日人なんだから、英語で命名とか無理...」 こんなお悩みありませんか? この記事では、「プログラマー英語の命名で悩んだ時にどうすれば良いか」をフローチャート形式で解説します! これであなたも駆け出しエンジニアを卒業できるかも!? ※記事はLaravel,Vue.jsのプロジェクトで運用されているルールを元に解説しています。 プロジェクト内だけの内輪ルールも含まれていますので、ご了承ください。 対象者 この記事は下記のような人を対象にしています。 駆け出しエンジニア プログラミング初学者 PHP(Laravel),JavaScript(Vue.js)で英語のネーミングに苦戦中 前提知識 下記のような中学・高校で学ぶ内容については理解していること前提で解説します。悪しからず。 三単現のsって何? 5文型(SV/S

    初心者プログラマーのための変数/関数/メソッドの英語命名規則 - Qiita
    jukuringo
    jukuringo 2022/06/17
    名前がモデルで管理されてないせいで迷うパターンも多いのよ。
  • Spring Security 5.4〜6.0でセキュリティ設定の書き方が大幅に変わる件 - Qiita

    この記事について 最近(5.4〜6.0)のSpring Securityでは、セキュリティ設定の書き方が大幅に変わりました。その背景と、新しい書き方を紹介します。 非推奨になったものは、将来的には削除される可能性もあるため、なるべく早く新しい書き方に移行することをおすすめします。(既に削除されたものもあります) この記事は、Spring Securityのアーキテクチャの理解(Filter Chain、 AuthenticationManager 、 AccessDecisionManager など)を前提としています。あまり詳しくない方は、まずopengl_8080さんのブログを読むことをおすすめします。 サンプルコード -> https://github.com/MasatoshiTada/spring-security-intro 忙しい人のためのまとめ @Configuration

    Spring Security 5.4〜6.0でセキュリティ設定の書き方が大幅に変わる件 - Qiita
  • 新人社員がSpring Securityで認証・認可機能を一から作ってみた - Qiita

    長い話を抜きにして、早くコードを書きたいという人は1. はじめにを飛ばしてください。 Spring初学者は2. プロジェクトの作成から、 簡易な認証・認可機能を実装したい人は3. 簡易な認証・認可機能の実装から、 実業務向けの認証・認可機能を実装したい人は4. 実業務向け認証・認可機能の実装から読み始めると良いと思います。 1. はじめに 1-1. 背景 まず最初に、認証・認可について説明します。簡単に説明すると、以下のようになります。(詳しく知りたい人への参考ページ:よくわかる認証と認可) 認証 (Authentication) 通信相手が誰であるかを確認すること。 認可 (Authorization) 画面にアクセスする権限や処理を行う権限など特定の条件に対して、リソースアクセスの権限を与えること。 この認証・認可の機能をSpring Frameworkで作成されたWebアプリケーショ

    新人社員がSpring Securityで認証・認可機能を一から作ってみた - Qiita
    jukuringo
    jukuringo 2022/06/02
  • SpringのAbstractRoutingDataSourceを使ってシャーディングっぽいことをしてみる! - Qiita

    SpringのAbstractRoutingDataSourceを使ってシャーディングっぽいことをしてみる!JavaspringSpringBoot 今回は、Springが提供しているAbstractRoutingDataSource + Spring AOPを利用して、アプリケーションレイヤでシャーディングっぽいことを実現する方法を紹介します。 シャーディングはデータを複数のサーバに(透過的に?)分散させる機能のことで、負荷分散による性能向上やリソース分散によるコストパフォーマンス向上などを目的に使います。エントリーではアプリケーションレイヤでシャーディングっぽいことを実現する方法を紹介しますが、RDBMS、NoSQL、KVSなど自体にシャーディング機能をもっていることも多いため、まずはインフラストラクチャレイヤでシャーディングを実現する方法を検討する方がよいと思います!! 動作検証バ

    SpringのAbstractRoutingDataSourceを使ってシャーディングっぽいことをしてみる! - Qiita
  • Spring BootでDataSourceのBeanを複数作る - Qiita

    この記事について Spring Bootでは、Auto Configurationにより DataSource のBeanが1つ作られます。しかし自分で明示的に DataSource のBeanを定義すると、Auto Configurationによって作られるはずだった DataSource Beanが作られなくなってしまいます。 では、どうやって DataSource のBeanを2つ作るかと言うと、自分で明示的に DataSource のBeanを2つ作ればよいのです。 方法は大きく2つです。 方法① DataSource などのサブクラスを各DB用に作る 方法② @Qualifier を利用する 方法①のみ、ソースコードはGitHubにおいてあります。 環境 JDK 17 Spring Boot 2.7.0 spring-boot-starter-web spring-boot-st

    Spring BootでDataSourceのBeanを複数作る - Qiita
    jukuringo
    jukuringo 2022/05/31
  • Spring Security設定の解説メモ(OAuth 2) - Qiita

    SecurityConfigパッケージ作成 自分は以下のパッケージに作成しました。 SecurityConfigコード package jojoidu.boot.springboot.config.auth; import jojoidu.boot.springboot.domain.user.Role; import lombok.RequiredArgsConstructor; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security

    Spring Security設定の解説メモ(OAuth 2) - Qiita
    jukuringo
    jukuringo 2022/05/22
  • Spring BootでSpring SecurityのCSRF対策を使う - Qiita

    ちょっと前にいじってたんですが、諸々忘れかけているので復習を兼ねてまとめてみます。 環境 Spring Boot 1.3.3.RELEASE 設定 依存関係を追加 ...中略 <dependencies> ...中略 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> </dependencies> ...中略 設定クラス追加 org.springframework.security.config.annotation.web.WebWebSecurityConfigurerAdapter を継承した設定クラスを作成し、@EnableWebSecurityを付与しておきます。 package j

    Spring BootでSpring SecurityのCSRF対策を使う - Qiita
    jukuringo
    jukuringo 2022/05/21
  • Spring Securityを使って、3つ以上のパラメータをJSON形式で認証する - Qiita

    @Getter @Setter public class LoginUser extends org.springframework.security.core.userdetails.User{ private long userId; private String userName; // 他に保持したいプロパティがあれば追加 } public class CustomAuthenticationFilter extends UsernamePasswordAuthenticationFilter { @Override public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) { try { Principal principal = ne

    Spring Securityを使って、3つ以上のパラメータをJSON形式で認証する - Qiita
    jukuringo
    jukuringo 2022/05/20
  • Spring Security 使い方メモ 認証・認可 - Qiita

    Spring Security は 5.4 以降、設定の書き方に大幅な変更が入っています。 詳しくは @suke_masa さんの Spring Security 5.7でセキュリティ設定の書き方が大幅に変わる件 - Qiita を参照してください。 基礎・仕組み的な話 Remember-Me の話 CSRF の話 セッション管理の話 レスポンスヘッダーの話 メソッドセキュリティの話 CORS の話 Run-As の話 ACL の話 テストの話 MVC, Boot との連携の話 番外編 Spring Security にできること・できないこと 認証 UserDetailsService:ユーザー情報を検索する ユーザーの情報を検索する役割は、 UserDetailsService が担っている。 Spring Security には UserDetailsService を実装したクラス

    Spring Security 使い方メモ 認証・認可 - Qiita
    jukuringo
    jukuringo 2022/05/18
  • OFFSETを使わない高速ページネーションを任意のPHPフレームワークで超簡単に実現する - Qiita

    はじめに Qiita芸人とか巷で言われますが Qiita の Advent Calendar は初参加です。お手柔らかにお願いします。 Laravel Advent Calendar 2017 4日目の記事になります。 3日目の記事は, @namaozi さんの Laravel5.5でお手軽にフィルタ&検索付きメモアプリを作るチュートリアル でした。クエリスコープを使ってコントローラをシンプルに保てるのはLaravelのいいところですね!このチュートリアルには登場しませんでしたが,今回の私のエントリはページネーションのお話になります。パフォーマンスチューニングされた複雑なページネーションを書こうとするとコントローラが煩雑になりがちですが,この記事で紹介する手法を使えばとてもシンプルに記述することができます。 ページネーションといえば,Webアプリケーションに頻繁に実装が求められる機能ですね

    OFFSETを使わない高速ページネーションを任意のPHPフレームワークで超簡単に実現する - Qiita