2015年05月02日


『新しい Google ドライブ』と『以前の Google ドライブ』の間には OCR 機能の圧倒的な差があります

古い Google ドライブ



新しい Google ドライブ



この数ヶ月様子を見てきましたが、大きな変化も無いので記録も含めて記事にします。そもそも、古い Google ドライブでは、アップロード時に画像をドキュメントに変換するように指定する事で、相当な精度で OCR の機能が働いていましたが、新しい Google ドライブでは、変換こそ、右クリックから『アプリで開く』=>『Google ドキュメント』と簡単になっていますが、OCR の機能はかなり低くなっています。

新聞を写真で撮影し、黒い部分を加工で飛ばして文字が薄くなった状態でも、古い Google ドライブではなんなく文字に変換できますが、新しい Google ドライブでは全く無視されます。

▼ すごい精度!!


単純にキャプチャした文字画像ならは完全に近い形で新しい Google ドライブでも変換してくれますが、それではあまり意味無いと思います。今後まだ進化するのを期待して記録とします。

▼ できてあたりまえ・・・






posted by at 22:05 | WEBサービス | このブログの読者になる | 更新情報をチェックする



Google スプレッドシートを使用したブログ内メニュー

★ このリンクは Google Drive へ直接アクセスします



埋め込みが IFRAME なので、高さは内容に合わせて変更する必要があります。ですから、あらかじめ大きめに設定しておいたほうがいいと思います。

ただ、この場合メニューが目的と言うよりも、ブログ内の情報の全体像を把握すると言う、自己管理用の意味合いのほうが重要で大きいです。

Google ドライブで埋め込みを作成する手順


( 常に最初からアニメーションします )




posted by at 20:54 | WEBサービス | このブログの読者になる | 更新情報をチェックする



Google グループの VirusTotal というサービスは、疑わしいファイルや URL を分析する無料のサービス

ファイルをアップロードして、世の中にある検査ソフト総出でウイルスチェックするサービスです。

VirusTotal

▼ Wikipedia
2012年9月7日にGoogle Inc.がVirusTotalをHispasecから買収した

フリーソフトはとにかくチェック!!

どんなファイルであれ、実行可能なものであれば一応チェックしておけば安心して作業を進める事ができます。

スキャンを開始しても、過去に既にスキャン済みのものは、経過時間と結果を表示して再度スキャンするかを尋ねられます。もちろん殆どの場合再スキャンするわけですが、他の人が行ったスキャン結果でも安心できるし、経過時間でそのソフトの人気度も推測できるというものです。

URL 先のチェック

WEBメールに来る、見るからにアウトな中にある URL を、デベロッパーツール( F12 ) で取り出してチェックすると見事にアウトでした。





ちなみに、『トレンドマイクロ オンラインスキャン』でダウンロードされる『Onlinescan.exe』もスキャンしてみました。そんな人多いみたいです。




posted by at 20:31 | WEBサービス | このブログの読者になる | 更新情報をチェックする



Google がホスティングしている jQuery を使用して、jQuery UI の Spinner のボタン部分だけを使う方法

Hosted Libraries( Google ) は、有名な JavaScript のライブラリの各バージョンをホスティングしてくれているので、いつでもどこでも好きな時に利用する事ができます。

以下は直訳ですが、Google の翻訳です。
Googleのホストされているライブラリは安定した、信頼性の高い、高速、JavaScriptのライブラリで最も人気のある、オープンソースのグローバル使用可能なコンテンツ配信ネットワークです。Googleは、各ライブラリの努力のための主要な利害関係者と直接連携し、それらがリリースされる最新バージョンを使用できます。
jQuery の場合便利なのは、CSS も同時に用意してくれているところです。以下でも利用(black-tie)していますが、テーマのタイプもそこにあれば使えるので試してみるといいと思います。 ※ Spinner は、押し続けても使えるのでとても便利なコントロールです 以下は実際の記事上でのデモ実行
▼ この下に、Spinner 用の テキストフィールドがありますが非表示にしています
y
Spinner は通常では上のように縦になります

▼ この下の Spinner 用のフィールドは SPAN 要素で挟んでいます
x
SPAN 要素に対して回転する CSS を適用して横表示にしています

x y
x y

以下は記事内にある実際のソースコードです
<script>
// jQuery が無い場合は、Google がホスティングしているライブラリをロードする
if ( !window.jQuery ) {
	if ( typeof window[window.location.hostname+'.loadjQuery'] === 'undefined' ) {
		if ( window.addEventListener ) {
			window[window.location.hostname+'.loadjQuery'] = '//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js';
		}
		// *************************************
		// 古い IE に気を使う
		// *************************************
		else {
			window[window.location.hostname+'.loadjQuery'] = '//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js';
		}
	}
	document.write("<"+"script src=\"" + window[window.location.hostname+'.loadjQuery'] + "\"></"+"script>");
}
</script>
<script>
// jQuery UI が無い場合は、Google がホスティングしているライブラリをロードする
if ( !jQuery.ui ) {
	document.write("<"+"link rel=\"stylesheet\" href=\"//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/black-tie/jquery-ui.css\">");
	document.write("<"+"script src=\"//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js\"></"+"script>");
}
</script>
<script>
// *************************************
// jQuery の ページロード時の処理
// *************************************
$(function(){
	$( "#spinner1" ).spinner({
		spin: function( event, ui ) {
			// *************************************
			// $(this).val() は、変化する前の値
			// ui.value は変化した後の値
			// *************************************
			var val = $(this).val()-ui.value;
			// ▲ をクリックするか押し続けると処理されます
			if ( val < 0 ) {
				$( ".y" ).each(function(){
					// 数字以外が設定されているフィールドは 0 にリセットしてマイナス1
					$(this).val( (parseInt($(this).val())||0)-1 );
				});
			}
			// ▼ をクリックするか押し続けると処理されます
			else {
				$( ".y" ).each(function(){
					// 数字以外が設定されているフィールドは 0 にリセットしてプラス1
					$(this).val( (parseInt($(this).val())||0)+1 );
				});
			}
		}
	})
	// 入力部分を使わないので、最小のサイズにして、高さをセット
	.css({ 
		width: "0px",
		"font-size": "0px",
		height: "30px"
	 })
	.show();

	$( "#spinner2" ).spinner({
		spin: function( event, ui ) {
			var val = $(this).val()-ui.value;
			// ▲ をクリックするか押し続けると処理されます
			if ( val < 0 ) {
				$( ".x" ).each(function(){
					// 数字以外が設定されているフィールドは 0 にリセットする
					$(this).val( (parseInt($(this).val())||0)+1 );
				});

			}
			// ▼ をクリックするか押し続けると処理されます
			else {
				$( ".x" ).each(function(){
					// 数字以外が設定されているフィールドは 0 にリセットする
					$(this).val( (parseInt($(this).val())||0)-1 );
				});
			}
		}
	})
	// 入力部分を使わないので、最小のサイズにして、高さをセット
	.css({ 
		width: "0px",
		"font-size": "0px",
		height: "30px"
	 })
	.show();

});

</script>
<style type="text/css">
/* 対象範囲内の Spinner の表示調整 */
#spinner_box .ui-spinner-button {
	width: 100%!important;
}
#spinner_box .ui-icon {
	left:4px!important;
}

/* 左右にアイコンの向きを配置する */
.rotate_wrap {
	display: inline-block;	/* 回転する為に行内ブロック化 */
	transform: rotate(90deg); /* 回転 */
	margin-left: 10px; /* 表示位置調整 */
}

/* 表示フィールド用 */
.x, .y {
	width:50px;
}
</style>
<div id="spinner_box">
▼ この下に、Spinner 用の テキストフィールドがありますが非表示にしています<br>
y <input id="spinner1" style='display:none;' value="0"><br>
Spinner は通常では上のように縦になります<br><br>

▼ この下の Spinner 用のフィールドは SPAN 要素で挟んでいます<br>
x<span class="rotate_wrap"><input id="spinner2" style='display:none' value="0"></span><br>
SPAN 要素に対して回転する CSS を適用して横表示にしています

<br><br>
x <input type="text" class="x"> y <input type="text" class="y"><br>
x <input type="text" class="x"> y <input type="text" class="y"><br>

</div>
ブログ記事で使うにあたって、jQuery を使う記事だけでロードするようにしてあります。



posted by at 15:07 | JavaScript | このブログの読者になる | 更新情報をチェックする


2015年05月01日


職人的 GifCam の使い方 : VBScript で開始と停止のショートカットを作成する



まず、GifCam は、作者さんのサイトからダウンロードして下さい。



そこで、赤く書いてありますが、他のところからだとマルウェア等が含まれている場合が多々あるようです。それと、たとえオリジナルであっても、フリーソフトは今時では 疑わしいファイルや URL を分析する VirusTotal でチェックするといいと思います。

VirusTotal はGoogle グループのサービスなんで安心してバンバン使うといいと思います。

GifCamは、ショートカットキーが無いので

自作しました。GifCam はアクティブな場合は、スペースキーでその時選択されているボタンを実行します。ですから、VBScript で起動して、プロセスID を取得して、ショートカットで VBScript を実行させるようにして、ショートカットをデスクトップに置いて『ショートカットキー』を登録しておくわけです。

そうすると、(ここでは CTRL+F2 ですが ) Rec を起動したり止めたりする事が可能になります。

▼ GifCam ショートカット



GifCam_as.vbs
Set Fso = CreateObject( "Scripting.FileSystemObject" )

strCurPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strCurPath )
Set obj = obj.ParentFolder
strCurPath = obj.Path

Set ReadFile = Fso.OpenTextFile( strCurPath & "\ProcessID.txt", 1 )
strProcessID = ReadFile.ReadLine
ReadFile.Close

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate CLng(strProcessID)

WScript.Sleep 100

WshShell.SendKeys " "

ProcessID は、ProcessID.txt に入っています。ここにセットするのは、GifCam_exec.vbs の役目になります。

GifCam_exec.vbs
Set Fso = CreateObject( "Scripting.FileSystemObject" )

strCurPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strCurPath )
Set obj = obj.ParentFolder
strCurPath = obj.Path

Set WshShell = WScript.CreateObject("WScript.Shell")
Set oExec = WshShell.Exec( strCurPath & "\GifCam.exe" )

WScript.Sleep 100

Set OutFile = Fso.OpenTextFile( strCurPath & "\ProcessID.txt", 2, True )

OutFile.WriteLine oExec.ProcessID
OutFile.Close

GifCam.exe と、二つのスクリプトは全て同じディレクトリに置いて、デスクトップにその 二つのVBScript を起動する為のショートカットを作成(wscript.exe の引数としてフルパスでスクリプトを書きます)して、GifCam_as.vbs のショートカットには『ショートカットキー』を登録しておいたら準備完了です

GifCam_exec.vbs のショートカットで GifCam を起動して作業を始めて下さい。


posted by at 23:28 | 運用 | このブログの読者になる | 更新情報をチェックする


Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します