home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

421 - 430 / 1320    [|<]  [|<]  [<]  41  42  43  44  45  46  47  48  49  50   [>]  [>|][>|]
タイトル/名前 更新者 更新日
C言語系/Objective-C/ObjectとNSObjectの違い msakamoto-sf 2012-01-07 17:36:59
JavaScript/配列リテラルの要素区切り","について msakamoto-sf 2012-01-04 15:07:19
日記/2011/12/31/厚揚げも結構便利だなぁ。 msakamoto-sf 2011-12-31 14:03:11
日記/2011/12/31/2011年のまとめ msakamoto-sf 2011-12-31 10:52:19
日記/2011/12/11/MonacaとPhoneGapでファイル操作してみた。 msakamoto-sf 2011-12-11 21:44:18
日記/2011/12/10/ADTとCRLF問題、なんとか落ち着いた。 msakamoto-sf 2011-12-10 23:33:40
日記/2011/12/05/WebSocketに対応しているProxy msakamoto-sf 2011-12-05 00:13:22
日記/2011/12/04/ContentProviderのアクセス範囲について msakamoto-sf 2011-12-04 22:18:38
日記/2011/12/04/BurpSuiteメモ msakamoto-sf 2011-12-04 18:02:30
日記/2011/11/27/Android4.0(ICS)の画面キャプチャ機能(続報) msakamoto-sf 2011-11-27 19:28:55
ソート項目 / ソート順     1ページ 件ずつ表示

C言語系/Objective-C/ObjectとNSObjectの違い  

所有者: msakamoto-sf    作成日: 2012-01-07 17:19:03
カテゴリ: Objective-C 

Objective-Cの勉強を始めようと思って、適当にネットで漁ったHelloWorldをgccでコンパイルしたら上手く動かない。
で、調べ始めたらObjective-C/NeXT/OpenStep/MacOSXの歴史とかUniversalBinaryとかにまで広がってしまいましたが、ようやく収拾がついたのでまとめます。

環境:

Mac OS X (Lion), 10.7.2
Intel Core i5
64 ビットカーネルと拡張機能:有効
Xcode 4.2

$ gcc --version
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 ¥
(Based on Apple Inc. build 5658) (LLVM build 2336.1.00)
(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2012-01-07 17:36:59
md5:d7332a3b5b0f885d6810837d4656a143
sha1:60ec7db0a7f90a50f429865c4898f83de7d4c88b

JavaScript/配列リテラルの要素区切り","について  

所有者: msakamoto-sf    作成日: 2009-09-26 16:03:40
カテゴリ: JavaScript 

JavaScript/オブジェクトリテラルのプロパティリストの末尾要素の","についての記事を書き終わった後、ふと配列リテラルの場合が気になったので調べてみました。

ECMA262, 11.1.4 Array Initialiser より :

ArrayLiteral :
    [ Elision(opt) ]
    [ ElementList ]
    [ ElementList , Elision(opt) ]
ElementList :
    Elision(opt) AssignmentExpression
    ElementList , Elision(opt) AssignmentExpression
Elision :
    ,
    Elision ,

これを見る限りは末尾の","は許容されているようです。そこで、簡単なJavaScriptで調べてみました。

var a = [,];
for (var i = 0; i < a.length; i++) {
    alert(a[i]);
}

試してみて驚きですが・・・

Firefox/Chrome
"undefined"が 1回 表示される。
IE8
"undefined"が2回表示される。
IE9
"undefined"が 1回 表示される。(new!)

どうもIE8の場合は "," を境に二つのundefinedがあるものと解釈されているようです。

var a = [,,,];

とすると、Firefox/Chrome/IE9なら3回undefinedがalertされ、IE8だと4回alertされます。

ちなみに本当に空っぽの場合は、Firefox/Chrome/IEともに0回でした。(lengthプロパティ == 0)

var a = [];

まとめると、配列リテラルの要素区切りの","については、末尾の","は文法上は許容されています。IEでもエラーになりません。ただし、","で終わるとIE8の場合は暗黙的にundefinedを補完しているらしいことが分かりました。従って、オブジェクトリテラルのプロパティリストの時と同様、安易に最後の","を残しておくと、IE8で動かした時にループの最後がおかしくなる場合があるかも知れません。

やはり配列リテラルの場合でも、末尾の","はきちんと削っておいた方が良いようです。



プレーンテキスト形式でダウンロード
現在のバージョン : 2
更新者: msakamoto-sf
更新日: 2012-01-04 15:07:19
md5:4c6e0b66425ca85f58cb749dc684c79c
sha1:9ac25bd67feb15bbd70fea0de6dff47c4bc55129

日記/2011/12/31/厚揚げも結構便利だなぁ。  

所有者: msakamoto-sf    作成日: 2011-12-31 13:59:27
カテゴリ:

中華の炒め物セットで、袋に書いてあるレシピ通りだと少し分量が物足りない時、厚揚げが便利。
多少乱暴にいじっても崩れたりしない。味も、濃い目・薄目両方共相性が良い。
中華だけじゃなく、イタリアンとも相性が良いのではなかろうか。
すでに油で揚げてあるので、炒め合わせるときに追加の油が不要。
ご家庭のフライパンで日常的な炒め物を料理するときに、意外と便利でした。

今年は鯖の水煮の缶詰、厚揚げの使い方を開拓できた一年だった・・・。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-12-31 14:03:11
md5:354e6549ad92b7838d99e3e7806def9a
sha1:35318c5448fad9ac075348d02022d60542e5a3bb

日記/2011/12/31/2011年のまとめ  

所有者: msakamoto-sf    作成日: 2011-12-31 09:59:49
カテゴリ:

2011年は震災を抜きにしても変化が激しい一年でした。

参考:日記/2010/12/31/2010年のまとめ

個人的に印象の深い出来事を挙げてみます。

  1. 積まれていた技術書を全て消化完了
  2. 震災で実家周辺液状化
  3. セキュリティ診断会社に就職

1年半に及ぶニート生活により、「いつか読もう・・・」と心の重荷になっていた技術書を全て消化し終えました。結構「読み飛ばし」したのも混ざってますので、あんまり血肉になったとは言えないかも。

震災については実家周辺が液状化に見舞われまして、1ヶ月ほど実家で片付けなど手伝ったりしてました。

そして、ようやくニート脱出。運良く、Webアプリケーションの脆弱性検査サービスをメインとしている会社に就職できました。
これに伴い、実に2年振りにWeb開発の最前線に戻ることになり、同時にAndroid端末, iPad, MacBookAirの購入など環境が大きく変化しました。さらにSubversionからMercurialへのシフトも経験しました。
個別の記事リンクは載せませんが、いろいろ調べたなぁ・・・。

  • OAuth, OAuth 2.0
  • OpenSocial
  • Android開発
  • Subversion to Mercurial
  • HTML5

就職した会社がGoogle Appsを使用していたこと、及びAndroidやMacBookAirを購入したことから、個人のメール環境についてもGoogleサービスへシフトしました。これまでのPOPアカウントについてはgmailから取得するようにしてgmailに一本しました。また、ダイビングの写真など一部のストレージをGoogle+やGoogleドキュメントに移行しました。
MacBookAirを使い始めたことにより、ID・パスワード管理を ID Manager からGnuPGを使った簡単なラッパースクリプトに変更したりもしました。


2012年も色々あるかと思います。それでは皆様よいお年を。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-12-31 10:52:19
md5:10819c2980838fcc89715acb613b0866
sha1:ad9ed87d7d9bb874591c614d1854c7f52ecb56e3

日記/2011/12/11/MonacaとPhoneGapでファイル操作してみた。  

所有者: msakamoto-sf    作成日: 2011-12-11 21:18:58
カテゴリ: Android 

MonacaとPhoneGap触って見ました。使用OSはAndroid。

で、ローカルファイルシステムはどうなってるんだろうかと。

基本的にW3CのFile APIを使うようになってるみたいです。
こんなのをHTML側の適当なボタンから呼び出して動作を確認してみます。


function showFSInfo(fs) {
    alert(fs.name + "\n" + fs.root.name + "\n" + fs.root.fullPath);
}

function fsdemo01persistent() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, showFSInfo, null);
}

function fsdemo01temporary() {
    window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, showFSInfo, null);
}

function fsdemo02write() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, 
        function(fs){
            fs.root.getFile("foo.txt", {create: true}, 
                function(fileEntry) {
                    alert("fullpath=" + fileEntry.fullPath);
                    fileEntry.createWriter(
                        function(writer) {
                            writer.onwrite = function(evt) { alert("success"); }
                            writer.write("Hello");
                        },
                        function(fileError) { alert(fileError.code); }
                        );
                }, 
                function(fileError) { alert(fileError.code); }
                );
        }, 
        function(fileError) { alert(fileError.code); }
        );
}

function fsdemo03write_temp() {
    window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, 
        function(fs){
            fs.root.getFile("bar.txt", {create: true}, 
                function(fileEntry) {
                    alert("fullpath=" + fileEntry.fullPath);
                    fileEntry.createWriter(
                        function(writer) {
                            writer.onwrite = function(evt) { alert("success"); }
                            writer.write("This is temporary file.");
                        },
                        function(fileError) { alert(fileError.code); }
                        );
                }, 
                function(fileError) { alert(fileError.code); }
                );
        }, 
        function(fileError) { alert(fileError.code); }
        );
}

アプリケーション名:myApp
パッケージ名:your.app.name
でデバッグ版でビルドします。

  • LocalFileSystem.PERSISTENTで取得したrootは、"/mnt/sdcard"になってました。単にroot.nameだけだと"sdcard"が返されます。
  • LocalFileSystem.TEMPORARYで取得したrootは、"/mnt/sdcard/Android/data/your.app.name/cache"になってました。単にroot.nameだけだと"cache"が返されます。
  • foo.txtは"/mnt/sdcard/foo.txt"として無事"Hello"が書きこまれました。
  • bar.txtは"/mnt/sdcard/Android/data/your.app.name/cache/bar.txt"として無事"This is..."が書きこまれました。
  • 細かい使い方とか、PhoneGap側のDocumentだけじゃ足りなくて、W3Cのサイト見つつになるのが大変。

この辺、PhoneGapの仕様としてそうなっているのか、Monaca独自のカスタマイズでそうなっているのかは不明です。
ただ、sdcardに保存されるという点から、あんまり重要情報は保存したくないなぁという感じです。他のアプリからも読み書き出来てしまいますので・・・。

FileSystem以外の感想としては、

  • jQueryとかjQuery Mobileの機能も使うので、調べ物が大変。とはいえ学習曲線での初期コストと考えれば、慣れの問題か。
  • 外部のURLリンクを置いてみてクリックしたところ、Android標準ブラウザが起動した。独自のWebサイトをPhoneGap(Monaca)内のWebViewで表示するとかは出来るか謎。
  • 外部との通信はXHRになるみたいだけど、SameOriginPolicyとかどう扱われるのか謎。
  • PhoneGapの標準機能で物足りない場合は、Pluginという形でそれぞれのPlatformに応じたNativeコードを組み込んで拡張できるみたいです。Monacaが対応できるのかする予定はあるのかは不明。
  • JavaScriptって『簡単』なのかなぁ・・・?
  • console.log()とかが、自分のHTC S31HT (E-Mobile)では動作しないよぉ・・・。

他、参考サイト:

なんというか、N88-BASIC触ってるような感触を受けました。単純といえば単純なんだけど、アイデア次第で結構面白いの出来るんじゃないか、とか、プログラミングの入り口としても良さそうだな、とか。PhoneGapという制限範囲の中でどんな「捻り」を思いつくのかとか、そんな面白さがある気がします。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-12-11 21:44:18
md5:2101a2fa0aca477ee3626e434b1829c6
sha1:51a2720b5cf7291ee1fc54a6482ca245c5fff3d3

日記/2011/12/10/ADTとCRLF問題、なんとか落ち着いた。  

所有者: msakamoto-sf    作成日: 2011-12-10 23:30:22
カテゴリ: Android Mercurial 
  1. Mercurial側でEolExtension( http://mercurial.selenic.com/wiki/EolExtension )有効化。
  2. もともとWindows側で作成したAndroidプロジェクトなので、native=CRLFでリポジトリルートに.hgeol作成
  3. Mac側では .hgrc に eol + native = LF 指定。

これで、Mac側でリポジトリを取得したときに改行コードが全てLFになる。
→ADT Pluginの自動生成でR.javaなどが同じ内容で更新されても、改行コードもLFなので差分無し。

よっしゃ!


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-12-10 23:33:40
md5:a2d56e9fb090ea518dfa8082c5f8460b
sha1:2a161d9a1e1a9337bd437f7a43585dc6672dc9fb

日記/2011/12/05/WebSocketに対応しているProxy  

所有者: msakamoto-sf    作成日: 2011-12-05 00:10:05
カテゴリ: HTML HTTP 

BurpもZAPも、WebSocket接続時のHTTPリクエストが、サーバから返ってこないのでタイムアウトして、ブラウザ側もタイムアウトになってしまって接続エラーになる。

Fiddler位かな。でも開発中みたいだし。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-12-05 00:13:22
md5:09fd42818b1a5166f6b57a08aee32402
sha1:602b2b67acf28d587676dedd1106ef1a7d8014ab

日記/2011/12/04/ContentProviderのアクセス範囲について  

所有者: msakamoto-sf    作成日: 2011-12-04 19:00:42
カテゴリ: Android セキュリティ 

CodeZineの次の記事で、「このContentProviderを持っているアプリケーションだけがアクセスできるように制限するには、android:exportedプロパティを明示的にfalseにします。」との記述がありますが、個人で調べた範囲ではAndroidのバージョンに依存しているようです。

技術/Android/PermissionExamples にて、Activity/Receiver/Service/ContentProviderを幾つかの組み合わせで呼べる・呼べないを網羅的に調べた資料を公開していますが、ContentProviderでの実験では以下の現象が確認されています。

API Level 8 (Android 2.2)
android:exported="false"でも他のアプリ(署名も別)からアクセス可能。
API Level 10 (Android 2.3)
android:exported="false"で他のアプリからアクセス不可能("java.lang.SecurityException: Permission Denial"発生)

タオソフトウェアの記事でも、同様の検証結果が公開されています。こちらでもAPI Level 8以前はNG、API Level 9以降で有効との結果になっています。

端末メーカー側できちんと修正してリリースしている可能性もありますが、そこまでは調査しきれていません。

解決策としてはタオソフトウェアの記事でも紹介されていますが、signatureレベルのpermissionを使うことで、署名が異なる=外部アプリからの呼び出しをブロック出来るようになります。

一点気になるのが、記事中でのDropboxの修正内容で、exported="false"にしているだけです。これはAPI Level 8以前ではナンセンスです。もしかしたらメジャーな実機端末では2.2以前でも修正されていて問題ないのかもしれません。或いはgrant-uri-permissionを指定しているようなのでそれが影響しているのかもしれません。

一応宣伝ですが、技術/Android/PermissionExamples で公開している実験結果の追加検証(API Levelや実機など)を手伝っていただける方募集です。gmailを教えて頂ければ、編集レベルで共有します。実験に使ったアプリのソースもbitbucketでMercurialにて公開してますので、興味のある方は試してみてください。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-12-04 22:18:38
md5:905f7a4d6df329f446946502fb917add
sha1:fcc56b3457fdf1537e0d5ea8459ae036224a333d

日記/2011/12/04/BurpSuiteメモ  

所有者: msakamoto-sf    作成日: 2011-12-04 17:49:06
カテゴリ: HTTP 

お仕事で使ってるProxyツール、BurpSuiteのメモ。

・proxyのhistoryで選択→save itemすると文字化けする。
→optionsのloggingでのログは文字化けしない。ただしリアルタイムに書き込みしているわけではなく、数秒間ほど溜めてから書きだしたりしていて、バッファリングされている模様。
→というか、upstream proxyをOWASPのZAPにして、対象サイト以外をフィルタしてしまえば、ZAPなら文字化けせずにデータをごっそり保存・ロードできるので、そちらでロギングしておくという手法も有りか。メモリ食いそうだけど。

・ログイン画面からログインして~とか、CSRF対策用トークンを取得したり、前準備が必要になったりするケース
→最初にoptions→session→macroで、その直前までのリクエストの流れを組み立てておき、session handlingで"Run macro"で追加する。セッションのタイムアウトまで含めてチェックしたい場合は、セッションが維持できているか判定できるリクエストをmacroで組んでおき、"Check session is valid"として追加しておく。なお"Check session is valid"で"if session is valid, don't process any further rules or actions for this request"にチェックを入れておくと、セッションが有効なときに、他のRun macroとかで登録したアクションが実行されない。トークン取得の前段階としてセッション判定を入れたい場合は、このチェックを外しておかないと、セッションが有効な場合にトークン取得が動かないので失敗する。チェックを外せば、セッション有効ならそのままトークン取得が動くのでOK。
→この辺は実際にrepeaterとか使って動かしてみた後、"view session tracer"でルールの動作を確認したほうが良い。別のproxyをupstream proxyに設定して、そちらで全体のリクエストを確認するというのも有り。

・upstream proxyが思いの外便利。
→ブラウザ側でぐちゃぐちゃ切り替えずにBurpから素通しで他のProxyへリレー、みたいなことが簡単に出来るので。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-12-04 18:02:30
md5:16048d7c23bfa40476227af11888316d
sha1:213b2f38779a4346c69660533a766366d1290611

日記/2011/11/27/Android4.0(ICS)の画面キャプチャ機能(続報)  

所有者: msakamoto-sf    作成日: 2011-11-27 18:30:30
カテゴリ: Android 

ICSのソース全体がrepo syncでget出来たので、 日記/2011/10/23/Android4.0(IceCreamSandwich)の画面キャプチャ機能 で気になってた実際のソースを探検してみました。

といっても、かなり主観と偏見に基づいて、ざっくりとした流れだけを追ってます。もしかしたら漏れがあるかもしれないし、権限周りなどセキュリティ的な視点は後回しにしてます。

先に三行でまとめ:

  1. /system/bin/screenshot (前回失敗) → /dev/graphics/fb0 から手動で読み込んでるのが原因か。
  2. /system/bin/screencap (前回成功) → ScreenshotClientクラスのupdate()が成功すれば、getPixels()で読み出している。update()が失敗なら /dev/graphics/fb0 から手動で読み込み。
  3. サービスとして:TakeScreenshotService → GlobalScreenshot : GlobalScreenshotをServiceとしてラップしているのがTaskScreenshotService。GlobalScreenshotの中でスクリーンショットを取得するときのアニメーション処理などを処理しているっぽいので、多分VolDown + Powerでのスクリーンショット取得で動作するのはこのコードで合ってるはず。最終的にはscreencapコマンドと同様、ScreenshotClientクラスのupdate()→OpenGLのglReadPixels()でスクリーンショットを取得している。
(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-11-27 19:28:55
md5:2a25a032b54026984fbec012daeee48c
sha1:0524bdf9339900e615aefaafccae035041fa6405