a coder's diaries

0%

斐波那切数列

1.递归实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def fibFunc(n):
if n == 1 or n == 2:
return 1
return fibFunc(n-1) + fibFunc(n-2)

def inputFib(n):
arr = []
for i in range(n):
arr.append(fibFunc(i+1))
return arr

nterms = int(input("please input a number: "))
if nterms <= 0:
print("input error")
else:
print(inputFib(nterms))
2.最简实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

def fibFunc(n):
a = 0
b = 1
arr = []
for i in range(n):
arr.append(b)
a, b = b, a+b
return arr

nterms = int(input("please input a number: "))
if nterms <= 0:
print("input error")
else:
print(fibFunc(nterms))

汉诺塔递归

1
2
3
4
5
6
7
8
def move(n, a, b, c):
if n == 1:
print a, "-->", c
else:
move(n - 1, a, c, b)
print a, '-->', c
move(n - 1, b, a, c)
move(5, 'A', 'B', 'C')
阅读全文 »

1. Next7.6版本无法显示背景动画

查看控制台,显示canvas-nest文件加载失败,需要手动下载此文件到next/source/lib里

1
2
cd themes/next
git clone https://github.com/theme-next/theme-next-canvas-nest source/lib/canvas-nest

2. 修改Next后无法提交主题到自己的github上

删除next和canvas-nest隐藏的git文件再提交

如果是mac电脑,可用“shift+command+>”显示或不显示隐藏文件

3. Next主题配置问题

  • 显示中文,要将外部_config.yml中的language设置为zh-CN
  • scheme配置主题
  • avatar配置头像
  • motion和canvas_nest配置背景动画
  • post_meta修改“发表于”、“更新于”

背景:微信JS-SDK开发H5页面,使用了微信授权和分享功能。代码库使用Vue的基础配置。本文主要分享以下几个方面的正确打开方式:)

  • 微信分享与QQ分享
  • 微信网页授权
  • 微信浏览器兼容
  • 其他问题

一、网页分享

1,微信分享,参考微信JS-SDK说明文档

step1. 把分享链接的域名填入公众号JS安全域名里

step2. 引入微信1.3.2基础库(此库升级后分享功能会受影响):

step3. 封装config方法

step4. 配置微信分享代码:

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
let config = {
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接
imgUrl: '', // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
}

this.addShareInfo(config)

addShareInfo(config) {
if (!!window.wx) {
wx.ready(() => {
wx.onMenuShareTimeline(config);
wx.onMenuShareAppMessage(config);
wx.onMenuShareQQ(config);
wx.onMenuShareQZone(config);
});
} else {
setTimeout(() => {
this.addShareInfo();
}, 100);
}
}

step5. 上线测试,由于微信环境的限制,只能在线上测微信分享

2,QQ分享相对简单一些,参考对外分享组件接口文档

step1. 引入分享组件

step2. setShareInfo一个方法搞定

1
2
3
4
5
6
setShareInfo({
title: '', // 分享标题
summary: '', // 分享描述
pic: '', // 分享图标
url: '', // 分享链接,必须与页面URL同一域名,否则设置不生效。
});

需要注意的是,QQ和微信使用的key是不一样的,而且QQ的summary不能为空,否则失效。

step3. 测试。借助Ngrok,可以在本地测试QQ分享功能。Ngrok文档里有详细使用方法,将内网映射到外网,并且生成一个域名。这个文档版本是免费的,正式版本需要付费。

二、微信网页授权

step1. 把回调域名填入公众号的“网页授权获取用户基本信息”配置选项中,该公众号必须是服务号。

step2. 下载微信web开发者工具。最新版虽然可以调试小程序和公众号网页,但是无法连接真机调试。所以要用0.7.0版本,在文档里可找到下载地址。

阅读全文 »

理论上来说,网页中设置CSS的z-index,都没必要超过2。如果超过了,甚至出现999,9999或者20000这样的想占据最高层叠水平(stacking level)的数值,那肯定有问题,面壁反思吧。

我们知道,CSS世界的层叠规则不止z-index,所有元素都有层叠水平。比如普通元素之间,后面节点的元素会覆盖在前面元素上边。那不普通的元素呢?所有元素的层叠顺序如下图所示:

stacking order

阅读全文 »