サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
デスク環境を整える
qiita.com/catatsuy
随時更新していく予定です。 Emacsのあれはどれ編 .emacs.d OSによりますが、Macの場合は~/Library/Application Support/Code/User/です。ファイルは2つあるので以下のようにしてシンボリックリンクにしています。 ln -s settings.json ~/Library/Application\ Support/Code/User/ ln -s keybindings.json ~/Library/Application\ Support/Code/User/ Emacsキーバインド Awesome Emacs Keymap - Visual Studio Marketplace この拡張機能がほぼ完璧です。他の拡張機能はバグっていたりして大変。 M-x ⌘-Shift-p 隠しフォルダを開く これはMacのデフォルトの機能ですが、⌘-Sh
TL;DR ポップアップウィンドウからpostMessageを使うことで親ウィンドウと通信ができる IEではポップアップウィンドウからpostMessageを使うことができないのでCORSを使う必要がある iOSのアプリ内ブラウザはポップアップウィンドウ自体をうまく扱えないのでただの遷移以上のことはできない ポップアップウィンドウは真面目に色んなプラットフォームで扱えるようにしようと考えると面倒なことになる 挨拶 この記事はピクシブ株式会社 Advent Calendar 2017 - Qiitaの10日目の記事です。 ピクシブ株式会社で普段はpixivの開発をしたり、広告周りを見たり、インフラっぽい部分を見たりしています。 今回は久しぶりにJavaScriptの話をします。 前提 この記事は去年 https://accounts.pixiv.net/ を開発した際に得られた知見を元にして
GoでJSONのnullをいい感じに扱いたいことがあるとします。しかしGoではnullを扱うのは容易ではありません。 Goにはnilが存在しますが、これはポインタ型でしか使えません。よってintやstring型では使用できません。Goはintやstring型は初期化しなかった場合、ゼロ値に初期化されます。intのゼロ値は0、stringのゼロ値は空文字列です。そのためJSONのnullをGoで扱おうとした場合、Goのゼロ値との区別ができません。 同じ問題はSQLでもあります。nullが存在するカラムから値を取得した際にnullとGoのゼロ値を区別する必要があります。そこでGoのdatabase/sqlではNullStringのようなstructが定義されています。 type NullString struct { String string Valid bool // Valid is t
Goで文字列の先頭から特定の文字数だけを出力するのが、意外と悩んだのでちょっとメモします。 Goでは文字列はbyteのsliceのような扱いになります。なのでASCIIコードはいいのですが、UTF-8の文字列を適当に扱うと、UTF-8の文字列として不正なバイト列になることがあります(UTF-8は変なところで切ると必ず不正なバイト列になる)。 今回は『こんにちは』という文字列の先頭2文字だけを表示することを考えます。 package main import ( "fmt" "unicode/utf8" ) func main() { str := "こんにちは" fmt.Println(len(str)) fmt.Println(utf8.RuneCountInString(str)) fmt.Println(str[:3]) fmt.Println(string([]rune(str)[:
Nginx の設定内では環境変数を読み込むことは基本的にできません.しかし lua-nginx-module を使うと環境変数を読み込むことができます.やり方を簡単に紹介します.
(当日はesaのプレゼンテーションモードで発表しました) (pixiv night in Fukuoka #02 - ピクシブを取り巻く技術がわかる一夜! - connpass の発表資料です) 自己紹介 各種SNSをcatatsuyでやっている かたついと呼ばれることが多い ピクシブ株式会社で開発基盤チームと広告チームの兼任 2014年度新卒(2013/10入社) pixivの技術的な改善が主な業務(後で詳しく) 単著『pixivエンジニアが教えるプログラミング入門(星海社新書) ピクシブ社内の非エンジニア向けのプログラミング研修の書籍化 pixiv社内ISUCONやISUCON6本選の問題作成 pixivのチーム分け pixivというサービスは巨大 www.pixiv.net/touch.pixiv.net/スマートフォン用APIなどなど 提供しているサービスも多い pixivという1
(当日はesaのプレゼンテーションモードで発表しました) (文字起こししてもらえました ちゃんと復旧できる、GitLabのバックアップ運用方法 – GitLab meetup #01レポート - pixiv inside) 自己紹介 各種SNSをcatatsuyでやっている かたついと呼ばれることが多い 会社のアドベントカレンダーで GitLabの運用方法をドーンと公開!! - pixiv inside http://inside.pixiv.net/entry/2016/12/17/100000 を書きました ピクシブ株式会社で開発基盤チームと広告チームの兼任 pixivの改善が主な業務 単著『pixivエンジニアが教えるプログラミング入門(星海社新書) ピクシブ社内の非エンジニア向けのプログラミング研修の書籍化 pixiv社内ISUCONやISUCON6本選の問題作成 GitLabとは
以前ソースコードを読んでいておもしろかったのでメモしておきます。Go1.8のコードを見ていますが、そんなに大きく変更されることは無いと思います。 Go言語のunicode/utf8パッケージのutf8.Valid関数の実装を見ていきます。Validであることを確認することでutf8の文字列として文字数がいくつかも分かるので、文字数についても触れていきます。utf8.RuneCount関数もほぼ同じ実装なので、このコードが読めれば、こちらのコードもすぐに分かると思います。 go/utf8.go at master · golang/go const ( RuneSelf = 0x80 // characters below Runeself are represented as themselves in a single byte. ) func Valid(p []byte) bool
Google日本語入力を使っていた時はキーバインドをファイルにexportできたのでそれを使い回していた。けどATOKだとなぜか設定がexportできないので手で移すしかない。exportはキー設定の中から『テキストファイルに出力』でできました。importの方法がまだ分かっていないですが、できるかもしれません。 ATOKのキーバインドをEmacs風にする - ekurodaの日記 を参考にいじるキーバインドをEmacsっぽくするメモ。ATOKのデフォルトのキーバインドからの変更点です。 機能 キーバインド 追加する機能
(esaのプレゼンモードで当日は発表しました) 突然ですが、質問です MySQLなどにデータを保存するWebアプリケーションを作ったことはありますか? Linuxサーバーにsshしたことはありますか? AWSやGCPやさくらのVPSやさくらのクラウドなどなど、そういったサービスを使って自分専用のサーバーを作ったことはありますか? あっても、なくても、皆さんにおすすめな情報があります!! ISUCONとは お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル、それがISUCONです 優勝賞金は100万円! 学生枠なら2位まで賞金が出ます! 予選が9/17,18(土日)のどちらか(リモート参加) 予選で上位チームに入れば本戦出場 本戦は10/22(土) 会場はLINE本社。遠方の学生は旅費負担! ISUCON6 学生限定で本選参加時の旅費負担を実施い
Goとかで外部にリクエストを投げるようなプログラムを書くと、実際にどういうリクエストを投げて、どういうレスポンスを受けているのか一見分かりません。 WebアプリケーションならChromeのDeveloper Toolsを使えば簡単にいい感じに見ることができます。リクエストを投げるプログラムでもChromeのDeveloper Toolsを使って飛ばしているリクエストとレスポンスが見れるととても便利そうです。そんなことが実現できてしまう方法を紹介します。 kdzwinel/betwixt: Web Debugging Proxy based on Chrome DevTools Network panel. 今流行りのElectronアプリです。READMEに貼られているGifアニメを見れば全て察せるでしょう。Releases · kdzwinel/betwixtここからビルド済みのものをダ
この前GoのWebアプリケーションフレームワークのgojiのソースコードを見ていてなるほど!と思ったので紹介します。 GoでtcpやUNIXドメインソケットやファイルディスクリプタをbindしたサーバーを立てたくなることはよくあります。そういう時は標準ライブラリのnet/httpのnet.Listerを作るところだけ分岐すれば後は共通的に扱えます。 なので適当にflagで指定して、tcpなら-tcpで、UNIXドメインソケットなら-sockでみたいな感じで指定するのが普通だと思いますが、gojiはちょっと違います。 gojiではtcpでもUNIXドメインソケットでも-bindでbind先を指定します。そのときの判定処理が以下のようになっています。 goji/bind.go at master · zenazn/goji func listenTo(bind string) (net.Lis
faviconがどうでもいいサービスなのにfavicon.icoにアクセスされるのは気持ちのいいものではないです。 というわけで以下の様な設定をしていました。
そろそろ jessie(Debian8) の足音が聞こえたきたので Vagrant の box が欲しいなぁと思いました.ということで作りましょう. Creating a Base Box - VirtualBox Provider - Vagrant Documentation Vagrant の VirtualBox 用 Base Box ファイルを手動で作ってみる | CUBE SUGAR STORAGE Installing Debian Linux in a VirtualBox Virtual Machine | Open-Source Routing and Network Simulation holms/vagrant-jessie-box VirtualBox準備 いい感じに jessie をインストールします.注意点を適当に箇条書きします. Debian -- Deb
こんにちは 毎日元気に Emacs を使って生活しています. 今回は私が使っている Emacs でのファイルの開き方や作成方法などの話を書きます. 基本的な操作ですが,改めて解説することでなにか得られることがあれば幸いです. recentf-ext 世の中には 8:2 の法則というものがあります. 私の体感的には全体の 2 割のファイルを開くことに 8 割の時間を使っていてそれ以外のファイルを開くことはめったにありません. なので最近開いたファイルを見れておくようにしておくのはエディタの使い勝手としては重要です. 最近では recentf-ext から C-s などで検索して該当ファイルかそれに一番近いファイルを開いてから辿って開きたいファイルを開く事がほとんどです. また recentf-ext なら後述の tramp-mode で開いたファイルも同様に表示されるのも非常にお勧めです.
何か緊急に logrotate をしたくなることがあります.ないかもしれませんがあります. logrotate したい設定ファイル名を以下のように指定します.
Golang は使われていないものまで import しているとコンパイル時にエラーになります。 この仕様自体はとてもいいと思うのですが,ちょっとしたファイルを試行錯誤している時にどこかの行をコメントアウトする度に import 文も書き換えないとコンパイルできないというようなことが発生してイライラする事があります。 せっかくの静的型付け言語ですのでこの辺りを自動でいい感じにしてくれると嬉しいです。 そんなあなたに goimports がおすすめです goimports - GoDoc Emacs などのエディタで保存時に gofmt をかけて自動整形させる設定は誰でもしていることと思いますが,goimports は gofmt と全く同じ用に使えてかつ import 周りを自動でいい感じにしてくれるという優れものです。 インストールは go get でサクッと
SELECT * FROM users INTO OUTFILE '/tmp/users.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up
サーバーのメモリのグラフを見ているとどうもページキャッシュがどんどん増えているという状況があったとします そんな時に例えば Nginx のログとか明確にページキャッシュに乗っていそうなログがあればいいのですが,心当たりがないのにどんどん増えているのは不穏なのでどのファイルがページキャッシュに乗っているのか調べたいです そんな時に役立つのは cpan モジュールの Sys::PageCache です ファイル指定で、ページキャッシュにのっているか確認したり追い出したり - (ひ)メモ これを cpanm でインストールすれば pagecache-check.pl と pagecache-clear.pl というコマンドをインストールされます そしてファイル名を指定すればそのファイルがページキャッシュにどの程度乗っているか確認できたり,ページキャッシュから追い出せたりする超便利コマンドです こ
fluentd で Nginx などのログを解析してホスト名付きで growthforecast に POST してグラフを描いていました しかしそのログを解析しているサーバーは AP サーバーでユーザーからのリクエストを処理しています なのでログファイルを正規表現で parse する fluentd の処理は CPU を消費していました そこで各 AP サーバーから fluentd でログを parse せずにそのまま他のサーバーに送信してそのサーバーがログの parse と growthforecast へ POST するようにしようと考えました その時に各ホストは今まで通り別にグラフを描こうと思ったのですが想像以上に苦戦したので書いてみます fluentd はほぼ初めてなので間違っているところやおかしなところがあればぜひ指摘して欲しいです fluentd で parse せずに fo
UNIX domain socket 通信は同一マシン上のプロセス間通信にしか使えないというデメリットがありますが,tcp 通信よりも圧倒的にパフォーマンスが良いので要求仕様的に使わなければならない局面は多いと思います 今回はフロントに Nginx で proxy して同一マシン上の別プロセスで動いているアプリケーションサーバーに対して UNIX domain socket 通信を行う構成で実際のアプリケーションサーバーに流れている通信を見たい時にどうするか書きます 実際にトラブルが起こった時に実際にどのような通信が流れているのかは tcp 通信なら tcpdump をすれば見れますが,UNIX domain socket 通信の場合は容易に見ることが出来ないので実際のアプリケーションサーバーにどのような通信が流れているのか分かりません しかしアプリケーションサーバーにどのような通信が流れ
画像を返すルーティングを持つアプリケーションで URL が画像に対して一意に決まるなら Nginx 側でキャッシュを取ってアプリケーションの負荷を下げたいと考えると思います そしてそのような画像を返すなら expires を付けてユーザーのブラウザにもキャッシュさせたいところ ブラウザは HTTP のレスポンスヘッダーに Last-Modified や Expires や Cache-Control などを付けるとブラウザは次回のリクエストでは If-Modified-Since を付けてくれます そこで Nginx は Last-Modified が If-Modified-Since と同じかそれより昔ならステータスコード 304 番を返すのでブラウザは手元のキャッシュを表示することでコンテンツ自体をダウンロードする必要がなくなります しかしよく考えれば当然ですが,Nginx が La
GrowthForecast には残念ながらログファイルを書き出すオプションは無く,すべて標準出力に吐くようです しかしそのようなアプリケーションでも start-stop-daemon を使って daemon 化してかつ標準出力に吐くログをログファイルとして保存したいことがあります このような場合ただリダイレクトするだけではうまくいかないので以下のようにします start-stop-daemon --start --background --exec "/bin/bash" --make-pidfile --pidfile "$PID" -- \ -c "exec $DAEMON >> /var/tmp.log 2>&1" まず bash の daemon として立ち上げますが,このままだと bash が daemon として起動してしまいます そうなると pid が bash の da
Sinatra とか Rails とかは Rack の上で動きます ということで Rack ミドルウェアを使って手軽にプロファイリングを取りましょう Gemfile の適当な場所に以下を足します
これに cpu の状況を確認したいなら --top-cpu-adv,IO を確認したいなら --top-io-adv でブロッキング IO を確認したいなら --top-bio-adv を付ける rsync
Docker でいい感じの Debian のイメージが欲しい Docker も Debian も最高ですね 最高に最高を合わせたら最高なのでいい感じの Debian イメージが Docker でも欲しいですね ということで作りましょう シェルスクリプトで簡単に https://github.com/dotcloud/docker-debian/blob/master/contrib/mkimage-debian.sh 公式でシェルスクリプトが用意されているのでこれを使います …と行きたいところですが,サポートされなくなったようで,一部のコマンドが古いです avoid deprecated message of docker tag command (in docker 0.7) by tdtds · Pull Request #6 · dotcloud/docker-debian プルリク
tmux のキーバインドに何が割り当てられているか気になることがあると思います 特にデフォルトで何が割り当てられているのかの情報などは man などにもあまり書かれていないですし,検索してもあまり出てきません そこで使うのは list-keys です tmux list-keys もしくは tmux 内ならいつものプレフィックスを押してから :list-keys を打ちます(タブで補完が効きます) そうするとキーバインドの一覧が見れます 便利!! Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you ca
こんにちはこんにちは 私は日々大量のサーバーで作業をする必要があるので tmux が欠かせません そんな中最高便利な記事が先日公開されました Tmuxでウィンドウをインタラクティブに移動する - Qiita [キータ] しかしこの記事が全く話題になっていません おそらく理解されていないのだと思います ということで私がもう少し詳しく説明したいと思います 先程の記事と同様に ssh-configにはパターンが使えるので便利 - Qiita [キータ] tmuxで色んなホストにsshする時に便利な.ssh/config - Qiita [キータ] の合計 3 記事を組み合わせて初めて達成できる最高のソリューションを紹介します tmux のウィンドウの名前 tmux で大量のウィンドウを立ち上げて ssh しているとどのウィンドウがどこのホストにいるのか分からなくなります そこで先程紹介した 2
とすればインストールできます migemo は元々 Ruby で書かれていたようですが,最近の Ruby では動かないので C 言語で再実装された cmigemo を使うのが一般的です Emacs の設定 EmacsでPATHの設定が引き継がれない問題をエレガントに解決する - Qiita [キータ] この記事を参考にあらかじめ PATH を通すようにしましょう Emacs での設定を紹介します (when (and (executable-find "cmigemo") (require 'migemo nil t)) (setq migemo-options '("-q" "--emacs")) (setq migemo-user-dictionary nil) (setq migemo-regex-dictionary nil) (setq migemo-coding-system
次のページ
このページを最初にブックマークしてみませんか?
『catatsuy - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く