2018-06-19

UPDATE: NOW IT HAS!! A reason why Apex doesn't have while-case

更新:在 18" summer release 後,有類似的語法可以使用。
所以這篇基本上也不太需要存在了QQ

關於 「Switch-while Statements」的連結:https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_switch.htm




先說我最近K資料得到的重點:while-case 在視覺上比起大量的 if-else 更容易理解,但是 Apex 因其可能存在的 「未定義行為」故不採用。
Staring with my resent note for certification-preparing: while-case is more visual pleasing then parallel-ed, if-else. But the possible "undefined, unwanted behavior" is probably the reason why Apex doesn't have it.

定義:while-case 語法是類C語言中,用來處理大量、等階(相同時間點) if-else 語法時,運用「案例」的觀念,進而折疊、縮短程式碼並增加可讀性的功能。
Define: While-case is a method with the understanding of "case", for C-Like language to shorten and increase readability in code.

而 Apex 語法最主要的存在的目的是提供  SFDC 上的服務,所以在雲端開發、多租戶的前提下,程式碼的行為、記憶體的邊界,比什麼都重要。
Apex, on the other hand, as the main Language on SFDC, with the purpose of cloud development/compiling/execution and with multitenant awareness, guards closely against runaway code by enforcing limits, which prevent code from monopolizing shared resources.



2018-06-13

How to zip file in Mac without hidden files

對應 TrailHead : https://trailhead.salesforce.com/trails/force_com_dev_intermediate/modules/big_objects/units/big_objects_define_custom_big_objects

Mac 在打包檔案(zip)時會自動產生隱藏檔案,使用 terminal 語法進行打包的話就可以避免這個狀況發生,進而避免透過workbench上傳檔案時的「No package.xml found」錯誤。


語法:zip -r zippedfile.zip filefoder -x "*.DS_Store"

不過還是會遇到No package.xml found的錯誤....

2018-06-12

疊床架屋

在開發component時,很容易因為拆太多層所以難以debug。

所以在 TrailHead 的 challenge: https://trailhead.salesforce.com/trails/force_com_dev_intermediate/modules/lex_dev_lc_basics/units/lex_dev_lc_basics_forms

可能會遇到重複coding造成的錯誤,前前後後打滾了三四天,終於摸索出正確寫法,然後就發現有人已經寫過了。

我的理解如下:

2018-06-06

藍牙很難和電腦連線


我目前碰到的狀況是藍牙耳機開啟之後,很難直接和 MacBook 連線,都要開開關關好幾次電腦的藍牙跟耳機的藍芽,然後才有機會連線成功。
但是把 Handoff 取消後,馬上就抓到自動連線了。

蘋果標誌 > 系統偏好設定 > 一般 :取消勾選「允許這部 Mac 和您的 iCloud 裝置之間使用 Handoff 功能」


更多詳細的資料請見資料來源網站:

2018-05-30

機翻的教學文章真是太誤人子弟了

身為一個新手,想要查點資料,看到免強可以接受的語言張貼了內容,想說那就點進去看看,結果發現是  TrailHead 內容的機翻(機器翻譯)版本。

專有名詞如果沒有用「尋找取代」去替換的話,真的是讓人很一個頭兩個大。

2018-05-10

Execute Apex Class right away/scheduled/delayed in Developer console

如果要測試的 Apex/Bech 是排程執行的,可以不用傻傻等系統幫你執行。

直接在 Developer Console -> Debug -> Open execute anonymous window

輸入以下指令,好直接執行該 Apex:


YourScheduleApexClass s=new YourScheduleApexClass();
s.execute(null) ;


把 YourScheduleApexClass 改成目標 Apex Class 名稱,當然,也要該 Class 是執行的 interface 才可以。

2018-05-07

Result: [OPERATION FAILED]: classes/LeadProcessor.cls: Invalid loop variable type expected SObject was Lead

來,先上error_msg:
Result: [OPERATION FAILED]: classes/LeadProcessor.cls: Invalid loop variable type expected SObject was Lead

然後是code:
    global void execute(Database.BatchableContext BC, List l_scope) {
List l_scope_new = new List();
for(Lead l : l_scope)
{
l.leadsource = 'Dreamforce';
l_scope_new.add(l);
count++;
}
update l_scope_new;
}

原因:compiler期待型態: Lead的變數,但是接到的是型態為sObject的變數的時候,就會跳這個error。

2018-04-30

Failed to save xxx.cmp: Invalid Descriptor Format

Failed to save campingListItem.cmp: Invalid Descriptor Format: Camping_Item__c [TYPE]: Source

這是因為在console介面所使用的object的名字與系統內的名字不同造成的。

因為“空白、換行、標點”都會算入,所以通常檢查拼寫跟標點就可以解決了。

2018-04-25

Salesforce Lightning 的 Object Manager 中 無法顯示 compound Field


此問題目前無解,在 Lightning 介面的 Object Manager ,就是不會顯示 compound Field。
即,Setup -> Object Manager -> Fields & Relationship 的頁面,依然無法看到 compound Field 中東西。

所以,目前(2018/04/25)唯一解是切回 Classic 介面進行操作。


會有這個疑問的原因:在做Trailhead練習時,發現自己一直在對(Lightning)看不到的欄位塞東西,感覺疑惑。
然後就發現,我果然不是第一個遇到這個問題的,已經有人問過這個問題了


名詞解釋:
Compound Field 

由系統打包處理的多個元素。
目前最常見的應該是Name:  Salutation + First Name + Last Name。





2018-04-20

Salesforce Visualforce Page 寫註解的方法

當成一般網頁就可以了,所以註解就是像下面這樣:

Salesforce Apex Developer Console 自動縮排

搜尋後發現英文關鍵字是:Formatter(這個比較接近排版), auto-indent(自動縮排)

Salesforce Developer Console有自動縮排功能,快鍵是: [Shift] + [Tab]  (Mac也適用)

這個功能還滿 by IDE的,所以沒有看到什麼universal hot key,所以用便條紙記下來叭,等3M便條紙爛了,或是電腦記憶體不足需要清理電子便利貼的時候,應該也記得起來了。





因為超懷念 gg=G 這種功能,所以寫了幾天Apex就馬上開始找熱鍵。



剛剛測試,在目前最新的API:42版本中,只有自動縮排,不會取消空行、刪掉多餘的空白。

I know, I know, 用自己電腦裡的IDE有很多套鍵可以使用(還有多變數自動對齊、變數前後自動只留一個空白、標色補完等等這樣那種酷炫的套件),但如果只是看一下簡單的code,那自動縮排應該就夠了。

Source: https://stackoverflow.com/questions/42572049/any-shortcut-key-to-indent-code-in-developer-console-in-salesforce