0%

可能很多朋友都没有注意到,wordpress后台有一个快速发布工具,它的主要作用就像系统描述的:快速发布功能是个运行于浏览器上书签工具按钮,能摘取任意网页上的文字、图像和视频。在您保存或发布文章之前都可以通过快速发布功能继续编辑、添加更多内容。只要我们提前做好设置,在更新wordpress博客的时候就不用每次都要打开网站后台,只需点击书签或收藏中的“快速发布”,然后输入用户名和密码就可以快速发布你的博文了。 下面就一起来看看如何使用wordpress快速发布工具。

刚开始是在“工具”菜单里的“可用工具”里面可以找到,最初我接触这个工具的时候是在2016年初,然后两年后的今天我突然想用这个工具发现找半天找不到,插件里面搜索快速发布无果,而且google也没有结果。
只找到一个官方的页面:https://codex.wordpress.org/zh-cn:工具页面
没错,就是上面原本Press This那个按钮。于是我尝试着去插件里面搜索“Press This”,果然第一个就是

注意:搜索“快速发布”是找不到的

启动该插件后我们就可以在工具菜单中找到它了
github项目地址:https://github.com/WordPress/press-this
下面我们一起来享受它的便利吧

最近,Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,从 4.9 开始,Linux 内核已经用上了该算法。根据以往的传统,Google 总是先在自家的生产环境上线运用后,才会将代码开源,此次也不例外。
根据实地测试,在部署了最新版内核并开启了 TCP BBR 的机器上,网速甚至可以提升好几个数量级。
秋水大神根据目前三大发行版的最新内核,开发了一键安装最新内核并开启 TCP BBR 脚本。

本脚本适用环境

系统支持:CentOS 6+,Debian 7+,Ubuntu 12+
虚拟技术:OpenVZ 以外的,比如 KVM、Xen、VMware 等
内存要求:≥128M
日期  :2017 年 10 月 28 日

关于本脚本

1、本脚本已在 Vultr 上的 VPS 全部测试通过。
2、当脚本检测到 VPS 的虚拟方式为 OpenVZ 时,会提示错误,并自动退出安装。
3、脚本运行完重启发现开不了机的,打开 VPS 后台控制面板的 VNC, 开机卡在 grub 引导, 手动选择内核即可。
4、由于是使用最新版系统内核,最好请勿在生产环境安装,以免产生不可预测之后果。

使用方法

使用root用户登录,运行以下命令:

1
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。
重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:
uname -r

查看内核版本,含有 4.13 就表示 OK 了
sysctl net.ipv4.tcp_available_congestion_control

返回值一般为:
net.ipv4.tcp_available_congestion_control = bbr cubic reno
sysctl net.ipv4.tcp_congestion_control
返回值一般为:
net.ipv4.tcp_congestion_control = bbr
sysctl net.core.default_qdisc

返回值一般为:
net.core.default_qdisc = fq
lsmod | grep bbr

返回值有 tcp_bbr 模块即说明 bbr 已启动。注意:并不是所有的 VPS 都会有此返回值,若没有也属正常。

参考链接:
https://github.com/google/bbr/blob/master/Documentation/bbr-quick-start.md
http://elrepo.org/tiki/tiki-index.php
http://kernel.ubuntu.com/~kernel-ppa/mainline/
转载自:秋水逸冰 » 一键安装最新内核并开启 BBR 脚本

这几年网盘的关闭的形势,让我又把之前的下载文件放在了一个提供文件存储服务器的主机商,例如阿里云OSS、腾讯云COS等,虽然存储是有保障了但是这毕竟是付费的存储,文件下载又是高耗流量的服务,一天十几个GB的流量也是让人承受不了。

有朋友就给我推荐了两个优秀目录列表程序Directory Lister和h5ai。通过试用,发现Directory Lister安装使用最简单,兼容性最广。而h5ai功能虽然很强,可以直接在线预览视频、图片、音乐等,效果很炫,但是显得太花哨。相比之下我喜欢DL的简洁,不需要花里花哨的东西。如果你也和我一样喜欢简洁的程序,那赶紧试试Directory Lister吧

安装使用

Directory Lister官网:http://www.directorylister.com/

  1. 首先我们先下载Directory Lister,并上传到自己的服务器,并解压。

  2. 标题是在 resources/themes/bootstrap/index.php 中修改,底部文件则是同目录的 default_footer.php 文件。

  3. 然后把你要列出显示的目录和文件上传到和 resources 文件夹平级的目录下。
    [/v_act]

Directory Lister不显示文件/文件夹/目录的解决方法

如果用的LNMP环境,不显示文件和目录的话,可能是PHP.ini配置的禁用函数有scandir ,去掉即可

1
2
3
sed -i 's/,scandir//g' /usr/local/php/etc/php.ini  # 取消scandir函数禁用

/etc/init.d/php-fpm restart # 重启 PHP生效

如何隐藏目录和文件

编辑 resources/config.php 文件,里面标注有 Hidden files 模块

一、阿里云

按照下面顺序执行一遍就可以了,遇到权限问题,请以root权限运行。

1
2
3
4
5
6
7
8
9
10
11
wget http://update.aegis.aliyun.com/download/quartz_uninstall.sh

chmod +x quartz_uninstall.sh

./quartz_uninstall.sh

rm -f /usr/sbin/aliyun-service

rm -rf /usr/local/aegis

killall -9 aliyun-service > /dev/null 2>&1

来源:https://www.alibabacloud.com/help/zh/doc-detail/31777.htm?spm=a3c0i.o31778zh.b99.9.f727425tcmrSN

二、腾讯云

1
2
3
4
5
6
7
8
9
10
11
./usr/local/qcloud/stargate/admin/uninstall.sh

./usr/local/qcloud/monitor/barad/admin/uninstall.sh

./usr/local/sa/agent/uninstall.sh

rm -rf /usr/local/qcloud/

rm -rf /usr/local/sa/

rm -rf /usr/local/agenttools

来源:https://www.qcloud.com/document/product/248/2259

出现这样的情况应该先检查php是否安装完成,然后检查nginx的配置文件是否配置了php。
找到Nginx的配置文件,例如我的是:/etc/nginx/conf.d/default.conf
把以下代码端前的#去掉

1
2
3
4
5
6
7
# 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;
# }

然后很关键的一点就是重启系统!是的,你没有看错,就是要重启系统,即便restart nginx也不好使。我之前就是重启了好几次没有解决,后来百度发现不止我一个人是这样。

先查看 centos 版本
cat /etc/centos-release

检查是否安装了epel,没有安装epel的话,先执行,如果安装就跳过。
yum -y install epel-release

删除之前的 php 版本
yum remove php* php-common

rpm 安装 Php7 相应的 yum源
CentOS/RHEL 7.x:

1
2
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

CentOS/RHEL 6.x:

1
rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

查看php安装了那些拓展模块
php -m

yum安装php7
yum install php70w php70w-opcache # 安装其他你需要的拓展模块

安装其他插件(选装)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
php70w
php70w-bcmath
php70w-cli
php70w-common
php70w-dba
php70w-devel
php70w-embedded
php70w-enchant
php70w-fpm
php70w-gd
php70w-imap
php70w-interbase
php70w-intl
php70w-ldap
php70w-mbstring
php70w-mcrypt
php70w-mysql
php70w-mysqlnd
php70w-odbc
php70w-opcache
php70w-pdo
php70w-pdo_dblib
php70w-pear
php70w-pecl-apcu
php70w-pecl-imagick
php70w-pecl-xdebug
php70w-pgsql
php70w-phpdbg
php70w-process
php70w-pspell
php70w-recode
php70w-snmp
php70w-soap
php70w-tidy
php70w-xml
php70w-xmlrpc

重启 Apache
service httpd restart

配置文件在 /etc/php.ini

首先是介绍

Nginx 是一个很强大的高性能Web和反向代理服务器
当然他吸引我的是轻量,之前用的是lnmp.org的一键包,但今天我只需要nginx服务即可,所以我简单记录一下

开始配置

第一步,在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo:

1
2
3
cd /etc/yum.repos.d/

vim nginx.repo

如果出现vim: command not found,就使用yum install vim安装或者换成vi

填写如下内容:

1
2
3
4
5
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

保存,则会产生一个/etc/yum.repos.d/nginx.repo文件。

下面直接执行如下指令即可自动安装好Nginx:
yum install nginx -y

安装完成,下面直接就可以启动Nginx了:
service nginx start

现在Nginx已经启动了,直接访问服务器就能看到Nginx欢迎页面了的。

如果还无法访问,则需配置一下Linux防火墙:

1
2
3
iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
service iptables save
service iptables restart

Nginx的相关命令

1
2
service nginx start # 启动Nginx服务
service nginx stop # 停止Nginx服务

至此,Nginx已经全部配置安装完成。

Nginx配置信息

网站文件存放默认目录
/usr/share/nginx/html

网站默认站点配置
/etc/nginx/conf.d/default.conf

自定义Nginx站点配置文件存放目录
/etc/nginx/conf.d/

Nginx全局配置
/etc/nginx/nginx.conf

介绍

frp是fast reverse proxy的缩写,其可用于反向代理和内网穿透,支持tcp, udp, http, https 协议,这比ngrok还多了个udp。并且发布以来广受欢迎,积累了不少用户,作者也是很勤快,一直在修复bug和更新新特性。

frp项目主页

https://github.com/fatedier/frp
并且,作者是个中国人,所以在GitHub上还有中文文档
https://github.com/fatedier/frp/blob/master/README_zh.md
在你决定用frp之前,先仔细认真的把文档看一遍,虽然很多人都不喜欢看大篇幅的文档,但是这很有必要,有时候你遇到问题久久不能解决的时候,答案恰好文档里有

frp 的作用

1、利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
2、对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
3、利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

安装配置

将 frps 及 frps.ini 放到具有公网 IP 的机器上。
将 frpc 及 frpc.ini 放到处于内网环境的机器上。

外网主机

1
2
3
4
5
#示例版本为0.16(更新于2018.1.30),可前往项目主页releases页面下载最新版本
wget https://github.com/fatedier/frp/releases/download/v0.16.0/frp_0.16.0_linux_amd64.tar.gz
tar -zxvf frp_0.16.0_linux_amd64.tar.gz
cd frp_0.16.0_linux_amd64
vim myfrps.ini

服务端配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
[common]
#frp服务器监听地址,如果是IPV6地址必须用中括号包围
bind_addr = 0.0.0.0
#frp服务器监听端口
bind_port = 7000

#kcp的udp监听端口,如果不设那就不启用
#kcp_bind_port = 7000
#指定使用的协议,默认tcp,可选kcp
#protocol = kcp

#如果要使用vitual host,就必须设置
#vhost_http_port = 80
#vhost_https_port = 443

#Web后台监听端口
dashboard_port = 7500

#Web后台的用户名和密码
dashboard_user = admin
dashboard_pwd = admin

#Web后台的静态资源目录,调试用的,一般不设
#assets_dir = ./static

#日志输出,可以设置为具体的日志文件或者console
log_file = /var/log/frps.log

#日志记录等级,有trace, debug, info, warn, error
log_level = info
#日志保留时间
log_max_days = 3

#启用特权模式,从v0.10.0版本开始默认启用特权模式,且目前只能使用特权模式
#privilege_mode = true

#特权模式Token,请尽量长点且复杂
privilege_token = 12345678

#特权模式允许分配的端口范围
privilege_allow_ports = 2000-3000,3001,3003,4000-50000

#心跳超时,不用改
#heartbeat_timeout = 90

#每个代理可以设置的连接池上限
#max_pool_count = 5

#认证超时时间,一般不用改
#authentication_timeout = 900

#如果配置了这个,当你的模式为http或https时,就能设置子域名subdomain
#subdomain_host = frps.com

#是否启用tcp多路复用,默认就是true,不用管
#tcp_mux = true
</pre>
保存上面的配置后,使用以下指令启动frp服务端
<pre class="prettyprint linenums" >
nohup ./frps -c ./myfrps.ini &

客户端配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
[common]
#frp服务器地址
server_addr = 1.2.3.4
#frp服务器端口
server_port = 7000
#特权模式Token
privilege_token = 12345678
#转发SSH
[ssh]
type = tcp
#可以指定为其它IP,默认是本地
#local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
#启用加密
use_encryption = true
#启用压缩
use_compression = true

#转发Web
[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com
#修改header中的host
#host_header_rewrite = dev.yourdomain.com
#启用简单HTTP认证
#http_user = abc
#http_pwd = abc
#在服务端配置了subdomain_host的情况下用于自定义二级域名
#subdomain = test
#在存在多个相同域名的情况下通过请求的URL路由到不同的配置
#locations = /news,/about
# 加密 , 避免流量被识别
use_encryption = true
# 压缩 , 节省带宽 . 会占用服务器和客户端一点点的CPU
use_gzip = true

#转发DNS请求
[dns]
type = udp
local_ip = 8.8.8.8
local_port = 53
remote_port = 6000

#转发Unix域套接字(这儿是Docker)
[unix_domain_socket]
type = tcp
remote_port = 6000
plugin = unix_domain_socket
plugin_unix_path = /var/run/docker.sock

#HTTP代理
[http_proxy]
type = tcp
remote_port = 6000
plugin = http_proxy
#配置http代理的简单认证
#plugin_http_user = abc
#plugin_http_passwd = abc

保存以上配置,启动方式同服务端

1、利用Toast对象的show()方法弹出提示
例如:

1
Toast.makeText(this, "You cannot have more than 100 coffees", Toast.LENGTH_SHORT).show();

2、intent是一个可以要求其他应用组件完成某些特定动作的消息组件,包括其他应用中的activity
一个intent包含action和data

3、URI(uniform resource identifier)构建数据的标准化方法

4、intent.putExtra(Intent.EXTRA_EMAIL, addresses);
Intent.EXTRA_EMAIL 包含所有“主送”收件人电子邮件地址的字符串数组。

5、styles.xml用来定义一组样式资源

6、style应用于一个单一的View
Theme应用于activity或者application中的所有View

7、AndroidManifest.xml 应用清单
清单文件向 Android 系统提供应用的必要信息,系统必须具有这些信息方可运行应用的任何代码。

1、当你的app正在编译时,Android里有一个工具叫做aapt,aapt 会生成 一个名为 R 的类,R.java里面包含您的 res/ 目录中所有资源的资源 ID。 每个资源类型都有对应的 R 子类(例如,R.drawable 对应于所有可绘制对象资源),而该类型的每个资源都有对应的静态整型数(例如,R.drawable.icon)。这个整型数就是可用来检索资源的资源 ID

2、引用资源两种方式:(1)R . 资源类型 . 资源名字(2)@资源类型/资源名字
3a

3、@Override 重载父类方法

4、onCreate方法

1
2
3
4
5
6
7
TextView textView = new TextView(this);
textView.setText("Wow!");
textView.setTextSize(56);
textView.setTextColor(Color.GREEN);
textView.setMaxLines(2);//限制TextView最多显示2行文字,多余的舍去

setContentView(textView);

5、调用findViewById()方法,传入一个我们所需View的资源id,这个方法会遍历真个视图层去寻找拥有这个id的View
例如:

1
2
<pre class="prettyprint linenums" >
TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view);

6、打印的log以快速找到出错点:

1
Log.v("the price is"+price);

7、获得CheckBox的Boolean值:

1
2
CheckBox whippedCreamCheckbox = (CheckBox)findViewById(R.id.whipped_cream_checkbox);
boolean hasWhippedCream = whippedCreamCheckbox.isChecked();

8、或者EditText的String值:(链式调用)

1
2
EditText nameField = (EditText)findViewById(R.id.name_field);
String name = nameField.getText().toString();