...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

2011-01-01から1年間の記事一覧

=>

あけおめ. import std.stdio; int f(alias F)(int x) { return F(x); } int g(int delegate(int) dg, int x) { return dg(x); } int h(int function(int) dg, int x) { return dg(x); } void main() { writeln(f!(x => x + 1)(1)); writeln(g(x => x + 1, 1…

愚直に書くのが最速だった

final class Lexer { private const string source; this(in string source) { this.source = source; } const(string)[] lex() const { static string[] f(string line) { auto app2 = appender!string(); app2.put(line); app2.put(","); app2.put(TOKEN_E…

何だかうまく書けない

final class Lexer { class LexerThread : Thread { private const(string)[] lines; private Appender!(string[]) app; this(const(string)[] lines) { this.lines = lines; app = appender!(string[])(); app.reserve(10000); super(&run); } void run() {…

PIXUS 6230 ホワイト

買ってきました. USBやLANケーブルで繋がなくてもネットワーク経由でプリントしたりスキャンしたりできました. 便利,便利♪

PIXUS iP4100が壊れた

PIXUS iP4100が壊れた. ヘッドを認識しなくなったようだ. PIXUS iP4100 - ...ing logging 3.0 もう7年も使っていたんだな. 流石に寿命なんだろう. 仕方ないから新しいのを買いましょうか.

std.traits.isCovariantWith

import std.traits; interface I { I clone(); } class C : I { override C clone() // I.clone() の共変オーバーライド { return new C; } } void main() { { static assert(isCovariantWith!(typeof(C.clone), typeof(I.clone))); }{ C function() derived…

std.concurrency メモ

import std.stdio; import std.concurrency; void f() { writeln("start"); for (bool f; !f; receive( (int i) { f = true; }, (string s) { writeln(s); }, )) {} writeln("end"); } void main() { auto tid = spawn(&f); send(tid, "a"); write(readln())…

デリゲートと関数ポインタで共変の戻り値(covariance)

import std.stdio; class Base {} class Derived : Base {} void main() { // Covariance { Base delegate() f = delegate Derived() { return new Derived; }; writefln("delegate convariance is <%s>", f().toString() == "a.Derived" ? "OK" : "NG"); }{…

鉄道業界のインテグレータが必要とされている

Web

中国で事故が起こりましたけれども、こういう電車を使って時速500kmで走るというのは、実は技術的には極めて簡単なんですけれども、それを日本はあえてやらない。今まで数十年間、一度も事故を起こしていない日本の新幹線というのは、ハードウェアだけじゃな…

学習の最初のフェーズにおいて

Web

この時期に典型的なことは「水ぶくれのフジツボみたいだ。一貫したコーディング規則がなきゃだめだ」みたいなことを言って、次の日をチームのためのコーディング規則を書くために使い、そのあと6日間で「唯一正しい括弧付けのスタイル」について議論し、その…

当てはめてみる

Web

「だってさ!日本から5人も出張してきてるんだよ。それなのに「じゃあこれで最終合意ですね」という話になると、いや待ってくれ、日本に持ち帰らないと決められないって言い出すんだ。だったらなんで決められる人が一緒に出張にこないの?5人も6人も同じなん…

区切り文字指定が可能なセル文字列連結関数

VBA

Function join(r As Range, sep As String) As String Dim result As String Dim c As Range For Each c In r If c.Value <> "" Then result = result & c.Value & sep End If Next c If Len(result) = 0 Then join = "" Else join = Left(result, Len(resul…

指定した文字列を含むセルを検索する関数

VBA

Function FINDCELL(r As Range, str As String) As Object Dim theCell As Object Set theCell = r.Cells.Find(str, LookAt:=xlPart) If theCell Is Nothing Then Set FINDCELL = Nothing Else Set FINDCELL = theCell End If End Function

match

vlookupの列指定を数値でやってしまうと、列の順序を変えられなくなって困るので、match関数でヘッダから列名を検索することにした。その代わり列名は固定。

vlookup無双

エクセルで各シートをテーブルに見立ててvlookupで参照. vlookup無双である.

.bat, .wsh, .vbs

vbsだけ使えることがわかった.

しごと

空間がゆがんでいるが,現在の職場机はこんな感じ.「しごと」って書いてるのが積み上がっている紙の束.1つの単位仕事ごとにバインダーに留められている.今日は2回崩れたw URL2011-05-24 00:12:06 via Twitpic

転勤

4月末に転勤になりました.今までは地下鉄車両の整備をやってましたが,新しい職場では事務をしてます. 整備員のときに「あれが欲しいこれが欲しい」と要求することがあったのですが,今度はその要求を聞く側です. まあそれはともかく. 以下,愚痴.

GW

最近,日記らしいことを全然書いていませんでした. ヘッドフォンのコードに足を引っかけて落として壊してしまったので, ついにホットボンドを買ってきました. 強度を持たせようと思って盛りすぎたので少しいびつな形になったけど,使用感はまずまず. こ…

スレッドセーフな銀行クラス(2)

すべてのメソッドの内容を synchronized ブロックに含めるのならクラスを synchronized クラスにしてもよい. synchronized クラスのメンバはそのインスタンスを shared 型で生成しなければ呼び出せないので,この場合には new Bank ではなく new shared(Ban…

スレッドセーフな銀行クラス

適切に synchronized ブロックを使えば利用者側で気をつける必要がなくなる. クラスメンバの中での synchronized は synchronized (this) と同じ. import std.stdio; import core.thread; class Bank { private int money_; void payin(int m) { synchroni…

銀行クラスをスレッドセーフに扱う

どこでどのような競合を起こしうるのか想像するのが難しい. このようにスレッドセーフに使えるクラスを「スレッドコンパチブルである」という. import std.stdio; import core.thread; import core.sync.mutex; class Bank { private int money_; void pay…

スレッドセーフでない銀行クラス

import std.stdio; import core.thread; class Bank { private int money_; void payin(int m) { money_ += m; } void payout(int m) { money_ -= m; if (money_ < 0) { // クラスの利用者が注意していればここには到達しないはず? throw new Exception("pa…

D言語で「Java言語で学ぶデザインパターン入門【マルチスレッド編】」を学ぶ

本を読みながらコードを書いていきたい. Mutexは単にひとつのスレッドからしか実行できないようにするもの. Conditionは明示的に通知をしてスレッド間で同期を取ることができるもの. Conditionの方がMutexよりも細かい制御ができる. コードが間違ってい…

D言語会議#1

京都から遠路はるばる行ってきました. 全体の流れ 最初に,@repeatedly さんが唯一スライドを使ってアジェンダをプレゼンして,D言語の現状的なものを説明. Phobosには通信処理を書くための機能が不足しているけど,etc.c.curlが入ったのでそれを使えばも…

github上でgithubにフォークしたリモートリポジトリを本家リモートリポジトリに追随する

git

今,フォークしたリポジトリのリモートブランチだけがある. $ git remote origin本家のリモートリポジトリの短縮名を登録する. $ git remote add github git://github.com/D-Programming-Language/dmd.git本家の更新をローカルで反映させる. $ git pull -…

構造体クイズ(2)

構造体クイズ1のときにはstatic opCallを含めていたのですが,もうこの仕様はないと考えていいのでそれなしで試してみました. ちょうど,一時構造体のデストラクトが行われないバグが修正されたことですし. import std.stdio; struct X { this(int i){writ…

D言語用GUIライブラリDFLをgithubにマイグレーションしました

本家はdsource.orgのsvnで管理されているのですが,しばらく更新がないのでgithubにリポジトリを作りました. https://github.com/Rayerd/dfl 基本ポリシーとしては, なるべく早くD2 trunkに追随する D2ののリリース版が出た時点でtagを付ける D1のサポート…

dsource.orgのプロジェクト活性度ランキング(2011.02.06版)

http://dsource.org/projects/ の全プロジェクトの最終更新日時から作ったプロジェクト活性度ランキングの2011.02.06版です. ちなみに,dmd, druntime, およびphobosは既にgithubで管理されており,dsource.orgでの更新は止まっています. 少し古いコード:…

-debug=の挙動

そういえばデバッグレベルを設定したことなかった. import std.stdio; void main() { debug writeln("void"); debug(0) writeln(0); debug(1) writeln(1); debug(2) writeln(2); } これを色々な debug オプションを付けて実行すると・・・ >dmd a -debug &&…