服务器提了个问题程序员跪拜服务器原图正在解答

程序员的小目标:从云端搭建一个小程序开始
稿源:站长之家用户
9月21日,微信小程序正式开启内测。在微信生态下,触手可及、用完即走的微信小程序引起广泛关注。近日,腾讯云正式上线微信小程序解决方案,提供小程序在云端服务器的技术方案。
该方案目前已囊括文件上传下载、WebSocket长连接、会话管理、视频点播直播等四大场景,并提供Demo教程与源码。针对小程序安全问题,腾讯云更提供Https证书服务,搭配腾讯云移动解析服务(HttpDNS),能够有效保障域名安全,防止劫持。
场景一:文件上传下载
文件的上传下载是移动应用开发最常见的一个场景,需要依托服务器端实现。微信小程序框架提供了文件上传下载的接口,腾讯云提供服务端的对应存储实现方案,降低开放小程序的复杂度,让开发者更专注于业务的开发。腾讯云以小相册Demo为例,结合腾讯云对象存储服务,对部署运行步骤进行了详细的介绍。
场景二:WebSocket长连接
对于需要多人协同类的应用,需要实现WebSocket长连接。微信小程序框架提供了WebSocket请求建立、数据通信、连接关闭等一系列的客户端接口,腾讯云利用自身的基础服务搭配Socket.IO镜像,帮助开发者构建支持WebSocket协议的长连接服务器,使开发者们更加高效快捷地实现WebSocket长连接通信。
(腾讯云以剪刀石头布小游戏进行WebSocket演示)
场景三:会话管理
微信小程序框架提供了wxml/wxss/js&api,但微信小程序本质上不同于web开发模式,开发者需要自己实现会话管理功能。借助腾讯云针对会话管理提供的云端技术方案及小程序端sdk,开发者可以快速搭建具备会话管理功能的小程序,降低开发成本。
场景四:视频点播直播
直播类的应用风头正盛,微信小程序框架具备丰富的wxml/wxss/js&api以及配套的文档,可以帮助开发者快速地搭建视频类应用。对于视频类应用,后台最为依赖的是流媒体转码集群和流媒体播放服务集群。腾讯云一站式视频解决方案,具有强大的视频点播/直播能力,使得开发者可以降低开发成本,只专注于业务需求的开发。
为小程序提供安全保障
在微信小程序中,不满足条件的域名和协议无法请求,所有网络请求必须走Https协议。腾讯云提供微信小程序的Https证书服务,保障微信小程序域名安全,搭配腾讯云提供的移动解析(HttpDNS)服务,将可实现防Http劫持兼备防DNS劫持功能。
据了解,目前公开的场景内容只是方案的一部分,腾讯云微信小程序解决方案将在近期不断更新丰富。可以预见,微信小程序的推出,将极大丰富微信生态系统,赋能于开发者。而腾讯云将通过云端服务和日渐成熟的云端生态,降低开发成本和维护难度,这也将促进微信生态系统的壮大。完整版微信小程序云端技术方案的后续推出,值得我们拭目以待。
有好的文章希望站长之家帮助分享推广,猛戳这里
本网页浏览已超过3分钟,点击关闭或灰色背景,即可回到网页922 条评论分享收藏感谢收起I'm trying to debug my
but I'm struggling. The Django dev server reports a 500 error to the console (but no other details) and the IPN test tool reports a 500 error but no other details.
I've tried disabling the DEBUG mode to try and get it to send me emails but despite setting up the EMAIL_HOST to something suitable, I'm not seeing any emails. I tried and verifying that the email system is working with a call to
..but that succeeds and I still see no emails regarding internal server errors.
What could I be missing?
I'm running the dev server from PyCharm and the console output looks like this:
runnerw.exe C:\Python26\python.exe manage.py runserver 192.168.1.4:80
Validating models...
0 errors found
Django version 1.4 pre-alpha, using settings 'settings'
Development server is running at http://192.168.1.4:80/
Quit the server with CTRL-BREAK.
Verifying...
...response: VERIFIED
IpnEndPoint.on_process
Valid: {u'last_name': u'Smith', u'txn_id': u'', u'receiver_email': u'', u'payment_status': u'Completed', u'tax': u'2.02', u'payer_status': u'unverified', u'residence_country': u'US', u'invoice': u'abc1234', u'address_state': u'CA', u'item_name1': u'something', u'txn_type': u'cart', u'item_number1': u'AK-1234', u'quantity1': u'1', u'payment_date': u'14:03:49 Nov 16, 2011 PST', u'first_name': u'John', u'mc_shipping': u'3.02', u'address_street': u'123, any street', u'charset': u'windows-1252', u'custom': u'xyz123', u'notify_version': u'2.4', u'address_name': u'John Smith', u'address_zip': u'95131', u'test_ipn': u'1', u'receiver_id': u'TESTSELLERID1', u'payer_id': u'TESTBUYERID01', u'mc_handling1': u'1.67', u'verify_sign': u'A8SIYWSxkrwNPfuNewSuxsIAatvMAi2mxYjlYvaiWh3Z4BuIQojK3KBO', u'mc_handling': u'2.06', u'mc_gross_1': u'9.34', u'address_country_code': u'US', u'address_city': u'San Jose', u'address_status': u'confirmed', u'address_country': u'United States', u'mc_fee': u'0.44', u'mc_currency': u'USD', u'payer_email': u'', u'payment_type': u'instant', u'mc_shipping1': u'1.02'}
Logging Transaction..
[16/Nov/:49] "POST /IPN/ HTTP/1.0" 500 104946
解决方案 Another thing to try is to launch a simple SMTP server on your machine.
python -m smtpd -n -c DebuggingServer localhost:1025
Which will output on your console all emails headers and body.
Make sure localhost and the port 1025 correpond to what you have in your settings.py, respectively in EMAIL_HOST and EMAIL_PORT.
本文地址: &
我试图调试我的,但我正在努力。 Django开发者服务器向控制台报告500错误(但没有其他详细信息),IPN测试工具报告一个500错误,但没有其他详细信息。
我试过禁用 DEBUG 模式尝试发送给我的电子邮件,但尽管设置了EMAIL_HOST适合的,我没有看到任何电子邮件。我尝试并验证电子邮件系统是否正在致电 ..但是成功了,我仍然看不到有关内部服务器错误的电子邮件。
我可能缺少什么?
我从PyCharm运行dev服务器,控制台输出如下所示:
runnerw.exe C:\Python26\python.exe manage.py runserver 192.168.1.4:80 验证模型...
0发现错误 Django版本1.4 pre-alpha,使用设置'设置'开发服务器正在运行http://192.168.1.4:80/ 退出服务器带有CTRL-BREAK。 验证...
...回复:VERIFIED
IpnEndPoint.on_process 有效:{u'last_name':u'Smith',u'txn_id':u' ',u'receiver_email':u'',u'payment_status':u'Completed',u'tax':u'2.02',u'payer_status':u'unifiedified',u'residence_country' :u'''''''''''''''''u'tcn'type:''u'c'',u'txn_type':u'cart',u'item_number1' :u'AK-1234',u'quantity1':u'1',u'payment_date':u'14:03:49 日PST',u'first_name':u'John',u'mc_shipping ':u'3.02',u'address_street':u'123,any street',u'charset':u'windows-1252',u'custom':u'xyz123',u'notify_version':u'2.4 ',u'address_name':u'John Smith',u'address_zip':u'95131',u'test_ipn':u'1',u'receiver_id':u'TESTSELLERID1',u'payer_id':u' TESTBUYERID01',u mc_handling1':u'1.67',u'verify_sign':u'A8SIYWSxkrwNPfuNewSuxsIAatvMAi2mxYjlYvaiWh3Z4BuIQojK3KBO',u'mc_handling':u'2.06',u'mc_gross_1':u'9.34',u'address_country_code':u'US',u'地址:'u'San Jose',u'address_status':u'confirmed',u'address_country':u'United States',u'mc_fee':u'0.44',u'mc_currency':u'USD' u'payer_email':u'',u'payment_type':u'instant',u'mc_shipping1':u'1.02'} 记录交易..
[16/11 / :49]“POST / IPN / HTTP / 1.0”500 104946
解决方案 另一件事是在机器上启动一个简单的SMTP服务器。
python -m smtpd -n -c DebuggingServer localhost:1025
哪些将在您的控制台上输出所有电子邮件标题和正文。 确保localhost和端口1025分别与EMAIL_HOST和EMAIL_PORT中的settings.py相对应。
资料来源:
扫一扫关注IT屋
微信公众号搜索 “ IT屋 ” ,选择关注
与百万开发者在一起
(window.slotbydup = window.slotbydup || []).push({
id: '5828425',
container: s,
size: '300,250',
display: 'inlay-fix'经典解决方案
给大家分享一个最好用的开源Web漏扫工具梳理!神级程序员强推!
赛门铁克2017年互联网安全威胁报告中提出在他们今年扫描的网站中,有76%都含有恶意软件。如果你在用WordPress,SUCURI的另一份报告也显示,超过70%的被扫描网站也都存在一个或多个漏洞。
如果你刚好是某个网络应用程序的所有者,怎样才能保证你的网站是安全的、不会泄露敏感信息?
如果是基于云的安全解决方案,那么可能只需要进行常规漏扫。但如果不是,我们就必须执行例行扫描,采取必要的行动降低安全风险。
当然很多付费扫描器功能会更加全面、严谨,包含报表输出、警报、详细的应急指南等等附加功能。小编推荐大家加一下这个群:这个群里好几千人了!大家遇到啥问题都会在里面交流!而且免费分享零基础入门料资料web开发 爬虫资料一整套!是个非常好的学习交流地方!也有程序员大神给大家热心解答各种问题!很快满员了。欲进从速哦!各种PDF等你来下载!全部都是免费的哦!所以小编在群里等你们过来一起交流学习呢!
Arachni不仅能对基本的静态或CMS网站进行扫描,还能够做到对以下平台指纹信息((硬盘序列号和网卡物理地址))的识别。且同时支持主动检查和被动检查。
Windows、Solaris、Linux、BSD、Unix
Nginx、Apache、Tomcat、IIS、Jetty
Java、Ruby、Python、ASP、PHP
Django、Rails、CherryPy、CakePHP、ASP.NET MVC、Symfony
一般检测的漏洞类型包括:
NoSQL/Blind/SQL/Code/LDAP/Command/XPath注入
跨站请求伪造
本地/远程文件包含
Response splitting
未验证的DOM重定向
源代码披露
另外,你可以选择输出HTML、XML、Text、JSON、YAML等格式的审计报告。
Arachni帮助我们以插件的形式将扫描范围扩展到更深层的级别。Arachni的详细介绍与下载地址:click here 。
一个有力的事实是,微软、斯坦福、摩托罗拉、Informatica等很多大型企业机构都在用这款基于python的XSS(跨站脚本)漏洞扫描器。它的编写者Faizan Ahmad才华出众,XssPy是一个非常智能的工具,不仅能检查主页或给定页面,还能够检查网站上的所有链接以及子域。因此,XssPy的扫描非常细致且范围广泛。
w3af是一个从2006年年底开始的基于Python的开源项目,可用于Linux和Windows系统。w3af能够检测200多个漏洞,包括OWASP top 10中提到的。
w3af能够帮你将payload注入header、URL、cookies、字符串查询、post-data等,利用Web应用程序进行审计,且支持各种记录方法完成报告,例如:
这个程序建立在一个插件架构上,所有可用插件地址:click here 。
w3af下载地址:click here 。
相信很多人对Nikto并不陌生,这是由Netsparker(专做web安全扫描器企业,总部坐标英国)赞助的开源项目,旨在发现Web服务器配置错误、插件和Web漏洞。Nikto对6500多个风险项目进行过综合测试。支持HTTP代理、SSL或NTLM身份验证等,还能确定每个目标扫描的最大执行时间。
Nikto也适用于Kali Linux。
Nikto在企业内部网络解决方案中查找web服务器安全风险的应用前景非常广阔。
下载地址:click here 。
Wfuzz(Web Fuzzer)也是渗透中会用到的应用程序评估工具。它可以对任何字段的HTTP请求中的数据进行模糊处理,对Web应用程序进行审查。
Wfuzz需要在被扫描的计算机上安装Python。具体的使用指南可参见这个: 链接 。
Vega由Subgraph开发,Subgraph是一个用Java编写的多平台支持工具,用于查找XSS,SQLi、RFI和很多其它的漏洞。
Vega的图形用户界面相对来说比较美观。它可以通过特定的凭证登录某个应用后执行自动扫描。
如果你懂开发,还可以利用vega API创建新的攻击模块。
10. Grabber
这也是一个做得不错的Python小工具。这里列举一些特色功能:
JavaScript源代码分析器
跨站点脚本、SQL注入、SQL盲注
利用PHP-SAT的PHP应用程序测试
11. Golismero
这是一个管理和运行Wfuzz、DNS recon、sqlmap、OpenVas、机器人分析器等一些流行安全工具的框架。
Golismero非常智能,能够整合其它工具的测试反馈,输出一个统一的结果。
谢谢阅读!如有侵权请联系小编删除!
------分隔线----------------------------
------分隔线----------------------------
[相关文章]  本文摘自:《Web 全栈工程师的自我修养》
  野生程序员是指仅凭对计算机开发的兴趣进入这个行业,从前端到后台一手包揽,但各方面能力都不精通的人。野生程序员有很强大的单兵作战能力,但是在编入&正规军&之后,可能会不适应新的做事方法。
  遭遇&野生程序员&
  腾讯公司内部的团队很多,在团队管理上有项目和专业两个维度。也就是说,有些团队是项目维度的,整个团队共同维护一个产品,成员来自不同的职业岗位;有些团队是专业维度的,比如一个组都是前端工程师,维护不同的产品。
  因为前端组是设计部最接近后台技术的团队,所以团队平时的工作和技术交流分享,都不局限于前端技术领域,还包括很多服务器端或者移动端的技术。从前端到后端,一些技术问题都要我们自己来解决。
  在招聘前端工程师的时候,我们对应聘者的要求是,在掌握基本前端技术的前提下,最好有更为全面的技术。这样,即使我们的项目人力结构、平台和方向发生变化的时候,他也能够更加灵活地转移到其他角色中。而且技术的全面更能表现一个人对技术的热情以及较强的学习能力。从团队多样性来讲,多一些技术种类的话,大家在一起也能碰撞出新的火花。
  有一次,我在 QQ 群发布了一条简单的信息:&招聘前端工程师,全栈更佳。&随后有一个&全栈工程师&A君向我自荐。
  我仔细看了他的简历:&三年工作经验,擅长 PHP、MySQL 数据库、jQuery、HTML 和 CSS,对 CDN 加速和网络安全也颇有研究。&他的简历让我眼前一亮,于是我跟他进行了一次简单的电话面试。
  电话面试的第一个环节照例是让A君简短地介绍自己。A君在一个传统行业的小公司做 IT 技术支持工作,公司的 3 个网站项目都是他一手搭建,从架构到编码细节他都如数家珍。他号称能解决一切技术问题,老板提出的所有需求都能完成,而且只有他能完成。随着最近公司业务量越来越大,他还招了两个下属,但是主要的编程工作还是他在做。
  我问他:&我们的职位是前端工程师,那么您有哪些前端方面的技能呢?&他回答:&我擅长 HTML、CSS 和 JavaScript。&
  &对于 Web 性能优化,您有哪些了解和经验吗?&他思索了一阵答道:&我们在发布项目之前压缩 CSS 和 JavaScript 源代码,这样文件体积就变小了,用户加载必要资源所花的时间也就更短了。&我继续说道,很好,还有吗?他想了半天,答不上来了。
  其实关于 Web 性能优化,有非常多的方面可以去做,我希望应聘者能尽量多回答一些。
压缩源码和图片
  JavaScript 文件源代码可以采用混淆压缩的方式,CSS 文件源代码进行普通压缩,JPG 图片可以根据具体质量来压缩为 50% 到 70%,PNG 可以使用一些开源压缩软件来压缩,比如 24 色变成 8 色、去掉一些 PNG 格式信息等。
选择合适的图片格式
  如果图片颜色数较多就使用 JPG 格式,如果图片颜色数较少就使用 PNG 格式,如果能够通过服务器端判断浏览器支持 WebP,那么就使用 WebP 格式和 SVG 格式。
合并静态资源
  包括 CSS、JavaScript 和小图片,减少 HTTP 请求。
开启服务器端的 Gzip 压缩
  这对文本资源非常有效,对图片资源则没那么大的压缩比率。
  或者一些公开库使用第三方提供的静态资源地址(比如 jQuery、normalize.css)。一方面增加并发下载量,另一方面能够和其他网站共享缓存。
延长静态资源缓存时间
  这样,频繁访问网站的访客就能够更快地访问。不过,这里要通过修改文件名的方式,确保在资源更新的时候,用户会拉取到最新的内容。
把 CSS 放在页面头部,把 JavaScript 放在页面底部
  这样就不会阻塞页面渲染,让页面出现长时间的空白。
  每一个条目都可以进一步深层挖掘下去。
  Web 性能优化分为服务器端和浏览器端两个方面。
  此外,由于中文的歧义性,Web 性能优化这个词既可以解读成页面加载速度(Page Speed)的优化,也可以解读成页面渲染性能(Page Performance)的优化。或者是二者的集合。所以,应聘者如果能在这个问题上多做一些分析,会有很高的加分。但是A君在网络性能方面的研究只是浅尝辄止,停留在压缩资源方面,这说明他还没有足够理解 HTTP 协议本身。
  关于网络性能和 HTTP 协议,作为大公司的前端工程师是非常看重的,因为每一个页面都会有亿万用户访问量,任何一点对服务器带宽压力都会积少成多,最终造成很大的成本。关于这方面的技术详解,我在后面会有一篇单独的文章来分析。
  接着上面的故事,我想既然他对 Web 性能优化方面不太熟悉,可能他是一个偏后台的程序员,因而就又问道:&关于服务器端 MVC 架构的技术实现,您是怎样理解的?&他说:&是数据模型、视图、控制器的分离。&
  我更进一步问道:&这种架构方式有什么好处?您在项目中是如何应用这一架构的?&他回答说:&MVC 的架构方式会让项目可维护性更高,所有涉及界面的代码都在视图(View)里面,所有涉及核心逻辑的代码都在模型(Model)里面,URL 路由之类的代码都在控制器(Controller)里面。我在项目中使用了 MVC 架构的 PHP 框架&&CodeIgniter。&
  我一边打开他的网站,一边继续跟他电话沟通。当看到网站的 CSS 代码都直接内嵌在 HTML 头部的时候,我忍不住问他:&为什么您的网站的 CSS 代码都内嵌在 HTML 里面呢,是使用自动化工具合并进去的吗?&他支支吾吾地说:&因为在本地调试的时候,CSS 文件修改经常不生效,所以就直接在 HTML 里面改了,这样比较快。&
  好吧,我想这是一个典型的&知易行难&的开发者,他知道采用 MVC 架构的项目的可维护性更高,可是在分离样式与结构上面还没有达到最基本的要求,甚至把 CSS 写在 HTML 中。至于他说的在本地环境上发现 CSS 文件经常缓存,可能要看看本地服务器的缓存设置是否有问题,然后再做调试。稍微了解一点 HTTP 的浏览器端缓存,这就不是难事了。我更欣赏在开发流程上花工夫去理解和优化的应聘者,而不是马马虎虎,只是以完成需求为目标的人。
  我突然想到他说的&所有需求他都能完成,且只有他能完成&,于是就想问问他代码版本管理方面的问题。我说:&您们团队现在加入了两个新人,那么您们如何进行代码版本管理?&他回答:&我们有一台测试服务器,用 FTP 来测试代码,如果在测试机上没有问题的话,我们就会发布到生产环境。&
  我说:&等等,我不是问您们代码部署的问题,是平时您们如何管理代码版本,如何分工协作的?&他说:&我们把代码从测试服务器上拷下来,修改完了之后再传上去。&
  到这里,我终于明白为什么他们团队的新人无法快速融入项目了,因为项目没有使用 SVN 或者 Git 这样的版本管理工具。团队只有一个人在写代码的时候,缺乏版本管理工具的问题可能还不会暴露出来,但是当更多成员加入时,整个项目就会寸步难行,大家都要花大量的时间合并代码,以及找回丢失的代码。万一出现了外网 bug,版本工具也能帮我们把站点状态快速恢复到之前的时间点。在本书的后面章节,我会详细介绍版本管理工具。
  最后我抱着几乎绝望的心情,问了下关系数据库设计原则方面的问题,他的回答也不是很理想。
  我知道,我又遭遇了&野生程序员&。
  什么是&野生程序员&
  所谓&野生程序员&,就是没有计算机基础知识和相关教育经历,靠着对计算机开发的兴趣进入这个行业,虽然知识面比较广,但是各方面都一知半解的开发者。
  这几年我从一个求职者,转变成一个招聘者,有一个感受就是,中国高等教育与市场需求不接轨。学校不了解市场究竟需要什么样的人才,其设立的课程和技术往往比市场技术现状落后了 5 年以上。我在大学学习用 ASP 建站,但是现在已经几乎没有人用 ASP 建站了。一个直接的后果是,很多高校毕业生不能满足企业的要求。
  与此同时,中国互联网市场蓬勃发展,特别是移动互联网的发力,让中国跳过&WAP 时代&,直接进入&App 时代&。市场的热钱都投入到互联网行业,&BAT&等大公司不断扩张,创业公司也如雨后春笋,整个市场对软件工程师的需求缺口巨大,所以很多公司在招人的时候,没法招聘到&专业&的计算机专业毕业生。
  在美国,因为教育与市场稳定发展了很多年,供求关系相对平衡,计算机相关专业本科已经成为基本要求。举例而言,美国的硅谷公司(如 Google)绝大部分前端开发招聘岗位都有一个最低要求&&本科学历,计算机相关专业。
  相比而言,从中国的大公司(如腾讯)的招聘网站上可以看出,有一些前端开发岗位没有对学历的要求,也有一些要求&本科及以上学历&,少数才会要求&本科学历,计算机相关专业&。我们的团队中就有一些成员是大专学历。许多企业在招聘的时候往往放松了对学历的要求,只看重项目和经验,而不看重学历。这是一件好事,代表市场在高等教育的规模和质量都跟不上市场要求的情况下,给予更多有兴趣和能力的年轻人进入 IT 领域的机会,也填补了人才市场的空缺。
  美国硅谷,是世界互联网公司的中心,是所有求职者梦寐以求的圣地。在最开始,硅谷之所以名字当中有一个&硅&字,是因为当地企业多数是从事加工制造高浓度硅的半导体行业和电脑工业。随后,互联网公司和软件公司渐渐取代传统的硬件公司,让硅谷获得了新的生命,但硅谷这个名字保留了下来。在硅谷从诞生到发展壮大的整个生命周期中,斯坦福大学起到了很大的作用,我认为称之为硅谷的母亲也不为过。
  在中国,由于政策、环境、历史原因,还有大学教育投入上的差异,导致大学在整个互联网发展中起的作用没那么大。中美两国 IT 人才市场供求关系上的这些差别,也反映在整个行业文化中。
  一个直观的反映就是软件工程师的&草根&化。其实很多软件工程师的收入都很高,处于中上层水平,相比金融行业的白领也毫不逊色,但是一谈起程序员,大家的印象还是&一年四季的T恤(在行业展会上免费拿的)牛仔裤,平时也喜欢宅在家里,不会像同样收入的金融白领,平时爱好听歌剧打高尔夫球&。这种差异一方面是外部人士对软件工程师职业的偏见,另一方面也是程序员行业的自黑习惯。在招聘时岗位要求就已经放到最低:不要求学历、上班不要求着装、上下班时间灵活,这样才好更方便地招聘。而金融行业有意识地塑造一种&精英&文化,从学历就设置高门槛,即使有些工作根本不需要那么高的学历。
  回到毕业生的话题,很多跨专业的学生发现自己兴趣在互联网和计算机方向的时候,就开始了自学之路,基本上学习方式有这样几种。
书:在计算机图书领域,技术难度跟图书销量是成反比的,从标签教起的 HTML/CSS 基础书籍卖得最好,其次是关于 JavaScript 和 jQuery 的书,Angular 和 Node.js 之类的就没那么畅销了。
互联网:得益于全世界都在互联网上共享的资源,现在的学习者有了更多的选择,比如关于 Web 开发基础教学的 W3CSchool,还有海量的技术博客。我个人喜欢订阅一些英文大站,比如 Smashing Magazine()、tuts+()等。我在读大学的时候,Google Reader 还没有永久关闭,那时候我很喜欢用 RSS 来关注这些站点的更新情况。Google Reader 下线后,就基本上废弃了 RSS 阅读的习惯,转而用一些社交网站来追踪更新情况,但是有时还是会淹没在大量无用的信息里面。
社团:学校的网站社团也孕育了许多能力很强的开发者,社团经过历届的传帮带,技术有所积累,比如师兄会教师弟用 Sublime 编辑器,这就比还在用 Dreamweaver 的同学更有优势。此外,学校社团有一些定点客户,比如学校教务处、周边商户,所以有更多的实战经验,在毕业时作品集也丰富了不少。
  因为有这样一些自学渠道,所以不一定只有计算机专业毕业的学生才有机会进入互联网行业。毕业之后,这些计算机爱好者进入不同的工作岗位,不同的是,有些进入大公司,有些进入小公司。这两者的成长轨迹往往会不太一样。
  小公司有很多野生程序员
  流水线工作流程有诸多优点,但一般来说,大公司才需要很多专精某种技术的工程师,组成一个 Web 开发团队。创业公司只需要几个技术全面的人来做开发和技术支持,有时候甚至只有一两个人而已。
  当然,最主要的原因就是成本和回报的问题。招聘和维持庞大的 IT 研发团队需要一笔不小的开支,小公司并没有那么多 Web 服务的需求,一般企业可能只需要一个公司站点就可以了,现在甚至完全不需要 Web 站点,可以用微信公共账号或者淘宝这样的大平台来完成。如果招聘一个完整的 Web 研发团队,从用户研究到交互设计、从 App 开发到数据库管理,直接后果就是整个团队大部分时间都空闲着,无事可做。与之相比,聘请一个或多个全栈工程师会更高效、更省钱。
  第二个原因是,很多传统线下公司并不会特别依赖 IT 技术,有些时候线下渠道占据了公司大部分收入来源,所以公司不需要架设十分完善的线上服务。由于线上服务的用户量少,所以 Web 服务对稳定性、承受压力、用户体验的要求都没有那么高。此外,由于没有太多重要的用户数据,所以异地容灾也不需要。
  因为公司的开发团队小,所以网站无论出现什么问题,都需要他们去解决。从域名到服务器,从前端到后台,从设计到内容,都是一人包揽。野生程序员了解的知识越来越多,但是样样都不精通。我认识几个小公司的程序员,他们没有明确的职称,开发者都统称为程序员,设计师都统称为美工。
  在 Web 技术的任何方向,比如前端开发或者服务器端开发,他们既没有很强的经验,也没有明确的兴趣。那么当他想跳槽到大公司的时候,会发现大公司对岗位和职责的细分非常明确,而自己的能力达不到某个细分岗位的要求。所以他们很难在专业上继续进步,从而陷入原地踏步的窘境。
  大公司还是创业公司
  在许多论坛上,常常会看到毕业生提出这样的问题:现在有一个大公司和一个创业公司的机会摆在我面前,我应该选择哪一个?
  其实每个人有不同的想法、不同的风险偏好,旁人没办法针对这个宽泛的问题给出标准的答案。但是既然提问者是毕业生,这种情况下我还是建议选择大公司,因为会选择创业公司的人往往有自己的主见,已经接受创业公司的邀请去工作了,不会去发帖询问大家的意见。
  当然这是开玩笑,真正的原因是,在大公司的头两年,是从学生到职场人士的一个转变,您可能会从大平台学习到一些规范的流程方法,养成一些足以影响您一生的习惯,认识更多的能对您职场有帮助的人脉。
  大公司能给您的
较小的风险
  每个公司都有倒闭的可能,但是,显然大公司比小公司的风险低多了。如果您的风险承受能力较低,那么不得不考虑这个因素。
技术最佳实践
  在大公司,对代码质量和一致性的要求很高,所以一般在最终发布前会有代码审查(Code Review)流程和项目总结会等。如果您完成了一个任务,但是没有采用最佳实践,只是 hack 了一下,那么其他同事可能都会指出您的问题,并且要求您改正之后再提交。小公司或者创业公司人力比较紧张,在他们看来,快速实现和上线,比优雅地上线更重要,所以对于一些最佳实践类的问题,只能睁一只眼闭一只眼啦。
[所谓 hack,就是不优雅的解决方案。比如一个界面的调整,如果采用最佳实践,需要用 MVC 架构来分离出界面相关的代码,并且把有可能相关的变量提取出来,合理命名并且放在合理的位置。如果是 hack,可能就不管这么多,看见哪里需要修改就原地修改了,表面上看很快解决了问题,可是这会给后面跟进的同事造成很大的困扰。]
垂直专精的技能
  大公司专业分工很细,而且有更多技术沟通和沉淀的氛围,所以容易让人在垂直专精的技术方向有足够的发展。在小公司更能锻炼技术的广度,深度上缺乏锻炼的环境。但是其实二者的利弊,都是外界的,技术人员的个人成长除了工作时间的锻炼,还要靠下班后的时间,外界只是给予一个环境或者机会。
服务海量用户的经验
  同样是做一个网站,服务少数用户量和服务海量用户量时需要考虑的事情是完全不同的。小网站遇到的问题,大网站一定遇到过,而大网站遇到的问题,小网站就不一定遇到过了。当一个网站发展到业内最强时,它的问题没有人遇到过,这时候就不能凡事问百度、Google 或 Stack Overflow 了,而要自己去探索解决方案。
  硬技能是指每个职位需要的专业技能,软技能则是通用的技能,比如沟通、影响力、项目管理和演讲等。越是大公司,越是看重影响力,所以会有很多培训教您如何提高影响力。
  我在面试一些来自小公司的应聘者时,就发现他平时的工作中,周边环境很少有分享和沉淀的习惯。沉淀和总结是很重要的,在腾讯,设计师做完一次设计定稿之后,就会把设计的思路,包括整体的设计风格、设计规范和色彩的确定等都总结成一封邮件或者 PPT,发送给部门同事。每个人都要有意识地维护自己的作品集,它在半年一次的考核、晋升面试甚至以后的跳槽中都非常有用。但是小公司的设计师不太会总结个人作品集,时间紧急是一方面原因,另一个主要原因是环境不需要他这样做,因此就缺乏了这方面的锻炼。
  每年都有不少人从大公司离职去创业,这是非常自然的事情。对于大公司出来的人来说,之前积累的人脉资源这时候会起到很大的作用,比如创业期间的一些合作机会或者资源的互利,等等。万一创业失败,也不会很惨,因为您之前接触的人脉可以给您提供工作机会。但如果您刚毕业就选择创业,创业失败之后没有人能给您提供工作机会。
  其实大公司能给予毕业生最大的优势,就是提供一个心智培育的土壤。之前参加面试官培训的时候,我大概了解过公司招聘一个毕业生投入的成本。从校园招聘,到安排面试官面试候选人,再到封闭培训和一些课程培训,再给一段时间熟悉项目,最后 3 个月试用期后可能还要淘汰掉一些。如果把成本平摊到每一个人身上,这些投入要一年才能收回来。而小公司不会有这么大的耐心去培育一个新人。如果没有足够的时间去学习和成长,可能在一两年后,员工的能力也比较全面,但是样样都不精通,也说不清楚自己的目标是什么,于是就变成了&野生程序员&。
  综合来讲,在大公司中,从硬技能到软技能都会有很多经验丰富的前辈能够教您,您会在大平台上学习到很多东西。工作几年之后,员工的选择也很多,要么走技术路线继续发展下去,做高级工程师;要么学习管理和领导力;要么出去创业。
  所以,我的个人建议是,从毕业生自己前途发展的角度来看,先加入一家上市大公司是个不错的选择。

我要回帖

更多关于 程序员跪拜服务器 的文章

 

随机推荐