コピペして新規プロジェクト作成

投稿者: | 2014年3月31日

前回作成したスケルトンプロジェクトをコピペして簡単に新規プロジェクトを作成します。

■プロジェクトのコピー手順
1.コピー元のプロジェクトを選択
2.右クリックメニューからコピー→貼り付け
3.プロジェクトのコピー画面で新しいプロジェクト名を入力→OK
CopySkeleton01
4.AndroidManifest.xml→Manifest→プロジェクト名にあわせてPackageを変更
CopySkeleton02
5.genが自動的に更新される
CopySkeleton03
6.srcのPakage名を選択→F2キーを押してパッケージ名の変更
CopySkeleton04
7.res→values→app_name→Valueを変更
CopySkeleton05

■起動画面
CopySkeleton06

ランチャーアプリのスケルトン作成

投稿者: | 2014年3月29日

Eclipse4.3.2を操作して、タイトルだけを表示するランチャーアプリ(ランチャーメニューから起動できるアプリ)を作成します。

■新規プロジェクト作成
1.ファイル→プロジェクト→Androidアプリケーション・プロジェクト→次へ
2.新規Androidアプリケーション画面に必要な項目を入力→次へ
Skeleton02
※画面に警告メッセージが出ているように本来はパッケージ名をユニークな名前(ドメイン名の逆順+アプリ名)にする
3.プロジェクトの構成→次へ→ランチャー・アイコンの構成→次へ
4.アクティビティーの作成はチェックを外す
Skeleton03
※チェックを付けると簡単に作成できますが、余分なものが付いてしまうので、シンプルにするため後で自分で作成します
5.完了ボタンを押すと、プロジェクトが作成される

■画面レイアウトを作成する
1.res→layout→新規→その他→Android XML レイアウト・ファイル→次へ
2.New Android Layout XML File画面に必要な項目を入力
Skeleton04
3.完了ボタンを押すと、レイアウトファイルが作成される
※同時にgen→com.example.skeleton→R.layout.mainが追加される
Skeleton18

■画面レイアウトを操作するクラスを作成する
1.src→新規→クラス
2.Javaクラス画面に必要な項目を入力
Skeleton05
3.完了ボタンを押すと、クラスファイルが作成される
4.ソース→メソッドのオーバーライド/実装(V)
5.onCreate(Bundle)をチェック
Skeleton06
6.OKボタンを押すとメソッドが追加される
7.追加されたメソッドの最後にsetContentView(R.layout.main);を追加する
Skeleton07

■マニフェストファイルに、起動クラスの登録、ランチャーアプリの設定
1.AndroidManifest.xml→アプリケーション→追加→Activity→OK
2.画面右側Nameの参照ボタン→MainActivity→OK
3.MainActivity→追加→Intent Filter→OK
4.Intent Fileter→追加→Action→OK
5.画面右側Nameにandroid.intent.action.MAINを入力(MainActivityを起動クラスとして登録)
6.MainActivity→追加→Category→OK
7.画面右側Nameにandroid.intent.category.LAUNCHERを入力(ランチャーアプリとして設定)
Skeleton16

■動作確認
1.Skeleton右クリック→実行→Androidアプリケーション
Skeleton17

■起動画面
Skeleton01

C言語でfread検証

投稿者: | 2013年10月25日

ちょっと仕事で調べる必要があって、freadの検証。

ソースコード

/*
	main.cpp
*/

#include <stdio.h>
#include <time.h>
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "Winmm.lib")

#define BUF_SIZE	1024

static LARGE_INTEGER nFreq, nBefore, nAfter;
static LONGLONG DiffTime();

static int test1(FILE *fp, const char *fileName, char *buf);
static int test2(FILE *fp, const char *fileName, char *buf);

int main(int argc, char *argv[]) 
{
	FILE *fp = NULL;
	char buf[BUF_SIZE];
	const char *fileName = "D:\\test.dat";

	QueryPerformanceFrequency(&nFreq);

	test1(fp, fileName, buf);
	test1(fp, fileName, buf);

	test2(fp, fileName, buf);
	test2(fp, fileName, buf);

	return 0;
}

LONGLONG DiffTime()
{
	return (nAfter.QuadPart - nBefore.QuadPart) * 1000 / nFreq.QuadPart;
}

int test1(FILE *fp, const char *fileName, char *buf)
{
	int err = 0;
	int readLength = 0;
	int readTotal = 0;	

	printf("--- 実験1 ---\n");

	fp = fopen(fileName, "rb");
	if (fp == NULL) {
		printf("open error. filename=%s\n", fileName);
		return -1;
	}

	QueryPerformanceCounter(&nBefore);
	while(1) {
		readLength = fread(buf, sizeof(char), BUF_SIZE, fp);
		readTotal += readLength;
		if (readLength != 1024) {
			err = ferror(fp);
			printf("fread length unmatch. ferror=%d, readLength=%d\n", err, readLength);
			break;
		}
	}
	QueryPerformanceCounter(&nAfter);
	printf("readTotal=%d, time=%dms\n", readTotal, DiffTime());

	fclose(fp);

	return 0;
}

int test2(FILE *fp, const char *fileName, char *buf)
{
	int err = 0;
	int readLength = 0;
	int readTotal = 0;	

	printf("--- 実験2 ---\n");

	fp = fopen(fileName, "rb");
	if (fp == NULL) {
		printf("open error. filename=%s\n", fileName);
		return -1;
	}

	QueryPerformanceCounter(&nBefore);
	while(1) {
		readLength = fread(buf, BUF_SIZE, 1, fp) * BUF_SIZE;
		readTotal += readLength;
		if (readLength != 1024) {
			err = ferror(fp);
			if (err != 0) {
				printf("fread error. ferror=%d, readLength=%d\n", err, readLength);
				break;
			} else {
				printf("eof. ferror=%d, readLength=%d\n", err, readLength);
				break;
			}
		}
	}
	QueryPerformanceCounter(&nAfter);
	printf("readTotal=%d, time=%dms\n", readTotal, DiffTime());

	fclose(fp);

	return 0;
}

結果

--- 実験1 ---
fread length unmatch. ferror=0, readLength=344
readTotal=336724312, time=4591ms
--- 実験1 ---
fread length unmatch. ferror=0, readLength=344
readTotal=336724312, time=3490ms
--- 実験2 ---
eof. ferror=0, readLength=0
readTotal=336723968, time=3024ms
--- 実験2 ---
eof. ferror=0, readLength=0
readTotal=336723968, time=3349ms

ソースコードを表示するWordPressプラグイン「SyntaxHighlighter Evolved」

投稿者: | 2013年10月18日

■インストール手順
プラグイン→新規追加→「SyntaxHighlighter Evolved」を検索→「いますぐインストール」をクリック→有効化

■どんなふうに表示できるかテスト

ソースコード
[php]
ここにコードを入れます1
ここにコードを入れます2
[/php]
[css autolinks=”false” classname=”myclass” collapse=”false” firstline=”1″ gutter=”true” highlight=”1″ htmlscript=”false” light=”false” padlinenumbers=”false” smarttabs=”true” tabsize=”4″ toolbar=”true” title=”example-filename.php”]
ここにコードを入れます1
ここにコードを入れます2
[/css]
[code lang=”js”]
ここにコードを入れます1
ここにコードを入れます2
[/code]
[sourcecode language=”plain”]
ここにコードを入れます1
ここにコードを入れます2
[/sourcecode]

プレビュー

ここにコードを入れます1
ここにコードを入れます2
ここにコードを入れます1
ここにコードを入れます2
ここにコードを入れます1
ここにコードを入れます2
ここにコードを入れます1
ここにコードを入れます2

■参考
http://ozpa-h4.com/2012/03/06/wordpress_plugin_syntax_highlighter_evolved/

wshで自動ログイン

投稿者: | 2013年10月6日

ときどきWebページ等でユーザー名とパスワードを入力することがあるんですが、あまり何回も入力するのは、面倒です。
自宅ではいろいろ自動化ソフトがありますが、会社のPCだと勝手に好きなソフトをインストールできないし・・・。

そんなわけで、WSH(Windows Script Host)を使って、スクリプトファイルを起動するだけで、自動ログインできるようにしてみました。
作成したスクリプトを使いやすい場所にショートカット等で置くと便利そうな気がしきます。

‘login_basic.vbs

Option Explicit

‘オブジェクト変数の宣言とWshShellオブジェクトの作成。
Dim objWshShell
Set objWshShell = WScript.CreateObject(“WScript.Shell”)

‘アクティブにする。
Dim bActive
bActive = false
bActive = objWshShell.AppActivate(“ホームページのタイトル名1 – Google Chrome”)
If bActive = False Then
‘上のタイトルが見つからなかったら別名でリトライ
bActive = objWshShell.AppActivate(“ホームページのタイトル名2 – Google Chrome”)
End If

If bActive Then
‘ユーザー名
objWshShell.SendKeys “user”
objWshShell.SendKeys “{Tab}”
‘パスワード
objWshShell.SendKeys “password”
objWshShell.SendKeys “{Enter}”
Else
MsgBox “ウィンドウが見つかりません。” + vbCrlf + “ウィンドウのタイトルを確認してください。”, vbOKOnly + vbQuestion, “確認”
End If

‘WshShellオブジェクトの廃棄。
Set objWshShell = Nothing