网页设计
前端开发
设计
网站
网站开发

单人做一个网站需要掌握哪些知识?

想学习如何做一个网站,却又不知道从哪里入手。请各位大牛给点方向性的意见,比如如何学习?学什么?学到什么程度? 强调一点,是自建网站。
关注者
12,022
被浏览
2,020,799

276 个回答

这么巧, how2j.cn/t/44 , 就是我一个人单独做的~

做了有一年半了,现在每天有1000个人访问,流量可真低呢,哈哈

简单列罗一下网站功能,以及需要什么知识, 当做题主学习思路的一种参考吧

1. 网页上要显示内容,需要学学HTML,比如这个页面,有文字,有图片。



2. 光有文字还不行,还要考虑不同的颜色,布局,排版,如图做出这样页面效果,要学学基本的CSS



3. 有一些交互,比如修改了代码可以实时看到效果,得掌握Javascript



4. 直接写CSS太累,需要套用别人写好的,来得快,也比自己做出来的好看,那么就可以用用Bootstrap



5. 现在网站有1000多张页面,不可能做1000张html呀,所以这些都需要维护在数据库里面,那就学一个简单的MySQL



6. 现在一共有55张表。。。。 怎么维护他们之间的关系~ 彼此如何依赖,外键如何关联,这个需要学习表关系的相关知识




7. 有了数据库,也有了表,那么如何从这些表里取数据呢? 我用的是JAVA技术栈,那么就需要用到JDBC



8. 为了使用JDBC不是需要Java基础吗? 为了仅仅满足JDBC的运行,需要如下JAVA基础

面向对象,变量 操作符 控制流程,数字与字符串,异常处理,集合,嗯,刚刚够





9. 这样JDBC就可以取出数据了,那么取出来之后怎么显示在HTML上呢? 需要用到JSP




10. 为了JSP可以运行,需要一个Servlet容器,TOMCAT,简单用用就可以了



11. 可是TOMCAT总不能在自己机器上跑嘛,要放在公网上,运行,其他人才看得到呀,所以需要掌握如何在LINUX里部署Tomcat



12. 那么挂在公网上的Linux自己怎么弄呢? 我也弄不来,我是在阿里云租的LINUX云服务器



13. 随着网站提供的功能越来越多,光用JSP开发太慢了,而且难以维护,这个时候就用到了Struts 加快开发效率



14. JDBC也有点难以维护了,那么就换成了Hibernate



15. 为了让Struts和Hibernate更好的整合在一起,那还得学学Spring以及这3个的整合



16. Struts常常有漏洞产生,所以还得时常打补丁,真后悔当初没有用SSM那套呢(其实当时也不熟SSM,哈哈~)



17. 为了更好的讲解知识点,录了教学视频,所以还得会录屏软件。。。。



18. 这些视频放在youku不太好,会有广告,放在云盘也不好,会被莫名其妙举报而关闭,所以还是放在自己网站吧。 那么为了播放,还的学会html5的播放方式



19. 看视频太慢,所以再加个不同速度的播放按钮,以及回放按钮



20. 随着访问的人数增多,看视频的人有个3,4个人同时看的时候,视频播放就卡成狗了,所以为了播放顺利,得把视频放在OSS上面去



21. 可是视频也多呢,一个一个得手动上传多麻烦,那就得调用阿里云的API,用Java帮你自动上传


22. 还有些和开发技术无关的,也是需要掌握的,比如域名,要自己去选购一个,也是在阿里云买的, 以前叫域名里包含java这个商标,害怕被oracle拿回去,就改了。

23. 光有域名还不行,当服务器是在国内的时候,是需要备案的。 备案流程现在简单多了,基本上7天就可以做完,不过其中有一个挺麻烦的地方,需要自己手写签字,然后再扫描出来发过去,可是我没有扫描仪呢,去楼下店里扫描又嫌麻烦,怎么办呢。。。。刚开始是在淘宝买5元的那种帮扫描的。。。 后来发现有的网站可以提供手写字体,于是把手写字复制下来,再ps到要填的单子上,发过去就行了,这个可是我十分得意的备案经验哟,哈哈

嗯~ 好像就这些吧~ 一眨眼看,貌似需要的知识也不少,其实很多很多的知识,在一开始做这个网站的时候,我都是不会的,比如Linux(掩面),HTML5播放视频,阿里云API。

刚开始做的时候,其实就是很基础的增删改查一套,做得过程中,发现需要做某个功能,做这个功能的时候再去学需要的知识,这样随着网站功能得一点点丰富,自己的知识,技能也成长了起来了。 和打游戏的道理一样一样,先整点简单的小副本,干点小BOSS,装等提升一些,技能熟练一些,多打几个小副本,到了进团队副本的时候,装等,技术也跟着就上来了嘛。

所以回到题主的问题 “给点方向性的意见,比如如何学习?学什么?学到什么程度?”。

试着自己做一个对别人有价值的个小网站嘛,简单的那种,比如分享你收集的PDF,小软件,考试题目什么的,以功能需求为导向,按需学习,这是最好的学习方式,也是最有意思,最有乐趣的方式。

从头到尾做一个站,像是搭一个积木;更像是设计并建造一栋建筑,你熟悉里面的一砖一瓦,这里面凝聚了你的创造性和灵感;甚至更像是你的小孩,你看着他一天天长大,里面有你的心血,懊恼,奋斗,挫折,成长,收获。

感谢这个时代,提供给我们这些独行者这样的环境,条件,机遇去做一件允许自己沉醉其中的事业。

其他相关: 知乎上前端开发领域有哪些值得推荐的问答? - 知乎

收藏的同学,请记得点个赞~

编辑于 2017-04-15 09:38

如果是为了学习,建议还是从基础的学起。不然永远跳不出工具的限制。

最基础的html, css得先学,会了这两个漂亮的静态页面可以做了。学了js,可以做一些前端交互了。ps也是要学的,既然是一个人,美工也不能少。再看看一些前端框架,更棒了。

接下来就是后端了,.net, node, php, java等等看个人喜好。

网站跑起来之后还得部署,这时候运维啊,SEO啊啥的也得学学。

为了更好地管理代码,git也需要学下。

如果是做项目,具体情况具体分析,如果时间比较紧迫,而且功能比较简单建站工具能做的,那可以用这些建站工具做,成本最低的就是最适合的。

早些年我还是很喜欢用wordpress这类的建站工具的,毕竟作为博客还是很简单,5分钟应该就能搞完了吧,后面就是主题之类的配置配置啥的。但是对于题主所说的自建网站,并不清楚具体是什么需求。尽管wp这类的建站工具也有着非常丰富的插件,然而对于多样化的自定义功能,也会捉襟见肘,二次开发也是挺蛋疼的。

建站工具并不是万能。建站工具并不是万能。建站工具并不是万能。

编辑于 2016-11-10 15:37

你可以在开源电子书《

Growth: 全栈增长工程师指南

》上了解到 Web 开发所需要的知识体系,然后在电子书《

Growth: 全栈增长工程师实战

》实战相关的内容。

Growth: 全栈增长工程师指南

》目录

  • Growth: 全栈增长工程师指南
    • 全栈工程师是未来
      • 技术的革新史
      • 软件开发的核心难题:沟通
      • 大公司的专家与小公司的全栈
      • 全栈工程师的未来:无栈
  • 基础知识篇
    • 工具只是辅助
      • WebStorm 还是 Sublime?
      • 语言也是一种工具
    • 提高效率的工具
      • 快速启动软件
      • IDE
      • DEBUG 工具
      • 终端或命令提示符
      • 包管理
    • 环境搭建
      • OS X
      • Windows
      • GNU/Linux
    • 学好一门语言的艺术
      • 一次语言学习体验
      • 输出是最好的输入
      • 如何应用一门新的技术
    • Web 编程基础
      • 从浏览器到服务器
      • 从 HTML 到页面显示
    • HTML
      • hello,world
      • 中文?
      • 其他 HTML 标记
      • 小结
    • CSS
      • 简介
      • 样式与目标
      • 选择器
      • 更有趣的 CSS
    • JavaScript
      • hello,world
      • JavaScriptFul
      • 面向对象
      • 其他
  • 前端与后台
    • 后台语言选择
      • JavaScript
      • Python
      • Java
      • PHP
      • 其他
    • MVC
      • Model
      • View
      • Controller
      • 更多
    • 后台即服务
      • API 演进史
      • 后台即服务
    • 数据持久化
      • 文件存储
      • 数据库
      • 搜索引擎
    • 前端框架选择
      • Angular
      • React
      • Vue
      • jQuery 系
    • 前台与后台交互
      • Ajax
      • JSON
      • WebSocket
  • 编码
    • 编码过程
    • Web 应用的构建系统
      • Web 应用的构建过程
      • Web 应用的构建实战
    • Git 与版本控制
      • 版本控制
      • Git
    • Tasking
      • 如何 Tasking 一本书
      • Tasking 开发任务
    • 写代码只是在码字
    • 内置索引与外置引擎
      • 门户网站
      • 内置索引与外置引擎
    • 如何编写测试
      • 测试金字塔
      • 如何测试
    • 测试替身
      • Stub
      • Mock
    • 测试驱动开发
      • 红-绿-重构
      • 测试先行
    • 可读的代码
      • 命名
      • 函数长度
      • 其他
    • 代码重构
      • 重命名
      • 提取变量
      • 提炼函数
    • Intellij Idea 重构
      • 提炼函数
      • 内联函数
      • 查询取代临时变量
    • 重构到设计模式
      • 过度设计与设计模式
  • 上线
    • 隔离与运行环境
      • 隔离硬件:虚拟机
      • 隔离操作系统:容器虚拟化
      • 隔离底层:Servlet 容器
      • 隔离依赖版本:虚拟环境
      • 隔离运行环境:语言虚拟机
      • 隔离语言:DSL
    • LNMP 架构
      • GNU/Linux
      • HTTP 服务器
    • Web 缓存
      • 数据库端缓存
      • 应用层缓存
      • 前端缓存
      • 客户端缓存
      • HTML5 离线缓存
    • 可配置
      • 环境配置
      • 运行机制
      • 功能开关
    • 自动化部署
      • 依赖与包仓库
      • 构建软件包
      • 上传和安装软件包
  • 数据分析
    • 构建-衡量-学习
      • 想法-构建
      • 产品-衡量
      • 数据-学习
    • 数据分析
      • 识别需求
      • 收集数据
      • 分析数据
      • 展示数据
    • 用户数据分析:Google Analytics
      • 受众群体
      • 流量获取
      • 移动应用
    • 网站性能
      • 网站性能监测
      • 网站性能
    • SEO
      • 爬虫与索引
      • 什么样的网站需要 SEO?
      • SEO 基础知识
      • 内容
    • UX 入门
      • 什么是 UX
      • 什么是简单?
      • 进阶
      • 用户体验要素
    • 认知设计
  • 持续交付
    • 持续集成
      • 持续集成系统
      • 持续集成流程
    • 持续交付
      • 基础设施
      • 持续部署
    • 持续学习
      • 持续阅读
      • 持续编程
      • 持续写作
  • 遗留系统与修改代码
    • 遗留代码
      • 遗留代码
    • 如何修改遗留代码
      • 修改遗留代码
    • 网站重构
      • 速度优化
      • 功能加强
      • 模块重构
  • 回顾与架构设计
    • 自我总结
      • 吾日三省吾身
    • Retro
      • Retro 的过程
      • 三个维度
    • 架构模式
      • 预设计式架构
      • 演进式架构:拥抱变化
    • 浮现式设计
      • 意图导向
      • 重构
      • 模式与演进
    • 每个人都是架构师
      • 如何构建一个博客系统
      • 相关阅读资料
    • 架构解耦
      • 从 MVC 与微服务
      • CQRS
      • CQRS 结合微服务

《全栈增长工程师实战》目录

  • 序:如何成为全栈增长工程师?
    • 先成为全栈工程师
    • 再成为增长工程师
  • 全栈增长工程师实战
    • 准备工作和工具
  • 深入浅出Django
    • Django简介
      • Django应用架构
    • Django hello,world
      • 安装Django
      • 创建项目
      • Django后台
      • 第一次提交
  • 三步创建博客应用
    • Tasking
    • 创建BlogpostAPP
      • 生成APP
      • 创建Model
      • 配置URL
    • 创建View
      • 创建博客列表页
      • 创建博客详情页
    • 测试
      • 测试首页
      • 测试详情页
  • 自动化测试与持续集成
    • 编写自动化测试
      • Selenium与第一个UI测试
    • 搭建持续集成
      • Jenkins创建任务
      • 创建shell
  • 更完善的博客系统
    • 静态页面
      • 安装 flatpages
      • 创建模板
    • 评论功能
    • Sitemap
      • 站点地图介绍
      • 创建首页的Sitemap
      • 创建静态页面的Sitemap
      • 创建博客的Sitemap
      • 提交到搜索引擎
  • 样式与UI美化
    • 响应式设计
      • 引入前端框架
    • 页面美化
      • 添加导航
      • 添加标语
      • 优化列表
      • 添加footer
  • 应用API
    • 博客列表
      • Django REST Framework
      • 创建博客列表API
      • 测试 API
    • 自动完成
      • 搜索API
      • 页面实现
    • 跨域支持
      • 添加跨域支持
  • 创建移动应用
    • hello,world
      • 构建应用
    • 博客列表页
      • 列表页
      • 详情页
    • Profile
      • Json Web Tokens
      • 登录表单
      • Profile
    • 创建博客
  • 移动单页面应用
    • 移动设备处理
    • 前后端分离
      • Riot.js
      • ReactiveJS构建服务
      • 创建博客列表页
      • 博客详情页
      • 添加导航
  • 配置管理
    • local settings
发布于 2016-11-10 07:21

game.ptteng.com


我和我的女神一起做的。

不过大部分都是我写的。


写了整整一年半。时间应该是在2013年的时候,记不清了。

论坛里有更新日志。


后端:mysql,Memcache,tuscany,scallop,dal,jdbc,Hibernate,websocket,tiltes,json-taglib,quartz,python,drools,fastdfs,nginx,jetty


前端:angularJs,jquery,bootstrap


源码:git/svn


放弃:erlang


每天晚上从下班开始写,写到晚上11点或者是12点。

还自己做了运营推广和数据分析。



这个网站是一个纯文字版在线杀人游戏网站。

支持:1.杀人游戏:简化,警版,警版不翻牌。

2.捉鬼游戏:简化,猜词。

3.炸狼堡。

4.多人扫雷。

5.一起看电影

6。一起 看新闻

7.Diy游戏室


功能上:1.支持战例回放~这是我最喜欢的功能。

2.支持观战

3.支持排名,各种排名

4.支持金币

5.支持自定义神态,动作,音乐


其他:1.集成了各种小功能。包括雅虎Pipe,多美音乐(还是别的?),美图秀秀,淘宝等等小东西。


核心技术点:1.用Drools,通过规则引擎来实现游戏的状态判断。Workflow画的666的。写一个游戏规则挺简单的,差不多两周能把一个游戏规则做完。


2. 采用WEBSocket通信,所以抛弃了Aja这种到现在我都不喜欢的东西。直接定义了一套游戏的语言。参照了OWl,用主谓宾的形式来做通信。前端接收到指令之后,解析,然后执行动作。


3.整理出来一套游戏的动作模板。开发前端界面展示更简单。


简单说:把游戏分成了公共和特殊的两部分。公共包括,加入房间,离开房间,踢人,抢管理,说话,开始游戏,结束游戏等。

游戏的特殊部分,如简化,可以分成阶段(声明是白天还是晚上),权限,角色,动作,资源等等。角色包含杀手和水民,动作包括投票,杀人。资源包含什么我忘记了。


总之在年青力壮的时候,设计的很Happy,而且扩展性也很好啊。别看现在只是文字 版的,想做成动画,根本不需要改通信逻辑,前端解析动作直接做就好了。


可惜我不会动画,也没有UI设计师。


另外。虽然用了AngularJS,但是混杂了不少JQuery。所以很多东西用的很傻。比如。

自己把JQuery封装成了View,Service,Controller和Util的概念。


所以后来真正理解AngularJS的时候,才是佩服的不要不要的。比我预想中的概念,特别 是filter和 directive要好的多。



是要打算一直做下去的。只是一直在忙,想要等挣钱了以后,把我心里想像的东西做出来。

现在只是实现 了3%都不到~




所以接下来说重点。

一个人做网站需要什么知识?


1.PM

2.运营

3.技术

4.测试

5.客服

6.运维


这是大的分类,不懂PM是完全做不出来东西的。

不是说一定要画原型图,而是说在做的时候,总会有太多干扰,必须要想清楚自己做什么,想要什么,怎么排优先级。


不懂运营,你就没有用户。用户从哪来,怎么注册,怎么带着他们玩,怎么传播。如果什么都没有,就是一个死网站。


比如说现在的杀人游戏-就是一个死网站了,文字 版,不做音频视频,只做我喜欢的文字 版。


所以没人运营之后,大家自己也越来越忙,没那么多人玩了。


技术包括前面说的各种点。我好坏多少都懂一点,搜索爬虫DB缓存分布式WEBSocketETLDrools都懂一些,否则真的搞不定这些事儿。


马丹我就是在这个项目里学会的Drools和Erlang,看的我欲仙欲死。



前端也一样,不过前端多靠了我的女神协助。


运维也要懂,否则服务器随时坑死你。

所以,说自己想要搭一个网站玩玩?看网站的难易程度吧。Discuz和Wordpress这种东西分分钟钟搭好。我还做过一个圈子通讯录的App。


可是想做一个有人用的网站?很难。


据说,之前内推也是一个人做起来的,挺佩服的。


但是,一个人写代码最大的问题就是寂寞。

很寂寞。


寂寞如雪。

可是我很喜欢。

编辑于 2017-03-31 17:11

不请自来,我只是一只菜鸟。

假定题主的问题是为自身技术的提升而问,请继续看下去。

如若题主的问题是为了做一个普通的网站,请绕道别处吧。

===

  • 2015.5.15

既然有人点赞,就继续补充吧,努力骗更多的赞~\(≧▽≦)/~!

===

【一、语言、工具:工欲善其事,必先利其器。

各种各样的语言为实现功能而服务,作为一只很菜的前端汪,当然是选择自己最熟悉也最容易掌握的语言了——什么爪哇(Java)请走开好么?!NodeJS显然是首选~\(≧▽≦)/~啦啦啦,(别跟我说Golang,那玩意是初学者可以轻松掌握の?那结构难道不是很丑?!)

一个用着舒服的编辑器( ⊙o⊙ )千真万确可以提升写作的速度和效率,推荐如下:

Visual Studio Code >>

如何评价 Visual Studio Code? - 微软(Microsoft)

Sublime >>

Sublime Text 有哪些实用技巧? - 前端开发

IDEA/WebStorm >> 前者集成环境适用于各种语言的开发,后者专注前端 (

IntelliJ IDEA - 话题精华

【二、知识、技能:哎哟,忘词了!

  • 基础CSS知识( CSS 教程)
  • 基础HTML( HTML 教程)
  • 基础Javascript( JavaScript 教程)
  • 数据库操作(db) ( SQL 教程)
  • 网络请求(ajax/http)( AJAX 教程)
  • 文件读写(io.file)(如果你不是和我一样要用文件存储,那么db几乎是必需的了...)

2.1 数据库:

2.1.1 表建立(我们做博客么,自然最重要的额就是文章了,那么post字段如下:

  • id
    title
    subtitle
    content
    category
    author
    date
  • 需要其他表的,自行换成想要的样子,反正需求简单,就随便写吧。

2.1.2 表操作

为什么我们要说这个问题呢,你自己建啊,又是学习啊,不懂SQL以后玩毛?!

2.2 文件操作

别怪我废话,文件操作真的很重要,但是吧,但是吧你不会可以搜索( ⊙ o ⊙ )啊!类似file.read()、file.write() 这样的东西一定要知道一些。就算不知道,好吧,假设我们已经确定了用node的情况下,require()——也差不多勉强可以用了,反正人工约定也不是不可以~

【三、预期、需求:最起码你得知道自己要做个什么吧?

看到有人说自己做做着做着就成了博客,实名反对好么?

但是呢,不得不说,其实学会了做博客,其他的,基本差不多的样子T.T ?

为什么这么说呢?

就目前大多数普通网站的后端主要功能就是更删改查

后端:
  • 查询数据并Return : html(通过模板引擎渲染)/Json
  • 验证数据并Return : 同上
前端:
  • 展示
  • 交互

(⊙v⊙)嗯,那我们先来做个博客吧!

【四、书写、建站:说了那么多废话,终于可以动工了。


假设我们要建立的如上的网站,主要模块分为:

(个人习惯,在代码组织上以功能为模块,受angular影响了...)

  • index
    about
    blog
    doc
    labs
    fm

4.1 Backend

博客我们说过了,需要动用数据库,需要进行 增删改查这四个基础功能。

以我的mongodb为例吧,实现文末 *附1 的几个功能就好了(自己懒得写了就去copy(不对!借用别人的...)

  • add()
    put()
    del()
    get()
    getAll()

当然了,前端还要显示对吧,所以页面呢,其实差不多,也就是个静态页,然后最后把数据render到html上就好。怎么玩随你。实现不想写页面直接用res.send()也可以。

4.2 Frontend static

index&about基本就是静态页,不需要什么东西,所以,请动用最初说的html/css基础做一个你喜欢的页面吧(丑也没关系!虽然我确实很难接受...),然后留着备用喽~

对了,忘了说,其实更好呢,是规划一下你这个网站未来的布局、样式、板块呀什么的,但是对初学者来说这些balalala的东西估计也听不懂,后面再改去吧~
这里如果能规划下去,大概坑填的差不多的时候就可以建立一套自己的UI库了。


4.3 Frontend dynamic

可能我设计不太合理,分类不明确,但是我感觉吧,前面那些都很简单,

后端的基础功能是很好实现的对吧?之前那段代码(*附1)基本就是核心了。

我是把路由(访问的url)也包含在这个分类了

(lue挑,链接难看的实现接受不了t..t),我的路由一般是这样:

http: //http://www.domain.com/

Fe:
/blog
/blog/posts
/blog/post/postName

Be:
/api/blog/add
/api/blog/put
/api/blog/del
/api/blog/get/pid
/api/blog/getAll

前端与后端都是通过api这个接口来实现类似无更新刷新页面之类的功能,准确说,这么做就是为了我前端后台的angular服务的....(

AJAX 教程

)

4.4 Frontend interactive

JS大法好,放到最后就是因为js的玩法太多了,所以真不好怎么说,但凡在网站上能看到的效果都可以和它擦出爱情的火花( ⊙ o ⊙ )啊!什么WebGl / Canvas / ( ⊙ o ⊙ )啊!各种神奇的效果都是通过它来做呀!当然了,还有各种神奇的技术,那就是前端汪的最爱( ⊙ o ⊙ )啊!

来看!

A 3D FPS concept using HTML and CSS3 transforms by Keith Clark A 3D engine built using HTML and CSS 3D transforms by Keith Clark

看看这些神奇的效果,不心动么...再来?

Video/Canvas Demo 1 D3.js - Data-Driven Documents

( ⊙ o ⊙ )啊!我去,好像已经偏离了方向,但是没关系( ⊙ o ⊙ )啊!真的很好玩好么!

===

有时间再补充,╮(╯▽╰)╭,一入前端深似海,从此节操不好买!

对了,顺便贴小广告:

MT-Libraries/MT-Notes · GitHub

===

附1 (postService):

/**
 * Created by thonatos on 15/1/12.
 */

var Post = require('../model/post');

exports.postService = {

    add: function (post, callback) {

        var _post = new Post(post);

        console.log(_post);

        _post.save(function (err) {

            if (err) {
                callback(err);
                return;
            }

            callback({
                auth: true,
                data: {
                    req: '/post',
                    res: 'success',
                    msg: post.name + " Added."
                }
            });

        });
    },
    put: function (pid, post, callback) {

        Post.findById(pid, function (err, oldPost) {

            if (err) {
                callback(err);
            }

            oldPost.name = post.name;
            oldPost.desc = post.desc;
            oldPost.tags = post.tags;
            oldPost.date = post.date;
            oldPost.author = post.author;
            oldPost.content = post.content;

            oldPost.save(function (err) {

                if (err) {
                    callback(err);
                }

                callback({
                    auth: true,
                    data: {
                        req: '/post/' + pid,
                        res: 'success',
                        msg: post.name + " Updated."
                    }

                });
            });
        });

    },
    del: function (pid, callback) {

        Post.remove({
            _id: pid
        }, function (err, post) {

            if (err) {
                callback(err);
            }

            callback({
                auth: true,
                data: {
                    req: '/post/' + pid,
                    res: 'success',
                    msg: pid + " Removed."
                }
            });
        });

    },
    get: function (pid, callback) {

        Post.findById(pid, function (err, post) {

            if (err) {
                callback(err);
                return;
            }

            callback({
                post: post
            });
        });

    },
    getAll: function (currentPage, perPageNum, callback) {

        var perPageNum = perPageNum;
        var currentPage = currentPage;

        Post.count(function (err, totalRecords) {

            if (err) {
                callback(err);
            }

            Post.find().skip(( currentPage - 1 ) * perPageNum).limit(perPageNum).sort('-date').exec(function (err, posts) {

                if (err) {
                    callback(err);
                    return;
                }

                var pageCount = ( totalRecords - totalRecords % perPageNum ) / perPageNum;
                pageCount = ( totalRecords > pageCount * perPageNum ) ? ( pageCount + 1 ) : pageCount;

                callback({
                    pageCount: pageCount,
                    currentPage: currentPage,
                    perPageNum: perPageNum,
                    posts: posts
                });
            });
        });
    }
};
编辑于 2015-05-15 23:19

不太赞同当前高票数

@yegle

童鞋的答案,兄台……你把人家单纯美好的小愿望搞复杂了

我猜题主基本上算是个门外汉级别,说http协议,说数据库优化,未免有点揠苗助长了

说说我的理解

题主先不要怪我打击你,一个优秀的网站,不是你一个人能hold住的,再给你加个脑袋……你还是hold不住

我暂且把一个网站分以下技术块

设计:指我们的视觉,我们所看到的东西,美不美丑不丑?

前端:设计稿的html实现形式,包括了html,css,javascript这三门基本知识以及以后的jquery框架等等高等级知识

后端:C#,PHP,JSP,等等编程语言构成的系统

数据库:mysql,sqlserver等等等等,不熟,言多必失

这几块,是简简单单的做成一个网站必备的东西

做成之后怎么办?租用域名主机,挂上网

这就可以通过网址,看到你的网站并且使用了

这就是一个狭义上的“网站”,自己开发点博客功能,图片功能,就能自己耍着玩了

难道每一个网站都是自己这么复杂地做么?那当然不会。

@王指晓

说的帝国CMS,还有

@郑淇

的答案给了你很清晰的操作步骤。国内很流行的DEDE CMS,PHP CMS,Discuz,Ecshop,Mengato等等等等,都是前人已经做好的系统,如果题主只是想搞个网站玩玩,我觉得就找个开源系统,自己选个模板,折腾折腾挂上线就好,从学会到搞完,几天就完工了

如果你要自己学,手工做网站,我觉得你前端/后端/设计就学精通一块就行了,且不说淘宝百度等大物,即便是一个优秀的企业展示网站或者个人博客,也不是你一个人就能都做得好的,术业有专攻,合作才是硬道理

狭义的“网站”做完了,如果你要做好做大,你还要考虑到

@蒋超

童鞋提供的广义网站的概念

运营,推广,资金,UE,管理,用研,等等等等诸多需要一个脑袋甚至数个脑袋来操作的事情

题主,加油吧

编辑于 2014-02-17 12:23

初学者想要自己做一个网站还是有点难度的,但是也可以,只不过我认为自己做网站会形成一个闭回路,很多的点自己想不到,建议还是跟小伙伴一起开发。

一、做网站的三要素

1.什么是域名,怎么使用域名。

2.空间的概念,云主机和VPS的区别。

3.了解开放源。

二、做网站的常用工具

1.FlashFXP的上传和下载文件;Dreamweaver;Photoshop。

三、HTML语言

HTML是前端技术里最基础和简单的东西,这个我建议标签和框架你都得弄会。

四、DIV+CSS

如果单纯只想做网站的话,这个可以先学习了解,但是不精通也可以。

五、PHP、JS、JAVA、ASP

这些都可以了解,对网站的建设有帮助,现在很多主流程序都是用这些写的。

对于初学者想要学习前端也可以参考以下学习经验:

1.可以联系一些有共同目标的人在一起学习,互相分享学习经验,学习方法。通过总结他人的经验教训,摸索出属于自己的学习方法。

2.可以找一名和自己志趣相投的小伙伴,互相监督,以防止因为自己的懒散导致学习断断续续,没有效果,两个人可以在监督中互相进步,共同成长。

3.一定要形成每天总结学习内容的习惯,总结自己学到的知识点和需要改进的不足之处,制定适合自己的学习计划,按时完成计划。

4.在学习积累到一定程度是,要及时进行实践。可以多人一起研发项目,在实践的过程中总结经验教训,找到自己的不足之处,加以改进。

最后,我跟几个互联网出身的朋友组建了前端自学团,会在群里严格监督大家每天打卡学习,也会在群里给大家分享学习或者工作经验。每个月都会带领正在学习的UI、前后端、产品经理一起做一个上线项目练手,帮助大家积累实战项目经验。想要加入的小伙伴欢迎给我私信或者评论~(申明:我们的自学团和项目都是免费的,如果有人借着我们自学团的名义找你收费,请直接举报!)

发布于 2020-09-02 09:17

我来分享一个单人建站所需要的最低配的知识点,说得太多把想要学习建站的同学都给吓跑了,那就有点对不住人家了。

购买域名和服务器
html+css基础
cms内容管理系统的运用
配置服务器

1.html是超文本标记语言。

网站上的内容有是由图片、文字、视频、音频构成的,由html标签则将其区分标记。

例:浏览器中的图片、超级链接文本的默认样式。各个元素尽显本色,简陋不堪。

2.css是用来控制网站外观的计算机语言。

例如:经过css样式美化后,网站上的字体大小、颜色、元素间的间距发生了变化,网站开始就变得美观、易读了起来。

3.什么是服务器?

你把服务器理解为是一台存放网站数据内容的电脑就可以啦。

4.域名是干什么的?

域名与服务器绑定后,可在浏览器的地址栏输入域名访问网站内容。

5.cms是什么?

cms是内容管理系统,用来管理网站数据内容的。网站的所有数据及代码都封装在cms系统。cms运行存储在服务器这台电脑中。

发布于 2017-02-07 00:20

Let me answer this question as someone who is working in this industry for some years. I did website for international clients in germany and china in the past.

1. Domain name

Thing you need to the Consider of First IS under your name Website Which Will BE Reachable. The http://example.com the For Example, there are 'several' Website Domain Which the offer to names like

iwantmyname.com

. But the with the before you SHOULD BE Familiar at The Which the DNS Protocol translates domain names to ip addresses, this is important in the next step.

2. Webhoster

Remember at The Back Days in the I i WAS A as Free webhoster like a using

bplaced - Webhosting & Webspace :: // 2GB freehost at The Place for your webspace

to Host My Website at The Responsible to the Save you webhoster IS ON A Server Files, Which Makes Them the Available. publicly under a certain IP-Adresse. to Upload the files to the server you use some program like Filezilla, which connects to the server via FTP protocol.

3. Making a page

After you know the basics on how to upload content to the internet its easy to upload images or whatever you want and share it with the world. To make a website you should learn HTML + CSS

w3schools.com/

HTML/

A simple website would be something like that

<Html>
<head>
<title>Hello world</title>
</head>
<body>
Hello world
</body>
</html>

If you have further questions just ask

发布于 2016-03-27 10:17

楼上都讲的太复杂了。

做一个网站的流程(具体再去百度):

  1. 想个点子
  2. 注册域名(域名备案)
  3. 设计
  4. 排版:把设计稿制作成html、css、javascript、图片组成的各个文件
  5. 后台程序:功能实现 如 php语言 也可套用别人的程序进行修改
  6. 服务器(虚拟空间)
  7. 环境配置
  8. 网站上传上线

那么,如果单人做网站,最基本的要掌握和学到的程度:

  1. html:常用的学会
  2. css:基础即可
  3. javascript:基础即可
  4. php:基础即可,可以改他人代码即可
  5. 和其它相关的知识 比如注册域名、环境配置都是几小时的事情。

新手刚做网站根本没必要被@yegle说的“你需要非常熟悉HTTP协议” 所吓倒(没多少人会看完rfc2616的) 只要知道常用的 post get 404 403 (请百度)等相关用途含义即可,甚至压根就无需了解,类似 head mime https这种等遇到了需要了再去了解。

发布于 2013-07-18 15:02

坑,大坑,超级大坑。

单人做网站是个大坑,这个坑我填了快十年(学习经历可参考: 《折腾》三卷:孕育 (初稿)哪里可以看到?)

答这个题也是个大坑,这个坑我准备用一个月的时间来填。


首先,第一步,你需要掌握的,不是知识,不是知识,不是知识!重要的事情说三遍。矫枉必须过正,切记切记。

你需要搭建一个环境,你需要让你代码先跑起来,你需要动手的能力。

不能你看书、看视频、还是参加培训,切记不要“死读书读死书”。因为知乎异常浓郁的“读书至上论”,我不得不再反复强调一遍:书上的代码,一定要自己在电脑上敲一遍,不要以为在书上划两条波浪线,打两个三角形符号就OK了。不要去什么咖啡馆图书馆,阳光咖啡,“抚摸着散发着墨香的书页……”那都是扯淡,打开电脑,一碗泡面,就开始把代码整出来撸!

只要一开始撸,你就会发现很多很多的问题。说个最简单的,我现在都记得,当年我学html,书上说用记事本写点标签,然后保存,把文件名后缀改成htm……MB,我连记事本怎么打开都不知道!

我当年为什么要进培训学校?就是被这些事给逼的,一个MSSQL Server装了一天怎么都装不好,不是缺这个就是那个不兼容……简直要疯掉了!

严正声明:没给培训机构打广告哈。我当时的情况确实特殊,时间很紧(其实是心情很急迫),周围一个懂的人都没有……上天无路,入地无门。现在好了,有了 一起帮(哈哈哈,这个硬广……)


继续说正事,然后你需要掌握的知识……同学,你这是往“全栈”的方向走啊!这条路真的不简单哟。前面的回答都说得差不多了,从前端到后台,大致包括:

  • html
  • css
  • JavaScript
  • 服务器端语言/框架(流行的包括: ASP.NET、JSP、PHP……)
  • 数据库(如:MySQL、MSSQL、Oracle……)

就这一套东西整下来,半年能入个门就不错了——因为我都花了半年才入门嘛,( ̄┰ ̄*)


入门这事,没啥说的,就只有硬啃了。像我前面说的,要上手,无论是看书也好,视频也好,代码都要自己敲一遍跑一遍,千万不要偷懒,你现在还没有偷懒的本钱。碰到问题了,利用好互联网,有的问题贴吧论坛就好使;有的问题, 一起帮 请人远程帮忙看看。反正这段日子就是熬,基本上就是不断的掉坑里爬起来,走几步又掉坑里……就算进培训机构也一样,你不掉坑里,很多东西就学不会学不深。


呵呵,现在讲基础讲入门都提不起精神来了。


入门的意思是什么呢?大概就是如果你有演技运气好的话,就能骗到这个行当一份最初级的工作了。当然,像培训机构吹嘘的8K/15K的还是比较难的。个例可能有,但普遍的够呛。

为什么提到找工作?因为如果你不找一份工作,还是闭门造车的话,进一步的提高几乎是不可能的。

这个道理讲起来非常复杂,但也可以说得很简单:就像你大四毕业前一定要实习半年,而且实际上实习半年也远远不够,你必须在工作中不断的积累和沉淀,不断的磨砺自己的技术,更重要的是,由此形成自己的“世界观”:那些难以言喻的,但确确实实存在的,你对于编程的理解

但这里的问题就在于:你没工作经验,就不好找工作;找不到工作,你就没有工作经验……成了一个死循环?

当然,问题没有“死循环”这样严重,只要你锲而不舍的坚持,总还是能找到第一份工作的,只是有些艰难——野生程序员就更难一些,别人至少还有张文凭。

所以当我决定做 一起帮 的时候,我就突然的萌生了这么一个想法:为什么不干脆直播我的整个项目开发过程呢?让大家也看一看一个真实的项目是如何从头开始一步一步的构建的呢?虽然不能说看了直播就有了项目经验,但至少不会两眼一抹黑,脑子里空空如也——没吃过猪肉,至少见过猪跑啊!

我自己都被这个想法给鸡冻了……加上其他一些原因,我干脆连我的的家装创业项目都停了——管他MB的,先做一件有意义的事再说!

利用我在博客园和知乎上一点可怜的影响力,我的QQ群很快升到了200多人,大家的热情都很高涨,但一个很大的问题是大家的基础参差不齐,而最搞笑的是我做了一个调查:


没有中间路线!看到没有?没有中间路线,要么就是想看高级货的,要么就是要从零开始讲的……

我也是无语中,不过转念一想,却又在意料之中。


清明节终于下定了决心,干脆“送佛送到西,好人做到底”,我也搞一个零基础的系列讲座,免费的,免费的,免费的。不要问我为什么免费,香菇,蓝瘦。


好了,这坑填不了。改视频了:

++++++++++++++++++

直播预报:4月5日开始每晚8:00-9:00 《从零开始学建站》,直播/录像地址,源代码/文档,项目背景等见: 倡议:我们“一起帮” - 自由飞 - 博客园

++++++++++++++++++

发布于 2017-04-05 19:34

那你需要学的就多了单说代码就有HTML+css+jq 这是前端 后端可以选择学PHP

发布于 2018-07-30 16:42

捡起PHP一路撸下去,就知道缺啥,再一路补啥……

发布于 2015-05-15 03:48

前端:第一美工。第二编辑 第三策划布局。后端:第一框架 第二编程,然后服务器等

大概在今年二月份,我萌生了搭建一个网站的想法,原因大概有两个:一是平时做公众号需要很多的素材,我选文的标准也是有两个,或者觉得这篇文章对我或者对大家有用,或者看完了能够哈哈一笑,是篇有趣的文章,否则我是宁愿不发文的。二是平时学习过程中,收集了很多的资料或工具。

在这个两个过程中我发现了很多特别有用的网站,很想把他们收集整理起来,方便以后查阅与使用,所以一开始我是只想做一个分类详细、资源优质的专业IT导航站的,正像我在网站首页写的那句话,这个世界并不缺少另一个好的网站,而是缺少一个帮助你找到最佳网站的网站。(此句针对某些度的搜索结果,它给你推荐的垃圾太多)。

下面我就从一个完全零基础的人的角度讲述一下建设一个网站需要做哪些工作,之后我会说一点关于WordPress的问题。

技术储备

在此之前,我只在中学时代学习过一些基础的html语句和frontpage的使用,所以在2月初的一个多星期里,我利用闲暇时间学习了html的大部分内容,css的常用语句,以及js语句的基本用法(因为我清楚的知道,我只是要做静态页面,学了这些足够用了)。这里提供一份不错的编码规范。

知道了这些以后你可以大致构想一下网站的布局了,选择一个合适的前端框架,可以大大的地提高开发效率,我用的是bootstrap,我想你一定不想自己的网站长成这个样子(这也许还算好的吧):



我想这个网站随便换个前端框架也不至于长成这样,如果我来重写一下,它一定更漂亮。(稍微没谦虚了些啊TAT)

开发工具的选择

我也是随大众的使用Adobe Dreamweaver,顺便也就得知了FrontPage早已经被淘汰了,DW确实是好用,实用的小功能有很多,我不一一介绍,希望你们自己去探索。

域名与服务器的准备

某种意义上,这也并不是必须的,因为你可以在网上找到免费的二级域名和空间,但是就我而言,二级域名我并不乐意用,因为这样的域名真的很low,并且免费的空间大多不稳定,哪天它崩了,你的网站也就完了。

所以,我推荐。。。

我还是不推荐了,防止有做广告的嫌疑,我是在万网买的域名,在阿里云买的服务器,网和阿里云已经合并了,他们现在统称阿里云。

关于域名的选择

短小容易记忆是必须的,就像baidu、jd、bing,一看就能记住。

域名也分.com、.net、.cn等等,.com当然很好,但我选择的是.top域名,这也是国际顶级域名,分发使用时间并不长所以不被广泛采用,我当时主要有两个考虑,一是:便宜,第一年的费用是:

4块钱!

二是容易挑到喜欢的名字。

但之后的使用中我也发现了这类域名的致命缺点,像QQ、微信等很多软件并不能识别这是一个链接,你打出来之后它就当是普通的文字处理,这对网站的推广是不利的。

自豪的晒一下我的证书!



关于服务器的选择

服务器类型的选择

服务器大致分为两种,虚拟主机和云服务器ECS,现在更为流行的是云服务器ECS,它的性能也更好,并且现在两者的价格差距也越来越小了。

虚拟主机能给你的权限太少,除了一个主机管理控制台,你能做的就是上传文件,解析域名,没有更多了。(这里涉及一个名词:域名解析,通俗的讲,就是让你的域名指向你的主机,这样访问这个域名就会连接到你的主机)。

而拥有了一台云服务器,就好像买了一台可以24小时不间断运行的电脑,只不过这台电脑在远方,你只能远程访问你的电脑。直观的看一下就是这样(出于安全考虑IP被我打了马赛克):



操作系统的选择

如果你问别人服务器上用哪种操作系统更好,几乎所有人都会告诉你Linux系统更安全,更好用,性能更好(不排除其中一部分人是为了显示自己的牛B而装B),事实也许真的是这样,但Linux服务器真的适合你吗?

我想并不是所有人都适合用的。

开始的时候我用的是CentOS,但是对我这样长期使用桌面操作系统的人来说,长时间对着黑乎乎的终端,不仅严重视觉疲劳,而且工作起来时常感受不到成就感,因为眼前始终都是一页一页的黑底白字命令行,于是我忍不住给它装上了Gnome桌面,(我想你们中的大多数都得承认,你平时使用的所谓Linux都只不过是面向普通大众发行的桌面操作系统),然后我索性就放弃了CentOS,换成了Windows Server,除了操作更便捷了,我没有感受到其他什么不妥之处,事实的测试也是对于小型网站来说,两者的响应速度并没有明显的差别。

服务器的使用

这里我只说一下ECS,其实只有四个字,远程连接,其他一切操作就跟使用自己的电脑没两样。

Windows服务器的远程连接很简单,使用每台电脑都自带的“远程桌面连接”即可(按win+R,输入mstsc,回车即可),我发现这是一个很好玩的东西,可以和朋友一起玩一玩,让他的电脑打开远程连接允许,你就可以远程操作他的电脑(QQ里面的远程协助就是这样)。

Linux服务器的连接推荐使用putty/SecureCRT/xshell,使用很简单,不多说,打开你就知道了。

连接到服务器后你首先需要做的事情就是搭建ftp用于上传文件,windows还需要使用iiS(Internet Information Services),这是最基本的配置,具体如何做大家看文档就好了,其他还有很多,比如WordPress还需要搭建PHP环境、MySQL等,这个我后面再说。

与相关部门打交道

网站的备案

与相关部门打交道主要也就是网站的备案,备案也就是让工业和信息化部( miitbeian.gov.cn/)知道你网站的大致内容并选择是否批准你建设这个网站,不备案的网站是不合法的,如果被相关部门发现,理论上是要强制关闭的。

备案需要准备些什么

这里我大致列一下清单:

  • 1、居名身份证(正反面照片若干份)
  • 2、域名证书
  • 3、个人真实性核验单(需打印)
  • 4、特殊照片一份(看具体要求,阿里云可以给你邮寄幕布,其他主机商我不知道,如果主机商不提供这项服务,你就得去相关部门拍照了)


(阿里提供的幕布)

备案时间的选择

备案大概需要20天左右,所以我建议在购买域名和服务器后就开始申请备案,这样备案期间你就可以开发自己的网站了,节省时间。

与搜索引擎打交道

常用网站提交入口

网站写好并上传完成后,你需要向搜索引擎提交你的网站,虽然不提交早晚也会爬到你的网站,但提交还是可以加快收录速度的,并且站长平台有很多有用的工具,可以帮你进行SEO(Search Engine Optimization、“搜索引擎优化”)。

zhanzhang.baidu.com/

bing.com/webmaster/home

google.com/webmasters/

zhanzhang.so.com/

zhanzhang.sogou.com/

zhanzhang.sm.cn/

提交网站的方式最常见的是提交sitemap(下文再解释)和提交url,百度比较特殊,还提供了主动推送和自动推送功能,搜狗比较坑爹,不能直接提交sitemap,它要自己选择抓取。

一些文件的制作

Sitemap:网站地图,按照我的理解就是一份告诉搜索引擎我的网站有哪些页面,每个页面的重要程度,以及抓取频次等信息的文件,通常有三种文件合适,sitemap.xml、sitemap.html、sitemap.txt。如何制作以及了解具体信息可以访问: sitemaps.org/,还可以使用软件:SiteMapX,使用也很简单。

Robots.txt:按照我的理解就是告诉蜘蛛这个网站你能不能访问,能访问的话哪些文件可以抓取,哪些文件不可以抓取的协议,制作也很简单,直接用记事本写就可以,语句不多,查阅资料即可,也可以使用在线工具,比如这个: tool.chinaz.com/robots/,简单点击即可生成。

上面两个文件一般都需要使用,上传到网站根目录即可。

对一些搜索引擎的感想

360、搜狗、神马这种小众搜索引擎我就不说了,谷歌很多人不会访问,也不说了,比较一下百度和必应,百度的工作效率没有并应高,现在百度收录的我的网站信息仍然是我几个月前制作的而且并未提交过的初版页面,而且百度对站长是不公平的,搜索你设置的关键词,第一页几乎都被并不怎么相关的百度推广占了,相比起来,必应就要好得多。看下面:



比如这个关键词,只有我一个网站设置了最合适的关键词,我的页面理应排在第一位,必应也确实是这么做的,百度就让人失望了。

WordPress的安装与使用

对WordPress的理解

搭建一个个人博客一直是我的一个小心愿,wordpress无疑是最合适的系统,(WordPress是一款个人 博客系统,并逐步演化成一款内容 管理系统软件,它是使用PHP语言和MySQL数据库开发的),什么是博客,什么又是内容管理系统CMS?这些你都可以在wordpress文档中找到答案( cn.wordpress.org/),形象地说,有了wordpress,你就像是在博客园开了一个个人博客,你要做的就是像用word一样写文章,文章的发布以及分类整理这类工作就由WordPress通过MySQL来帮你完成,当然,配合各种各样的主题,wordpress能做的远不止一个博客这么简单。

这样的网页就区别于单一的静态网页了,可以称之为动态网页,在之前编写纯静态网页的过程中,我也深刻地体会到了静态网页在完成一些工作时的不便,尤其是后期的更新与维护,全部需要手动完成,这个工作量着实够大。而wordpress制作的页面是可以自动更新的。

WordPress的安装

服务器环境要求

  • PHP2.4或更新版本
  • MySQL0或更新版本
  • Apache mod_rewrite模块(可选,用于支持“固定链接”和“站点网络”功能)

这些环境的配置你可以购买一键部署脚本(虚拟主机的缺点此时又体现出来了),但我不喜欢这样,我喜欢自己动手,阿里云的官方文档有类似教程: help.aliyun.com/knowled ,但不完整,我又查阅了其他资料,花了两天的闲暇时间把wordpress需要的环境和wordpress搭建好了。

我用到的文件大概就是这一些: pan.baidu.com/s/1qYH0db

大家参考上面的教程手动搭建一下PHP与MySQL的环境,然后使用这个工具:

XAMPP: xampps.com/

引用官方介绍:XAMPP是完全免费且易于安装的Apache发行版,其中包含MySQL、PHP和Perl。XAMPP开放源码包的设置让安装和使用出奇容易。

使用这个软件进行管理,完成数据库的建立(为wordpress建立一个数据库,新建用户、设置密码,这些信息在安装wordpress时都需要使用)。

当我第一次看到这个界面时,也开心了很久:



最后推荐一个软件

最后给大家推荐一个html文件批量压缩软件(像谷歌就鼓励站长将代码进行压缩,可以加快网页加载速度),我试了好几款,这一款最好用,离线工具,且可以批量压缩:Absolute HTML Compressor。

我并不奢望自己的网站有多少人去看,毕竟我们只是一个小众全体,热度肯定是无法和娱乐类的东西比较的,我也不想做无意义的宣传,我只想踏踏实实地做好,静静等待有缘人来访,就像我觉得关注我们公众号的都是我的有缘人。

作者:洒满阳光的午后
链接: blog.csdn.net/sinat_325
来源:csdn

这里我简单点的总结一下

  • linux系统:常用命令、安装软件等
  • 前端的技术:html、css、js等
  • 后端的技术:PHP或Java等
  • 服务器搭建技术:nginx或Apache或tomcat等
  • 版本管理相关:git或svn等
  • 处理故障的能力:如安全、网络方面的各种问题

最后,如果大家在进行上述工作的过程中遇到什么问题,欢迎留言与我交流,我知道的一定不会保留。

发布于 2021-05-06 23:19

最近刚刚徒手做了一个网站,看到这个提问,技术小白很高兴能分享一下自己的心得。

首先,承认自己是个技术小白其实也挺艰难的,好歹咱也在计算机系混了一年,上了几门课的啊。但是美国这种转系Master打酱油的水平,你懂的。后来进了公司,完全是不学则退,咋眼四十多岁,学习能力又剧降了,要想徒手做个网站,简直就是比登天还难。

所以开始做琪石俱乐部的时候,我并没有把俱乐部网站提上日程。毕竟这年头,一个公共号就能解决的事,还用网站干嘛?--同意,这很微信。

但是世界格局总是在演变,包括小小的俱乐部。我们2014年初成立,从一开始的成员寥寥无几四处拉人,到2015年的一百多,到2016年初的候选名单上百人,人数一直在扩大。饶是我强大的记八卦能力,那么多人个个如数家珍也开始困难了。一咬牙,一蹬脚,网站不会做,做个线下的管理软件总会的吧!全自动太困难,半自动行不行?

半自动的,能管理数据库的,自带GUI的,我看到俱乐部里学Python很热门,要么就用Python做吧,Python有Tkinter。要知道,我不碰新语言已经十多年了,一把老骨头去学Python,咱丢得起这个人。--再感叹一遍,勇敢很重要。别害羞,乌龟不求赢兔子,只求自己往前跑嘛。

奉献两个链接:Tkinter , python。

tutorialspoint.com/pyth docs.python.org/3/tutor

我把Tkinter放在前面,是因为事实上我一开始并没有看Python tutorial,直接就拿

Tkinter里的example开始改改改,改成我想要的东西了。做到中间发现很多东西不理解(比如经典的lambda,函数传递,等等),不看python

tutorial是不行了,就停下project看tutorial再继续做了。感觉这种套路狼吞虎咽不求甚解,用来完成低级project很合适,用来积累面试经验可能并不好,面试的时候各位面试官可是恨不得把Python的根都挖出来问的。

做完这个内部的半自动数据库管理软件,一边还是被大量的日常活动会员申请给搞累了(需要手动整理好输入数据库)。开始想要么先做个最低级的网站应付一下吧,自动整理好,手动敲一个command

line输入数据库。当时对做网站我还是非常怯场的,只是有个念头而已。跟一个同事说了一下,没想到第二天我的办公桌上就出现了一!本!书!妈呀。。。都说有推爸推妈,哪还有推同事。。<<Web

Application Architecture : Principles, Protocols and Practices >>

,对,就是这本。Amazon 链接在这里:

amazon.com/Web-Applicat

我欲哭无泪,这是赶鸭子上架的节奏啊!同事笑眯眯地说,看完这本书,你就会对网站有个基本的了解了,做起来会得心应手。

我还没反应过来,另一个同事说,我刚在家里搭了个服务器,连wordpress都给你装了,欢迎来用~

跟大牛同事们在一起的心酸和幸福。。于是一边看书一边用wordpress来做第一版本的网站。

Wordpress简直太简单了,文科生的做网站利器,谁用谁知道。三下两下就搞定了,还学会了放各种插件,没一会儿网站就上线了。一开始还真的就裸挂在同事的服务器上,后来被他使劲催,终于放到amazon的aws上了。

第一版网站一上线,各种资料随便找,申请活动不用再发email或者微信了,上网申请,后台乐翻天了,俱乐部成员直夸我执行力高,网站简洁大方。我老脸微红,忍住没告诉他们就是用了wordpress的一个模版,把内容填充进去网站就出来了,哪还用啥执行力。。

顺带总结下wordpress:

门面网站用wordpress绝对够了。Wordpress有很多已经设计好的模版,都非常漂亮。随便用一个都显得好高大上。(注意,图片要精美噢)。而且wordpress已经可以自动转手机显示模式,放哪都漂亮。如果说wordpress的缺点,功能还是很低的,支持不了特定的网站需求。普遍需求的话插件很多,但是很不灵活。另外,据说wordpress插件多了会很慢,不过这个对门户网站倒没问题:门户网站哪需要那么多插件啊。

现在倒是有网站了,也有管理软件了,可还是满足不了俱乐部需求。。我想要知道每年大家都参加了哪些活动,参加活动的时候表现咋样,哪些小伙伴会愿意出来做小组领导,哪些小伙伴喊几句就消失了。候选会员中有哪些是真正有意愿参与的,哪些就是过来刷个脸,找个工作机会。我们是学习型俱乐部,还得看看大家一年学习上有进步没有,如果没有都啥原因。。如果是线下管理,后台的负担真的是超级重啊,而且倒腾的时候很容易有错漏。

2016年中的时候,适逢我自己做了大决定,从公司告退了,开始了全职家庭主妇的生活。做饭和打扫卫生之余,除了看看《诗经》,也还可以每天花一点时间写code的嘛。能不能自己做个功能强大又灵活的网站啊啊,把上头提到的需求都满足了!

别跟我提flask之类的酷炫东西,我这水平,能有个普通版的武器就够了。上网做了一下研究,django虽然老旧了点,但资料多啊。就它了!于是开始了平庸却孤独的django之旅。

在还不会做网站之前,一想用户,注册,界面,就会被吓到。。“这个人会做交互型网站?哇。。好牛啊。。”所以当时自己开始做的时候,就像探索一个完全不知底细的崖洞,不知道能摸多深,更不知道最后能不能爬出来。

然而我们活在二十一世纪的新社会,丰富的网络资源让自学成了可能。--只要你有时间,肯下功夫,你总能学到好东西。(注意:此处是鸡汤,原因在后文)。

上次弄 Tkinter 做到一半去看python的滋味不好受,这次稍安勿躁一下,不裸上了,先看点django的东西吧。

看的资料是这个:

djangobook.com/

看书到看不下去之后(别听大牛们忽悠,小白看书从来不会看完的,能看前五章就不错了),以我剧差的动手能力,想开做还是好难,多想找个帅哥来手把手教我做啊。。还真有!打开这个视频吧:

youtube.com/watch?

手把手教你做网站!一步一步,按照这个来,真能行哎!

帅哥把基本的东西都教了,前端后端,注册,bootstrap。。真的是非常感谢,虽然是免费的,但年底还是得给人写张支票意思一下。师傅领进门后,自己得独立接着做了。交互性网站最关键的是数据库设计,还好做管理软件的时候已经有思路了。设计完数据库,各种功能的实现,就是遇到bug的时候了。有了bug咱找谁?程序猿最忠实的好朋友--stackoverflow

stackoverflow.com/

当时写code写到畅快一日千里的时候,老是遥想自己完成之后,一定要来一句:“djangbook+youtube+stackoverflow+github”就等于一个网站。有了这四样东西,做网站就成了劳动密集型工作。正聊发少年狂之间,忽然咯噔一下,

掉进了paypal这个大坑。

这下彻底傻眼了。一碰到网络signal的问题(server和paypal之前的signal互传),上面的东西统统不中用了。眼看上去都很好的东西,就是不work。到stackoverflow找,有人问类似问题,没人回答,或者答案自己试了还是不行。有看到说,这些问题关系到系统设置,得去看系统才能弄清楚。问问题的人哭着说,“我已经找了七天的bug了还没找到。。”我读着也快哭了。

去找一个做过网站的小伙伴哭诉。对方两眼望着前方,湎了一口酒,悠悠地说:“paypal啊,是个大坑。。要么你试试XXX吧,找bug方便点。”

(XXX是类似django 的另一个做网站工具)。我一听,怒了:“不行!别人的django都能用PayPal,为什么我的就不能?”于是表演了一场拂袖而去。

讲这句话,可是真勇敢。“别人行,为什么我就不行?”

多励志!但是做过事情的人都知道,世界上别人行咱不行的事情多着呐,千万得对自己的能力有个正确的评估。低了固然影响到潜力的发挥,高了,就更麻烦,一辈子都在做不可能成功的努力。

然而我说这句话,却是有底气的。因为最牛的人,现在才出场。在开始做网站的时候,伊达就跟我说,“加油啊,有什么问题来问我。”

伊达何许人也?曾经的高考状元,现在的硅谷顶尖高手啊,人家可就是搞网络系统安全的!前阵子刚还有个对冲基金的创始人跟我抱怨搞安全又信得过的牛人好难找,我当时就想,的确,伊达这样的剑客,不是用钱就能请得动的。

承蒙伊达的欣赏,我才有勇气徒手去做这个网站。知道他的时间十分精贵,所以碰上问题能自己搞定的就尽量不麻烦他了。但是到signal这一块,我是真的需要求助了。专家出手果然不同,人家用的都是套路,套路!

自古深情留不住,总是套路得人心。

只要有机理的地方,就可以有套路。庖丁解牛,就是懂得牛的内部结构啊!我只有膜拜的份了。。

关键的问题分析清楚后,我终于把 PayPal

也搞定了。2016年10月底,网站正式上线试用。大量会员开始注册以及参加活动。界面简单到除了Store连个图片都没有。--自从facebook/微信等新一代社交媒体兴起后,我的看法是,普通的网站除了服务于实体本身已经不需要其他类似bbs的功能了。简单,能用,方便,就好:

https://www.qishicpc.com

最后欢迎大家参加我们俱乐部的各种活动,花了那么大的功夫,不就是为了让小伙伴们能愉快地学习么~~

发布于 2016-11-08 22:42