断断续续这事一直没解决掉,

可能是我用的关键词不对或者是关注这个的少?关于RSA跨平台加密解密的文章居然这么少。。。

一开始用PyCrypto生成密钥,在Android里解密失败,反过来,也失败。。。

最后直接使用OpenSSL,

生成私钥:

genrsa -out rsa_private_key.pem 2048

生成公钥:

rsa -in rsa_private_key.pem -out rsa_public_key.pem -pubout

需要特别注意一点是,OpenSSL直接生成的私钥在Java里不可用(Python里没问题),要对私钥进行PKCS#8编码:

pkcs8 -topk8 -in rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt

参考:https://blog.csdn.net/chaoyu168/article/details/78744341

提交四季相框apk到华为市场提示包被占用,他们的自动认领流程叫我签一个名然后放上去,按提示搞得云里雾里的,最后按下面的方法搞定:

jarsigner -verbose -keystore keystore文件 -signedjar [签名以后的apk名称] [要签名的apk] [keystore中的别名]

来源:http://blog.csdn.net/a535182324/article/details/51602619

华为这么大公司写的提示可真够友好。。。。

最后,还是没认领成功,要通过客服。

先碎觉,奶奶的。

春节期间升级了一下这个App,把通过订阅号发送图片改为通过小程序发送。

两年零维护居然还有人用,出乎意料。

原来apk的签名搞丢了,不能直接内部升级,需要重新到 www.sijiphoto.com下载新的apk全新安装。

Android端用开源AndroidImageSlider换掉了原来的fresco + view pager,感谢原作者, github:https://github.com/daimajia/AndroidImageSlider

以前老版本说明:发布了个小App

我很早就不太喜欢过春节了。

小的时候是因为家里人手不足够,父母经常会在这段时间因为一些琐事争吵。再加上,母亲是一个实用主义者,愿意倾其所有花在我们的教育等事情上面,过年却不是特别愿意像别的人家一样慷慨。

再后来,我对基于血缘伦理(这点跟母亲很不一样,她非常看重血缘伦理)以及走各种平常都不怎么见面的亲戚的虚伪仪式感深感不适,父母也不勉强我们非要跟亲戚密切来往,我也乐得回避这些事,但是难免也会碰到,家教对这方面的不看重,经常在这种场合自觉尴尬不已。

我刚刚粗略算了下,毕业后我有1/3左右的年是不回老家过的。有一年在上海,我年前辞了职,但是决定不回家过年,一个人在上海过,年后再回家看父母。大年三十下午的时候在电脑上看那部著名的《辛德勒的名单》,看得呜哩哇啦的,电影太长,不知不觉到了晚上肚子饿了出去找吃的,一上街发现大部分饭店都关门了,才想起年三十这事。于是转半天发现还有一家便利店,买了一把挂面,回到出租屋找到一个鸡蛋,打了一起煮来就老干妈辣酱吃,继续看片。

年初一睡醒收到各类祝福短信,有关系好的朋友电话问年过的咋样?如实相告,皆叹我好惨。

我想半天没想明白,我自己觉得挺充实,看了《辛德勒的名单》这么牛B的电影,为啥你们又不是我,反而觉得我过得挺惨呢?后来随着年纪变大,明白过来了,其实很多人都有一种『我要是觉得这么过不舒服,你这么过肯定不舒服』的朴素情感的,尤其是我们这边自由主义者严重短缺的环境里。明白这点之后,我多年来不再跟人正经争辩我真不是很喜欢传统的过年方式这事,谢土豪除外。

我半开玩笑跟谢土豪说过年是陋习,其实我指的是我不喜传统过年那些仪式感,谢土豪大怒:你赶紧滚,不要再在中国呆了。

我爱我的父母,多年在外没照顾到他们,一直心有亏欠,好在父母都尊重子女选择,在我不太喜欢过年上面一直没什么矛盾出来,更多甚至是我妈劝我『不一定非要过年回来,又挤,车费又贵』。

我爱值得爱的亲戚,但是我认为我跟他们有各自完全独立的人生,甚至更多的是几乎没有交集的人生。

我虽然有1/3的年不是跟父母一起过的,但是这些年来我还是非常乐意选择在不是春节的时候回家,那些不在春节跟父母独处的日子,是我四十年来,跟父母在一起最美好的时光。

2013年秋天,因为事业上的迷茫,我正好空出半年还多的时间,那一年经常回家看父母。有一次跟父母驱车几百公里到我从未到过的舅舅家,外婆过世多年,村里年轻人都外出务工了,山里寂静得只能听到蛐蛐的叫声,外面雨淅淅沥沥下不停,老人们在木楼里围着炭火聊天,我妈讲她们年轻时候的事,开心时大家的笑声一阵阵充满木楼,讲到难过处,老太婆们一起抹眼泪。。。那种亲人间的感觉好过我目前为止过的任何一个年。

另外,我并不是所有中国传统节日都厌恶,比如我就愿意过清明节,除了可以上山,还有就是,面对墓碑,那种回头看旧事的感觉,实在让人难忘。

就算是春节,我并非是以一种抗争的姿态,我其实也是过的。我只是不喜欢那些繁杂的仪式感,并且,一年一度路上拥挤堵塞给我造成痛苦实在是让我觉得没必要。。。又不是见不着,我可以选择不在春节的时候跟父母团聚。这并不是站着说话不腰疼的意思,当然有人是没法请假之类的,只能在那个时间里去,我也是理解的,我都说了,这并非一种抗争,只是我的个人选择罢了。

再往后,儿子长大了,在他未成年的期间,要是他很喜欢过年,我猜小孩子应该都喜欢吧,我还是愿意配合的,然而等他长大成人后,我们又是各自独立的人生,他愿意过就过,我不愿意折腾就不折腾,不过那时候我可能已经老得小便都困难了。

当在浏览器上直接打印时发现一个问题,页面上所有的超链接都会自动加上一个括号再列出URL,这个可真是难看。。。

查了下资料:http://alistapart.com/article/goingtoprint

简单粗暴的做法有二:

1、去bootstrap里把如下代码注释或移除掉

a[href]:after { content: " (" attr(href) ")"; }

2、在自己的css里重写如上属性。

3、在引用css的地方加上media="screen",后果是打印的时候失去所有css样式,当然,如果页面不特别为打印做优化,尤其是响应式页面,就算打印的时候css样式起作用,效果也好不到哪里去。

小型站点的全文检索,Django-haystack+Whoosh+Jieba(若是中文),是一个好的方案,刚开始打算用Sphinx(不是那个文档系统)或者Lucene来实现,N年前做某大型钢铁交易平台时用的是Sphinx,但发现了django-haystack,对一个中小网站来说足够了。

在观测性能的时候发现一个现象,就是检索查询结果的时候大量的请求数据库,而且是随着数据的增多,连接数越来越多。。。这可不成啊,虽然不是大网站,但是性能问题还是要考虑滴。

解决方案:

在查询的模板HTML文件里,不要使用系统的ORM对象,比如{{ object.user.girl_friend.the_best_friend.cup_size }}这种对象写在模板里,是万万要不得的,这会直接向多个数据表请求数据,哪怕你用了select_related,你打开查看sql语句看一下,那sql语句的数量会让你内牛满面的。

那怎么办呢?

想好搜索结果,直接在search_indexes.py里合成成html片段,search.html(假设你的查询模板叫这个名字)里只使用search_indexes.py里的索引字段来返回查询结果,就ok了。

python manage.py makemessages,如果报如标题的错误,Mac上执行如下命令即可:

brew link gettext --force

ref: https://stackoverflow.com/questions/23353113/django-admin-py-makemessages-not-working

在一台台式机上装Ubuntu,Windows上有各种各样的ISO镜像工具来制作U盘启动盘,不想去再弄一台Windows折腾,发现unetbootin这个工具可以在Mac,很好用,比Windows上那些工具简洁多了,不错。

传送门:http://unetbootin.github.io/

当出现_Boost_MISSING_DEPENDENCIES字样,并报错error: cmake configuration failed!时,多半是没有安装boost库,若是Mac 执行以下安装命令再继续即可

brew install boost-python

---------------------- 补充 -----------------------------------------------------

在家里一台Ubuntu里安装的时候碰到了点麻烦,import dlib时一直报错:非法指令(核心已转储),

不巧Linux机器上没有梯子,然后家里长宽又很恶心各种IP和端口被限,很不方便。偷懒用百度查。。。奶奶的一个小时过去了毫无进展。

后来想起有个bing不用翻wall,点击进去居然发现有一个『国际版』,用英文关键字『dlib core dumped』查询,在第二条结果上找到了答案(github上的,第一条是stackoverflow.com,家里长宽点不进去)

https://github.com/davisking/dlib/issues/620

原来dlib默认用CPU SSE4指令集编译,是我的电脑CPU太老了的原因。。。

这样的话只能源码编译安装,不能pip了,到 https://github.com/davisking/dlib/ …

/media/upic/2017/09/06/newproduct.jpg

去年决定立项做一个精致有趣的小产品,因为30岁左右那会儿热衷过一段时间户外,加上佳光总部一直专业做LED的,我打电话给谢土豪问:我想做个露营灯,可以不?

谢土豪做了二十年的户外用品,LED手电和摄影三角架等器材,他电话里回答:搞!

这一搞,就是近一年,量产在即,记录并重新审视一下产品之路。

夹带的私货是,量产之后要销售,就算软文吧,我得让产品在互联网上留下痕迹,我发现我这个博客在百度上的排名高于公司官网,Google上则不然。

最近阿里云不停发邮件告诉我有N个『高危漏洞』,点击的时候却叫我购买一个什么鬼『云骑士』服务才可见。。。这是跟360学的么?

看了下他有7天试用期,点进去一看,尼玛,其实就是提醒yum升级:

yum update kernel yum update kernel-devel
/media/upic/2017/08/17/635923705961676641-1578771833_runner_main.jpg

停了两个月后,改公园里跑了,好像比在跑步机上受伤的情况有所缓解。

老严送的SUUNTO手表+APP记录,不再这里写了。

这里有很详细的说明了,

https://www.logcg.com/archives/1709.html

但是要注意一下,如果在./letsencrypt-auto那一步一直不成功(就算安装了python虚拟环境),有可能你用的是屌丝VPS内存不够,执行如下语句再试

user@webserver:~$ sudo fallocate -l 2G /tmp/swapfile user@webserver:~$ sudo chmod 600 /tmp/swapfile user@webserver:~$ sudo mkswap /tmp/swapfile user@webserver:~$ sudo swapon /tmp/swapfile

完成之后删除swapfile

user@webserver:~$ sudo swapoff /tmp/swapfile user@webserver:~$ …

懒得翻译了,反正按中文互联网上的什么改权限这的那的不管用折腾了好久,下面这段话save my ass.

I experienced the same problem and it was due to SELinux.

To check if SELinux is running:

# getenforce

To disable SELinux until next reboot:

可通过设置AppConfig的verbose_name实现,首先需创建apps.py文件,定义如下:

from django.apps import AppConfig class MyConfig(AppConfig): name = 'your name' verbose_name = 'your display name'

 

然后可以项目配置文件的INSTALL_APPS项中,把your app改为your app.MyConfig,或者在你的app的init.py定义default_app_config = ‘your app.MyConfig’

原来自己配完在init.py里忘记了。。。

感谢链接:http://blog.csdn.net/onepiece_dn/article/details/46046783

时间:30min 公里数:2.23km 方式:跑步机 体重:68.5 kg 最高时速:8.0 平均时速:4.46

备注:前面脚受伤,休息了近一个月,很担心因为这个受伤问题,习惯培养不起来,今天不再以时间为标杆,以心率为参照,超过160就降低速度。

细节不再描述,教程网上多的是,列几个坑:

1、1.9后,zh-cn, zh-tw被弃用,改为zh-hans(简体),zh-hant(繁体).

2、在locale文件夹里,中线要换成下划线,zh_hans,zh_hant,也就是讲,在用makemessages命令时,应该是这样的:

python manage.py makemessages -l zh_hans

python manage.py makemessages -l zh_hant

说多了都是泪。。。

3、每次执行python manage.py compilemessages命令时,要重启web server,尤其是生产环境,若像我一样用gunicorn,要重新执行一下gunicorn命令。

4、补充:第2点在Mac上是没问题的,但在CentOS 7上,要改成zh_Hans和zh_Hant,不能全小写。

5、Javascript内翻译请参考:

使用一句类似

results = MoorolProduct.objects.extra(select={'day': 'date(update_time)'}).values('day').annotate( records=Count('update_time')).filter(update_time__gte=begin)

的语句来统计数据,结果发现数据不对,查Sql语句,把Created_Time也Group By进去了,因为MoorolProduct这个Model默认通过Created_Time排序的。

results = MoorolProduct.objects.extra(select={'day': 'date(update_time)'}).values('day').annotate( records=Count('update_time')).filter(update_time__gte=begin).order_by()

加一个没有参数的order_by(),搞定之。

Django的发邮件程序在本机和以前买的境内阿里云ECS都可以以简单的配置,通过端口25发送邮件。因为本身用程序也不是发什么垃圾和绝密邮件,所以也不太在意,哪想新买的一个ECS死活发不出去。

1、先检查是不是因为是境外服务器的原因,换linode,在linode上没问题,排除之。

2、继续检查是不是邮件服务商拒绝来自境外服务器的请求,把coremail换到qq邮件(QQ邮件在这个博客上可以),还是发不了,排除之。

3、最后查半天发现是ECS把端口25封掉了。。。一个下午过去了,千万头草泥马从心头跑过。

4、既然找到问题所在,就换465端口吧,发现CentOS7不是用iptables来管理端口,是一个叫什么鬼firewalld的东西,折腾一会儿,启用了465端口,结果,还是不行,按https://bbs.aliyun.com/read/302371.html?spm=5176.bbsr302357.0.0.L8JNPj 的做法测试了下,卧槽,可以了,注:文章没说明,用CentOS的话,若报『Missing "nss-config-dir" variable. 』错误,要在/etc/mail.rc里增加另外一个配置set nss-config-dir=/etc/pki/nssdb

5、悲催的是,用Django的send_mail还是不行,但确定了肯定是Django这边的问题,跟端口没关系了,因为第4步的方法可以发送成功,重读文档:https://docs.djangoproject.com/en/1.11/topics/email/ 原来还要配置EMAIL_SSL_KEYFILE和EMAIL_SSL_CERTFILE,另外提醒一下,若是EMAIL_USE_TLS=True,一般默认端口不一定是465,要看你的邮件服务商的设置,比如我的是587,所以我们这里把EMAIL_USE_SSL配置成True

Google又时断时续,一直找不到怎么配置EMAIL_SSL_KEYFILE和EMAIL_SSL_CERTFILE,F**K GFW和方校长10的10次方遍.后来想了想,从字面意思上来看,应该就是openssl的pem证书,

openssl genrsa -out ca.key

openssl req -new -key …

时间:22min 公里数:1.43km 方式:跑步机 体重:69.25 kg 最高时速:6.0 * 2,6.0 * 1,6.0*1 平均时速:3.9

备注:因为脚受伤,休息了一周,现在得小心翼翼地跑,都不敢放开,都说受伤是跑步姿式不正确,可是怎么样才是正确的跑步姿式啊。。。跑完右脚踝又有点异样,哭。