ONE·一个 每日阅读
复杂世界里,一个就够了。
该小程序所有数据均由 「ONE · 一个」 提供,本人采取非正常手段获取,仅作为日常学习之用。获取跟共享的行为或许有侵犯权益的嫌疑。若被告知需停止共享与使用,本人会及时删除该小程序与整个项目。
在线访问html5版:https://one.mrabit.com
小程序码:
GitHub仓库地址: https://github.com/mrabit/WeChatApp_ONE
ONE·一个 每日阅读
复杂世界里,一个就够了。
该小程序所有数据均由 「ONE · 一个」 提供,本人采取非正常手段获取,仅作为日常学习之用。获取跟共享的行为或许有侵犯权益的嫌疑。若被告知需停止共享与使用,本人会及时删除该小程序与整个项目。
在线访问html5版:https://one.mrabit.com
小程序码:
GitHub仓库地址: https://github.com/mrabit/WeChatApp_ONE
在开发小程序时候,所有功能都正常使用,不管是开发板、体验版,发送模版消息都是能正常工作的,结果发布正式版的时候,设定定时任务发送模版消息却失败了。 找到后端代码调试了一番发现发送模版消息返回的数据
{“errcode”:41030,”errmsg”:”invalid page hint: [gP1eXXXXXX]”}
查看 小程序文档 发现:
原来是在调用发送模版消息接口的时候page参数写错了:
{
...
page: `/pages/oneDetails/oneDetails?id=${oneDetails.id}`,
...
}
正确的做法是:
{
...
page: `pages/oneDetails/oneDetails?id=${oneDetails.id}`,
...
}
pages
前面不需要加上 /
不过在开发版和体验版上为什么是正常的这就不知道了
使用vue-router的时候会有路由守卫 afterEach 方便跳转页面后执行跳转到页面顶部:
router.afterEach(function () {
window.scrollTo(0, 0);
})
但是react-router 却没有这种函数,特别是react-router 4 更是取消了onEnter onUpdate函数.
withRouter
可以包装任何自定义组件,将react-router 的 history,location,match 三个对象传入。无需一级级传递react-router 的属性,当需要用的router 属性的时候,将组件包一层withRouter,就可以拿到需要的路由信息
import React, { Component } from 'react';
import { withRouter } from "react-router-dom";
class ScrollToTop extends Component {
componentDidUpdate(prevProps) {
if (this.props.location.pathname !== prevProps.location.pathname) {
window.scrollTo(0, 0);
}
}
render() {
return this.props.children;
}
}
export default withRouter(ScrollToTop)
import ScrollToTop from '../components/ScrollToTop';
export default class Root extends Component {
render() {
return (
<Router>
<ScrollToTop>
<Header />
<Menus />
{/* 首页 */}
<Route exact path="/" component={Home} />
{/* 图文 */}
<Switch>
<Route exact path="/one" component={OneList} />
<Route path="/one/:id" component={OneDetails} />
</Switch>
</ScrollToTop>
</Router>
)
}
}
中华人民共和国国家标准 GB 11643-1999《公民身份号码》中规定:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。
公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按 GB/T 2260 的规定执行。
出生日期码表示编码对象出生的年、月、日,按 GB/T 7408 的规定执行。年、月、日代码之间不用分隔符。(例:某人出生日期为 1966 年 10 月 26 日,其出生日期码为 19661026。)
顺序码表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
校检码是根据前面十七位数字码,按照公式计算出来的检验码。
将前面的身份证号码 17 位数分别乘以不同的系数,从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ;
将这 17 位数字和系数相乘的结果相加;
用加出来和除以 11,看余数是多少;
余数只可能有 0 1 2 3 4 5 6 7 8 9 10 这11个数字,其分别对应的最后一位身份证的号码为 1 0 X 9 8 7 6 5 4 3 2;
通过上面得知如果余数是 2,就会在身份证的第18位数字上出现罗马数字的 X。如果余数是 10,身份证的最后一位号码就是 2。
function check(code) {
code = code.split('');
var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2],
parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2],
sum = 0,
ai = 0,
wi = 0;
for (var i = 0; i < 17; i++) {
ai = code[i];
wi = factor[i];
sum += ai * wi;
}
var last = parity[sum % 11];
return last == code[17];
}
这种方法只能做前端的简单校验,我们java后台进行的判断方式是根据省市县出身年月算出身份证后四位,比这种只对最后一位校验要精准得多,不过不是很清楚他们的做法
Homebrew是一款自由及开放源代码的软件包管理系统,用以简化Mac OS X系统上的软件安装过程,最初由马克斯·霍威尔(Max Howell)写成。因其可扩展性得到了一致好评[1],而在Ruby on Rails社区广为人知。 - Homebrew - 维基百科
国内通过Homebrew安装或者更新软件的时候,除非挂上小飞机不然基本没速度,原因大家懂的。
不过挂小飞机也不是很方便,这里提供一个一劳永逸的方法,就是修改Homebrew的更新源,这里还是推荐国内的清华镜像源,其实中科大的镜像源也是不错的选择。
cd "$(brew --repo)"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
brew update
相关地址: