计算机科学家的Web开发

时间:2009-04-01 00:13:02

标签: ruby-on-rails process

我拥有计算机科学学士学位,因此有开发在命令行或基本GUI上运行的软件的经验。但是,我没有制作真实,实用的网站的经验。对我来说很明显,我需要扩展我的技能以包含Web开发。我一直在使用Ruby来开发应用程序,但我知道它在Web开发中非常流行。我想利用我作为程序员的技能帮助我为一个乐队开发一个个人网站。

我有使用HTML的经验,但很少使用CSS。我希望利用我的编程语言技能来创建一个包含图片,音频剪辑,动态日历,日程安排请求工具以及乐队网站常用的其他功能的网站。

有哪些资源可供合格的桌面程序员学习开发网站的整个过程?是否最好使用免费的CSS模板和WordPress作为我的网站的基础或从头开始制作?我应该使用GUI工具还是在Vim / Emacs中全部编写? Ruby on Rails是否足以支持我的个人网站,还是应该考虑更成熟的开发平台?

我这个项目的主要目标是加快当前的网页设计技术,并真正了解建立网站的整个过程。

9 个答案:

答案 0 :(得分:20)

我认为在Web开发中要理解的一件非常重要的事情是HTTP。 HTML和CSS很重要,但我认为理解Web的无状态特性以及每个HTTP动词如何工作以及它们能做什么/不能做什么更为重要。

http://www.freeprogrammingresources.com/http.html

查看HTTP工作原理的一个好工具是Fiddler

答案 1 :(得分:12)

如果它与任何事情一样多的学习练习,那么采取迭代的方法。建立修改。建立修改。我的(非常)粗略的指导方针如下:

客户

  1. 从网站结构开始,专注于客户。
  2. 使用记事本并为您的乐队构建一堆静态页面。即最初的手码。尝试使用CSS构建所有页面。没有表格标记。然后玩一些Javascript来实现生活。 (导航菜单\日历选择\等)。了解如何导入和链接到Javascript和CSS文件....以及如何处理这些文件:缓存等。
  3. 尝试了解您在客户端(通常)可以做的事情的极限。考虑3-4个浏览器(Firefox / IE6 / IE8 / Chrome)的细微差别:DOM和客户端事件。
  4. 服务器

    1. 然后开始寻找您可能希望在页面/会话中更改的内容。即什么需要操纵服务器端。并选择服务器端技术。
    2. 从基本的回复处理开始。此时忘记数据库。了解您的选择框架如何保持状态.....不仅仅是技术的名称,而是它的真正基本要素。作为Web开发人员,您最大的一项资产就是了解您正在使用的技术的状态模型。
    3. 然后深入研究选择的Web服务器技术(一般而言)。了解从客户端到服务器并返回的完整请求管道。这将教你形式,http和它的动词,web服务器,过滤器和模块,服务器到框架切换,页面和控制生命周期,回到客户端。
    4. 现在开始研究动态内容注入等。如何在网页中制作和使用可重复使用的组件。
    5. 数据库,缓存,性能和诊断。
    6. 然后进入所有有趣的东西,如ajax等。用jQuery替换你的javascript等。
    7. 然后你就会发现整个Webservices \ XML \ JSON \ etc方面。
    8. <强>资源

      显然,网络很好。对于客户端的东西,去制作第三方Web控件的公司的网站可能非常有趣。问他们到底是怎么回事? Viewsource是你的朋友。看看他们如何构建和构建他们的页面。选择一些优秀的网页设计师网站,你会发现大量关于浏览器大战的咆哮等等,这些都会给你带来好的(引擎盖下)信息。

      一旦你到达服务器端,我就会从你选择的供应商那里学习白皮书类型的技术。 Web服务器/框架/等。再次找到第三方howto / evangelist网站(我过去常常使用很多来自Rolla的4个人)来演示如何做各种事情。语言学习正在进行中。基本上只做最好的事情,直到找到更好的方式......并始终注意寻找更好的方法。

答案 2 :(得分:8)

你真的需要了解html,form和css来获取任何地方。我说形式,因为这将给你理解web dev的无状态性质所需的往返。

为了进一步说明这一点,我采访了很多人,他们认为你只能在一个页面上有一个表单,每个表单只能有一个提交按钮。这完全取决于缺乏基础知识。

因此,我建议从htmldog.com开始。

之后,很多Web开发都是使用框架完成的。你自己做的日子已经一去不复返了(大多数情况下),但我的上述观点仍然存在。你需要能够有信心地在引擎盖下窥视。

我已经进行了12年的Web开发,并在Solaris和Linux上开始使用Perl。从那时起,我也完成了Java和最近的ASP.NET。但是,在我的私人项目中,我正在为Django慢慢堕落。

我多年来发现的是,固有的问题 - cookies,javascript,演示,状态,身份验证都是一样的,但处理方式不同。所以最终归结于你和你的语言偏好。在潜在就业方面,还有一些开明的自我利益。

除了编程之外,你还应该熟悉Web服务器(我想到的是Apache和IIS),Http代码和头文件,Mime类型以及编码和FTP。以及Javascript(已经提到),插件,浏览器平台和良好的开发实践,如使用Firebug,Fiddler等。了解可用的图像格式,图像优化,CSS精灵,内容压缩,缓存等也不会有什么坏处。

一切都取决于你想要开始的地方!

对于新手,我会选择Django和(显然)Python。良好,干净的语言与廉价的启动选项,低成本的IDE(即免费)和托管您的网站是非常实惠的。

但这只是一种主观意见。

答案 3 :(得分:3)

如果你的目标是

  

我这个项目的主要目标是   加快当前的网页设计速度   技术,实际上了解   整个建设过程   网站。

然后从头开始在Ruby,PHP,Java,ASP.NET等中......

当您遇到设计问题或只是想知道其他人如何处理某些问题时,请查看框架。

一旦你的速度加快,你的网站开始增长,然后逐步进入一个框架,以加快框架的速度。

答案 4 :(得分:2)

如果按照John MacIntyre's suggestion从头开始,您可能会倾向于PHP。对于它的所有shortcomings,它确实有一个really good user manual。它也很容易上手,并且几乎安装在每台主机上,并与Apache配合使用。

另外,w3 schools很适合开始学习CSS和XHTML,但不要忘记查看W3C的规范。

另外,请阅读this Stack Overflow question & answers

答案 5 :(得分:2)

我同意John的观点。

根据您自己在攻读理学士学位方面的经验,了解任何语言的基础知识,使您更有能力扩展知识或专业。

考虑到这一点,最好理解HTML和CSS的基础知识。

当您想要使用Django和Rails等框架进行大型项目时,了解语法和整体语言将会有所帮助。基础知识还特别有助于调整CMS,如Wordpress,以便更加可根据您的需求进行定制。

我要特别提到的一点是,网络编程与许多其他形式的编程一样,都有自己独特的结构和“正确”的处理方式。http://www.w3.org是一种很好的方法来确保你的工作正在通过一般的网页设计标准,大多数网站都没有遵循这一点,因为它很乏味,但从学习的角度来看,它确保你有一个很好的坚实基础。

www.w3schools.com也是提供网络编程详细帮助的绝佳资源。最后,我喜欢丰富多彩的代码,所以我喜欢使用基本的文本编辑器,如notepad ++或notepad2或gedit来进行网络编码。像Dreamweaver这样的GUI可能会用额外的垃圾和空格填充你的代码,所以我不推荐它们,但它们仍然是很好的工具。

答案 6 :(得分:2)

还不打扰Rails - 在Ruby中编写CGI脚本。它与你在课堂上所做的非常相似。

在你掌握了大约30个之后,你就会知道你想要一个网络框架。

答案 7 :(得分:2)

我是计算机科学家和网络程序员,我建议你学习HTTP和CGI:

正如上面教程的标题所说,他们让这些概念“非常容易”。

一旦你获得了CGI和HTTP,我建议你查看以下网站,这些网站提供了大量关于网络编程的文章和参考资料:

假设您想专注于编写Web应用程序,那么Perl,PHP,Python和Ruby都是很好的选择(我自己主要使用Perl),我建议对每种语言可用的流行Web框架进行一些研究。

最重要的是,选择一些简单的东西作为您的第一个网络应用,例如表单和页面,显示提交该表单的结果。一些很好的例子(使用Perl的CGI模块)可以在这里找到:

如果您想开始编写使用数据库的Web应用程序,请阅读所选语言的SQL和常用库/模块以进行数据库操作,尤其是ORM(对象关系映射)接口,它们允许您处理记录以面向对象的方式。

祝你好运!作为一名网络程序员很有趣,因为你的观众是intarwebz! :)

答案 8 :(得分:1)

对于你所描述的内容,Rails或Django可能会有点矫枉过正,但学习它们并没有什么坏处。特别是Django可能很好,因为包含多个应用程序(例如日历)的项目的概念。

无论您是使用框架还是自己编写所有内容,您都需要了解HTML和CSS。如果您拥有CS中的BS,CSS非常简单......您可以在五分钟内阅读教程并了解它。