如何評價中山大學vmatrix評測系統?
vmatrix主頁:https://vmatrix.org.cn/login
相關文章:http://mp.weixin.qq.com/s/nc40tmk6FVEnMblzvdn6ZA
6先讓我講個故事(沒玩過知乎,應該是這個套路吧)
2016年4月1日,沒錯,就是愚人節那一天晚上法師(某化名老師)希望能夠完善Eden(原來由王老師主導開發的一個很厲害的在線系統),其實之前就一直做過這方面的東西,也實現過一個超級簡陋的OJ:
ghostbody/Yejq-online-judge
(這個東西我已經懶得維護,已棄坑,當時太年輕很多問題沒考慮)
其實一開始法師是想我把原來eden的代碼架構搞清楚然後在那個基礎上繼續開發完善的。但是當我打開那堆代碼時候是崩潰的,當時eden的架構是django的重量型架構,非常傳統的web架構,前後端在一起。隨便打開一個控制器,卧槽,幾千行幾千行的代碼,而且各種字元串拼接,各種函數調用。最讓人崩潰的是,資料庫表,一共120多張吧,裡面的存儲結構非常混亂,各種數據冗餘不在話下。只成功啟動了eden的系統,後來發現這份代碼不是最新的 = =。
以上說的這些僅僅只是開發人員看到的外表而已,實際上這並不影響eden是一個非常優秀的系統,至少在國內這就是首創。我甚至認為在很多方面eden都比matrix優秀太多,比如他支持「白盒測試覆蓋了」的題目,也就是說學生看到的題目是一個程序,然後通過輸入一些樣例使得這個程序的覆蓋綠儘可能高;還有就是大數據的題目,學生可以提交"hadoop"或者是"spark"的程序,eden可以通過後台的伺服器集群跑出相應的結果,供大數據軟體工程的學習,這個非常難得。即使對於matrix已經實現的編程題,也有很大一部分的idea是來源於eden的。
那時候想都沒想多少,我和家榮兩個人就打算白手起家,重新自己搞一套這樣的系統。現在想想當時真的是年輕,一腔熱血,什麼的都想追求更加優秀,更加完美。10分鐘拍板技術棧,前端用angular,服務端用node,資料庫mysql,評測系統用C++搞(當時迷信C++,= =),然後就開搞了。
記得那時候差不多晚上23:30了,榮哥還在那裡糾結怎麼裝gitlab,後來初期時候放棄了自己部署gitlab,用了線上的。
這是第一版的matrix系統,系統只有三個子服務,一個SPA的web端,一個評測,一個資料庫。當時的架構炒雞簡單,整個流程就是:
- web服務端收到學生提交的答案
- web端寫到資料庫
- 評測系統定時輪詢資料庫(默認1s)
- web前端輪詢數據狀態
- 評測評完寫回資料庫
- web前端顯示評測結果
當時團隊的幾個人,我、家榮和慶龍,再加上大四兩個師兄和傳設院一個設計師,當時印象最深刻的是,後台評測的進度很快,三下兩下就搞完了,web進度就有點慢了。這個過程就是一個瘋狂地去學習的過程,那時候榮哥像瘋了一樣,最後的搭出現在Matrix的前端基本架構。而且這個人真是神人,不用睡覺的,還讀了一堆項目管理的書,引入現在Matrix管理項目的原型——敏捷開發Scrum和XP模型(永遠相信,項目管理在團隊中非常重要,這一點毋庸置疑)。
植入一波Matrix日記裡面的內容:
做了不久,法師就跟我們說:「啊,我們現在這個系統能不能支持一下大四要畢業的同學的清考啊?」。當時也沒想多少,卧槽,我們系統有了第一批用戶,我們就一口答應沒問題。
結果2016年5月10日吧,我記得,那天晚上十幾個清C和C++考試的師兄來到學院319,我們搬了兩台台式機過去就做伺服器,然後中間網路有問題,直接使用榮哥mac作為伺服器。
系統那天大概崩潰了1個多小時,然後才勉強可以使用,然後繼續間斷崩,然後又修。。。很艱難的一個晚上,那次又搞到了11點多吧
Matrix考古截圖,
這個晚上之後吧,發現需求太多了,於是選擇招了新的同學,就是現在大三的同學吧,很優秀,我記得很清楚我和榮哥親自面試了大家 囧 = =。
很驚訝地知道一個消息就是,原來王老師要走了,那時候才知道,很快eden也下線了。真的很遺憾,軟體學院或者是中大的同學們又失去了一個很好的老師,真的很好。(大家可以了解一下中大老師的6年聘制度,此處不想多說 = =)從此軟院沒有了大數據軟體工程這門課。
不久之後法師就又問我們:「我們系統現在是不是可以支持我的兩個C++班的期末考試了?」。當時也是很年輕,咬咬牙,做!因為我們就坑害了兩個C++班的同學,此處應該誠摯跟你們說一聲對不起。
之後就是各種拿這兩個班同學做「實驗」,搞練習題,搞模擬考試,Matrix日記上寫到:
這是一段很悲慘的經歷。
我還記得那時候要舉行所謂的「模擬考試」,但是在預定開始時間系統還是不能部署上線,之後就只能跳票了。當時整個團隊是奔潰的,做了這麼久這麼辛苦,整個軟體就差部署上線,跪在這一步,真的很扎心。
Matrix團隊日記:
2016.06.21 15:00 大一期末考前的模擬測試
6月4日到6月21日這三個星期,是Matrix生長最快,但也是最昏天暗地的一段日子。
為什麼說生長最快?在這三個星期,Matrix開發力量又一次壯大,加入了許多大三的同學;Matrix第一次有了自己的產品經理,從此項目內部管理有了條理;Matrix有了自己的設計師,棄用Angular Matrial後也能有美美的頁面,Matrix的Web端不再是垂直開發,前後端分離實現了職責分離,讓開發更加專註;Matrix的評測系統搞起了分散式評測,自己找主機拼湊起來,增加評測節點,提高評測效率。
但為什麼說昏天暗地?因為,期末考來了。大二同學因為期末考的緣故基本不能參與開發,新加入的大三同學上手代碼也還要學習時間,Matrix的開發告急!web端棄用Angular Material,css文件幾乎要全手寫,web端進度血崩;忘了,大三也是要期末考的,於是項目內部湧現出各種系統分析與設計分享會,軟體測試分享會,一夜精通系分,一夜精通軟測。21日上午,大三完成期末考試,下午就要面對難度僅次於大一期末考試的大一模擬考試。 但最後Matrix跳票了,跳過了這次模擬測試,這真是最黑暗的一天。
到了下午兩點半,家榮開始嘗試將現有系統部署到Eden伺服器上,卻一直部署失敗不得解,嘗試了將近一個小時,不行,繼續嘗試,還是不行。時間一分一秒地過去,早就過了模擬考開始的時間,但沒有辦法,大家都等待著部署成功。然而最後希望並沒有出現,由於超過預計時間太久,最後內部決定跳票,將模擬考推遲到明天。大家是什麼心情自不必說,為了這次模擬考,頂著考試的壓力,通宵是常有的事。現在忽然說要跳票,師弟師妹們被放鴿子,我們的系統收到了極大的質疑。一切就彷彿努力沒有回報,這個挫折一時讓大家很挫敗很失落。
總而言之,這次的嚴峻問題嚇壞了大家,老師也意識到,期末考決不能出現類似問題。於是,在接下來的兩天,都進行了模擬考試,以保證系統能夠完整地支撐整個大一考試。
部署失敗的原因是Eden伺服器是Centos系統,node_modules里的包不能兼容,最後將本地的node_modules複製到伺服器上,問題得以解決。
- Matrix有了自己的產品經理和設計師
- Matrix評測系統完成初級分散式評測集群,3台主機構成
- Matrix的web端棄用Angular Material,改為純手寫CSS
- Matrix的web端前後端分離
- Matrix受到外界強烈質疑
=======================分割線==============================
如何優雅地在實驗室通宵?
- 要買夠充足的物資,也就是買充足的吃的
- 你需要有一張摺疊床藏在實驗室後面(因為學院會定時巡查然後收掉)
- 如果是幾個同學一起通宵時候,困到不行怎麼辦。這時候你需要收拾好實驗室的桌子,然後優雅地躺在上面
- 其他事項可諮詢家榮同學,他比較在行
=======================分割線結束=======================
這個就是我們為了應對期末考試搭起來的評測集群,大概是10台小機器,小機器是i3的處理器,4G內存,沒有SSD(借用了樓下的阮老師的實驗室,多次因為功率問題導致實驗室跳閘 = =)。當時分散式評測系統實現方案是用socket,用平均分發的演算法。那時候調優的時間極其有限,我們那時候測試的方法也是非常粗暴,直接寫一個腳本然後隨機刷一定量的資料庫任務。這導致發生了很多問題,比如網路鏈接老是超時斷開,這個是通過柳哥眼動看著10個終端一發現問題馬上重啟來搞定。到最後甚至分散式稱為影響效率的一個很大的問題。當然現在Matrix評測的後台架構跟這個已經不能同日而語了。
(右下角評測大佬柳哥,現在是去了騰訊,膜)
這是我大學難以忘記的一段經歷
(考試結束我們和機器的合照)
之後我們完成了中級實訓這個不在話下了。
然後7~8月,Matrix開啟了為期兩個月的暑假馬拉松式開發。每天基本上都是早上9點半到實驗室,下午6點解散。
與此同時,我去了深圳實習。可是心心念念的還是學校的團隊。每個星期最讓我最愜意的事情就是坐上周五晚上18:45到廣州的班車,聽著歌,看著沿江高速的落日~然後到實驗室和小夥伴們對進度,討論。(很想吐槽一下,來回深圳的車費也是敲貴)
在這兩個月,Matrix應該說是做了翻天覆地的變化,現在的微服務架構也就是這時候演化出來的。
兩個月下來,最終形成了v1.0版本的Matrix吧
到了開學之後,真的是順利地支持下來了這麼多程序設計課程,雖然bug很多,需求很不完善。。。
開學之後是團隊一個很低迷的時期:
- 團隊成員也是要上課的,課程壓力也是不小的(各種課程作業、project等等)
- 榮哥去了北京實習
那時候我是選擇了從騰訊離職回來團隊,那時候真的感覺維持下去很艱難。。。很感謝小夥伴陪我一起走下來了。
之後就是期中考試了,到這個時候Matrix向學校申請了很久的機器很批不下來,沒辦法,硬著頭皮,繼續搭小機器。這次考慮到上次很多問題,於是擺成了這樣:
期中考試前面一大段時間都是沒事的,我們都說:「這波穩了!」誰知道就這麼毒奶一下,最後十分鐘全盤GG。我親眼目睹資料庫CPU直接飆升到790%多,對於一個8核的CPU這意味著啥 = =。然後Matrix的整個架構全盤奔潰,伺服器都連不上,整個讓人很崩潰。最後只能等待一段時間後就自然恢復了,這次給我們很大的教訓。
(人生有時候就是這麼的辛酸)
當然後面我們就有了機櫃還有很強大的刀片伺服器集群(其實就6台)
期末考試沒啥好說的,基本上真的很穩了(這個還得待定,到了現在系統還有不少問題)。
當然了,去年寒假當然也是有大開發的,也就是當前的2.0版本。也就是這個版本:
這個主頁我寫的,不爽來打我 ╮(╯▽╰)╭
之後又經歷了研究生複試,又經歷了連續幾天通宵開發。最終還是給大家帶來很相對穩定的服務了。
This is matrix monitor:
========================以上故事講完==============================
感覺很普通的一個故事,沒有很傳奇的經歷。我感覺自己只是在對的時間和一群對的人,做了一件對的事吧。
其實整個系統坐下來無非想讓大家能夠有一個更加好的學習平台吧。當初我們的設想是Matrix上能夠看到自己的學習進步的歷程,如何解決一個一個編程問題,然後把這些知識串聯起來(= = 你可以看到現在用戶成就那裡還是空著的)。
其實一個OJ(Online Judge System)和一個編程學習平台(Programming Learning Platform)很多時候是不一樣的。編程學習平台應該是OJ的擴展,能夠通過更加友好的方式引導同學們學習編程。
可能很多大佬很強,高中時候就是學過編程,或者領悟能力拔群,一學就會。但是,你要考慮其他同學的感受。我認識過一些同學,他們在上大學前家裡是不給他們用電腦的,認為這是耽誤學習,因為他們可能是在上大學時候才接觸計算機相關知識。
我不否認SOJ等著名OJ是很出名很厲害的系統,但是我認為他們更加適合ACMers去使用,或者是其他有追求的同學。
但是,
對於一個剛剛學習編程的同學,做一個整數加法,很簡單的一題的時候,看到一個「Wrong Answer」不知所措的時候,內心是崩潰的。
對於一個學習C++的同學來說,只會new,不知道delete,而且這些OJ也不去管內存泄漏這些C++很重要的問題時候,這樣的編程教學毫無意義。
又或者說你們經常吐槽的靜態檢查也好,谷歌代碼風格檢查也好,這些都是為了編程學習而設置的。
此處要自我反省一下,在上學期和上上學期做TA時候,很多時候因為開發、實習等複合原因很難兼顧到同學們,以至於我有大堆的QQ和郵件沒有回,鄙人深感愧疚。= =
============================我是分割線========================
轉眼就快要畢業了,對於Matrix還是依依不捨。
我們不僅僅是做了一個系統,還有有很多組織過程的經驗和很好的團隊文化。
整個宏觀軟體開發過程,從分析需求-&>.....-&>上線運維+持續迭代
Matrix系列分享會,無論是面向學院的,還是Matrix內部的。我覺得,熱情和分享應該是Matrix最大的精神財富。
(此處打個廣告,等5月份榮哥從北京回來,我們會做畢業前最後一次分享,主題就是 Matrix系統架構的演化)
接手下去的同學們啊,做Matrix其實是要做很巨大的犧牲的,但是我還是希望這個團隊能夠繼續維持下去,也許到多年以後我回來之後,依然有幸參加Matrix分享會。
我們卑微的聚集,是一個偉大的開端。
以上
Matrix 是中大的一個在線課程管理系統(含OJ,考試等),經常被中大計算機類的同學戲稱為 「土豆網」 ,伺服器是土豆電池做的
不過確實,Matrix 在初期的體驗並不是很愉快。
在 Matrix 做過一點微小的工作,希望能通過這個回答,給大家一個新的印象。
就此說下 Matrix 用到的一些技術,主要是以服務端(Node)和前端為主。
一、系統架構方面
Matrix 的系統架構劃分,採用 SOA 架構,充分解耦,同時對訪問壓力大的服務做了分散式。整體的架構是比較合理的。
除了這四層之外,也用過一些額外部分的緩存策略,如 Redis緩存
二、前端
前後端分離,生產環境代理到測試伺服器的 Node 服務。方便開發與測試。
前端技術棧,以 AngularJs 為主,採用 Bootstrap 的CSS庫。整體的項目代碼由 Gulp 來實現項目自動化構建,包括轉義 Jade,Sass,生成 Source Map,合併JS等等,同時區分開發環境和線上環境,配置 Web Hook 來實現自動化部署。
前後端代碼都採用 ES6,由 Babel 轉義 ES6 為 ES5 來提高兼容性。
三、服務端(中間層)
服務端採用的 Nodejs。雖然選擇的是 Express,但也會參考 Koa 中用到的一些技術(Co),例如把所有的服務端代碼 Genrator 化。
整體的服務端是一個 MVC 架構,採用 HTTPS,DB 由 Connection Pool 控制訪問,保障資料庫連接數量。由中間件對錯誤、資料庫訪問進行統一的處理,同時對用戶操作進行記錄。使用 Ajv 做介面參數校驗,具備完整的單元測試代碼。另外,每次服務端介面的上線,都要經過 Postman 測試。在 Web 安全方面,對 XSS,CSRF,SQL注入 等內容都有相應的處理。
線上環境,由 PM2 來對 Node 服務進程進行管理。
整體的 Matrix 服務端,雖然只是一個中間層,但是很多的實踐思路,跟阿里 Node 框架 Egg 是不謀而合的。
至於為什麼用 NodeJs,是因為中間層本身就是一個 IO 密集型的服務,Node 依賴於 V8 和 libuv 的事件驅動開發,很適合這樣的場景。而真正的操作,都封裝成了一個個的後台服務(SOA架構),最後由 Node 來集成這些信息。
四、其他系統服務
其實前端跟服務端只是 Matrix 的一部分,其他的還有
1、真正的後台服務
文件服務(分散式)
評測服務(分散式)Nginx代理服務抄襲檢查服務安全驗證服務...
其實這裡面很多都是跟前端和服務端同個難度級別的
2、團隊開發工具以及控制系統
同時為了團隊開發,還有各類的 團隊管理工具 和 Matrix服務管理系統。大部分時候,都是團隊成員自己搭建的。包括 私有git倉庫(Gitlab)、Console系統(評測隊列管理,用戶管理等)
3、開發流程
從產品經理定需求,到前後端開發,到測試,到集成上線,Matrix 都有一個完整的流程。
開發分支的主線也是清晰的,區分線上分支,測試分支,特性分支,bug分支等等。
4、監控系統
除了服務,你可能不太相信, Matrix 還開發了 Monitor 系統,對每個服務進行監控,注意,是每個Web服務。從前端,到服務端,到 Nginx、文件服務、機器監控……
五、關於 Matrix 團隊
Matrix 團隊成員都是義務開發的,這點大家可能也知道,因為是一個校內團隊,所以平時也需要兼顧學業,有很多同學可能還是課程助教,平時也是非常的忙。所以很多時候大家都是犧牲自己的假期時間來開發,特別是寒暑假。
在Matrix開發,除了技術上的成長,我還認識了很多的志同道合的同學,他們也非常優秀,有拿過國獎的,有已經保研的,有在騰訊、阿里、網易遊戲實習的,也有早早就參加過創業團隊的,更重要的是,我在他們身上,我都看到了對技術的熱情!他們都在告訴著我,自己還需要努力,還要保持學習。
因為 Matrix 就是這樣的一群人,這樣的一個團隊。
六、最後
打個廣告,在 Matrix 呆了快一年,做了很多,學到了很多,也憑藉這些經歷以及知識找到了一份比較滿意的實習。在此,希望有興趣開發 Matrix 的同學,想提升自己技術能力的同學,加入我們~
由於這個回答:如何評價中山大學vmatrix評測系統? - 知乎,無法評論,所以只能在這裡回答了,順便艾特這位同學: @africamonkey
以下言辭風格不太知乎,望包涵。
引起你的不滿,我十分抱歉。
我是這個分享會的主講人,PPT 也是我做的,措辭可能很有問題,當時寫好了演講稿之後再做 PPT 的,時間比較倉促。
看了這個回答,其實有一點誤解的成分在裡面。
引起誤會的應該在以上 PPT 的第三點:「第三,校 ACM 隊目前是有意願跟我們合作,將 Sicily 的題目全部遷移到 Matrix 中來,只是我們覺得 Matrix Course 不適合用來做這個事情」。
我針對這一點,來說明一下我措辭的不恰當之處。
首先說一下得到這個說法的背景。
Matrix Exam 系統在支持 2017 年研究生入學考試上機考試的時候,萬海老師、林翰老師、還有我,都同時在考場監考。我重新求證了一下萬海老師的說法,萬海老師說的是,林翰老師對我們 Matrix 的考試系統十分感興趣,看以後有沒有辦法讓 Matrix 開發團隊和 Sicily 系統達成一種合作方式,實現資源的共享,如果時機成熟,實際上可以將 Sicily 上的題目數據遷移到 Matrix 系統。
當時萬海老師跟我提出這個事情的時候,我闡述的想法是:
1. 目前的 Matrix 課程系統,是不適合做這個事情的,因為 Matrix 課程系統設計之初,就是為了課程教學之用,讓老師更方便地出題、改題,並且能統計學生的做題情況
2. 而 Sicily,更像是一個 ACMer 們的訓練場,不是很適合教學之用
3. 而且,當時我們問過使用系統的老師的意見,他們都不想將他們自己的題庫公開出去
基於這三點,我得出了這樣的結論:Matrix Course 並不適合作為一個類似 Sicily 的 OJ 系統。
這裡要澄清的一點是,並不是拒絕,而是目前我認為還沒有達到一個跟 Sicily 進行資源共享或者合作開發的一個時機。
說完了背景,我就說一下措辭的不恰當之處。
1. 實際上並不是校 ACM 隊跟我們合作,按照萬海老師的說法,應該說 Sicily 系統。造成這個誤解是因為,我以為 Sicily 是校 ACM 隊維護的,跟 Sicily 之間的資源共享,自然就是跟校 ACM 隊合作了。對此我表示抱歉
2. 「合作」 一詞我不應該使用,因為這一切都是萬老師和林老師口頭上的討論而已,理應不能上升到「合作」的程度。對此我表示抱歉
3. 我所認為的 Matrix Course 不適合做這個事情,真的不是拒絕的意思,我是基於 Matrix 整個設計思想來做出這個結論的。因為 Matrix Course 不適合,所以我們才啟動了 Matrix OJ 的項目,來解決 Sicily 沒有解決的問題,而且我們有足夠的人員、技術儲備、計算資源來做好這個事情
還有一點要聲明的是,Matrix OJ 只是想解決一些問題,並沒有說有取代 Sicily 的意思。我們一切的出發點,都是希望能為學院的教學和同學們的學習做一些微小的貢獻。
我們對校 ACMer 的人的態度,都是帶有一種崇拜的感覺在裡面的,我們對你們的演算法能力都是十分敬佩和仰慕的。如果要比較校 ACM 隊和 Matrix,我這個類比不知道恰當不恰當:你們就像是台上一分鐘,台下十年功的幕前光鮮艷麗的幕前人員;而我們更像是幕後到處折騰、跑來跑去、默默地做一些事情的幕後人員。
說實話,我們很民間很山寨,我們只是做了一些讓學院大部分同學和部分老師都得到了便利的事情。
但有一點我認為是共通的,那就是,我們做的都是同一個事情,都是為了學院、學校做出一些貢獻。Sicily 與 Matrix 不應該是一種敵對或者競爭的關係,我們更需要的是找到一種互利共贏的合作方式。
以上就是我的觀點,再次重申,引起不必要的誤解,我真的十分抱歉。
2017/4/20
我今天一定要來吐槽一下這個,真的有意義???
為了過你的OCLINT非要把變數名都改成三個字母的,本來清晰簡潔的代碼就會變得亂七八糟的。
這個靜態分析真的能提高什麼代碼質量嗎?
我們又不是在寫工程,憑什麼不能用簡潔明了的方式寫了?
我又不給別人看代碼,憑什麼不能用自己習慣的寫法了?(用位運算代替一些邏輯)
為了找到那些幾乎不會寫代碼的人的潛在BUG這樣降低用戶體驗真的好?
另外有評論說Safari可以用了的,我昨天試過了,不能用。
原回答
本來其實有很多想吐槽的
聽說團隊是義務做的
那也就沒什麼好說的了
何況現在做的也基本用著不會特別不適了
(原來我們交了那麼多學費我們院還是很窮TuT)
bug還是基本一直在修 雖然速度有點慢
比如那個奇怪的縮進最近才給修好
伺服器聽說是學校支持購入了很多台
所以現在不會像當初那樣一考試就爆炸了
說起來那個static check還是有大bug的啊
具體是啥我就不說了
因為其實我很喜歡那個bug_(:3」∠)_
還有就是記得登錄時間久了會自動退出
而編輯過沒提交的代碼不會給你保存
不知道這個bug修復沒有 當時氣的我摔電腦……
UI的話現在也是看著還行的狀態吧
明明有傳設院的大大在團隊里為什麼不能把UI做的像tyvj(和他的兄弟vijos)一樣好看呢
雖然pku zju那種高端學府的oj長得更丑
但是……_(:3」∠)_
強行限制瀏覽器這個事我也很不服啊
你掛掉IE還是情有可原的
Safari到底是怎麼了總是受人鄙視TuT
(說好的不吐槽還是開始吐槽了……)
啊其實上學期本來還想去給他們乾乾活
結果被教育了一番 不讓去 哭哭
作為一個飽受eden摧殘的中大學子,我本身覺得matrix 就是學生的救星,你可能沒經歷過期末考試交一次作業得等半個多小時才能出結果的恐懼,而且評測隊列在期末考試可以達到400多,當你交上去的代碼,等了半個多小時,好不容易出結果,結果你少打一個分號編譯錯誤,你猜猜我當時在想什麼,而matrix 徹底改變了這點!他在各個方面都有優化,評測一次作業只需要等待幾秒鐘,考試的時候順暢無比,也正因為對matrix 的喜愛,我在大三上學期也加入了matrix幫忙優化改bug ,當時才認識到matrix 是一個多麼齊全,項目結構清晰明了而且模塊很多的項目,而且前後端完全分離,開發是很有規範的,講真,正如我們的大佬家榮說的,matrix 他本身的架構已經算得上企業級的了,這點我也十分贊同(最近有去一些公司實習打醬油)所以總的來說,我覺得matrix真的很不錯,我也為我能為matrix盡點力很自豪
圖片侵刪不過作為中大新生來說,這個系統還是很友好的,畢竟輸入輸出都看得到,不像大部分oj,只有wa、tle這些提示。。讓起步的人更容易上山和debug吧。
做出一個OJ不難,但是要堅持做下去最重要。
希望你們的團隊對系統不斷完善,保證文檔齊全且每年都有人維護。
作為一個曾經因為其他項目而退出Matrix,後面機緣巧合又有機會回來的前端妹子,我覺得我可以講一波事情的誒。
大二下學期的時候因為想看看Matrix的怎麼樣的,於是報名參加面試,面試的時候被虐得飛起,本來以為自己會掛掉,最後不知道為什麼居然可以加入這個團隊幹活。一開始的Matrix的真的很簡陋的,不過!UI是真的漂亮!我還記得在大二下學期未考試的那段時期,我們一直都在用Angular Material進行開發,簡直要崩潰了,但是Matrix給我的感覺就是富有挑戰性。
在大二實訓的時候,Matrix開始自己寫css來實現UI,這個時期對我來講最難的就是css了,真的我的css簡直....當然,那個時期的生活其實是簡單而充實的,早上九點半到實驗室,下午五點半scrum以後下班回去,當然可以加班,不過因為個人喜好,我一般是回去吃飯,吃完飯之後再繼續幹活。那個時候,Matrix的成員每一個人都有開發任務,每一天都在實驗室裡面思考如何優化系統,+7大佬周末還會從深圳趕回來,榮哥還要兼顧杯口那邊的開發,當然其他像翔哥,莉莉姐,嘉威師兄,戴旋師兄,傑哥,笑爺他們都幾乎是雙線作戰的,當時還是大二的我們,因為Matrix才有機會學習到一個初創團隊的不易,規範的重要性以及整個軟體工程的規範流程是怎麼樣的。
因為軟體工程有一個暑期課程,所以在暑假的末尾我基本是三線作戰的:初級實訓TA,Matrix成績導出功能的實現以及DSP低功耗課程的作業,挺辛苦的,結果我居然無驚無險地完成了所有任務,這讓我覺得,棒棒噠~
不過在大三上學期因為課程太多了,計應的學渣還選了朝老師的數圖真的是gg,後面就真的沒有什麼時間去實驗室了,所有慢慢就淡出了Matrix的開發。而在大三下學期開始,雖然課程不多,但是我院某位教授的項目年底就要發布了,我當時作為前端唯一一個老前輩,沒有辦法只能挑起擔子(當然,並沒有做什麼文檔類的工作,忙於建立流程唉),那個時候我希望的是,將Matrix的規範化引入項目的。不過後期因為春招以及和PM有矛盾,我退出了項目。
2017年的4月可以說是我相當悲催的一個月了,那個時候還沒有offer也沒有項目,每天只能忙於和師兄討論自己的不足,討教面試技巧,還有忙於投簡歷以及面試。後面去了公司實習了,offer也收到了一個,整個人才放鬆下來慢慢回想,我給Matrix帶來了什麼,Matrix又給了我什麼?
後面有一天不小心在吐槽舍友的時候,榮哥來安慰我,又問我要不要回Matrix。怎麼說呢?那段時間知乎有一個問題是dota方面的,是一個曾經小白現在技術還不錯的人講以前的公會還不讓他回去打公會活動後面掛了他前公會會長的。看完以後,我就覺得,大佬這樣對我,真的沒話說了,不是每一個大佬都有這樣的胸襟去接納我的。現在想想,那個時候真的有點熱淚盈眶的感覺,因為是我自己走的人家還邀請你回來建設,彷彿是流離失所的孩子找到了家的感覺,那個時候,我就決定,真的需要什麼我都會儘力去做。
如果說我給Matrix帶來了什麼?大概就是一些css垃圾的頁面,也給前期的建設盡了微不足道的力量。如果說Matrix給我帶來了什麼?大概就像是把我從一個狂妄的技術小白變成了一個技術一般的人,同時教會了我軟體工程是什麼,還有,告訴我只要我願意繼續當程序員,總會有人支持你的,彷彿就像家人一般的感覺。當然,當時那些給予我幫助的師兄,哈哈哈,也曾經是Matrix的人吶!
試了下我多年前的netid, 告訴我沒有這個用戶... 看來我是沒辦法試了...
好好奇這是啥,占坑先vpn連不了氣哭了
Matrix評測系統只看評測的話,是做得不錯的。
可是,Matrix上面的題目,質量非常糟糕。
我舉一個簡單的例子:
這樣的題,就放一個題目背景在這裡,對題目要求隻字不提。需要我們寫什麼函數?不說。每個函數是幹什麼的?不說。輸入?不說。輸出?不說。(反正我main.cpp丟上去了,自己看代碼去。)
這樣子的題目毫無營養,毫無價值。沒有明確的需求,全靠選手去猜。
考試(期中考,2016學年第二學期,楊永紅,程序設計II,計算機類)的時候也是這樣,有些題目說得不清不楚,全靠猜。考試才3個小時,你不給我明確的題目敘述,我們猜來猜去,就連最頂尖的選手都沒有做完。這樣子這場考試還有何意義?
還有這幅圖:
是誰給你的勇氣說「ACM隊想跟你合作,卻被你們拒絕了」。Sicily的題目在我手上,你想要我還不給你呢!
寫一個類似系統不難,但是堅持一年不斷優化嘗試加入各種工程方法還是值得尊敬的。
樓上有些看不起這個系統的同學呀,可能看了這系統用的技術覺得也就這樣,我也是。但是你寫一個試試?
直至目前,我仍覺得工程上的技術,很多也就那樣,但是寫出一個能讓很多人用的東西,僅從編碼上來講,各種corner case就煩死你的。能寫出一個demo,就以為接近終點了嗎。
最雷不過那個16畢業的師兄,他大概不知道現在的大一,計科,軟工,都在用這個M系統。他不知道,是他老掉牙了。只是秀優越的話,說說你現在的崗位不是更到位?讀研的話,秀秀你的學校咯。強行答一波。
去年入讀計算機,剛剛好遇上了matrix的1.0版本,那個時候的matrix還非常不穩定,經常因為各種問題直接掛掉,埋怨聲也非常多。
但是接觸完西西里,頓時感覺matrix實在是太良心了,界面好看,debug也非常不錯,雖然對於那些長輸出被收起來到more data還是比較不方便(希望這一點有所改進)。
然後第二學期回來,matrix的界面又得到了更新,UI設計水平明顯上去了,伺服器出錯的情況也變得非常少,大量功能也都在完善中,印象也逐漸好轉。
總的來說,畢竟作為一個校內項目,能做到這麼良心的水平,也是非常不容易了。可能對於報錯系統以及評測系統仍然有很多值得改進的地方,討論系統感覺起來也是非常雞肋,但是對matrix還是抱有信心的。
給前面的TA以及開發matrix的前輩點個贊
一個可以佔領機器人俱樂部實驗室的優秀團隊,溜 。
用得很不錯,但是2.0的現在那個驗證碼很蛋疼→_→,又沒那麼多人盜號,還每次都要輸入。希望是連續輸入錯誤幾次以後才有驗證碼
17年夏令營上機考試用到了。
第一次用這個系統,
至少少拿200分!17研究生入學考試上機用的這個系統,我就覺得吧,都是同齡人,他們已經在寫系統了,而我還得在同齡人寫的系統上考試,佩服佩服。
ps雙選系統也是這個團隊做的吧,邏輯比較迷,吐槽一下。。。。。。第一次使用matrix是大一下機C++考,居然要我們寫完後手動備份,提前下載網頁,考到一半還崩潰了,不知道萬海當時為什麼一定拿我們當做不完善的系統的試驗品呢,從此就對matrix留下不好印象。。大一大二實訓使用時中規中矩,看得出來也有所改進,但用的少也沒有什麼使用感想了,雖然宣傳上好像很給力(有點王婆賣瓜自賣自誇的感覺),效果。。。仁者見仁智者見智吧
12級的老人表示沒用過這個東西,桑心
匿名吐槽
挺好的設想
挺好的舉動也有著穩定的維護團隊有朝一日必成中大學子吹牛逼的成本之一只有一個槽點:能別把一看就能看到的bug一起發布出來嗎?你可以改完放下個版本,不急的。
PS:之前我看到一個bug是當頁面調小時,懸浮在右邊的一個框成功擋住了中間的關鍵信息。我不信這麼明顯你看不到。推薦閱讀:
※參加第五屆"圖靈杯"NEUQ-ACM程序設計競賽(個人賽)是什麼體驗?
※傳說中能解決一切區間處理問題的莫隊演算法是什麼?
※怎樣寫出清晰易懂的演算法競賽題題解?
※如何直接跳出深層遞歸而不是一層一層跳出?
※獲得ACM ICPC Regional銀牌是一種什麼樣的體驗?