QQ频道创建讨论频道
最新的QQ频道已经不能创建文字频道,只能关联QQ群,这就很不方便了。
现在能找到的办法就是,安装旧版本QQ去创建。
下载链接:https://dldir1.qq.com/qqfile/qq/QQNT/56c03ab0/QQ9.8.3.13720_x64.exe
最新的QQ频道已经不能创建文字频道,只能关联QQ群,这就很不方便了。
现在能找到的办法就是,安装旧版本QQ去创建。
下载链接:https://dldir1.qq.com/qqfile/qq/QQNT/56c03ab0/QQ9.8.3.13720_x64.exe
刚开始用MySQL的空间数据类型时,手册上有写到索引部分,所以是支持空间索引的。在实际使用时,空间索引创建了,但怎么测试都是没走,强制走索引也是不走,各种搜索也是没找到原因。
刚开始,是这么使用的,但是怎么都不走索引!!!
-- 创建表
CREATE TABLE geom (
`id` int unsigned NOT NULL AUTO_INCREMENT,
g polygon NOT NULL,
PRIMARY KEY (`id`),
SPATIAL INDEX(g)
);
-- 插入数据
INSERT INTO geom (`id`, `g`) VALUES (1, ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0))'));
-- 分析语句
EXPLAIN SELECT id FROM geom WHERE ST_Within(ST_GeomFromText('POINT(5 5)'), g);
后面各种测试,发现得这样创建表才行。
CREATE TABLE geom (
`id` int unsigned NOT NULL AUTO_INCREMENT,
g polygon NOT NULL SRID 0,
PRIMARY KEY (`id`),
SPATIAL INDEX(g)
);
这就纳闷了,本身 SRID 默认就为 0,非得表结构指定为 0 才可以走索引,日了个狗了。
问题找到,那就开始改造旧表了。
-- 删除索引
ALTER TABLE `geom` DROP INDEX `g`;
-- 修改字段的 SRID
ALTER TABLE `geom` MODIFY COLUMN `g` polygon NOT NULL SRID 0;
-- 创建索引
ALTER TABLE `geom` ADD SPATIAL INDEX `g`(`g`) COMMENT '电子围栏';
pecl 是 PHP 安装扩展的一种工具,但是 pecl 的资源处于境外,很容易下载失败,所以得通过魔法工具来解决。
pear config-set http_proxy http://172.26.160.1:10809
pear config-set http_proxy ""
最近接到反馈,说网站无法在电脑微信上打开,提示 页面错误!请稍后再试~
,开启调试模式后发现报 Undefined offset: 1 in Lang.php line 204
。
经过排查,应该是微信浏览器近期进行了更新,给服务器传递了 Accept-Language: *
。
然后框架的多语言自动侦测逻辑不严谨,导致了此次错误。
出错文件:library/think/Lang.php
出错代码:
if (isset($_GET[self::$langDetectVar])) {
// url 中设置了语言变量
$langSet = strtolower($_GET[self::$langDetectVar]);
} elseif (isset($_COOKIE[self::$langCookieVar])) {
// Cookie 中设置了语言变量
$langSet = strtolower($_COOKIE[self::$langCookieVar]);
} elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
// 自动侦测浏览器语言
preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
$langSet = strtolower($matches[1]);
$acceptLangs = Config::get('header_accept_lang');
if (isset($acceptLangs[$langSet])) {
$langSet = $acceptLangs[$langSet];
} elseif (isset(self::$acceptLanguage[$langSet])) {
$langSet = self::$acceptLanguage[$langSet];
}
}
关键定位:
// 自动侦测浏览器语言
preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
// 这里没有判断 preg_match 是否匹配到内容,直接就使用 $matches[1] ,然后就报错了
$langSet = strtolower($matches[1]);
解决办法很简单,先判断 preg_match
,再执行后续代码。
调整后代码:
if (isset($_GET[self::$langDetectVar])) {
// url 中设置了语言变量
$langSet = strtolower($_GET[self::$langDetectVar]);
} elseif (isset($_COOKIE[self::$langCookieVar])) {
// Cookie 中设置了语言变量
$langSet = strtolower($_COOKIE[self::$langCookieVar]);
} elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches)) {
// 自动侦测浏览器语言
$langSet = strtolower($matches[1]);
$acceptLangs = Config::get('header_accept_lang');
if (isset($acceptLangs[$langSet])) {
$langSet = $acceptLangs[$langSet];
} elseif (isset(self::$acceptLanguage[$langSet])) {
$langSet = self::$acceptLanguage[$langSet];
}
}
目前主要发现影响 ThinkPHP 5.0 和 5.1 版本,已向官方提交修复,但这两个版本已停止更新,不确定是否会合并。
腾讯云轻量云不支持 IPv6 ,一直跳票到现在也不支持,所以只能通过其它方式来添加 IPv6 支持了。这里我们使用HE(Hurricane Electric)提供的免费隧道来实现。
1.注册并登录HE
2.点击左侧的User Functions - Create Regular Tunnel
3.输入服务器的外围 IP 和隧道的地域,然后创建
4.获取 netplan
配置
5.获取服务器内网 IP
4.在服务器上创建 /etc/netplan/he.yaml
文件
network:
version: 2
tunnels:
he-ipv6:
mode: sit
remote: 216.218.221.6
local: 183.236.133.109
addresses:
- "2001:470:18:118::2/64"
routes:
- to: default
via: "2001:470:18:118::1"