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をインストールする
なにがしたい
失敗
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チェックマークにチェックを入れないといけない模様。
解決策
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
Realm|1.0がリリース!
ついに!
ついにRealm1.0がリリースされました!
ついに!やったー!と思って、issueまで切って意気揚々とライブラリーのバージョンをあげようとしたのです。
そこで起こる悲劇
Podfileをpod 'RealmSwift' , '~> 1.0'
のように編集し、pod install
すると大量のエラーが...
プロジェクトをcleanしても直らない。Xcodeを再起動しても直らない。
そこで再度Realmの公式ページを確認すると、
Xcode 7.3 or later required.
まじか。
Xcode 7.3 が必要ということは、OSをEl Capitanにしなければならないということで。
今の環境では敵が多すぎる...
OSを上げて、かつXcodeのバージョンも上げないとできることに制限がかかるようになってきたので、
そろそろいろいろ上げていかないといけないな(´・ω・`)
クローラーの User Agent でサイトにアクセスする
前提
使用ブラウザ:Chrome
How To
- 開発者ツールの Network conditions を開く
- Select automatically のチェックを外し、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?
次に起こるアクションはこの商品の削除ですか?