WEB の最近のブログ記事
自分のブログをシェアしたり、されたときにあまり表示されて欲しくない画像がサムネイルで表示されたりすることがありますが、その画像を意図的に指定する方法があるようです。
OGP (Open Graph Protocol)といわれるものを、<head>~</head>に追加することでできるようで、以下の一行を加えるだけでできます。
<meta property="og:image" content="http://指定したい画像のパス" />
今回、指定した画像はこれ↓
でも、上記だけでは内部的に情報不足で、Facebookにおいては下記6つが必須なようです。
- og:title
- og:type
- og:image
- og:url
- og:site_name
- fb:admins or fb:app_id
<meta property="og:title" content="その記事のタイトル" /> <meta property="og:type" content="blog" /> <meta property="og:image" content="http://指定したい画像のパス" /> <meta property="og:url" content="http://シェアするURL" /> <meta property="og:site_name" content="サイト名" /> <meta property="fb:admins" content="1234567890"/>
最後のfb:adminsの設定でfacebookのユーザID
以下のサイトでは、シェアした際にFacebookが取得する情報をあらかじめ確認をすることや、足らない情報などを表示することができます。
OGP (Open Graph Protocol)については以下のサイトが参考になります。
トラックバック(0)
トラックバックURL:
".htaccess" に記述することにより、外部から要求されたリクエスト URL を書き換えてリダイレクトします。
ファイルの移転、ディレクトリ再編成、サイト移転、更にはアクセス拒否まで絶大な効果を発揮します。
具体的には、外部から要求されたリクエスト URL を Apache の "mod_rewrite" 拡張モジュール(URL書き換えエンジン)を使用し、 正規表現を使って書き換えます。 "Redirect" と異なり、リクエストの URL が実在しなくても転送が可能です。
【注意:サーバーの環境】
Apache1.2 以降で使用可能。
Apache の "httpd.conf" で、 "mod_rewrite" モジュールが利用可能になっている必要があります。 Apache httpd.conf の詳細設定 LoadModule
説明
ディレクティブ
| ディレクティブと書式 | 初期値 | 説明 |
|---|---|---|
| RewriteEngine on/off | off | 書き換えの可否を設定。 |
| RewriteOptions inherit | - | inherit : 現在の設定値を親ディレクトリの設定値から強制的に継承する。 |
| RewriteBase / | / | 書き換えのベースとなるパス(ベースが明白な場合は不要)。 |
| RewriteCond テスト文字列 条件 パターン。 | - | 条件によるテスト文字列とパターンの比較。 |
| RewriteRule パターン 置換対象。 | - | パターンを置換対象で置き換える。 |
オプション
| [R] | 強制的にリダイレクト (Redirect) する。 [R=301] : 永久的に移動。HTTP レスポンスの「301 : Moved Permanently」を返します。 [R=302] : 一時的な移動。HTTP レスポンスの「302 : Moved Temporarily」を返します、デフォルト。 |
|---|---|
| [F] | 強制的にアクセス禁止 (Forbidden) にする。 HTTP レスポンスの「403 : Forbidden」を返します。 |
| [G] | 強制的に消去済み (Gone) にする。 HTTP レスポンスの「410 : Gone」を返します。 もはや存在しないページを消去済みとしてマークします。 |
| [L] | 書き換えが行われたら終了 (Last) にする。 現在の書き換え後の URL が後続のルール によってそれ以上書き換えられることを防止します。 |
| [NC] | パターンについて、文字の大小を区別しない(No Case)。 つまり、"A-Z" と "a-z" は区別されません。 |
| [OR] | または。 |
正規表現
| 文字 | 説明 |
|---|---|
| ! | 否定。 |
| . | 任意の1文字。 |
| [ ] | 括弧内のいずれかの文字。 |
| [^ ] | 括弧内のいずれかの文字以外。 |
| | | または。 |
| ? | 直前の文字の0回または1回の繰り返し |
| * | 直前の文字の0回以上の繰り返し。 |
| + | 直前の文字の1回以上の繰り返し。 |
| ( ) | 選択範囲の境界を明示する、もしくは後方参照を作成する。 |
| ^ | 行頭。 |
| $ | 行末。 |
| $n | (0 <= n <= 9) 後方参照。 n番目の( )内の値が入ります。 |
| %{ } | サーバ変数の取得。 |
| \ | (日本語環境では円マーク)正規表現の特殊文字をエスケープする。 |
サーバ変数
| 変数名 | 説明 |
|---|---|
| HTTP_USER_AGENT | ブラウザの種類とバージョン。 |
| HTTP_REFERER | 参照元の URL 。 |
| HTTP_COOKIE | 設定されているクッキー情報。 |
| HTTP_FORWARDED | プロキシサーバ情報。 |
| HTTP_HOST | 接続要求しているホスト名。 |
| HTTP_PROXY_CONNECTION | 接続先プロキシサーバとの接続状態。 |
| HTTP_ACCEPT | ブラウザが認識可能なデータ形式。 |
| DOCUMENT_ROOT | サイトのルートディレクトリ。 |
| SERVER_ADMIN | サーバ管理者のメールアドレス情報。 |
| SERVER_NAME | サーバのホスト名、ドメイン名、またはIPアドレス情報。 |
| SERVER_ADDR | サーバのIPアドレス。 |
| SERVER_PORT | 送信に使われたサーバのポート番号。 |
| SERVER_PROTOCOL | 送信に使われたプロトコルの名前とレビジョン情報。 |
| SERVER_SOFTWARE | 起動したサーバソフトウエアの名前とバージョン情報。 |
| REMOTE_ADDR | リモートホストのIPアドレス情報。 |
| REMOTE_HOST | リモートホストのドメイン名。 |
| REMOTE_USER | ユーザの認証名。 |
| REMOTE_IDENT | リモートホストのユーザ名。 |
| REQUEST_METHOD | リクエストを送信した方法。 |
| REQUEST_URI | リクエストされたURI。 |
| SCRIPT_FILENAME | 現在実行しているスクリプト名。 |
| PATH_INFO | クライアントから送られるパス情報。 |
| QUERY_STRING | URL に付加して渡された "?" 以降の文字列。 |
| AUTH_TYPE | ユーザを認証するときに使用する認証方法。 |
| TIME_YEAR | サーバのシステム日付・年 |
| TIME_MON | サーバのシステム日付・月 |
| TIME_DAY | サーバのシステム日付・日 |
| TIME_HOUR | サーバのシステム日付・時 |
| TIME_MIN | サーバのシステム日付・分 |
| TIME_SEC | サーバのシステム日付・秒 |
| TIME_WDAY | サーバのシステム日付・曜日 |
| TIME | サーバのシステム日付・Unix タイムスタンプ。 |
".htaccess" ファイルにおける Rewrite の記述方法
一般的な書式
RewriteEngine on
RewriteBase /
#ドメインの統一
RewriteCond %{HTTP_HOST} ^(example\.com)(:80)? [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
#ディレクトリの移転
RewriteRule ^old_dir(.*)$ /new_dir$1 [R=301,L]
#ファイルの移転
RewriteRule ^old_dir/index\.html$ /new_dir/index.html [R=301,L]
#クローラのアクセス禁止
RewriteCond %{HTTP_USER_AGENT} Badbot-1 [NC, OR]
RewriteCond %{HTTP_USER_AGENT} Badbot-2 [NC]
RewriteRule !^robots\.txt$ - [F]
RewriteEngine off
*注 書き換え対象に正規表現の特殊文字が含まれている場合は、 "\" (日本語環境では円マーク) でエスケープします。
*注 書き換え対象 "old_dir" が、 "/" から始まっていないことに注意してください。
*注 書き換え後 "/new_dir" が、 "/" から始まっていることに注意してください。
ファイルの移転
リクエストに対して、ファイルが移転したことを知らせます。
RewriteRule ^old_dir/index\.html$ /new_dir/index.html [R=301,L]
【解説】(行頭から)old_dir/index.html(行末まで)のアクセスを "/new_dir/index.html" にリダイレクトし、ここではファイルが永久に移転したことを通知しています。 書き換えが行われたら終了。
ディレクトリの移転
リクエストに対して、ディレクトリ全体が移転したことを知らせます。
"http://~" から記述することにより、外部ドメインへのリダイレクトも可能です。
# 内部移転 RewriteRule ^old_dir(.*)$ /new_dir$1 [R=301,L] # 外部移転 RewriteRule ^old_dir(.*)$ http://www.example/new_dir$1 [R=301,L]
【解説】".*" =任意の1文字0回以上の繰り返し。 (.*) の値が、後方参照 $1 に入ります。
拡張子の変更
リクエストに対して、ファイルの拡張子を書き換えてリダイレクトします。
# 拡張子が ".html" のファイルを、全て ".phpl" に変更する
RewriteRule ^(.*)\.html$ /$1.php [R=301,L]
# 特定のディレクトリに対して、ファイルの拡張子を変更する
RewriteCond %{REQUEST_URI} ^/example/ [NC]
RewriteRule ^(.*)\.html$ /$1.php [R=301,L]
# 特定のディレクトリを除いて、ファイルの拡張子を変更する
RewriteCond %{REQUEST_URI} !^/example/ [NC]
RewriteRule ^(.*)\.html$ /$1.php [R=301,L]
【解説】特定のディレクトリに関しては、(行頭から)"/example/" の大小を問わない文字を含む(もしくは含まない)アクセスに対して、拡張子 ".html" を ".php" に書き換えてリダイレクトしています。 ここではファイルが永久に移転したことを通知しています。 書き換えが行われたら終了。
サーバ移転(サイトの引越し)
リクエスト全体を、新しいドメインへリダイレクトします。
RewriteRule ^(.*)$ http://www.new-example.com/$1 [R=301,L]
【解説】HTTPステータスコード "R=301(Moved Permanently)" を付加することにより、URLが永久に移動したことを検索サイトのクローラに通知します。
この処理で、旧サイトのページランクを自動的にほぼ引き継ぐことができます。
検索サイトへの反映は、クローラにもよりますが、1週間から1ヶ月ほどかかります。
ドメインの統一
サーバーは1つのドメイン、例えば "example.com" に対して、"www.example.com" でもリクエストを受け付けます。
host がサブドメインを使用している場合は、更に "example.host.com" と "www.example.host.com" でも閲覧可能になり、合計4つのサイトにアクセスが分散することになります。
これは、 SEO 対策上あまり好ましいことではありません。 ここでは、"Rewrite" を使って、"www.example.com" に統一する場合を記述します。
RewriteCond %{HTTP_HOST} ^(example\.com)(:80)? [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
◇サブドメインを使用している場合
RewriteCond %{HTTP_HOST} ^(example\.com)(:80)? [NC,OR]
RewriteCond %{HTTP_HOST} ^(example\.host\.com)(:80)? [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.example\.host\.com)(:80)? [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
アクセス制限
サーバ変数を取得して、アクセス制限を掛けます。
アクセス制限は、サーバに思わぬ負荷をかけることがあります。
不必要なアクセス制限はできるだけ掛けないようにしてください。
*注 十分にアクセス情報を解析してから設定してください。 設定によっては正当な訪問者もアクセスできなくなる可能性があります。
- [F] は、「Forbidden(アクセス禁止)」を意味します。
- 特殊文字の前に "\"(日本語環境では円マーク)を付加する事に注意してください。
- "REMOTE_HOST" は、サーバーによっては取得できない場合があります。
RewriteCond %{REMOTE_HOST} ^example\.com$ [NC, OR]
RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.
RewriteRule ^.* - [F]
【解説】"REMOTE_HOST" が取得できない場合は、 "REMOTE_ADDR" を使用してアクセス制限をかけます。
◇特定のブラウザからのアクセスを全て禁止する
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/4\.0 \(compatible; MSIE 6\.0\)$ [NC]
RewriteRule ^.* - [F]
◇特定の Referer からのアクセスを全て禁止する
RewriteCond %{HTTP_REFERER} ^http://www\.example\.com/bad\.html$ [NC]
RewriteRule ^.* - [F]
◇特定の Referer 以外からのアクセスを全て禁止する(=特定の Referer からのみアクセスを全て許可する)
RewriteCond %{HTTP_REFERER} !^http://www\.example\.com/good\.html$ [NC]
RewriteRule ^.* - [F]
◇直リンクを全て禁止する
RewriteCond %{HTTP_REFERER} !example\.com [NC]
RewriteRule ^.* - [F]
【解説】Referer が "example.com" を含まないリクエストに対して、全てのアクセスを禁止します。
◇画像の直リンクを禁止する
RewriteCond %{HTTP_REFERER} !example\.com [NC]
RewriteRule \.(jpg|png|gif)$ - [F]
【解説】Referer が "example.com" を含まないリクエストに対して、拡張子が ".jpg" または ".png" または ".gif" へのアクセスを禁止します。
◇特定のホスト & 特定のブラウザからのアクセスを禁止する
RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/4\.0 \(compatible; MSIE 6\.0\)$
RewriteRule ^.* - [F]
◇特定の検索ロボット(クローラ)に対して、 "robots.txt" 以外のアクセスを禁止する
クローラのアクセス禁止は、サーバの負荷を伴います。 そこで先に、ここに記述する全てのクローラを "robots.txt" で拒否しておきます。 それを無視した悪質クローラだけを、最終的にここでアクセス禁止にします。
RewriteCond %{HTTP_USER_AGENT} Badbot-1 [NC, OR]
RewriteCond %{HTTP_USER_AGENT} Badbot-2 [NC, OR]
RewriteCond %{HTTP_USER_AGENT} Badbot-3 [NC, OR]
RewriteCond %{HTTP_USER_AGENT} Badbot-n [NC]
RewriteRule !^robots\.txt$ - [F]
【解説】"HTTP_USER_AGENT" が、 "Badbot-1", から "Badbot-n" の文字(文字の大小を区別しない)を含むクローラに対して、 "robots.txt" 以外のアクセスを禁止します。
※悪質クローラに対する対策の詳細は: 検索ロボット対策 をご覧ください。
参考サイト
トラックバック(0)
トラックバックURL:
グーグルマップのAPIがV3になってから今まで必要だったAPIキーが不要になっているらしい。
地図を表示する機会があったので、会社の所在地でマーカー付のサンプルを作ってみた。
意外に簡単。
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>GoogleMapsApiV3で地図を表示</title>
<!--↓↓GoogleMapApiV3↓↓-->
<script type='text/javascript' src='http://www.google.com/jsapi'></script>
<script type='text/javascript'>google.load('jquery', '1.3.2');</script>
<script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false&language=ja' charset='UTF-8'></script>
<script type="text/javascript">
$(document).ready(function() {
var mapdiv = document.getElementById('map_canvas');
var geocoder = new google.maps.Geocoder();
var point = new google.maps.LatLng(34.057488,131.808716);
var myOptions = {
zoom: 12,
center: point,
mapTypeControl: true,
navigationControl: true,
navigationControlOptions: { style: google.maps.NavigationControlStyle.SMALL},
mapTypeId: google.maps.MapTypeId.ROADMAP,
scaleControl: true
};
var map = new google.maps.Map(mapdiv, myOptions);
var marker = new google.maps.Marker({
position: point,
map: map,
draggable: true
});
});
</script>
<!--↑↑GoogleMapApiV3↑↑-->
</head>
<body>
<div id="map_canvas" style="width: 560px; height: 250px;"></div>
</body>
</html>
こういうコードを簡単に作ってくれるサイトやフォームがあればいいのにね。
トラックバック(0)
トラックバックURL:
会社のイントラネットに簡単な送付状システムをASPで構築していますが、
印刷用にレイアウトしてあるHTMLで内容を表示して印刷しています。
ところが、HTMLのレイアウトだと会社のロゴや広告などの画像が72dpi程度でしが出力されないため、ガタガタに印刷されます。
そこで、PDFであれば画像もキレイに出力できるはず!?
ということで、PDFで出力できるようにしてみました。
必要なもの
- IISが稼働するWindows Webサーバー
- FDF Toolkit for Windows (Adobeのサイトからダウンロード)
http://www.adobe.com/devnet/acrobat/fdftoolkit.html - テンプレートとなるフォームの埋めこまれたPDF
必要な作業
- FdfAcx.dllとFdfTk.dllをサーバーのsystem32フォルダにコピー
- コマンドプロンプトでレジストリにFdfAcx.dllを登録
C:\winnt\> cd \winnt\system32 ←コピー先に移動 C:\winnt\system32> regsvr32 FdfAcx.dll ←レジストリーに登録
ASPのソースサンプル
Dim FdfAcx,resFDF
'FDF ActiveX オブジェクトの定義
Set FdfAcx = Server.CreateObject("FdfApp.FdfApp")
'新しいFDF生成
Set resFDF = FdfAcX.FDFCreate
'PDFフォーム欄と値
resFDF.FDFSetValue "atena","株式会社◯◯御中",False
resFDF.FDFSetValue "naiyo","お世話になります。",False
'テンプレートPDFのURL(フルパスが望ましい)
resFDF.FDFSetFile "http://192.168.XX.X/soufujyou/print.pdf"
'設定結果のFDFをファイル名を付けてクライアントでダウンロード
Response.ContentType = "application/vnd.fdf" 'MIMEタイプ FDF
Response.BinaryWrite resFDF.FDFSaveToBuf 'FDFデータをバッファーに出力
'クローズ
resFDF.FDFClose
set resFDF = nothing
set FdfAcx = nothing
テンプレートとなるPDFに宛名を表示する「atena」と、送付状の内容を表示する「naiyo」と名前を付けたフォームを埋め込み、上記のソースにアクセスすれば値が入力されたPDFが表示されます。
ここまでできれば、あとはデータベースや入力フォームからの値を表示したりと便利に改造できます。
動的に画像を表示したりするには、また少し違うやり方をしないといけないようです。
参考サイト
トラックバック(0)
トラックバックURL:
トラックバック(0)
トラックバックURL:
SNSが増えてミクシィ派のグループもあればTwitterのお付き合いやFacebookの集まりもあり、全部にちまちま投稿するのも面倒になってきましたが、そんな悩みを解決できるウェブサービスを見つけました。
ブログのRSSフィードを登録すると以下のSNSに自動でブログ記事の更新を投稿してくれます。
Twitter、Facebook、Google Buzz、LinkedIn、MySpace、Status.net、Tumblr、ping.fn
Mixi、GREEはTwitterと連携させておけばいいので、あとはブログの記事を書けばフルオートで投稿ができて完璧!
dlvr.itに登録する方法
- http://dlvr.it/にアクセスしてサインアップする。

- ブログのRSSフィードのURLを登録する。

- とりあえずTwtterを選択し、Twitterのアクセス許可をして終わり。
(事前にTwitterはログイン状態にしておいたほうがいいです。)

あとから他のSNSに登録する方法
- ログインする。

- 「+Add Route」をクリック。

- 「+add」を押す。
- ブログのRSSフィードを選択。
(新規にURLを登録するか、すでに選択済みのフィードを選択)
- 「+add」を押す。
- 自動投稿したいSNSを選択。
- 投稿先のSNSのアクセス許可をする。
(これをしないとエラーになり登録ができない。)

「save」を押して登録完了。
その他の詳しいことは以下のサイトが参考になります。
トラックバック(0)
トラックバックURL:
ライブラリをインクルードしてたった数行で、WEBスクレイピング(HTML内を部分的に取り出し、表示する)ができる恐ろしいPHPライブラリを見つけました。
ライブラリは上記よりダウンロードできます。
<?php
include_once($_SERVER['DOCUMENT_ROOT']."/lib/simplehtmldom/simple_html_dom.php");
$html = file_get_html('http://hoshiya.biz');
foreach($html->find('title') as $row)
$row = $row->plaintext;
$row = mb_convert_encoding($row, mb_internal_encoding(), "auto" );
echo $row;
?>
たったこれだけで取得できます。
find()で取り出したい条件や要素を記入するだけです。
恐ろしく簡単で便利なのはタグはもちろん、idやclassも指定できるし、そのタグ自体を抽出することもできます。
検索結果の一覧や、リンク集なども楽に抽出ができそうな感じです。
その他の使い方などは「PHP Simple HTML DOM Parserマニュアルページ」を参照してみてください。
参考サイト
関連記事
トラックバック(0)
トラックバックURL:
指定したURLのHTMLソースから目的のタグ内の文字列をSQL文で取り出すことができるライブラリを見つけました。
今までは正規表現を使って文字列を取得していましたが、このライブラリならタグはもちろん、idやclassまで検索対象にできるスグレモノで、SQLの文法と配列が理解できれば、いろいろなことに使えそうです。
このように「HTML内を部分的に取り出し、表示する」ことを「Webスクレイピング」というそうです。
使用準備
- ライブラリをダウンロードして任意のディレクトにアップロード。
- 利用するファイルに「snoopy.class.php」と「htmlsql.class.php」をインクルード。
使用例
<?php
include_once($_SERVER['DOCUMENT_ROOT']."/lib/snoopy.class.php");
include_once($_SERVER['DOCUMENT_ROOT']."/lib/htmlsql.class.php");
function getTitle($url){
$wsql = new htmlsql();
// connect to a URL
if (!$wsql->connect('url', $url )){
print 'Error while connecting: ' . $wsql->error;
exit;
}
// execute a query:
if (!$wsql->query('SELECT * FROM title')){
print "Query error: " . $wsql->error;
exit;
}
// show results:
foreach($wsql->fetch_array() as $row){
//print_r($row);
echo $row['text'];
}
}
getTitle("http://hoshiya.biz");
?>
ちなみに、print_r($row)とすると、$rowに格納されている配列の内容が確認できます。
$rowの中身→ Array ( [tagname] => title [text] => 星屋工作室 )
例文
その他の例文はまた今度...。
制限
<div>の中の<div>など、同じタグに囲まれている文字列や要素はダイレクトに取得できず、一度大枠を取得して、再度その中から抜き出さなければならないようです。
関連記事
-
Warning: Missing argument 2 for getTitleLink(), called in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/blog/web/index.php on line 1423 and defined in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/include/function/function.php on line 104
PHP Simple HTML DOM Parserでタイトルタグ内の文字列を取得する:PHP|星屋工作室 hoshiya.biz -
Warning: Missing argument 2 for getTitleLink(), called in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/blog/web/index.php on line 1426 and defined in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/include/function/function.php on line 104
ページタイトル(titleタグ内の文字列)を取得する:PHP,Javascript|星屋工作室 hoshiya.biz
トラックバック(0)
トラックバックURL:
できるだけ短いドメインが欲しいと思ったら「1文字」がベストですが、 次へ
2文字ドメインもすべて取得済みなので、新規で登録でできる文字数は「3文字」が一番短いわけですが、
どのドメインが取得可能なのか、いちいち調べるのがメンドクサイし、
やってみたけど、イイナと思うのはすべて取得済み。
ビビっとくる文字列がないか、一括見れるサイトがあればなぁ~と思ったら結構あった。
でも、ほとんどが「.jp」...。
これ以外のTLD(トップレベルドメイン)も探せたらいいのになぁ~
まぁ、それ以前に必要とされるサイトに仕上げることのほうが重要だな...。
トラックバック(0)
トラックバックURL:
インターネットで買う側も売る側も、
商品の配送状況が簡単にわかるようにしたいけど、
宅急便各社がAPIを用意していないので、
いちいち各社のホームページを調べて開かないといけませんが、
1か所で簡単に調べられるフォームを自力で作られた方のホームページを見つけたのでメモ。
できればJavascriptで自分のサイトにペタっと貼れるガジェットみたいなのが欲しい...。
クロネコヤマト、佐川急便、日本郵便、ペリカン便、西濃運輸、福山通運、FeDexあたりの大手はAPIを提供してくれればいいのに...。
関連記事
Warning: Missing argument 2 for getTitleLink(), called in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/blog/web/index.php on line 1597 and defined in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/include/function/function.php on line 104
宅急便の荷物追跡・お問合せリンク作成フォーム-星屋工作室
Warning: Missing argument 2 for getTitleLink(), called in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/blog/web/index.php on line 1598 and defined in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/include/function/function.php on line 104
クロネコヤマト・佐川急便・ゆうパックの荷物追跡・問い合わせURLまとめ|星屋工作室 hoshiya.biz
トラックバック(0)
トラックバックURL:
トラックバック(0)
トラックバックURL:
イントラネットで表示されているページを印刷しようとすると、
A4・縦で印刷したいのに、デフォルトはA4・横になっているため、
印刷設定を毎回「縦」に変更しなくてはならない事にガマンの限界が...。
Windowsサーバーなので、
イントラネットはIIS上のASPで作っており
一部PHPを使っています。
印刷設定(用紙設定)はASPやJavascriptの関数があるんかな?
といろいろ検索しましたが見つかりませんでした...。
しかし、替わりに見つけたのはActtiveXコントロール「ScriptX」を使った方法!
まず以下のページで「Dowload smsx.cab」ボタンを押してダウンロード
任意のディレクトリにアップロード
印刷設定を使うページに以下のコードを挿入し、
<object>タグでActiveXコントロール読み込む。
<!-- ScriptX 読み込み --> <object id=factory style="display:none" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" codebase="http://**smsx.cabを設置した場所のパス**/smsx.cab#Version=6,5,439,72(←バージョンによって書き換える)"> </object> <!-- ScriptX 読み込み -->
次にJavascriptファンクションで印刷設定を行う。
<script type="text/javascript">
function printWindow() {
factory.printing.header = "ヘッダ名";
factory.printing.footer = "フッタ名";
factory.printing.portrait = false; // 用紙方向 true: 縦 false: 横
factory.printing.leftMargin = 1.0;
factory.printing.topMargin = 1.0;
factory.printing.rightMargin = 1.0;
factory.printing.bottomMargin = 1.0;
factory.printing.Print(false); // 印刷実行 ture: 印刷ダイアログなし false: 印刷ダイアログあり
}
</script>
あとはファンクションを呼び出すだけでOK!
<input type="button" value="ScriptXで印刷" onclick="printWindow();" />自分の場合は印刷ページ表示と同時に印刷するので、
<body onload="printWindow();" />
としました。
※初回使用時は「ActiveXをインストールしますか?」見たいな警告が出ますが、インストールしてしてください。
その他
ヘッダ・フッタに、現在日・ページ数出力
factory.printing.header = "ヘッダ名 &b 日付: &d"; // 現在日出力 factory.printing.footer = "フッタ名 &b &p/&P ページ"; // ページ数出力
これでイントラネットとインターネットでヘッダー・フッター印刷を切り分けられそうなのがいいです。
ヘッダーとフッターで使える記号
- &w : 印刷するホームページのタイトル
- &u : 印刷するページのアドレス
- &d : 現在の日付(xxxx/xx/xx 形式)
- &D : 現在の日付(xxxx年xx月xx日 形式)
- &t : 現在の時刻(コントロールパネルの「地域」で設定されている形式)
- &T : 現在の時刻(xx:xx:xx 形式)
- &p : 現在のページ番号
- &P : 総ページ数
- &b : 右揃えの文字列(「&b」に続けて文字列を入力)
- &b&b : 中央揃えの文字列(最初の「&b」に続けて文字列を入力)と右揃えの文字列(2 番目の「&b」に続けて文字列を入力)
- && : アンパサンド(&)
直接印刷(印刷ダイアログ表示なし)だけを直接使う
factory.printing.Print(true);
プレビュー画面を表示
factory.printing.Preview();
ActiveXコントロールだけにWindowsサーバー上じゃないと動かないとは思うのですが、
WindowsサーバーであればIISじゃなくてもApatchでも動き、
<object>タグで「smsx.cab」さえ読み込めばPHPでも使えるようなことが書かれたページがありました。
有償版もあるようですが、用紙サイズの指定とかもできるみたいです。
トラックバック(0)
トラックバックURL:
トラックバック(0)
トラックバックURL:
何かとサイトサムネイルで重宝するMozshotですが、
サムネイル表示のために、毎回URLの指定やソースの調整をすることがだんだん苦になってきました。
簡単にサイトサムネルを表示するファンクションのサンプルがあったので自分なりに改造し、
指定URLのタイトル取得とMozshotのサムネイルにリンクを組み合わせてみました。
<?php
/*---- 指定したURLのソースを取得 ----*/
function getURL( $pURL ) {
$_data = null;
if( $_http = @fopen( $pURL, "r" ) ) {
while( !feof( $_http ) ) {
$_data .= fgets( $_http, 1024 );
}
fclose( $_http );
}
return( $_data );
}
/*---- ソース内にある余計な改行コードを取り除く----*/
function cleanString( $pString ) {
$_data = str_replace( array( chr(10), chr(13), chr(9) ), chr(32), $pString );
while( strpos( $_data, str_repeat( chr(32), 2 ), 0 ) != false ) {
$_data = str_replace( str_repeat( chr(32), 2 ), chr(32), $_data );
}
return( trim( $_data ) );
}
/*---- 指定した最初タグ内にある文字列を取得 ----*/
function getElement( $pElement, $pSource ) {
//取得できなかった場合の代替テキスト
if(empty($pSource)){
$pSource = chr(60).$pElement.chr(62)."Pages".chr(60)."/".$pElement.chr(62);
}
$_data = null;
$pElement = strtolower( $pElement );
$_start = strpos( strtolower( $pSource ), chr(60) . $pElement, 0 );
$_start = strpos( $pSource, chr(62), $_start ) + 1;
$_stop = strpos( strtolower( $pSource ), "</" . $pElement . chr(62), $_start );
if( $_start > strlen( $pElement ) && $_stop > $_start ) {
$_data = trim( substr( $pSource, $_start, $_stop - $_start ) );
}
return( $_data );
}
/*---- Mozshot用ファンクション ---*/
function mShot($url,$s){
if ($url) {
$sData = getURL( $url );
$sData = cleanString( $sData );
$sData = getElement( "title", $sData );
mb_language( 'Japanese' );
$title = mb_convert_encoding($sData, "UTF-8", "auto");
}
$imgSize[0] = '64';
$imgSize[1] = '128';
$imgSize[2] = '256';
$thumbUrl[0] = "/small";
$thumbUrl[1] = "";
$thumbUrl[2] = "/large";
$a = "<div id=¥"mShot¥"><a href=¥"".$url."¥" target=¥"_blank¥">¥n";
$a = $a."<strong class=¥"title¥">".$title."</strong><br />¥n";
$a = $a."<span class=¥"url¥">".$url."</span><br />¥n" ;
$a = $a."<img src=¥"http://mozshot.nemui.org/shot".$thumbUrl[$s]."?".$url."¥" width=¥"".$imgSize[$s]."¥" height=¥"".$imgSize[$s]."¥" alt=¥"".$title."¥" />¥n";
$a = $a."</a></div>¥n" ;
echo $a;
}
?>
上記のfunction.phpをサムネイル表示を使うページindex.phpでインクルードして使う。
<?php include_once $_SERVER['DOCUMENT_ROOT']."/include/function/function.php";?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Mozshotファンクションテスト</title>
<style type="text/css">
<!--
#mShot {
padding: 0px;
margin: 0px;
}
#mShot .title {
font-weight: bold;
}
#mShot .url {
font-size: small;
}
#mShot img {
border: none;
}
-->
</style>
</head>
<body>
<?php mShot("http://hoshiya.biz",0);?>
<?php mShot("http://hoshiya.biz",1);?>
<?php mShot("http://hoshiya.biz",2);?>
</body>
</html>
このサイト用のCSSを適用しているので、
色は違いますが、実際に表示すると
<?php mShot("http://hoshiya.biz",0);?>の場合
<?php mShot("http://hoshiya.biz",1);?>の場合
<?php mShot("http://hoshiya.biz",2);?>の場合
となります。
参考ページ
トラックバック(0)
トラックバックURL:
トラックバック(0)
トラックバックURL:
トラックバック(0)
トラックバックURL:
トラックバック(0)
トラックバックURL:
最近のサイトでよく見るソースをきれいに見せるJavascriptです。
↓これ
<pre class='brush:php'> <?php $p = "サンプル"; echo $p; ?> </pre>
自分のホームページにも導入したいと思っていろいろ探しました。
現在の最新は「SyntaxHighlighter 3.0.83」のようです。
まずダウンロードして適当な場所に保存して解凍
ダウンロードファイルはこれ↓
http://alexgorbatchev.com/SyntaxHighlighter/download/download.php?sh_current
「ルートディレクトリ/js/SyntaxHighlighter」に保存した場合。
<head>~</head>内に以下を追加
ハイライト部分は必須。
ソースを表示する場所に以下のように記載すればOK。
('brush:php'の部分は表示する言語によって変更する)
<pre class='brush:php'> <?php $p = "ようこそ"; echo $p; ?> </pre>
意外にカンタン...。
英語の説明ページですが、なんとなくでも理解できました。
なんかウレシイ。
参考ページ
トラックバック(0)
トラックバックURL:
レンタルサーバーはロリポップで、
Movable Type 4をMT5にアップグレードした。
ついでに
- ディレクトリ: ルート → ルート/blog
- 拡張子: .html → .php
に変更した。
しかし、前のブログにアクセスがあるため、以下の選択肢を考えた。
- 古いブログ(MT4)と新しいブログ(MT5)と共存させる。
- 古いブログ(MT4)にアクセスがあったら、新しいブログ(MT5)に転送させる。
結果、新しいブログに転送させるほうが効率が良いので、
.htaccessに正規表現で以下の事を加えて実現できた。
URLのRewriteというApatchの機能らしい。
http://***.com/2010にアクセスがあったら、
拡張子を.htmlから.phpに変更して、
http://***.com/blog/2010/***.phpにリダイレクトする。
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/2010.*$
RewriteRule ^(.*)\.html$ /$1.php [NC,R]
RewriteRule ^2010(.*)$ /blog/2010$1 [R,L]
とりあえずできたものの、
正規表現というものを使ったことがなく、
理解するまでには時間がかかりそうです。
フォルダごとにこのルールを設定するのは大変なので、
課題として、複数のフォルダに対して一度にルールを適用できるようしたいと思います。
参考ページ
トラックバック(0)
トラックバックURL:
APIを使って短縮URLを取得して表示したくて、
PHPで変数に入れたURLを短縮して受け取る方法を探して以下のAPIが候補に上がった。
- tinyurl.com ... 特に何かの登録がいるわけではない
- bit.ly(j.mp) ... ユーザー登録をしてAPIキーを取得する必要あり
- goo.gl ... 調査中
tinyurl.comを利用した例
$url1 = "http://tinyurl.com/api-create.php?url=";
$url2 = "http://hoshiya.biz"; //短縮したいURLを入れる
$url3 = $url1.$url2;
$url4 = file_get_contents($url3); //短縮されたURLを取得
echo "<a href=\"".$url2."\">".$url2."</a>が<a href=\"".$url4."\">".$url4."</a>に短縮されました。";
?>
参考サイト
Twitter 短縮URL TinyURLのAPI
http://memorva.jp/memo/api/twitter_tinyurl.php
bit.ly(j.mp)を利用した例
//短縮URLを取得する
function shorten_url($url){
$bitly_user = '******'; //bit.lyに登録したユーザー名を入れる
$bitly_apikey = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'; //発行されたAPIキーを入れる
//j.mpを使いたい場合はbit.lyと入替える
$bitlyurl = 'http://api.bit.ly/shorten?version=2.0.1&login='.$bitly_user.'&apiKey='.$bitly_apikey.'&longUrl='.$url;
$context = stream_context_create(array('http' =>
array(
'method' => 'GET',
'timeout' => 5
)
));
$ret = file_get_contents($bitlyurl,false,$context);
if($ret !== FALSE){
$json = json_decode($ret, true);
if($json['statusCode'] == 'OK') {
$surl = $json['results'][urldecode($url)]['shortUrl'];
return $surl;
}
}
return FALSE;
}
$url = "http://hoshiya.biz"; //短縮したいURL
echo "<a href=\"".$url."\">".$url."</a>が<a href=\"".shorten_url($url)."\">".shorten_url($url)."</a>に短縮されました。";
?>
参考サイト
twitter/URL短縮する(bit.ly)
http://hodade.adam.ne.jp/itmemo/index.php?twitter%2FURL%C3%BB%BD%CC%A4%B9%A4%EB(bit.ly)
トラックバック(0)
トラックバックURL:
トラックバック(0)
トラックバックURL:
トラックバック(1)
トラックバックURL:
代替画像の表示でFLASHが表示できないiPhone対策
会社のホームページはパソコン用のサイトで、
メイン画像がFLASHでできております。
iPhoneを持っているのですが、
FLASHが表示できないため、
なんか替わりの画像が表示できたらなぁ~と方法を検索したら簡単に見つかりました。
早速導入してみようということで実践したら、
Javascriptのライブラリの設置がいるものの、
ちょ~簡単にできた。
通常のFLASH画像を設置するよりも簡単じゃないですか!?
しかし、またJacascriptが増えてしまった...。
以下を参考にさせていただきました↓
swfobject.js を使って Flash と代替画像を切り替える方法
http://www.drk7.jp/MT/archives/001481.html
トラックバック(0)
トラックバックURL:
トラックバック(0)
トラックバックURL:
配列をうまく使えないので、同じような処理を繰り返しており課題はあるものの
なんとかラジオボタンで選択した金額を計算できる自動見積りフォームを作ってみた。
合計:0 円
消費税:0 円
税込合計:0 円
見積り
下記項目を選択すると自動計算します。
ソース
<div onscroll="display_account()">
<script type="text/javascript">
<!--
function keisan(){
var tax = 5; // 消費税率
var i;
var p1 = 0;
var p2 = 0;
var p3 = 0;
var goods1 = document.getElementsByName("goods1"); //チェック済みのラジオボタンを調べて値を取得
for(i=0; i<goods1.length; i++){
if(goods1[i].checked){
p1 = goods1[i].value;
break;
}
}
var goods2 = document.getElementsByName("goods2"); //チェック済みのラジオボタンを調べて値を取得
for(i=0; i<goods2.length; i++){
if(goods2[i].checked){
p2 = goods2[i].value;
break;
}
}
var goods3 = document.getElementsByName("goods3"); //チェック済みのラジオボタンを調べて値を取得
for(i=0; i<goods3.length; i++){
if(goods3[i].checked){
p3 = goods3[i].value;
break;
}
}
var price1 = p1 * document.form1.volume1 .selectedIndex; // 数量×単価
var price2 = p2 * document.form1.volume2 .selectedIndex; // 数量×単価
var price3 = p3 * document.form1.volume3 .selectedIndex; // 数量×単価
var total1 = parseInt(price1)+ parseInt(price2)+ parseInt(price3); // 税抜き合計を計算
var tax2 = Math.round((total1 * tax) / 100); //消費税を計算
var total2 = total1 + tax2; //税込み合計を計算
//表示用の金額を3桁区切りに変換
var data = new Array(total1,tax2,total2); //金額を配列に格納
var len = data.length; //配列の数を取得
for(cnt=0;cnt<len;cnt++){
data[cnt] = new String(data[cnt]).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); //ここで正規表現で3桁ごとにカンマで区切る
}
//フォームのテキストエリアに表示する金額
document.form1.field_total1.value = data[0]; // 税抜き合計
document.form1.field_tax.value = data[1]; // 消費税
document.form1.field_total2.value = data[2]; // 税込合計
//右の窓に表示する金額
document.getElementById("display_account_amount").innerHTML = data[0]; // 税抜き合計
document.getElementById("display_account_tax").innerHTML = data[1]; // 消費税
document.getElementById("display_account_all").innerHTML = data[2]; // 税込合計
}
// -->
</script>
<script type="text/javascript">
<!--
function display_account() {
var position_top = ( document.body.scrollTop || document.documentElement.scrollTop || window.scrollTop ) ; if ( parseInt(position_top) > 170 ){
document.getElementById("display_account").style.top = position_top + "px"; } } window.onload = function() {
var isIE = 0<=window.navigator.userAgent.indexOf("MSIE");
if(isIE && document.compatMode=="BackCompat"){
document.body.onscroll = display_account;
}else{
document.documentElement.onscroll = display_account;
}
}
//-->
</script>
<div id="display_account" style="position:absolute;top:170px;right:20px;z-index:100;width:200px;"> 見積金額<br />
合計:<span id="display_account_amount">0</span> 円<br />
消費税:<span id="display_account_tax">0</span> 円<br />
税込合計:<span id="display_account_all">0</span> 円<br />
</div>
<h1>見積り</h1>
<p>下記項目を選択すると自動計算します。</p>
<form name="form1" action="" id="form1" method="post">
<table>
<tr>
<td>商品</td>
<td>グレード5</td>
<td>グレード4</td>
<td>グレード3</td>
<td>グレード2</td>
<td>グレード1</td>
<td>数量</td>
</tr>
<tr>
<td>液晶テレビ</td>
<td><input type="radio" name="goods1" id="goods1" value="120000" onClick="keisan()" />
120,000円</td>
<td><input type="radio" name="goods1" id="goods1" value="40000" onClick="keisan()" />
40,000円</td>
<td><input type="radio" name="goods1" id="goods1" value="20000" onClick="keisan()" />
20,000円</td>
<td><input type="radio" name="goods1" id="goods1" value="15000" onClick="keisan()" />
15,000円</td>
<td><input type="radio" name="goods1" id="goods1" value="10000" onClick="keisan()" />
10,000円</td>
<td><select name="volume1" onchange="keisan()">
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
</select></td>
</tr>
<tr>
<td>エアコン</td>
<td><input type="radio" name="goods2" id="goods2" value="80000" onClick="keisan()" />
80,000円</td>
<td><input type="radio" name="goods2" id="goods2" value="60000" onClick="keisan()" />
60,000円</td>
<td><input type="radio" name="goods2" id="goods2" value="40000" onClick="keisan()" />
40,000円</td>
<td><input type="radio" name="goods2" id="goods2" value="20000" onClick="keisan()" />
20,000円</td>
<td><input type="radio" name="goods2" id="goods2" value="10000" onClick="keisan()" />
10,000円</td>
<td><select name="volume2" onchange="keisan()">
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
</select></td>
</tr>
<tr>
<td>パソコン</td>
<td><input type="radio" name="goods3" id="goods3" value="60000" onClick="keisan()" />
60,000円</td>
<td><input type="radio" name="goods3" id="goods3" value="40000" onClick="keisan()" />
40,000円</td>
<td><input type="radio" name="goods3" id="goods3" value="20000" onClick="keisan()" />
20,000円</td>
<td><input type="radio" name="goods3" id="goods3" value="10000" onClick="keisan()" />
10,000円</td>
<td><input type="radio" name="goods3" id="goods3" value="50000" onClick="keisan()" />
5,000円</td>
<td><select name="volume3" onchange="keisan()">
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
</select></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>合計</td>
<td><input type="text" name="field_total1" size="8" value="0">
円</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>消費税</td>
<td><input type="text" name="field_tax" size="8" value="0">
円</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>税込合計</td>
<td><input type="text" name="field_total2" size="8" value="0">
円</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
</form>
</div>
トラックバック(0)
トラックバックURL:
前回は金額が3桁区切りになっていなかったので、
今回は3桁区切りを加えてみた。
合計:0 円
消費税:0 円
税込合計:0 円
見積り
下記項目を選択すると自動計算します。
<div onscroll="display_account()">
<script type="text/javascript">
<!--
function keisan(){
var tax = 5; // 消費税率
var price1 = eval(document.form1.goods1.value) * document.form1.volume1 .selectedIndex; // 数量×単価
var price2 = eval(document.form1.goods2.value) * document.form1.volume2 .selectedIndex;
var price3 = eval(document.form1.goods3.value) * document.form1.volume3 .selectedIndex;
var total1 = parseInt(price1)+ parseInt(price2)+ parseInt(price3); // 税抜き合計を計算
var tax2 = Math.round((total1 * tax) / 100); //消費税を計算
var total2 = total1 + tax2; //税込み合計を計算
//表示用の金額を3桁区切りに変換
var data = new Array(total1,tax2,total2); //金額を配列に格納
var len = data.length; //配列の数を取得
for(cnt=0;cnt<len;cnt++){
data[cnt] = new String(data[cnt]).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); //ここで正規表現で3桁ごとにカンマで区切る
}
//フォームのテキストエリアに表示する金額
document.form1.field_total1.value = data[0]; // 税抜き合計
document.form1.field_tax.value = data[1]; // 消費税
document.form1.field_total2.value = data[2]; // 税込合計
//右の窓に表示する金額
document.getElementById("display_account_amount").innerHTML = data[0]; // 税抜き合計
document.getElementById("display_account_tax").innerHTML = data[1]; // 消費税
document.getElementById("display_account_all").innerHTML = data[2]; // 税込合計
}
// -->
</script>
<script type="text/javascript">
<!--
function display_account() {
var position_top = ( document.body.scrollTop || document.documentElement.scrollTop || window.scrollTop ) ; if ( parseInt(position_top) > 170 ){
document.getElementById("display_account").style.top = position_top + "px"; } } window.onload = function() {
var isIE = 0<=window.navigator.userAgent.indexOf("MSIE");
if(isIE && document.compatMode=="BackCompat"){
document.body.onscroll = display_account;
}else{
document.documentElement.onscroll = display_account;
}
}
//-->
</script>
<div id="display_account" style="position:absolute;top:170px;right:20px;z-index:100;width:200px;"> 見積金額<br />
合計:<span id="display_account_amount">0</span> 円<br />
消費税:<span id="display_account_tax">0</span> 円<br />
税込合計:<span id="display_account_all">0</span> 円<br />
</div>
<h1>見積り</h1>
<p>下記項目を選択すると自動計算します。</p>
<form name="form1" action="" id="form1" method="post">
<table>
<tr>
<td>商品</td>
<td> </td>
<td>数量</td>
</tr>
<tr>
<td>果物</td>
<td><select name="goods1" onChange="keisan()">
<option value="0" selected="selected">選択してください</option>
<option value="1000">リンゴ(3個入り)1,000円</option>
<option value="450">バナナ 450円</option>
<option value="35900">パイナップル 650円</option>
</select></td>
<td><select name="volume1" onchange="keisan()">
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
</select></td>
</tr>
<tr>
<td>肉</td>
<td><select name="goods2" onChange="keisan()">
<option value="0" selected="selected">選択してください</option>
<option value="500">牛肉(100g)500円</option>
<option value="400">豚肉(100g)400円</option>
<option value="300">鶏肉(100g)300円</option>
</select></td>
<td><select name="volume2" onchange="keisan()">
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
</select></td>
</tr>
<tr>
<td>魚</td>
<td><select name="goods3" onChange="keisan()">
<option value="0" selected="selected">選択してください</option>
<option value="110">さけ 110円</option>
<option value="120">さば 120円</option>
<option value="130">いわし 130円</option>
</select></td>
<td><select name="volume3" onchange="keisan()">
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
</select></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>合計</td>
<td><input type="text" name="field_total1" size="8" value="0">
円</td>
<td> </td>
</tr>
<tr>
<td>消費税</td>
<td><input type="text" name="field_tax" size="8" value="0">
円</td>
<td> </td>
</tr>
<tr>
<td>税込合計</td>
<td><input type="text" name="field_total2" size="8" value="0">
円</td>
<td> </td>
</tr>
</table>
</form>
</div>
トラックバック(0)
トラックバックURL:
いろいろ探してみて一番よさそうなサンプルを使用して
金額の数値をカンマで3桁に区切り、
表示できるようやってみた。
<script type="text/javascript">
//3桁カンマ区切り
function addFigure() {
var str = 1000000000;
str = String(str).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
document.getElementById("price").innerHTML = str;
}
</script>
<div id="price">0</div>
</body>
これで「1,000,000,000」と表示されるはず
正規表現で数字の間にカンマを置き換えているのですが、
正規表現についてはチンプンカンプンです。
参考サイト:http://www.coppermine.jp/hasunuma/weblog/2010/05/post.html
トラックバック(1)
トラックバックURL:
とエラーが出る場合。IISでPOST送信が許可されていない場合になるそうです。
ということでネットで調べたら以下の方法が出てきたので試したら解決しました。
Windws 2000 Serverの場合
マイコンピュータを右クリックして「管理」を選択
↓
インターネットインフォメーションサービスで該当するサイトを右クリックして「プロパティ」を選択
↓
「ホームディレクトリ」タブの「構成」ボタンをクリック
↓
「アプリケーションのマッピング」タブの「追加」ボタンを押して以下を追加
実行ファイ → C:\WINNT\System32\inetsrv\ssinc.dll
拡張子 → .html
動詞 → 制限 → GET,POST
ついでに「.htm」も追加しておく。
トラックバック(0)
トラックバックURL:
MagpieRSSをダウンロードして適当なフォルダに保存し、
読み込んだ最新記事一覧を表示するページを作成する。
rss.php<?php
require_once('magpierss/rss_fetch.inc');
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
$count = 5; //最新記事表示件数
$length = 60; //表示する日記記事の最大文字数
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>RSS表示スクリプト</title>
</head>
<body>
<?php
$url = 'http://hoshiya.biz/index.xml';
$rss = fetch_rss($url);
echo "<ul>";
array_splice($rss->items, $count);
foreach ($rss->items as $item) {
$href = $item['link'];
$title = mb_convert_encoding($item['title'],"SJIS","auto");
$date = date('Y/m/d H:i:s',parse_w3cdtf($item['dc']['date']));
$description = mb_convert_encoding($item['description'],"SJIS","auto");
if (mb_strlen($description) > $length) {
$description =
mb_strcut($description, 0, $length) . "...";
}
echo "<li>";
echo "<FONT color=\"#ff8040\">(" . $date . ")</FONT> ";
echo "<a href=$href>" . $title . "</a><BR>";
echo $description . "</li>";
}
echo "</ul>";
?>
</body>
</html>
PHP5以上の場合は、
Warning: gmmktime() expects parameter 3 to be long, string given in /home/*******/public_html/magpierss/rss_utils.inc on line **
といったエラーが出ます。
そのときは「rss_utils.inc」の35行目 の
を
に変更したら正常に表示されました。
参考ページ
トラックバック(0)
トラックバックURL:
モバイルサイトでよく見る数字の絵文字がありますが、
それを表示するためには携帯電話会社各社の絵文字コードを
使用しますが、携帯電話会社によってコードが異なるため、
ユーザーエージェントを判別して各社の絵文字を設定する必要があります。
ユーザーエージェントを判別するPHPのスクリプト
<?php
if (eregi("DoCoMo",$_SERVER['HTTP_USER_AGENT'])){
//ドコモ
$num1="";
$num2="";
$num3="";
$num4="";
$num5="";
$num6="";
$num7="";
$num8="";
$num9="";
$num0="";
$numsharp="";
}
elseif (eregi("^J-PHONE|^Vodafone|^SoftBank|^MOT-",$_SERVER['HTTP_USER_AGENT'])){
//ソフトバンク
$num1="";
$num2="";
$num3="";
$num4="";
$num5="";
$num6="";
$num7="";
$num8="";
$num9="";
$num0="";
$numsharp="";
}
elseif (eregi("^UP.Browser|^KDDI|^PDXGW",$_SERVER['HTTP_USER_AGENT'])){
//au (<img localsrc="~~"><img localsrc="~~">が公式な方法)
$num1=""; //$num1="<img localsrc="180">;
$num2=""; //$num2="<img localsrc="181">;
$num3=""; //$num3="<img localsrc="182">;
$num4=""; //$num4="<img localsrc="183">;
$num5=""; //$num5="<img localsrc="184">;
$num6=""; //$num6="<img localsrc="185">;
$num7=""; //$num7="<img localsrc="186">;
$num8=""; //$num8="<img localsrc="187">;
$num9=""; //$num9="<img localsrc="188">;
$num0=""; //$num0="<img localsrc="325">;
$numsharp=""; //$numsharp="<img localsrc="818">;
}
elseif (eregi("DDIPOCKET|WILLCOM",$_SERVER['HTTP_USER_AGENT'])){
//ウィルコム
$num1="";
$num2="";
$num3="";
$num4="";
$num5="";
$num6="";
$num7="";
$num8="";
$num9="";
$num0="";
$numsharp="[#]";
}
elseif (eregi("^emobile",$_SERVER['HTTP_USER_AGENT'])){
//イー・モバイル(ドコモと同じ)
$num1="";
$num2="";
$num3="";
$num4="";
$num5="";
$num6="";
$num7="";
$num8="";
$num9="";
$num0="";
$numsharp="";
}
else {
//PC
$num1="[1]";
$num2="[2]";
$num3="[3]";
$num4="[4]";
$num5="[5]";
$num6="[6]";
$num7="[7]";
$num8="[8]";
$num9="[9]";
$num0="[0]";
$numsharp="[#]";
}
?>
絵文字を表示する場所に以下を記載(例:数字の0の絵文字)
参考サイト
携帯サイトのaccesskeyの数字画像を表示させるには
http://hoge.secret.jp/blog/2008/05/29/%E6%90%BA%E5%B8%AF%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AEaccesskey%E3%81%AE%E6%95%B0%E5%AD%97%E7%94%BB%E5%83%8F%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%95%E3%81%9B%E3%82%8B%E3%81%AB%E3%81%AF/
携帯の文字コードと絵文字の基礎知識|Mobile/Encoding - CodeRepos::Share - Trac
http://coderepos.org/share/wiki/Mobile/Encoding
トラックバック(0)
トラックバックURL:
モバイルサイト作成のための携帯電話会社各社の絵文字コード一覧サイトをまとめました。
ドコモ(docomo)
※イーモバイルはドコモと共通で使えるようです。
基本http://www.nttdocomo.co.jp/service/imode/make/content/pictograph/basic/index.html
拡張http://www.nttdocomo.co.jp/service/imode/make/content/pictograph/extention/
au by KDDI
http://www.au.kddi.com/ezfactory/tec/spec/pdf/typeD.pdf
ソフトバンク(softbank)
http://creation.mb.softbank.jp/web/web_pic_about.html
ウィルコム(willcom)
http://www.willcom-inc.com/ja/service/contents_service/create/emoji/index.html
トラックバック(0)
トラックバックURL:
ブログを更新して、RSSも更新されているが、
Google AJAX Feed APIで読み込んだフィードが更新されていないということが多々あります。
それは、
Googleのキャッシュにあるフィードを読み込んでいるからだそうです。
キャッシュをクリアまたはリセットする方法があるのかもしれませんが、
リアルタイムに最新の記事一覧を表示する方法は
読み込むフィードのURLにユニークな値を付加させることで
毎回最新の一覧を表示できるようになります。
今回はユニークな値として現在日時をURLに付加させてみました。
<script type="text/javascript" src="http://www.google.com/jsapi?key=●●あなたのAPIキー●●"></script>
<script type="text/javascript">
google.load("feeds", "1");
function initialize()
{
// 現在の日付と時間を取得
var date = new Date();
var year = date.getYear();
var mon = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var min = date.getMinutes();
var sec = date.getSeconds();
var query = year + mon + day + hour + min + sec;
//現在の最新RSSフィードの取得
var feed = new google.feeds.Feed("http://example.com/blog/rss20.xml?"+ query );
//取得するフィード数
feed.setNumEntries(6)
//実際に読む込む
feed.load(function(result)
{
//読み込めたか判別
if (!result.error)
{
//表示部分を選択
var container = document.getElementById("feed");
//変数の初期化
var list = "";
//Feedの処理
list = '<ul>';
for (var i = 0; i < result.feed.entries.length; i++)
{
//Feedを一つ抽出
var entry = result.feed.entries[i];
if(entry.title.match(/^PR:/)) {
//「PR:」から始まるものがあれば何もしない
}
else{
list += '<li>';
list += '<a href="' + entry.link + '" target="_blank" title="' + entry.title + '">' + entry.title + '</a>';
var strdate = createDateString(entry.publishedDate);
list += ' (' + strdate + ')';
list += '</li>';
}
}
list += '</ul>';
container.innerHTML = list;
}
});
}
//日付の表示方法を変更
function createDateString(publishedDate)
{
var pdate = new Date(publishedDate);
var pday = pdate.getDate();
var pmonth = pdate.getMonth() + 1;
var pyear = pdate.getFullYear();
var phour = pdate.getHours();
var pminute = pdate.getMinutes();
var psecond = pdate.getSeconds();
//var strdate = pyear + "年" + pmonth + "月" + pday + "日" + phour + "時" + pminute + "分" + psecond + "秒";
var strdate = pyear + "-" + pmonth + "-" + pday ;
return strdate;
}
google.setOnLoadCallback(initialize);
</script>
<div id="feed">Loading...</div>
ちょっと難点なのは、
毎回フィードの読み込みを行うので、表示がもたつきます。
なので、
1時間ごとくらいにするために「分」のminと「秒」のsecは省いた方がいいかもしれません。
参考ページ
トラックバック(0)
トラックバックURL:
Javascriptで宅急便各社の荷物追跡サービスの検索結果を表示するフォームを作ってみた
- 検索窓に伝票番号(お問い合せ番号)を入力
- 宅急便会社を選択
- ボタンを押す
- 新規ウィンドウに検索結果が表示される
というフォームをJavascriptを使用して作ってみた。
よく使うのは
- クロネコヤマト
- 佐川急便
- エクスパック
なので、この3つを検索できるようにしてみました。
nimotsu.html(http://hoshiya.biz/nimotsu_search/nimotsu.html)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>荷物追跡</title>
</head>
<body>
<script type="text/javascript">
<!--
function data_in(){
//フォームデータ入力用変数
var denpyou;
var kaisha;
var url;
url = new Array();
//クロネコヤマト
url[1] = "http://jizen.kuronekoyamato.co.jp/jizen/servlet/crjz.b.NQ0010?id=";
//佐川急便
url[2] = "http://k2k.sagawa-exp.co.jp/p/web/okurijosearch.do?okurijoNo=";
//日本郵便(ゆうパック・EXPACK・ポスパケット)
url[3] = "http://tracking.post.japanpost.jp/service/singleSearch.do?org.apache.struts.taglib.html.TOKEN=&searchKind=S002&locale=ja&SVID=&reqCodeNo1=";
//フォームデータを受け取る
if(document.form1.denpyou.value==""){
alert("伝票番号が入力されていません。");
}
else{
denpyou=document.form1.denpyou.value;
//ラジオボタンの値を受け取る
for (i=0;i<document.form1.kaisha.length;i++){
if (document.form1.kaisha[i].checked)
kaisha = document.form1.kaisha[i].value;
}
url = url[kaisha];
//新しいウィンドウで検索結果を表示
window.open(url+denpyou);
}
}
/* 半角数字チェック */
function TextCheck() {
var str = document.form1.denpyou.value;
if( str.match( /[^0-9.-]+/ ) ) {
alert("半角数字、半角ハイフンで入力して下さい。");
return 1;
}
return 0;
}
-->
</script>
<form id="form1" name="form1" method="post" action="">
<br />
<label for="denpyou">伝票番号
<input name="denpyou" type="text" id="denpyou" value="" onblur="TextCheck();" />
</label>
(半角数字、半角ハイフン) <br />
<label for="kaisha">会社選択
<input name="kaisha" type="radio" id="kaisha" value="1" checked />
ヤマト運輸
<input name="kaisha" type="radio" id="kaisha" value="2" />
佐川急便
<input name="kaisha" type="radio" id="kaisha" value="3" />
ゆうパック・EXPACK</label>
<br />
<input name="button" type="button" id="button" value="検索結果ページを開く" onClick="data_in();" />
</form>
</body>
</html>
実際のフォーム↓↓
PHP版は以下をご参照ください。
PHPで荷物追跡サービスの検索フォームを作ってみる。
http://hoshiya.biz/2009/09/php-1.html
トラックバック(0)
トラックバックURL:
PHPで荷物追跡サービスの検索フォームを作ってみる。
宅急便会社の荷物追跡サービスを利用するために、
各会社のホームページを開いてから検索するのは面倒くさいので、
イントラネット等利用するため、
運送会社の選択と、伝票番号の入力で、
各会社の検索結果ページが表示されるようにフォームを作ってみた。
とりあえず、
ヤマト運輸、佐川急便、日本郵便(ゆうパック・エクスパック)
の検索をしてみる。
動作としては、
テキストエリアに伝票番号を入力し、
会社を選択して「検索」を押すと、
各会社の検索結果ページが表示が新規画面で表示されるという物です。
PHPのページ単体で検索ページを表示する場合
nimotsu.php
(テストページはこちら→http://hoshiya.biz/nimotsu_search/nimotsu.php )
<?php
//エラー処理
$kaisha = (!isset($_POST['kaisha'])) ? null : $kaisha = $_POST['kaisha'];
$denpyou = (!isset($_POST['denpyou'])) ? null : $denpyou = $_POST['denpyou'];
$submit = (!isset($_POST['submit'])) ? null : $submit = $_POST['submit'];
//URL設定
//クロネコヤマト
$url['1'] = "http://jizen.kuronekoyamato.co.jp/jizen/servlet/crjz.b.NQ0010?id=".$denpyou;
//佐川急便
$url['2'] = "http://k2k.sagawa-exp.co.jp/p/web/okurijosearch.do?okurijoNo=".$denpyou;
//日本郵便 ゆうパック・EXPACK・ポスパケット
$url['3'] = "http://tracking.post.japanpost.jp/service/singleSearch.do?org.apache.struts.taglib.html.TOKEN=&searchKind=S002&locale=ja&SVID=&reqCodeNo1=".$denpyou;
//伝票番号が入力されていれば検索ページを表示
if (isset($denpyou)){
header("Location: ".$url["$kaisha"]);
}
else {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>荷物追跡</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<br />
<input name="denpyou" type="text" id="denpyou" value="" />
<br />
<label for="kaisha">会社選択</label>
<br />
<input name="kaisha" type="radio" id="kaisha" value="1" checked />
ヤマト運輸<br />
<input name="kaisha" type="radio" id="kaisha" value="2" />
佐川急便<br />
<input name="kaisha" type="radio" id="kaisha" value="3" />
ゆうパック・EXPACK<br />
<input name="submit" type="submit" id="submit" value="検索" />
</form>
</body>
</html>
<?php
}
?>
HTMLフォームとPHPの検索ページ表示の2ファイルを使う場合
form.html
(テストページはこちら→http://hoshiya.biz/nimotsu_search/form.html )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>荷物追跡サービス検索</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="search.php" target="_blank">
<label for="denpyou">伝票番号</label>
<br />
<input name="denpyou" type="text" id="denpyou" />
<br />
<label for="kaisha">会社選択</label>
<br />
<input name="kaisha" type="radio" id="kaisha" value="1" checked />
ヤマト運輸<br />
<input name="kaisha" type="radio" id="kaisha" value="2" />
佐川急便<br />
<input name="kaisha" type="radio" id="kaisha" value="3" />
ゆうパック・EXPACK<br />
<input name="submit" type="submit" id="submit" value="検索" />
</form>
</body>
</html>
search.php
<?php
//エラー処理
$kaisha = (!isset($_POST['kaisha'])) ? null : $kaisha = $_POST['kaisha'];
$denpyou = (!isset($_POST['denpyou'])) ? null : $denpyou = $_POST['denpyou'];
$submit = (!isset($_POST['submit'])) ? null : $submit = $_POST['submit'];
//URL設定
$url['1'] = "http://jizen.kuronekoyamato.co.jp/jizen/servlet/crjz.b.NQ0010?id=".$denpyou;
$url['2'] = "http://k2k.sagawa-exp.co.jp/p/web/okurijosearch.do?okurijoNo=".$denpyou;
$url['3'] = "http://tracking.post.japanpost.jp/service/singleSearch.do?org.apache.struts.taglib.html.TOKEN=&searchKind=S002&locale=ja&SVID=&reqCodeNo1=".$denpyou;
if (empty($denpyou)){
echo "Error! is empty denpyou number";
}
else {
header("Location: ".$url["$kaisha"]);
}
?>
ちなみにテスト
改造の余地はあるもののとりあえずは使える。
↓Javascript版は以下をご参照ください。
トラックバック(0)
トラックバックURL:
Yahoo!検索 スタッフブログ
日々成長を続けるYahoo!検索。その戦略、サービスの詳細、Tipsなどを開発の現場から発信。
http://searchblog.yahoo.co.jp/
Google Japan Blog
日々成長を続けるYahoo!検索。その戦略、サービスの詳細、Tipsなどを開発の現場から発信。
http://googlejapan.blogspot.com/
日々是検索
検索窓からこんにちは! Microsoftの検索サービス・Bing(日本語読み:ビング)担当スタッフのブログです。タイトルと紹介文を編集する前に、[保存] をクリックして、デザインに対する変更内容を保存します。
http://searcheveryday.spaces.live.com/
トラックバック(0)
トラックバックURL:
会社で使用しているMovable Type version 4.1なのですが、
標準の検索窓に検索語を入れて検索ボタンを押すと
「検索結果の作成に失敗しました。」
と表示されます。
これを何とか解決したちところですが、
原因がわからないため、
いろいろ検索したところ有力情報が見つかりました。
MovableType3→4移行時のツボ~その1. 検索フォーム編 - 道具眼日誌:古田-私的記録
http://do-gugan.com/~furuta/archives/2008/02/movabletype341.html
上記のページを見ると原因は
検索結果を表示するテンプレート「検索結果」に
インクルードされている以下のモジュールが見当たらず、
ちゃんとリンクしていないことが原因でした。
- ヘッダー
- ブログ記事の概要
- フッター
会社のホームページ(ブログ)の場合
このモジュールがすべて名前の変更がされており、
削除されていること同然の状態になっておりました。
モジュール名を変更したところ正常に動作しました。
トラックバック(0)
トラックバックURL:
前回のページ「
Warning: Missing argument 2 for getTitleLink(), called in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/blog/web/index.php on line 5108 and defined in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/include/function/function.php on line 104
Google AJAX Feed APIを使ってアメーバブログの「PR:」を除く記事一覧を表示するJavascript|星屋工作室 hoshiya.biz
」で紹介したスクリプトを一部変更してみた。
変更の主な内容は、
表示するリストを作成する際に、HTMLタグを変数に入れるように改造しました。(赤文字部分)
前回はXMLの要素を操作してリストを作成するようにしていましたが、
XMLの操作は苦手なのでHTMLのソースを変数に格納するようにしました。
<script type="text/javascript">
google.load("feeds", "1");
function initialize()
{
//RSSフィードの取得
var feed = new google.feeds.Feed("●●読み込みたいフィードのURL●●");
//取得するフィード数
feed.setNumEntries(5)
//実際に読む込む
feed.load(function(result)
{
//読み込めたか判別
if (!result.error)
{
//表示部分を選択
var container = document.getElementById("feed");
//変数の初期化
var list = "";
//Feedの処理
list = '<ul>';
for (var i = 0; i < result.feed.entries.length; i++)
{
//Feedを一つ抽出
var entry = result.feed.entries[i];
if(entry.title.match(/^PR:/)) {
//「PR:」から始まるものがあれば何もしない
}
else{
list += '<li>';
list += '<a href="' + entry.link + '" target="_blank">' + entry.title + '</a>';
var strdate = createDateString(entry.publishedDate);
list += '(' + strdate + ')';
list += '</li>';
}
}
list += '</ul>';
container.innerHTML = list;
}
});
}
//日付の表示方法を変更
function createDateString(publishedDate){
var pdate = new Date(publishedDate);
var pday = pdate.getDate();
var pmonth = pdate.getMonth() + 1;
var pyear = pdate.getFullYear();
var phour = pdate.getHours();
var pminute = pdate.getMinutes();
var psecond = pdate.getSeconds();
//var strdate = pyear + "年" + pmonth + "月" + pday + "日" + phour + "時" + pminute + "分" + psecond + "秒";
var strdate = pyear + "-" + pmonth + "-" + pday ;
return strdate;
}
google.setOnLoadCallback(initialize);
</script>
<!--表示結果表示する部分-->
<hr size="1" />
<div id="feed"></div>
<hr size="1" />
<!--表示結果表示する部分-->
↓↓実際にうちの社長のアメブロのフィードを読み込んで表示した例↓↓
前回同様に
RSSに「PR:」が含まれていなければ新着5件を表示しますが、
新着5件中1件に「PR:」が含まれていた場合は
フィード自体から削除して消すのではなく、省略というか、スキップしているだけなので
表示が4件になります。
この辺りは改善が必要ですが、また今度にします。
参考にしたサイト
2009/09/23追記
上記を更に改造↓
トラックバック(0)
トラックバックURL:
不動産会社に勤務している訳ですが、
中古住宅やマンション、売り土地の販売に
Google Mapsが使用できないかなと調べていますが、出来そうにない。
地図はGoogle Maps APIを利用すればできる訳ですが、
規約に違反しそうな感じです。
・地図に誰でもアクセスできること
・地図そのものを無償で提供すること
と、あるページを見ました。
あるページ↓
Googleヘルプグループ
http://groups.google.co.jp/group/Google-Maps-JP-For-Business-Owners/browse_thread/thread/1a3cac9a78bb6713
そもそも、イントラネットなので、誰でも地図にアクセスできない。
この時点でアウト。
なぜ、イントラネットで利用したいか?ですが、
他社物件等を無断で公開出来ないなからです。
商談での社内利用で有れば問題ないので、
イントラネットで地図の利用ができればな~と思った訳なんです。
お金を払っても使用できないの?
と思い探したところ。ありました。
『Google Maps API Premier』日本でも提供開始、イントラネット内利用も | ネット | マイコミジャーナル
http://journal.mycom.co.jp/news/2009/05/18/018/index.html
きっと高いんだろうな~
Google Maps API Premier
http://www.google.co.jp/intl/ja/enterprise/maps/index.html
yahoo!地図もイントラネット利用はできないようです。
Yahoo!デベロッパーネットワーク - 地図
地図Web APIの利用方法
http://developer.yahoo.co.jp/webapi/map/
トラックバック(0)
トラックバックURL:
http://chart.apis.google.com/chart?cht=qr&choe=UTF8&chld=l|0&chs=140x140&chl=http://karitaikun.com
のように chl の後ろに指定した文字列をQRコードにしてくれる優れものです。
ちなみに上記のURL(http://karitaikun.com)のQRコードを表示すると
となる。
使い方を簡単に説明すると、
http://chart.apis.google.com/chart?
の後ろにいろいろパラメータを入れていきます。
Google Chart API での使用したいチャートの種類を指定(必須)
例:cht=qr
今回はQRコードでしようするため「qr」を指定していますが、
その他グラフや地図などのチャートを指定できるようです。
出力する文字エンコードを指定(省略可)
例:choe=UTF8
書式:chl=<text to encode>
値:UTF-8、Shift_Jis 他
省略したときはUTF-8がデフォルト
表示するQRコードのEC(回復)レベルとマージン(余白)の指定(省略可)
例:chld=l|0 または chld=l%7C0
書式:chld=<ec level>|<margin>
<ec level>の値: l,m,q,h (回復できるレベル L=7%,M=15%,Q=25%,H=30%)
<margin>の値:任意の数字を入れる。
出力するQRコードのサイズを指定(必須)
例:chs=140x140
値:適当
QRコード化したい文字列やURL(必須)
例:chl=http://karitaikun.com
詳細については英語のページですが、
http://code.google.com/apis/chart/types.html#qrcodes
をご参照ください。
携帯電話でQRコードを読み込ませると文字化けしてうまく認識されない場合や、
ブラウザにURLを送信してもページが表示できずエラーになる場合は
URLエンコードされたURL内の文字列の中にある「%」を「%25」に置き換えることで回避できます。
例:
「星屋」をURLエンコードすると
となるので
http://chart.apis.google.com/chart?cht=qr&choe=UTF8&chld=l|0&chs=140x140&chl=%e6%98%9f%e5%b1%8b
とするところですが、携帯電話で読み取ると文字化けしてしまいますが、
「%」を「%25」に置き換えて
とします。
これを携帯電話で読み込むと「%e6%98%9f%e5%b1%8b」と認識されます。
ファイルメーカーをご利用の方で、
QRコードを表示するURLをブラウザに送る場合は
Substitute ( GetAsURLEncoded (URL) ; "%" ; "%25" )
でURLエンコードされたURLフィールド内の「%」を「%25」に置き換えるとうまくいきます。
トラックバック(0)
トラックバックURL:
指定のURLのサムネイルをリアルタイムに表示するツール。
以下のタグを例に「?」以降にURLを指定してやるだけ!
こんなツール待ってました。
サムネイルの表示の方法もいくつかあるようです。
説明のページ↓
上記ページの内容を参照
- Simple:
http://mozshot.nemui.org/shot?http://www.google.com/
- Get small (64x64) image:
http://mozshot.nemui.org/shot/small?http://www.google.com/
- Get large (256x256) image:
http://mozshot.nemui.org/shot/large?http://www.google.com/
- Get 800x600 image:
http://mozshot.nemui.org/shot/800x600?http://www.google.com/
- Set browser window size to 300x300:
http://mozshot.nemui.org/shot/-300x300?http://www.google.com/
- Specify window & image size:
http://mozshot.nemui.org/shot/800x800-800x800?http://www.google.com/
更に詳細設定も可能。
- uri 対象のURL
- noresize
- win_x
- win_y
- effect 影の有無 true:あり false:なし
- keepratio
トラックバック(0)
トラックバックURL:
トラックバック(0)
トラックバックURL:




