解决PDF的权限问题
很多PDF文件为保护版权,会通过加密来限制打印和修改权限。随着Acrobat DC版本的发布,PDF文件的加密强度已经达到AES 256-bit
在线解密
- 将文档添加到附件并发送到邮件地址: ocrall@vip.163.com
离线解密
- 使用一些离线工具,比如eo pdf decrypter等
凡事预则立,不预则废
解决PDF的权限问题
很多PDF文件为保护版权,会通过加密来限制打印和修改权限。随着Acrobat DC版本的发布,PDF文件的加密强度已经达到AES 256-bit
待更新
1 | logits = ctr_mlp_layer(input) |
LDA在Python库gensim中的模型和参数介绍
1 | class LdaModel(interfaces.TransformationABC, basemodel.BaseTopicModel): |
1 | # a simple example |
主要参数:
corpus: 语料库,类似于
[ [(1, 1),(4, 1)], [(2, 1),(3, 2)] ]
num_topics: 主题数量,超参数
id2word: dict of (int, str), :class:gensim.corpora.dictionary.Dictionary
passes: 训练时的迭代次数
iterations: 推断时的迭代次数
alpha: 主题的先验概率
decay: (0.5, 1]之间的浮点数,前一个lambda值被遗忘的百分比?【待确认参数】
其他参数:
1 | class Dictionary(utils.SaveLoad, Mapping): |
1 | # a simple example |
本文介绍Linux中即使是root用户,某些特殊文件也无法删除的问题
/
, /dev
, tmp
, var
目录(本身)i
可以使得文件无法被删除,重命名,设置链接,同时不能修改内容等i
属性指令: chattr +i [filename]
i
属性指令: chattr -i [filename]
rm: cannot remove ‘[filename]’: Operation not permitted
查看文件属性
1 | lsattr [filename] |
i
属性删除文件i
属性
1 | chattr -i [filename] |
i
属性删除后可以正常修改或者删除文件了+ :在原有参数设定基础上,追加参数。
- :在原有参数设定基础上,移除参数。
= :更新为指定参数设定。
A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
S:硬盘I/O同步选项,功能类似sync。
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
d:即no dump,设定文件不能成为dump程序的备份目标。
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
s:保密性地删除文件或目录,即硬盘空间被全部收回。
u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。
各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。
i: 将无法对文件进行修改,若对目录设置后则仅能修改子文件而不能新建或删除。
a: 仅允许补充(追加)内容.无法覆盖/删除(Append Only)。
S: 文件内容变更后立即同步到硬盘(sync)。
s: 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)。
A: 不再修改这个文件的最后访问时间(atime)。
b: 不再修改文件或目录的存取时间。
D: 检查压缩文件中的错误。
d: 当使用dump命令备份时忽略本文件/目录。
c: 默认将文件或目录进行压缩。
u: 当删除此文件后依然保留其在硬盘中的数据,方便日后恢复。
t: 让文件系统支持尾部合并(tail-merging)。
X: 可以直接访问压缩文件的内容。
One-hot encoding与Dummy-encoding易混淆点区分
Label Encoding标签编码
亦称指示变量(Indicator variable)
Label Encoding
1 | from sklearn.preprocessing import LabelEncoder |
箱式图,是指—种描述数据分布的统计图
又称离群值(Outlier), 指不在区间[Q1-1.5IQR, Q3+1.5IQR]中的值
去除离群值之后的部分计入图中,分别标记五个特征值
Reference[1]: 维基百科
Reference[2]: How to Calculate Error Bars?
(Error bar, 也称为误差线)
显示潜在的误差或相对于系列中每个数据标志的不确定程度
Git——submodule
如果Git项目下面有个子项目也是Git下来(往往是git clone命令下载的)的,我们往往不能正常的提交和管理项目,本文给出了一些解决方案
如果子项目是git clone
别人的项目,我们选择将子项目提交到整个大项目中
如果直接添加项目到Git往往提示:modified:xxx(modified content, untracked content)
此时如果直接提交,那么远程仓库里面子项目将是空的
.git/
文件夹.git/
文件夹1 | rm -rf xxx/.git/ |
1 | # 删除子项目缓存 |
Note: 没有第二步的话直接进行第三步将和之前一样,子目录还是空的
像正常创建项目一样在Github上创建项目
添加一个项目为子项目
1 | git submodule add git@github.com:JoeZJH/Submodule.git submodule_name |
这个操作将会带来三方面的效果
.git/modules/
文件夹下以submodule_name
为文件夹名创建新的文件夹git@github.com:JoeZJH/Submodule.git
链接和文件夹名submodule_name
添加到当前文件夹的.gitmodules
文件(若没有该文件则会自动新建该文件)和.git/config
文件夹中git@github.com:JoeZJH/Submodule.git
项目中的文件下载到submodule_name
中,并在submodule_name
文件夹下生成.git
文件夹需要注意的是:
.git/modules/
中生成文件夹,但是不会执行后面的步骤查看添加项目结果
1 | git status |
.gitmodules
被修改submodule_name
被添加提交子项目添加结果
1 | git add . |
git add .
操作将无发添加子项目修改内容./
和.git/modules/
下的子项目(模块)目录.gitmodules
,.git/config
中相关的模块条目正常拉取外层项目
1 | git pull origin master:master |
./.gitmodules
文件包含外,其他的文件都不包含,包括./.git
中初始化子模块
1 | git submodule init |
.gitmodules
中的所有子模块注册到外层项目中.git/config
文件中并指明子模块对应的active = true
更新子模块(如果子模块之前存在于.git/config
中,且active = false
,这个初始化操作会修改为active = true
)
1 | git submodule update |
.git/config
和.gitmodules
中的所有子模块的链接地址项目下载到.git/modules/
中,并自动同步(自动checkout
操作)到子项目文件夹中git submodule init
后,.git/config
和.gitmodules
应该是一致的.git/config
和.gitmodules
中都有,且在.git/config
中active = true
的子项目才能被update
操作下载./submodule_name/.git
将不再是一个文件夹,而是一个指明.git/
文件夹路径的配置文件1 | cat ./submodule_name/.git |
gitdir: ../.git/modules/submodule_name
* `.git/`文件夹可以在`./.git/modules/submodule_name/.git/`中找到
子项目相关信息都在外层项目中显示出来
在子项目文件夹./submodule_name/
下,子项目的更新,提交等操作正常按照一般项目进行即可
./.git/modules/submodule_name/.git/
中,但是在子项目的目录下我们可以正常访问子项目的仓库git
操作(add
, commit
)实际上不修改当前文件夹下的任何文件,修改都在外层项目的./.git/modules/submodule_name/.git/
仓库中外层项目只存储
./.gitmodules
中存储子项目相关信息(文件夹路径与子项目远程地址).git/
中对新添加的用户,我们远程登录Ubuntu后有时候只有一个$
符号
$
符号sh
而不是bash
sh
的命令比较少,只有一些ls
, pwd
这样的命令bash
命令运行bash
程序bash
解释执行bash
中使用sh
可会退到sh
命令行bash
和sh
后,会造成进程嵌套多次,这样exit指令退出时需要多次1 | sudo vi /etc/passwd |
sh
(可能没有sh
,直接是空白)修改为bash
1 | # 修改前 |