2011/10/12

ビュースステートの最大表示サイズ制限(135 KB)

force.com/salesforce.comでページを表示する際に使用できるデータサイズの制限を超えると以下のエラーメッセージが表示されます。

「ビューステートの最大表示サイズの制限(135KB)を超えています。このページのビューステートのサイズは XXX.XXX KBでした」

この場合、どこの処理がデータサイズを消費しているかを確認する必要があるのですが
Visualforceページの開発モードが有効になっている場合 「View State」を見ることで確認ができます。

確認出来る内容は、ページを構成する上で使用しているデータのサイズと比率になります。

この情報を元に不要なデータを保持してるApexコードを修正することで問題を解決できる場合があります。

もっとも、ページ自体が重すぎるということは否めないのですがcsv出力するような場合はどうしてもデータ量の多いページとなってしまいますね…


2011/09/13

heroku.com de Go! part 1

herokuを使ってみよう

はじめに

herokuは、簡単にいうとホスティングサービスです。
じゃぁ、なにが面白いかというと
サーバーの設定とかいらないからアプリのソースをgitでpushしてよ実行しとくから

なんとも、アプリ開発者にとってはすんばらしい世界がきたもんだ。

いままでは、それサーバを準備してOSをセットアップして実行環境を準備してネットワークにつないで。。。ほかいろいろあったのですがー

とまぁ、前置きはともかくとして使用するまでの準備

環境

ちなみに実施環境はMac Book Air de Mac OS X Lionです。
理由は、unix コマンドとの親和性がいいことがなんともGood!!!です。

準備

まずは、Ruby環境を準備ということなのですが。。。
Mac OS X LionはRubyがデフォルトで使えるんです
がよく調べてみるといろいろなバージョンがあるらしくそのまま使用するには危険を感じたところなんと便利なツールがあるじゃないですかー
rvm こと Ruby Version manager
くわしくは、本家なりほかでご確認を
ということでrvmをインストール、ruby 1.8.7をインストールしようとしたらなんかエラーがでてしまって思わずgithub.comissueコメントを確認したら同様のことが。。。
んでもって翌日確認したら直したよとのことらしいのでrvmをupdateしたら問題解消ー
ふぅ(汗)

んでもってようやくRuby環境を再構築です。
herokuでのRuby推奨環境は今のところ以下でした。

Ruby 1.9.2
Rails 3.0

なので、
$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
$ rvm install 1.9.2
$ rvm use 1.9.2
$ rvm gemset create herokurails
$ rvm gemset use herokurails
$ gem install rails -v 3.0.5
$ rvm use 1.9.2@herokurails --default

ほかのツールとしてはgitが必須ですね。
これについてはgithub.comでmac os x用のGUI環境があったのでそちらを使いました。

ほかにもJava,Node.js,Play!,Spring MVC Hibernateなどがあるらしいのですがあまりくわしくないのでほかの機会に

やってみる

この内容は、heroku.comのGetting Started with Rails 3.0 on Heroku/Cedarをやってみた内容になります。

Herokuコマンドラインクライアントのインストール
$ gem install heroku

SSHに関して

public key作成

$ ssh-keygen -t rsa 

Herokuへのキーの追加

$ heroku keys:add

Herokuに登録されているキーの確認

$ heroku keys

動作確認

$ ssh -T git@heroku.com

!  You can only access Heroku by ssh via git push and pull commands.

が出力されれば設定はOK

あとは、Getting Started with Rails 3.0 on Heroku/Cedarにある通りでWebで動作するのが確認できましたー。

詳しく part 2 にて…

気を付けないいけないこと
Gemfile Procfileに加え Gemfile.lockもgit push しないとエラーになりますね

なんともお手軽な時代♪

2011/08/29

カスタムアプリケーションインストール後にエラーが発生


開発環境ではテストの実行も問題がないのにパッケージングして
リリース環境へインストールした場合にエラーが発生する場合があります。

理由は、バッチ処理や動的SOQLなどでSOQLを文字列で記述している場合にカスタムオブジェクト
への名前空間プレフィクスを記述漏れしている場合があります。

Apexコードでカスタムオブジェクト使用している場合は名前空間プレフィクスがなくても
問題ないのですが文字列で記述してあるSOQLの場合は名前空間プレフィクスを入れ
ないと問題が発生します。
(そんな名前のフィールドはない旨のエラーが表示される)

リリース環境へリリースするまでは発見されにくい内容となるので気をつけよう。

2011/08/24

DVDまたはCD共有 de MacBook Air

  • 共有される側のPCのスペック
  1. Mac OS X v10.4.11以降またはWindows7/XP/Vista
  2. Mac OS X v10.5.3以降は「DVDまたはCD共有」はインストール済み
※一度に組み合わせることができるのは1台のみ

「DVDまたはCD共有設定」ソフトウェアのダウンロード

  • Windowsの場合

support.apple.com/kb/DL112?viewlocale=ja_JP

  • Mac OS X v10.4.11-10.5.2の場合

support.apple.com/kb/DL113?viewlocale=ja_JP


  • 設定方法

support.apple.com/kb/HT1777?viewlocale=ja_JP


  • 使い方

  1. 共有するPCにメデイアをセット
  2. MacBook AirのFinder のサイドバーの「デバイス」の下の「リモートディスク」が表示されたらそれを選択、「使用を依頼」ボタンが表示される場合はそれをクリックする。
  3. 共有するPCで求められた場合は「了解」をクリックする。
  4. MacBook Airで利用可能になる。

以上、MacBook Airの小冊子からの抜粋

2011/08/19

住所class 設計

とある日に住所をオブジェクト指向設計したらどうなるという議論がありました。

  • ある人は、以下があるといいました。
  1. 都道府県クラス
  2. 市区町村クラス
  3. 番地クラス
  • ある人は、以下があるといいました。
  1. 住所クラス
  • ある人は、クラスではなくフィールドもしくはプロパティだといいました。
  1. 文字列

    その時の議論では答えは出なかったと思います。

    今、思い返すと自分の回答は「場合による」になります。
    何が場合によるかというと以下になると考えるからです。
    • 住所をどのように使用するかによって違ってくる。
    表示目的で特に機能を有しない場合
    フィールドもしくはプロパティにする
    class Contact
        string address;
    }
    

    それぞれに於いて機能が付加されるような場合
    都道府県、市区町村、番地クラスを使用する
    class Todoufuken
    {
        Todoufuken(string name);
        number getArea(); //面積取得
    }
    

    住所に機能が付加されるような場合
    住所クラスにする
    class Address
    {
        Address(string address);
        string getTodoufuken( string address );
        Todoufuken getTodoufuken( string address );
        string getPostNumber(string adress);
    }
    
    or
    class AddressHelper
    {
        static string getTodoufuken( string address );
        static Todoufuken getTodoufuken( string address );
        static string getPostNumber(string address);
    }
    

    というように、場合によって目的のクラスを後々付加していくのがいいと思う今日この頃。