2013年7月23日火曜日

Angularjsで画面をスクロールする

久しぶりにAngularjsのTips。
Angularjsで任意の場所へスクロールを設定する方法。
ボタンが押下された場合、先頭に移動したりするときに使うと思う。

まずhtml側で

<div id="top"></div>

<button class="btn" ng-click="jumpTo('top')" type="button">先頭へ</button>



ジャンプ先を設定しておき、ng-clickのイベントで処理をする。
Controller側では

$scope.jumpTo = function (id) {
 $location.hash(id);
 $anchorScroll();
}


$location、$anchorScrollはモジュルをインジェクションする。
そうなんです、$anchorScrollを使えばスクロールできる。
今回、簡単そうに見えて悩みました。

2013年7月18日木曜日

マーケティング研修2

先週と同様に松山市地域雇用創造協議会の主催する「実践!売れるマーケティング体験研修」に参加した。
今回は、マーケティング事例紹介とアイディアの出し方だった。

事例は今治のさくらコットン様の事例だった。

なぜ事業を始めようと思ったのから始まり、どんな感じで進めてきたのか、ダメな所、よかった所など多岐に渡り、かなり具体的な内容を話して頂いた。あっという間の1時間だった。

実際の数字も出てきて、本当に為になるお話だったので、共感を持って聴かせて頂いた。

本人も仰っていましたが今までやってきたことが、自然にマーケティング活動になっているんだな。こんな感想だった。

簡単に製品開発とか考えているが、

「もし、その商品やサービスを否定されても、その商品を柔軟に改善したり、成長させて行けるほどの体力や愛はありますか?」

と言われていたのが印象的だった。
そんなことを言えるような、商品やサービスを自分も持てれば。
みなさん私なんかより、何倍も努力されているのだと、実感したセミナーだった。

2013年7月12日金曜日

マーケティング研修

松山市地域雇用創造協議会の主催する「実践!売れるマーケティング体験研修」に参加した。今回は第2回だが、前回も面白かったが、今回も面白かった。


  • マーケティングとは「売れる仕組み」を作る事です。
「誰に」、「何を」、「どのように」を構築していく。
加えて、ここに顧客視点、競争優位などの要素を考慮していく。


  • ターゲットを決める。

万人受けするものを狙いたがるが、買ってもらえなければ意味がない。
共感を得るには、ターゲットを絞って行った方がいい。
大きな会社ならば万人受けするようなものが作れるかもしれないが、
小さな会社は、ターゲットを決めほうがいい。

今までは、何となく分かっていると思っていたが、反省することばかりだ。
本研修は大変勉強になった。来週もう一回、それも事例紹介があるので楽しみだ。

2013年7月11日木曜日

HomeBrew でMySQL のインストールができない


Rails の環境を作成する際に、以下のメッセージが出た。


$ bundle install --local
Could not find mysql2-0.3.11 in any of the sources
Run `bundle install` to install missing gems.

mysql2-0.3.11 が不足しているようだ。
個別にインストールする。


$ gem install mysql2 -v 0.3.11
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

    /Users/xxxx/.rbenv/versions/2.0.0-p247/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
...

しかし、エラーになった。
MySQL をインストールしていなかったので出た模様。

HomeBrew を使用して、MySQL をインストールする。

$ brew update
$ cd /usr/local
$ brew versions mysql
5.6.12   git checkout ba37612 Library/Formula/mysql.rb
5.6.10   git checkout 48f7e86 Library/Formula/mysql.rb
5.5.29   git checkout 336c976 Library/Formula/mysql.rb
5.5.28   git checkout 5825f62 Library/Formula/mysql.rb
5.5.27   git checkout 93aecfa Library/Formula/mysql.rb
...

バージョン5.5系が欲しかったので、git から取得

$ git checkout 336c976 Library/Formula/mysql.rb
$ brew install mysql
==> Downloading http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.29.tar.gz/from/http://cdn.mysql.com/

curl: (7) couldn't connect to host
Error: Download failed: http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.29.tar.gz/from/http://cdn.mysql.com/

ここでもエラーでコケる。
この後、プロキシの設定などを行なってみるが結果変わらず。

バージョンの指定を指定なかったので、バージョンを付けてインストールしてみる

$ brew install mysql55
==> Downloading http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.30.tar.gz
######################################################################## 100.0%
==> cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/mysql55/5.5.30 -DMYSQL_DATADIR=/usr/local/var/mysql55 -DINSTALL_MAN
==> make
==> make install
==> /usr/local/Cellar/mysql55/5.5.30/bin/mysql_install_db --verbose --user=xxxx --basedir=/usr/local/Cellar/mysql

If you are using a binary release, you must either be at the top
level of the extracted archive, or pass the --basedir option
pointing to that location.


READ THIS: https://github.com/mxcl/homebrew/wiki/troubleshooting


バージョン指定が大切だったのか。

2013年7月9日火曜日

Deviseで登録画面をrootにする方法

Railsで簡単に認証機能を追加できるDevise
ネット上を見ていると、カスタマイズしづらいとかあまり評判はよくないようだ。
私はとくに問題なく使っている。あまりカスタマイズしないからだろうか?

Deviseでは初期画面としてログイン画面が表示される。今回はこれを登録画面が表示されるように変更したい。
グーグル先生に探してもらったのを試しでみたが、動かない。なんでだろう。
Deviseのrouteを変えるのではないかとニラんでいたので、ソースコードを覗いてみた。

こんなときにGitHubは便利だ。


    # Allow you to route based on whether a scope is *not* authenticated.
    # You can optionally specify which scope.
    #
    #   unauthenticated do
    #     as :user do
    #       root :to => 'devise/registrations#new'
    #     end
    #   end
    #
 


見ていると、コメントアウトされているが、こんなコードが書いてあった。
まさにこれがやりたいとだ!

これをroutes.rbに書いてみた。
正解でした。これでアプリにアクセスした時には登録画面が表示されるようになった。
routes.rbにこんな書き方できるんだ。勉強になった。

2013年7月4日木曜日

iOSでLibrary Linkエラーが発生する

iOSでオープンソースのライブラリをリンクしようとするとエラーが発生した。

 ignoring file /usr/local/lib/libevent.dylib, file was built for unsupported file format
サーポートされていないファイルフォーマットだと言われている。

このライブラリはLibeventというもので、callback関数を設定したり、呼び出す為に使用する。Mac OS Xでは、標準ではないようなので、いつもの通りにbrewでインストールして、xcodeでリンク作業を行ったが、上記のエラーが発生してしまう。

brewでのインストールは64bitで行われるようで、iosとか32bit環境でも使いたい場合はuniversalオプション付きでインストールする必要がある。


brew install libevent --universal


でインストールするとよい。

2013年7月3日水曜日

Redisのインストール

Redisを知ってますか?

私は正直言って知らなかった。
RedisとはBSDでライセンスされている、オープンソースのkey-valueストアことで、簡単に言えばNoSQL。

NoSQLは過去にMongoDBCassandraを使った事がある。特にCassandraでスキーマの作り方とか学習したが、そんな大量データを扱う事がないので、今もって業務では使用していない。

今回は新たに、Redisを使ってみる。Redisにはkey-valueストア以外にも機能があり、Pub-Subサーバーとして使える。

今、個人的にPub-Subにハマっているので、インストールしてみる。
Mac OS Xでパッケージ管理にはhomebrewを使っていると、コマンド1行で終わる。


$brew install redis
dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/sudo) is setuid or setgid
==> Downloading http://redis.googlecode.com/files/redis-2.6.14.tar.gz
######################################################################## 100.0%
==> make -C /private/tmp/redis-t51l/redis-2.6.14/src CC=cc
==> Caveats
To have launchd start redis at login:
    ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
Then to load redis now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
Or, if you don't want/need launchctl, you can just run:
    redis-server /usr/local/etc/redis.conf
==> Summary
  /usr/local/Cellar/redis/2.6.14: 9 files, 760K, built in 10 seconds


何事も問題なくあっさりと10秒でインストールできた。
起動は手動でやりたいので、書いてある通り


$redis-server /usr/local/etc/redis.conf
[80525] 03 Jul 16:45:20.844 * Max number of open files set to 10032
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 2.6.14 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 80525
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

[80525] 03 Jul 16:45:20.846 # Server started, Redis version 2.6.14
[80525] 03 Jul 16:45:20.846 * The server is now ready to accept connections on port 6379


いい感じで起動が完了した。
接続をしてみる。


$ redis-cli
redis 127.0.0.1:6379>


これで接続確認できた。あとは、使い方を習得しないと。

2013年7月2日火曜日

OpenLayersのMarkerにidを設定する

今回もOpenLayers。OpenLayers.Layer.Markersを使って、Markerを表示させる。
表示したMarkerをクリックしてイベントをキャッチするまでは前々回書いた。

今回はどのMarkerでイベントが発生したか判定する方法。
ドキュメントを見るのだが、Markerにはデータを保持できるようなプロパティはない。
しかし、OpenlayersにはいろいろなExampleがあり、それを見て自分でやり方を発見するのだ。MarkerのExampleはここにある。

ソースを見て分かったのは以下の通り。


var marker = new OpenLayers.Marker(lonLat, icon);
marker.id = uid; //ここで設定 
marker.events.register('mousedown', marker, showMessages);

Markerにidというプロパティがあり、これを使用する。
設定したidはイベント内でどのように使用するか。


showMessages = function(evt) {

    if (this.id == "uid") {
    }
    OpenLayers.Event.stop(evt);
};

this.id で判定できる。このようにしてイベントが発生したMarkerを判定できる。