作者归档:zhanlang

安装archlinux

安装archlinux

kde:

  • plasma
  • konsole

xserver:

  • xorg-server
  • xorg-server-util
  • xterm
  • xorg-xinit
  • xf86-video-vesa
  • xorg-xinput

virtualbox drive:

  • virtualbox-guest-modules
sudo systemctl enable vboxservice

zsh:

  • oh-my-zsh

代理:

  • /etc/profile
export http_proxy=http://dev-proxy.oa.com:8080
export https_proxy=https://dev-proxy.oa.com:8080

别名:

~/.zsh

alias sudo="sudo -E"

yaourt:

sudo vim /etc/pacman.conf

[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch

sudo pacman -Sy yaourt

fcitx:

  • fcitx-sogoupinyin
  • kimtoy

other:

sudo pacman -S dolphin

font:

sudo pacman -S adobe-source-han-sans-cn-fonts ttf-arphic-ukai ttf-arphic-uming wqy-microhei wqy-zenhei

infinality bundle and font:

/etc/pacman.conf

[infinality-bundle]
Server = http://bohoomil.com/repo/$arch

[infinality-bundle-fonts]
Server = http://bohoomil.com/repo/fonts

sudo pacman -Sy infinality-bundle

multilib

[multilib]
Include = /etc/pacman.d/mirrorlist

sudo pacman -S multilib-devel

gogland 快捷键

Ctrl+Space                  基本提示
Ctrl+Shift+Space            智能提示

Ctrl+Alt+L                  格式化

Ctrl+Shift+A                搜索IDE操作
Ctrl+N                      搜索类
Ctrl+Shift+N                搜索文件
Ctrl+Alt+Shift+N            搜索符号

Ctrl+Shift+T                重构


Alt+Enter                   修复代码错误
Alt+Insert                  自动生成代码
Ctrl+I                      实现接口
Ctrl+O                      覆盖父类方法

Ctrl+Alt+ <-                前一次查看位置
Ctrl+Alt+ ->                后一次查看位置
Ctrl+Shift+ Backspace       回到上一次编辑位置
Ctrl+F12                    查看文件的结构(有哪些全局变量, 哪些方法和类)

Ctrl+E                      最近查看的文件
Ctrl+Shift+E                最近编辑的文件

Ctrl+Alt+S                  IDE设置
Ctrl+Shift+Alt+S            项目设置
Ctrl+G                      跳转到某一行
Alt+F1, 1                   查看文件在项目中的位置
Ctrl+Click                  查看该符号的定义位置

Ctrl+`                      切换主题,快捷键
Alt+`                       版本管理的操作
Shift+Ctrl+N:打开文件

Ctrl+E:打开最近的文件

Ctrl+Y:删除一行

Ctrl+F12:列举出文件的函数,可以输入字母匹配搜索

Ctrl+Q:变量、函数等的说明文档

Ctrl+W:扩展选择

Ctrl+Shift+N:最后编辑点

Shift+F6:重构命名

Alt+Shift+方向上、下:代码移动

Ctrl+Alt+方向左、右:浏览代码的前进、后退轨迹

Shift+Enter:以新窗口打开

Ctrl+G:去到指定的行,也可以用vim的:指定行

Ctrl+Alt+L:格式化代码,可能会跟QQ、QQ音乐,网易云音乐的快捷键冲突,需要关掉这些软件的快捷键

Ctrl+;或者Ctrl+Alt+V:打开关闭vim插件

Ctrl+/:注释行

Alt+/:buffer内容补全

Alt+P:显示函数参数签名

Ctrl+ALT+Home:h文件和cpp文件切换

Ctrl+B:实现跳转

Ctrl+Space:智能提示,一般这个会被系统输入法占用,具体配置网上查下。

docker安装启动node-exporter

docker pull prom/node-exporter
docker run -d --name node-exporter -v "/proc:/host/proc" -v "/sys:/host/sys" -v "/:/rootfs" --net="host" prom/node-exporter --path.procfs=/host/proc --path.sysfs=/host/proc --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
 docker run -d --net='host' -v $PWD/prometheus.yml:/etc/prometheus/prometheus.yml  -v $PWD/alert.rules:/etc/prometheus/alert.rules  --name prometheus  prom/prometheus  --config.file=/etc/prometheus/prometheus.yml 
docker run -d –net=’host’ –name=mongo -v $PWD/mongo:/data/db mongo
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.5.3

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
version: '2.2'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.5.3
    container_name: elasticsearch
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

    ulimits:
      memlock:
        soft: -1
        hard: -1

    volumes:
      - esdata1:/usr/share/elasticsearch/data

    ports:
      - 9200:9200

    networks:
      - esnet

  elasticsearch2:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.5.3
    container_name: elasticsearch2
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "discovery.zen.ping.unicast.hosts=elasticsearch"

    ulimits:
      memlock:
        soft: -1
        hard: -1

    volumes:
      - esdata2:/usr/share/elasticsearch/data

    networks:
      - esnet



volumes:
  esdata1:
    driver: local

  esdata2:
    driver: local

networks:
  esnet:

重构过程中的一个坑

今天重构别人的代码, 发现有个类成员函数, 把内部的一个map通过引用暴露出来, 导致访问权限泄露, 所有地方都可以绕过类的控制对成员进行访问。 类似这样:
class CTest
{
public:
    std::map<string, STRUCT_DATA> &datas()
    {
        return datas_;  // 返回了内部数据, 修改权限放开
    }

private:
    std::map<string, STRUCT_DATA> datas_;  
}
这样导致要对这个数据进行修改的时候, 改一发而动全身, 不得不去把所有获取过这个数据的地方的逻辑全部看一遍, 防止修改后导致别的地方出现bug. 尽量还是不要这样放开访问权限。 需要更新可以通过函数来访问, 比如:
void Update(const string &key, const STRUCT_DATA &data)
{
    // do something update
} 
这样, 不需要查看这个引用已经被传到哪里, 是如何被修改的。 只需要保证函数参数是ok的即可。

django获取choices的显示值

可以用get_field_display方法

其中field为使用了choices选项的字段名.
比如:

class ExampleModel(models.Model):
    CHOICES = (
        (1, "测试1"),
        (2, "测试2"),
    )
    test_field = models.SmallIntegerField(choices=CHOICES, verbose_name='测试字段')

    def __str__(self):
        return self.get_test_field_display()  # 当test_field=1时, 显示"测试1"

官方文档: 获取choices显示值

部署django

1. 选择python版本

pyenv

安装

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

或者

pip install --egg pyenv

然后把这几行加到~/.bashrc中

export PATH="/root/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

然后执行一下 exec $SHELL 启用新的shell加载了新的bashrc配置就可以了

使用

pyenv install 3.6 就会显示所有3.6.x版本, 可以选择一个来安装

更新

pyenv update

删除

删除$PYENV_ROOT目录, 一般都是~/.pyenv

rm -fr ~/.pyenv

删除~/.bashrc中这几行
export PATH=”~/.pyenv/bin:$PATH”
eval “$(pyenv init -)”
eval “$(pyenv virtualenv-init -)”