关于 wex5

作者还没有填充任何详情。
到目前为止 wex5已经创建43博客内容。

和程序员男朋友过情人节都是这样的

◆ 01 我一直期望着跨年的时候,我们能有机会一起看着烟火倒计时,然后在跨年钟声响起的那一瞬间,拥个抱接个吻什么的。 2013年跨年。舍友们出去开了个房间,看跨年晚会,唱歌,等等。我对某人说,我们也一起跨年吧。 他说,好啊。 然后抱上了电脑,把我带到了实验室。 “你挑个电影,我们一起看好了。” 我在心里叹了口气,挑了个《爱在黎明破晓时》系列。 看了一会儿之后,发现他心不在焉。 “怎么了?” “电影太无聊了。” 我的兴致也不是很大,便说,你看你自己喜欢的吧,我看这个。 他就开心地去看不知道什么科幻片去了。 看完电影之后,他说,不早了,回寝室吧。 我说,这就回啊。 他不解,不回待会宿舍关门了啊。 我默默把看零点的烟火熄灭在心底。 第二天看到他写了篇博客,其中有一句:“从13到14,这大概是我们一生一世的一个开始。” 好吧,我承认我又没用的感动了。 ◆ 02 2013年1月4日是我们在一起的第一个重大的日子,所谓千年或百年(或其他不知道多少年)难得一遇的“爱你一生一世”。 我像每一个恋爱中的小女生一样对这个浪漫的日子充满了期待与憧憬,早早在他耳边嘟囔。相信每一个初谈恋爱的小女生,总是希望把青春偶像剧里上演的风花雪月浪漫剧情,通通演绎一遍。 然而整个上午,他都窝在实验室里,不知折腾些什么。 被冷落的我自觉无趣,窝在寝室里看电影,大概是《失恋三十三天》一类。 下午三点左右,收到了某人的短信:“要不要出去逛逛啊?” 我没好气地回复:“逛什么?” “今天是201314啊,这么好的日子,不过岂不是浪费了么?” “原来你还知道啊……所以要去哪里?” “你看呗。” 已经是半下午,只能在学校附近活动了。我看了一圈地图,选择了学校附近的一个不知道是寺庙还是塔的遗址的公园——西安有很多这种免费的遗址公园。所谓遗址公园,其实就是一个据说那里曾树立着拥有怎样怎样价值的建筑发生过怎样怎样宏大的历史事件而如今什么也看不到了只剩下刚栽的树木和不副实的名字的公园。 步行过去,大约二十分钟。公园里什么都没有,也不对,有在冬日里只剩下枝丫了的树,和一汪已经结成冰了的…冰。 也不是下雪天,没法儿不撑伞走着走着就到白头。 唯一的娱乐活动是我在冰上面蹦跶了一下,因为我想知道北方的冰有多厚。不过我也只敢在岸边试了一试。 嗯,还有什么呢,某人突然抱住了我… [...]

发布者 |八月 9th, 2016|技术资讯|0条评论

1秒50万字的关键词匹配(js实现)

在论坛和聊天室这样的场景里,为了保证用户体验,我们经常需要屏蔽很多不良词语。对于单个关键词查找,自然是indexOf、正则那样的方式效率比较高。但对于关键词较多的情况下,多次重复调用indexOf、正则的话去匹配全文的话,性能消耗非常大。由于目标字符串通常来说体积都比较大,所以必须要保证一次遍历就得到结果。根据这样的需求,很容易就想到对全文每个字符依次匹配的方式。比如对于这段文字:“Mike Jordan had said "Just do IT", so Mark has been a coder.”,假如我们的关键词是“Mike”“Mark”,那么可以遍历整句话,当找到“M”就接着看能不能匹配到“i”或者“a”,能一直匹配到最后则成功找到一个关键词,否则继续遍历。那么关键词的结构就应该是这样的: 1 var keywords = { 2 M: { 3 i: { 4 k: { 5 e: {end: true} 6 } 7 }, [...]

发布者 |七月 29th, 2016|教程指南|0条评论

传统的程序员真的将会被淘汰么?

要成为当今软件开发中受人尊敬的专业人士,你需要掌握各种技能,而且达到高水平的专业级别。最起码,你需要能够把你的英语解决方案翻译成软件实现。 不仅技术上要正确,在业务上也得可行。因此,对业务有一个深刻的理解总是没有坏处的。这使得你可以有效地收集和谈判客户的需求,并确保软件能够经过时间的 考验。企业希望软件是一个长期的投资,能够在几年甚至几十年之后依然物尽其用。很少有希望软件只存活几个星期的。如果真的有,那可真是一个糟糕的投资。 遗传编程 你可能会觉得自动化的软件开发是一个奇思妙想,甚至觉得这是不可能的。但是遗传编程告诉我们nothing is impossible。软件会产生变异,改变它们的指令,努力顺利发展以变得更适合。在每个突变后,它们将自行评估它们是否正趋向于期望的输出。这里对于 合适的评估是由测试提供的。而且是大量的测试。这些测试都封装了经过时间、空间和功能性制约的业务逻辑。突变越合适,通过的测试越多。这是值得重申的是, 我们不应该关心生成实现的细节。事实上,生成多个符合要求的解决方案是完全合理的。要减少解决方案只需要增加更多限制问题就可以了。 软件开发人员的传统角色将会被淘汰。他们很快会被重新定位到设计、开发和维护测试。即,计算机的程序设计将变得不必要,因为它们自己就能编程。这种 范式将对软件行业产生翻天覆地的影响。改变业务需求,直接改变测试,而这会触发软件自动化的进化。修改现有代码,以满足新兴需求的压力将一去不复返。计算 机会做好这件事:因为它不会有重新开始的顾虑。它也不关心可维护性,并且最后一定更兼容不断变化的业务需求。 说了这么多,我决定把将来的重心放到测试上,以应对将来软件行业的变化。那么,你呢? 对软件开发的熟练要求放宽了 在美国,对软件开发人员的需求一直在增长,但对技能熟练程度的要求却在降低。计算机编程退步到了寻找正确的软件库然后将它们串接起来得程度。那么你 如何解释软件或平台作为服务的迅速崛起?是的,有时你是需要弄清楚哪些组件装配在一起才最适合你的特定问题,而且,当找不到这样的组件时,你必须自己动手 创建。但是,现在的问题是,很多时候,该软件已经存在。在这种情况下,你的工作就是无聊重复的顺序:选择库,联合库,按照需求测试。 但是先等等!你可能会认为,编程还囊括了很多合同规定的内容。当然,我们可以构建一个已经构建过的结构,但它们还需要个性化,才能适应特定的业务需 求。这无疑需要一定程度技术和智慧的,对吧?而对于这种说法,我承认。是的,业务需求常常是非常多样和特殊的,然而现在却在开始渐渐地变得大同小异。 因此,选择组件来满足业务需求成为了自动化的主要目标。既然有这么多潜在的组合,那么那些永远不需要睡觉、吃饭和休息的员工才是最完美的员工。人工辅助软件开发的时代正在到来。也就是说,计算机将执行大部分的开发步骤,而人类只需要协助它们即可。 在这个新的时代,人工智能研究人员和测试人员将占据统治地位。人工智能研究人员负责想出大致的思路。他们将确定需要解决哪些问题,即通过给定的输入 描述期望的输出。然后,测试人员编写断言这个问题确实被解决的测试。也就是说,验证正确的输出是由给定的输入确定的。此时的计算机负责将给定的输入转换为 所需的输出。  相关链接 > 产品 资源 下载中心 文档中心 [...]

发布者 |七月 26th, 2016|技术资讯|0条评论

程序员,你能从bug中学习什么?

益处 Nassim Nicholas Taleb 在《Antifragile》中写到:“错误包含丰富的信息”。我完全同意这个观点。Bug 帮助我们更好地理解系统,告诉我们怎样提高编码、测试和调试技巧。所以我认为尽可能从 bug 中学习经验,是再正常不过的事了。 我发现为每个有趣的bug记录下来,让我轻易学习到很多。在记录的行为中我会对发生的事情思考得更深刻。同样,一旦记录下来,我可以在之后检查发生的事情。偶尔,我也会浏览文件,只阅读教训部分,对我认为是从 bug 中学到的最有价值的经验加强记忆。 我记录 bug 文件至今已经有 13 年了。这是一段漫长的时间,但是我坚持下来了,因为作为一名程序员,它帮助我进步。尝试一下吧,看看它是否也对你有益! 我有一个命名为 bugs.txt 的纯文本文件。在文件的顶部是一个具备所有标题的模板,但是没有包含信息。当我添加一个新的记录,我复制模板部分,粘贴在模板下面。然后完成记录并且填满信息。大多数展示在上面例子中的 fields 应该是不需要声明的。 有必要指出这并不是 bug 追踪器。我并没有添加所有我修复的 bug 。例如,如果我只是忘记在代码中添加声明,一旦发生这种情况,我就意识到问题出在哪里了,我并不会添加这条记录。仅仅当 bug 本身,或是修复,或是调试过程特别有趣,我才会添加一条新的记录。通常,是我导致了这个 bug。但是偶尔,特别是花几天时间才追踪到的困难 bug,尽管不是我造成的我也会添加一条记录。 一旦修复了一个 bug,我的第一反应是松了口气然后继续前进。我试着一更正后就写下这个记录。这时我的脑海中依然清晰保留所有的细节。拖延会让精确回忆发生的事情变得很困难(或者我压根忘记写下这条记录)。 至今,我已经有 194 条记录,平均每个月有一条新的记录。最重要的是教训部分。这里需要自我反省。是什么导致这个 [...]

发布者 |七月 26th, 2016|技术资讯|0条评论

来,做一个问卷调查(有抽奖!)

前言 “小王,明天公司在***举办一个xxx产品发布会,你今天准备2000份问卷调查。还有,我们这次还做一个抽奖活动,也记得弄一个抽奖箱和一些抽奖球哦。” …… 活动结束了,小王想起早上捧着这2000张问卷和抽奖箱的情景,生平第一次对弘二头肌起了念想。回过神来看着桌子上回收回来的问卷,整整齐齐的像座小山一样好看,但领导依然不太满意,因为只回收了1000来张。可是1000多张的样本已经足够了呀,统计也很花时间的呀。小王本想反驳,但他什么也没说,只是下意识地摸了摸自己的背包,包里装着那丢失的900多张问卷。 以上剧情根据真实故事改编,如有雷同,算你倒霉。 数字化大背景 现在还有不少活动是用纸质问卷来做调查的,几千张纸是小钱,但后期统计这一堆数据可是费神费力的苦力活。以前设备落后,手机上做问卷体验太差。但现在是80岁大爷都会玩智能手机的年代,一个二维码也解决了入口问题,在线调查问卷的体验也就上来了。再加上现在办个活动什么的都是用微信宣传微信组织,配合一点抽奖活动,观众们还是愿意去回答的。既然已经具备了在线问卷的大环境,下面就让小茄带大家来做一个在线问卷调查吧。 需求 先来分析一下需求。 1、在线问卷调查的使用者都是市场运营的工作人员,他们对编程的了解很少,所以后台操作必须简单明了。 2、输入为问题信息,输出为回答统计信息,输出需要使用可视化图表呈现,必要时也提供元数据。 3、最好能带一点圈粉属性,扫一扫关注公众号然后才开始答题。硬生生让人关注公众号,许多人可能无动于衷,但增加了一个问卷和抽奖的梗,关注公众号就显得非常合理自然。 4、最好能带一点统计功能,统计一下到底多少人打开了页面,从而为后续改进提供数据分析支撑。 其中1、2是刚需,3、4是软需。 后端 简单分析可以发现,开发这个小应用最主要的工作是在后端开发部分,而且这个主要是以数据处理为主,显然采用面向数据库编程的方式来开发更为合适。 面向数据库开发第一步,先来定义数据库吧。先使用excel做出相应的表格,大概是这样的: 然后就是分表写数据库,将question、options、answer分成3个表,以questionID做索引关联3个表,另外用户信息和奖品信息也要用一个数据表来保存。本来这里想用MySQL for Excel来实现,这样市场的妹子们也能简单上手。不过想想还是导出一个sql脚本更好,毕竟这样就可以手把手教妹子怎么把问卷数据写到sql文件里面了。(/▽╲) 问卷数据的读写都可以用WeX5通用的查询接口来实现数据的读写,这里不再赘述。 这里要自己写的是抽奖算法的实现,要点是保证中奖几率的均一性。但是,算法也不能太死板,主要看脸,哦不,主要看奖品大小。 如果有大奖,那么大奖单独出来所有人抽一次会比较好,这样能有效活跃起现场气氛。这种情况下可以设置一个抽奖期间,后台统计这个期间内的人数,然后在这个人数里面随机选中一个即可。如果都是些小奖品,那么肯定就是先答题后抽奖,抽奖结果要马上呈现。也就是每个观众抽奖的时刻是不同的,而且抽奖的人数也是未知的,这种情况下要保证前后抽奖的人都有相同的中奖几率,而且要把奖品发完的话,好像很难的样子。但是,既然是小奖品,按照先来先得发不完也没事的原则,每次都查询当前奖品池的奖品,如果还有奖品则用随机数判断是否中奖,否则就不中奖就完事了,简单粗暴。 所以说,一切以实际出发,把重心放到重要的事上,把吃奶的力用到吃奶上,才是王道。 贴个抽奖算法的简单实现: 1 public static JSONObject drawPrize(JSONObject params, ActionContext context) throws SQLException, [...]

发布者 |七月 25th, 2016|未分类|0条评论

写了35年代码的老程序员一个最大遗憾

大约不到20年前,我处在人生十字路口上。我的第二家公司当时已经花了5年时间为出版行业打造专业图表制作软件,不过在那互联网即将大热的年代,出版商们已经逐渐向互联网领域转移,我们的业务渐渐枯竭。那时候我已经是一个有 13 年编程工作经验,而且同时有 9 年公司运营经验的综合性人才了。 今天,我还是一个程序员。所以说现在谁是小角色呢?我怀疑我是不是有一天真的能退休。幸好我还是比较擅长做程序员的(我现在的工作是我以前的一个经理给我的,他有一个需求而且知道我能做这件事情),但是到目前为止,我所能做的也就只能是一个程序员。 我做程序员有大约35年了,其实完成工作的感觉还是很有意思的,而且这么多年我也确实做了不少出色的东西。但是我也感觉到我对当年没有去接受成为一个管理者的挑战产生了悔意。在某种程度上,程序员确实是一个单纯的选择。考虑到我经历了整个互联网(Dotcom)时代,也经经历了乔布斯回归苹果的事件,如果我还能有成为技术领袖的经验,那么我几乎可以无所不能。 所以说,是的,我对我没有把握住(成为管理者)的机会感到后悔,谁知道如果我当时把握住了现在会变成什么样。不过有失也有得,我因此得以享受书写代码的乐趣,以及那些为了解决为题而纠结烧脑的乐趣。 我不想再同时又干技术又干管理了。我的第一家公司(1985-1987年)的主要业务是打造一款电子表格程序,并有自动发布的功能。当时我一人主导了整个公司的多项事务,与媒体打交道的是我,面见投资人的是我,处理日常商务杂事的还是我,与此同时我还是公司的3个程序员之一并且兼任 UI 设计师。1987 年,当我们公司的产品成功发布后,我也终于积劳成疾住进了医院。这件事情让我明白,既要做软件公司管理人又要做程序员,这不是一个正常人能承受的。 点击查看原始大小图片 所以在1994年,当我再一次面临“管理者还是程序员”的选择的时候,我选择了程序员。因为我觉得程序员的工作比较单纯。现如今20年过去了,尽管在此期间我参与开发了很多不错的项目,不过我也终于认清了当年我的选择是多么的错误。尽管在当年,“CTO/CIO/副总裁级工程师”这样的技术管理路线还是很新的概念,但是在今天看来,这条道路才是正确之选。 1995年,我在湾区工作了大约一年。其中下半年我为苹果公司工作(伯乐在线补充:那会乔布斯还在 NeXT)。苹果那时候看上去就快要撑不住了,所以我就离开了苹果回到了德克萨斯。因为我不想眼看着我工作的公司垮掉。现在想来这真是个天大的错误。 后来,乔布斯回归,苹果重回正轨,不仅如此,.COM时代也浩荡沓来。作为一个经验丰富,训练有素的技术领袖,我对产品需求的理解是无与伦比的(我们当时发布了 9 款主要产品,都是直接针对主盘,并且不需要热补,总之在当时这是很难做到的),我只能说我可以想象我在那个时代原本是多么的炙手可热。一旦有人具备了这样的素质,在职业道路上不断攀升根本不是问题。 我妹妹在30年前也是以一个程序员,不过她很快在一年之内跳到了管理层并且在大约15年之后成为了一家大公司的副总裁。还有一家我工作过几年的旅游公司的母公司,他们的CEO大约在15年前也做过程序员。当然这些管理层的工作也并不能算得上轻松愉快,但是其工作报酬却(比程序员来说)要好太多了。我妹妹的薪酬大约是我的10倍。 这么多年来,我认识到作为一个程序员在能力上的局限性有多大。不管他们在专业方面多么出色,但是对于创新改变,或者把坏事变好这些方面的能力却很有限。我当年就是没有意识到做一个程序员所面对的这种局限性(甚至说架构师也是如此);在程序员这个层面上,你没有权利去改变现有的事物,因为你只是一个执行者。同样,你也不会参与到财务、IPO活动,以及其他一些重要事务,作为一个程序员,你就乐于去打造酷酷的东西就好了。 有大约5年的时间,我作为员工或者顾问为某些公司工作,这是我职业生涯最糟糕的阶段,我所做的事情都得参照一些糟糕的,愚蠢的,彻底白痴的技术管理的指示。在这篇文章里根本就列举不完这些愚蠢的事情。 比如作为一家银行的技术部门副总裁,他可以根本不懂技术,但还是有资格做技术方面的决定。同样在银行做CIO的人宁可相信供应商也不会相信他手下员工。当然,我们知道CIO拿了供应商的回扣,所以我们才必须买那些没用的东西,然后他还会不停地写文章证明那些没用的东西对我们是如何的好。尽管我们根本就用不上。有一次我离开公司以后CIO也被炒了鱿鱼,然后他离开了公司并立即在另外一家公司找到了一个类似的CIO的职位。 我做过的最糟糕的一个工作,其实一开始我是很看好的。一家后创业公司在其所在的领域有一个很好的契机。这家公司和其主要竞争对手(但是契机点不同)都想扩大市场,而且市场也确实在逐渐繁荣。我是作为公司的第二个程序员加盟的。先于我加入的程序员以及经理当时的任务是打造一个全新网上商店系统,因为旧系统太慢也太不灵活,完全无法适应更大的市场需求。这个公司当时没有技术领头人,CEO和其他两个创始人也没有任何的技术经验和知识。另一个程序员不停地说后端的代码如何如何好,然后经理也很信任他。我构建了一个前端模块,做了几个demo,并每天往代码库里更新。正当我觉得我写的前端代码已经可以和后端代码整合的时候,我突然发现,另一个程序员的代码库10个月以来就没有一次check in——一次都没有。我把这件事情告诉了经理,可经理却说:”他(另一个程序员)只有在一切都完美了以后才会check in代码。“并且除了我以外,没人觉得这种做法很愚蠢。此后,我花了两个月的时间,试图动员公司的创始人招募一些真正能做事情的人(其实我还是认识几个这样的人的),但是他们虽然承认之前在招人方面有失误,但是却害怕做出人事变动。最后我放弃了,离开了公司。 一年多以后,原先的两个人(另一个程序员和经理)什么都没做出来,双双被解雇。然后公司创始人又从咨询公司找了些人来,但还是什么都没有做出来。这个时候,所有的商机都被耽误了。竞争对手那边呢?他们已经成为了十亿美元级别的大公司,我经常会在电视商业广告上看到这家公司的名字。我每次看到这些广告的时候就想拿我的鞋子砸电视。我们其实就差一个在线商店和一个现实中的技术领袖。如果我当时的身份不是一个程序员而是一个技术负责人的话,那么现在大红大紫的没准就是我们了。很遗憾我只是个程序员。 类似的例子我可以一直列举下去,但是关键问题是:如果想要对技术人员的工作有话语权,你就必须同时有能力,有权利,还要有机会才行。一旦你做到了这些,并且你还找到了合理的成长模式,那么只有天空才是你的极限了。 1987年,我在电视节目《Computer Chronicles》中为我们的产品Trapeze做推广的时候,另一个参与节目的家伙叫 Mike Slade,他是Excel的产品经理。当时还很幼稚的我想,这家伙不过是不知道哪里跑来的一个搞市场的小角色而已(幼稚的时候人还真是很蠢呢)。后来呢,这家伙创立了一系列的公司,包括ESPN,他在苹果公司担任了各种领导角色,是乔布斯的至交好友,并且成立了自己的风投公司。  相关链接 > [...]

发布者 |七月 21st, 2016|技术资讯|0条评论

转行做程序员之前你应该考虑的三件事是什么

2013-2014年间,全世界吹起一阵写代码的风潮,各大媒体疯狂报导,鼓吹年轻人不管所学为何,一定要学写程序。时不时就会看到「程序员是最有钱途的工作之一!」或者「连奥巴马都开始写代码,你能不开始吗?」这类的文章,不管金钱诱惑、名人带头,仿佛全世界都在疯狂的做程序。就算到了2015年底,不时仍有这类文章出现。相对之下,许多人认为自己目前工作很糟糕,包括老板高压统治、工作内容乏味、薪水仅能糊口等等,看到文章里头那些「高薪」、「出国工作」、「热门职缺」的字眼,是不是都想转行呢?今天就整理一些建议给大家。 第一件事,你对写代码真的那么热爱吗? 对于热情这件事,不得不再次提到二八法则,因为有80%的热门技术是由20%的人所构架出来。不管你未来所钻研的是哪种技术,总会在领域中有一些神人,他们可以1个人就超越10个的产值,对该技术有非常完整且深奥的了解,并且针对难懂的问题有非常优雅的解法。这些人决定了未来技术的走向,例如目前市面上的大型商业软件,许多都是由少数人将构架完成,后续才是由许多工程师进行维护、更新。 你想成为那些「大神」吗?虽然许多程序员做了一辈子也没办法,但仍然要保有那「想要成为大神」的热情,才能得到担任程序员的快乐。在生活中程序员不只会遇到系统错误,更常会遇到使用者给予的意见,包括常在Google Play或App Store上看到的评论:「这软件超烂」、「一分都嫌太高」等等,没有重点却严重打击士气,也是生活中的一部分。反之,尤其在大型项目上线,陆续收到使用者说回馈说:「使用上变得更方便了,谢谢你们!」这类温馨的评论让人非常有成就感。抑或是在钻研特别技术,而成功让项目有大幅成长的时候,例如用Go语言将部分Ruby on Rails的API服务重写,让整体速度提升20倍以上,这些数据都会让程序员非常有成就感,也是工作上很大的满足。 反之,当我们只想着要每天安安稳稳的写代码、维护项目,以上那些情况就绝对不会发生,我们整天只会自怨自艾,对现况感到不满却不改善,把所有的错都推给使用者、推给主管、推给别人。那不如不要转行了,不妨待在自己目前的位子上,好好过生活即可。一定要充满热情,想要成为「二八法则」中的领导者,跳进程序员这个圈子才有意义。 第二件事,不要被媒体的宣传蒙蔽了双眼 程序员薪水超高? 行行出状元,所有领域都有办法赚取高薪,但对程序员来说,情况比较符合「80/20法则」,就像许多人说的: 工程师饿不死,但也存不了什么钱。 不管是能力普通、只会听命行事的程序员,或是遇人不淑、老板吝啬的程序员,大概都无法取得高薪。若是半路出家的程序员,刚开始必然无法期待有超高的薪水,也很难找到商机立即创业,尤其转职的筹码较少,不像其他工种的学生许多有底子、有作品,找工作较为容易。 要谈高薪,还是得拿实力来谈,若是无法针对中型的软件项目设计出良好的构架、或是对自己擅长的技术还不完全了解,那对于薪水还是不要有太高的期待,而这些都是需要经验累积的。刚起步的程序员,对媒体报道分分钟年薪百万这类天花乱坠的形容词别想太多。 根据程序员客栈www.proginn.com这么多程序员的经历,刚起步的程序员只要有耐心,绝对能找到一份工作薪资可供生活,外加存点小钱。身为程序员,希望大家对普遍薪资较低的情况能有所抵制,对于过低的薪资要勇敢拒绝,接受的话只会放任无良企业继续用相同薪资雇用其他程序员,加上自己生活质量和士气也会跟薪资一样低落。 转行成为程序员后是否美好? 真正转行成为程序员了以后,问题才是接踵而来,很多事情等着探索。例如学历就是一大难关,程序员这个行业是看重学历的,当然这边讲的不是说一定要名校毕业,而是「本科系」这件事情是相对重要。我相信很多人都吃过这个亏,转行前一度以为可以靠一股热情打天下,殊不知在面试许多公司时,老板听到并非本科系都会眉头一皱。有一位好心的老板在通知面试未录取的时候,也同时说: “工资是和学历挂钩的,这是全世界通用的法则,未来你想成为资深开发者,这更是每位老板都会看的。如果没办法再修一个学位,至少要能提出证明你对这些机器、算法等硬底子的学问都有点基本认识。” 虽然感到震撼,但这确实点醒了我,程序员并不是单单会一项技能而已,而是要对整个领域略知一二。 另一个难关就是要保持热忱,程序开发技术推陈出新的速度超越其他领域许多,在工作压力下,许多人会选择不去学习,导致进步的速度跟不上整个世界翻新的速度。可能有在接触的人有听过近几年Web前端技术的战国时代,从Java延伸出来的框架多如繁星,从目前最热门的React Native,到前一两年窜起的Angular.js、Ember.js,外加之前打得火热的Node.js和io.js战争,每一年都有爆炸性的改变。 假如我今天是专精Web前端的工程师,在这些技术出现时,势必要了解他们要解决的问题、优点、缺点等等,并决定有没有需要使用这些技术来改变现有的构架。例如公司现有构架是直接用纯Java实作变数即时更新,如果改用Angular.js,可以大幅减少代码的数量,直接交给该函式库来处理。今天假如我们没有特别探究这些技术,未来在寻找其他工作时,技术主管也会期望你稍微了解这些技术。简单来说,你不前进,别人也会推着你前进。 这只是其中一个例子,程序开发领域在小地方都有无限多的变化,必须不断学习、接受改变。转职前,很多事情我们想的很美好,但在转职后,才知道这个领域有他自己的法则,在这边无法一一列举,但不管怎样,如果有决心、有热情,这些难关对你来说只会是长远路上的一块小石头。 第三件事,程序员都在做什么? 首先,程序员的领域有许多种,我以前被电影骗了,以为程序员就是电影里头的黑客,只要几秒就可以把非常大的系统架构给完成,凡提到入侵、破解、渗透等字眼,黑客都可以轻松处理。但说实在,「黑客」只不过是程序领域其中的一个范畴,举凡手机软件、网站、数据库维护、服务器、大数据等等,每一个领域都是一门专业,不光只是我们平常看到「Google工程师」、「Apple工程师」那样简单的分类法。 所以,当各大媒体都在鼓吹转职成程序员的时候,大部分谈的都是软件工程师(software engineer),最主要还是因为软件是我们日常生活最常接触到的,包括桌机软件、手机软件、网站,都是这几年如火如荼在发展的项目。 以下说到的程序员,指的都是软件工程师。所以工程师到底都在做什么?就工作来说,不超脱以下五件事情: 1,跟其他工程师讨论 2,编写代码 3,解决bug 4,和用户沟通 5,和产品撕逼以及被老板骂 对于水平比较初级的程序员,改BUG这个步骤会占掉绝大部分的时间,而且过程是非常无聊且漫长的。找一位工程师问他处理过最愚蠢的错误,一定回答是「为了找一个错字耗了一整天」,听起来有没有很浪费时间?没错,就是这么浪费时间!甚至,各种错误都是「屋漏偏逢连夜雨」,每当你最需要专心做其他事的时候,错误就出现了,然后手边原本规划要做的事情就这样搁置了,进度来不及,最后就被老板骂。这绝对是刚学程序开发的常态。当然,在这些错误当中,我们去学着如何写出更好的程序,避开那些给自己埋下的地雷,减少错误发生的机率。随着时间推进,我们就很少再犯这样愚蠢的错误。 [...]

发布者 |七月 21st, 2016|技术资讯|0条评论

超齐全的资源收集

在菜鸟网上看到的资源集合,挺有用的,在这里分享一下。 技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,51cto,csdn:常见的技术社区,各有专长 stackoverflow:IT技术问答网站 GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核, OpenStack等免费的it电子书:http://it-ebooks.info/ 不错的书籍 人月神话 代码大全2 计算机程序设计艺术 程序员的自我修养 程序员修炼之道 高效能程序员的修炼(成为一名杰出的程序员其实跟写代码没有太大关系) 深入理解计算机系统 软件随想录 算法导论(麻省理工学院出版社) 离线数学及其应用 设计模式 编程之美 黑客与画家 编程珠玑 C++ Prime Effective C++ TCP/IP详解 Unix 编程艺术 [...]

发布者 |七月 19th, 2016|教程指南|0条评论

WeX5的小应用:二维码名片

前言 二维码现在是无处不在,无孔不入了。大到一辆汽车,小到一包纸巾,身上都印有二维码,明码标价。败家娘们可能会说:没想过要买的,真心的!就是看着漂亮嘛,想拍个照片,谁知道一拍就弹出个支付界面,想按退出但是手抖了。。。(这手抖的,不知道放在菜刀下会不会稳定一点?)而名片,也早就使用了二维码技术,扫一扫一键存到手机通讯录里面,是手机通讯录哦。今天小茄就试着用WeX5做一个电子的二维码名片,除了扫码外,还可以在微信里面一键识别并存到手机通讯录里面哦。 先上效果图   生成的二维码扫码即可创建通讯录,保存下来通过微信发给朋友,通过长按二维码识别也可以完成名片的分享。拿起手机测试一下吧: 这个应用的核心就是两个:将个人信息转换成二维码;二维码携带的名片信息可被手机识别。为了实现这个需求,我们需要用到一个名片格式:vcard,关于vcard的介绍可以参考这篇文章:http://lzw.me/a/php-qrcode-vcard.html。 vcard格式生成 我们的需求比较简单,需要将名片信息拼接成如下vcard格式: BEGIN:VCARD VERSION:3.0 FN:任侠 TEL;CELL;VOICE:15201280000 TEL;WORK;VOICE:010-62100000 TEL;WORK;FAX:010-62100001 EMAIL;PREF;INTERNET:lzw#lzw.me URL:http://lzw.me orG:志文工作室 ROLE:产品部 TITLE:CTO ADR;WORK;POSTAL:北京市朝阳区北四环中路35号;100101 REV:2012-12-27T08:30:02Z END:VCARD   这就是一般的字符串拼接了,这里有个问题,就是中文的展示问题,如果直接将中文拿去转化成二维码的话就会出现乱码,所以我们需要将其转换成utf-8的通用编码格式: 1 function toUtf8(str) { 2 var i, len, c, out = [...]

发布者 |七月 1st, 2016|教程指南|0条评论

【WeX5的正确打开方式】(7)数据组件详解

【WeX5的正确打开方式】系列目录: (1)入门篇之进击的Hello World (2)入门篇之进击的Hello World(续) (3)WeX5绑定机制 (4)WeX5绑定机制(续) (5)WeX5绑定机制(续2) (6)数据组件初探 (7)数据组件详解 本文是【WeX5的正确打开方式】系列的第7篇文章,详细介绍WeX5中数据组件的增删改查以及数据定位方法。 前言     上一篇 数据组件初探 我们简单介绍了数据组件的引入和底层结构以及特性,并实现了简单的数据展示和数据改动。上一篇中简单提到了,数据组件就是后台数据库表在前端的一个映射,前后端开发人员只要预定好数据组件的内容,就可以简单实现前后端开发的分离。既然数据组件是一个数据库表的映射,那它的基本结构就是一张 2 维表格,举个栗子,定义一个 html5开发工具 的数据组件,xid 为 devtool : +-------+--------------------+----------------------------+---------+ | index | name | url | country | +-------+--------------------+----------------------------+---------+ [...]

发布者 |六月 22nd, 2016|教程指南|0条评论