あの「Hacker News」で ベストなストーリーを見つける方法

おもしろ技術系ネタ満載な「Y Combinator」が運営する「Hacker News」.

スタートアップやハックのニュースが主体で、まさにこのブログでカバーしてる領域だからだ。こちらで一度も名前聞いたことないスタートアップの情報を掘り出す場としてはベストに入る。さらに素晴らしいのが、サイトに寄り付く仲間に嫌な野郎がいないことだ。コメントを見ても参考になる情報や考えさせるもの、面白いのがほとんどだ。

私が朝一番に読む『Hacker News』という無名のサイト | TechCrunch Japan

Little Known Hacker News Is My First Read Every Morning | TechCrunch

サイトを見る限り, 「人気記事順」や「リンク数順」の記事カテゴリーリンクが見当たらない.

Hacker_News

しかし, それらを確認できるアプリがあったりする.

20160107-224126

Hacker News Reader (翻訳) - Google Play の Android アプリ

調べてみると, サイトのトップページからのリンクはないが, 存在している, 公式で.

Top_Links___Hacker_News

Top Links | Hacker News

ここらから見ていくのがいいのだろう.


Android で よくある正規表現を使えるやつ

そもそもは Linkify のWEBリンクがなんだかな, と思い.

device-2011-08-23-153643

使えそうなよくある正規表現がいくつか用意されていたのですな.

public static final Pattern WEB_URL = Pattern.compile(
    "((?:(http|https|Http|Https|rtsp|Rtsp):\\/\\/(?:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)"
  + "\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,64}(?:\\:(?:[a-zA-Z0-9\\$\\-\\_"
  + "\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,25})?\\@)?)?"
  + "(?:" + DOMAIN_NAME + ")"
  + "(?:\\:\\d{1,5})?)"
  + "(\\/(?:(?:[" + GOOD_IRI_CHAR + "\\;\\/\\?\\:\\@\\&\\=\\#\\~"
  + "\\-\\.\\+\\!\\*\\'\\(\\)\\,\\_])|(?:\\%[a-fA-F0-9]{2}))*)?"
  + "(?:\\b|$)");
public static final Pattern PHONE
  = Pattern.compile(                
      "(\\+[0-9]+[\\- \\.]*)?"      
    + "(\\([0-9]+\\)[\\- \\.]*)?"   
    + "([0-9][0-9\\- \\.]+[0-9])"); 
public static final Pattern EMAIL_ADDRESS
  = Pattern.compile(
    "[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" +
    "\\@" +
    "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
    "(" +
        "\\." +
        "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
     ")+"
  );

platform_frameworks_base/Patterns.java

すぐにそのまま使おう.


if (Patterns.WEB_URL.matcher(text).find()) {
  // do something
}

「厳格なのか?」でフィルターをつける場合.

// A match filter that only accepts odd numbers.
MatchFilter oddFilter = new MatchFilter() {
    public final boolean acceptMatch(CharSequence s, int start, int end) {
        int n = Character.digit(s.charAt(end-1), 10);
        return (n & 1) == 1;
    }
};

// Match all digits in the pattern but restrict links to only odd
// numbers using the filter.
Pattern pattern = Pattern.compile("[0-9]+");
Linkify.addLinks(text, pattern, "http://...", oddFilter, null);

Android Text Links Using Linkify


Android Code Style で インデントはスペース何個?

Android Studioデフォルトのスペース4個ではなんとなく不自由に思えてきた,インデント.

今どきは何個なのか.

Google の Code Style としては「2個」.

Android のコーディング時にAndroidStudioにセットしておくといい2つのXMLファイル

その他どんな雰囲気なのか.

square も「2個」.

java-code-styles_Square_xml_at_master_·_square_java-code-styles

java-code-styles/Square.xml at master · square/java-code-styles

XMLもスペース2個ででいいように思えるのだが.

CodeStyle__Java_·_ogaclejapan_android-code-styles_Wiki

CodeStyle: Java · ogaclejapan/android-code-styles Wiki

CodeStyle__XML_·_ogaclejapan_android-code-styles_Wiki

CodeStyle: XML · ogaclejapan/android-code-styles Wiki

いまや, コードもXMLも2個か.

square のスタイルにしとこうかな.

Installation

- Run the install.sh script.
- Restart IntelliJ if it's running.
- Open IntelliJ Project Settings -> Code Styles, change the code style for the project to the one you want.

Preferences

sh 1個叩くだけで設定に追加してくれます.

square/java-code-styles


man は長すぎるので「tldr」

たとえば,

curl で JSON を POST したいとき,

オプション記述を覚えてないので man.

man_curl_—_80×24

長すぎて探すのが面倒で結局ぐぐってしまう.

ssh でポートフォワードしたいとき,

man_ssh_—_80×24

結局これもぐぐってしまう.

TLDR
【略】
=Too long. Didn't read.
長過ぎ。読みませんでした。/長文うざい(と言う人のための要約)。

そんな名前のすばやく調べるコマンドがありますよ.

bash_—_80×26

bash_—_81×28

分かりやすくうざくない長さで説明してくれます.

screenshot

tldr-pages/tldr

ちなみに「tldr」で「tldr」は以下.

tldr




android-apt で アノテーションを便利に

このプラグインを追加すると、gradle のソースフォルダとして認識される場所に Butter Knife で生成されるコードが格納されます。
そのため、Butter Knife で生成されたクラスも Lint から見えるようになり、Lint が怒らなくなります。やったー。

Y.A.M の 雑記帳: Butter Knife のフィールドやメソッドが Lint に Unused declaration と言われないようにする方法

JakeWharton commented on Sep 26
If you use the android-apt plugin then Android Studio can see the generated code and the method will not show up as unused.

Lint: Unused resource · Issue #356 · JakeWharton/butterknife

Bitbucket で公開されています.

The android-apt plugin assists in working with annotation processors in combination with Android Studio. It has two purposes:
Allow to configure a compile time only annotation processor as a dependency, not including the artifact in the final APK or library
Set up the source paths so that code that is generated from the annotation processor is correctly picked up by Android Studio.

hvisser / android-apt — Bitbucket

「APT」て何?

Annotation Processing Boilerplate Destruction (Droidcon NYC 2014) // Speaker Deck

Butter Knife 以外にも使えるのか.

わーい.