參考了 電腦王阿達分享的 [Android]LINE推出最新功能,讓您備份/還原聊天紀錄對話訊息
此版本在我手機(Device:HTC M9+ Line v7.1.1)並不work
於是參考了ASUS論壇,https://www.asus.com/zentalk/tw/thread-164392-1-1.html,走到降版的步驟就出現錯誤訊息[INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE]
終於翻到論壇的第十頁,貌似找到解答了,我把成功的command貼出:
First,一定要先依照阿達的分享將手機與電腦連結。
Second,就照ASUS論壇把ADB搞定吧~
【原手機步驟】
1. adb devices
--> 出現以連線的手機序號
2. adb shell content query --uri content://settings/secure --where "name=\'android_id\'"
-->Row: 0 _id=25, name=android_id, value=xxxxxxxxxxxxxxxx(請好好保存android_id)
3. adb shell pm uninstall -k jp.naver.line.android
-->Success
(移除原手機的line ?! 此時我的手機 ES應用分析器跑出來問要不要刪除line的相關檔案,別理他)
4. adb push LINEold.apk /sdcard/
--> 複製舊版apk到手機
5. adb shell pm install /sdcard/LINEold.apk
-->Success (Line降版,裝好後不要開)
6. adb backup -apk jp.naver.line.android
-->Now unlock your device and confirm the backup operation.
(手機畫面點"備份我的資料",等一下直接檢查電腦檔案夾的backup.ab檔案大小,1K就是失敗了,至少要來個10MB)
【新手機步驟(先移除任何版本LINE)】
1. adb install LINEold.apk
2. adb shell settings put secure android_id xxxxxxxxxxxxxxxx(第2步驟取的android_id共16碼)
3. adb restore backup.ab
(手機畫面點"還原我的資料")
馬上開新手機的Line絕對是不work的,此時不用擔心,到Play Store更新Line版本。
2017年3月6日 星期一
2011年8月24日 星期三
[ASP.NET] Import Excel with linqtoexcel
上篇文章比較了以NPOI and EPPlus匯出Excel的效能,接著就是要介紹Import Excel了,雖然NPOI也可以Import Excel2003/2007,但我認識了linqtoexcel後,就毅然決然的選用LinqToExcel為我的Import利器了。
LinqToExcel為32位元的dll,所以如果在64位元遇到complier的問題時,請參閱轉載自網路的排除方法。 還有注意事項,轉載自官網:
接著<Company>則是有一個名叫Company的Class與Excel 的欄位都一模一樣, 這樣檔案就會乖乖的資料吃到Company的集合物件, 並可以用linq的手法去做資料篩選,一整個就是美妙。
不過如果Excel欄位與Class無法設定成一樣的,那還是有法可解:
LinqToExcel為32位元的dll,所以如果在64位元遇到complier的問題時,請參閱轉載自網路的排除方法。 還有注意事項,轉載自官網:
Target x86 Platform Linq to Excel requires any projects referencing it to be built against the x86 platform target. See this link for detailed information on setting the platform target to x86. Note this only applies to compiling the project on x64 computers.檢而言之,只能跑在x64,跟.Net framework 3.5。 接著用官網的sample code介紹這好用的工具。
.Net 4 When using Linq to Excel in a .Net 4 app, make sure to change the target framework from the default client profile to the full .Net 4 framework. (Properties -> Application -> Target framework) The client profile cannot compile .Net 3.5 dlls.
var excel = new ExcelQueryFactory("excelFileName"); var oldCompanies = from c in repo.Worksheet首先讀取名字為"US Companies"的工作表,如果無法確定上傳的檔案的名稱,最好傳入index即可。("US Companies") //worksheet name = 'US Companies' where c.LaunchDate < new DateTime(1900, 0, 0) select c;
接著<Company>則是有一個名叫Company的Class與Excel 的欄位都一模一樣, 這樣檔案就會乖乖的資料吃到Company的集合物件, 並可以用linq的手法去做資料篩選,一整個就是美妙。
不過如果Excel欄位與Class無法設定成一樣的,那還是有法可解:
var excel = new ExcelQueryFactory("excelFileName"); excel.AddMapping使用AddMapping去指定欄位間的關係,Excel欄位 "Providence"去指定對應到Company的State的欄位。(x => x.State, "Providence"); //maps the "State" property to the "Providence" column var indianaCompanies = from c in excel.Worksheet () where c.State == "IN" && c.Employees > 500 select c;
2011年7月26日 星期二
[ASP.NET] Export Excel with NPOI and EPPlus
NPOI:使用於(Excel2003及之前的版本),可寫出Excel2003(xls),可讀Excel2003 (xls)/ Excel2007(xlsx)
官網:
EPPlus:EPPlus is a .net library that reads and writes Excel 2007/2010 files using the Open Office Xml format (xlsx).
官網:http://epplus.codeplex.com/
System Requirements:
NPOI vs. EPPlus:比較匯出大量資料的時間
官網:
- http://npoi.codeplex.com/ (~1.2.3)
- http://code.google.com/p/npoi/ (1.2.4)
- VS2005 or VS2008 with .NET 2.0 Runtime (SP1)
- vs2003 with .NET 1.1
- medium trust environment in ASP.NET
EPPlus:EPPlus is a .net library that reads and writes Excel 2007/2010 files using the Open Office Xml format (xlsx).
官網:http://epplus.codeplex.com/
System Requirements:
- .Net Framwork 3.5 or higher
NPOI vs. EPPlus:比較匯出大量資料的時間
2011年7月19日 星期二
[ASP.NET] 解決Oracle IN clause 超過1000個參數
不管在SQL Plus或其他Tool,甚至ASP.NET中,只要出現以下錯誤訊息:
ORA-01795 maximum number of expressions in a list is 1000
不用懷疑,就是你的SQL中,IN的參數超過1000個了。
最快的解決方法有兩種:
1. OR
2. Union
OR Sample如下:
Union Sample如下:
在ASP.NET中,Sample如下(使用OR):
ORA-01795 maximum number of expressions in a list is 1000
不用懷疑,就是你的SQL中,IN的參數超過1000個了。
最快的解決方法有兩種:
1. OR
2. Union
OR Sample如下:
select * from TestTable where ID in (1,2,3,4,...,1000) union all select * from TestTable where ID in (1001,1002,...)
Union Sample如下:
select * from TestTable where ID in (1,2,3,4,...,1000) or ID in (1001,1002,...,2000)
在ASP.NET中,Sample如下(使用OR):
strSQL = "select * from TestTable where {0} "; int limitCount = 900; double dLoopCycle = (IDs.Count / limitCount); int loopCycle = Convert.ToInt32(Math.Ceiling(dLoopCycle)); loopCycle = loopCycle == 0 ? 1 : loopCycle; string strIDs = string.Empty; string strTempSQL = string.Empty; //more than 1000 parameter would raise error for (int i = 0; i < loopCycle; i++) { int rangeIndex = (i * limitCount); ListtempList = IDs.GetRange(rangeIndex, Math.Min(limitCount, IDs.Count - rangeIndex)); strIDs = string.Join(",", tempList.ToArray()); if (i == 0) strTempSQL = string.Format("ID in ({0})", strIDs); else strTempSQL += string.Format("or ID in ({0}) ", strIDs); } strSQL = string.Format(strSQL, strTempSQL);
[ASP.NET] 解決Linq Contain 參數超過2100的錯誤
在Linq使用Contain時,必須注意參數的個數,限制為2100為上限,錯誤訊息如下:
The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Too many parameters were provided in this RPC request. The maximum is 2100.
表示你踩到IN Parameter最多2100個的限制。
以下為我的解決之道:
另外oracle的SQL也有IN Parameter不得超過1000個的限制,這個就會在後續的文章分享我的解決方式囉~~
[ASP.NET] 解決Oracle IN clause 超過1000個參數
The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Too many parameters were provided in this RPC request. The maximum is 2100.
表示你踩到IN Parameter最多2100個的限制。
以下為我的解決之道:
double dLoopCycle = (containList.Count / 2000); int loopCycle = Convert.ToInt32(Math.Ceiling(dLoopCycle)); loopCycle = loopCycle == 0 ? 1 : loopCycle; Listresult = new List (); List tempResult = new List (); //more than 2100 parameter would raise error for (int i = 0; i < loopCycle; i++) { int rangeIndex = (i * 2000); var tempList = containList.GetRange(rangeIndex, Math.Min(2000, containList.Count - rangeIndex)); tempResult = (from r in DataContext.Test where tempList.Contain(r.ID) select r).ToList(); result = result.Union(tempResult ); }
另外oracle的SQL也有IN Parameter不得超過1000個的限制,這個就會在後續的文章分享我的解決方式囉~~
[ASP.NET] 解決Oracle IN clause 超過1000個參數
2011年7月13日 星期三
[ASP.NET] Nlog:記Log必備的好東西
要瞭解Nlog初步認識一定必須先拜讀保哥的的大作,介紹好用函式庫:NLog - Advanced .NET Logging
當然師傅引進門,詳細的設定就是要靠自己啦...
就如保哥所說的,install之後就有完整的API文件跟範例,
其實不外乎只要把 Nlog.config 設定好,就完成大半的工作了!!!
我的設定主要:
1.存成File的部分,七天回滾一次,自動刪除過期的Log,讓Disk不會被擠爆。
2.寄出Mail的部分,集滿五個拉環才寄出,不會一個Message寄發信,讓我的信箱不被塞爆。
首先附上我的Nlog.config
當然師傅引進門,詳細的設定就是要靠自己啦...
就如保哥所說的,install之後就有完整的API文件跟範例,
其實不外乎只要把 Nlog.config 設定好,就完成大半的工作了!!!
我的設定主要:
1.存成File的部分,七天回滾一次,自動刪除過期的Log,讓Disk不會被擠爆。
2.寄出Mail的部分,集滿五個拉環才寄出,不會一個Message寄發信,讓我的信箱不被塞爆。
首先附上我的Nlog.config
2010年12月20日 星期一
[Oracle]Update data from another Table
Web系統不免會有由Excel Upload的資料去更新資料表的需求,當然如果Excel資料一筆一筆的對Table做更新是不符合效益,這將造成對database的transaction過多,而且因為目前需Update的資料表資料量相當大,所以採用的方法如下:
1.Insert data in db temp table from excel data
2.update data from temp table
上述的從Temp table取用資料Update資料表,就切入本篇的主題,可用的方法有三:
1.Update by sub-query
2.Update table view
3.Merge
測試結果:
方法一:140 sec
透過方法二 明顯是效能最佳的解法,但若會被update的bigTable並非符合UK或PK的條件,將會產生"ORA-01779: cannot modify a column which maps to a non-key-preserved table"的錯誤,若你的table不適合建立UK或PK時,可透過hint的方式/*+ BYPASS_UJVC */來忽略UK的檢查。
參考網址:http://blog.csdn.net/yuhua3272004/archive/2008/08/06/2776121.aspx
1.Insert data in db temp table from excel data
2.update data from temp table
上述的從Temp table取用資料Update資料表,就切入本篇的主題,可用的方法有三:
1.Update by sub-query
2.Update table view
3.Merge
方法一:
UPDATE bigTable b SET (col1,col2,col3) = ( SELECT t.col1,t.col2,t.col3 FROM tempTable t WHERE b.col = t.col) where exists( SELECT t.col1,t.col2,t.col3 FROM tempTable t WHERE b.col = t.col);
方法二:
UPDATE ( SELECT b.col1 as old_col1, b.col2 as old_col2, b.col3 as old_col3, t.col1 as new_col1, t.col2 as new_col2, t.col3 as new_col3 FROM bigTable b, tempTable t WHERE b.col = t.col) SET old_col1 = new_col1, old_col2 = new_col2, old_col3 = new_col3;
方法三:
MERGE INTO bigTable b USING (SELECT col1 , col2 , col3 , col tempTable t ) t ON ( b.col = t.col) WHEN matched THEN UPDATE SET old_col1 = new_col1, old_col2 = new_col2, old_col3 = new_col3;
測試結果:
方法一:140 sec
方法二:1 sec
方法三:未測透過方法二 明顯是效能最佳的解法,但若會被update的bigTable並非符合UK或PK的條件,將會產生"ORA-01779: cannot modify a column which maps to a non-key-preserved table"的錯誤,若你的table不適合建立UK或PK時,可透過hint的方式/*+ BYPASS_UJVC */來忽略UK的檢查。
UPDATE ( SELECT /*+ BYPASS_UJVC */ b.col1 as old_col1, b.col2 as old_col2, b.col3 as old_col3, t.col1 as new_col1, t.col2 as new_col2, t.col3 as new_col3 FROM bigTable b, tempTable t WHERE b.col = t.col) SET old_col1 = new_col1, old_col2 = new_col2, old_col3 = new_col3;
參考網址:http://blog.csdn.net/yuhua3272004/archive/2008/08/06/2776121.aspx
訂閱:
文章 (Atom)