使用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’)

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

弃儿firebird

那一次处理十万计数据的时候,第一次用到了firebird。因为有其他单位也需要那个程序,而access实在不堪用,而MySQL在Windows下跟Linux下的表现简直不像一个程序,所以选择了firebird的内嵌版,而那速度,堪称飞快。
很多年没有用firebird了,今天到网上看了一下,原先的中文网早已关闭,域名待售中。英文官网还不错,版本终于到了3.0版本,只不过相对于原先服务器版本还分classic和super,现在又加了一个superclassic。
firebird也算是出身名门,老东家Borland在90年代在编程软件领域一度压的微软喘不过气来。其前身是interbase,再往前寻祖还能和dbase沾上亲,而其兄弟delphi更是大名鼎鼎,当年其相关书籍在新华书店书架上阵势和现在的python相当。作为数据库,InterBase因为免费,一度受到各大财务软件的青睐,也因为性能优越,传奇私服的数据库也是用的它,所以我才可以熟门熟路地在老P的私人服务器上,给他打造了一身无上装备。
firebird是脱胎于InterBase的开源版本,但他的开源,说好听是是顺应潮流,说难听就是成了弃儿。Borland从顶峰崩坍式坠落后,其招牌delphi被一卖再卖,最后连名字都未能保住,何况已然落后数据库了。
互联网浪潮的到来,技术的剧变超出任何人的想象,无人能够阻挡,哪怕停留都会被吞没。

数据“大”转移

前几日将前期整理的数据文件,分解导入MySQL数据库中。使用全文检索,速度满意,但准确度有很大缺憾。
又在网上搜索了相关资料后,准备将资料转入postgresql数据库中再测试一下。先将数据导出,导入费劲,导出35万条记录却只是看看进度条快闪的时间。
但导入到postgresql中时遇到了麻烦,其官方推荐的客户端死活不干活,估计是认出文件不是自家导出的。于是换上dbeaver,误打误撞间,一个界面下,在不同数据库连接中,选择对应的表,鼠标点击几下,数据记录瞬间移形换位。
一方面意外dbeaver深藏不露的高效,另一方面也不得不感慨,这30多万条记录,即便在2g内存的虚拟机下,对于数据库而言,也是不值一提。
只是开始。