❗️你有0条未读消息

8/53,每周一篇博,坚持!

我的博客是建立在Hexo的基础上,了解Hexo的朋友应该都知道,Hexo是一种使用Node.js将markdown文件编译成HTML文件的纯静态博客系统。

因此整个博客网站你只需要有一个Web服务器即可,网站的所有内容都是基于HTML、CSS、JS三大件的。这样的好处就是轻量,博客作者也可以将注意力集中在写作上。尤其对于没有技术基础的博主来说,Hexo尤为友好便利:自己只要专注于写作,会点markdown语法就可以了。

但缺点也是同样明显的,正因为是静态博客,所有需要动态交互的地方,如数据持久化、评论、内容推荐、流量统计、分享等等静态博客就提供不了了,这也是所有静态网站的缺陷。Hexo在这方面就需要接入很多的第三方服务来进行补充。如博客的评论系统通常就是使用Disqus,多说,畅言等等。我的博客用过一阵子多说,2017年左右多说关闭切换到了畅言,可以查看我的博客网站大事记

阅读全文 »

7/53,每周一篇博,坚持!

续上篇

3. 沟通能力

有了表达能力的加持,你的沟通能力就可以在此基础上培养了。

沟通的目的,就是透过语言交流,最终让彼此的思想都能够达成一致共识,取得某些效果。例如你跟家人沟通,就是希望对方能够按照你的想法去做,又或者你希望透过沟通,能够解决到对方不开心这个问题。

也就是说,沟通不像闲聊,可以天南地北的任意胡侃,而是需要透过你的语言,跟交流对象一起寻求最适合彼此的解决方案。

看到朋友失恋,你跟她沟通,就是希望可以让对方振作起来;看到孩子不听话,你跟他沟通,就是希望还在能够安分守己一点;看到老板这么苛刻,你跟他沟通,就是希望员工能够获得更好的待遇。

一篇文章讲述沟通,基本上很困难。

但一个好的沟通,应该做到五个方面:

阅读全文 »

6/53,每周一篇博,坚持!

续上篇

2. 表达能力

你能够流利说话,接下来就需要提高自己的表达能力。

什么是表达能力?

就是你能够透过口头语言,把自己的思想准确表达出来,而且别人也能够理解到你所说的意思。

在我们日常生活当中,口头表达大致可以分为两类:对话方式和独白方式。只要把这两种方式的表达能力提高,我们就可以应付生活上各种交流的需求。

表达能力差的人,很难快速把看到、听到的客观事物,或者自己想到的意思,准确的给听众传递出来。例如你看完一部电影,你怎么告诉朋友这部电影是好看或者不好看呢?

《金字塔原理》这本书提供的一个逻辑表达方案,就是先观点,后理由;而上一级的理由也是下一级的观点。

简化之后的表达流程,就是观点,理由,例子(例子和理由调换次序也可以)。

但这个表达流程,看上去很容易,运用起来却并不是每个人都得心应手。究其原因,有两点没有做好。

阅读全文 »

5/53,每周一篇博,坚持!

作为程序员,每天跟机器打交道的时间远超过跟人打交道,工作环境周边也很少有异性的存在,久而久之导致我们程序员群体大都是敏于行讷于言,钢铁直男般的存在。

直来直往的沟通方式,以及没什么社交经验导致大部分的程序员口才都很一般,然而在职场打拼一段时间后,我们会发现,无论什么职业什么工种,良好的口才对我们个人的重要性不言而喻,小到跨部门沟通合作,大到汇报工作晋升答辩等等,口才对工作成败的加分非常可观。

偶然在微博上看到了这篇程序员锻炼口才的微博,特将其转载在此,作为今年提升沟通能力目标的训练方法之一,一年后看成效如何。

0. 概述

说好话,并不能让我们到达最终的目的,但通往每个最终目的的路上(如找对象,找工作),说好话可以给予我们更多的帮助。所以锻炼口才,就是为了提高我们获得这些帮助的几率,让我们更接近自己人生中的各种最终目的。

但是很多人尽管知道自己需要恶补口才,却苦于不知道怎么着手开始锻炼。如果你没有一个系统性的计划,东一头练一下,西一头练一下,这样就很难出效果。

锻炼口才,必须有针对性,更不能操之过急。

最好的方法,就是按照一定的流程去练习。而这个流程一般分为四大部分。

  • 第一部分/ 基本功锻炼,旨在提升我们口齿伶俐的程度
  • 第二部分/ 表达能力锻炼,旨在提升我们组织言语表达自我思想的纯属度
  • 第三部分/ 沟通能力锻炼,旨在提升我们与人交往过程中双向交流的互动度
  • 第四部分/ 高级说话能力锻炼,旨在让我们掌握不同情况下各种说话形式的语言运用

这四个部分,在锻炼的时候最好循序渐进的各个击破,否则,前面的部分还没有掌握好就急于进入下一个部分练习,那一旦有个部分练习的不好,就会拉低我们口才的整体发挥效果。

那每一个部分,应该怎么锻炼呢?

阅读全文 »

4/53,每周一篇博,坚持!

0. 楔子

周末随老婆一起参加了她外公的葬礼,我这个人比较多愁善感,触景生情,由人及己,不免一阵唏嘘。现在自己也到了上有老下有小的年纪,未来二三十年将是我们要面对身边长辈陆续告别我们的时候,如何解决老人养老的问题让老人有个良好的晚年生活其实不光是我们要面对的问题,这已经是个社会问题。

1. 空巢问题

情绪是复杂的,问题是现实的,按照现如今社会发展的现状:老龄化加剧、传统家庭结构解体、城镇化的发展、独生子女…不单单是我们要考虑父辈的养老问题,等到我们老了的时候我们自己的养老也会成为一个棘手的问题。

中国是个有”孝”文化传统的国家,在过去”养儿防老”,老了跟子女住一起由子女赡养让这一问题不那么显著。随着社会的发展,”养儿防老”被认为是封建腐朽思想了,城镇化让子女都离开身边独立发展了,年轻人都喜欢独立空间不喜欢和父母一起住,即使有愿意的也有层层原因限制: 不谈传统文化在年轻一代身上印记不明显,夫妻观念是否一致,单单独生子女需要赡养四个老人的经济压力就足够喝一壶了,有意愿的也没条件。年轻人自己要生活要奋斗,于是乎,老人们在散发了自己的光和热后就被”空巢”了。助推这一现象加剧的除了城镇化之外,计划生育政策导致的独生子女问题也在政策施行几十年后即将迎来可见的影响。

在这样的社会现状下,可以预想大多数人的晚年生活都将不会多么的有质量,有尊严。当子女远离自己,老两口只能相依为命,一方面是情感上的缺失,另一方面是无人照顾的困局。年岁日增后总有老而无力的时候,到时候生活自理都将成问题。请保姆照顾算是一个途径,然而请保姆这行当算是一个以钱财换良心的行当,谁也不能保证老人付出不菲的金钱后换来的不是保姆关起门来作威作福。敬老院则是另一个大多数人生最后的归宿,相比起私人请来的保姆,相对会更可靠些。那些经济不允许的可能就只能自求多福,难保不会被逼入绝境想不开。想来令人心酸。

2. 如何应对?

虽然现在年轻一代传统孝感有所淡漠,但面对实实在在的城镇化进程以及独生子女带来的家庭结构问题,每个人自己的生存都很不容易,实在是不能在道德层面对不能尽孝的人做过多责备,试图让一对年轻人承担起抚养子女,双方父母甚至祖父母的责任,实在是不太现实。

虽然我们这一辈不得不面对大多数老人晚年无法享受子孙绕膝,不得不接受大部分时候情感缺失的现状,但是否能在既有问题下提高老人们的晚年生活质量呢?

欧美等发达国家的养老体系主要是社区型福利机构,类似于养老院,以老养老,老人们群居不至于无人照顾或者感觉孤独。

但中国国情不同,大部分的老人还是不愿意住养老院的,一方面住养老院需要一定的经济条件,另一方面养老院不是家,人之暮年对亲情的渴望是不以人的意志为转移的,住养老院有一种被家人抛弃的感觉。作为子女,一方面是要尽量多赚钱,给赡养父母提供经济上的支持,另一方面也要给老人正面的引导。这个社会问题,更需要国家政策健全养老体系制度来解决。希望以后能越来越好吧,也希望我们80后是历史上唯一的一批独生子女。

这个问题我真的不愿多想,但也不得不想…

3/53,每周一篇博,坚持!

在实际工作的开发过程中,我们经常会遇到一些场景需要分析手机访问时的代码问题。这时候我们可以用Chrome提供的模拟手机功能,但有时候是无法模拟的,如请求涉及到了手机定位,这种情形我们只能使用手机端来请求才能获取到实际的请求参数。这时候一般我们都会动用抓包工具来将手机访问的请求代理到电脑上来。

抓包工具有很多,Charles就是一款非常好用的抓包工具。本篇博文里就针对使用Charles来抓取手机端访问请求做一番简介。

安装

Charles的安装非常简单,可以直接访问Charles的官网下载页面,选择合适自己操作系统的版本即可。Charles是收费软件,可以免费试用30天。试用期过后未付费用户仍然可以继续使用,但是每次使用超过30分钟后会需要关闭重启。这种引导付费的方案对大部分人来说还是非常友好的,即使你长期不付费也能使用完整的软件功能,30分钟的使用时长也应该能满足大部分人的使用需求了。
如果你出于各种原因,坚持要使用无任何”瑕疵”的版本,你可以选择付费,也可以自行搜索破解补丁。

阅读全文 »

已读



“每个时代都有一个转折点,都有一种新的认识和评判世界秩序的方法。我们这一代人也在惊讶我们自己的新宇宙观——我们认识世界秩序的新方法,实际上也在实现我们自己的价值,把我们搭成人类的阶梯,通向遥远的星辰。”
基本每年一本科普读物,最远到量子力学,弦理论的大名早听说过,这次终于涉及到了,给我的震撼不亚于高三那年看到”熵”时的冲击。正如相对论是为了调和经典牛顿力学在宏观高速情形下的冲突,量子力学是为了调和牛顿力学在微观尺度下的冲突一样,弦理论是为了调和相对论和量子力学间的冲突,试图找到一个包罗万象能解释世间一切的理论,而这个理论再次颠覆了我们对世界基本构成的认识:宇宙万物的基本构成是一根根震动的”琴弦”。在弦理论的世界里,世界不是无限分割的,弦理论的对偶性告诉我们,最小只能到普朗克长度的尺度,往下和往上是某种形式的镜像对称:h尺度和1/h尺度的世界是对称的,因而不存在量子涨落,宇宙爆炸前也不是一个点而是一个普朗克尺度的火球。而弦理论进一步加强了相对论时空不可分的认识,一切的性质都是时空组成的影响结果。弦理论的世界里,宇宙是11维的,1个时间维,10个空间维里只有3个是展开的,7个其余维度是蜷缩的。弦可以束缚住空间,弦理论的深刻和反直觉远超过了量子力学和相对论,但如果你跟随它的思想路径逐步去深入你不得不叹服这是一群如何天才的人才能发现如此深刻的宇宙奥秘。虽然现在还不得而知弦理论是真正正确的大一统宇宙真理还是只能自圆其说的纸面学说,期待有实验数据验证弦论的那么一天。



系统了解一下Maven的工具书,写的还挺详细的。跟作者一起踢过球,挺逗的一人。

2/53,每周一篇博,坚持!

Maven仓库类型

Maven有几种不同的仓库类型:

  1. 中央仓库,中央仓库是由Maven官方提供维护的资源仓库
  2. 私有仓库,一般私有仓库由企业自己维护,不对外开放,和中央仓库一起可以称之为远程仓库。
  3. 本地仓库,本地仓库顾名思义就是开发者自己本机所处的仓库环境,通常是自己打包的jar包目录。
    配置的方式是修改maven配置文件的”repositories”部分。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <!--中央仓库默认为http://repo1.maven.org/maven2-->
    <!--nexus私服设置-->
    <repositories>
    <repository>
    <id>central</id>
    <url>http://mvnrepo.alibaba-inc.com/mvn/repository</url>
    </repository>
    </repositories>
    <!--本地仓库-->
    <!--默认仓库默认是在${user.home}/.m2/repository下-->
    <localRepository>/path/to/local/repo</localRepository>
阅读全文 »

一个短暂的春节过去了,短短的七天假期有一多半的时间是在开车,属于自己的时间满打满算也就一个双休日吧。明天又要开工了,新的一年新的一轮奋斗又要开始了,像这种传承了几千年的节日怎么着也得放个半个月吧,谁说不是呢?

本来是一篇2017年终总结,硬是从元旦拖到春节再从春节拖到春节结束,现在真真的是离笔太久,提笔恐惧啊。简单说几句算是对去年的一个交代也给新年做点期许吧。

现在时间流逝太快,转眼我儿子都已经满地跑,而我也已经年过三十。那个在宿舍憋着写《水样年华》的日子仿佛还历历在目。时间催促着我成长,而我成长的速度远远赶不上时间。有一个理论说,年少时记忆的东西少,每一年的经历都是崭新的,而年岁越大经历的重复的东西也越多,于是乎可供大脑记忆的东西越少越觉得时间过得快。想想有些道理,于是偶尔抽身世外,读读书神游太虚便是件快乐的事,否则无时无刻都在感受时光洪流冲刷着身体,眼睁睁看着他衰朽是件多么可怕的事。

诶,提笔就爱瞎矫情的毛病又犯了,这老气横秋的气质与我本人不符啊,哈哈~说了些废话的感慨,先总结下年度阅读吧。

阅读全文 »

背景

我在项目中使用阿里云OSS存储文件,导出时导出为csv格式的文件。然而打开时总是存在中文乱码。
通过网上的一番搜索,大抵是使用记事本先打开csv文件,然后再保存为ANSI格式,然后再用excel打开时就不存在乱码了。但这不是程序里的解决方式,我们不可能提供一个半成品的导出文件供用户使用。经过一番网上搜寻,发现问题的根源在于UTF8的BOM信息头。
本来UTF8是不需要BOM头的,这就不得不说到微软的可恶了。

BOM简介

BOM中文译作”字节顺序标记”,UTF8本不需要BOM来表明字节顺序,但WINDOWS用BOM来标记文件文件的编码方式。BOM的UTF8编码是”EF BB BF”,所以如果接收者收到以”EF BB BF”开头的字节流,就知道这是UTF8编码了。WINDOWS系软件保存的UTF8编码的文件需要文件的开头保有这个BOM字符。

问题解决

项目中使用OSS存储文件,存储成功后返回一个签名过的文件url地址,前端再根据这个url去请求获取文件。由于前端是直接使用”window.open(url)”的方式,直接新开窗口访问链接,下载下来的文件默认是UTF8编码的,因此使用excel打开时需要BOM字符来表明是UTF8编码,否则其中的中文则会产生乱码。

因此,在OSS存储时,我们就需要额外添加BOM头一并存储。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
OSSClient client = new OSSClient(ossHelper.getEndPoint(), ossHelper.getAccessKeyId(),
ossHelper.getAccessKeySecret());
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentType("application/vnd.ms-excel");
objectMetadata.setContentEncoding("UTF-8");
objectMetadata.setContentDisposition("attachment; filename=" + fileName + ".csv");
// 增加BOM头信息
String bom = new String(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF });
try {
// 以同样的编码获取字节流
client.putObject(ossHelper.getBucketName(), fileName,
new ByteArrayInputStream((bom + exportFileString).getBytes("UTF-8")), objectMetadata);
}catch (UnsupportedEncodingException e){
e.printStackTrace();
}