HOME > CONIT Labs.

CONIT Labs.

バーコードの仕様


こんにちは。豚インフルエンザの亜種が発生しているらく
空気を吸うのも怖い開発TEAM佐々木です。
(ウイルスってヴァイラスって言うんですよ)
本物のウイルスの怖さは、コンピュータウイルスは怖いっていうのとレベルが段違いですね。。
マスク必須ですよ~皆さん。
ということで今日は、趣味で調べてみたバーコード仕様が複雑すぎて驚いた件です。
「1次元バーコード」
普通のそこらへんにあるバーコードは、13桁の10進数で出来ています。
先頭2~3桁は国コードで、・・・・最後の桁はチェックサムという仕様はとくに驚きもしないので省略します。
ここでは、ごにょごにょ計算して”1234567890123”という数値をバーコードにしたいとします。
「2進数」
デジタルネイティブ(意味違う?)の人なら、0~9の数字は4bitで表現できることは分かりますね。
そうです0~Fです。
1次元バーコードは白線と黒線の並びなので、4bitの白=0、黒=1として
”1234567890123”は
0001 0010 0011 0100 0101 0110 0111 1000 1001 0000 0001 0010 0011
となるので、
○○○●○○●○○○●●○●○●○●●○○●●●●○○○●○○●○○○○○○○●○○●○○○●● 
かな?と思ってました。
ただ、これだと左右が分からないので、左に●○●、右に●●●みたいなマーキングがあるかな?くらいの想像。
しかし!そんなレベルをはるかに超える複雑さなのです
さすが世界のスタンダードです!
1桁目なんてbit配列にすら出てこないのです!
というわけで、種明かしですが
「変換仕様」
バーコードでは、3つステップと、4つの変換テーブルを使います。
(分かりやすいように正式名称と実際の変換テーブルは省略します)
変換テーブル1: 右の6桁用の変換テーブル
変換テーブル2: 左の2桁目から6桁用の変換テーブル1
変換テーブル3: 左の2桁目から6桁用の変換テーブル2
変換テーブル4: 左の2桁目から6桁用の変換テーブルを決定する変換テーブル
右から処理すると
ステップ1: 右の6桁を変換テーブル1に従って、ビット表現に変換します。
        これは普通に1対1で対応してます。
ステップ2: 左の1桁目を使って変換テーブル4から、2~7桁目はどのテーブルを使うかを決定します。
        このテーブルには、
        0=変換テーブル2、2、2、2、2、2
        1=変換テーブル2、3、2、3、2、3
        ・・・・・・
        のようなテーブルになっています。(実際は違います)
ステップ3: ステップ2で決定した変換表にしたがって、2桁目はテーブル2をつかってビット表現に変換。
        3桁目は変換テーブル3をつかってビット表現に変換。
        ・・・・・・
        というように6桁を変換します。
        なんと一番左の桁は、ビット表現には現れずに、
        どの変換テーブルを使用したかによって導き出されます。
      
感動で号泣です!
別にコニットでは、iPhoneバーコードリーダを作る予定はありませんけど。。
「宣伝」
@ITさんに第2弾のiPhone記事を書きましたので、公開始まったら見てくださいね。

自分のMacじゃ動くけど、他の人のMacじゃ動かなくてハマった


あの原油高は何だったのか、富豪たちのイタズラなだけだったんだろうな。
と突然思い出してしまった、開発TEAM佐々木です。
今日はMac開発初心者ならではの、トラブルがあったので書いてみます。
どういうトラブルかというと、
私のマシンで開発したMacアプリがあって、私のマシンでは動きます。
そのアプリをファイルサーバに置いて他の人にダウンロードしてもらって
テストしてもらうと、100%動きません。(起動すらしません)
いろいろソースをコメントアウトして原因を探しましたが、
結局全部コメントにしても動かない訳です。
ホトホト困っていたら、とある事に気づきました。
Macのコンソール.appになにやらPermissionDeniedと出ているではないですか。
書き込み権限かと思ってファイル系を調べてみてもさっぱり分かりません。
そうこうしてるうちに、ファイルのやり取りはDropBoxのサーバを使っている事を
思い出して、実行権限か!!と。
それにしても、MacOSさんもうちょっとエラーメッセージを出してくれてもいいじゃん。と愚痴ってしまいましたねー。
というわけで、MacOS開発をiPhoneから入った自分にはハードルが高かったトラブルでした。
みなさんMac以外を経由して配布する場合はパーミッションには気をつけましょうね。
追記:
アプリケーション「○○○.app」のフォルダをZIP圧縮することで、
パーミッションを保持したまま受け渡しができます。

クラウドサービス?


こんにちは。阿久津です。
 
2008年4月7日、約1年前に発表された「Google App Engine」ですが、
ご存知の方も多いことでしょう。
これは、Google のインフラ上で自作の Web アプリケーションを実行できるという、
PasSの類に入るクラウドサービスの1つですよね。
このときの発表時には、開発言語は「Python」のみだったのですが、発表から1年後の現在
Javaにも対応したということが正式に発表されたようです。
ではでは、この「Google App Engine」なるものはどんなメリットがあるのでしょうか?
以下Googleより引用

アセンブリは不要
 Google App Engine は、完全に統合されたアプリケーション環境を提供します。
容易な拡張
 Google App Engine を使用し、1 ユーザーから何百万人というユーザーへ拡張可能なアプリケーションを、インフラストラクチャに頭を悩ませることなく構築できます。
無料でスタート
 すべての Google App Engine アプリケーションは、最大 500 MB の永続ストレージ、月間 500 万ものページ ビューに十分な帯域幅と CPU を利用できます。

開発者からすると、結構手間のかかる環境構築やそれらの保守から解放されるというのは
かなり素敵なメリットに感じますね。
そこに費やしていた時間を、すべてアプリの方にまわせるとなると・・・ん〜ス・テ・キ!!
さらに、このサービスは無料でスタートできると。
それと、これは自分的な問題ですが、Pythonは経験がなかったのでJavaに対応したということも「おっ!?」て思ったのも事実
(選り好みせず、色々経験はしないとですがね・・・)
ってことで、これは試してみないとですね!
と、今日はここまでにさせてもらい、
今後試してみて、何か気づいた点等があったら、またご報告します!
(もうちょうい時間が空いたら、試してみます(^^); 何かと現在忙しいもので・・・)
今回は、こんなサービスもあるよというご報告なので、既知の方はさておき
その他の方で興味を持たれた方は、是非お試しあれ!!
Google app Engineへのリンクはこちら

コニット開発室

CONIT Official Tweet

CONIT Facebook FanPage

CONIT BLOG

株式会社コニット

SamuraiSmartphoneServices

Buy and take only medicines from online pharmacy ,]}$ drugs online has affordable prices. Brand name drugs Canadian pharmacy [*}: compare drug prices Canada delivering medicines at your door. Free online consultation at https://canada-pharmacy-store.com <;) order cialis highest value and quality. Is it legal to mail prescription drugs? Yes, Canadian drugs [.($ order viagra . After ordering you will be contacted by our managers and agree on the delivery details.