分类 Linux 下的文章

测试Blogilo1.0.1能否正常运行

从arch源里安装的blogilo不能正常运行,故尝试编译安装了1.0.1(kde4.4)自带的版本,看看是否正常。

插个图:

archlinux现阶段中文支持的几个暂时无解的问题

个人最近两月重装和使用中发现,作个笔记,防止今后踩雷,个人看法,未必正确,如有遗漏、误解,还请谅解,另外,如有转载,请注明作者和出处。

--by realasking

1.freetype2渲染中文字体,noto系列过淡,文泉驿和fandol过浓

2.freetype2-infinality和infinality-ultimate渲染,英文很好看,中文字体变形,特别是fandol,调整参数可部分解决

3.使用freetype2-infinality或infinality-ultimate后,sddm和kde部分字体和符号大小、间距不正常,比如sddm登录界面的开关机等符号,还有kimpanel上的符号,并且还会影响kimpanel的文字输入框,输入框会变高

4.kde5版本(master分支)的kimtoy会段错误,无法运行,但kde4分支的可以正常运行,只是其desktop文件中的“X-KDE-autostart-condition=kimtoyrc:behavior:AutostartKIMToy:false” 一行应删掉,不然启动不起来。

5.kimtoy可使用搜狗的皮肤,但是显示效果和搜狗输入法上的效果有区别

6.部分程序使用中文时会有部分汉字显示为日文字形,修改字体配置文件也没完全解决,也可能是没有把要改的地方都找到。

7.blogilo和fcitx、ibus有冲突,可视界面不能输入文字,而且上游貌似不愿改(https://bugs.kde.org/show_bug.cgi?id=376724 其中的Christoph Feck建议大家删除掉输入法)。

8.ibus-fbterm现在在tty下无法热键切换了,进入之后就是中文拼音,英文和符号输入都会有困难,而且候选框乱跳,并覆盖屏幕内容。

linux和win10双系统下坚果云同步文件夹设置在ntfs分区的同一个目录时遇到windows报告路径错误问题的解决

个人笔记,原始发布在坚果云论坛上,如有转载,请注明作者和出处。

——by realasking

以前注册的坚果云,但是一直没有使用,只是在linux下往一个ntfs分区建了个文件夹。最近想尝试用用,没想到遇到了两个问题,第一个是在需要网页认证的环境下坚果云开机启动报ssl错误,无法同步,刚刚已经往坚果云的邮箱发了包含log文件的邮件,在此不再赘述,第二个是期望减少同步流量和磁盘占用,而将两系统下的同步文件夹设成同一个遇到的错误,就是Windows下坚果云客户端会不断的启动、退出,然后报告路径有错,无法同步。

经过仔细检查,没有发现放入目录的文件有什么linux可用、而win不让用的字符,文件夹中也没有坚果云的什么配置文件,最后怀疑是否是目录本身的问题。于是就将目录中的文件先拷贝出来,然后删除该目录,并在windows下重建,再配置坚果云的同步文件夹并拷回文件。这么操作之后,第二个问题至此解决。

导致这个问题的看来是linux下ntfs-3g对ntfs分区的读写和windows10还是有所不同造成的,看来在ntfs分区上进行文件夹创建、修改还是尽量用windows本身更好。估计这么用坚果云的朋友可能不多,如果还有朋友也遇到类似问题,谨供参考吧,还是希望第一个问题能得到解决。

 

使用KeePassXC,KeePass2Android,坚果云和onedrive实现密码管理

个人笔记,如有转载,请注明作者和出处。

——by realasking

由于网络越来越深入自己的生活,身边的数字化设备也越来越多,很早以前,我就已经辗转腾挪于各种密码管理软件之中了,经过多次迁徙,一度停留在keepassx2上很长的时间。但是,该软件在linux下表现良好的同时,在windows下却缺少一些功能,比如不能实现在linux下一切正常的自动填充密码(Auto-fill),还有不能记忆授权文件,而且也缺乏网络同步的功能,随着密码数量的增加,感觉已经越来越难以为继了。

于是我决定换一款软件试试,但是必须是继续保持原有的数据库格式(keepass2格式)。这期间,尝试了多款兼容产品,也重新尝试了keepass的原始版本,但是都不那么令人满意,直到找到了keepassxc。相比于keepassx和keepassxc,其实原始的keepass是更为强大的,比如它可以直接通过webdav打开网上保存的数据库文件,可以直接auto-type输入对应网站的密码而不需要人工选择(auto-fill),再比如可以加上插件,但是它的问题和它的强大一样令人印象深刻,比如它的auto-type对于不少国内网站都是失效的,按下热键常常并不能自动输入密码,还有有时明明已经点击页面user框,但填充密码却出现在浏览器的搜索框中,它的webdav操作坚果云也似乎还不如坚果云客户端直接对文件增量同步来的快,而chromeIPass的输入一次密码自动保存也时灵时不灵,特别是对一些不那么标准的登录框......经过几天折腾,我不得不怀着复杂的感情,暂时放弃了它,也许它确实代表了未来,但现在显然还不完善。

折腾keepass之后,问题似乎又回到了原点,不过网上关于keepass的用网盘保存密码数据库的思路还是可以借鉴的。冷静的想想,其实在增量同步的前提下,虽然手机可以籍由webdav减少传输数据并提升网络安全,但电脑间同步似乎并不一定要如此,特别是个人使用,网速又较快的情况下,同步产生多个无法合并副本的概率应该不大,那么,我们完全可以直接用网盘保存密码数据库,并同步到本地打开,对于手机,依旧打开webdav,虽然不像完全使用webdav看上去那么美好,但只要放置好自己的数据库,其实也无伤大雅。

但是keepassx2不能在windows10下实现auto fill的问题一定得解决,不然老是使用复制密码的做法,在周围有多人一起办公的情况下,因为ditto、欧路词典等工具的使用,很容易造成无意间的密码泄漏。在到处搜索中,最后从archlinux的wiki上看到了keepassxc,在linux下试用了一下,它的功能与keepassx差不多,那么在win10下呢?将它也安装到win10上之后,发现虽然它界面汉化不如keepassx,但是功能上却都是完好的,包括授权文件的记忆,auto-fill的实现,都是完好的,那么,就是它了。

基于授权文件(key file)的重要性,把它和数据库放在同一个网盘上显然是不合适的,由于它一般不会频繁替换,所以保存它的网盘也不需要有那么高的访问速度了,有鉴于此,最终我确定下来用坚果云建立同步文件夹保存并同步密码数据库文件、以onedrive保存并同步授权文件、以KeePassXC替代KeePassX2在电脑上管理密码和用KeePass2Android在手机上通过webdav管理密码的方案。

具体实施如下:

linux下:

1.安装keepassxc:

yaourt -R keepassx2

yaourt -S keepassxc

2.生成授权文件:

打开keepassxc,并打开数据库,然后点击database->更改主密码,修改密码,勾选密钥文件,点击创建,将其保存到onedrive的同步目录下(我的是双系统,重启进入windows后会完成同步,现在由于微软的调整,非ntfs格式分区下已经不能与onedrive同步了,所以linux下的同步工具onedrive-d也已经失效)

3.配置数据库同步和webdav:

用浏览器访问坚果云,点击登录,点击用户名窗口,打开keepassxc,点选坚果云的用户Entry,然后按下Ctrl+v,登录坚果云。这一步要注意,不要处于中文输入状态。

登录后,点击窗口左侧创建->新建个人文件夹,完成后将数据库上传到新建的文件夹中,与网上一些只使用webdav的方案不同,这里需要保证文件能同步到本地。

点击右上角自己的用户名,点击账户信息->安全选项,在第三方应用管理中添加应用密码,应用名可以起为keepass。

然后记录下生成的密码,记录下服务器地址,账户。

4.在系统弹出的坚果云的提示信息指引下,设置一个放置密码数据库的同步文件夹。

5.删除本地原有的密码数据库,并重新打开keepassxc,打开从坚果云上同步下来的数据库,其授权文件选择第2步生成的。

windows下:

1.下载并安装keepassxc

2.在坚果云提示信息指引下配置一个放置密码数据库的同步文件夹

3.打开keepassxc,添加授权文件,打开数据库,并等待onedrive同步完成

手机下:

1.安装onedrive for android,并同步授权文件

1.用谷歌市场或APKPure安装KeePass2Android

2.打开文件时选择https(webdav)那一项,选择认证方式那里选密码加授权文件

3.文件地址填坚果云给出的那个地址加上/你创建的文件夹/你的数据库名,授权文件点系统文件,然后选从onedrive上同步下来那个授权文件

4.点击三个竖点那个按钮,点击设置

5.点击应用程序->安全,勾选在锁屏时锁定,离开应用时锁定,记忆数据库,保存密钥文件,然后返回

6.确保快速解锁项目均被勾选

7.返回

8.点击数据库,点击指纹解锁,选择启用完整的指纹解锁,设置完成后返回

9.点击将密钥文件导入到内部文件夹

然后一路返回,在快速解锁那里关闭数据库即可。

至此,手机和电脑的设置全部完成,密码可以半自动的管理了。

python工程的打包和发布

个人笔记,如有转载,请注明出处。

——by realasking

最近弄的essential-pathway是我第一次直接发布自己写的小程序,通过折腾这个东西,对纯python程序包的打包和发布有了一定的了解,故作个记录,备忘。

python程序打包的时候,要将库和执行脚本或程序分开放,同时还要有一些其它定义文件,从工程目录开始,按目录结构,其文件和放置顺序如下:

1.工程目录

此目录下要放置至少两个文件夹和若干文件,两个文件夹分别是bin和以库命名的文件夹(假定为A),其中bin/下放置可执行文件或脚本b,A下放置作为库的.py文件,此外还可以建立文件夹放置非代码的数据文件c等。

此目录下除文件夹之外的其它文件包括但不仅限于setup.py,MANIFEST.in,LICENSE,README.md,requirements.txt , changelog.md。

1-1 setup.py

setup.py应当包含形如以下一些内容:

#!/usr/bin/env python
from setuptools import setup, find_packages

with open('README.md') as buff:
longdes = buff.read()

with open('changelog.md') as buff:
longdes += buff.read()

CLASSIFIERS = [
'Programming Language :: Python :: 3',
'Topic :: Utilities',
'License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)',
'Development Status :: 5 - Production/Stable',
]

setup(
name='工程名',
version='版本号',
keywords=['关键字1','关键字2'],
description='简单说明',
long_description=longdes,
author='realasking',
author_email='[email protected],[email protected]',
url='项目发布地址',
packages=find_packages(),
include_package_data=True,
install_requires=['在python中的依赖包'],
scripts=['bin/b'],
platforms=['linux','cygwin','freebsd','Unix'],
classifiers=CLASSIFIERS,
)

该文件中,setup()区域内,有很多参数都要求使用list,比如keywords,install_requires, scripts,platforms和classifiers等,不然可能会报不是对象的错误。

其中引用的README.md是说明文件,如果发布在github上,可以采用markdown格式;

changelog是程序更新历史文件,是一个简单的文本文件。

CLASSIFIERS的可选内容可以在pypi查到,根据需要选择即可,其中“License :: OSI Approved :: ”指代的协议内容可以到OSI 查询,无论使用哪个,应当将所选协议内容拷贝到LICENSE文件中,随软件包发布。

url的指向自己项目要发布的地方,可以先申请下来填在这里

scripts就是可执行文件的列表了,这里面的文件在安装时会安装到指定的程序运行路径中去,如果是脚本文件,只要文件中开头指定了正确的解释器,比如#!/bin/bash或#!/bin/env python之类,文件本身可以没有扩展名。如果要包含数据文件,最好不要在setup.py中设置,而是在MANIFEST.in文件中设置。

platforms是脚本可以支持的平台,可以在python文档 中查询。

如果有数据文件时,在MANIFEST.in中设置了数据文件的情况下,数据文件不能安装到系统中,则应该删除掉“include_package_data=True, ”这一行语句。

1-2 MANIFEST.in

这是用来包含杂项文件的一个文件定义,其内容类似下方定义:

include changelog.md  LICENSE README.md  requirements.txt
recursive-include bin *.*
recursive-include A *.*

如果要添加数据文件,可以将如下语句添加:

include 数据文件相对路径/数据文件

然后在python的脚本中使用数据文件时:

import os
this_dir, this_filename = os.path.split(__file__)
DATA_PATH = os.path.join(this_dir, "data", "data.txt")
print open(DATA_PATH).read()

此法来自于stackoverflow 。

1-3 requirements.txt

其中填写python依赖包,一行一个。

2.目录A下

包含至少如下文件:一个__init__.py文件,和若干.py结尾的python库(比如aa.py,bb.py,cc.py)的脚本文件

2-1 __init__.py形如以下所示:

#!/usr/bin/env python
__all__=["aa","bb","cc"]
from . import aa
from . import bb
from . import cc

__name__='项目名'
__version__ = '版本号'
__short_description__ = '短描述'
__author__ = 'realasking'
__author_email__ ='<[email protected],[email protected]>'
__license__ = '协议'

__all__是用于在程序调用库的时候使用from A import aa之类的用法而指定的,而from . import aa之类则是准许程序调用库时直接用import A导入整个库。

2-2库文件编写时的注意事项

以aa.py为例,如果其中定义了新的class,那么class应当使用aa以外的名字,否则在其它程序调用库中aa来产生一个实例的时候,就需要用:

import A

II=A.aa.aa()

这样的形式,若将class命名为ab,则清楚很多:

import A

II=A.aa.ab()

另外,一个文件中写多个class的时候,import 可以写在所有class开始定义之前,而若bb.py要调用aa.py中的class,则在bb的import段书写from A import aa之类的即可。

这一切都完成之后,就是打包发布了,python程序的发布,可以直接发布到pypi上,也可以先发布到一个代码托管平台,比如github,github平台上新建项目和发布方法可见git初步使用 ,也可以使用我做的一个简单脚本giteasy 。

3使用pypi

对于python的程序,即使在github上发布过,也最好提交到pypi上,这样能够通过pip之类的工具被人自动的获取和安装,pypi的使用和程序提交过程如下。

3-1注册

进入pypi首页 ,点击右边的register链接,输入用户名,密码和邮箱地址,然后到自己的邮箱中进行验证即可,如果需要使用pgp或gpg key,相关key需要先提交到公共服务器上,具体操作见阮一峰:GPG入门教程 。

3-2提交程序

python setup.py register

然后输入用户名和密码。

python setup.py sdist upload

即可。

另一个更安全的方法:

pip install twine

twine register dist/包名.whl

twine upload dist/*

至于详细的文献资料,python官方文档 就十分不错。

最新文章

最近回复

  • realasking: 哪里的话,还要非常感...
  • cnfczn: 发送留言报错:in_...
  • cnfczn: 大狮兄666,以前经...
  • realasking: 最近还行啊,就是上网...
  • cnfczn: 大狮兄,好久不见啊....
  • realasking: 您好。有什么问题就在...
  • Eric Chen: 作者你好!最近折腾中...

分类

归档

其它