小米电纸书,矛盾的产品

许久之前,就注意到小米要做电纸书的报道,开始还颇为期待。前些日子网上草图放出,看到那宽阔的边框后,已经颇为失望。
今天正式发布,更失望的是高价格和212的低ppi。
小米产品一向以低价格高指标吸引人,对标的往往是世面上流行的高端产品,电纸书自然是要跟亚马逊的kindle抢市场。但这次发布的电纸书,硬件指标上唯一压倒kindle的只有存储容量了,而这又和他们宣传的云端存储亮点相矛盾,虽说现在存储芯片价格跳水,但成本放在存储上实在浪费。
电纸书的高存储主要应对的是PDF、漫画等文件,而6寸屏加低ppi,看漫画及PDF文件绝无乐趣可言。
如果说这样的配置是为了看正版书,推广自家的多看云平台,但多看本身是提供客户端的,而客户端最受欢迎的应该是kindle版,那就不如买个低配低价口碑好的kindle,装上多看客户端,谁还会买小米自家的电纸书?
怎么看,小米电纸书,都是一个矛盾的产品。

小米多看电纸书发布:6寸212ppi背光墨水屏、16GB存储、大电池
https://m.mydrivers.com/newsview/657876.html?fr=kkj

捅破硬件数据传输窗户纸

经过近半天的摸索,终于将设备modbus的数据接收发送搞明白了。
两年前就曾经接触过,当时因为第一次接触硬件,也是一头雾水,后因为种种原因也就搁下了。
两年过去,再接触还是一头雾水。好在两年之间,网上相关的资料多了一些,再加上对某些技术关键细节进行了沟通,终于算是落实于理论,就等实际测试了。
学习新知识,理解自然重要,但和自己过往知识划清界限也是非常必要。经验主义要不得,否则总会时不时蹦出来捣乱,要么抵触,要么带偏。
还好,算是捅破一层窗户纸。

使用PostgreSQL的用户(Role)和密码登陆

PostgreSQL可以使用系统的用户进行登录,使用peer方式认证,这样设置较为简单。

如果使用PostgreSQL的用户(Role)和密码登陆,需要切换到postgres用户下,进行配置

sudo -i -u postgres

psql

create user mydata with encrypted password ‘123’; //如果pg_hba.conf设置为md5,需要加密

create database mydata;

grant all privileges on mydata to mydata;

这样就可以通过psql -h 127.0.0.1 -U mydata mydata -W进行登录。

昨日黄花cms

原先帮同事、朋友拾掇电脑,宁可重装,不愿意修修补补。而重装系统最麻烦的就是倒腾原先的数据。
最近几天把一个到期的云服务器网站,转移到新服务器上去。磕磕绊绊,终于算是有了一个还算满意的结果。
期间学了新知识,回顾了旧历程。
前段时间还回忆过当初cms的纷杂,现在看老的已是昨日黄花,新的也是遍地开花。
这一方面是信息更新太快,以采集、罗列、保存为主的旧式个人网站跟不上节奏,已经无存在的必要。另一方面,就是现在影音信息代替文字新闻成为主流,手机代替了电脑,大流量,快节奏,一切都在变快。

django中ImageField图片上传更名

在django的models中的图片字段,按照时间归档到设定的media静态目录下,并自动更名。
from django.db import models
import os
import time
def update_filename(instance, filename):
    path = ‘image/book/’+time.strftime(“%Y/%m”,time.localtime())
    ext = filename.split(‘.’)[-1]
    unix_time = int(time.time())
    format = str(unix_time)+’.’+ext
    return os.path.join(path, format)
class Book(models.Model):
    title = models.CharField(max_length=100,verbose_name=’书籍名称’)
    publishDate = models.DateField()
    image = models.ImageField(default=’image/book.png’, upload_to=update_filename, verbose_name=’封面’, max_length=100)
    publish = models.ForeignKey(Publish,on_delete=models.CASCADE,verbose_name=’出版社’)
    author = models.ManyToManyField(Author,verbose_name=’作者’)
    class Meta:
        verbose_name_plural = ‘书籍’
        verbose_name = ‘书籍’
    def __str__(self):
        return self.title

文字识别初试

上次笔记本罢工前,是想用它测试一下深度学习框架的文字识别,以为它狗狗都能跑起来,没想到吓得罢工了。

后来重装系统后,安装好框架运行那个文字识别系统,结果直接提示out of memory,换矿卡机登场,运行一会之后同样提示后退出。

看来罢工是有原因的。

高级的搞不定,就用现成的。申请了百度的文字识别功能接口,用一张未调整的手机拍摄书页做测试,效果出奇的好。

毕竟百度的免费文字识别有期限,又测试了一下pytesseract,这个也算是出身名门,但对手机拍摄未经处理的图片中的文字识别率差了点。又换成扫描仪扫描的文档,效果立马提升到百度ocr的档次,但是后台运行系统的老笔记本风扇噪音骤起,看了一下cpu占用,linux下到了380%多,应该是四核都快满载了。

最后用百度的ocr处理了扫描完的电子文档,速度很快,效果已经非常满意。毕竟那些文档的清晰度,再想想扫描的过程,不提也罢。

本来为了提高扫描质量,在后期使用了百度文字识别的高精度版,也是书籍的纸张差了点,ocr出来的文字,居然把很多背面的文字给模糊识别出来了,真是晕了…

 

django2.2安装填坑记

因为近日有个工作需要快速录入,所以又想起django来了,准备使用xadmin提高效率,但没想到一个坑接着一个坑。

安装xadmin

安装xadmin的时候不要使用默认的pip install xadmin,因为它会二话不说就把某django1.x版本给装上,使用: pip3 install git+git://github.com/sshwsfc/xadmin.git@django2安装完毕。

安装数据库

安装mysql数据库的时候出现症状,总是提示’mysqlclient 1.3.13 or newer is required’,到网上一查,已经成为公害了,解决办法需要修改诸多文件,本来就像换Postgresql,所以直接安装psycopg2后,设置setting文件,比照mysql,只是后面参数增加了:

client_encoding: ‘UTF8’,
default_transaction_isolation: ‘read committed’

然后:

python manage.py migrate

python manage.py createsuperuser

数据库就建立完毕了,比mysql可是简单多了。

设置xadmin

修改setting.py文件,将xadmin和crispy_forms添加到INSTALLED_APPS中

修改urls.py文件,把原先admin前面加个x解决。

然后将xadmin一股脑clone到static目录下,setting.py中debug设为Ture,LANGUAGE_CODE = ‘zh-hans’,TIME_ZONE = ‘Asia/Shanghai’

启动后,正常进入后台,在添加组件的时候出错,修改项目中xadmin/views/dashborad.py中的render(),在render()中添加参数:renderer=None,即可解决。

久疏战阵被机欺

昨天中午把Acer笔记本整理的差不多,准备让它卖力了,结果吃过午饭出去活动一下的功夫,居然罢工了,死活不进桌面。
下午因为有事边没有再收拾它。晚上回想了一下,估计是昨天图省劲让虚拟机和主机共享文件夹,在机器休眠状态下导致硬盘错误。
今天想把系统升级,提示诸多文件错误,无法进行。一狠心把机器重装,安装传统的Ubuntu桌面版本,但安装之后,连启动都启动不起来了。本以为是老问题UEFI模式,但换成legacy依然不行,而且连win10的安装U盘都不识别了。
软的不行来硬的,拆开后盖检查换硬盘,结果发现这台机器空余着sata硬盘的地方,却没有相应的接口。
连番折腾,系统换了数次,一个下午搭进去了,最后决定再安装一次,大不了以后安装到U盘或者sd卡上,让硬盘当数据盘。按照最初的步骤,先把启动模式换成legacy,然后安装,安装完毕后再用U盘启动,关机,拔掉U盘,重新开机,结果Ubuntu的桌面显示出来了。
这时我才想起,买来机器第一次装机时就换成legacy模式了,那什么时候换成uefi的?
见鬼了。

解决狗狗对弈远程连接问题

前段时间组建矿卡机,给狗狗搭了窝之后,一直是通过远程桌面登录后,操控狗狗内斗。
虽然也觉得麻烦,但因为顺风顺水过来的,也就懒得再折腾调整。
昨天晚上等世界杯预选赛开赛前的空余时间,觉得老这么将就着也不是回事,sabaki和lizzie都是支持gtp协议的,只要通过协议获取数据,转化到棋盘上就是了。
于是开始着手解决。解决过程倒也顺利,ssh使用公钥登录矿卡机后,执行leelazero和katago带参数的命令行,就可以在win10的机器上运行sabaki对弈,或者通过lizzie分析棋局。期间唯一遇到的问题就是参数中的路径要使用绝对路径。
这样一来,操作更为简便,而且棋谱保存还有截图也不再更方便。更重要的是,以后可以实现不同机器间的引擎对弈,还有就是多客户端连接服务器对弈,当然,那需要更强劲的硬件了。

Python汉字字符编码转换

python下由于汉字分属不同unicode的区段,造成转换混乱,尤其是知网之类的pdf文件转换过程中。有时需要根据汉字来判断编码,然后再进行处理。

import json
s = ‘易易’
print(json.dumps(s))

这样可以得到不同的编码:”\u6613\uf9e0″。后一个属于中日韩统一表意文字。

同样

s =’\\u’+’f9e0′
ss = s.encode(‘utf-8’).decode(‘unicode_escape’)

这样可以得到编码对应的汉字。