php心得

Posts filed under php心得

Nest温控器保留历史数据

Filed in php心得, 服务器

Nestgraph是一个利用本地数据库来保留温度历史数据的开源代码。
本来的代码使用的是非官方的api, nest_api。通过修改,新的代码使用了官方的REST API。这样,只需要给nestgraph只读权限,而不需要在服务器端保存用户名和密码,增强了安全性。

使用官方的API,避免了原nest_api的诸多bug,可以将读取时间间隔缩短到1分钟。

详见https://github.com/lubao515/nestgraph

php升级5.2.17 mysql升级5.5.37 后无法连接数据库原因

Filed in php心得, 服务器

mysql升级后默认sock为/tmp/mysqld.sock 但是配置文件中指定为/tmp/mysql.sock
php升级后默认也是 /tmp/mysqld.sock,由于这个原因,就找不到sock

解决方案一:修改php.ini 中
mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

修改方案二:修改my.cnf的两处
socket  = /tmp/mysqld.sock

推荐算法电影排序的一点改进

Filed in php心得, 机器学习

之前在同一clustering下,推荐电影是按照imdb的评分来的,但是这有一个问题,就是有些电影,他的评分很高,但是评价的人很少,这样这种评分高的电影就没有任何意义(过度小众,或恶意刷分)

因此,借鉴了IMDB top250 的排序方法,引入true Bayesian estimate 来进行评价,即:

weighted rating (WR) = (v ÷ (v+m)) × R + (m ÷ (v+m)) × C

R = average for the movie (mean) = (Rating)
v = number of votes for the movie = (votes)
m = minimum votes required to be listed in the Top 250 (currently 25000)
C = the mean vote across the whole report (currently 7.0)

依照这样的算法,评价人数多且评分高的,加权平均后评分依然高,评价人数多且评分低的, 加权平均后评分依然低, 而评价人数少的,无论评分高低,都会趋近与平均值7.0,因为信息熵不足以估计他的实际得分,所以他的实际得分趋近与平均值的likelyhood最大。 评价人数越多,越趋近于他的实际平均评分。(estimator 更趋近于 parameter)

这样,在同一聚类下,真正评分(parameter)高的就会先推荐给用户。

经过以上改进,出现在我的推荐里的就都是我喜欢的电影了。

mysql奇葩的in语句

Filed in php心得, 服务器

如果in的key有索引,然后先select完了,将结果用key in (result1,result2, …)拼接就会走索引

可以如果直接 key in (select …)就不会走索引

奇葩吧,大家引以为戒,一定要用第一种方法,不然会卡到爆的

demo:

$sql = "select result from table1 where key='key1'";
$rows = $db->get_rows($sql);
$result = array();
foreach ($rows as $row)
{
$result[] = $row[0];
}
$result = implode(",", $result);
if ($torrentid)
{
$sql = "select * from table2 where result in($result) ";
}

走索引

select * from table2 where result in (select result from table1 where key='key1')

不走索引

理论上来说,两句话应该是完全一样的,但是因为mysql莫名其妙的优化方案,导致第二句居然不走索引……所以让php多处理几句话吧

discuz的问题(一点提示)

Filed in discuz相关

在discuz7.2中有这么一项设定,自动把POST GET 和 COOKIE 转换成相对应的变量名,但是这样存在一个危险,如果在特定的情况下外部赋值的变量会覆盖内部赋值的变量,从而产生一些不必要的麻烦,因此discuz在2.5中取消了这一设置

关于discuz_tips在不使用漫游下的去除方法

Filed in discuz相关

本人是内网论坛,不用漫游,不用云平台,因为discuz_tips的存在,每次访问页面都会去链接cp.discuz.qq.com,异常的DT
按照大大在帖子里的回复,直接去掉该代码会无法收到各种更新提醒,好吧,貌似这个还挺有用的,那么怎么办呢?

其实discuz自己之前的代码就给出了解决方案(可能是漫游的原因后来修改了)可以参看function/function_cloud.php

下面就是我的修改方案:
在api\manyou\Service\Discuz_tips.php中找到
public function show() {
global $_G;

在下面添加

//motified by lubao515
if ($_G['adminid'] != 1) {
return false;
}
//end motify

原理就是只有当管理员访问是,才生产discuz_tips代码,这样就能看见各种更新提示了(普通会员也不需要看更新提示吧?)
当然,这个是manyou的api,所以discuz添加修改了这段本来只向管理员推送信息的代码大概有他们自己的想法的。

所幸我不用manyou,也不用考虑这个问题。

本人水平有限,如有错误,请各位大大指正。

DedeCMS5.5中无法显示管理员发布资料问题的解决方法

Filed in php心得Tags: , ,

在DedeCMS新发布的5.5版本中,管理员的发布资料将不会被显示,按照dede的说法这是为了减少服务器的压力,因为管理员必然会发布很多文章,这样访问管理员空间的人多了就会增加数据库的搜索量。可是对于一些个人网站,站长显然希望自己的资料被显示出来,那么该如何做呢?

首先,在后台的设置系统参数的会员设置中将是否禁止访问管理员帐号的空间置为否。

然后,在\include\taglib中找到memberinfos.lib.php,在其中找到

  1. if($row[‘matt’]==10) return ”;

这行代码,注释掉或删掉就可以了,即

  1. //if($row[‘matt’]==10) return ”;

最后,重新生成整个网站就可以了。

 

最近评论
Click to view/hide
 
Click to view/hide
2019年八月
« 8月    
 1234
567891011
12131415161718
19202122232425
262728293031  
站点功能
Click to view/hide