mojavy.com

おやつの時間をお知らせしてくれるUnixコマンド:at teatime (他...)

January 08, 2013 at 08:30 PM | categories: unix, tips, linux |

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"


ウェブエンジニアのためのオンラインツールまとめ

November 20, 2012 at 02:30 AM | categories: web, tips |

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

November 07, 2012 at 12:00 PM | categories: android, tips |

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の日本語フォントが表示できないときの対処メモ

November 02, 2012 at 12:00 PM | categories: pdf, tips, ubuntu |

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のメールを効率良くフィルタリングする

July 24, 2012 at 11:30 PM | categories: tips, redmine |

redmine

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

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

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



About Me

pic
mojavy

Recent posts






Categories



Badges