偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

吐槽編程問題的五張漫畫

開發(fā) 項(xiàng)目管理
那里的很多問題和回答都配上了XKCD(由Randall Munroe 創(chuàng)作)的漫畫鏈接,于是我決定扒一扒,哪幾篇漫畫最愛被程序員拿來吐槽他們遇到的奇葩事。

大家可能知道,我時(shí)常活躍于Stack Overflow——當(dāng)今最熱門的程序員問答網(wǎng)站。該網(wǎng)站的好同志們公開了他們的數(shù)據(jù),任何人都可以通過這個(gè)頁面查詢他們的數(shù)據(jù)庫:data.stackexchange.com

那里的很多問題和回答都配上了XKCD(由Randall Munroe 創(chuàng)作)的漫畫鏈接,于是我決定扒一扒,哪幾篇漫畫最愛被程序員拿來吐槽他們遇到的奇葩事。

我使用的查詢很簡單:

  1. SELECT  link, cnt, id [Post Link], score  
  2. FROM    (  
  3.     SELECT  link, id, score,  
  4.         COUNT(*) OVER (PARTITION BY link) cnt,  
  5.         ROW_NUMBER() OVER (PARTITION BY link ORDER BY score DESC) rn  
  6.     FROM    (  
  7.         SELECT  id, score,  
  8.             'http' + SUBSTRING(start, 1, PATINDEX('%/%'SUBSTRING(start, 13, 30)) + 12)  
  9.         FROM    (  
  10.             SELECT  id, score,  
  11.                 SUBSTRING(body, PATINDEX('%://xkcd.com/[0-9]%', body), 20) start  
  12.             FROM    (  
  13.                 SELECT  TOP 400000  
  14.                     id, body, score  
  15.                 FROM    posts  
  16.                 ORDER BY 
  17.                     id DESC 
  18.                 UNION 
  19.                 SELECT  TOP 4000000  
  20.                     postId, text, score  
  21.                 FROM    comments  
  22.                 ORDER BY 
  23.                     id DESC 
  24.                 ) q  
  25.             WHERE   body LIKE '%://xkcd.com/[0-9]%' 
  26.             ) q  
  27.         ) q (id, score, link)  
  28.     ) q  
  29. WHERE   rn = 1  
  30. ORDER BY 
  31.     cnt DESC 

TOP語句是用來限制查詢范圍的,因?yàn)樗麄兊姆?wù)提供商不允許全文索引,所以不這樣的話,就會(huì)請(qǐng)求超時(shí)。這個(gè)查詢只能涵蓋最近的帖子和評(píng)論,所以一些經(jīng)典的帖子可能被忽略了。不過,這樣已經(jīng)足夠說明問題了。

你可以從這兒看全部結(jié)果,本文只討論排名最前的五篇。

#5 隨機(jī)數(shù) (10次引用)

1

引用這篇漫畫的自然是吐槽各種隨機(jī)數(shù)生成器坑爹的帖子,其中被頂最多的是這一篇:

161803398是一個(gè)特殊的數(shù)嗎?Math.Random()里用到的


我猜答案可能是「數(shù)學(xué)原理,不解釋」,但我還是希望有人能通俗地解釋一下此中玄機(jī)…

起因是,我今天在鼓搗BCL的源代碼,想看看以前用過的那些類是怎么實(shí)現(xiàn)的。因?yàn)橐郧皼]考慮過如何生成(偽)隨機(jī)數(shù)的問題,所以我打算看看在這兒是怎么實(shí)現(xiàn)的。

全部代碼在此:http://referencesource.microsoft.com/#mscorlib/system/random.cs#29

  1. <code>private const int MSEED = 161803398</code> 

次生成Random()類的隨機(jī)數(shù)種子都要用到這個(gè)MSEED值。

這個(gè)神奇的數(shù)字:161803398,我想破頭也想不出它是怎么來的。它不是個(gè)質(zhì)數(shù),也不是2的某次冪,跟哪個(gè)稍微有點(diǎn)意義的數(shù)字都不搭邊兒。我也查了它的二進(jìn)制和十六進(jìn)制形式,怎么看都只是一個(gè)沒有特征的數(shù)字。

我Google過了,沒有結(jié)果。


這個(gè)數(shù)來自于Phi值(黃金分割比)。
161803398 = 1.61803398 * 10^8 ≈ φ * 10^8

有關(guān)黃金分割比
另外,強(qiáng)烈推薦數(shù)學(xué)愛好者讀讀這一篇
我還找到一篇含同樣觀點(diǎn)的關(guān)于隨機(jī)數(shù)生成器的學(xué)術(shù)論文。(見53頁)

也就是說,出于某些(也許是有道理的)原因,黃金分割比貌似很適合拿來做隨機(jī)數(shù)生成器的種子……有意思的是,上面引用的那篇論文,編程語言中的偽隨機(jī)數(shù)生成器,第一頁就引用了上面這篇漫畫。

#4 goto (10次引用)

2

goto是某些編程語言中的一個(gè)構(gòu)造體(construct),用于跳過所有正在執(zhí)行的循環(huán)和處理,無條件跳轉(zhuǎn)到程序的任意位置。很多程序員(顯然還有迅猛龍)都認(rèn)為這是個(gè)很糟的編程習(xí)慣。

被頂最多的評(píng)論來自這個(gè)帖子:

解析錯(cuò)誤:Unexpected “


我遇到了這么一條錯(cuò)誤信息:Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\htdocs\game.php on line 12

源代碼如下:

  1. <?php  
  2.     $words=$_GET['words'];  
  3.     $array=explode(",",$words);  
  4.     $j=count($array)-1;  
  5.     goto a;  
  6.    
  7. a:  shuffle($array);  
  8.     $num=$array[0];  
  9.     echo "The Number Is = $num";  
  10.     echo "";  
  11.     echo "Please Enter The Number Within 10 Seconds";  
  12.     echo "<form method=\"get\" action=\"$_SERVER[\'PHP_SELF\']\" ";  **<--Line 12**  
  13.     echo "<input type=\"text\" name=\"num\"";  
  14.     echo "<input type=\"submit\" value=\"Press Me! \"";  
  15.     $input=$_GET['num'];  
  16.     goto b;  
  17.    
  18. b:  if($input==$array[0] && $array!=NULL)  
  19.     {  
  20.         array_pop($array);  
  21.         goto a;  
  22.     }  
  23.     elseif($array!=NULL)  
  24.     {  
  25.         goto a;  
  26.     }  
  27. else 
  28.     break;  
  29. ?> 

請(qǐng)別揪著GOTO不放,告訴我怎么解決這個(gè)錯(cuò)誤就好,我只是在試驗(yàn)用這段代碼解決個(gè)問題。

#3 密碼強(qiáng)度 (11次引用)

相比用一串隨機(jī)字符(很難記)當(dāng)密碼,Randall建議使用基于自然語言的密碼短語(passphrase),既安全又好記。

得票最多的評(píng)論來自這個(gè)求助帖:

使用正則驗(yàn)證密碼復(fù)雜度


我在寫一個(gè)javascript的正則表達(dá)式,用于驗(yàn)證密碼的復(fù)雜度,密碼必須符合這些條件:

至少包含12個(gè)字符
至少包含一個(gè)以下字符:* ^ !
至少包含兩個(gè)大寫字母
至少包含兩個(gè)數(shù)字
至少包含一個(gè)小寫字母

我在網(wǎng)上找到一個(gè)例子,修改了一下:

  1. (?=.*[0-9]{2,})(?=.*[a-z])(?=.*[A-Z]{2,}).{12,} 

但是還缺特殊字符的驗(yàn)證,而且兩個(gè)大寫字母和兩個(gè)數(shù)字必須連在一起才能通過驗(yàn)證,結(jié)果如下:

  1. aMMericano11 - true 
  2. aMmeRican1o1 - false 

我希望第二個(gè)密碼也能通過驗(yàn)證,當(dāng)然還需要特殊字符的驗(yàn)證。

誰能幫幫我嗎?

問題在于,這個(gè)正則顯然不能允許密碼短語的使用,所以下面的評(píng)論用XKCD的鏈接巧妙地指出了這一點(diǎn)。

#p#

#2 前人的智慧 (16次引用)

所謂挫敗感:在網(wǎng)上搜索一個(gè)罕見的、奇特的問題,只找到一個(gè)帖子,描述的問題一模一樣,但是最后解決了沒有,如何解決的,沒有下文。

被頂最多的評(píng)論來自這個(gè)帖子:

部署EAR時(shí)報(bào)錯(cuò):Class bytes found but defineClass()failed for


今天我嘗試把一部分使用EJB 1.1的老代碼部署到Weblogic 10.3.6,但總是報(bào)這個(gè)奇怪的錯(cuò)誤:Class bytes found but defineClass()failed for

類都被找到了,還能是什么問題?


搞定了,項(xiàng)目代碼是用JDK 1.7編譯的,但是Weblogic服務(wù)器安裝的是1.6。
我用JDK 1.6重新編譯了一下,然后就能用了!
我把這件事記在這兒,因?yàn)檫@個(gè)問題在網(wǎng)上實(shí)在太難找到答案了。

發(fā)帖的這位顯然花了很多時(shí)間才找到這個(gè)問題的解決辦法,于是他好心地把問題和答案都發(fā)到了Stack Overflow上。

此答案的評(píng)論只是一句「謝謝」,外加這篇漫畫的鏈接。從這條評(píng)論和這篇帖子的頂貼數(shù)來看,它至少幫到了三個(gè)人。

說真的,干得漂亮!大家都向Jarrod Roberson看齊吧。

 

最后,獲得了96次引用的大熱門,是這篇:

#1 老媽的逆襲 (96次引用)

一個(gè)沒安好心的老媽給他兒子取的這個(gè)名字,只要輸入到未防范SQL注入的數(shù)據(jù)庫里,就能把數(shù)據(jù)庫搞壞。

這種事不是第一次聽說了,你可以讀一讀這篇真人真事:搜索一個(gè)叫Null的客戶把程序整崩了

同時(shí),也有一些人,愛爾蘭血統(tǒng)的人(可能是有Null這個(gè)名字—譯者注),在注冊網(wǎng)站的時(shí)候,被矯枉過正的SQL注入預(yù)防手段弄得很不高興。

被頂最多的評(píng)論來自這個(gè)帖子:

SQL注入演示頁面


我在為我的學(xué)生們創(chuàng)建一個(gè)SQL注入演示頁面。我寫了一個(gè)登錄頁面,但是我好像沒法進(jìn)行注入。下面是我寫的頁面代碼。我已經(jīng)試過在username字段寫入多個(gè)語句以繞過SQLi。我還能想到的就只有使用子查詢,或者把我的代碼漏洞再搞大一點(diǎn)。

  1. <?php // Check to see if there was a request method that is a post type  
  2. if ($_SERVER['REQUEST_METHOD'] == 'POST')  
  3. {  
  4.     // Check to see if username field is null  
  5.     if (!emptyempty($_POST['username'])) {  
  6.    
  7.     // Connect to the server using credentials  
  8.     $con = mysql_connect('localhost','root','sqlcool1');  
  9.     // If the connection was not successful  
  10.     if (!$con){  
  11.         echo 'OUCH';  
  12.         die('Could not connect: '.mysql_error());  
  13.     }  
  14.     // Select the correct database from the server  
  15.     $db = mysql_select_db('injectme',$con);  
  16.     // Pass a sql query through the table to pull the user field that was entered in the form  
  17.     // Return the results in an array  
  18.     $sql = mysql_query('SELECT * FROM user WHERE username = "' . $_POST['username'] . '"');  
  19.     $row = mysql_fetch_row($sql);  
  20.    
  21.     // compare $row["password"] to $_post["password"]  
  22.     // if they match it's good: log them in  
  23.     // if not, they're beat: don't log them in  
  24.    
  25.     if ($_POST["username"] == $row[1] && $_POST["password"] == $row[2]) {  
  26.     // do something to let them know that it worked  
  27.     echo('<html>  
  28.         <head>  
  29.             <meta http-equiv="refresh" content="3; url=search.php">  
  30.         </head>  
  31.         <body>  
  32.             <p style="color:green">logged in</p>  
  33.         </body>  
  34.     </html>');  
  35.     } else {  
  36.         // do something to let them know it didn't work  
  37.         echo('<p style="color: red">Invalid username or password.</p>');  
  38.         echo('<form name="login" action="login.php" method="POST">  
  39.             Username: <input type="text" name="username">  
  40.             Password: <input type="password" name="password">  
  41.             <input type="submit" name="submit_button" value="Submit">  
  42.             <button type="submit" formaction="register.php">Register</button>  
  43.         </form>');  
  44.     }  
  45.     //Close the connected session with the server  
  46.     mysql_close($con);  
  47.    
  48.     } else {  
  49.    
  50.         // Repost Form  
  51.         echo ('<p style="color: red"> No username / password provided.</p>');  
  52.         echo('<form name="login" action="login.php" method="POST">  
  53.             Username: <input type="text" name="username">  
  54.             Password: <input type="password" name="password">  
  55.             <input type="submit" name="submit_button" value="Submit">  
  56.             <button type="submit" formaction="register.php">Register</button>  
  57.             </form>');  
  58.         }  
  59.     }  
  60.     else 
  61.     {  
  62.         echo('<form name="login" action="login.php" method="POST">  
  63.             Username: <input type="text" name="username">  
  64.             Password: <input type="password" name="password">  
  65.             <input type="submit" name="submit_button" value="Submit">  
  66.             <button type="submit" formaction="register.php">Register</button>  
  67.         </form>');  
  68.     }  
  69. ?> 

這位作者很奇葩地想故意把代碼寫得能被SQL注入,結(jié)果卻做不到……

原文鏈接: EXPLAIN EXTENDED   翻譯: 伯樂在線 - 輕如紙張

譯文鏈接: http://blog.jobbole.com/73411/

責(zé)任編輯:林師授 來源: 伯樂在線
相關(guān)推薦

2013-10-29 09:08:05

2013-10-29 09:32:05

2012-03-10 20:55:40

Nokia

2014-08-06 14:13:30

Windows Pho

2012-10-16 16:27:32

UbuntuAmazon搜索

2021-03-15 10:03:10

框架自動(dòng)化開發(fā)

2013-03-14 13:49:31

Hotmail郵件服務(wù)器

2014-10-15 16:47:31

Android微軟

2012-06-05 14:35:00

Windows Pho

2012-05-21 17:37:17

Windows Pho吐槽

2019-07-15 10:11:48

主流編程JavaScript

2022-01-26 14:21:04

PCAMDWindows 11

2017-12-04 09:59:29

2015-03-10 10:29:26

微軟Windows 7Azure云服務(wù)

2013-12-12 16:56:33

騰訊用戶

2012-08-24 10:49:51

備份恢復(fù)

2024-07-25 13:51:46

2020-11-30 19:27:34

微信文件移動(dòng)應(yīng)用

2019-12-30 18:14:48

網(wǎng)絡(luò)購票微軟技術(shù)

2021-04-19 14:13:10

安卓iOSBUG
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)