あひるの勉強部屋

つらつらつら~と不定期にカキコするブログ

Reachabilityの代替コード

iOSで接続中のネットワークを判定するのに、Appleが提供しているReachibilityがよく使われているようです。

しかし、iOS7ではうまく動くのですがiOS8ではWifiを切った際にステータスが更新されるまでに数秒くらい時間がかかります。(2015/8/22 現在)

この事象に関しては「Reachability ios8 delay」あたりでググってもらうとわんさか出てきます。

それだと使いものにならないので適当に書きました。

gist9e588834360297e71e7c

勉強会に出よう

「私の周りには勉強会に参加する人が極めて少ない」

私が知らないだけかもしれないが、私の周りはIT系の勉強会に参加している学生がかなり少ない。

私は大学生なのだが、大学内で学べることは多い。

しかし、勉強会で得られる経験や知識は大学のそれとはかなり違うものだ。(具体的にどう違うかは参加すればわかる)

また、学内というある意味閉鎖的な空間から自主的に外へ視野を広げることは学生として重要なことだと思う。

 

「なぜ参加しないのだろう」

これはあくまで私の周りに関していえることだが、「参加しない」のではなく「そもそも勉強会の存在を知らない」ことが大きな要因である。

これはかなり致命的な問題だと考えている。

学校側からは勉強会を教えることは基本的にはない。

そして学生はどのような勉強会があるのか知る術を知らない。

結果、勉強会に参加しない学生が多い現状ができているような気がする。

 

「どうすれば参加者を増やせるだろうか」

これが本当に難しい。

外部から大学生に対し、こんな勉強会があるよ~といった勧誘はあまりできない。

せめて学生には勉強会を探す術を知ってもらいたい。

それさえ知っていればあとは個人の自主性の問題である。(ものすごく雑な言い方ではあるが)

思いついたものとしては、今勉強会に参加している学生が学内での活動の際に友人なり後輩なりに勉強会が存在するという事実と、それを探す術を教えることである。

ついでに自分が参加しているコミュニティに招待するというのもいいかもしれない。

 

「どうやって勉強会探すの?」

私が普段勉強会を見つけるのは以下の手段である。

・友人、知り合い

・OSCなどのカンファレンス(ブースにコミュニティとして出展していたりする )

Twitter(フォローしている方が参加していたりすることがある)

・DoorKeeperやConnpassなどのSNS

だいたいぱっと思いつくのはこんな感じである。

探せばまだまだあるでしょうが、これらだけでも自分の興味のある勉強会を一個くらいは見つけられるんじゃないでしょうか。

 

自分の中で溜まっていた考えをつらつらと書いただけなので読みづらかったり突っ込みどころはあるかもしれないがこんな感じに思っている。

学生のみんな、勉強会に参加するのを躊躇する必要なんてない。

興味があったらまず参加してみること。

参加しないとわからない。

この記事を読んで勉強会の存在だったり、勉強会の探し方が分かった学生のみんな、興味のあるものを調べて参加してみよう。

そして知らない友達に広めていってほしい。

勉強会は面白いよ。

VAIO Pro 13( タッチパネルモデル )のタッチパネルを無効化

タッチパネルは意外と使うけど、最近の使い方だとうっとおしいので無効化しました。

あとで有効化できるようにメモしときます。

※自己責任で

 

デバイスマネージャーの「ヒューマン インターフェース デバイス」という項目に「HID 準拠 タッチパネル」という項目があったので右クリックで無効化。

有効化も同じ手順。

 

終わり(☝ ՞ਊ ՞)☝

CentOS6.5(64bit)にnode-pushserverを入れるまで

覚え書き程度なので、いつもどおり小見出しなしのダラダラとした文章です

 

スマートフォンアプリに対してプッシュ通知をしてみたかったので、APNS(Apple Push Notification Service)やGCM(Google Cloud Messaging)に通知を送るプロバイダを構築します。

node-pushserverがあるようなのでソレを使っていこうと思います。

 

まずはyumでnode.jsを入れるためにリポジトリの追加をします。

rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

次にnode.js及びnpmをインストー

yum install nodejs npm --enablerepo=epel

 ここに関しては

node.jsをyumでインストールする(centos6.5) - Qiita

を参考にしました。

 

これでnode.jsの準備はできたので、次にnode-pushserverの導入です。

node-pushserver

に書かれている通りに進めます。

まずはMongoDBが必要ということでyumでインストールできるようにします。

こちらもMongoDBのページ( Install MongoDB on Red Hat Enterprise, CentOS, Fedora, or Amazon Linux — MongoDB Manual 2.6.7 )に書かれています。

/etc/yum.repos.d/mongodb.repo

を作り、mongodb.repoの中身は

[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1

となります。

書き終えたら、

yum install -y mongodb-org

を実行するとMongoDBがインストールされます。

次にnode-pushserverをインストールします。

npm install node-pushserver -g

インストールされた中にexample.config.jsonがあるので、それをいじるとプロバイダの準備ができます。

ちなみにこいつのディレクトリは

./npm/node-pushserver/0.5.3/package/

にありました。

0.5.3は多分バージョン番号なので適宜変えてください。

 

今回は以上

ここからが証明書の取得やらでめんどいところ( ˘ਊ˘)

OnsenUIのhammer.jsでつまずいた

OnsenUIでhammer.js使ってて、少し手こずったので覚え書き。

右にスワイプして前の画面に戻るといったことをしたくて、ons-gesture-detectorを使いました。(下記URL参照)

http://ja.onsen.io/guide/components.html#ons-gesture-detector

http://ja.onsen.io/guide/overview.html#DetectingFingerGestures

ページのどの部分でスワイプしても反応してほしかったので、以下のように書きました。

<ons-gesture-detector ng-swiperight="ons.navigator.popPage()">
  <ons-page ng-controller="hogeController">
<ons-toolbar>

</ons-toolbar>
</ons-page>
<ons-gesture-detector>

 ここからが本題。

これでうまく動くかと思いきや、完全にはうまくいかなかった。

手元のiOSではうまく動くものの、Android端末ではかなりスワイプの判定がシビアで、最初の方はAndroidでは動いていないと錯覚するほどでした。

 

対処方法は簡単で、コントローラー部(hogeController)に以下のコードを追記するだけ。

.controller('hogeController', function($scope) {
Hammer.gestures.Swipe.defaults.swipeVelocityX = 0.1;

});

これは検出するスワイプの速さの設定です。

Swipe recognizer - Hammer.js

にHammer.jsのスワイプに関する内容が書かれています。

デフォルト値では

VelocityX = 0.65 //OnsenUIでは0.6

となっています。

0.1に下げることで、比較的ゆっくりなスワイプにも反応してくれるようになりました。

また、これを設定することでiOS側の感度が高くなりすぎるといったこともなかったので、ひとまず問題はなさそうです。

 

今日の進捗終わり…

アプリのバージョン比較

iOSのアプリ(Objective-C)で自前でバージョンを管理(更新があるか確認)しなきゃならなかったので、書いてみた。

想定しているバージョンは◯.◯.◯という形式で◯は全て数字であること。

例えば1.10.2と0.11.3を比較して1.10.2の方が新しいよといった感じです。

separateVerStringで.を区切り文字として、3つの番号を配列に格納しています。

次にversionCompareで配列の中身をfor文でint型に変換しつつ、アプリのバージョンと最新のバージョン番号を高位から順に比較し、アプリのバージョンが最新より低ければ0返すようにしています。

0が返されたらviewDidLoaded部でアラートビューを出すようにしているといった作りです。

ツッコミどころがあれば是非お願いします。

 

ではでは良いお年を(☝ ՞ਊ ՞)☝