雲端服務應該要提供離線作業的能力,而在連線提供時進行同步,主機的備份肯定要很完整,但應該要提供匯出個人備份,理想的話備份的格式要能轉換到其他平台,以免該雲端服務吹熄燈號後等於你的過去也廢了!

至於隱私是很難的問題,我認為所有的操作需求都有一定的技術可以解決,只是雙方是否要拿出值得的成本提供和使用而已,但是隱私則是人的問題,即使有技術就算沒被破解(不可能期待不被破解),但也有可能因為員工的疏失或故意而造成隱私外洩~

離線

要瞭解這股驅動力,要想想離線的時候,這樣是雲端化第一個也是最重要的缺點,如果你沒有持續的網路連接能力,很多事情你就無法達到。看不到電子郵件、無法編輯文件、也無法取回備份等等。

然而谷歌不是已經公佈了離線應用程式的運作嗎?但事實上不然,谷歌提供了應用程式讓你可以離線觀看電子郵件、行事曆與文件,但無法對他們進行變更。對行事曆來說可能不是太大的問題,但是對於文件而言,這就是大問題。同時這些功能也被限定在谷歌的 Chrome 瀏覽器上,無法使用 Firefox 或是 IE 瀏覽器,這也是所謂的綁定。

谷歌也表示將會提供離線編輯,但是這樣一來也將會面對一樣的綁定問題,因為只有Google Doc 可以運作。人們在工作上都想依照客戶的喜好來使用微軟 OfficeOpen Office、或是 Google Doc,而不想被綁定在任何一種方式上。

藍色小惡魔 發表在 痞客邦 留言(0) 人氣()

以下是我整理過去工作經驗較常用的格式,簡化記憶和尋找,並非每個資料庫僅提供這些格式而已...就當作是工具收藏到書籤內,挺好用的!
MS SQL
小惡魔系統設計慣性用法
YYYY-MM-DD (2008-06-26):CONVERT(CHAR(10), GETDATE(), 120)
HH:mm:SS (15:49:34):CONVERT(CHAR(8), GETDATE(), 108)
MM DD YYYY (06 26 2008):CONVERT(CHAR(10), GETDATE(), 100)
MM/DD/YYYY (06/26/2008):CONVERT(CHAR(10), GETDATE(), 101)
MM.DD.YYYY (06.26.2008):CONVERT(CHAR(10), GETDATE(), 102)
DD/MM/YYYY (14/03/2011):CONVERT(CHAR(10), GETDATE(), 103)
DD.MM.YYYY (14.03.2011):CONVERT(CHAR(10), GETDATE(), 104)
DD-MM-YYYY (14-03-2011):CONVERT(CHAR(10), GETDATE(), 105)
DD MM YYYY (14 03 2011):CONVERT(CHAR(10), GETDATE(), 106)
YYYYMMDD (20110314):CONVERT(CHAR(8), GETDATE(), 112)
HH:MM:SS:sss (17:24:30:923):CONVERT(CHAR(12), GETDATE(), 114)
HH:mm:SS (15:49:34):CONVERT(CHAR(10), GETDATE(), 108)

氣爽衣
Sybase
YYYYMMDD (20080626):CONVERT(CHAR(10), GETDATE(), 112)
YYYY/MM/DD (2008/11/24):CONVERT(CHAR(10), GETDATE(), 111)
MM-DD-YYYY (11-24-2008):CONVERT(CHAR(10), GETDATE(), 110)
HH:mm:SS (15:49:34):CONVERT(CHAR(10), GETDATE(), 108)
(轉貼時請加註本行)
引用自:藍色小惡魔SQL 日期時間轉換 (Convert Date Time to string)
http://www.imp.idv.tw/play/forum/viewthread?thread=1372
MySQL
小惡魔系統設計慣性用法
select DATE_FORMAT(now(), '%Y-%m-%d');
select DATE_FORMAT(now(), '%T');

use DATE_FORMAT(date,format)
format 格式如下:
%Y 年 YYYY ex:2011
%y 年 yy ex:11
%a 星期 英文縮寫名稱 ex:Fri
%b 月 英文縮寫名稱 ex:Feb
%M 月 英文全名 ex:February
%c 月 數值 ex:2 (二月)
%m 月 數值(00-12)
%D 日 數值 加英文首碼 ex:3rd, 20th
%d 日 數值 補零 ex:(00-31)
%e 日 數值 補零 ex:(0-31)
%j 一年的第幾天 (001-366)
%r 時間 小時12(hh:mm:ss AM 或 PM)ex:10:05:54 PM
%T 時間 小時24 (hh:mm:ss)
%H 小時24 補零 (00-23)
%h 小時12 補零 (01-12)
%k 小時24 (0-23)
%l 小時12 (1-12)
%i 分鐘 補零 (00-59)
%S 秒(00-59)
%s 秒(00-59)
%f 微秒
%p AM 或 PM
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,與 %X 使用
%v 周 (01-53) 星期一是一周的第一天,與 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,與 %V 使用
%x 年,其中的星期一是周的第一天,4 位,與 %v 使用

藍色小惡魔 發表在 痞客邦 留言(0) 人氣()

laughing
其實有比較簡短的語法 就是 SQL 內定的 SP  寶寶知道 但是寶寶先不說

又臭又長的 只要把有中文說明的部份改成你要的對象

P.S. 完整內容及持續更新版本請連結至原文查看:http://www.imp.idv.tw/play/forum/viewthread?thread=990

藍色小惡魔 發表在 痞客邦 留言(0) 人氣()

這種 以己之矛攻己之盾的方法 真的是很高招,目前小惡魔網站應該還沒有被盯上的價值,不過先留下武功秘笈以備不時之需。
重點說明: 

藍色小惡魔 發表在 痞客邦 留言(0) 人氣()




drop table ICMS30Bak.dbo.JobBak_V2_繳款記錄
select * into ICMS30Bak.dbo.JobBak_V2_繳款記錄 from confer.dbo.V2_繳款記錄
-- 從債協專用更新最新繳款記錄 - vSQL1
insert into confer.dbo.V2_繳款記錄 (cust_idn)
select distinct cust_idn
from confer.dbo.V2_繳款記錄_債協專用 where cust_idn not in (select cust_idn from confer.dbo.V2_繳款記錄)
declare @vSQL1 nvarchar(1000), @vSQL2 nvarchar(1000)
declare @ColumnName varchar(50), @RunDate datetime, @MaxDate datetime, @DateStr char(8)
-- 取得 Table 中以年月設計的欄位最大值 (考慮未來維護的人只知道增加欄位而未修改程式)
select @MaxDate = convert(char(8), convert(int, max(substring(col.name, 8, 4)) + '25') + 19110000)
from sysobjects obj join syscolumns col on obj.id = col.id
where obj.name = 'v2_繳款記錄' and col.name like 'INCOME_%'
set @vSQL1 = 'update V2_繳款記錄 set FIRST_PAY_DATE = V1.FIRST_PAY_DATE'
set @vSQL2 = 'update V2_繳款記錄 set first_in_date = dateadd(day, 15, first_pay_date) where (0=1'
set @RunDate = @MaxDate
while @RunDate >= '2006-02-01' begin
set @ColumnName = 'INCOME_' + convert(char(4), (datepart(year, @RunDate) - 1911) * 100 + datepart(month, @RunDate))
set @vSQL1 = @vSQL1 + ', ' + @ColumnName + ' = V1.' + @ColumnName
set @vSQL2 = @vSQL2 + ' or upper(' + @ColumnName + ') = ''Y'''
set @RunDate = dateadd(month, -1, @RunDate)
continue end
set @vSQL1 = @vSQL1 + ' from V2_繳款記錄 V2 join V2_繳款記錄_債協專用 V1 on V1.CUST_IDN = V2.CUST_IDN'
print @vSQL1
execute sp_executesql @vSQL1
update V2_繳款記錄 set last_in_date = null, first_in_date = null, times = 0
set @vSQL2 = @vSQL2 + ')'
print @vSQL2
execute sp_executesql @vSQL2
set @RunDate = @MaxDate
while @RunDate > '2006-02-01' begin
set @DateStr = convert(char(8), @RunDate, 112)
set @vSQL1 = 'update V2_繳款記錄 set times = times + 1,'
+ ' last_in_date = case when last_in_date is null then ''' + @DateStr + ''' else last_in_date end'
+ ' from V2_繳款記錄 where income_' + convert(char(4), convert(int, substring(@DateStr, 1, 6)) - 191100)
+ ' = ''Y'''
print @vSQL1
execute sp_executesql @vSQL1
set @RunDate = dateadd(month, -1, @RunDate)
continue end

藍色小惡魔 發表在 痞客邦 留言(0) 人氣()

 


declare @vSQL1 nvarchar(1000), @vSQL2 nvarchar(500), @ColumnName varchar(50), @RunDate datetime
-- 取得 Table 中以年月設計的欄位最大值 (考慮未來維護的人只知道增加欄位而未修改程式)
select @RunDate = convert(char(8), convert(int, max(substring(col.name, 8, 4)) + '01') + 19110000)
from sysobjects obj join syscolumns col on obj.id = col.id
where obj.name = 'v2_繳款記錄' and col.name like 'INCOME_%'
set @vSQL1 = 'update V2_繳款記錄 set FIRST_PAY_DATE = V1.FIRST_PAY_DATE'
while @RunDate >= '2006-02-01' begin
set @ColumnName = 'INCOME_' + convert(char(4), (datepart(year, @RunDate) - 1911) * 100 + datepart(month, @RunDate))
set @vSQL1 = @vSQL1 + ', ' + @ColumnName + ' = V1.' + @ColumnName
set @RunDate = dateadd(month, -1, @RunDate)
continue end
set @vSQL1 = @vSQL1 + ' from V2_繳款記錄 V2'
+ ' join V2_繳款記錄_債協專用 V1 on V1.CUST_IDN = V2.CUST_IDN'
execute sp_executesql @vSQL1

藍色小惡魔 發表在 痞客邦 留言(0) 人氣()



 


declare @vSQL nvarchar(500), @ColumnName varchar(50), @RunDate datetime, @DateStr char(8)
set @RunDate = '2007-12-25'
while @RunDate > '2006-02-01' begin
set @DateStr = convert(char(8), @RunDate, 112)
print @DateStr + ' 處理中......'
set @vSQL = 'update V2_繳款記錄 set last_in_date = ''' + @DateStr + ''''
+ ' from V2_繳款記錄 where income_' + convert(char(4), convert(int, substring(@DateStr, 1, 6)) - 191100)
+ ' = ''Y'' and last_in_date is null'
print @vSQL
execute sp_executesql @vSQL
set @RunDate = dateadd(month, -1, @RunDate)
continue end

藍色小惡魔 發表在 痞客邦 留言(0) 人氣()

今天實在對本公司為了讓 User 直接強姦資料庫而用 Excel 白痴法開的 Table
造成本人懶得寫程式 而接手過來貼得拉拉長的 SQL 很不爽
直接上討論區只能用 "欄位" 兩個字當關鍵字 (不得以的 其他太直接的關鍵字找不到文章)
爬文爬了一個小時眼睛有點扭傷 終於找到答案
先提供一個簡單的範例讓大家吸收 - 動態 Table 名稱

藍色小惡魔 發表在 痞客邦 留言(0) 人氣()

MS SQL 教學 
最近有個每個禮拜每天大同小異的 SQL 要執行 的工作 可是星期一到星期五執行的SQL有點小不同
星期一到五:中長放停復催
星期二到四:短放放停復催 (本週不重複發送)
星期一:短放停復催 (以核心主機為准發送)
星期二:協商成功
星期四:協商失敗
以上有些 SQL 內容大同小異 如果要透過 database 設定不同時成的 job 就有兩個討人厭的問題
1. 管理介面中一大堆 job 因為每個星期X執行的不同 最笨的就是依據以上規則 定出 五 組
2. 有些 SQL 幾乎相同 如果有改 還得知道要兩邊一起維護 麻煩
所以...
datediff(day, convert(datetime, '2006-12-03'), getdate()) % 7 = 2 -- 就是星期二
透過以上的作法 就能在同一個規劃範圍內 好好地操作執行的時機了

藍色小惡魔 發表在 痞客邦 留言(0) 人氣()

pig
MS SQL 教學 
剛剛有個  寫了個補 0 的 SQL 問我怎麼寫不出來
主要當然是他沒把數字轉字串所以 SQL 很雞婆會自動轉回數字
其次是他的技巧是 先判斷數字的長度 然後再不斷用 case-when 補字串 '000...'
換句話說 如果最大可能補 10 個 0 他的 SQL 就要寫 10 組 case-when
經過本大師的指導 只要以下這行就搞定了...

藍色小惡魔 發表在 痞客邦 留言(0) 人氣()

MySQL 需要欄位合併的時候是不能用 select 欄位1 + 欄位2 from table 的語法
要使用 CONCAT(欄位或字串1, 欄位或字串2, 欄位或字串3, ...)
我測試的 MySQL 資料庫版本為 5.1
SELECT
CONCAT('交易時間:', T_DATE, '@', T_TIME) as T_DATETIME,
T_DATE,
T_TIME
FROM MyTransaction

要注意的一個原則,當你的欄位或參數有其中一個為 null 則傳回結果即為 null,例如:
SELECT CONCAT('STR1', null, 'STR2')
參考自 http://arrack.pixnet.net/blog/post/24091939

藍色小惡魔 發表在 痞客邦 留言(0) 人氣()

先前歐盟由於不相信甲骨文買了昇陽之後會善待MySQL,因此11月時對此一併購案正式投下反對票。不過近來雙方關係顯然稍有解凍,甲骨文週一對客戶、開發者與MySQL用戶提出十大保證。
甲骨文承諾會比昇陽時期投入更多資金在MySQL的發展,且顧問董事會也會納入MySQL客戶。甲骨文另表示不會要求客戶以付費方式來取得商業MySQL授權的支援,且會提供客戶彈性的支援合約。
此外,它也提及第三方開發者的MySQL儲存引擎授權與著作權議題,承諾會保持MySQL Pluggable Storage Engine Architecture的開放與彈性,且不需商業授權就能使用該儲存引擎APIs。
........
有關甲骨文的完整10大保證可參看這裡
這件事情 Oracle 拖延至此,如果有誠意或者沒有黑心想法,是否早該釋出誠意才對。我想大家的疑慮並非空穴來風,也許... MySQL 會消失在 Oracle 手上!
啊~小惡魔要去哪找到這麼棒又免費的資料庫軟體啊!
ZDNet

藍色小惡魔 發表在 痞客邦 留言(0) 人氣()

1
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。