ニックネーム:   パスワード:
| MyDoblogトップ | Doblogポータル | Doblogガイド | ユーザ登録 | 使い方 | よくある質問 | ツールバー | サポート |
CAMUSのこくばん -落書き板書所-
Blog
[ 総Blog数:786件 ] [ このMyDoblogをブックマークする ] [ RSS0.91   RSS1.0   RSS2.0 ] [ ATOM ]
2004/06/19のBlog
ちょっと試験的に
1) Blogタイトルのジャンル周りの文字を見えなくしてみた
2) 更新日時を見えなくしてみた
3) トラックバック記事を見るなどの[ ]を見えなくしてみた
ということをしてみました。

全部通常状態で見えないだけで、そのあたりをドラッグすれば一発で見えちゃうんですが。(^^;)
さすがにそこまで制御する気はありません。

で、やってみての感想です。

1)はちょっと違和感があります。
2)はなかったらないですっきりしていいかも…と思い始めています。
3)はこれもすっきりしていいかも…と思い始めています。

しばらくこれで様子を見て、シックリくるようなら続行、そうでなければ元に戻しましょうか。
2004/06/18のBlog
会社のメールアカウントを技術系MLやフォーラムなどに公開しているせいか、とってもよくSPAMが来ます。

量が多いとウザくはなりますが、結構楽しいもんです。
薬(ヤク)買わんか?とか、ごっつ安いMSOffice買わんか?とか、一緒に独立して起業しようぜとか、ロトがあたったよ!とか、マルチじゃないから信用してこの商売手伝って!とか、まぁいろいろ来ますが、エッチ系も結構来ますね。

えっちな女でも大丈夫ってのはホントですか~?
もしホントだったら、私、けっこうエッチなので(笑)


とか、

私の恥ずかしい写真があるの。
あなただけに見せてあげるからここに見に来て。


とかいうメールがくると、どうしても

嬉しい。
私はあなたのような人を待っていた。
まさか、レズだとばれるとは思わなかったのだけど、
あなたには私のことがわかったのね。
もう待ち遠しい!


なんてイタヅラメールを送ってしまいたくなる衝動に駆られます。(爆)

私はアホでしょーか。ヘンタイでしょーか。

ちなみに、知人(♀)のところには
男同士オンリー、女性&ノーマル男性おことわり
なSPAMが来て、大笑いでした。(^^;)
昨日、任意のテーブルからIDENTITY属性を持つカラムを得るにはどうしたらいいのか、という質問をPASSJ(SQL Serverユーザグループ)のDevMLに投げました。
そこでのやり取りや、私のとった行動がそのまま記事になるかな…と思い、ここに残して起きます。

Step1 後輩から相談を受ける
「Javaを利用して任意のテーブルのX件目からY件目までを取得するメソッドを作成したい」
という後輩のリクエストがありました。
Oracle対応のSQLは既に別の人が作っていたので、SQL Server対応をしたいとのこと。

SQL ServerではOracleでいうところのROWNUM擬似列はないので、別の機能を利用して作成する必要があります。(Yukonでは実装される予定とのこと)
そこで、こういう場合のセオリーとしてはidentity関数もしくはidentity列を利用して実現するというのがあります。
ここで注意しなければならないのは、identity関数を利用するには、select 文中に into 句を利用するという制限がつきます。
ですのでidentityを利用するには、どうしても1クエリでは実現不可能なのです。

幸い(?)SQL Serverでは下手にUnionを使うよりかは一時テーブルを使うほうがはるかにパフォーマンスがいいということがだいぶと利用者の中で広まりつつあります。
しかし、一時テーブルを使うためにはSQL ServerのtempdbというDBについての知識が必要ですが、そこはきちんとBooks Onlineで抑えておいてくださいね。

話を元に戻します。
pubsDBのemployeeテーブルでfname順に3件目から8件目を得るには、こんなクエリを書くと一番効率がいいと思われます。
------------------------------------------------------------------
use pubs
go

select
 identity(int, 1, 1) rank,
 j.*
into #testtbl
from employee j
order by j.fname

select *
from #testtbl
where rank between 3 and 8
------------------------------------------------------------------
ところが、identityには制限があり、1テーブルにつき1列しか設定することができません。
ですので、pubsDBのjobsテーブルのmin_lvlで昇順に並べた場合、3件目から8件目までを取得するとなると、こんな工夫が必要になります。
------------------------------------------------------------------
use pubs
go

select
 identity(int, 1, 1) rank,
 cast(j.job_id as int) job_id, j.job_desc, j.min_lvl, j.max_lvl
into #testtbl
from jobs j
order by j.min_lvl

select *
from #testtbl
where rank between 3 and 8
------------------------------------------------------------------
検索対象テーブルにidentity列を利用しているカラムがある場合には、そいつを無効化してやらないといけません。
そのため、上記の例ではcastをすることでidentity属性を殺したというわけです。

ここで、

任意のテーブルに対してX件目からY件目を取得するためには
任意のテーブルにIDENTITY列があるのかどうかの情報が必要

になるということがわかりました。

そこで、Books Onlineを調べてみると、ident_currentという関数があることがわかりました。

例1) identity属性あり
select ident_current('jobs')

結果は「14」

例2) identity属性なし
select ident_current('employee')

結果は「Null」

数値が返って来ると取りあえずIDENTITY列は必ずあると判断できるようです。
ただし、Nullが返って来るからと言ってIDENTITY列がないとは限らない可能性があるようです。[根拠]
上記[根拠]の対処方法はチトわかりませんが、とりあえずIDENTITY列がある場合にはそれなりの対処はしてやろうということで、今度は次の課題にかかります。

どのカラムがIDENTITYなのかを調べる

とりあえず、システムテーブルに情報があるかもと思い、syscolumnsの仕様を確認してみることにしました。
…ざっと眺めてみましたが、とりあえずなさそうです。
他のシステムテーブルにidentity情報を格納しているのかも…と思い、他のシステムテーブルも見てみましたが、その形跡はありません。
同様に、Microsoft社のサイトでも検索をかけてみましたが、欲しい情報は得られませんでした。

Step2 情報提供を呼びかける
Books Onlineをあさってみただけの状況ですが、とりあえずここで情報提供を呼びかけようとし、先に書いたPASSJのDevMLに、上記に書いた状況をまとめて投げてみました。[詳細]

とはいうものの、そのまま情報提供を待っているだけではただの「教えてクン」なので、思いつく限りのことをしなければ…

思いついたのはEnterpriseManagerを起動して、IDENTITY情報が得られる画面があったかどうかを確認することでした。
案の定、テーブルのプロパティからカラムの情報を見ると、きっちりとIDENTITY情報があったので、これを取得できれば問題は解決すると思われます。

ここで、プロファイラの登場です。

プロファイラはSQL Serverに流れるトラフィックをトレースするためのソフトウェアで、必要な部分を切り取ってリスト化するというモノです。
利用用途としては、
プログラムが正しいクエリを作成しているかを確認
パフォーマンスが悪いクエリの検索
デッドロックの原因の特定
ストアド プロシージャのパフォーマンスの監視
などといったところが上げられます。
が、CAMUSは便利なウラコマンド(BooksOnlineに載っていないプロシージャなど)を探すために使っているということが多いです。(^^;)
コイツはSQL Serverをインストールしたのであれば、大概勝手についてくるはずです。ご確認を。

こいつのトレース結果からIDENTITY情報の得方がわかるはず。
案の定、判りました。(^^;)

sp_MShelpcolumns N'dbo.jobs', null, 'id', 1

コイツを実行すると、第1引数に指定したテーブルの絡む情報を得ることができます。
そのうち、col_identity が 1ならば、identity、0ならばidentityでないということが判りました。

こいつを使えばできそうです。
というわけで、先に投げたDevMLの返信で、上記の調査結果を報告しました。[詳細]

Step3 情報がよせられる
松本さまより、たにぐちさまのBlogに情報があるとの情報をいただきました。[こちら]
さらにsp_helpをみたら、IDENTITY情報があったよとの情報もおがわみつぎさまからいただきました。

どうやら、IDENTITY列であるかどうかを判断するには、4パターンあるようです。
syscolumnsテーブルcolstat列(smallint型)の1ビット目で判断
sp_MShelpcolumns実行で得られる結果セットより、col_identityの値で判断
syscolumnsテーブルstatus列の値で判断
sp_helpを使う

ここで「?」と思ったのが、最初と3番目の方法です。
最初の方法は仕方ないのです。BooksOnlineでも「内部使用のみ。」という記述がされていたので、公開されていない方法だと考え、触れませんでした。
アレ?と思ったのは3番目の方法。
BooksOnlineではこう書かれています。
------------------------------------------------------------------
列またはパラメータのプロパティを説明するビットマップ。
0x08 = NULL 入力を許可する列。
0x10 = varchar 型または varbinary 型の列が追加されたとき、ANSI 埋め込みが効果的です。varchar 型の列の場合、後続する空白が保存され、varbinary 型の列の場合、後続する 0 が保存されます。
0x40 = OUTPUT パラメータ
0x80 = ID 列

------------------------------------------------------------------
松本さん曰く、0x80だとidentityだとのことですので、BooksOnlineの記述を鵜呑みにしてしまった私には、まさかこれが…とは思いませんでした。

Step4 別のお役立ち情報も寄せられる
BooksOnlineの記述(日本語訳)に誤訳があるとのことで、河端さまがMSにフィードバックしてくださいました。[フィードバック内容]
おまけにフィードバックの仕方と、最新版のBooksOnlineだと、BooksOnlineからダイレクトにフィードバックができるよということも教えていただきました。[その詳細]

 → [DB関連INDEX]
昨日はWebデザイナ~まがいのお仕事をしていました。
「まがい」というのはそれが本職ではないから「まがい」なのです。(^^;)

そしてタブ用の画像を結構たくさん作っていました。
アクティブ用と非アクティブ用の2種類の下地画像を用意し、その上に文字やアイコンをぺたぺた張っていっては別名で保存…という作業をしていました。

一通りその作業が終わり、HTMLに反映し、実際にリンクを張ってクリッククリック…の挙動確認をしてみたら…

なにやらタブが微妙にピコピコゆれる

ぢゃないですか。
疲れてるから目の錯覚なのかなぁ…?
メガネのメンテナンスをしてないから視界がおかしいせいかなぁ…?
そう思って、目のいい人にも確認してもらっても

やっぱりタブが微妙にピコピコゆれる

んんん???
アクティブ用画像と非アクティブ用画像のサイズを比べてみる。

アクティブ用画像左1ドット分、列が足りひんやんけー!!!

…というわけでアクティブ用画像を作り直しです。(T_T)
一昨日のボケ加減は昨日も健在ですた。がおー…

2004/06/18 Add.
昨日帰り際に更新したつもりが下書き保存だった。(爆)
これもボケっとなスパイラルぢゃないかー!
2004/06/16のBlog
今日はなんだかぼけーっと過ごした1日でした。
ぼけーっとしているからこそしてしまう、ヘンな行動もあったわけでして…。

で、また、家に帰ってからもやってしまいました。

紙おむつを洗濯機に入れて洗ってしまいました~!(T_T)

ウワサには聞いていたのですが、紙おむつの中のモノが飛び出してきて、ゼリー状の粒粒がびっしりと…それはもうびっしりと洗濯物についておりました。
ごみポケットにもそのゼリー状の粒粒がぎゅうぎゅう詰めに入っていて、見たこともないぐらいパンパンに膨れ上がっていました。

仕方ない…。もう一回洗濯機まわすか…。夜遅くにごめんなさい、下の階のおじいちゃん。(CAMUS家は賃貸マンション)
ある程度、洗濯物をふりふりしてゼリー状の粒粒を落としてから、もう一度洗い。
終わってからチェックしてみたらまだダメそうなので、もう一度水洗い…。

ん???
なんか忘れている…。

…また紙パンツ取り出さんと洗ってるやんけーーーー!!!

もう、ここまで来るとただのアホとおりこしてしまっていますね…。(泣)
*BRASSERIE PER TUTTI*のトゥッティさまがお記になったコルドンネグロ ブリュットのトラックバックです。

CAMUSは大学時代、スペイン料理のレストランでアルバイトをしていました。
週に1~2回フラメンコライブのあることが売りのお店でしたが、味もなかなかおいしいと、リピータの多い店でした。
今は、もうそのお店は残念ながらないのですが…。
…残念。本当に残念。たまにそこのパエジャが無性に食べたくなるんだけど…。でも、つてがあるので、まったく食べられないわけではない。(^^;) でもどこで食べられるか、それはナ・イ・ショ♪

話を戻します。(^^;)

そのスペイン料理のお店は、比較的スペイン産のワインを多めに取り揃えていました。
フルボトルで2000円台から10000円台まで、赤・白・ロゼ・スパークリング、それなりにそろっていました。
その中に、当然トラックバックもとのコルドン・ネグロも含まれていました。

このワイン、すっきりしておいしいのですが、発泡性がきついという特徴があるため、かなりコルクが硬いのであけづらいんです。
しかも、あけようとする時にほんの少しでも気を抜くと、あっという間に

コルクロケット発射っ!
ちゅどーーーん!!!

という目にあってしまう、凶器にもなりうる恐ろしいワインだったりもします。(^^;)

…さあ、お膳立ては終了デス。
CAMUSが何をやったのか、勘のいい方はお気づきでしょう。
勘の悪い方でも「あ~あ」ということをやったに違いないとお気づきでしょう。

ええ、やってしまいました。
コルク飛ばし。
しかも、手だけでボトルを抱えてあけてしまったので、コルクだけでなく、

ボトルごと飛んでってしまいましたよ~~~。

しかも、

コルクとボトルは店の端から端まで飛びました~~~~!

さらに、

お客様の目の前でやっちまいました~~~~~~!

…ああ、恥ずかしかった…。(T_T)
幸い、お客様に怪我はもちろん、ワインかぶりなどの被害はありませんでした。

青い日の思い出でした。(_o_)
【2005/05/23 追記】
jinさまの■TBカフェ:わたしのアルバイト体験記にも参戦…。
先ほど、typo(タイプミスのことです)を後輩に指摘されました。

DATETO

と書かなければならないのに、

DATET

と書いてしまっていたのでした。

直そうと、体斜めのままボケらーっとしながらタッチタイピングで適当にキーを押し、更新しようとしたのですが、よく見るとなにやらフォントが変。

DATET0

んん??? よ~く見る。
げ、O(オー)と0(ゼロ)を間違えているでわないか。

キーボードをよく見ると似たような位置にあるじゃないですか。
注意:CAMUS使用のキーボードはASCIIキーボードです。

「そんなわかりにくいtypoはかんべんですぅ~~~」

と、後輩が叫ぶのも無理はない。(T_T)
私だってそのままだったらわからんわぃ~。

教訓:タッチタイピングをするときにはキーボードに体をまっすぐ向けましょう。
2004/06/15のBlog
Doblog新機能の絵文字で遊んでみましたの第2段です。

絵文字でフォント作って何かを書いてみます。
ちょっとわかりにくくしていますが、何が書いてあるかあててくださいませ~。

まず、第1問目
マグさまリクエスト「アルファベット&数字バージョン」
書いてある文字とその意味をお答えくださいませ~。
ヒントはパルモさまのこの記事です♪










第2問目
w_interfaseさまリクエスト「日本語バージョン」
ヒントは、まぁ関西人ということで定番のコレ。(^^;)