Browsed by
分类:Uncategorized

毕设工作结束了呢

毕设工作结束了呢

准备论文,改论文,一遍遍地改

答辩,再次答辩

提交材料

最后终于结束了呢

 

可以开始开坑之路了\w/

An Encrypted Message

An Encrypted Message

Pass: My Birthday

NEUOJ Developer Wanted!!!

NEUOJ Developer Wanted!!!

本人为NEUOJ的创始人 NEUOJ的地址为 http://202.118.31.226  目前该OJ为NEUACM团队的官方训练系统,本系统也举行较大规模的比赛,如省网络赛,如中天钢铁程序设计竞赛等,采用Laravel框架+domjudge开发
诚邀Laravel党,C/C++触 以及想要加入我们,学习OJ开发的对技术感兴趣的同学和我们共同开发

我们采用git协作开发,使用DroneCI进行持续集成,测评采用分布式部署,我们的Bug Report全部公开提出可以在github上看到我们的BugReport和项目计划文档 github.com/VOID001/NEUOJ-bug-report

 

我们招纳的开发者方向有

  • OJ Web后端开发者 使用PHP + Laravel进行OJ开发, 并结合当今的先进web开发技术如redis 能够熟练使用MySQL Linux Shell 以及 git 者优先
  • OJ Web前端开发者 使用JS, JQuery, Angular JS进行前端网页开发
  • OJ 测评后端开发 使用C, Shell, Golang, 并不局限于这几种语言 要求对Linux有熟练的掌握 以及参与过C的大中型项目开发
  • 学习者 选择上述任一方向之后加入OJ开发 在一定期限内学习相关技术之后投入开发

[github-issues username=”VOID001″ repository=”NEUOJ-bug-report” limit=”10″]
想要加入的请将你的学号 姓名 学院 个人简介 发送到zhangjianqiu13 AT gmail DOT com

 

qq-github-bugreport

qq-gitlab

qq-bc1

又咸鱼了一周=0=

又咸鱼了一周=0=

好久没继续更新博客了啊喂= = 你要咸鱼到什么时候呀修罗酱=  = , 快起来更新博客!

提供给计算机,软件专业的资料

提供给计算机,软件专业的资料

入门篇

提问篇

提问前请看提问的艺术 这里是简体中文版, 下面有英文版

学习计算机专业, 自主能力非常重要, 学会多思考, 没有经过自己深思熟虑, 并且亲自尝试试验的问题不要提出来, 这样就算有人回答了你, 你也没有学到任何东西, 拒绝伸手党, 强烈建议大家阅读 提问的艺术 一文, 本博客内有该文章的转载, 链接在这里

如果你看不进去那么长的文章, 那么你基本不适合学习计算机, 如果你能按照提问的艺术中讲到的去做, 那么你的自学能力会有很大的提高

语言篇

入门必看: 强烈推荐所有的, 无论对计算机有了解还是没有了解的新生, 去看 哈佛大学的公开课: 哈佛大学CS50, 在网易公开课就有, 链接自己搜索一下

入门语言强烈建议为C语言, C语言是面向过程的语言, 没有类的概念, 入门C语言学会控制流(顺序, 分支, 循环 三大结构) 以及递归的思想, 还有初步了解指针的含义, 就算做C语言入门了 推荐大家去Online Judge 做做简单的题目, 锻炼自己的编程能力, 下面推荐一些书籍

首先要说明的是, 一定不要看谭浩强的C语言入门教材, 本教材的代码严重不符合规范, 且老套

推荐书籍:

C语言入门经典 http://item.jd.com/11362614.html (大家以后购买计算机书籍, 认准黑色书皮的,  以及国外的经典作品)

(华章教育的图书, 图灵丛书, 都是非常好的计算机资料的出版社)

C Primer Plus http://item.jd.com/10062260.html  适合对编程有一点感觉的新生来看, 不然的话可能看不进去

C 和指针 http://item.jd.com/10062667.html 适合对C语言已经有一定了解, 并且能够熟练编写100行左右的C语言程序的同学看, 深入对C语言的指针进行了解

C 陷阱和缺陷 http://item.jd.com/10062654.html 适合已经写过5000行+的C语言代码的同学看, 本书介绍了很多C语言的特性和问题, 给大家指出了很多在写C语言的时候可能遇到的坑

看完这些书, 你对C语言基础(强调!!!! 是C语言基础, 不是C语言, C语言远比大家想象的复杂) 已经非常熟练了, 不过这远远不够, 只会语言不会算法的话, 是写不出来什么有用的程序的

 

算法&数学篇

对于编程语言有一定了解之后, 就应该去学习算法, 算法是程序设计的思想, 像你们之前学到的冒泡排序, 还有二分搜索都是简单的算法, 除了这些之外, 想要写出高效, 可靠的程序,需要对算法有系统的学习, 下面推荐一些算法方面的书籍

啊哈,算法 非常非常基础,非常非常科普向的一本面向小白的算法书

算法导论 算法界的经典著作, 适合入门看, 不过需要付出很大的努力才能吃透

大话数据结构 生动形象地讲解了常用的数据结构, 里面的代码均可正常运行

具体数学 计算机专业的数学经典, 适合锻炼思维, 学习思想

算法竞赛入门经典 & 配套的训练指南 这个是面向想要参加算法竞赛的同学,  本书适合作为算法竞赛的入门书籍, 配套的训练指南中的题目难度有相当的难度, 适合提高使用

[因为我懒我就没提供商品链接]

原理篇

在你将算法 数据结构 & 编程语言都掌握的比较熟练之后, 对于计算机的原理有一个很好的理解就是提高的关键, 这里不列举书籍, 因为对于大家这个目标还过于久远,而且, 能完成我之前说的那些,达到那个水平的同学, 都应该具备了自己获取优质资料的能力, 在此给几个原理的方向

编译原理 了解将代码转变为机器语言的整个过程, 如何根据特定的平台进行优化 难度: 很高

操作系统原理: 了解整个操作系统的原理, 推荐网站 wiki.osdev.org 这个网站有教程引领大家写一个操作系统出来 难度:非常非常高(不要笑, 涉及原理的东西没有简单的)

数据库原理: 介绍略

.掌握一个领域的原理, 你就可以说你已经在那个领域达到一个相当的高度了~

 

资料篇

下面提供一些非常优质的计算机&软件专业的(或者说程序员们)不应该错过的网站

github.com 具体是什么自己去了解

coursera.org edx.org 国外两大MOOC网站

codecademy.com 在线学习不同编程语言的网站 需要科学上网

codecombat.com 一个有趣的通过编程玩游戏的网站(需要科学上网)

https://www.jisuanke.com/ 国内比较好的在线编程学习平台, 建议从入门学起, 根据自己接受能力逐渐学习

https://www.shiyanlou.com/ 国内比较好的在线编程学习平台, 如果大家对Linux感兴趣, 这里有很不错的课程, 可以不用自己安装双系统, 就进行Linux的学习, 在线操作Linux操作系统, 另外还有很多其他的课程, 都很不错

google.com bing.com 好用的搜索引擎

因篇幅有限,在此仅列举这些网站, 还有非常多的好的网站大家自行寻找,欢迎分享给大家, 技术是需要分享才能进步的

安利篇

最后, 如果你是一个对技术非常感兴趣的同学, 热爱计算机技术, 自学能力强, 欢迎加入我们东北大学先锋网络中心网络部 下面的链接是对我们部门的一个介绍

https://neup-net-depart.github.io/Welcome-to-NEUP-Net-Depart/

另外如果你自己认为自己是一个geek, 欢迎加入NEUP Geek群, 我们提供一个优质的技术交流环境~ 欢迎一起交流, 群号

就在上面链接的最下方

 

资源篇

这里整合所有窝认为很好的资源,供自己查看&分享他人

C Puzzles

数百个具有挑战的逻辑谜题

千里码,一个在线编程问题解决平台

程序员游戏

程序员游戏-再

awesome-awesomeness

要考试了 QWQ

要考试了 QWQ

窝要考试了= = 我发誓, 考完试更新至少两篇blog

 

多线程

用 C 操作luaAPI [DONE]

NEUOJ Tech Talk #1

NEUOJ Tech Talk #1

开始之前

First Slide , Wait till 18:30

欢迎大家来到NEUOJ Tech Talk技术交流会, 今天, 我们会将在开发东北大学学生在线测评系统(NEUOJ)中使用的种种技术, 以通俗易懂的方式,分享给热爱技术的你们, 那么在我们的Talk开始之前, 让我们首先感谢那些对我们OJ开发给出种种建议的各位同学, 并颁发我们的奖品

颁奖环节

我们有请吴老师, 为他们进行颁奖

感谢吴老师,我们的NEUOJ 持续提供给大家进行渗透测试, 安全测试的平台, 并且对成功找到并且利用我们OJ的漏洞的同学,颁发丰厚的奖品, 从32GU盘 到 2T移动硬盘, 视漏洞大小而定, 对为OJ提出宝贵建议, 报出非常有价值的bug的同学,我们会进行奖励  欢迎大家踊跃参与

那么现在, 就让我们开始吧~

[Slide 2]

Tech Talk Starts

首先, 我们来了解一下,NEUOJ到底是什么

我们会先介绍 什么是Online Judge , 然后介绍 为什么我们要开发NEUOJ, NEUOJ的特点是什么, 然后会给大家展示NEUOJ的开发史

[Slide 3]

什么是OJ呢, OJ是一个可以在线编译提交的代码, 并且自动对代码的运行结果进行判断, 并且返回给用户判断之后的结果这样一个系统, O 代表Online, J代表 Judge。 我们下面来展示一下,什么是在线编译器。 [切换图片]大家可以看到,这是一个在线编译网站 codepad 的界面, 我们写了一个Hello world …, 然后选择我们的编程语言,C语言, 大家可以看到,这里支持C/C++/Haskell/PHP等多种编程语言的在线编译运行 [对这个图片进行解释], 然后当我们点击提交之后,[切换图片] 就会看到这个界面: 我们可以看到,这里已经输出了我们程序的运行结果。 这就是Online Compiler, 而Online Compiler 的功能的基础上, 再加上自动测评(Judge)的功能, 就是我们的Online Judge.[图片展示] [简单介绍]

[Slide 4]

现在流行的Online Judge 平台有北京大学的POJ, 杭州电子科技大学的HDUOJ, BestCoder, 以及国外知名的Leetcode, Codeforces, 还有Topcoder,下面,我们来看看NEUOJ是什么

我们的NEUOJ使用的是当今最流行的Web框架 Laravel, Laravel框架具有极高的可扩展性,丰富的插件系统,以及很好的安全性。同時, 我们的测评后端具有高度的扩展性,可以支持各种方式的测评,目前我们只支持了最基本的测评, 之后,我们会考虑增加更有趣的功能,如人机对弈测评机制等测评方式,之后,我们会详细介绍我们是如何实现的高度扩展性的测评系统 . 我们的NEUOJ不同于codeforces是为了举行各种比赛而建立的OJ,NEUOJ的服务是提供给广大学生,我们的天梯训练training系统提供给大家一个循序渐进提升自己代码能力的路线,用于让我校的各个专业的对编程有兴趣的同学提高自己的编程能力, 也给老师们进行计算机相应教学,提供一个测评编程能力,算法能力的平台。同时也为那些想要通过技术甄选成员的组织,以及想要带学生做项目的老师,提供一个测评能力的平台, 可以通过OJ提供的排行榜ranklist, 以及大家的代码统计信息,选出能力出色的同学加入

[Slide 5]

下面我们来一起看一下NEUOJ的开发历史:

2015-11-25 在我们开完第一次OJ开发会议之后,进行了第一次的代码提交,截止目前, 我们OJ已经有348个提交, 20000+行代码 ,近100个公开Issue,[一张张图片展示] [并进行解释]

我们的OJ目前已经支持的主要功能有,题目管理,竞赛系统,天梯训练系统,预计2.0版本开发完毕,要支持的功能有:[切图]

DEMO 下面我们请一位同学上台体验一下,我们的OJ的管理员后台,实现添加一道题目,并且添加一个比赛

[Slide 6]

那么对于这样的一个NEUOJ,我们是如何构建的呢, 下面我们会从,如何对代码进行管理,我们使用的Web框架,以及NEUOJ的核心,测评端, 以及NEUOJ的界面设计,前端技术几个方面进行介绍

[Slide 7]

首先,让我们来介绍NEUOJ的代码管理系统~ git

对于348commits 6 — 8 developers 合作的一个项目, 我们是如何实现多人协作开发, 即多人同时修改同一份代码的?

答案就是 GIT

相信在座的各位同学应该有日常使用git的, 那么什么是git呢? 谁能来回答一下?

那么下面让我们来了解一下,git到底是什么

我们设想这样一个情景  [这里举例 git的版本管理]

下面我们请NEUOJ后端开发组的洋葱同学, 结合刚刚我们说明的情形, 为大家演示一下git的使用

[Slide 8]

 

结合图片讲MVC

介绍Eloquent ORM

[Slide 9]

结合图片介绍Judgehost

简单介绍RESTfulAPI

简单介绍如何保护我们的运行环境

[Slide 10]

下面请NEUOJ的前端负责人 su123456 同学介绍一下, OJ前端开发所用到的技术

 

一个项目,最重要的并不是编写代码进行开发, 而是对项目进行维护,管理,保证项目的健壮性, 可用性,以及优化项目的性能, 接下来就来了解一下,我们是如何保证NEUOJ的质量的

我们将介绍如何提升OJ的性能, 以及如何自动化的测试代码的质量, 以及保证我们的服务器的安全性三个方面来介绍

[Slide 11]

[Slide 12]

[Slide 13]

安全DEMO 暴力破解密码

在这次Talk的最后, 我想要介绍一下, 这两个词语 Opensource 以及 Geek [jieshao]

最后,感谢大家参与这次技术交流会, 也希望我们今天所讲的能给大家一定的帮助,同时欢迎更多的同学研究技术, 学习技术, 也欢迎对OJ开发感兴趣的同学加入我们,同时,欢迎大家加入我们的NEUOJ Geek 群,大家一起分享技术,交流技术。NEUOJ Tech Talk #1就到这里了, 谢谢大家~