git添加忽略文件.gitignore

一般我们在最开始的时候都会把所有的文件同步到git,到后期我们会发现一些图片文件,敏感文件不应该同步过去。于是我们就必须要使用.gitignore来阻止一些文件的同步。

首先,我们需要在项目的根目录创建.gitignore文件,并填写忽略的内容,如下:

/media/  # 忽略的文件夹
*.pyc        # 忽略的文件类型
/.idea/

接下来我们必须清空git缓存区,并重新提交所有文件到缓存区

git rm -r --cached .       # 清除缓存
git add .                            # 重新trace file

最后我们把.gitignore也加入版本管理。

ubuntu 18.04 无法安装NVIDIA驱动解决方法

笔记本是双显卡,在终端执行

ubuntu-drivers devices

可以列出可以安装的驱动 含有recommended的表示推荐的驱动
如下所示(我已安装好之后的显示)

== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00000DF6sv000017AAsd00003981bc03sc00i00
vendor   : NVIDIA Corporation
model    : GF108M [GeForce GT 550M]
driver   : nvidia-304 - third-party free
driver   : nvidia-340 - distro non-free
driver   : nvidia-driver-390 - distro non-free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

我们执行安装命令直接安装推荐的驱动

sudo apt-get install nvidia-driver-390 

问题出在这里,安装过程中提示一个文件不能覆盖,因为已经被某个软件包占用。因为ubuntu默认的驱动是xserver-xorg-video-nouveau 并且包含这个文件。这个时候我们就要添加强制写入的命令 dpkg -i –force-overwrite。
完整的命令如下

sudo apt-get -o Dpkg::Options::="--force-overwrite" -f install nvidia-driver-390 

成功安装后重启即可。

django 环境注意事项

如果使用python3环境,我们需要用pymysql代替mysqldb,在虚拟环境中使用下列代码安装pymysql。

pip install PyMySQL

在项目的 __init__.py中添加下列两行

import pymysql
pymysql.install_as_MySQLdb()

如果报错 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3. 则需要修改/lib/python3.6/site-packages/django/db/backends/mysql/base.py注释掉下列代码。

"""
if version < (1, 3, 13):
    raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
"""

接下来可能会报错AttributeError: ‘str’ object has no attribute ‘decode’,我们需要修改lib/python3.6/site-packages/django/db/backends/mysql/operations.py文件以下代码

query = query.encode(errors='replace')

如何批量删除twitter的喜欢

用chrome打开twitte的喜欢页面,F12打开控制台,在Console中执行以下脚本即可。

setInterval(
    function() {
        t = $( 'button.ProfileTweet-action--unfavorite' ); // get unfavourite buttons
        for ( i = 0; true; i++ ) { // count
            if ( i >= t.length ) { // if items remain to unfavourite
                window.scrollTo( 0, $( document ).height() ); // scroll to bottom of page - loads more
                return
            }
           $( t[i] ).trigger( 'click' ).remove(); // click and remove button from dom
        }
    }, 2000
)

mysql支持中文的配置说明

修改/etc/mysql/my.cnf,增加下列几行

[mysqld]
character-set-server=utf8

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

登录mysql时出现如下错误:

mysql: Character set 'uft8' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
mysql: Character set 'uft8' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
ERROR 2019 (HY000): Can't initialize character set uft8 (path: /usr/share/mysql/charsets/)

查阅了很多资料都未能解决,问题恰恰出现在这里,后面指定的utf8改为大写。修改如下解决问题。

[mysqld]
character-set-server=UTF8

[client]
default-character-set=UTF8

[mysql]
default-character-set=UTF8

翻墙故障都是ipv6的锅

最近发现twitter中的图片和视频载入非常慢,经过排查发现twitter的图片和视频服务器是通过ipv6的地址连接的。而我路由上开启了ipv6,但是ss服务器却不能代理ipv6的流量。

看样子,网络长城已经可以阻断ipv6的流量,所以只能在路由上关闭ipv6。让所有连接都通过ipv4进行连接。

如果你想代理ipv6的流量,需要您的ss服务器也支持ipv6。

在openwrt上使用gfwlist模式

以往使用的路由翻墙模式是chnroute模式,简单来讲就是ip不在中国的全部使用代理,优点就在于方便,缺点也很明显,有些站点虽然在境外但是并没有被墙,这种情况是不应该再用代理的。

这一次改用gfwlist模式,也就是通常所说的黑名单模式。路由本身已经装好chinadns,ss,和dns-forwarder三件套,这个模式下我们可以停用chinadns了。

首先:安装dnsmasq-full,卸载dnsmasq。不要弄错顺序,不然处理起来很麻烦。(这一步是因为dnsmasq-full支持ipset)

第二步:wan口设置页面,设置dns服务器为127.0.0.1或者留空。(路由器本身提供dns服务)

第三步: DHCP/DNS设置页面:DNS转发填写能够正常访问的公共DNS。忽略解析文件不能勾选,并填写解析文件:/tmp/resolv.conf.auto (使用dnsmasq-full提供dns服务)

第四步 : 防火墙设置页面:自定义规则 (后方的端口为ss的本地端口)

ipset -N gfwlist iphash
iptables -t nat -A PREROUTING -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-port 8668
iptables -t nat -A OUTPUT -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-port 8668 

第五步:SSH登录路由器,在etc目录下建立dnsmasq.d文件夹,并上传gfwlist文件。格式如下所示,您可以自行添加。

server=/twimg.com/127.0.0.1#5353
ipset=/twimg.com/gfwlist

第七步:打开etc目录下的dnsmasq.conf文件,添加如下内容,指向您添加的文件夹

conf-dir=/etc/dnsmasq.d

第八步:ss访问控制设置页面:被忽略ip列表我们选择为留空,此时ss会全局代理。接下来我们要给额外忽略ip中添加两个地址 0.0.0.0/1 和 128.0.0.0/1,这样做之后,ss才会只对gfwlist中的域名代理。

第九步:我们在第五步的代码中可以看到对于gfwlist中的域名我们通过5353端口进行解析。这里我们要用到dns-forwarder,打开大的设置界面,把监听端口改为5353即可。

第十步:以上工作全部完成后,我们重启路由,通过这个网址测试是否成功。

重撸GCP遇到的一些问题解答

首先:重撸GCP是可以的,本人亲自证实,方法也很简单,添加一个新的结算管理员并删除原有的结算管理员即可。当然我也遇到了支付问题,只需要按要求提交证明材料即可。以上操作请使用浏览器的无痕模式,避免缓存的影响。

第二:bbr并不是默认开启的,我用的是centos7,虽然bbr是google的技术,但不代表GCP会默认开启,仍然需要自行升级内核,开启bbr。

第三:获得静态ip后先测试一下是否能ping通,还要用tcping工具测试一下开放的端口能否ping通,我就遇到了一个ip能够ping通,但是端口几乎全部被封的情况。结果浪费了很多时间在防火墙设置上。

第四:服务器的选择,首选香港服务器,以前的台湾服务器ping值在150ms左右基本上和美国没什么区别,香港的ping值在50ms左右,明显优于台湾服务器。

经常下电影的小朋友注意了,视频知识普及

1、CAM(枪版)

CAM通常是用数码摄像机从电影院盗录。有时会使用小三角架,但大多数时候不可能使用,所以摄像机会抖动。因此我们看到画面通常偏暗人物常常会失真,下方的 字幕时常会出现倾斜。 由于声音是从摄像机自带的话筒录制,所以经常会录到观众的笑声等声音。因为这些因素,图象和声音质量通常都很差。

2、TS(准枪版)

TS是TELESYNC的缩写。TS与CAM版的标准是相同的。但它使用的是外置音源(一般是影院座椅上为听力不好的人设的耳机孔)这个音源不能保证是好的音源,因为受到很多背景噪音的干扰。TS是在空的影院或是用专业摄像机在投影室录制,所以图象质量可能比CAM好。但画面的起伏很大。论坛上常出现的有一般TS版和经过修复清晰TS版。

3、TC(胶片版)

TC是TELECINE的缩写。TC使用电视电影机从胶片直接数字拷贝。画面质量还不错,但亮度不足,有些昏暗。很多时候制作TC使用的音源来自TS,因此音质很差,但画面质量远好过TS。如果不是太讲究的话TC版还是不错的选择。

继续阅读经常下电影的小朋友注意了,视频知识普及