タグ

ブックマーク / dsas.blog.klab.org (34)

  • DSAS開発者の部屋:Android アプリケーションが起動するまでの流れ

    プログラム開発のために Android 上でアプリが起動するまでの過程を調べてみました。備忘をかねて、ソースコードをひと通り追跡した記録をここに控えます。 まとめ ※クリックすると大きな図が開きます Zygote(ザイゴート)プロセスは、Android システムブート時に起動し DalvikVM 体と Android プログラムの実行に必要なダイナミックリンクライブラリと Java のクラスライブラリをロードした状態で待機する常駐プロセスである Zygote プロセスの目的は、同プロセスを fork することによりプログラム実行用のプロセス環境を素早く効率的にシステムへ提供することにある UNIX ドメインソケット /dev/socket/zygote が Zygote プロセスへのインターフェイスであり、同ソケットにプロセス生成要求を送出すると Zygote はプロセス fork を実

    DSAS開発者の部屋:Android アプリケーションが起動するまでの流れ
    craf
    craf 2011/09/29
  • Android 上のアプリから SSL クライアント認証の必要なサーバへアクセスする方法 : DSAS開発者の部屋

    Android の Web ブラウザが SSL クライアント認証に対応していないのは不便だという話を以前このブログに書きました。記事では、Android 上の stone に SSL まわりの処理を代行させる方法について触れました。 それから半年、家の Android 標準ブラウザは現在も未対応のままですが、「SandroB」のようにクライアント認証に独自対応したブラウザも登場し始めています。こうした動きは Android ユーザとしてとても喜ばしいことで、対応環境の拡大や機能面の向上など今後の進化が大いに期待されます。 一方で、たとえば KLab の「VPN-Warp」のような SSL-VPN システム経由での利用が想定されるアプリケーションは Web ブラウザばかりではありません。私の場合、出先から自宅 PC へのアクセスには VNC を VPN-Warp+stone 経由で使ってい

    Android 上のアプリから SSL クライアント認証の必要なサーバへアクセスする方法 : DSAS開発者の部屋
  • root 化ずみ端末に対応した Android アプリを書く方法 : DSAS開発者の部屋

    Android 端末を root 化するユーザが増えています。 一部の開発者向け製品以外では root 権限を取得するための公式の手段は提供されていないので、その方法を自分で探索するにせよ誰かが開拓した手順をトレースするにせよすべては自己責任であるわけですが、一方で root 権限を必要とするアプリはマーケットにもあれこれ出回っており、つまりはこの件に関する安全性と利便性のトレードオフに満足できない向きが世界中に大勢いるということでしょう。 その状況自体もいろいろ興味ぶかいのですが、ところで、その「root 権限を利用するアプリ」というものはどうやって書けばいいのでしょう?Google 公式の開発者向け資料は言うに及ばず、その他のリソースにも今のところほとんどこの話題に関する情報は見当たりません。そこで今回は、実際に手元のアプリを root 権限での実行に対応させる試みを通じて得た情報やノ

    root 化ずみ端末に対応した Android アプリを書く方法 : DSAS開発者の部屋
  • パケットリピータ「stone」を Android へポーティング : DSAS開発者の部屋

    オープンソースの多機能パケットリピータソフトウェア「stone」を Android 用にビルドしてみました。 当初は個人的に使用することが目的でしたが、原作者の仙石 浩明 (Hiroaki Sengoku) さんの了承のもと、ビルドずみバイナリを含むリソース一式を非正式版として公開します。他のプラットフォームで stone の便宜に馴染んでいる方はお試し下さい。なお、stone 体の使用方法等についてはこの記事では触れません。公式サイトの解説記事を参照して下さい。 ■ Download (2015年5月 記事を更新) プロジェクト一式を GitHub へ移動しました。以下のリポジトリを参照して下さい。ビルドずみの実行形式も収めています。 ・ https://github.com/mkttanabe/stone-Android-NDK 以下の説明ではこのソフトウェアを「ソフトウェア」と呼

    パケットリピータ「stone」を Android へポーティング : DSAS開発者の部屋
    craf
    craf 2011/01/02
  • Android NDK でネイティブ CUI プログラムを書く! : DSAS開発者の部屋

    (2015年6月追記) 2014年10月に公開された Android 5.0 (Lollipop) 以降では PIE (Position Independent Executable) 以外のネイティブ実行形式がサポート外となったため注意が必要です。詳細はブログの次の記事を参照して下さい。 「Android で今後ネイティブ実行形式を扱う際に注意すべきこと」(2015年6月17日掲載) 今ならとても有利な条件で au の Android 端末を入手できることをネットで知り、先週の休みに地元の家電量販店へ足を運んでみました。 Android 1.6 搭載のこの「IS01」に今後 OS のバージョンアップサポートが適用されない旨の発表を聞いた時はお気の毒に・・と思っていましたが、極端に低いコストで実機を持てるのなら話は別です。とりあえずの実験用としていろいろ使えることでしょう。 そんなわけで

    Android NDK でネイティブ CUI プログラムを書く! : DSAS開発者の部屋
    craf
    craf 2010/12/04
  • 「このプログラムは正しくインストールされなかった可能性があります」を回避する方法 (Windows 7, Vista) : DSAS開発者の部屋

    (*1) このパターンでは権限昇格要求が発生しません (*2) 権限昇格されないため HKLM 配下へアンインストール情報を書き込む時点で失敗します ■ このメッセージが表示される理由 Windows Vista で登場した UAC (User Account Control) の目的のひとつは、ユーザの意図しないプロセスがログオンセッションを悪用してシステムに害を及ぼす危険を抑止することです。そのため、現在のログオンユーザが管理者権限を持っていても、あるプログラムを管理者権限で実行するためにはユーザが明示的にそれを許可する必要があります。 一方、Windows 環境へ所定のプログラムを登録することを目的とする「インストーラ」は、その性質上多くの場合システムの深部にアクセスする処理を内包しています。そのため通常は管理者権限で実行されなければなりません。そこで問題となるのは、インストーラ側が

    「このプログラムは正しくインストールされなかった可能性があります」を回避する方法 (Windows 7, Vista) : DSAS開発者の部屋
  • Windows実行形式のMachineタイプを判別する方法 : DSAS開発者の部屋

    粗忽な性格の筆者の場合、Windows 上であるプログラムの 32 ビット版・64 ビット版のふたつを開発していると、ときどき「あれ、このバイナリはどっちだっけ??」という状態になることがあります。開発を行っているプラットフォームが 32 ビットであればクロスコンパイルした 64 ビットバイナリをそのまま実行することはできないためパッと判別できますが、64 ビット環境だとかしこい仮想機構 (WOW64: Windows 32bit On Windows 64bit) のおかげで 32ビットコードもすんなり実行できてしまうので逆にちょっと面倒です。 64 ビット環境の場合は所定のバイナリを実行してタスクマネージャで確認すれば、32 ビットプロセスならプロセスイメージ名の末尾に「*32」の符丁が表示されるためそれで見分けることもできますが、わざわざそのためにプロセスを起動するというのも何だか妙

    Windows実行形式のMachineタイプを判別する方法 : DSAS開発者の部屋
  • Windows仮想プリンタプログラムを作ってみる : DSAS開発者の部屋

    普段よく使っているソフトウェアであっても、どういうしくみで機能を実現しているのかよくわからないものが結構あります。 筆者は主に Windows 環境で作業をしていますが、PDF ファイルを作成するたびに目にする「仮想プリンタ」もそのひとつでした。 システムは物のプリンタだと信じているのに実はそれはソフトウェアへのインターフェイスにすぎず、印刷ジョブを渡したら最後、データは隅から隅までなめまわされ好きなように処理されてしまう。ということは、その気になればあんなことやこんなこともできてしまうはず・・・。 あらためて考えてみるとなかなか面白い話なので、仮想プリンタのしくみを調べて何かプログラムを書いてみたいと思いました。 手はじめに、定番の題材として所定のドキュメントを PDF や画像に変換しファイル出力する仮想プリンタを作ってみることにしました。 ひとつの仮想プリンタを自作のコードで構築し、

  • 起動不能なPCからインポートずみ証明書を救出せよ! : DSAS開発者の部屋

    毎日普通に使っている PC が突然起動できなくなるといろいろ困ったことになりますね。今回はそういう話のひとつです。 1. ことの始まり 先日、遠くの知人から「手元の PCWindows XP を起動できなくなった」と連絡がありました。 最初のロゴ表示が終わったところでフリーズする状態で、セーフモードでの起動もできないそうです。 彼は言います。 「HDD を取り出し別の PC につないで最新版のデータファイルを全部拾い上げたので、普段使ってるソフトの数を考えればもとの環境の復旧に時間をかけるよりも新しい環境へデータを移行する方が早そうだ」 幸い HDD に物理的損傷はなかったようです。 よかったね今後は HDD のまるごとバックアップもこまめにやるべし、と答えると、「実はひとつだけ問題が残っている」とのことでした。 話はここから始まります。 問題というのは「Windows 証明書ストア

    起動不能なPCからインポートずみ証明書を救出せよ! : DSAS開発者の部屋
  • OpenSSH クライアントの proxy -- 踏み台サーバを経由しての ssh : DSAS開発者の部屋

    DSAS のメンテナンスは,基的に ssh を使ったリモートメンテナンスで済んでしまいます.夜中や休日に非常事態が起こったとしても,ネットワーク接続さえ確保できればその場で対応できます.ただ,さすがにインターネットから DSAS に直接 ssh できる様にしておくのは一抹の不安があります.ですので,DSAS への ssh 接続は社内のサーバからのみ許すようにしておいて,外からログインする必要があるときは一旦社内のサーバを経由することにしています. このような形にしている場合,DSAS にログインしようとする際は,一旦社内のサーバに ssh 接続する必要があって,小さなことですが一手間かかってしまいます.できればワンステップで接続できる方法が無いかと思って色々検索してみた(※)ところ,このページで ProxyCommand という設定項目を見つけました(見つけたのがボスの個人サイトなのは

    OpenSSH クライアントの proxy -- 踏み台サーバを経由しての ssh : DSAS開発者の部屋
    craf
    craf 2010/03/29
  • Windowsでfopenを使ってはいけない!? : DSAS開発者の部屋

    Windows環境でsvn+ssh:// からの bzr branch に失敗するという報告があり、調べてみたところ面白いことが判ったので記事にしておきます。 まず、bzr-svnはsubvertpyというlibsvnのバインディングを利用していて、svn+ssh://プロトコルのハンドリングはlibsvnが行っています。 このため、bzr+ssh://ではPython製のSSHクライアントであるparamikoを利用している環境でも、svn+ssh://の場合はlibsvnがssh.exeやSVN_SSH環境変数に設定されたsshクライアントを起動しています。 私はputtyを利用しているので、SVN_SSH=plinkと設定してsvn+sshが利用できる環境を用意して問題が再現することを確認しました。 ログやトレースバックを追ってみたところ、あるファイルを構築する際に一時ファイルに書き

    Windowsでfopenを使ってはいけない!? : DSAS開発者の部屋
  • Windows用ソフトウェア「イージスガード」を公開します : DSAS開発者の部屋

    「イージスガード」は Windows PC 上のデータをウイルスやマルウェアの脅威から守るためのソフトウェアです。KLab は個人向けにこのソフトウェアの無償公開を開始しました。 イージスガードには次の機能・特長があります。 所定のフォルダ・ファイルを保護対象として設定可能 許可しないプログラムからのアクセスを報告・記録する 許可しないプログラムからのアクセスを透過的にダミーフォルダへ誘導 PC 環境に応じて保護設定を自動生成する 改変されたプログラムからのアクセスを抑制する 有効なデジタル署名つきのプログラムには自動的に許可を与える イージスガードは、以前このブログでご紹介した「WinAmulet」を母体とする上位互換のソフトウェアです。WinAmulet ユーザ各位のご支援のおかげで、多くの機能を追加し大きく性能を改善したこの新しいソフトウェアが生まれました。もちろん、WinAmule

    Windows用ソフトウェア「イージスガード」を公開します : DSAS開発者の部屋
  • Bazaarの紹介 : DSAS開発者の部屋

    私は以前までバージョン管理システムには Mercurial を利用していたのですが、 最近 Bazaar に移行しました。 先日 1.9 がリリースされましたので、これを機に Bazaar を紹介します。 現在、日で一番使われているバージョン管理システムはSubversionだと思うのですが、 最近は分散型のバージョン管理システムがオープンソース界で人気になっていて、Bazaarはその一つです。 分散型バージョン管理システムの利点はたくさん有るのですが、個人的に便利だと 感じる点は、(1)ネットワークにつながっていなくてもバージョン管理できる、(2)Subversion よりもマージが楽、(3)リポジトリのバックアップが楽、というところです。 分散型バージョン管理システムでよく使われているものに、git, Mercurial (hg), Bazaar (bzr) があります。git

    Bazaarの紹介 : DSAS開発者の部屋
  • DSAS開発者の部屋:Win32 プログラムのデバッグTips (1)

    ■ はじめに ひとつのプログラムを完成させるまでには、多くの場合「デバッグ」という作業が必要です。 まったくバグのないプログラムを一気に書き上げるのは難しいことですから、 プログラミングの際には実行時のエラーを見つけやすくするための工夫が必要ですし、 実際にエラーが発生した場合にはできるだけ手際よく対処したいものです。 デバッグを行う上での最初の目標である「原因の特定」を効率的に行うための ツールや流儀はプラットフォームや使用言語により一様ではありませんが、 ここではネイティブな Windows プログラムをデバッグする上で役に立つ小技をいくつかとり上げてみたいと思います。 今回は、自作のプログラムの実行中にプロセスが異常終了する状況において、 問題箇所を手早く探すための方法のひとつをご紹介します。 記事では Microsoft Visual C++ を開発環境と想定しています。 どうやら

    DSAS開発者の部屋:Win32 プログラムのデバッグTips (1)