SQLの窓

2015年03月29日


Android 5.1 リリース済み。SDK( android-sdk_r24.0.2-windows.zip ) でまずエミュレータ作って、あとから Eclipse と Android Studio で動作確認( 新しい事は、少しづつ問題を消して行くのが近道です )

重要

以下の理由で、エミュレータの RAM は 512 を推奨します
Android Studio : Intel の HAXM と System Image を最新にしたら、installation failed since the device possibly ... というエラーが出ました

Eclipse(Pleiades(Luna)+ADT Plugin)Android Studio の動作確認は終わってますが、ここではそれとは全く関係無い『エミュレータが動く』という事を目標に置いています。正直、最初のテストを古い PC でやってしまって結構いろんな壁にブチあたったりしてます。ですが、結果が重要なので実際に動作した AVD のバリエーションを掲載します。

いずれにしても Java は必要

後の Eclipse や Android Studio を考えたとしても、最近では Java そのものをあまり意識する必要は無いようになって来ていますが、とりあえず Java のアプリケーションが動く環境が必要です。

SDK Manager.exe を起動して、めぼしいバージョンを更新

Android 4.1.2 〜 Android 5.1 の 更新です。結構かかります。ま、でも Android 5.1 だけ入れておいて必要に応じて増やせばいいと思います。









Extras は、とにかく全部入れました(全部必要では無いはずですが、確認取る時間がもったいないので全部入れています)。ただ、最後のアクセラレータはとても重要です。

CPU のオプションとして Windows では通常オフになっていると思いますが、BIOS の設定でオンにした上でインストールするドライバが ectras フォルダに展開されます。インストールは、その中の intelhaxm-android.exe を実行する事によって、アンインストール可能な公式のインストール一覧(プログラムと機能)に表示される形でインストールされます。インストールされると、表からは見えない形のサービスとして起動されて、AVD の x86 関係の CPU が利用できるようになります。

▼ インストール後確認できるレジストリ位置
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\IntelHaxm
( サービス名を使用して、sc query IntelHaxm で確認する事もできます )



type が 1 とあるのは、Kernel device driver である事を示しています

AVD Manager.exe を起動して、デバイスを作成

Nexus S の情報を元にして作成しています



6つのバリエーションを作成して、起動を確認した後に設定アイコンで日本語に変更しています。

これらの設定情報は、C:\Users\ユーザ名\.android\avd に作成されており、この名前とこの中にある .ini ファイル名前を変更して、AVD Manager.exe で読み出した後に更新すると名称変更が可能である事を確認しました。




AVD_for_Nexus_S_412x86



AVD_for_Nexus_S_442x86



AVD_for_Nexus_S_by_Google


Google APIs 関連はなぜか警告が出ますが、間違った内容の警告が出されておりきちんと動作します。

AVD_for_Nexus_S_TEST1



AVD_for_Nexus_S_TEST2



AVD_for_Nexus_S_TEST3



優先順位としては、Android 5.1 で動作確認するといいと思いますが、Android 4.1.2 もそれなりに重要な気もします。Google APIs は、Google 特有のサービスをテストする際に必要だという事が調べた結果なのですが、ここは確認していません。というか、普通の Android アプリケーションを実行するだけなら、Google APIs は必要無いでしょう。armeabi-v7a があるのは、古い PC では アクセラレータを実行する為の機能そのものが無いのでその場合に必要になります( エミュレータの起動は遅くなりますがしかたありません )


以上全ての動作を確認しています

Android 5.0 以降のオープニングは、一番下にあるロックをゆっくり上へドラッグして中に入ります。




関連する記事

Android 5.1 エミュレータ + Android Studio 1.1.0 実行イメージ


Android 5.1 + Pleiades( Luna ) + ADT Plugin


Android Studio と Pleiades Eclipse + Android SDK が参照する Java SE ドキュメントを日本語化する


Android Studio のインストールとエミュレータ実行までの手順




タグ:android
posted by lightbox at 2015-03-29 16:48 | Android | このブログの読者になる | 更新情報をチェックする

2015年03月28日


Android Studio と Pleiades Eclipse + Android SDK が参照する Java SE ドキュメントを日本語化する

Pleiades Eclipse は標準でホバーしたら日本語ドキュメントを表示できるようになっていますが、Android プラグインをインストールすると、android-sdk 内を見に行くようになるので、英語になってしまいます。当然 Android Studio でも CTRL+Q で参照すると英語になるので、android-sdk 内のドキュメントを日本語のもので置き換えると日本語化できます。



但し、日本語が手に入るのは Android 以外の Java SE のドキュメントだけです。

▼ 以下のページ




ダウンロードしたドキュメントの該当部分を android-sdk の該当部分にコピーします。

▼ android-sdk 側


▼ Java SE 側


▼ Eclipse ホバー参照




タグ:android
posted by lightbox at 2015-03-28 22:54 | Android Studio 1 | このブログの読者になる | 更新情報をチェックする

クラウドでアプリを作成してスマホで動作させる『Monaca』を Android エミュレータの 5.1 で動作確認しました

Monaca は、オンラインで HTML5 と JavaScript を使ってプログラムを書いて、Android または iOS のアプリ経由で実行させるサービスです。実際のアプリとしてビルドも可能ですが、フリーだと24時間に3回だけビルドできるという制限があります。が、開発だけならフリーでも十分です。実際 Android エミュレータ内で普通に動いています。

Monaca の運営会社はアシアル株式会社という日本のベンチャー企業です。ですから、全て日本語で情報が手に入ります。ライセンスの問い合わせも簡単に確認できるはずです。



エミュレータを使うにはいろいろありますが、一番の問題は 公式の apk では 実際問題動作しない事です。

そもそも、更新が 2012年12月19日 で止まっており。公式ページの方法でインストールできるのが Android 4.2.2 までです。それ以降でインストールができないのは、Android のセキュリティ上の問題でしょうが、adb install でインストール可能です( 削除はエミュレータ内のアプリの管理から削除できます )

しかし、仮にインストールしたとしても『ある事』をしないと落ちます。結局最新の apk を apk ダウンローダで入手して adb install するのが推奨されますが、公式にはそんな事できるはずも無いので放置されているみたいです。

『ある事とは』



この行を削除すると、古い apk でも動作しました。何故これが解ったかというと、エミュレータを Android Studio で動作させながらログを監視すると、この行が原因と思われるエラーが出たからです。

最新を使ったほうが・・・

いいのは決まっています。今回動いたからといっていつ動かなくなるか解りませんし、最新のほうが機能が豊富です。但し、Android エミュレータで動かすには公式のサポートは望めないでしょう。しかし、エミュレータで動作する事は、実機を用意しなくていいのでとても魅力的です。





▼ 画像を掲載しやすいので、NAVER でまとめました。
Android エミュレータで使う Monacaデバッガー の選択肢


エミュレータ環境もそれなりに面倒です

非力または古い PC ですといろいろ制限がありました。

armeabi-v7a しか動かない、ちょっと古い PC で、どーしてもエミュレータが起動しなくてやった事

関連する記事

SDK( android-sdk_r24.0.2-windows.zip ) でまずエミュレータ作って、あとから Eclipse と Android Studio で動作確認
Android 5.1 エミュレータ + Android Studio 1.1.0 実行イメージ
Android 5.1 + Pleiades( Luna ) + ADT Plugin




タグ:android MONACA
posted by lightbox at 2015-03-28 01:04 | Android | このブログの読者になる | 更新情報をチェックする

2015年03月25日


ブラウザ上にあるデータを PHP で受け取って、VBScript のコードを作成して事前に作成済のテンプレート Excel にデータをロードして印刷で使用する

ブラウザ上のデータ

ブラウザ上は UTF-8 である事を想定しています。Shift_JIS のページからでは VBScript では変換しづらい文字が送られる可能性があります。UTF-8 のページかあるいは、『accept-charset="UTF-8"』を属性にもつ FORM 要素を使って、PHP に UTF-8 でデータを出力します。

VBScript を UTF-8 で作成

Windows の VBScript で ファイルを UTF-8 にする場合は、BOM が先頭に付加されたファイルである必要があります。( これが無いものは UTF-8N と呼ばれています )。なので、PHP で chr(0xef) と chr(0xbb) と chr(0xbf) を先頭で出力しています

Excel の処理

Excel 関連の関数はあらかじめ埋め込んであります。VBScript に対してのデータのインターフェイスは RESOURCE 要素内に $_POST データを \r\n( 行 ) を区切り文字にして並べています。このデータを配列に変換して、Excel の特定のシートに縦に並べます。

テンプレート Excel は、そのデータを参照して別のシートに印刷フォーマットを作成してあります。Excel のテンプレートとこの .wsf ファイルを同じフォルダにダウンロードしてスクリプトを実行すると、デスクトップに Excel が開いて後は印字するだけとなります
<?php
$file = 'excel.wsf';

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');

print chr(0xef);
print chr(0xbb);
print chr(0xbf);
?>
<JOB>
<COMMENT>
********************************************
※ COMMENT 要素内はコメントです
********************************************
</COMMENT>

<OBJECT id="ExcelApp" progid="Excel.Application" />
<OBJECT id="Wsh" progid="WScript.Shell" />
<OBJECT id="FileSystem" progid="Scripting.FileSystemObject" />

<SCRIPT language="VBScript">
'*******************************************
' 処理開始
'*******************************************

' ソース内テキストデータの取得
aData = Split( RegTrim(GetResource("myTextData")), vbCrLf )

' 変数定義( 必須ではありません )
Dim MyBook,TargetSheet,TargetExcel,ExcelFile,TargetName,PrintSheet

' テンプレート Excel ブックのパス
' 基本的には、カレントを使用するほうが良いでしょう
ExcelFile = Replace( aData(0), "\\", "\" )
' データ作成用の対象者の日本語名( 余計なスペースを省いています )
TargetName = Replace( aData(1), " ", "" )
TargetName = Replace( TargetName, " ", "" )
' データをセットするシート名
TargetSheet = aData(2)
' 印字するシート名
PrintSheet = aData(3)

' テンプレート Excel から作成する新しいブックファイル名
TargetExcel = Replace(LCase(ExcelFile), ".xlsx", "" ) & "_" & TargetName & ".xlsx"

' コピーして作成
FileSystem.CopyFile ExcelFile, TargetExcel, True

' Excel 読み込み
Set MyBook = ExcelOpen( TargetExcel )

' シート選択
Call ExcelSelectSheet(MyBook, TargetSheet)

' 印字情報の一覧 ( aData(4) 〜 )
For I = 4 to Ubound(aData)
	Call ExcelSetCell(MyBook, TargetSheet, 2, I-3, aData(I) )
Next

Call ExcelSelectSheet(MyBook, PrintSheet)
Call ExcelSave(MyBook)
Call ExcelQuit(MyBook)

LoadExcel( TargetExcel )

'*******************************************
' 文字列前後の漢字スペースを含むホワイトスペースの削除
'*******************************************
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

' ******************************************************
' ブックを デスクトップに開く
' ******************************************************
Function LoadExcel(strPath)

	Call Wsh.Run( "RunDLL32.EXE url.dll,FileProtocolHandler " & _
		strPath )

End Function

' ******************************************************
' ブックを開く(Workbookを返す)
' ******************************************************
Function ExcelOpen(strPath)

	Set ExcelOpen = ExcelApp.Workbooks.Open(strPath)
	
	' アクティブなウィンドウを最大化
	ExcelApp.ActiveWindow.WindowState = 2

End Function

' ******************************************************
' 表示状態の変更
' ******************************************************
Function ExcelVisible(bFlg)

	ExcelApp.Visible = bFlg

End Function

' ******************************************************
' 終了
' ******************************************************
Function ExcelQuit(WorkBook)

	If TypeName(WorkBook) = "Workbook" Then
		' 保存した事にする
		WorkBook.Saved = True
	End If
	If IsObject(ExcelApp) Then
		ExcelApp.Quit
	End If

End Function

' ******************************************************
' シート名によるシート選択
' ******************************************************
Function ExcelSelectSheet(MyBook, strSheetName)

	MyBook.Sheets(strSheetName).Select

End Function

' ******************************************************
' 番号よるシート選択
' ******************************************************
Function ExcelSelectSheetByNo(MyBook, No)

	MyBook.Sheets(No).Select

End Function

' ******************************************************
' シート名によるシート複写
' ******************************************************
Function ExcelCopySheet(MyBook, strSheetName, strNewSheetName)

	MyBook.Sheets(strSheetName).Copy (MyBook.Sheets(strSheetName))
	MyBook.ActiveSheet.Name = strNewSheetName

End Function

' ******************************************************
' シート名によるシート名変更
' ******************************************************
Function ExcelRenameSheet(MyBook, strSheetName, strNewSheetName)

	MyBook.Sheets(strSheetName).Name = strNewSheetName

End Function

' ******************************************************
' 上書き保存
' ******************************************************
Function ExcelSave(MyBook)

	MyBook.Save

End Function

' ******************************************************
' 名前を付けて保存
' ******************************************************
Function ExcelSaveAs(MyBook, strFileName)

	MyBook.SaveAs strFileName

End Function

' ******************************************************
' セルへのデータセット
' ******************************************************
Function ExcelSetCell(MyBook, strSheetName, x, y, Data)

	MyBook.Sheets(strSheetName).Cells(y, x) = Data

End Function

' ******************************************************
' セルへのフォントサイズセット
' ******************************************************
Function ExcelSetCellFontSize(MyBook, strSheetName, x, y, Data)

	MyBook.Sheets(strSheetName).Cells(y, x).Font.Size = Data

End Function

' ******************************************************
' シートの数
' ******************************************************
Function ExcelGetSheetCount(MyBook)

	ExcelGetSheetCount = MyBook.Sheets.Count

End Function

' ******************************************************
' 列の自動調整
' ******************************************************
Function ExcelAutofit(MyBook,strSheetName)

	MyBook.Worksheets(strSheetName).UsedRange.EntireColumn.Autofit()

End Function
</SCRIPT>

<COMMENT>
********************************************
 ソース内テキストデータ
********************************************
</COMMENT>
<RESOURCE id="myTextData">
<![CDATA[
<?php
	foreach( $_POST as $key => $val ) {
		print $_POST[$key] . "\r\n";
	}
?>
]]>
</RESOURCE>

</JOB>

この処理はもともと、IE 上に表示されたデータを IE上のスクリプトとして VBScript を使用し、Excel.Application で Excel を使って印刷処理を実装していたものです。今でも利用していますが、今後の将来を考えると、Google Chrome でも使用可能にする為にスクリプトをダウンロードさせる形式を作ってみました。

ダウンロードした Excel ブックのパス(テンプレート)はセキュリティ上の問題で取得できませんが、社内であればネットワーク上に置いておけば固定のパスとして利用可能だと思います。




タグ:EXCEL VBScript PHP
posted by lightbox at 2015-03-25 15:09 | VBS + オブジェクト | このブログの読者になる | 更新情報をチェックする

2015年03月15日


画像を大きく見る為のウインドウを開くボタンの作成するサービス

▼ このページへのリンク


Lightbox や Shadowbox のような JavaScript ライブラリはとてもかっこよく表示できるのでとても自己満足はできるのですが、イザその画像の詳細を見たくて実際のサイズで見たいときにはあまり意味がなかったり。特に、イラストを作った直後で、ブログに貼り付けてから再度見直したい時にはなんか違うなぁ(画像小さいし)・・・・なんて思う事もあったので、単純に大きく開くボタンを作ってはみたのですが、結構コードが長くて使いまわしがつらかったので作りました。

『関数にすれば?』

という意見も頭の中には少しあったのですが、このほうがイラスト毎に後から開いたウインドウの背景をカスタマイズできるので、これでいいかなと思いました。

▼ 通常ボタン
 

上で開くイラストは、背景が透過しているのでこんなふうにカスタマイズできます。

▼ インラインに JavaScript で背景を追加したカスタマイズボタン
 

5行目が追加部分です
<input type="button" value="最大表示" onclick='
	var w=1000,h=860;
	hwin=window.open("about:blank","","width="+w+",height="+h+",scrollbars=yes,resizable=1,left="+(screen.width-w)/2+",top="+(screen.height-(h+100))/2);
	hwin.document.write("&lt;img src=&#92;&#34;https://lh6.googleusercontent.com/-	FQO8GbFoAUI/VQVVLysRSzI/AAAAAAAAY1g/trUU_gZMCkQ/s1200/Aiko6_maid.png&#92;&#34;&gt;");
	hwin.document.body.style.background="url(https://lh5.googleusercontent.com/-yzSGYSSjnFo/VP8HrL7VPLI/AAAAAAAAYts/r_GE5g8ee9s/s1200/marge_city_a01.png) no-repeat 0px 100px";
'> 



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

2015年03月14日


Excel が最大化時に、タスクバーの後ろに隠れてしまう現象の対処法 / Google Chrome だと、タスクバーが全て隠れてしまいます



対処法と言うより、それが原因でなったのが解っているのですが、どのような時になるのか良く解っていません。その原因は、『拡大鏡』です。元にもどすには、拡大鏡を起動して、表示方法として3つあるうちの、『最大化』と『固定』を変更したり、固定状態で画面上部に表示させたり、画面の中で表示させたり切り替えているうちに元に戻ったりします。

※ デスクトップ上部に張り付くような状態にすると、元に戻るようです
( 拡大鏡をドラッグしてテスクトップの上にドッキングさせます )


posted by lightbox at 2015-03-14 17:46 | Microsoft Office | このブログの読者になる | 更新情報をチェックする
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 終わり