プログラミングガール

Developing a better me

Java|クローラーかどうか判別する

なにがしたい

サイトへアクセスしたユーザーエージェントがクローラーのものか判断する。

実装

/**
 * 例外対応するクローラーUAリスト
 */
public static final ArrayList<String> CRAWLER_UA = ImmutableList.of("Googlebot", "Yahoo!", "bingbot", "Yeti", "Baidu", "YandexBot");

// クローラUAの判定
if (isNotCrawlerUa(userAgent, crawlerUas)) {
    // アフィリエイトリダイレクト
    StringBuilder redirectUrl = new StringBuilder(AFFILIATE_SERVER_URL);
    redirectUrl.append(URLEncoder.encode(Base64Util.encode(requestUrl.toString().getBytes()), ENCODE_UTF8));
    ((HttpServletResponse) response).setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
    ((HttpServletResponse) response).setHeader("Location", redirectUrl.toString());
} else {
    ((HttpServletResponse) response).setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
    String redirectUrl = requestUrl.toString().replaceAll("([^=/]+)-(\\d{3})[/]*$", "");
    ((HttpServletResponse) response).setHeader("Location", redirectUrl);
}

/**
 * クローラーUA判定メソッド
 * クローラーでなければTrueを返却
 */
public boolean isNotCrawlerUa(String userAgent, List<String> crawlerUas) {
    for (String crawlerUa : crawlerUas)
        if (userAgent.toLowerCase().contains(crawlerUa.toLowerCase())) {
            return false;
        }
    return true;
}    
            

CentOS6系にOracleのJavaをインストールする

なにがしたい

wgetCentOSJavaをインストールしたい。

失敗

wgetしようとするもののあえなく失敗。

$ wget http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.rpm
$ sudo rpm -ihv jdk-7u75-linux-x64.rpm
error: open of jdk-7u75-linux-x64.rpm failed: No such file or directory

どうやらWeb上のAcceptチェックマークにチェックを入れないといけない模様。
f:id:hana_ori:20160609190258p:plain

解決策

wget時にチェックマークを入れるには、以下のようにします。

$ wget --no-check-certificate --no-cookies - --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.rpm
$ yum install jdk-7u79-linux-x64.rpm

Github|Wikiに画像をのせる

なにをしたい

GithubWikiに画像をのせたい。

こんな感じ↓
f:id:hana_ori:20160605161628p:plain

How To

  1. Wikiをclone してくる f:id:hana_ori:20160605161930p:plain
  2. clone してきたら、image/ディレクトリを切り、その配下に画像を格納する
  3. img タグを書き、画像を表示させる
<img src="https://github.com/repository/wiki/images/S__15982629.jpg" width=200px>

Realm|1.0がリリース!

ついに!

ついにRealm1.0がリリースされました!

realm.io

ついに!やったー!と思って、issueまで切って意気揚々とライブラリーのバージョンをあげようとしたのです。 f:id:hana_ori:20160604165510p:plain


そこで起こる悲劇

Podfileをpod 'RealmSwift' , '~> 1.0'のように編集し、pod installすると大量のエラーが...
プロジェクトをcleanしても直らない。Xcodeを再起動しても直らない。

そこで再度Realmの公式ページを確認すると、
f:id:hana_ori:20160604170111p:plain

Xcode 7.3 or later required.

まじか。
Xcode 7.3 が必要ということは、OSをEl Capitanにしなければならないということで。
今の環境では敵が多すぎる...
f:id:hana_ori:20160604172258p:plain

OSを上げて、かつXcodeのバージョンも上げないとできることに制限がかかるようになってきたので、
そろそろいろいろ上げていかないといけないな(´・ω・`)

クローラーの User Agent でサイトにアクセスする

前提

使用ブラウザ:Chrome

How To

  1. 開発者ツールの Network conditions を開く f:id:hana_ori:20160524203745p:plain
  2. Select automatically のチェックを外し、UAを選択する
    • Googlebotはデフォルトで用意されてる
    • その他の検索エンジンbotを指定したい場合は Other を選択し、後述のUAの値を入力する

今回見たUAアクセスログ等から拾ってきました)

クローラー User Agent
Googlebot Chromeに標準で入ってた。
Yahoo! Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
bingbot Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
Yeti Yeti/1.0 (NHN Corp.; http://help.naver.com/robots/)Yeti/1.0 (+http://help.naver.com/robots/)
Baidu Mozilla/5.0 (Linux; Android 5.1; m2 note Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.114 Mobile Safari/537.36 baiduboxapp/5.0 (Baidu; P1 5.1)Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
YandexBot Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots) 

Swift:文字数によるボタンの非活性制御

何がしたい

UITextFieldに文字が入力されていない場合、Saveボタンを非活性にします。

実現方法

所感

例のごとく、もっといいやり方があるのかなと思います。
もしご存知の方いらっしゃったらご指摘くださいませ m( )m

プログラミングガールの英語教室:ユーザーへの問いかけ編

こういう時どう言うの?

次の動作を確定するかユーザーに確かめる。

文法講座

Are you sure you want to ~ ?

本当に〜しますか?

Example

Are you sure you want to delete this item?

この商品を削除しますか?
※「消したい」と思っているか(意思)の確認

ちなみに

Are you sure to ~ ? とすると、(プログラム的に)「これから起こること」を確認 する意味となる。

Are you sure to delete this item?

次に起こるアクションはこの商品の削除ですか?