サブディレクトリごとの使用容量を一覧で出す
satkakuです。
先日、サーバー内のhogeディレクトリ内のサブディレクトリごとの使用容量を一覧で出す必要があったので、そのメモです。
% tree . ├── sample1 │ ├── test1.txt │ ├── test2.txt │ └── test3.txt ├── sample2 │ ├── test1.txt │ ├── test2.txt │ └── test3.txt └── sample3 ├── test1.txt ├── test2.txt └── test3.txt
上記のようなディレクトリ構造があったときに、sample1、sample2、sample3の使用容量を一覧で出します。
中身のファイルそれぞれの使用容量を見たいだけなら、treeコマンドでもいけます。
% tree -ash . ├── [ 170] sample1 │ ├── [ 8] test1.txt │ ├── [ 8] test2.txt │ └── [ 8] test3.txt ├── [ 170] sample2 │ ├── [ 8] test1.txt │ ├── [ 8] test2.txt │ └── [ 8] test3.txt └── [ 170] sample3 ├── [ 8] test1.txt ├── [ 8] test2.txt └── [ 8] test3.txt
「-s」を付けるとサイズも出してくれます。
ですが、今回はサブディレクトリごとの使用容量を見たいので、duコマンドを使います。
% du -sh ./* 12K ./sample1 12K ./sample2 12K ./sample3
「-s」で集計だけ出してくれます。後はパイプでsortを繋げたりして、見やすく出力したりします。
……ですが、今回は「*」のキーが壊れていたことにより、このやり方は使えませんでした。そういうこともあります。仕方が無いので「*」を使わないようにします
% find . -d -maxdepth 1 -exec du -sh {} \; 12K ./sample1 12K ./sample2 12K ./sample3 36K .
findコマンドは「-maxdepth」で探索する深さを指定できるので、そこで1を指定し、その結果を「-exec」で繋いでduに渡します。これで「*」を回避できました。
別にだからなんだというわけでもありませんが、「*」のキーが壊れるとめんどくさいので、「*」キーは労りましょう。
Node.jsに触れる
初めまして。
今年の4月にWebサービス事業部に所属しました、新卒のiijmyaです。
まだ現場に入ったばかりの新米SEなため、日々初めて触れる技術やツールとの出会いがあり、うきうきしています。
今回は、先日私が出会った「Node.js」についてご紹介したいと思います。
2.Node.jsのインストール
それでは早速、Node.jsをインストールしてみましょう。
■ nvmのインストール
nvm*1のインストールにはGit*2を利用します。
以下のコマンドをターミナルで実行し、nvmをインストールします。
$ git clone git://github.com/creationix/nvm.git ~/.nvm
■ nvmコマンドの有効化
以下のコマンドを実行することにより、nvmコマンドが使えるようになります。
$ source ~/.nvm/nvm.sh $ nvm version v0.10.1
■ Node.jsのバージョンをインストール
今回はバージョンv0.10.1のNode.jsをインストールします。以下のコマンドを実行します。
$ nvm install v0.10.1 $ nvm use v0.10.1
「nvm ls」コマンドにより、nvmでインストールされたバージョンの一覧を確認することが出来ます。
$ nvm ls v0.10.1 current: v0.10.1
currentは現在使用しているバージョンです。
このバージョンをデフォルトのバージョンとして設定します。
$ nvm alias default v0.10.1 default -> v0.10.1 $ nvm ls v0.10.1 current: v0.10.1 default -> v0.10.1
■Node.jsの確認
以下のコマンドを実行し、Node.jsがインストールされていることを確認します。
$ node -v v0.10.1
以上でNode.jsのインストールは終了です。
是非読者の方もNode.jsを活用し、アプリケーションを作ってみてください!
*1:NVM(Node Version Manager)…Node.jsのバージョン管理システム
*2:Git…オープンソースの分散型バージョン管理システム
タイトル画像をCoffeeScript+Async.jsでつくろう
satkakuです。このたび、シアトルコンサルティング サービス開発ブログをスタートさせました。
このブログは、シアトルコンサルティング株式会社Webサービス事業部で開発しているサービスの紹介や、使用技術の紹介などを中心にお送りしていく予定です。
と言いつつ、第一回目から早速それますが、ブログを始めたからにはトップ画像を作らないといけません。開発ブログである以上、やはりコードが主体なのがいいでしょう。ついでに言えば、書いたコードをかっこいい画像に変換してくれるサービスInstacodeを使いたいところです。
そこで今回はInstacodeでかっこよく画像を作るためのコードを書きたいと思います。別にコードがかっこいいわけではありませんし、掲題のようにタイトル画像を生成するようなコードを書くわけでもありません。
async.waterfall([ (next)-> client.incr('seattlewebservice', next) ,(res, next)-> serviceID = res client.hmset('seattlewebservice:'+serviceID, { serviceID: serviceID name: service.name description: service.description }, next) ,(res, next)-> done(null, res) ], (err)-> done(err) )
Redisを使用してHashに入れる際は、incrしつつ、その結果をHashのキーとすることがよくあります。が、そのまま書くと、incrの結果を受けてからになるのでネストが深く深くなってしまい、みんながイライラしてしまいます。大変です。
そこでAsync.jsを使用してフロー制御をします。今回は、一個前の処理の結果を使う必要があるので、waterfallを使用します。基本的には、非同期で実行したい処理のコールバックに、引数で渡された関数を渡していくだけですが、一点だけ注意することが。この引数で渡されたコールバック(ここではnext)を直接呼び出す場合
next(null, res)
next(err, [results]) というシグネチャになっているので、正常系では、明示的にnullを書く必要があるということです。
ということで、コードが出来たので、さくっとInstacodeで画像に変換します。
先ほどのコードは意味の無いコードなので、動かすこともしません。