名 稱
標 題
內 文
附加圖檔[] []
  • 可附加圖檔類型:GIF, JPG, JPEG, PNG, WEBM,瀏覽器才能正常附加圖檔
  • 附加圖檔最大上傳資料量為 3072 KB。
  • 當檔案超過寬 250 像素、高 250 像素時會自動縮小尺寸顯示
  • 目前附加圖檔使用量大小: 151342 KB / 500000 KB
  • 回覆時程式碼縮排會被trim消掉,請善用[code][/code]標色或貼到ideone等網站
  • LaTeX記法可以用「$$」或「\( \)」包起來,例如「$\sum_{k=1}^{k=n} k^2 = \frac{n(n+1)(n+2)}{6}$」
  • 投稿時請點擊畫像認證後,再按下 [送出] 按鈕提交。
  • 鬧板、攻擊性發言、煽動性發言請無視(回應者也無視),並使用del或在貓管理部向管理員回報。
  • 新介面尚處於測試階段,如果有任何問題可以向管理員或於程設交流版反映。

題名一覽
12935: 如何連localhost比較快? (5)12879: xcode autocomplete (0)
12932: Python正則表達式問題 (6)12878: xcode autocomplete (0)
12931: objective-c與unity的連動 (0)12877: 無題 (3)
12928: 無題 (2)12874: 想求可能的關鍵字 (2)
12918: 無題 (8)12863: 程式crash (6)
12898: 關於2的64次方 (16)12862: beautifulsoup問題 (2)
12896: 無題 (0)12853: 長時間登入驗證? (8)
12890: JS的recursion問題 (5)12852: 請問QR+3D動畫 有比較方便網站嗎? (0)
12883: python 有pip, C++有甚麼類似的? (5)12849: 通常會如何建立Go的C module? (2)
12880: 自動調整大小的iframe (1)12835: IIS上呼叫另一個程式執行轉PDF動作 (13)
檔名:1543479416349.jpg-(147 KB, 719x1024)
147 KB
Python正則表達式問題無名18/11/29(四)16:16:56 ID:JDkgEQXkNo.12932[回應]
請問島民
我想用regular expression判斷輸入字串格式符合「數字」與「數字+數字」
例如 r'2 3 5+1 7+3 8 11+2 13' 就符合規則。

而我設計的pattern如下:
r'\d+(\+\d+)?'

用python re.findall()預測結果應該是:
['2', '3', '5+1', '7+3', '8', '11+2', '13']

實際執行的結果卻是:
['', '', '+1', '+3', '', '+2', '']

總樣本數是正確的,但卻出現一堆empty match
這到底是怎麼回事呢?
無名18/11/29(四)21:46:36 ID:kPyZHkWsNo.12933
括號
無名18/11/30(五)00:04:50 ID:6Wnt2eTINo.12934
\s+
是不是少了空白字元?
看起來你是用空白來分隔數字的
無名18/12/04(二)18:20:26 ID:WkZWXAUwNo.12940
>>12932
我照你打的pattern去濾
結果跟你的預測結果一樣啊
只是我是用C++跑的
無名18/12/06(四)01:51:41 ID:bCrUtwIUNo.12942
https://regex101.com/
用這個測試也符合你的預期

你是不是特別抓了Group1的資料
無名18/12/09(日)01:04:02 ID:N/xpKSckNo.12943
我是原PO
我使用python re.findall(rgex,string) 來抓出字串裡的各個子字串:
'2 3 5+1 7+3 8 11+2 13'

然後我嘗試了以下幾個pattern
r'\d+(\+\d+)?'
r'\d+(\+\d+){0,1}'
r'\d+(\+\d+|)'

結果都是:
['', '', '+1', '+3', '', '+2', '']

但是,當我用了以下的pattern後:
r'\d+\+\d+|\d+'
r'\d+(?:\+\d+|)'

不知道為什麼,結果就如同預期的給我分出這樣的結果:
['2', '3', '5+1', '7+3', '8', '11+2', '13']

目前變成搞不懂上面pattern抓字只抓小括弧裡面字串的目的了
無名18/12/09(日)13:29:53 ID:H9CPYz9kNo.12944

檔名:1543543505764.jpg-(490 KB, 1920x1080)
490 KB
如何連localhost比較快?無名18/11/30(五)10:05:05 ID:0N6.bC2sNo.12935[回應]
本人是寫網頁的。
常在用Localhost測試。但是前陣子聽聞localhost似乎是眾多連線方式中最慢的
一種,突發奇想來問一下各種連自己電腦上建的測試站的方式誰最快?
雖然實際上沒有感覺(還比較常拿來多開帳號),但還是想問理論上誰會是最快的。

1. localhost
2. 127.0.0.1
3. 內網ip
無名18/11/30(五)15:26:56 ID:FwkGuL3ENo.12936
我猜啦
內網IP會先走到路由器再回來,比其他兩個慢很多
localhost跟127.0.0.1都一樣直接回頭
硬要說的話localhost要先經過域名解析才會變成127.0.0.1,所以會比直接用127.0.0.1慢一點點
但也只是慢幾個CPU時脈(億分之一秒)而已

我自己是都用127.0.0.1
無名18/11/30(五)22:49:47 ID:KhQ/5rwYNo.12937
沒有差別
無名18/11/30(五)23:21:23 ID:A5JxE3IANo.12938
你確定不是你本機的伺服器環境慢嗎
無名18/12/01(六)12:20:35 ID:ioFQu9poNo.12939
>>12938

都很快,只是好奇
無名18/12/05(三)00:19:14 ID:Ao.6Bh8UNo.12941
弄個簡單的server
用 localhost 跟 127.0.0.1
各別測量打個幾千次的時間就可以知道了

如果只是聽什麼就信什麼
還是別寫程式好

objective-c與unity的連動無名18/11/20(二)10:04:17 ID:aEVSApxMNo.12931[回應]
最近在寫將objective-c的東西掛到unity裡面的東西
個人試著參考了這份教學https://www.slideshare.net/j796160836/unity-ios-plugin
並使用了裡面提供的測試碼https://github.com/j796160836/Unity-IOSPlugins
但是實際輸出後,卻一直炸掉
查了一下發現unity端call .mm檔的function時,送的參數,都變成null了
請問這是什麼原因造成的...

無題無名18/11/06(二)10:03:16 ID:yYj5EwpMNo.12928[回應]
想請教一下
要怎麼弄影片網
如果我有大量的影片
不存到Youtube應該存到哪裡?
另外我找到到ts檔是不是比mp4好?
無名18/11/06(二)16:26:26 ID:WP2G1dhUNo.12929
>>要怎麼弄影片網
租一個伺服器
放你的影片
寫一個網頁
加入撥放影片的語法

>>不存到Youtube應該存到哪裡?
為什麼不放youtube?
幼幼還是盜版還是私人影片?

>>另外我找到到ts檔是不是比mp4好?
你自己比對容量跟畫質啊
無名18/11/08(四)01:50:07 ID:b12vUoeINo.12930
ts和mp4只是容器
好不好取決於編碼格式&碼率

檔名:1540981044824.png-(37 KB, 757x788)
37 KB
無題無名18/10/31(三)18:17:24 ID:92Fj97HINo.12918[回應]
各位好 最近在準備面試,有一些問題想請教各位

1.我打算面試asp.net mvc相關的職缺
目前要把asp.net mvc + html5 + CSS(bootstrap)
+ javascript (react.js)讀熟+實作作品

對演算法,和資料結構這方面有些疑惑
不知道要準備到什麼程度,才能通過面試
目前是打算準備

演算法
插入,快速,堆積,合併排序法

資料結構
Stack,Queue,Linked List
,Tree,Graph,Heap

會看這兩個網站複習
http://www.csie.ntnu.edu.tw/~u91029/
http://alrightchiu.github.io/SecondRound/

不知道還有哪些需要補足的地方,
需要去解leetcode的題目嗎?
想請各位給我一點建議

2.
複習快速排序法的時候遇到一個問題

C# Sharp Searching and Sorting Algorithm Exercises: Quick sort
http://0rz.tw/aED9I

這篇文章中的快速排序法,我實在弄不懂他如何實作的
執行結果是正確的,可是程式碼的部分有點無法理解

其他網站(演算法筆記,SecondRound)的快速排序法排序法
都還算能理解

第一篇文章的程式碼 Pivot跟Left重疊了,而且Pivot會跟Right交換
可是其他人實作的程式碼好像都沒有重疊

想請能理解程式碼的島民給我一點思路,我有在紙上實作過了,可是還是弄不太懂
薪水小偷18/11/01(四)17:07:04 ID:VDIh4JWcNo.12920
上班做得有點卡彈,來試著解釋看看作法。

其實圖片有一點誤導,讓我們一步一步來看。

開頭的 if 判斷只是確認 arr 的所有元素都會跑過一遍,所以跳過。

Partition 函式的作用是將比 pivot 小的元素留在左邊,比較大的留在右邊,全部元素跑過一遍後會回傳分割點的 index ,由於 if 判斷會讓 right 停留在最後一個比 pivot 小的元素上, arr[right+1] 一定會大於 pivot ,故 right 就是分割點 index 。

然而原始的函式裡有一段意義不明的判斷:
if (arr[left] == arr[right]) return right;


原以為是要處理同樣元素,但同元素出現的話這個演算法會出錯,所以⋯⋯坐等其他高手解釋。

這邊圖片有誤導的點在於,你會以為 51 只有在最後才會換,其實一開始就不斷切換了,直到兩邊都分好(如圖最終結果)。之後就是很單純的分治法,對 arr.L 與 arr.R 重跑一次上面的流程,最終你就會得到排好的 arr 。
無名18/11/02(五)18:40:46 ID:fWOoOhvQNo.12921
>>12920
非常感謝您的幫忙
看了您的敘述我終於理解了
不過我有一個疑問
這篇文章中的 pivot在 Partition函式中
因為跟 Left同一位置,所以跟 Right會一直做 Swap的動作

可是我看其他人寫的quicksort,pivot都是在這兩個地方做交換

1.Partition的最後一個步驟 (Partition過程好像都不會移動,像附圖那樣)

2.兩邊都分好->執行分治法
決定 左邊與 右邊的新pivot
對 arr.L 與 arr.R ,再次執行artition函式

QuickSort(arr, front, pivot - 1);
QuickSort(arr, pivot + 1, end);

所以是只要符合quicksort的演算法架構
pivot位置可以在Partition過程中任意移動
(不含最後一個步驟)

對這部分還有一些疑問,不好意思麻煩您了

另外第一個關於面試的問題,希望有島民能給我一些建議
我好怕面試的時候被考到不太擅長的程式解題,演算法,資料結構
想了解一些準備的方向
無名18/11/03(六)07:37:04 ID:V9xDHi4YNo.12922
跟你分享一下MSFT的經驗:

1. 面試通常個別為一小時. 通常分考演算法跟考系統設計.
考演算法基本上就是基本的leetcode原題(簡單/中)或變化題. 本身考題通常都設計在30-40分鐘能解出來的程度. 之後follow up 再繼續加要求.

有些基本的題目你也要會就是了. 總之你一直刷題這些都會知道.
比如說 k-th largest/smallest element in the array. 要用sorting還是 heap解?優缺點? 複雜度? 這問題我當初在MSFT, AMAZON...面試都被問過, 我自己有時也用這個問不少人. (通常是考你會不會heap就是了...)

考演算法通常題目會出的模擬兩可. 在寫白板前要問非常清楚面試官的要求, 他期望的是什麼. 在寫白板的時候注意你的命名方式 你寫c#就照微軟的命名方式. 開大寫就大寫 小寫就小寫, 基本上就是 clean code跟SOLID 原則. 這個就是靠經驗了.

最後寫完code, 加分項就是寫test case (edge case/corner case/base case/boundary case). 你test case 有目的的寫是加分 你test case亂寫就是扣分.
無名18/11/03(六)07:40:15 ID:V9xDHi4YNo.12923
>>12922
更正, 考系統設計的題目會出的模擬兩可.
無名18/11/03(六)07:51:18 ID:V9xDHi4YNo.12924
>>12923
忘了講最後一個建議, 也是我認為最重要的建議.
很多人面試被拒之後就放棄了. 其實我再進去之後才知道不少人也在同公司面試跪過不少次的.
面試被拒不要放棄, 哪邊不足就把哪邊補齊. 不斷學習不斷進步, 你會找到你的夢想職位的.
薪水小偷18/11/05(一)14:47:16 ID:KMzlqZDMNo.12925
>>12921

關於你的問題我的不是很明白,你的意思是說其他人的 swap 都是在 partition 與處理好後執行分治法時是嗎?

如果可以能提供一下最後才換的程式碼嗎?想不太出最後才換是怎麼樣。

這個作者的做法,好處在於從頭到尾都只用一個陣列,當然比較不便於理解,不斷切換就是為了確保 pivot (原始的 arr[left] ) 可以在 arr.L 與 arr.R 的正中間。

上面個問結果也回答了:
> 所以是只要符合quicksort的演算法架構
> pivot位置可以在Partition過程中任意移動
> (不含最後一個步驟)
這個部分,與其說任意移動,不如說就是要確保在正中間才不斷轉換。
無名18/11/05(一)21:11:25 ID:8YZA5WTwNo.12926
>>12922
感謝您提供的寶貴建議
最近開始練習leetcode的題目
希望能快點有些成果

>>12925
http://0rz.tw/zmjuB
Comparison Sort: Quick Sort(快速排序法)
我是看這篇文章裡的步驟圖解和程式碼
// C++ code

#include <iostream>
void swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
int Partition(int *arr, int front, int end){
int pivot = arr[end];
int i = front -1;
for (int j = front; j < end; j++) {
if (arr[j] < pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
i++;
swap(&arr[i], &arr[end]);//這裡交換pivot

//「所有比pivot小的數列」的最後一個位置,
//移動到「所有比 pivot大的數列」的第一個位置
return i;
}
void QuickSort(int *arr, int front, int end){
if (front < end) {
int pivot = Partition(arr, front, end);
QuickSort(arr, front, pivot - 1); //這裡決定新的pivot
QuickSort(arr, pivot + 1, end); //這裡決定新的pivot
}
}


我可能表達的不是很好,或是有理解錯誤的地方
感謝您耐心地替我解答

w3resource作者的做法,我現在雖然理解了
可是還是覺得好複雜,可能是我理解力不太好吧
薪水小偷(嗯?)18/11/06(二)01:53:42 ID:yPvtbAe6No.12927
>>12926
喔喔,原來是這樣來做最後交換,學到了。

我想你會困惑的點在於 w3resource 用兩個變數來記錄要交換的 index ( left & right ),但 alrightchiu 只使用 i 。

w3resource 不斷讓 pivot 移動,也就是開始在 left ,交換一次後變 right ,再一次又變回 left ,所以他用了兩個判斷去更改待交換 index 。
// 兩個判斷每次都只跑一個,因為 pivot 一定在 left | right
// 全元素跑完後,最終 left == right ,所以回傳 left 也行
while(arr[left] < pivot) {
left++
}
while(arr[right] > pivot) {
right--
}

w3resource 的 left 與 right 最後都指向換無可換的 pivot ,而 alrightchiu 則是最後直接把 pivot 換到 i ,因為基本是不同概念的做法啦,一時之間難以理解很正常。

檔名:1539538970997.png-(559 KB, 560x720)
559 KB
關於2的64次方無名18/10/15(一)01:42:50 ID:TiVLrbeMNo.12898[回應]
請問有沒有什麼寫法或觀念能讓程式快速跑完2的64次方次呢?
最近碰到了一個題目,要求從1開始接到n再除以2018,求餘數
假如n是7,那麼就是1234567除以2018的餘數
2的64次方>n>0
有回應 6 篇被省略。要閱讀所有回應請按下回應連結。
無名18/10/19(五)16:57:33 ID:96mN/.1QNo.12906
>>12905
你這樣時間會爆掉
有2^64個數字要做,跑到宇宙死亡都還跑不出來

如果這麼簡單就能搞定的話這題不超過10行
但問題就是沒那麼簡單
無名18/10/19(五)20:12:52 ID:4xnmnX7YNo.12907
>>12906
其實這是ID:zmy9Usb2做法的原理
他在此之外提供加速運算的方法:每個周期N(2018)的餘數相同
要再加速可以利用(m*n)%c == ((m%c)*(n%c))%c
記住10^k%2018的結果,加快串接的運算
無名18/10/21(日)04:42:05 ID:d8JXutQMNo.12908
>>12906
感覺可以divide and conquer
每次切兩邊遞迴
應該會快很多
無名18/10/29(一)19:28:28 ID:gVtG2koMNo.12912
原po還在嗎? 這樣應該有O(n)
double n = 2 ^ 64, k = 2018, result = 0;
for (var i = 1; i <= n; i++)
result = (result * (double)(Math.Pow(10, ((double)(i / 10) + 1))) + i) % k;
Console.WriteLine(result);
無名18/10/29(一)20:53:25 ID:CtUVx1hUNo.12913
>>12912
這種code心智正常的人都寫得出來
問題是你一個2^64的for要跑幾年?
這題就算是O(n)也不行,要更低才可以
這題考你的就是怎麼省略,不要一個個算
無名18/10/30(二)14:48:31 ID:xryXzqSQNo.12914
>>12913
不然還能怎麼寫? 你有什麼好方法嗎?(′・ω・‵)
無名18/10/30(二)18:01:17 ID:g4SRRKcQNo.12915
>>12914
所以這題很難啊
不然幹嘛還要討論這麼大一串,第一篇就搞定了

然後我上面已經寫一大篇做法了
雖然很醜很難寫但至少在宇宙毀滅之前跑得完
你寫的答案就是我裡面提到的
>>這個a數字不大,可以用很簡單、耗時短的方式算出來
我沒有把這個細節寫出來,因為這是基本中的基本
連這個簡單解法都想不出來的人根本沒資格挑戰這題
無名18/10/30(二)20:36:42 ID:ZvwYUGxINo.12916
>>12915
目前找出來的加速法沒有到很難寫吧
10^K MOD 2018很好寫就不多說了

假設N=65536
記下(9999-999) / 2018 = 4
和(9999-999) MOD 2018 = 928
4代表1000~9999要做的2018循環次數
928代表要記下100010011002..1927的結果
1000~9999一共計算2018+4+1次
以此類推做下去即可

要稍微加速2018循環計算的話
1000 MOD 2018和1001 MOD 2018其實只差1
而1000 MOD 2018在10^k次時得過答案
所以只要寫個簡單的迴圈就能處理掉了..
無名18/10/31(三)15:03:39 ID:JlE6hQDYNo.12917
>>12912
恩恩 很棒
O(n)只要136年可以跑完
無名18/11/01(四)05:03:28 ID:TCl7dxh6No.12919
>>12912
第一行就錯
double n = 2 ^ 64
這個叫2 xor 64

檔名:1538987787202.jpg-(449 KB, 1024x686)
449 KB
JS的recursion問題無名18/10/08(一)16:36:27 ID:X3LvBOVQNo.12890[回應]
最近公司因為客戶資料不想一筆一筆Key,所以要我
寫一個能夠自動讀取JSON送出API請求的資料。
針對此需求我寫了一個小頁面回應。目前東西都好了但其中
有一部分讓我有點擔心:

一開始是用迴圈JSON每筆資料送一個ajax,但是發現這樣伺服器會受不了。
所以後來改成如下寫法:

  var successCount=0;
var datas=[{},{},{}]//一堆資料,大概三十到五十個
function upload_data(index){
$.ajax({
"data":data[index]
"success":onsuccess,
"error":onerror
});
function onsuccess(){
successCount+=1;
//更新畫面顯示
if(index+1 <datas.length){
upload_data(index+1);
}
}

function onerror(){
if(index+1 <datas.length){
upload_data(index+1);
}
}


}


想問這樣的寫法是否會構成 recursion ? 如果要upload的資料數量增加
到破百迫遷是否會導致stack overflow之類的問題。
無名18/10/09(二)00:19:57 ID:UaeI.PUENo.12892
>>12890
>是否會構成 recursion ?
肯定的

你解決伺服器承受的方式,最主要是一次傳多筆資料,而不是寫了遞迴
既然可以用迴圈的方式跑完全部資料,何必寫遞迴呢?
無名18/10/09(二)10:24:44 ID:tfzWFxcANo.12893
>>你解決伺服器承受的方式,最主要是一次傳多筆資料,而不是寫了遞迴

這主要是寫個小工具讓自己人輕鬆。正常使用情況沒有這項。
也不可能為此去修改伺服器(更何況伺服器軟體是用別人的產品,
想改也沒得改)。

>>既然可以用迴圈的方式跑完全部資料,何必寫遞迴呢?

主要是不知道該如何在迴圈的情況下確保ajax是做完第一個任務再做第二個任務。
沒這樣做的時候一微秒30~50個請求請求送出去直接炸掉。
無名18/10/09(二)16:23:34 ID:jaQJmWHwNo.12894
>>12890
如果用ES6 await語法 + fetch請求
就可以用迴圈並等待一筆資料傳完再傳下一筆
for (var i = 0; i < data.length; i++) {
await fetch(url, {body:JSON.stringify(data[i])});
}
有錯誤要處理的話用try catch包覆
無名18/10/12(五)17:06:48 ID:dYPgj5a2No.12895
>>12894

感謝。

暫時先相信現代電腦不會遞迴個1~200層就死掉。

不過async/fetch之類的東西對我目前的工作環境來說有點太新了。雖然沒有
IE8但是有FieFox ESR31/38的環境要顧。

不考慮相容性的畫是想用Promise來處理。應該也是ok的。
另外如果再 XmlHttpRequest的 onReadyStateChange中看到傳送完成後再次呼
叫 XmlHttpRequest.send是否一樣會構成recursion?
無名18/10/14(日)20:28:51 ID:dgKh2tysNo.12897
>>12895
有舊環境要顧的話可以用babel工具把ES6轉成ES5 + ES6 polyfill

無題無名18/10/13(六)17:19:41 ID:ZXVR2VJ2No.12896[回應]

python 有pip, C++有甚麼類似的?Tid18/10/04(四)17:06:04 ID:RkKZsWdMNo.12883[回應]
請問一下
python有pip可以很方便的管控套件,
C++有甚麼類似的套件管理工具呢?

我本身是在寫python
最近在用 pyqt5 寫 UI
突然想到這個問題
無名18/10/04(四)19:37:39 ID:PDgjwnUgNo.12885
Ubuntu使用者可以apt-get去抓開發套件
Windows使用者沒這麼好命
都是去找有沒有已經build好的library
沒現成的lib就下載source code祈禱可以順利編譯
有支援CMake的專案優先嘗試編譯

專案的成熟度也是良莠不齊
能在標準庫或boost找到的工具優先採用
沒有就去stackoverflow看看其他人推薦的library
或者這種清單也可以參考看看https://github.com/fffaraz/awesome-cpp

比較有野心的專案為了能讓世上絕大部分工程師使用
會故意使用C語言來編寫
所以你也可以先從C語言開始找
https://github.com/aleksandar-todorovic/awesome-c
不過我最近會傾向使用C++11的專案
真的懂C++11的人可以把介面設計到很讚很簡潔
無名18/10/06(六)18:18:16 ID:qvZ5x59UNo.12887
檔名:1538821096060.jpg-(165 KB, 1280x960)
165 KB
無名18/10/06(六)20:04:05 ID:km1bD56ANo.12888
>>12887
微軟這塊做的真用心
這確實有讓C++變的友善點了
以前DevC++也有類似的套件管理機制
只是很快就垮了

不知道哪裡有完整的清單?
我想知道微軟究竟提供了多少lib
無名18/10/08(一)10:38:05 ID:fOWRDP5.No.12889
>>12888
vcpkg search
無名18/10/08(一)17:30:27 ID:Uf8o0kkcNo.12891
>>12889
https://github.com/Microsoft/vcpkg/tree/master/ports
你應該是說這個吧
看了一下覺得是有參考價值
我有在用的lib全都列在上面了
而且似乎是社區愛好者自由加入的
所以連sfgui這樣默默無名的lib也出現了

內容看來是跟CMake相依的
微軟總算肯跟大家配合
而不是玩自己的
這點真的跟以前不一樣了

檔名:1538036197523.jpg-(176 KB, 1920x1080)
176 KB
無題無名18/09/27(四)16:16:37 ID:/YHCZY1cNo.12877[回應]
最近在幫公司寫一隻鴨力測試程式來測試公司的網站。
環境是 C#/WindowsForm。目前開了結構大致如下的
struct來作為統一的回傳。

struct PressureRecord{
public readonly DateTime StartDate;
public readonly DateTime EndDate;
public readonly TimeSpan Elapsed;
public readonly string TestSubject;
public readonly string TestConfig;
public readonly string TestResult;
public readonly string TestResultDetail;
public readonly string Parameters;

public PressureRecord(DateTime startDate,DateTime endDate, string testSubject,string testResult ,string testResultDetail,string parameters) {
StartDate = startDate;
EndDate = endDate;
Elapsed = new TimeSpan(endDate.Ticks - StartDate.Ticks);
TestSubject = testSubject;
Parameters = parameters;
TestResult = testResult;
TestConfig = "";
TestResultDetail = testResultDetail;
}

}



使用情境大致是:


//windows form

private void button1_click(/*沒背起來,省略*/){
for(var data in dataset){
PresureRecord test1=do_test1();//回傳PresureRecord
PresureRecord test2;
if(test1.TestResultDetail=="成功"){
test2=do_test2();
};
//寫log
}

}


目前的問題主要是在TestResultDetail上,本來設計的目的是要用來放傳回來完整回復。但現在發現因為JSON API,要判斷有沒有成功必須先parse一次。
然後前一個JSONAPI回傳的結果又可能會被下一個測試拿去用,重複parse怎麼看都浪費效能。
目前的計畫大致是想TestResultDetail的型別改成 Object,完全由後面的測試程式碼決定要如何cast他

//windows form
PressureRecord pr;
JObject wtever=(JObject) pr.TestResultDetail;


想問一下有沒有其他作法,或是不用用到Object那麼高的class。
無名18/09/29(六)11:57:34 ID:2/l6jgAMNo.12881
你可以用JObject.Parse, Custom Converters ...之類的. 但是你performance應該不會太多的改變...

你可以試看看JsonReader/JsonWriter.

https://www.newtonsoft.com/json/help/html/ReadingWritingJSON.htm
無名18/10/03(三)09:58:15 ID:3f3L9XcwNo.12882
最後決定的做法是 struct維持原樣不動。
用out關鍵字來送出測試的結果。
城市碼大概像這樣:

PressureTestResult testV2(string url,out HtmlDocument doc){
PressureTestResult result=testV1(url);
doc=new HtmlDocument();
doc.LoadHtml(reuslt.detail);
return result;
}

PressureTestResult testV1(string url){
//一堆測試
return new PressureTestResult(xxx,xxx,x,xx) ;

}

無名18/10/15(一)23:56:16 ID:0YtUpyGENo.12903


【刪除文章】[]
刪除用密碼:
第一頁[0] [] [2] [3] [4] [5] [6] [7] [8] [...][29]