今天偶然看電視,看到一個節目正在討論存蓄和退休金的規劃,
提到了"目標提醒法",
這個方法就是把你預計準備的退休金數目,寫在你每天會看到的牆上,
天天提醒自己慢慢去達成這個目標。
要達成這個目標,有以下幾個方法:
1. 記帳 。
2. 作一些投資。
3. 提撥每個月固定薪資為退休金。
受益良多 ~~ :-)
文章分類
.NET 5
.NET Core
.NET FrameWork
3C
工作室佈告欄
心理探討
專案測試
軟體工程
開發流程
Agile
Algorithm
ALM
Android SDK
Angular
AngularJS
Architecture
ASP.NET
ASP.NET Core
Books
Bower
C#
C# (Extensions)
ChatBot
CLOUD
Comic
CSS
Dapper
Design Pattern
DevOps
Django
Docker
Domain Driven Design
Entity framework
EXCEL
Financial Derivatives
Firebase
Flask
Front-end
GIT
GitHub
Golang
GraphQL
Gulp
Identity Server
IIS
javascript
jQuery
Keyboard
L-I-F-E
LetsEncrypt
LINQ
LINUX
MongoDB
Multi-Thread
Nuget
Open Source
Oracle
OS
Performance issue
PostgreSQL
Project Management
Python
RabbitMQ
Redis
Redux
RxJS
SAP TM
Scrum
SEO
Sharepoint
Sql Server
SSRS
Study
Swagger
Team Foundation Server
TensorFlow
Testing
Toolkits
Tricking
Trouble Shooting
UML
Unit Test
Vim
Visual Studio
Visual SVN Server
VSCODE
Vue
Web Api
Web Service
WebStorm
Windows Application
WSL
2012年2月27日 星期一
2012年2月24日 星期五
[ASPNET] 圖片路徑問題
今天遇到一個很囧的問題,
剛上線的網站,因為有套用MasterPage,裡面的ContentPage又分散在各資料夾內,
所以原本用相對路徑語法放上去的圖片,一堆變成肉包。
後來找了網路上這個解法,大部分的圖片都可以正確顯示了,
但是有一些還是必須用 "~/images/xxxx.jpg" 的寫法才可以看到,
浪費了好多時間在顯示這些圖片,天阿 =.=
參考文章
http://www.dotblogs.com.tw/shadow/archive/2011/07/07/31286.aspx
剛上線的網站,因為有套用MasterPage,裡面的ContentPage又分散在各資料夾內,
所以原本用相對路徑語法放上去的圖片,一堆變成肉包。
後來找了網路上這個解法,大部分的圖片都可以正確顯示了,
但是有一些還是必須用 "~/images/xxxx.jpg" 的寫法才可以看到,
浪費了好多時間在顯示這些圖片,天阿 =.=
參考文章
http://www.dotblogs.com.tw/shadow/archive/2011/07/07/31286.aspx
2012年2月17日 星期五
婚禮、家庭、親子、情侶、活動等個人化短片、紀錄片製做(Make ur unique Footage!)
婚禮、家庭、親子、情侶、寵物、旅行、活動等個人化短片、紀錄片製做
(Make Your unique Footage!)
拍完了很多與家人出遊或生活中的影片,懶的整理嗎? 我們替您馬上剪出一個獨具風格、收藏紀念的短片。 讓您上傳Youtube或聚會觀賞,保留您和家人每一段的相處回憶。
您要結婚了嗎? 婚宴上的成長影片,或是新人愛情紀錄,都是雙方和您的家庭最珍貴、最美好的回憶,我們將您和另一半的成長、相識和互相扶持的美麗過程,完整保留在短片裡。
您熱愛跳街舞、武術、或是極限運動? 該讓全世界看看您精彩的表演了!透過快速和慢速剪輯,您的每一個動作,將輕易抓住Facebook或Youtube每一個好友的目光!
馬上提供相片、影片檔及背景音樂,描述您想要的風格和想法,我們給您獨一無二的個人化短片、MV!
備註:
1. 您提供的相片建議畫素至少為1280*768 以上,影片畫素至少為HD(1280*768)或以上。
2. 請勿提供劇烈晃動的影片。
完成影片交付方式:
1. 光碟交付:用郵局掛號(或選擇限時掛號)的方式,寄送到您府上。 此方式需額外收取一筆郵寄費用,不另外收取光碟費用。
2. 網路下載:我們會將您的影片加密後放在非公開的網路空間上,提供您一組密碼和網址供您下載。
確認您取得影片後,將立即刪除網路空間的檔案。
確認您取得影片後,將立即刪除網路空間的檔案。
免責聲明:
1. 您提供的任何檔案,必須為您本人所擁有。請勿使用別人原創作品或非法來源,以免違反著作權 法。
2. 工作室不製做含暴力或色情的題材。
3. 工作室完成的作品請勿任意修改或使用於商業用途。
4. 未經您的允許,我們不會散播您提供的任何檔案或完成的作品。
5. 所有作品會於片尾放上工作室名稱及相關資訊,我們一定會保持畫面的美觀,請您見諒。
6. 製作影片過程中,遇有爭議或是違背以上聲明的案件,工作室有權力停止製做,保證金將不退還, 請您見諒。
參考作品:(請開啟高畫質觀賞)
※活動:文化大學耶誕節社團發糖果活動(2011/12/25製作)
※運動:極限運動慢速播放(2012/01/29製作)
※特效:藍色火焰(2012/01/19製作)
※寵物:兔子哈奇的一天(2012/02/15製作)
※旅行:世界遺產合掌村(2011/07/17製作)
※旅行:台北陽明山(2012/02/12製作)
聯絡方式
The FORCE studio 工作室 (林先生 或叫我JB即可)
MSN (Email) : ppippenkimo@hotmail.com
部落格 http://karatejb.blogspot.com/
MSN (Email) : ppippenkimo@hotmail.com
Facebook 建立中…
2012年2月16日 星期四
[.NET] XML 說明檔建立
範例
/// <summary>呼叫此方法做資料庫連線</summary>
/// <param name="sDataSource">資料庫主機名稱或位址</param>
/// <param name="sCatalog">預設資料庫目錄</param>
/// <param name="sUserId">登入帳號</param>
/// <param name="sPwd">登入密碼</param>
public static bool DBModule_Init(String sDataSource, String sCatalog, String sUserId, String sPwd)
{
//….
}
然後到專案屬性的[建置],把輸出的「XML文件檔案」勾選起來,再建置一次就可以了。
2012年2月13日 星期一
轉換ASP.net程式到4.0...出現的錯誤訊息~
今天測試從framework 2.0升到 4.0的ASP.net網站,
在reload 樹狀結構的時後,跳出一個錯誤訊息:
在reload 樹狀結構的時後,跳出一個錯誤訊息:
型別 'System.Web.UI.ScriptManager' (來自組件 'System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35') 中的方法 'get_EnableCdn' 沒有實作。
查了Google之後,解決的方式是將
web.config中所有的System.Web.Extensions, Version=3.5.0.0全部都改成System.Web.Extensions, Version=4.0.0.0就可以了。
參考文章:
2012年2月4日 星期六
寫ADO.NET程式的小建議
這幾天小弟被要求要去對報表的數字是否正確,其實我心裡是千百個不願意~
一來對數字,我認為是USER的職責,
二來是報表的程式,註解少到用手指頭都算得出來,
小弟最討厭看這種不寫註解的程式。
果不其然,當報表數字有問題時,回去看程式的SQL追問題時,因為程式不易閱讀,讓小弟看的很痛苦。 以下是幾點建議。
1. 一個Sql可以完成的事,不必用兩個Sql
比如,我們要去更新表格A的總消費金額欄位(CONSUME_AMT),你會選擇 :
(a) 先下 Select A.CONSUME_AMT from A , 取出總金額到變數X,
然後 X = X+新消費金額, 再 UPDATE A set CONSUME_AMT=X 。
(b) 直接下 UPDATE A set CONSUME_AMT= (CONSUME_AMT+ 新消費金額)
這樣一看很明顯~~當然是選 (b)!!
這支程式很多Insert和Update都是用(a) ... 這樣也算了,但是它還犯了下面這個錯誤...
2. 避免直接拿DataTable.Rows[0][X]來組Sql:
假設我們有多個來源表格: A, B , 要把A, B的某些欄位放到C
第一個Sql : SELECT X, Y, Z ... FROM A
把結果放到 DataTable_A ~
第二個Sql : SELECT S, T, U ... FROM B
把結果放到 DataTable_B ~
然後Insert的Sql寫成這樣 :
String iSql = "INSERT INTO C (col02, col05, col01, ... )" +
"VALUES ( '"+ DataTable_A.Rows[0][15].ToString() +"','" +
DataTable_B.Rows[0][11].ToString() +"','" +
DataTable_B.Rows[0][0].ToString() +"','" +
DataTable_A.Rows[0][10].ToString() +"','" +
... );
好的,我們現在發現表格C的某個欄位有問題,我們要回去找來源的資料,
問題來了,我們會先去找iSql,找出對應的欄位值是 DataTable_A.Rows[0][10].ToString() ,
然後我們再回到 第一個Sql,開始去找這第十個欄位是哪一個A的欄位!!!
如果沒有整理好的DB schema,會超級浪費時間!!
如果多寫幾行程式碼:
DataRow dr_A = DataTable_A.Rows[0];
String sC_COL_01 = dr_A["X"].ToString();
String sC_COL_02 = dr_A["Y"].ToString();
....
String iSql = "INSERT INTO C (col02, col05, col01, ... )" +
"VALUES ( '"+ sC_COL_02 +"','" +
sC_COL_05 +"','" +
sC_COL_01 +"','" +
... );
要找C的某欄位,可以馬上找到對應的欄位值為 sC_COL_XX,
由sC_COL_XX是不是很快可以知道是從哪一個表格的哪一個欄位帶過來的嗎?
是不是節省了很多時間呢?
而且sC_COL_XX這些變數,都可以重複再使用~~
(待續...)
2012年2月1日 星期三
[Oracle] Select SQL Tuning 查詢效能調整(轉錄)
轉錄自:http://tomkuo139.blogspot.com/2009/08/oracle-select-sql-tuning.html
1. 建立 Index Key
2. Where 條件中, 是否用函數
3. Where 條件中, 是否使用 In / Not In / Exists
... 更多請參考原文
1. 建立 Index Key
2. Where 條件中, 是否用函數
3. Where 條件中, 是否使用 In / Not In / Exists
... 更多請參考原文
[Sql Server] MERGE語法教學
MERGE語句是Oracle9i新增的語法,用來合併UPDATE和INSERT語句。
通過MERGE語句,根據一張表或子查詢的連接條件對另外一張表進行查詢,
連接條件匹配上的進行UPDATE,無法匹配的執行INSERT。
這個語法僅需要一次全表掃描就完成了全部工作,執行效率要高於INSERT+UPDATE。
通過MERGE語句,根據一張表或子查詢的連接條件對另外一張表進行查詢,
連接條件匹配上的進行UPDATE,無法匹配的執行INSERT。
這個語法僅需要一次全表掃描就完成了全部工作,執行效率要高於INSERT+UPDATE。
PS. 也適用於Microsoft Sql Server 2008以上版本
範例:
兩個表格JB_BUYLIST_T(購物清單), JB_LSTBUY_D(紀錄最後一次買的東西)
我們現在要做的事情是…
抓出每個人購物清單中最後一次買的東西,然後把它更新或新增到JB_LSTBUY_D這邊。
Step1.建立表格
/*購物清單*/
CREATE TABLE JB_BUYLIST_T
(
ID VARCHAR(10),
ITEM VARCHAR(20),
BUY_TIME VARCHAR(8)
);
/*紀錄最後一次買的東西*/
CREATE TABLE JB_LSTBUY_D
(
ID VARCHAR(10),
LST_BUY_ITEM VARCHAR(20)
);
Step2.先新增三筆購物清單
INSERT INTO JB_BUYLIST_T VALUES('JB','雜誌','20110701');
INSERT INTO JB_BUYLIST_T VALUES('JB','飯糰','20110703');
INSERT INTO JB_BUYLIST_T VALUES('D12','便當','20110702');
Step3. 執行MERGE語法
MERGE INTO JB_LSTBUY_D a USING
(
SELECT ID,ITEM
FROM
(
SELECT
RANK() OVER (PARTITION BY ID ORDER BY BUY_TIME DESC) as RNK,
ID,
ITEM
FROM JB_BUYLIST_T
) X
WHERE RNK=1
) b
ON
(
a.ID = b.ID -- AND ... 如果還有其它條件
)
WHEN MATCHED THEN UPDATE SET a.LST_BUY_ITEM = b.ITEM
WHEN NOT MATCHED THEN INSERT VALUES (b.ID, b.ITEM);
PS. b裡面是利用RANK()挑出每人最後一筆購物品。
藍色→目標表格
綠色→來源表格
紅色→固定寫法
結果成功新增兩筆資料到 JB_LSTBUY_D :
Step4. 我們接下來試看看能不能同時做更新和新增…
INSERT INTO JB_BUYLIST_T VALUES('JB','飲料','20110705');
INSERT INTO JB_BUYLIST_T VALUES('D12','飲料','20110705');
INSERT INTO JB_BUYLIST_T VALUES('YOYO','飲料','20110705');
目前清單如下圖
Step5. 再執行步驟3的Merge語法,結果如下 (成功更新原本的兩筆資料 和 新增一筆資料):
訂閱:
文章 (Atom)