告诉你,我的江湖
说什么江湖恨,
江湖刀剑歇;
说什么儿女情,
女神嫁他人;
说什么兄弟义,
恩怨斩愁肠;
江湖恩情义,
人生酸辣甜;
道不尽的西风瘦马,
说不清的真假葫芦案;
故垒西边,
荒草一片;
东临碣石,
海沽石烂;
多少豪杰埋江湖,
江湖还道,
自有新人笑。
在种地靠天吃饭的年月,生存的所有…,都取决于’天老爷 ‘能否风调雨顺,但是 天老爷 的的心情谁能告诉你呢,几千年的农时经验都不能说清楚,于是不确定性根植很多农人的骨子里。现时代,一个人最大的天真就是认为自己生活在一个确定的和有规律的世界。农人即便遭遇颗粒无收,他也不会灰心,因为不确定,来年还有机会,还会继续努力耕种,天真的人一旦无所成,开始反思自己的付出,分析自己的努力,甚至开始怀疑这个世界,但是这个世界上很多大改变是这些天真的人促成的,而这个世界的基础则是那些’农人’。
受历史唯物主义观的影响,大历史确实是有内在的客观原因和发展规律,当阅读鲜活的历史事件时,充满了大量的随机和偶然,很多个人的行为推动了历史的一小步, 而这一小步就成了撬动大历史发展的杠杆。
从这个角度说,每个人类个体,活出独特的自我,才是个人对这个世界最大的贡献。
如何思考软件在中国发展中的作用?
最近美国特朗普政府对中国新一轮的科技绞杀开始了,我认为这不是最后一次,也不是最严重的一次,更多风雨还在后面。
随着智能手机在国内的普及,软件已经和每个人息息相关,在我看来,社会文明发展的高低取决于软件化程度的高低。
极度发达的社会,必然有极度发达的软件,相应的,极度发达的软件促使社会文明程度的发达。软件影响了人类社会的方方面面,未来的黑客帝国,也是因为软件的兴起。
美国对中国的新一轮制裁,归根结底是对中国高级软件技术的限制,新中国成立后,中国在老一辈科研人员的艰苦奋斗下,在核武器,航天技术的突破赢得了世界的认可。现在我们需要在软件上实现突破才能再次突破现有的地位,赢得世界对中国大国地位的认可。
软件上的突破实际上对各个行业的系统化升级改造,需要完整的软件开发工具链的自主化,实现在软件技术上中国创新和中国影响力。
我窃以为,国内软件业还非常落后,就像是洋务运动后的中国,我们会用洋钉,洋灯,洋车,洋机器,可是没有一个我们可以完整的自主造出来。从业十余年,用到的软件开发语言没有一个国产的,用到开发工具没有一个国产,用到的设计理念绝大部分也不是国内自主创新的,我们这些所谓的开发人员特别像那时候的买办,转卖洋人的东西给国人,顺手打了个国产的标签。从这个角度看,我们的软件行业被更高级的洋软件殖****民了, 软件现代化,我们还有很多路要走。
我们常用 站在巨人的肩膀上 这句话来麻痹自己,其实站在巨人的肩膀是对的啊,关键是站在哪个巨人的肩膀上呢,我们站在美国这个巨人的肩膀上,人家要不要你站,还不是看人家的心情吗!所以艰苦奋斗,自力更生什么时候都不要扔。我们要坚决的发展自主的软件研发体系,各个行业的软件体系;
软件行业为什么那么重要呢?
目前看,软件代表着一个国家最高的科技实力和科技行业的整体水平,软件兴,则中国兴!
中国软件,加油! 中国,加油!
五一休假的第二天,与妻,娃一起午饭。
娃摸着妻手腕上的一个疤痕,嫩声的问:妈妈,这是什么?
妻吃了一口菜,悠悠说道:”当年真是SB,竟然为了前男友,用烟头烫自己!”。
我哈哈大笑,”这不是刻骨铭心的爱情嘛!”。
妻说:“谁还没点难忘的青春!”
我突然想到一个问题,问妻:“等娃长大了,如果他失恋,为了前女友死去活来,然后问你:妈,为了表明我爱的决心,我要用烟头在手腕上留个痕迹。 你该怎么说?”。
妻愤然道:“我就说,烫吧,反正你会后悔的…”
当我们的老一辈告诉我们他们的人生经验时,我们内心总是听之任之,全然不会把这些话当做真理性的知识去记住去理解,同样当我们把我们的人生经验告诉下一辈时,他们肯定也是听之任之,是的,人生经验难以推广。
人生难以复制,与其模仿别人,不如活成自己!
别人的人生或苦难,或富贵,或卑贱,或荣耀,对我们来说都像是自己人生旅途上的风景,可停车赞叹,可扼腕叹息,抑或高山仰止,抑或报以不屑,但是都不会影响你旅途的目标,你可以参照他们,总结他们,但是你成不了他们,你只能成为你自己。
所以我会对娃说:“我和你妈想法一样,烫不烫随你,反正我们说的你也不会听”
有感最近所在公司有一起奋斗了很多年的老同志离职。
就像是夫妻间的七年之痒。
总有一些委屈不想忍耐,总有一些原则不想将就,总有一些事情不再重要,总有一些未来不想等待,总有一些决定不再犹豫,总有一些结果不想回避;
宴席散,酒留肚肠,沁入脾胃,化作心雨寄离伤;
夕阳西下,人各天涯,不敢见屏幕,默然线上代码数万行;
闭眼回想,往事如昨,太多的经历,要加上“一起”这个词!
一起跑步,一起午饭,一起晚饭,一起赶地铁;
一起聚餐,一起k歌,一起游船,一起看大海,
一起撩妹,一起游戏,一起写码,一起改bug,
一起熬夜,一起加班,一起上线,一起赶进度,
一起开会,一起争论,一起流泪,一起挨批评,
一起郁闷,一起沮丧,一起吐槽,一起想跳楼,
一起失败,一起成功,一起奋斗,一起赶项目,
一起走,一起玩,一起读书,一起进步,
一起吃,一起喝,一起回家,一起高兴,
一起疯,一起狂,一起犯二,一起癫狂,
一起的一起总是流淌在日常的生活里,
一起的一起总是泼洒在生活的阳光里,
一起的一起总是徜徉在阳光的沙滩上,
站在沙滩,面朝大海,背靠背的歌唱!
…
人生就是这样,一起一起着,就各奔了西东,不知是迷路了,还是走散了,总之,我们是不在一起了;
一起一起着,就成了一起的往事,一起的回忆;
一起一起着,就成了一起的遗憾,一起的怅然;
一起一起着,就成了一起的永远,一起的梦幻;
人的出生就是伴随着和母体的分离,离别是人的宿命,可是不论怎样,母子连心。
心若在,梦就在,一起追梦,向阳而生,就是一起的一起!
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough
to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea – let’s do more of those!
优美优于丑陋;
明了优于隐晦;
简单优于复杂;
复杂优于凌乱;
扁平优于嵌套;
稀疏优于稠密;
可读性很重要;
即使实用比纯粹更优,
特例亦不可违背原则。
错误绝不能悄悄忽略,
除非它明确需要如此。
面对不确定性,
拒绝妄加猜测。
任何问题应有一种,
且最好只有一种,
显而易见的解决方法。
尽管这方法一开始并非如此直观,
除非你是荷兰人。
做优于不做,
然而不假思索还不如不做。
很难解释的,必然是坏方法。
很好解释的,可能是好方法。
命名空间是个绝妙的主意,
我们应好好利用它。
value可以是任何复杂类型的object,键值就是这个这些对象的键值;
在indexedDB内的任何操作都是再事务内的;
这种基于事务的操作模型会很好的处理用户打开两个tab时的数据操作带来的不一致问题;
数据库数据读取,插入,删除等所有的数据库都是异步的。这些操作都需要请求(request),数据库接收请求,接收请求,并执行请求中callback操作,操作结果会以dom event的形式通知
请求本质上沟通用户层和数据库层的通信方式,请求上可以绑定事件,用以接收数据库层的操作结果。不同的数据库操作返回的请求对象也不同,包含的对象也是不同的;
在几乎所有的请求对象中,success和error都是可用的。需要注意的是success不能往上冒泡以及取消数据操作,而error却可以,error可以取消任何正在运行的数据库事务
在用户端上的操作上,indexeddb的操作思想和ajax一致,他们都是异步的,发送请求,然后结束,通过事件的形式通知,js的单线程和浏览器的宿主环境决定操作上不宜使用同步操作,这种思想被借鉴到很多地方,比如nginx和nodesjs,实际上很多不同操作环境的交互越来越多的使用这种方式,前端最常用的js和webview交互,在本质上也是这种,再具体实现上,因为webview和js不能传递包装好的request的请求,所以以消息队列的方式实现request的包装,在js侧上看和request数据库的操作类似;
在理解上,可以简单的看成请求-通知的模型,和观察者模式有异曲同工之妙;
随着前端技术标准化的发展,很多异步通信会被归结为一种标准化的操作;
前端在异步上的写法也越来越方便快捷,常用的有 callback模式,promise模式,async-await模式,以及生成器;我之前限于浅薄的认识,没有思考过这些模式的组合带来的一些效果,但是在indexedDB的接口封装中,这些模式的组合使用会带来更便利的使用。简单的分析下idb-keyval的实现思路。 作者把indexedDB的异步封装成了promise的形式,使用callback的模式封装具体的对数据库的操作,而用户端端看到的完全是promise化的接口。仔细品味以下核心代码:
1 | _withIDBStore(type: IDBTransactionMode, callback: ((store: IDBObjectStore) => void)): Promise<void> { |
在一个事务中,callback负责完成store的指定操作,比如get,put之类, oncomplete在事务完成后触发,这样就把一个transaction封装在了一个promise,而callback有留出了自定义操作的灵活。这种简洁的处理,有非常好借鉴意义。举个实际点的栗子:
封装一个用户购买游戏道具的标准流程:当用户发起购买时,1 请求接口,获取当前用户的等级;2 根据用户的等级,弹出不同的道具弹窗;3 用户选择关闭弹窗或者选择一个道具,发起支付,这个流程作为一个服务组件,弹不同的道具弹窗就是一个自定义动作,是不同的游戏关卡中自己定义的,核心代码如下:
1 |
|
疫情中逝去的每一个生命,都不只是一个简单的数字或名字。
他们是父亲、母亲、儿女、兄妹,是我们血脉相连的骨肉同胞。
我们向逝世同胞致哀,同时也向那些与死神不屈抗争的生命致敬,向那种生死瞬间的人间大爱致礼。
全球确诊病例已经突破百万!祈祷他们早日康复!
祝福健康与我们每一个人同在!
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true