分类
技术

为什么初学编程我建议从Python开始

从1992年算起,我写程序已经写了28年,从2001年上班算起,我写程序也写了19年了。编程最早就是我的一个爱好,然后整个职业生涯编程养活了我,让我过了一个还不错的生活。到了这些年,我写文章的收入日益增长,变成主业。但是编程并没有离开我的生活,它又变成了我的一个爱好。

分类
技术

FFMpeg用法收集

我经常剪辑视频,虽然现在已经熟练使用Final cut pro了,但是有的时候,你会发现有些任务还是用命令行最方便,所以我也经常需要使用FFMpeg来做一些素材的调整工作,比如旋转素材(手机拍的,有时候是需要翻转的),所以这个Post不定期更新补充我用到的FFMpeg技巧。

分类
技术

如何集成Jira和Github企业版

Github企业版包含了基本的issue和看板管理,对一般的团队已经足够。但是有的团队仍旧需要把自己习惯使用的Jira和Github企业版集成。这样,团队可以在Jira内看到他们的分支,提交信息,pull requests等等,可以让Github的代码提交记录和Jira的任务管理系统集成在一起,获得便利。

分类
技术

Python使用Flake8做代码静态检查的时候如何忽略一些比较长的语句[E501]

最近开始在Visul Studio Code里面用Flake8做我的Python项目的代码静态检查,感觉不错,确实可以提升可读性。

但是在我的测试样例里面,我发现有时候我要引入一些比较长的JSON字符串,作为测试的样本,格式化然后多行太占地方,而且比较麻烦,而且里面涉及到一些长文本,折行就更麻烦了。

分类
MacOS

我遇到的MacOS Catalina Beta bug一例

我有两台常用的Mac,Mac OS Catalina在我的RMBP上面工作的相当正常,没发生太大的问题,但是在我的Mac pro垃圾桶上面问题很多。最近时不时的就打不开任何新应用了,chrome也打不开新的网页,但是老的网页却正常。

这么一说,有点像是进程数的问题。在终端执行任何命令也会发生错误zsh: fork failed: resource temporarily unavailable。

现在问题已经解决。

原来是我之前有一个cron设置一分钟启动一次,当前系统有个bug这些cron任务执行完了不会自动释放,结果刚才我发现系统内有1000多个cron进程,如果几天不关机当然会累计更多,我把那个cron设置取消,把这些cron进程都干掉,现在系统的进程数量就比较健康了。

我再观察几天,估计这个问题不会再出现。

分类
MacOS 技术

IntelliJ IDEA可能会在MacOS 10.15 Catalina下崩溃

最近我频繁遇到在安装了MacOS 10.15 Catalina的机器上IntelliJ IDEA会崩溃的问题,最后这篇文章解决了我的问题

我之前试着用Visual Studio Code来开放我的Java代码,一开始还好,后来不知道做了什么动作,就不对了,找不到类名,执行错误。我折腾来折腾去也没搞好。暂时认为VSC可以用来做我的Java开发,但是配置太麻烦,暂时也不支持导入IntelliJ IDEA的项目,所以暂时放弃了用VSC开发Java的打算,不过用VSC写Go,等,我目前体验不错,Flutter还没来得及用。

分类
MacOS

Zsh如何设置终端提示(Mac OS新版)

我已经在其中一台Mac玩新版Beta的Mac OS 10.15也就是Catalina。这个版本苹果把默认的终端shell换成了Zsh,不出大问题的以后这就是上亿Mac用户的默认选择了。

换了新的shell你以前在shell设置的一些环境变量,终端提示可能就失效了,所以是时候学习新的技巧了。

分类
技术

那些年我赶过的时髦技术趋势

题图是我大学时代最爱玩的一个游戏,法老王-埃及艳后,这是一个以古代文明为背景的城市建设游戏。最近又捡起来玩了玩,还是那个味儿,倍爽。

上次有人说,听说tinyfool看到AlphaGo火了,马上去赶时髦学机器学习,把我弄的哭笑不得。我给大家介绍下,我从业10多年是怎么赶时髦的吧。

怎么赶上搜索技术的时髦

98年,第一次上网,也是第一次看到Google,那时候简直觉得Google就是天下第一的好东西。互联网是个无穷无尽的宝库。但是没有Google这把钥匙,你什么也不知道。

那时候,我就对搜索技术很感兴趣。一直在看各种技术文章,但是因为基础的问题,对各种文章的描述也不是很懂。01年,我根据一些自己的理解,写过一个原理性的单字倒排搜索引擎,那时候,我连怎么做好中文分词都不了解。05年,看文章知道了Lucene,但是一直没有机会用,也没上过手。

08年做技术咨询的时候,客户想上一套搜索,方案公司的报价是20万。客户询问我们有没有解决方案,我当时觉得是个千载难逢的好机会,我就跟霍炬商量好,我们试试看客户满意的话,未来还可以卖给别人。但是我们两个当时的技术路线思路不同,我看好Lucene,基于Java开发简便社区成熟,文档全面,刚刚还出了本Lucene in action,他看好Tokyo Cabinet作者用C++写的一个搜索内核。春节放假回家,我们各自写一套,因为大家技术路线不同,所以越好不吵不闹,看产品见真章。春节7天假后,我的更成熟一点,所以他的就放弃了。

马上交付客户,客户很满意,搜索流量暴增且每天都在持续增长,一个月不到,客户的竞争对手打电话要求买一套。

这套系统曾用于饭统、点评、六间房、FtChinese,等公司。单一服务器最大日搜索量2000万次。

怎么赶上移动互联网的时髦

01-02年,J2ME刚刚推出来的时候,我就很有热忱想在手机上写程序,但是受限于当时J2ME的设计思想,以及当时手机的机能,玩了玩,我觉得这不是我要的可以编程的手机。

其后到iOS之前,所有流行过的手机操作系统和开发环境我都碰过。我研究过J2ME在Nokia s40上的开发,研究过Symbian,研究过Android 1.0 SDK,那时候还没Android手机呢。

到了07年乔布斯宣布iPhone的时候,我觉得这就是我梦想的手机。但是那时候没有原生SDK,只有一个Web SDK,我第一时间就开始玩,后来失望的放弃了。过了1年以后,乔布斯发布了当时还叫iPhoneOS SDK的iOS SDK第一版。当天,我就发邮件给在美国读博士的朋友徐宥,请他用他的信用卡帮我买了一个开发者账号。

有了开发者账号后,我自己开发的第一个App是运行在我在朋友公司年会抽奖,运气好,得到的iPod touch上的一个记账软件。这个软件大概开发了2个星期以后,网易有道的人辗转找到我,请我帮我开发有道词典iOS版。

后来,有道词典iOS版是我上线App Store的第一个App。

最近为什么在赶机器学习的时髦

08-09年,我们做搜索创业的时候,我就开始自学机器学习。那时候,机器学习的理念还不是很流行,更多的说法还是人工智能。还是徐宥博士,他读完回国探亲的时候,因为他是相关专业的博士,所以他给我做了最早的启蒙。当时人工智能行业的现状,为什么从规则开始往概率转变。为什么现在流行的概念是机器学习,什么是监督学习和非监督学习,等等。

那时候开始对机器学习感兴趣的主因是,我们做搜索的时候,大量的看跟Google有关系的东西,当Google有了大量数据积累后,大量的使用机器学习去改善自己的搜索结果,寻找更好的组织信息的方式,等等。

我是国内当时最早翻译Google GFS、Mapreduce、Bigtable论文的人之一。Google公布这三篇论文后不久,Lucene的创造者Doug Cutting就领导创建了Hadoop社区,后来还创建了Mahout,这个当然后来不够火。但是我们的研究和对市场的分析都认可,我们的搜索服务未来和机器学习服务是非常相配的,所以,我当时花了很大精力在学习机器学习和研究怎么把他们搞成服务。我们可能也是做搜索服务的公司,最早给用户提供搜索数据分析服务,关键词提醒服务等等,这些都是从搜索服务延展到数据服务的例子。

后来,美国次贷危机造成我们A轮融资失败以后,我们被经济形势吓到了,公司关门了。后来,我们几个先后去了盛大。而当时盛大对iOS方面的人也很缺乏,所以,我暂时就放下了机器学习。

那个时候,深度学习还没有兴起。大概是12年的一次imagenet的比赛上,深度学习的结果夺冠,然后各种比赛和论文都表现出深度学习的效果和便利性以后,才大行其道起来。

自学机器学习暂时放下以后,在我自己的网站,还让我当时的下属,在我的指导下,搭了一个贝叶斯的文章分类器做自动抓取,自动分类,放了很多年。最近,关了上一家公司,才又有时间和心思专心学了一段时间机器学习和深度学习。当然,有动力去好好学,也是跟深度学习最近有了非常多可惜的进展有关。

不得不告诉大家的是,AlphaGo真的不算里面多重要的一个。当然AlphaGo有其非常大的价值,因为它是外界最容易理解的,也是最容易被误解的。就跟当年的深蓝一样,其实深蓝本身对这个世界的价值不大,但是深蓝引发了大家对机器智能的兴趣,激起很多相关的讨论和研究,这是它的价值。

结论

本来写这篇文章也是一时好玩,算是解释解释为什么看上去你们总觉得我在赶时髦,而我其实没有。只是我之前很有兴趣的很多事情,慢慢的走到了历史的前台,成为了当时的时髦技术而已。

其实我觉得如果你有心去赶时髦的话,往往可能会错过风口,因为这个世界的风口一直在变。如果你坚持做一些你喜欢的东西,有时候,风口会自己撞过来。

分类
IT行业 技术

创业公司如何确定技术路线

首先要说的是,我认为创业公司的技术路线选择并不是一个技术问题。如果是一个纯粹的技术问题,那么很可能会一直争论不休,最后的结果就像某个笑话里面说的,某公司一直到倒闭技术路线还没统一。因此,本文不会向你推荐任何一个具体的技术方案。

分类
iOS开发 IT行业

iPad革命:开发者的机遇和挑战

iPad采用了和iPhone一样的底层系统,开放方式基本相同。同时性能大幅提升,屏幕尺寸大幅度提升,以前在iPhone上无法实现,或者难以实现的一些应用的机会来了。所以,现在对每个有志于iPad开发的人来说,唯一的挑战是你的想象力和你的执行能力。