タグ

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

  • Punditから考えるDRYな権限管理の設計方針 - Qiita

    TL;DR Web applicationを書いてると,たいてい業務ロジック実装のための分岐処理でコードが汚くなり,また色々な場所に同様な処理のコピペが発生する 権限管理用ライブラリであるPunditを使って業務ロジックにおける分岐処理を1箇所にまとめるときれいに整理できるケースがある 複雑なUser Roleベースの権限管理をするときはcancancanなどを使うべきで,目的に応じた使い分けが大事 書いていないこと Punditの詳しい使い方(コードベースが非常にシンプルでdocも充実しているので自分で読んだ方が早い) 他の権限管理ライブラリの使い方(筆者より優秀なエンジニアが書いた記事が沢山あるのでググった方がいい) 前置き Web applicationがある程度大きくなった時に生じる2大問題 ビジネスロジックの条件分岐でコードが汚れる問題 以下のようなビジネスロジックを実装するため

    Punditから考えるDRYな権限管理の設計方針 - Qiita
  • MySQLパーティショニングの設定、追加、削除、再構成 - Qiita

    まずこんなテーブルを作るとします。ここに毎月10万件以上のレコードが入ってくる予定です。 1レコードが57byteなので、月に5.7Mbyte、プライマリーキーを入れると60Mbyteくらいが入ってきます。 年間にすると720Mbyteなので、まぁデータ量的には余裕だと思うのですが、 100万レコードを超えるとレスポンスが鈍化するという印象があります。 というわけで、MySQLにあるパーティショニング機能を使い、データを振り分けたいと思います。 【参考】DB設計時のサイズ見積もり | よねのはてな テーブル作成 注意する点として、パーティショニングのキーにしたいカラムを、プライマリーキーに含める必要があるようです。 なので、オートインクリメントのカラムがあるテーブルだと辛い。構成を考えなおした方がいいかも。 CREATE TABLE `list_rtx` ( `member_id` var

    MySQLパーティショニングの設定、追加、削除、再構成 - Qiita
  • MySQLで簡単にランダムなテストデータを作成する方法 - Qiita

    MySQLで大量のダミーデータをテスト用に必要だったため、WEBをググって情報を集めてみました。 SQLだけで実現しているので使いやすいかと思います。 ##データ型別のランダムデータ作成方法 INT(1〜100の範囲)

    MySQLで簡単にランダムなテストデータを作成する方法 - Qiita
    gologo13
    gologo13 2016/07/22
    便利, 乱数生成
  • 新卒の子にどこまで勉強すれば良いですかね?と聞かれた件 - Qiita

    ちょっと、簡単に答えられなかったので、休み中にまとめました。 「どこまで勉強すれば良いか?」 という質問には、 自分の立ち位置や、今後の目標など関わるので、 それらを踏まえて考える必要があると思います。 職種によっても違いますが、質問された時の状況は、 Web系エンジニアが新卒の子に聞かれた形なので、 考慮いただきたいです。 また、そもそも、どんな背景をもったやつが書いてるんだ?と思う方も いらっしゃるかと思いましたので、簡単に自己紹介してから書きます。 書いている人の自己紹介 現在33歳で、エンジニアスタートしたのが、 2005年08月だったので、エンジニア歴は11年となります。 ほとんどの現場がデスマーチ状態だったので、2ヶ月くらい前に転職して、 現在はホワイトな会社のリクルート住まいカンパニーで、PHPを書いています。 言語歴としては、最初にJP1スクリプトを1年半くらいやって、次に

    新卒の子にどこまで勉強すれば良いですかね?と聞かれた件 - Qiita
  • MySQLクエリパフォーマンス改善簡易まとめ - Qiita

    数年やってないと記憶の彼方に飛んでいきそうだったので、MySQLのクエリ改善方法のテンプレを自分用に明記。 スロークエリを除去する事。 初めはとにかく観察。スロークエリを出力させて、観察する。 indexが効かないクエリを排除する。 indexが予期できない条件分岐によるクエリを廃止する。 場合によってはソートをさせない。コード側でソートさせる。 JOINをわざとさせないのも一つの手。後にDB分離レベルのシャーディング等が発生する可能性のあるようなシステムでは、JOIN禁止にする事は決して間違ってはいない。 indexを必ず効かせる レコード数に応じて、割当たるindexが異なることがあるので、必ず同じデータ数か実際の運用環境で検証すること。 但し、indexを増やし過ぎると、挿入時に更新対象が増えるため、必要最低限にすること。 explain してindexを確認する 特に注目しなければ

    MySQLクエリパフォーマンス改善簡易まとめ - Qiita
  • JavaScriptを劇的に教えやすくするWebサーバ作りました - Qiita

    近年、JavaScriptでコードを書こうとすると、お膳立て7割、コード書き3割みたいな事態がざらにあります。「お膳立て」の例としては、Gulp, Babel, Sass, PostCSS, WebPack, Rollup, Browserifyほか数限りなく。 たしかに、一旦フロントエンド開発に慣れてしまえば、お膳立てにかける時間は短縮することが可能です。でも、これを初学者に強いるのはツラすぎる...! 覚える方はともかく、 教える側がツライ。 今回、未来なJavaScriptCSSの文法で書いても、よしなにとりなしてくれるWebサーバ「Felt」を作ったので、ご査収ください。 (2016/7/19 関連ツールとの比較を追記しました) GitHub: https://github.com/cognitom/felt npm: https://www.npmjs.com/package/

    JavaScriptを劇的に教えやすくするWebサーバ作りました - Qiita
  • 早く・それなりの UI を実現する React コンポーネントセット 16 選 - Qiita

    これまで、開発者が「早く・それなりの UI 」を実現するために、Bootstrap などの CSS フレームワークが重宝されてきました。 しかし今では、React などのライブラリを使って UI をコンポーネント化するようになってきています。 React であっても、事前に CSS フレームワークを読み込んでおき、クラス名を付与することでこれまでと同じように使うことができます。 ただ、既存の CSS フレームワークは内部で jQuery を使用していることが多いので、React と jQuery を共存させるか、jQuery 部分を自前で実装しないといけません。 そこで React で「早く・それなりの UI 」を作れそうな React コンポーネントセットを手当たり次第に調べてみました。 Note: Web 向け UI の コンポーネントのみとなっています。React Native や

    早く・それなりの UI を実現する React コンポーネントセット 16 選 - Qiita
  • log4j.xml書き方メモ - Qiita

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" > <appender name="stdout" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%m%n" /> </layout> </appender> <root> <appen

    log4j.xml書き方メモ - Qiita
  • 中の人に聞いたGitHub flowの本当の使い方 - Qiita

    背景 今日GitHubの中の人のLTを聞く機会があって当のGitHub-flowを聞いてきたので 忘れない間にメモ GitHub-Flowのお約束 Masterにあるものは即座にデプロイ可能な状態に保つこと ブランチの上で必ず作業し、その生存期間を短くすること すぐにPRを作り、フィードバックやサインオフを求めること マージしたらすぐにデプロイすること 当のGitHub-flow 中の人曰くよくマージしてからデプロイすると言っている人がいるらしい。 だが当のGitHub-flowは違う。 当のflowは PR作成 ⇩ 修正 ⇩ デプロイ ⇩ フィードバック ⇩ マージ らしい。 マージ前にデプロイすることでさらにユーザーに近いところでフィードバックを受けることができるとのこと。 ダメなら直ちにmasterに戻す。なので決まりごとの中にmasterは直ちにデプロイできる状態にあること

    中の人に聞いたGitHub flowの本当の使い方 - Qiita
  • フロントエンドエンジニア(mizchi)が暇な時にやること - Qiita

    暇というか日常的にやってること https://news.ycombinator.com/ と http://www.echojs.com/ と http://b.hatena.ne.jp/efcl/ をフィードリーダーに突っ込んでいて、面白そうなのをメモっておく 暇なとき 日頃メモってたライブラリの試し切りをする 面白かったら紹介記事を書く 多少やる気リソースが多めだと新しい言語(最近はRustかElixir)の勉強を進める http://codepen.io/ で面白い動きするやつのコードを探してコード読む とくにCodePenがオススメで、割とゲラゲラ笑いながら読めるやつが多いので楽しい。CodePenのテクニックはそのまま自分の業務に持ち込むと悪目立ちするので控えているが、Webでもこういう演出ができる、と頭の片隅にいれておくことで、いずれ何かに役立ったりする。たとえば昨日読んだ奴

    フロントエンドエンジニア(mizchi)が暇な時にやること - Qiita
  • 【チュートリアル】機械学習を使って30分で固有表現抽出器を作る - Qiita

    はじめに 固有表現抽出は、テキストに出現する人名や地名などの固有名詞や、日付や時間などの数値表現を抽出する技術です。固有表現抽出は、質問応答システム、対話システム、情報抽出といった自然言語処理を用いた応用アプリケーションの要素技術としても使われています。 今回は機械学習技術を使って固有表現抽出器を作ってみます。 ※注意事項 理論的な話は一切出てきません。理論を知りたい方は他を当たってください。 対象読者 固有表現抽出を少しは知っている方 固有表現抽出器を作ってみたい方 Pythonコードを読める方 固有表現抽出とは? ここでは、固有表現抽出の概要と方法について説明します。 概要 固有表現抽出は、テキストに出現する人名や地名などの固有名詞や、日付や時間などの数値表現を抽出する技術です。具体例を見てみましょう。以下の文から固有表現を抽出してみます。 上記の文に含まれる固有表現を抽出すると人名と

    【チュートリアル】機械学習を使って30分で固有表現抽出器を作る - Qiita
  • Spring MVC(+Spring Boot)上でのリクエスト共通処理の実装方法を理解する - Qiita

    今回は、Spring MVCベースのWebアプリケーション(画面アプリ or REST API)で、リクエスト処理内の任意のポイントで共通処理を実行する方法をについて説明します。なお、Servlet 3.0でサポートされた非同期処理利用時の共通処理の実装は、今回は対象外として別の回で紹介したいと思います。(乞うご期待!!) 動作検証バージョン Spring Framework 5.3.6 (4.3.3.RELEASE -> 5.1.7.RELEASE) Spring Boot 2.4.5 (1.4.1.RELEASE -> 2.1.5.RELEASE) Tomcat 9.0.45 Note: [2021/5/3] 投稿から5年(前回更新から約2年)くらいたっても引き続き一定のViewが継続してあるので、最新のSpring(Spring Boot)バージョンの内容に更新しました。内容自体には

    Spring MVC(+Spring Boot)上でのリクエスト共通処理の実装方法を理解する - Qiita
    gologo13
    gologo13 2016/06/23
    AOPわかりやすい.
  • MySQL - InnoDBのロック関連まとめ - Qiita

    メモ開放。InnoDBの行ロック関連について、それぞれの項目が必ずしも並列関係にあるわけではないが、以下のようにまとめていく。 排他ロックと共有ロック SELECT ~ FOR UPDATE SELECT ~ LOCK IN SHARE MODE 排他ロックと共有ロック 読み取りを許すかどうかの違い。排他ロックは対象行を全てのクエリからロックするため、UPDATEやDELETEなどの更新クエリはもちろん、SELECTなどの読み取りクエリも通さない。共有ロックは更新クエリを通さないが、読み取りクエリは通す。 (追記:排他ロックは分離レベルによってはSELECTを通すとのこと。 公式 ) 排他ロックは全てのクエリを通さず、共有ロックは排他ロックを伴うクエリを通さない、と言い換えたほうがいいかもしれない。 公式では共有ロックは同トランザクション内のselectを許し、排他ロックは同トランザクショ

    MySQL - InnoDBのロック関連まとめ - Qiita
  • 海外転職の面接の時に英語で聞かれるRubyとRailsの基礎質問を徹底マスターしておく方法 - Qiita

    海外転職技術面談の形式に関してはこちらのブログに何度か書いたので、今回はその具体的な対策を書いた。ずばり「RubyRailsに関する英語の基礎質問と解答例」 書類選考をみごとに通過したら次は電話面談かもしくはオフィスでの面談になる。いづれにしても採用側の会社からはエンジニアが2,3人ぐらい出てきて応募者の相手をすることになる。最初は当に基礎的な技術質問から入る。それは誰にでも分かるような質問と答えで応募者に話してもらって緊張をほぐす意味と、あともうひとつは「箸にも棒にもかからない人に早々とご退場」願うためだ。あくまでメインは技術質問ではなくコーディングインタビューの方。 なんにしても技術質問の時点で詰まってはいけない。そんなに難しいことでもないし、技術分野に合わせて聞かれる内容はほぼ同じなので十分に対策が取れる。英語がネイティブじゃない応募者が詰まる原因とその対策は以下の3つの順にな

    海外転職の面接の時に英語で聞かれるRubyとRailsの基礎質問を徹底マスターしておく方法 - Qiita
    gologo13
    gologo13 2016/06/22
  • 初心者を戒めるPHP - Qiita

    この記事は何か 挑発的な文言になってる箇所はあるものの、内容としてはそれなりにまじめに書いたつもり。むしゃむしゃしてやった。いまでは反芻してゐる。 PHPDocは必ず書け あらゆる再利用可能な手続きは、他人が容易に応用できるように型が明示的でなければいけない。メンバー全員が実装コード全てを把握できるものならそれが理想だけれど、残念ながら時間は有限だ。ヘッダだけを読んでメソッドの仕様が理解でき、またはコードを読む助けになるようなコメントが良い。 有名な事実を紹介すると、多くのコードは数か月(早ければ数日!)も経てば、他人が書いたコードに感じられるほど理解できなくなることがしばしばある。もちろん設計の練度にもよらうが、設計判断について注意を要した点などをコメントに残しておくことで、ひいては未来の自分の役に立てることができる。 お前の先輩は「PHPには型がない」などと知ったかぶって意味不明1なこ

    初心者を戒めるPHP - Qiita
  • Flyway使い方メモ - Qiita

    Java Magazine の第 17 号でも紹介されている噂?の Flyway を使ってみる。 Flyway とは Flyway は、オープンソースのデータベースマイグレーションツール。 Flyway を使うことで、データベースの状態をバージョン管理できるようになる。 Flyway (マイグレーションツール)を使う理由 データベースを使った開発をしていると、以下のような問題が往々にして発生する。 よくある問題 あるデータベースの、現在の状態が分からない。 あるパッチ用 SQL が、データベースに既に適用されているか分からない。 番環境で緊急対応が必要になり適用したパッチが、テスト環境にも反映されているか分からない。 新しいデータベース環境を作成するときに、どの SQL を、どの順番で実行すればいいか分からない。 そんなときに、 Flyway のようなデータベースをバージョン管理するツー

    Flyway使い方メモ - Qiita
  • Spring Framework (Spring Boot)のTips - Qiita

    概要 Spring Framework (Spring Boot)のTipsです。随時更新していく予定です。 ある程度ボリュームのある内容は別記事として投稿し、そこへリンクしています。 また、最初のころのtipsは2015年投稿で使用バージョンが古く、現在では参考にならないかもしれませんのでご注意ください。 1. プロパティファイルの値をフィールドのデフォルト値に設定する 環境: Spring Boot 1.3.0.M5, Java 1.8.0_60 Valueアノテーション Valueアノテーションを使用してプロパティファイルの値をフィールドのデフォルト値とすることができます。 Annotation Type Value myapp: string: property: Some text propertyDefault: # propertyUnresolvable: int: pro

    Spring Framework (Spring Boot)のTips - Qiita
  • React + Reduxを使ったWebアプリケーション開発速習会@Wantedly - Qiita

    React + Reduxを使ったWebアプリケーション開発速習会@Wantedly のための資料です。 WantedlyではSingle Page Applicationなどより複雑な構成にも耐えられるよう、React + Reduxを中心としたWebフロントエンド技術スタックを導入しました。 ES2015 React Redux Immutable.js CSS Modules webpack 導入の経緯などは以前発表した の資料を参照ください! WantedlyReact + Reduxを導入した話 今回はこれらのスタックを使って実際にSingle Page Application構成のアプリケーションをハンズオンで作成します。 開発の準備 開発環境 npmライブラリを使用するため、開発マシンにnode.jsがインストール済みであることを前提としています。 サンプルはv5.1.1

    React + Reduxを使ったWebアプリケーション開発速習会@Wantedly - Qiita
  • OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る

    はじめに この文書では、OAuth 2.0 + OpenID Connect サーバーをゼロから一人で実装した開発者(私)が、得られた知見について書いていきます。基的には「実装時に考慮すべき点」を延々と述べることになります。 そのため、この文書は、「素早く OAuth 2.0 + OpenID Connect サーバーを立てる方法」を探している方が読む類のものではありません。そのような情報をお求めの方は、「Authlete を使って超高速で OAuth 2.0 & Web API サーバーを立てる」を参照してください。そちらには、「何もない状態から認可サーバーとリソースサーバーを立て、アクセストークンの発行を受けて Web API をたたいて結果を得る」という作業を、所要時間 5 ~ 10 分でおこなう方法が紹介されています。 文書のバイアスについて 私は、OAuth 2.0 + Ope

    OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る
    gologo13
    gologo13 2016/06/06
    読んだ。勉強なった。
  • JavaEE7 環境構築 - Qiita

    JavaEE7環境を構築する 今回は以下の様な構成を考えています。 Java8 JavaEEコンテナはWildFly(http://wildfly.org) 開発環境はEclipse(Luna) Mavenを使う(今回はGradleは使わない) JavaEE7に対応しているコンテナは、WildFlyとGlassfishがありますが、今回はWildFlyを使うことにします。(理由は、直近で使う機会があるため) JavaEE7の仕様 JSR 236: Concurrency Utilities for JavaEE 1.0 JSR 338: Java Persistence API 2.1 (JPA) JSR 339: JavaAPI for RESTful WebServices 2.0 (JAX-RS) JSR 340: Java Servlet 3.1 JSR 341: Expressi

    JavaEE7 環境構築 - Qiita