サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
新内閣発足
qiita.com/catatsuy
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
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が定義されています。
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(st
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? (当日はesaのプレゼンテーションモードで発表しました) (pixiv night in Fukuoka #02 - ピクシブを取り巻く技術がわかる一夜! - connpass の発表資料です) 自己紹介 各種SNSをcatatsuyでやっている かたついと呼ばれることが多い ピクシブ株式会社で開発基盤チームと広告チームの兼任 2014年度新卒(2013/10入社) pixivの__技術的な改善__が主な業務(後で詳しく) 単著『pixivエンジニアが教えるプログラミング入門(星海社新書) ピクシブ社内の非エンジニア向けのプログラミング
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? (当日はesaのプレゼンテーションモードで発表しました) (文字起こししてもらえました ちゃんと復旧できる、GitLabのバックアップ運用方法 – GitLab meetup #01レポート - pixiv inside) 自己紹介 各種SNSをcatatsuyでやっている かたついと呼ばれることが多い 会社のアドベントカレンダーで GitLabの運用方法をドーンと公開!! - pixiv inside http://inside.pixiv.net/entry/2016/12/17/100000 を書きました ピクシブ株式会社で開発基
以前ソースコードを読んでいておもしろかったのでメモしておきます。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
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? (esaのプレゼンモードで当日は発表しました) 突然ですが、質問です MySQLなどにデータを保存するWebアプリケーションを作ったことはありますか? Linuxサーバーにsshしたことはありますか? AWSやGCPやさくらのVPSやさくらのクラウドなどなど、そういったサービスを使って自分専用のサーバーを作ったことはありますか? あっても、なくても、皆さんにおすすめな情報があります!! ISUCONとは お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル、それがISUCONです 優勝賞金は1
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
そろそろ 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 で開いたファイルも同様に表示されるのも非常にお勧めです.
Golang は使われていないものまで import しているとコンパイル時にエラーになります。 この仕様自体はとてもいいと思うのですが,ちょっとしたファイルを試行錯誤している時にどこかの行をコメントアウトする度に import 文も書き換えないとコンパイルできないというようなことが発生してイライラする事があります。 せっかくの静的型付け言語ですのでこの辺りを自動でいい感じにしてくれると嬉しいです。 そんなあなたに goimports がおすすめです goimports - GoDoc Emacs などのエディタで保存時に gofmt をかけて自動整形させる設定は誰でもしていることと思いますが,goimports は gofmt と全く同じ用に使えてかつ import 周りを自動でいい感じにしてくれるという優れものです。 インストールは go get でサクッと
サーバーのメモリのグラフを見ているとどうもページキャッシュがどんどん増えているという状況があったとします そんな時に例えば 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
まず bash の daemon として立ち上げますが,このままだと bash が daemon として起動してしまいます そうなると pid が bash の daemon となり肝心の立ち上げたいプロセスの管理ができなくなってしまいます そこで bash の exec を使います これを使えば標準出力をログファイルに書き出せてかつ pid も管理したいプロセスのものになります 今回は GrowthForecast を実行する専用ユーザー gf を作成してそこで plenv を使って Perl と GrowthForecast をインストールしたので以下の様なスクリプトを用意しました # !/bin/bash PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin APP=growthforecast ROOT_DIR="/home/gf" D
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 が欠かせません そんな中最高便利な記事が先日公開されました Tmuxでウィンドウをインタラクティブに移動する - Qiita [キータ] しかしこの記事が全く話題になっていません おそらく理解されていないのだと思います ということで私がもう少し詳しく説明したいと思います 先程の記事と同様に ssh-configにはパターンが使えるので便利 - Qiita [キータ] tmuxで色んなホストにsshする時に便利な.ssh/config - Qiita [キータ] の合計 3 記事を組み合わせて初めて達成できる最高のソリューションを紹介します tmux のウィンドウの名前 tmux で大量のウィンドウを立ち上げて ssh しているとどのウィンドウがどこのホストにいるのか分からなくなります そこで先程紹介した 2
次のページ
このページを最初にブックマークしてみませんか?
『catatsuy - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く