ASP Function 値を返すサブプロシージャ
頻繁に使うプログラムはサブプロシージャとしてFunctionを使います。
サブプロシージャとしておけば、今後のenhanceやdebugの時にラクですね。
例えば、消費税を含んだ値段を表示してみましょう。
(code)
Response.write "税別価格:"& price & "円"
Response.write "税込価格:"& calctax(price) & "円"
Function calctax(x)
calctax = FormatNumber(Round(x * 1.05, 0), 0)
End Fuction
(display)
税別価格:1000円
税込価格:1,050円
加工した値を返すには、「Function名=計算」とします。
なお、Round で、小数点以下を四捨五入、
FormatNumber で、3桁ごとにカンマを入れてます。
宿日直手当 - 1回4000円まで非課税
宿日直手当は、もらっても所得として課税されないという。
電話番など、ただひたすら待つだけの時に使えそう。
また、宿日直勤務を実施するには、労働基準監督署に申請用紙を提出して許可をもらう必要があるとのこと。
さてそこで、労働基準監督署へ行ってきました。
実際には、労働基準監督署の人はこうは言わなかったけれども、
「本当に必要なの?
宿日直とか言っていつもと同じような仕事をさせようとしてるんじゃないの?
本当は宿日直なんて必要ないでしょ。」
と言わんばかりの対応で、感じが悪かったのですが、ここでは宿日直の説明をすることが目的なので、わかりやすいように問答形式にまとめてみました。
宿日直勤務とは、そもそもなんですか?
- 通常の業務とは別に、夜間や休日に従業員を拘束するものとお考えください。
「通常の業務とは別」ということですが、働く時間帯が異なるということでしょうか?
- いいえ違います。それだけではありません。
ほとんど労働を必要としない業務をする場合に限ります。
なるほど、簡単に言ってしまえば、働くんだけど、働いてはならないんですね。
でも、働くこととの線引きはどのように決まっているんですか?
- 明確な線引きはされていません。
例えば、内容としては、定期的巡視、緊急の文書または電話の受け取り、非常事態発生の予防などが相当します。
宿直の場合の定期的巡視も、夜間、深夜、朝の3回程度でしょう。しかも、1回にかかる時間が短い場合に限られます。
また、病院などでは、通常の電話番号と、緊急の電話番号を用意しておき、宿直中には緊急の電話しか鳴らないようにするなどが求められます。
宿直で寝ている間に緊急以外の電話で起こされることのないようにするためです。また、緊急電話の後、朝まで働いたとなると、それは宿直としては認められません。
週40時間、1日8時間という法定労働時間について定めた労働基準法第32条の規定にかかわらず、労働者を使用することができると定めた労働基準法施行規則第23条であることを理解してください。
ですから、メールの確認をする場合も、これらの例を目安にしてください。それと、自宅で行う場合は宿日直として認められませんから、必ず会社に来ていることも必要です。
なるほど、具体的に回数や時間は決まっていないんですね。
宿日直を担当しても、精神的・体力的な消耗がなく、個人の自由な時間も確保されればよいんですね。
- はい、そうです。宿直は1人週1回まで、日直は1人月に1回までと決まってますから、そこは注意しておいてください。
ところで、賃金はいくらにしたらよいかご存知ですか?
賃金の取り決めもあるんですか?
- はい、所定労働時間働いた場合の全従業員の平均賃金の3分の1以上となっています。これは宿日直1回についての賃金です。ですから、宿日直の 時間が、例え1時間でも、8時間でも同額です。
ですから、給料の高い人にとっては安いものになるでしょうし、安い人にとっては割りのよい金額になる可能性があります。
宿日直を始めるにはどうしたらいいですか?
- 労働基準監督署の許可が必要です。まずは書類を提出していただきます。それから監査として、お宅の事務所にお伺いいたします。
監査を受ける前に準備しておくことはありますか?
- まず、就労規則の変更になります。従業員の承諾を得て変更しておいてください。
宿直の場合は、寝られる場所と寝具が必要です。
それから、宿日直中に発生した業務について、件数、時間、内容など報告書を作成しておいてください。
よくわかりました。ありがとうございました。
まとめ:宿日直を導入する場合は、
・通常業務が発生しないような環境を整える。
・業務内容、回数、時間は限られたものとする。
・宿日直手当は、全従業員の日給の平均の1/3とする。
・就業規則の変更が必要。
ということです。
それと、監査があるので、レポートを常日頃から作成しておくことがポイントです。
ワンピース0巻 100万部 増刷
ワンピースの映画を見に来た人、先着150万名に非売品の0巻を配布したという。
その後、その非売品のはずだった0巻が100万部販売されることになったらしい。
元々販売予定の商品を、数量限定の非売品として集客に利用。
これで集客効果が期待できる。
次に、数量限定の非売品ということで、何とかお金を出してでも手に入れたい人が出てくるので、非売品だったものを販売開始。
これで、元々販売予定の商品も売れることが期待できる。
さらに、事前にネットで話題の高さを確認して増刷すれば、在庫リスクも調整できる。
私の勝手な、何の根拠のない推測では、当初からの計画通りではなかったのだろうか、と思う。
話題づくりとしては成功したんじゃないでしょうか。
ただ、今後、これを真似た手法が他でも見られそうな気が。
SQL Server クラスターインデックス と ノンクラスターインデックス
クラスターインデックス と ノンクラスターインデックス の違いは、物理的にデータが並べ替えられるかどうかの違いです。
クラスターインデックスは、インデックス順とデータの並び順が同じ。
ノンクラスターインデックスは、インデックス順とデータの並び順は同じではない。
クラスターインデックスを付けたらよいのは、
・検索で頻繁に使われる列
・100から200というように、範囲指定で検索される列
・データ種の少ない列
といったところでしょう。
あと、クラスターインデックスの利点は、なんと言ってもインデックスのサイズがほぼゼロと思ってよいので、ディスクサイズの制約がある場合には好都合です。
ありがちなのが、primary key をクラスターインデックスにしてしまうこと。
テーブル作成時に一緒に primary key を付け、次にインデックスを作成する場合、ノンクラスターインデックスしか作成できない。(テーブル1つにクラスターインデックスは1つだけしか作成できないため)
頻繁に検索されるのは primary key が付いた列ではないならば、テーブル作成後に クラスターインデックスを作成してから、primary key を付けよう。
1. create table order (id int not null, customer varchar(100) not null)
テーブルが作成される。まだインデックスも制約もない状態
2. create clustered index ix_order_cust on order (customer)
クラスターインデックスを customer列 につける。
3. alter table order add constraint PK_order primary key (id)
クラスターインデックスが既に存在するため、自動的にノンクラスターインデックスになる。
ただ、クラスターインデックスが付いた列のデータ変更が多い場合には、ディスクアクセスが多くなりすぎてしまうので、要注意。
ツイッター ダイレクトメッセージを利用したツイッタースパム
今朝、こんなメールが届いた。ツイッターのダイレクトメッセージだ。
Hey, I just added you to my Mafia family. You should accept my invitation! :) Click here: http://www.playmobsterworld.com/?platform=twitter&refuid=xxxxx&source=friends_invite_f
「ヘイ、お前を俺のマフィア ファミリーに入れてやったぜ。この誘いに乗りな。ここをクリック http://www.playmobsterworld.com/・・・」
みたいな内容。
送り主は日本人。だがメッセージの内容が気安い英語。そして最後にユニークだと思える数字が含まれたURLが付いている。
「怪しい」
http://www.playmobsterworld.com のサイトを見に行った。
もちろん、「?」以降の文字列は取り除いて。
「MOBSTER WORLD」?
ギャングの世界、ということかな。
「MMORPG」?
massively multiplayer online role playing game。たくさんの人が参加するオンライン・ロール・プレイング・ゲームのことらしい。
「Start a mob family, recruit your friends, and rule the UnderWorld」
ギャングになって、友達を仲間に入れて、そして裏の世界を支配しろ、だって。
「Click to Play Now!」
今すぐクリックしてプレイする、とある。
それにしても、「MOBSTER WORLD」のロゴや「Click to Play Now!」のボタンが荒い。
魅力的なオンライン・ゲームがこの向こうにあるとは思いにくい。
さらに、よーく見ると、小さな文字でこう書いてある。
「クリックすると、・・・あなたは、 Mobster World があなたの友達に招待状を自動送信するために、ツイッターのあなたのアカウントを使ってアクセスすることを許可することになる」と。
怪しいサイトにそんなことを許可するわけにはいかない。
これについては ITmedia News に記事
がある。
「TwitterでスパムDM出回る フォロワーに自動でDM送りつけ
TwitterでスパムDMが出回っている。DMに書かれたURLのページでボタンをクリックすると、同じDMをフォロワーに送り付けるという仕組み。日本のユーザーも被害にあっている。」
迂闊にメールの中のURLはクリックしてはならない、ということですね。
なお、このサイトのページの下に
「Click here if you don't wish to invite your contacts automatically. 」
「許可しない場合はここをクリック」とあるが、結局許可することになってしまうようだ。
SQL Server ストアドプロシージャの実行結果をテーブルに保存する
例えば、sp_lock ストアドプロシージャなどの実行結果から、見たいデータだけを抽出したいと思ったことはないでしょうか。
ストアドプロシージャを実行して数件しか表示されないのであれば、一目で見つけることができますが、数10件、数100件もデータが表示されるとそうはいきません。
そこで、ストアドプロシージャの実行結果をテーブルに保存し、テーブルを select する方法を紹介します。
1) テーブルを作成する。
ここでは一時テーブルを使いますが、普通のパーマネントテーブルでも構いません。
データタイプは、ストアドプロシージャを実行して得られるデータタイプと合わせる必要があります。
create table #splock(spid int,dbid int,objid int,indid int,type varchar(100),resource varchar(100),mode varchar(100), status varchar(100),checktime datetime default getdate())
2) ストアドプロシージャ sp_lock を実行し、結果をテーブルに保存します。
insert into #splock(spid,dbid,objid,indid,type,resource,mode,status) exec sp_lock
3) テーブルをselectします。
select * from #splock where status ='WAIT'
SQL Server ジョブ の実行結果を確認する
SQL Server の ジョブ をたくさん設定されていて、何回も実行されている場合、いちいち Management Studio で結果をチェックするのは考えただけで気が遠くなる。
そこで便利なのが、sp_help_jobhistory ストアドプロシージャ。
sp_help_jobhistory ストアドプロシージャを使えば、実行に失敗したジョブ、長時間実行中だったジョブなどが一発で見つけられる。
なお、このプロシージャは msdb データベースにあるので、注意。
それと、ジョブヒストリが残されていないと確認できないので、消されないようにあらかじめ設定を確認しておく必要がある。
実行に失敗したジョブのログを表示するには、@run_status = 0 を指定する。
use msdb
go
sp_help_jobhistory
@start_run_date = 20020818 -- 実行日をyyyymmdd 形式で指定する
,@run_status = 0 -- 0はステータスが失敗のログ
ジョブを完了するのに2分以上要したジョブを表示するには、@minimum_run_duration を使う。
sp_help_jobhistory
@start_run_date = 20020818 -- 実行日をyyyymmdd 形式で指定する
,@run_status = 1 -- 1はステータスが成功のログ
,@minimum_run_duration =000200 -- 実行時間を hhmmss 形式で指定する。
@run_status の値の意味はこの通り。
--0 失敗
--1 成功
--2 再試行 (ステップのみ)
--3 取り消し
--4 実行中メッセージ
--5 不明
SQL Serverが数十台、ジョブの数が数100個、中には1分毎、3分毎、1時間ごとに実行されているようなジョブもあり、ジョブの延べ実行回数は数千回というケースがある。
この場合、リモートクエリを実行して、結果を得る。
実行した結果をテーブルに保存して、さらにクエリをかけることで簡単に抽出できる。
ASP + Database : オブジェクトがありません。
データベースに接続するASPのプログラムをブラウザで実行すると、下記のようなエラーが表示されます。
【エラーメッセージ】
Microsoft VBScript 実行時エラー エラー '800a01a8'
オブジェクトがありません。: ''
/filename.asp, 行 22
【原因と対処】
Server.CreateObject("ADODB.Recordset") が記述されているか、記述に間違いがないか確認します。
記述されていない場合は、下記のように記述します。
Set rs = Server.CreateObject("ADODB.Recordset")
【備考】
「オブジェクトがありません」というメッセージは、あらかじめ生成しておくべきオブジェクトが生成されていない場合に表示されます。
ですから、データベースに接続するケースに限ったことではありません。
下記の、ファイル システム オブジェクト の1行が記述されていない場合も、同じエラーメッセージが表示されます。
Set fso = Server.CreateObject("Scripting.FileSystemObject")
create object : オブジェクトを生成する という意味。
片山右京 富士山で遭難 そもそも、雪山でのテント 凍えないの?
片山右京、不幸なことではありましたが、励ましの意味を込めて「生還できて良かった」とあえて申し上げます。
右京氏は責任を強く感じ、ご自身を責めているようです。でも、日常においても、厳しい言い方かもしれませんが「自分の身は自分で守る」ことが基本ですから、致し方ありません。
しかも、雪山の登山ですから、プロの冒険家ですら、自分の命を守ることだけでも大変なことだろうと思います。
冬の富士山はヒマラヤ級だとかエベレスト並の厳しさらしいです。
連峰ではないため、さえぎるものがなく、風も大変強いといいいます。
当日は、気温マイナス20℃。風速もマイナス20~30メートルだろう、とのことです。
体感温度は、リンケ式では、風速1メートルにつき1℃下がるといいます。
マイナス20℃で20メートルの風が吹いていたら、マイナス40℃ということになります。
そもそも、雪山でテントで一晩過ごすなんて、寒くて眠ることもできないんじゃないかと思い調べてみました。
Wind of Ridge では、「結構暖かくて快適」とありました。
トムラウシ山遭難でも話題になりましたが、テントの有無が生死を分けるほどの違いがあるようですね。
同ホームページによると、「寒さは「首」と名の付く場所から血液が冷えることで起こる」そうで、その厳しさがうかがい知れます。
飛ばされ方も想像を絶するようです。木の葉のように空中を何10メートルも飛ばされることもあるそうです。
それが今回200メートルも滑落したわけですから、言うに及びません。
一晩2人を暖めながらも、助けをひたすら待つか、助けを求めに行くか、究極の決断であったと思います。
右京の事務所の企画の案内を見つけました。今回の3名の名前が刻まれております。
http://info-fujino.com/event/081115.pdf
(もっと読むなら「電子書籍 販売支援 ウリゾウ」で検索!)



