archlinux/manjaro 下 安装 qq/tim

参考资料:install qq/tim on linux with wine

wine运行qq不能输入账号

This tutorial introduces how to install QQ/TIM in Linux with Wine, which had been tested on ArchLinux with Wine 2.4.

Prerequisites

Before start, you need to get the latest Wine. I’m not sure whether QQ/TIM can run on lower version of Wine. In ArchLinux, you can easily get the latest Wine using following command:

?

However, in Debian, you need to install Wine with some more steps. You can see this tutorial.

Then, you need to install a helper of Wine, Winetricks. Winetricks is a script to download and install various redistributable runtime libraries needed to run some programs in Wine. To install Winetricks, you can use following command:

 

After that, we need to fix some problems manually caused by Winetricks. According to this Bug Report, we need to download  W2KSP4_EN.EXE from other mirror sites:

Similarly, we need to download  InstMsiW.exe manually:

 

Initialize Wine Environment

To create a 32-bit WINE system, you need to open a terminal and run the following command:

 

Then you need to run  winecfg in terminal and change Windows version to  Windows 7.

Install Core Fonts

Next, we are going to install essential fonts for Wine.

where  corefonts stands for MS Arial, Courier, Times fonts, and  cjkfonts denotes all Chinese, Japanese and Korean fonts and alias.

Install Windows Components

Then, we need to install components which are need by QQ / TIM.

where  msxml6 represents MS XML Core Services 6.0 SP1,  riched20 and  riched30 mean MS RichEdit Control 2.0 and MS RichEdit Control 3.0 respectively, and  vcrun6 is Visual C++ 6 SP4 libraries.

You are supposed to be asked to fill in information during the MSXML6 installation.

Install QQ / TIM

In this section, we are about to install QQ / TIM. We are assume that you have already get installers from official website. Run your installer with following command:

In this tutorial, we use TIM installer as an example:

Please be patient and ignore following error message in terminal:

1
[8:142:0322/131343:4128351:ERROR:qd_helper.cpp(234)] 328 Status: 2

An instance of QQ / TIM will automatically started after installation finished.

Due to security check of QQ / TIM, QQ cannot start normally when you restart your PC. We need to apply a patch to remove security check components. You can download this patch from this link or search “QQ安全校验补丁” from the Internet.

After unzip this patch, use following commands to apply this patch:

 

Create Shortcut

Now you can start QQ using following commands:

 

In order to start up QQ / TIM, you can create a desktop entry in  /usr/share/applications/TIM.desktopas follows:

 

Enjoy!

 

遇到了无法输入账号的bug(但是可以输入密码)

解决办法是:

 

windows10 安装笔记

感觉其实windows系统的使用成本太高,而且需要的水平也很高…在linux只要小心一点,不懂的命令别乱输入就问题不大了…而且出了问题,稍微查一查也就解决了…但是win下,我已经遇到三次了,自动更新直接卡死的,而且关机的时候一弄就要等半个小时自动更新….或者开机的时候也要等…我觉得…好xx的设计啊。。。而且坑的是。。。自己也无法解决。。。直接卡死。。。

还有一点是垃圾软件。。。我真不知道使用win需要多高的水平才能远离那些奇怪的软件。。。

明明已经很小心的在用了…可还是不知道怎么被安装了各种垃圾软件…

然后发现win10有个恢复的功能还不错,于是决定,重要的文件随时备份,然后每做完一段需要win的任务以后,就重置系统。基于这样的原因,记录一下win10能正常工作所需要安装的最少软件。

libgfortran.so.4 missing under archlinux

。。。哭了哦。。终于解决了这个bug

参考资料:

libgfortran broken?

libgfortran=3.0 should not be install with numpy <= 1.9

[SOLVED] libgfortran.so.3:cannot open shared object file: No such file

Replacing gcc-libs-libs with gcc-multilib [arch

conflict with gcc-libs and gcc-libs-multilib on latest update

一开始以为是anaconda相关。。。搞了半天。。。

然后又按照第一个资料里。。。试图把libgfortran用libgcc替代。。

发现删掉libgfortran会同时删掉scripy…

然后又觉得。。或许是scripy有什么问题?

查了一会也没发现什么。。。

后来又想也许是dlib的问题?

看了下dlib的github,说是pip 的安装方式可能存在问题,我又用源码安装了一边,问题依旧….

然后本来打算睡觉了。。。

突然梦到。。。也许是arch的问题呢。。。

一搜果然是。。。MGJ。。。这bug出现的时间。。。貌似是2017年5月30号以后。。。(具体参照最后一个资料的日期。。。

而且这。。。谁能想到是arch的锅啊。。。更别说是这么新鲜的bug…

所以说arch是不是不适合跑深度学习,做科学计算之类的啊orz….

最后说下解决办法:

 

manjaro installation guide

20180214 update:

第一个版本已经比较久了,于是更新一下,顺便写了个脚本orz

 

出于目前对manjaro的依赖,以及没有找到很简单易行的备份系统的方案的原因,决定详细记录一下系统安装的过程,以防哪天系统挂掉了,可以快速恢复。

1.关于更换源

坑点主要在系统默认的源是国外源,如何切换成中国源,网上有很多教程,但这些教程都是针对Arch的,弄来弄去也很不容易搞好,而且胡乱修改会把Manjaro的源破坏掉(不要问我怎么知道的)。
其实网上有个blog的方法很方便,附上连接

就两行命令搞定:

2.安装搜狗输入法

具体为,安装fcitx,安装fcitx-sogoupinyin,安装kcm-fcitx

然后

~/.xprofile 文件中添加如下内容

由于初始安装系统时选择的是英文,在安装搜狗输入法之前先安装了chrome,导致在chrome中无法输入中文(而在firefox中可以),解决办法时,删除掉.config中google-chrome文件夹即可

3 添加archlinuxcn源

/etc/pacman.conf 文件末尾添加以下两行:

之后安装 archlinuxcn-keyring 包以导入 GPG key。

4 添加arch4edu源

在/etc/pacman.conf 文件末尾添加

 

5 安装常用软件()

  • guake
  • fish
  • vim
  • shadowsockq-qt5
  • google-chrome
  • wget,aria2
  • franz,telegram-desktop
  • remarkable (markdown编辑器,轻量级)

 

 

6.proxychains-ng

 

就很气,配置文件经常失效,再记录一份好了

 

7 vim 配置

 

8修改键盘映射

9安装中文字体:

 

  1. anaconda with fish

anaconda 默认的环境变量是bash,对于fish,需要修改~/.config/fish/config.fish 如下

 

11 youcompleteme

 

12.关于vim 剪贴板的问题

How do I use the system clipboard with Vim in Arch Linux?

uninstall vim,install gvim,and use vim instead of gvim

 

13 vim 配色文件molokai.vim(透明背景修改

 

conda升级anaconda ValueError的解决办法

查到了这个:anaconda update issue

I have narrowed this down to the following packages:

package build
psutil-1.2.1 py27_0 hard-link
pycparser-2.10 py27_0 hard-link
pykit-0.1.0 np18py27_2 hard-link
pyparsing-2.0.1 py27_0 hard-link

by calling “conda install anaconda” and then successfully installing everything else one at a time.
These four packages consistently exhibit the described behaviour.
(note: pykit depends on pycparser so may itself be ok – can’t tell)

 

我先把psutil卸载掉,重新update了一下,成功。

 

数字图像处理大作业(初步)

…先随便记录一下好了。。。

  • 神经网络识别数字或者字母?
  • 识别车牌号?
  • not hot dog?

 

 

安装python pandas pandas

发现之前装caffe的时候…装了这个东西。。。

但是就是检测不到?于是卸载重装。。。。

需要注意的是,如果是python2,要用pip2 install pandas,如果是python3,要用pip3 install pandas.

 

安装tensorflow…直接sudo pacman -Syu python-tensorflow 即可。。。

然后装好之后检测不到orz…感觉还是pip的安装方式比较靠谱。。。

pip2 install tensorflow

tensorflow_pip安装

我的环境是python2.7

安装成功。。然后发现。。numpy挂了(?????

 

SO上给出的建议

感觉之后还会各种遇到不同python版本导致的问题。。。。那就上anaconda好了。。。

试了anaconda…想法挺好。。但是貌似还不成熟.。。比如用anaconda安装numpy会报错orz..

最后解决办法是。。。卸载了python-numpy以及所有依赖python-numpy的a包;卸载了python2-numpy以及所有a依赖python2-numpy的包

然后重新安装了python2-numpy

以及发现。。。还有些坑是shellaa相关的.。。y所以暂时不要用fish了。。。

 

然后提示Missing required dependencies [‘dateutil’]

解决办法是安装python2-datautil

以及各种pip安装。。都记得要pip2而不是pip

中间缺少一堆库。。。大部分直接安装就好了。。。记得要安装python2对应的版本。。。

然后对于ImportError: No module named tensorboard.plugins

解决办法 是将tensorflow升级到1.0以上(安装之后的版本默认为0.1)

sudo proxychains4 pip2 install tensorflow –upgrade

 

 

 

 

 

 

 

vim下python 的配置

由于最近要做数字图像处理的大作业,以及之后一段时间,估计写python多一些,所以打算花些时间配置下vim.

1. 一键执行

其实之前一直有的。。不过没有效果,就没有管。发现问题是,python对应的filetype为”python”,而不是”py”

2.代码补全

不想折腾了。。既然ycm也支持python,就先用用看好了。。不行再换别的。

放一段ycm for python的配置文件

3. 语法检查

Syntastic大家都知道了。。。。看到了异步检测插件ALE,打算试一下。

ale_github

需要注意的是,这个插件需要vim 8.0+的特性。。。

放一波配置文件

4. 编程提示(jedi-vim)

 据说是vim写python的神器。。。装来看看。。。

据说默认配置就够了,先不折腾了

 

 

 

 

 

 

 

vundle error detected while processing function

好久没装新插件了,最新要配下python,发现安装时候满屏的错误。。。

最后发现是shell的锅,因为我用的是fish,在.vimrc文件中添加

即可。

以及说下可能的其他原因,虽然我没遇到

  • 对于arch系,可能从aur中安装的版本out ot data
  • 可能没有把.vimrc中vundle的配置从set rtp+=~/.vim/bundle/vundle更新成set rtp+=~/.vim/bundle/vundle.vim
  • 可能项目名称用了” 而不是’

 

 

以及顺手查了下bundle和Plugin的区别。。。

简单来说。。Plugin是新写法,bundle是正在被淘汰的写法,不过由于兼容性的原因,仍然在使用。。。

以后使用plugin的写法就好。

参考资料

 

边界的链码,归一化链码,差分玛,形状数

复习一下数字图像处理。

按照我自己的理解简单来说:

原链码:按照任意起点走边界一周,方向按照上图对应的表示,得到的数字序列就是原链码。

归一化链码:为了解决原链码中起点不唯一而产生的序列不唯一的问题,规定,对于所有起点得到的原链码中,字典序最小的即为归一化链码(由于序列都是自然数,因此字典序最小也可以理解成,把该序列看成有前导0的自然数之后的数值之后的数值最小。

差分码:为了解决图形旋转之后,原链码和归一化链码都会发生变化,引入差分码。n位原链码(或归一化链码,由于归一化链码只是一种特殊的原链码,之后不再单独强调)可以得到n-1位差分码。具体来说,对于原链码a[i](i属于1..n),可以得到差分码b[i],b[i] = ((a[i+1] – a[i])+mod)%mod(i属于1..n-1),mod根据实际有几个方向决定,通常为4或者8。

形状数:需要强调的是,形状数也是一个序列,而不是一个数。其实形状数就是把差分码按照字典序排序之后,最小的序列。形状数的阶数是该序列的长度。

 

Freeman链码(弗雷曼链码)是指用曲线起始点的坐标和边界点方向代码来描述曲线或边界的方法,常被用来在图像处理、计算机图形学、模式识别等领域中表示曲线和区域边界。它是一种边界的编码表示法,用边界方向作为编码依据,为简化边界的描述,一般描述的是边界点集。

常用的链码按照中心像素点邻接方向个数的不同,分为4连通链码和8连通链码。4连通链码的邻接点有4个,分别在中心点的上、下、左和右。8连通链码比4连通链码增加了4个斜方向,因为任意一个像素周围均有8个邻接点,而8连通链码正好与像素点的实际情况相符,能够准确地描述中心像素点与其邻接点的信息。因此,8连通链码的使用相对较多。

(a)四方向链码的方向符;                       (b)八方向链码的方向符。

八链码如下:

1. 链码的定义

按照水平、垂直和两条对角线方向,可以为相邻的两个像素点定义4个方向符:0、1、2、3,分别表示0°、90°、180°和270°四个方向。同样,也可以定义8个方向符:0、1、2、3、4、5、6、7。链码就是用线段的起点加上由这几个方向符所构成的一组数列,通常称之为Freeman链码。用Freeman链码表示曲线时需要曲线的起点,对8链码而言,奇数码和偶数码的对应线段长度不等,规定偶数码单位长度为1,奇数码的单位长度为1.414。

2. 曲线的链码表示

(1)原链码  从边界(曲线)起点S开始,按顺时针方向观察每一线段走向,并用相应的指向符表示,结果就形成表示该边界(曲线)的数码序列,称为原链码,表示为

其中,S表示边界(曲线)的起点坐标,N=4或8时分别表示四链码和八链码。当边界(曲线)闭合时,会回到起点,S可省略。

(2)归一化链码

原链码具有平移不变性(平移时不改变指向符),但当改变起点S时,会得到不同的链码表示,即不具备唯一性。为此可引入归一化链码,其方法是:

对于闭合边界,任选一起点S得到原链码,将链码看作由各方向数构成的n位自然数,将该码按一个方向循环,使其构成的n位自然数最小,此时就形成起点唯一的链码,称为归一化链码,也称为规格化链码。我们将这样转换后所对应的链码起点作为这个边界的归—化链码的起点。

(3)链码的旋转归一化

用链码表示给定目标的边界时,如果目标平移,链码不会发生变化。

但是,如果目标旋转则链码会发生变化。为了得到具有旋转不变性的链码,我们可定义所谓的差分码。链码对应的差分码定义为:

对差分码进行(起点)归一化,就可得到归一化(唯一)的差分码,它具有平移和旋转不变性,也具有唯一性。

3. 边界的形状数表示

由于归一化的差分码既具有唯一性,也具有目标物平移和旋转不变性,因此可用来表示边界,称为形状数。形状数序列的长度(位数)称为形状数的阶,它可作为闭合边界的周长。

如上图所示的目标边界,其

原链码为:42120606454                   ,

差分码为 :   6716626617               ,

形状数:         1662661767               ,

形状数的阶为10 。

 

 

 

参考资料:

图像形状特征(三)–链码及形状数

中南大学_第7章 目标表达和描述技术

 

qt 5.x 初探 (5) 

qt_5.9_ui_doc

还是比直接写代码方便点。。。所以不妨学习一个!

以及。。。qt在2017年6月1号发布了5.9。。。所以之前是5.8。。。现在变成5.9了。。。

遇到了修改了ui文件却没有生效的问题。。。

解决办法:

 

时间测试的qt方法。。。

 

qt 5.x初探 (4) qt 在win下打包成exe

des的基本搞定了。。。打包。。。

在linux下打包成exe。。。。实在是。。没什么好办法的样子。。。

嘛。转念一想。老师说是打包成可执行文件。。。没说一定是exe啊。。。

然后也许我就零分了呢2333

 

des1.0

 

好了。。我又跑到windows下装了个qt…安装包2.3G,记得要安装编译器…

装好以后。。。开始打包。。。

注意区分:

Qt Widgets Application 和 Qt Quick Application

我的是后者。。。打包方式略有不同。。。

下面引用了详细步骤。。我来说下简略步骤好了。。。

  • 将creator选到release的部署模式。。然后编译。。。
  • 将exe文件单独拷贝出来,放到一个文件夹。。。
  • 运行qt的命令行(不是系统的命令行!)
  • 在qt的命令行中运行windeployqt helloqml.exe –qmldir C:\Qt\Qt5.4.0\5.4\mingw491_32\qml(其中qmldir后面换为qml的真实路径)

 

顺便吐槽这工具有点智障。。。文件夹选项不显示后缀名就找不到helloqml  也是有毒。。。

 

 

 

 

Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,
如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行。
因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe。
以官方 Qt 5.4.0+MinGW 开发环境为例,
从开始菜单–》Qt 5.4.0–》5.4–》MinGW 4.9 (32-bit)–》Qt 5.4 for Desktop (MinGW 4.9 32 bit),可以打开 Qt 命令行,从这里就可以执行 windeployqt 工具。

集成开发环境 QtCreator 目前生成图形界面程序 exe 大致可以分为两类:
Qt Widgets Application 和 Qt Quick Application。
下面分别介绍这两类exe 的发布方式。

1、Qt Widgets Application可执行程序发布方式
首先用 QtCreator 新建一个 Qt Widgets Application 项目,直接用默认的 QMainWindow 程序就可以了,项目名字假定是 hellomw。
然后以 Release 方式编译生成 exe 程序:

生成的程序运行正常之后,找到项目的生成目录,比如 项目源码路径:
C:\QtPros\hellomw\
它的项目生成目录是
C:\QtPros\build-hellomw-Desktop_Qt_5_4_0_MinGW_32bit-Release\
进入这个文件夹,在进入它的子文件夹 release 里面,找到 hellomw.exe ,
将这个exe 复制到一个新的单独的文件夹里用于发布,比如存到
D:\hellomw\ 文件夹里面。

然后从开始菜单打开 Qt 命令行,输入命令 :
cd /d D:\hellomw
然后使用 windeployqt 工具命令:
windeployqt hellomw.exe

然后可以在 D:\hellomw 文件夹里看到 windeployqt 工具自动复制的插件文件夹
和 dll文件、qm文件。这时候得到的就完整的 exe 程序发布集合,依赖关系都解决好了。

把 D:\hellomw 文件夹 打包就可以发布了,不用自己一个个找 dll 文件了。
D:\hellomw 文件夹里的qm文件是多国语言翻译文件,不需要可以删了,
其他的都保留。

2、Qt Quick Application发布方式
首先用 QtCreator 新建一个 Qt Quick Application 项目,直接用默认的项目模版,点击下一步生成项目,项目名字假定是 helloqml。
然后以 Release 方式编译生成 exe 程序:

然后找到项目的构建目录,比如项目源码目录 C:\QtPros\helloqml,
它的构建目录是:
C:\QtPros\build-helloqml-Desktop_Qt_5_4_0_MinGW_32bit-Release\
进入这个目录,再进入 release 子文件夹,找到 helloqml.exe ,
复制到一个新的单独的文件夹里面,比如 D:\helloqml\ 文件夹里面。

然后从开始菜单打开 Qt 命令行,进入D:\helloqml\文件夹:
cd /d D:\helloqml
然后使用 windeployqt 工具命令:
windeployqt helloqml.exe –qmldir C:\Qt\Qt5.4.0\5.4\mingw491_32\qml

注意不要跟烧包一样照抄上条命令,–qmldir 是指出 Qt 库里面的 qml 文件夹位置,
上面命令里 C:\Qt\Qt5.4.0 是 Qt 官方开发环境安装的文件夹,
C:\Qt\Qt5.4.0\5.4\mingw491_32 是Qt类库的目录(QTDIR),
因此使用的 –qmldir 后面写的是 C:\Qt\Qt5.4.0\5.4\mingw491_32\qml
读者Qt环境安装路径不一样,要根据实际情况修改!

然后可以看到 D:\helloqml 文件夹里有一大堆文件,就是 QtQuick程序需要的依赖文件。
将整个 D:\helloqml 文件夹 打包就可以发布出去,在别的电脑上使用。

这个 D:\helloqml 文件夹里的东西很多,看不懂就不要删,老老实实打包发布就行了。

上面是最简单的程序发布,实际复杂程序可能还带一些图片文件、数据库文件、配置文件之类的,可以按自己需要添加这些文件到发布文件夹里面。