タグ

tipsに関するar_tamaのブックマーク (169)

  • Ctrl+Cとkill -SIGINTの違いからLinuxプロセスグループを理解する | ギークを目指して

    しばらくLinuxネタが続く・・。 近いうちに最近出たJava8ネタを書いてみようと思います。が、もう少しLinuxネタにお付き合いください。 前回はsshdを対象に親プロセスをkillした場合の動作を確認した。 killされたプロセスの子プロセスは孤児プロセスとなり、カーネルによって自動的にinitプロセスの子として扱われる事を説明した。(この動作を「リペアレンティング」と呼ぶ) 今回はこの続き。 Linuxで作業していてCtrl+Cしてプロセスを終了した場合、フォアグラウンドのプロセスやその子プロセスも一緒に終了する。 ということは、子プロセスは孤児として扱われず、リペアレンティングされていないことになる。 今回の記事ではこの振る舞いの違い(リペアレンティングされるか否か)に着目し、kill -SIGINTコマンドとCtrl+Cの違いについて考えていく。 そもそもkillコマンドやCt

    Ctrl+Cとkill -SIGINTの違いからLinuxプロセスグループを理解する | ギークを目指して
  • sshd再起動時にssh接続が継続する動作について | ギークを目指して

    Linux/Unixサーバにsshしている際、sshdを再起動したとする。 sshdは一度終了する訳だから、現在接続しているsshも切断されるかと思いきや、接続は継続する。 今まであまり気にしていなかったけど、この振る舞いについて調べてみた。 先ず、現象の確認から 対象サーバにssh接続し、sshdを再起動してみる。 $ ssh ryozo@192.168.56.12 # 対象サーバに接続 $ hostname centos1.example.jp $ sudo service sshd restart sshd を停止中: [ OK ] sshd を起動中: [ OK ] $ hostname centos1.example.jp sshdは一度停止されているにもかかわらず、対象サーバからは切断されていない。 プロセス構造から理由を探る sshdプロセスの構成 先ず、sshdプロセスの構

  • AFHTTPSessionManagerをPromiseKit化するメモ - Qiita

    swiftナニソレなのでコードはObjective-Cです。 ほぼ公式のAFHTTPRequestOperationによるサンプルのまんま。 GETのPromise版オーバーロードを作る。 @interface AFHTTPSessionManager (PromiseKit) - (PMKPromise *) GET: (NSString *) URLString parameters: (NSDictionary *) parameters { return [PMKPromise new:^(PMKPromiseFulfiller fulfiller, PMKPromiseRejecter rejecter) { NSURLSessionTask *task = [self GET: URLString parameters: parameters success:^(NSURLSe

    AFHTTPSessionManagerをPromiseKit化するメモ - Qiita
  • Perlベストプラクティスのベストプラクティスじゃないやつをまとめてみた | おそらくはそれさえも平凡な日々

    Perlベストプラクティス Perlベストプラクティス(略してPBP)という良いがあります。僕自身もPerlを学ぶ過程で非常にお世話になったなのですが、以下の様なことが度々指摘されています。 bestって書いてあるけど「著者の」bestプラクティスなので偏りがあることも 「決して」とか「必ず」とかが多いけどあんま真に受けてはいけない このを書くために書かれたであろうCPANモジュールとかがあって、しかも公開されてないものまである 致し方ないけど現在の状況にマッチしない古い情報もある なので、PBPの何がベストじゃないのかについてまとめてみることにした。前からやりたかったんだけど、思い立ってやった。 まとめてみたら、思っていたほどには項目が上がってこなかったので、やっぱPBPは良いだなと改めて思いました。なので、このエントリーがこれからPBPを読む人の助けになれば良いなと思います。

  • pixivでBloomFilterを使うためにやったこと - pixiv inside [archive]

    こんにちは。最近はAndroidアプリ開発に入門しました、@edvakfです。 pixivではキャッシュ兼汎用KVSとしてKyotoTycoon (KT)を使用しており、頻繁にアクセスされるキーはアプリケーションサーバー内のAPCPHPのshared memory cacheです)にもキャッシュすることで多段化しています。 このような構成の弱点として、「ほとんどの場合は値が無いけど毎回存在確認が必要なキー」の場合に前段にキャッシュが無くて毎回後段にまで問い合わせなければいけないという問題があります。ネガティブキャッシュ(値がないことをキャッシュする)を使うという手もありますが、問い合わせるキーの数が膨大になってくると現実的ではありません。 pixivでは、作品に付いている最大10個のタグについて、ピクシブ百科事典に記事があるかどうかを判定する必要がありました。これに加え、最近ではBOOT

    pixivでBloomFilterを使うためにやったこと - pixiv inside [archive]
  • SQL感覚でHiveQLを書くと痛い目にあう例 - still deeper

    Hadoop Advent Calendar 2013 4日目の記事です tl;dr explainとjob historyを読め 1 reducerは悪 data skewは悪 前書き みんな大好きSQLでHadoop上での処理を実行できるHiveにはみなさん普段からお世話になっていることでしょう。ちょっと調べ物でググる度に目に入る愛らいしいマスコットが、荒んだ心に清涼な風をはこんでくれます。 ですがHiveのクエリ言語はSQLではなくHiveQLですし、実行エンジンもRDBのそれとは全く異なるMapReduceです。SQLのつもりでHiveQLを書いていると地雷を踏んでしまうことがまれによくあります。エントリでは陥りがちなHiveQLの落とし穴を2つ紹介します。 例1 SELECT count(DISTINCT user_id) FROM access_log SQLに慣れた方であれ

  • Harrietを使ってprove単位でmysqldを作ってみた話 - $shibayu36->blog;

    tokuhirom blog を見て、これ便利だなーと思ったので、試しにこれを使ってprove単位でTest::mysqldを起動するやつを作ってみた。 harriet用設定を作る まずt/harriet/mysqld.plみたいなのを作る。この中でmysqldの起動とschema流し込みまでしてしまう。複数のdsnを保存しておきたければ、jsonで入れておくと良さそう。 # t/harriet/mysqld.pl use JSON::XS; use Path::Class; $ENV{TEST_EPIC_DSNS} ||= do { require Test::mysqld; my $mysqld = Test::mysqld->new( my_cnf => { 'skip-networking' => '', # no TCP socket 'default-storage-engin

    Harrietを使ってprove単位でmysqldを作ってみた話 - $shibayu36->blog;
  • iOSアプリのデザイン「UIAppearance」でスタイルシートっぽいワークフロー #iOS #DeNA|CodeIQ MAGAZINE

    最近は、プロトタイプツールがWebデザイナーやUI デザイナー界隈で流行っていますが、iOSのコードを直接いじれば、より高速に精度高いリリースプロダクトが作れるかもしれません。 DeNA高橋伸弥さんが今回ご紹介する UIAppearanceの部分だけでも触れると、スタイルシートのようにアプリのデザイン調整ができます。 by 馬場美由紀 (CodeIQ中の人) UIAppearanceはCSS のように、UI要素をまとめて装飾可能な技術です。 iOS5より搭載開始し、iOS6、iOS7と若干の変更が行なわれながら着実に進化している機構で、今現在のiOSアプリデザイン実装の必須知識と言えます。 iOS5,iOS6でスキュアモーフィズムでジューシーなグラフィックのUIのアプリが流行りましたが、まさにこの機能が活躍していたと言えます。 iOS7からいわゆるフラットデザインが流行っていますが、よりグ

    iOSアプリのデザイン「UIAppearance」でスタイルシートっぽいワークフロー #iOS #DeNA|CodeIQ MAGAZINE
  • おすすめzsh設定 - 2011-09-05 - ククログ

    他の人がzshを使っているのを見ていると、「もっと便利に使えるのに」と、もやっとしたり、「え、その便利な機能ってなに?」と、発見があったりします。だれかに「この設定をすると便利ですよ」と話しやすくするために、今のzshのおすすめ設定をここに記しておきます。 もし、Emacsも使っている場合はおすすめEmacs設定もどうぞ。 ディレクトリ構成 長年漬け込んできたzshの設定がそこそこの量になっているので、以下のようなディレクトリ構成にして分類しています。主に、zsh標準機能の設定と追加パッケージの設定を分けるためにこうしています。 ~ ├── .zshrc # シェルを起動する毎に読み込まれる。 │ # ~/.zsh.d/zshrcを読み込んで │ # 標準機能の追加設定を行う。 ├── .zshenv # ログイン時に一度だけ読み込まれる。 │ # ~/.zsh.d/zshenvを読み込ん

    おすすめzsh設定 - 2011-09-05 - ククログ
  • iOS開発におけるウィンドウ「UIWindow」の知られざる活用方法とは? #iOS|CodeIQ MAGAZINE

    iOSアプリではシングルウィンドウしかないと思われがちですが、実は随所で使われているiOSのウィンドウ「UIWindow」。 このUIWindowの知られざる登場シーンや活用法、注意点などについて、DeNAの@sintarioさんに解説レポートを寄稿していただきました。 by 馬場美由紀 (CodeIQ中の人) iOS開発における「ウィンドウ」とは? デスクトップOSであれば、一つのアプリが複数のウィンドウを同時に展開するマルチウィンドウアプリであることは、ほぼ当たり前ですよね。画面上にいくつものウィンドウを同時に開いて、並べたり切り替えたりしながら画面の広さを活かしたやり方で作業するものです。 これに対して、iOSの世界観は大きく様相が異なります。高精細なRetinaディスプレイが普及したとはいえ、iPhoneの画面はやはりお世辞にも広くはありません。一般的にiOSでは、一つのアプリが画

    iOS開発におけるウィンドウ「UIWindow」の知られざる活用方法とは? #iOS|CodeIQ MAGAZINE
  • gitのHEADがブランチから外れてしまう現象とその直し方 - 西尾泰和のはてなダイアリー

    detached HEADって言う名前で入門Gitにも書いてあるんだけど、そういうことが起こりうるってメンタルモデルができてないと起きていることにすら気づかないので書いておく。 まず説明用のリポジトリを用意します。 t$ git init Initialized empty Git repository in /Users/nishio/gittest/pygit2/t/.git/ t$ touch a t$ git add a t$ git commit -m "add a" [master (root-commit) 6f6eb7c] add a 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 a t$ touch b t$ git add b t$ git commit -m "add b" [m

    gitのHEADがブランチから外れてしまう現象とその直し方 - 西尾泰和のはてなダイアリー
  • MySQLで処理に長時間かかっている複数クエリをまとめて殺す方法 | Basicinc Enjoy Hacking!

    あまりにも処理に時間がかかるようなSQLを実行してしまい、MySQLがうんともすんとも言わなくなってしまうような状況、よくありますよね。っていうか、まぁそんな状況あってはならないんですが、時たまあります。そんな時、問題となっているクエリの処理を止めたいわけです。 特定のクエリを止める方法 MySQLで実行中のクエリ一覧を見て、SQLを強制終了する方法 こちらを見てもらえればやり方は分かります。単純にMySQLに入って、show processlist;で問題のあるクエリを発見し、プロセスIDを kill するだけ。とても簡単。 複数のクエリを一括で止める方法 今回は問題のあるクエリが100個あったらどうする…?的なのを解決するエントリーです。まぁ、問題あるクエリ100個ある状況は、アプリ的に問題あるんじゃね?っていうレベルですが。 1個ずつプロセスIDをコピペして…なんてやってられないです

    MySQLで処理に長時間かかっている複数クエリをまとめて殺す方法 | Basicinc Enjoy Hacking!
  • もう巨大なデータをgitignoreしなくていい! ~git-mediaの使い方~ - 3度の飯と最新技術

    はじめに gitはコミットごとにレポジトリ内のファイル全てをスナップショットとして保存するというリッチな 設計になっている。 それがgitの便利さの所以なのだが画像データや音声データのようなバイナリデータを持とうとすると 少しの変更でもそのたびにコピーが生じてファイルサイズ分の容量が増えることになり、あっという間にレポジトリが 肥大化してしまう。 特に学習結果をファイルに保持してテスト等に使いまわすようなプログラムを管理しようとすると アルゴリズムのパラメータを少し変えるたびに100kB近い容量が増えていき、実にイケてない。 普通なら.gitignoreに*.xmlと書いてデータ自体は手動管理したり、シンボリックリンクにして別ディレクトリに置いてそれだけrsyncで同期するようにしたりするんだが 過去の実験時の状態に戻れなかったり、毎回rsyncするのは不便だった。 なんか無いかなーと思っ

    もう巨大なデータをgitignoreしなくていい! ~git-mediaの使い方~ - 3度の飯と最新技術
  • Zshで快適な補完ライフを送るために欠かせないもの - Qiita

    zsh付属のincremental-complete-wordを使いづらく感じる方は以下の2つがかなり合うのではないかと思う。 incr.zsh こんな感じに補完してくれる。 参考:http://d.hatena.ne.jp/hchbaw/20100526/1274886125 zaw.zsh anything.el / unite.vim ライクな検索ができる。 参考:http://u7fa9.org/memo/HEAD/archives/2011-02/2011-02-22_1.rst

    Zshで快適な補完ライフを送るために欠かせないもの - Qiita
  • てきとうで cool な favicon を作る : sonots:blog

    てきとうで cool な favicon を作る : sonots:blog
  • migemoを使ってEmacsライフを快適に - Qiita

    とすればインストールできます 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

    migemoを使ってEmacsライフを快適に - Qiita
  • percol 入れて zsh と組み合わせたら超便利

    import sys, commands from percol.command import SelectorCommand from percol.key import SPECIAL_KEYS from percol.finder import FinderMultiQueryMigemo, FinderMultiQueryRegex ## prompt # Case Insensitive / Match Method に応じてプロンプトに表示 def dynamic_prompt(): prompt = ur"" if percol.model.finder.__class__ == FinderMultiQueryMigemo: prompt += "[Migemo]" elif percol.model.finder.__class__ == FinderMultiQuery

    percol 入れて zsh と組み合わせたら超便利
  • zawでzshを便利に使う - Qiita

    zawを使うとファイルオープン、ディレクトリ移動などがかなり簡単になる。 前提 perl インストール済み zsh インストール済み OSX 環境 準備 perlを入れておく。 zawを公式から clone してくる。 $ mkdir ~/zsh_plugins $ cd zsh_plugins $ git clone git://github.com/zsh-users/zaw.git source ~/zsh_plugins/zaw/zaw.zsh bindkey '^[d' zaw-cdr bindkey '^[g' zaw-git-branches bindkey '^[@' zaw-gitdir function zaw-src-gitdir () { _dir=$(git rev-parse --show-cdup 2>/dev/null) if [ $? -eq 0 ] th

    zawでzshを便利に使う - Qiita
  • エンジニアでもターミナル作業ログを残したい!! - 目の前に僕らの道がある

    今まで下記のようにexecで標準出力と標準エラー出力を作業ログに残すという事をしてたんですが、実際に打ったコマンドは出力されないので、ちょっと不便だなーと思ってました。 exec > >(tee --append /tmp/$(date +"%Y.%m.%d")_$(id --user).work.log) 2>&1 ちょっと調べて見るとscriptコマンドを使うとコマンドを含めて出力できることを知りました。 これで作業ログを残すのがはかどる! script --append --flush /tmp/$(date +"%Y.%m.%d")_$(id --user).work.log チームメンバーにこのログをtailさせておけば、画面共有も出来たりもします。 (その用途ならホントはwemuxとか使った方が良いんでしょうけどね。。 tail -F /tmp/$(date +"%Y.%m.%

    エンジニアでもターミナル作業ログを残したい!! - 目の前に僕らの道がある
  • Expressive Objective-C

    Exploring Objective-C through fine-grained, flexible abstractions

    Expressive Objective-C