SQLの窓

2013年12月15日


Microsoft Office 2010 で、文書を追加で開くだけで『セキュリティエラー』と出るので対処

そもそもの原因は、Office をインストールする時に絶対必要なものしか入れないという習慣から来るもので、ただ単純にその時省いたものが原因でひたすら、とうてい、商品とは思えない動作をします。



原因は VBA でした。証明書が必要かどうかは検証していませんが、証明書だけでは改善されず、VBA も追加インストールしたら『まとも』になりました。


関連する記事

Microsoft Office で、『クリップアートを表示できません』と表示される場合の対処



タグ:トラブル
posted by lightbox at 2013-12-15 22:53 | Microsoft Office | このブログの読者になる | 更新情報をチェックする

2013年12月11日


VBS : バッチ処理でディレクトリ(ファイル)の権限を追加したり削除したりする方法

※ システム的に重大な処理なので、自信のない場合は使用せずに、GUI で指定して下さい


通常、Windows の既存のディレクトリ( マイ ドキュメント等 ) に追加でディレクトリを作成すると上記画像のようになると思います。

通常ならはこれて十分なのですが、サーバーアプリケーション(WWWサーバー等) の場合、現在ログインしているユーザとは別のユーザで処理されるので、ほぼ確実にこのままでは問題が出ます。

GUI でこのまま追加して権限を与えれば良いのですが、結構煩雑で管理上スマートでもありません。そこで、Microsoft が提供してくれている、VBScript のツールを使用します
( Extended Change Access Control List Tool (Xcacls) )

使用する前の準備

まず、ダウンロードして解凍(実行すると解凍されます)すると、Xcacls.vbs が現れるので、パスの通ったディレクトリに移し、同じディレクトリに以下のようなバッチファイルを作成します( 仮に vbscacls.bat とします )

Windows7 で使用するには、3400 行目を Case "5.0", "5.1", "5.2", "6.1" に変更します( 6.1 が Windows7 )
cscript.exe %~dp0XCACLS.vbs %1 /E %2 %3 %4 %5 %6 %7 %8 %9

第一引数は、必ず対象のディレクトリかファイルで、/E が修正モードという意味で、これが無いと既存の情報が削除されてしまいます

追加

通常、ユーザーを単独で追加するよりグループを追加して対応します。Users で フルコントロールを与えれば、自分の PC としては問題は無いと思いますので、以下のようなパラメータで実行します( カレントディレクトリが対象 )
VBSCACLS "%CD%" /P users:F


削除

指定したグループ(ユーザ)のみ削除されます
VBSCACLS "%CD%" /R users


補足情報

Windows7 用に変更しないと、以下のようなメッセージが出力されます
C:\TEMP>VBSCACLS "%CD%" /P users:F

C:\TEMP>cscript.exe C:\Windows\XCACLS.vbs "C:\TEMP" /E /P users:F
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

Starting XCACLS.VBS (Version: 5.2) Script at 2013/12/11 9:54:57

************************************************
* Script not tested on this version of Windows *
************************************************

This script hasn't been tested on version "6.1" of Windows.

Currently, the script has been tested on the following:
            Win2000, WinXP, Win2003

Previous versions of Windows NT can use:
"XCACLS.EXE" from the NT 4.0 Resource Kit.

For more recent versions, there may be an update to this script.
Please contact David Burrell (dburrell@microsoft.com)

Note: WMI must be installed for this script to function.
If you need to run this script on the current OS,
and you verified WMI is installed, do the following:
            open this script in Notepad
            search for Function IsOSSupported()
            change this line:
                        Case "5.0", "5.1", "5.2"
            to:
                        Case "5.0", "5.1", "5.2", "6.1"
            Save the script.

Exiting script now.


Operation Complete
Elapsed Time: 4.296875E-02 seconds.

Ending Script at 2013/12/11 9:54:57
以下は処理が正常終了した時のメッセージです
C:\TEMP>VBSCACLS "%CD%" /P users:F

C:\TEMP>cscript.exe C:\Windows\XCACLS.vbs "C:\TEMP" /E /P users:F
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

Starting XCACLS.VBS (Version: 5.2) Script at 2013/12/11 9:58:05

Startup directory:
"C:\TEMP"

Arguments Used:
        Filename = "C:\TEMP"
        /E (Edit ACL leaving other users intact)
        /P (Replace rights)
                users:F


 - Changing /P user/group: "users" to "BUILTIN\Users"

**************************************************************************
Directory: C:\TEMP
Replacing NTFS rights (F access for This Folder, Subfolders and Files) for "BUIL
TIN\Users"
Completed successfully.
**************************************************************************


Operation Complete
Elapsed Time: 4.941406 seconds.

Ending Script at 2013/12/11 9:58:10
関連する記事 ディレクトリの権限を変更する Xcacls.vbs と Xcacls.exe
posted by lightbox at 2013-12-11 10:10 | コマンド : コマンド | このブログの読者になる | 更新情報をチェックする

2013年12月10日


ブラウザの WebGL チェック : jQuery 名前空間へ変数($.is_webgl)追加

以下のチェック部分のコードは、実際に Three.js のデモで使われていたものです。再度検証していますが正しく動いています。しかし、将来的に正しく動作するかどうかは解らないので、document.implementation.hasFeature("webgl","") でチェックする方法もいずれは考慮する必要があるかもしれません。

document.implementation.hasFeature("webgl","") は、IE を含めた主要なブラウザで動作する事を確認はしていますが、Opera NEXT のみ実装と hasFeature が一致しない可能性があります。
<script>
if ( window[window.location.hostname+'.loadjQuery'] !== true ) {
	window[window.location.hostname+'.loadjQuery'] = true;
	if ( !window.jQuery ) {
		document.write("<"+"script src=\"//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js\"></"+"script>");
	}
}
</script>
<script>
$.extend({
	is_webgl: (function() {
		try {
			return !! window.WebGLRenderingContext && !! document.createElement( 'canvas' ).getContext( 'experimental-webgl' ); 
		}
		catch( e ) {
			return false;
		}
	})()
});

console.log( $.is_webgl );
</script>




posted by lightbox at 2013-12-10 02:00 | JavaScript | このブログの読者になる | 更新情報をチェックする

2013年12月07日


手動で Facebook API の 60日間の アクセストークンを取得する

以下で実際に投稿できます(本文の手順でアクセストークンを取得して下さい)
▼ 簡易的なので、日本語は不可です ( ここは Shift_JIS なので。UTF-8 のページなら日本語可です )

▼ 自分のみになる設定です
▼ リンク設定
▼ 画像設定
( 投稿時のパラメータの日本語訳ドキュメント )
とにかくアクセストークンがすぐ欲しい場合

App ID を取得しているという前提で、Graph API Explorer にアクセスして、自分のアプリを選択してから権限を選択(通常デフォルトで十分です)してアクセストークンを取得します。

▼ プログラムを書いてそこから投稿がアプリ名



▼『アクセストークンを取得』をクリックすると、ウインドウが開いて必要なパーミッションを選択します



▲ その後、『Get Access Token』をクリックすると、アクセストークンが『アクセストークンを取得』ボタンの左に表示されます


ブラウザを使う(現在 IE でしか取得できません)


ブラウザを使って手動で60間有効なアクセストークンを取得します。Google Chrome でテストしました( IE では結果がうまく戻りません )

まず以下の 文字列を作成してアドレスバーに入力します。すると、ログインされていない場合はログインページが表示され、ログイン済の場合は Success とだけ表示されて、アドレスバーに 2時間有効なアクセストークンが表示されます。そのアクセストークンを取得して下さい

現在、blank.html が表示されますが、Google Chrome のデベロッパーツールで、Network を開いて実行すると、『login_success.html#access_token=2時間有効なアクセストークン』という形式での URL を確認することができます。

結果的に、IE でのみ左端で右クリックして URL のコピーを行う事で取得できる事を確認しています

▼ 2時間有効なアクセストークンを取得する URL

( ログインしていない場合は、ログイン画面が表示されます )
https://www.facebook.com/dialog/oauth/?redirect_uri=http://www.facebook.com/connect/login_success.html&response_type=token&client_id=APIキー&scope=user_about_me,user_photos,read_stream,publish_stream
以下で実際に取得できます(IEで事前にFacebook をログオフしておく)


▼ ここだけ変更します

Facebook をログオフしておいて、上のフォームを実行すると、ログイン画面が表示されるので、そこで開発者ツールを開いてネットワークキャプチャを有効にしてログインします。



▲ この画像は、IE11 ですが、IE10 でも動作は確認しました。

▼ この時取得した URL は以下のようになります
http://www.facebook.com/connect/login_success.html#access_token=アクセストークン&expires_in=6047
その2時間有効なアクセストークンを60日間有効なアクセストークンに交換する為に以下の文字列を作成します。
https://graph.facebook.com/oauth/access_token?client_id=APIキー&client_secret=アプリのシークレットキー&grant_type=fb_exchange_token&fb_exchange_token=2時間有効なアクセストークン
以下で実際に取得できます(ここはどのブラウザでも OK です)

▼ ここを変更します
▼ ここを変更します
▼ ここを変更します
▲ 上のフォームから送信すると、ページ内にアクセストークンが表示されます

一般的には、この文字列をブラウザのアドレスバーに入力すると、テキストとして以下のような文字列が帰って来ます。
access_token=60日間有効なアクセストークン&expires=残り時間


ここから以降は再検証していないので参考程度

これらは、offline_access パラメータの廃止に関するドキュメントに書かれてある手順を試してみたものです。ですから、アプリの詳細設定の『移行』で Remove offline_access permission が on になっている必要があります。まだ アプリケーションから試したわけではありませんが、2時間限定のアクセスならば、APIキーのみでシークレットは必要とせずに Graph API にアクセスする事ができます。

※ graph.facebook.com/me/home でテストしました

2時間のアクセストークンだけならば、Windows8(C#) の WebView でテストして動作しています。WebView の URL の取得は以下のようにして処理しています。
( イベントで取り出すのがセオリーですが、この方法はいろいろな場面で利用可能なので )
// 取得した文字列から、任意の処理で
// アクセストークンを取り出します
string url = (webView.InvokeScript("eval", new String[] { "(function(){return location.href})();" })).ToString();
関連する Facebook ドキュメント

Extended Permissions




タグ:Facebook Windows8 C#
posted by lightbox at 2013-12-07 18:57 | API | このブログの読者になる | 更新情報をチェックする

2013年12月05日


任意のサイトのソースコードを表示させる PHP

cURL 関数であらかじめ Content-Type を取得しておいて、表示可能ならば charset を引き継いで、text/plain で表示します。

※ 実際、ブラウザで表示するものとは違う可能性はあります

<?php
$ch = curl_init($_GET['url']);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// *********************************************************
// https 用
// *********************************************************
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);

$data = curl_exec($ch);
curl_close($ch);
if ($data === false) {
	echo 'cURL failed';
	exit;
}

$contentType = 'unknown';
if (preg_match('/(Content-Type: .+)/i', $data, $matches1)) {
	$contentType = $matches1[1];
}

$charset = 'utf-8';
if (preg_match('/(charset.+)/i', $data, $matches2)) {
	$charset = $matches2[1];
}

$target = false;
if ( false !== stripos( $contentType, "text" ) ) {
	$target = true;
}
if ( false !== stripos( $contentType, "javascript" ) ) {
	$target = true;
}
if ( false !== stripos( $contentType, "css" ) ) {
	$target = true;
}

if ( !$target ) {
	exit("Can't display");
}

header( "Content-Type: text/plain; charset={$charset}" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

print file_get_contents($_GET['url']);

?>

関連する記事

PHP : WEBでもコマンドラインでもHTTPでファイルをダウンロードする




posted by lightbox at 2013-12-05 18:20 | PHP + 通信 | このブログの読者になる | 更新情報をチェックする

2013年12月03日


何だこれ。Microsoft の 看板的ワードの誤字『EIblog をご覧ください。』って・・・



正解は、IEBlog ですけど。

Three.js へのリンクがあるのもびっくりしたけれど、確かに、Three.js は全てでは無いですが動作します。

関連する記事

Windows7 用の IE11 がリリースされて、めでたく『WebGL』が使えるようになりました。


そもそも、英文表記でもそうなってるので、本家本元のミスなんでしょうね。で、一部の WebGL 機能がサポートされていません という下りの部分なんで、余計なんだかなぁ・・・・って感じです。

ううむ。もうちょっと頑張って欲しいのだけれど。

Three.js の評価がかなり高く記述されているようなので、それはそれでちょっと嬉しいですけれど。


posted by lightbox at 2013-12-03 04:16 | 記録 | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

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

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

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

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


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

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

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

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

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



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり