我有一个同学是测试转开发,不准备就转是不可能的。
他做了两个作品,一个是 django+redis 简单写了一个论坛。另一个是写了一个 chrome 插件,用于公司内部 portal 的集成工具,打包了一些测试报告的 js 提交接口,方便测试人员自己在内网的 portal 提交测试进度。
然后拿着这两个作品就找到开发岗的活了。
一定要转,自己代码功底过关是基础,然后还要有拿得出手的作品证明自己有开发实力。
看报错看报错,没有报错日志是查不出来问题的。
一般 win 下面的文件大小写是不区分的,而 linux 对文件有绝对的大小写区分,所以如果有 windows 下面开发的代码,文件名的命名规范一定要统一好,偷懒就用全小写,不然到线上,为一个大小写的区别, linux 报找不到文件是常有的事。
线下开发环境搭建一个与线上一致的版本是必须的,至少在上线之前代码放到与线上环境一致的测试环境跑一遍测一测。
如果线上出问题了,第一反应应该回滚代码,然后把错误日志找出来诊断原因。
docker 大法确实好,在线上部署对运维能力要求高,但是确实很省开发人员搭建环境的时间。运维把配置脚本写好,开发把需要的安装文件和脚本 copy 过去,运行一下就可以把环境拉起来。
做过类似的图片管理发布功能。
python 当然可以做,语言不是问题,只要有 zip 模块,几个图片处理的模块,就可以做。
安全上面就有很多问题了,谁也不知道压缩包里面装了什么,要做很多检测,开放给普通用户就等于开了一个有后门风险的接口出去,只要爆一个能利用上传文件的 0day 出来,服务就垮掉。
还有一些零散的业务问题:
压缩包内的图片顺序如何约束,怎么约定用户的图片命名规则及格式,压缩包规范。
有一票的扫上传接口脚本,会传各种奇怪的脚本和文件进行注入探测,产生很多零散的文件和注入信息,虽然接口安全写的好的话没有危害,但是总得花时间人工处理。
用户恶意上传超大文件。
用户上传无效文件如何清理,临时文件区的清除规则。
36kr 的文章就喜欢说这些看起来高屋建瓴的东西,有关注度啊。引用一些过往的案例和数据,就开始夸夸其谈预言市场格局和走向了。
风头起的时候,使劲就想办法凑 P2P 改变金融格局,金融市场开放各种与国际接轨, O2O 、线下支付炒得火热的时候也推了好多利好的文章,现在看经济往下行吹了,又开始推这类唱衰的文章到首页。
尤其那个澳门赌场和 A 股的资金数据,这两个差了好几个数量级的东西,也能放一起说?
做 socket 通信的时候,第一次听到粘包、断包、多包、少包、拆包这几个词我都懵了,再听解释还挺有中国特色的。
还有 iOS 开发的个名词也是很逗, storyboard->故事板 倒是挺直接的,但是听起来总觉得像是处理业务逻辑的工具,不像布局工具。
吧倒转 css 的恶作剧替换成随机 404 错误,拦截局域网内的请求,随机把公司域名下的请求用 404 替换,保证可以把整个公司闹个底朝天。
十几年的行业经验积累,做个同行业的互联网公司的产品经理会很抢手。
几大服务器厂商都有远程开机网络管理接口,原理无非就是开一个小的嵌入式的网络设备暴露出去,接受到开机操作就给服务器开关发送启动电流,可以搜这几个关键词: IPMI 、 iLO 。
这种情况想谈心,是不可能的,包括他所谓的好兄弟好朋友,他也不可能谈心,如果愿意谈心,在自己遇到困难的时候早就找父母谈了,不至于拖到现在。
我弟当时也不和人谈心,回答永远是打太极试的回应:没有什么想法啊 /随便啊 /你们安排吧。然后自己依旧做自己的事情。
只能靠用心观察,他自己肯定有自己的想法,但是肯定没有什么未来规划,就看家里人怎么引导了,努力探寻出孩子感兴趣的事情才是重点,家庭教育本身就是一个很难的问题,十几年的失责疏忽教育想在一两年扭转,让孩子实现顿悟式成长,这是把孩子当天才了。 yuewolf 说的很对,这是一个很漫长的教育过程,没有无痛特效药,会花很长时间和心思而且未必有效果。做好会花费好几年时间的心理准备吧。
真想帮孩子成长,一个是把选择权还给孩子,另一个是带他去看更大的世界。楼主说的换一个生活环境和学校是好选择,这已经帮助他与过去的朋友圈子脱离出来了,送到培训机构做针对性的辅导也是正确的做法,另外就是其他楼层说的,去看看更大的世界,比如骑行、旅行。
就选择权这个事情,可以营造一个短期的决策事件交给孩子负责。
比如旅行,在旅行的时候要做很多决策,也会遇到很多困难,在这个过程可以观察到很多细节,在家庭条件还不错的情况下,可以试试拉着他一起做一个五天左右的自由行规划,花多少钱,去哪儿玩,怎么查资料,怎么预订各种门票、酒店,交通工具和路线如何选择,在这一套的路线中会有很多决策的事情需要他来做,你也可以教授他一些基本的互联网查询资料的技巧,在这个过程就已经是在逼迫他自己动脑决策了。在实际游玩的时候还可能遇到一些意外需要决策,鼓励他去决策去解决,这个很能看出人在遇到困难的心理状态。是埋怨、懊恼放弃还是坚持、探寻其它方案,最后实在解决不了了,长辈再帮一把。从这个过程就可以看出孩子的心智能承受多大的压力和挫折,对以后的疏导很有帮助。
即使情侣之间,也可以通过自由行这种环境看到对方日常生活不会暴露的负面情绪,我第一次去境外游的时候,整个行程因为没有考虑到体力,光顾着多体验几个景点,把自己弄得身心疲惫,尤其出现计划外的异常,迷路的时候,就差点崩溃掉。还好我老婆是个共情能力比较强的人,看出来我的沮丧和烦躁,没有抱怨而是陪我一起解决问题,如果换做遇到问题开始埋怨责怪对方的伴侣,吵架肯定是难免的了,严重的可能会分手。
也可以想办法设置其它情境,但是都需要父母转变思想,与孩子做平等的对话,而不是压迫式的指定路线给他走,在孩子成长这个事情上,父母必然是有责任教导的,别总想着把责任推卸给外部环境。如果说不动女朋友的父母去承担这个责任,出了任何问题孩子都会想着依赖父母,通过耍赖向父母索要资源,这个事情基本无解。
只要家长还是这个态度,孩子永远有我闯祸了有家长担着,不开心闹一闹就有糖吃的心理状态。外人是没办法进行纠正的。
家长的教育有很大的责任,即使这样,家长也还是没有从自身寻找孩子成长过程中缺失了什么导致现在的性格和行为。还是想着通过找其他途径其他人帮忙把孩子矫正过来,当兵、送去学校、送出去打工,都是把孩子往外推。却没有养在家中好好和孩子沟通这个选项。选艺术这个路线,估计家里也没有和孩子商量过,一切其实都还是以家长的意愿去推动孩子,孩子根本没有什么选择的机会。
其实不想学习的原因很简单,家庭期望值远超个人的能力了,明明就是只能考二三十分的能力,非要强行送去应付必须 60 分才行的考试,可以说在考试这个事情上,孩子已经丧失所有的自信了,家庭给再多压力也没有用,因为已经压跨了,在面对困难产生的无法战胜的挫败感之后,逆反心理会特别强烈。
首先把孩子的自信心培养起来才是解决问题的关键,家长鼓励的同时做好规划,让孩子从力所能及的问题开始解决,一步一步提升之后,让孩子靠自己的努力逐步解决遇到的困难,才能把自信培养起来。
既然家里有钱,大不了送回高一再读一遍,高三还有复读三年的呢,真想让他走读书路线,无非就是从力所能及的程度开始学习,要是钱够,学校的教育实在满足不了,就放家里请家教根据基础一点一点补,花个两年时间把基础补好,再去高考不过 20 岁,年龄上并没有多大的差异。
每个人都有自己成长的路线,家庭要做的无非就是在跌倒的时候扶一把,迷茫的时候指指路,总有一天会成长起来走自己的路的。
我弟弟原先也是一个被当成烂泥扶不上墙的人,初中没心思学习,考不上任何公立高中,最后送去私立高中,就这样高二和老师争吵,还逃了半年学去外地和朋友玩,可以说高中基本就废掉了。父母当时都愁疯了,因为完全无法沟通,他根本不会说自己的想法。
当时父母就定了一个基调:家庭条件不好,养不了一辈子,所以未满 18 岁,家里供养,满 18 岁不读书,自己出去混。
然后承诺了两个事情:
1.不读书可以,在没满 18 岁之前家里养你, 18 岁以后你自己走你的路。既然没满 18 又不想去学校,那也不会给你钱,你就在家呆着,家里管你一口饭。
2.读书,既然和班主任有矛盾,家长肯定保护你,那就去学校和学校、老师谈清楚,换一个班或者留级。家里也不要求你的成绩怎么样,读完高中,能上大学上大学就继续养,不能你就自己去闯你的。
我弟选了第一个,然后相当于软禁在家两个月。其实他的朋友也都还在学校里面,白天根本不会有人找他玩。后来高三开学再次询问意见,要不要去学校,成绩怎么样不管,去了学校不能逃课。这回愿意去学校了,成绩依然一塌糊涂,最后是到了一个基本上不要求成绩,很差的专科,学习的专业家里倒没有要求,就由着他选,到了专科他才发现自己写代码还挺有成就感的,竟然比其他同学做得好,这才找到自信开始有信心自己学习点东西。可以说如果不是到专科发现一个感兴趣的事情,我弟很可能就这么迷茫的混下去了。
很多家庭条件好的,可以给孩子很多尝试的机会,帮助孩子找到自己感兴趣的东西,培养孩子的自信,即使没有走高考这条路,也还有其它的选择给孩子,重点是家长有没有心思去鼓励孩子发掘自己的兴趣,逐步增强孩子的自信。
除非家庭条件不行,没有什么条件培养孩子就推向社会,不然经过试错总有一条路适合走的。最次子承父业,父亲手把手带着让孩子按照自己的轨迹走一遍,混个谋生技能,总不至于饿死。
一百万一天的 PV ,平均下来峰值不超过二十每秒,只要不是非常耗性能的检测,任何语言都可以处理。
说穿了,写代码开发毕竟还是个工科的行当,很看实践的反馈进行试错积累经验。
在体制内,自学时间多是好事,但是如果没有人指路,没有实际项目开发进行积累,是看不到很多埋在大流量和复杂业务下面的坑的。很大可能是在已有经验的基础上面来回练习,达到熟练编写 demo 的程度。没有实践机会,没有试错积累的经验自然少一些。
尤其体制内还有一个有趣的问题,犯错了谁来背锅,由于岗位流动性差,所以一旦犯错背上锅,很可能在几年内都翻不了身。所以体制内做技术,很少冒险,能推给外包公司的责任就都推出去,就算真有技术在手上,想要推广使用是千难万难,真上线新技术了,出问题即使解决了,也得有人负责,这种情况下,想在体制内实践新东西是基本不可能的,宁可使用已经实践过好几年的技术架构,也不要采用新的,因为这样容易推卸责任。
互联网公司成长快的原因是,有些公司做的产品,一上线就要面对百万级的流量,上面有各种千万级经验的老手带着,加上快速迭代的开发反馈,内部代码审核机制,出错了通常上级负责,在开发的时候只要测试性能上面有提升,就有机会推到项目中使用,通过这种试错可以积累很多经验,学习到应对大流量的系统架构和经验。尤其内部代码审核,是最提升新手个人能力的,这种有代码审核的岗位,新手的成长要比没有代码审核的公司快很多。
相对的,还有很多流量只有十几万的小互联网公司,就很难积累到这些大流量的业务经验,也没有代码审核,只要能完成功能写成怎么样也没人管,来来回回写基础的业务,没有机会接触更复杂的系统,成长同样也很慢,但是他们可以跳槽啊,运气好跳到有点积累的公司,被环境逼迫就能多学一点东西,当然也有最差的,就是来回跳做十年还是一年经验那种,五年十年的赶上技术革新跟不上,比在体制内还惨,体制内至少还可以保住饭碗,不在体制内能力又跟不上行业环境的,会死的很惨,那波喊着 35 岁以后做不动技术,不升管理岗就转行的通常就是被行业淘汰的。
实际上小公司的管理岗位经验并不能迁移到大公司上,要跳大公司,卖的是处理大流量的业务经验,或者实践过风险比较大的新技术,大公司还来不及内部培养人员的时候。大部分小公司的技术 leader 进一二线互联网公司还是从写代码开始。
如果喜欢做技术,趁早跳个好团队,在自己都没信心的产品上耗费时间是浪费青春。
不要想那么多,既然有用户来源但没有技术积累,就上淘宝开个 C 店,一样拥有全套的库存、订单、收款、客服、售后的管理,同样可以做活动,这是传统旅行社切入电商最省钱的途径。
淘宝还省去各种服务器的运维成本和风险,很多境外游的旅行社就靠淘宝+QQ 群+微信公众号一样玩得非常顺畅,没必要在自建电商上面消耗那么多人力成本。
你提到的几个旅游电商,光是技术团队的人力成本就比你的预算多百倍,随便做个活动就是几十万起,自建电商平台的原因是有很多,最主要的是他们有很复杂的业务必须要自己写代码完成,比如统计数据分析、自定义部分活动,发各种不同的礼券做推广。
这些都不是小旅行社需要考虑的,用好淘宝、微信公告号就足够支持一年几百万的流水了。
在不启用静态化规则的情况下, nginx 只需要配置域名,把域名所对应的请求全部转发给对应的端口就可以了。
url 的规则则由 tornado 的 handler 配置进行管理。
如果路由是 tornado 处理, nginx 只需要配置好 server_name ,把对应域名的请求全部转发给 tornado 的端口就可以了,没必要单独配置 nginx 的 url 规则。
如果 varchar 的长度原先为空, update 一个 30 字符的值进去, mysql 要做的是开辟新的空间把整行数据迁移过去,这个过程会锁表,这个并发高起来,性能都消耗在计算空间申请新空间上了,其实还不如 insert 。
要优化,可以考虑将 varchar 字段改成定长,这样在行记录创建的时候,就会预留固定长度的位置, update 的时候就不需要重新开辟新的空间,执行 update 的消耗就与 select 基本一致,付出的代价就是这个表的文件大小会变大,因为预留的空字符串长度,等于空间换时间。
那只能拆解问题了。
update 毕竟分两步,先查后改。如果每次只是根据索引更新一条,试试拆成查询看看查询消耗。
如果不是需要重建索引,感觉问题很可能出现在查询这块的消耗上。用 EXPLAIN 分析一下操作的影响行数,如果建的索引用得好,查询的影响行数估计就只有几个。
之后才是测试取单行的标识 id 直接做更新操作, varchar 是变长字段,改动是会影响行数据的长度的。但应该不会出现那么大的耗时。