2009年12月25日金曜日

[SFDC]:親が更新されたら子、孫・・・にも反映

要件として親の項目が更新されたら子にも~とか聞いたりします。
 ※逆もありますが

ということで強引に作ってみた。

A.設定
 ・取引先の親取引先を使っています。
 ・実行する際にはフラグを利用しています。
  >チェックして保存したら実行
 ・Database.Batchableを利用して大量データにも対応しています。
 ・先祖のIDを数式で持たせ、その項目に対してLikeで検索して反映対象を取得しています。
  ParentId
  & Parent.ParentId
  & Parent.Parent.ParentId
  ・・・・.ParentId
  ・・・これはひどいww
  これが20個ぐらい続きます。
  ガチでやろうとすると、子を取得して、子を参照する孫を取得して孫を参照(以下略
  となるのですが、面倒なので今回はこのようにしています。

B.SFDC側の設定
 取引先に
  1.実行用のフラグ(batchActionFlg)
  2.さきほどの先祖のIDを連結した数式(pID)
 をカスタム項目として定義

C.Apex

面倒なので、そのままソースを貼ります。
AccountTrigger.trigger
trigger AccountTrigger on Account (Before update) {
 AccountUpdate aupObj = new AccountUpdate();
 for (Account acc : Trigger.new) {
  aupObj.execute(acc);
 }
}
AccountUpdate.cls
/**
 * バッチ呼び出しクラス
 * 実行判定を行う。
 *
 */
public class AccountUpdate {
 public void execute(Account acc) {
  System.debug('■■■■■■AccountUpdate■■■■■■');
  if (acc.batchActionFlg__c) {
   acc.batchActionFlg__c = false;
   AccountSyncBatch job = new AccountSyncBatch(acc);
   ID batchprocessid = Database.executeBatch(job);
  }
 }
}
AccountSyncBatch.cls
/**
 * バッチ
 * 更新対象の取引先を取得し、更新する。
 * 親の種別(Type),評価(Rating)を子に反映させます。
 */
global class AccountSyncBatch implements Database.Batchable{

    // 更新した親
    Account parentObj = null;

    // コンストラクタ
    public AccountSyncBatch(Account p) {
     System.debug('■■■■■■AccountSyncBatch コンストラクタ■■■■■■');
     this.parentObj = p;
    }
    
    global database.querylocator start(Database.BatchableContext bc){
     System.debug('■■■■■■AccountSyncBatch start■■■■■■');
     System.debug('□対象のObj start :' + parentObj);
     System.debug('■■検索SOQL :' + 'select Id from Account where pID__c Like \'%' + String.valueOf(parentObj.Id).substring(0,15) + '%\'');
     // 親IDが含まれる 数式は15桁IDのためIDをStringにキャストして15桁を切り出し検索条件とする。
        return Database.getQueryLocator('select Id from Account where pID__c Like \'%' + String.valueOf(parentObj.Id).substring(0,15) + '%\'');
    }

    global void execute(Database.BatchableContext bc, SObject[] objects){
     System.debug('■■■■■■AccountSyncBatch execute■■■■■■');
     System.debug('□対象のObj execute :' + parentObj);
        Account[] accns = new Account[]{};
        for(SObject s : objects){
            Account a = (Account)s;
            a.Rating = parentObj.Rating; // 評価をセット
            a.Type = parentObj.Type; // 種別をセット
            accns.add(a);
            System.debug('■ update entity:' + a);
        }
        system.debug('□□□□□□iterator done.□□□□□□ ');
        update accns;
    }
    
    global void finish(Database.BatchableContext bc){
        system.debug('□□□□□□all done.□□□□□□ ');
    }
}

これで、batchActionFlgをTrueにして保存すれば動きます。
テストメソッドとか、データローダでドカンと保存したらどうなるのよ!とかは考慮してません。
長くなりました。

もっといい実装方法があったらコメント頂けると幸いです。

2009年12月22日火曜日

[Coh]:ひさしぶりにやる⇒いつものコース

2v2 AT

久しぶりにやりました。

はい。フルボッコ乙

その後、5ドルセールで購入したRO:Oをちょいちょいとやる。
ちょいちょいと死ぬつもりが、結局3時までやってた。

死ぬのはイワンの役目と赤軍でやってました。
結果MGに撃たれ、ライフルで狙撃され、手榴弾で爆死したり、
Stg44で蜂の巣にされたり、IV号戦車に踏まれたりと、これでもかと
言うぐらいに死にまくった。
連中こっちがnoobだからって手加減しねぇぞ!!

役に立ったことといえば、パンターを拾ったパンツァーファウストで
撃破したり、機関銃手に弾薬渡したり、キャプチャエリアで芋ってたぐらい。

戦争はダメ!ゼッタイ!!です。

2009年12月21日月曜日

[雑談]:年末近況

世間一般どおり、忘年会シーズンに仕事も重なり
Gameする暇なし。
寝る時間削ればいいんだろうけど、風邪引いてついに
熱だしたこともあり、無理できまへん。

やらないととたんにヘタクソになるので
今週はそろそろ復帰したいなぁ。


by Geschutzwagen Team

2009年12月13日日曜日

[Coh]:ダブルパイオスパム ~ その6

2v2 AT

ダブルパイオスパムの模様をうpしたみたいなので、宣伝



風邪ひいてまた鼻をすすりながらのプレイですいません。

2009年12月11日金曜日

[Coh]:ダブルパイオスパム ~ その5

2v2 AT

1週間に渡り続けてきたダブルパイオスパムですが、
そろそろ疲れてきました。

逆に操作が適当になってウチのシュトゥルム・ピオニーレがいっぱい死んでますorz

あれだ、やっぱマックゲハンはつまんないよ、ママン。
ウチのT2が敵エンジニアのデモリッションで吹っ飛ばされたときは笑ったw

突っ込んできたHTと火炎Eng*2は全滅させたので、KB1つと交換なら再建築や
その間軍が出ないロスを引いてもあまり損はしなかったかな?
どうせならHQにしかけりゃいいのにと。

いっどん気合いばいれっせんとだるっど。

もう一回ちゃんと整理してやり直そう。
相手燃料の状態とか見てT2でpak出すのか、T3でPumaごり押しか
分けないとね。

2009年12月10日木曜日

[Coh]:ダブルパイオスパム ~ その4

2v2 AT

まだまだ引き続きダブルパイオスパムを実践

1戦目 オック岬 米米
東・上スタート
最初の戦闘が起きる前に、Pioを集結させるの忘れて
主導権握れず。
相手がライフルマンを固めて運用しているのに、
パイオ3ぐらいで戦ったらいけません。
燃料切られて、最後に相手のHQにFireStormしてgg余裕
まぁ、1戦目なんで手も動きませんでした。

2戦目 エダヴォー 米米
西・下スタート
エダヴォーはHQに歩兵で突っ込めるので
裏から侵入して燃やしてあげた。
105mmHowitzerにドカドカ撃たれたので、Pioで突っ込んで、FireStormで
鉄クズにしてあげたこと2回。
その後、KTやら適当に出して。砲撃して守って勝利

3戦目 エダヴォー 米英
西・上スタート
「PioSpamer!!」とか言われた。「thx」と言ってあげた。
ブレンキャリア邪魔なことこの上ない。
なんとか地雷踏ませようと奮戦するも踏まないので、
T2でpakで祭ってあげた。
HTも出してみたけど、pio乗っけて機銃撃てるようになると強いね。
結構サプレスするする。

メディバンに突っ込んできたヤンキー共を追い返すために、
そのHTを囮にしつつメディバン目掛けてFireStorm使ったり、
まぁまぁの判断が出来たのではないかと。

2009年12月9日水曜日

[Coh]:ダブルパイオスパム ~ その3

2v2 AT

今回も引き続きダブルパイオスパムを実践

結果は2敗だったのですが、Mapがどちらも
ヴォルフヘッツェという燃料が少ないMapだった。
燃料が少ないとわかっていながら即する。
 ※Puma出す燃料ないので、むしろ即ネーベルになった。

ヤンキーに紅茶野郎を散々ヤキイモにしたあげく
ヤンキーのHQを破壊して、紅茶トラックをスクラップにした結果

スコアで勝ってVPで負けたのでしたとさw

VP無視したのが、主な敗因なんだけどやっぱり突撃しないで
待ち構える方が強いか。

うーん、今考えたけど途中MPが余るのでPio7部隊じゃなくて9
部隊ぐらい出すか。。。3つにわけてグルーピングして包むように戦おう。

ということで、思いつきオーダーをメモメモ
Pio*7, KKC, SupVet1, SupVet2, Pio*2,T2,T3,Puma or ネーベル

か?
T2でpak出すかは、友軍と相談。

2009年12月8日火曜日

[Coh]:ダブルパイオスパム ~ その2

2v2 AT

前回に引き続きダブルパイオスパムを実践

結果1勝1敗だったのですが、
MG,スナをうまく運用するレベルになると
にわか仕込みのパイオスパムじゃやっぱ効かない。

敗戦はヴォルフヘッツェでしたが面をMG,スナで守られると近づけない。
2方向から接近するけど、スナがウザイことこの上ない。
かといってT1建てると、M8が来たときかなり荒される。



赤が相手のMG,スナ陣地。青が自軍の有効範囲。
無駄に突撃しすぎもあったかも。Vet2付いた時点でとっとと友軍と
合流して突破すればよかったかorz
スパムしてるのに、自軍の有効範囲が狭すぎるwww
右の燃料5, 弾薬16までは欲しかったけど失敗した。

Mapによって戦術を変えることが軍が出やすい2v2だと
必要かなぁ。。。

ま、操作の練習にもなるし、しばらくはこれで頑張ります。

※画像はWikiから拝借させていただきました。ありがとうございます。

2009年12月7日月曜日

[Coh]:ダブルパイオスパム ~ その1

2v2 AT

かなり酔った状態で、Coh2v2

戦略とかあまり考える必要のない
ダブルパイオスパムで2連勝しましたとさ。

多方向から接近して、ひたすらに燃やす。
燃料を確保し続けて、pumaでさらにいじめる。

pumaでHQに突っ込んで、視界確保してFirestorm・ネーベルで
リトリートした敵の部隊涙目。

覚えている範囲でオーダー
pio*7, KKC, Vet1, Vet2, T2, T3, puma*2, ネーベル * n, puma * n

pioは7部隊を維持しますが、お互いの燃料の状況によりけりです。
燃料を渡しているならT2でpakを2以上出さないと死にます。

PE休憩して、しばらく国防でもかんばって見ようかな

2009年12月4日金曜日

[SFDC]:VisualForceの読込時にデータをいじりたい

普通に<apex:repeat value="{!awsResult}" var="res">ようなソースを
かいて、getAwsResultメソッド内で、updateやinsertを行うと以下の
エラーメッセージが出ました。

DML currently not allowed

色々調べた結果、<apex:page>のactionにinitを書いてあげて
コントローラにinitクラスを書いてその中で実行したら出来た。

VF
<apex:page action="{!init}" controller="hogehoge" showHeader="true" cache="true">

Apex
public void init() {
 Account[] acc = [select id,Description from Account where Name = 'hogehoge会社'];
 System.debug('■■■■:' + acc);
 for (Account a : acc) {
  a.Description = a.Description + '@Oh!Yes!!';
 }
 update acc; 
}

※アクセッサでは無理なのかな??
 これが正しいかどうかは不明

[Coh]:未だに\(^o^)/

未だにやってしまう失敗。


1.ヴァンパイアHT出そうとして弾薬HTを出してしまう

2.切株出そうとしたらオチキスだった

3.2.に対して研究後に気づく

4.燃料を切るのを忘れる

5.逆に燃料が切られる

6.肝心な時に弾薬がない or チャージ中

7.DefOp研究したのに、アビリティ使用後のATHT・MTHTをHQに戻すのを忘れる

8.序盤でケッテン・シュビムが狩られる

9.車両がリトリートした相手を追ってHQで爆死

10.スコアで勝って、VPで負ける\(^o^)/


・・・あれれ、いっぱいありすぎるwww

[Coh]:ゴリアテの威力

ゴリアテが好きです。

弾薬125使います。高いです。

とりあえずメモ

------------------------------------------------>>
1.2つでHQトラック破壊
 ゴリアテでサンドイッチしてあげてください
 250使いますが、自分昔からHQの類を破壊するのが大好きです。
 旧軍と違い、機械を突っ込ませるので心も痛まないです。

2.わき腹を突くと、歩兵は阿鼻叫喚
 正面から行くと発見されて、貴重な弾薬を無駄にするだけです。
 大軍に突っ込むのもあまりよくない。
 戦闘中に横から突っ込むとロマンティックが止まらなくなります。
  >さらにVet付きだと、ニヤニヤも止まらなくなります。
 ともかく、ゴリアテをターゲットにされないことが大事。
 ドイツ脅威のメカニズムでカモフラも出来ますんで。

------------------------------------------------<<

そういや、以前ゴリアテでカリオペ追い回したなぁ。

今後増えていく予定はあるか・・・も?

2009年12月3日木曜日

[Coh]:ついったーは#cohjpまで

タイトルの通りです。

cohやってて、かつTwitterもやってるという

奇特なお方は #cohjp のタグつけてつぶやくと

もれなく、私がフォローしますw

影響力低いけど、とりあえず支援。

もう一回いいます。

#cohjp のタグつけてつぶやくです。

2009年12月2日水曜日

[Coh]:初心者の壁

GRIDとl4d2を購入したため、若干トーンダウン中。

といっても、やるにはやるのですが、仕事が忙しいことも手伝って
中々集中して時間が取れず上達できませんw

まぁ、楽しいからいいんだけどね。

2v2 AT の状況は、上位にはもちろん即死し
下位の人たちをフルボッコしてMapに対してトラウマを
植えつけて終わるという酷い有様。

あれだ、初心者の第1の壁役になってる俺らw

スクリーンショット撮りたいけど、押してる暇がないw

[GRID]:ぼちぼちと

先日Steamのセールで衝動買いしましたが、その後
ぼちぼちやってます。

ドリフトの感覚がまだつかめません。

とりあえず、せっかくなので、ドライバー視点固定でやってます。
キーボードだとスジが痛くなるのでPS2パッド使ってます。
 
はやく、スープラに乗りたいw

そのうちマルチに行けるといいな。

[雑談]:チーズおかき

送信者 ignore++
チーズおかき。

うま


小さい頃は、よくはがして食べたりしてました。