携帯用リンク
メニュージャンプ  携帯専用ページ
«Prev || 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 || Next»

2012-12-17

Nintendo eshop に 001-0502 で繋がらないときはUDPを解放かも

嫁さんに「3DS-LL とびだせ どうぶつの森 パック」を買ってこいと言われて1カ月ぐらい駅前のヨドバシに通ってたが先週の土曜日(12月8日)に、お昼頃の入荷分をめでたく買うことができた。
その日は、「もう同梱版はあきらめて通常版を買うことにしよう」と説得して普通の 3DS-LL を買いに行ったのだが、店内の様子がちょっと前日までと変わってたので買う時のレジで同梱版の入荷予約できるかを聞いてみようとしたら、実物が「いまあるよ!」との事だったので即、購入。最後の1個だったらしい。
でも、その翌週は、秋葉原のヨドバシとかは再入荷分の在庫がまだあったらしいし、結構入荷されていってるっぽい。
それはともかく、嫁さんは上機嫌になってなぜか自分のヘソクリから俺の分の 3DS-LL を買ってくれた。アリガトウ。

さて、3DS-LL 本体はあってもソフトがない。無印DSのころのソフトが少しあったはずだが、探してもないから Nintendo eshop でダウンロード版のソフトを物色しようと思った。

そして、ここからが本題。

Nintendo eshop につながらない。
つなごうとすると 「001-0502」が表示され、電源を入れなおしてやり直せという旨のメッセージがでる。何回やっても何回やっても何回やってもダメなので、これはおかしいと思い、ネットで情報収集。

どうやら、必要な通信ポートがルーターの設定でブロックされている可能性が高いらしいことが判ってきた。 ルーターのSPI機能を無効にしたらつながったという情報多数。

SPI機能ってステートフルインスペクションらしいから...

SPI機能って言われてもウチのルーター最近RTX1000 に交換したからそんなお手軽機能付いてないよ。
と思って、RTXの情報(勉強用にオクで買ってあったヤツであんまり使いこなせてない)も調べる。

結局、フィルタ機能の established を通してそれ以外はブロックするような機能ということで。

ip filter 10 reject 192.168.XX.0/24 * * * *
ip filter 12 pass * 192.168.XX.0/24 established * *

とかするのと意味的には同じ?
あれッ? これ外したらダダ漏れじゃないの?
もう少し限定的に解放するには...
さらに検索。

以下のサイトによると、
http://motitori.blog105.fc2.com/blog-entry-1874.html
http://www.akakagemaru.info/port/warpstar-3ds.html
3DSでは以下のポートを使うとのこと
TCP 80 443 6667 12400 28910 29900 29901 29920
UDP 全て

UDP全て解放はちょっとなー。

ということで、3DS のIPアドレスを固定してそのIPアドレスだけ通すことにする。
まず、TCPポートはおいておいて UDPだけ解放して試してみようと思い設定したら繋がった。

結論:nintendo eshop に「001-0502」で繋がらないときは UDP を解放すれば繋がる。
かもね...

以下設定例
-----------
例)

lan1 は内部ネットワーク lan3 はインターネット
ネットワークは 192.168.201.0/24
DHCP 割り振り範囲は 1-63
----
ip lan3 secure filter in 11 12 101 .... (その他いろいろ必要なものを)

ip filter 11 reject 192.168.201.0/24 * * * *
ip filter 12 pass * 192.168.201.0/24 established * *

... その他いろいろ

ip filter 101 pass * 192.168.201.63 udp * * <---- 3DSに指定した固定IP

... いろいろ省略

dhcp service server
dhcp scope 1 192.168.201.1-192.168.201.63/24
dhcp scope bind 1 192.168.201.63 ethernet XX:XX:XX:XX:XX:XX <-- 3DSの固定IP設定

- - - - - - - - - - - - -
追記:(2012/12/27)
どうやら、udp の 9103 ポートだけでよさそう。(rtxの設定はそのうち変えよう)
ip filter 101 pass * 192.168.201.63 udp 9103 * <-- とかかな。

さらに、Nintendou eshop の場合は初回アクセス時だけでよいらしい。
でも、既に繋がってるから確認できないな。
category21. Network関連  time2012-12-17 01:30

2012-05-04

いい加減にバージョンあげないと

長らく放置状態だったが、気がつくとNucleus のバージョンが遥か先に行ってしまってる。
そろそろバージョンあげよう。

最近、弄っているものは Cacti とか、Rとか、ESXIとか。
半年ぐらい前にサーバーを 440BXのBH6マシーンから NEC安鯖に変えたり、いろいろやっている。
category90. 未整理  time2012-05-04 14:10

2009-07-17

ストアドプロシージャの戻り値取得方法(.Net2.0 SqlDataSource)

Visual Studio 2005 で SqlDataSource を使ってストアドプロシージャを実行したときに戻り値がある場合の取得方法を調べたメモ。

InsertQueryにストアドプロシージャを設定して普通に Output用パラメータを画面上の項目とかにバインドしても全然反映しないのでいろいろと調べてみた結果、
Insertedイベントのパラメータで渡される SqlDataSourceStatusEventArgs e で取得できるらしいということが判った。

と言うことで、実験した。


- - - - - - - - -
実験用のストアドプロシージャ:PROC_TEST
Procedure text:
==================================================
DECLARE VARIABLE strInnerTXT VARCHAR(20);
BEGIN

RES_STR = CUST_NM || ':' || CUST_NM_KN;

END
==================================================
Parameters:
CUST_NM INPUT VARCHAR(40)
CUST_NM_KN INPUT VARCHAR(60)
RES_STR OUTPUT VARCHAR(20)
- - - - - - - - -


Inserted イベント用のメソッドで止まるようにブレイクポイント指定して、変数 e の内容を調べた結果

イミディエイトウィンドウにて
? e.Command.Parameters["@RES_STR"]
とかやると、結果は...
{@RES_STR}
[FirebirdSql.Data.FirebirdClient.FbParameter]: {@RES_STR}
base {System.MarshalByRefObject}: {@RES_STR}
DbType: String
Direction: Output
IsNullable: false
ParameterName: "@RES_STR"
Size: 0
SourceColumn: ""
SourceColumnNullMapping: false
SourceVersion: Current
Value: "a:b"

と言うことは、
? e.Command.Parameters["@RES_STR"].Value
"a:b" (これが実際に返される値で間違いなし)

つまり、Insertedイベントのメソッド内で
e.Command.Parameters[出力用パラメータ].Value
で、取得できる。
ということが確認できました。

ちなみに実際には行を挿入しつつ、その行のプライマリキーを返すストアドプロシージャとかのときに使います。

VS2005+SDK で FirebirdClient-2.1.0 + DDEX

Visual Studio 2005 Pro (以後VS) で Firebird を使うには
「Firebird ADO.NET Data Provider」を使う訳ですが、それに加えて
「DDEX Provider for Visual Studio」と組み合わせるとVSのIDE上で便利に使えるようになる。(ある程度)
最初は
FirebirdClient-2.0.1 + FirebirdDEXProvider-2.0.2
の組み合わせで何とか使っていた。
(クエリパラメータに「@XXXX」ではなく 「?」を使うことでわりと安定して使えた。@+名前が使えなかったのは多分withSDKになってなかったからかも)
が、ストアドプロシージャのパラメータ受け渡しに関連してどうもうまくいかないので最新版(といってもほんの数日で次のバージョンが出てしまった...)に切り替えてみることにした。

その時点での最新版は FirebirdClient-2.1.0 と FirebirdDDEXProvider-2.0.4 の組み合わせ。
付属の ReadMe.txt とか Web上の情報を参考に
FirebirdClient-2.1.0 + FirebirdDDEXProvider-2.0.4
を入れてみた。(この部分もいろいろあって、machine.configのバージョン書き換えとかレジストリの削除とか)
で、なんとかセットアップ完了!

ところが、これまでコンパイルが通っていた既存のプログラムが全部エラーでビルドができない状態になってしまった。

いろいろ調べてみて、VSのツールメニューにある「package load analyzer」でmscoree.dllが見つからない旨のエラーが発生することが判った。

関連するレジストリを探してみるとレジストリパス
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{8d9358ba-ccc9-4169-9fd6-a52b8aee2d50}]

"InprocServer32"="mscoree.dll"
となっていた。

これを、実際にファイルがある場所にフルパスで、
"InprocServer32"="c:\\windows\\system32\\mscoree.dll"
と、書き換えてみたら...

ビルドできるようになりました!
めでたしめでたし。
ただ、どちらにしても SQL文のパラメータ受け渡しはちょっとアヤシイ気がする。

参考になるWeb上の情報
[Firebird-jp-general] DDEXProviderの登録に関して
のレスポンスが参考になります。

ちなみに Firebird Client の最新版はこの数日後に 2.5.0 がでました。
そのうち試してみよう。

category11. RDB Firebird  time2009-07-17 17:59

インサート文一発で複数レコードの連番もうまく作ってくれた

FirebirdのSQLで最近いいと思ったこと。
テーブルAの内容をテーブルBに一括コピーする場合で、新しく別の連番をカウントアップさせて採番したい場合にInsert文一発でできるということ。

例えば顧客マスタと顧客履歴テーブルがあったとして、

顧客マスタ:cust_mast
カラムが
cust_id int
cust_name varchar(20)
cust_rank integer

顧客履歴テーブル:cust_hist
カラムが
cust_hist_no integer (PK)
cust_id integer
cust_name varchar(20)
cust_rank integer

初期データで顧客マスタは1000件ぐらいあって顧客履歴はまだ0件だけど、運用開始時には
初期データが作成されたときの顧客履歴を用意しておきたいという場合。

以下のようなInsert文一発でできて嬉しかった。
INSERT INTO cust_hist (
cust_hist_no,
cust_id,
cust_name,
cust_rank
) SELECT
(SELECT CASE WHEN (MAX(cust_hist_no) IS NULL) THEN 0 ELSE MAX(cust_hist_no) END FROM cust_hist) + 1 ,
cust_mast.cust_id,
cust_mast.cust_name,
cust_mast.cust_rank
FROM cust_mast
ORDER BY cust_mast.cust_id ;

感覚的には複数行を一括で処理するとキー違反になりそうですがなぜか意図したとおりに1行ずつカウントアップした値を cust_hist_no に入れてくれた。
普通に考えると「カーソル使ってループでまわして一行ずつ処理するプロシージャを作らないとなー...メンドクサイ...」などと思ってたらINSERT文一発でできてラッキー!って感じ。


MySqlのオートインクリメントとか MS-Sql の Identity のようなそのものズバリの機能はFirebirdにはない。
(Firebirdではシーケンスというものを作ってgen_id関数で呼び出すことで連番の次の値を作る)
まあ、連番自動生成機能を使ってない(使いたくない)カラムでの話です。
category11. RDB Firebird  time2009-07-17 14:46

«Prev || 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 || Next»