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

  • アプリケーションサーバのユニットテストする - Qiita

    お気に入りのThinkPadキーボードが壊れて不服な気持ちのうみさまです。 新しいX1Carbonを見てThinkPadへの忠誠心も切れかかっていた所だったので、今度はHHKBでも買います。 さて、golangにはアプリケーションサーバをユニットテストするため、net/http/httptestというパッケージが用意されています。 ハンドラのユニットテスト 例えば、こんな感じのアプリケーションがあったとしてHander()を試験したい場合、 package main import ( "net/http" "fmt" ) func Handler( w http.ResponseWriter, r *http.Request ) { fmt.Fprintf(w, "hello world") } func main() { http.HandleFunc("/", Handler) htt

    アプリケーションサーバのユニットテストする - Qiita
  • Go net/httpパッケージの概要とHTTPクライアント実装例 - Qiita

    Goは標準パッケージが充実しているのが特徴の1つだが、net/httpも例外ではなくHTTPクライアントの処理が簡単に書ける GET 例えばGETでHTTPリクエストを行う処理を実装したい場合、3通りの方法がある http.Get 関数を実行する Client 型の Get(url) メソッドを実行する Client 型の Do(request) メソッドを実行する 単純なアクセスなら1で良い 一番単純な http.Get(url)によるGET url.Values でクエリを組み立てて、Get関数で指定したURLの末尾にEncode結果をパラメータとして付加すればOK url.Valuesはクエリパラメータをkey-value形式で保持する型。ペアを追加するAddや上書きするSet等のメソッドが提供されている 組み立てたクエリはEncodeメソッドを呼び出す事で?key1=value1&

    Go net/httpパッケージの概要とHTTPクライアント実装例 - Qiita
    Pocke
    Pocke 2015/06/04
  • 【tmux】tpmでplugin管理して快適ターミナル生活 - Qiita

    set -g @tpm_plugins ' \ tmux-plugins/tpm \ tmux-plugins/tmux-yank \ tmux-plugins/tmux-open \ tmux-plugins/tmux-resurrect \ tmux-plugins/tmux-battery \ tmux-plugins/tmux-pain-control \ ' run-shell '~/.tmux/plugins/tpm/tpm' tmuxを起動してprefix I(shift+I)でpluginがインストールされる(NeoBudleでいうところの:NeoBundleInstall). plugins 僕が利用しているのはこんな感じ. tmux-yank : システムのクリップボードにコピー tmux-open : URLやファイルを開く tmux-resurrect : セッショ

    【tmux】tpmでplugin管理して快適ターミナル生活 - Qiita
    Pocke
    Pocke 2015/06/01
  • JSON Web Token の効用 - Qiita

    Note: JWT の仕様やそもそも論の話は触れません。どう使うか、何が出来るかしか書いていません。 JSON Web Token? JSON Web Token とは、ざっくりいって署名の出来る JSON を含んだ URL Safe なトークンです。 署名とは、署名時に使った鍵を用いて、JSON が改ざんされていないかをチェック出来るようにすることです。 URL Safe とは、文字通り、URL に含めることの出来ない文字を含まないことです。 これだけだとよくわかりませんが、触り心地としては次のような性質があります。 発行者だけが、鍵を使ってトークンが正しいことを検証出来る。 暗号化ではないので、JSON の中身は誰でも見られる。 仕様的には、暗号化のオプションもあります。 しかしながら、JSON の変更は出来ない。(改ざんをすると、検証時に失敗するので。) 全体的には、なんか変更できな

    JSON Web Token の効用 - Qiita
    Pocke
    Pocke 2015/06/01
  • Go言語で一時的にカレントディレクトリを変更する。 - Qiita

    package main import ( "os" "path/filepath" ) func main() { . . // 現在のディレクトリを保存してからcd prevDir, _ := filepath.Abs(".") os.Chdir(root) // ここでやりたい処理を書く // …. // 元に戻す os.Chdir(prevDir) . . } // 関数スコープなら defer を使った方が綺麗に書ける func cd(dir string) { // あらかじめ戻り先を絶対パスに展開しておく prev, err := filepath.Abs(".") if err != nil { return // ERROR } defer os.Chdir(prev) // ディレクトリ移動 os.Chdir(dir) . . if xxxx { return // こ

    Go言語で一時的にカレントディレクトリを変更する。 - Qiita
    Pocke
    Pocke 2015/05/31
  • get current branch name - Qiita

    現在のブランチ名を文字列として取り出す方法いろいろ。 正直よく理解していない部分も多いので、間違いなどあればご指摘いただけると嬉しいです。 git-symbolic-refを使う branch名の取得なら、多分これが一番良い? HEADを指定することで現在のワーキングツリーがどのブランチかを得ることができる。 zshのVCS_INFO_git_getbranchでもこれが使われている模様。

    get current branch name - Qiita
    Pocke
    Pocke 2015/05/30
  • railsのroutingで出てくる:idを変更する場合 - Qiita

    普通にroutingを書いていくとデフォルトで以下のような感じになる。 ※rails5でも動作確認を取りました。 例)スケジュール管理系のアプリを作ったと想定 $ ./bin/rake routes Prefix Verb URI Pattern Controller#Action schedules GET /schedules(.:format) schedules#index POST /schedules(.:format) schedules#create new_schedule GET /schedules/new(.:format) schedules#new edit_schedule GET /schedules/:id/edit(.:format) schedules#edit schedule GET /schedules/:id(.:format) schedul

    railsのroutingで出てくる:idを変更する場合 - Qiita
  • Play frameworkでMySqlを使う - Qiita

    Play frameworkでMySqlを使うためのメモです。 前提 例としてMySqlに データベース名:firstdb ユーザ名   :firstuser パスワード  :firstpass でデータベースを作ってあるとします。 conf/application.confを編集 conf/application.confを開きます。 36行目あたりの記述をコメントアウトし、新たに追記します。 ※すでにコメントアウトされている場合はそのまま追記します。 # db.default.driver=org.h2.Driver # db.default.url="jdbc:h2:mem:play" # db.default.user=sa # db.default.password="" db.default.driver=com.mysql.jdbc.Driver db.default.url

    Play frameworkでMySqlを使う - Qiita
  • systemd(journald)のログ容量を制限する - Qiita

    systemdのログ(journal)はデフォルトで書き出し先のディスク容量の10%まで使うようになっています。マウントが100GBのドライブなら最大10GBまで消費されます。とはいえ圧縮されるようにはなっているのですぐには10%消費されることはないでしょうが。 現在消費してる容量を確認 journalctl --disk-usage で現在のディスク上の消費容量を確認できます。

    systemd(journald)のログ容量を制限する - Qiita
  • Railsで利用するgem達を俺色に染めてやる! - Qiita

    RubyonRailsで開発していると様々なgemを組み合わせてプロダクトを作っていきます。 しかし、Railsのレールに乗って開発しているときはいいんですが、ちょっと変わったことや自分達の独自実装を加えたいときに利用しているgemをカスタマイズしたいことがたくさん出ていきます。 ただ、gemをfolkしてカスタマイズしたりすると将来のアップデート時に辛くなることが目に見えているので今回はそれをせずにgemをカスタマイズしていく方法を紹介します。 カスタマイズしたいClass, Module等をコピーする。 一番簡単な方法はgemの中にあるカスタマイズしたいClassやModuleをコピーして再定義してしまうことです。 今回はdoorkeeperというgemのDoorkeeper::Request::Passwordというクラスをカスタマイズしていきます。ちなみにバージョンは1.4を使って

    Railsで利用するgem達を俺色に染めてやる! - Qiita
    Pocke
    Pocke 2015/05/12
  • はじめてのPlay Frameworkで詰まった事のメモ - Qiita

    scalaなんて知らない。 Javaでplay frameworkをゴリゴリ書いていきたい。 いろいろハマったので書いておく。 インストール(Mac/要brew) brew install play play 2.2までしか入らない。2.3以降使いたい場合は下記参照。 brew install typesafe-activator play 2.3よりactivator使う様になったらしい。 アップデートMac/要brew) brew upgrade typesafe-activator で Error: typesafe-activator 1.3.2 already installedとエラーが出る場合。 brew updateをかけて、アップデートしたのち、brew upgrade typesafe-activatorを行う。 コマンドについて(2.2からの違い) $play ru

    はじめてのPlay Frameworkで詰まった事のメモ - Qiita
    Pocke
    Pocke 2015/05/09
  • ActiveRecord::Enum の使いドコロ - Qiita

    背景 Rails 4.1 より ActiveRecord::Enum が利用可能となりました。 これにより以下の様な記述が可能となります。 class User < ActiveRecord::Base enum role: [:general, :admin] ... end # role が admin なユーザを取得する user = User.admin.first! # admin かどうか user.admin? # role を確認 user.role # => "general" # role を admin に変更 user.admin! # role の取りうる値を確認 User.roles # => {"general"=>0, "admin"=>1}

    ActiveRecord::Enum の使いドコロ - Qiita
  • rootだけtty無しのsudoを許可 - Qiita

    Chef、Capistrano、ansibleを触ったことがある人なら誰もが通る道。 いざ実行すると失敗するアレである。 デフォルトでttyなしのsudoは拒否 デフォルトでttyなしの sudo が許可されてないことが多いので、なるべくしてそうなる。 ssh で sudo 付きコマンドを実行されるのを防ぐとかなんとか…

    rootだけtty無しのsudoを許可 - Qiita
    Pocke
    Pocke 2015/05/06
  • 人類は Java をターミナル内で書く手段を確立していた - Qiita

    X なしで Eclim を使う方法。 導入 Vagrant や Docker の流行により、気軽に仮想マシンを使う時代になっています。すると開発にも仮想マシンを使うようにしてホストマシンはできるだけ汚さない方向に持って行きたいことになる。手軽に使いたいため当然 X 環境などは構築しない。 ここで問題になるのは IDE を前提にした言語。 IDE はウィンドウシステムの中で動くため、仮想マシンを X なしで使うと IDE の機能を使えず開発が厳しくなってくる。 具体的に言うと Java 、ジャバ、ジャヴァである。 書くときはあまりにも長い名前をタイプしたくないため補完が欲しくなり、読むときは名前解決のためのタグジャンプが欲しくなる。 追記 僕のモチベーションは VM の中に開発環境を閉じ込めてしまいたくて、かつ X を使いたくないところにあります。そうじゃない人はホストマシンで開発なり VM

    人類は Java をターミナル内で書く手段を確立していた - Qiita
  • Webフロントエンドに従事するお前らはいい加減高頻度イベントとレイアウトとスタイリングの付き合い方を考えろ - Qiita

    もうなんかこの際マジで言わせていただくんですけど、知ってるか知らないか分かりませんが世の中にはすごい頻度で呼ばれうるDOMイベントって言うのがいくつかあるわけですよ 例えば scroll mousemove, touchmove devicemotion 辺りですよ。 で、高頻度で呼ばれるって言うことは必然的に処理量が増えるって分かりますよね?????while(1) {}じゃないとはいえUIスレッドに十分影響を与えうる頻度で呼ばれる訳です。分かりますよね???????? そうなると当然そのイベント内で重い処理を行えば人間が認識できるレベルでのレスポンス遅延が起きるっていうのはご理解できますよね? 重い処理っていうのはまぁ想像出来るとは思うんですが例えばよくあるのが DOMのレイアウトプロパティへのアクセス offsetTop、offsetLeft、offsetWidth、offsetHe

    Webフロントエンドに従事するお前らはいい加減高頻度イベントとレイアウトとスタイリングの付き合い方を考えろ - Qiita
  • 仮想DOMに思いを馳せていたらそもそもブラウザのレンダリングがわかってなかった - Qiita

    仮想DOMとか、react.js とか最近聞くようになりました。フロントエンドに関わるものとして、UIパフォーマンス向上を志すなら、少し触って明日の糧にしようと思っていろいろ調べていたら、そもそもブラウザのレンダリングとは何かもよくわかっていなかったので出直そうと思った、というごくつまらない話です。 ブラウザのレンダリングとは DOMの読み込み、リサイズ、イベント発火で再描画、くらいふわっとわかったフリになっていた。 http://www.yoheim.net/blog.php?q=20140703 下のURLをわかりやすく解説 http://www.html5rocks.com/ja/tutorials/internals/howbrowserswork/ ごつい http://tokkono.cute.coocan.jp/blog/slow/index.php/web-technolo

    仮想DOMに思いを馳せていたらそもそもブラウザのレンダリングがわかってなかった - Qiita
  • RailsでAPIをつくるときのエラー処理 - Qiita

    例外を利用して実装すると便利な場合が多い この投稿では、HTTP経由でJSONを返すようなWeb APIRailsを利用して実装するとき、エラーレスポンスを返す場合の処理をどう実装するとやりやすいのか、というニッチな話題に触れる。APIでエラーを返したいとき、即ち400以上のステータスコードと共にレスポンスを返したいような場合、どう実装するのが良いか。もしリクエストの処理中にエラーが検出された場合、それ以降の処理を行わずに直ちに中断してエラーレスポンスを返したいという場合が多いため、例外を利用して実装すると便利な場合が多い。 例外を利用しない方が良い場合もある 1つのリクエストに複数の問題が含まれている場合、先に見つけた問題だけを報告するようなエラーレスポンスを返すのか、それとも問題を抱えながらも進めるところまで処理を進めて報告可能な情報を全て含むようなエラーレスポンスを返すのか、という

    RailsでAPIをつくるときのエラー処理 - Qiita
  • Golang の sort パッケージ - Qiita

    intro sort パッケージは slice などをソートするデフォルト実装や、独自の比較ロジックを定めるインタフェースなどが提供されています。 Go のインタフェース、継承による拡張などの考え方的にも面白いので解説メモ。 Sort function sort パッケージには Sort 関数が定義されている。 そのシグネチャは以下。 つまり、ここに sort.Interface インタフェースを満たしたものを渡すと、中で Quick Sort, Heap Sort, Insertion Sort を、条件に応じて使い分け、いい感じに並べ替えてくれる。 Sort Interface sort.Interface のインタフェースは以下。 (Go では、メソッドを持っていればインタフェースは満たされる) type Interface interface { // Len is the num

    Golang の sort パッケージ - Qiita
    Pocke
    Pocke 2015/04/12
  • 今日から使える!RSpec 3で追加された8つの新機能 - Qiita

    はじめに RSpec 3が正式リリースされて2ヶ月ほど経過しました。(正式リリースは2014年6月) ネットの情報を見ていると、これまでは「既存のテストケースをRSpec 3にアップグレードさせる方法」や「RSpec 3で削除されたり、記法が変わったりした点」など、「守りの姿勢」に入った情報が多かったように思います。(僕自身もそういう情報をたくさんアップしていました) しかし、RSpec 3では以前のバージョンでは使えなかった新しい機能も数多く導入されています。 そこで記事では「攻めの姿勢」で「RSpec 3から導入された新機能」をまとめてみました。 なお、ここでフォーカスするのはテストコードの書き方にダイレクトに関わってくるマッチャの新機能です。 2015.01.12:RSpec 3.1に関する情報を追記しました RSpec 3.1に関する情報も追記しました。 もともと紹介していた新機

    今日から使える!RSpec 3で追加された8つの新機能 - Qiita
  • javascriptからファイル保存ダイアログを出す - Qiita

    jsでファイルを保存するための方法. html5をサポートしたブラウザなら動くはず. 投稿してから気がつきましたがほとんど同じ内容の投稿がありました. javascriptで生成したファイルをローカルに保存する - Qiita しかし,少しだけ記事の趣旨が違うのでこの記事も残しておきます. 手順 a要素を作成する. a要素のhrefにダウンロードしたいリンクを代入する. a要素にdownload属性に値をつける. download属性にセットした値がファイル名となる.(拡張子はつけない方がよい) a要素にクリックイベントを発生させる. 実際のコード function download(url, name){ var a = document.createElement('a'); a.href = url; a.setAttribute('download', name || 'nonam

    javascriptからファイル保存ダイアログを出す - Qiita