FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

アンドロイドに乗り換えました

遂にAndroidスマホに乗り換えました。

機種は auのIS11SH。 いわゆるスライドする方のAQUOSフォンすね。
気取らずシンプルなデザインと裸眼立体視ディスプレイで即決でした。

テンキー付きなのも、フリック入力にまだ慣れてないんで
急いで入力しないといけない場合に有ってよかったなとか思います。
(十字キーの上下が私のぶっとい親指に対して狭すぎではありますが・・・)



裸眼立体視は会社の先輩の3DSを少し見せてもらった程度で
ほぼ初体験みたいなもんだったんですが、
店頭で初めて実機を見たときに、(そのとき立体視ディスプレイというの忘れてたんですが)
アイコンが背景からクッキリ離れていて何事かと思ってしまいました(笑)



Android機はバッテリー持ちがどうとか発熱がすごいとか周りから聞いてますが
色々調整した上で、購入してこの2日であんまりそんな事はないですねぇ。
本体の発熱がひどくなるのはワンセグ使ったときぐらいで
内部温度は平均して29度前後を保ってるみたいです。



せっかくAndroidにしたので、色々とアプリ作って弄ぼうかな~とか。
でもネタが無い。



ぬるぽ
スポンサーサイト

テーマ : 日記
ジャンル : 日記

【PHP】WEBリクエストでモバイルユーザを一意に識別する

ひさびさの更新だけどタダの備忘録なんだよ。
・・・ちゅうか備忘録が本分ですな(´・ω・`)

仕事で、ケータイ端末の端末ID(というかユーザID)を取得するPHPコードを使ったのでメモ
PHPである必要はないすけど(重要なのはヘッダパラメータ名)

Docomo (iモードID)
 $id = $_SERVER[ "HTTP_X_DCMGUID" ];
※)ユーザ(契約者)を一意に識別できる
※)URLパラメータへ"guid=ON"を含める事でヘッダへ付加される
※)ユーザが任意で、iモードIDを非通知にできる
※)SSL通信時は付加されない


au (EZ番号)
 $id = $_SERVER[ "HTTP_X_UP_SUBNO" ];
※)ユーザ(契約者)を一意に識別できる
※)ユーザが任意で、EZ番号を非通知にできる


SoftBank (ユーザID)
 $id = $_SERVER[ "HTTP_X_JPHONE_UID" ];
※)ユーザ(契約者)を一意に識別できる
※)ユーザが任意で、ユーザIDを非通知にできる



いちいち「ユーザ(契約者)を一意に識別できる」と注釈してますが、
ドコモとソフトバンクは、「端末」を一意に識別する方法があります。
が、古い方法なので無視なんだよ。
(実際ウチの業務でも使ってないみたいやし)

以上

ぬるぽ~

テーマ : プログラミング
ジャンル : コンピュータ

HTA入門

仕事でちょっとしたツールを作ることになったんだよ。

「WEBサーバアドレス」「サーブレット名」「サーブレットへのパラメータ」
の3つの要素を、それぞれ予め決め用意された文字列の中から選択し、
それらを連結した1行テキストとしてローカルシステムのテキストファイルへ出力するというもの。
"http://(サーバドメイン) + /(サーブレット) + ?=(パラメータ)"みたいな感じ。

とりあえず完成系の理想としては
・3つのDropDownリストボックスにより組み合わせ選択
・「出力」ボタンでテキストファイル生成
という感じのシンプルなGUIアプリケーション。

この規模のアプリでC++/CLIとかでフォーム配置してファイル出力コード書いてコンパイル
・・・というのは若干メンドーに感じてしまったので、スクリプト的な何かで済ませようと画策。
で、早速WSHでどうにかできないかなと思ったんですが、WSHでGUI付きアプリ作るのって、
ちょっとメンドーなんだよ。

そんな訳で他に方法がないか探していたところ、「HTA」なる技術を発見。
HTA入門に至るのであった。

What is "HTA"?
HTML Application

DHTMLの機能を、Windowsデスクトップアプリケーションとして利用する為の仕組み。

要約すると、この1文で表現されます。
色々省略して簡単に説明してしまうと、
HTAのソースはテキストファイルでマークアップされた HTML+CSS+Script ですし、
既存のHTMLファイルの拡張子を".hta"としてしまえば、そのままHTAアプリとして動作します。
こーゆーモノです。

HTMLと違うのは、スクリプトでローカルファイルシステムを扱うことができる という点です。
記事冒頭で示した"3つのDropDownリスト と 1つのボタンを持つGUIアプリ"と言う要件は
HTML文書にて簡単に実現できます。
が、HTML(というかWEBブラウザ)のセキュリティ問題上、ローカルファイルを扱うスクリプトを書く事は出来ません。
HTAでは"FileSystemObject"というオブジェクトによりローカルファイルを操作する事が可能になります。

この程度の小規模アプリであれば、小一時間ほどでパパッと作れてしまいます。
今まで知らなかったのが惜しまれる・・・
まあ私がプログラム始めるより前から存在した古い技術ですから、仕方ないですけども。

How to
HTML+CSS+Script を利用した技術ですから、Webページを作成する知識さえあれば、
新たに勉強しなければならない事というのはありません。
なのでこの辺は割愛。

HTA固有の追加要素として、HTMLの head要素 内に"<HTA:APPLICATION ... />要素"が追加されています。
この要素では、デスクトップアプリケーションとしての外観(ボーダライン等)や起動引数、
シングルインスタンス設定 等々が出来るようになっています。

以下に HTA:APPLICATION要素 の属性一覧をメモっておくんだよ。
(各属性のデフォルト値は太字で表記)


id
ID。共通属性のやつ。スクリプトからHTAオブジェクトを参照する際には必要。
値: ID名として有効な文字列

applicationName
アプリケーション名。singleInstanceが設定されている場合、この名前が識別に利用される。
※タイトルバーとタスクバーに表示される名前は、これでは無い。これらはtitle要素で設定する。
値: 文字列

singleInstance
シングルインスタンス(単一起動)可否。applicationName属性が設定されていなければならない。
値: yes / no

version
バージョン。システムに対して何の意味が有るのかは不明。
値: 文字列

showInTaskbar
タスクバー表示の可否。
値: yes / no

navigable
リンク先ドキュメントを同一ウインドウへ読み込むか新規ウインドウで開くか。
値: yes / no

windowState
起動時のウインドウステート。
値: normal / minimize / maximize

caption
タイトルバーの表示可否
値: yes / no

border
ウインドウボーダースタイル。"none"でタイトルバーと外側ボーダーが非表示となる。
値: none / thick / thin / dialog

borderStyle
ウインドウの内側のボーダースタイル。
値: normal / complex / raised / static / sunken

innerBorder
3D効果(内側のボーダー)の表示可否。
値: yes / no

contextMenu
コンテキストメニュー(右クリックメニュー)の表示可否
値: yes / no

sysmenu
システムメニュー(タイトルバーのアイコンクリックroタスクバー右クリックのメニュー)表示可否
値: yes / no

selection
ウインドウの内容の選択動作可否。"no"の場合はコンテキストメニューも表示されない。
値: yes / no

scroll
スクロールバーの表示設定
値: yes / no / auto

scrollflat
スクロールバーをフラット効果で表示するか。
値: yes / no

icon
アイコンファイル設定。
値: 有効なicoファイルパス

maximizebutton
最大化ボタンの表示可否
値: yes / no

minimizebutton
最小化ボタンの表示可否
値: yes / no



記述例:


<head>

<hta:application
applicationName="this_name"
singleInstance="yes"
showintaskbar="no"
border="dialog"
/>

<title>タイトルなんだよ!</title>

</head>




以上、基本おわり。

ぬるぽ。

テーマ : プログラミング
ジャンル : コンピュータ

データモデル と データ型サイズ

久々の更新。
長らくお絵かきに没頭していてプログラムネタが無かった・・・
絵はpixivの方に投稿して終了。
満足の出来ではないですがね

今日はデータモデルとデータ型について備忘ログしてみるんだよ。

■データモデル
処理系が使用するデータ型のビット数を定義するもの。
char型 は 8bit で int型 は 32bit とか。


よく知られているデータモデルとデータ型のサイズを
表にまとめてみます ( ・ω・)っ
(C/C++の話です)

charchortintlonglong long(pointer)代表的な処理系
ILP328163232643232bit系の大半
LLP648163232646464bitWindows
LP6481632646464UNIX系
ILP6481664646464UNIX系(少数)


char, short, longlong はどの処理系でも同じビット長なのがわかります。
又、ポインタは処理系の 基本ワード長 に準拠しているんだよ。・・・当たり前ですが。

自分がCを始めた頃(Win2000→WinXPの移行期)は
「int は処理系に最適なデータサイズになる。今は32bitでも将来64bitマシンが出たら
 int も64bitになるかもしれないから、移植性の高いソース書くなら気をつけなさいよ」
という話を学校で聞かされたっけな。

でも現実、int が64bitなのは ILP64 だけで、しかもこのモデルは一般的にはほとんど
普及していないので、余計な心配でしたな。



最後に、いろいろ調べていて意外な事に気づいたんですが、
"long" って、本来のC++の仕様的には「データ型」ではなくて「型修飾子」なんすね。
整数型は"int(とchar)"しかない。
本来は "long" は "long int" って書くみたいなんだよ。
"short" と "long long" も "short int" "long long int" となる。
へえ~。 めんどくさ!

C++って、こういうイランお節介な省略型が
C++初心者の理解の妨げになっているような気が
しないでもない今日この頃。

ぬるぽ~

テーマ : プログラミング
ジャンル : コンピュータ

explicit のプチメモ


explicit の備忘メモなんだよ。

explicit はコンストラクタ引数の暗黙的な変換を禁止する。


//* 1つの仮引数をとるコンストラクタ
class TestA
{
Test1(int a);
};
//* 第2仮引以降をデフォルト引数で省略できるコンストラクタ
class TestB
{
Test2(float a, int b=0, int c=0);
};

これらのコンストラクタを持つクラスを具体化する場合、
第1引数の暗黙的変換により以下のような構文が許される。


TestA tA_1(0);
TestA tA_2 = 0; // 'tA_2(0)'と等価

TestB tB_1(0.f);
TestB tB_2 = 0.f; // 'tB_2(0.f)'と等価

コンストラクタを explicit で修飾すると、このような暗黙的変換を禁止する。


class TestA
{
explicit Test1(int a);
};
class TestB
{
explicit Test2(float a, int b=0, int c=0);
};


つまり、「tA_2 = 0」及び「tB_2 = 0」はエラーとなる。


・・・と。
イロイロなサイト様でこのように解説されているが、
実際この構文が許されて何が困るの? って感じだよね。初心者には。

で、こんなとき困ります。


class TestA
{
Test1(int a);
};

void Func(TestA a) { /*ほげほげ*/ }

int main()
{
Func(1); // ココが問題
}

Func()関数への引数の '1' は暗黙的変換により 'TestA(1)' となり、
この構文は許されてしまいます。

tA_2=0 はその特殊(?)な構文から、暗黙的変換を利用している事を明らかに読み取れる訳ですが、
Func(1) はまるで Func()関数が int の仮引数を取っているかのようにしか見えません。


これは可読性の観点から「こんなコード書いたヤツはシベリア送りじゃぁぁぁ!」と言わざるを得ない。
・・・まあクラス変数を実体渡しするなんて普通無いんですが。


というわけで、引数の暗黙的変換が行なわれうるコンストラクタは
explicit で修飾をしておいた方が無難なので
そうしておきましょう、ということ。

*おまけ*
void Func(int) というオーバーロード関数があった場合、
void Func(TestA) とどちらが呼ばれるのか?
VC2008でコンパイルしたところ、void Func(int) のほうが呼ばれました。



ぬるぽ~

テーマ : プログラミング
ジャンル : コンピュータ

プロフィール

iwataros

Author:iwataros
20代独身・ダーク♂プログラマ。
仕事でモバイル向けゲームアプリ開発してます。
でもモバイルはあんま興味ないです。

XboxLiveで一緒にゲームしてくれる方、歓迎するんだよヽ(゚∀゚)メ

活動拠点:大阪の真ん中より北寄り
出身:鳥取
業務PG環境:JavaME,JavaEE,PHP+Smarty
主PG言語:C++,Java
たしなみPG言語:C++/CLI,ObjectiveC
趣味:プログラミング,TVゲーム,落書き(メカ限定),部屋の模様替 
特技:人の口癖がうつる
動物:ねこ派
メカ:河森派
神ゲー:RAYSTORM,クロムハウンズ
好ゲー:ArmoredCoreシリーズ,HALOシリーズ,カスタムロボシリーズ
XboxLiveID:jp Pon
TwitterID:iwataros

バグ消毒カウンター
あなたは
XboxLive
Twitter
[pixiv]
カレンダー
11 | 2018/12 | 01
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
カテゴリ
最新記事
最新コメント
検索フォーム
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。