博客園的成長史,全都烙印在從古至今的 400 多萬條評論里了


by Conmajia

網站的成長史

每一個大神都是從菜鳥成長起來的。每一個個人網站,也都是從簡陋的HTML開始的。

這個過程也許對天才來說很短暫,但多數人還是會經歷一些漫長的成長。比如博客園BKY

▲ BKY 現存的第一篇帖子,編號146

這個一開始由 dudu 個人完成的向博客堂致敬的網站,在15年前剛剛誕生的時候,誰也沒有想到它能活到今天並成長到現在的規模。甚至阿杜本人在當時也只是以一個愛好者的身份在玩,像個初哥似的誠惶誠恐。

▲ 現在的站長們可能無法體會 和讀者商量着來的感覺,畢竟可以一鍵建站了

回帖評論,是博客站長和讀者最直接的互動方式,也是BKY成長的歷史。BKY早期的功能,就是在站長-讀者這樣的對話當中一步步完善下來的。

然而不管前端還是后台,BKY的代碼寫得是真的隨心所欲,可能這就是愛好者的風格吧。我在研究(吐槽)過程中,抓取了BKY全部400多萬條評論。正是這些評論,讓我看到了BKY的幾乎整個成長史。

▲ 只有閑人,才會去瀏覽過期的言談

讀者的故事

技術網站的文章,也許全都是關於技術。文章下的評論,卻折射着讀者各自的人生。每條評論都有一個永久編號,只要不刪除,它就永遠不會改變。這可能正代表着評論者那一刻的人生故事,印在了歲月的年輪上,永遠不會磨滅。

當然,評論里對罵互噴也是家常便飯。

浩瀚的400多萬條評論里,有讀者對技術的爭辯,也有他們對人生的感慨。這當中,有茫然無助的北漂族,古道熱腸的從業者,也有心懷大志的學生仔,奮發圖強的后進生,還有為情所困的女學生,捉襟見肘的男老師,養家糊口已經對生活麻木的中年大叔。他們甚至可能是我們身邊的任何一個人。

▲ 也許技術會讓人相聚,但生活的道路不止一條

我不知道留下這些評論的人后來如何。也許願望實現了,也許感情清晰了,也許家庭和睦了,等等。當然,事實也可能向完全相反方向走去。即便他們當初只是隨口說說,發發牢騷,轉頭就不記得了,但是不管如何,至少這也是他們活過的證明之一。

或者某一天,當我再次按下隨便看看按鈕時,刷新出來的評論,正是這些素未謀面的陌生人的另一部分故事。

過去的都已經過去

過去的都已經過去,曾經畢竟只是曾經。
——忘了·愛

這些歷史,現在早就淹沒在無數文章之中,不是我這么閑,根本不會有人想要去翻看十幾年前的墳貼。就像互聯網拓荒時代那些潮水般涌起,又泡沫般消失芸芸網站,誰又會去紀念呢?

只有幸存者的故事能夠成為勵志的傳說。其他的人,不過是他們功成名就的背景牆。

最后,讓我用一條評論來結束這篇文章。

The End. \(\Box\)

評論檔案櫃

你可以在這里查閱全部評論(截止2019.2.25,大約共418萬條),說不定能翻到你看過,甚至是你本人發表的評論。

演示功能直接從BKY服務器讀取,你需要登錄你的賬號以得到查詢權限。如果讀到的評論中含有惡意代碼,頁面有小概率會崩潰或者跳轉到其他網站。杠精們不用懷疑我有沒有真的采集400萬,或者心疼BKY的服務器,我完全不在意它會不會掛。


你需要登錄賬號

登錄

var f1 = function (id) { if (id < 146) id = 146; jQuery.ajax({ url: '/mvc/comment/GetCommentBody.aspx', type: 'post', data: '{commentId:' + (id) + '}', dataType: 'text', success: function (e) { if (e) jQuery('#dTable').DataTable().row.add([id, e]).draw(false); }, error: function () { jQuery('#dTable').DataTable().row.add([id, '(消失的評論)']).draw(false); } }); }; var f2 = function () { var c = 0; var strt = Math.abs(numeral(jQuery('#nStart').val()).value()); jQuery('#nStart').val(strt); var cnt = Math.abs(numeral(jQuery('#nCount').val()).value()); jQuery('#nCount').val(cnt); var tid = 'id' + strt + '-' + cnt; set('tid', tid); jQuery('#nStart').attr('disabled', true); jQuery('#nCount').attr('disabled', true); jQuery('#bStart').addClass('disabled'); jQuery('#bStart').attr('disabled', true); jQuery('#bRandom').addClass('disabled'); jQuery('#bRandom').attr('disabled', true); jQuery('#bStop').removeClass('disabled'); jQuery('#bStop').attr('disabled', false); get('fnClear')(); jQuery('#loading').removeClass('hidden'); jQuery.doTimeout(tid, 100, function () { get('fnGet')(strt + c); jQuery('#ld-percent').text(numeral(c / cnt).format('0.0%')); c++; if (c != cnt) return true; else get('fnStop')(); }); }; var f3 = function () { jQuery.doTimeout(get('tid')); jQuery('#nStart').attr('disabled', false); jQuery('#nCount').attr('disabled', false); jQuery('#bStart').removeClass('disabled'); jQuery('#bStart').attr('disabled', false); jQuery('#bRandom').removeClass('disabled'); jQuery('#bRandom').attr('disabled', false); jQuery('#bStop').addClass('disabled'); jQuery('#bStop').attr('disabled', true); jQuery('#loading').addClass('hidden'); }; var f4 = function () { jQuery('#dTable').DataTable().clear().draw(); }; var f5 = function () { var strt = Math.floor(Math.random() * 4186614) + 1; jQuery('#nStart').val(strt); var cnt = Math.floor(Math.random() * 300) + 1; jQuery('#nCount').val(cnt); get('fnRetrieve')(); }; set('fnGet', f1); set('fnRetrieve', f2); set('fnStop', f3); set('fnClear', f4); set('fnRandom', f5); if(isLogined) { jQuery('#need-authentication').hide(); jQuery('#authenticated').removeClass('hidden'); } jQuery('#dTable').DataTable({ scrollY: 480, scrollCollapse: true, "deferRender": true, "lengthMenu": [ [10, 25, 50, 100, -1], [10, 25, 50, 100, "全部(小心你的瀏覽器)"] ], language: { "sProcessing": "整理中...", "sLengthMenu": "每頁顯示:\_MENU\_", "sZeroRecords": "沒有找到內容", "sInfo": "上面是第 \_START\_ 至 \_END\_ 條,一共找到 \_TOTAL\_ 條", "sInfoEmpty": "什么都沒有", "sInfoFiltered": "(由 \_MAX\_ 條過濾)", "sSearch": "文字過濾器:", "sEmptyTable": "什么都沒有", "sLoadingRecords": "整理中...", "oPaginate": { "sFirst": "第一頁", "sPrevious": "◄", "sNext": "►", "sLast": "最后一頁" }, "oAria": { "sSortAscending": ": 升序", "sSortDescending": ": 降序" } } }); jQuery('#bStart').click(); jQuery('#nStart').val(200); jQuery('#nCount').val(100);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM