1.要成为一名专业的从零程序员,从零开始需要怎么一步步来比较好,开始要把最底层的学习先学精通吗?(个人认为)求学长
2.为啥南京大学蒋炎岩老师的操作系统课那么难?
3.ONOS 从零入门教学 (应用程式新增,安装及测试)
4.合同上源码开发是第课什么意思
要成为一名专业的程序员,从零开始需要怎么一步步来比较好,源码要把最底层的从零趋势划线选股源码先学精通吗?(个人认为)求学长
前言
你是否觉得自己从学校毕业的时候只做过小玩具一样的程序?走入职场后哪怕没有什么经验也可以把以下这些课外练习走一遍(朋友的抱怨:学校课程总是从理论出发,作业项目都看不出有什么实际作用,开始不如从工作中的学习需求出发)
建议:
不要乱买书,不要乱追新技术新名词,第课基础的源码东西经过很长时间积累而且还会在未来至少年通用。
回顾一下历史,从零看看历史上时间线上技术的开始发展,你才能明白明天会是学习什么样。
一定要动手,第课例子不管多么简单,源码建议至少自己手敲一遍看看是否理解了里头的细枝末节。
一定要学会思考,思考为什么要这样,而不是那样。还要举一反三地思考。
注:你也许会很奇怪为什么下面的东西很偏Unix/Linux,这是因为我觉得Windows下的编程可能会在未来很没有前途,原因如下:
现在的用户界面几乎被两个东西主宰了,1)Web,2)移动设备iOS或Android。Windows的chromium修改主页源码图形界面不吃香了。
越来越多的企业在用成本低性能高的Linux和各种开源技术来构架其系统,Windows的成本太高了。
微软的东西变得太快了,很不持久,他们完全是在玩弄程序员。详情参见《Windows编程革命史》
所以,我个人认为以后的趋势是前端是Web+移动,后端是Linux+开源。开发这边基本上没Windows什么事。
启蒙入门
1、 学习一门脚本语言,例如Python/Ruby
可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序。实践项目:
处理文本文件,或者csv (关键词 python csv, python open, python sys) 读一个本地文件,逐行处理(例如 word count,或者处理log)
遍历本地文件系统 (sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果
跟数据库打交道 (python sqlite),写一个小脚本统计数据库里条目数量
学会用各种print之类简单粗暴的方式进行调试
学会用Google (phrase, domain, use reader to follow tech blogs)
为什么要学脚本语言,因为他们实在是太方便了,很多时候我们需要写点小工具或是脚本来帮我们解决问题,你就会发现正规的编程语言太难用了。
2、 用熟一种程序员的编辑器(不是IDE) 和一些基本工具
Vim / Emacs / Notepad++,学会如何配置代码补全,积分商城源码搭建外观,外部命令等。
Source Insight (或 ctag)
使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率。
3、 熟悉Unix/Linux Shell和常见的命令行
如果你用windows,至少学会用虚拟机里的linux, vmware player是免费的,装个Ubuntu吧
一定要少用少用图形界面。
学会使用man来查看帮助
文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
学会使用一些文本操作命令 sed/awk/grep/tail/less/more …
学会使用一些管理命令 ps/top/lsof/netstat/kill/tcpdump/iptables/dd…
了解/etc目录下的各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息
了解正则表达式,使用正则表达式来查找文件。
对于程序员来说Unix/Linux比Windows简单多了。(参看我四年前CSDN的博文《其实Unix很简单》)学会使用Unix/Linux你会发现图形界面在某些时候实在是太难用了,相当地相当地降低工作效率。
4、 学习Web基础(HTML/CSS/JS) + 服务器端技术 (LAMP)
未来必然是Web的世界,学习WEB基础的最佳网站是W3School。
学习HTML基本语法
学习CSS如何选中HTML元素并应用一些基本样式(关键词:box model)
学会用 Firefox + Firebug 或 chrome 查看你觉得很炫的网页结构,并动态修改。
学习使用Javascript操纵HTML元件。理解DOM和动态网页(Dynamic HTML: The Definitive Reference, 3rd Edition - O'Reilly Media) 网上有免费的章节,足够用了。外链代码源码或参看 DOM 。
学会用 Firefox + Firebug 或 chrome 调试Javascript代码(设置断点,查看变量,性能,控制台等)
在一台机器上配置Apache 或 Nginx
学习PHP,让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成初步认识。实现一个表单提交和反显的功能。
把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)
跟完一个名校的网络编程课程(例如:(升级版为Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。
为啥南京大学蒋炎岩老师的操作系统课那么难?
为何南京大学蒋炎岩老师的操作系统课程如此引人入胜? 遇见蒋炎岩老师,那真是一种学习上的福分。他不仅在课堂上采用B站直播和OBS录屏直播,还将屏幕完美地同步到投影仪,仿佛置身于他的操作系统世界。他的教学方式独特,亲力亲为,无论是Linux的日常操作,还是shell编程如fish,IDE如VSCode,甚至是网站建设的源码vim的熟练运用,都让你见识到一个技术热情高涨的教师风采。他甚至利用chatgpt开发了课堂提问工具,直播互动中,弹幕姬更是一个技术驱动的终端命令行程序。 蒋老师的个人网站上,你可以找到精心准备的PPT讲义,如那一节名为“Linux 世界中的应用程序 (从零开始构建 ‘最小’ Linux)”的课程,内容丰富,涵盖了minix操作系统构建、Linux发展历程、内核概念、qemu与实战演示,甚至包括Linux源码深度剖析。他的讲解深入浅出,将抽象理论与实际操作紧密结合,仿佛带你走进了操作系统知识的宝库。 尽管你可能会觉得课程内容看似天马行空,难以理解,但请记住,这正是蒋老师课程的独特魅力所在。对操作系统不感兴趣或是基础知识不足的学生可能会感到困惑,但对那些寻求更广阔视野的高年级学生或重学者来说,这是一次知识的盛宴,能让他们将理论与实践无缝对接。操作系统是计算机科学的瑰宝,深入其中的确需要时间和耐心,但蒋老师的课程正是以这种深度和广度,帮助你建立起坚实的理论基础。 对于初次接触这门课程的学生来说,可能会觉得压力山大,课程内容密集。但请相信,这正是成长的必经之路。当你在未来的某个时刻,因并行编程的问题或系统锁的困扰而挣扎,你会感激曾经有这样一个老师,用短短的几十分钟,清晰地解析问题的来龙去脉。蒋炎岩老师的课程,因其深度和实用性,赢得了学生的口碑,是真正值得珍视的学习资源。 总的来说,尽管初学者可能会在学习操作系统时遇到挑战,但蒋炎岩老师的课程正是那种能让你在日后受益匪浅的挑战。不妨暂时放下压力,先领略其精要,等你对操作系统有了更深的理解,再回头去细细品味,你会发现,那是一场知识的探险,而蒋老师的课程,就是你通往操作系统世界的指南针。ONOS 从零入门教学 (应用程式新增,安装及测试)
本文将介绍如何从零开始学习并使用ONOS,包括安装、配置和测试。首先,你需要获取ONOS的源代码并将其添加到.bashrc或.bash_profile中,使用预设的alias进行操作。然后使用构建工具(原为buck,现已更改为bazel)构建ONOS,并进行单元测试。
接下来,你可以在本地计算机上启动ONOS服务器,使用另一个终端开启ONOS控制台。成功后,会看到ONOS预设使用端口作为控制台。此时,恭喜你,已经成功在本地机上启动了ONOS。
ONOS还提供了图形用户界面(UI)界面,预设使用端口。你可以通过构建一个简单的SDN网络,包含4个Open vSwitch和9个主机,可以构建tree,2,3网络拓扑。在ONOS UI界面中,看到控制器识别的4台Open vSwitch,但主机未显示。这是因为Open vSwitch尚未知道主机的存在。你需要执行ping操作,控制器才会在交换机中安装flow。回到ONOS UI界面,现在应该能看到正确的显示。
ONOS中的应用是通过maven构建的,因此使用maven构建自己的应用。首先使用ONOS提供的工具将maven所需的artifacts推送到~/.m2。在外部路径或使用ONOS已打包的工具构建。注意,在pom.xml中未注释onos.app.name和onos.app.origin,会导致无法生成.oar文件。完成构建后,你应该能看到构建成功的画面。构建完成后的资料夹结构,有了最简单的maven结构后,你可以根据需求开始编写自己的ONOS应用。
最后,学习如何安装自己的ONOS应用。假设你已经编写了一个应用,例如onos-app-samples中的oneping。首先复制onos-app-samples到本地计算机中。onos-app-samples是一个包含ONOS样本应用的专案。使用onos-app-samples/oneping中的命令生成OAR档以用于安装。完成生成OAR档后,进入ONOS console执行安装命令,应用将被添加到ONOS中。最后,激活应用以使其可用,同样可以将其去激活。ONOS应用的安装档使用OAR作为格式。
合同上源码开发是什么意思
在合同中,"源码开发"通常指的是软件开发中使用的一种方法或服务。"源码"是指计算机程序的原始代码,即编写程序的开发人员使用的代码。源码开发包括根据特定需求从头开始编写软件代码,以满足客户的定制化需求。
当在合同中提到"源码开发"时,可能意味着开发商将根据客户的要求,从零开始或使用现有的代码库,编写、设计和开发软件系统。这种方法通常用于实现更定制、更复杂的软件功能和特性,以满足对特定需求的精确控制。
"源码开发"通常明确规定了由开发商交付给客户的软件开发成果,包括完整的源码、文档和必要的技术支持。
需要注意的是,源码具有原始的、编程语言级别的可读性,一般需要专业开发人员来理解和修改。对于非专业人员来说,了解源码可能需要一定的学习和专业知识。因此,在合同中涉及源码开发时,双方需明确约定与源码相关的使用、保密和授权等事项。最好在签订合同之前,与开发商进行详细的沟通和协商,确保双方对源码开发的期望和具体要求达成一致。