Get on the road and ride

忙来忙去,终于停掉了一个无底洞项目。这个项目设计时期就已经太过于庞大,可能是对于自己的开发能力太过于自信吧。人在无知的时候,总容易乐观——或者可能是相反的吧。

最近写了几篇公众号,本来都已经想要放弃博客这种形式了。这博客断断续续可能写了快十年了吧,中间换域名无数。这期间见识到了一个快速发展的时代,见识到越来越繁荣却封闭的互联网。一切都面目全非,人们都忙着看短视频或者短小精悍的公众号文章,人人都成了历史学家、经济学家或者预测专家,他们拿着一排排的数字,堆砌在你的手机屏幕上,让你相信他讲的脆弱的真理。

可惜在博客中,很少记录这些变化,仅仅提到一些简单的技术问题,忽略了时代的变化和影响。从我们开始使用智能手机,开始往自己的桌面上填充各种图标,让程序管理我们、通知我们,从小小的窗口观察外面精彩的世界开始,人们似乎失去了一种自治能力,一切的一切,都交给了那些看起来方便的芯片,他们执行的或简单或复杂的逻辑,成为我们每天生活的潮汐之力。

我似乎忘记记录了大量有意义的信息,那些物是人非的地点、风吹过的清晨、夕阳染红的海岸线,那些被火焰焚烧过的黑色、被艳阳灼晒的苍白、被叶子反射的苍翠绿。

所以这只是一个简单的入门技术记录博客,仅仅记录了当年使用的一丢丢的技术,从雪中深厚的脚印之上采集来的浅浅拓片。等到回头,我才觉得这里记录的,肤浅无趣,甚至没有起到多少记录的意义。

最近的数据库频繁重启,更是让我想把这博客下掉。

不过毕竟,快十年了,或许我这才刚刚走到路上,先继续记录吧。

最近几个项目的总结

很久不更新博客了,狼藉到几乎不可救药了,赶紧补写一些,总结一下这大半年的几个项目。

第一个项目是个获取数据并做统计分析、计算结果会通过机器人消息的形式发送到stack的组里面。基于go(消息部分)和python(主要使用了matpoltlib、numpy和爬虫部分),这些封装做的不错,go对网络的支持也很人性化,python的科学计算库也很好用。

然后是朋友的数据管理项目,这个项目从头给他写了个php框架,帮忙维护了一阵子,是在是很无聊的东西。维护的内容是在是简单,框架也就停止的完善。

后面开始的是一个ios项目,虽然从前写过简单的ios游戏(基于cocos2d),但是界面布局和各种api确实和游戏完全不同,swift的设计也很不错,不用再像oc那样去管理内存和指针,配合xcode神器,的确是苹果该有的体验。

然后不知死活的开了个项目,第一件事就是实现一个富文本编辑器,CoreText作为字体绘图的核心部分,使用swift去处理大量的指针实在很麻烦,同时还要重新实现UITextView,简直焦头烂额。目前网上的文章对于CoreText的整理并不是很完整,苹果文档里的文章多少有些过时了,同时swift文本渲染的文章仅仅止步于NSAttributeSting。这里说明一下很多时候并不需要CoreText来处理的,通过UITextView配合NSAttributeSting实现起来其实很容易,动态的样式变化是可以通过NSTextStorage来控制。只是目前开发作风都是拿来主义,很多人图省事直接使用WebView来实现富文本,CoreText富文本几乎都是OC实现,偶有基于UITextView的也只能算个demo罢了。

最后是帮朋友写的管理系统,基于YII2,这个框架就好像rails或者django的感觉,封装很多,但是不太严肃,也不太容易扩展的感觉。适合新手使用,但是似乎目前php越来越不受欢迎了,时代在发展,语言也在发展。很多人转了go、python、java,偶有几个转了c++,最多的似乎都转了管理。

当然还有两个业余玩耍的项目,编程语言soleil和一个ardiuno的自动夜灯,soleil基本上是停滞状态,太多细节需要梳理,一梳理就没有动力继续了;至于夜灯,第一版是直流方案,还可以,但是做交流的话,需要做转直流设施(整流桥、稳压稳流模块等),简单方案弄个led整流电路(或者手机充电器电路)配合万用表应该就可以了。先入个万用表再说。。

唠叨这么多,似乎并没太多有价值的东西,仅当做个记录吧。

一枚秒表的隐私协议

针对范围

此隐私协议只针对一枚秒表应用。

信息使用:

  1. 此应用不主动收集任何用户数据,不上传用户信息,特殊情况见第二条
  2. 如果存在影响用户体验的问题存在(bug、体验问题等),在用户允许的情况下,可以收集部分程序信息。收集到的数据仅用来提升用户体验,问题修正后及时丢弃。

有任何问题,可以在此反馈,我们会及时处理改进,谢谢!

继续阅读

ios开发中的几个问题

NSPredicate中key的转义

NSPredicate中如果需要对key做转义,可以通过%K作为转义字符,比如

这样可以避开一些特定字段不能做key的情况。

更详细的创建方法可以参考下面的链接:

Creating Predicates

info.plist多语言

info.plist的多语言,不要对info.plist执行localize,这会导致info.plist被删除,然后在相应目录创建对应的多语言版本,同时会在项目中移除info.plist的支持,怎么加都回不来。

info.plist的对语言方法为InfoPlist.strings文件,然后对相应的字段做翻译,比如:

如果不小心对info.plist做了删除操作,只能用git提交想要保存的文件,但是不添加对应项目的组织文件,然后git reset掉重新建立翻译文件的组织。

碎碎念

满地荒芜,无处话凄凉。

北京萧瑟的冬景,和博客的清冷很应景。

已经多个月没有更新博客,实际上并不是无话可说,但总觉得这些话并不重要了。童蒙之举,可能并非应是我所求?现在的网络也越来越完善,谁会看博客这种东西呢,冗繁琐碎。

不常更新,nginx挂掉、数据库也挂掉,几天才发现。

本想等soleil开发完以后更新博客,恐怕遥遥无期吧。

不过,这是沮丧吗?不知道。

走,喝茶去。

 

pacman安装软件包时文件冲突的解决方法

arhclinux下用pacman安装docker-compose的时候,报以下错误(截取了一部分):

 

在archlinux的wiki中(见参考部分),查到问题的原因:pacman安装时发现文件冲突,也就是文件安装前已经存在了。

所以先分两步走排查原因,一种是pacman安装,另一种是非pacman安装。

如果是pacman安装的,自然是pacman依赖没做好,可以通过pacman -Qo来查询文件所属的软件包:

返回如果类似这样:

那就是pacman的问题了,明明安装过了却没记录下来,就需要往上报bug了。

但是如果是这样的:

那就是我们不知道什么时候自己安装上去的,把这个文件夹先做个备份转移走。

根据之前的错误提示,挨个排查(我的例子中就是urllib3和request),如果都是非pacman以来,就先都备份,然后重新执行pacman的安装应该就可以了。

参考:Archlinux Pacman

作者使用的pacman版本:Pacman v5.1.0 - libalpm v11.0.0

docker中无法使用crontab的问题

最近在docker里使用crontab设置定时任务,发现crontab到时间没有执行。

第一个想到的是时区问题,查看了一下时区,是UTC时区,赶紧改成了Asia/Shanghai

使用date命令查看,时间没问题了。设置个时间测试一下,结果仍然不执行。

检查crontab任务是否启动

一切正常啊,奇怪。

装上rsyslog并启动,查看相关日志:

里面说set_loginuid failed,这个似乎是个认证模块,因为安全原因,被docker默认禁用掉了。修改/etc/pam.d/cron,把下面这行注释掉(也可以使用更高的权限启动容器,比如gdb无法使用的情况):

也可以把中间的required修改为optional来解决。

重启cron,运行成功。

同样的,ssh也会有这样的问题,因为也用到了pam认证模块,可以参考下面给出的链接来解决。

参考:

docker容器中crontab无法正常运行解决方案
Dockerize an SSH service

环境参考:

Docker版本:1.13.1
系统:archlinux

pandas datareader v0.6.0获取雅虎财经数据报错问题

使用pandas datareader的时候,报如下错误:

去datareader的文档页查看原因,有一个这样的提示:

As of v0.6.0 Yahoo!, Google Options, Google Quotes and EDGAR have been immediately deprecated due to large changes in their API and no stable replacement.

到了v0.6.0的时候Yahoo!, Goole Options, GoogleQuotes和EDGAR的api有大改动,目前还在调整,不够稳定。
还有一段这样的提示:

Yahoo! Finance has been immediately deprecated. Yahoo! substantially altered their API in late 2017 and the csv endpoint was retired.

看起来是雅虎财经的api在2017年末做了修改,csv的数据也取消了。所以数据源里暂时不提供雅虎财经的数据了。

来源:

https://pydata.github.io/pandas-datareader/stable/

https://pandas-datareader.readthedocs.io/en/latest/remote_data.html

这次休更了好久

头次休更博客这么久,域名又被我给换掉了。

目前的工作内容来讲,可写的东西真的很少。看到的越多,就愈发觉得了解的太少,世界纷繁,加上变化如此之快,希望不会陷入自以为是的固步自封状态。

待我找时间修葺一下这里,然后恢复更新吧。