推 w3c :為啥要用在兩隻程式上呀 .. create的頁面 05/20 01:10
→ w3c :自已就可以用GD產生縮圖,自已決定random值是多少呀 05/20 01:11
→ w3c :如果硬要分兩支程式來做 ~ 我還是會選擇由create頁面 05/20 01:12
→ w3c :產生random值 告訴另一支程式產生圖檔 05/20 01:13
→ w3c :這跟multi-thread有啥關聯呢? QQ 05/20 01:14
→ w3c :我怎麼覺得 我在結帳上做的progressbar還比較像 QQ 05/20 01:15
→ gpmm : w 大,真的算了,這已經是走火入魔混淆亂用了… 05/20 01:15
→ gpmm :從最早一開始就已經是這樣,把各種觀念拉混在一起 05/20 01:15
→ w3c :client的pg-bar 跟另一支程序處理資料的進度同步更新 05/20 01:16
→ gpmm :不相干的理解也可以抓來抓去用 05/20 01:16
→ w3c :gpmm大 我剛是想打住呀 ~ 可是他就在發文了 05/20 01:17
→ w3c :還寫了將近半個小時 XD 05/20 01:17
→ gpmm :由他去吧,我也藉 H 大的文章磨練耐性好段時間了 XD 05/20 01:20
→ gpmm :已經數不清幾次衝動的想回文,卻又想想於是又放下 05/20 01:20
→ gpmm :咦?儼然變成閒話家常? XDD 05/20 01:21
推 w3c :H 大 其實也是熱心的人啦 ~ 就聊聊吧 XD 05/20 01:22
→ HuangJC :你就給我一段 sample code 用單一程式完成吧.. 05/20 01:27
→ HuangJC :另外,大型專案裏,同事丟什麼副程式給你就要用,沒得選 05/20 01:28
→ HuangJC :擇;我會不得已研究前景背景多網頁架構,是 PayPal逼的 05/20 01:28
→ HuangJC :除非我寫結帳時不用 PayPal,否則這架構是非用不可 05/20 01:29
→ HuangJC :搞不好也有高手說 w 兄的 progressbar 不必同步來做 05/20 01:31
→ HuangJC :但如果他和你合作,他就要用這樣的架構,不是嗎? 05/20 01:31
→ HuangJC :寫程式絕對不只一種寫法,但別人有主導權時,也只好跟. 05/20 01:32
推 w3c :SA幹嘛去了 ~ 怎麼會降子分配大型專案呀 05/20 01:33
→ w3c :我說的progressbar 在結帳過程是分好幾個STEP 05/20 01:33
→ HuangJC :另外,我同事有提到,他不想讓密碼值在 POST,GET 間飄 05/20 01:33
→ w3c :在畫面的部份 ~ 還要同時得知結帳過程到哪個STEP 05/20 01:34
→ HuangJC :當然也不能在 HTML source 中飄;所以要藏好 05/20 01:34
→ w3c :...... RANDOM值只能存在一個檔案上 就可議了 05/20 01:34
→ w3c :頁面載入不能賦與一個雜湊值? 存的RANDOM由雜湊值命 05/20 01:35
→ w3c :名嗎? 05/20 01:35
→ w3c :更別說 為啥不能用sessions存? 05/20 01:36
→ HuangJC :其實我們用 DB 做;但講檔案也可以,總之多人註冊不能 05/20 01:36
→ HuangJC :互相覆蓋 05/20 01:36
→ w3c :方法就你說的 有很多種 ~ 甲跟乙配合專案 也不是只有 05/20 01:36
→ w3c :也要有個SA來協調吧 05/20 01:37
→ w3c :那意思一樣呀 ~ 就算存資料庫 不能由雜湊值當索引? 05/20 01:38
→ HuangJC :那個同事應該就是SA的身份了;如果這是決策,只好用了 05/20 01:38
→ w3c :一定要寫在同個欄位上? 05/20 01:38
→ HuangJC :我好奇的是為何要用'叫另個網址'來秀圖搞出這個麻煩 05/20 01:39
→ HuangJC :也許可以用 echo binary的方式直接秀圖? 05/20 01:39
→ w3c :呃 ~ 我看你跟你同事好好協調好了 @@ 05/20 01:40
→ HuangJC :如果說,秀一張圖只有 img src 好用,那當然是另個網址 05/20 01:40
→ HuangJC :沒什麼好協調的,他能寫 SAMPLE 給我學,我提不出別的 05/20 01:40
→ HuangJC :所以..至少他在時間內完成專案了 05/20 01:41
→ w3c :他是懶得存檔 直接用header送出吧 = = 05/20 01:41
→ HuangJC :phpbb 有這段 code,有空我 trace 一下別人的做法好了 05/20 01:42
→ HuangJC :對,有 header,然後再 imagejpeg() 05/20 01:44
→ HuangJC :如果我 img src=tmp file name,而tmp file 產生太慢 05/20 01:45
→ HuangJC :那會不會在 random 的圖示上看到叉燒包? 05/20 01:45
→ HuangJC :所以另一個方法是給圖一個 ID,然後用 js 把圖換掉.. 05/20 01:46
→ HuangJC :這樣或許不會有其他問題;不過他另一個主張很有趣: 05/20 01:47
→ HuangJC :少用 js,因為 debug 困難.他是寫好的深受其害吧.. 05/20 01:47
→ w3c :我 .. 不知道要怎麼回你 ~ 就算是原本的 如果產生縮 05/20 01:50
→ w3c :圖的那支程式 ~ 他timeout掉了 是不是也叉燒包 = = 05/20 01:50
→ HuangJC :那在你腦袋裏怎麼不會時時有兩個排程在競速呢? 05/20 01:51
→ HuangJC :當然是自然而然一直理解並排除這些問題呀 05/20 01:52
→ w3c :..... imagejpeg是不會回值bool值嗎? = = 05/20 01:52
→ w3c :你是沒辦法在一隻程式上 容錯嗎? 05/20 01:52
→ w3c :有錯誤,是不是該例外處理呢? 05/20 01:53
→ w3c :例外處理的方式呢? 05/20 01:54
→ w3c :寫程式時 為啥首重的在流程 05/20 01:54
→ w3c :在編流程的時候 ~ 這些是不是也是考慮的問題之一呢 05/20 01:54
<?php
$TmpFile=Random();
?>
<img src=' <?= $TmpFile ?>
好像可以..這樣一定先執行完 Random 才秀圖
而密碼值要另外傳回,比如 其實傳回 array
array
{
$TmpFile,
$Code
}
然後這個 $Code 放進 session 變數裏,方便重進入這一頁時引用
(很多程式都是重進入同一頁,畢竟比對密碼出錯也還是留在 create 頁面)
※ 編輯: HuangJC 來自: 61.59.179.152 (05/20 01:59)
→ HuangJC :基本上,思路到哪裏就用哪種做法,是儘力完成自己最習 05/20 02:03
→ HuangJC :慣的 style 吧.和很多 RD 合作過的感想..每個人都以 05/20 02:03
→ HuangJC :為把別人的做法換掉會比較順..所以才會爆肝 05/20 02:03
→ HuangJC :因為,想換掉別人做法,就要連別人那份都改寫掉 05/20 02:04
→ w3c :coding久了 都會有自已的作法,把別人的換掉不見得比 05/20 02:04
→ w3c :較麻煩 05/20 02:04
→ w3c :程式 不管怎麼寫 ~ 流程圖 一定最相近 05/20 02:04
→ w3c :溝通不良 ~ 可以畫流程圖做溝通 會比較好 05/20 02:05
→ HuangJC :前同事的確把另一位的換掉,被換掉的氣得離職了.. 05/20 02:05
→ w3c :我去忙了 ~ 掰 @@ 05/20 02:06
→ HuangJC :科科~ 05/20 02:06
→ HuangJC :我不給釣竿,就是不換掉別人的做法;發問者不管提出什 05/20 02:07
→ HuangJC :麼想法,他怎麼想我就怎麼教;所以比如密碼蓋寫的問題 05/20 02:07
→ HuangJC :如果他自己說可以用 session,我就教 session;他自己 05/20 02:08
→ HuangJC :說可以用DB,我就教DB;因為符合自己想法的會比較順 05/20 02:08
→ HuangJC :如果要換掉..我會一路把他像 framework 一樣全換掉 05/20 02:08
推 chrisQQ :是我想的太簡單嘛?不就 $code = random(); 05/20 02:17
→ chrisQQ :$_SESSION['code'] = $code; 在用 $code 去產生圖? 05/20 02:18
→ chrisQQ :SESSION 的用法就是使用者獨立… 依照 PHPSESSID 個 05/20 02:20
→ chrisQQ :別存在該 PHPSESSID 的檔案或是 DB 中不是嘛@@? 05/20 02:20
→ HuangJC :其實我也發信去問他了,為何要把造縮圖放在一個網址中 05/20 02:24
→ HuangJC :不過他的回答也許是'都可以,但程式已經寫好了' 05/20 02:25
→ HuangJC :如果你寫程式沒他快,其實很難質疑他為什麼沒寫到最好 05/20 02:25
推 chrisQQ :呃,我還是不懂問題點在哪,是我太笨嘛= = 這不就 05/20 02:29
→ chrisQQ :這個範例的流程不就是一般大多數的作法,有什麼問題 05/20 02:31
→ chrisQQ :嘛?如果有問題的話我也想知道耶… 我用好久了… 05/20 02:32
→ chrisQQ :圖片產生 timeout/error 就在加一個重新產生的按鈕 05/20 02:33
→ HuangJC :你這個仍然是兩個網頁的做法,所以差別只在 db 改成了 05/20 02:41
→ HuangJC :session 05/20 02:41
→ HuangJC :其實我很愛用 session,我覺得少了 db 的 loading 05/20 02:42
→ HuangJC :一般看別人 sample 可能會忘了它的巧妙處,如果自己有 05/20 02:43
→ HuangJC :新題目拿來寫,才會撞到以為不會出錯的問題.. 05/20 02:43
推 chrisQQ :php 裡面要「輸出圖片」一定要兩個網頁才能做吧? 05/20 02:44
→ chrisQQ :如果你堅持要「一個檔案」,那頂多是寫在同一個檔案 05/20 02:44
→ HuangJC :所以比如,我在產生縮圖的網頁裏加 delay,強迫產生叉 05/20 02:44
→ HuangJC :燒包,你才會發現問題;而我剛提的架構倒可以強制順序 05/20 02:45
→ chrisQQ :然後 img src 的時候引用自己… 呃,我想不到要產生 05/20 02:45
→ HuangJC :因為 PHP 由上往下執行,所以縮圖存檔後才產生 HTML 05/20 02:46
→ chrisQQ :圖,但卻只用單一個網頁來做的解法… 05/20 02:47
→ HuangJC :我還是用兩個檔案寫,只是我強迫了檔案的順序 05/20 02:47
→ HuangJC :反正.. html 裏用 http 調用另一個網址算常見,都要面 05/20 02:48
→ HuangJC :對類似的問題吧;如果你引用的網址還不存在,你怎麼辦 05/20 02:48
→ chrisQQ :產生縮圖的網頁加 delay 那頂多只是圖出來比較慢 05/20 02:48
→ chrisQQ :不然你也可以在圖產生之後在多一個變數來存圖產生好 05/20 02:49
→ chrisQQ :了,這樣註冊的時候先檢查圖到底有沒有產生好~ 05/20 02:49
→ HuangJC :嗯..的確只是圖出來比較慢而已;所以這不是好例子 05/20 02:51
→ chrisQQ :引用的網頁不存在難道有除了「程式寫錯」以外的原因? 05/20 02:52
→ chrisQQ :如果受到外來攻擊而檔案不見,那註冊機制也沒用了 :~ 05/20 02:53
→ HuangJC :同事用 DB 的原因回信了(他也是鬼,還沒睡),因為我們 05/20 02:53
→ HuangJC :是 multi-server 架構;得啦~ 這些 php 都不在同主機 05/20 02:54
→ HuangJC :不同主機不知有沒有 session,不過 DB 肯定好用.. 05/20 02:55
推 chrisQQ :session 可以存在 db... 不過不清楚多主機把 session 05/20 02:56
→ chrisQQ :存在同 db 的情況會是怎樣@@ 05/20 02:57
→ chrisQQ :btw 存 db 也還是要考慮 table lock 的問題… 05/20 02:57
→ chrisQQ :不過私心以為 把 random 和 create php 放不同主機 05/20 02:58
→ chrisQQ :是很奇怪的設計,呃,除非有另外的需求一定要這樣做 05/20 02:59
→ HuangJC :這同事做的是'保留彈性'的設計,而不是非得拆開 05/20 03:00
→ HuangJC :老實說,他矇中的機率還挺高的,只要一次不必大改架構 05/20 03:00
→ HuangJC :那他的彈性就讓人讚賞了 05/20 03:01
→ HuangJC :存 tmp 檔和 session 一樣,不保證跨主機,所以不存檔 05/20 03:10
→ HuangJC :而直接用 header 送出是對的;反而直覺存檔錯了 05/20 03:10
推 w3c :什麼multi-server .. 不管是NFS架構或是cluster 05/20 10:24
→ w3c :session共用 跟tmp檔共用都能做 ... 05/20 10:24
→ w3c :session共用不同網域可以靠memcache 同網域可以靠 05/20 10:25
→ w3c :session savehandler 把session的資料存在DB裡 05/20 10:28
→ w3c :TMP檔案的方式 可以掛載一個共用空間 來存放 .. 05/20 10:29
推 appleboy46 :我怎麼覺得一個簡單問題,可以想的這麼複雜?y 05/20 11:28
推 w3c :(聳肩) 05/20 11:30
→ bobju :你一定是太閒~ (-_-;) 05/20 11:42
→ bobju :言歸正傳.這上google打'captcha',就可以找到不少範例 05/20 11:43
推 w3c :哪裡閒 ... 昨晚我是邊coding邊回的 ... 0.0 05/20 11:43
→ bobju :看看別人是怎麼做的? 當然處理手法不止一種. 05/20 11:43
→ bobju :另外, captcha這東西有很大的商機存在,不過可能需要 05/20 11:48
→ bobju :更高的技術門檻. 05/20 11:49
→ HuangJC :其實問題還是在的,只是不算嚴重 05/20 20:35
前面才想通,第一個網頁內部用 img src 呼叫第二個網頁,不會有叉燒包的問題
但是等待第二個網頁完成卻的確會是問題;只是不嚴重
比如,如果我很在乎連縮圖都不存在,你就根本不能建帳號的話
那麼 OK 鍵應該要 disable
說不嚴重是因為,user 不可能沒看到圖就猜鍵值
就算猜了按 OK,我回應他猜錯了重來也就算了
(真要解的話,就是同步;想得到的利用 js 及變數等等其實充滿同步的精神)
總之,這樣的問題存不存在,多少是有
也能用 multi-thread 的概念來思考
計較的話就不說這個叫 thread 了
比如兩輛車同時從台中到台北,我不是說寫這樣的程式,只是說現實世界這樣一件事
然後這兩輛車為了車隊,為了協調,我可能就借用這樣的字眼了
字眼只是字眼罷了
一個網頁開啟,因為可以一直在內部用 link 向外連
其實這樣的問題比單機板常見很多啊
一個網頁沒開好,停止是小事
開到一半已經開始寫資料留殘渣就是大事
(用在交易,搞不好已付款但無法交貨 XD)
一直有碰到啊..
※ 編輯: HuangJC 來自: 61.219.65.16 (05/20 20:43)
→ knockout :這是怎樣... 你去學FLASH的AS3好了 ~ 觀念不清嘛= = 05/21 14:12
→ HuangJC :這和 AS3 又有什麼關係了.. 05/21 14:18
→ knockout :網頁又不是保持連線的東西 ~ 哪來那麼多程序一直在 05/21 14:23
→ knockout :主機端進行的 05/21 14:23
→ knockout :你不如去學AS3 ~ keep alive的狀況下 ~ 你講的理論才 05/21 14:23
→ knockout :有必要性 05/21 14:24
推 knockout :明明就很簡單的東西 被你講的好像很複雜一樣 05/21 14:25
→ kylekai :樣子H根本沒搞清php session 是幹嘛的... 05/21 18:00
→ kylekai :只想這樣說而已. 觀念清楚就不會這麼多鬼問題... 05/21 18:00
→ HuangJC :這個例子當然是簡單的,不過舉例就是要舉簡單的例 05/21 19:13
→ HuangJC :另外,multi-thread 並沒規定一定有 while loop 05/21 19:13
→ HuangJC :一個 thread 呼叫另一個 thread,它很快結束,也是成立 05/21 19:14
→ HuangJC :對單一快速結束的程序而言,不就是在賭碰撞率嘛 05/21 19:14
說很簡單就來看看更簡單的吧!
int *p=new int; //其值不重要,我只是想交代有這樣一個指標
void del(){
delete p; //我把它刪除
p=new int; //再把它的空間產生
//繼續 use p
}
以上,是很簡單的程式
但如果 p 的值別人有用,就有危險
當 p 被刪除成為無效指標時,另一個 thread 有可能來存取,產生錯誤
因此如上的撰寫風格適用在 single-thread
當有風險時,需另外改寫
{
int *p1=p;
p=new int;//直接產生新空間並指定其值,別問我幹麻不續用舊空間,這只是例子
delete p1;//刪除舊空間
}
這麼一小段程式裏,示範了如何迴避 multi-thread 裏的風險
不必拘於於這是 C code,觀念只是觀念,換別種語言一樣可用
所謂的 multi-thread 並不是說一定要見到 create thread 這種指令
如果你要這樣講,我就換個字眼和你談; multi-process,task,..
總之最嚴格的定義當然會先說什麼叫 'thread',但其實它的觀念到處可見,也不叫難
只是你必需不斷的迴避風險而已
如果用原程式,那麼很簡單的就是'我用的資源,無論如何不讓別人同時存取'
知道 multi-thread 只是知道這種事而已,而書上有時就像我一樣,舉的例很短,不到十行
要先把它講成很難,再說我想太多..怕是在網路端反而想太少吧..
※ 編輯: HuangJC 來自: 61.219.65.16 (05/21 19:26)
→ w3c :奇怪的劇情發展 呵呵 .... (繼續看戲) 05/21 19:49
→ gpmm :就算他拿 multi-thread 來解釋萬有引力和太空梭航道 05/21 20:03
→ gpmm :我也已經不覺得奇怪了… 05/21 20:03
你自己知道這些問題,只是愛用別的字眼,這不過是 RD 的通病
昨天 w 兄還質疑 captcha 我同事怎麼這麼寫,說 SA 混哪裏去了
結果找到的經典還不是一樣這麼寫?
有自己的想法,要蓋掉別人程式當然做得到
是'都對',而不是'只有我對'
我一直不懷疑用另一套邏輯寫程式
但我不認為別人的一定錯了
沒這樣的態度,那怎麼看我,我也不覺得奇怪了
※ 編輯: HuangJC 來自: 61.219.65.16 (05/21 20:55)
推 w3c :找到的經典? ~ 啥鬼? 05/21 20:59
你可以回去找舊文呀
網友隨便一搜尋就有 sample,我同事做法一模一樣
而這一模一樣的就被你批評'SA 混到哪去了'
這不就證明,你不會欣賞別人程式,喜歡把別人想法蓋掉嗎?
→ w3c :我盡可能的建議了 ~ 我還很忙 ~ 別拖我下水 3Q 05/21 21:00
→ gpmm : w 大 XDDD 05/21 21:01
→ HuangJC :我還在公司,你說咧.. 05/21 22:20
→ HuangJC :為了你的想法,tmp file,結果搞出NFS架構或是cluster 05/21 22:21
→ HuangJC :有比較快嗎?不用DB用 session,結果 session 存回DB? 05/21 22:22
→ HuangJC :我不會去笑這叫繞一大圈,這是你的直覺,你的方便 05/21 22:22
→ HuangJC :我一向不主張蓋掉別人程式呀 :P 05/21 22:22
推 w3c :傻眼 ~ 我是舉你所謂的multi-server 一般常見的架構 05/21 22:33
→ w3c :提出解決方案 ~ 莫非 ~ 你連你們公司的主機架構都不 05/21 22:33
我熟不熟和你提的對不對有何關係?
是你在我們 multi-server 上,又硬要實現你原本的想法,才開始繞圈圈
→ w3c :熟嗎? ~ 什麼multi-server 聽不懂 OK ? 05/21 22:33
→ w3c :拜託 麻煩不要跟我雞同鴨講 ~ 這是我最後一次回你文 05/21 22:34
→ w3c :以上 05/21 22:34
我也怕和你再談了
因為你欣賞別人少,嘲笑別人多..
對旁觀第三者而言,只覺得在大系統下鑽這小小的 captcha 會不會太浪費時間了
要不要聽聽這種講法
'你想的也許對,有空時寫個 sample 來測試一下':這是我同事說的
'你好像很喜歡用XXXXX':這是你的語氣
唔..你最行
我還是要講我前主管,他就把別人程式蓋掉,被蓋的馬上就離職了
別人真的不會寫?只不過寫法不同而已吧..
你參考看看
※ 編輯: HuangJC 來自: 61.219.65.16 (05/21 22:46)