mojavy.com http://mojavy.com/blog Sun, 30 Aug 2015 16:22:20 GMT Blogofile hourly 1 95/5 Mbps とは http://mojavy.com/blog/2015/08/30/95_5_mbps/ Sun, 30 Aug 2015 16:22:20 JST <![CDATA[tips]]> <![CDATA[internet]]> http://mojavy.com/blog/2015/08/30/95_5_mbps/ 95/5 Mbps とは <![CDATA[

AkamaiのBilling Center API では、95/5 Mbpsという単位のデータが取得できる。

95/5 Mbps というのは、特定の期間の平均Mbpsを5分間隔でサンプルしたものをソートした時の95パーセンタイルの値ということらしい。

なぜこのような数字が使われるのかというと、単純にピークのトラフィックを基準にして課金されると利用者側にとってつらいという問題があるからだ。 インターネットのトラフィックは往々にしてスパイクが発生するので、それだと普段はほとんど帯域を使わないのに一瞬のアクセス急増があっただけでコストが大きく増大してしまう。

そこで、あるISPが95/5 Mbpsで課金するようにしたところ市場で支持を得たため、これが一般的な課金形式として広まったらしい。

参考

]]>
gitlab 6.6.4 CE のゆるふわセットアップ http://mojavy.com/blog/2014/03/11/latest-gitlab-setup/ Tue, 11 Mar 2014 02:08:20 JST <![CDATA[chef]]> <![CDATA[git]]> <![CDATA[tips]]> <![CDATA[gitlab]]> http://mojavy.com/blog/2014/03/11/latest-gitlab-setup/ gitlab 6.6.4 CE のゆるふわセットアップ <![CDATA[

gitlabもCentOSとUbuntuにはパッケージが提供されるようになったので、大分インストールが簡単になりました。

とはいえ、このパッケージはgitlab専用のマシンにインストールすることを前提にしているのか、小規模プロジェクトのために軽く使いたいよう場合ではつらいデフォルト設定となっています。安いvpsとかだと確実にメモリ不足でまともに動きません。

以下はとりあえずプライベートgitリポジトリが欲しいだけのような人のためのgitlabの設定の紹介です。

準備

https://www.gitlab.com/downloads/

ここからgitlabのパッケージをダウンロードします。 omnibus-ruby でつくられた全部入りパッケージなのでインストールでのコンフリクトは発生しないはずですが、既に稼動中のサービス(apache等)のことはあまり考慮されてないので使用するポートについては個別対応が必要です。

特に以下は注意が必要です。

  • nginx
  • redis
  • postgresql

ここでは、apacheが稼動しているubuntuにインストールします。

インストール

普通にインストールします。

$ sudo dpkg -i gitlab_6.6.4-omnibus-1.ubuntu.12.04_amd64.deb 
$ sudo gitlab-ctl reconfigure

ちなみにgitユーザが既に存在しているとこけるので消しておきます

$ sudo userdel -r git

gitlabの設定

gitlabの設定は /etc/gitlab/gitlab.rb に設定をかいて、chefで設定します。

$ cat /etc/gitlab/gitlab.rb
external_url "http://gitlab.example.com:8081"
unicorn["worker_processes"] = 1
postgresql["shared_buffers"] = "128MB"
postgresql["effective_cache_size"] = "32MB"

とりあえずpostgresqlがメモリを大量に食うので適当に減らします。

unicornもメモリ食いがちなので1プロセスにします。

external_urlにポートも含めたURLをかきます。apacheが80番で起動してるとnginxが起動できないので適当にはずします。ちなみに8080はデフォルトだとgitlabのunicornがつかっています。

このあたりは環境に応じて適当に設定してください。

gitlab-ctl reconfigure すると設定が反映されます。

その他の設定できる項目は /opt/gitlab/embedded/cookbooks/gitlab 以下のcookbookをみるといいです。

webサーバの設定

80番で起動しているapacheがいる場合はnginxにproxyします。

<VirtualHost *:80>
  ServerName gitlab.example.com

  DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public

  CustomLog  /var/log/apache2/gitlab_access.log combined
  ErrorLog   /var/log/apache2/gitlab_error.log

  ErrorDocument 502 /502.html

  <Directory "/opt/gitlab/embedded/service/gitlab-rails/public">
    Options FollowSymLinks
  </Directory>

  <Proxy *>
    AddDefaultCharset off
    Order deny,allow
    Allow from all
  </Proxy>

  ProxyVia On
  ProxyPreserveHost On

  ProxyRequests Off
  ProxyPass /assets/ !
  ProxyPass /uploads/      !

  ProxyPass / http://localhost:8081/ retry=1
  ProxyPassReverse / http://localhost:8081/

</VirtualHost>

以上ができたらapache再起動して、 http://gitlab.example.com にアクセスしてみてうまく表示できれば完了です。

]]>
TOMLノススメ http://mojavy.com/blog/2013/04/26/toml/ Fri, 26 Apr 2013 20:21:11 JST <![CDATA[tips]]> <![CDATA[toml]]> http://mojavy.com/blog/2013/04/26/toml/ TOMLノススメ <![CDATA[

github

TOMLとは

https://github.com/mojombo/toml

Tom's Obvious, Minimal Language (TOML) とはgithubの中の人が提案している設定ファイルのためのミニ言語で、以下のような特徴があります。

  • 人間が読み書きしやすい
  • 標準的なデータ型が利用できる
  • 曖昧さが発生する余地が極力排除されている
  • パーサをかくのが簡単

なぜTOML?

例えば、YAMLを設定ファイルに使っているシステムは多いですが、YAMLの仕様書は80ページもあり正しく使うのは意外と大変です。1

またJSONはカッコやダブルクオートの割合が多すぎますし、コメントも使えません。2

TOMLをつかえばそのようなストレスはありません。

TOMLの使い方

TOMLの書き方は本家のドキュメント をみてもらえばすぐわかると思います。

TOMLのライブラリは各種言語に対応したものが既にたくさんあります。 言語によっては複数の実装が存在するものもありますが、とりあえずはgithub上でのstarの数が一番多いものから試すといいと思います。

わざわざ説明するほどの内容でもないですが、ここでは一応rubyでの使い方を紹介します。 gem install tomlでインストールして、以下のようにするだけです。YAMLの場合と大体同じですね。

require 'toml'

TOML.load("thing = 9")
# => {"thing" => 9}

TOML.load_file("my_file.toml")
# => {"whatever" => "keys"}

その他

  • TOMLでは日付型も定義されていて、それもUTC固定というのが地味にいいです
  • githubのコードハイライトは既にTOMLに対応してます
  • emacsユーザはtoml-modeというのがmelpaに登録されているので、M-x list-packagesからインストールできます。

まとめ

TOMLという設定ファイルのための新しいフォーマットを紹介しました。 設定ファイルにYAMLやJSONつかってるひとはTOMLに移行すると幸せになれるかもしれません。


  1. 仕様を正確に実装したYAMLパーサはほとんど存在しないとかいう話もちらほら 

  2. https://github.com/mojombo/toml/issues/2  

]]>
Mac OSXでシェルスクリプトをキーボードショートカットに登録する方法 http://mojavy.com/blog/2013/03/28/mac-shell-script-keyboard-shortcut/ Thu, 28 Mar 2013 02:50:01 JST <![CDATA[mac]]> <![CDATA[shell]]> <![CDATA[tips]]> http://mojavy.com/blog/2013/03/28/mac-shell-script-keyboard-shortcut/ Mac OSXでシェルスクリプトをキーボードショートカットに登録する方法 <![CDATA[

automator

概要を以下にメモ

  1. Automatorを起動
  2. サービスを選択
  3. 右ペインの上部、「次の選択項目を受け取ります」を入力なしにする
  4. 左ペインからシェルスクリプトを実行をダブルクリック
  5. デフォルトでcatになっている内容を任意のシェルスクリプトにする
  6. 右上の実行ボタンからテスト
  7. 適当な名前をつけて保存して閉じる
  8. システム環境設定>キーボードを開く
  9. キーボードショートカットのタブを選択
  10. サービスを選択してさっき保存したautomatorの名前をみつける
  11. 好きなショートカットを設定する

参考: http://superuser.com/questions/45740/fast-user-switching-apple-menu/46308#46308

備考

  • 新規作成したworkflowは保存して閉じるまでシステム設定のキーボードショートカットの項目に反映されない
  • workflowは$HOME/Library/Services に保存される
]]>
telnetでメールを送信する方法 http://mojavy.com/blog/2013/02/23/telnet-smtp/ Sat, 23 Feb 2013 18:17:17 JST <![CDATA[postfix]]> <![CDATA[tips]]> <![CDATA[smtp]]> http://mojavy.com/blog/2013/02/23/telnet-smtp/ telnetでメールを送信する方法 <![CDATA[

lisp

何回やってもpostfixの設定の仕方を覚えられないので、今更ながら最低限のプロトコルを理解するためにtelnetからsmtpでメールを送信してみようと思い立ちました。

以下は自分のgmailアドレスにtelnetでメールしてみたときの個人的な手順メモです。

手順

1. 該当メールアドレスのMXレコードを調べる

普通のメールアドレスの@以下はドメイン名になっている場合がほとんどですが、DNSのAレコードに登録されているのはホスト名なのでメールサービスを提供しているホスト名を調べる必要があります。そのときに使うのがMXレコードで、nslookupでも以下のようにして調べることができます。

% nslookup -type=mx gmail.com
Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
gmail.com       mail exchanger = 5 gmail-smtp-in.l.google.com.
gmail.com       mail exchanger = 10 alt1.gmail-smtp-in.l.google.com.
gmail.com       mail exchanger = 20 alt2.gmail-smtp-in.l.google.com.
gmail.com       mail exchanger = 30 alt3.gmail-smtp-in.l.google.com.
gmail.com       mail exchanger = 40 alt4.gmail-smtp-in.l.google.com.

Authoritative answers can be found from:

複数のホストが優先度をつけて登録されているので、この場合は gmail-smtp-in.l.google.com を使えばいいということになるみたいです。

2. telnetで25番ポートに接続してsmtpを話す

smtpはテキストベースのプロトコルなのでtelnetからそのままサーバとやりとりできます。 smtpプロトコルの詳細は省略しますが、最低限必要なコマンドは以下の5つだけ。

  • HELO - 通信開始
  • MAIL FROM - 送信元メールアドレス。ドメインのIPと送信元のIPが一致している必要がある。dynamic DNSのドメイン名でも大丈夫。ユーザ名部分は実際に存在しなくてもよい(その場合は返信を受けとれない) smtpサーバ側次第。postfixの設定によっては任意に設定できる。
  • RCPT TO - 送信先メールアドレス
  • DATA - メール本体の開始。'.'(ピリオド)だけの行で本文終了。本文のFromとToはなんでもよい。普通のメーラのfromやtoで表示されるのはここの情報
  • QUIT - 通信終了
% telnet gmail-smtp-in.l.google.com 25
Trying 173.194.79.26...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP k8si26817952pax.291 - gsmtp
HELO
250 mx.google.com at your service
MAIL FROM:<username@yourhostname>
250 2.1.0 OK k8si26817952pax.291 - gsmtp
RCPT TO:<[email protected]>
250 2.1.5 OK k8si26817952pax.291 - gsmtp
DATA
354  Go ahead k8si26817952pax.291 - gsmtp
Subject: xxx
From: yyy
To: zzz

.
250 2.0.0 OK 1361347877 k8si26817952pax.291 - gsmtp
QUIT
221 2.0.0 closing connection k8si26817952pax.291 - gsmtp
Connection closed by foreign host.

3. メールの確認

gmail上でメールがきているか確認します。DATA部分を適当に書くとスパム判定されてしまいますが一応届くはず。

postfixの設定メモ

上記は直接gmailのsmtpサーバで送信しましたが、mailコマンドからローカルのpostfix経由で送るにはpostfixを適切に設定する必要があります。

MAIL FROMのドメイン部分を省略した場合は、myoriginの値になった MAIL FROMで使われるのはmyoriginの値になるようなので、送信だけでよいのであればmyoriginのIPが送信元のグローバルIPに一致するように設定しさえすればよいということですかね。

ちなみに、debianのaptからpostfixを「ローカルのみ」の設定でインストールしてしまうと、デフォルトのmain.cfにリレーしない設定になっているので、main.cfを以下のようにコメントアウト。

# default_transport = error
# relay_transport = error

あと、sakura vpsのお試し期間中はメール送信できない仕様なので、sakura vpsで試す際は注意。

http://vps.sakura.ad.jp/terms.html

]]>
おやつの時間をお知らせしてくれるUnixコマンド:at teatime (他...) http://mojavy.com/blog/2013/01/08/favorite-linux-command/ Tue, 08 Jan 2013 20:30:00 JST <![CDATA[unix]]> <![CDATA[tips]]> <![CDATA[linux]]> http://mojavy.com/blog/2013/01/08/favorite-linux-command/ おやつの時間をお知らせしてくれるUnixコマンド:at teatime (他...) <![CDATA[

banana

Favorite Linux Commands(http://clippy.in/b/YJLM9W) で紹介されてたコマンドのうち知らなかったものをメモ。

at

入力されたコマンドを指定されたタイミングで実行するようにスケジュールする。 cronに登録するほどでもない単発のコマンドを実行したいときとかにつかう。 時間の指定には現在の時刻からの経過時間や絶対時間の他にteatimeやmidnightといった文字列もつかえる。 ちなみにteatimeは午後4時。 出力先を指定しなければコマンドの出力はcronと同じようにメールにとぶ。$TTYにリダイレクトしてやればコマンドを実行した端末に表示させることもできる。

echo "echo おやつの時間です > $TTY"| at teatime
echo "echo はろー > $TTY" | at now + 3 minute

mtr

tracerouteとpingをあわせたようなもの。tracerouteより表示がみやすい。 ネットワークのどこで時間がかかってるのか一目でわかる。

mtr mojavy.com

column

入力テキストをいい感じのカラム表示にフォーマットしてくれる。 縦に長い出力するコマンドとか、そのままだと出力がみづらいときとかにつかう。

gem list | column
mount | column -t
grep -v '^#' /etc/apt/sources.list | column -t

reset

端末をリセットする。 うっかりバイナリファイルをcatとかしてしまって端末が壊れてしまった場合に端末を閉じずに復帰できる。

sshfs

ssh経由でリモートのファイルシステムをマウントできる。

sshfs name@server:/path/to/dir /path/to/mount/point
fusermount -u /path/to/mount/point  # unmount

その他

以下はコマンド自体の機能ではないけど覚えておくと便利かもしれないもの

curl ifconfig.me

ifconfig.meというサイトがある。自分のグローバルIPがわかる。

dig +short txt .wp.dg.cx

dnsクエリでwikipediaのエントリーがみれる。

$ dig +short txt banana.wp.dg.cx
"Banana is the common name for herbaceous plants of the genus Musa and for the fruit they produce. It is one of the oldest cultivated plants. They are native to tropical South and Southeast Asia, and are likely to have been first domesticated in Papua New " "Guinea. Today, they are cultivated throughout the tropics. They are grown in at least 107 countries, primarily for their... http://en.wikipedia.org/wiki/Banana"
]]>
ウェブエンジニアのためのオンラインツールまとめ http://mojavy.com/blog/2012/11/20/web-engineers-online-toolbox/ Tue, 20 Nov 2012 02:30:00 JST <![CDATA[web]]> <![CDATA[tips]]> http://mojavy.com/blog/2012/11/20/web-engineers-online-toolbox/ ウェブエンジニアのためのオンラインツールまとめ <![CDATA[

tool

The Web engineer's online toolboxというまとめ記事が便利そうだったので、実際に試しつつ抄訳してみました。(一部のコメントと体裁は変えています。)

目次

一覧

RequestBin

httpリクエストを保存するエンドポイントを作ってくれる。

Create a RequestBin のボタンをクリックするとURLが表示されるので、そこをHTTPクライアントからたたくとRequestBin側にリクエスト内容が記録される。 ソースも公開されてるのでローカルで立ちあげることもできる。

githubのwebhookのhelpも参考にどうぞ。

Hurl

httpリクエストを実行してくれる。パーマリンクも作ってくれるので、POSTリクエストもコピペで他の人と共有できる。

httpbin

HTTPリクエスト側でレスポンスのHTTP status codeやレスポンスやリダイレクト、cookieなどを制御できる。HTTPクライアントのテストに便利。

REDbot

HTTPのリソースをチェックしてくれる。問題を検出したら改善案のサジェストもしてくれる。

WebGun

webhookを簡単に作るためのAPIを提供している。現在はまだベータっぽい。

Apify

ウェブページをスクレイピングしてJSON API化してくれる。 CSSセレクタかxpathに名前をつけて設定するだけでよしなにやってくれる。

試しに元記事をAPI化してみた

Unicorn

前述のREDbotはHTTPをチェックしてくれるけど、こちらはHTMLドキュメントがW3Cに準拠してるかをバリデートしてくれる。

Feed validator

こちらはRSSとATOMフィードをバリデートしてくれる。

リンクを再帰的にたどって、重複やリンク切れをチェックしてくれる。

Host tracker

ウェブサイトのモニタリングサービス。定期的にpingして、問題があった場合はメール通知してくれる。

Pingdom Full page test

ウェブページのロード時間を計測、解析してくれる。リクエストを実行するサーバは米国しかないので国内だとちょっと使いづらい。 類似サービスのWeb page testならTokyoが選べる。

HAR viewer

HTTP tracking toolsで生成されたHTTP Archive (HAR)形式のログをビジュアライズしてくれる。

CORS proxy

クロスドメインでjsを実行できるようにヘッダを追加してレスポンスしてくれるプロキシ。

Browserling

ブラウザ上で動くインタラクティブなクロスブラウザ。メジャーなブラウザは大体サポートされている。 動作は重いけど表示確認くらいになら無料のままでも使えそう。

WebSocket Echo Test

WebSocketをテストできるエコーサーバ。

YQL

ウェブサービスからとってきたデータをSQLっぽい言語で整形できる。

Yahoo Pipes

ウェブサービスをGUIでマッシュアップできる。

Apiary

良い感じのREST APIドキュメントをインタラクティブなインスペクタをつかってジェネレートできる。まだベータ。

おわりに

  • いくつかのツールはサーバに負荷をかけてしまう可能性があるので注意してつかってください。
  • 他にもなにかあれば教えてもらえるとうれしいです。
]]>
細かすぎて伝わらないAndroid開発のはまりどころまとめ その1 http://mojavy.com/blog/2012/11/07/android-pitfalls/ Wed, 07 Nov 2012 12:00:00 JST <![CDATA[android]]> <![CDATA[tips]]> http://mojavy.com/blog/2012/11/07/android-pitfalls/ 細かすぎて伝わらないAndroid開発のはまりどころまとめ その1 <![CDATA[

android

これまでandroidアプリを開発しててはまったことがたまってきたのでまとめておきます。順不同です。 その2はまたねたがたまってきたらたぶんそのうち。

目次

onAnimationEndでviewの階層を操作するとNullPointerExceptionでおちる

Viewをフェードアウトして親Viewからremoveする、というような動作をしたい場合に、普通にonAnimationEndの中でremoveViewとかするとNullPointerExceptionでおちます。onAnimationEndの中でViewの階層構造を操作するような処理をしてはだめらしいです。回避するには、Handlerをつかってタイミングをずらしてやるとよいです。

Animationが動かない

AnimationさせるViewには親Viewが存在している必要があります。WindowManagerはViewではないので、WindowManagerにaddViewしたViewをアニメーションさせたい場合は空のRelativeLayoutとかにaddViewしてから、RelativeLayoutのほうをWindowManagerにaddViewしてやる必要があります。

WindowManagerにaddViewしたときの挙動

WindowManagerにもaddViewできますが、通常のViewとは挙動が違います。

  • 背景透過はWindowManager.LayoutParam.format に TRANSLUCENT をセットすればよいです。
  • dimでフェードインできますが、その際のdurationを変更する方法は分かりませんでした。
  • BACKボタンはきかなくなります。自分でKeyEventを処理してやる必要があります。android.widget.PopupWindowのdispathKeyEventのソースが参考になります。

Activityが横向きでスタートした場合と縦向きでスタートしたときで表示倍率が違う

onCreateが何回もよばれる

回転やキーボード表示のタイミングでもonCreateがよばれます。AndroidManifest.xmlでconfigChangesを設定することで回避できます。

popupWindowのsetWidth, setHeightは次回以降の表示サイズしか変えられません。既に表示しているポップアップウィンドウのサイズはそのままです。invalidateしても無駄です。

HttpURLConnectionが 0byteのresponseを返す

コネクションプールとkeepaliveがらみで問題が発生する場合があるみたいです。SDKのバージョンとウェブサーバ側の設定も影響します。 System.setProperty("http.keepAlive", "false") で回避はできるようです。これに遭遇したときは、org.apache.http.impl.client.DefaultHttpClientの方を使うことにしたので詳細は追ってません。

org.apache.http.impl.client.DefaultHttpClientがすごく遅い

httpsでリクエストを投げると、ウェブサーバ側の負荷が高いわけでもネットワークが細いわけでもないのに、返ってくるまでなぜか数秒かかる場合があります。こちらもkeepaliveがらみの問題っぽいです。これもウェブサーバ側の設定が影響します。 試した限りでは以下のような状況でした。

  • setHeader("Connection", "close") しても効果なし
  • setKeepAliveStrategyでdurationを 0とか1にしても効果なし
  • Connection closeしないウェブサーバならすぐレスポンスが返ってくる
  • httpならすぐレスポンスが返ってくる

ここ( http://hc.apache.org/httpclient-3.x/sslguide.html ) のKnown limitations and problemsをみるとそれっぽい既知の問題があるようですが、根が深そうだったので詳細は追ってません。

eclipseのAndroid pluginが動かなくなった

なぜかeclipseでAndroid pluginが動かなくなるときがありました。詳細をメモるのを忘れてしまいましたが、以下の手順で直ったような気がします。

  1. Android Support Libraryをアンインストール
  2. eclipse再起動
  3. 新しいAndroidプロジェクトを作るとダイアログでライブラリのインストールを促されるのでそれに従う
  4. android プラグインをアップデート

WebViewで表示されるコンテンツが小さすぎる

通常ビューのスケールとWebViewのスケールは別です。setScaleで調整する必要があります。 これはたぶんiOSでも同様かと。

java.lang.RuntimeException: Stub!

android.jar内のコードはdalvikvmの外で実行することはできません。問答無用でタイトルの例外が飛びます。 エラーメッセージはもうちょいなんとかならなかったのか。

参考

jarとして配布するandroidライブラリ内にリソースを埋め込むことはできない

リソースIDを列挙しているRパッケージはjarにそのまま入れることはできますが、そのリソースIDは不正なものとなります。 ライブラリにリソースを含めたい場合は、ソースも含めたプロジェクトをまるごと配布するしかないようです。

ごく小さなアイコン画像だけとかであればバイナリデータをソース中に埋め込んでしまう、というのも手です。 iOSならBundleという仕組みがあります。

android-maven-plugin から mvn eclipse:eclipse でeclipse用にエクスポートすることはできない

androidでもmavenは使えますが、androidのmavenプロジェクトは通常の方法(mvn eclipse:eclipse)ではeclipseにインポートできません。 以下のファイルを手動でつくってみたらとりあえずいけました。

  • .classpath
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
        <classpathentry kind="src" path="src/main/java"/>
        <classpathentry kind="src" path="gen"/>
        <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
        <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
        <classpathentry kind="output" path="bin/classes"/>
</classpath>
  • .project
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>project-name</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
                <buildCommand>
                        <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
                <buildCommand>
                        <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
                <buildCommand>
                        <name>org.eclipse.jdt.core.javabuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
                <buildCommand>
                        <name>com.android.ide.eclipse.adt.ApkBuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
        </buildSpec>
        <natures>
                <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
                <nature>org.eclipse.jdt.core.javanature</nature>
        </natures>
</projectDescription>
  • project.properties
# Project target.
target=android-10

# if it is a library
# android.library=true

まあ、なんというか、Androidはいろいろ残念ですね。

iOSはこういう仕様なのかバグなのかよくわからないようなものが少ないし、OSバージョンの入れ換わりが早くて対応バージョンも少なくて済む分、個人的な体感ではandroidアプリの工数はiOSの3割増しという感じ。

]]>
UbuntuでPDFの日本語フォントが表示できないときの対処メモ http://mojavy.com/blog/2012/11/02/ubuntu-pdf/ Fri, 02 Nov 2012 12:00:00 JST <![CDATA[pdf]]> <![CDATA[tips]]> <![CDATA[ubuntu]]> http://mojavy.com/blog/2012/11/02/ubuntu-pdf/ UbuntuでPDFの日本語フォントが表示できないときの対処メモ <![CDATA[

ubuntu

Ubuntu 12.04 で日本語フォントのはいったpdfを開くと、日本語の部分が空白になって以下のようなエラーログが表示されてしまっていた。

Error (13373): No font in show/space
Error (13412): No font in show/space
Error (13497): No font in show/space
Error (13515): No font in show
Error (13555): No font in show/space
Error (13572): No font in show
Error (13607): No font in show/space
Error: Missing language pack for 'Adobe-Japan1' mapping
Error: Missing language pack for 'Adobe-Japan1' mapping
Error: Missing language pack for 'Adobe-Japan1' mapping
Error: Missing language pack for 'Adobe-Japan1' mapping
Error: Missing language pack for 'Adobe-Japan1' mapping
Error: Missing language pack for 'Adobe-Japan1' mapping
Error: Missing language pack for 'Adobe-Japan1' mapping
Error: Unknown font tag 'C0_0'
Error (231): No font in show
Error: Unknown font tag 'C0_1'

pdfビューワはDocument Viewerでもokularでも同様だった。

そこで、このあたりを参考に、

sudo apt-get install poppler-data

としたらちゃんと表示されるようになった。

]]>
redmineのメールを効率良くフィルタリングする http://mojavy.com/blog/2012/07/24/redmine-mail/ Tue, 24 Jul 2012 23:30:00 JST <![CDATA[tips]]> <![CDATA[redmine]]> http://mojavy.com/blog/2012/07/24/redmine-mail/ redmineのメールを効率良くフィルタリングする <![CDATA[

redmine

redmineからとぶメールのヘッダにはX-Redmine-Issue-AuthorとかX-Redmine-Issue-Assigneeとかついているのでフィルタが簡単にできます。

いままでgmailでフィルタリングしてたので気付かなかった。。

メールクライアントはgmailのウェブアプリで十分だと思ってましたが、メーラはデスクトップアプリのほうが便利ですね。

]]>