コルカタ(インド)女一人旅行1日目 ~ビザ代はルピー限定~

1日目。初めてのインド。女一人旅です。 男に追い掛けられるという噂を耳にして念のためチョロンギー通りの4つ星ホテルに宿泊。

コルカタ空港に到着したのは22時半。

第一関門、ビザ。 ブログや本にはカードやドルが使えるなんて書いてあるが、真っ赤な嘘である。インドルピーで2000ルピー払え。他は使えないと言われる。 しょうがなく空港の両替カウンターでユーロを両替。75ユーロを5000ルピー位に。 同じ状況の日本人女性が1人いて、一緒に愚痴り合い少し安心する。 写真は結局取らず、指紋をとって色々質問されて金を払って終わり。かかること1時間。

第二関門、ホテルへの移動。 23時半。ホテルの送迎を予約してあるので外に出る。もう帰っちゃったかな。。。 深夜の空港は人はいるものの、本当に知り合いを待ってる人、仕事してる人、送迎の札を持ってる人が殆ど。皆が言っている昼のタクシー詐欺やらうるさい人がいないのである意味安全かもしれない。

外に出る。送迎の人を探す。 いない、、、、いない、、、、いない、、、。。。。 自分の携帯で初めて国際電話を掛けてみる。ホテルの人でる。でも騒音で聞こえない。切られる。。。

銃を持った警察官にホテルに電話したいと伝えて、空港内の電話貸し出しサービスを借りる。 係りの人にホテルの電話番号を見せて掛けてもらう。繋がらない。。。と思ったらfaxに掛けていた。違うこっちだと訂正。

改めてホテルに電話。送迎サービスを予約したいといったことが伝わっていないらしく、いつメールしたのか細かく聞かれる。伝える。5分待て掛け直すと言われる。 電話貸し出しサービスの中で待つ。気まづい。。。

まあ掛けてこなそうなのでもう一度掛け直す。するといま行けるシャトルはないと言われ、プリペイドタクシーを使えと言われる。

電話サービスの人に、ホテルの人にプリペイドタクシー使えって言われたんだけどどこいけばいいんだと聞いたら幸いにもすぐ近くのブースにあって指差して教えてくれた。

電話は確か10分位使って150ルピー位。

プリペイドタクシー受付に到着。結構混んでいる。 310払えと言われ、350出すとお釣り貰えず、、。うー。

レシートを持ってプリペイドタクシー乗り場へ。銃を持った警察官に場所を聞く。あの辺だと言われその辺に行く。どのへんだ。。 うろうろしてると警備員らしき人たちがいたので再度聞く。プリペイドタクシー専用ブースを発見。専用係員を発見。レシートを見せるとこのタクシーにl乗れと言われる。 乗る。タクシーのおじさんに、深夜だからちょと高いよと言われる。疲れすぎて日本語でしょうがない。という。 無事ホテルに到着。いくら?と運転手に聞くと100ルピーと言われ払う。いままでで一番安い。ひょっとして払わなくて良かった系?ちなみにホテルの送迎はー1800ルピー。ここまでくる諸々の金額を足しても送迎使うより格段に安い。

ホテル到着。謝られ、サービスでフルーツケーキを貰う。意外と律儀やな。

f:id:chororooo:20170103130931j:plain

シャワーはぬるいがお湯レベルのお湯は出る。トイレも水洗。だぶるべっと。広い部屋。文句なし。時間を見たらもう1時。日本時間で4時半。。就寝。

制限回避いろは

 

 

Salesforceには諸々の制限がある。ここまで縛らなくても稼働するやろ!って位。よそ様のプラットフォームを借りてる以上仕方ないといえばそれで終了ですが、このご時世こんな厳しい制限で実装することになるとは、、、とても節約術の勉強になりますが、ライセンス費用とか考えるともうちょっとサービスして欲しいと思いますね。。。。

ガバナ制限:

Salesforceが独自に設定している制限。1トランザクション中にSOQLクエリ発行数が100回を超えるとLimitExceptionが発生し、処理は中断される。

ガバナ制限の回避方法:

トランザクション内で何度も呼ぶ値はstaticなクラス変数で呼び出しておいて呼び出す。Mapをフル活用すること。SOQL発行やtrigger.new,trigger.old呼び出しの際に以下のような記載だけで型をListからMapにかえる事ができる。2つのデータの突き合わせ時は1ループ内でMap.get(id)みたいな形で呼び出すと、forの中でクエリ発行するなんてこともしない上、ループ回数も減らせる

クエリ発行時:

Map<Account> accountMap = [SELECT Id FROM Account ];

Triggerで受け取ったデータ取得時:

trigger.newMap

trigger.oldMap 

 

ビューステート制限:

ビューステートの最大表示サイズが135kbyteを超えるとvisualforceページ上にエラー画面が発生(昔は128kbyteだったみたいですね)

ビューステートとは:

自分なりの記載をすると、フォームとコントローラで行き来するデータをbase64に変換して内部保持すること。ロールバック出来るように保持しているんだとか。

 

ビューステート制限は1画面に情報を詰め込みすぎないというのが第一。SFが提供してるキャッシュ機能をうまく使えば回避できそう。定義的にコントローラを作らなければ減らせるんだと。(なにがMVCダ。jsでええやん精神で)

 

100回て、、、、135kbyteて、、、いくらなんでも制限し過ぎでは、、突然100倍位にならないかなー(遠い目)。

Salesforceはじめました

こんばんは。Salesforce開発ってなんやねんってところからご紹介します。

Salesforce開発とは:

Salesforce社が提供するCRM(顧客管理ツール)内部の処理実装。以下の独自言語・独自機能を用いて追加機能の提供、自動化等を行っていく。

Apex:

Salesforceが提供するjavaベースのプログラミング言語。visualforce実行時のサーバーサイド処理のクラスをController,trigger発動時のサブクラスをHandlerと呼んだりする。

Trigger:

オブジェクトに対するクエリ発動時の動作設定。記法はapexと同じ。

Visualforce:

Salesforce独自のテンプレートエンジン。アノテーション等はなく、全て独自タグ記載。HTML, js, cssは読込可能

オブジェクト:

MySQLのテーブルと意味合いほぼ一緒。salesforceのデータストレージ格納時に型付きで格納する。オブジェクト以下には項目を500項目まで追加できる。

ワークフロールール:

Excelライクな関数を使用して項目更新・メール送信などを起動できる。Triggerと比較したメリットは、ノンプログラミングであること。

項目自動更新:

その名の通り、オブジェクトの項目を更新する設定。単独で利用するのではなく、ワークフロー発動時に設定する機能。

メールアラート:

メール送信をする機能。項目自動更新同様ワークフロー発動時に設定する機能

メールテンプレート:

メールアラート発動時に設定するテンプレート。記載方法はvisualfroceとほぼ同じ。テキストでの記載も選べる。