时至今日,,作为第三方平台开发的小程序已经上线有一段时间了,第一次经历整个开发流程。再回首,尝试着从宏观上梳理下『当我们谈微信第三方平台时我们在谈什么』。同样,,不涉及代码级的具体实现。

BTW,关于微信开放平台

顺便聊聊微信开放平台先,,登陆微信开放平台后,进入『管理中心』Tab。我们可以看到页面中有5个二级Tab,分别是『移动应用、网站应用、公众账号、小程序、第三方平台』。OK,微信开放平台,顾名思义,,是将微信体系下的服务接入其他互联网应用的平台。这5个tab代表了目前可以接入的互联网应用类型(准确来说是4个,,第三方平台应该算业务实现类型,不算互联网应用类型。再严谨一点,应该是两种,,web应用和客户端应用,微信公众号和小程序本质上还是客户端应用。再无聊一点,,就只有一种client-server了,笑哭)。

要了解微信开放平台,我们必须深刻理解微信的UnionID机制

获取用户基本信息(UnionID机制)

在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。
请注意,如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。

UnionID机制说明:

开发者可通过OpenID来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的

阅读全文 »

其实,log4j就可以实现邮件报警功能,只需要简单的配置即可。其实,不光可以发邮件,还可以通过sockets将日志文件发送到网络中的指定地址。具体查看log4j的各个appender就好啦。error级别的日志发送邮件配置👇

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Error级别的日志发送邮件
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=ERROR
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=189********@163.com
log4j.appender.MAIL.SMTPHost=smtp.163.com
log4j.appender.MAIL.Subject=Error Message from *** Project
# 可以发送多个用户中间用,去分隔
log4j.appender.MAIL.To=destination0@qq.com,destination1@qq.com
# 邮箱帐号
log4j.appender.MAIL.SMTPUsername=189********@163.com
# 邮箱密码
log4j.appender.MAIL.SMTPPassword=authcode
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] [%t] (%F\:%L) %X{merchant_id} ->%m %n

(PS:本篇内容无具体实现,只有实现思路)

(PPS: PS 是 postscript 的缩写,笑哭)

Context

阅读全文 »

今天在小龙女的微博中发现这样一段转发的话,,
choose_my_birth | 200*400

关于亦舒的『理想的生活』我是完全同意的,,毕竟理想的生活嘛,也是向往的生活。只是看到小猫咪的评论,我能理解 TA 为什么做出这样的评论,但不能完全认同。点开评论想稍微分(反)享(驳)下自己的看法。但写到一半,意识到一个很严重问题。。分(反)享(驳)的前半截是这样的👇

我们实在没有办法让孩子选择自己的出身,但是假如可以选择话,,

我后边还想写一些体验世界,体验未知之类的话(🤦‍♀️),但是写到但是的时候,发现这个『假如』实在有太多东西可以讲,脑洞大开,,放弃评论了,三言两语实在无法准确表达出自己想表述的东西。买完吃的,赶紧回到公司试着把自己想到的东西记下来,,就像现在。

如果我们可以选择自己的出身(生)

阅读全文 »

最近在做微信卡券接口相关的功能,,妈耶,相当于复制一个微信公众平台的卡券模块!光字段就能反4屏,简直就是惩罚性编程,搞的我很焦虑。。花了两周的时间,终于仿照微信原版在自己后台完成了创建卡券的功能,,当在微信公众平台看到新创建的折扣券,长舒一口气,终于看见了正反馈!!接下来,,得预览下吧?不能直接投放呀。OK,预览接口,,今天的主角儿。要知道,卡券预览接口做的很顺利的话,也就没这篇文章了。。


OK,进入正题儿。

创建完卡券之后,我们按照逻辑,可以应该继续往下进行,在文档中可以找到管理卡券的模块。直接在这个页面搜索关键字『预览接口』,,即👇

###4.6 预览接口
支持开发者调用该接口下发卡券。订阅号不可用,服务号认证后可用。详情见

阅读全文 »

中午十二点,太饿了,,心里又总想着前阵子读到的一句话。噢?突然觉得马斯洛的需求层次理论刚好可以抽象一下~

↑ ++++++++++++++++++++++++++++++++
↑ +++++++++++++ ++++++++++++++  ++++
↑ +++++++++++     ++++++++++++    ++++
↑ +++++++++ 自我实现 +++++++++→人与内心++++
↑ +++++++   尊重需要   ++++++++        +++++
↑ +++++     归属与爱     +++++→人与社会   ++++++
↑ +++       安全需要       ++++           ++++++
↑ +         生理需要         +→人与物质      +++++++
↑ ++++++++++++++++++++++++++++++++++++++++++++++++++

简单来说,,『生理需要』和『安全需要』是人与物质的关系,『归属与爱的需要』和『尊重需要』是人与人或人与社会的关系,『自我实现』是人与内心或人与自己关系。

毫无违和感!年龄越大,越发的喜欢跟年长的人接触,,好像突然就知道原因了。

是这样么?
随机
@(2018-06-28 09:30)

因为之前一直在关注『码农翻身』公众号,作者以很基础的文字构建关于计算机关于编程的小故事,由浅入深,,其中的知识点可以自己延伸阅读,还是非常不错的,很适合入门~后来,作者出书了,支持了一波,,毕竟纸质书翻起来比较方便。
OK,进入正题,,在『CPU阿甘』中有提到『局部性原理』,,有必要延伸阅读下。网上找到了Stack Overflow中一篇文章-Why is it faster to process a sorted array than an unsorted array?-本文是对这篇文章的简单翻译,四级水平,还请多包涵 哈哈。


为什么排序后的数组比乱序的数组执行起来要快?

这是一段看起来非常奇怪的C++代码,因为某些原因,将数组排序之后奇迹般的将运行速度提高了将近六倍。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <algorithm>
#include <ctime>
#include <iostream>

int main(){
// 生成数据(数组)
const unsigned arraySize = 32768;
int data[arraySize];

for (unsigned c = 0; c < arraySize; ++c)
data[c] = std::rand() % 256;

// !!! 因为这一行代码,下边的循环运行的更快了
std::sort(data, data + arraySize);

// 测试
clock_t start = clock();
long long sum = 0;

for (unsigned i = 0; i < 100000; ++i){
// Primary loop
for (unsigned c = 0; c < arraySize; ++c){
if (data[c] >= 128)
sum += data[c];
}
}

double elapsedTime = static_cast<double>(clock() - start) / CLOCKS_PER_SEC;

std::cout << elapsedTime << std::endl;
std::cout << "sum = " << sum << std::endl;
}
阅读全文 »

紧接上篇文章-关于获取微信第三方平台的 component_verify_ticket 和 component_access_token-之后,,

我以为…

在上篇中,获取 component_access_token 之后,看看下边的步骤好像跟自己没什么太大关系了,直接跳过『授权流程技术说明』之后的步骤,,开始准备『代小程序实现业务』中的微信登陆,,没想到步子迈的有点大,终究还是扯着 * 了。。

顺着这个思路走,,在做 微信登陆 时,对于开发者来讲,也没有什么太大违和感呀,,👇 下边的参数也都有了呀,,

参数 是否必须 说明
appid 小程序的AppID
js_code 登录时获取的 code
grant_type 填authorization_code
component_appid 第三方平台appid
component_access_token 第三方平台的 component_access_token
阅读全文 »

独立的小程序已经满足不了我司的需求了,继而准备做微信第三方平台,,今天主要想总结下获取微信授权第三方平台流程中遇到的一些问题,,主要是Java代码(用php开发的朋友可以 Command + W 了..)。

推送 component_verify_ticket 协议

这一部分,官方文档真心惜墨。。对首次进行开发第三方授权开发的程序员来说真心不友好,在此提出批评(白天已经骂过无数次娘了🙂)!

关于 POST 数据示例
1
2
3
4
5
6
<xml>
<AppId></AppId>
<CreateTime></CreateTime>
<InfoType></InfoType>
<ComponentVerifyTicket></ComponentVerifyTicket>
</xml>
阅读全文 »

关于语码转换

最近发现自己有一个习惯,就是在聊天的时候总是『不经意间』在普通话中夹杂着英语『表达式(expression)』或者单词什么的。其实,以前也在别人身上遇到过这种情况,当时可能只感觉到『挺装哔』的吧,没往多了想。但是,如今自己身上也出现了这个现象,不免忍不住自省:『我真的只是在装哔么?』

What.

语码转换-(Code Switching)是指说话者在对话或交谈中,从使用一种语言或方言转换到使用另一种语言或方言。

Why???

阅读全文 »
0%