最近

ブログをこっちに移しました。

はてなのユーザ集客力とか関係なしにイチからやってみようと思ったので。
やっぱり、なんだかんだ言ってもはてなはユーザが集まってるし、
キーワードからの流入もあるので、それなりにPVが多いです。

しょうもない想いかもしれませんが、あったかく見守ってください。

Google App Engineで「Hello World!」なんてしてみた


IT系ニュース見てたら、
GoogleAmazonみたいにインフラをみんなが使えるようにうんちゃらかんちゃら」とあり、
「ほぉ〜!」と思ったところ
「限定1万人で」みたいなことも見えたので急いで登録してみました。


登録当初は「使えるようになったら連絡するね」とGoogleから言われたんですが
数日後、「使えるようになったよ」とメールが来てたのでSDKも落として使ってみました。

Googleのドキュメント見つつ、とりあえず、Pythonもよく知らんので
まずは、コピペがてらHelloWorldしてみることに。

まずは適当にディレクトリを切って、その配下にhelloworld.pyを作成します。

helloworld.py

print 'Content-Type: text/plain'
print ''
print 'Hello, world!'

Content-type要るんですね。

同じディレクトリにapp.yamlも作成します。

app.yaml

application: helloworld
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
script: helloworld.py

あとは作成したディレクトリのある場所で下記のコマンドを打つと
http://localhost:8080で確認できます。

# dev_appserver.py helloworld/
Allow dev_appserver to check for updates on startup? (Y/n): Y

dev_appserver will check for updates on startup. To change this setting, edit /Users/xxxxx/.appcfg_nag
INFO 2008-04-14 23:07:13,326 appcfg.py] Checking for updates to the SDK.
INFO 2008-04-14 23:07:14,339 appcfg.py] The SDK is up to date.
WARNING 2008-04-14 23:07:14,339 datastore_file_stub.py] Could not read datastore data from /var/folders/C2/C2SqSVziEYOlAlZObkkdxE+++TI/-Tmp-/dev_appserver.datastore
WARNING 2008-04-14 23:07:14,340 datastore_file_stub.py] Could not read datastore data from /var/folders/C2/C2SqSVziEYOlAlZObkkdxE+++TI/-Tmp-/dev_appserver.datastore.history
INFO 2008-04-14 23:07:14,344 dev_appserver_main.py] Running application helloworld on port 8080: http://localhost:8080
INFO 2008-04-14 14:07:20,836 dev_appserver.py] "GET / HTTP/1.1" 200 -
INFO 2008-04-14 14:07:20,838 dev_appserver_index.py] Updating /Users/xxxxx/Documents/GoogleApp/helloworld/index.yaml
INFO 2008-04-14 14:07:20,965 dev_appserver.py] "GET /favicon.ico HTTP/1.1" 200 -

Googleのサーバへは下記のコマンドでUploadできます

# appcfg.py update helloworld/
Email:
Password for :
Saving authentication cookies to /Users/xxxxx/.appcfg_cookies
Scanning files on local disk.
Initiating update.
2008-04-14 23:11:55,373 ERROR appcfg.py:1070 An unexpected error occurred. Aborting.
Error 403: --- begin server output ---
You do not have permission to modify this app.
--- end server output ---

あれあれ??
なんか怒られる。。。

もう一回、ドキュメントとかを確認してみると、
Googleで作成したアプリケーション名をhelloworldにしてなかったので
app.yamlに書かれてるapplicationと違うので怒られてたみたい。

なので、もう一回、app.yamlを修正して、あげ直し。

# appcfg.py update tryout-lab/
Loaded authentication cookies from /Users/tryout/.appcfg_cookies
Scanning files on local disk.
Initiating update.
Cloning 1 application file.
Closing update.
Uploading index definitions.

はい、うまいこと行きました。

http://app-id.appspot.comで見てもOK。

なかなか興味深いです。コマンドも用意されててアップも簡単みたいだし。
pythonの勉強も少ししつつ、触っていきたいと思います。

psコマンド

Leopardでpsコマンドを使って、起動してるプロセスがどのユーザを知りたいときは
-jオプションで分かるみたい。

普段、BSD系じゃなくてRedHat系のUNIX使ってるので
この辺の基本コマンドのオプションが分からず、ちょっと困ったり。

でもやっぱりこういう時に重要やね、manコマンド。

難しいね

普段、HTMLを書くときは手書きで書いてる人なんですが、
やっぱり、ツール使って書くというのも覚えないとと思い、DreamWeaverを使ってみました。

思ってもないところいタグが入ったり、hrタグの属性の変更方法が分からずと
なかなか悪戦苦闘中。。。

CSSも適用するだけで一苦労です。。。

でも、覚えたら、なんか色々できそうなので、もう少しがんばってみます。

↓これでちょっと調べたりしてます。。。

[rakuten:book:12114732:detail]

お勉強

とりあえず、これ読んで少しずつやってます。

とりあえず、今やってる章の内容からご紹介。

  1. GRAPHIC DESIGN
    1. 「製品ロゴをデザインする」
    2. 「製品ラベルをデザインする」
    3. 「パッケージをデザインする」

この内、「製品ロゴをデザインする」がほぼ終了。
だいたい30ページでした。

パスとかの概念は分かったんやけど、
アンカーポイントの概念と操作が難しいなぁ。。。

でも、やっぱり、細かい部分のディテールの部分は
画像おっきくして、画像組み合わして丸い部分を生み出したり、
アンカーポイント操作してオブジェクト作ったりと、細かい作業で慣れてない作業に大変でしたw

↓とりあえず、ここまでできました♪


したいことリスト

なんとなくお休みしてました。
読んでくれる人がいてるかどうかは別としてご挨拶。

そもそもBlogは日々の自分のやったことに対しての備忘録として書いてたのですが、
なんかそうじゃなくてほんとは自分が成長した記録として残したい気持ちがでかいことに気がつきました。

今まで書いたことは無駄じゃないけど、
備忘録と、その日したことと、成長したいって思って書いたことと
それがごっちゃになってるなぁと。

でも、カオスの良さが出てるかというとそんなこともなくて。

ちょっとそんな気持ちを整理する意味で、まずは自分のやりたいことを書き出してみよ〜って感じで
ちょっと書いてみます。

ちなみに本職はエンジニアです。

  • プログラミング

いろんな技術も含めてやけど、やっぱりギークになりたいなぁって。
PHPなり、RubyなりPerlJAVA
それなりには深く話しができるぐらいにはなりたいです。

最近、買った本

Code Craft ~エクセレントなコードを書くための実践的技法~

Code Craft ~エクセレントなコードを書くための実践的技法~

RailsによるアジャイルWebアプリケーション開発 第2版

RailsによるアジャイルWebアプリケーション開発 第2版

WEB+DB PRESS Vol.43

WEB+DB PRESS Vol.43

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

  • デザイン

最近、IllustratorとかPhotoShopとかFlashDreamweaverとかAdobe周りを勉強してます。
昔からデザインにも興味あって、自分でも作品作れるようになりたいし、
使いこなせるようになりたいです。

最近は素材だったり、作品にしたい気持ちもあって
休日はカメラ持って写真とるようにしてます。

あと、動画とか音楽もマスターしたい。

最近買った本と物

Mac Fan GarageBand '08マスターブック (Mac Fan BOOKS)

Mac Fan GarageBand '08マスターブック (Mac Fan BOOKS)

RICOH デジタルカメラ GR DIGITAL

RICOH デジタルカメラ GR DIGITAL

  • WEBでなにをしたいのか。

うーん、やっぱり、ちゃんとアウトプットしたい。
それが作り上げたサイトなのか、途中経過のBlogなのか、どっちでもいいねんけど、
でも、できれば両方していきたい。

ちゃんとアウトプットしてると言う意味で、
面識はないけどAmachangとか、
職場で知り合いのtkmrとかはすごいなぁと思う

IT戦記

http://blog.tkmr.org/

  • 結果

なんか、書いてて思ったのは、
「あぁ、やっぱりWEBが作りたいねんや」と。

作っていく過程とか、つまづいたとことか、その結果でき上がったものとか
全部含めてアウトプットして行きたいんやなと思いました。

デザインも、プログラミングも一人でできること限られてるけど
できたら「カッコイイ!」し、「やりたいねん!」ってのは自分の今の偽らざる気持ち。

これを出だしに、このBlogも共にもう一回歩みます。

今回は、ダラダラした内容やけど、整理するって意味でご勘弁を。

P.S.
こんな欲張りな気持ちにさせてくれた
去年出会ったMacBookに感謝!

昨日作ったモデルにバリデーション処理を追加する

class Product < ActiveRecord::Base
  validates_presence_of :title, :description, :image_url
  validates_numericality_of :price
  validates_uniqueness_of :title
  validates_format_of  :image_url,
                      :with     => %r{\.(gif|jpg|png)$}i,
                      :message  => "is not GIF,JPG,PNG IMAGE" 
  
  protected
  def validate
    errors.add(:price, "is Not Correct") if price.nil? || price < 0.01
  end
  
end

Productのモデルにデータを追加する画面は、
今までScaffoldを使用してきたけども、viewの部分を変更するために
Scaffoldを生成する

# script/generate scaffold product admin
      exists  app/controllers/
      exists  app/helpers/
      exists  app/views/admin
      exists  app/views/layouts/
      exists  test/functional/
  dependency  model
      exists    app/models/
      exists    test/unit/
      exists    test/fixtures/
        skip    app/models/product.rb
   identical    test/unit/product_test.rb
   identical    test/fixtures/products.yml
      create  app/views/admin/_form.rhtml
      create  app/views/admin/list.rhtml
      create  app/views/admin/show.rhtml
      create  app/views/admin/new.rhtml
      create  app/views/admin/edit.rhtml
overwrite app/controllers/admin_controller.rb? [Ynaqd] Y
       force  app/controllers/admin_controller.rb
overwrite test/functional/admin_controller_test.rb? [Ynaqd] Y
       force  test/functional/admin_controller_test.rb
   identical  app/helpers/admin_helper.rb
      create  app/views/layouts/admin.rhtml
      create  public/stylesheets/scaffold.css