在安装软件时,有时候 我们需要配置一下 环境变量。
Windows系统中,只要 在 桌面 计算机图标 上 鼠标 右键 -》计算机属性
安装好后,重新退出 ,在配置一下,就能使环境变量生效了。或者重启计算机也能生效环境变量。(上图以配置maven环境变量为例)
当你年老时,你是否常常想,要是年轻时多努力下该好。
在安装软件时,有时候 我们需要配置一下 环境变量。
Windows系统中,只要 在 桌面 计算机图标 上 鼠标 右键 -》计算机属性
安装好后,重新退出 ,在配置一下,就能使环境变量生效了。或者重启计算机也能生效环境变量。(上图以配置maven环境变量为例)
本质上没有区别,都是简单的文本编码方式,都可以用记事本创建、编辑和查看。两者所用的命令行代码也是共用的,只是cmd文件中允许使用的命令要比bat文件多。cmd文件只有在windows2000以上的系统中才能运行,而bat文件则没有这个限制。从它们的文件描述中也可以看出以上的区别:cmd文件的描述是“windows nt命令脚本”bat文件的描述是“ms dos批处理文件”
一个使用cmd运行的
一个用dos解释器解释运行
cmd.exe是XP下的命令行模式32位的(所以一些DOS命令无法使用)
cmd拿到DOS环境下运行不了,而bat在这些环境下都可以运行,因为cmd仅仅基于windows环境下的假DOS
一、需要准备的东西
1. JDK
2. Eclipse
3. Maven程序包
二、官网下载:
http://maven.apache.org/download.cgi
Java Development Kit (JDK) | Maven 3.3+ require JDK 1.7 or above to execute – they still allows you to build against 1.3 and other JDK versions by Using Toolchains |
Memory | No minimum requirement |
Disk | Approximately 10MB is required for the Maven installation itself. In addition to that, additional disk space will be used for your local Maven repository. The size of your local repository will vary depending on usage but expect at least 500MB. |
Operating System | No minimum requirement. Start up scripts are included as shell scripts and Windows batch files. |
因为 安装包是 java 写的,里面的启动文件 即有 Windows的mvn.cmd 也有linux的mvn 所以没有 按不同的系统发布不同的安装包。
由于学习大数据需要Maven,所以先简单学习一下Maven。Hadoop的MapReduce环境是一个复杂的编程环境,所以我们要尽可能地简化构建MapReduce项目的过程。
Maven是一个很不错的自动化项目构建工具,通过Maven来帮助我们从复杂的环境配置中解脱出来,从而标准化开发过程。所以,写MapReduce之前,让我们先花点时间把刀磨快!!当然,除了Maven还有其他的选择Gradle(推荐), Ivy….
摘自百科:
VPS有:BandwagonHost,dataocean,vultr,linode。选择服务器地址时,可以先测试一下速度,选速度快的机房。
1、利用SSH远程 登入 centos7,方便后续操作。(有些vps的ip可能被屏蔽了,所以需要换一个vps试试看)
SSH远程连接入门
2、加固 centos7 安全性:
(1)、更新centos7系统。
(2)、解决系统编码问题。
(3)、开启 防火墙。
systemctl start firewalld
3、安装VNC软件,进行远程访问。(可选操作,如果不适应用命令行操作,可以借助vnc 进行远程桌面操作)
(为了提高安全性,使用SSH端口转发,登入服务器)
vnc远程连接配置与入门
我们安装的是python版本的。因为centos7 默认自带了 python,所以不需要安装了。如果没有安装的话,可以运行
yum install python
这样子 也可以检查出,是否安装了python。
安装 pip :
1、可以用 VNC 远程登录 vps 主机,然后用浏览器 下载 pip 安装包。
下载页面:https://pypi.org/project/pip/9.0.1/
文件链接地址:https://files.pythonhosted.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz
为什么不选最新版,因为最新版pip 和 python 有一点 兼容性问题。
也可以在SSH中用命令行的方式 下载文件:
curl https://files.pythonhosted.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz -o pip.tar.gz --progress
文件下载完,可以用 VNC 桌面方式进行 解压。或者 在 SSH 中 用命令行 进行解压。
tar zxvf pip-9.0.1.tar.gz -C /root/mydir
将文件 解压到了mydir目录下面。
解压完成后,进入 mydir 文件夹。可以用vnc 直接进入。也可以用命令行
cd /root/mydir
只有进入到 mydir文件夹以后,下面的安装才能成功。
在SSH下或者vnc的终端运行命令行:
python setup.py install
(其实 用命令行 可以直接装 pip,但是安装的是最新版的pip,好像与python存在兼容性问题)
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" python get-pip.py
2.安装 shadowsocks
在SSH或者VNC的终端下运行如下代码:
安装 加密软件 库 用于支持 aes-256-gcm 加密方式 (带#的,都是注释,不需要打 ) yum install epel-release yum install libsodium 安装 或升级 最新 软件 版本 pip install --upgrade git+https://github.com/shadowsocks/shadowsocks.git@master
3.配置shadowsocks
SSH下:
[bash] # 创建 /etc/shadowsocks.json vim /etc/shadowsocks.json [/bash]
上面就创建了配置文件,然后用 vim 编辑 下面内容就行了。
{ "server": "0.0.0.0", "server_port": 3678, "password": "sdfsndsfoni", "method": "aes-256-cfb" }
多余多个端口可以如下:(顺便说了一下,可以添加PID_FILE和LOG_FILE)
pidfile
{ "server": "0.0.0.0", "port_password": { "8850":"hehe2016" }, "method": "aes-256-gcm", "PID_FILE": "/var/run/shadowsocks_ssserver.pid", "LOG_FILE": "/var/run/shadowsocks_ssserver.log" }
添加PID_FILE,是因为 执行下面这句话时,需要PID 文件,否则会报错。
ssserver -c /etc/shadowsocks.json -d stop
这个时候,服务器就可以使用了:
##### 开启 shadowsocks 服务 ssserver -c /etc/shadowsocks.json -d stop ##### 关闭 shadowsocks 服务 ssserver -c /etc/shadowsocks.json -d start
后面提到的shadowsocks.service
是另一种启动方式。
##### 查看 shadowsocks 状态 #####(如果 我用ssserver -c /etc/shadowsocks.json -d start 启动,那么这里查看的启动状态是 dead 的,两种启动方法 应该隶属于 不同的管理方式中) systemctl status shadowsocks ##### 启动 shadowsocks 服务 systemctl start shadowsocks ##### 关闭 shadowsocks 服务 systemctl stop shadowsocks
注意: 加密方式(method),密码(password),服务器端口(server-port)都可以自己设置,只要客户端相同就行。服务器端口 1024以下是系统保留的,从1024-65535是用户使用的。密码 建议选择 aes 系列。method为加密方法,可选aes-128-cfb, aes-192-cfb, aes-256-cfb, bf-cfb, cast5-cfb, des-cfb, rc4-md5, chacha20, salsa20, rc4, table
vim编辑器用法可以查看:vim入门基础
VNC桌面环境就直接创建json文件就行了。
4.配置开机自启动。SSH和VNC操作都行。
新建启动脚本文件/etc/systemd/system/shadowsocks.service,内容如下:
[Unit] Description=Shadowsocks [Service] TimeoutStartSec=0 ExecStart=/usr/bin/ssserver -c /etc/shadowsocks.json [Install] WantedBy=multi-user.target
然后 , 在SSH或者VNC终端下:输入命令
systemctl enable shadowsocks systemctl start shadowsocks
为了检查 shadowsocks 服务是否已成功启动,可以继续执行以下命令查看服务的状态:
systemctl status shadowsocks -l
如果服务启动成功,则控制台显示的信息可能类似这样:
● shadowsocks.service - Shadowsocks Loaded: loaded (/etc/systemd/system/shadowsocks.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2015-12-21 23:51:48 CST; 11min ago Main PID: 19334 (ssserver) CGroup: /system.slice/shadowsocks.service └─19334 /usr/bin/python /usr/bin/ssserver -c /etc/shadowsocks.json Dec 21 23:51:48 morning.work systemd[1]: Started Shadowsocks. Dec 21 23:51:48 morning.work systemd[1]: Starting Shadowsocks… Dec 21 23:51:48 morning.work ssserver[19334]: INFO: loading config from /etc/shadowsocks.json Dec 21 23:51:48 morning.work ssserver[19334]: 2015-12-21 23:51:48 INFO loading libcrypto from libcrypto.so.10 Dec 21 23:51:48 morning.work ssserver[19334]: 2015-12-21 23:51:48 INFO starting server at 0.0.0.0:8388
不过此时还连接不上服务器,因为CentOS 7默认防火墙是阻止SS端口的,这里需要放行SS端口,由于CentOS 7的防火墙升级为Firewall了,操作方式与之前的iptables有所不同(3678为文中shadowsocks服务器配置端口号,这里要改为你安装SS时设置的端口):
firewall-cmd –permanent –add-port=3678/tcp
firewall-cmd –reload
由于原生shadowsocks速度慢,所以用kcp 插件加速。
访问链接,选择linux-amd64 下载,centos7系统 是 64位的linux系统。
https://github.com/shadowsocks/shadowsocks-windows/releases
解压后有两个文件,其中类似server_linux_amd64这样的文件就是服务端程序了,另一个类似client_linux_amd64的就是客户端程序了。如果客户端在Windows上使用要下载Windows版本的哦。
SSH 里面可以用 tar命令进行解压(前面解压pip文件已经提到过了), ls 命令可以查看 当前目录所有文件 cd 命令表示进入某目录。可以搜索一下bash常用命令操作。
VNC里面直接可视化操作就行了。
先来创建服务端配置文件,创建开机启动项如下供参考:
[bash] vim /etc/systemd/system/kcptun.service [/bash]
然后 配置启动文件如下:
[Unit] Description=kcptun [Service] TimeoutStartSec=20 ExecStart=/usr/bin/server_linux_amd64 -t "0.0.0.0:3678" -l ":5678" -mode fast2 [Install] WantedBy=multi-user.target
其中TimeoutStartSec为延时启动的时间,这里由于需要等待ShadowSocks启动完成后再启动,所以配置20秒的延迟。ExecStart后的server_linux_amd64为你刚刚下载的文件的位置,建议放到相应的文件夹以便管理。-t后的是服务器的IP和ShadowSocks服务的端口,这里IP配置为本机IP即可。-l表示KCP服务使用的端口,-mode表示速度的模式,从快到慢依次是fast3 > fast2 > fast > normal > default,fast3一般用于游戏,不想要任何的延迟(no lag),但这也意味浪费的流量会增多,这里我选择fast2就够用了。
[bash] systemctl daemon-reload # 创建开机启动 systemctl enable kcptun # 启动kcp服务。 systemctl start kcptun # 防火墙 开放 kcp 端口 (kcp 是 udp 协议,shadowsocks 是tcp协议) firewall-cmd –permanent –add-port=5678/udp # 防火墙 重新 加载 配置 firewall-cmd –reload [/bash]
安卓版本:(个人用 3.3.1 版本,因为 好像 不需要 google play 插件吧。并且内置kcp 插件)
https://github.com/shadowsocks/shadowsocks-android/releases
windows版本:
https://github.com/shadowsocks/shadowsocks-windows/releases
需要下载kcp客户端单独进行集成。(Windows-386 32位系统,Windows-amd64 64位系统)
https://github.com/xtaci/kcptun/releases
集成方法可以参考链接:
(总体思路是本地shadowsocks先连接本地的kcptun,然后kcptun 连接 代理服务器的 kcptun,
接着 代理服务器的kcptun 连接 代理服务器的 shadowsocks)
https://blog.csdn.net/farawayzheng_necas/article/details/63255799
mac版本:(内置kcp插件)
https://github.com/shadowsocks/ShadowsocksX-NG
ios版本:
因为大陆已经下架,需要在其他地区搜索:Shadowrocket 等 支持shadowsocks的 应用软件。
之前3.几的安卓客户端,kcp与客户端是集成的,配置文件中,shadowsocks服务器端口就填shadowsocks端口。kcp配置:需要配置kcp端口,kcp参数:
--crypt aes-192 --key "hello"
到了安卓4.x版本,kcp是插件化了。无法启动kcp,可能是1、shadowsocks卸载重装2、手机管家的自启动的链式启动,允许kcptun。
如果要添加kcp插件,那么shadowsocks的端口就要填 kcp的端口,kcp的插件需要配置:[注意与3.x的配置不同,这里的密码,不再需要添加引号了]
key=hello;crypt=aes-192
服务器:centos
sudo yum install gcc autoconf libtool automake make zlib-devel openssl-devel asciidoc xmlto git clone https://github.com/shadowsocks/simple-obfs.git cd simple-obfs git submodule update --init --recursive ./autogen.sh ./configure && make sudo make install ### 会报错 缺少 libev,于是 猜测 shadowsocks libev版本有, ### 于是安装 shadowsocks libev 的依赖库 yum install gcc gettext autoconf libtool automake make pcre-devel asciidoc xmlto c-ares-devel libev-devel libsodium-devel mbedtls-devel -y
服务器配置:
因为是独立模式:vim /etc/systemd/system/obfs-server.service
[Unit] Description=Simple-obfs After=network.target [Service] Type=simple-obfs User=nobody CapabilityBoundingSet=CAP_NET_BIND_SERVICE ExecStart=/usr/local/bin/obfs-server -s 0.0.0.0 -p 443 --obfs tls -r 127.0.0.1:8866 [Install] WantedBy=multi-user.target
监听 1024以下端口 需要 root 用户权限,所以采用下面的方法:(应该是绑定服务吧)
setcap cap_net_bind_service=+ep /usr/local/bin/obfs-server
### 最后更新服务并启动: sudo systemctl enable obfs-server sudo systemctl daemon-reload sudo systemctl restart obfs-server
特别注意:复制粘贴时的 问题:【正常情况应该不会出现这个问题,然后我把vim后面的空格给删了,然后用打了一个空格,结果就好了,可以新建文件了】
[root@superguy ~]# vim /etc/systemd/system/obfs-server.service -bash: vim /etc/systemd/system/obfs-server.service: No such file or directory
这里有编译好的软件可直接放到目标位置 obfs-local 和 obfs-server
有可能 443端口被占用了,导致绑定出错,可以换其他端口再重试。
# 查看端口被占用方法
lsof -i:443
客户端:因为是集成插件模式:
1、客户端连接 服务器 端口 就是 443
2、指定 插件为: obfs-local【有些地方填:simple-obfs】 ; 并配置插件参数 ,如下面的示例。
--plugin-opts "obfs=tls;obfs-host=www.bing.com"
备注:obfs 类型有 tls和http 主要是 服务器 和客户端 类型要统一。
参考教材:
###Plugin mode with shadowsocks ###Add respective item to --plugin and --plugin-opts arg or as value of plugin and plugin_opts in JSON. ### On the client: ss-local -c config.json --plugin obfs-local --plugin-opts "obfs=http;obfs-host=www.bing.com" ### On the server: ss-server -c config.json --plugin obfs-server --plugin-opts "obfs=http" ### Standalone mode ### On the client: obfs-local -s server_ip -p 8139 -l 1984 --obfs http --obfs-host www.bing.com ss-local -c config.json -s 127.0.0.1 -p 1984 -l 1080 ### On the server: obfs-server -s server_ip -p 8139 --obfs http -r 127.0.0.1:8388 ss-server -c config.json -s 127.0.0.1 -p 8388
最近突发奇想把网站改为https,不可避免的遇到了与shadowsocks的443端口冲突问题(443端口不容易被检出)。废了好大劲才发现原来ss的simple-obfs已经带有非ss流量转发功能。
# HTTP only with plugin mode ss-server -c config.json --plugin obfs-server --plugin-opts "obfs=http;failover=example.com:80" # Both HTTP and HTTPS with standalone mode obfs-server -s server_ip -p 80 --obfs http -r 127.0.0.1:8388 --failover example.com:80 obfs-server -s server_ip -p 443 --obfs tls -r 127.0.0.1:8388 --failover example.com:443 # suppose you have an HTTP webserver (apache/nginx/whatever) listening on localhost:8080 and HTTPS on 8443 # (you probably shouldn't expose these ports) obfs-server -s server_ip -p 80 --obfs http -r 127.0.0.1:8388 --failover 127.0.0.1:8080 obfs-server -s server_ip -p 443 --obfs tls -r 127.0.0.1:8388 --failover 127.0.0.1:8443
这样便将web流量转发到了8443端口
user xx xx; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; types_hash_max_size 1024; server { listen 80; server_name localhost; return 301 https://$host$request_uri; #redir to https # #charset koi8-r; # #access_log logs/host.access.log main; # redirect server error pages to the static page /50x.html # #error_page 500 502 503 504 /50x.html; #location = /50x.html { # root /usr/share/nginx/html; #} # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # server { listen 8443 ssl http2; server_name localhost; ssl_certificate /etc/letsencrypt/live/cclin.net/fullchain.pem; #managed by Certbot ssl_certificate_key /etc/letsencrypt/live/cclin.net/privkey.pem; #managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; location / { uwsgi_pass 127.0.0.1:3031; include uwsgi_params; } } # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; } }
下面的方法 可以 ,即访问网站,同时又 ss。 也就是说 simple-obfs 支持 http代理 转发 server { listen 80; server_name localhost; # server_name www.huaijiujia.com; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; if ($http_upgrade = "websocket") { proxy_pass http://127.0.0.1:8443; } proxy_http_version 1.1; proxy_set_header Upgrade "websocket"; proxy_set_header Connection "upgrade"; } ….. } 下面的 方法 不行,只能访问 网路,但是无法 使用 ss。也就是说 simple-obfs 不支持 tls 代理 转发 server { listen 443 default_server; server_name _; ssl_certificate https_cert/huaijiujia_ca_chained.crt; ssl_certificate_key https_cert/huaijiujia_private.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; # return 404; # return 301 https://www.amazon.com; location = / { if ($http_upgrade = "websocket") { proxy_pass https://127.0.0.1:8443; } proxy_http_version 1.1; proxy_set_header Upgrade "websocket"; proxy_set_header Connection "upgrade"; } return 301 https://www.amazon.com; }
因为,安卓手机的功能不完善,不完全支持 simpobfs功能,所以需要重新下个 改进版的。点击下载: Simple-obfuscation-fix
如果 shadowsocks需要支持 aes-256-gcm加密的话:
For CentOS 7, if you need AEAD ciphers(支持aes-256-gcm加密), you need install libsodium
yum install libsodium python34-pip pip3 install git+https://github.com/shadowsocks/shadowsocks.git@master
谷歌提供的机器学习快速入门课程:
https://developers.google.com/machine-learning/crash-course/ml-intro
其他资源更新中
楼主想上传一个脚本文件到wordpress,但是 发现 由于安全限制,无法上传。
文件类型不符合安全规则。试试别的文件。
这种错误是由于WordPress中做了文件上传格式的限制,这种限制可以在WordPress中的wp-include/functions.php的get_allowed_mime_types函数中找到,函数如下:
以上传入 apply_filters函数中的Array,即使允许上传的类型列表,我们可以修改这个地方,以禁止或允许可以上传的文件类型。
例如我们想要允许rar文件上传,只需添加一行格式说明即可:
‘rar’ => ‘application/rar’,
除了直接修改这个Array外,还有另外一种方法,可以修改wp-config.php文件,这个文件在WordPress的根目录下,在其中增加一行语句:
define(‘ALLOW_UNFILTERED_UPLOADS’, true);
这条语句将去除上传的文件类型限制,一劳永逸。
之前因为有学习英语的需求,看了一些美剧。但由于平常时间有限,所以将美剧视频压缩成了mp3,然后顺便将srt字幕转换成了lrc。
github上参考了 一个 srt转 lrc 的 python脚本。
楼主将自己完善的python字幕转换脚本 展示如下:
#coding=utf-8 # 如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码。 ''' Run it in srt file folder. python 2.7 ''' import glob import re SRT_BLOCK_REGEX = re.compile( r'(\d+)[\r\n]+' # srt --> num r'(\d{2}:\d{2}:\d{2},\d{2,4})[\s]*-->[\s]*(\d{2}:\d{2}:\d{2},\d{2,4})[\r\n]+' # srt --> time # r'(.+)' r'(.*)[\r\n]+' # srt --> subtitles r'(.*)' # srt --> subtitles ( sometimes srt has 2 subtitles ) ) # [^\S\r\n]*[\r\n]+ def srt_block_to_irc(block): match = SRT_BLOCK_REGEX.search(block) """ IndentationError: unindent does not match any outer indentation level ///////////////////////////////////// python 的 注释 居然 也要 对齐的 我去 Traceback (most recent call last): File "srt2lrc.py", line 100, in <module> srt_file_to_irc(file_name) File "srt2lrc.py", line 50, in srt_file_to_irc blocks_out = [srt_block_to_irc(block) for block in blocks_in] File "srt2lrc.py", line 24, in srt_block_to_irc print('match groups 0: %s' %(match.group(0)) ) AttributeError: 'NoneType' object has no attribute 'group' 因为 下面的 print 函数 有问题 啊,每一次 调用 上面的 search(block) 有可能 出现 不匹配,于是 会传给 match = none """ if not match: return None #else: # print('match groups 0: %s' %(match.group(0)) ) num, t1, t2, content1, content2 = match.groups() # 匹配 每一个 正则表达式 单元 ---> 就是 正则表达式 里面 加了 括号的部分 时间部分 有11位 ,t1[3:11] 就是 截取 t[3] 到 不包括最后的 t1[11].其实最大是t[10],t[11]越界不存在的 """ print( 'hell' ) print('match num 0: %s' %(num) ) print('match t1 0: %s' %( t1 ) ) print('match t2 0: %s' %( t2 ) ) print('match content1 0: %s' %(content1 ) ) print('match content2 0: %s' %(content2) ) """ # ts = ts[3:-1].replace(',', '.') # te = te[3:-1].replace(',', '.') # co = content.replace('\n', ' ') # python里面的索引的特征是包含起点,但是不包含结束的索引值,-1表示最后一个元素,但是-1是结尾的index,所以含义就是取 第三个元素 到 最后一个元素 # t1 = t1.split(',')[0] # 分裂后 取 第一个字符串 # t2 = t2.split(',')[0] # print('match t1 0: %s' %( t1[10] ) ) t1 = t1[3:11].replace(',', '.') # t2 = t2[3:-1].replace(',', '.') # print('match t1 replace: %s' %( t1 ) ) # return '[%s]%s\n[%s]\n' % (ts, co, te) return '[%s]%s%s\n\n' % (t1, content1, content2) def srt_file_to_irc(fname): # python 3 # with open(fname, encoding='UTF-8') as file_in: # str_in = file_in.read() with open(fname, 'rb') as file_in: str_in = file_in.read().decode("utf-8") # the original srt file encode with utf-8 , so this place we decode it with utf-8 blocks_in = str_in.replace('\r\n', '\n').split('\n\n') blocks_out = [srt_block_to_irc(block) for block in blocks_in] # print('all blocks_out: \n %s' % (blocks_out) ) if not all(blocks_out): err_info.append((fname, blocks_out.index(None), blocks_in[blocks_out.index(None)])) blocks_out = filter(None, blocks_out) str_out = ''.join(blocks_out) # 卧槽 python 用 对齐方式 判断 作用域的 因为 有了中文注释,源文件是 ascii编码的。所以报错 说 出现 非ASCII字符 # SyntaxError: Non-ASCII character '\xe5' in file Test1.py on line 8, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details # 解决方法 python的默认编码文件是用的ASCII码,将文件存成了UTF-8,编译就可以通过。或在在py文件开头(必须是第一行)加入 # python3 # with io.open(fname.replace('srt', 'lrc'), 'w', encoding='UTF-8') as file_out: # file_out.write(str_out ) with open(fname.replace('srt', 'lrc'), 'w') as file_out: file_out.write(str_out.encode('utf-8')) """ Python–方法: 1.根据长度判断 长度为0时,表示空。(其中”判断条件”成立时(非零),则执行后面的语句) lst = [] if len(lst): print 'c' else: print 'cc' 2.根据逻辑判断 由于一个空 list 本身等同于 False lst = [] if lst: print 'c' else: print 'cc' """ if __name__ == '__main__': err_info = [] for file_name in glob.glob('*.srt'): srt_file_to_irc(file_name) if err_info: print('success, but some exceptions are ignored:') for file_name, blocks_num, context in err_info: print('\tfile: %s, block num: %s, context: %s' % (file_name, blocks_num, context)) else: print('success')
只需将 此 python 脚本,放入待转换的 srt字幕 文件夹里面就行。
然后 命令行 运行该 python 脚本就行。可以 修改 python脚本 的正则表达式,修改srt 解码格式。
脚本文件下载
Python 的语法非常简洁,写起来就像写英语一样,不仅简单而且可以高效地实现面向对象编程。与 C/C++/Java 相比,可以用很少的代码写出同样的程序,跨平台,一次编写到处运行,无须编译,直接运行,还有很多框架包可以选择。
它可以用来进行网络开发、GUI开发、图形开发、Web开发、游戏开发、手机开发、数据库开发,大数据分析等等。
网络开发,有大量的网络编程模块,支持 Socket、Email、FTP、Twisted,Jabber 等。GUI开发方面,有很多强大的GUI库,wxPython、Zope、Plone。游戏开发,例如网络游戏脚本、账号注册系统、物品交换系统、场地转换系统和攻击防御系统都是用Python写的。网站后台,有大量的成熟的框架,如 Django、Flask、Bottle、Tornado。很多知名网站都在用Python,豆瓣、知乎、Youtube、Dropbox、OpenStack等。
数据科学方面,Python也是越来越受到重视,从云计算基础设施,到网络爬虫,再到数据处理算法。私有云 OpenStack,公有云 AWS、GCE、Azure、阿里云、青云,也都提供Python SDK。Spark、Hadoop都开了Python的接口,可以用Python做大数据的mapreduce。用Python写爬虫非常简单,库很健全,而且基于它发展起来了很多并发库,网络爬虫才真正可以达到大数据规模,爬取数据之后,还有自然语言处理程序包NLTK可以做分词处理。
Python在做科学计算方面还有三大神器:Numpy、Spicy、Matplotlib。NumPy 和 SciPy 给其他高级算法打了非常好的基础,用已经封装好的包,可以快速迭代,优化各种参数。Matploglib 可以用来画Matlab那样的图。还有 scikit-learn、pattern、jieba、pybrain 实现了很多机器学习深度学习的算法。
还可以用Python做一些很好玩的事情,比如大神们用21行Python写出的拼写检查器,用微信控制灯泡等等,听着就很是乐趣无穷。
作者:不会停的蜗牛
链接:https://www.jianshu.com/p/108cfb8f6d4b
来自:http://tieba.baidu.com/p/2955636909
BIOS:英文”Basic Input Output System”的缩略语,直译过来后中文名称就是”基本输入输出系统”。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。也就是说,在没有装系统之前只能使用这个基层系统。
=========================================================
PC硬件组成:CPU,主板,内存条,显示器,机箱,散热器,电源,光驱,硬盘,固态硬盘
———————————————————–
【主板相关知识】
———————————————————–
【入门篇】
基础知识扫盲贴,PC主机的基石-电脑主板基本篇
http://tieba.baidu.com/p/2636055098
一篇帖子10分钟教你如何选购主板
http://tieba.baidu.com/p/2191761624
【进阶-装机篇】
主板硬盘灯、电源灯、重启、开关机接线
http://tieba.baidu.com/p/2206266199
装机教程
http://tieba.baidu.com/p/2239070608
电脑组装之接口线缆安装细节图解
http://tieba.baidu.com/p/2235652864
【进阶-用料篇】
教你看主板上的电容(推荐连下面的帖子一起看)
http://tieba.baidu.com/p/2671593790
教你分辨日、台系电容
http://tieba.baidu.com/p/2191471094
【其他知识】
有关主板的多相供电的原理
http://tieba.baidu.com/p/2191774388
看型号选主板之“微星”篇
http://tieba.baidu.com/p/2458320295
看型号选主板之“技嘉”篇
http://tieba.baidu.com/p/2458129754
==================点击切入正题======================
一.主板各部件名称以及各功能粗解
声卡、网卡:主板有集成,有特殊需要的用户可以另行购买独立声/网卡。
南桥芯片:南桥芯片负责I/O总线之间的通信,如PCI总线、USB、LAN、ATA、SATA、音频控制器、键盘控制器、实时时钟控制器、高级电源管理等。
I/O芯片:I/O控制电路,它负责提供串行、并行接口及软盘驱动器控制接口。
CPU插槽:放置中央处理器(CPU)的插槽(在其四周有四个孔洞,那个是固定散热器的位置)。
内存插槽:插内存条的地方,不同的主板型号需要查看其说明书,是否支持双通道以及内存的频率(内存主流频率:1333/1600/1866/2133/2400MHz),注意,光是主板支持也不行行,因为北桥控制内存(北桥芯片已整合进CPU内),所以,也必须在北桥支持的内存频率内,否则频率再高也只能是北桥所支持的最大频率。(北桥在下文有讲解)
双通道:双通道可以提供双倍内存带宽。也可理解为单位时间内的双倍数据交换量。
SATA接口:连接硬盘的接口,需要注意的是,SATA3.0的传输读写速率是SATA2.0的两倍,所以最好优先连接3.0接口(需要查看主板说明,因为有些主板的标记用法不同)。
8Pin电源接口:供电作用,也可4pin+4pin或单4PIN直接接上去使用。
24PIN电源接口:主板供电作用。
USB3.0:目前主板的标配,其传输速率是USB2.0的8倍(理论速率),需要支持USB3.0的配件才能使用USB3.0,前置USB3.0需要机箱也支持USB3.0,但后置可以使用。
CPU散热器接口:简称CPU_FAN,一般在主板边缘。(位于主板中间位置的两个散热器接口,称CHN_FAN那个一般是机箱风扇的接口)
PCIE16x:(全称:PCI Express),一般为显卡插槽,除开X倍率还分1.0(淘汰)/2.0(H61以下还在使用)/3.0(B75以上全部普及),具体速率差距如下图:
PCI接口:普通玩家一般用不上的扩展插槽,可插接显卡、声卡、网卡、内置Modem、内置ADSL Modem、USB2.0卡、IEEE1394卡、IDE接口卡、RAID卡、电视卡、视频采集卡以及其它种类繁多的扩展卡。PCI插槽是主板的主要扩展插槽,通过插接不同的扩展卡可以获得电脑能实现的几乎所有功能。
PCI-E 1x:也可以插声卡 网卡,也有这种接口的电子配件,而且貌似都是比较贵的才是这种接口,不过也算是“淘汰”很久了,现在的普通玩家几乎用不上这种插槽。
=========================================================
串口连接插座~系统控制面板排针(从上至下):俗称(跳线),连接机箱的各种线,配置数据清除排针一般不接。
内存条 ,双通道的速率是单通道的两倍。双通道,就是在北桥(又称之为MCH)芯片级里设计两个内存控制器,这两个内存控制器可相互独立工作,每个控制器控制一个内存通道。在这两个内存通CPU可分别寻址、读取数据,从而使内存的带宽增加一倍,数据存取速度也相应增加一倍。
网络接口:网线接入口,不同主板一般接口型号不同。
音频接口:自行看主板说明书,一般分布颜色不用代表的工具也不同(如麦克风,喇叭)。
=========================================================
三.主板的选取科普
前要:目前主板分为intel和AMD的主板,所以,大家在购选主板的时候千万看准是支持英特尔还是AMD的板子。
在此基础上,还要看CPU针脚数目和类型以及主板CPU插槽孔数目和类型是否相同(具体可以去ZOL查看参数)
比如
intel:LGA 775/1155/1150/1556/1366/2011
AMD:Socket AM1/AM1+/AM2/AM2+/AM3/AM3+
如果符合以上条件,但仍旧无法开机或者不兼容出现异常,请尝试更新你的主板BIOS试试,如果还是不行请自行联系品牌客服走起.
———————————————————–
(1)Intel 主板芯片组目前主流介绍:
关于intel主板芯片组的区别(目前主流):
三代CPU(Ivy Bridge)的主流芯片组分为:H61(低端) B75(中低端) H77(中高端) Z77(高端,可超频)
区别如下图:
RAID 0技术:即磁盘阵列,可以加多个硬盘在一起形成一个硬盘组,增加读取速率。
优点:没有数据冗余,高可用性,很高的传输速率,大大提高储存性能
缺点:正是因为没有数据冗余,在提高性能的同时,并没有提供数据可靠性,如果磁盘失效,将影响到整个数据,一旦损坏,无法恢复。
=====================================================================
四代CPU的主流芯片组分为:H81(低端) B85(中低端) H87(中高端) Z87(高端,可超频)
区别如下图:
(破解支持:即破解后才支持。)
AHCI:AHCI本质是一种PCI类设备,在系统内存总线和串行ATA设备内部逻辑之间扮演一种通用接口的角色(即它在不同的操作系统和硬件中是通用的)。
———————————————————–
H61 B75 H77 Z77 与H81 B85 H87 Z87相比,区别如下图:
Max DIMMs:内存插槽
SRT:智能加速技术全名为“Smart Response Technology”,简称SRT。实际上,该技术完全基于软件,属于Intel RST快速存储技术驱动10.5版中的一项新特性,不过仅能在Z68芯片组上开启(还支持移动芯片组HM67、QM67)。
RST:(Rapid Storage Technology),
DSA:动态储存加速功能(Dynamic Storage Accelerator,简称DSA)
Z87(芯片组):支持超频,支持SLI或CF,支持RAID,接口丰富
H87(芯片组):不支持超频,部分只支持CF,支持RAID,接口略少
B85(芯片组):不支持超频,不支持CF或SLI,不支持RAID,接口更少
=========================================================
目前旗舰级的CPU芯片组为:X79(最高端)
只支持Intel的CPU 插槽类型为LGA 2011的CPU
APU主板目前有A75和A55两种,A75具备原生的SATA3.0和USB3.0接口,而A55则没有,性能和扩展性方面,两者都是一样的,
需要搭配A4/A6/A8 APU或者X4 641等FM1接口的新速龙II才能使用,无法搭配AM3接口的速龙II、羿龙II使用。实际上为了市场划分的需要,很多A55都会做成双内存插槽,扩展性能相对A75会差一些,价格略低一点。
对于选择APU和新速龙II X4 641等FM1接口产品的用户,A75是最佳的选择,因为它在比A55略贵50~100元的基础上提供了速度快10倍的原生USB3.0接口。
=========================================================
FM2/FM2+ CPU和FM2/FM2+ 主板,属于淘汰以及极端冷门级别,脑子没问题就不要去配了。
虽然AM2/AM2+ CPU已经是5~6年前的产品,但是一些用户还是在使用它们,比如用作下载机或者放在家里给长者上网使用。这么用下来其实也没啥问题,因为这些场合对CPU性能要求并不高.
老CPU的最佳选择:AM2+接口780G/790G等
AMD AM2和AM2+两种接口有着比较好的交叉兼容性,AM2 CPU可以支持AM2+接口主板,AM2+ CPU也可以在AM2主板上使用,不过它们两者都只能支持DDR2内存,因此,对于还持有AM2/AM2+ CPU的用户,换主板最佳选择是采用DDR2内存插槽的AM2+主板。
=========================================================
FM3/FM3+ CPU和FM3/FM3+ 主板
推土机平台采用AM3的改进版AM3+接口,和AM2/AM2+关系相似,AM3/AM3+也有很好的互换性,AM3 CPU可以在AM3+主板上用,而AM3+ CPU也能在AM3上使用,只是会有一些限制。
AM3+主要有三种主板,从最低端到最高端分别为970、990X和990FX,主要区别在于多卡支持,970不支持多卡,990X是x8+x8双卡,而990FX则是x16+x16双卡,目前市场主要卖的是970。此外,市面还有一些870、880G之类旧芯片组用AM3接口提供推土机支持的主板,不过由于供电设计较弱、需要刷新BIOS,而且AM3供电能力可能不能完美满足8核级别推土机,因此并不推荐给主流用户。
对于选择用X4 955或者FX-6200级别CPU装机的用户,最值得推荐的是AMD的970主板,它能提供原生SATA3.0接口、RAID功能、高频内存支持和更好的CPU供电支持,而如果用户使用FX-4100这些功耗不高的产品,并且不超频,那么用刷新了BIOS的880G/870也是可以的,只是这个级别的推土机不大值得推荐。
对于APU和推土机CPU来说,大家分别选择A75和970主板即可,他们都是新东西,配新主板应该不难理解。比较容易糊涂的是新速龙II,AM3接口的速龙II目前已经停产退市了,现在的速龙II X4 641、速龙II X4 651K之类CPU实际是屏蔽了显示部分的APU,因此必须搭配A75搭配,大家不要买了AM3/AM3+主板来搭配。
=========================================================
买APU或者X4 641之类FM1接口CPU,必选A75主板;买推土机CPU,最好选AM3+接口的970主板;老CPU换主板,AM2+主板是最佳选择;AM2+老主板升级新CPU,需要有BIOS支持和DDR3内存插槽;AM3老主板升级新CPU,羿龙II X4 955和羿龙II X6 1090T是好选择。
=========================================================
小结:最好选AM3+接口“以上”的970主板。其实除了FX4XXX/FX6XXX。别的就是FX8XXX我更推荐970以上 的主板。