工具的使用

阅读量 ,评论量

网页版工具

图片编辑:压缩、裁剪、换背景、格式转换。

图片转icon

站长工具:Unicode/UTF8/URL/ASCII/HEX编码转换、Unix时间戳。

Docker

进入指定容器:

sudo docker exec -it –user root 4c2f23921a9b /bin/bash

nextcloud

硬盘挂载、自动同步备份 自动挂载

30 5 * * * sudo rsync -av --delete /nas/data/nextcloud/data/ /nas/backup/nextcloud/data/ && sync

安装docker、db

安装nextcloud

修改数据存储地址、访问域名白名单

性能优化【1】【2】

sudo apt install ntfs-3g exfat-utils autofs

# 挂载硬盘
sudo mount -t auto /dev/sda2 /media/1
sudo mount -t auto /dev/sdb2 /media/2

# autofs自动挂载
sudo e2label /dev/sdb2 data
sudo e2label /dev/sda2 backup
sudo su
echo -e "/nas /etc/auto.usb --timeout 30" >> /etc/auto.master
echo -e "data\t\t-fstype=ext4,rw\t\t:/dev/disk/by-label/data\nbackup\t\t-fstype=ext4,rw\t\t:/dev/disk/by-label/backup" >> /etc/auto.usb
exit
sudo /etc/init.d/autofs restart
sudo systemctl enable --now autofs
ls -l /nas/data

# 数据同步
30 5 * * * rsync -a --delete /nas/data/photoprism/* /nas/backup/photoprism/. && sync

docker-compose.yaml:

version: '2'

volumes:
  nextcloud:
  db:

services:
  db:
    image: jsurf/rpi-mariadb:latest
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - db:/var/lib/mysql
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=wws647
      - MYSQL_PASSWORD=wws647
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: arm32v7/nextcloud:20.0.11-apache
    restart: always
    links:
      - db
    ports:
      - 8080:80
    volumes:
      - /nas/data/nextcloud/data:/var/www/html/data # 因为树莓派本身存储太小,这里是映射到一个外置2T硬盘
      - ./config:/var/www/html/config
      - ./apps:/var/www/html/apps
      - ./html:/var/www/html
      - ./custom_apps:/var/www/html/custom_apps
    environment:
      - MYSQL_PASSWORD=wws647
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db

运行前,提前配置好权限:

# 注意设置的权限是data的父目录
sudo rm -rf /nas/data/nextcloud
sudo mkdir -p /nas/data/nextcloud/data
sudo chown -Rf www-data:www-data /nas/data/nextcloud
sudo chmod -Rf 0770 /nas/data/nextcloud

启动:sudo docker-compose down && sudo docker-compose up -d

访问http://192.168.1.59:8080/index.php,完成初始化。

更新:sudo docker exec --user www-data CONTAINER_ID php occ upgrade

更新:sudo docker pull nextcloud && sudo docker-compose down && sudo docker-compose up -d

开机自启动:

匿名ftp

sudo vim /etc/vsftpd.conf

listen_port=7669
anonymous_enable=YES
anon_root=/home/ubuntu
no_anon_password=YES
# 权限
dirmessage_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
# PORT FTP模式
connect_from_port_20=YES

登陆日志在/var/log/vsftpd.log

登陆ftp://[IP]:7669/

jupyter lab

  1. 安装anaconda

  2. 在.bashrc文件添加export PATH=~/anaconda3/bin:$PATH,并执行source .bashrc

$ conda update conda
$ conda update anaconda
$ conda install -c conda-forge nodejs
$ conda install -c conda-forge jupyterlab
$ sudo apt install yarn
$ python
> from notebook.auth import passwd
> passwd()
# 输入你自己设置登录JupyterLab界面的密码,
# 然后就会生产下面这样的密码,将它记下来,待会儿用
'sha1:b92f3fb7d848:a5d40ab2e26aa3b296ae1faa17aa34d3df351704'

$ jupyter lab --generate-config
# 修改配置文件
# REF[配置路径]: https://jupyter.readthedocs.io/en/latest/use/jupyter-directories.html
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.notebook_dir = u'/path/to/workspace'
c.NotebookApp.open_browser = False
c.NotebookApp.password = u'sha1:b92f3fb7d848:a5d40ab2e26aa3b296ae1faa17aa34d3df351704'
c.NotebookApp.port = 8080

$ jupyter-lab --version  # 查看版本
$ jupyter lab build --dev-build=True  # 耗时较长
$ nohup jupyter lab &  # nohup表示ssh终端断开后仍然运行

# 至此在浏览器打开 ip:8080 便可访问jupyter lab
# 安装其他内核
# REF[新增内核]: https://gist.github.com/tanbro/a94bfa4a552381f599e7e6b551ccadcf#%E6%96%B0%E5%BB%BA-jupyter-kernel

seafile

  1. 确认系统为64位操作系统,并更新全部软件。

  2. 用 Docker 部署 Seafile 专业版

    1. 安装docker,sudo apt-get install docker-compose -y
    2. 运行命令sudo usermod -aG docker $USERsudo chmod 755 -R .sudo shutdown -r now
    3. 下载并修改docker-compose.yml,修改其中的MySQL root 用户的密码 (MYSQL_ROOT_PASSWORD and DB_ROOT_PASSWD);
    4. 部署服务,docker-compose up;重启服务,docker-compose restart
  3. 登陆seafile server,在web端更改服务器配置。

  4. 在文件的目录下添加restart.sh文件

#!/bin/bash

work_dir=$(cd $(dirname ${0});pwd)
cd ${work_dir}
docker-compose restart

然后在/etc/rc.local中添加一行

/seafile/restart.sh > /tmp/seafile_restart.log 2>&1

git

速查

stash

git stash save "information"
git stash list
git checkout -b dev origin/wws_branch  # git checkout -b <新建本地分支名> <远程主机名>/<远程分支名>
git branch -vv
git pull
git stash apply
git status  # 手动解决冲突

merge

git merge origin/other_branch  # git merge 
# 失败了查看:https://www.cnblogs.com/super119/archive/2010/12/10/1902181.html

push

git push origin master:refs/for/master  # git push <远程主机名> <本地分支名>:<远程分支名>

checkout

git log --oneline --graph
git checkout c6762a1 -- filename

reset

git log --oneline --graph
git reset --soft c6762a1  # move committed to staged

参考

撤消操作

https://backlog.com/git-tutorial/cn/intro/intro1_1.html

https://yq.aliyun.com/articles/5471

使用ssh

背景

more info SSH Agent Forwarding原理 An Illustrated Guide to SSH Agent Forwarding

指令

$ ssh-keygen -t rsa -C "some words(email usually)"
$ ssh-agent -s
$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/id_rsa #添加私钥
$ ssh-add ~/.ssh/id_rsa2
$ vim ~/.ssh/config
$ chmod 644 config

config 文件类似如下

Host  redmudbupt.github.com
    HostName github.com
    IdentityFile /home/redmud/.ssh/id_rsa 
    User git 

host bkseastone.github.com
    HostName github.com
    IdentityFile /home/redmud/.ssh/id_rsa2
    User git 

应用

$ git remote add origin git@bkseastone.github.com:bkseastone/lab_test.git #添加远程库
$ git config user.name "one_name" 
$ git config user.email "one_email" #给仓库设置局部用户名和邮箱

git 原理

more info git command

谈谈版本管理GIT之理论与架构

本地操作

git_local

> working tree(working direction)

> index/cache(staged snapshot)

> repository(commit history)

> git reset –hard xxx,同步清空 working tree 和 index/cache 中的内容,使三者保持一致

> git reset –soft xxx,保留 working tree 和 index/cache 中的内容,并把回退后多出来的内容归为 staged files

> git reset xxx,默认–mix,只保留 working tree 中的内容,使 index/cache 中的内容与重置位置保持一致

> HEAD,永远指向 repository 的最新位置

> ~,在外观上几乎是线性的,并且希望以一条直线向后退

> ^,指一段有趣的树或岔路口

G   H   I   J
 \ /     \ /
  D   E   F
   \  |  / \
    \ | /   |
     \|/    |
      B     C
       \   /
        \ /
         A

A =      = A^0
B = A^   = A^1     = A~1
C = A^2
D = A^^  = A^1^1   = A~2
E = B^2  = A^^2
F = B^3  = A^^3
G = A^^^ = A^1^1^1 = A~3

远程操作

本地 repository 一般包括本地的当前分支和正在跟踪的分支,默认为 master 和 origin/master,从而实现远程操作:

.git/refs/head/[本地分支]
.git/refs/remotes/[正在跟踪的分支]

> git clone,抓取并跟踪默认分支

> git fetch,本地的当前分支没有变化,但是与远程仓库关联的那个版本号被更新了,可通过 git merge origin/master 将origin/master合并到当前分支中,如果这两个版本都修改了同一处的代码,这时候merge就会出现冲突,在解决冲突之后会生成一个新的代码版本;亦或在通过 git log -p origin/master 查看当前分支与远程分支的区别,进一步决定是否合并

> git pull,拉取并和并

> git push <远程主机名> <本地分支名>:<远程分支名>,git push origin HEAD:refs/for/master

mc

文件信息查看与修改

C-x i 显示文件详细信息,重复指令关闭窗口(类似stat命令)
C-u 左右面板互换(用于改变列表显示模式)
C-x c 修改文件权限信息(space为反选键)
[alt]-t 切换列表显示模式

快捷访问:

C-x h 添加文件至收藏夹
C-\ 显示文件收藏夹列表
[tab] 切换活动面板
C-s 在当前目录下查找文件

文件移动与管理

+ 可用正则匹配符选中多个文件
- 取消选中
[insert] 多选模式下反选当前高亮文件
F-5,6,8 对当前高亮文件或选中的多个文件进行复制、更名或移动、删除操作,目标为另一个面板所在路径

命令行

C-w 删除光标前所有字符
C-b C-f C-a C-e 移动光标(方向键在此不起作用)
[esc] [tab] 命令补全(重复两次会显示补全列表)

辅助指令

[esc] 1 帮助手册
C-o 与父shell进行切换(切换后父shell工作目录为活动面板工作目录,用于更多的shell指令)

主题倾向

yadt256

vim

vim-使用教程

vim 插件配置

安装vim

$ git clone git@github.com:vim/vim.git
$ cd vim/
$ sudo apt install python-dev python3-dev ruby-dev libtolua-dev libx11-dev libghc-gtk-dev libghc-gtk3-dev python-gtk2-dev libghc-ncurses-dev
$ ./configure --with-features=huge --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-perlinterp --with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu/ --enable-gui=gtk2 --enable-cscope --prefix=/usr
$ make
$ make install

more info Ubuntu Packages Search

安装 vundle

$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

.vimrc 文件配置

参考 .vimrc

安装插件

进入vim执行:

:PluginInstall
:PluginClean #卸载前先删掉.vimrc文件中的配置语句
:PluginUpdate

安装YCM插件

$ sudo apt-get install llvm-dev clang
$ sudo apt install cmake
$ cd ~/.vim/bundle/YouCompleteMe
$ ./install.py --clang-completer --system-libclang

more info use vim as IDE

gvim 的使用

工程环境配置

修改~/.indexer_files用于产生标签

--------------- ~/.indexer_files ---------------  
[project] 
/home/redmud/practice/project/src/
根据你工程情况只需调整 .ycm_extra_conf.py 的 flags 部分

参考.ycm_extra_conf.py

快捷键的使用

;ilt    #打开标签页
;hw     #跳转左侧窗口
p       #右侧窗口显示标签对应函数

/word   #在文件内查找关键字
;sp     #在工程内查找关键字
<CR>    #进入关键字对应文件
p       #暂时在右侧显示对应文件
q       #退出

u       #撤销上步操作 
ctl+r   #撤销上步的撤销
;ud     #显示撤销树

;;fx     #跳至x字符

;cc     #注释
;cu     #取消注释

;rw     #在文件内不确认得全文替换单词

mx      #设定/取消该行为标签x
m,      #自动设定一个可用书签名
mn      #跳转至下个书签
mda     #删除当前文件所有书签
ctl+o   #跳回上次鼠标位置

信息检索

专利检索

https://www.patentstar.com.cn/my/SmartQuery.aspx

http://pss-system.cnipa.gov.cn/sipopublicsearch/patentsearch/searchHomeIndex-searchHomeIndex.shtml

电子期刊数据库

  1. 北京万方数据股份有限公司网上数据库联机检索系统
  2. 文献索取:图书馆学术交流与文献互助联盟
  3. 重庆维普中文科技期刊数据库
  4. 知网:中国学术期刊全文数据库

电子图书数据库

  1. 全球最大的中文在线图书馆:超星电子图书
  2. 中文在线电子图书

学位论文全文数据库

  1. 万方“中国学位论文全文数据库“
  2. 中国知网“中国博士学位论文全文数据库”;中国知网“中国优秀硕士学位论文全文数据库”

读秀知识库

百链中英文学术搜索

国家科技图书文献中心

如何阅读文献

http://www.sciencemag.org/careers/2016/03/how-seriously-read-scientific-paper

使用hexo+gitpage搭建个人博客(ubuntu16.04环境)

博客搭建

安装npm nodejs git hexo工具
$ sudo apt-get install npm
$ sudo apt-get install nodejs
$ sudo apt-get install git
$ npm install -g hexo
创建博客文件夹
$ hexo init BLOG #假设为BLOG
$ cd BLOG
$ npm install  #安装依赖
主题更改
$ hexo clean
$ git clone https://github.com/iissnan/hexo-theme-next themes/next
$ cd themes/next
$ git pull
$ hexo generate
$ hexo server

现在打开http://localhost:4000/ ,就发现新的主题安装成功了。 按ctl+c退出 ##### 创建git仓库 [图]

配置
$ cd BLOG
$ git config --global user.name "username" # username为你自己的github用户名
$ git config --global user.email "email@example.com"
$ ssh-keygen -t rsa -C "email@example.com"

为github仓库添加SSH keys(id_rsa.pub)

$ git init
$ git add README.md
$ git commit -m "first commit"
$ git remote add origin git@github.com:"username"/"username".github.io.git  #关联远程仓库
$ git push -u origin master

More info: git command ###### 修改BLOG目录下的_config.yml文件

deploy:
  type: github
  repo: git@github.com:"username"/"username".github.io.git
  branch: master
安装一个Hexo的插件
$ npm install hexo-deployer-get --save
修改BLOG目录下的_config.yml文件
deploy:
  type: git
  repo: git@github.com:"username"/"username".github.io.git
  branch: master
hexo部署
$ hexo generate
$ hexo deploy
浏览

打开网页https://“username”.github.io

后期使用

创建新的post,并生效
$ hexo new "MyNewPost"
$ gedit source/_posts/MyNewPost.md
$ hexo generate
$ hexo deploy
全局配置 _config.yml
# Site #站点信息
title:  #标题
subtitle:  #副标题
description:  #站点描述,给搜索引擎看的
author:  #作者
email:  #电子邮箱
language: zh-CN #语言
# URL #链接格式
url:  #网址
root: / #根目录
permalink: :year/:month/:day/:title/ #文章的链接格式
tag_dir: tags #标签目录
archive_dir: archives #存档目录
category_dir: categories #分类目录
code_dir: downloads/code
permalink_defaults:
# Directory #目录
source_dir: source #源文件目录
public_dir: public #生成的网页文件目录
# Writing #写作
new_post_name: :title.md #新文章标题
default_layout: post #默认的模板,包括 post、page、photo、draft(文章、页面、照片、草稿)
titlecase: false #标题转换成大写
external_link: true #在新选项卡中打开连接
filename_case: 0
render_drafts: false
post_asset_folder: false
relative_link: false
highlight: #语法高亮
  enable: true #是否启用
  line_number: true #显示行号
  tab_replace:
# Category & Tag #分类和标签
default_category: uncategorized #默认分类
category_map:
tag_map:
# Archives
2: 开启分页
1: 禁用分页
0: 全部禁用
archive: 2
category: 2
tag: 2
# Server #本地服务器
port: 4000 #端口号
server_ip: localhost #IP 地址
logger: false
logger_format: dev
# Date / Time format #日期时间格式
date_format: YYYY-MM-DD #参考http//momentjs.com/docs/#/displaying/format/
time_format: H:mm:ss
# Pagination #分页
per_page: 10 #每页文章数,设置成 0 禁用分页
pagination_dir: page
# Disqus #Disqus评论,替换为多说
disqus_shortname:
# Extensions #拓展插件
theme: landscape-plus #主题
exclude_generator:
plugins: #插件,例如生成 RSS 和站点地图的
- hexo-generator-feed
- hexo-generator-sitemap
# Deployment #部署,将 lmintlcx 改成用户名
deploy:
  type: git
  repo: 刚刚github创库地址.git
  branch: master

More info: reference2