Thestral


  • 首页

新界重构

发表于 2017-11-29

###重构目的
目前的新界是15末完成的产品,当时的技术选型是angular 1.x 。现在angular已经发展到angular4,且语言已经从js换成了ts。目前新界依赖的库已经不再更新。而且两年来新界中不断添加新的模块,有一部分模块已经可以舍弃掉,而有些临时模块可以加入到新界中作为固定模块存在。
两年前做新界的时候我的水平跟现在也不一样,当时写完新界的代码也没怎么写文档。不如索性用vue重构一遍,删除冗余代码,整体统筹规划,加快运行效率,完善新界文档。

###新界功能拆分

###新界页面拆分

###新界路由

###数据模拟

###通用模块及数据和组件的区分

###样式调整及修复

###模版整理

###接口调整

###填坑相关

冬·2017

发表于 2017-11-21

这个冬天也不知道好过不好过了…

20万用户数据处理

发表于 2016-11-08

最近接到需求,要对20万个手机号进行归属地分析,由于原始数据都是txt文件,还是一行一个手机号,所以考虑使用python处理,再加上百度的免费api没有js方法,所以最终使用python的http request来跑。百度的api是个坑,这个稍后再说。

一开始把问题想得太简单了,因为考虑到20万并不是一个很大的数目,想着写一个脚本,开10个console就好,毕竟之前拉某个app的10万用户数据也没用多长时间。结果跑了一晚上才跑出来几千条。第二天到了办公室被领导痛批,你丫就不能先把手机号前七位拉出来分个组?

好的,写另外一个python脚本,把20万手机号按前七位分组,写到一个数组里,然后写另一个脚本,依次读取数组中每一个元素,补全11位之后向百度请求。将返回的结果存储到另一个数组中。这时候问题来了,python的list不支持object元素…

考虑再三并查文档后发现,以我浅薄的python知识储备并不能完美处理这个list。所以写js,遍历上一个步骤生成的json,取其中的prefix字段作为key-value的key,将原json数组中的元素作为value,生成新的json数据,保存成文件后是标准的python dict。

写新的python脚本,将原始数据与dict对比,如果line的前七位匹配到dict中的某个元素的key,则将此元素取出,将其中的phone替换为line,并append到新的数组中,最后生成最终result json文件交后台同学导入数据库。

至此,这个流程是没有什么问题的,但是运行过程中发现丢失大量数据,虽然在getlocation.py中加了错误判断和空值判断,但是由于前期并没有留出来时间测试百度api的稳定性,造成了数据丢失。丢失一个数据就会出现分辨不出大批手机号归属地的情况。

无奈之下,写另一个python脚本,将原始数据与result对比,如果原始数据中的某一line匹配不到最终结果,则写入missed文件中,重新进行分组处理。再加上后台同学把数据导入redis的过程中不知道为啥也可能丢失数据,所以查漏补缺的步骤进行了无数遍….

在数据剩余量很少的时候,发现请求百度api丢数据太严重,就又重新找了别家的api,但是api返回的数据字段、格式跟之前的不一样。于是又写了新的js把新api生成的result处理成之前的格式方便后台同学使用。在使用新api的时候,发现百度的api完全就是个渣渣啊!说好的一秒钟不能超过200次,我凑你丫5-10秒才给返回一个数据好么!

最后算是完全导入了。回顾整个过程,发现还是少了预先完整测试的步骤,也没有整个的统筹考虑思维。另外也是对python并不熟悉,其实应该可以直接写一个class从头到位完整处理数据,这个是下一步要学习的内容。

最终数据导入redis后,后台同学写api供我获取按地市分布的用户数量,展示到页面上。此处使用了百度echarts的map,但是发现并不能直观看出来地市用户的排行。果然炫技是没什么鸟用的,最后还是老老实实写了另外一个table放上去。另加了tablesorter插件方便排序。

至此基本需求完成。

复盘是一个很有意思的事情,只是最近天太特么冷了,在书房写这个复盘过程的功夫爪子都已经成了冰。

嗯,一切弄完之后我去杭州浪了一圈,杭州真是一个美好的城市啊…

想说却还没说的

发表于 2016-10-08

还很多

攒着也并不能成一首歌

只是行程匆匆,很多话来不及想,来不及说,就又到了分别的时刻

装修

发表于 2016-08-29

2016年对我来说最重要的事情就是最终买了套房子

终于算是结束了四处漂泊居无定所的。。。算来也是有八年的日子了

竟然有八年时间都是做为一个匆匆过客回家

现在好了,有了一个终于属于自己的窝。嗯。。属于白爷的窝

从三月开始踅摸房子,大概是在高新区发生的各种故事太多,索性直接就跑到中介去问有没有房子

有的

那 ,我买了

买房终究是一个漫长的过程 尤其是这需要贷款的情况下 评估、走程序、办证、等贷款

等一切事情走下来,房子最终到手里也六月了。大概是当时想着也并不是急着住,就答应了房主等一切落定之后再去装修

五月底房子到了手里,妈妈开始张罗着装修的事情,林林总总亲戚啊熟人啊来了两三波 作为一个从小就没有什么特别主见的孩子 我毅然决然听了妈妈的话

从那之后就是一个更漫长的选材料、定工期、以及各种检查扯皮的事情了。好在我这个也算是全包出去,需要操心的事情并不是很多。再加上我一直觉得专业的事情就交给专业的人去做,自己就掏钱就好。磕磕碰碰的砸墙刷墙铺地板等等事情到现在也算是搞定了

上上周去了武汉宜家,拉着妈妈逛了整整一天宜家,记下来了需要的家具的货号。预算远远超了啊麻麻!我本来就想1万块钱随便买买就好!没想着买齐的!

反正现在是大概整个家的框架可以拉起来了,yeah 开心~

大概列一下现在买了啥东西

客厅的沙发(床)、电视柜、吧台、吧凳、茶几(好贵)、脚凳(储物) ,缺电视、空调

餐厅的伸缩餐桌、两把餐椅

门厅的小鞋柜、一条长凳

书房的书桌、转角书柜 ,缺空调(?这里要不要啊)

主卧一床、一衣柜、一边桌(现在就有的) ,缺空调

次卧一床(妈蛋垫子比主卧的好),缺空调

厨房的橱柜搞定了,有一个墙上挂的收纳架子 ,缺冰箱、热水器(这两个东西最近要买下来的)

卫生间放了一个马桶置物架,马桶、淋浴、洗手池这三个都是装修的时候带上的,自己买了一个看起来蛮高科技的浴霸,现在卫生间应该是什么都不缺的

阳台现在有一个洗衣机、一个深水池子,晾衣架这种东西还没想好要怎么装,想想也有点纠结的样子

其实不管怎样算来算去,家里也总不会有那么多东西的呀。感觉这些主要框架弄起来之后添置零碎物件是更麻烦的事情。现在我还没有仔细整理过自己到底有多少东西,又需要买什么东西。

厨房里的锅我有了,四个吧,就算三个,炒锅准备换掉。刀的话现在有三把,两把新的。勺子就用新的那一套好了。筷子可以新买。碗也还有一套,只是盘子都需要买了。炒菜勺、汤勺、漏勺、小工具、砧板 都需要重新去买的。还有围裙啊抹布啊洗洁精百洁布什么的想想都头大。这个时候就特别想要一个女朋友因为自己想这些零碎事情真的很无聊。。。

卫生间里的东西哈,牙刷牙膏洗面奶都有现成的,大概是时候换条毛巾什么的了。然后洗澡的刷子也要换..嗯浴帘!!

主卧里有了床垫感觉并不是很需要褥子,考虑要不要重新做一床?反正被子好像也是需要再买了吧。。。二白跟咕噜两个小混蛋~!衣柜里的衣撑啊。。。。总之这次要扔掉很多衣服的!

啊啊啊啊啊说起来书房突然想到那个书柜都不一定够自己用的啊啊啊妈的突然想到我有很多零零碎碎的东西。所以势必!势必要买很多很多收纳盒子放在书柜里的。卧槽我现在要去看一下我书柜的照片。。。OK还是可以放几个盒子的。不行我再买一个抽屉柜子好了。

妈蛋果然是没有钱解决不了的事情哈。。。。。。。。。又要拉一个长长长长的购物单子了。。

还有灯!等灯等灯!还没有买灯!!因为没有女主人一起商量着做决定!!!

不小心又开始咆哮了~但是感觉咆哮起来总比故作阴郁地写东西要好得多吧。嗯。。跟听的歌也有关系的。。。

啊!吧台!吧台!可以约妹子来家里喝酒了。。。

咖啡机大概可以放在吧台上吧。。。。好像有一点点大。。诶对说起来这个好像又需要买很多垃圾桶了。。哦草还有拖把。。哦草扫把我不需要。。。哦草还是有啥!

嗯住进去之前要开荒。。开荒这个事情就交给专业保洁好了省的自己吭哧吭哧累。。开荒这个事情并没有成就感啊。。。还是布置家具这样的事会带来成就感吧。

so。换了一首歌,我也不想咆哮了。虽然家具都是宜家代购来的,嗯,昨天去下的单子,应该两周就买回来了。买房半年之后,终于可以住进去了。

喂了半天蚊子了。。撤了吧。

一切都在变得更好。加油~~~

javascript数组操作

发表于 2016-08-18

从 api 获取到了固定格式的数据,但是需要分别用 hour 或者 day 来展示。
考虑到重复从 api 获取相同的数据是一件及其蛋疼而且会加重后端小伙伴工作量的事情,在这个案例中我决定将每次获取的初始数据存到 localStorage 中,
然后在转换展示格式的时候,通过 js 来处理数据。

是的这是我从上周五开始就有的想法,只不过今天才开始具体到数据处理这一步。
上午的一切还好,下午开始在 hour 与 day 之间转换的时候,简直就是整个人都处在一个懵逼的状态。
当然了现在觉得并没有那么复杂。只是一些之前没有接触过的数组的操作而以。大概就是以下几种。

1.单个数组中所有项求和

2.n个同样长度的数组叠加

3.单个数组去重

4.Object 遍历 ,取其中元素组成数组

5.Object 取 Key 组成数组

6.Object 替换 key-value 键值对

首先说第一个,这个是大家都很熟悉的,直接写循环就可以求和了

function sumArray(arr) { var sum = 0; for (var i=0;i<arr.length;i++) { sum += arr[i] }; return sum; }

对于小数据量的数组来说,这个还是简单方便的,此处建议把这个方法扩展到 Array 的 Prototype 中,方便使用。在今天的案例中我是定义了一个这样的方法。

第二个,就是我比较纠结的地方,毕竟n是一个未知数,而且这个n的长度我也是很难取到的。

这个是我纠结最长时间的,最后使用决定先定义一个所有元素都是0的数组。因为所有需要叠加的数组的长度是一定的。

然后用map()去遍历需要叠加的每一个数组,与之前定义的数组相加,如下

function reformDataByhour(obj) { var tempArr = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (var i in obj) { tempArr = tempArr.map(function(v,j) { return v + obj[i][j] }) } return tempArr; }

传入的 obj 参数是 key-value 对应的 Object ,每一个 value 都是需要叠加的数组。

单个数组去重这个。其实是不知道怎么去处理我的原始数据,最后只能用push()把所有项都放进一个空数组然后再去重

这个思路也比较简单,无非就是再定义一个空数组和一个空对象,对原始数组进行遍历,然后尝试在对象中取 key 为数组中元素的项,

如果没有取到,则将此元素放在空数组中,并定义一个 key 为此元素的项放在空对象中。

最后 return 定义的数组,如下

function arrayUnique(arr) { var res = []; var json = {}; for(var i = 0; i < arr.length; i++){ if(!json[arr[i]]){ res.push(arr[i]); json[arr[i]] = 1; } } return res; }

剩下三项是基本的数据操作,在此不做赘述

这一个项目相当考验对数据的逻辑思维能力。做完之后整个人都是懵逼的。在测试中偶然有两个数据是相等的,我们还以为是在数据转换中出了错。

排查的时候简直就是超大写的懵逼啊啊啊

over

智能设备们

发表于 2016-08-13

丢

发表于 2016-08-13

丢了个表

然后又买了一个,这也算是全线进入智能时代了吧

表的质感没有想象中那么好 但是考虑到它的技术含量 感觉还是非常值得的

嗯对 Fitbit Blaze 军工版。

我也不知道军工版跟普通版有啥区别,反正就是贵一些了,好了刚刚客服说这是限量版。我尼玛全球发售的东西你跟我说是限量版。。

不知道数据准确性咋样,但是就刚刚我动了没几下它就告诉我说我走了八百多步。我觉得我还是挺难信任它的。

anyway, 这也就是我丢掉的心爱的DW的替代品吧

下周去武汉,看家具。懒人如我,也不知道现在房子装修得怎么样了。今天无论如何要去看一看了,毕竟跟我一起考了科目一的小伙伴们马上就要拿到驾照了呢我勒个擦的。

Hello World

发表于 2016-08-12

Hello Thestral

私人静态博客测试

Thestral.H

Thestral.H

10 日志
© 2013 - 2022 Thestral.H
由 Hexo 强力驱动
豫ICP备14023734号