SQLの窓

2014年11月19日


JavaScript : ブックマークレット雛型を使ったサンプル( そのページを1回転させる )


ページを1回転させる

jQuery を使っているので、ブックマークレットが呼び出す外部 JavaScript のソース内で jQuery を組み込んでいますが、既に組み込まれている場合は jQuery で回転させるだけです。 

IE は IE9 以上で回転します
if (!window.lightbox_f) {
	(function() {
		window.lightbox_f = 
		{
			// プロパティ
			version: 1.01
			,
			// メソッド
			init : function( ) {
				/* ここに処理を書きます */
				if ( !window.jQuery ) {
					s = document.createElement("script");
					s.src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js";
					if(s.addEventListener) {
						s.addEventListener("load",callback,false);
					} 
					else if(s.readyState) {
						s.onreadystatechange = callback;
					}
					document.body.appendChild(s);
				}
				else {
					callback();
				}
				function callback() { 
					$({kakudo: 0}).animate(
						{kakudo: 360},
						{
							duration: 3000,
							easing: "swing",
							step: function(now) {
								$(parent.document.body).css({
									transform: 'rotate(' + now + 'deg)'
								});
							}
						}
					);
				}
			}
		};
	})();
}

関連する Microsoft ドキュメント

script 要素とイベントの実行


posted by lightbox at 2014-11-19 17:50 | ブックマークレット | このブログの読者になる | 更新情報をチェックする

2014年11月14日


Windows で、MySQL を使っているので phpMyAdmin で参照しようとして、AN HTTPD だと setup が動かなかったので Apache を入れようとしたらいろいろルールがあったお話



重要な手順部分は、NAVER にまとめました。

そもそも、USB でもサーバ移動できる AN HTTPD を授業で使用しており、卒業進級制作の課題内容を WEB と ローカルで同じ環境を作るよう指示した手前、自分でテストしていて起きた内容のまとめです。
( ちなみに、AN HTTPD は管理者権限で起動する必要があります )

phpMyAdmin

インストーラとか特にありません。定義ファイルは実運用で必要ですが、すぐテストしたいだけなら全てデフォルトで動作します。DB のユーザとパスワードでログインして操作可能です。

ですが、setup フォルダがあるので気になって使ってみると、config.inc.php という定義ファイルを作成する為のもので、サーバを何通りも追加して定義ファイルをダウンロードしたり表示したりできるツールでした。
さらに、config フォルダを作成して、そこに書き込み権限を与えると作成されますが、本体を実行する際にその confog フォルダが残っていると、早く消せと警告されます。つまり、あまり推奨するようなものでもなさそうです。

config.sample.inc.php をコピーして十分使えます。特に、保存領域の機能を追加するにしても、examples の中にある create_tables.sql を実行した後、/* Storage database and tables */ に関する設定のコメントを外すと、DB のテーブル内に表示しておきたいデータベースの一覧を保存できるようになり、運用が楽になります。

setup は、実際問題、あまり役には立ちそうに無かったのですが、AN HTTPD で動作しなかったので、Apache のテストをする事になってしまいました

Apache Lounge

さくらインターネットのレンタルサーバで動いたので、AN HTTPD のせいだと思い、Windows に Apache をインストールしようと思ったのですが、この時 Apache の配布に二種類ある事に気がつきませんでした。
Apache
Please use the Apache builds provided by Apache Lounge. They also provide VC11 builds of Apache for x86 and x64. We use their binaries to build the Apache SAPIs.

If you are using PHP with Apache 1 or Apache2 from apache.org (not recommended) 
PHP の Windows バイナリを配布するところにこのように書かれているのですが、最初 apache.org からダウンロードしてしまって、インストーラでインンストールした後、Apache から PHP を使うという所で止まってしまい、Apache Lounge の存在に気がつきました。 Apache Lounge は、完全な実行環境が書庫化されており、bin ディレクトリの httpd.exe をコマンドプロンプトから実行するだけで開始されます。サービスに登録したい場合は、httpd.exe -k install を実行するようにと、ReadMe.txt に書かれていました。
Install
-------


- Unzip the Apache24 folder to c:/Apache24 (that is the ServerRoot in the config).
  Default folder for your your webpages is DocumentRoot "c:/Apache24/htdocs"

  When you unzip to an other location, change ServerRoot in the httpd.conf,
  and change in httpd.conf the Documenroot, Directories, ScriptAlias,
  also when you use the extra folder config file(s) change to your location there. 

Start apache in a DOS box:

>httpd.exe

Install as a service:

>httpd.exe -k install

ApacheMonitor:

Double click ApacheMonitor.exe, or put it in your Startup folder.
スレッドセーフ

AN HTTPD では、ノンスレッドセーフを使用しています。つまり、既存の PHP 内に Apache 用の dll は入っていません。なので PHP を新たにダウンロードして、Apache のバージョンとも一致させる事になりました。

最新では、php5apache2_4.dll が入っていたので、Apache は 2.4 が必要です。ここで注意するのは、古いバージョンでなんとかしようとする場合は、対応する Apache の dll を Apache Lounge からダウンロードする事が必要な場合があります。Apache Lounge では、VC9 に関していくつか PHP のバージョンにあわせて配布されています。また、VC11 用のランタイム無いと動かないので、ランタイムを現在のものを使用したい場合は、同様のバージョンあわせとダウンロードが必要になります。

MSVCR110.dll

最新は、VC11 でビルドされているので、ランタイムをインストールしても良いという場合は、以下からダウンロードできます。

Visual Studio 2012 更新プログラム 4 の Visual C++ 再頒布可能パッケージ

でも、Microsoft の余計なインストールはできれば避けたいので、VC9 でなんとかしたい人も多いと思います


※ phpMyAdmin の setup は、結局 Windows の Apache で動作しました。


posted by lightbox at 2014-11-14 21:10 | PHP | このブログの読者になる | 更新情報をチェックする

2014年11月13日


MySQL 5.6 (Generally Available (GA) Releases) インストール

phpMyAdmin 4.2.11 で表示すると以下のようになります


※ 5.6.11 と 5.6.17 を利用しましたが、手順は同じです ( 2013-05-05 )。
( 5.6.17 で、ODBC ドライバがインストールされなかったので、単体でインストールしました )

▼ ダウンロード
Download MySQL Community Server( 最新 )
MySQL Community Server (Archived Versions)


もう二度ほどインストール(5.6.11)していますし、学生に同時に20台くらいインストールさせました。殆ど選択肢は無く、途中で root のパスワードを入力するぐらいです。アプリケーション側で SHIFT_JIS しか対応していない場合は、同時にインストールされる ODBC ドライバの設定で sjis を選択してやれば良いです。( cp932 のほうがいいかもしれません )
関連する記事

MySQL 5.6.11 : テストデータ自動作成スクリプト

ODBC 接続テストの DB は mysql で、登録したパスワードを root と入力すればコンボボックスに DB がいくつか表示されますので選択します。二つほどサンプル DB が登録済みですが全て英文です。 Windows インストーラの但し書き
MySQLのインストーラは32ビットですが、 32ビットと64ビットの両方のバイナリがインストールされます。
なので、32ビットを今からインストールしますが、あとから 64ビットの PC でもインストールして動作確認する予定です。 mysql-installer-community-5.6.11.0.msi ❶ この次はお決まりのライセンスのアクセプトなので、チェックして次へ。 ❷ 次は Exexute をクリックすると勝手にチェックして『次へ』となるのでそれから次へ ▼ 結局こうなる。 ❸ 選択肢が出ますが、プログラマのテスト用だと普通はこのままで。 ❹ 必要なものが揃っているか確認が出ます。 ※ これを調整するには戻って『カスタム』で行います ❺ ここは、最終的にインストールされるものの一覧なので『Execute』します ❻ 問題無い場合は以下のようにインストールが完了しますので『次へ』 ❼ ここ以降で初期設定ですが、パスワード以外は特別なものはありません。 ▼ クリックすると大きく表示します 『パスワードが弱い』とか怒られますが、気にしないで次へ。 ▼ クリックすると大きく表示します どうしてもサービス名を変えたい場合は、ここで変更。チェックボックスは後からサービスの設定で『手動』にするので、ここでチェックを外さなくてもいいですが、ここでは外してみました。 ▼ クリックすると大きく表示します この後全てインストールされて、MySQL Workbench CE 5.2.47 が起動されますが、これを使うほどの事は通常しないので、終了させて下さい。 MySQL56 は『手動』で『開始』されますので、既存のソフトで接続すればすぐ使えます。ODBC アドミニストレータには、ODBC ドライバが登録されているので MySQL として DSN を作成します。( 通常のクライアントアプリならば、ユーザ DSN でかまいませんが、システム DSN に作っても動作します ) コマンドプロンプトでの確認 mysql.exe でログイン( mysql -u root -p )して、show variables like 'character\_set\_%' を実行すると以下のように表示され、コマンドプロンプトではクライアントが CP932(SHIFT_JIS) である事が解ります。 mysql.exe の インストールパス例 => "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql.exe" mysql -u root --default-character-set=utf8 -p でログインしてやると、上の cp932 は utf8 に変わります。 SQLの窓 Build C++ で動作確認 ダウンロード 解凍して、WinOfSql.exe を実行して下さい。M ボタンから DSN と mysql と root と パスワード を入力すると、とりあえずテーブルの一覧が出て動作確認になります。 メニューからデータベース一覧を実行すると、下段に一覧が表示されるので、ダブルクリックすると DB 名がクリップボードにコピーされるのでその DB で接続してみると、サンプル DB の中身が見れます。 sakila データベースに接続 テーブルをダブルクリックすると、行データが表示されます。 actor テーブルは、主キーを持っているので、そのままデータを更新できます。メニューの『編集』から『更新』を選択すると更新されます。 DSN で sjis を設定しているので、日本語の列名を使用できます。 下段で、右クリックして『列追加』で追加できます。 関連する記事

posted by lightbox at 2014-11-13 18:19 | MySQL | このブログの読者になる | 更新情報をチェックする

javamail でメール送信と、付属のバッチビルド用のスクリプトの解説



2014/11/13

Yahoo! のアカウントを使用して、SSL/465 で送信テストしました。44行〜46行は、SSL を使用する場合に必要です。587 を使用する場合は必要ありません(587でも送信できています)。また、javamail は当時(2011-09-29/1.4.4)のものを使用してテストしています

最新 javamail は こちら(Oracle)からダウンロードします

環境変数の CLASSPATH に、mail.jar のあるディレクトリを設定して下さい
( コマンドラインのオプションでも指定できます )
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class Main {

	// *******************************************
	// エントリポイント
	// *******************************************
	public static void main(String[] args) {
		Main thisClass = new Main();
	}

	// *******************************************
	// コンストラクタ
	// *******************************************
	public Main() {
		super();
		my_acton();
	}

	// *******************************************
	// 初期処理
	// *******************************************
	private void my_acton() {

		MyTool out = new MyTool(">>>");
		out.println("処理開始");

		// *******************************************
		// プロパティオブジェクトを作成
		// プロパティオブジェクトは、
		// extends Hashtable(連想配列)
		// *******************************************
		Properties props = new Properties();
	
		// *******************************************
		// * 連想配列に送信用サーバのアドレスをセット
		// *******************************************
		props.put("mail.smtp.host","smtp.mail.yahoo.co.jp");	// ホスト名またはIPアドレス
//		props.put("mail.smtp.port","587");	// サブミッションポート
		props.put("mail.smtp.auth", "true" );	// SMTP 認証を行う

		props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
		props.put("mail.smtp.socketFactory.fallback", "false");
		props.put("mail.smtp.socketFactory.port", "465");

		// *******************************************
		// メール用のセッションを作成
		// *******************************************
		SimpleAuthenticator sa =
			new SimpleAuthenticator("ユーザ","パスワード");
		Session MailSession = 
			Session.getInstance( props, sa );
	
		try {
	
			// *******************************************
			// メール用のメッセージオブジェクトを作成
			// *******************************************
			MimeMessage msg = new MimeMessage(MailSession);
	
			// *******************************************
			// 宛先
			// *******************************************
			msg.setRecipients(
				Message.RecipientType.TO,
				"ユーザ@nifty.com"
			);
	
			// *******************************************
			// 送信者
			// *******************************************
			msg.setFrom(
				new InternetAddress( "ユーザ@yahoo.co.jp" ) 
			);
	
			// *******************************************
			// 件名
			// *******************************************
			msg.setSubject(
				MimeUtility.encodeText(
					"日本語件名",
					"iso-2022-jp",
					"B"
				)
			);
	
			// *******************************************
			// 本文
			// *******************************************
			msg.setContent(
				"本文\n本文",
				"text/plain; charset=\"iso-2022-jp\""
			);
	
			// *******************************************
			// 送信
			// *******************************************
			Transport.send( msg );
	
		}
		catch (Exception e) {
			out.println("送信エラー");
		}

		out.println("処理終了");

	}

	// *******************************************
	// 内部用クラス
	// *******************************************
	private class MyTool {

		private String mark = null;

		MyTool(String pm) {
			mark = pm;
		}

		public void println(String str) {
			System.out.println( this.mark + str );
		}

	}

	// ***********************************************
	// 認証用のプライベートクラス
	// ***********************************************
	private class SimpleAuthenticator extends Authenticator {
	
		private String user_string = null;
		private String pass_string = null;
	
		public SimpleAuthenticator( String user_s, String pass_s ) {
			super();
			user_string = user_s;
			pass_string = pass_s;
		}
	
		protected PasswordAuthentication getPasswordAuthentication(){
			return new PasswordAuthentication( this.user_string, this.pass_string );
		}
	}

}

2011-09-29 に記事を作成した時は、パッケージの中にクリップボードへコピーする為の .exe ファイルを同梱していましたが、昨今 Google Chrome のダウンロードで『危険扱い』されるので、.exe を削除し、現状の Windows で同等の clip.exe を使用するようにしました。

JAVA_BUILD.wsf

このスクリプトは、Java のコードをバッチでビルドする為に最適化したものです。実行すると、以下のテキストファイルを参照してビルド環境の整ったコマンドプロンプトを開きます。

__targetPath.txt
カレントディレクトリにする場所です。

ここでは、カレントにある javamail というディレクトリで、そこに Main.java があります
__buildPath.txt
java の sdk のパスです。

ここでは、C:\Program Files\Java\jdk1.7.0_40\bin となっていますが、自分の環境にあわせて変更する必要があります
__classPath.txt
CLASSPATH 環境変数にセットする内容です

ここでは、.;..\mail.jar となっており、カレントと同梱の mail.jar の場所を示しています
<JOB>
<COMMENT>
以下の リソースは、コマンドライン用の環境を設定する為のものです
</COMMENT>
<RESOURCE id="commandList">
<![CDATA[
mode con: cols=120
set PATH=$BIN;%PATH%
set CLASSPATH=$CLASSPATH
prompt java$G
title Java アプリケーションのビルド
]]>
</RESOURCE>

<OBJECT id="WshShell" progid="WScript.Shell" />
<OBJECT id="Fso" progid="Scripting.FileSystemObject" />
<OBJECT id="Shell" progid="Shell.Application" />

<SCRIPT language=VBScript>
' ************************************************
' 処理開始( コマンドラインからビルドする為の
' スクリプトです )
' ************************************************

strPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strPath )
Set obj = obj.ParentFolder
WshShell.CurrentDirectory = obj.Path

' ************************************************
' 任意の引数がある場合は、参照用パスを __targetPath.txt に
' 追加する処理が実行されます
' ************************************************
if Wscript.Arguments.Count <> 0 then
	' ダイアログ表示
	Set objFolder = Shell.BrowseForFolder( 0, "選択する前に __classPath.txt で" & vbCrLf & "必要な CLASSPATH を設定して下さい", 11, 0 )
	' キャンセル
	if objFolder is nothing then
		WScript.Quit
	end if
	if not objFolder.Self.IsFileSystem then
		WScript.Echo "ファイルシステムではありません"
		WScript.Quit
	end if

	' ************************************************
	' 選択したパスが既に一覧にあるかどうかのチェック
	' ************************************************
	SelectPath = objFolder.Self.Path
	Set objHandle = Fso.OpenTextFile( obj.Path & "\__targetPath.txt", 1 )
	Flg = false
	Do While not objHandle.AtEndOfStream
		sTargetPath = objHandle.ReadLine
		if UCase( sTargetPath ) = Ucase(SelectPath) then
			Flg = true
			Exit Do
		end if
	Loop
	objHandle.Close

	' ************************************************
	' 一覧に無かった場合の追加処理
	' ************************************************
	if Not Flg then
		Set objHandle = Fso.OpenTextFile( obj.Path & "\__targetPath.txt", 1 )
		AddPath = objHandle.ReadAll
		' ************************************************
		' 現在のパス一覧の先頭に追加
		' ※ 仕様により、このパスがカレントディレクトリ
		'    になります
		' ************************************************
		AddPath = SelectPath & vbCrLf & AddPath
		objHandle.Close
		Set objHandle = Fso.OpenTextFile( obj.Path & "\__targetPath.txt", 2, True )
		objHandle.Write AddPath
		objHandle.Close
	end if
end if


' **********************
' ビルド対象
' **********************
Set objHandle = Fso.OpenTextFile( obj.Path & "\__targetPath.txt", 1 )
Do While not objHandle.AtEndOfStream
	sTargetPath = objHandle.ReadLine
	if Left( sTargetPath, 1 ) <> ";" and sTargetPath <> "" then
		Exit Do
	end if
Loop
objHandle.Close

' **********************
' SDK の場所
' **********************
Set objHandle = Fso.OpenTextFile( obj.Path & "\__buildPath.txt", 1 )
Do While not objHandle.AtEndOfStream
	sPath = objHandle.ReadLine
	if Left( sPath, 1 ) <> ";" and sPath <> "" then
		Exit Do
	end if
Loop
objHandle.Close

' **********************
' CLASSPATH
' **********************
Set objHandle = Fso.OpenTextFile( obj.Path & "\__classPath.txt", 1 )
Do While not objHandle.AtEndOfStream
	sClassPath = objHandle.ReadLine
	if Left( sClassPath, 1 ) <> ";" and sClassPath <> "" then
		Exit Do
	end if
Loop
objHandle.Close

' ************************************************
' 先頭にあるリソースの内容を取得します
' ************************************************
aData = Split( GetInline( "commandList" ), vbCrLf )

' ************************************************
' 対象ディレクトリがある場合はそこへ移動して
' コマンドラインで1行目を実行するようにします
' ************************************************
if Trim(sTargetPath) <> "" then
	strCommand = "cmd.exe /k cd """ & sTargetPath & """ & " & aData(0)
else
	strCommand = "cmd.exe /k " & aData(0)
end if

' ************************************************
' 2行目以降の置き換え用文字列を置き換えます
' ************************************************
For I = 1 to Ubound( aData )
	if instr( aData(I), "$BIN" ) > 0 then
		aData(I) = Replace( aData(I), "$BIN", sPath )
	end if
	if instr( aData(I), "$CLASSPATH" ) > 0 then
		aData(I) = Replace( aData(I), "$CLASSPATH", sClassPath )
	end if
	strCommand = strCommand & "&" & aData(I)
Next

' ************************************************
' 準備されたコマンドプロンプトを開きます
' ************************************************
Call WshShell.Run( strCommand, 3 )

' ************************************************
' 関数(全角スペースを含めたトリム)
' ************************************************
Function GetInline( strName )

	GetInline = RegTrim( getResource( strName ) ) & vbCrLf

End Function
Function RegTrim( strValue )

	Dim regEx, str

	Set regEx = New RegExp
	regEx.IgnoreCase = True
	regEx.Pattern = "^[ \s]+"
	str = regEx.Replace( strValue, "" )
	regEx.Pattern = "[ \s]+$"
	RegTrim = regEx.Replace( str, "" )

End Function
</SCRIPT>
</JOB>



copy_buildline.wsf

通常実行するビルド用のコマンドラインを、__clipCommand.txt から取り出して、クリップポードにコピーするスクリプトです。JAVA_BUILD.wsf で開いたコマンドブロンプト上で右クリックで貼り付けます

関連する記事

コマンドプロンプトの簡易編集モードのデフォルトを on にする
<JOB>

<OBJECT id="WshShell" progid="WScript.Shell" />
<OBJECT id="Fso" progid="Scripting.FileSystemObject" />

<SCRIPT language=VBScript>
' ****************************************
' 処理開始( コマンドラインをクリップボードに
' コピーします )
' ****************************************

strPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strPath )
Set obj = obj.ParentFolder
WshShell.CurrentDirectory = obj.Path

Set objHandle = Fso.OpenTextFile( obj.Path & "\__clipCommand.txt", 1 )
strCommand = ""
Do While not objHandle.AtEndOfStream
	strLine = objHandle.ReadLine
	if Left( strLine, 1 ) <> ";" and strLine <> "" then
		strCommand = strCommand & strLine & vbCrLf
	end if
Loop
objHandle.Close

Set objHandle = Fso.OpenTextFile( obj.Path & "\__clipCommand.tmp", 2, True )
objHandle.Write strCommand
Call WshShell.Run( "cmd.exe /c type """ & obj.Path & "\__clipCommand.tmp"" | clip.exe", 0, True )


</SCRIPT>
</JOB>



java_start.wsf

JAVA_BUILD.wsf と同様にして、テキストファイルより情報を集めて、ビルドが終わったアプリケーションを実行します。

これ専用の __java_start.txt の中に実行用のコマンドを複数行で指定し、コマンドプロンプトでは順次実行させます

ここではこうなっています
java Main
pause
exit
<JOB>
<RESOURCE id="commandList">
<![CDATA[
mode con: cols=120
set PATH=$BIN;%PATH%
set CLASSPATH=$CLASSPATH
prompt java$G
title Java アプリケーションの実行
]]>
</RESOURCE>

<OBJECT id="WshShell" progid="WScript.Shell" />
<OBJECT id="Fso" progid="Scripting.FileSystemObject" />

<SCRIPT language=VBScript>
' ***********************************************
' 処理開始( 実行する為のスクリプトです )
' ●参照 : __buildPath.txt(SDK の場所)
' ●参照 : __classPath.txt(CLASSPATH)
' ●参照 : __java_start.txt(実行コマンド( 複数行可 ))
' ***********************************************

strPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strPath )
Set obj = obj.ParentFolder
WshShell.CurrentDirectory = obj.Path

' ビルド対象
Set objHandle = Fso.OpenTextFile( obj.Path & "\__targetPath.txt", 1 )
Do While not objHandle.AtEndOfStream
	sTargetPath = objHandle.ReadLine
	if Left( sTargetPath, 1 ) <> ";" and sTargetPath <> "" then
		Exit Do
	end if
Loop
objHandle.Close

Set objHandle = Fso.OpenTextFile( obj.Path & "\__buildPath.txt", 1 )
Do While not objHandle.AtEndOfStream
	sPath = objHandle.ReadLine
	if Left( sPath, 1 ) <> ";" then
		Exit Do
	end if
Loop
objHandle.Close

Set objHandle = Fso.OpenTextFile( obj.Path & "\__classPath.txt", 1 )
Do While not objHandle.AtEndOfStream
	sClassPath = objHandle.ReadLine
	if Left( sClassPath, 1 ) <> ";" and sClassPath <> "" then
		Exit Do
	end if
Loop
objHandle.Close

aData = Split( GetInline( "commandList" ), vbCrLf )

if Trim(sTargetPath) <> "" then
	strCommand = "cmd.exe /k cd """ & sTargetPath & """ & " & aData(0)
else
	strCommand = "cmd.exe /k " & aData(0)
end if

For I = 1 to Ubound( aData )
	if instr( aData(I), "$BIN" ) > 0 then
		aData(I) = Replace( aData(I), "$BIN", sPath )
	end if
	if instr( aData(I), "$CLASSPATH" ) > 0 then
		aData(I) = Replace( aData(I), "$CLASSPATH", sClassPath )
	end if
	strCommand = strCommand & "&" & aData(I)
Next
Set objHandle = Fso.OpenTextFile( obj.Path & "\__java_start.txt", 1 )
Do While not objHandle.AtEndOfStream
	strLine = objHandle.ReadLine
	if Left( strLine, 1 ) <> ";" then
		strCommand = strCommand & "&" & strLine
	end if
Loop
objHandle.Close
Call WshShell.Run( strCommand, 3 )

' ***********************************************
' 関数
' ***********************************************
Function GetInline( strName )

	GetInline = RegTrim( getResource( strName ) ) & vbCrLf

End Function
Function RegTrim( strValue )

	Dim regEx, str

	Set regEx = New RegExp
	regEx.IgnoreCase = True
	regEx.Pattern = "^[ \s]+"
	str = regEx.Replace( strValue, "" )
	regEx.Pattern = "[ \s]+$"
	RegTrim = regEx.Replace( str, "" )

End Function
</SCRIPT>
</JOB>



タグ:java javamail
posted by lightbox at 2014-11-13 12:27 | java : 通信関連 | このブログの読者になる | 更新情報をチェックする

2014年11月12日


Excel の VLOOKUP 関数がエラーになる場合に後から iferror関数を追加する手順

以下のようなエラーが発生する場合、iferror 関数の中で vlookup 関数を実行すれば良いのですが、Excel の入力支援ダイアログを利用して追加します



数式バーで処理します

▼ VLOOKUP の前にカーソル
iferror( までを入力


▼ iferror の中をクリック


▼ 関数挿入ボタンをクリック


▼ エラーの場合の値に空文字を入力して OK


▼ 完成




タグ:EXCEL
posted by lightbox at 2014-11-12 16:54 | Microsoft Office | このブログの読者になる | 更新情報をチェックする

IE拡張メニュー : Seesaa のリンクコンテンツを一瞬でソートする

ソートしても、Seesaa で更新するまで反映されません。


インストールは、ダウンロードした zip 書庫を解凍して、中の ie_seesaa_linksort.wsf をエクスプローラからダブルクリックして下さい。そうすると、メッセージボックスで更新しても良いかと聞かれるので「OK」を選択して下さい。
※インストールしたあと、既にIE が実行している場合はいったん閉じて下さい

アンインストールは以下のコマンドをコマンドプロンプトから実行して下さい
reg delete "HKCU\Software\Microsoft\Internet Explorer\MenuExt\Seesaa 用リンクソート"
▼ アンインストール実行画面
何も押さずにそのまま実行すると、タイトル内容でソートします。

SHIFT キーを押しながら実行すると、
URL のアーティクル番号の大きい順にソート

CTRL キーを押しながら実行すると、
URL のアーティクル番号の小さい順にソート

※ 必ずしもアーティクル番号が正しい順序とは限りませんが、数字の桁が同じであれば、新しい順または古い順になります
意図的な順序の場合は手作業でするしかありませんが、多くなってきて読む人が探しやすいようにするには、やはり通常のソートするのが一番です。

Seesaa独自タグ簡易リファレンス

タグ:Seesaa IE拡張
posted by lightbox at 2014-11-12 14:43 | Seesaa プログ管理支援 | このブログの読者になる | 更新情報をチェックする
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 終わり