...ing logging 4.0

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

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

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 &&…

脱Stateパターン

状態で分割するのではなくて処理で分割したらこんな感じにしたらいいのかなーと思って書いた. でも別の処理と競合しそうかなあ. import std.stdio; //ライブラリここから interface IForm { void onDraw(); void onMouseMove(); void onMouseDown(); } cla…

型Tと数値nを与えられたとき”T[1][2][2][3][3][3]...[n]をn回繰り返し”という型の配列を作成する

コンパイルタイムプログラミング - 主題のない日記昨晩、これと同じことがC++で出来るかどうか質問を受けた。5という数字が与えられたときに、0,1,2,2,3,3,3,4,4,4,4,5,5,5,5,5という数列をコンパイル時に生成できるかという問題である。 本の虫: C++0xによ…

core.sync.*を使ってみる

色々教えてもらってすごくありがたいけれど,全然理解できなくてしょんぼり.勉強が足りなさすぎる・・・orz とりあえず動いているように見える・・・が? import std.stdio, core.thread, core.sync.condition, core.sync.mutex; class Actor { private con…

Issue 5328 - The addressof-expression that should be rejected is accepted

本文では全然説明してないですが「"m"がインスタンスメソッドなのに"&A.m"と書けてしまっているけどこれバグじゃないの.クラス定義の中ではちゃんとエラーになるけど外ではエラーにならないで実行時にならないと問題が発覚しなくなっているよ」というつもり…

non-static member functionのアドレスを取る

import win32.windows; import core.thread; import std.stdio; class A { this() { EnumWindows(&A.enumWindowsProc, 0); // ここではコンパイルエラーになるのに } /*static*/ BOOL enumWindowsProc(HWND hwnd, LPARAM lparam) { return TRUE; } } void ma…

std.concurrency.spawnで実行しているスレッドでのassertが捕捉されない

ずっとassertが使えなくて困っていたのですが,ふと思いついて試してみたところ, AssertError型を自分で捕まえるtry-catchを自分で書かないといけないことがわかりました. import std.stdio; import std.concurrency; void f() { //try //{ writeln("1"); …

似たような人いませんか?

よいこのみんな!やりたいことがあるなら卒業を待たなくてもいいよ!今からやり出してそのまま卒業しても続けて行けばいいんだ!2010-11-22 12:22:24 via web というのも,ぼく自身が ←の経歴:'99高校卒業→'99就職(現職)→'00大学入学→'04大学卒業→'04大学…

Null object Pattern

メソッドを呼ぶ前にnullチェックを呼ばなくてもよくするパターン. import std.stdio; // 誰かが作って中身を変えられないコード //////// enum 乱数 = 1; interface I { void m(); } class A : I { override void m(){ writeln("hi"); } } I foo(){ if (乱…

Decorator pattern

インスタンスを包含して機能を拡張するパターン. import std.stdio; interface Ice { string name(); } class VanillaIce : Ice { override string name() { return "バニラアイス"; } } class ChocorateSomeIce : Ice { Ice ice; this(Ice ice) { this.ice…

Composite pattern

入れ物と中身を同一視するパターン. import std.stdio; interface Element { uint countChilds(); void append(Element c); } class Folder : Element { private Element[] elems; override uint countChilds() { uint sum; foreach (c; elems) { sum += 1 …

mixi reply helper

返信時のコメント欄に「>○○さん」と表示します. Firefox用のGreasemonkeyスクリプトmixi Name Quoterをchromeにextensionとして移植したものです. mixi Name Quoter http://pear.jp/docs/works/greasemonkey/mixi_name_quoter.uhtml https://chrome.googl…

scopeがなくなるらしいので

色々お話しましたがもう自分用にこれでいいやと思った. import std.stdio; struct AutoDeleted(T) { private T t; public this(Args...)(Args args) { t = new T(args); } public ~this() { delete t; t = null; } private @disable this(this){} public al…