迷路もどきパクってみました。
10 PRINT CHR$(205.5+RND(1)); : GOTO 10 pic.twitter.com/ExoMOmTZce
— Trammell Hudson™ (@qrs) 2017年7月29日
むかしむかしのコモドールでの実行画面。シンプルな画面で迷路っぽい出力。
現代のC#でできないわけがなかろうとパクってみました。
class Program {
static void Main(string[] args) {
var v = new Random();
while (true) {
//(int)'\' = 65340 = 65295 + 45
var cc
= (char)(65295 +
Math.Round(v.NextDouble(), 0, MidpointRounding.ToEven) * 45);
■
現場で見かけたコードのグチ。
仕様はざっくりこんな感じ。
テーブル書くのめんどくさいからExcelで書いたスクショ。
で、現場にあったコードをざっくり解読すると
-----------------------------------------------------------------
①keycol=2のレコードを全カラム取得
②①をもとにkeycol=2の全カラムを更新(col_99だけは"北海道"に)
①SELECT col_1,col_2,col_99,col_100 FROM tbl WHERE keycol = 2;
②UPDATE tbl SET col_1 = "田中", col_2 = "花子" , col_99 = "北海道" , col_100 = "女" WHERE keycol = 2;
-----------------------------------------------------------------
ということであった。
なんか裏の意図があったりするのだろうか?(外注さんの仕事なのでいまさら問い合わせもできず)
とりあえずtblのカラムを増やす改修の担当が回ってこないことを願っている。
ListはAdd順らしい
前の続き。
DictionaryはAdd順で列挙してくれるとは限らないらしい(なんせググって見つかったことである)。そしてさらにもうちょいググり続けるとListはAdd順で列挙してくれるらしい???(だんだんあやふやになってきたorz)
じゃ、Dictionaryの代わりにListにするかってことで
var dic = new List<KeyValuePair<int, string>>();
dic.Add(new KeyValuePair<int, string>(8, "伊丹"));
dic.Add(new KeyValuePair<int, string>(4, "新伊丹"));
dic.Add(new KeyValuePair<int, string>(6, "稲野"));
dic.Add(new KeyValuePair<int, string>(3, "塚口"));
・・・・
new KeyValuePair<int, string>がいっぱいあってうざったい!!!!!!
Dictionaryならすっきりだったのに!!!!
てなわけでKeyValuePairのListに特化したClassを作ってみた。
class ListKeyValuePair<T1,T2> : List<KeyValuePair<T1, T2>> {
public void Add(T1 key,T2 value) {
base.Add(new KeyValuePair<T1, T2>(key, value));
}
}
うん、やってることは単純だなぁ。これつかうと
var dic = new ListKeyValuePair<int, string>();
dic.Add(8, "伊丹");
dic.Add(4, "新伊丹");
dic.Add(6, "稲野");
dic.Add(3, "塚口");
よし、これですっきし。
これ実戦投入する気はない(お堅い現場でつので)が、やるだけやったのですっきし。
Dictionaryの列挙順はAdd順じゃないかもだって?
>列挙処理のために、ディクショナリ内の各アイテムは、値とそのキーを表す KeyValuePair<TKey, TValue> 構造体として処理されます。 アイテムが返される順序は未定義です。
「順序は未定義です」
つまり、Dictionaryの各要素を列挙する場合、Addした順に列挙してくれるとは限らないということ???ある日突然「新伊丹」と「稲野」がひっくり返った路線図を吐き出すかもってか???
うーん、これはこまった。というわけで、ちょっと考えよ。
VisualStudioのメソッド抽出
バグを乗り越えて(?)
現在お仕事してる現場関係のグチでおます。特定されない程度にぼかす。
その現場、過去(私が逃亡wしてた時期)にひでーバグを出してた。
「int配列の各要素につき値が0以外なら文字列変換して出力。0ならば空文字を出力。」に対してこんなバグ入りソースを書いてやがった(C#だべ)
foreach(var item in new[] { 1, 2, 3, 0, 5 }) {
if (item != 0)
s = item.ToString();
}
トライやる・ウィーク
朝っぱらから近所を散歩してると「トライやる・ウィーク」なる旗がはためいていた。
わが兵庫県で始まった中学生の職業体験行事が始まったことを知らせるものである。
トライやる・ウィークでいろんなことを学ぶ(将来の私の年金原資である)中学生諸君のことは応援するものである。
それはさておき、もし、自分のいる仕事場(ソフトウェア開発)に職業体験の中学生を受け入れるとしたら、どんな問題があるだろうか?
ぱっと思い当たる問題は「ソースを見られる」こと。
さすがにUSBメモリ持ち込んでソースを持って帰るなんてことはしないだろうが、ソフトウェア開発の職業体験となるとソースを見せて理解させて改修させないと意味がないわけなのだが、自社販売のソフトならともかく他社販売のソフトだとソースを見せることがNGなわけで。
職業体験を受け入れることはできないか。