年中

Delphi 10.4 发布了,其实Delphi 还是有很大的使用市场,因为windows也好,mac也好,客户端软件毕竟还是存在巨大市场,所以Delphi 一年一个版本继续推出,我们周围大部分人都是基于web开发,几乎没什么人用Delphi。并且年轻人已经没有人会去学习Delphi,所以估计在国内市场就越来越小了。

去年清明到年底,我还用Delphi 写了一个小程序,算是有趣的体验吧。

现在的Delphi其实很强大,开发Windows和macOS,以及iOS和Android,甚至Linux 应用,它的跨平台开发框架也越来越强。

有时候一些事情还是要坚持的,虽然我不知道Delphi 的开发团队这几年是怎么熬过来的,离开了之前的那些天才之后,到底发生了什么事情。

我知道这些年,从1995年还是1996年知道Delphi并开始使用,也是二十多年一晃而过。有时候感觉什么都没有改变。还是电脑+开发环境,旁边有一个本子,脑子里有一些创意。说不清的寂寞却涌上心头。

2002年夏天时候,突然发现全身上下只有几十元,那一刻有点懵。后来再也没有发生过这样的事情了。而我明白的之后,金钱的确和快乐没啥直接关系。

我周围有这样的人,倔强的拒绝很多新事物新方法。有时候,感觉到自己有点老了,也不太愿意改变一些事情。好奇心没有那么强了,很多事情有点懒得去动。

我终于在今年买了新的hp 笔记本,原来的Thinkpad X1 已经是2014年的事情了,此刻耳朵上的Bose 无线耳机是去年双十一买的,而iPhone 11 是今年618奖励自己的。

Apple Watch 终于坏了,屏幕掉了下来,也是2015年抢到的第一代。临时换了三星的S3 智能手表,还凑合。

外界环境很多的调整和变化,人也好,事也好。我觉得想了那么多年,现在觉得我不太能改变太多了,其实只是隐藏和激发。其实我已经很难改变了。

此时无声胜有声

有些事情改发生的还是会发生,我们只能坦然的去面对。

很多问题我想的不是很明白,也不太愿意多想,也的确没有能力去想。我们归因的时候的确会很少看自己的问题,会怪环境和旁人。

所以有时候我们也是需要用一些客观的标准,可惜我们知道事情不是那么简单的。我们能理解,但是不能赞同。

2020 端午节

没想到新冠疫情会有这么大的影响,本来国内也差不多了,没想到北京新发地这里又出问题了,北京好几个区就成了中高危地区,包括出差旅行就都受限制了。

2020年的端午节就这样来了,所谓小长假,三天。以前的确就会考虑出去旅游之类的事情了,现在全世界哪里都去不了,附近也不是很有兴趣。今年工作压力明显有点大,修为还不够。

前面十来天,上海都是大雨或者阴雨,今天天气倒是很好,下午可以出去走一圈。

最近看了庆余年和朱雀记,真不错,想象力无限。

国产电视剧最近的也都不错,连着看了古董局中局的第一部和第二部,基本还算忠于原著。

三叉戟,也很棒,三个中年警察的故事。

一个个节日串起了时间的记忆。

职场 Level 3

level 0,定义为初入职场,认真工作,努力学习,听领导的话,也很容易和同事处理好关系。

level 1,小职务有一点,管 2个到几十个人吧,继续努力认真,但是只靠这个肯定不行了,人际关系、情商这些都需要了,一些场合怎么说话,团队怎么管理,指标怎么完成,压力陡然不同,一个人努力是不够的。职场关系应该还可以,但是会多出不少事情,各类社交会开始,有的饭能吃,有的饭不能吃。偶尔在大老板面前也会露脸,把握好机会。

level 2,中级职务了,春风得意,却是危险的开始,有很多人可能一辈子就在这个阶段了。难度基本不在工作,当然持续学习和战略眼光是需要的,加上带领团队,以及正确的价值观。情商很重要了,每件事情、每个邮件、每个对话都要动脑筋,看你的目光也不一样的,大多也不是羡慕,能不害你就不错了,也别被所谓真心打动,那就幼稚了。要完成指标难度很大,要让老板满意难度也很大。

level 3,自以为在的阶段,混了所谓中高管,有时候也代表公司见客户做演讲。这个阶段除了前面所有的技能以外,所谓情商高,能够沟通的好,也已经都不够了,需要的是政治了。政治要正确,要学会政治斗争。很难。如果要做好和提升自己,不得不做,不得不思考。

感谢每一个旅人

最近几周工作及其忙碌,几乎周末都要加班,有时候半天,有时候一天,有时候两天。

身体也不是那么强壮,于是,有时候就处于了自然放空的状态。

听着歌,看着剧,记忆就会飘散。回忆里面沉淀的场景仿佛历历在目。

很多回忆都是没有必要的,会让我们脆弱,曾这么认为,或许也想起那天下午在故居烧信。而每一个旅人,或长或短,当时也是浪漫,或者温暖,仿佛都是春天的记忆。

好像不需要去后悔,也追不回,更不要遗憾,会对此刻有影响,哪怕是微。愈发自觉,珍惜此刻,才是真正的不悔,于未来。

少一些任性,不在乎的人不用放在心上。眼观鼻,鼻观心,心在自己的掌握。

不用去可以追求认同,不要表扬自己,一切都是淡淡的,那样些许的微澜,才更显得精彩。

单程的人生,已经幸运遇到这么多同伴,只是有的早些下了车,背影也看不见,那就这样吧。大多数只是匆匆一面,何须记挂。

今天上午开始整理一台 2013 年买的笔记本,7 年了,有点慢了,看看里面的资料,不少。

放得下自己的虚荣心,放得下回忆,放得下胜负心,好像我可以做的更好。毕竟,我还是一个有梦想的男生么!一中心小学那天放学,夕阳照着两位小姐姐的大学校徽,格致中学的爬山虎遮掩不住那些年轻的脸庞,金沙江路听说又有夜市了,我们当年不是一样吃着米粉,做着梦,如果有了一幢楼怎么办,后来好像我经常会规划一下中了彩票的人生,直到忙碌和心累的忘了这些事情,但是长风公园对我来说总归是一个图腾一般的符号,那些以前吃不起现在看不上的饭店,那些烧烤的油烟,还在心里飘着香味。初中时候开始练所谓的气功,任督二脉怎么也打不通,今天好像顿悟一点点,或者突破。

自省了很多年,十年不止,问题都知道,怎么做也知道,却还是有偏差,有时候还很大。有时候陷于回忆不能自拔,有时候展望未来却都落空。以为是翅膀太沉重飞不起来,原来是遗落了在当年。不必要的不自信,怎么作祟时候就忘记了阿德勒。

自然是应该笑着走,我曾是一个多么自律的少年,那些挥汗如雨,怎么就忘记了呢。昨晚和女儿回家路上,放了一些三十年前的歌,既然我可以这么执着的坚持,那么放下一些无妄到虚空岂不是更加容易。情书都忘记了,还有诗歌。

沈记靓汤,曾经很红的上海一家饭店,因为记得家里旁边也有,周六中午才发现,早改了名字,叫做醉辉煌。

感谢自己很强的记忆,念念不忘,必有回响。人好像也轻松很多。

没有啥可以纠结了,120,还是 100,真的不重要。

矛盾于过去的失去和未来的不可得,矛盾于自身的评价和他人的目光。曾经。

过去的美好就是珍藏,谢谢命运和曾经,努力的自己。

我就是不完美的自己,但是我爱自己,别人的评价和目光也是旅程中的一瞬,我也是他们短暂的相逢,我也是一个会消失的背影。

感谢每一个旅人!

夏天下午

上海好像已经入夏了,外面阳光甚好。

最近几个周末都很忙碌,公司事情不少。算起来,我已经宅在家里超过 24 小时了,晚一些再出去,去看看女儿和父母。

昨天写了一个公司的思想小结,反思,这个事情还是挺有趣的。其实我倒是从来不怕反思,至少往里看,虽然还是很多缺点和弱点,有些真的挺难改变的。

从 2003 年 sars 时候研究 blog,当时连家用无线网都没有,我用的是同学给我的 cdpd,极慢的速度,不过还是能勉强用。可惜中间有过好几次数据丢失,域名更换之类。以前对这些内容的保存不是那么在意,另一方面,看着过去的有些文字,也不是太舒服。印象中创意纪的 blog 内容我是做过一个备份的,技术上要导入到这里也不是很难,懒得去弄了。

所以延展开去,我还是一个比较容易接受新事物的人,同时很多地方也很懒,老的笔记本电脑一年多没有去整理里面的数据。看来也要列一个计划了。还有我的影集,想了好几年了。包括喜欢的编程开发,因为平时工作的忙碌,实在很难参与到一些项目中,有点不进则退的感受。

看着自己 2015 年的 macbook pro,记得当时在美国的朋友带回来的,转眼五年了,性能还是很不错,有时候编程培训时候,计算速度还是可以排在前三,不输给这两年的笔记本。三个显示器正好簇拥着,以前梦想中的飞行舱。而人总是这样,一些东西得到了,愉快感就会降低。也带来一些副作用,似乎生无可恋,没啥目标了。

也挺累的,从 2001 年离开上海银行,开始在互联网相关的各个行业打拼,快 20 年了,其实一直挺忙碌的,也很努力,学了很多东西,见证了这个时代的发展。

公司要给自己的苹果电脑也装 dlp 监控了,不太想自己的电脑被装这些,之后就用公司电脑感觉也基本 ok。有些事情没法改变,只能接受,我们能改变的事情太少了,改变自己吧。

今年这个新冠,也让很多事情慢慢的变化了,不知道以后会是什么样子。

午后感怀一下,还有很多事情要去面对,每个人的人生都不容易。好像内心真的比以前强大了。

平常的日子

昨天中午碰到了闵行的小舅和舅妈,他们年纪也大了,记得那时候表弟高考前,我在徐家汇坐沪闵线到他们家,去给表弟打气,二十来年了吧。好像记得 2002 年我在世贸中心上班的时候,表弟刚工作,和他在那里碰过头。

2002 年感觉距离现在很远了,那时候意气风发。有时候想,如果我当年就世故一些,或许会得到更多,只是如果我能够那么世故,可能也就不是我了。因为我的努力,其实还不算查了。懂世故,而不世故。说实话,高官厚禄本来就已经不是我的人生目标了。看着一些人争夺,看着一些人无奈。我也挺无奈的。

昨天中午接送女儿的时候,路上很堵,看着熟悉的、慢慢变化的风景,当然想起很多往事。曾经以为的海誓山盟、一生一世,实际上很难做到。目标不要订的太高才是关键。

我曾经分析了一下自己性格的弱点,绝大多数的原因还是和人比较,这十几年逐渐淡了很多,却是又验证了另外的事情,所谓情商高的人会孤独,当然我距离情商高还差的太远,却已然有这样的感受。

看庆余年,很久不看网络小说,真不错。作者 30 岁左右哪里来的如此丰富的人生阅历。其中提到选太子,兼备无情和有情。

当很多事情看得通透后,很多时候只能牺牲一些东西,包括自己,这种时候内心的孤独感的确非常难承受。

所以,还是看自己要什么了,你要的多,自然付出的多,所谓煎熬也多,要的少,就会好些。

和女儿在路上,聊聊路上的风景、聊聊人生往事、聊聊 switch 和动森。回忆什么时候开始不去学芭蕾舞,什么时候钢琴课也不上了,女儿记性不错,和我的记忆角度不同,和爷爷奶奶的视角当然也不一样,记得 2014 年那时候,我差不多周末 10 点多出门,要到晚上才回家,现在小姑娘的学业忙碌,相聚的时间就少了一些。

温暖的午后阳光,在很多年后再回忆起来,大约还是温暖的。

用python pandas 分析新冠数据教程1

之前说到过,和同事们做了一个免费开源的新冠数据访问接口项目:COVID-19-Data-API。今天开始我们用 Python 、jupyter notebook、pandas等来进行数据分析的一个教程。

疫情过后,有人说剩下来的都是数字化的企业了,数据分析能力也已经是一项必备技能了,有太多的工具可以进行数据分析,前几年可能excel 还是很多人认为最有效的数据分析工具,现在可以选择面太广了,免费工具里面,Python+pandas 肯定还是最佳选择之一。准备一套完整的 Python 的入门教材+Python数据分析教程,并且用现在时髦的视频方式录制。所以先准备好教材。

下面的代码从接口处获得数据,经过简单的整理,输出。
具体来说,是获得意大利在2020年3月24日的疫情感染数据。

1 设置API的地址,调用token
2 设置headers、payload等需要调用的参数
3 通过 requests 的 get 方法来访问数据
4 通过 pandas 来简单处理数据
5 显示数据

# demo for infection/region
# input region, start_date, get data
# 接口:感染/国家地区

import requests
import pandas as pd

# API url
url = 'https://covid-19.adapay.tech/api/v1/'
# token, can call register function get the API token
token = '497115d0c2ff9586bf0fe03088cfdbe2'

# region or country
region='Italy'

# headers, need the API token
headers = {
    'token': token
}

# the params
payload = {
    'region': region,
    'start_date':'2020-03-24'
}

# call requets to load 
r = requests.get(url+'infection/region', params=payload, headers=headers)

data = r.json()

# use pandas to get the data
df = pd.DataFrame.from_dict(data['data']['region'][region])
print(df)
print('---')

通过requests 获得数据,然后pandas 整理。输出结果如下:

               2020-03-24
confirmed           69176
confirmed_add        5249
deaths               6820
deaths_add            743
recovered            8326
recovered_add         894

即便你对Python不太懂,或者一知半解,相信看到上面的代码也能够猜的七七八八,Python的可读性非常好。

要运行上面代码,最简单的方式是通过 jupyter-notebook,然后推荐下载安装 anaconda,最强的 Python 扩展程序,下载安装 anaconda 之后,直接运行 jupyter-notebook,就可以在notebook 里面的 cell 单元格中输入上面的代码。 已经有很多教程关于怎么使用 Python 下的 jupyter-notebook,可以先网上搜索一下,这里就不赘述了。

下面的例子读取一段时间范围内的数据,并对行列进行交换,便于分析和制图。基础代码延续之前的例子,所以要在上面运行的基础上继续。

# demo for infection/region
# input region, start_date, end_date, get data

# the params
payload = {
'region': region,
'start_date': '2020-03-24',
'end_date': '2020-03-31'
}

# call requets to load
r = requests.get(url+'infection/region', params=payload, headers=headers)

data = r.json()

# use pandas to get the data
df = pd.DataFrame.from_dict(data['data']['region'][region])
print(df)
print('---')

我们可以得到下面的结果:

               2020-03-24  2020-03-25  2020-03-26  2020-03-27  2020-03-28  \
confirmed_add        5249        5210        6203        5909        5974   
deaths_add            743         683         712         919         889   
recovered_add         894        1036         999         589        1434   
confirmed           69176       74386       80589       86498       92472   
deaths               6820        7503        8215        9134       10023   
recovered            8326        9362       10361       10950       12384   

               2020-03-29  2020-03-30  2020-03-31  
confirmed_add        5217        4050        4053  
deaths_add            756         812         837  
recovered_add         646        1590        1109  
confirmed           97689      101739      105792  
deaths              10779       11591       12428  
recovered           13030       14620       15729  

我们把日期和确证等交换一下行列,便于制图

# demo for infection/region
# input region, start_date, end_date, get data
# exchange the row and column by Pandas, the row index is date
# 交换数据的行和列

df = df.T
print(df)
print('---')

可以得到下面的结果:

            confirmed_add  deaths_add  recovered_add  confirmed  deaths  \
2020-03-24           5249         743            894      69176    6820   
2020-03-25           5210         683           1036      74386    7503   
2020-03-26           6203         712            999      80589    8215   
2020-03-27           5909         919            589      86498    9134   
2020-03-28           5974         889           1434      92472   10023   
2020-03-29           5217         756            646      97689   10779   
2020-03-30           4050         812           1590     101739   11591   
2020-03-31           4053         837           1109     105792   12428   

            recovered  
2020-03-24       8326  
2020-03-25       9362  
2020-03-26      10361  
2020-03-27      10950  
2020-03-28      12384  
2020-03-29      13030  
2020-03-30      14620  
2020-03-31      15729  

技术的温度-新冠疫情数据开源项目

1-2月份,这次新冠疫情来临的时候,看着每天跳跃的确诊和疑似人数,感到很无助。我们不是医生,捐钱捐物在当时也比较困难。我们这些只会开发项目、写写程序、弄弄云计算的技术直男能做些什么呢?


首先我们想到的是有什么可以帮到公司,当时公司复工在即,诸如保洁安保等很多外部服务公司的员工的健康情况要每天征集,正好团队有一个问卷系统,不管是微信还是钉钉,都能使用,每天所有填表人员的信息就自动汇总好了,疫情情况多变,增加修改问题也很方便。然后行政mm在组织复工后的订餐又碰到问题了,怎么让员工可以在公司指定的快餐供应商这里下单,然后第二天中午送到每层指定的地方,订餐么总还是要有一些仪式感,各类照片等等。正好之前团队在做一个手机在线商城项目,于是拿来修改一下,外卖菜单更新、员工下单和支付、统计数量等都不需要繁琐的人工统计工作。


技术是有温度的。在家办公的时候,虽比不上逆行者救死扶伤,原来自己的技术能力还是可以为防疫做些事情的。于是有一个想法冒了出来,数据处理分析能力也是我们强项啊,当时要查自己的航班火车是否有新冠确诊者比较麻烦,要自己每天输入。于是数据中心的小伙伴一边写了一个检查行程并自动推送信息的小程序,一边将各类行程信息在后台数据整理好。难能可贵的是这些并不是他们的本职工作,几个通宵,前后端联手,再经过几次迭代更新,能够方便到需要的朋友,就很满足。


最近大家知道,中国国内的疫情是控制住了,可是世界范围又开始爆发了,看到很多分析文章,我们数据分析团队的小朋友又坐不住了,因为我们发现并没有很好的疫情数据的接口。我们可以看到很多的数据播报,但是几乎没有什么自动获得的方式可以得到这些数据。大型新闻网站等有自己的接口,不对外开放,有一些公司提供接口,要收取费用。国内的很多爱好者们纷纷用爬虫等技术来获得数据,这样又不够准确。
美国约翰霍布金斯大学汇聚了全球各个疾控组织的数据,有静态的数据和官方提供的分析看板,不能直接访问数据源做更多的自主分析。我们的技术直男们又出手了,分成两个小组,一个小组将每天更新几次的静态数据自动汇总到数据库,一个小组开发接口,让任何有兴趣的研究者可以用任何编程语言来访问接口得到数据,开展自己的分析。白天工作非常忙碌,我们用了两周的晚上时间,终于基本完成。这个项目提供查询公开的全世界各个国家地区的新冠确诊、治愈、死亡等数字,有些国家地区可以挖掘到省份城市和州县,包括所有日期,并且最新的数据每天根据CDC更新而自动更新。这几天清明假期,大家更是不眠不休,终于完成了第一个版本。


复杂的数据清洗和整理,友好的数据接口包括支持自动联调,基于github的项目管理,高效的DevOps开发流水线,云计算的弹性能力,正是这些平时练就的本领,让这个新冠数据项目可以走到今天,相信这些数据对于需要的研究人员是有价值的。我们也会不断完善和改进。


技术让数字不再冰冷,程序员心中也是充满了热情。每个人的自律和努力,疫情一定早日退散!


COVID-19 Data API 地址: https://covid-19.adapay.tech

文档和自动联调地址: https://covid-19.adapay.tech/docs

访问API需要API Key,之后可以使用电子邮件自助申请,目前可以用:497115d0c2ff9586bf0fe03088cfdbe2

上面这个API Key可能会关闭,建议使用 register 接口来免费获得API Key。

有任何问题可以在这里留言,

电子邮件:国内 130730311@qq.com 国外 wingfish@gmail.com

清明

2020年的清明,比较特殊,扫墓的人少了很多。

在墓地碰到大叔和小叔,看到他们也都老了。记得我小时候,大叔还在安徽,他休假回上海,我在奶奶家,他会带我出去玩,然后游戏机的牌子0.15元一个,我很喜欢玩,可惜水平很不好,几分钟就挂了,记得大叔给我买了好几个牌子。那时候非常不好意思。清晰的记得那个游戏是青蛙过河。那时候大叔很帅,有点像秦汉。

大叔这一代人最为坎坷,下乡、下岗都碰到了。很不容易。

小叔在我小学时候每周三下午会来看我,陪我玩,整个小学期间。几十年过去,细节记得的不多了。小叔比我大的岁数等于我大于他女儿的岁数,也算有趣。小叔年轻时候很想刘德华,不过现在发胖了,开玩笑说像曾志伟了。

小叔年轻时代,上海很多人到日本打工留学,赚一票。小叔那个时候也学日语,不过我不知道为什么后来没有去。印象中当年去日本的很多上海人还是赚到钱的。小叔就心态比较好了,到现在打扮也很潮。因为小叔和我年纪最接近,所以思想上也比较容易理解。记得我很多个重要时刻,小叔其实都挺鼓励我。当然,当年,很多时候,他们的话我是听不进的。

很多事情,都要自己跌了跟斗,才懂的。

看着奶奶的照片,还是难忘小时候和奶奶在一起的时候,小叔是每周三来,奶奶很喜欢我,每周六下午小学不上课,她就来看我。一直记得有一天,不是周六,奶奶也来了,给我买了一个油墩子,然后就走了。我吃完之后,不知道为什么,就突然哭了。

至今记得当时自己的心情。

前几年每年年初一晚上都会和奶奶一起吃饭,一直担心她的身体,也看着她身体每况愈下,到后来几年已经完全不认识我了。

从中学开始,去奶奶这里的时间就少了。工作后,一年也就几次。

以为自己很忙,其实也就那样。

奶奶对我的教诲只记得两句了,好好吃饭,好好学习。

奶奶,我都做到了。您安心。

我的这十年,不如之前,跌宕起伏,经历甚多。身体也不是很好了。

追求的风花雪月,终究都是成云烟。

内心的充足才是自己需要的。

奶奶,我也基本做到了,虽然代价有点大,而且还是基本,并不够。人生自然就是有遗憾的,我也慢慢懂了。

谢谢奶奶,在我小学的时候,每周六来看我,真正感受到慈祥和温暖。

其实那时候大人的世界应该也是很复杂的,我不管,奶奶就是我的奶奶,我最爱的奶奶。

去年在扫墓的时候,正好同事消息我,很多事情其实不太高兴,很不高兴,当时我已经学会淡然,压住了怒火。才一年,变化太多了。好像自己也压得住火气了,看问题也通透一点点了。

2020年,整个世界变得有点乱,心不能乱。