2013-09-01から1ヶ月間の記事一覧

複数ファイルから書き込む

複数ファイルから書き込む時には、排他ロックを掛ける or 一時ファイルに書き込んでrenameが常套手段。前者については 共有ロックと排他ロックとで調べたので、後者について。 #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <string.h> #include "error.h" #defin</string.h></fcntl.h></unistd.h></stdio.h></stdlib.h>…

複数プロセスからの書き込み - file tableとcurrent offset

同時に複数プロセスから書き込むとファイルが壊れるというが、壊れるというのはどういうことか。 出典: Advanced Programing in the Unix Environment - Figure3.7 異なるプロセスから同じファイルをopenすると、異なるfile tableエントリー(current file o…

共有ロックと排他ロックと

perldoc -f flock http://perldoc.jp/func/flock flock FILEHANDLE,OPERATION FILEHANDLE に対して flock(2)、またはそのエミュレーションを呼び出します。 成功時には真を、失敗時には偽を返します。 (中略) OPERATION は LOCK_SH, LOCK_EX, LOCK_UN のい…

Learning JavaScript - arguments

js

引数を配列に変換する方法。 function listByCall() { return Array.prototype.slice.call(arguments); } function listByApply() { return Array.prototype.slice.apply(arguments); } console.log(listByCall(1,2,3)); // [1, 2, 3] console.log(listByApp…

Learning JavaScript - scope

スコープはブレース{}そのものとは無関係ということに注意。 var list = ['perl', 'ruby', 'javascript']; var i; for (i=0; i < list.length; i++) { var lang = list[i]; } console.log(lang); // javascript

Learning Ruby - class

#!/usr/env/ruby class Dog FORMAT = 'we have %d dogs.' @@num = 0 class << self def count sprintf(FORMAT, @@num) end end def initialize(name) @name = name @@num += 1 end def say 'I am ' << @name end end puts Dog.new('pochi').say puts Dog.new…