2011年2月22日火曜日

Rails からjavascriptの使用

①Controller作成

rails generate controller calendars index

②javascriptの使用

public/javascripts/application.jsに任意のjavascriptすぐに保存を記載

③stylesheetの追加

public/javascripts/stylesheetsにcalendar.cssを追加

④Viewerの修正

app/views/calendars/index.html.erbのなかで②の処理を呼び出す

<補足>
app/views/layouts/application.html.erbの以下があることで
わざわざ②③の読み込みを④のクライアント固有の処理に追加する
必要がない。

<%= stylesheet_link_tag :all %>
<%= javascript_include_tag :defaults %>

2011年2月19日土曜日

本 シェア

全体が3部構成で、第1章ではあるころから消費させることで富を得る経済がなりたっていったことについて書かれている。これをハイパー消費時代といい、それにより何もかもについてモア(もっと)という世の中になっており、筆者はそれを憂いている。
正直その話はもういいかな、というくらい現在の消費社会について書かれていてちょっと退屈する。ただ後半から今までの大量消費時代からようやく現代人が目覚め始めてきたこと、私主義からみんな主義へ変化してきたことについて触れている。

第2章からは個人ではなくみんなで消費する、というコラボ消費について述べている。
コラボ消費には主に3つのパターンがある。

①PSS(プロダクト=サービスシステム)
ある商品を100%所有していなくても、その製品から受けるサービスにだけお金を払うサービス。「所有よりも利用」に重きをおく。
ジップカー、ネットフリックス

②再分配市場
ソーシャルネットワークを通して、使われていないものを必要とする人に配り直すサービス。
フリーサイクル、イーベイ、クレイグリスト

③コラボ的ライフスタイル
同じような目的を持つ人が、時間や空間、技術やお金といった目に見えないものを共有するサービス。
ガーデンシェア、ゾーパ、コ・ワーキング、カウチサーフィン、エアビーアンドビー

3つ共通して言えることは、コラボ消費にはサスティナビリティ(持続可能性)とコミュニケーションがもともと備わった不可欠なもので、あとづけではないということ。また、コラボ消費には以下の4つの原則があるらしい。

a)クリティカル・マスの存在
 クリティカル・マス=システムを自立てきに維持するためのモメンタム
 チョイスの多さ、お墨付き(社会的承認)
b)余剰キャパシティの活用
 これにはソーシャルネットワークの機能がかかせない
c)共有資源(コモンズ)の尊重
 これもソーシャルネットワークの機能がかかせない
d)他者との信頼
 お互いの承認によってセキュリティがなりたつ

上記を具体的な話を交えて語っている。

そして最後の第3章でシェアによって今後どうなっていくか、をデザイナという職業をたとえにコラボ・デザインというサービスについて語っている。ま、結局のところじゃ、どうなるというところまでは突っ込まれていないが、確実に現在がシェアというサービスのターニングポイントである、ということで最後は終わっている。


■感想
特に印象に残っているのは、動機はどうであれ同じような問題をもった人が、ある規模とツールをそろえられることで、P2Pの関係を構築していくなかで、サービスがおのずと成長していくこと。シェアする関係でのセキュリティ的な監視は、P2Pの相互認証の連鎖によって構築されること。マズローの欲求の定理から、現代人も基本的に周りに承認されることを望んでいるので、決してシェアすることによって自己利益だけを求めるような行動はおこさないこと。いろいろなシェアサービス()が存在すること。

何か自分でもシェアサービスを提供できればと思う。

2011年2月16日水曜日

rails3プロジェクト作成

環境を構築できたので、今回はプロジェクトを作成します。

以下の手順
①sqlite3のdllをパスに通す
②sqliteのgemパッケージをインストール
③プロジェクト作成
④scaffoldで一括作成(controllers,models,views,+db)
⑤作成したアプリを確認

①sqlite3のdllをパスに通す
http://www.sqlite.org/download.htmlのサイトからsqlite-dll-win32-x86-xxx.zip
をダウンロード。解凍したフォルダのsqlite3.dllをrubyのbinフォルダ直下に置く。

②プロジェクト作成
gem install sqlite3

③プロジェクト作成
rails new memo

④scaffoldで一括作成(controllers,models,views,+db)
rails generate scaffold memo date:string memo:string

rake db:migrate

※補足
DBを削除したい場合
rake db:destory

DBを作り直したい場合
rake db:create

scaffoldで作成したものを削除したい場合
rails destory scaffold memo

⑤作成したアプリを確認
サーバ起動
 rails server
以下にアクセス
 http://localhost:3000/memos


■トラブル対応

1)gem install時の以下のエラー時

ERROR: http://rubygems.org/ does not appear to be a repository

ERROR: Could not find a valid gem 'mysql' (>= 0) in any repository

 ①ファイアウォールが邪魔している場合
  ウィルスバスター的なものでファイアフォールが設定されている場合におきるので
  この場合は一時的にはずすか、gemコマンドを許可させるようにする

 ②プロキシ経由でインターネットにアクセスしている場合
  この場合は以下のコマンドを設定してサイド実行する

  set http_proxy=http://プロキシユーザー名:プロキシパスワード@プロキシURL:プロキシポート

2)db:migrateし、サーバにアクセスした際に以下のエラーがでる
ActiveRecord::StatementInvalid in xxx

おそらくDBの項目がおかしい時なのでscaffoldでおかしな型名指定とかに
なってないかチェックしておかしい場合はdbを作成しなおすべし。

3)radRailsのEclipseコンソールで文字化け

eclipse.iniファイルに以下を追加

-Dfile.encoding=utf-8


2011年2月15日火曜日

Ruby on Rails 3ではじめます

以前rails1.xxで構築した環境を、最新のrails3で構築して
本気でアプリをつくるぞー!

ということでまずは、開発環境を構築。
以下手順
①Windows上にRuby1.92をインストール
②Eclipse用意
③Eclipse plugin(radrails)インストール
④rails3.0xをインストール
⑤プロジェクト作成
⑥起動確認

①Windows上にRuby1.92をインストール
以下からWindows板をダウンロードしてインストール
http://download.aptana.com/tools/radrails/plugin/install/radrails-bundle

ちなみにrails3 を利用する場合は ruby 1.8.7以上でサポート

②Eclipse用意
http://mergedoc.sourceforge.jp/

③Eclipse plugin(radrails)インストール
Eclipseのメニュ->ヘルプ->新規ソフトウェアのインストール
で以下のパスを指定

http://download.aptana.com/tools/radrails/plugin/install/radrails-bundle

接続可能になると、インストールできるの実行する。
すると一通りrailsに必要なgemもインストールしてくれる。

が!!!しかしradrailsはrails3に対応してないらしく、プロジェクトを作成すると
作成中にエラーになっちゃう。

どうやらrails3は以下のパスからダウンロードできるよう。。

④rails3.0xをインストール
コマンドプロンプトで以下実行
 gem install rails

gem listでインストールされているgemを確認できる

⑤プロジェクト作成
rails new memo

⑥起動確認
作成したディレクトリに移動して

rails server

http://localhost:3000/にアクセスしrailsの画面が表示されればOK。

2010年12月3日金曜日

Android 親和性と新しいタスク

Android アクティビティとタスクで、アクティビティのタスク管理について基本は説明したが、
デフォルトではアプリケーション内のActivityはできる限り同じタスクに属そうとする。これを
「親和性」と呼ぶ。しかし、この「親和性」も設定によって変更できる。以下それについて説明する。

関係するものは、以下のIntentフラグ。
 FLAG_ACTIVITY_NEW_TASK
 FLAG_ACTIVITY_CLEAR_TOP
 FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
 FLAG_ACTIVITY_SINGLE_TOP

また、以下の<activity>属性も関係。
 taskAffinity
 launchMode
 allowTaskReparenting
 clearTaskOnLaunch
 alwaysRetainTaskState
 finishOnTaskLaunch

■FLAG_ACTIVITY_NEW_TASK
startActiviyのパラメータにFLAG_ACTIVITY_NEW_TASKを指定すると、新しい
タスクとして起動させることができる。


例)a⇒b⇒c(FLAG_ACTIVITY_NEW_TASK)

タスク タスク タスク タスク
    |c| ← ここが表示
     ̄
| | | | | | | |
| |⇒|b|⇒|b|⇒|b|
|a| |a| |a| |a|
  ̄   ̄    ̄   ̄
■allowTaskReparenting
allowTaskReparentingがtrueになっていると、そのアクティビティと親和性のあるアプリがフォアグランドに来た際に、呼び出し元のアクティビティからそのアプリのタスクに移動できる(らしい)



例)アプリ①cb(allowTaskReparenting)⇒ホーム画面⇒アプリ②a⇒b


==フォアグラウンド====================================================
タスク       タスク タスク
| |        | | | |
|b|⇒ホーム画面⇒| |⇒|b|←ここが表示
|c|       |a| |a|
  ̄          ̄   ̄
==バックグラウンド====================================================
              ↑↑↑
タスク       タスク     
| |        | |     
|b|⇒ ⇒ ⇒ ⇒| | 
|c|       |c|    
  ̄          ̄      
======================================================================

Android アクティビティとタスク

Androidでは画面(Activity)はスタックとして管理される。
例えば画面a、b、cで構成されるアプリがあるとしa⇒b⇒cと画面を開くと
内部では以下のようにタスクに積まれていく。


例) a⇒b⇒c



タスク タスク タスク タスク
| | | | | | |c|← ここが表示
| |⇒|b|⇒|b|⇒|b|
|a| |a| |a| |a|
  ̄   ̄    ̄   ̄


タスクはオブジェクトを保持するので、複数おなじ画面を開いても基本は
別々にインスタンスがタスクに格納される。


例) a⇒b⇒b



タスク タスク タスク タスク
| | | | | | |b|← ここが表示
| |⇒|b|⇒|b|⇒|b|
|a| |a| |a| |a|
  ̄   ̄    ̄   ̄


まあタスクはプッシュ・ポップ型になっており、startActivity()を呼ぶとタスクに
プッシュされ、戻るボタンを押下するとタスクからポップされる。


例) a⇒b⇒c⇒「戻る押下」



タスク タスク タスク タスク タスク
| | | | | | |c| | |
| |⇒|b|⇒|b|⇒|b|⇒|b|← ここが表示
|a| |a| |a| |a| |a|
  ̄   ̄    ̄   ̄    ̄


さらにタスクのアクティビティは1つのユニットとして移動する。
例えばa、b、cで構成されたアプリ①があり、ホーム画面を押し別のx、y、zで
構成されるアプリ②を呼び出すと、①アプリ1つのユニットとしてバックグラウンド
に一旦引っ込み、②のタスクユニットがフォアグラウンドに呼ばれる。そのあと
またホーム画面を表示し①のアプリをよんで戻るボタンを押下しても②のアプリ
は表示されず、b画面が表示される。



例)アプリ①(abc)⇒ホーム⇒アプリ②(xyz)⇒ホーム⇒アプリ①(abc)⇒戻る

==フォアグラウンド====================================================
タスク       タスク タスク タスク
|c|        |z|        |c| | |
|b|⇒ホーム画面⇒|y|⇒ホーム画面⇒|b|⇒|b|←ここが表示
|a|       |x|       |a| |a|
  ̄          ̄   ̄   ̄
==バックグラウンド====================================================
タスク            
|c|            
|b|⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ↑↑↑
|a|           
  ̄             
タスク     
      |z|
|y|⇒ ⇒ ⇒ ⇒ ⇒
      |x|
         ̄ 
======================================================================
上記は基本だが、ほとんどの状態を変更できる。親和性と新しいタスクで説明。

2010年12月1日水曜日

Android 最初の一歩

いろいろAndroid情報があるけど、googleサイトを熟読することが大切。
最近、日本語訳も進んでいるのでまずはここを見る。



情報源としては「日本アンドロイドの会」ってのがあるのでそのサイトに登録しておけば、いろいろ
メールが飛んでくる。また勉強会やイベントもやっているのでそこに参加するのもよいかも。
(まだ行ったことないけど)


androidをダウンロードしたらJavaDocがついているのでそれを見たり、最初からデモ
アプリがあるのでそれを動かすことでイメージをつかむ。

開発環境は、EclipseをダウンロードしてあとはAndroidプラグインをインストールすれば
誰でも簡単に構築できる。

ただ、デバッグはエミュレータがついているけど、結構重たいので、できれば実機でやるほうが
効率がいい。(自身もエミュレータの遅さに嫌気が差してXPERIA買うまでほとんどやってなかった)




【スマート農業】 いまさらだけど、いまだからこその農業IoT 

久々投稿 転職してはや2年半。バタバタしてる中で、あーっという間に時間は過ぎてきた。 仕事はそれなりに順調だけど、ただやっぱり自分で何かを起こす!ということはではできていなく、、、年齢45をこえ、、、、、とくに昔からずーとやろうやろうと言って実現できてなかっった農業IoT。。 去...