① 分別舉例「化深奧為淺顯」的句子,化「抽象為具體」的句子。
化「抽象為具體」的句子有李煜(五代)的《虞美人·春花秋月何時了》:「問君能有幾多愁,恰似一江春水向東流」、李白(唐)的《宣州謝脁樓餞別校書叔雲》:「抽刀斷水水更流,舉杯消愁愁更愁」、;化「深奧為淺顯」的句子:李白(唐)的著名詩篇《秋浦歌》:「白發三千丈,緣愁似個長」。
② 如何高逼格玩轉場景化營銷
在ASP.NET網站里(也包括其他有web.config, app.config)的.NET工程里,讀AppSettings的值是個很常見的場景。比如: <add key="EnableAzureWebTrace" value="true"/> 在代碼里讀的時候就會用到: ConfigurationManager.AppSettings["EnableAzureWebTrace"]; 這個[]索引器返回的是string類型。所以下一步咱們通常需要類型轉換才能在代碼里拿來用。比如這個例子里,咱們就要轉換成bool。其他時候,可能要轉換為int等類型。 string enableAzureWebTraceConfig = ConfigurationManager.AppSettings["EnableAzureWebTrace"]; bool enableAzureWebTrace = bool.Parse(enableAzureWebTraceConfig); if(enableAzureWebTrace) { // do some logic } 但問題是,config文件的值對於咱們代碼來說是不穩定因素,不可控的,這里拿回來的string未必能正確轉換格式。所以通常會用TryParse方法來防爆: string enableAzureWebTraceConfig = ConfigurationManager.AppSettings["EnableAzureWebTrace"]; bool enableAzureWebTrace = false; if (bool.TryParse(enableAzureWebTraceConfig, out enableAzureWebTrace) && enableAzureWebTrace) { // do some logic } else { throw new ConfigurationException("EnableAzureWebTrace value must be true of false."); } 當然,不要忘了一點。讀出來的string有可能首先就是空的。所以又得加上對string的判斷,並且考慮到ConfigurationManager.AppSettings[]索引器本身可能會爆,所以還得加try-catch,最終代碼就變成這樣了: try { string enableAzureWebTraceConfig = ConfigurationManager.AppSettings["EnableAzureWebTrace"]; if (!string.IsNullOrEmpty(enableAzureWebTraceConfig)) { bool enableAzureWebTrace = false; if (bool.TryParse(enableAzureWebTraceConfig, out enableAzureWebTrace) && enableAzureWebTrace) { // do some logic } else { throw new ConfigurationException("EnableAzureWebTrace value must be true of false."); } } } catch (ConfigurationException ce) { // error handling logic throw; } 這樣的代碼非常沒有逼格,重用性很差,如果自己的config裡面AppSettings比較多,或者一個settings在程序里到處被用,顯然不應該每次都把這樣的代碼到處復制。所以封裝一下唄: public bool IsEnableAzureWebTrace() { try { bool enableAzureWebTrace = false; string enableAzureWebTraceConfig = ConfigurationManager.AppSettings["EnableAzureWebTrace"]; if (!string.IsNullOrEmpty(enableAzureWebTraceConfig)) { if (!bool.TryParse(enableAzureWebTraceConfig, out enableAzureWebTrace)) { throw new ConfigurationException("EnableAzureWebTrace value must be true of false."); } } return enableAzureWebTrace; } catch (ConfigurationException ce) { // error handling logic return false; } } 現在要用到EnableAzureWebTrace的地方都只要調用public bool IsEnableAzureWebTrace()就行了,就把如何讀config的邏輯抽離了。重構的目的是,萬一以後讀config的機制變了,只 要改這一處。不用到處改。但是,重構的粒度還不夠。這個方法只能用來讀EnableAzureWebTrace這一個設置。要通用一下,讓它也能 讀其他bool類型的設置。把key單獨的抽出來變成參數: public bool GetBooleanConfiguration(string key) { try { bool val = false; string rawConfigValue = ConfigurationManager.AppSettings[key]; if (!string.IsNullOrEmpty(rawConfigValue)) { if (!bool.TryParse(rawConfigValue, out val)) { throw new ConfigurationException(string.Format("{0} value must be true of false.", key)); } } return val; } catch (ConfigurationException ce) { // error handling logic return false; } } 但是這還不夠,因為這個方法只能滿足於bool類型的config,咱們希望有個公用的方法,能讀取其他類型。這時候就需要用泛型了。把返回類型給抽離出來。 難點在於,每種數據類型的類型轉換寫法不一樣。比如bool類型是bool.TryParse,int類型是int.TryParse,怎麼把這部分邏輯抽象出來呢? 一種辦法是用C#本身的類型轉換: (T) Convert.ChangeType(rawConfigValue, typeof (T)); 另一種是把類型轉換的邏輯作為委託加在方法的參數里,這樣就用lambda表達式去傳,咱比較偏向這種方法,因為方法的調用者能非常清晰的知道「該幹嘛,該怎麼干」。 這時候,如果因為非法類型轉換爆,是得讓調用者知道的。所以個人偏向把TryParse改為Parse,死就要死個明白。 public T GetConfiguration<T>(Func<string, T> parseFunc, string key) { try { T val = default(T); string rawConfigValue = ConfigurationManager.AppSettings[key]; if (!string.IsNullOrEmpty(rawConfigValue)) { return parseFunc(rawConfigValue); } return val; } catch (ConfigurationException ce) { // error handling logic return default(T); } } 現在,調用這個方法就能這樣去寫: GetConfiguration<bool>(bool.Parse, "EnableAzureWebTrace"); 看起來已經很牛逼了。但其實還不夠。考慮到之前說的config值為空字元串的問題,安全一點的做法是,當遇到空字元串時候,返回一個默認值。因為 這種錯誤,並不是key不存在的錯誤,而是key存在,但是值沒填。非法值是應該認為錯誤的。但是空值個人認為更應該處理為一種「警告」,是應該有 fallback的策略的,而非不可饒恕的錯誤。為了返回默認值,咱們可以多加一個委託。 public T GetConfiguration<T>(Func<string, T> parseFunc, Func<T> defaultTValueFunc, string key) { try { string rawConfigValue = ConfigurationManager.AppSettings[key]; return !string.IsNullOrEmpty(rawConfigValue) ? parseFunc(rawConfigValue) : defaultTValueFunc(); } catch (ConfigurationException ce) { // error handling logic return default(T); } } 現在,調用者就能靈活處理遇到config為空時候的默認值了: GetConfiguration<bool>(bool.Parse, () => false, "EnableAzureWebTrace"); 但是如果每次都在條件判斷里寫上面那樣的語句是挺麻煩的,在一般的系統開發中,常常會用一個管理配置的Settings類來對應 Web.config里的設置表,維護這個關系。為了使用方便,咱們會把每個Settings的名字,也就是key,作為屬性去暴露給調用者,於是就能 這樣寫: public bool EnableAzureWebTrace { get { return GetConfiguration<bool>(bool.Parse, () => false, "EnableAzureWebTrace"); } } 以為裝逼結束了嗎?當然不行!沒發現,屬性名稱和傳進去的string類型的key名稱是重復的嗎?這樣寫代碼是不是有點蛋疼?而且最慘的是, 在VS2015,C#6.0之前(也就是下版本的C#),string這種東西,要是寫錯了是編譯不出來的,所以應該盡量避免用string傳 key。經常會發生改了屬性名,沒有一起改string值的悲劇。比如MVVM框架的RaisePropertyChanged(string)就經常坑 爹(題外話)。。。 好在,.NET4.5有個CallerMemberName特性,意思是」調用咱的方法叫什麼名字」,就能幫咱們把這個string參數擼掉。 所以,只需要把方法簽名里的string key改成: public T GetConfiguration<T>(Func<string, T> parseFunc, Func<T> defaultTValueFunc, [CallerMemberName]string key = "") 這樣這個方法被調用的時候,key就會自動賦值為調用它的方法或屬性名。然後,剛才的那個屬性就能夠這樣去寫: public bool EnableAzureWebTrace { get { return GetConfiguration<bool>(bool.Parse, () => false); } } 以為裝逼真的結束了嗎?還有最後一步。萬一要是碰到有些情況,屬性名真的和appSettings里的key名字不一樣怎麼辦?為了靈活處理這種 邊緣情況,還可以加個參數,強擼這種名稱不一樣的情況,如果這個參數被賦值了(下面的supressKey),就用它去讀config而不用傳入 的key。 下面給出咱博客里讀AppSettings的通用代碼: private T TryGetValueFromConfig<T>(Func<string, T> parseFunc, Func<T> defaultTValueFunc, [CallerMemberName]string key = "", string supressKey = "") { try { if (!supressKey.IsNullOrEmptyOrWhiteSpace()) { key = supressKey; } var node = ConfigurationManager.AppSettings[key]; return !string.IsNullOrEmpty(node) ? parseFunc(node) : defaultTValueFunc(); } catch (Exception ex) { Logger.Error(string.Format("Error Reading web.config on AppSettings node: {0}", key), ex); return default(T); } } 現在,就能靈活裝逼了,給幾個例子: string類型,屬性名和key不一樣,默認值「FileSystemImageProvider」: public string PostImageProvider { get { return TryGetValueFromConfig(_ => _, () => "FileSystemImageProvider", supressKey: "ImageProvider"); } } bool類型,默認值想要true public bool { get { return TryGetValueFromConfig(bool.Parse, () => true); } } int類型,默認值為20 public int { get { return TryGetValueFromConfig(int.Parse, () => 20); } }
③ 求「把實物抽象化」之類的創新思維方法,越多越好,能給地址最好。
你把實物的照片形象圖形化,把其中的元素打散,再重新組合。
④ 我們的專家都喜歡將簡單的事情復雜化,將具體的東西抽象化,搞得好像他們知識淵博似的……
那麼多進步的東西,好像只要這樣做就能夠進步似的...其實事情並不像想像得那麼簡單。你進步別人也進步,...從具體到抽象,從特殊到一般,在知識的廣度和深度上也屬一種超越。
⑤ 抽象文化該何去何從
抽象文化不會衰落,但可能只會零零碎碎地出現在某些地方了。
⑥ 舉例如何使抽象理念或情緒視覺化
最終解說詞還需根據畫面實際進行修改,而且畫面編輯的一個重要方面是必須考慮如何使抽象理念或情緒視覺化,也就是說如何以最吻合的畫面形象形象組合完成意義情緒的表達
⑦ 把具體的東西抽象化表現有幾種形式
具體的東西用文字抽象化表達的方式:
1.
諧音引申。把具體的東西,在名稱諧音的其它領域,找到與此物品某特徵相關或詼諧或憎惡或其它能宣洩情感的其它名稱。比如:iphone,戲稱為「愛瘋」。
2.
主要特徵著重表達。把具體的東西外表或內在的主要易識別特徵抽離出來作為代名詞來表述。比如,iphone5金色外殼款,土豪金。
3.
主要功能用途表述。把物品的主要功能或易識別用途剝離出來冠以特定稱謂。比如,某些沒什麼價值...
⑧ 錢櫃市場營銷案例分析
錢櫃KTV經營中有形化服務營銷策略的實施
在我國,KTV發展迅速,現在較為常見的大型KTV像錢櫃、好樂迪這類量販式KTV,音響設備好,酒吧,迪廳,保健,洗浴等一條龍。量販式KTV由於更加符合商務與娛樂消費的習慣,逐漸成為KTV行業的主流。其實KTV經營中服務本質上則是無形的、抽象的、這樣對KTV營銷不力,那麼在KTV營銷過程中如何實施有形化服務營銷策略呢?本文將運用服務營銷的相關理論就以上問題討論相應的營銷方式。
關鍵字:KTV經營 服務營銷 策略實施
一、使KTV營銷環境有形化 KTV營銷環境包括KTV的外部環境如:周圍環境、建築外觀、建築外觀,KTV的內部設施如:內部裝潢、衛生狀況、 包間布局、 安全設施、 隔音效果等。比方說KTV位置的選擇以及門面和停車場等周圍環境盡可能的去給客人提供一些有形提示幫助客人了解我們KTV並且由此促進KTV營銷。
二、努力營造KTV營銷知名品牌 其實知名品牌也是一種有形線索,這些能夠反映KTV的服務質量和水準,這樣會在客人心目中樹立起一個有力清晰而且准確的KTV服務形象。對於企業的可持續性發展而言,樹立品牌至關重要。尤其是對於KTV行業,硬體設施已經不相上下,品牌效應在人們選擇KTV的時候特別關鍵。
樹立品牌可以從如下幾個方面著手:
1、KTV的VI系統。國內的KTV林林總總,要想在眾多競爭者中脫穎而出,必須要首先有一套自己的VI系統。視覺識別(VI)是以企業標志、標准字體、標准色彩為核心展開的完整、體系的視覺傳達體系,是將企業理念、文化特質、服務內容、企業規范等抽象語意轉換為具體符號的概念,塑造出獨特的企業形象。大到店面裝修,小到服務員的胸牌、話筒,都應該遵循VI的設計,統一又表現出KTV獨特的個性。
2、KTV的企業文化。這種企業文化不僅僅用於員工的管理,也可以感染消費者。KTV的品牌故事、經營理念等如果設計得當、宣傳到位,將會給人們從心理上對KTV產生美好的聯想與積極的感受。
3、KTV的服務與口碑。KTV作為服務行業,服務非常重要。不僅僅要從服務種類上著手,還需要在服務人員素質培養上下功夫。這里的素質培養不但要包括待人接物、處理問題的能力培養,而且還應該包括流行時尚、歌唱技巧、客戶心理等專業技能的培養。良好的服務水平配合KTV的硬體設施才能夠給KTV帶來優良的口碑,從而吸引更多的客戶。
提升KTV知名度可以採用的方法有:
1. 優惠促銷。根據市場價格,在價格方面給予一定程度的優惠,同時派人在人流
比較大的地區派發傳單,宣傳優惠項目。
2. 活動宣傳。根據KTV資金實力,可以考慮選擇不同的活動宣傳方案:A.選擇
當地熱門節目贊助。B.與新聞媒體聯合,炒作KTV新聞,比如KTV開出天價招高素質服務員等。C.舉辦娛樂活動,比如歌王爭霸等。D.與其他企業聯合,推出合作卡。比如與餐飲聯合,推出聯名消費卡。
三、開展KTV服務承諾活動
KTV服務承諾是指KTV場所通過海報以及宣傳單等等溝通方式向客人預示KTV場所的服務質量以及效果,並且對這些予以一定的保證,聽得到的因此也是一種有形化營銷手段。
⑨ 如何把問題抽象化
當我們碰到無法避免的討厭問題時,常會感到悶悶不樂,或惶恐不安。
這時候,有位名叫哈牙卡的「意義論」的學者指示我們一種絕妙的方法,那就是運用「抽象階梯」,或「袖手旁觀」的方式來排除苦悶。
換句話說,任何具體的個別東西,一定具有更高的抽象化概念。例如家裡的花貓是雌貓,進一步是貓,再一步則屬於貓類,哺乳類,脊椎動物,這樣不斷往上爬升,原來的事物看起來就會變得很抽象了。
例如你有一位令人討厭的主管A,那你也可用花貓的方式,將他加以抽象化,即用A——壓迫者——哺乳類——脊椎動物——動物——生物等抽象梯次,逐漸將他那種討厭的氣息驅除殆盡,造成「袖手旁觀」的習慣,這時候,把A主管看成脊椎動物,或生物,總比把A看成A的情況更使人心平氣和。如果碰到討厭的工作,你也可以馬上想到勞動是為了什麼——獲取吃飯資本——為了生活,懂得這樣聯想,也能使你心平氣和地做事去。不善言辭的人,在苦惱的時候也可這樣聯想:情報——傳遞——內容,如懂得利用抽象的階梯,就能消除不安的具體性。