java.lang.Runtimeクラスのexexメソッドで、別プログラムを実行する際の注意事項を、以下で説明します。 ■仮想メモリ不足による例外発生 仮想メモリが不足している状態でRuntimeクラスのexecメソッドで子プロセスを実行するとjava.io.IOExceptionが発生する場合があります。 この場合は、次のどれかの方法で対処してください。 仮想メモリを増やす javaコマンドの"-Xmx"オプションなどでJavaヒープの最大サイズを小さくする (Javaヒープを減らすことにより、子プロセスが使用可能なメモリを増やすため) ■ファイルディスクリプタ不足による例外発生 オープンされたファイルが多い状態でRuntimeクラスのexecメソッドで子プロセスを実行すると、ファイルディスクリプタ(fd)が不足し、java.io.IOExceptionなどの例外が発生する場合があります
JavaではJVMやライブラリの実装がWindows、MacOS、Linux等で共通の実装だけを採用する方針だったりします。 なので、シンボリックリンクをはったりといったような、使いたくなるような気の利いたOSの機能はAPIでは用意されていません。しかたがないので、lnコマンドといったような外部コマンドを呼び出したい気分になるのですが、Unix系JavaでRuntime.exec()を使って外部コマンドを呼び出す際には注意が必要です。意外な落とし穴が待っています。 もし今サーバーがUnix系OSでJavaでRuntime.exec()を使おうと思っているなら、今すぐ別の方法を検討してください。後でとんでもない目にあいますよ。 いったいどういうことなんでしょうか?とりあえず、こんなプログラムを考えてみます。 package org.kazumi007; import java.io.Buff
2013-05-14 #pfcasual vol.1に参加してきました Provisioning Frameworks Casual Talks vol.1 に参加してきました。 まとめは@studio3104さんのエントリProvisioning Frameworks Casual Talks vol.1 を開催しました。 - studio3104::Blog からブクマを参照いただくとして、個人的な感想。 @fujiwaraさんのProvisioning Frameworks Casual Talks vol.1 で「新卒研修でserverspecとChefを使った話」を発表しました - 酒日記 はてな支店 新卒とは決して言い難いおじさんインフラエンジニア達にも「受けたい!」と言わせしめた社内研修のお話。recipeとserverspecの対比が分りやすかったです。serverspe
Full GC による Stop the World でサーバが停止状態に…、そんなときに調査の助けになるのが GC のログ。Permanent 領域が溢れているのか、Java Heap が溢れているのか、Heap が溢れているのなら何のオブジェクトが溢れているのか、メモリリークが発生しているのか。それが分からないと何気に対処のしようがない。 ただ、この GC のログ、それなりの設定をしておかないと解析に耐えないし役に立たない。役に立たないログ出力はディスク容量を圧迫するゴミになる。そういう感じのログを目にして、なんとかならんもんかなー、なんとかせねばなーと検討しており、Oracle のページからそれっぽいオプションを調べてみてる。 Java HotSpot VM Options 当然ながら「Oracle のページ」と書いてあるように、Oracle の JVM が対象であって、他の JVM
(commit or stash + checkoutすらめんどいことだって、あるんですよ・・) そもそもリポジトリと作業ディレクトリの違いって? gitリポジトリには、コミットされている内容やブランチなどの全ての情報がつまっています。一方で作業ディレクトリは、リポジトリ内のあるcommitの内容を、ファイルとして書き出したものになっています。 git-new-workdirコマンド gitリポジトリに紐づく新たな作業ディレクトリを作成します。 ただし、デフォルトでPATHが通っていません。Fedoraあたりなら /usr/share/doc/git-1.7.10.2/contrib/workdir/git-new-workdir に、homebrewなら /usr/local/Cellar/git/1.7.12.4/share/git-core/contrib/workdir/git-n
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 これまでのApache2.2系以前でのアクセス制御の書き方は賛否両論でした。僕はあまり好きじゃありませんでした。 過去のアクセス制御に関しては、以下の記事がとてもわかりやすくまとめられていると思います。 こせきの技術日記 – Apacheのアクセス制御をちゃんと理解する。 ここで、以下のように言及されています。 こんなバッドノウハウ、本当はどうでもいいと思う。Apache 3.0では、かっこいいDSL(VCL)で書けるようにする構想があるらしいのでがんばってほしい。 ということで、2.4系ではDSLとはいかないまでも、Require*というディレクティブを使ったモダンな書き方ができるようになったので、それを2.2系以前のアクセス制御の記述と比
JavaScriptの人気とともに、JavaScriptでのデザインパターンの利用局面も増えています。本書ではGoFのデザインパターンに沿って、その実装例やパターンの適用事例を網羅的に示し、デザインパターンをJavaScriptにも応用したいというニーズに応えています。モジュール、オブサーバ、ファサード、メディエータといったGoFの代用的なデザインパターンだけでなく、リビーリングモジュールパターンや擬古典的デコレータパターンといった、新しいパターンも取り上げています。美しく、かつ構造化され、メンテナンス性の高いJavaScriptを書くために有用な一冊です。 まえがき 1章 デザインパターンとは? 1.1 はじめに 1.2 パターンとは? 1.2.1 既に日常的にパターンを使っている 1.3 「パターン」性検査、プロトパターン、3の法則 1.4 デザインパターンの構造 1.5 デザインパタ
mysqlenvは異なるバージョンのMySQLをインストールしたり切り替えられるインストーラーです。 最近プログラミング言語はrvmやnodebrewなどユーザ環境下でインストールできてバージョンの切り替えが簡単に行えるものが流行っています。そんな環境切り替えをMySQLでも行えるようにするのがmysqlenvです。 インストールします。 installコマンドで指定したバージョンのMySQLがインストールできます。 mysqlenvが対応しているのは3.23、4.0、4.1、5.0、5.1、5.5、5.6系となっています。特に5.5系はMariaDB、Percona、Twitterが選べるようになっていますので、それぞれのDBの特性をチェックするのに使えそうです。起動や停止、切り替えはコマンドから簡単にできます。 mysqlenvはBashスクリプト製のソフトウェア(ソースコードは公開さ
id:eel3:20111031:1319989854 のおまけ。 bash 2.04以降では/dev/tcpや/dev/udpを使用してネットワーククライアントの処理を記述することができる。これらは実際に/dev以下にデバイスノードが存在する訳ではなく、bash上でのみ有効なシンタックス・シュガーのようだ(つまりOSの機能ではない)。 bashのネットワークサポートはnetcatのようにバックドアとして悪用される可能性がある為、ビルド時に有効/無効を切り替えられるようになっている。ディストリビューションによっては無効になっているようだ。 Ubuntu 10.04 LTSのbash 4.1.5では有効になっているので、試しにTCPクライアントアプリを書いてみた、FizzBuzzで。 #!/bin/bash # fizzbuzz_tcp_client.sh usage() { echo "U
4月23日に都内で開催されたエンジニア向けのイベント「QCon Tokyo 2013」。急速に人気サイトへと成長したPinterestが、その裏でいかにスケーラビリティと格闘してきたのかをPinterestのエンジニア自身が紹介するセッション「Scaling Pinterest」が行われました。 この記事は「Pinterestはいかにスケーラビリティと格闘してきたのか(前編)。QCon Tokyo 2013」の続きです。 クラスタリングは怖い スケーラブルなシステムで問題なのは、データベースがひとつのサーバに収まらなくなったときにどうするのか、ということだ。 例えば、Cassandraは自動的にスケーリングしてくれて設定も簡単。可用性も高く単一障害点はない。しかし障害はそれでも起こるもので、クラスタリングの技術はまだ枯れておらず基本的に複雑なものだ。コミュニティもまだ十分ではない。 私たち
4月23日に都内で開催されたエンジニア向けのイベント「QCon Tokyo 2013」。急速に人気サイトへと成長したPinterestが、その裏でいかにスケーラビリティと格闘してきたのかをPinterestのエンジニア自身が紹介するセッション「Scaling Pinterest」が行われました。 この記事では、その内容をダイジェストで紹介しましょう。 つねにシステムのどこかが壊れている Pinterest、Marty Weiner氏。 Pinterestはオンラインのピンボードで、ユーザーが「ボード」を作成して、そこに画像など好きなものをアップロードしてシェアできるというもの。「ピン」ひとつひとつが画像やリンクになっている。 ユーザーやボードをフォローすることもできるし、再ピンしたりイイネしたり、コメントの入力もできる。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く