为你的网站加上live2d的动态小挂件,博君一晒by Liu Yue/2019-12-12 标签: 网站 live2d 博君 挂件 一晒 动态 加上 喜欢二次元的朋友一定对大名鼎鼎的live2d技术并不陌生,live2D是一种应用于电子游戏的绘图渲染技术,技术由日本Cybernoids公司开发,通过一系列的连续图像和人物建模来生成一种类似三维模型的二维图像。 可以看到本站右下角出现了一只可爱的小喵 可以看到这只猫会跟着你的鼠标运动,有着伪3D的感觉......了解更多
尝试开发微信公众号消息推送功能并且和小程序关联by Liu Yue/2019-11-10 标签: 功能 并且 开发 推送 微信 程序 关联 尝试 公众 消息 之前写了几篇关于微信小程序的开发实践,总的来说没啥难度,感兴趣的请移步:使用Mpvue配合Weui开发面试题题库微信小程序,并且发布到正式环境,这一次我们来尝试开发一下微信公众号,那么公众号和小程序到底有什么区别呢? 首先定位不同 公众号服务于营销与信息传递,小程序面向产品与服务。公众号主要用于信息的传递实现人与信息的连接,借助H5 能够实现简单的交互,主要以营销和信息传递为主简单的......了解更多
在半小时内从无到有开发并调试一款Chrome扩展(Chrome插件/谷歌浏览器插件)by Liu Yue/2019-11-05 标签: 插件 开发 Chrome 浏览器 从无到有 调试 谷歌 半小时 一款 扩展 就在不久之前,我们目前这个毕业班的班长那日同学和我说,他正在公司开发Chrome扩展,看起来很高大上的技术,实际开发却非常简单,这引起了我非常浓厚的兴趣,正所谓技不压身,检验自身技术的手段之一就是拥抱新事物,这一次我们尝试在半小时内开发一款Chrome扩展,因为之前我们做了一个微信小程序的在线面试题题库的项目,所以正好利用这个题库将面试题平移到Chrome扩展上面。 Chrome插件其实和一个普通web......了解更多
关于微信小程序体验版获取不到openId的问题by Liu Yue/2019-11-01 标签: 关于 问题 微信 程序 体验版 openId 获取 不到 我们知道openid是微信用户验证的重要标识,支付功能严重依赖这个东西,之前我们做微信支付的时候是通过在微信客户端直接调用官方接口,通过传code参数来调用,下面这样: getOpenId(){ //获取用户的openid let _this=this; wx.login({ success(res) { if (res.code) { ......了解更多
在Mac上用手机抓包软件Charles抓取微信小程序中的高清无水印视频by Liu Yue/2019-10-29 标签: Mac 视频 微信 程序 上用 抓包 Charles 抓取 水印 高清 软件 手机 手机抓包是一名测试工程师常备的技能,比如我想查看一个接口请求的参数、返回值,还有移动设备上的http请求、https请求,这一次的背景是我们想要在app端和小程序端抓取一些视频,这里用腾讯视频作为例子,使用mac系统的Charles软件(有点类似win系统中的fiddler,使用方式上大同小异)来进行视频接口与地址的抓包和嗅探。 同时抓包工具也有利于线上生产环境问题的分析,前几天有个做服务端的同学跟我说他不用抓包工具,遇到......了解更多
使用Docker-compose搭建nginx-keepalived双机热备来实现高可用nginx集群by Liu Yue/2019-10-18 标签: 使用 实现 nginx Docker 搭建 compose 集群 可用 双机 keepalived 热备 最近同学出去面试经常会被问到一个问题。 面试官:你说你们公司使用nginx反向代理tornado,部署了多少多少台机器,好像很牛逼的样子,但是我问你,如果主机也就是部署了nginx那台机器并发过大导致宕机了怎么办? 答曰:不考虑带宽峰值的话,比较新的 CPU 跑 nginx 单核每秒能接近 2 万请求,而且nginx如果纯做 HTTP 转发的话......了解更多
使用Mpvue配合Weui开发面试题题库微信小程序,并且发布到正式环境by Liu Yue/2019-10-14 标签: 使用 并且 配合 开发 环境 mpvue 微信 程序 面试题 Weui 题库 正式 发布 之前的一篇文章详细阐述了微信小程序开发的准备和入门以及环境搭建,这一次我们介绍如何将微信小程序如何上线,同时配合weui美化界面。 本次做的微信小程序项目是一个类似在线题库的功能,面试者可以通过小程序来检索笔试题,同时用户输入关键词时同步监听输入行为,不需要点击就可以获取知识要点,后台采用tornado+mongodb+mortor的组合实现异步非阻塞的接口。 首先weui是腾讯团队......了解更多
使用Docker-compose来封装celery4.1+rabbitmq3.7服务,实现微服务架构by Liu Yue/2019-09-28 标签: 使用 实现 Rabbitmq3.7 服务 Docker compose celery4.1 封装 架构 大家都知道,Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,在之前的一篇文章中:python3.7+Tornado5.1.1+Celery3.1+Rabbitmq3.7.16实现异步队列任务 详细阐述了如何进行安装部署和使用,但是过程太繁琐了,先得安装Erlang,再安装rabbitmq,然后各种配置,最后由于async关键字问题还得去修改三方库的源码,其实我们可以通过docker来将celery服务封装成镜像,如此一来,以后再使用ce......了解更多
利用CSS3自定义属性来为网站添加“暗黑模式”(暗色模式/DarkMode)by Liu Yue/2019-09-22 标签: 利用 网站 添加 模式 自定义 CSS3 暗黑 属性 究竟什么是暗黑模式?这个概念起初来源于macOS系统,该系统的mojave版本为用户提供两个主题皮肤,即浅色和深色的皮肤。自从有了这个概念之后,很多网站和系统都会用户提供了相应的两套肤色,便于用户根据自己的习惯或爱好进行切换 从科学的角度讲,低对比度的暗色可以降低屏幕对视网膜的刺激,同时还可以让电子设备更加省电。 在过往......了解更多
Python3的原生协程(Async/Await)和Tornado异步非阻塞by Liu Yue/2019-09-20 标签: 异步 python3 Tornado 协程 原生 阻塞 我们知道在程序在执行 IO 密集型任务的时候,程序会因为等待 IO 而阻塞,而协程作为一种用户态的轻量级线程,可以帮我们解决这个问题。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存,在调度回来的时候,恢复先前保存的寄存器上下文和栈。因此协程能保留上一次调用时的状态,即所有局部状态的一个特定组合 说人话:说白了就是,当协程遇到io操作而阻塞时,立即切换到别的任务,如果操作完成则进行回调返回执行结果,提......了解更多
mpvue1.0+python3.7+Django2.0.4实现微信小程序的支付功能by Liu Yue/2019-09-15 标签: 功能 实现 python3.7 Django2.0 支付 微信 程序 mpvue1.0 其实微信支付有很多种形式,刷脸,扫码,APP支付,小程序支付等,这边只说明小程序支付的实现,不过原理上都大同小异。 首先,需要注册微信公众号平台https://mp.weixin.qq.com,并且开通微信支付功能,随后将你的小程序关联一个微信商户:pay.weixin.qq.com,这一系列申请下来之后,你手中需要有微信小程序appid,微信小程序秘钥,商户号,以及商户秘钥,这四个关键的支付配置变量。......了解更多
基于python3.7利用Motor来异步读写Mongodb提高效率by Liu Yue/2019-09-06 标签: python3.7 异步 基于 利用 Mongodb 读写 Motor 提高效率 如果使用Python做大型海量数据批量任务时,并且backend用mongodb做数据储存时,常常面临大量读写数据库的情况。尤其是大量更新任务,由于不能批量操作,我们知道pymongo是同步任务机制,相当耗时。 如果采用多线程、多进程的方案确实有效,但编写麻烦、消耗系统资源大(pymongo还不允许fork线程中共用连接)。这里主要瓶颈在于IO,使用单线程异步操作就会效果很好。 M......了解更多
基于Docker-compose搭建Redis高可用集群-哨兵模式(Redis-Sentinel)by Liu Yue/2019-09-04 标签: 基于 redis Docker 搭建 模式 compose Sentinel 哨兵 集群 可用 我们知道,Redis的集群方案大致有三种:1)redis cluster集群方案;2)master/slave主从方案;3)哨兵模式来进行主从替换以及故障恢复。 sentinel系统可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务下线时,自动将该master下的某个从服务升级为master服务替代已下线的master服务继续处理请求。 ......了解更多
使用flex弹性布局来为微信小程序写自适应页面by Liu Yue/2019-09-03 标签: 页面 布局 适应 使用 微信 程序 flex 弹性 我们知道,写习惯了前端的人,一般切图后布局页面的话,上手最习惯的是基于盒子模型的浮动布局,依赖 display 属性 + position属性 + float属性,但是浮动布局有一些致命的小问题,比如垂直居中比较费劲,比如著名的float坍塌问题,另外有些极端情况下,还得使用模型+clear:both来手动清除浮动,比较麻烦。 于是,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局......了解更多
在centos7.6上利用docker-compose统一管理容器和服务by Liu Yue/2019-09-02 标签: 利用 服务 Centos7.6 Docker compose 统一 管理 容器 众所周知,一个大型的Docker容器组成的微服务应用中,容器的数量是非常巨大的,如果依赖传统的人工配置方式进行维护,对于开发和运维来说简直就是噩梦。docker-compose的出现正是为了解决这个问题。 docker-compose是一个用于定义和运行多容器Docker应用的工具,只需要一个Compose的配置文件和一个简单的命令就可以创建并运行应用所需的所有容器。在配置文件中,所......了解更多
关于Python3异步非阻塞Web框架Tornado:真实的异步和虚假的异步by Liu Yue/2019-09-01 标签: 关于 异步 Tornado 虚假 真实 我们知道Tornado 优秀的大并发处理能力得益于它的 web server 从底层开始就自己实现了一整套基于 epoll 的单线程异步架构,其他 web 框架比如Django或者Flask的自带 server 基本是基于 wsgi 写的简单服务器,并没有自己实现底层结构。而tornado.ioloop 就是 tornado web server 最底层的实现。 ioloop 的实现基于 epoll ,......了解更多
使用python3和高性能全文检索引擎Redisearch进行交互by Liu Yue/2019-08-30 标签: 引擎 使用 进行 python3 全文检索 Redisearch 交互 高性能 上一篇介绍了一款高性能全文检索引擎Redisearch,它不仅性能强劲,部署也方便,这里介绍一下如何用python客户端和它进行交互。使用redisearch-python:https://github.com/RediSearch/redisearch-py 首先,安装 pip3 install redisearch ......了解更多
平民版的Elasticsearch?使用Redisearch实现的全文检索功能服务by Liu Yue/2019-08-29 标签: 使用 功能 实现 服务 全文检索 Redisearch “检索”是很多产品中无法绕开的一个功能模块,当数据量小的时候可以使用模糊查询等操作凑合一下,但是当面临海量数据和高并发的时候,业界常用 elasticsearch 和 lucene 等方案,但是elasticsearch对运行时内存有着最低限额,其运行时大小推荐 2G 以上的内存空间,并且需要额外的磁盘空间做持久化存储。 其实mongoDB 内置的正则匹配搜索文本以及自带的 text 索引和 searc......了解更多
9012年,您真的需要Thrift这样一个RPC微服务框架来拯救一下传统HTTP接口(api)了by Liu Yue/2019-08-27 标签: 一个 框架 一下 http 接口 9012 Thrift RPC 拯救 传统 需要 这样 目前市面上类似Django的drf框架基于json的http接口解决方案大行其道,人们也热衷于在接口不多、系统与系统交互较少的情况下使用它,http接口的优点就是简单、直接、开发方便,门槛低,利用现成的http协议进行传输。 但是事情往往有两面,如果是一个大型的网站,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,首先就是长链接,不必每次通信都要像http 一样去3次握手4次挥手,减少了网络开销;其次就是......了解更多
使用基于mpvue的框架开发微信小程序(搭建环境)by Liu Yue/2019-08-26 标签: 框架 使用 基于 开发 环境 搭建 mpvue 微信 程序 美团很早就开源了mpvue这个项目,如此看来,美团可不仅仅是一家团购网站,真正的技术驱动型企业,使得我们多了一种用来开发微信小程序的框架选项。由于mpvue框架是完全基于Vue框架的(重写了其runtime和compiler),因此在用法上面是高度和Vue一致的(某些功能由于受限于小程序环境本身的原因而不能使用,但是瑕不掩瑜),这给使用过Vue开发Web应用的前端开发者提供了极低的门槛来开发小程序。 搭......了解更多