この記事は Vim Advent Calendar 2012 の 40 日目の記事です。 昨日は @kokukuma さんのなんかvimがセグメンテーションフォルト吐いたんですけど。。でした。 はじめに プログラミングに限らず、何かを書くときにコピー&ペーストってよく使いますよね。Vim でも当然その機能はありますが、Vim の場合はレジスタという仕組みによってさらに便利に使うことができます。 今回は、私が最近覚えてすごく便利に思ったコピー&ペーストに関する小ネタを書きます。 前提知識 レジスタとは 文字列を y でコピー(Vim ではヤンクといいます)すると、その文字列は無名レジスタに蓄えられます。d とか c とかで削除した時も同様です。無名レジスタに記録された文字列を貼り付けるには単純に p や P を使います。 "ayy とか "bdw とすると、明示的に a レジスタや b レジ
[A+B]は同時に押下。 [A・B]はAに続いてBを押下。 この例は、CTRLとwを同時に押下、CTRL-wを離してjを押下。 (但しCTRL+w・jは「j」をCTRLを押したままでもOKなようだ)
xargs の -P オプションを使うとプロセスを複数起動して処理を並列に行なうことが出来る。 例 例えば、 1 万枚の JPEG 画像を全て 800x800 に収まるように効率良くリサイズしたい。 まず私はこのようなコマンドを考えた。 convert --geometry 800x800 *.jpg しかし zsh に怒られた。 zsh: argument list too long: convert 引数が全て展開されるためこのような事が起きる。 私は xargs を使って処理することを思い付いた。 ls | xargs -I{} convert --geometry 800x800 {} c_{} 処理は行なわれるが非常に遅い。 しかも CPU を全く使っていないことが分かり、私は処理を並列的に行なう事を考えた。 そこで xargs の -P オプションの出番である。 P の後に並列
こんにちは『なぜか営業部に所属している開発チーム』の千葉(@kachina_t)です。 自分が所属する開発チームは、いわゆる受託開発のチームではなく 今年の4月に立ち上げたばかりの『Cloudworksの運営』+『新規サービスの開発』を コアとしたサービス開発チームとなります。 我々にとって、以下の2点は新サービスのアイデアにつながる貴重な情報になります。 ・営業チームがお客様から頂くフィードバック ・AWSチームの日々の業務での発見 これらを迅速に連携する為に、営業部付けになっているんですね。 決して社内に開発者同士の派閥がある。とかではないのでご安心ください。 そんなサービス開発チームなのですが、なんとMac率が100%です。 はい、スタバの電源エリアでドヤ顔してるアレです。 メンバの1人は元々Linux使いだったのですが、ISMSの取得に向けてMacへ移行しました。 そんな彼が、Li
プログラムの種類によっては、そのまま実行できるものと、実行できるようにするために「ビルド」が必要なものとがあります。Cなどのコンパイルが必要な言語で書かれたプログラムは当然ビルドが必要ですし、コンパイルが不要な言語であっても、インストーラパッケージを作るというビルド作業が必要な場合はあります。 ビルド作業の自動化のためのツールとしてmakeなどがありますが、そこまで本格的な事をやる必要がない場合は、シェルスクリプトで「ビルドスクリプト」を作るのが手軽でおすすめです。この記事では、そのような場合に役立つシェルスクリプトのテクニックを4つご紹介します。 エラーの気付きやすさとデバッグのしやすさを高める メッセージに色を付ける シェル関数をライブラリにする 一時的に作業ディレクトリの中に入る エラーの気付きやすさとデバッグのしやすさを高める はじめに紹介するテクニックは問題が発生した時に気づきや
タイトルは釣りぽよ〜 今日ここで書くのはわりかし最近知ったことだったりするのが多いんですが、せっかくなので書いておこうかなぁと思った次第です。Linuxって書いてるけど、普通にMacでも使えるハズです。 知ってる人にとってはアタリマエのことですけどね……。 ファイルサイズの桁でかすぎてがわからん ls とか duあたりで使える話ですね。 ファイルサイズが大きすぎてパッと見わからないよっていうことってあるじゃないですか。ありますよね。いやある。 そんな時は -h オプションを使いましょう。 $ ls -l /var/log/nginx/access.log -rw-r--r-- 1 root root 1897381 8月 26 02:50 2012 /var/log/nginx/access.log $ ls -lh /var/log/nginx/access.log -rw-r--r--
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
なんかtwitterで書いたらウケたっぽいので cronをつかって外部のAPIに問い合わせる場合は、毎時0分をさけるのオススメ!!!!お兄さんとの約束だ!!! — masahiro nagano (@kazeburo) August 9, 2012 某サービスのAPIへの問い合わせ件数を調べると、毎時 0分台(0秒から59秒)のアクセスは1分から59分までの1分間の平均アクセス数の5倍から8倍にもなります。 これはおそらく、crontabの設定が 0 * * * * /path/to/call_foreign_api になっていることが多いからじゃないかなぁと思うのです。 その結果、サーバのロードアベレージは このように毎時0分だけ跳ね上がってしまいます。サービスを快適に提供できなくなる可能性があるので、APIの利用を制限したり、サーバを追加しなければなりません。これはサービス利用者、サー
scpでダサい作業していたら、riywoさんのポストを見つけて質問してみた。 そしてscpをパラレルにしてしまったのが判断ミスだったなー。けど検証する為には時間なかったから仕方ないな 2012-07-27 18:36:17 via YoruFukurou scp使わない派 2012-07-27 18:36:40 via YoruFukurou @riywo お、何使う派ですか? 2012-07-27 18:38:13 via YoruFukurou to @riywo @kenjiskywalker rsyncですね。scpはアトミックに更新できないので。 2012-07-27 18:38:31 via YoruFukurou to @kenjiskywalker 複数のファイルとかはrsync使うけど ギガバイトくらすの大きいファイルはscpで使い分けてた。 あれ、何で使い分けてるんだっ
サーバのファイル整理作業をしていたところ…、 間違えてrm -rfしてしまった! ぎゃーバックアップもねー! 長いこと生きてたらこんな経験の1度や2度はありますよね? えぇ、ついさっきやらかしちゃいましたwwオワタwww 速攻「rm 復活」とか「rm 取り消し」とかでググッたねw、したらmcってプログラムのUndelete機能使えばよいって情報が出てくるが、どうやらこれext2じゃないと使えないっぽいぞ…、うちext4だ。 混乱。以下ターミナルのヒストリーより実況。 ## こーいうときはまずあれだ、現場保存! ## まずは今いるパーティションを確認 # df -hT Filesystem Type サイズ 使用 残り 使用% マウント位置 /dev/sdb2 ext4 193G 6.9G 176G 4% / /dev/sdb1 ext3 194M 22M 163M 12% /boot /d
shell script を書くときの tips 2つ(初心者向け) shell script は普段さけて通りたいと願ってやまないわけですが、たまには書かないといけないことがあるので、そういうときは覚えておくと便利な tips を2つ。 autodie っぽくする set -e とすると、コマンドの実行に失敗したときにそこで実行がとまるので便利。 #!/bin/sh set -e perl -e 'die' echo SHOULD NOT REACH HERE とすると % ./hoge.sh Died at -e line 1. % echo $? 255 となって、最後までいかずに死にます。 複数のコマンドを順番に実行するときに便利。 なお、以下のような挙動をするんだそうです。 ただし失敗したコマンドが until または while ループの一部である、 if 文の一部である、 &
今、お風呂からあがって、TwitterのTLを見てたら「crontab -e は「絶対に」使ってはいけない - ろば電子が詰まつてゐる」のエントリを読んで、その勢いで書く。 crontabコマンドにはrオプション(Remove)があり、これを実行すると何の警告もなく全てが消え失せる。 crontab -e は「絶対に」使ってはいけない - ろば電子が詰まつてゐる 確かに、(僕も含めて) 誰もが一度くらいは怖い/ドキドキするような思いをするのかもしれないですが、crontabコマンドには"-i"オプションという、削除時に確認のプロンプトを出してくれるオプションが存在します。 つまり、aliasでこのオプションをつけておけば良いわけですな。 $ crontab -e crontab: installing new crontab $ crontab -r $ crontab -l no cro
今までナチュラルにcrontab -eでcron編集をしていたのだけど、実はこれはとてつもなく危ないやり方だった。ということを、今さら知った。 crontab -rの恐怖 crontabコマンドにはrオプション(Remove)があり、これを実行すると何の警告もなく全てが消え失せる。 macbook:~ ozuma$ crontab -l 15 * * * * /home/ozuma/bin/hoge.sh 0 9 1 * * /home/ozuma/bin/piyo.sh > /dev/null 2>&1 */5 * * * * /home/ozuma/bin/fuga.sh > /dev/null 2>&1 macbook:~ ozuma$ crontab -r macbook:~ ozuma$ crontab -l crontab: no crontab for ozuma macbo
cp -rでシンボリックリンクまで実体としてコピーされて困ったのでMacのmanを読んでいたのだが、そもそもcp -rってオプション一覧に載ってない。あれれ?と思って続きを読んでいたら互換性の章でstrongly discouragedと書かれていた。 COMPATIBILITY Historic versions of the cp utility had a -r option. This implementation supports that option; however, its use is strongly discouraged, as it does not correctly copy special files, symbolic links, or fifo's. 代わりに-Rを使うべきだそうだ。その場合のシンボリックリンクの扱いをどうするかはオプションで指定でき
GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
何に関連して記事を書こうと思った訳でもないです。たんなる一人コードリーディングです。 GNU CoreUtils に入ってる rm を読みました。 GNU Project Archives http://ftp.gnu.org/gnu/coreutils/ 読んだのは coreutils-8.17.tar.xz に入ってる src/rm.c preserve_root 変数は 203行目にある main で int main (int argc, char **argv) { bool preserve_root = true; struct rm_options x; true に初期化されていて319行目 if (x.recursive && preserve_root) { static struct dev_ino dev_ino_buf; x.root_dev_ino = get
サーバ間の通信を調査したいときに、netstatはよく使うと思います。たとえば、あるポートを使ってるプロセスを探したい時。 # netstat -taopn | grep :29324 tcp 0 0 192.168.11.11:29324 192.168.11.12:3306 ESTABLISHED 10726/perl off (0.00/0/0) ただ、すごいたくさん通信してるサーバだと、netstat自身がすごい遅くて、上記コマンドが終了するのに時間がかかります。手で見てる時はまぁどうでもいいんですが、自動化したい時とかにずっと待ってると微妙ですよね。 見つけたいのは 1 行だけだなぁと思ったので| head -1とかしてみたんですがあんまうまくいってない。 # time netstat -taopn | grep :29324 | head -1 tcp 0 0 192.168.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く