微信开发上传图文消息内的图片(只返回图片URL),报错41005 缺少多媒体文件数据?(已解决)

表示之前遇到过同样的情况,但是没有做记录,坏习惯坏习惯。
首先,可以先尝试使用微信的测试工具试一下。虽然接口是有改过的,接口要求也不太一样,例如图片大小,但是可以排除某些其他因素,如图片是否已损坏之类的。我用本机的一张png图片在测试工具测试了一下,提示文件格式有问题,所以我换了一张jpg格式。测试结果通过。
在保证了图片一定可以上传的前提之后。再开始码php。
我用你的代码测了一下,结果是跟你一样。我本机装了PHP5.5.6版本和7.0.9版本,两个版本都是不行的(windows下,linux没有测过)。然后就是各种更改数据,切换版本。…

微信网页授权,错误40163,ios正确,安卓错误?

点击一个公众号菜单,跳转到【微信网页授权】,ios平台没问题,安卓平台始终是错误40163,官方的说法是code被重复使用了,从index.php里获取了马上就跳转到oauth.php里去换取access_token,中间没有任何使用过!看到网上一条线索,用苹果手机没任何问题,安卓一直是错误40163,换了两台安卓设备,微信都更新到了最新版本,错误一直在~

代码如下:

index.php

<?php
header('location:https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri='.$myappurl.'oauth.php&response_type=code&scope=snsapi_userinfo&state=1&connect_redirect=1#wechat_redirect');

oauth.php

<?php
    $code = $_GET['code'];
    $state = $_GET['state'];

    
    if (empty($code)) $this->error('授权失败');

    //获取oauth_token
    $token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.

关于微信网页授权获取用户基本信息的切入问题

微信网页授权获取用户基本信息
这个功能一直有一个疑问,没有想到很好的处理方式!
用户在如何跳转到网页授权这里的?这个要如何设置呢?
请大师指点!
我想了很多方式:
1、用户打开一个静态页面,使用window.locathion来跳转到微信授权的页面;
2、在菜单或者发送给用户的链接中,直接使用微信授权链接,在用户授权后,跳转到目标页面;
但是这两种方法有一定的弊端:使用snsapi_userinfo时,用户可能每次打开,都要授权,实际上,用户可能已经授权过了,于是想到了第三种方法:
3、用户打开目标页面,目标页面发送ajax请求到服务器,在服务器查询当前用户是否已经有过授权记录,如果有直接去获取用户基本信息,返回到页面;如果没有授权记录,则返回未授权信息给页面,页面再执行跳转请求微信授权。但是这样做,依然有一个点无法跨越,那就是在向服务器查询是否有授权记录时,需要的OpenID该从何而来?
求指点!谢谢!

MongoDB一些常见及生僻的问题分析

下面来看Russell对MongoDB一些常见及生僻的问题做出分析:

32位 vs 64位

现在大多数的服务器都对32位操作系统实现支持,更有许多新型硬件支持着允许更多RAM的64位操作系统。

MongoDB也同时发布了32位及64位两个版本的数据库。归结于MongoDB使用的内存映射文件,32位版本只支持2G数据的存储。对于标准的Replica Set,MongoDB只拥有单一的处理策略 —— mongod。如果你想在未来储存2G以上的数据,请使用64位版本的MongoDB。如果拥有分片安装,那么32位版本同样可以使用。

总结:使用64位版本或者理解32位版本的限制。…

php开发基于mongodb数据库的字段类型问题

比如下面的数据结构

{
    'field_1': 1,
    'field_2': '1',
    'field_3': true
}

在脚本语言里,这三个值是相等的,但mongodb可不这样认为,如果你用string类型去寻找field_1的值,那么永远找不到。

可是像在php这种弱类型语言里,本来就是string,int傻傻分不清楚,所以使用mongodb的php程序员经常会出现以下杯具场景,你存储的时候主键是一个用函数生成的int型数字,但取出记录的时候可能直接使用前端传递过来的GET参数,很不巧它只能是一个string类型,这样你就永远找不到这条记录了。

解决以上问题,我觉得一开始就用php7的标量类型约束,最好启用严格模式是个好习惯,这样类型不对了,能有个提示,你就可以进行类型转换了。

 

转载请注明:http://blog.p2hp.com/archives/4708…

        

我是如何为技术博客设计一个推荐系统(上):基于统计与评分

过去的两周里,我一直忙于为 『玩点什么』 设计一个推荐系统(即,recommend system)。在这个过程中,参考了之前的 几本书籍,查找了一系列的资料。想着这些资料上,大部分都是大同小民的,实现了几个简单的推荐功能,改进了标签推荐算法,便想着写篇文章记录一下。

玩点什么』,是一个基于 DjangoPython 的 CMS 系统(Mezzanine)。是的,和我的博客使用的是同一个 CMS 系统。由于使用的是 Python 语言,因此对于机器学习具有天生的优势。…

推荐系统要解决的问题

用基于物品的协同过滤算法

 

1 topN推荐
2覆盖率   多样性 新颖性  惊喜度  信任度 实时性

对于 UserCF ,首先需要找到和他们看了同样书的其他用户(兴趣相似的用户),然后给他们推荐那些用户喜欢的其他书

 

对于 ItemCF ,需要给他们推荐和他们已经看的书相似的书,比如作者 B 看了很多关于数据挖掘的书,可以给他推荐机器学习或者模式识别方面的书。

冷启动问题?提供非个性化推荐:如热门排行榜,利用用户注册信息

利用用户标签数据   用户打标签 --专家打标签

 

利用社交网络数据

一定要有日志系统

要不要推荐理由

 

用户反馈模块——包括Play(播放)、评分和Not Interested(不感兴趣)3种。

上下文信息(时间上下文:时间效应,地点上下文)

利用社交网络数据(电子邮件,用户注册信息,位置数据,)

参考:

https://cloud.baidu.com/product/bdl.html?track=cp:nsem|pf:pc|pp:bdl|pu:paddle|ci:|kw:61645
http://www.paddlepaddle.org/index.cn.html
https://www.librec.net/
https://www.librec.net/dokuwiki/doku.php?id=blogs#%E6%8E%A8%E8%8D%90%E7%AE%97%E6%B3%95

 

 

微信公众平台—-带参数二维码生成和扫描事件

摘要: 账号管理----生成带参数的二维码 消息管理----接收消息----接收事件推送

为了满足用户渠道推广分析和用户帐号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。

目前有2种类型的二维码:

1、临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景。
2、永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。

 

获取带参数的二维码的过程包括两步,首先创建二维码ticket,然后凭借ticket到指定URL换取二维码。

 

创建二维码ticket

每次创建二维码ticket需要提供一个开发者自行设定的参数(scene_id),分别介绍临时二维码和永久二维码的创建二维码ticket过程。

临时二维码请求说明:

http请求方式: POST
URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKENPOST数据格式:json
POST数据例子:{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}

永久二维码请求说明:

http请求方式: POST
URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKENPOST数据格式:json
POST数据例子:{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}
或者也可以使用以下POST数据创建字符串形式的二维码参数:
{"action_name": "QR_LIMIT_STR_SCENE",