ラベル development の投稿を表示しています。 すべての投稿を表示
ラベル development の投稿を表示しています。 すべての投稿を表示

2013年1月24日木曜日

sqlite.netのBOOLEAN型

sqlite.netを使ってプログラムを書いていてハマったのでメモメモ。

まず、sqlite自身にあまり細かい型が無い事は知ってました。そしてsqlite自身、それからsqlite.net側の処理として型が拡張されておりBOOLが使えるとの事なので試しにBOOL型(BOOLEAN型でもいけた)のところにTRUEを入れるSQLを書いてみる・・・入りました。 まぁ、文字列として入っているから当然なんですけど。で、、、C#で読み出してみると「false」が返ってきます。ヤッター!

なんでだろーっとソースコードを見てみると・・・テキストとして

「yes」「y」「1」「on」

trueとして

「no」「n」「0」「off」

falseとして処理されております・・・。

あれ?trueとかfalseは!?普通の感覚だとBOOLEANとか言われたらtrue/falseとかじゃないの!?

まぁ、その文字の判定の前に渡されたオブジェクトがbool型(C#的な)だったらboolとして処理するみたいな形になっているのでそれで満足してそれ以外の型で処理する様になっている様なのですが・・・そもそもsqliteにはbool型無いし、C言語(sqliteはCで書かれている)的にもbool無いしこの処理って意味あるのか!?

その前の処理までは追っていないのでそこで何やらやっている可能性もあるけど・・・まぁちゃんと値返ってきてないし無いわな。

<閑話休題>

ちょっと調べてみるとBoolean型自体はSQL的にはSQL:1999で定義されていてtrue/falseで処理出来る様です。なのでSQL的には間違った物ではないのですがsqlite3のドキュメントを読むと・・・「SQL92に一応準拠」との事。

まー、じゃあしょうがないよな・・・?

しょうがないよな!?

いや、やっぱりyes/noとか処理してるんだしsqlite.netでtrue/falseの判定すべきだろう。

まぁ世間一般的にSQLの世界としては規格化されていてもブッチしている実装はいっぱいあるわけで、BOOLEANもあまりサポートされていない存在らしいので深く考えずに数値型に0/1入れて処理しておくのが幸せになれる方法なんでしょうけどね。

2012年11月1日木曜日

Pythonの開発の為にvirtualenvを入れてみる

pythonの開発環境として2.7と3.2を混在させたいのでvirtualenvを入れようと思ったけどロクに設定をしていない事に気づいた。やっぱりこういうのは色々面倒なのでメモを残しておくことにする。

とりあえず使用環境にはActivePythonではなくpython.orgから落としたWindows版の物をそれぞれ展開して配置しただけ。パスも通していないのでまだpythonは実行出来ません。

まずvirtualenvを入れるにはpipなるものがあると便利らしい。パッケージ管理のプログラムみたいね。で、pythonの設定も出来てないのにどうやってやるんだヨ!って話でまずはeasy_installなるものを入れる事にする。もう既によく分からなくなってきたゾ

 http://pypi.python.org/pypi/setuptools

ここから手持ちマシンは64bit環境(Windows8 Pro)なのでez_setup.pyを落としてきてpythonの実行ファイルと同じパスにコピーする。うちの場合は「C:\app\Python27」「C:\app\Python32」って感じに入れてあるので前者のパスにコピーですな。で下記のコマンドを実行。

PS C:\app\Python27>python ez_setup.py


これで勝手に「C:\app\Python27\Scripts」配下にeasy_installが入りましたぜ旦那。物を確認したらシステムの環境変数のpathに前者のパスを追加してPowerShellを開きなおす事でeasy_installが実行出来る状態に。

さぁ、次はpip入れちゃおうか。

PS C:\Users\Ore> easy_install pip

これだけ。とりあえずこれで前準備は完了ですな。次は本命のvirtualenvを入れてみましょう。

PS C:\Users\Suguru> pip install virtualenv

とりあえずこれでokみたいヨ!早速仮想環境を作ってプログラムを書くぜって事で作業フォルダに移動して

PS G:\develop\projects> virtualenv testapp

これで作業フォルダが完成。その中のScriptsフォルダに移動してactivateすれば仮想環境に!って事で

PS G:\develop\projects> cd testapp\Scripts
PS G:\develop\projects\testapp\Scripts> activate

・・・セキュリティの問題で実行出来ませんダトッ。PowerShell初心者なので初めて知った事実。(ちなみに普通のDOS窓ではこれでイケタ)

まぁ、折角だからPowerShellからもいけるようにトライしてみるゼィ。とりあえず現在の設定の確認。

PS G:\develop\projects\testapp\Scripts> Get-ExecutionPolicy
Restricted

これは全面禁止状態の模様。じゃー全部許可したれって事で

PS G:\develop\projects\testapp\Scripts> Set-ExecutionPolicy Unrestricted

とやったら 

Set-ExecutionPolicy : レジストリ キー 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' へのアクセスが拒否されました。

ギャース。ダメじゃん。こりゃ管理権限で実行しないとダメだね・・・。で結局管理権限でPowerShellを実行してみたらいけました。が・・・なんか釈然としない物を感じますな、この方法は。せめてsudoみたいな感じで一時的に管理者権限でスクリプト実行出来るとかの方がマトモなんじゃ・・・。

なにはともあれこれで実行出来ましたよっと。

PS G:\develop\projects\testapp\Scripts> activate
(testapp) PS G:\develop\projects\testapp\Scripts>


2012年8月8日水曜日

python-ldapをWindows環境に入れる

メールサーバのアカウント管理をLDAPでやっているけど管理ツール無しでLDAPクライアントからいじるのが苦痛になってきたのでpythonで簡単な管理プログラムを作ってみることに。

ある程度の骨組みは出来たのでLDAPとのコミュニケーション部分に着手しようと開発環境にpython-ldapを入れようとしたらこんなエラーが。

ActivePython 2.7.2.5 (ActiveState Software Inc.) based on
Python 2.7.2 (default, Jun 24 2011, 12:22:14) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import ldap
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\app\Python27\lib\site-packages\ldap\__init__.py", line 22, in <module>
    from ldap._ldap import *
ImportError: DLL load failed: %1 は有効な Win32 アプリケーションではありません。
dllの問題らしいという事まではすぐわかったんだけど、その先がさっぱりわからなかったんだけどふと64bit版のpythonを使っていることが問題ではないかという事に気付く。

python-ldapをオフィシャルな配布元にはWindowsの64bit版が無い気がするので下記の場所からamd64版を入手して問題なくインストールが完了。感謝。

http://www.lfd.uci.edu/~gohlke/pythonlibs/

Codecとかでもそうだったけど64bitと32bitの問題はしばらくはまりそうだねぇ。

2012年2月13日月曜日

embedded開発はじめました その2



昨日GCCをビルドしたりシコシコやっていたわけだけど面倒くさがりが早くも顔を出し結局バイナリでインストールしてしまいました。ダウンロードも含めて5分ぐらいで終了。あれ!?簡単すぎた・・・。

いや、ちょっと色々先達の情報を見ていたらWindows環境の人はSourcery CodeBench Liteとかでさくっと環境作っている訳ですよ。他にも開発環境売っている会社いっぱいあって、お試し用の廉価版とかを出している所もいっぱいあるわけです。じゃあマックも何かあるんかい!と思って調べたら。

http://www.yagarto.de/index.html#downloadmac

ああ、これでいんじゃね?って事でダウンロードしてイメージファイルをマウント。インストーラをダブルクリックしたら・・・あら不思議。簡単にインストール完了!

・・・しなかったorz よくよくドキュメント読んだらインストール先にインストーラをコピーしろだとさ。なんか単なる自己解凍形式だったみたい。というわけで、適当な所に展開をすると

yagarto-4.6.2

なんてフォルダーが出来たのでなんとなく

/usr/local/yagarto/yagarto-4.6.2

ここに配置(sudoさん使って移動してね)。その後マニュアルに書いてある通りにパスを通しておしまい。

$ vi ~/.bash_profile


export PATH="$PATH:/usr/local/yagarto/yagarto-4.6.2/bin"

export PATH="$PATH:/usr/local/yagarto/yagarto-4.6.2/tools"


これで

$ arm-none-eabi-gcc --version

とかやって反応があったら一段落。一応M4にも対応しているのを確認して一安心。

開発環境なんぞさっさと揃えて先に進みたいからとりあえず今日はこれで良しとする。もっと最適化をしたいとか色々欲が出て来たら自前でビルドも考えようと言う事で今日は気持ちよく寝れそうです。

余談ですが昼休みに購買に行ったらinterfaceの新しい号の特集がuCLinuxで思わず購入してしまいました。ついでにカメラモジュールの記事があったトラ技も。なんかタイムリーにもほどがあるでしょ・・・。




2012年2月12日日曜日

embedded開発始めました



なんか本業そっちのけな見出しです。まぁ良かろう。

という訳で、マイコンボード上に勉強がてら一から積み上げた簡単なシステムを構築してやろうというところをゴールにすえます。現状、一般的に買い易い物はarm系という事でPandaやらBeagleやらがお買い得だしAndroidとかもモリモリ動いちゃうのですが、学習用という意味でもう少しシンプルな物という事で最初のターゲットをCortex-M4に定めてSTM32F4-Discoveryをお買い上げ。

まぁ、本業関連でM4自体はちょっとDSP的な処理も出来るマイコンというイメージだけど実際のところどのくらい性能出るんよ?ってのを検証したいというのが本当の目的だったりします。Cortex-A8/A9までは必要無いけどお安く程々に色々出来そうという期待も込めて。NetDuinoみたいにArduino互換でお手軽に使える様になるとHappyですね。

まずは開発環境を整えないといけないのでメインマシンのMacBookAir上にクロスコンパイル環境を構築してボード上で何かプログラムを実行出来るというところまで持って行くのを最初の目標にします。

まず、目標のイメージですけど

<図 後で埋める>

こんな感じかな?



  1. 開発環境(binutil/gcc/gdb)を用意する

  2. JTAG用にopenocdを用意する(今後の為に)

  3. 開発が楽な様にEclipseベースの環境を揃える

  4. 簡単なプログラムを作ってターゲット上で動かす

  5. 既存のOSをポーティングする




というわけでステップ1

コンパイラを用意しましょう。バイナリで配られている物もある様ですがとりあえず全部自分でビルドしていきます。自前ビルド自体に特に意味がある訳ではないですが。

用意したのは下記のバージョンのもの。

ビルド用(newlibはredhat、mpcはmpcのページ。その他はGNUのFTPから)



  • binutils-2.22

  • gcc-core-4.6.2

  • gcc-g++-4.6.2

  • gmp-5.0.4

  • mpfr-3.1.0

  • mpc-0.9

  • newlib-1.20.0




デバッグ用



  • gdb-7.4

  • openocd-0.5.0




ビルドの手順ですが最初下記のリンクを参照してGCC4.2.4のビルドをしたのですがヨクヨク調べてみたらM4で使うにゃ4.6以降じゃないとまずそうなのでしきり直します。基本的な流れ及びbinutil/newlib/gdbのビルドはコレに準拠でいきましょう。

http://www.ethernut.de/en/documents/cross-toolchain-osx.html

とりあえず今日は負けという事でorz

そういえばM4のドキュメントも入手せねば。DSPまわりとか良くわからないし。STMあたりにあるのかなぁ?




2009年8月14日金曜日

はじめの一歩



大分放置していたここだけど、無駄に金払うのもなんなので再開してみようと思う。(二年も経ってやがる・・・)

現在夏休み中。ちょっと仕事の都合で突然日程が確定したので予定は0。子供の相手をしつつ、ふとiPhoneの開発を真面目にはじめてみようと思い立つ。

で、とりあえず証明書を登録しないと実機での実行が出来ないのでこの作業をする。

http://d.hatena.ne.jp/uzulla/20080911#p1

解説してるサイトは色々あるみたいだけど、とりあえずここを参考にする事にする。一応メモも含めてリンク張っておく。感謝。

証明書をアップするところは名称がちょっと違っていたけど最近文言が変わったのかな?このサイトには「Add Certificate」を押せとあるけど「request certificate」になってた。

まぁ、この段階でトラブル発生したわけですが・・・。

証明書をアップロードした段階でふと気づいたんだけど名前が化けてる。別に実用上は問題無いのかもしれないけど気になったのでリジェクトして再登録をしようと思ったけど、この情報ってAppleのユーザ情報のDBから引っ張ってくるみたいだけど、開発者のページの個人情報編集ページでは名前は変更出来ないのであった。

まぁ、これ、かな~り昔から問題だと思っている不具合なんです。Appleの個人情報のDBが日本語のページだと日本語しか受け付けないくせに開発者のページだと英語しか受け付けないというショボイ仕様になっていて、しかも英語サイト側ではこの日本語の情報をうまく扱えず、文字化けした挙げ句にクエリーがこけちゃって先に進めなくなるなんて笑えない状況。こんなお粗末なサイトって今時の他の大手IT系?のサイトみてもどこも無いと思うんだけどどうなんすか。

過去の資産引きずって、しかもそのフレームワークの開発が止まってしまっているのが問題なんでしょうけど使いにくすぎなんで即刻直して欲しい。他の国の人たちも困ってるんじゃないかね。開発者のページには日本語使うと化けるから云々と書いてあるけど、上に書いた様に同じ情報をiTunesだか何だか忘れたけど購入時の情報としても使っていたりするので、そっちは日本語にしないと駄目だから渋々日本語にするとまた英語ページで以下略と。まぁ、アカウントを英語用と日本語用にわけるのが正解だと思います。複数アカウント管理するのイヤなんでそのままにしてますが、Appleが心を入れ替えて作り直してくれるのがベストです。

前にもβ版入れようとした時だかなんだかにこれで引っかかって、Appleにクレームをつけた後に、返事が来る前にどこかのページで自分でなおせた記憶があるんだけど色々Appleにからむページを見てみたけど思い出せないのでAppleに変更の依頼をしてみた。日本側の対応は素晴らしいスピードだったけど、その後アメリカ側に作業を依頼したみたいで・・・そこで現在止まっています。ウーム。

しかしどこでいじったんだっけなぁ・・・。イチイチメールで依頼するのもまどろっこしいし。

とりあえず実機で動かすのは後にして遊んでみようと思う。といったところで何も有益な情報の無い状態で今日の日記は終わり。




2005年10月21日金曜日

log4netを使ってみる



ここがオフィシャルサイト

説明は後回しでトラブったのでメモ

ビルドは通るのにページを開くと「アクセスが拒否されました」みたな文章が出て動かない。そんな時はbinに入れたlog4net.dllのアクセス権の設定で「NETWORK SERVICE」を追加してみると吉。

このモジュール、結構前からあるにも関わらずあまり日本語の資料って無いですね。それだけ.NETの案件が無いのか、それともログははかせないのか他の製品使ってるのか・・・ハテハテ。




2005年10月4日火曜日

ActionScriptの値の渡し方



ちょいとメモ

ActionScriptにおける参照渡しの話。

基本的にActionScriptは下記の型しか存在しておらず、大きく分けて3つに分類される。



  • プリミティブ型


    • ストリング (String) データ型

    • 数値 (Number) データ型

    • ブール (Boolean) データ型



  • リファレンス型(これでいいのかな?)


    • オブジェクト (Object) データ型

    • MovieClip データ型



  • 特殊な型(なんて言うんだ?)


    • ヌル (Null) データ型

    • 未定義 (Undefined) データ型

    • Void データ型

参照渡しをやりたい時とかはこの辺を気をつける必要がありますよっと。

プリミティブ型は強制的に値渡し、リファレンス型は文字通り参照渡しになるらしい。

以下サンプル

class RefTest
{
var obj:Object;
var val:Number;
function SetObject(obj:Object, val:Number):Void
{
this.obj = obj;
this.val = val;
}
function AddObject(Void):Void
{
this.obj.x += 10;
this.val   += 10;
}
function ViewObject(Void):Void
{
trace("ViewObject : " + this.obj.x + " / " + this.val);
}
}

var test:Object = new Object();
test.x = 10;

var view = new VCViewBase();
view.SetObject(test, test.x);
view.ViewObject();
test.x = 33;
view.ViewObject();
view.AddObject();
view.ViewObject();

結果


ViewObject : 10 / 10

ViewObject : 33 / 10

ViewObject : 43 / 20


Objectは参照渡しに、Numberは値渡しになってますな




2005年8月29日月曜日

PHPのフレームワーク



某掲示板を眺めていたらPradoというPHP用のフレームワークが紹介されていた。ぶっちゃけ初めて知ったわけですが・・・。

まー、簡単に言うとmojaviがStruts系ならこちらはJSF系とか。(JSF系はあまりいじっていないので正直よくわからない^^;)

しかし、最近PHPがJavaの真似をして進化(?)しているのを見てると素直にJava使えば良いんじゃないの?って気がしなくも無い今日この頃。もちろん動作させる環境っていう点ではPHPの方が圧倒的に敷居が低いという背景もあるわけで一概にJavaが良いとは言い切れないけど、目指すところが一緒であるとベースがしっかりしたJavaの方が運用するシステムにとっても良いんじゃないかと思う。また、実体験からくる話ではないけどPHPは規模が大きくなると設計云々ではなくエンジンの問題で非常に重くなると聞いているので尚更かな。

ぶっちゃけ以前にStrutsを使ったものを作って以来Javaが嫌いだったけど、その理由の一つにデザインとロジックを分けてる割にはデザインがしにくかった事がある。これはテンプレートエンジンに何を使うかによって細かく左右される問題だけど、テンプレートエンジンというものを使ってビューとロジックを分ける時点でカスタムタグを使ったり独自の構文をもったファイルをビューとして使うので既存のHTMLエディタではビジュアルな感じでエディット出来いわけで、そうなると後からデザイナがちょこちょことデザインを手直しするわけにはいかなくなる。これじゃ本末転倒だしその為に発生する面倒なクラス作成作業とかを考えるともっと手軽にいきたいと思ってしまって「嫌い」になったわけ。

ただ、最近状況が変わってきてDreamweaverとかがカスタムタグに"一応"対応してきたとか、他の環境でも結局Javaをお手本にしてるので大差無いとかそんな理由でどーでもよくなってきたのも事実。それならつぶしが利くJavaで良いんじゃないかなってのが最近の感想。

なんかこのWebアプリの世界っていろいろ試行錯誤して徐々に前に進んでる感があるんだけど、車輪の再発明的な感触がどうしてもぬぐえない。まぁGUIのアプリを作るって時も色々問題があったわけで完全に綺麗な方向にはどうしてもいけないってのが結論なんだろうか。それなら泥臭い作業はスクリプトで自動化してさっさと作って次の仕事に取り掛かる。言ってみればやっつけみたいな状態にいくわけだけど、これだと張り合いが無いしねぇ。(まぁ実際そういうスタンスのフレームワークもあり、作業効率は結構良いらしいです)

何気にPradoに関しては何も触れてないけど、、、まー気にしないようにw

そういや書いていて思い出したんだけどXSLTってどこ行っちゃったんだろう。

あの辺が現状を打破するのに最適と信じてASP上で簡単なエンジンを作った記憶があるけど、、、懐かしいなぁ




2005年8月18日木曜日

FCS(flashcom)上での共有オブジェクトの扱い



サーバサイド(FCS)で共有メモリを作り、そこにプロパティをセットする。そしてそれをクライアントから見るという形の使い方をしたかったけど、どうしても値が保存されず意図した動きにならない。

Client.prototype.Hoge = function()
{
var test_so = SharedObject.get("test");
trace("version : " + test_so.version);

test_so.lock();

test_so.setProperty("test", "hogehoge");
trace("version : " + test_so.version);

trace("test : " + test_so.getProperty("test"));

test_so.unlock();
trace("version : " + test_so.version);

test_so.close();

var test2_so = SharedObject.get("test");
trace("version : " + test2_so.version);
trace("test : " + test2_so.getProperty("test"));
test2_so.close();
}

このコードをクライアントFlashからつついて実行すると


version : 0

version : 0

test : hogehoge

version : 1

version : 0

test : null


こんな感じになります。test2_soのtestプロパティには「hogehoge」が保存されてくれなくて困っていたのですが、バージョンをとってみて気付いたのは値を変更した場合に1になってるバージョンが再度取得してみると0に戻っている。つまり保存がされていないわけです。

で、結論から行くと


test_so.close();


がガンだったりします。これを消すと


version : 0

version : 0

test : hogehoge

version : 1

version : 1

test : hogehoge


ばっちり(゜∀゜)

新規に作成される場合の共有オブジェクトはクローズすると共有メモリそのものがパージされてしまうらしい。本来このメソッドの挙動は共有オブジェクトへのコネクションをはるものという事を考えるとバグだと思うのですが・・・。ちなみに後の


test2_so.close();


では消えません。こっちは期待通りの挙動です。

一応解決したものの何か複雑なものがありますな・・・。




2005年8月15日月曜日

Flash Remoting系のもの簡単にまとめ








2005年7月31日日曜日

LAMP環境まとめ1



今更ながらLAMPな環境のプログラムを書くことになりそうなのでL(inux)とA(pache)は置いておいて、M(ySQL)とP(HP)の環境についてまとめてみることにする。

PHP


まず、PHPから。とりあえず現状では3つの選択肢がある模様。

カッコ内は現在の最新版



  • 5.1.x


    • まだ開発中なので実用になるかは不明

    • 高速化されたらしい?

    • その他は調査中

  • 5.0.x(5.0.4)


    • オブジェクトオリエンテッドな拡張がされているらしい

    • Javaを真似した様なものらしくあまり評判は良くない?

    • 速度が遅くなったカモ

    • まだ4系の方が人気でライブラリ、フレームワークなどの対応が甘い

    • Unicodeの対応など文字コード関連の修正が入っている

    • MySQLがデフォルトではなくSQLiteがデフォルトのDBに(でもMySQLの方が使われている気がする)

  • 4.4.x(4.4.0)


    • 5系が出た後に出たみたい

    • あるフレームワークは4.3.xや5.0.xで動くコードなのだけども動かなかった

    • とりあえず後で調べてみる

  • 4.3.x(4.3.11)


    • これが一番使われている気がする

    • 対応したライブラリも多い

とりあえず適当に書くとこんな感じかな。個人的にSQLiteは気になっているので5系を使ってみたいけど、速度的な問題及び枯れ具合を考えると現状4.3.11がベストな気がする。4.4は調べてみるけど、どうも仕様が変わってるくさいので手を出すのは危険かもしれない。

MySQL


これまた色々選択肢がある。PHP以上に厄介な気がする。



  • 5.0.x(5.0.9)


    • 開発中の物なので実運用では怖い

    • VIEWが実装された

    • ストアドが実装された

  • 4.1.x(4.1.13)


    • 速度が大分遅くなったらしい

    • 文字コード関連の修正が入ったらしい(これのせいで遅いのかも) ただし、配布されてるバイナリはラテンでビルドされてるらしく日本語を通すには自分でビルドしないとダメかも

    • サブクエリが実装された

  • 4.0.x(4.0.25)


    • 速度はマァマァ速いらしい

    • UNIONが実装された

    • InnoDBがメインのバイナリに内蔵されるようになった。これはトランザクションに使うものだったはず。今までは別に存在して別途セットアップが必要だったはず

  • 3.23.x(3.23.58)


    • トランザクションが実装された(InnoDB/BDBの2択?)

    • トランザクションをONにすると遅くなると聞いた気がする。

  • 3.22.x(3.22.32/Winバイナリは3.22.30まで)


    • 速度的には最強らしい。未だにこれで作られてる所もあるとか。

MySQLの場合どんどん機能的にはまともなDBに近づいていく反面速度が犠牲になっているという印象が。トランザクションやらサブクエリやらViewやらは無いと困る人も多いと思うし。逆にとりあえずデータだけ詰めておいてがんがん検索だけかけるような形だと3.22.xが最強なんでしょう。案件にあわせて選択する必要がありそう。問題は5.0は現状選択肢として考えないとして4.1と3.22でどれだけの速度差があるのかという事。こればかりは試してみないとねぇ・・・。

そういやフォームにSQL書かれて意図しないSQLが実行されるというセキュリティホール(SQLインジェクションって奴ですな)があるけど、サブクエリが無ければこういうのも起き難いのかも。そういう点では新人教育とかの場合は4.0系あたりから入らせるのも手かもしれない。(本当はちゃんとバリデーションとかを行うとかっと教育するのが正しいと思いますが・w・)




2005年7月12日火曜日

ALAC(Apple Lossless Audio Codec)



部屋のCDを片付ける方法としてCDのケースを全部捨ててしまうと言うのを考えているのですが、それに加えてパソコン等で一括管理みたいな事を考えていたりします。ただ、MP3にするのは嫌なんですよね。これやっちゃうと折角構築したオーディオシステムを否定している気がして・・・。ただWAVとかAIFFにするとかさばりすぎる。そこで出てくるのが可逆圧縮というもの。色々あるけどやはり使い勝手がいいのはALACもしくはWMAの可逆圧縮。ぶっちゃけWindowsで使っているとWMAの方が良い気もするけど、ALACだとiTunesでいきなりCDに出来たりメリットも大きいし、例のAirMacでオーディオに飛ばすことが出来る。( ゜Д゜)ウマーなんて妄想しつつちょっと調査をしていたら

http://craz.net/programs/itunes/alac.html

こんなん見つけました。リバースエンジニアリングしてデコーダーを作ってしまったというなんともグレーな代物ですが(噂は前に聞いたんだけど興味無かったんで聞き流してた・・・)一応ソースのWAVとデコード後でチェックサムが合うなど信頼できそうな雰囲気。で、ソースを確保したのですがメインの部分のソースコードのサイズが30KB程度っぽい。小さいですねぇ。こんなもんなのかなぁ。まだ中を見てないですが勉強がてら今度読んでみようかなっと思ってます。

まぁ、この記事単なるメモなんですけどね・w・




2005年6月22日水曜日

SymbianOSの開発環境をそろえる



そろそろソフトを作ってやろうとNokiaのサイトから下記のものを拾ってきて入れました。



  • nds_symbian_vs_11.exe

  • s60_2nd_fp2_sdk_ms_j.zip

他に



  • VisualStudio.NET2003

  • HalWin

を用意します。

C:\Symbian\8.0a\S60_2nd_FP2_J\Series60Exの下のサンプルをヘルプを見ながらVisualStudio.NET2003にて試しにビルドしてみました。


> makmake ほにゃらら.mmp vc7


これでVSのプロジェクトファイルを生成して、ほにゃらら.slnを開きます。

とりあえずわけあって2台のマシンにいれたのだけど、片方では「Debug Wins」と「Release Wins」はビルド可能でエミュレータでの実行を確認。が、しかし「Release Armi」も「Release Thumb」もビルド出来ず。もう一方だと逆の状態。うーむ・・・これでは開発になりません。

原因究明は保留にしていたのですが・・・大変な事に気付きました。

VC7が動かなくなってる!

なにやら


error PRJ0003 : cl.exe' の起動中にエラーが発生しました。


なるエラーが出てますが、echo %PATH%してみると、


C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\BIN


はきちんと入っており、コンソールからも動きます。そういえば上記のSymbianの方でDebug Wins等がビルド出来ない方はnmakeがみつからないというエラー。これもパスは通っておりコンソールから実行出来る。はてはてはて?仕事が出来なくなって激しく困った・・・。




問題解決?



色々調査、試行錯誤した結果、VisualStudio.NET2003の


ツール>オプション>プロジェクト>VC++ディレクトリ>Win32/実行可能ファイル






  • $(VCInstallDir)bin

  • $(VSInstallDir)Common7\ide

のパスを追加することでVC++のプロジェクトのビルドが可能になりました。

Symbian側も全部動くようになったので、解決方法としては問題無さそうです。

NokiaのSDKを入れたとき(もしくは一回アンインストールしてるのでその時)に

このパスを消された可能性が高いです。コワイコワイ

あと、なぜか他の設定項目も


(ほにゃらら)bin


等のように頭に$が無いのでこれも修正。(試したら$なしでは展開してくれないみたい)




おまけのビルド種別



このSymbianOS S60のSDKには4つのビルドモードがあるらしい。



  1. Debug WINS

  2. Release Armi

  3. Release Thumb

  4. Release WINS

(1)はWindows上のエミュレータで動く物でデバッグ版、(4)は同じくエミュレータで動くリリース版ということで納得した物の、(2)と(3)は一体なんなんでしょ? っと前から疑問だったんですが、ドキュメントを見てみると

(2)は

ARM4(サイズよりもパフォーマンスを重視した ROM用、あるいはROMがARM4と分かっている場合のアプリケーション用。)あるいはThumbで作成されたROMのどちらでも動作するアプリケーション用

(3)は

パフォーマンスよりもサイズを重視したROM用、あるいはROMがThumbと分かっている場合のアプリケーション用。

だっそうです。基本的なアプリの場合は(3)でいいのかな・w・?




2004年3月30日火曜日

flex



http://www.macromedia.com/software/flex/

Flashもどんどん面白くなっていくね。でもプログラムの開発環境として見ると開発環境が劣悪な気がするけど・・・。