Hugh's Blog

DD 重装系统

使用萌咖脚本:https://moeclub.org/2018/04/03/603 默认用户:root,默认密码:MoeClub.org # redhat, centos ...

Linux 安装 PHP

Linux 选择安装特定 PHP 版本,做个记录。 CentOS 安装 PHP 安装源: # centos 7 yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm # centos 6 # yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm # yum install http://rpms.remirepo.net/enterprise/remi-release-6.rpm 安装 PHP: # yum 命令包 yum install yum-utils # 可以选择版本 # yum-config-manager --enable remi-php55 [Install ...

clickhouse-copier 使用

clickhouse-copier 是官方的数据迁移工具,主要用在多个集群之间的数据迁移,当然单个集群也适用。 本地使用 Docker 搭建测试集群:clickhouse-cluster-e ...

ClickHouse 笔记

ClickHouse 是一款开源的 OLAP 列存储数据库,下面是一些使用笔记,做个记录。 常用语句 -- 创建表 create table temp (`EventDate` DateTime, `UserId` UInt32) engine = MergeTree() partition by toYYYYMM(EventDate) order by EventDate; -- 创建分布式复制表 create table temp (`EventDate` DateTime, `UserId` UInt32) ...

CentOS 7 docker 容器无法访问宿主机

最近在 CentOS 7 下使用 docker,出现 No route to host 这个问题,查了下,应该是由于 CentOS 7 默认使用 firewalld 造成的,解决方法添加白名单就行,做个记录。 # 主要命令 firewall-cmd --help ...

阿里云卸载监控等服务

卸载安骑士 wget http://update.aegis.aliyun.com/download/uninstall.sh chmod +x uninstall.sh ./uninstall.sh wget http://update.aegis.aliyun.com/download/quartz_uninstall.sh chmod +x quartz_uninstall.sh ./quartz_uninstall.sh uninstall.sh #!/bin/bash #check linux Gentoo os var=`lsb_release -a | grep Gentoo` if [ -z "${var}" ]; then var=`cat /etc/issue | grep Gentoo` fi if [ -d "/etc/runlevels/default" -a -n "${var}" ]; then LINUX_RELEASE="GENTOO" else LINUX_RELEASE="OTHER" fi stop_aegis(){ killall -9 aegis_cli >/dev/null 2>&1 killall -9 aegis_update >/dev/null 2>&1 killall -9 aegis_cli >/dev/null 2>&1 killall ...

Docker ELK 配置

docker-compose.yml version: "3.3" services: elasticsearch: image: elasticsearch:6.4.3 environment: LOGSPOUT: ignore ES_JAVA_OPTS: "-Xmx256m -Xms256m" volumes: - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro ports: - "9200:9200" logstash: image: logstash:6.4.3 environment: LOGSPOUT: ignore volumes: - ./temp.log:/var/log/temp.log - ./logstash.conf:/etc/logstash.conf ports: - "5000:5000" links: - elasticsearch command: -f /etc/logstash.conf kibana: image: kibana:6.4.3 environment: LOGSPOUT: ignore ELASTICSEARCH_URL: http://elasticsearch:9200 volumes: - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro ports: - "5601:5601" links: - elasticsearch elasticsearch.yml http.port: 9200 network.host: 0.0.0.0 discovery.type: single-node logstash.conf input { file { path => ...

Python 简单实现多线程任务队列

使用队列实现一个简单的多线程任务。 from queue import Queue from threading import Thread class TaskQueue(Queue): def __init__(self, num_workers=1): Queue.__init__(self) self.num_workers = num_workers self.start_workers() def start_workers(self): for _ in range(self.num_workers): t = Thread(target=self.do_task) t.daemon = True t.start() def add_task(self, func, *args, **kwargs): args = args or () kwargs = kwargs or {} self.put((func, args, kwargs)) def do_task(self): while True: ...

控制 Goroutine 的并发数量

在 Go 中创建协程的成本很低,为了避免造成资源的浪费,有必要限制协程的数量,下面是一个简单的实现。 package main import ( "fmt" "sync" "time" ) var wg = sync.WaitGroup{} var jobs = make(chan int, 2) func main() { // 设 ...

Python 连接池简单实现

使用队列实现一个简单的连接池。 from queue import Queue class Client(object): def query(self, sql:str): return ['ok'] def disconnect(self): pass class MyClient(object): def __init__(self): self.pool = None self._client = Client() def query(self, sql:str): try: data = self._client.query(sql) except: data = [] if self.pool is not None: self.pool.free(self) return data def disconnect(self): self._client.disconnect() class MyClientPool(object): def __init__(self, max_conns=5, max_timeout=5): self.max_conns = max_conns ...

虚拟机下无法访问宿主机

开发环境一直都是 Hyper-V 下虚拟机,但是最近不知道为什么,虚拟机无法访问宿主机,如虚拟机 IP 段为 237,在虚拟机内无法访问 128 或者 137 等 IP 段。 最后发现是某 ...

PHP 转换编码带 BOM 的问题

PHP 在转换文件编码时,如果遇到带有 BOM 头的话,会导致其他应用读取到的内容出现乱码,需要做单独的处理。 $content = file_get_contents('in.txt'); $encode = mb_detect_encoding($content, ['ASCII', 'GBK', 'GB2312', 'BIG5', 'UTF-8']); if ($encode !== 'UTF-8') { $content = iconv($encode, 'UTF-8', $content); } ...

CentOS 6.9 下编译安装 httpd2.4 及 PHP5.6

服务器环境为 CentOS 6.9,在 docker 中测试: docker pull centos:6.9 docker run -d -it --name centos-69 -p 18880:80 -p 18443:443 centos:6.9 bash docker exec -it centos-69 bash 进入到测试环境中: yum update # service 命令可能会缺失 yum install initscripts httpd 2.4 编译 # 查看当前安 ...

MySQL 组合索引使用

关于组合索引的使用,作个记录。 组合索引是指一个索引中包含多个列,当查询条件包含多个列时,需要注意左前缀原则,即查询的条件需要严格按照索引列的 ...

iptables 使用

iptables 用于管理 Linux 防火墙配置,最近需要用到,作个记录。 主要内容来自:iptables 命令,Linux iptables 命令详解。 四表五链 四表 filter: iptables 默认表,具有链(I ...

Golang 捕获 Ctrl+C 信号

今天在用 Golang 写一个小工具,类似控制台输入数据然后显示结果,不过打包出来的 exe 文件在得出结果之后就马上关闭窗口了,除非使用命令行来打开文件,网上查 ...

Linux 下使用 Swap 文件

今天在使用 composer 升级库版本时,报错:proc_open(): fork failed - Out of memory,应该是机器内存不足,即使停掉了网站所有进程之后内存还是不够, ...

通过 fdisk 对磁盘分区扩容

最近 Hyper-V 里面虚拟机的硬盘容量不够用了,便在管理器里直接修改虚拟硬盘的大小,但是进去虚拟机查看并没有生效,网上查了下,还需要手动修改分区大小,这 ...

PHP cURL Content Type

最近在用 PHP cURL 发送数据给接口,但是接口并没有收到数据,返回了错误信息。 使用 curl_getinfo 查看请求头,发现 Content-Type 的值是 multipart/form-data,而 ...

使用 Hyper-V 配置开发环境

以前的开发环境是 WSL,最近换了台式,便决定使用 Hyper-V 安装虚拟机来作为开发环境。 系统选择的是 Ubuntu Server 18.04,安装过程很简单,添加配置安装系统就行 ...

PHP LDAP 连接超时

最近在使用 PHP 连接 LDAP 服务器做用户验证,在测试域控服务器的时候,设置了超时选项,如果超时则表示无法连接服务器,一般来说,有如下的代码: $conn = @ldap_connect('ldap://1.1.1.1:389'); ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, ...

laravel-swoole 使用

最近常用的 PHP 框架是 Laravel,而 PHP 框架本身启动都要加载不少文件,往往 QPS 不会很高。 Swoole 扩展本身就常驻内存,异步执行,可以为项目提高不少性能, ...

WSL 设置字体失败

WSL 是我目前常用的 Linux 环境,在设置自定义字体保存的时候,某些情况下会失效,例如 Vim 编辑文件的时候,字体会还原成默认的。 这个问题修改注册表可以解决( ...

MySQL 5.7 group by 问题

最近在使用 MySQL 碰到一个问题: ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.post.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 查了下,是因为 MySQL 5.7 默认开启 only_full_group_by 的原因,可以使用 ...

WSL 文件权限问题

最近在 WSL 下碰到 PHP chmod(): Operation not permitted 这个问题,看起来是文件权限的问题,不过查看该文件的权限是 777,不知道是 Bug 还是什么原因导致的,Google 找了下,有 ...

MySQL 分段统计

今天碰到一个有意思的题目,关于分段统计的,例如统计成绩在 1-10,11-20,21-30… 的人数,利用 ceil 函数一条语句就能解决。 ...

PHP 数据库并发处理

下面是一些 PHP 数据库并发的简单处理方案,作个记录。 数据库信息 create table goods( id INT NOT NULL AUTO_INCREMENT, stock INT NOT NULL DEFAULT 0, PRIMARY KEY (id) ); insert into goods(stock) values(100); 正常流程 检查库存,更新库存。 try { $pdo = new ...

PHP + Redis 简单消息队列

消息队列在高并发的时候,可以缓解对数据库的压力,下面使用 PHP + Redis(list) 简单模拟下这个过程。 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $type = isset($_GET['type']) ? 'read' : 'write'; switch ($type) { case 'write': // 随机获取内容,写入队 ...

Redis 有序集合使用

zset 是 Redis 的一种数据结构,为有序集合,每次插入新的值都会根据权重重新排序。 安装 sudo apt-get install redis-server # 安装 redis-server --daemonize yes # 后台启动 redis-cli # 进入命令行界面 使用 添加新值:za ...

PHP 排序算法

冒泡排序 冒泡排序比较简单,每一次循环从前往后依次比较,如果前者比后者大,则交换位置,就像泡泡越来越大一样,重复上面的循环,直到数组有序,最多 ...

PHP 设计模式

设计模式在很多语言都有用到,PHP 也不例外,下面是一些常见的 PHP 设计模式,做个记录。 工厂模式 平常我们获取实例,都是使用 new 来获取,如果在后期对类 ...

youtube-dl 简单使用

最近需要下载 YouTube 视频,使用的是 youtube-dl,做个记录。 需要注意的是,YouTube 的一些资源都是音频视频分开的,需要分别下载。 # 查看帮 ...

PHP Session 锁阻塞请求问题

PHP Session 默认是用文件存储的,当 Session 初始化时,即调用 session_start() 或者 session.auto_start 设置为 true 时,PHP 会在 session.save_path 下创建一个文件(如果是新会话)并锁定,然后把 Cookie ID 发送给服务器,例 ...

WordPress 单篇文章添加分页

问题:在单篇文章模板调用分类查询会 301 跳转回到原页面。 例如:自定义文章类型 author,模板为 single-author.php,分页链接 /author/example/page/2 会 ...

ffmpeg 简单使用

最近需要用到 ffmpeg 来压缩视频,做个记录。 # 查看视频编码等信息 ffmpeg -i input.mp4 # 压缩视频 通过调整编码及码率 ffmpeg -i input.mp4 -vcodec libx264 -acodec copy -crf 28 output.mp4 ffmpeg -i input.mp4 -vcodec libx265 -acodec copy -crf 20 output.mp4 # 压缩视频 ...

Docker + MySQL 主从环境

只是简单的搭建环境进行测试,做个记录。 MySQL 配置 建立相应的 cnf 配置文件,注意 server_id 需要保证唯一。 master/my.cnf [mysqld] server_id=1 log-bin=mysql-bin read-only=0 ## 指定同步数据库 # binlog-do-db=example ## 忽略同步数据库 # replicate-ignore-db=mysql # replicate-ignore-db=sys ...

Docker + Nginx 简单模拟负载均衡

只是简单的单机模拟负载均衡,做个记录。 建立相应的静态文件 mkdir html1 echo '<h1>Hello World 1</h1>' > ./html1/index.html # 同样的建立 html2, html3 建立 Nginx 配置文件 default.conf upstream app { server nginx1:80; server nginx2:80; server nginx3:80; } server { listen 80; server_name localhost; location / ...

Nginx 配置自签名的 SSL 证书

配置自签名的 SSL 证书很简单,做个记录。 生成证书,一行命令就行: mkdir certs && cd certs openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout selfsigned.key -out selfsigned.crt # Output Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:GD Locality Name (eg, city) []:GZ Organization Name (eg, ...

Linux 搭建 Git 服务器

搭建 Git 服务器很简单,做个记录。 首先添加 git 用户并配置: sudo adduser git su git cd mkdir .ssh && chmod 700 .ssh touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys # 添加公钥到 authorized_keys,以便登录 ...

OpenCart 编辑器上传问题

今天有个 OpenCart 网站出现了一个问题:文章编辑器上传图片失败。本来以为是修改代码过程中引发了 Bug,但是下载官方代码试了下,一样的问题,版本是 1.5 ...

Yii2 生产环境性能优化

最近在使用 wrk 进行网站压力测试,文章 里面测试本站时 QPS 只有 15 左右,而刚好是周末,记录一下优化的过程。 首先使用缓存,本站选择了 Redis,Yii2 ...

MySQL 交集、并集与差集

最近碰到一个简单的需求:获取多个分类下的文章,中间有个关联表;有点类似于根据分类表与文章表获取交集 (关联表) 的情况,过程也简单,作下记录。 使 ...

MySQL 保存 4 字节字符问题

今天在保存内容到数据库的时候报如下错误: Incorrect string value: '\xF0\xA2\xB9\x82\xE5\xB8...' for column 'content' at row 1 本来还以为是多出来非法字符或者字符编码的问题,但试过了都不是,而 \xF0\xA2\xB9\x82\xE5\xB8 这些都是由字符 ...

Git 合并分支忽略 commit 记录

平常在测试的时候会开启测试分支,但是不能保证每次提交的 commit log 都是有意义的,而在合并测试分支的时候需要忽略掉这些 commit log,简单的做法是在合并的时 ...

Docker 笔记(持续更新)

安装 # docker curl -sSL https://get.docker.com/ | sh docker -v sudo groupadd docker sudo usermod -aG docker $USER groups $USER # 重新登录或重启机器之后生效 # docker-compose # https://docs.docker.com/compose/install/#install-compose sudo curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version 常用命令 # 容器 docker ps -a docker start {id|name} docker restart {id|name} docker ...

PHP 实现异步调用

PHP 实现异步调用在客户端的话比较简单,比如在页面加载完成后 jQuery 发送 AJAX 请求,或者嵌入到 img 标签,然后 src 指向请求,之前写的这篇文章 Nginx + Google Analytics 配置 就是使用 ...

MySQL 笔记(持续更新)

中文乱码 # 登录 mysql -u root -p # 查看目前所有编码 mysql> show variables like 'char%'; 会显示类似下面的信息: +--------------------------+-------------------------------+ | Variable_name | Value | +--------------------------+-------------------------------+ | character_set_client | gbk | | character_set_connection | gbk | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server ...

Nginx 用户认证

一般的 Web 服务器都提供了用户认证登录系统,用于限制用户访问某些路径,需要登录认证之后才能继续访问网站 (比如后台管理),开启也很简单,以 Nginx 为例, ...

PHP 调试追踪

今天有个 WordPress 的网站不能登录后台,打开页面显示下面的错误的信息: Fatal error: Call to undefined function wp_get_current_user() in /public_html/wp-includes/user.php on line 209 看了下代码,发现网站的 WordPress 版本才 3.5.1,现在最新版本为 ...

WordPress 对上传的文件进行预处理

WordPress 上传的文件保存名称一般为原始名称不经过修改,除非遇到同名,这样保存的文件有时候会碰到一些小问题,例如带中文或者空格,浏览器可能不能识别或者 ...

Nginx + Google Analytics 配置

网站添加 Google Analytics 一般是在页面中添加 Tracking Code,而加载进来的 analytics.js 脚本有 11 KB 的大小,如今我每个页面的大小大概是 5 KB 左右,相对来说有点大了,另外还有一些 ...

auth.log 记录大量 cron session 日志

今天在查看 auth.log 发现了大量 cron session 的日志,每隔一个小时就出现几次,看起来是定时任务在调用时以 root 用户执行而记录下来了,不过我的定时任务也没有这么频繁, ...

SSH 密钥登录

一般登录 VPS 用密码的话容易被人暴力破解,如果换成密钥登录会好很多,配置过程也简单,做个记录。 生成密钥,最好在 Linux 下操作 # 中间会询问密钥保存目录, ...

Nginx location 配置笔记

对于 Nginx 的配置一直都是一知半解的,出问题总是弄半天,今天遇到了 add_header 不生效的问题,就顺便把一些常用配置做下记录吧。 location 正则 = 精确匹配,如果匹配,则停 ...

Shadowsocks 使用 BBR 加速

之前有使用过 Vultr JP 节点的 VPS 来部署 SS,但是时不时丢包,用得不是很顺畅,最近看到 BBR 很好用的样子,配置简单且开源,决定试一试,部署很简单,主要是升 ...

数据库密码包含 HTML 实体的一个小坑

今天安装 OpenCart 模板的时候,在输入数据库信息这一步报账号密码错误,但是测试过数据库是能够连接的,感觉好奇怪 定位到安装模板时数据库连接的代码 (主题支 ...

CSS 把 Footer 固定在页面底部

有些网站要求当内容不够时把底部固定,实现方法使用的是 Yii 框架自带的,提取出来作个记录 基本 DOM 结构 <html> <body> <div id="wrap"> <header>Header</header> </div> <footer>Footer</footer> </body> </html> 底部标签 footer 放在主内容 <div id="wrap"> 外面, ...

使用 Let's Encrypt 来部署 HTTPS

最近配置好了服务器,也买了域名,顺便也把 HTTPS 部署好,反正以后都是要部署的。 网上找了不少关于这方面的教程,选择了 Let’s Encrypt 这个免费好用的证书签发服务, ...

PHPExcel 单元格日期转换

今天在使用 PHPExcel 时又遇到单元格是日期的问题,在转换成 PHP 日期格式总是转换成当天的日期,即使两个单元格日期数值不一样还是返回当前日期,网上找的大多数 ...

远程 SSH TAB 不能补全

最近在使用 PuTTY 连接服务器的时候,TAB 不能补全,而且方向键也没用,按了之后只显示字母,查了下原来补全是 bash 下的功能,而我创建的用户默认 shell 是 sh, ...

使用 Git Hooks 自动部署代码

自动化部署代码主要是用 Git Hooks,分别需要在服务器与本地开发环境进行配置。 服务器配置 首先建立一个裸仓库来作为触发钩子,这个仓库是要给本地开 ...

Git 回滚到旧的提交

git reset,会清除 commit 记录,一般在仓库还没提交到远程时使用 # ~ 加数字指回滚最近几次的提交 git reset --hard HEAD~1 # 强制推送 git push -f origin master git revert,不会清除 ...

PHP 下子域名共享 Cookies

PHP 在子域名下共享 Cookies,比如登录信息。 直接使用 PHP 来处理 ini_set('session.cookie_path', '/'); ini_set('session.cookie_domain', '.domain.com'); 在 Yii2 下,需要在组件中对 session 与 user 进行设置 'components' => [ 'session' => [ // ... 'cookieParams' => [ 'path' => '/', 'domain' => ".domain.com", ...

WordPress 文章自定义 wpautop 过滤内容

在使用 WordPress 开发过程中,有的时候需要对主题进行二次开发,而主题有时候会依赖 WordPress 的 wpautop 来对内容进行过滤,特别是后台使用可拖动编辑器的情况下,如果某些页 ...

VirtualBox 下 Ubuntu 设置上网

最近在 VirtualBox 下安装 Ubuntu 玩,但是上网却是时好时坏,对 Linux 下的网络也不怎么懂,网上找了篇教程,暂时还可以用,作个记录。 环境 Windows 10, 虚拟机 Ubuntu Server 1604 有时候网络 ...

WordPress 更换域名时丢失 Widgets 数据

今天在对一个 WordPress 网站更换域名时,直接对 sql 文件进行域名替换,更新完之后网站的一些内容丢失了,发现大都是 Widgets 的内容。 网上找也有类似的情况,大概是因为 ...

php.ini 配置可修改范围

今天在修改 PHP 配置值 upload_max_filesize 时发现使用 ini_set 并不能生效,而有时候修改 display_errors 却能成功,觉得很困惑,Google 之后才知道原来 PHP 配置有可被设定范围。 简单的说,我 ...

OpenCart 低版本使用 mysql_connect 问题

前几天新同事啊企在安装一个低版本的 OpenCart(1.5.6) 主题时,由于版本较低,安装不成功,因为连接数据库使用的还是 mysql_connect 函数,而现在的 PHP 版本一般都在 5.5 以上,在 7.0 以上 ...

WordPress 媒体图片不能加载

最近在对一个低版本的 WordPress 网站进行迁移并升级到最新的版本 (4.5.3),升级完之后出现一个问题,在打开 wp-admin/upload.php 页面时图片与文件加载不出来,但是换成 List View ...

WordPress 调用模板文件时传递参数

WordPress的 get_template_part() 函数不能向模板传递参数 但其实有个很简单的方法,代码如下,注意要加上文件后缀 include(locate_template('filename.php')); // locate_template('filename.php', true); // 直接在子模板文件中使用变量,例如 print_r($var); ...

JavaScript 禁止鼠标事件

有些网站要求禁止鼠标功能,比如禁止选择文字,禁止右键菜单等,做个记录 // 禁止右键点击 document.oncontextmenu = function() { return false; }; window.onmousedown = function () { if (window.event) { if (event.button == 2) { return false; } } } // 禁止复 ...

WordPress 分类页面使用自定义分页显示 404

不知道是什么原因造成的,但是修改了之后确实是没有问题了,具体可以看参考 // 如果多处地方需要用到参数的话,可以定义一下, 方便修改 function my_posts_per_page() { return 15; } function cure_wp_amnesia_on_query_string($query_string) ...

PHP 调用雅虎汇率 API

调用地址是: http://download.finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=CNYHKD=x CNYHKD 为必填,指人民币 (CNY) 与港币 (HKD) 的汇率,可以换成其他国家的货币代码 返回数据:“CNYHKD=x”,1.15 ...

WordPress 使用 gettext 来替换内容

有时候一些插件或者主题会使用 __() 或 _e() 来对一些文本内容进行输出,在不修改插件或者主题代码的情况下,可以使用 gettext方法来进行修改 在 functions.php 中添加 ...

JavaScript 简单计时器

最近工作中需要做一个活动倒计时的效果,代码很简单,做个记录 <!DOCTYPE html> <html> <head> <title>Countdown</title> </head> <body> <h1 id="tick">00:00:00</h1> <script> var handler = setInterval(function() { updateTick(document.querySelector('#tick'), handler) }, 1000); function updateTick(ele, handler) { var start = new Date(1468242903875), end = new Date(); var d = end - start, h = Math.floor((d ...

Yii2 在 Nginx 下的配置

这些都是 Yii2 在 Nginx 的一些基础配置,做个记录 (WNMP 环境,Linux 下类似) 直接在配置文件里添加 (自定义域名: example.com) # Yii2 server { listen 80; server_name example.com www.example.com; # Linux下需要绝对 ...

Windows 搭建 WNMP 环境

最近安装 Ubuntu 都是一卡一卡的,决定还是回到 Windows 的怀抱了 建立环境目录并下载 Nginx: D:\wnmp\nginx PHP: D:\wnmp\php7 MySQL: D:\wnmp\mysql PHP 通过 FastCGI 来执行,所以选择 Non Thread Safe 的版本就行,下载好之后解压到相应 ...

WordPress 修改 tinyMCE 设置

今天在 WordPress 中使用默认的编辑器修改文章内容,在切换代码模式中发现编辑器会把 span 标签给过滤掉,而我需要保留 span 标签,Google 之后发现原来可以在 functions 中 ...

WordPress 为文章分类添加图片

为文章分类添加图片字段 /** * Add image for category */ add_action('init', 'my_category_module'); function my_category_module() { $taxonomy = 'category'; add_action($taxonomy . '_add_form_fields', 'add_custom_field_for_taxonomy'); add_action($taxonomy . '_edit_form_fields', 'add_custom_field_for_taxonomy'); add_action('create_' . $taxonomy, 'save_custom_field_for_taxonomy'); add_action('edited_' . $taxonomy, 'save_custom_field_for_taxonomy'); } function add_custom_field_for_taxonomy($tag) { $category_images = get_option('category_images'); $category_image = ''; if (is_array($category_images) && array_key_exists($tag->term_id, $category_images)) { $category_image = $category_images[$tag->term_id]; } echo '<tr><th scope="row" valign="top"><label for="auteur_revue_image">Image</label></th><td>'; if ($category_image != ...

WordPress 主题常用 functions

创建新的主题时 functions.php 的一些常用设置。 <?php // Remove wpautop // remove_filter('the_content', 'wpautop'); // Remove wp_head or wp_footer actions // Actions added in /wp-includes/default-filters.php // remove_action('wp_head', '_wp_render_title_tag', 1); // remove_action('wp_head', 'wp_enqueue_scripts', 1); // remove_action('wp_head', 'wp_print_styles', 8); // remove_action('wp_head', 'wp_print_head_scripts', 9); // remove_action('wp_footer', 'wp_print_footer_scripts'); remove_action('wp_head', 'feed_links', 2); remove_action('wp_head', 'feed_links_extra', 3); remove_action('wp_head', 'rsd_link'); remove_action('wp_head', 'wlwmanifest_link'); remove_action('wp_head', 'index_rel_link'); remove_action('wp_head', 'parent_post_rel_link', 10, 0); remove_action('wp_head', ...

Yii2 前后台用户分离

Yii2 要分离前后台用户需要把前台与后台的 Session 与 Cookie 区分开来。 环境:高级模板 为了方便,直接使用 Migrate 复制默认的 user 表来建立 manager 表,同时需要建立以下的类。 common\models\User => common\models\Manager ...

WordPress Ajax 简单使用

使用 Wordpress 自带的 Ajax 方法,需要先定义 action add_action('wp_ajax_nopriv_example_test', 'example_test'); add_action('wp_ajax_example_test', 'example_test'); function example_test() { $name = $_POST['name']; header('Content-Type: application/json'); $json = array(); $json['msg'] = 'Hello ' . $name; echo json_encode($json); exit; } 然后在前端页面调用就行,例如使用 jQuery jQuery.ajax({ type: 'POST', // url 路径必须带 'wp-admin/admin-ajax.php' url: ...

WordPress 跳转到自定义模板

使用 WordPress 进行自定义的模板跳转 function load_custom_emplate_function($template) { global $wp_query; if (!file_exists($template)) return; $wp_query->is_page = true; $wp_query->is_single = false; $wp_query->is_home = false; $wp_query->comments = false; // if we have a 404 status if ($wp_query->is_404) { // set status of 404 to false unset($wp_query->query["error"]); $wp_query->query_vars["error"] = ""; $wp_query->is_404 = false; } // change the header to 200 OK header("HTTP/1.1 200 OK"); //load our ...

Git 忽略文件权限修改监控

在使用 git diff 时返回如下信息 old mode 100644 new mode 100755 原因是对文件权限进行了修改,如果要忽略 git 对文件权限的监控,修改下 git 的配置就行 git config core.filemode false 可以添加 --global 参数,但不 ...

Yii2 访问控制过滤器

Yii2 提供了两种授权访问方式:Access Control Filter(ACF) 和 Role-Based Access Control(RBAC,基于角色的访问授权)。 下面对 ACF 作个简单的记录。 例如在默认的 SiteController 有个 behaviors ...

Yii2 修改入口文件位置

高级模板中,有 frontend 和 backend 两个目录,在移动到根目录时,还需要修改 config/main.php 文件,将 frontend 中的入口文件移到根目录,首先在根目录中添加 index.php 文件 <?php defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', 'dev'); require(__DIR__ . ...

带 BOM 的 UTF-8 文件输出问题

在做 WordPress 主题时,输出首页发现顶部始终会有一部分显示空白,F12 发现, head 标签部分的内容包括 title、meta 均包含在 body 标签内,而 body 的顶部始终有 ...

谷歌地图绘制多个地点

官方就有很好的例子,具体开发还要找官方 api 文档,下面是一个简单的显示多个地点的例子。 <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>Google Maps Multiple Markers</title> <script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script> </head> <body> <div id="map" style="width: 500px; height: 400px;"></div> <script type="text/javascript"> var locations = ...

使用 usort 函数对二维数组进行排序

PHP 提供了很多的排序函数,看了一下,好像没有对二维数组以上进行排序的函数,但是有一个 usort() 函数,可以使用用户自定义的函数 (也可以是匿名函数) 进行排 ...

WordPress 获取多个自定义分类法下的文章

主要还是使用 WP_Query 来获取,关键是 args 参数。 // 随便怎么写,反正能获取到 ids 或 slugs 就行 // 获取 post 下的要显示的分类 slug $category_value = get_post_meta($post->ID, 'tz_category_include', true); // 根据 slug 获取特定分类对象数组 $catObj = ...

WordPress 获取子页面

获取子页面很简单,代码也不长,需要注意的变量的传递问题。 代码 // get_page_children 方法 // 首先获取到需要的 pages // $query = new WP_Query(); // $pages = $query->query(array('post_type' => 'page', 'posts_per_page' => -1)); $pages = get_posts('post_type=page&posts_per_page=-1&orderby=date&order=DESC'); $page_children = get_page_children(get_the_ID(), $pages); // get_children 方法 $page_children ...

在 htaccess 文件中设置字符集

网站首页访问 index.html,显示是乱码。本来访问 index.php 文件是没问题的,所以可以在 apache 中使用 DirectoryIndex index.php index.html 来修改默认 index 文件,老严说可以使用 htaccess 文件来设置 ...

WordPress 返回带 HTML 标签的内容

今天遇到一个小需求,需要在一篇文章显示另一篇文章的内容。 使用 shortcode 来实现,然后在文章中调用,shortcode 定义需要返回带 html 标签的内容。 functions.php 中添 ...

WordPress 显示某个分类下的文章

之前写过一个在 sidebar 下显示分类文章的,这个也是类似,就不多说了。 直接建立 template 文件。 <?php /** * Template Name: Posts By Category */ get_header(); // 获取 post 的某个字段 (分类 slug),这个是从 ...

WordPress 在 Sidebar 中显示某个分类下的文章

实现过程 注册 sidebar widget (register_sidebar) 添加获取分类文章的 shortcode (add_shortcode) 允许在 widget 中使用 shortcode (do_shortcode) 使用的是 cherry framework 主题,所以修改的是主题下的 sidebar-init.php 文件,也可以直接写在 functions.php 文件 <?php // Register sidebars by running cherry_widgets_init() on ...

WordPress 自定义上传文件类型

很简单!! 在 functions.php 文件中添加如下代码。 /** * Add custom file type */ add_filter('upload_mimes', 'custom_upload_xml'); function custom_upload_xml($mimes = array()) { $mimes = array_merge($mimes, array('xml' => 'application/xml')); return $mimes; } 添加上面代码可以将 xml 文件上传到后台中。 更多的文件类型可以到这 ...

PHP 实现 301 重定向

PHP 中实现 301 重定向挺简单的,代码也不复杂,无非就是对域名进行判断,不是新域名就使用 header 函数进行跳转,但是中途也出现一些问题,在此做个记录。 $host = 'www.new.com'; ...

WordPress 搜索添加自定义字段

昨天工作需要修改 WordPress 搜索功能,就是在搜索时把 post_excerpt 也添加到查询当中,用的是 wordpress 自带 pre_get_posts 的 api,添加到 add_action 就行,想要添加其他自定义字段也是类似的。 把代码 ...

网页中添加 Facebook 第三方登录

工作项目中需要使用 facebook 第三方登录,需要调用 facebook php api,其实代码什么的都已经写好了,但是在跳转到登录页面时产生错误,google 之后发现是 facebook app 的 ...

Hexo 主题修改

首先,使用的主题是 Noderce,作者是 willerce,感谢作者。 这个周末花了点时间来修改 hexo 的主题 (其实很早之前就想自己修改了,但是一直拖 ...

Chrome下 font-size 小于 12px 无效

遇到在 chrome 下 font-size 的问题,做个记录。实现方法是使用 css3 的属性 transform:scale() 来对字体进行缩放,注意是对整个元素缩放。下面是一个简单的例子 <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>Test</title> <style type="text/css"> div {border: 1px solid ...

jQuery 锚文本滚动

最近项目需要做一个简单的导航栏,需要在页面滚动时自动置顶在上方,并为其中的链接添加 anchor;实现方法是使用 jQuery,下面是简单实现的 ...

OpenCart 从本地上传到服务器

一般都要进行的几步 导出本地数据库 在本地调试好的目录上传到服务器 导入本地数据库 (在导入前可能需要把 sql 文件里有关 localhost 的信息替换成 server 的,还有数据库名 ...

CSS3 笔记-动画效果

CSS3 知识匮乏,做个记录,感谢原作者 效果一:360 度旋转,修改 rotate (旋转度数) * { transition:All 0.4s ease-in-out; -webkit-transition:All 0.4s ease-in-out; -moz-transition:All 0.4s ease-in-out; -o-transition:All 0.4s ease-in-out; } *:hover { transform:rotate(360deg); -webkit-transform:rotate(360deg); -moz-transform:rotate(360deg); -o-transform:rotate(360deg); -ms-transform:rotate(360deg); } 效果二:放大,修改 scale ( ...

CSS 背景图片铺满

想要把一张图片作为背景图,由于图片太大,总是不能完全显示,只能显示一部分,google 之,原来是 background-size 没设置好,做个记录。 body { background: url("bg.jpg") no-repeat; background-size: 100% 100%; } size 用 ...

WordPress 添加自定义 Sidebar

找到一篇很好的学习教程,感谢作者,具体看这里。PS:貌似需要 FQ 才能访问-_-! 首先在 functions.php 文件下注册 sidebar if ( function_exists('register_sidebar') ) { register_sidebar(array( 'name' => 'Homepage Sidebar', 'id' => 'homepage-sidebar', 'description' => 'Appears as the sidebar on the ...

两个 HTML 页面之间传值

项目中有个需求是在两个 html 页面间进行传值,javascript 可以很简单的实现。 a.html <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>A</title> </head> <body> <a href="b.html?value=1">Redirect to b.html</a> </body> </html> b.html <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>B</title> <script type="text/javascript" charset="utf-8"> var url = location.search; ...

WordPress 获取文章中的图片

获取 post 中的特色图片 <?php $thumbnail_image_url = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'thumbnail'); echo $thumbnail_image_url[0]; // OR $thumbnail_image_url = wp_get_attachment_image_url(get_post_thumbnail_id($post->ID), 'thumbnail'); echo $thumbnail_image_url; ?>其中 thumbnail 可以替换成 medium/large/full,分别代表获得图片的尺寸,还可以 ...

DIV 下图片自动按比例缩放

在固定 DIV 的宽和高后,DIV 里面的图片能够自动按比例进行缩放,并实现左右上下居中,图片大小不一定;一开始想到的是使用 javascript 解决。 img.onload = function() { //DIV 最大宽和 ...

VIM 使用笔记

多个文件中查找 :vim[grep][!] /{pattern}/[g][j] {file} 例子: :vimgrep /class/ *.php #当前文件夹下 (不包括子文件夹) 所有 php 文件中搜索 class 字符串 :vimgrep /class/ */**/* #当前文件夹下 (包括所有子文件夹) 所有文件 :copen # ...

VPS 中安装 Shadowsocks

服务端安装 (Ubuntu1404) ssh <username>@<ip_address> -p <port> #ssh登录vps apt-get update apt-get install python-pip pip install shadowsocks apt-get install python-m2crypto #支持更多的加密方式 2017-08-15 在 Ubuntu1604 下可能要加上: pip install --upgrade pip pip install setuptools # 开始安装 pip install shadowsocks # 查看幫助 ...

Ubuntu 下安装 LAMP

服务器版本 Ubuntu 1404 安装 Apache2 sudo apt-get install apache2 在浏览中输入 localhost,显示 It’s works! 表示成功。 安装 PHP5 sudo apt-get install php5 libapache2-mod-php5 在 /var/www/html/ 建立一个测试文件,查看 PHP 与 Apache 是否一起工作。 ...

Ubuntu 使用笔记

目录文件夹名称改为英文 export LANG=en_US xdg-user-dirs-gtk-update 在弹出的窗口中询问是否将目录转化为英文路径,同意并关闭,然后改回中文 export LANG=zh_CN 重启就行 Dos、Unix 文件编码转换 # vim ...