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

  • 10分で GraphQL 入門 - Qiita

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

    10分で GraphQL 入門 - Qiita
    kkeisuke
    kkeisuke 2018/07/06
  • tigを使って簡単にfixupやsquashコミットを作る - Qiita

    少しずつ市民権を得てきた感のある interactive git rebase 時の autosquash オプションですが、いくら git commit で --fixup や --squash で自動生成できると言っても、そもそも対象となるコミットを選択するのがめんどくさいという問題があると思います。 参考: git rebase -i のための rebase.autosquash オプション 最近だと peco を使ってコミットを絞り込むなどの方法があるかも知れませんが、すでに tig を使っているならtigを使うのが楽です。 [tig "bind"] diff = F ?!git commit --fixup %(commit) diff = S ?!git commit --squash %(commit) main = F ?!git commit --fixup %(comm

    tigを使って簡単にfixupやsquashコミットを作る - Qiita
    kkeisuke
    kkeisuke 2015/12/12
  • 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
    kkeisuke
    kkeisuke 2015/07/12
  • Facebookみたいにtextareaの一部を強調する - Qiita

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

    Facebookみたいにtextareaの一部を強調する - Qiita
    kkeisuke
    kkeisuke 2013/09/26
  • JSLitmusを使ってJSのパフォーマンス測定をする - Qiita

    計測しないで推測ばかりしているアホの子だったから腰いれて JavaScript のパフォーマンス測定環境について調べた。 結論として JSLitmus を使うとかなり簡単にできる。 使い方 jslitmus.js をロードする JSLitmus.test の第二引数に測定したい関数を渡す #jslibmut_container エレメントを作る 簡単! 例 <!DOCTYPE html> <html> <head> <script src='jslitmus.js'></script> <script src='sample.js'></script> </head> <body> <div id='jslitmus_container'></div> </body> </html> // グローバル変数とローカル変数に対するアクセス速度の違いを測定する var global_var =

    JSLitmusを使ってJSのパフォーマンス測定をする - Qiita
    kkeisuke
    kkeisuke 2013/09/21
  • Qiitaのtextarea自動補完がOSSになりました - Qiita

    jQuery.textcomplete(デモ) GitHubのようなtextareaの補完機能を実装する - カーソル位置の取得 を書いたのも今は昔、いつか続きを書こう書こうと思いながら気がつけば5ヶ月が過ぎました なんか続きを書くのが面倒くさくなったのと、某日最大レシピ共有サイトの技術部長の人から「OSSにして欲しい」という要請を人伝に受け取ったこともあって、OSS化した次第です。 ライセンス MITライセンス 簡単な使い方 簡単に説明します。詳しくは README を読んでください。 まず jQuery.textcomplete は名前からも分かるように jQuery プラグインになっているので、別途 jQuery が必要です。 <script src="path/to/jquery.js"></script> <script src="path/to/jquery.textcomp

    Qiitaのtextarea自動補完がOSSになりました - Qiita
    kkeisuke
    kkeisuke 2013/09/03
    カーソル位置の取得
  • 一日のGitコミットをMarkdownに変換するワンライナー - Qiita

    echo "$(PROJECT=$(url=$(git config remote.origin.url) && url=${url#*github.com?} && echo ${url%.git}) && echo "hash | title" && echo "-----|------" && git log --since='12 hours ago' --author=$(git config user.email) --pretty="format:[%h](https://github.com/$PROJECT/commit/%h) | %s" | perl -nle "\$_ =~ s|#(\\d+)|[#\\1](https://github.com/${PROJECT}/pull/\\1)|g; print \$_")" | pbcopy 一応これが完成形ですが、ここま

    一日のGitコミットをMarkdownに変換するワンライナー - Qiita
    kkeisuke
    kkeisuke 2013/08/09
  • 結局jQuery.Deferredの何が嬉しいのか分からない、という人向けの小話 - Qiita

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

    結局jQuery.Deferredの何が嬉しいのか分からない、という人向けの小話 - Qiita
    kkeisuke
    kkeisuke 2013/07/16
  • Qiitaの画像アップロード機能も簡単に実装できる。そう、S3ならね。 - Qiita

    QiitaとKobitoで画像アップロードができるようになりました。 その後ろ側をちょっぴり公開します。 件名からも分かるように、背後ではAWSのS3を画像ストレージに採用しています。 画像アップロード機能をリリースしました - The Official Qiita Blog Kobito v1.6.1リリース: ドラッグ&ドロップやスクリーンショット撮影で簡単に画像を添付できるようになりました! - The Official Qiita Blog 用語統一 サーバ はQiitaのサーバのことを指すことにします。(つまり、S3ではない、ということ) また クライアント は各ユーザのブラウザのことを指します。 要件 画像アップロード機能を実装するにあたっていくつかの要求がありました。 成りすましを防げる アップロードされたファイルを管理できる 自分達のサーバに負荷をかけたくない 変な画像のア

    Qiitaの画像アップロード機能も簡単に実装できる。そう、S3ならね。 - Qiita
    kkeisuke
    kkeisuke 2013/06/05
  • なぜGoogleはJSONの先頭に while(1); をつけるのか - Qiita

    Stack Overflowに面白い質問があったので紹介する javascript - Why does Google prepend while(1); to their JSON responses? - Stack Overflow 質問 Googleのサービス内で使われるJSONの先頭に while(1); てついているのは何故? 例えばGoogle Calendarではカレンダーを切り替えるときに以下のような内容のデータがサーバから返される。 while(1);[['u',[['smsSentFlag','false'],['hideInvitations','false'],['remindOnRespondedEventsOnly','true'],['hideInvitations_remindOnRespondedEventsOnly','false_true'],['C

    なぜGoogleはJSONの先頭に while(1); をつけるのか - Qiita
    kkeisuke
    kkeisuke 2013/02/07
  • JSHint入門 - JSHintを使ってJSコードの信頼性を高める - Qiita

    2016年2月現在、JSHintよりESLintの利用を奨励します。 全て の JavaScript ファイルは JSHint ないしその他のソース解析ツールで管理されるべきだと思っている。 今回は JSHint の基的な使い方を説明する。 インストール JSHint は Node.js で実装されているのでまずはそれをインストールする。Mac なら brew install node でサクッとインストール可能。また、インストールには npm を使うのでそれもいれる。そして npm をつかって JSHint をインストールする。 -g オプションはシステムにインストールするという意味。インストールディレクトリを PATH に追加するのを忘れない(デフォルトで追加されたかどうか記憶が曖昧)。 % brew install node % curl https://npmjs.org/ins

    JSHint入門 - JSHintを使ってJSコードの信頼性を高める - Qiita
    kkeisuke
    kkeisuke 2012/12/31
  • jQuery.Deferredを使って楽しい非同期生活を送る方法 - Qiita

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

    jQuery.Deferredを使って楽しい非同期生活を送る方法 - Qiita
    kkeisuke
    kkeisuke 2012/09/17
  • Backbone.js入門 「Router と History」 - Qiita

    閲覧上の注意 この記事で対象としているバージョン0.5.3は結構古いので注意してください。 その他の割りと新しい情報は Backbone.js Advent Calendar 2012 などにあります。 (追記ここまで) Backbone.js入門の最終回は Router と History です。 Backbone.js入門 「MVC」で述べたように、URL が変更された時に発生する popstate または hashchange イベントを監視してルーチンを起動するのが Router の役目です。History は Router の裏方で頑張る実体で、直接操作することはほとんどありません。 URL が変更された時にアクセスされるのが Router なので、Rails 的な MVC の枠組みで言えばコントローラと言えますし、伝統的な MVC で言えば全てのアンカーとブラウザの進退ボタンを

    Backbone.js入門 「Router と History」 - Qiita
    kkeisuke
    kkeisuke 2012/04/11
  • js->coffee移行にあたって考えたこと - Qiita

    個人製作のシステムのjsをcoffeeに完全移行したのでその雑感を書きます。あくまでも個人的な感想です。感じ方は人それぞれです。 ちなみに僕は勉強を兼ねて手で移行させましたが、js2coffeeというツールを使うと自動で変換してくれるらしいです。 先に結論 coffeeの方がいいと思う。 よくある批判に「js書けばいいじゃん」というのがあるけど、極端な話、「アセンブラ書けばいいじゃん」と高級言語が出てきた頃に言ってた人と主張の方向性は似てると思う。極端すぎるけど。 jsには落とし穴がいっぱいある。慣れてもたまにはまる。varを忘れたり「関数の頭で全部のvarを列挙する」というプラクティスに従ってたら、冗長になって管理するコスト高くなったり。 coffeeを使うとそういう余計な問題を意識しなくてよくなるのはとても大きい。 しかもjsでできることの全てをcoffeeでできる。工夫が必要になる場

    js->coffee移行にあたって考えたこと - Qiita
    kkeisuke
    kkeisuke 2012/01/23
  • 1