タグ

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

  • リポジトリの言語割合にドキュメントを含めないようにする方法 - Qiita

    GitHubには各リポジトリがどういった言語で構成されているのかを表示する機能がある(↓こういうの) デフォルトでGitHubがいい感じにしてくれるが、標準から外れたディレクトリ構成になっていると、意図しない感じになったりすることがある。具体的には、標準とは違う場所に 依存ライブラリが直接置かれている ドキュメントが書かれている と言語の割合が狂う。例えば、↑の画像で引用したリポジトリではJavaScriptのモジュールを作っているが、標準とは少し違う場所にドキュメントを置いている都合で、意図せずCSSHTMLが合算されてしまっている。気にしなければいいという話ではあるのだが、どうしても気持ち悪い場合はリポジトリルートに .gitattributes というファイルを用意して みたいにすることで解決することができる。こうすると special-vendored-path に入っているファ

    リポジトリの言語割合にドキュメントを含めないようにする方法 - Qiita
  • Active StorageのURLを期限付きにすることでセキュアに利用する - Qiita

    はじめに ActiveStorageにデフォルトで用意されているURLヘルパでは、何も認証が掛かっていない永続的なURLが生成されます。 具体的にはバックエンドがs3の場合、以下のような2種類のURLが生成されます。 https://example.test/rails/active_storage/blobs/redirect/SIGNED_ID/sample.jpg https://BUCKET.s3.ap-northeast-1.amazonaws.com/KEY?QUERY この場合、1のrailsのURLは認証なし(期限なしのSigned Id)の永続的なURLで、そこからリダイレクトされる2のs3のURLが期限付きという挙動になります。 そのため万が一、1の永続的URL漏洩時に備えて何かしらの認証処理を挟もうとすると一手間必要となります。 ログインユーザーなら誰でも全てのファイ

    Active StorageのURLを期限付きにすることでセキュアに利用する - Qiita
    aki77
    aki77 2021/06/22
  • GraphQLはサーバーサイド実装のベストプラクティスとなるか - Qiita

    この記事は GraphQL Advent Calendar 2020 14 日目の記事です。 前回の記事は @joe-re さんの 「ライブラリの実装からCursor-based paginationにおけるcursorのフォーマットのベストプラクティスを探る」 でした。 前置き GraphQLは2010年代後半に出てきた技術の中でも個人的に特に強力なアプリケーション実装パターンの一つだと思っているのですが、シンプルな実装なのに利用用途が豊富にあることと利用する立場が違うと全く印象を抱く事から全体像を掴みづらく、来持つべきポテンシャルに対してまだ認知が広がっておらず利用されていないように感じます。 今回はサーバーサイドからの視点を中心にGraphQLを構築する要素を分解して解説するのとともに、それを利用した際にWebアプリケーション開発やそれに関わるエンジニアに起きうる変化について書いて

    GraphQLはサーバーサイド実装のベストプラクティスとなるか - Qiita
  • 2021年にGraphQL Code Generatorを使うなら、TypedDocumentNodeを使おう - Qiita

    2021年にGraphQL Code Generatorを使うなら、TypedDocumentNodeを使おうTypeScriptGraphQLapollographql-codegen この記事は GraphQL Advent Calendar 2020 8日目の記事です。 前回の記事は @mtsmfm さんの GraphQL アンチパターン - 孫煩悩 - でした。 概要 TypedDocumentNode は、 GraphQL Code Generator を使って TypeScript のコードを生成するときの出力先のひとつで、 2020年7月に登場しました。 GitHub GraphQL Code Generator 公式ドキュメント 出力結果はただの DocumentNode オブジェクト(gql 関数にクエリを渡して得られるもの)ですが、 TypeScript のジェネリクス

    2021年にGraphQL Code Generatorを使うなら、TypedDocumentNodeを使おう - Qiita
  • Github Actionsでgitのブランチ運用ルール違反に気付きやすくする - Qiita

    はじめに 番リリース用ブランチへのマージ前に、検証用ブランチにマージして動作確認するという運用ルールになっているケースは比較的多いかと思います。 しかし番リリース用ブランチへのPR時に、当に検証用ブランチにマージ済みかどうかレビューでチェックという運用だと見逃しが発生する可能性があるし面倒ですよね。 そんな不便を解消するために作ったアクションを紹介します。 何が出来るの? pull_requestイベントのアクションとして実行することで、指定ブランチにマージされていなかったらコメントで指摘してくれるようになります。 使い方 masterブランチへのPR時に必ずstagingブランチにマージされていることを検証したい場合の設定例。 name: Check merged on: pull_request: branches: - master jobs: check-staging: r

    Github Actionsでgitのブランチ運用ルール違反に気付きやすくする - Qiita
  • RSpecの実行結果を分かりやすくするGitHub Actionを作った - Qiita

    はじめに CI/CDのサービスとして最近はGitHub Actionsを利用しているのですが、CircleCIと比較した時にRSpecが失敗した時の実行結果が分かりにくいのが不満でした。 そんなストレスを解消するために社内ハッカソンで作った以下のGitHub Actionを紹介します。 RSpec Report · Actions · GitHub Marketplace · GitHub 何が出来るの? PRイベントの場合は失敗結果がコメントされます。 またコメントされることで同様の内容がメールでも通知されるので、失敗したテストの内容がGitHubにアクセスしなくても把握できるようになります。 PRイベント以外の場合はChecks API経由で通知されます。 使い方 name: Build on: pull_request: jobs: rspec: steps: # RSpec実行の為

    RSpecの実行結果を分かりやすくするGitHub Actionを作った - Qiita
  • Railsのcsvダウンロードで直面する数々の問題を解決したらgemができた 〜csb gemの紹介〜 - Qiita

    class PostsController < ApplicationController def index @posts = Post.all end end require 'csv' CSV.generate do |csv| column_names = %w[投稿日 カテゴリ タイトル 文] csv << column_names @posts.each do |post| column_values = [ l(post.created_at.to_date), post.category.name, post.title, post.content, ] csv << column_values end end しかしこのサンプルコードでは次のような問題が解決出来ていません。 Excelで開くと文字化けする レコード件数が大量にあった場合にメモリエラーやタイムアウトエラー

    Railsのcsvダウンロードで直面する数々の問題を解決したらgemができた 〜csb gemの紹介〜 - Qiita
    aki77
    aki77 2020/09/10
  • 【Vue 2.x】Vueコンストラクタ関数をWebコンソール上で見つける方法 - Qiita

    Vue コンストラクタ関数とは? Vue.js 2.x 系を webpack などのバンドラと共に使用している方にとっては、この Vue のことです: <script> タグを貼り付けるだけのいわゆる「CDN版」の Vue.js を利用している場合は window.Vue で簡単に Vue コンストラクタ関数を参照できますが、バンドラを用いてビルドされている場合においても Vue コンストラクタ関数を参照できる方法を紹介します。 動作環境 Vue.js 2.6.11 などの Vue.js 2.x 系 Chrome 80 Vue.js devtools 5.3.3 Vue コンストラクタ関数の参照を得る方法 以下のスクリプトをWebコンソール上で実行することで、Vue コンストラクタ関数を参照することができます: const Vue = (() => { const el = [].find

    【Vue 2.x】Vueコンストラクタ関数をWebコンソール上で見つける方法 - Qiita
    aki77
    aki77 2020/04/30
  • Qiitaで記事を公開するときに気を付けるべきマナーについて 〜無断でネットや書籍の内容を丸写しするのはやめよう〜 - Qiita

    はじめに 僕は「プロを目指す人のためのRuby入門」(通称チェリー)というRubyの入門書の著者です。 書は発売以来、非常に多くのみなさんに読んでいただき、筆者として大変喜んでいます。 しかし、その一方でQiitaを見ていると、「これ、明らかにチェリーの説明文やサンプルコードを参考にして書いてますよね?」という記事をよく見かけます。 中にはきちんとマナーを守って記事を公開されている方もおられますが、残念なことに僕から見て「悪意がないのはわかるけど、そのスタイルで公開されるのはちょっと困る」と感じるケースがかなり多いです。 この記事では、書籍やネット上の情報を参考にしてQiitaに記事を公開する際の最低限のマナーについて説明します。 また、この記事の内容はQiitaのみならず、自分のブログに記事を書くときにも意識すべき内容になります。 備考:「そもそもこの記事ってガイドライン違反じゃな

    Qiitaで記事を公開するときに気を付けるべきマナーについて 〜無断でネットや書籍の内容を丸写しするのはやめよう〜 - Qiita
    aki77
    aki77 2019/04/25
  • ReactNative 本体のバージョンのアップグレードを行う - Qiita

    会社プロジェクトを 0.44.3 (2017年6月時点の最新版)から 0.49.5(2017年11月頭時点の、最新版のstable)に上げた。思ったより大変だったのでメモっておく。 そもそも何故 ReactNative のバージョンを上げるのか? RN はまだまだ絶賛進化中で、体のバージョンが上がることで React / React Native のパフォーマンスの向上や、周辺環境の向上、例えば Flow での型チェックがさらに進化するなど恩恵を受けれる。 実際にアップグレードしてCIの実行速度も20%ほど向上した。以下は CircleCI のビルド時間の中央値の値。真ん中あたりでガクッと下がったのがRNのバージョンを上げたタイミング。 また、破壊的な変更が体に入ることも多く、例えば RN 0.47 から Android ネイティブライブラリ作成で利用されていたcreateJSModu

    ReactNative 本体のバージョンのアップグレードを行う - Qiita
  • JavaScriptで無限に再帰したい - Qiita

    再帰関数は、自分自身を呼び出す関数です。再帰関数はプログラミングにおける極めて有用な道具であり、再帰関数を用いることで綺麗に書けるプログラムは山のようにあります。 ところが、JavaScript を始めとする一部のプログラミング言語では、再帰の回数に制限があります。その回数を超えて深く再帰しようとするとエラーが発生します。 以下のコードで再帰できる回数を数えてみましょう。 function countRecursion() { let count = 0; function rec() { count++; rec(); } try { rec(); } catch { console.log(count); } } 環境によって異なると思いますが、自分の環境では15721と表示されました。 ※追記: 再帰とトランポリンの関係についてご存知の方は、記事最後の追記を読むと記事の内容が一瞬で理

    JavaScriptで無限に再帰したい - Qiita
  • Language Server Protocolを使ってvimでpython入力補完 - Qiita

    Language Server Protocolって? Language Serverというものを知って、気になったので試してみたっという記事です。 Language Serverについてはこちらの記事を参考にさせていただきました。 私の理解でまとめると、今までIDEとかがやってくれてたキーワード補完や定義の参照など、エディタごとプラグインが必要だったのを、エディタがサーバーにつなぐことで解決しましょう。みたいなことかなと思っています。 例えばVS CodeでPythonシンタックスを使いたければpythonプラグインが必要です。AtomであればAtom用のプラグインが必要です。 エディタの数x言語の数 だけプラグインが必要になります(作る必要があります)。 やりたいことは大体どの言語でも共通なので、言語情報をサーバーに補完しておいて、エディタをクライアントにしてそのサーバーとやり取りでき

    Language Server Protocolを使ってvimでpython入力補完 - Qiita
  • お前らのReactは遅い - Qiita

    煽りタイトルですみません。 最近、Reactプロジェクトのページを動かしていて、 もっさりしてる(レンダリングの負荷が高いな)と思ったので どうやったら無駄なレンダリングを減らせるか思考錯誤したことをまとめました。 preactとか別ライブラリの話はしません。 よかったらこちらもどうぞ ReactJSで作る今時のSPA入門(基編) 2019年07月06日追記: ブラウザのレンダリングの仕組みに関して良記事があったので先に一読しておくことをおすすめします。 良記事1:実際のところ「ブラウザを立ち上げてページが表示されるまで」には何が起きるのか 良記事2:ブラウザレンダリング入門〜知ることで見える世界〜 1ピクセルがブラウザに表示されるまで:Life of a Pixel 2018 この記事に関してはReactのDOMツリー(レイアウト)レンダリングに関する最適化戦略です。 2020年02

    お前らのReactは遅い - Qiita
    aki77
    aki77 2018/12/03
  • Firebaseを使い始めたら人生が変わった(ような気がした) - Qiita

    最近、僕の周りでFirebaseを使った人たちは、 「サーバーの処理をFirebaseに置き換えたら、筋肉がつきました!」(29歳, 社会人) 「Firebaseを使ったら友達も増えてわっしょいわっしょい」(11歳, 小学生) 「もうFirebase無しじゃ生きられない」(38歳, エンジニア) 「にゃーん」(1歳4ヶ月, うちの) と言っていました。嘘です。 冗談はさておき、趣味で開発しているアプリのサーバーサイドをFirebaseに置き換えたらすごく良かったので、ずらずらと書いていきたいと思います。 Firebaseとは? Firebaseは、Googleが運営しているmBaaSで、iOS/AndroidアプリからWebサービスまで幅広く使えます。 リアルタイム同期や豊富な機能が特徴で、サーバーサイドの開発コストを大幅に減らすことができます。 色々機能はあるのですが、今回僕が使った機

    Firebaseを使い始めたら人生が変わった(ような気がした) - Qiita
  • 素のJavaScriptプロジェクトにtsconfig.jsonを置いといてVSCodeの便利さを享受する - Qiita

    VSCodeの便利さを使いたいがTypeScript化するほど手間かけれない、みたいなときにtsconfig.jsonだけ作っておくとちょっと便利になりそうだったのでメモる。 追記: TypeScriptへ移植する予定が無い場合であれば、jsconfig.jsonを配置するでも十分そうです(違いはallowJSがdefaultでtrueなこととぐらい。あとはtsconfig.jsonは後述のコマンドでボイラープレートを生成できるという点ぐらいと思われます) 具体的にはこのへんとか使える 未使用のimport検出 ライブラリの型情報を利用した検出 JSDocがあればそれを利用した型検証 やり方 まずtsconfig.jsonを生成する。npx使う

    素のJavaScriptプロジェクトにtsconfig.jsonを置いといてVSCodeの便利さを享受する - Qiita
  • i18nの書き方 from JavaScript - Qiita

    続編と、コード自体ではなく、何をすればいいかを書きましたAmazonに見るi18n -「国際化対応」とは何を変える事か Webサイトを多言語化する 最近多言語化に関する仕事をしている関係でi18n(l10n)用のライブラリを色々と見たので、 i18nライブラリによくある使い方を紹介します。 とは言ってもほとんどのライブラリは同じような書き方をするのでJavaScriptを例にします。 ライブラリ一覧 書き方の紹介として使用するものはawasome-javascriptにあるものと、他に気になったものを選びました。 ただし、この記事の目的は「書き方」を紹介するもので「ライブラリ」を紹介するものではありません。 動くことは確認しましたがどのくらいまともに動くかはチェックしていないのでご注意ください。 Polyglot Airbnbが公開するシンプルなライブラリ i18next 色々な環境やフレ

    i18nの書き方 from JavaScript - Qiita
  • ActiveModel::Attributes が最高すぎるんだよな。 - Qiita

    Ruby on Rails 5.2.0.beta2が出て久しい。 僕はRails大好きっ子なので 社内の新規事業や、社外のお手伝いしているベンチャー企業では もちろん、Rails5.2を使って開発をしている。 すでに、新しいRailsに関する記事はいくつか挙がっているが 個人的に、一番インパクトが大きかったのはActiveModel::Attributesが導入されたことである。 待望のActiveModel::Attributes ActiveModel::Attributesでなにが変わったの?というと、 いままでActiveRecordでしか使えなかった一部の機能が、ActiveModelでも使えるようになっただけである。 いや、しかし! 今までのActiveModelの最大の弱点は まさにこの ActiveModel::Attributes が無かったことだと思う。 それが、Rai

    ActiveModel::Attributes が最高すぎるんだよな。 - Qiita
    aki77
    aki77 2018/01/19
  • idやclassを使ってテストを書くのは、もはやアンチパターンである - Qiita

    いきなり結論を書くと、idやclassはスタイルのためのものなので、テストでそれを使うのはやめましょう。そして、カスタムデータ属性を使いましょう。(idやclassはスタイルのためだけではないという意見はごもっともです!しかし、主にとしてスタイルに使われるということでご了承頂いて以下の駄文に付き合って頂けると幸いです🙇) 先に断っておくと主にreactについての話で、JSXを前提とします。(手法はReactに限りませんが理由は後述) 2020/03/23 追記 この記事は1年以上前に書かれた記事なのでテストフレームワークとしてenzymeを使っていますが、現時点ではTesting Libraryの使用をオススメします。data-testid に対応するクエリを備えています。 React Testing Library · Testing Library はじめに ご存知の通り、ロジックと

    idやclassを使ってテストを書くのは、もはやアンチパターンである - Qiita
    aki77
    aki77 2017/12/22
  • dev.toがなぜinsanely fastを実現出来ているか - Qiita

    INSANELY FAST Qiitaを読んでる人なら https://dev.to をほとんどの人が見たはず。見てない人は見てきてください、速すぎて驚くはず。またmizchiさんがdev.toに書いた なぜ dev.to がこんなにも速く、こんなにも自分にとって感動的なのか - dev.to を見た人も多いと思う。個人的にHeroku, Railsを採用してここまで爆速なサイトを構築出来ていることは今までの常識を覆す衝撃な出来事だった。こんな新しい発見をもたらしてくれたdev.toには当に感謝してる。自分もこんなサイト作ってみたいなと思ってdev.toのことを色々調べてて少し知見がたまったので共有してみます。 この記事はOkinawa.rb Advent Calendar 2017 7日目の記事です。 Twitterやってるのでよかったらフォローしてください🙋‍♀️ @saboyut

    dev.toがなぜinsanely fastを実現出来ているか - Qiita
  • 【翻訳】RSpecのリードメンテナだけど何か質問ある? - Qiita

    はじめに 先日、Redditでこんな記事が載っていました。 AMA: The authors of "Effective Testing with RSpec 3", Myron Marston and Ian Dees : ruby この記事は書籍「Effective Testing with RSpec 3」の筆者であるMyron Marston氏とIan Dees氏が、書籍に関する質問に何でも答えます、という企画です。 この2人のうち、Myron Marston氏はRSpecの開発者(リードメンテナ)です。 Q&Aを読んでいると、RSpecの開発者ならではの意見だなと思うところがたくさんあり、なかなか興味深い議論になっていました。 というわけで、この記事では先ほどのQ&Aから「これは日Rubyプログラマにも役立ちそう」と思ったやりとりをピックアップして翻訳してみます。 ピックアッ

    【翻訳】RSpecのリードメンテナだけど何か質問ある? - Qiita
    aki77
    aki77 2017/10/16