显示标签为“编程开发”的博文。显示所有博文
显示标签为“编程开发”的博文。显示所有博文

2021年4月22日星期四

微博转换RSS功能

  之前一直在用新浪微博的API进行数据同步操作,今年年初大概是1月8日的时候,微博的API不知道什么原因突然无法使用了,接口调用一直出现403错误,私信联系“微博开发平台”也一直是机器回复。

  因此我估计是新浪微博将其API关闭了,猜想可能是因为微博盈利太难,所以就学习腾讯,把数据都封闭起来好多赚钱。

  然而,我自己在微博发布了很多数据,但微博至今连数据备份都不提供,因此我这里还是需要另找办法来进行数据同步和备份的操作,于是想用微博转化RSS的方法进行数据导出。

  我在11年前自己曾做过一个PHP的微博转化RSS的项目,但时间太久了,里面的数据结构已经完全变了,无法使用了,于是我就在网上搜了一下,看看有没有现成的项目,结果发现github上有一个weibo-rss的项目可以用,不过其部署用的是Node.js,是我之前没用过的。

  我在国外购买的云服务器,使用的是LNMP(Linux-Nginx-MySQL-PHP)环境,Web服务器是Nginx,小巧稳定,占用资源很少,让一个低配服务器就能做一个动态网站。我就试着将这个Node.js项目部署到这个服务器上。

  服务器没安装Node.js,因此需要先安装环境,面板里有个“PM2管理器”,就是一个node.js管理器,里面内置了node.js + npm + nvm + pm2,可以一键安装。

  安装好了环境之后,按照项目说明开始手动部署。


git clone https://github.com/zgq354/weibo-rss.git
cd weibo-rss
npm install
pm2 start bin/www


  按照之前部署php的思路,将其部署到wwwroot下的一个目录,从网页访问后,页面能出来,但是获取RSS提示“获取数据失败”。

  后来咨询了一下项目作者,才知道原来这个项目部署到了3000端口,不是部署到Nginx的80和443端口,我用3000端口的地址访问,就能正常获取数据。

  当然,最终我还是希望能在Nginx下使用,在Nginx里设置一个反向代理,将一个目录映射3000端口,即可实现在80和443端口访问这个Node.js项目了。

2021年4月17日星期六

WordPress阻止网站启用谷歌FLoC追踪技术

  WordPress 今天发布公告,认为谷歌的新 FLoC 追踪技术存在安全隐患,并计划在 WordPress 网站上默认进行屏蔽。FLoC 全称叫做广告追踪技术群组联合学习,利用机器学习分析 Chrome 浏览器的网络行为,将有相同兴趣爱好的用户进行归类,然后向其推送相关的广告内容。

  不过 FLoC 遭到了很多机构和公司的抵制。除了电子前沿基金会(EFF)的痛批、DuckDuckGo 推出了默认阻止 FLoC 的浏览器扩展程序,就连同样使用 Chromium 内核的 Brave、Vivaldi、Microsoft Edge 等浏览器开发商也都不愿为它提供支持。

  WordPress 在公告中写道:“目前 41% 的互联网网站使用 WordPress,这个社区可以通过 4 行代码帮助打击种族主义、性别歧视、反LGBTQ+歧视和对精神疾病患者的歧视”。Wordpress 计划使用以下四行代码来禁用 FLoC,这将导致博客平台发出 HTTP 请求头告诉浏览器应该禁用网站的FLoC。


// Disable FLoC
function disable_floc($headers) {
    $headers['Permissions-Policy'] = 'interest-cohort=()';
    return $headers;
  }
add_filter('wp_headers', 'disable_floc');


  WordPress解释说,虽然有些管理员可能会想启用这项技术,但这些管理员可能有技术诀窍来覆盖上述代码。WordPress还表示,他们可能会添加一个设置,允许管理员控制是否允许FLoC。然而,WordPress担心的是,那些不知道这种新的追踪技术的用户会在没有完全了解其内容的情况下自动选择加入。因此,WordPress自动禁用该技术是符合这些用户的最大利益的。

  WordPress 解释说:“在平衡利益相关者的利益时,那些根本不知道这是他们需要缓解的网站管理员的需求--以及这些网站的用户和访问者的利益,简直是更有说服力”。

2021年3月26日星期五

豆瓣250评分排名算法机制

  据豆瓣的创始人阿北称,豆瓣评分机制,简单地说,就是把豆瓣用户的“正常打分”(一到五星换算为零到十分)加起来,再除以用户数。豆瓣也是有 “非正常打分” 规避机制的。基于 “所有能判断属于非正常评分的一概不算” 原则,豆瓣的程序会 “判断” 出那些 “非正常分数”,将其剔除在评分之外。

  豆瓣250,则是豆瓣根据每部影片看过的人数以及该影片所得的评价等综合数据,通过算法分析产生豆瓣电影 Top 250。

  豆瓣250的进榜算法,估计是和IMDB250类似,也用了所谓加权平均分的算法。


豆瓣

  根据IMDB网站上公布的TOP250评分标准:

  imdb top 250用的是贝叶斯统计的算法得出的加权分(Weighted Rank-WR),公式如下:

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

  用中文表示就是:加权平均分= [经常投票者投票人数÷(经常投票者投票人数+进入TOP250需要的最小票数)]×普通方法计算出的平均分+[进入TOP250需要的最小票数÷(经常投票者投票人数+进入TOP250需要的最小票数)]×目前所有电影的平均得分

  其中:

  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) (进入imdb top 250需要的最小票数,只有三两个人投票的电影就算得满分也没用的,目前是25000票)

  C = the mean vote across the whole report (currently 7.0) (目前所有电影的平均得分,目前是7.0)

  对于豆瓣250来说,m值和C值会与IMDB 250不同。

  如何将刷票行为排出到最终的分数外,关键点就在于“经常投票者投票人数”这个值上,只有“经常投票者”(regular voter)的投票才会被计算在top 250之内。

  为了防止用户作弊,“经常投票者”的标准一直未公开,但我们不难猜测,它对用户的投票历史有要求,比如投票的数量,或者满足一定的投票资历,如投票满一年,或者和用户的注册时间、使用频率等等有关,另外可能还会过滤单位时间内投票数量过多之类的。

  此外,豆瓣250还会对电影上映时间有要求,只有上映时间超过一年的电影才有可能上榜豆瓣250,从而避规一些电影的刷榜行为。

  因此,如果一部上映超过1年的电影,其豆瓣评分和投票人数都高于豆瓣250榜单的同类电影,却没有上榜,就说明其regular voter的数据可能有问题而被过滤,导致其最终算出的加权平均分没有达到入榜的条件。