水曜日, 2月 27, 2008
火曜日, 2月 26, 2008
キーボードを変えてみた
WPFとXmlDataProviderにnamespace-uriがくっつくと・・・
WPFのお勉強中 Windows Presentation Foundation データ バインディング: パート 1 を参考にWPFのRSSFeedを見るアプリを作ってみた。 リンク先ではローカルのxmlを参照して更新までやってしまうアプリだったけど、xmlを用意するのが面倒に思ったので、この部ログのフィードを読み込むアプリにしてみた。 最初はXAMLへのデータバインディングをせずにC#側で手動実装のパターンだった。 さすがに記事が2006年だったので、.netFramework3.0の実装で書かれていた。 せっかくvs2008を使ってるんだからということで、LINQtoXMLでコーディングしてみた。 XAML側はリンク先を見てください。
ひとつだけ腑に落ちない部分がある。 それは、XAML上だけで表現するときにXPathで属性の条件付き取得の式がちゃんと評価されてないんじゃないの?って思うところだ。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.Xml.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using log4net; using log4net.Config; namespace ExampleCS { /// <summary> /// Window1.xaml の相互作用ロジック /// </summary> public partial class Window1 : Window { private static readonly ILog log = LogManager.GetLogger(typeof(Window1)); public Window1() { // BasicConfigurator replaced with XmlConfigurator. XmlConfigurator.Configure(new System.IO.FileInfo(@"log4net.xml")); InitializeComponent(); blog = XDocument.Load(BLOGURL); } XDocument blog = new XDocument(); const string BLOGURL = "http://utsuutsu.blogspot.com/feeds/posts/default"; #region Event void Window1_Loaded(object sender, RoutedEventArgs e) { FillListBox(); } private void entryListBox_Changed(object sender, SelectionChangedEventArgs e) { if (entryListBox.SelectedIndex != -1) { XElement element = ((ListBoxItem)entryListBox.SelectedItem).Tag as XElement; if (element != null) { titleText.Text = element.Element("{http://www.w3.org/2005/Atom}title").Value; urlText.Text = element.Elements("{http://www.w3.org/2005/Atom}link"). Single(el => el.Attribute("rel").Value == "alternate").Attribute("href").Value; dateText.Text = element.Element("{http://www.w3.org/2005/Atom}updated").Value; bodyText.Text = element.Element("{http://www.w3.org/2005/Atom}content").Value; } } } private void updateButton_Click(object sender, RoutedEventArgs e) { } #endregion #region private void FillListBox() { entryListBox.Items.Clear(); var nodes = blog.Descendants("{http://www.w3.org/2005/Atom}entry"); foreach (XElement element in nodes) { ListBoxItem item = new ListBoxItem(); item.Tag = element; item.Content = element.Element("{http://www.w3.org/2005/Atom}title").Value; entryListBox.Items.Add(item); } } #endregion } }log4netのコードとかもそのままにしてるけど、気にしないでください。 こっちはこれまでの学習の効果があってすぐにできた。 問題はXAMLだけを利用する(バインディングですべて解決)パターンだった。 XmlDataProviderでフィードを読ませてバインディングしていけばいいのかと思いきや、namespace-uriを指定する方法がわからない。。。 なんとなくクラスの関連上XmlNamespaceManagerがそれに該当するんだろうということはわかったんだけど、これってクラス->オブジェクトなんでXAMLに直にuriを書くわけにはいかず。。。(stringになるもんね) どうすりゃいいのかわからず、 あっちこっち探し回っているとMSDNのフォーラムに対応方法が載っていた。 Resources上でXmlNamespaceMappingCollectionにKeyを付けてXmlNamespaceMappingを生成するというやり方で、Key名を使ってXmlDataProviderにバインディングすることができるらしい。 で、やってみた結果がこれ(今度はXAMLだけで逆にC#側のコーディングは0です。)
<Window x:Class="ExampleCS.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="ExsampleCS"> <StackPanel> <StackPanel.Resources> <XmlNamespaceMappingCollection x:Key="mapping"> <XmlNamespaceMapping Uri="http://www.w3.org/2005/Atom" Prefix="rss"/> </XmlNamespaceMappingCollection> <XmlDataProvider x:Key="RssFeed" XmlNamespaceManager="{StaticResource mapping}" Source="http://utsuutsu.blogspot.com/feeds/posts/default" /> </StackPanel.Resources> <TextBlock HorizontalAlignment="Center" FontWeight="Bold"> BlogEditor </TextBlock> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> <ListBox Name="entryListBox" Height="300" ItemsSource="{Binding Source={StaticResource RssFeed}, XPath=//rss:entry}"> <ListBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding XPath=rss:title}"/> </DataTemplate> </ListBox.ItemTemplate> </ListBox> <Grid Width="500" Margin="5" DataContext="{Binding ElementName=entryListBox, Path=SelectedItem}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="50"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="25"/> <RowDefinition Height="25"/> <RowDefinition Height="25"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <TextBlock Grid.Row="0" Grid.Column="0">Title:</TextBlock> <TextBox Binding.XmlNamespaceManager="{StaticResource mapping}" Grid.Row="0" Grid.Column="1" Name="titleText" Text="{Binding XPath=rss:title}" /> <TextBlock Grid.Row="1" Grid.Column="0">Url:</TextBlock> <TextBox Binding.XmlNamespaceManager="{StaticResource mapping}" Grid.Row="1" Grid.Column="1" Name="urlText" Text="{Binding XPath=rss:link/@href[1]}"/> <TextBlock Grid.Row="2" Grid.Column="0">Date:</TextBlock> <TextBox Binding.XmlNamespaceManager="{StaticResource mapping}" Grid.Row="2" Grid.Column="1" Name="dateText" Text="{Binding XPath=rss:updated}"/> <TextBlock Grid.Row="3" Grid.Column="0">Body:</TextBlock> <TextBox Binding.XmlNamespaceManager="{StaticResource mapping}" Grid.Row="3" Grid.Column="1" Name="bodyText" TextWrapping="Wrap" Text="{Binding XPath=rss:content}"/> </Grid> </StackPanel> </StackPanel> </Window>XmlDataProviderにバインディングしてListBoxにバインディングするところまでは問題なかったんだけど、最後にイベント連動のGrid側のDataContextの内容がTextBox上で取得できないという状態になり、 またまた悪戦苦闘。。。 やっぱり、namespace-uriがらみだった。。。 TextBoxにBinding.XmlNamespaceManager="{StaticResource hoge}"って実装が必要なんだそうだ。。。 まあ、最終的にはこんなのができた。 Application側(app.xaml)でスタイルをあれこれすればもうちょい見た目もよくなるだろう。。。 オンラインセミナーで「Expression Blend」とかいうツールの紹介がされていた。デザインに関してはこっちでやるといいよ~とMSの人は言っていた。 また、機会があればそっちも見てみようと思う。
ひとつだけ腑に落ちない部分がある。 それは、XAML上だけで表現するときにXPathで属性の条件付き取得の式がちゃんと評価されてないんじゃないの?って思うところだ。
rss:link[@ref='hoge']/@hrefこれで、linkタグの中でref属性がhogeのhref属性値が取得できると思うんだけど、何か違うのかな?? LINQでSingleを使った時には問題なかったんだけど。。。(Singleは1つ以外だとExceptionが発生する)
日曜日, 2月 24, 2008
ケータイの機種変更って面倒だよね
僕は以前ドコモユーザーだったんですが、MNPが始まってすぐくらいにauに乗り換えました。
その時の理由はauのケータイの方がデザインが僕好みだったってだけなんですけどね。
でも、MNPが始まるまでは電話番号が変わってしまうと何かと連絡が大変です。
- 仕事関連
- 友人関連
- その他もろもろ
やっぱりコメントをもらうと違うね
11月頃にPostした記事にコメントが付いていた。
内容はラベルのクラウド化の記事だ。
お礼なんて言われると、
「よーし、かんがっちゃうぞw」
ってなってしまう。
我ながら単純な人間だなぁ~と思う。
せっかくだから、利用しやすいように
俗にいう"New Blogger"改造(その3)ラベルのラベルクラウド(タグクラウド)化
のコードに先日導入したコードをハイライトする部品で使いやすくしておいた。(実際のところ使いやすいかどうかはさておき) まぁ、これからもボチボチ人様の役に立てればうれしいな。木曜日, 2月 21, 2008
syntaxhighlighterを使ってみる
こっちに変えてみました。
ありがとう、Blogger Mode
やっぱり、Subversionのリポジトリを直接参照してみた。
※cssだけは、テンプレートに直接書いておいた。。。
<script language="javascript" src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shCore.js"></script> <script language="javascript" src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCSharp.js"></script> <script language="javascript" src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushXml.js"></script> <script language="javascript" src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCss.js"></script> <script language="javascript" src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushXml.js"></script> <script language="javascript" src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushJava.js"></script> <script language="javascript"> dp.SyntaxHighlighter.BloggerMode(); dp.SyntaxHighlighter.HighlightAll('code'); </script>こんな風になった。
public class Test public static void main(String[] args) { System.out.println("色がかわるかな?"); } }
google-code-prettifyを無理やり使ってみる
Subversionのリポジトリを直接参照してみた。
<script src="http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js" type="text/javascript"> <link href="'http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.css'" rel="'stylesheet'" type="'text/css'/">するとこんな具合に
public class Test public static void main(String[] args) { System.out.println("色がかわるかな?"); } }
XMLスキーマとLINQtoXML
.net FrameworkのLinq to XMLを試してみる。
dtdとかxsdファイルがない状態なら、MSさんが提供してくれているXQueryっていうソリューションを参考にするとすぐに理解できた。
問題は自分でxsdを定義した場合だ、
System.Xml.Linq.XNameクラスを利用してElements(XName)やAttribute(XName)等々の呼び出しをするんだけど。。。
(from x in ~ select ~じゃないのは置いといて。。。)
自分にはXMLに関しての知識があまりにも少ないってことがよくわかった。
XNameにはxsdのパスを付けて指定するんだということを学習した。
{http://xxxx/hoge.xsd}ElementName
で指定しないとダメらしい。
これが正しい指定方法らしい。
XMLShemaでもそういう風に書いてあった。
ネームスペースなんて意識したことはほとんどない。。。
dtdやxsdはxmlを書くときにバリデータとしてあれば便利だなくらいにしか思ってなかったもんなんで。。。
日曜日, 2月 17, 2008
SQLiteでLINQ to SQLできねー
結局、SQLServerでしか使えないのね。。。
いまいち、やる気がなくなりました。。。
気を取り直して、LINQ to XMLに手を出してみよう。
MSさんからサンプルコードも出てるし、SQLライクに使えるんだろう。
しかし、サンプルのXQueryってプロジェクトを見ていて気がついたことが一つlog4net.xmlとかのコンテンツに分類されるファイルは標準では出力ディレクトリに出力されないんですね。。。(コピーしてきたファイルだけ?)
ともかく!「出力ディレクトリにコピー=>新しい場合はコピー」に設定しないとダメなんですね。。。
VS使ってる人には常識なんでしょうか?
Eclipseでやってるときは基本的に全部Antでコピーしてたからなぁ~
GUIで設定ってのを見落としがちです。
気をつけないと。。。
土曜日, 2月 16, 2008
SQLite.NET DbProviderFactoriesについて
.netではapp.config(内容はXML)ってのを使うのが普通みたいですね。
SQLite.NETでも多聞に漏れずHelpの最初に
「DbProviderFactories」についての説明があります。
このFactoryを利用すれば、SQLiteに依存したクラスを使わなくても動作します。
app.configでの設定方法は2種類あるらしく、
- SQLiteバージョン非依存
- SQLiteバージョン依存
<configuration> <system.data> <DbProviderFactories> <remove invariant="System.Data.SQLite"/> <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /> </DbProviderFactories> </system.data> </configuration>アプリケーションのフォルダ(VS2008で言ったらDebugモードでbin/debugの場所)にSystem.Data.SQLite.DLLを設置しないといけない。 2については
<configuration> <system.data> <DbProviderFactories> <remove invariant="System.Data.SQLite"/> <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" Version=1.0.48.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/> </DbProviderFactories> </system.data> </configuration>この場合はアプリケーションのフォルダにdllを置く必要はないらしい。 addタグにVersion,Current,PublicKeyTokenの属性を付け足してやればグローバルキャッシュ?からdllをロードしてきてくれるみたい。。。 SQLite.NETの公式フォーラムで紹介されていたサンプルコードをSQLiteに依存しないクラスで書き換えてみた。 System.Data.Commonを使っています。
using System; using System.Data.Common; namespace Sample { class Program { static void Main(string[] args) { DbProviderFactory fact = DbProviderFactories.GetFactory("System.Data.SQLite"); using (DbConnection cnn = fact.CreateConnection()) using (DbCommand cmd = cnn.CreateCommand()) { cnn.ConnectionString = "Data Source=mydatabase.db"; cnn.Open(); // Create a new table cmd.CommandText = "CREATE TABLE FOO (ID INTEGER PRIMARY KEY, MyValue NVARCHAR(256))"; cmd.ExecuteNonQuery(); // Create the table, don't expect returned data // Insert something into the table cmd.CommandText = "INSERT INTO FOO (MyValue) VALUES('Hello World')"; cmd.ExecuteNonQuery(); // Read the values back out cmd.CommandText = "SELECT * FROM FOO"; using (DbDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { Console.WriteLine(String.Format("ID = {0}, MyValue = {1}", reader[0], reader[1])); } } } } } }どうにかして、dllが自動的にアプリケーションのところにコピーしてくれないもんか?と考えてます。(log4netのdllは勝手にコピーされてるみたいだし方法はあると思うんだけど。。。) あとは、もう少しなれたらLINQを試してみようと思う。
寝るなぁー!死ぬぞ!!
僕のマンションの部屋は北向きなんです。
まぁ、お金がないから仕方がないと言えばしかたがないのですが。。。
最近、朝起きるとホントに寒くて寒くて。。。
ハロゲンヒーダーのスイッチを入れてその前で固まっています。
でも、ウトウトと・・・
はっ!!イカンイカン
この状態で寝ると凍死する!!
この状況を打破する何かが欲しいです。
前にテレビ番組でウィンドラジエーターちゅうもんが紹介されていた。あれが欲しい。。。
でも、電気代が怖い。。。
木曜日, 2月 14, 2008
つまるところFuncって何すっか?
C#のお勉強はまだまだ続いてます。
今回は
System.Collections.Generic.Dictionary
ではまった。。。
JavaでいうところのHashMapみたいなものらしい。
でも、keyタイプでコレクションを引き当てようと色々試してみるとIEmutable.Select(Func selector)
って、コードフォーマットが出てくる。。。
これかな?
と思って触ってみたら、どうもこれはselectorで操作したコレクションを返すものらしい。。。
普通のコレクションならFind(delegate(){})で当てれるのに。。。
これが、.net framework3.0の新機能なのかな?
LINQってのもあるらしいけど、これはJavaのhibernateのHQLみたいなオブジェクトに対するSQLのお友達なんだろうと、ちょっと説明を読んで思った。
LINQってのはSQLiteの組み込みで実験してみるか。。。
そのうちに。。。
水曜日, 2月 13, 2008
僕のやりたいことは何なんだろう?
先週、朝寝ぼけて朝の薬を2回飲んでしまい、今朝は薬を飲まなかった(正確には飲めなかった)
その後、午前中に
- ハローワーク
- 医者
結局WPFの利点は何なんだろう?
ちょっとC#の勉強の箸休めにWPF(Windows Presentation Foundation)を少し触ってみた。
xamlっていうタグ言語でデザインをするみたいだ。
データリソースの利用方法が理解できれば、もう少しやりやすくなるのかもしれないが、ちょっとIDEの機能が着いていけてないような気がしなくもないです。。。
このやっつけ仕事っぽい、プロパティビューはないだろ。。。
もう少し、使いやすくしてほしかった。。。
昔、C#のWebアプリの中国製造の受け入れ作業をしたことがったときにGUIで作ったアプリってどうしてもaspxファイルの中身がグチャグチャでおかしくてもどのあたりがおかしいのかわからないってことがあった。。。
その時には「やっぱ、HTML系のコードは手で作るのが一番正確だ!」と思った。今でもその考えはかわらない。
もう少し、IDEの機能が強化されたらWPFにチャレンジしてみようと思う。
日曜日, 2月 10, 2008
アメリカ横断ウルトラクイズ知ってる??
昨日、彼女に
「アメリカ横断ウルトラクイズって知ってる??」
って聞いたら
「知らない」
って言われました。。。
これがジェネレーションギャップってやつですか?orz
木曜日, 2月 07, 2008
スタッドレス師匠!!
こんばんわ、一応、長いこと大阪に住みついているが、やっぱりお好み焼きは自分で作るのが一番楽しいと思ってるがらです。
まぁ、そんなことはともかく「関西バンザイ!」ってサイトを見てください!!
なかなか面白いコンテンツが。。。
例えば「芸人ジェネレーター」
氷の上でもすべり知らず35年のスタッドレス師匠に弟子入りし芸名を付けてもらいます。
僕の場合は「がら 白血球」という名前を拝命しました。。。
他にもブログパーツとして貼りつけましたが、「関西魂検定」なるものが。。。
意外とマニアックな問題から思わずボケた回答をしたくなる問題まで用意されていて面白いです。
例えば、
現在日本で面積が一番狭い都道府県は香川県ですが、かつては大阪でした。逆転した理由は?
- 横山ノックが知事を辞めたから
- 測量が間違っていたから
- 関空を作ったから
- Yes
- No
プログラムランチャーを導入してみる
火曜日, 2月 05, 2008
Mozilla Firefox3 Beta2を試してみてわかったこと
Windowsの共有フォルダが見れない!!(その後)
一度、寝ようと思ったんですが、寝付けなかったので、ファイルサーバ側のスパイウェア駆除でもしようとPCを起動すると・・・
なんと!また、ファンクションエラーっすか??
まじで勘弁してください。。。
一度、NICのドライバを削除して入れ直すと動きました。。。
ドライバが壊れてたのかな??
なんと!また、ファンクションエラーっすか??
まじで勘弁してください。。。
一度、NICのドライバを削除して入れ直すと動きました。。。
ドライバが壊れてたのかな??
Windowsの共有フォルダが見れない!!
昨日、クリーンインストールしたときに、どうやらスパイウェアが紛れ込んでいたみたいで、それを掃除するのにとんでもなく苦労した。。。
何のためにNortonに金を払ったのか。。。
金返せー!!
まぁ、ともかく無事にスパイウェアの除去はできました。
最終的に使ったのは「Spayware Doctor」ってやつなんだけど、早いはNortonで防ぎきれなかった分もキレイに掃除してもらえるわで大助かりでした♪
問題はその後に起こりました。何とファイルサーバの共有が見れなくなってしまったのです。
普段はネットワークドライブにして接続していたんですが、何故か接続できなくなり、もう一度ネットワークドライブを作り直そうとしたら。。。
「ファンクションが見つかりません。」
はぁ?早速、訳がわかりません。。。マシン名が解決できなかったわけでもなく、何故にファンクション??どんなファンクション???
もう、頭の中は?でいっぱいです。
ここから、戦いが始まりました。。。
おさらいしてみます。
PC:A WinXPPro(普段使う言わばクライアントPC)
PC:B Win2003(ファイルサーバ)
現象、PC:Bの共有フォルダ(ここではShare)がPC:Aから見れない。
1.相互にpingは通るか?
PC:A -> PC:BはOK
PC:B -> PC:AはNG
PC:AのNortonInternetSecurityの「ネットワークマップ」でファイルサーバを信頼するにすることによって遮断されていたICMPが無事通るようなりました。
2.マイネットワークから参照できるか?
これは、今はわかるんですけど、その時はマスタブラウザの概念なんてなかったのでPC:Aのレジストリ(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters\)をいじって再起動して無理やりマスタに変えてみたりしました。
(おそらく、マスタブラウザの優先度はwin2003>XPなんでしょうね)
PC:Bではworkgroup(ActiveDirectoryしてないんで)上に2つのPCが確認できました。
PC:Aでは自分自身しか見えず、PC:Bは参照すらできません。
この時点で、pingは通るが\\IPアドレスのUNCを使っても接続できませんでした。
逆にPC:BからPC:Aへの参照は問題なく行えます。
3.XPサポートツールでマスタブラウザを確認できるか?
ともかく、マシンの一覧が取得できんことにはイントラ内のマシンに接続できません。
マスタブラウザについて調査するためにサポートツールをインストールしてみました。
browstat status
このコマンドを打つだけの為にこんなものを入れる羽目になるとは。。。
しかし、進展がありました!!
レジストリーにコネクトできなかった??レジストリーが関係してる?というかマシンのリストをレジストリ使って管理してるんですか!?
結局のところ、どうなのかはわかりませんでしたが、Could not,Unableと書かれている文章を調べていると、NetBIOS over TCP/IPにたどり着きました。
どうやら、こいつが有効じゃないと共有フォルダを参照できないようです。
さっそく、ipconfig /allで確認してみると、
なんて、結果が。。。
一番最後の行に書いてます。
なんてこったい!!
ネットワーク接続のプロパティからwinsタブにあるNetBIOS over TCP/IPを有効にするにチェックを入れれば、何のことはなく解決しませんでした。。。orz
しかし、XPサポートツールの
browstat status
を実行してみると、
あら不思議!!
でも、ipconfig /allの結果は変わってません。。。
何で??
Tunnel adapter Teredo Tunneling Pseudo-Interface:
こいつがかなり怪しいです。。。
(なんでもIPv6用のアダプタだとかなんとか。。。)
最終的には無事に共有フォルダをネットワークドライブでつなぎ直すことはできましたが、何故にファンクションが間違ってます。ってエラーが吐かれたのかは不明なままです。。。
しかし、今までそんなのしなくてもよかったじゃん!!
後日、
何のためにNortonに金を払ったのか。。。
金返せー!!
まぁ、ともかく無事にスパイウェアの除去はできました。
最終的に使ったのは「Spayware Doctor」ってやつなんだけど、早いはNortonで防ぎきれなかった分もキレイに掃除してもらえるわで大助かりでした♪
問題はその後に起こりました。何とファイルサーバの共有が見れなくなってしまったのです。
普段はネットワークドライブにして接続していたんですが、何故か接続できなくなり、もう一度ネットワークドライブを作り直そうとしたら。。。
「ファンクションが見つかりません。」
はぁ?早速、訳がわかりません。。。マシン名が解決できなかったわけでもなく、何故にファンクション??どんなファンクション???
もう、頭の中は?でいっぱいです。
ここから、戦いが始まりました。。。
おさらいしてみます。
PC:A WinXPPro(普段使う言わばクライアントPC)
PC:B Win2003(ファイルサーバ)
現象、PC:Bの共有フォルダ(ここではShare)がPC:Aから見れない。
1.相互にpingは通るか?
PC:A -> PC:BはOK
PC:B -> PC:AはNG
PC:AのNortonInternetSecurityの「ネットワークマップ」でファイルサーバを信頼するにすることによって遮断されていたICMPが無事通るようなりました。
2.マイネットワークから参照できるか?
これは、今はわかるんですけど、その時はマスタブラウザの概念なんてなかったのでPC:Aのレジストリ(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters\)をいじって再起動して無理やりマスタに変えてみたりしました。
(おそらく、マスタブラウザの優先度はwin2003>XPなんでしょうね)
PC:Bではworkgroup(ActiveDirectoryしてないんで)上に2つのPCが確認できました。
PC:Aでは自分自身しか見えず、PC:Bは参照すらできません。
この時点で、pingは通るが\\IPアドレスのUNCを使っても接続できませんでした。
逆にPC:BからPC:Aへの参照は問題なく行えます。
3.XPサポートツールでマスタブラウザを確認できるか?
ともかく、マシンの一覧が取得できんことにはイントラ内のマシンに接続できません。
マスタブラウザについて調査するためにサポートツールをインストールしてみました。
browstat status
このコマンドを打つだけの為にこんなものを入れる羽目になるとは。。。
しかし、進展がありました!!
Status for domain WORKGROUP on transport \Device\NetBT_Tcpip_{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}こんな、結果が。。。
Browsing is active on domain.
Master browser name is: FILESERVER
Could not connect to registry, error = 53 Unable to determine build of browser master: 53
Unable to determine server information for browser master: 1
1 backup servers retrieved from master FILESERVER
\\FILESERVER
Unable to retrieve server list from FILESERVER: 1
レジストリーにコネクトできなかった??レジストリーが関係してる?というかマシンのリストをレジストリ使って管理してるんですか!?
結局のところ、どうなのかはわかりませんでしたが、Could not,Unableと書かれている文章を調べていると、NetBIOS over TCP/IPにたどり着きました。
どうやら、こいつが有効じゃないと共有フォルダを参照できないようです。
さっそく、ipconfig /allで確認してみると、
Windows IP Configuration
Host Name . . . . . . . . . . . . : client
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter ローカル エリア接続:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . :xxxxxxxxxxxxxxxxxxxxxxxxxx
Physical Address. . . . . . . . . : xx-xx-xx-xx-xx-xx
Dhcp Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 192.168.24.51
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IP Address. . . . . . . . . . . . : 2001:a000:xxxx:0:xxx:xxxx:xxxx:xxxx
IP Address. . . . . . . . . . . . : 2001:a000:xxxx:0:xxx:xxxx:xxxx:xxxx
IP Address. . . . . . . . . . . . : xxxx::xxx:xxxx:xxxx:xxxx%x
Default Gateway . . . . . . . . . : 192.168.24.1
xxxx::xxx:xxxx:xxxx:xxxx%x
DHCP Server . . . . . . . . . . . : 192.168.24.1
DNS Servers . . . . . . . . . . . : 192.168.24.1
xxxx:0:0:ffff::1%1
xxxx:0:0:ffff::2%1
xxxx:0:0:ffff::3%1
Lease Obtained. . . . . . . . . . : 2008年2月5日 1:22:29
Lease Expires . . . . . . . . . . : 2008年2月5日 2:22:29
Tunnel adapter Teredo Tunneling Pseudo-Interface:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Teredo Tunneling Pseudo-Interface
Physical Address. . . . . . . . . : FF-FF-FF-FF-FF-FF-FF-FF
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : fe80::ffff:ffff:fffd%5
Default Gateway . . . . . . . . . :
NetBIOS over Tcpip. . . . . . . . : Disabled
なんて、結果が。。。
一番最後の行に書いてます。
なんてこったい!!
ネットワーク接続のプロパティからwinsタブにあるNetBIOS over TCP/IPを有効にするにチェックを入れれば、何のことはなく解決しませんでした。。。orz
しかし、XPサポートツールの
browstat status
を実行してみると、
あら不思議!!
Status for domain WORKGROUP on transport \Device\NetBT_Tcpip_{xxxxxxxx}ちゃんと、返ってきました。。。
Browsing is active on domain.
Master browser name is: FILESERVER
Master browser is running build 3790
1 backup servers retrieved from master FILESERVER
\\FILESERVER
There are 2 servers in domain WORKGROUP on transport \Device\NetBT_Tcpip_{xxxxxxxx}
There are 1 domains in domain WORKGROUP on transport \Device\NetBT_Tcpip_{xxxxxxxx}
でも、ipconfig /allの結果は変わってません。。。
何で??
Tunnel adapter Teredo Tunneling Pseudo-Interface:
こいつがかなり怪しいです。。。
(なんでもIPv6用のアダプタだとかなんとか。。。)
最終的には無事に共有フォルダをネットワークドライブでつなぎ直すことはできましたが、何故にファンクションが間違ってます。ってエラーが吐かれたのかは不明なままです。。。
しかし、今までそんなのしなくてもよかったじゃん!!
後日、
net viewでシステムエラー1
で解決方法がはっきりしました。日曜日, 2月 03, 2008
C#のIOストリームって
懲りずにC#のお勉強中です。
今日、気になったんですが、ファイルのストリームを開いた後に当然close(必要ならその前にflush)する訳ですが、もともとJavaばっかりやってた人間ですので
try{}catch(Exception e){}finally{}
のような書き方でいいだろうと思っていたんですが、
usingを使って強制的にDepose(オブジェクトを解放するもんだと思ってます)でflush・closeをしてくれているらしい。。。
.net1.1だと何かバグとかあったらしいけど。。。
しかし、using句を使ってExceptionが発生したときには、どうやってハンドリングするんだろう??
結局、try/catchも書きつつusingを使っていくしかないのかなぁ~?
金曜日, 2月 01, 2008
日本人ってジーンズよく履くよね
はい、僕も漏れずにその一人だったりします。
まあ、この冬一番のファッションアイテムとしてヒットしたのは、やっぱりニット帽だったんですよね。
ジーンズ主体のカジュアルな格好で過ごしていたから。。。(無職なんてそんなもんです。)
自転車によく乗ってるんで、ジーンズでも巻き込み防止のバンドをよくつけてるんですけど、結構(いや、実際)汚れてるんですよね。。。
そこで、新しいのがほしいなぁ~と思っていたら、よくお世話になっているリーバイスさんから「PLAY HARD」ってコンセプトで2月下旬に発売予定の新商品です。
やっぱ銀シャリっすよ
filmoでビールDraftOneの「スゴイ米当たる!キャンペーン」CMがいくつか作られてました。
やっぱ、結構おもしろいですね。
今回は映像技術って感じのやつです。
タイトルは「DraftOneに変わっちゃう!」
「スゴイ!!」「スゴイ!!」と連呼してます。
最後のオチも書いちゃいますが、米をグラスに注いでいると途中から何と!ビールに変わります!!
実は最初に思ったのは、「米からできる酒は日本酒やろ!!」と突っ込みたくなったのは秘密ですw
麦じゃないの??
あ、発砲酒か。。。
さびしいな。。。
僕が結構やりこんでいたMMORPGがあった。(過去形にしていいのかは微妙ですけどw)
そこで、長いことお世話になっていた方が、そのゲームでいうところの「引退」をされるとのこと。。。
本人のブログと仲間のブログで確認して急いでBBSに書き込みです。
仕事をしなくなってからはお金が払えないんで、まったくやってなかったんですが、こういう話を聞くとさびしいもんですね。。。
まぁ、引退される方には「おつかれさまでした」と言うしかないよなぁ~。
登録:
投稿 (Atom)
failed to read qemu headerのときのメモ
かなり久々。。。 忘れないようにここに書きこんでおく。 ちょっとした手違いで libvirtでイメージを起動しようとすると failed to read qemu header なんておっしゃられて起動しない。。。 vmwareserverを使って...
-
かなり久々、別に放置していた訳じゃないです。 仕事の都合で、現在の開発環境に定義されているDDLスクリプトを抜き出す必要があったので、DBMS_METADATAパッケージを使用してみた。 前に(言っても2年くらい前)DB2で同じようなことをやった時にはdb2lookupっ...
-
unitテストを作ろうと思い、作って実行してみると途中で止まる。。。 「なんで?」 結局のところ、unitテストで実行しようとしたクラスにSystem.exit(int)があったのが原因だった。 それならば、System.exit(int)が効かなくなるおまじないはな...
-
今日は1年ぶりの仕事場でTracの設定をシコシコしてました。 さぁ、チケット発行・更新でメールを送ってやる!! と思ったら、まったく飛んでる気配なし。。。 とりあえず、ログをconsoleからfileへ変更 で、見てみたら notification on creatio...