タグ

ブックマーク / qiita.com/yuku_t (26)

  • 10分で GraphQL 入門 - Qiita

    これは 6/28 に開催される GraphQL ナイト のための資料です ここまでで分かること クエリは独自言語みたい クエリを変えることで柔軟にデータをとってこれそう クエリと結果の見た目が似てるのは分かりやすそう(主観) でも facebook はなんで作ったの? facebook の事情 数十億ユーザから膨大なリクエストがくる 新興国の低速なネットワークからのモバイル接続も多い アップデートされないモバイルアプリもサポートする つまり リクエスト回数は可能な限り減らしたい 後方互換を維持しながら API を開発したい 無駄なデータを送りたくない (大規模開発なので型安全も欲しい) 規模は違えど我々も同じような問題を抱えているのでは? なぜ既存のものではダメだったのか? より詳しくは昔の graphql.org のページを参照(internet archive) v.s. REST 複

    10分で GraphQL 入門 - Qiita
    tuki0918
    tuki0918 2018/07/05
  • 中規模Web開発のためのMVC分割とレイヤアーキテクチャ - Qiita

    TL;DR MVCもレイヤで捉えて関係性の設計をするといいのでは 普通のRubyオブジェクトを積極的に使いたいですね 「パーフェクト Rails」に期待しましょう 長くなって面倒くさくなり、途中から手抜き感が半端ないですが許してください この記事の位置付けなど 7 Patterns to Refactor Fat ActiveRecord Models - Code Climate Blog [翻訳] エリック・エヴァンスのドメイン駆動設計 エンタープライズ アプリケーションアーキテクチャパターン これらの参考文献を踏まえてRailsアプリケーションのリファクタリングをしていて、だいぶ方向性や考え方がまとまってきたので、これからチームに合流する人を想定読者に、Qiitaがどんな感じで作られているのかを文書化したものです。(参考文献の一覧は記事の最後にあります) 内容的には文献[2,3]を踏

    中規模Web開発のためのMVC分割とレイヤアーキテクチャ - Qiita
    tuki0918
    tuki0918 2018/04/29
    “エンタープライズ アプリケーションアーキテクチャパターン”
  • 新QiitaでReactをやめてhyperappを採用した背景 - Qiita

    12/1 に Qiita のトップページをリニューアルしました。これまで React を使っていましたが、それをやめて hyperapp を採用しました。まわりを見てもあまり採用事例が見当たらないので、この記事では一体なんで今をときめく React ではなく hyperapp を選択したのか、どういうところが魅力的なのかについて プレゼンテーション層を実装するためのツールとして 学習コスト の観点から書きたいと思います。なおこの記事に書かれていることは全て個人の感想であり、はっきりいって個人の日記レベルです。 それと hyperapp の開発者が社内にいるという事情もあるので、そこら辺さっぴいて読んでください。 TL;DR プレゼンテーション層を実装するためのツールとして React は機能過多だし、機能不足 hyperapp は過不足ない 学習コスト 仮想 DOM は学ぶ価値のある知識

    新QiitaでReactをやめてhyperappを採用した背景 - Qiita
    tuki0918
    tuki0918 2017/12/27
    IT業界の数ヶ月は他の業界から見て10年分なんだろう
  • GOPATH は適当に決めて問題ない - Qiita

    TL;DR go get は Ruby でいう gem みたいなもん $GOPATH は自分の環境に合わせて好きに指定してよい 例えば $HOME/.go とか $HOME/go とか 好きに設定してもいいけど、一度設定したらそれをずっと使い続けた方がたぶんいい 現在では、GOPATHを明示的に設定しない場合は自動的に設定される。 Wikiより If no GOPATH is set, it is assumed to be $HOME/go on Unix systems and %USERPROFILE%\go on Windows. ことの始まり homebrewでGoをインストールしたらのっけから Go 1.1 から go get コマンドは $GOROOT をパッケージダウンロード先として使わなくなりなりました。 go get 使うには $GOPATH が必要です。 と言われて、

    GOPATH は適当に決めて問題ない - Qiita
    tuki0918
    tuki0918 2016/12/29
  • curlを捨ててhttpieを使おう - Qiita

    jkbr/httpie : Github : HTTPie is a CLI, cURL-like tool for humans curl(see urlと発音するらしい家のFAQによると開発陣は kurl と発音してるらしいです)はプログラムから使うには便利だけど、オプションがわかりにくい。 httpieはより直感的なcurl代替コマンド。よほどcurlに思い入れがない限りhttpieをおすすめする。 インストール 使用例 奥がcurlで、手前がhttpieを使った場合。見れば分かるようにhttpieは自動で色付けをしてくれるし、コマンドもかなり直感的だ。内部的にはPythonrequestsというモジュールを使っている。Python組み込みのHTTPクライアントに辟易している人はそちらも調べてみるととても幸せになれる。 kennethreitz/requests : Github

    curlを捨ててhttpieを使おう - Qiita
    tuki0918
    tuki0918 2016/01/05
  • 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
    tuki0918
    tuki0918 2015/07/13
  • Qiitaがquery-stringっぽい構文を自前実装した理由 - Qiita

    これは Elasticsearch Advent Calendar 2014 15日目の記事です。 今秋、Qiitaの検索システムが刷新されました。 Qiita/Qiita:Teamの検索システムがパワーアップしました - Qiita Blog ブログ記事の中でも簡単に紹介していますが、例えば title:"elasticsearch 入門" と検索すると、タイトルに "elasticsearch" と "入門" を単語を含んだ記事を検索できたり、他にも OR が使えたり、マイナス検索ができたりします。 一見すると query string query でも使ってるみたいですが実際はそんなことはなく、泥臭く検索文字列をその都度解析し、生成したクエリをElasticsearchに投げています。この記事では、なぜ query string query を使わずに自分で書いたのかという話と、公開

    Qiitaがquery-stringっぽい構文を自前実装した理由 - Qiita
    tuki0918
    tuki0918 2014/12/17
  • アプリエンジニア向け:「サーバがなんか重い」時にすること - Qiita

    アプリケーションエンジニアの人には「なんか重い」という状況に遭遇したらインフラの人にタスクを投げる、という人もいるかも知れません。けど、その重さのどこに原因があるのか。CPUか、ネットワークか、IOかくらいの診断はできた方がアプリ開発においても有益です。 「せっかくつくったシステムがなんか重い」 そんな時にアプリケーションエンジニアとしてできることを書きます。 職のインフラの人にはぬるい内容だと思います。何を隠そう僕自身がアプリ寄りの人間なので、突っ込んだ話はできないのです。あしからずご了承ください。 なんかサーバが重いなー まずはロードアベレージを調べる サーバが重いと思ったら、まず真っ先にすべきことは対象ホストにSSH接続してロードアベレージを調べることでしょう。ロードアベレージとは 実行されずに待たされているプロセスの数 のことで、多すぎるとやばいと認識しておきましょう。ロードアベ

    アプリエンジニア向け:「サーバがなんか重い」時にすること - Qiita
    tuki0918
    tuki0918 2014/08/12
  • よく実行するコマンドにキーバインドを割り当てると捗る話 - Qiita

    履歴を使えば同じコマンドを高速に実行できますが、キーバインドを使えばさらに高速化することが可能です。 zshのキーバインドの基礎を紹介します。 zshのキーバインドの概要 zshには bindkey という組み込み関数が存在します。詳しくは zshzle(1) の ZLE BUILTINS を読めということなんですが、これを使うとキーバインドを設定できます。 例えばzshをemacsモードで使っているとCtrl-Aでカーソルを先頭に移動させられますが、あれは内部的にはこのキーバインド機能を使って実現されているようです。

    よく実行するコマンドにキーバインドを割り当てると捗る話 - Qiita
    tuki0918
    tuki0918 2014/06/28
  • 特定ユーザにのみtty無しでのsudoを認める - Qiita

    VagrantやServerspecを使っている時など、ttyなしでsudoができるように /etc/sudoers から下記の記述をコメントアウトすることがありますが、これだと権限を持つ全てのユーザがttyなしでsudoを実行できるようになってしまいます。

    特定ユーザにのみtty無しでのsudoを認める - Qiita
    tuki0918
    tuki0918 2014/06/14
  • gruntからgulpに乗り換えることにした - Qiita

    久々にnodeを書くことがあり、grunt.jsじゃなくてgulp.jsを使ってみた結果gulpの方が圧倒的に良かったので、その素晴らしさの片鱗を味わってもらおうと思う。 jadeファイルをhtmlに変換するタスク まず、src/jade ディレクトリにあるjadeファイルをhtmlに変換するタスクはこんな風に書ける。既にめっちゃ短い。 var gulp = require('gulp'), jade = require('gulp-jade'); gulp.task('jade', function () { gulp.src('src/jade/*.jade') // gulp.src でファイルを指定 .pipe(jade()) // jade plugin に通して .pipe(gulp.dest('./static/')) // gulp.dest で書きだす }); gulp

    gruntからgulpに乗り換えることにした - Qiita
    tuki0918
    tuki0918 2014/06/08
  • Boxen使ってて許されるのは2013年だけだった - Qiita

    Boxen使わなくても許されるのは2012年までだよね を書いたのも今は昔、1年間の運用の末にこの度Boxenを卒業しました。なぜBoxenをやめたのか、やめて今はどうしているのか、といった話を書きます。 Boxenのつらいところ ここで述べるBoxenの問題点の大部分は筆者のBoxenおよびPuppetに対する理解の低さが根底にあります。間違った使い方をしている可能性は十分にあり、適切に使っていればこのような問題は発生しないのかも知れません。しかしながら、深い理解がなければまともに使えないというのもどうかと思いますのでつらつらと並び立てたいと思います。 挙動を把握するのが難しい BoxenはPuppetの上で動作します。Puppetを便利に使うためのフレームワークみたいな位置づけだと思っています。 Rubyに詳しくなくても、RailsのDSLを組み合わせるととりあえず動くものを作れるよう

    Boxen使ってて許されるのは2013年だけだった - Qiita
    tuki0918
    tuki0918 2014/04/25
  • Capistrano3のデプロイフレームワークの使い方 - Qiita

    Capistranoはバージョン3から汎用的なデプロイフレームワークになりました。タスクのフックを利用することで簡単に自分のアプリケーション環境に特化したデプロイプロセスを記述することができます。 稿では、この汎用化されたデプロイ機能の使い方に焦点を絞って解説したいと思います。より基的なCapistrano3の解説は 入門 Capistrano 3 ~ 全ての手作業を生まれる前に消し去りたい | GREE Engineers' Blog がよくまとまっているので、そちらを参考にしてください。この参考記事では "5. Capistranoデフォルトタスクの消去" でCapistranoの新規導入時のコストを下げる目的で、このフレームワーク機能を消去しています。稿はこのフレームワーク機能の使い方を解説するものです。 deployとframeworkの2つの抽象度が用意されている Capi

    Capistrano3のデプロイフレームワークの使い方 - Qiita
    tuki0918
    tuki0918 2014/04/05
  • 開発サーバのログをDevtools Terminalで流しとくと便利 - Qiita

    Devtools Terminal Railsに限った話じゃないですが、開発時に立てたサーバのログを見ながら作業することがあると思います。そんなときはDevtools Terminalが便利です。 この拡張をインストールするとDeveloper ToolsにTerminalタブが追加されます。で、このタブの中身が端末のエミュレータになっていてるので、その画面の中で tail -f とかやっとくわけです。Devtools Terminal自体にはタブ機能がありませんが、その中でscreenとかtmuxを起動してやれば大丈夫です。 無論こんなことをしなくても横に端末を並べて置いてそこで表示すればいいといえばいいのですが、画面の横に必ず固定されている、というのが嬉しい感じです。

    開発サーバのログをDevtools Terminalで流しとくと便利 - Qiita
    tuki0918
    tuki0918 2014/01/29
    “Devtools Terminal”
  • プルリクエストを自動補完してcheckoutする - Qiita

    問題 プルリクエストのレビュー、動作確認をするためにローカルでcheckoutしたいが、ブランチ名を調べて入力するのが面倒くさい。別名をつけてcheckoutできるようにする方法があるが、プルリクエストの番号を調べる必要があってそれも面倒。 もっと簡単にcheckoutしたい!!! 解決策 プルリクエストの一覧からブランチを選択してcheckoutできるようにしました。 1. プルリクエスト一覧を取得する まずプルリクエスト一覧を取得します。そのためにprfetchというスクリプトを書きました。 手っ取り早く下記でインストールできます。 wget https://raw.githubusercontent.com/yuku-t/dotfiles/master/bin/prfetch chmod +x prfetch mv prfetch ~/bin # ~/bin はPATHに入っていると

    プルリクエストを自動補完してcheckoutする - Qiita
    tuki0918
    tuki0918 2013/12/03
  • Boxen使わなくても許されるのは2012年までだよね - Qiita

    続編を書きました - Boxen使ってて許されるのは2013年だけだった すごいすごいと話題な割に誰も使っていないと話題のBoxenを使ってみた。 3行で分かる結論 Boxenは... Macのセットアップを自動化してくれる 個人用途でも十分便利だが真価を発揮するのは大人数で使うとき Puppet知らなくても案外使える この記事で分かるもの Boxenの個人用途での使い方 Boxenのチーム用途での使い方 Puppetのmanifestの簡単な書き方 この記事を読んでも分からないもの Puppetの詳しい使い方 Boxenを使うと何ができるのか BoxenはGitHub社が開発しているシステムで、Macのセットアップを簡単にできるようにしてくれる。新しくMacを購入したら開発環境や各種アプリケーションをインストールすることから始めるが、これをコマンド一発で全てやってくれるようになる。 Bo

    Boxen使わなくても許されるのは2012年までだよね - Qiita
    tuki0918
    tuki0918 2013/11/21
  • Gitフックを使っておかしいRubyコードをコミットできないようにする - Qiita

    #!/bin/sh git diff --cached --name-only --diff-filter=AM | grep '\.rb$' | xargs rubocop exit $? grep '\.rb$' で拡張子が rb であるファイル、という意味なので、必要に応じてこの部分を変更してください。例えば app ディレクトリ以下のみにしたければ ^app/.*\.rb$ にします。 忘れずに実行権限をつけます。

    Gitフックを使っておかしいRubyコードをコミットできないようにする - Qiita
    tuki0918
    tuki0918 2013/10/19
  • Facebookみたいにtextareaの一部を強調する - Qiita

    Facebookで人物を補完すると、その人物名の周りに枠が表示されて強調されますよね(gif画像参照)。 これのやり方を解説します。 TL;DR textareaの強調表示は、textareaを透明にして後ろにいい感じの背景を設置してるだけ textareaの中にDOMを入れても表示されない パッと考えるとtextareaの中にDOMツリーを入れるとそれが表示されるんじゃないか、と思うかも知れません が、ぜんぜんそんなことは無くて、そのまま文字列が表示されてしまいます。 ご存知のようにtextareaやinputは、他の要素のように子要素を表示するのではなく、自身のvalue属性の値を画面に表示する働きをします。value属性は文字列を格納するためのものなのでDOMを入れられないわけですね。 強調用のDOMを重ねあわせる textareaにはDOMをそのまま入れられないので、仕方がなく周り

    Facebookみたいにtextareaの一部を強調する - Qiita
    tuki0918
    tuki0918 2013/09/25
  • jQuery.Deferredを使って楽しい非同期生活を送る方法 - Qiita

    続編も書きました : 結局jQuery.Deferredの何が嬉しいのか分からない、という人向けの小話 jQuery version1.5で導入されたjQuery.Deferredは、無くてもコードを書けるけど、使えば少しコードが綺麗かつ見通しが良くなる、という機能。 無くても書けるという機能がなかなか使われないというのは世の常なので、jQueryクックブック(O'REILLY)の中でも言及されていない、なんとも寂しい状況だ。 ちょっとここらで一肌脱いでやるか、という趣旨で書き始めたら無駄に長くなった。 とりあえず使ってみたい、という人は下の方の「jQuery.Deferred自体の使い方」までジャンプするとよい。 jQuery.Deferredとはどういう場面で使うものなのか コールバックを渡して非同期処理完了時にそれを呼び出してもらうような場面。 具体的には $.get('hoge',

    jQuery.Deferredを使って楽しい非同期生活を送る方法 - Qiita
  • 結局jQuery.Deferredの何が嬉しいのか分からない、という人向けの小話 - Qiita

    結局jQuery.Deferredの何が嬉しいのか分からない、という人向けの小話 一年ほど前に JavaScript - jQuery.Deferredを使って楽しい非同期生活を送る方法 - Qiita [キータ] という記事を書きました。 で、一年経って、ふと、「もっと分かりやすくjQuery.Deferredの便利さを説明できるんじゃないか」と思い立ってざざざっと書いてみました。 小話と言うにはちょっと長いけど。 -- jQuery.Deferredを使うと嬉しいのは、jQuery.Deferredの仕様を満たす部品同士を簡単に組み合わせることが可能だからです。中には処理を書き下すことができるとかコールバックのネストを防げるのがいいとか言う人もいますが、個人的にこっちのほうがよっぽど重要だと感じます。 例えるならレゴブロックです。レゴブロックはあの凸と凹を持ってるブロックを自由に組み合

    結局jQuery.Deferredの何が嬉しいのか分からない、という人向けの小話 - Qiita
    tuki0918
    tuki0918 2013/07/16