UNIX/Linux の部屋 に、bash の内部コマンド select コマンド を追加しました。メニュー形式の選択肢を提示し、ユーザに選ばせることができるコマンドです。
UNIX/Linux の部屋 に、bash の内部コマンド select コマンド を追加しました。メニュー形式の選択肢を提示し、ユーザに選ばせることができるコマンドです。
前回の(1)はこちらから。 プロジェクトでcronを利用する 筆者は普段ゲーム開発のサーバサイドを担当していますが、プロジェクトによってはバッチサーバのcrontabが100行を超えることもあります。イベント、ランキング処理、監視、集計、バックアップ、リカバリ処理などをしっかりやろうとすると、どうしてもそれくらいになってしまいます。 100行とはいかなくても、プロジェクトで使うcrontabの行数が膨らんでくると、サーバで直接crontabを編集することは管理上現実的ではありません。 crontabの記述とリポジトリ管理 では実際のプロジェクトでcrontabをどのように管理していけばよいのでしょうか。筆者は次の方針を立てています。 crontabの記述にゆるやかな規約を設け、リポジトリ管理する crontabの自動テストを行う crontabの反映方法をなるべく自動化する crontab
ネットワークプログラムとSIGPIPE 「私の書いたサーバが突然死するんです。どうしてでしょうか」という質問を受けることがあります。これは多くの場合、SIGPIPEの処理を忘れていることが原因です。SIGPIPEとは、切断されたネットワークソケットなどにデータを書き込もうとした際に送出されるUNIXシグナルです。特に設定しない限り、プロセスはSIGPIPEを受け取ると強制終了されます。そのため、通信が突然切断される可能性のあるTCPサーバにおいては、SIGPIPEを無視するよう設定する必要があります。 # デフォルトの動作(SIGPIPEの場合はプロセスの終了)に設定 $SIG{PIPE} = 'DEFAULT'; # SIGPIPEを無視するよう設定 $SIG{PIPE} = 'IGNORE'; # SIGPIPEを受信した際に実行するサブルーチンリファレンスを # 設定 $SIG{PI
先日、moznion氏の「実行中のプログラムの進捗度を手っ取り早く確認したい」という面白い記事を読みました。 これに影響されて、Perlと$0のウンチクを id:lesamoureuses に語ったところ地味にウケが良かったので、さらに調子に乗って、細かすぎて伝わらないPerlと$0の関係について語ります。なお、本稿の実用性はあまりありませんが、ちょっとだけあります。 概要 上述のmoznion氏のブログは、Rubyで$0をいじるとpsコマンドで見えるコマンド名が変わって便利、という話でした(「アッアッ」)。 Perlでも同様に、$0をいじることでpsコマンドで見えるCOMMAND値を変えることができます(なお時折勘違いする人がいますが、元のファイル名は変わりません。psコマンドで見える値だけです)。ただしこれはOSによって結構動作が違うので、以下しばらくLinux(CentOS)限定の話
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはJapanizeやText::MicroTemplateなどで有名な奥一穂さんで、テーマはUNIXプログラミングです。 はじめに 「正しいプログラム」を書くために必要な知識とはなんでしょうか。テストが正しく実行されることは、正しいプログラムであるための必要条件に過ぎません。プログラミングにおいてはプログラミング言語だけでなく、OSの動作やデータベース、ネットワークプロトコルなど、さまざまな知識が必要になります。 PerlはもともとUNIX系のOS(LinuxやFreeBSD、Mac OS XなどのOSを本稿では以下UNIXと総称します)の上で処理を行うためのスクリプト言語として開発され、今日でもPerlプログラムの多くはUNIX上で実行されています。しかし、「Perlでプログラミング」と言った場合はともすれば
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはsongmuさんこと松木雅幸さんで、テーマはcronです。 なお本稿のサンプルコードは、本誌サポートサイトから入手できます。 cronとは? cronは指定日時にジョブの自動実行を行うジョブスケジューラです。UNIX系のOSであれば実装の違いこそあれ、ほぼ標準でインストールされています。 作業自動化や、タスクを自動実行したいなどといった場合にcronは避けては通れません。Perlでバッチ処理を書く際などに多くの人が活用していると思いますが、ベストプラクティスがわからず恐る恐る使っている人も多いのではないでしょうか。 本稿では、cron活用におけるベストプラクティスについてお話します。 cronの使いどころ cronの使い途は、主に次の3つが考えられます。 a.アプリケーションのジョブの実行 b.システムに関わる
AMIが公開されたのでもう一度やってみた。 AMIについてはこちらのエントリに書かれています ISUCON4 予選問題の解説と講評 & AMIの公開 : ISUCON公式Blog まず ami-e3577fe2 を m3.xlargeで起動します。 CPUは model name : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz でした。 とりあえず、MySQLのindexを追加する。init.shに追加 $ cat init.sh cat <<'EOF' | mysql -h ${myhost} -P ${myport} -u ${myuser} ${mydb} alter table login_log add index ip (ip), add index user_id (user_id); EOF ベンチマークツールのhttp keepal
2014/09/26 コース:元祖こってり 「元祖こってり」記事はネットエージェント旧ブログ[netagent-blog.jp]に掲載されていた記事であり、現在ネットエージェントに在籍していないライターの記事も含みます。 bashにおける脆弱性「Shellshock」について LinuxやMac OS XなどのUNIX系OSで広く使用されているbashに見つかった脆弱性(Shellshockと呼ばれています)が先日から話題になっています。 弊社でもこのbashの脆弱性について調査を行いました。 ■概要 環境変数に特定の文字列を設定するだけでその環境変数内の文字列をシェルが関数として実行してしまいます。 シェルを通じてコマンド等を実行する幅広い環境で影響がありますが、特に顕著に影響を受けるのはCGI等のWebアプリケーション環境です。 CGIをはじめとするWebアプリケーションではWebブラ
DockerHub公式の言語Stack DockerHub Official Repos: Announcing Language Stacks | Docker Blog DockerHubには公式のレポジトリがある.そこにはUbuntuやCentos,MySQLやPostgres,MongoといったDockerイメージがコミュニティーベースで,つまりより汎用的に使える形で開発され集められており,ベースイメージとして簡単に使えるようになっている. 今までは,OSのディストリビューションや,Webサーバ,DBなどがメインだったが,公式として各種プログラミング言語のベースイメージも公開された.現状(2014年9月時点)では,c/c++(gcc),clojure,golang,hylang,java,node,perl,PHP,python,rails,rubyがある. 特徴 この公式の言語s
タイトルは釣りですw*1 とあるテキストファイルを加工してCSVファイルを出力する Perl スクリプトがあり、ディレクトリ内のファイルをリストアップしてCSVファイルに出力しているのだが、なぜファイル名でソートされていないのか聞かれたので調べてみた。 その Perl スクリプトは File::DosGlob::glob でファイルリストを取得していたので、 yazekats% mkdir tmp yazekats% cd tmp yazekats% ls yazekats% touch 3 yazekats% touch 2 yazekats% touch 1 yazekats% ls 1 2 3 yazekats% perl -MFile::DosGlob -e 'map{print qq/$_\n/} File::DosGlob::glob(q/*/)'; 1 3 2 試してみると確
WEB+DBのPerl Hackers Hubで書かれていた「cron周りのベストプラクティス」を読んだ。かなり参考になった。 経緯としては読みたいって呟いたら感想よろしくと言われたので慌てて読んだ。 @shiba_yu36 「読んだ」なら言ってもいい— songmu (@songmu) 2014年2月24日 @shiba_yu36 マジに謝られても…— songmu (@songmu) 2014年2月24日 @shiba_yu36 マジになって感想エントリを書いてください。— songmu (@songmu) 2014年2月24日 特に参考になったこと batch.pl batch.plは非常に良いと思った。というのもcronとかのスクリプトで非常に簡単な事をやっている場合は適当にplファイルを作っちゃって登録するんだけど、得てしてそういうのはテストが無くてバグってて、しかもcronのロ
Beyond grep: ack 2.04, a source code search tool for programmers grepをよく使うプログラマはどう考えても乗り換えるべき新しいgrepコマンド「ack」。 サーバに入ってコードを書いている人はかならず使うgrepですが、grepよりも高速に検索でき、git,svn等のソースコード以外のソースはgrepしないで検索できるツールらしいです。 Perlで書かれていて、Perlの強力な正規表現が使え、ハイライトしてくれます。ソースツリーの下で「ack 検索ワード」で検索するだけというシンプルさもいいです WEBサービスを書いているとhtmlやphp等色々なソースをいじりますが、ファイルの検索対象も選べるため、便利です。 ack --php <検索ワード> でphpのソースのみを対象とし、ack --nophp <検索ワード>でphp
あの頃は青かった。教えるどころか無知をさらけ出すというのはこの事だった。死ぬほど恥ずかしいので消したかったけれど、この記事が一番アクセスがあって長い間いくらか読まれていたらしい。ためらった。ただ、かつての自分といくらかの人に参考になればうれしいけれど、そろそろ役目を終えたと信じたい。もし書きなおすのなら、もう少し違う言い方か伝え方にすると思う。 内容としては 当時の自分のスペック Pythonの言語で、当時の自分が知った方法(3項演算子とか) mercurial の基礎(init, commit, push, update, log) WAF(Django)の知識 URL(ディスパッチャ)をトリガーにして Viewで処理をかく ModelにDBの内容がある ORMでリレーションを簡単に記述できる テンプレートでViewで処理した内容を表示させる チラ裏に移動させた。
以前http://tech.naver.jp/blog/?p=1369の記事を読んだのだけれど、それまでにprocessの知識が無かったりして、まったく理解できませんでした。そこでWorking with UNIX ProcessesやServer::Starterの中身を呼んでようやくhot deployの仕組みを理解できた(気になっている)ので、Server::Starterの実装を追いながら、それをまとめてみます。 hot deployとは hot deployとは「再起動の時にリクエストの処理を続けながら、変更の内容を反映するための手段」です。 通常serverをrestartさせるときは、stop -> startの流れになると思いますが、この場合stopしてから、start出来るまでの期間にリクエストを処理できない期間が発生します。その期間なしにdeployする仕組みがhot
ネットワークプログラミングの基礎知識 ここでは IP アドレスやポート番号、クライアントとサーバの役割などを説明し、 perl・C言語・Java などでソケット (Socket) を使った HTTP クライアントや POP3 クライアント、簡単なサーバを作成してみます。 要はネットワークプログラミングをやってみよう、ということです。 このページのサンプルプログラムは、RFC などの規格に準拠した「正しい」プログラムではありません。 また、全体的にエラー処理が不十分です (今後改善する予定です)。 あくまでも概要を理解するためのサンプルととらえてください。 もし本気でしっかりとしたクライアントやサーバを書きたいなら、このページを読んだ上で、 さらに RFC を熟読し、そして wget・Apache・ftp コマンドなどのソースを参考にしてください。 このページに間違いを見付けたら、掲示板 で
PHPの勉強会なので、いままでお会いしたことのない方とお話ができてよかったです。 発表内容は大きくなってしまったmaster.phpファイルをどうやって高速に読むかというお話です。PHPではリクエストの終了とともに全てのメモリを捨ててしまうので、変わらないデータもリクエストの度にキャッシュからロードしなくてはいけません。大きなphpファイルがあれば当然毎回の読み込みがオーバーヘッドとなってきます。そんな環境でどうやってアプリケーションのパフォーマンスをあげていったのかを紹介しています。 スライドの中でfile sizeを小さくする必要があると書きましたが、@hnwさんによると、VM命令が多過ぎるのが問題で、構造を簡単にしたことでVM命令が減ったのがよかったのではとのことでした。非常に参考になりました。ありがとうございました そろそろ傷が癒えてきた。。 ISUCON5の本選にメルカリのインフ
au Wi-Fi SPOTは2012年3月1日からスマートフォンだけでなく、PCやタブレットなど2台目の端末でも利用できるようになりました。 で、WindowsやOSX用の接続ツールはリリースされてるのですが、Linux用の接続ツールは当然リリースされていないため指を咥えてじっと耐えるしかありませんでした。 でもそんなのヤダヤダ、Linuxからも利用したい!のでついカッとなってLinuxから接続できるコマンドラインツールを作りました。GitHubにて公開しています。 https://github.com/matsuu/auwifispot-client 簡単な使い方はリンク先を参照してください。 内部で使用しているWISPrプロトコルについて Wireless Internet Service Provider (WISP) Roamingというプロトコルで、キャリアをまたいだホットスポッ
個人的にテキストファイルを処理することが多いのですが,簡単な処理ならUnixのコマンドをパイプとリダイレクトで組み合わせてできることが多くあります.今回はそんななかでもちょっとマニアックなTIPSをまとめてみました. sortコマンドでタブ区切りのファイルを指定する最近知って驚愕したのがこれ.sortコマンドでタブ区切りのファイルを指定したいときは,Ctrl+v Tabでタブ文字を入力していたのですが,$ sort -t $'\t' -k 2,2 のようにしてタブ区切りで2番目のキーでソートすることができます. 1000行おきにデータをサンプリングする1000行おきにファイルからデータをサンプリングしたいときとかは,perlでワンライナーを書くのが速いようです.$ perl -ne '$i++; print unless ($i % 1000)' 某所のコードゴルフによるとこれだけ短くでき
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く