C言語の父 [技術メモ]
C言語およびUNIXの父と言われるデニス・リッチーさんが亡くなった。
ジョブスさんに次いで大きな人を亡くしたなぁ。
ただ、個人的にはコンピュータは20年近く触っているけど
UNIX系はほとんど使っていないし、純粋なC言語も数ヶ月しかやってないので実はあまり身近ではなかった。
学生時代は
MS-DOSでPASCAL
win3.1~95で(言語じゃないけど)TeXとMathmathica
仕事では
汎用機のCOBOLからWin系でVB、C#
とやっていた。情報処理試験も当時はCOBOL受けた。
なので、C、C++は比較的苦手だったし、UNIXは今でもほとんど触ってない。
一時ためしにLinux系のOSを自分のPCに入れてみたこともあったけど、使いづらくてすぐにやめたし。
そういう意味では、この人のものの発展系にはご縁があるが
直接的には苦手とする分野のものだったなぁ。
ジョブスさんに次いで大きな人を亡くしたなぁ。
ただ、個人的にはコンピュータは20年近く触っているけど
UNIX系はほとんど使っていないし、純粋なC言語も数ヶ月しかやってないので実はあまり身近ではなかった。
学生時代は
MS-DOSでPASCAL
win3.1~95で(言語じゃないけど)TeXとMathmathica
仕事では
汎用機のCOBOLからWin系でVB、C#
とやっていた。情報処理試験も当時はCOBOL受けた。
なので、C、C++は比較的苦手だったし、UNIXは今でもほとんど触ってない。
一時ためしにLinux系のOSを自分のPCに入れてみたこともあったけど、使いづらくてすぐにやめたし。
そういう意味では、この人のものの発展系にはご縁があるが
直接的には苦手とする分野のものだったなぁ。
世界を変えた巨星の一人 [技術メモ]
iPhone 4Sの発表翌日。
Appleの前CEO スティーブ ジョブス氏が亡くなられた。
56歳ってまだまだ若いのに。
今回の引退は2度目の引退だったからなぁ。
体は限界だったんだろう。
まだまだ存命だけど、第一線から身を引いた
ビル ゲイツと共に90年代に世界を大きく変えた1人だと思う。
そして、この人たちは数十年後には歴史の教科書に載って良い人だと思ってる。
ご冥福をお祈りします。
Appleの前CEO スティーブ ジョブス氏が亡くなられた。
56歳ってまだまだ若いのに。
今回の引退は2度目の引退だったからなぁ。
体は限界だったんだろう。
まだまだ存命だけど、第一線から身を引いた
ビル ゲイツと共に90年代に世界を大きく変えた1人だと思う。
そして、この人たちは数十年後には歴史の教科書に載って良い人だと思ってる。
ご冥福をお祈りします。
モバイル環境大幅見直し [技術メモ]
個人的にモバイル環境を大幅に見直ししてみました。
まず、iPhone
電話として使った回数はほんの数回。
ipodとして使っているのがほとんどなので解約した。
で、無線LAN
WiMAXを契約。
年間パスポート契約でAtermWM3500Rを1円購入。
こいつを持ち歩いて使いたいときに電源を入れることにする。
ヨドバシでWIRELESS GATEの契約もついてきたので
明日は出歩きながらその設定もしてみる予定。
これで7000円前後が4000円前後になるはず。
一通りうまくいったら、TX用に契約していたM-zoneも解約しようかなと思う。
これも解約しちゃえば1500円くらい減るはずだけど
m-zoneはメトロで使える点が微妙に捨てがたい。
まず、iPhone
電話として使った回数はほんの数回。
ipodとして使っているのがほとんどなので解約した。
で、無線LAN
WiMAXを契約。
年間パスポート契約でAtermWM3500Rを1円購入。
こいつを持ち歩いて使いたいときに電源を入れることにする。
ヨドバシでWIRELESS GATEの契約もついてきたので
明日は出歩きながらその設定もしてみる予定。
これで7000円前後が4000円前後になるはず。
一通りうまくいったら、TX用に契約していたM-zoneも解約しようかなと思う。
これも解約しちゃえば1500円くらい減るはずだけど
m-zoneはメトロで使える点が微妙に捨てがたい。
ios4をiPhone3Gに入れてみたが… [技術メモ]
メモでもなんでもなく愚痴。
昨日リリースされたios4をiPhone3Gに入れてみたのだが…
わかっていたこととは言え、つまらんし使えない。
・マルチタスクは使えない
・壁紙設定の拡張機能も使えない
・フォルダの作り方は説明見ないとわからん
⇒ipadのCMでも説明書いらないくらい簡単なのが売りなのに
・フォルダは12個くらいしか入れられないという中途半端っぷり
・イラストとか画像ファイルは異常に荒く見えるようになった
・挙句に全体的に重い
アップデートしなきゃ良かったって結構本気で後悔中。
昨日リリースされたios4をiPhone3Gに入れてみたのだが…
わかっていたこととは言え、つまらんし使えない。
・マルチタスクは使えない
・壁紙設定の拡張機能も使えない
・フォルダの作り方は説明見ないとわからん
⇒ipadのCMでも説明書いらないくらい簡単なのが売りなのに
・フォルダは12個くらいしか入れられないという中途半端っぷり
・イラストとか画像ファイルは異常に荒く見えるようになった
・挙句に全体的に重い
アップデートしなきゃ良かったって結構本気で後悔中。
何が起きたんだ?safari [技術メモ]
何も解決してないけど…
R5(WinXP)のほうでメインに使っているsafariが唐突にまともに使えなくなった。
たまに文字が表示されない。
文字が重なって見えるところがある。
とにかくどのページの表示もべらぼーに重い。
タスクマネージャーを起動させると、なぜかタスクマネージャーがCPU100%くらい取る。
⇒safariを落とすと落ち着く。
使いもんにならん。
前にもどうにもならないくらい重くなっていたことがあったけど、これはひどい。
ブックマーク関係をIEに戻してsafariやめようかな。
R5(WinXP)のほうでメインに使っているsafariが唐突にまともに使えなくなった。
たまに文字が表示されない。
文字が重なって見えるところがある。
とにかくどのページの表示もべらぼーに重い。
タスクマネージャーを起動させると、なぜかタスクマネージャーがCPU100%くらい取る。
⇒safariを落とすと落ち着く。
使いもんにならん。
前にもどうにもならないくらい重くなっていたことがあったけど、これはひどい。
ブックマーク関係をIEに戻してsafariやめようかな。
クラスタ環境のwindows Server 2003にSQLServer2005をインストールしたときの罠 [技術メモ]
若干今更な組み合わせではあるのだが…
フェールオーバークラスタを組んだWindwos Server 2003にSQLServer2005を入れていたのだが…
素のWindwos Server 2003だと.netframework2.0をそれぞれで入れる必要があったり
DTCのサービスをクラスタで使えるような準備しておかないと行けなかったり
結構面倒ではあった。
が、一番の罠は
なぜかインストール開始時に
「セットアップをリモート コンピュータで起動できませんでした。リモート コンピュータでタスク スケジューラのイベント ログを確認してください。」
と言い出してインストールが止まってしまう。
RDPで片割れに入っていたので確認してみても、特にエラーのイベントは上がっていない。
ただ、タスクを見るとSQLServerのインストーラーが登録されていて起動に失敗しているように見えた。
なるほど、リモートでタスク登録して反対側にインストールしているんだ…。
で、調べてみると「タスクスケジューラ」のサービスが上がっていないのでは?みたいなことが書かれていたので確認してみても、ちゃんと自動で起動されている。
なんでだ…。
で、ここを見つけた。
http://support.microsoft.com/kb/910851/ja
「この問題は、他のリモート セッションがリモート ノードでアクティブであるために発生します。たとえば、リモート デスクトップ接続のセッションがリモート ノードでアクティブである場合などです。 」
えっ?
管理がてらにリモートデスクトップ入ってたら駄目ってことですか?
有効ノードじゃない方のRDPを抜けて再度インストールを開始すると…
上手くいきやがった。
複数同時に扱うときとかって、結構他のマシンからRDPで入っていることが多いので
これは結構やられた。
フェールオーバークラスタを組んだWindwos Server 2003にSQLServer2005を入れていたのだが…
素のWindwos Server 2003だと.netframework2.0をそれぞれで入れる必要があったり
DTCのサービスをクラスタで使えるような準備しておかないと行けなかったり
結構面倒ではあった。
が、一番の罠は
なぜかインストール開始時に
「セットアップをリモート コンピュータで起動できませんでした。リモート コンピュータでタスク スケジューラのイベント ログを確認してください。」
と言い出してインストールが止まってしまう。
RDPで片割れに入っていたので確認してみても、特にエラーのイベントは上がっていない。
ただ、タスクを見るとSQLServerのインストーラーが登録されていて起動に失敗しているように見えた。
なるほど、リモートでタスク登録して反対側にインストールしているんだ…。
で、調べてみると「タスクスケジューラ」のサービスが上がっていないのでは?みたいなことが書かれていたので確認してみても、ちゃんと自動で起動されている。
なんでだ…。
で、ここを見つけた。
http://support.microsoft.com/kb/910851/ja
「この問題は、他のリモート セッションがリモート ノードでアクティブであるために発生します。たとえば、リモート デスクトップ接続のセッションがリモート ノードでアクティブである場合などです。 」
えっ?
管理がてらにリモートデスクトップ入ってたら駄目ってことですか?
有効ノードじゃない方のRDPを抜けて再度インストールを開始すると…
上手くいきやがった。
複数同時に扱うときとかって、結構他のマシンからRDPで入っていることが多いので
これは結構やられた。
javascriptのencodeURIのわな [技術メモ]
ajaxとの絡みでencodeURIを使ってエンコードをしてgetパラメータにセットして次ページに遷移する処理があったのだが...
どうも意図していないスペースが入っているデータができている。
で、調べてみたところこんなのを見つけた。
http://logic.stepserver.jp/data/archives/438.html
encodeURIは
;/?:@&=+$-_!~*.,()a#'
をエンコードしないらしい。
なので、「あ+b」をわたすと
%82%a0+%82%82
として渡してきた。
これをasp.netの処理でPage.Request.QueryString でパラメータを取得すると
「あ b」となってしまい意図していない空白が受け取れてしまう。
さらにここの処理ではその上からHttpUtility.UrlDecodeをかけていた。
なので、ダブルでコードまでしている状態だったみたい。
なので、こんな感じに書き換えた。
・encodeURIの代わりにencodeURIComponentを使う。
・受け取る側はPage.Request.QueryStringのみで受け取りさらにDecodeはしない
・ぱらめーたの値を表示する処理もdecodeURIからdecodeURIComponentに変更
これでやっとgetパラメータも「%82%a0%2b%82%82」になって
受け取ったデータも表示も「あ+b」になった。
っていうかencodeURI使えねぇ...
どうも意図していないスペースが入っているデータができている。
で、調べてみたところこんなのを見つけた。
http://logic.stepserver.jp/data/archives/438.html
encodeURIは
;/?:@&=+$-_!~*.,()a#'
をエンコードしないらしい。
なので、「あ+b」をわたすと
%82%a0+%82%82
として渡してきた。
これをasp.netの処理でPage.Request.QueryString でパラメータを取得すると
「あ b」となってしまい意図していない空白が受け取れてしまう。
さらにここの処理ではその上からHttpUtility.UrlDecodeをかけていた。
なので、ダブルでコードまでしている状態だったみたい。
なので、こんな感じに書き換えた。
・encodeURIの代わりにencodeURIComponentを使う。
・受け取る側はPage.Request.QueryStringのみで受け取りさらにDecodeはしない
・ぱらめーたの値を表示する処理もdecodeURIからdecodeURIComponentに変更
これでやっとgetパラメータも「%82%a0%2b%82%82」になって
受け取ったデータも表示も「あ+b」になった。
っていうかencodeURI使えねぇ...
asp.netで別スレッド処理はしないほうがよいみたい [技術メモ]
仕様変更の依頼があってちょっと実験してみた。
大量のInsert処理を行っているが、裏で1行ずつやっていて
その処理が終わらないと画面の処理が終わらない
という作りだったので、このInsertを非同期にすることを考える
まず、普通に非同期にしてみる。
こんな感じで実行。
デバッガでもなんとなく動いているのだが...
問題は実行中にIIS側でアプリケーションのリサイクルをかけた時。
でーたInsertが実行されない。
デバッガで入る前に止めても、入っている途中で止めても駄目。
調べてみるとこんなのが出てきた。
http://ap.atmarkit.co.jp/bbs/core/fdotnet/14720
画面が出たところで、終わりと認識するみたい。
・子スレッドは親側がリサイクルでなくなっているので死んでしまう。
・子スレッドに行く前に親がリサイクルされると使いたいデータが無くなってしまって結果的にできない
そんな感じなんだろうか。
要はasp.netで別スレッド処理はやめておけってことかな。
結局、データのInsertのSQLを1文で頑張って作成して、BeginExecuteNonQueryを使う方向にしてみようと思う。
大量のInsert処理を行っているが、裏で1行ずつやっていて
その処理が終わらないと画面の処理が終わらない
という作りだったので、このInsertを非同期にすることを考える
まず、普通に非同期にしてみる。
|
public void でーた配信(でーたDataSet.でーたRow prow) { //うにょうにょデータのリストをつくる 非同期でーたInsert 非同期処理 = でーたInsert;  非同期処理.BeginInvoke(prow, IDリスト, null, null); } public void でーたInsert(でーたDataSet.でーたRow prow, List { using (var ta = new でーたTableAdapter()) {  foreach (int i in IDリスト)  { ta.Insertでーた(i, prow.ID); }  } } delegate void 非同期でーたInsert(でーたDataSet.でーたRow prow, List |
こんな感じで実行。
デバッガでもなんとなく動いているのだが...
問題は実行中にIIS側でアプリケーションのリサイクルをかけた時。
でーたInsertが実行されない。
デバッガで入る前に止めても、入っている途中で止めても駄目。
調べてみるとこんなのが出てきた。
http://ap.atmarkit.co.jp/bbs/core/fdotnet/14720
画面が出たところで、終わりと認識するみたい。
・子スレッドは親側がリサイクルでなくなっているので死んでしまう。
・子スレッドに行く前に親がリサイクルされると使いたいデータが無くなってしまって結果的にできない
そんな感じなんだろうか。
要はasp.netで別スレッド処理はやめておけってことかな。
結局、データのInsertのSQLを1文で頑張って作成して、BeginExecuteNonQueryを使う方向にしてみようと思う。
asp.netで作ったページでのjavascript関係 [技術メモ]
気になったので書いておく。
JavaScriptはMultiViewをはさんだコントロールは見れない
Multiview1
Multiview2
とあって、Multiview1側にあるテキストボックスの値を
Multiview2の表示タイミングで使おうとしても拾えなかった。
(同じ処理をMultiview1側のMultiviewを進めるボタンで
実施したら動いたのでそういうことと判断してよさそう)
実際、Multiviewを進めてブラウザでソースを確認すると
進んだ結果が見えるので、ブラウザとしてはページが別物扱いみたい
ASP.netでコントロールにつけられるClientIDは
参照はできるが書き換えは不可
そういうことらしい
今回、javascript側でクライアントIDを取得させたかったのだが
自動でIDに余計なものを付与されてしまってべたでは見れなかった。
なので、
------------------------------------------------------------
ctlnm = "span_id";
objspan = document.getElementsByTagName('span');
objRegex = new RegExp(ctlnm);
for (i = 0; i < objspan.length; i++) {
if (objspan[i].id.match(objRegex)) {
ctlid=objspan[i].id;
}
}
------------------------------------------------------------
のような処理をjavascript側に書いて
"span_id"というIDを持っているspanタグを捜させた。
JavaScriptはMultiViewをはさんだコントロールは見れない
Multiview1
Multiview2
とあって、Multiview1側にあるテキストボックスの値を
Multiview2の表示タイミングで使おうとしても拾えなかった。
(同じ処理をMultiview1側のMultiviewを進めるボタンで
実施したら動いたのでそういうことと判断してよさそう)
実際、Multiviewを進めてブラウザでソースを確認すると
進んだ結果が見えるので、ブラウザとしてはページが別物扱いみたい
ASP.netでコントロールにつけられるClientIDは
参照はできるが書き換えは不可
そういうことらしい
今回、javascript側でクライアントIDを取得させたかったのだが
自動でIDに余計なものを付与されてしまってべたでは見れなかった。
なので、
------------------------------------------------------------
ctlnm = "span_id";
objspan = document.getElementsByTagName('span');
objRegex = new RegExp(ctlnm);
for (i = 0; i < objspan.length; i++) {
if (objspan[i].id.match(objRegex)) {
ctlid=objspan[i].id;
}
}
------------------------------------------------------------
のような処理をjavascript側に書いて
"span_id"というIDを持っているspanタグを捜させた。
RDPとどこドアの相性? [技術メモ]
どうも良くないところがあるみたい。
現在の自分の環境
親マシン:Lenovo T61p(vista)に1600×1200のサブディスプレイ
子マシン:Panasonic R5(XP)
これでT61pからどこドアでR5を使う。
その1
R5を外に持っていってSSL-VPNで会社に接続。
T61pにログイン。
⇒どこドアが動きっぱなしの場合、RDPで入ったT61pからさらにR5に行こうとして
親子が良くわかんなくなってマウスが不思議な動作になる。
当たり前といえば当たり前。
その2
今回気がついた。
サブディスプレイをフルスクリーンでRDPの画面を開いてRDPで作業。
そのままマウスを外に動かしてR5に移動する。
⇒R5でキーボードの動作ができず、その動作がRDP側に残ってしまうことがある。
ロックしている時のパスワード入力などが見えてしまう危険あり。
現在の自分の環境
親マシン:Lenovo T61p(vista)に1600×1200のサブディスプレイ
子マシン:Panasonic R5(XP)
これでT61pからどこドアでR5を使う。
その1
R5を外に持っていってSSL-VPNで会社に接続。
T61pにログイン。
⇒どこドアが動きっぱなしの場合、RDPで入ったT61pからさらにR5に行こうとして
親子が良くわかんなくなってマウスが不思議な動作になる。
当たり前といえば当たり前。
その2
今回気がついた。
サブディスプレイをフルスクリーンでRDPの画面を開いてRDPで作業。
そのままマウスを外に動かしてR5に移動する。
⇒R5でキーボードの動作ができず、その動作がRDP側に残ってしまうことがある。
ロックしている時のパスワード入力などが見えてしまう危険あり。








