開業 1989年 江戸川区西葛西 猫の手 (ITコンサルタント) 代表 高室(たかむろ)
|
 |
Apple, Micorosoft, Webツール, お知らせ, フリーソフト, ブラウザ, 仕事術, 生活術, 代行、豆知識, 温泉、旅、結婚式などなど
もろもろの情報を流しています。
面白くて愉快なこと、不条理なこと、美味しいもの、美しいもの、呆れてバカバカしいこと、糞真面目に追求して取り上げています。
日々の日常の煩わしい悩みの相談などお請けしています。
よろず困った事がおきましたら連絡してください。代行もしています。 お役に立てると思います。
|
専門分野:システム開発・導入, ITコンサルティング・企画
職 種:ITコンサルティング・プロデューサー
強み、特徴:コンピューターネットワークシステムの設計、施工、保守及び管理
営業エリア:全国
所 在 地:東京都江戸川区西葛西
猫の手 代表 高室(「たかむろ」)
経歴とプロフイール。 http://www.takamuro.com/blog/prof/
|
猫の手へのお問い合わせは、氏名、電話、郵便番号、住所、会社名、部署名、内容を記載の上、下記問い合わせメールよりメールをお送りください。
(※個人の方は会社名・部署名は不要です。) 問い合わせメールはこちらです。⇒クリック
|
|
|
|
|
|
| CSVデータをMySqlへ一括登録するCGIをPerlで作成 |
昨年WebサイトのCGI部分を請け負った会社から、 顧客情報CSVデータをMySqlへ一括登録するCGIをPerlで作成して欲しいと相談された。
現在、自社の取扱い製品に関する情報を独自のメルマガにして顧客に送信しているが、購読希望者は、Webから自らの責任で購読登録することが原則になっている。
ところが、営業が顧客周りをしたときに、顧客先担当者から登録の代行を頼まれることが多い。
その場合、営業支援の女の子が、営業マンが社に持ち帰った顧客のリストから、一件づつ拾って登録している。
ところが、悪筆で解読が難解だったり、誤字があったりして、そのたびに担当営業に確認したり、顧客先に問い合せたりなど、この作業が結構煩わしい。
そこで、データの正当性チェックも含めて、登録を一括で出来るCGIを作ってもらいたいと言う依頼を受けた。
作業工数は一日(7時間)を想定、27日にサーバーにアップして終了の予定。

猫の手 高室(たかむろ)
|
個人的な覚書
5.8系では先頭に use encoding 'euc-jp'としてencodingパッケージにより、スクリプトファイルの自体のエンコーディングが指定ができるが(というか指定しないとutf8のファイルだと思われてしまう)、perlバージョンがjperlの場合use encodingするとエラーになる(5.8以前なのでこのパッケージを持っていない)。これを回避しつつスクリプトを共有する方法。
encoding プラグマは,Perl-5.6 や Jperl には存在しないので,普通に encoding プラグマを使ったスクリプトを実行しようとすると,以下のようなエラーになります。
Can't locate encoding.pm in @INC.
BEGIN failed--compilation aborted at sample.perl line 3.
以下のように,BEGIN ブロックを利用して, Perl のバージョン検査を行ってから require & import を行うようにすると, encoding プラグマの存在しない Perl でも動くスクリプトが書けます.
use English qw/ $PERL_VERSION /;
BEGIN {
if( $PERL_VERSION > 5.008 ){
require encoding;
encoding->import( "euc-jp" );
}
}
日本語の正規表現を使っているなどの理由で, Perl-5.8.x または Jperl だけを使いたい場合は以下のように書きます.
use English qw/ $PERL_VERSION /;
BEGIN {
if( $PERL_VERSION > 5.008 ){
require encoding;
encoding->import( "euc-jp" );
} elsif( split( //, "字" ) == 1 ){
require I18N::Japanese;
I18N::Japanese->import();
} else {
die "Your Perl does not support Japanese characters.";
}
}
猫の手 高室(たかむろ)
|
忘れたくないので覚書。
DataRequestで扱うことのできるリクエスト
DataRequestオブジェクトには、情報の取得を行うリクエストだけではなく、情報を更新するリクエストも格納することができます。DataRequestオブジェクトのメソッドでそれぞれのリクエストを作成することができます。以下にDataRequestオブジェクトのメソッドと、作成されるリクエストの対応を表で示します。
リクエストを作成するためのDataRequestオブジェクトの主なメソッド| メソッド名 | 概要 |
| newFetchPersonRequest | 個人の情報を取得するリクエストを作成する
| | newFetchPeopleRequest | 友達の情報を取得するリクエストを作成する
| | newFetchActivitiesRequest | アクティビティを取得するリクエストを作成する | | newFetchPersonAppDataRequest | 個人のアプリケーションデータを取得するリクエストを作成する
| | newRemovePersonAppDataRequest | 個人のアプリケーションデータを削除するリクエストを作成する
| | newUpdatePersonAppDataRequest | 個人のアプリケーションデータを格納するリクエストを作成する | | newFetchAlbumsRequest | 個人のアルバムデータを取得するリクエストを作成する(OpenSocial v0.9より追加。mixiアプリでは使用可能) | | newFetchMediaItemsRequest | アルバム内のメディアデータを取得するリクエストを作成する(OpenSocial v0.9より追加。mixiアプリでは使用可能) | | mixi.newFetchCommunityRequest | コミュニティ情報を取得するリクエストを作成する関数(mixi専用) |
末尾に記したmixi.newFetchCommunityRequest関数は、DataRequestオブジェクトのメソッドではなく、mixiが独自に拡張したものですが、リクエストの流れとしては他のものと同じですので、ここに記します。
また、OpenSocial v0.9より追加されたアルバム関連のメソッドは、取得以外にも作成、更新、削除を行うためのリクエストを作成するメソッドが準備されています。
これらのうち、最初に挙げたnewFetchPersonRequestとnewFetchPeopleRequestが、ソーシャル情報を取得するためのリクエストを作成するためのメソッドです。
ソーシャル情報取得の流れ
ソーシャル情報取得の流れを確認しましょう。
以下の手順で、OpenSocialアプリケーションからソーシャル情報を取得することができます。
DataRequestオブジェクトを使った、情報取得のサンプルコード
// 1.DataRequestオブジェクトの作成
var dataRequest = opensocial.newDataRequest();
// 2.リクエストの作成
var requestObject = dataRequest.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER);
// 3.DataRequestオブジェクトへのリクエストの追加
dataRequest.add(requestObject, "viewer");
// 4.DataRequestオブジェクトの送信
dataRequest.send(
// 5.リクエストの結果をコールバック関数で処理
function(response) {
var viewer = response.get('viewer').getData();
var msg = 'Hello ' + viewer.getDisplayName();
}
);
1. DataRequestオブジェクトの作成
ソーシャル情報のリクエストの基点となるDataRequestオブジェクトはopensocial.newDataRequest関数で作成することができます。
2. リクエストの作成
DataRequestオブジェクトの中に格納するリクエストは先ほど記したDataRequestオブジェクトのメソッド群で作成します。
3. DataRequestオブジェクトへのリクエストの追加
2.で作成したリクエストを、DataRequestオブジェクトのaddメソッドで追加します。
この際、リクエストごとに任意の名前を付けることができます。
ここで付けた名前は、OpenSocialコンテナからレスポンスが返ってきた時に使用します。
4. DataRequestオブジェクトの送信
DataRequestオブジェクトのsendメソッドを使って、OpenSocialコンテナに対し、情報のリクエストを行います。
sendメソッドの引数にはコールバック関数を指定します。
5. リクエストの結果をコールバック関数で処理
OpenSocialコンテナでリクエストが処理されると、sendメソッドの引数に指定したコールバック関数に結果がDataResponseというオブジェクトとして渡されます。
このDataResponseオブジェクトには、DataRequestオブジェクトに指定したリクエストに対応する結果がResponseItemというオブジェクトとして複数格納されており、それぞれは3.でリクエストごとに指定した名前で呼び出すことができます。
このうち、2.のリクエストの作成と、5.のコールバック関数での処理の部分が、リクエストの種類ごとに異なっていきます。
以上がDataRequestオブジェクトを使ったリクエストの大まかな流れの覚書です。
猫の手 高室(たかむろ)
|
[EXCEL]日付の表示形式
| 表示形式 | 入力データ | 表示結果 | 備考 | | yyyy/m/d | 2009/2/16 | 2009/2/16 | | | yyyy/mm/dd | 2009/2/16 | 2009/02/16 | 月、日は2桁 | | yyyy/mm/d ddd | 2009/2/16 | 2009/02/16 Mon | | | yyyy/mm/d (ddd) | 2009/2/16 | 2009/02/16 (Mon) | | | yyyy/m/d dddd | 2009/2/16 | 2009/2/16 Monday | | | yyyy"年"m"月"d"日" | 2009/2/16 | 2009年2月16日 | | | ggge"年"m"月"d"日" | 2009/2/16 | 平成19年2月16日 | 元号表記 | | m"月"d"日" | 2009/2/16 | 2月16日 | | | m"月"d"日" aaa | 2009/2/16 | 2月16日 月 | | | m"月"d"日" (aaa) | 2009/2/16 | 2月16日 (月) | | | m"月"d"日" aaaa | 2009/2/16 | 2月16日 月曜日 | |
[EXCEL]数値の表示形式
Excelで予め定義されている表示形式だけでなく、ユーザーが独自に表示形式を定義して利用することもできます。例えば数値に単位をつけて表示したり(千円単位で表示とか)、日付に曜日をつけたり、特定の文字列をつけたりできます。
数値についてまとめてみます。#,##0, の使い方は結構便利です。
| 表示形式 | 入力データ | 表示結果 | 備考 | | #,##0 | 12300 | 12,300 | | | 0 | 0 | 「0」の場合「0」を表示 | | #,### | 12300 | 12,300 | | | 0 | 空白 | 「0」の場合、空白 | | 0.000 | 9.8 | 9.800 | 小数点以下は3桁 | | 9.8765 | 9.877 | 小数点の桁数以下を四捨五入 | | #.### | 9.8 | 9.8 | | | 9.8765 | 9.877 | 小数点の指定桁数以下を四捨五入 | | #,##0, | 12300000 | 12,300 | 1000で割って小数点以下を四捨五入 | | #,##0"人" | 12000 | 12,000人 | |
| "第"#"会議室" | 2 | 第2会議室 | |
[EXCEL]文字列の表示形式
Excelで予め定義されている表示形式だけでなく、ユーザーが独自に表示形式を定義して利用することもできます。例えば数値に単位をつけて表示したり(千円単位で表示とか)、日付に曜日をつけたり、特定の文字列をつけたりできます。
| 表示形式 | 入力データ | 表示結果 | 備考 | | @"事業所" | 江戸川区西葛西 | 江戸川区西葛西 | | | "タイトル:"@ | 猫の手 | タイトル:猫の手 | |
猫の手 高室(たかむろ)
|
| Excelのセルのアポストロフィーを一括して取る。 |
エクセルのセルに入っている、'100とか、'日本の ' を一括して取るには次のようにする。
1.何も入っていないセルを選んで、コピーする。
2.アポストロフィーを取りたいセルを選んで、「形式を選択して貼り付け」を実行する。
3.「加算」を選んで貼り付ける。
「減算」でもよい。 ただし、「乗算」はだめ。 セルの中が数字だったら「0」になってしまう。
猫の手 高室(たかむろ) |
perl側からPHPに引数を渡して呼び出し、PHP側で引数をもとに値を作成して返すようにする方法を調べてみました。
perlでPHPを呼ぶ方法にsystem関数がありますが、これだと戻り値が実行OK・NGのみになってしまい使えませんでした。
なんとか戻り値が取れないか調べましたところ、他にも方法もあると思いますが、以下のようにしたら、一応なんとかうまくいきました。
perl側プログラム
system関数ではなく「`」で囲む方法で実行しました。
#!/usr/bin/perl
my $ans = `/usr/local/php5/bin/php -f test.php5 aaaa bbbb`;
print("return:" . $ans);
PHP側プログラム
$argvから引数を受け取り結果を「echo」で出力します。
「echo」で出力すると、呼び出し元のperlの変数に値を返すことができます。
< ?php
echo $argv[1] . "&" . $argv[2];
? >
猫の手 高室(たかむろ) |
■ 画像を隙間無く並べるには
画像を並べる際に、画像と画像の間の隙間を無くすには、 < img > タグの > と < の間にスペースや空白を空けないようにします。
どうしても改行するなら、img と src の間など > と < の間以外の箇所で改行しましょう。
< img src="image1.gif" > < img
src="image2.gif" > < img
src="image3.gif" > < img
src="image4.gif" > <
■ 画像に代替テキストを設定するには
テキストブラウザや、音声読み上げブラウザなど、画像を表示できないブラウザのために、< img > タグには alt 属性を指定しましょう。
(HTML4.01 では の alt は必須属性として定義されています。)
alt 属性には画像の説明ではなく、テキストブラウザで表示された時に画像の『代わりとなる』文字を指定します。
○○ページへ < a href="next.html" > < img src="go.gif" alt="Go!!" width=20 height=20 border=0 > < /a >
デザインのためだけの画像には、alt="" と指定しておけばよいようです。
これを怠るとテキストブラウザで [画像] と表示されてしまったりします。
< img src="xxx.gif" alt="" width=20 height=20 >
■画像にマウスポインタを載せた際に、代替文字がツールチップに表示されるのを防ぐ方法。
タイポグラフィーなど、代替文字をツールチップに表示させると煩く感じてしまう場合に活用できます。
IEは、alt属性値に指定された文字列も、title属性値に指定された文字列も、どちらもツールチップに表示します。
しかし、alt属性とtitle属性が両方指定されている場合には、title属性が優先され、alt属性は考慮されなくなります。
ですから、title属性を記述して属性値を空(カラ)にすれば、(alt属性に値が記述されていても)ツールチップは表示されなくなります。
IE以外でも、画像にツールチップを表示させたい場合は、title属性を記述して属性値に文字列を指定すれば、IE以外のブラウザでも(画像の上にマウスポインタを載せた際に)ツールチップを表示させることができます。
※少なくとも、Firefox・Safari・Opera・Google Chromeではツールチップに表示されます。
猫の手 高室(たかむろ)
|
| Google Buzz」をGmailの受信トレイから排除する方法 |
Google BuzzというこのソーシャルネットワークサービスはGmailをプラットフォームとして、コメントや画像・動画を共有し合えるというもの。
TwitterやFacebookを別途使わずとも同様のコミュニケーションをGmail上で一元化できるという点で画期的といえますが、一方で、「ウザいメッセージがGmailにどんどん入ってきて、メールツールとしてはかえってGmailが使いづらくなりそう...」という方もいらっしゃるかもしれませんね。
そこで、こちらではGoogle BuzzをGmailから排除する方法をご紹介しましょう。
そもそもBuzzのメッセージはGmailのクエリ「label:buzz」にマッチする仕組みになっています。
なので、フィルタ機能を使い、BuzzからのメッセージをGmailの受信トレイに入ってこないようにすればよいわけです。
具体的な方法はこんな具合。
まず、Gmailの検索ボックス横にある「フィルタを作成(Create a filter)」をクリックします。
フィルタ作成画面で「キーワード(Has words)」に「label:buzz」と入力し、「次のステップ(Next Step)」をクリックしましょう。
最後に「受信トレイをスキップ(アーカイブする)(Skip the Inbox)」にチェックを入れて、「フィルタの作成(Create Filter)」をクリックすれば設定完了。
BuzzからのメッセージをGmaiの受信トレイlから排除できます。
Buzzそのものを完全にオフする際は、Gmail画面の一番下に表示されている「バズをOFFにする(Turn Off Buzz)」をクリックすればOKです。
まずは、ご自身のGmailにGoogle Buzzがやってきたことを確認し、しばらく付き合ってみて、「やっぱりウルサイ!」となったら、この操作をやってみてください。
猫の手 高室(たかむろ) |
| 右クリックの禁止は簡単。禁止の回避も簡単。 ならば、右クリックの禁止は意味がない? |
※右クリックを禁止してもソースは見える
Windows用の主なブラウザでは、右クリックするとメニューが表示されますね。
このメニューのことを「コンテキストメニュー」と呼びます。(分かりやすく「右クリックメニュー」と呼ばれることもあります。)
たまに、このコンテキストメニューの表示を禁止(抑制)しているページがあります。
ブラウザ上で右クリックすると、「右クリックはできません」とか「ソースは見れません」とか、そんなメッセージが表示されて、コンテキストメニューが表示されないようになっています。 よほどソースに見られたくない情報があるのでしょう。
ブラウザ上での右クリック(=コンテキストメニューの表示)を禁止するのは簡単です。
ほんのちょっとの記述をHTMLに加えるだけで実現できます。 そして、それと同じくらい、「右クリック禁止」の回避も簡単です。
つまり、閲覧者にHTMLソースを見られないようにするのは無理です。
では、右クリックを禁止する方法と、右クリックの禁止を回避する方法をご紹介致します。
※正確には、コンテキストメニューの表示を禁止する方法と、その禁止を回避する方法です。
右クリック(コンテキストメニューの表示)を禁止するには、右クリックすることでコンテキストメニューが表示されるのを抑制するには、HTMLソースのbody要素に次のように書き加えるだけです。
※キーボード右下の「アプリケーションキー」を押すことによるコンテキストメニューの表示も抑制されます。
<body oncontextmenu="return false;">
bodyタグに「oncontextmenu」(=On ContextMenu)というイベントを記述しています。
その値に「return false;」と記述します。 たったこれだけで、コンテキストメニューは表示されなくなります。
このソースだと、右クリックしても何も反応しなくなります。
※JavaScriptが有効な環境で、oncontextmenuイベントをサポートしているブラウザで閲覧している場合のみ無反応ではなく、エラーメッセージを表示させたい
次のように記述します。
<body oncontextmenu="alert('メニューは表示されませんよ〜。'); return false;">
こうすると、右クリックしたとき(=コンテキストメニューを表示しようとしたとき)にエラーメッセージが表示されます。
このように、コンテキストメニューの表示を禁止するのは、非常に簡単です。
ただ、この禁止を回避することもとても簡単にできます。
1. 右クリックの禁止を回避するには
コンテキストメニューの表示が禁止されているページで、その禁止を回避することは簡単です。
■ 1.サポートしていないブラウザを使う
oncontextmenuイベントをサポートしていないブラウザを使って閲覧すれば、そもそも「禁止する」という指定自体が解釈されませんので、特別な操作をすることなく、コンテキストメニューを表示できます。
■ 2. JavaScriptを無効にする
oncontextmenuイベントは、JavaScriptの機能です。ですから、JavaScriptを一時的に無効にすれば、コンテキストメニューは表示できます。
ソースを閲覧できればよいなら、コンテキストメニューが表示できなくても、とにかくソースを閲覧できれば良いだけなら、次のような方法もあります。
■ 3. ブラウザのメニューを使う
ブラウザのメニューバー(ウインドウ上部に「ファイル」・「編集」・「表示」…などと並んでいる箇所)にあるメニューから「ソースの表示」を選べば、ソースは読めます。
フレームが使われている場合は、フレームを定義しているHTMLのソースしか見えません。しかし、そのHTMLソースから目的のフレームのHTMLファイル名を調べて、そのページを直接表示させれば、メニューからソースを表示できます。
■ 4. ショートカットキーを使う
FirefoxなどMozilla系なら、[CTRL]+[U]キーを押すことでソースを表示できます。
■ 5. ページを保存する
ブラウザのメニューから「名前を付けてページを保存」などを選べば、表示しているHTMLをHDDに保存することができます。そうすれば、HDD内にあるHTMLファイルを適当なテキストエディタ(メモ帳でも可)で開けば、ソースを閲覧できます。
FirefoxなどMozilla系なら、ショートカットキー[CTRL]+[S]を使っても保存できます。
他にもいくつか方法がありますが、「1」や「2」を知っていれば十分でしょう。
右クリックの禁止は意味がない? このように簡単に回避できますから、右クリックを禁止することに意味はありません。
アクセス者のブラウザ操作を面倒にするだけです。 右クリックを禁止するのは、やめておきましょう。
猫の手 高室(たかむろ) |
お断り
これは、昨年の2009年に旧Blogに掲載していたのですが、旧blogを現Blogへの移行に伴い、整理する必要上再掲載しました。
今でもこの方法が有効なのかどうかは定かではありません。
WebメールとしてGmailを使っている方は多いかと思います。
「読み込み・画面切り替え」の遅さにストレスを感じるときはありませんか?
Yahooメールをはじめとした他のWebメールと比べ、機能面で優位性をもつGmailの唯一の大きな欠点といえるでしょう。
Gmailが招待制の頃はこのようなストレスを全く感じずに使用していたのですが、招待無しでも利用できるようになってから、ユーザー数が増え、サーバーに大きな負荷がかかり、結果として重くなっているのでしょうか。
詳細は以下から。
Gmailが遅い(重い)と思ったらやってみる4つの設定変更。
1.チャット機能を無効にする。
Gmailには標準でGoogleTalkを利用したチャット機能が用意されていますのでこの機能をオフにします。
設定
ログイン後 ⇒ 下部メニューの”通常の HTML 形式 (チャット機能なし) ” を 「クリック」するだけです。
2.ウェブ クリップを無効にする。
デフォルトではメッセージ一覧の上にニュースやGmailのヒントが表示されますがこの機能をオフにします。
設定
Gmailの”設定” ⇒ ウェブ クリップ ⇒ ”ウェブ クリップを受信トレイの上に表示”のチェックを外します。
3.メール本文の抜粋をオフにする。
デフォルトではメッセージの件名横に本文の一部が薄い文字で表示されるようになっていますが、それを無効にし件名だけの表示にします。
設定
設定 ⇒ 全般 ⇒ 「メール本文の抜粋」部分の”本文の抜粋なし "- 件名のみ表示”にチェックを入れます
4.不要なGreasemonkeyスクリプトを無効にする。
FirefoxユーザーにはおなじみのGreasemonkeyスクリプトは、Gmailに対応したものも多く、ついあれこれと導入してしまいがちです
それらの中から必要の無いものを捨ててしまいましょう。
何はともあれ、Gmailのストレスを少しでも軽減したいという方には、この方法を使うと効果的です。
また、「Better Gmail」などの便利なスクリプト詰め合わせをFirefoxの拡張機能として導入している場合は、そのオプション設定から使わないもののチェックを外しておくとよいでしょう。
実際にこの方法を使ってみることで、劇的にとは言いませんが、以前と比べて「読み込み・画面切り替え」の遅さが改善されたと実感しました。
それでもまだ重いと感じる方は、機能面は多少犠牲になりますが、思い切ってメール表示形式を「簡易HTML」形式に変更するか、GMail の画面の右上にある「旧バージョン」リンク・ボタンをお試しください。
「旧バージョン」で状況が改善された場合、毎回「旧バージョン」のリンクを押すのは面倒なので、リンクを↓のように ?ui=1 を追加しましょう。
http://mail.google.com/mail/?ui=1
これは、昨年の2009年に旧Blogに掲載したもんを再掲したものです
猫の手 高室(たかむろ) |
|
|