骨のダイスを転がそう

2009|01|02|03|04|05|06|07|10|12|
2010|01|02|03|04|05|06|07|08|09|10|11|
2011|02|03|05|06|07|08|09|10|11|12|
2012|01|02|04|05|09|10|11|12|
2013|01|02|04|
2014|11|
2015|01|04|05|
2016|06|07|08|09|11|
2017|01|02|03|04|
2018|03|

2010-11-03

_ [SQL] SQL で 8クイーン

ふと思い立って。

Cell
1
2
3
4
5
6
7
8

に対して

WITH E1 AS (
   SELECT E.Cell I
   FROM   eight_queen E
),
E2 AS (
   SELECT E1.*,
          E.Cell II
   FROM   eight_queen E,E1
   WHERE  E1.I <> E.Cell
          AND E1.I + 1 <> E.Cell
          AND E1.I - 1 <> E.Cell
),
E3 AS (
   SELECT E2.*,
          E.Cell III
   FROM   eight_queen E,E2
   WHERE  E2.I <> E.Cell
          AND E2.I + 2 <> E.Cell
          AND E2.I - 2 <> E.Cell
          AND E2.II <> E.Cell
          AND E2.II + 1 <> E.Cell
          AND E2.II - 1 <> E.Cell
),
E4 AS (
   SELECT E3.*,
          E.Cell IV
   FROM   eight_queen E,E3
   WHERE  E3.I <> E.Cell
          AND E3.I + 3 <> E.Cell
          AND E3.I - 3 <> E.Cell
          AND E3.II <> E.Cell
          AND E3.II + 2 <> E.Cell
          AND E3.II - 2 <> E.Cell
          AND E3.III <> E.Cell
          AND E3.III + 1 <> E.Cell
          AND E3.III - 1 <> E.Cell
),
E5 AS (
   SELECT E4.*,
          E.Cell V
   FROM   eight_queen E,E4
   WHERE  E4.I <> E.Cell
          AND E4.I + 4 <> E.Cell
          AND E4.I - 4 <> E.Cell
          AND E4.II <> E.Cell
          AND E4.II + 3 <> E.Cell
          AND E4.II - 3 <> E.Cell
          AND E4.III <> E.Cell
          AND E4.III + 2 <> E.Cell
          AND E4.III - 2 <> E.Cell
          AND E4.IV <> E.Cell
          AND E4.IV + 1 <> E.Cell
          AND E4.IV - 1 <> E.Cell
),
E6 AS (
   SELECT E5.*,
          E.Cell VI
   FROM   eight_queen E,E5
   WHERE  E5.I <> E.Cell
          AND E5.I + 5 <> E.Cell
          AND E5.I - 5 <> E.Cell
          AND E5.II <> E.Cell
          AND E5.II + 4 <> E.Cell
          AND E5.II - 4 <> E.Cell
          AND E5.III <> E.Cell
          AND E5.III + 3 <> E.Cell
          AND E5.III - 3 <> E.Cell
          AND E5.IV <> E.Cell
          AND E5.IV + 2 <> E.Cell
          AND E5.IV - 2 <> E.Cell
          AND E5.V <> E.Cell
          AND E5.V + 1 <> E.Cell
          AND E5.V - 1 <> E.Cell
),
E7 AS (
   SELECT E6.*,
          E.Cell VII
   FROM   eight_queen E,E6
   WHERE  E6.I <> E.Cell
          AND E6.I + 6 <> E.Cell
          AND E6.I - 6 <> E.Cell
          AND E6.II <> E.Cell
          AND E6.II + 5 <> E.Cell
          AND E6.II - 5 <> E.Cell
          AND E6.III <> E.Cell
          AND E6.III + 4 <> E.Cell
          AND E6.III - 4 <> E.Cell
          AND E6.IV <> E.Cell
          AND E6.IV + 3 <> E.Cell
          AND E6.IV - 3 <> E.Cell
          AND E6.V <> E.Cell
          AND E6.V + 2 <> E.Cell
          AND E6.V - 2 <> E.Cell
          AND E6.VI <> E.Cell
          AND E6.VI + 1 <> E.Cell
          AND E6.VI - 1 <> E.Cell
),
E8 AS (
   SELECT E7.*,
          E.Cell VIII
   FROM   eight_queen E,E7
   WHERE  E7.I <> E.Cell
          AND E7.I + 7 <> E.Cell
          AND E7.I - 7 <> E.Cell
          AND E7.II <> E.Cell
          AND E7.II + 6 <> E.Cell
          AND E7.II - 6 <> E.Cell
          AND E7.III <> E.Cell
          AND E7.III + 5 <> E.Cell
          AND E7.III - 5 <> E.Cell
          AND E7.IV <> E.Cell
          AND E7.IV + 4 <> E.Cell
          AND E7.IV - 4 <> E.Cell
          AND E7.V <> E.Cell
          AND E7.V + 3 <> E.Cell
          AND E7.V - 3 <> E.Cell
          AND E7.VI <> E.Cell
          AND E7.VI + 2 <> E.Cell
          AND E7.VI - 2 <> E.Cell
          AND E7.VII <> E.Cell
          AND E7.VII + 1 <> E.Cell
          AND E7.VII - 1 <> E.Cell
)
SELECT * FROM E8 ORDER BY I,II,III,IV,V,VII,VIII

こんな馬鹿な解じゃなくてもっとスマートな方法がありそうなもんだが


2010-11-08

_ [.Net] ADに接続して、グループの所属を確認

System.DirectoryServices.AccountManagement を参照に加えておいて、using で名前空間をインポート。

           using (
               PrincipalContext ctx = new PrincipalContext(
               ContextType.Domain,
               "HOGE",
               "OU=FUGA,DC=hoge,DC=or,DC=jp",
               "hogehoge",
               "fugafuga")
               )
           {
               GroupPrincipal g = GroupPrincipal.FindByIdentity(ctx, "admins");

               UserPrincipal u = UserPrincipal.FindByIdentity(ctx, @"HOGE\foobar");

               if (g != null)
               {
                   Console.WriteLine(u.IsMemberOf(g).ToString());

                   foreach (var n in g.Members)
                   {
                       Console.WriteLine(n.DisplayName);
                   }
               }
               else
               {
                   Console.WriteLine("グループが見付かりませんでした。");
               }
           }


2010-11-21

_ [ruby] Hiki 0.8.8.1 で SyntaxHighlighter

 備忘録に使っている Hiki で、gakusiさんの insert_header プラグインと kwatchさんの hikidoc_pre プラグインを使って、SyntaxHighliter を使っていたんだけど、バージョンを、0.8.7から、0.8.8.1 に変更したら、ソースコードに色がつかなくなった。

 調べてみたら、0.8.7 から、0.8.8.1 になるときに、hikidoc.rb が大幅に書き変わっている。で、このあおりで、 hikidoc_pre プラグインが効かなくなったらしい。

 コードを覗いてみたら、自分でなんとかなりそうな雰囲気だったので、手作業で修正した。

 最新の hikidoc が単独のライブラリとして開発されていて google-code-prettify に対応していると知ったのは、その後だった。ギャフン。


2010-11-26

_ [PC] Dell の常駐ソフト

Inspiron m101z というノートを買ったのだけれど、Caps を押すたびに画面右端に、現在のCaps Lock の状態がポップアップで表示される。これは、Dell の QuickSet という常駐ソフトの機能らしい。Caps と Ctrl キーを入れかえてもやはり出てくるので、msconfig で起動しないように設定を変更した。


2010-11-28

_ [C#][ASP.NET] DataSourceControl と CompositeDataboundControl

ASP.NET で開発をしているなら一度は目を通しているであろう、不朽の名エントリ、「なま暖かくて柔らかい、ちょっと触るとプルプル動く」(何か本サイトに繋がらないので、google キャッシュ) に書かれていたサンプルコードをもとに、いろいろテスト。

実は、あそこに書かれているままだとうまいこと動かないので、他の方の言及なども参考にして修正してようやく手元で動くことを確認した。

aspx で、Intellisence が効くのは良いですね。チャンスがあったら仕事でも使えないだろうか。

http://kamiyn.spaces.live.com/blog/cns!5BB0A706A97A84BA!3586.entry

http://kamiyn.spaces.live.com/blog/cns!5BB0A706A97A84BA!3652.entry

http://blogs.wankuma.com/mrt/archive/2007/09/13/96121.aspx

元記事は、サンプルコードのさわりが書かれているだけだった。以下の記事では、DatasourceControl には言及がないけれど、ITemplate 関連の記事はきっちり書かれていて理解の助けになった。

http://codezine.jp/article/detail/515