博客

Trac插件手动安装

以安装mermaidmacro为例,分为如下步骤:

  1. 寻找源码:找到插件,在网站Trac-Hacks的Source下找到源代码

  2. 下载源码: 在trac所在服务器下载源码,通常可以使用命令

    svn checkout https://trac-hacks.org/svn/mermaidmacro/1.0/
  3. 构建.egg文件:进入源码目录中,利用命令python setup.py bdist_egg构建.egg文件,在dist目录中

  4. 复制.egg文件:.egg文件放入trac的plugin目录中

  5. 重启trac服务:使用命令

    sudo systemctl restart tracd.service

    重启trac服务

 

Matlab从.txt大数据文本中读取指定行数据

简介

在使用matlab处理纯数据文本时,读入数据的方式有多种,最为常用的例如

x=load('test.txt');

但是在处理大数据的纯数据文本时,这样处理将会由数据量太大引发两个问题,一是由于数据量太大,读取速度变得异常缓慢,并且大多数时候我们希望处理的只是文本中的特殊指定行数据,采用load命令读取时将会读入大量无用数据。二是数据量的增大可能会使计算过程所需内存超过计算机内存的大小,使得计算无法进行。因此,读取大数据文本中的指定行无论是在速度上还是读取内存上都是十分必要的。下面我们直接以实例说明如何读取,然后介绍每一个命令的作用。

大数据本文指定行读取实例

以小文件举例,文件名为text_read.txt文件数据如下

-0.001940351347998221 -0.002447468841927971 -0.003448582418974663 -0.001915551524648429 -0.003377266415421298 -0.00245623624060616 -0.003504417712869881 -0.003514031030093492
-0.003295993824015069 -0.003697704115825737 -0.00245819548930619 -0.002298981181017425 -0.003519969253538045 -0.002481369263018046 -0.001932520561117142 -0.002263193919843499
-0.004631579275425467 -0.006142005192750063 -0.004450440454568088 -0.0005441652310226853 -0.007236620134015517 -0.002784177149229848 -0.001563447678647398 -0.002631038832646881
-0.007965477029143369 -0.007328280267789456 -0.002403859256693903 0.002914631651510203 -0.001984913187393805 -0.003267870552142102 -0.001213062871591869 -0.004025298647224048
-0.005293340986443498 -0.003606498688767697 -0.002009604771877031 0.002511629249518505 -0.006642122695538116 -0.003911031830255144 -0.0008816781162898037 -0.005115025830764239
0.0002343764483681398 -8.421313773576052e-06 -0.005117960638573307 0.0009294763983370129 -0.002013648360301901 -0.004521769744771036 -0.0005415417040884348 -0.005269060053593039
-0.001791673162769193 -0.003822114649245079 -0.001548195044163779 0.003914618627684868 -0.005922899389395665 -0.004711666805016543 -0.0001648898338060053 -0.004728646652711703
-0.007815339734147874 -0.008253847781375841 -0.001485937093351578 0.004814485370147142 0.0001406205875651433 -0.003999260358974272 0.0002672092028351639 -0.003877159672266814
-0.00476180568316834 -0.0006499149272771123 -0.005562903548836026 0.003298302610324268 -0.007925475447041327 -0.002355450720006214 0.0007612545281610104 -0.003245372479851918
0.003043519528694852 0.001217956569020645 -0.00041462897074267 0.005557049433315358 0.003288061544477133 -0.0003059216866924256 0.001284030145812199 -0.003038211536393332

10×810\times 8的数据,我们现在想要读其中的第7行数据。我们采用如下命令即可做到

fid=fopen('text_read.txt','r');
FormatString=repmat('%.18f',1,8);
data=cell2mat(textscan(fid,FormatString,1,'headerlines',6));
fclose(fid);

命令解释

  • fopen用于获取文件id
  • repmat用于设置所需读取数据格式,repmat是指重复矩阵,由1×1变为1×8,因为文件中保留了小数点后18位,所以使用%.18
  • textscan从文本中格式化读取数据,FormatString后面的1表示重复1次FormatString格式,’headerlines’参数表示跳过行数,采用textscan得到的是元胞数组,cell2mat将元胞数组转为基础数据类型的普通数组
  • fclose用于关闭文件

参考文章

Matlab从文本文件中读取指定行的数据

repmat

textscan

cell2mat

Ubuntu应用程序列表与默认应用程序

本文主要解决的问题有两个:

  • 如何将新的程序加入到应用程序列表
  • 如何将新的程序添加至openwith清单以使该程序成为默认应用程序

并非所用程序都会被自动加入到应用程序列表中,因为Ubuntu通常不需要使用鼠标来打开一个程序。但是,在一些文件管理系统或者知识管理系统中,包含着其他格式的文件,而这些文件的打开通常是使用鼠标操作的。如果打开该文件的程序不在默认应用程序列表或者openwith清单中,那么双击该文件时该文件并不能被特定的应用程序打开。下面我们将以XMind为例,展示如何将XMind程序加入到应用程序列表以及在openwith清单中显示XMind。

应用程序列表由/usr/local/applications中的.desktop决定,利用如下命令创建XMind.desktop文件

cd /usr/local/aaplications
touch XMind.desktop

采用sudo vim XMind.desktop编辑XMind.desktop文件,添加如下代码

[Desktop Entry]
Version=8.0
Type=Application
Name=XMind
Comment=Open-source reference manager (standalone version)
Exec=/home/opt/xmind/XMind_amd64/XMind
Icon=/home/opt/xmind/XMind_amd64/icons/XMind.jpg
StartupNotify=true

这里最为重要的是Exec这一行,填写的是应用程序可执行文件的路径。Icon表示的是应用程序在应用程序列表中显示的图标,这个可以自己在网上找一张图片,然后在Icon一列中写上该图片的路径即可。此时,我们将在应用程序列表中看到XMind程序图标

应用程序列表中的XMind

但此时,双击.xmind格式的文件是不会默认使用XMind打开的,这是因为XMind不在应用程序openweith清单中。右击.xmind文件,选择properties,将会出现openwith清单。如何让XMind在openwith清单中出现以使得XMind成为打开.xmind文件的默认应用程序呢?采用如下设置,在刚刚创建的XMind.desktop中的Exec一行中添加%F,即

[Desktop Entry]
Version=8.0
Type=Application
Name=XMind
Comment=Open-source reference manager (standalone version)
Exec=/home/opt/xmind/XMind_amd64/XMind %F
Icon=/home/opt/xmind/XMind_amd64/icons/XMind.jpg
StartupNotify=true

我们就可以在openwith清单中找到XMind并将其设为打开.xmind文件的默认应用程序。

owncloud用户数据目录迁移

owncloud当用户越多,用户数据越多时,对数据存储提出了一定的要求。此时如果需要对数据进行迁移,主要需要移动的是data文件。我们这里说的迁移是指换一个大的存储目录。

假定在Linux下采用LAMP搭建的owncloud,原来的数据目录为/var/www/html/owncloud/data,现在想要用一个新的盘来存储。可以通过如下步骤。

  • 1. 将盘格式化为Linux ext4文件系统,这样做是因为ntfs盘挂载是只能以root用户访问,而ext4文件系统能够更改文件所属用户,假设新的设备分区为/dev/sdb1,可以采用如下命令进行格式化
    sudo mkfs -t ext4 -c /dev/sdb1
    注意!如果原来分区上有重要数据,需要先做备份
  • 2. 关闭apache服务
    sudo su
    systemctl stop apache2
  • 3. 创建/var/www/html/owncloud/data_2,并将格式化后的新分区挂载到/var/www/html/owncloud/data_2,然后将更改新目录的用户和权限,依次采用如下命令
    mkdir /var/www/html/owncloud/data_2
    mount /dev/sdb1 /var/www/html/owncloud/data_2
    chown -R www-data:www-data data_2
    chmod o-rwx data_2
    最后一步是指用户组中其他用户不能访问
  • 4. 将原数据目录中的数据备份到data_2,采用如下啊命令
    rsync -avz /var/www/html/owncloud/data /var/www/html/owncloud/data_2
  • 5. 删除原数据库目录
    rm -r /var/www/html/owncloud/data
  • 6. 在/var/www/html/owncloud/创建新的目录的软链接
    sudo -u www-data ln -s /var/www/html/owncloud/data_2/data /var/www/html/owncloud/data
  • 7. 开启apache服务
    systemctl start apacha2

wordpress建立数据库连接错误与个人网站内存管理

问题描述:当在vps上搭建个人网站的时候,由于vps上内存有限,在mysql配置过程中没有注意,随着访问次数和页面点击次数增多,mysql服务占用内存增大,进而使得swap逐渐被占满,最终导致mysql服务被kill,即mysql停止,在网页上出现“建立数据库连接错误”。

检测方式:此类情况出现时登录到vps中,输入如下代码
free -m
查看swap全部被使用
service mysql status
查看mysql运行状态
如果mysql停止运行,swap被占满,则属于这种情况。要解决这个问题,需要分为两个步骤,首先是将已经被占满的内存进行清理,其次是重新设置mysql服务。

一. 对swap进行清理

有两个可选的方案

  1. 当内存较小,而swap也已经占满,这是需要重启vps,采用如下命令:
    sudo reboot
  2. 当内存较大是,处于free的内存大于used的swap内存时,可以采用如下命令
    sudo su
    sync
    swapoff -a
    swapon -a
    sync
    echo 1 > /proc/sys/vm/drop_caches
    echo 2 > /proc/sys/vm/drop_caches
    echo 3 > /proc/sys/vm/drop_caches

    详细内容可参考ubuntu 手动释放缓存 (清理内存cache)

二. 对mysql进行配置

“出现建立数据库连接错误”的关键原因是mysql配置与vps硬件配置不相符,导致了mysql服务调用的内存大于实际物理内存,最终导致mysql服务停止。因此,需要调整mysql配置以使其符合实际硬件配置的可承受范围。mysql配置文件可以通过如下命令进行编辑
vim /etc/mysql/mysql.conf.d/mysqld.cnf
具体配置可以参考mySQL内存及虚拟内存优化设置