每周一记(十一月)

先说重点

差不多一个小时以前, IG 3-0零封 FNC拿到了 LPL赛区的第一个世界冠军。我目睹了这一切,也曾今是一个英雄联盟玩家。还记得第一次弟弟带着我玩这款游戏,我抽到了一个8折优惠,花了36买了我的第一个英雄–金克斯,后来,买了第一款新年限定皮肤–羊年限定金克斯;也买过源计划--艾希。记得大学的第一个暑假高中同学小聚,网吧开黑玩一整夜也不会觉得累。记得最孤独无助的2015年,一个人在宿舍打出排位36连胜。记得几个月以前,快要离开大学之前,和同学们开黑的那段时光。老实说,当我忘记了出门要买装备,总是忘记交闪现,也经常线上漏刀的时候,英雄联盟早已不属于我了。可我总是会在忙得不可开交的一天后,打开直播看上两局;也全程关注了S8世界总决赛;也会打开网易云音乐,单曲循环RISE。到现在,我明白了,我还是喜欢英雄联盟这款游戏,即便我不怎么会亲自去玩了。

我一直喜欢玩游戏,从最开始的穿越火线,再到陪伴了整个高三的NBA 2KOL,到英雄联盟,在到如今的绝地求生。因为只有在玩游戏的时候,才是那个没有任何防备的自我。

工作&学习

为什么要把工作和学习放到一起来说呢?因为这一周真的很闲,临近项目结项,我最主要的工作,除了处理BUG,大把大把的时间就拿来学习了。

当然还是先将工作。我们的项目遇到了一个BUG,我们有一个嵌套层级很深的菜单,需要实现几个需求:

  1. 当用户切换主菜单的时候自动滚动到顶部。
  2. 当弹出板块树或者是进行滚动的时候,始终保持用户选择的菜单项在可视区域内。
  3. 当用户刷新整个页面的时候,能够准确还原到上一次用户选择的菜单项中。

我们最初并没有将Menu写成一个单独的组件,而是把它放在了DataReport中,并且只是用了scrollIntoViewIfNeeded来让选中的菜单项滚动到可视区域,因为在切换菜单是默认会选中顶部第一项的,所以不需要加任何代码就可以实现滚动到顶部这个功能。

理论上是这样的,并且我们也是这样做的。可我们发现了,如果我们切换菜单的时候,如果默认选中的不是报表,那么就没办法滚动到顶部。而且一旦刷新页面,用户当前的状态也就丢失了。

我第一想法是把Menu作为一个组件独立出来,这个我们可以更好的在组件内部实现逻辑。当切换菜单的时候,我使用了scrollTop=0这种方式来滚动到顶部。并且为了能够在刷新后记住用户状态,我需要反向遍历菜单树,并与当前路由进行对比,确认用户当前打开的菜单项位于的层级,从而控制其祖先菜单的打开和关闭。至此,问题解决了。

可是,在和boss沟通的时候,他第一时间判断我这样做是不正确的,并且现场撸了一个版本出来,且不讨论是否能用,但是太多的if else条件判断,反而让DataReport变得无比臃肿,再加上到下班时间并且我们在他身后看他写代码很久了,我一时口嗨就说了句写得乱七八糟的,这惹怒了我的boss,我也当场为我的不理智做出了道歉。
通过这件事可以看出来我的情商还要加强。

虽然最后还是采用了我的方案。

再讲讲学习。

在掘金上看了很多文章,都是零散的,比如说事件循环Shadow-Dom&Custom-Element,还是CSS mask&clip或是markdown2html,通过这些零散的知识点学习,我觉得我对前端的理解又有了更多的理解。在大方向上的学习上,主要是TypeScriptEcharts自定义系列,以及读源码。

特别是读源码,真的让我收获颇多。最近在看Wind Design的很多组件的源码,大体上是老版本的Ant Design的源码。很早就接触并使用到了Antd组件库,比如经常使用的Form组件却不知道是如何实现的。

我之前也按照自己的想法,封装了一个组件。可当读完源码后发现,真的是自己水平太低,很多问题都没有考虑到。并且作为源码,自己的代码也不够规范。

当然,从下周开始,我不会像现在一样闲了,但源码我还是会一直读下去。如果有时间的话,我会考虑记录记录写成博客什么的?

尾巴

上周末我把和上司闹不愉快的事情告诉了家人,而一到周一下班,妈妈就打来电话,问我的情况,生怕我和上司的关系存在问题什么的。说实话,我很感动,我给她说啊,都是技术上的事,不会带入平时工作的,并且我在意识到自己的错误的时候,也立马进行了道歉,况且我的上司也是一个很nice的人,这样他们终于不用担心了。其实就是这样,最关心我们的,非家人莫属。所以啊,都那么大的人了,做事情一定要考虑更多,让他们和关心你的人,少为你操心。

IG都夺冠了,那我也要戒掉自己的某个陋/懒习了,所以在最后立一个只有一个人知道的FLAG

分享到 评论

每周一记(节后综合征)

我似乎是患上节后综合征了,具体表现为:晚上睡不着,早上起不来。

周一

上周整个周末都因为电竞事业繁忙甚至抽不出来一个小时写周记,毕竟有那么多比赛/直播要看,看完还要打,真的嫌时间不够😂。所以上周的周记只好在周一补上了。

项目进行到最后一周,开发和测试工作已经结束了,所以这周的任务就是摸鱼,比如说今天,上班八小时,摸鱼七小时,好不容易熬到了下班😂。

回来的时候,开始下起雨来,昏暗的路灯下,行人匆匆。我想起了大学最后的一年,那个冬天,同样的傍晚,刚从健身房出来,身体还温热,猛地吸入一口冷空气,冻得直哆嗦。而一年不到,当初健身的小伙伴许久不联系,自己也开始发福?(离开公司前刚上称 139斤)。

工作

上周的工作有点划水前奏的意思,开发快要完成,改完了测试提的bug,剩下的就是琐碎的事了。可是就是这么点事,却出了最多的问题,需要花最多的时间去尝试解决。

  1. 在开发一个图形分析的功能,一个类似图浏览器的功能,包括缩略图和图主体两部分,由于boss强调封装,所以并没有开发一个新的组件,而是融合到reportChart中,这使得原本就有好几百行的echarts配置文件又多出了一大截,代码可读性当然不用说了,一个字形容就是:(虽然不是我开发的)。好了,开发完毕,给到开发们,一开始还好,随着需求越来越多,代码出问题了,并且影响到了先前开发的代码,并且难以追踪。排查了好久,最后是因为一个配置项默认值的问题。当然,bug还很多,比如说yAxis无法正常显示刻度/负数和特殊数据无法绘制等。除了bug以外,性能也是很低下的,基本上达到了不可用级别。因为在初始化时,需要请求数据用于绘制缩略图,这会导致太多的网络请求和组件的更新,最后折中了一下,使用icon代替了缩略图。结果这周刚来,接到通知,图形分析被砍了,也就是说,上周有一半的活就白干了😂。

  2. 项目本身遗留一个很大的问题,就是当存在主子表的时候,如果有筛选条件,那么当更改筛选条件并且主表没有数据的时候,子表会拿到上一个参数并且成功请求到数据,这显然是不对的。这个bug很早就被发现了,但又因为各种各样的原因,还没得到解决,并且在测试把bug算到我头上和boss出差的情况下,我只好硬着头皮上了。首先分析点击提取数据按钮后发生了什么事,结果当然是dispatch了一个action;但这个action并没有去请求数据,而是更新了一个标记,这个标记通过props的方式传入到顶层组件中,该组件在componentWillRecieveProps中对对该标记进行了捕获,并且还做了其它的操作;最后是ReportTable组件更新,重新请求数据,并且把请求到的数据渲染出来。这里使用了高阶组件,用户请求数据的参数和事件捕获函数都在父组件中,并且通过props来传递。分析到这里,已经很明了了,我们需要在父组件更新的时候清空selectedRow(也就是被选中行),那么一旦主表无数据,selectedRow将无数据,字表不会发起请求,也就不会错误渲染了,至此,问题得到解决。

  3. 在我开发的一个名叫QAPanel问答面板的组件中,有一个问题,就是一旦滚动到某个地方后再请求数据,页面并不会滚动到顶端,而仍然停留再上一次滚动的地方。这个问题很好解决,一旦组件渲染,我们需要拿到组件的ref(引用),并且再请求新数据之前,把页面滚动到顶端。这原本不是问题,一顿操作过后,竟然报错,createRef undefined?,一脸懵逼。谁叫我们还用的是React 15呢,又是一顿操作,改成原来的模样,差点记不住😂,因为我刚接触React的时候,就已经是React 15,那年我才20岁😂。

  4. 当然,我们的webpack肯定是3.X的,由于使用了create-react-app脚手架,具体构建细节都被隐藏了,所以eject一下就好了嘛。对的,配置是暴露了,也修改了,可就是无法正常构建了,我承认这是我的问题,但是久经排查,并没有发现bug,所以还是老老实实的用覆盖的形式吧,不需要过多的修改,构建的时候需要分包,把第三方库都打包到一起,运行时代码再分开打包。结果差不多压缩后加起来有3MB,并且构建的时间差不多90秒,慢得让人流泪。果断happyPack走一波,总算happy了。

还有很多很有意思的事情这里就不细说了。总的来说就是,填别人的坑,让别人无坑可填。

生活

  1. 如果说电竞是生活的话,那么吃肯定也少不了。上周末两天,累计叫外卖3次,共计消费90+,贵也就算了,关键是特别难吃。这让我想到了我的家乡,随便一个路边面馆,一碗十块豌豆炸酱面,简直不要太好吃。所以啊,想要逃离,这可能是我需要好好思考的了。

  2. 打篮球也要玩心跳?对的,我指的是这款名叫NBA 2K OL2的篮球游戏,因为它的球员交易市场就像炒股一样,你家有矿你随意。从公测开始,陆陆续续完了一个多月,人民币也花了一百多,总算把自己的阵容弄到500w了,谁知道12号一波更新,出了一个合同费礼包,导致合同费贬值严重,我的阵容在一天时间里涨了了300w,也就我在仅仅的一天里,赚到了60%,除去25%的交易费用,也要净赚35%,这可比A股刺激啊。
    阵容截图

  3. 当然还是打球。NBA有一种很吃香的球员那就是3D球员,例如佛主就是典型的3D球员。随着身体变得更强壮,再加上良好的防守习惯和态度,让我在野球场上成了一个优秀的防守者,可是越来越不自信的投篮,别说三分,就是中距离也都靠蒙,以前还能算个2D球员,这下好了,只剩一个D了。所以啊,整个NBA,萝卜丝(罗伯森)最像我了😂。可是,萝卜有瑞秋,而我的瑞秋呢?😂😂

尾巴

生活还要继续,我爱编程,编程使我快乐。好了,电竞事业繁忙,告辞。

分享到 评论

每周一记(长假前夕)

您的一周六天班体验卡已到期,请尽快续费,否则将会被放假一周。

工作

当开发阶段的工作暂告一段落,那么接下来的工作总会是比较轻松的,我也不例外。这个上六天班的一周,可以被划分为三个阶段,轻松->懵逼->抓狂。

轻松

每天除了等测试反馈bug然后再修改以外,在code review 中提到的代码风格的问题也需要修改,虽然有定制的团队代码规范约束,但是例如变量/属性命名,存在性检测,数据格式验证等都需要修改,按照每个人维持的代码量不一样,我这一改就是三天,并且还发现了一些低级错误,比如中文漏打/错打,生成表格列宽严重不足等。

懵逼

接到新的需求,需要对某些业务做定制化的开发。刚刚拿到任务的时候简直是懵逼,第一眼看上去就不简单。深入Delphi代码了解,发现除了很难画出来的图,连表格都很难去完成。表格表头是动态生成的,需要通过接口去拿到数据生成百表头,再通过其它接口拿到数据,再渲染。限于在既有框架下开发存在许多限制,要实现这样的需求是比较困难的。原本可能只会花2小时的任务,半天才搞完。这里还得吐槽一句,接口返回的数据又是columnX的方式,对应几十个字段的数据没有对照表真的很难完成。

抓狂

上班的最后一天,内心也变得浮躁起来,经过前一天的研究,今天的任务就是开发出图形,原本的框架当然不能使用了,已经想好了两种解决方案,使用echarts自定义系列或者使用canvas来自行绘制。

首先尝试echarts,摸索了好久配合上demo终于完成了单元格的绘制,然后是多xAxis绘制,怎么尝试都无法达到想要的效果。因为在绘制等高等宽单元格的时候,xAxis的单位标度成了单元格宽度,其是value类型,而原本xAxis期望是使用时间作为xAxis,其类型是category,因此基于时间标度的折线图无法绘制成功。这几乎是一个无法跨越的问题,正当我准备舍弃这种方案的时候。突然想到,既然这条xAxis是无意义的,那么我们再配置一条xAxis,并且不渲染这条无意义的xAxis不就可以了。

经过尝试,的确可以!接下来就是接入数据,绘制图的数据需要做整理,首先需要做二维数组的转置,去除无用数据。然后是进行标记,因为业务要求需要标记每天每个行业的涨跌幅和涨跌幅排名,来进行图的颜色渲染和富文本渲染。做到这里,差不多demo就完成了,效果与设想的差距不大,剩下的就是细节的完善了。真是令人抓狂的一天!

其它

  1. 转正答辩。虽然过来人都说走走过场,但真当落到自己头上的时候,还真是这样。可又不是这样,气氛非常融洽的一次答辩,到场的大佬都很nice,答辩完还在会议室里闲聊。后来发现架构部的老大去年就是面我的那位,瞬间无比亲切。又聊到目前的一些新技术在公司的运用,工程技术中心一直走在前。经过这次答辩,我突然又有点看到了未来。这是以前从来没有过的。

  2. 遇到一个问题。我在开发一个公共组件的时候,需要加一个loading的效果,使用了Spin这个组件作为容器,但是开发完成后发现并不能滚动。因为Spin容器的高度取决于其内容的高度,而内部内容容器的高度又是继承至外部容器,所以这里相互冲突了。要解决这个问题也很简单,我们仍然需要Spin组件成为一个容器,当时其不应该在组件最外层,而是只包括内容,这样一来,内容容器继承的高度就是外部容器的高度而不是Spin的高度,当内容高度超过内容容器高度的时候,就可以进行滚动。

  3. 学习TypeScript。一直在花时间学习TS,因为工作需要需要去理解源码和做定制化,除此之外,我想扩充自己的技能树。

小尾巴

我从高中开始关注智能手机,对参数配置了如指掌,也因此选择了成为一名程序员;后来上了学,我关注电脑,无论是是笔记本还是PC,对电脑的配置也颇有见解。这些年来,找我推荐手机电脑的朋友真的不要太多。

大四的时候,因为一档二手车节目关注汽车,目前对车型/配置/售价也是颇为了解,也会花时间去专研发动机/变速箱原理等。我在想,如果除了做程序员,我可能也会去修车?

上班了,也开始关注楼市。虽然比起智能手机电脑,对于楼市的理解真是知之甚少,目前还在加深理解。

人在不同阶段所关注的点也不一样,关注手机电脑我往往是有这个需求,而当没有这个需求的时候,这样的关注就会发生转移。从高中到步入社会,我的关注一直在变,所以在如今的这个阶段,需求不是那么不好满足的时候,能做的只有努力。

废话说完后,匿。

分享到 评论

每周一记(中秋)

放假第一天(上周六),打篮球,用力过猛戳到手指,又肿又痛的,键盘都没法敲,两天过去了,现在是这个样子的。受伤了...肿是消了,但是只要按压就痛的不行,所以每周一记推迟了。

如果真要写的话,可能手指受伤的这几天,受最大影响的莫过于我的“电竞事业”了😂。

再补上。

分享到 评论

每周一记(发工资日)

上周说前段时间进行的的前端资格考试挂了,等待补考,其实不然,我莫名其妙的就过了。

工作之外

昨天晚上和大学舍友聊天,聊到近况,发现大家都有落差但也随遇而安,无论是传说中的996还是节假日加班,抑或是我这种相对较为轻松的工作。现在大家都明白了,当初被听信企业画大饼,总觉得自己壮志未酬能够好好干一番,结果总结起来,就是我们太年轻。

我的作息时间一般为晚上12点睡觉,早上7点起,8点到公司,这样的话我就可以早点下班并且保持一个较高的所谓战斗力了。可是这个平衡还是被打破了,每天到了12点睡不着,早上还是7点起,睡眠时间不到7个小时,再配合上高强度的工作,担心身体真的吃不消。而这种担忧在昨天显现了,下午1点例常开发报表,开始头痛,我不得不停下来休息,喝喝水洗把脸什么的;到了三点半开完会,头痛反而加剧了,趴了好一阵,又去江边溜达了一圈,透透气,这才缓解,差不多到五点。前段时间看一个视频,程序员因为劳累倒在工作岗位上,我庆幸自己没事,但是为了健康着想,以后得早点睡了。

工作

最近一段时间得任务都是开发报表,手头上报表大概有40张,按照每天开发3个得进度,得三周,并且每一张报表都不一样,遇到的问题也不一样,所以进度有可能被搁置。

例如本周在开发过程中就遇到很多有意思的问题,具体的业务是我需要使用一个下拉选择框,每次选择后会请求不同的数据,问题就出在我根本不知道每个选择项具体的值是什么,因为我们能够获取信息的方式只有Delphi代码,而恰巧这份代码中所有涉及到的中文的地方都被编码过了,并且这种编码方式是公司独有的,且我暂时不能通过沟通的方式来解码,所以一切都得靠自己咯。编码方式看起来像#23398#39#19876这样,是不是很熟悉?如果稍微变化学'现在知道了吧,所以这就是一种去掉了&;unicode啊。那么这就很好解决了,写脚本转就可以了,至此,问题搞定。

还有很有趣的事情,比如接口返回的数据有一个字段本该是_mainColumn却写成了_mainColmn,或者干脆在一个有四十多个字段的接口中使用了columnX的命名方式,这种毫无意义的字段名称,给到对我来说完全黑盒的接口,简直是灾难😂。

学习

这周仍然只有恨碎片化的时间来学习,并且随着内心变得浮躁,碎片化的时间也被消耗殆尽了。

  1. SPA性能优化。tree shaking打包时将无用的代码删除掉;代码分割,分离三方库等;动态导入(按需加载,预加载等);利用缓存,打包成runtimeChunk等。
  2. TypeScript 学习。在TS官网上看了好几章文档,主要包括数据类型,类型断言,接口等。
  3. 块级格式化上下文(BFC),老生常谈的问题了,看文章温习温习。

其它

  1. 安利一款游戏:《NBA2K OL2》,可以看作《2K17》的阉割版,目前能玩的模式只有王朝和街头,对于我这种不花钱也不是很想变得很强的玩家,偶尔玩玩还是不错的。
  2. 一款叫做PDFelement6 Pro的软件,也许是我用过能够看PDF和编辑PDF最好的一款了,这不是免费的,当然在天朝想免费还是能够办到。
  3. 都2018了JetBrains全家桶仍然可以通过修改系统时间的方式无限期使用,所以我想学Fluter,求打醒,小程序还没眉目呢!

尾巴

上午说发工资了,怎么也得请吃顿好的吧。好,肯德基怎么样?好啊,请。帮我叫外卖吧,外面太热了,不想出去。怎么可能,已经点好了,出去取吧。晕。穿好鞋,飞奔。走到一半,电话响起。您好,你的外卖到了,门口拿一下。飞奔回去,衣服湿透了。

吃着三十多一顿的午餐,真香。

分享到 评论

每周一记(9月来了)

我真是一个坐不住的人。

工作

我以前总以为在别人搭好的架子下写代码是体力活,而现在这个观念的的确确需要改变了。

我的这周的前三天我都在开发新的报表,周四被安排了一天“轮休”仔仔细细检查了已经开发的报表,周五由于没有安排活所以还是开发报表。我一直以为开发报表是一件实打实的体力活,我们不需要知道报表/图表组件具体实现的方式,我们甚至不需要关心页面布局,因为用于布局容器组件都写好了,我只需要读懂把Delphi代码,然后把对应的数据传入到props中就可以了。这当然有难点,理解Delphi需要花上一些时间,细节也要想方设法去实现。可是当大多数报表实现十分类似,熟练过后基本没什么难度,那么这项任务也就对我来说就成了不折不扣的体力活了。

真的是这样吗?

刚开始开发的时候,其实犯了很多错,这些错误都来自对项目的不理解和粗心大意。甚至我在很长一段时间内并没有发掘,直到阴差阳错这些隐含着错误的报表被纳入到发布版本,测试检测出错误的那一刻。

这中间还有一个小插曲,前面说到阴差阳错的报表就上线了,其实是因为配置文件被更改了。因为这个事情在晨会上我还和leader争了几句,当然到最后谁都没有再追究。把这件事讲给小伙伴,所有人都说我情商低,可我总是这样,我会忍气吞声,当然如果三番两次,总会忍不了,我是来写代码,可不是来背锅的。

回到正题,修复了很早以前开发留下的bug外,在“轮休”那天,我好好检查了那些后来开发的报表,虽然没有了功能上的bug,但还是由于粗心大意,比如字段描述中的文字写错,数字格式化不正确等。好在这些报表都没上线,不然这个就真得我背锅了。

周五开发了一个十分复杂的报表,它让我意识到,这不仅仅是一份体力活。我差不多花了5个小时来完成这张表,除了非常难懂Delphi代码外,限制条件也十分多,因为需要实现具体的功能,发现已经封装好的组件并不能满足需求的时候,又需要去沟通增加需求,并且在开发的过程中,因为实在架子下工作,反而为了实现某些功能,需要额外的想办法。

好吧,说了这么多,我承认我现在做的工作不仅仅是体力活,当然就算是体力活,我也要把任务做到极致。

学习

这周大块大块空余的时间并不多,在闲散的时间里,我主要通过在掘金github看文章来学习。

文件获取和上传

  1. 使用input[type='file']模拟点击上传
  2. 使用拖动/放置事件来上传drag/drop
  3. 剪切板的粘贴事件

高阶函数(HOC)

函数作为参数传入/作为返回值返回。

  1. AOP面向切面编程。把与业务无关的模块抽离出来,然后动态织入到业务中去。
  2. 柯里化(部分求值)。函数并不会立即求值,而是返回一个另一个函数,已经传入的参数活因为形成的闭包而得以保留。
  3. 函数节流与分时函数。
  4. 惰性加载函数。

其它

  1. 有关于getBoundingClientRect的学习。
  2. 哈希碰撞与生日攻击。

框架/库/工具

  1. store.js 多浏览器实现的本地存储库。
  2. pica 一个很好用的图片压缩工具
  3. tween
  4. Vue.js 基础知识重温

尾巴

周五的前端资格考试已挂,期待下周补考。

最近绝地暖暖开挂的人太多了,把把都有大哥,快要弃游了。

最后:无糖全麦麦片真好吃🤮

分享到 评论

每周一记(8月的尾巴)

从万般抵触到欣然接受,没想到会这么快。

工作

我被转岗了,并且是在没有通知的情况下。

  • 上周五,老大让我去看某度统计的源代码,花了好长的时间,想了好多办法才拿到这份经过babel转译过的源码,可读性又差,我硬着头皮看了个大概。这大概若不是工作需要我可能永远不会去读的代码。
  • 周一,前去汇报,听说要做一个类似的项目,私底下用什么技术,如何去实现我都想好了,只等开工。
  • 周二,打开邮箱,转岗的邮件发过来了,在毫不知情的情况下,我因为业务需要被调岗了,甚至这次调岗老大都不知道。刚看到这份邮件的时候,我最开始的心情竟然是有点开心,因为在我们部门简直不要太闲,并且首页代码真的让人提不起兴趣。再者,我要去的部门是公司的核心部门,用公司前段时间说的,我这是从第一曲线往第二曲线上跨越。
  • 周三,在搬过去之前,我把首页的代码又仔细检查了一遍,确保所有生涩难懂的代码段都有注释,又解决了几个潜在的bug,最后提交一把,并交给小伙伴。晚上,下班,我一个人默默的搬了好几趟,心里说不出的难受。和小伙伴一起回家,路上我在吐槽,好不容易熟悉了一个环境,又要去一个陌生的环境,对于不善人情世故的我,真的是煎熬哎。
  • 周四,新部门的第一次晨会,我完全打消了心中的顾虑,我想我能够很好的融入这个集体。等拿到项目代码,又回到了React了,复杂的实现逻辑,理解起来真的让人头疼,但也让我欣喜,我喜欢挑战,虽然看起来这更多会是体力活。
  • 周五,在新的环境里,一切又回归平静。带上耳机,新的一天又开始了,这让我想起上学的时候,带上耳机听着音乐,脑子无比清醒,总能够很快的完成任务。

学习

  1. React

既然又入坑了,对于好几个月都没怎么用的技术了,当然需要花一些时间来温习下了。

  1. 微信小程序

源于在掘金上看到的一个沸点,我决定把开发小程序加入自己的技能树了,这可能需要花上很长的一段时间才能达到写demo的阶段,平时忙得不可开交,周末玩玩游戏健健身,学习的时间又少了,哎…电子书已下载好,写完周记就启动!

  1. SSR

上周花了很多时间去学习React服务端渲染,Demo也是写了毫无异常,昨天下班后尝试把以前做过的idea转到服务端渲染上,却怎么都不成功,也不报错,所以这才是周末的优先级,当然除了游戏时间外。

吐槽

虽然吐槽公司不怎么好,但是继收回所有开发的管理员权限后,公司又在网络上为大家着想了,原本每天只有200MB的流量可挥霍,下个稍大的软件都要开工单,现在工作机器要断网了,想上网查资料,滚去虚拟机去查!所以啊,机器本身配置一般般,以后虚拟机又要常驻内存了,开发体验在差的基础上,变成了如果不是为了生活

尾巴

虽然刚上大学不久就接触到了Web开发,接触Web前端开发也有好几年,毕业来公司作为前端也两个月了,React项目国际化,首页数万行祖传代码重构(重写)到几千行,但是我在下周还要参加公司的前端资格考试,只有考核成功,你才能正式成为前端搬砖师。

我想的是,需不需要准备啊什么的,要是到时候考试没通过,要被转去后端写C#,我肯定是不愿意,那就只有另谋高就了。

刚来公司上培训课的那段时间,公司前端新人十几个,竟然只有两个人是有经验的,其中有一个只是停留在使用过jQuery的阶段,那么问题来了。我排第几?

我觉得,虽然那些没有接触过前端开发的小伙伴能够在最近好好学习,但是作为一个几年了还在浑水摸鱼的前端,我我觉硬要排名的话,前五还是稳的。

考试前的准备,学生时代尚且没做好,不在乎早已根深蒂固。

结果如何,下周便知。

这次把尾巴也写成了吐槽😂

分享到 评论

每周一记(8月末)

找不到能形容这一周生活的词,除了愚蠢

照例谈工作

我觉得我现阶段的工作和大学里上自习没什么区别,没有人约束,仅凭自己的意愿,随心所欲。除了偶尔还需要补救盲目的重构带来的bug,偶尔需要切下图制作个广告页,剩下的时间就自己安排。

  1. 看书

自从知道在githubclone电子书可能会被关小黑屋后,在公司电脑上的电子书就只有当初年少无知下载下来的《你不知道的JavaScript》系列了,这也是我最喜欢的JavaScript开源电子书了。还是在学生时代,就完完整整的将整个系列看过一遍,如今一两个月的时间,差不多又看完一遍了,真的是有一种温故知新的感觉。在阅读整个电子书的过程中,有唯二不那么愉快的地方,第一,作者使用Markdown格式编写的,并且每一章单独成一个文件,有时候一章内容太多,断断续续需要一天才能读完,尤其是午后,读太久了犯困。第二,公司屏幕尺寸和素质不能让人满意,尤其是没有管理员权限去安装Markdown阅读器,只好在VS Code中打开并且使用分屏的预览,结果可读区域面积太小,读久了眼睛又受不了。

  1. React SSR

关于SSR(服务端渲染),我一直想纳入技能包,好在这周有充分的时间去学习。在掘金上看了两篇相关的入门文章,然后把大名鼎鼎的Next.js文档看过一遍。现在回顾一下,差不多只能记住rendertoStringgetInitialProps? 大概还在也许会写Demo的阶段吧。所以说呢,学习尚未成功,还要继续努力。

  1. 源码

看源码对于现阶段的我来说是奢侈的,如果加上通过各种途径去获得不容易获得的源码,再加上可读性为0,那就让人头疼了。

潜在的业务需要,我需要读一段某某公司开发的页面统计的代码,首先这些代码不是开源的,也不仅仅就通过引入这段JS路径就可以得到源码,并且其是不可读的,有多少不可读呢,举个例子吧,代码2000行左右,使用IIFE分成好几段,对于变量的命名,是没有规律可循的,都使用了A-Z a-z随机组合的方式,并且嵌套极深。例如af.c.cb.hcp

如何获取到源码这里不过多叙述,反正花的时间多余读源码的时间。

源码如果不可读,那就只读能够理解的地方,所以这么多代码,大概花了2个小时梳理了一下,大概知道了了其工作方式,需要记录的各种数据,至于实现,那是不可能梳理得清楚的。

看完一遍,发现该份源码写得十分规范,给大厂点个赞!

吐槽

周四,例行的下班后健身。结果坐电梯的时候发现五楼摁不了了,坐到三楼服务员告诉我,健身房倒闭了。WTF,两天前来还好好的,现在就倒闭啦?器材都被搬空,怕不是跑路了吧。我才买的的补剂呢!我才办的卡呢!

周五晚打完篮球,骑车回来,又路过那条街,发现有人在发办健身卡的传单,虽然不是开在一个地方。一想,真快哎,又为下一次跑路做准备了?

经过这次被跑路的经历,我是不可能再办健身卡了,民工挣点钱不容易,怕不是要被城市的套路消耗殆尽?但是呢,健身还得继续。

写在最后

换了电脑,把博客迁到PC上,试了各种网络上的办法,遇到各种各样的问题。结果我用最简单粗暴的方法,直接把目录拷贝过来,再安装依赖,就OK了。

刚买了新电脑,有点兴奋,每天下班后总会在快睡觉之前玩两把,玩完又睡不着觉,结果到了公司,第二天是真的困。要不得,要不得。

前端三连是:太复杂 看不懂 不会做。下次面试还有自以为是的面试官,直接就怼过去了。

分享到 评论

每周一记(18年8月中)

8月16号刚凌晨,伴随着手机提示音,工资卡中终于有了第一个月的工资。然后,那个晚上,竟然失眠了,整晚上我都在想,除去房租和必要的生活资金,我该如何花掉剩下的钱呢。周四,忙碌的一天,晚上下着大雨,从健身房中回来,有了最初的想法,既然健身是为数不多的爱好,那么补剂还是要买的,无聊的时候想玩玩游戏去网吧简直不要太贵,主机嘛,当然是要攒的。再加上每月固定的花呗,好了,花光了,期待下月…

谈工作

本周的工作总体来说是很轻松的,但是出现了很多问题,我应该反思。

掘金上看到一个沸点,说的是新人总喜欢抱着满腔热血去重构祖传代码,然后碰壁。这点恰是说中了我。来到公司的这一个月,我也是在按照我的想法,重构一块很重要的代码。一段名副其实的祖传代码。无论从项目目录结构,还是代码本身,我只想说一句,烂透了或者是我从没见过这么烂的代码。但是,抛开性能和开发体验上的问题,这段代码却很好用。借用罗老师的一句话“又不是不能用”来形容是最好不过的了。

当然吐槽归吐槽,重构还是要继续。准确来说,是重写。在检测过ES6支持程度后,我使用ES6重写了业务逻辑,并且抛弃了依然好用的表格布局,引入和AMD规范,并且在易用性和可扩展性上下了很大的功夫。

请注意,这一切都是我想到的,没有经过评审,我花了两周的时间,就重构完了。

然后,上线了,BUG铺天盖地。真的,除了失落和灰心,我想不到其它的词来形容我的心情。

极为不规范的成千上万行祖传代码怎么可能在很短时间内弄懂;不熟悉业务逻辑,很多隐藏的业务功能都没有实现;引入模块化是好,业务逻辑解耦也好,但是过多的模板,导致现有的项目太过臃肿,要是只有一个版本还好,多版本多语言简直就是灾难。

除了修BUG,我也在思考,然后并且了模块化,一下子少了四十多个入口文件,通过工具把配置文件整合在一个文件中,并且在实际部署的时候压缩配置文件,配置文件从24个到如今的一个,体积从300KB到现在的70KB。当然,改变还有很多,使用localStorage缓存文件,合并压缩样式文件,减少页面请求等。重构未完成,还得努力。

还能说什么呢,学到了,真是学到了。

吐槽

本周的某一天,我回到家,打开iTerm准备大干一场,突然,一道灵光闪过,我CTMD,iTerm换图标了,上面那个白条是什么鬼,真是逼死强逼症的节奏哎。直到现在,好几天过去了,还是不习惯!

某天晚上十一点,看了将军的直播,我一口气花完了攒了好久的3700尘,合了一套法术猎,结果被治疗术吊打,被各种德吊打,被电影萨打到哭,甚至打不赢沙包战你信?在这里,说一句:炉石传说真**好玩!

今天快到中午的时候,和小伙伴健完身去那边买网线,问了好多家杂货店和五金店,基本上都没有,然后一老大爷给我找了个三米长的竟然要收我十五块,忍住了没买。后来买了十米十二块,价格稍微能够接收。关键是拿回家一试,房间里根本没接网,去起居室接又不可能。白瞎了我的十二块哎,无线网卡走一波,了事。

其它

如果说还要有其它就要算追了很久的美剧《地球百子第五季》完结啦,想看第六季明年再说咯。第五季追下来整体无感,感觉和前几季比起来剧情是真的无聊。今天看了第十三集,贝拉米他们重新上了飞船,休眠了125年,蒙迪留下的视频,感动!超级期待第六季地球百子与外星人的故事啦。

其它的其它,大概还有学习。每天给自己留下足够的时间,去好好的回顾和学习新的知识,趁自己还学得动。

分享到 评论

开端

时间过得真快,搬砖快一个月了。

第一周

现在对搬砖的要求真高,培训后才能上岗。按照惯例,进了工地就要开始培训了,谁知有工友要下周才到,所以我们这些先一批就得等着了,第一周工头又不安排工作,只有无所事事了。那五天的上班时间啊,幸好带了本《论如何在搬砖过程中学习挖掘技术》,一边学习搬砖技巧,一边偷偷干私活。总的来说,工作环境还是不错的,就是给我们的工具有点不顺手,哎,就这样呢,还要什么自行车呢!

这里要说一下食堂,虽然菜品是少了点,但味道还是不错的,比我在蓝翔好吃多了,就是这个价格…放在我住那边的工棚小店,这个价两荤一素再来瓶冰啤,岂不是美滋滋。哎,说多了都泪啊。

第二、三周

终于开始进行培训了。我们这些粗人,就仗着体力好,干得久,才能勉强得到这份工作。谁知第二周培训的内容竟然与我们的工作不是那么相关,金融知识,股票、债券、基金、期货搞得头都大了,最后做了个测试,发现自己是板砖型。妈哟,这辈子和砖怕是接下来缘分了啊。

培训的时候上面要求我们分成小组拍电影。是的,你没听错,是拍电影!妈哟,我们除了搬砖特长,哪还会啥子文艺哦,长得还丑,演技又捉急,真想找个地缝钻下去。

没办法啊,上面发话了,不但要拍,还要搞评比,那也得硬着头皮拍了啊。平时又没时间,搬砖时间又长,好不容易的周六,洗白了。

再说说我理了个大圆头,好像招谁惹谁了。那个搞培训的人说最不爱打理的就是我。WTF,我剪了个大圆头就认定我不爱打理了吗,那要是我留一头长发,再烫个卷卷头,岂不是你要说我是最帅的那个😂。

就因为我的这个大光头和不经意间透露出来自己会玩吃鸡,我TM也成了个头。那自然是要写剧本,当导演了啊。幸好以本人当前的造型,恐怕只能演打手。所以自然是不能亲自参演,幸好组里有演技派,要是有最正经奖,我们就获奖了。

第三周,没什么好说的,技能培训嘛。对于我们这种搬砖熟练手来说,食之无味,弃之不可惜,奈何上头说了算,还要考核,那是必须要去听了。工头布置了我些简单的任务,练练手还是不错的,所以这一周也就那样,还行。

如今

上岗了上岗了,满心欢喜啊。有个工友调走了,他的任务我就接手了呗。工头说了,先熟悉熟悉,随便干,追随自己的灵感。我呸,O98K,干就干啊。

是时候切换一下风格了。

磨炼新人最好的办法是把前人的代码给他看,让他绝望。我拿到那份有年代感的代码,还好把持住了,不然可能需要尿不湿。

我一眼望穿,这份代码深藏功与名啊。关于表格布局、evalhtml外写JS、注释、命名什么的不想再多说。借用罗老师的一句话:又不是不能用。

改啊,那就好好改咯。

想起了,最开始想到的是:

  1. 重写DOM结构,代替表格布局。
  2. 重写JS,除了那些没有头绪的黑箱。
  3. 基于配置的形式,一定程度解耦合。
  4. 基于86.375%ES6支持率,引入安全的ES6写法。

后来随着重构的深入,又有了新的想法:

  1. 引入AMD规范,前端模块化。
  2. 运行时构建DOM以及性能测试对比。
  3. 单元测试。

做完这些,第一步的改造计划就差不多了,用了一周的时间完成了这些工作。最大的收获大概是,DOM操作更加熟练了,VS Code的快捷键终于可以MacWindows无缝切换了。

接下来的项目是基于React的,还是老项目,做国际化的改造,以前没有做过类似的功能,还蛮期待的。

如果硬要打分的话:

加班程度:⭐️
新鲜度:⭐️⭐️⭐️
难度:⭐️⭐️
收获:⭐️⭐️⭐️⭐️

这里特别指出,最近利用上班的时间,看了很多书,真的收获很大的。每天翻书,手都翻痛了。

尾巴

又到了尾巴时间,一般灌点鸡汤什么的在这里再合适不过了。鉴于我们可是搬砖工程师,那就讲讲和搬砖相关的故事吧。

我的父亲,多年前从事过搬砖行业。现在虽然没搬砖了,可是也是相关行业。其实搬砖这个行业,真的很累,五十岁不到的人,明显看起来比一般人看起来更老。我父亲没什么文化,但多的是力气,所以他就靠这个把我和姐姐都供到大学毕业,然后啊,他还不稍微停下一点,又得考虑下一步了。

我想像父亲一样,能够独挡一面。

所以啊,有些时候负能量爆棚,总有些乱七八糟的想法,想想自己的家人,最后,既来之,则安之,也挺好的。

我们这种除了会点技术,还真是不会什么了。这是事实,但除此之外,做到更多只有靠你自己。

鸡汤灌输完毕,溜了溜了。

分享到 评论