ということで、ひさびさの更新になってしまいまして(-_-;)
こんなのをつくってみました。
GUIで文字は入力しづらいので(マスクやらなにやらあるから。。)一括入力します。
分解するとこうなってます。
図形(ポリライン)部分
文字部分
マスク部分
全体のObjectTree
家紋の画像は、都度つくるのはめんどいので、
【グレイスケールPNGで作成して、階調をアルファチャンネルに変換して、RGBで色をのせる】
ということをやってます。
pdfと組版と画像処理とc++とphpとjavascriptとhtml5とcss3とjQueryとjQueriUIとjQueryMobileとRadStudioとAndroidSDK/NDKとWordPressとWelcartを統合するエンジニア的視点。。廃止→as3とflashとflex 追加→柔道
2012年11月26日月曜日
2012年9月17日月曜日
LINUXに移植するけど文字列をどうするかっていう件。
うぅーん。考えどころです。
LINUXに組版を移植するわけですが(たぶん)、
文字列、どうしますかねー。
問題は、、、
・せっかくだから、ちゃんとサロゲートペアしなくちゃいけない
・Windows版とソースは共通(プロセス管理とかでifdef多発は仕方ないにしても)
ってことなんですが、なにしろ、Windows版を作るときに、基本をwchar_tにしちゃったもんだから、、
そのころは、wchar_tって、、かならず2バイトだと思ってたもんだから。。。
だからといって、wchar_tを4バイト固定にして、UTF-32にするって方法もあるけど、
Windowsでの扱いがめんどいし。。。。
ってことで、
・基本はUTF-16でやる
・でも、ポイントポイントではUTF-32でやるj場合もある
ってことで、とりあえずは設計開始。
よって、文字列関係の関数は、基本、手作りにします。
2012年7月1日日曜日
せっかくなのでステッカーにする。
私のノートPCに貼ってあるステッカーをどうやってつくるのか、数人に聞かれたので、
ちょっと書いてみます。
ポイントは、
・紙をケチらない
・フィルム系にプリントする
・UVカットシールを貼る
・丸い刃のカッターを使う
です。
1:原稿をつくる
2:印刷する。フィルム系の耐水系の白い系で。
3:おおざっぱに切る。
4:UVカットシールを用意
5:UVカットシールを切ってから、一枚ずつ貼る。
このとき、切らずに一枚ものとして貼ると、たいがい空気が入って失敗する。
6:貼った状態
7:まわりをカットする。カッターやはさみだと、フチがあまりキレイにならない。
よって、写真のようなカッター(押して切る丸いやつ。@ダイソー)で切ったほうがよい。
8:できあがり。
2012年5月29日火曜日
javascriptでJSONをPOSTしてみてPHPで受け取る。
前回のつづきで、javascriptでObjectを生成し、
それをJSON化し、それをPHPでPOSTで受け取るテストをしてみます。
テストとしては、どうやって文字列処理をすればいいのかってことですね。
また、javascriptからPOSTする方法も含めてテストしてみます。
ってことで、こんなコードでテスト
まぁJSONできてるから、JSONをdecodeできる文字列に変更する必要があるわけです。
まず、これはPHPの設定になるわけですが、文字のエンコードを調べます。
echo mb_detect_encoding($param);
ってやってみると、、
UTF-8
となりました。これが「UTF-8以外でいいことなんて、とりあえず何もありませんから、PHPは全てUTF-8前提で考えます。
ってことで、var_dumpでこういう結果↓をえるためには、
そうやったからって言って、速度が速くなるわけでもないので(実験しました)、見やすいように3行にしました。
関数としてはたいしたことない関数。
しかしここで、PHPでencodeすると、こんな文字列になります。
それをJSON化し、それをPHPでPOSTで受け取るテストをしてみます。
テストとしては、どうやって文字列処理をすればいいのかってことですね。
また、javascriptからPOSTする方法も含めてテストしてみます。
ってことで、こんなコードでテスト
php
$a = Var_Dump::display($_POST,true); echo $a;で、結果は、、
------------------POST------------------ array(1) { param => string(77) {\"dat1\":\"【\'】【\\\"】【\\\\】【/】【\\r】【\\n】【\\t】\"} } ってことは、、、 {"dat1":【'】【\"】【\\】【/】【\r】【\n】【\t】} が {\"dat1\":\"【\'】【\\\"】【\\\\】【/】【\\r】【\\n】【\\t】\"} になってるってことです。じゃぁこれをどうやって取り込むかってことですね。
まぁJSONできてるから、JSONをdecodeできる文字列に変更する必要があるわけです。
まず、これはPHPの設定になるわけですが、文字のエンコードを調べます。
echo mb_detect_encoding($param);
ってやってみると、、
UTF-8
となりました。これが「UTF-8以外でいいことなんて、とりあえず何もありませんから、PHPは全てUTF-8前提で考えます。
ってことで、var_dumpでこういう結果↓をえるためには、
array(1) { dat1 => string(52) ◆【'】【"】【\】【/】【 】【 】【 】 }PHP側で、こういう↓文字列処理をすればいいことになります。
$param = $_POST['param']; $param = preg_replace("/\x5c\x5c\x22/", "\x22",$param); //【\"】 を 【"】 にする $param = preg_replace("/\x5c\x5c\x27/", "\x27",$param); //【\'】 を 【'】 にする $param = preg_replace("/\x5c\x5c\x5c\x5c/", "\x5c\x5c",$param); //【\\】 を 【\】 にするもちろん、preg_replaceなので配列にして渡してもいいんですが、、、
そうやったからって言って、速度が速くなるわけでもないので(実験しました)、見やすいように3行にしました。
関数としてはたいしたことない関数。
function objectFromJsJson($v){ $vv = preg_replace("/\x5c\x5c\x22/", "\x22",$v); // 【\"】 を 【"】 にする $vv = preg_replace("/\x5c\x5c\x27/", "\x27",$vv); // 【\'】 を 【'】 にする $vv = preg_replace("/\x5c\x5c\x5c\x5c/", "\x5c\x5c",$vv); // 【\\】 を 【\】 にする $json = json_decode($vv,true); return $json; }
しかしここで、PHPでencodeすると、こんな文字列になります。
//【コード】 $str = json_encode($json); echo $str; //【結果】 {"dat1":"\u25c6\u3042\u3010'\u3011\u3010\"\u3011\u3010\\\u3011\u3010\/\u3011\u3010\r\u3011\u3010\n\u3011\u3010\t\u3011"}日本語が\u表記になります。まぁ、文字のエンコードの問題があるので、この方が扱いやすいといわれればその通りかもしれません。
ラベル:
html,
javascript,
json,
PHP
2012年5月25日金曜日
JSONのencode/decodeの注意な件。
現在、JSONを、以下の4言語で使用中なのですが、
エンコード関係のまとめを一度しなきゃいけないと思ってたので、
ちょっとまとめます。
もちろん、ASとJSは、基本的にはECMAスクリプトですが、
使うライブラリの問題もしれないので、分けます。
(1)C++ → 自前処理
(2)php → json_decode/json_encode関数
(3)ActionScript → com.adobe.serialization.json.JSONにおける、encode,decode
(4)javascript → JSON.stringify/JSON.parse関数(evalは使わない)
で、最後の16進コードをもとに見てみると、
【’】【¥”】【¥¥】【/】【¥r】【¥n】【¥t】
である。(全角表示)
ようするに、【’】と【/】は、escapeされない。まぁそういぅ仕様だわね。。
まぁ、あたりまえの事を、一応やってみて確認することが重要なのです。
なんで、16進コードなんかで見るかっていうと、
こんな簡単なコードでも、ブラウザによってalertの表示が違うんですよね。TABとか¥rとかね。 こんな簡単な例だと間違えないけど、javascriptを動的に文字列で作り出したりしてるときに気を抜いていると、思わぬことになるのです。
エンコード関係のまとめを一度しなきゃいけないと思ってたので、
ちょっとまとめます。
もちろん、ASとJSは、基本的にはECMAスクリプトですが、
使うライブラリの問題もしれないので、分けます。
(1)C++ → 自前処理
(2)php → json_decode/json_encode関数
(3)ActionScript → com.adobe.serialization.json.JSONにおける、encode,decode
(4)javascript → JSON.stringify/JSON.parse関数(evalは使わない)
ということで、C++の場合は、自分でやってるので、特に言及しません。
問題になりそうなのは、主に、記号類。
その中でも、
【/】【\】【'】【"】【改行】
が重要だと思うので、これらをそれぞれで入力したとき、JSONに変換したとき、POSTで受け取るときなどをまとめてみます。
●テスト1
javascriptでオブジェクトを生成して、それをJSON文字列化。
問題になりそうなのは、主に、記号類。
その中でも、
【/】【\】【'】【"】【改行】
が重要だと思うので、これらをそれぞれで入力したとき、JSONに変換したとき、POSTで受け取るときなどをまとめてみます。
●テスト1
javascriptでオブジェクトを生成して、それをJSON文字列化。
結果01.html
で、最後の16進コードをもとに見てみると、
【’】【¥”】【¥¥】【/】【¥r】【¥n】【¥t】
である。(全角表示)
ようするに、【’】と【/】は、escapeされない。まぁそういぅ仕様だわね。。
まぁ、あたりまえの事を、一応やってみて確認することが重要なのです。
なんで、16進コードなんかで見るかっていうと、
こんな簡単なコードでも、ブラウザによってalertの表示が違うんですよね。TABとか¥rとかね。 こんな簡単な例だと間違えないけど、javascriptを動的に文字列で作り出したりしてるときに気を抜いていると、思わぬことになるのです。
2012年4月16日月曜日
2012年4月5日木曜日
FLEXで本のページをめくるように見えるGUIな件。
よくありがちな、FLEX(FLASH)で、ページをめくる的なGUIが必要となり、
作ってみました。
もちろん、いろいろ探したのですが、用途に合うものは皆無のため、自分でつくりました。
用途 → 10000ページでも動作すること。
要するに、動的に画像を取ってくるところや、右綴じ、左綴じ、天綴じなんかができるということですね。
ってことで、技術的には、三角関数を使って、座標を求めたりします。
読み込んでおくべき画像は、最低6面分ですね。
まぁ下の絵をみたらわかります。
ページをめくろうとしたときの、裏とその下の画像が、左右に必要なためです。
別の問題として、透視図的に見せるとか、ページをめくるときに曲線に見せるようなことはやりません。(iPadとかやってるけどね。。)
そんなことしなくても、まぁまぁそれらしくみえます。
但し、影はつけないとそれっぽくならないので、ページの境目なんかにはそれを使います。
ドロップシャドウはやってもいいけど、負荷もかかるのでやめときます。
影アリと影なしの比較。。
で、でれでれと計算とかして、つくります。
ノートに書いてみるの図。
つづきがあるかどうかは別にして、、
つづく。
2012年4月2日月曜日
グラフィックファイブラリを作る件はLINUXと共通SRCにする件。
表題のとおり。。
とりあえず、、IOは、
固有/JPEG/PNG/WindowsBitmapを扱う。
ただし、くみはん屋もの。。。TIFFやCMYK-JPEGとかも視野にいれるつつ。。
とりあえず、、IOは、
固有/JPEG/PNG/WindowsBitmapを扱う。
ただし、くみはん屋もの。。。TIFFやCMYK-JPEGとかも視野にいれるつつ。。
LINUXにGetModuleFileNameがない件。
#include "stdio.h" #include "unistd.h" int v = readlink("/proc/self/exe", s, sizeof(s)); if (v != -1) { printf("FullPath=%s\n", s); } }とすればフルパスが表示される。
登録:
投稿 (Atom)