• INDEX
  • ARCHIVES
  • ZHIHU
  • GITHUB
  • 一维码、二维码的生成原理

    2021年2月5日

    讲一讲一维码、二维码的生成原理,长文预警!

    一维码

    barcode 白皮书:https://www.barcodefaq.com/1d/code-128/

    一维码即条形码,由多个黑白条纹组成,基本原理就是通过二进制表示各个 ASCII 字符,以最常见最通用的 code128-B 码制为例(code128 可以表示全部的128个 ASCII 字符)

    UPC 码制是国际商品条码标准,这里不讨论商品码生成的规则,下文的条形码示例用微信、支付宝的扫码工具无法识别(微信、支付宝识别的是 UPC 码,用于查询商品信息),可以用钉钉扫码测试。

    条形码中,黑看做1,白看做0,code128-B 条形码的规律如下:


    ...阅读全文
  • 折腾折腾家庭网络架构

    2020年12月18日

    先上图

    全屏,放大,看细节

    来吧,展示

    • 聚阅:http://render.luoyefe.com/juyue


    ...阅读全文
  • NPM 的基础知识

    2020年12月18日

    npm 的安装

    作为 NodeJS 的包管理工具, 安装 NodeJS 的过程中, npm 就会自动安装,而安装 NodeJS 的方法一般有三种:

    • 官网安装包

      官方已经为各个系统构架好安装包,访问 https://nodejs.org/en/download/ 根据系统下载安装即可。

    • 编译安装

      如果想要体验 NodeJS 最新特性,可以从源码编译安装,较为复杂,需 clone 源码并安装整套的编译工具,具 体可访问 https://github.com/nodejs/node/blob/master/BUILDING.md,这里不展开。


    ...阅读全文
  • JS 新特性:Temporal

    2020年9月21日

    前言

    近日(2020.9.16), Moment 团队发布声明,宣布 Moment 将进入维护状态,除非必要,将不再更新:

    • 未来不会新增任何新特性
    • 不会改成 immutable
    • 不会做 tree shakeing ,也不会解决包体积问题
    • 不会更新 v3 版本
    • 不会修复 bug 或非预期行为,特别是长期以来的已知问题

    ...阅读全文
  • 深挖 css 垂直居中的实现

    2020年7月2日

    请说说如何实现垂直居中?

    前端面试,垂直居中总是一个绕不开的问题,在座的各位可能可以说出不下10种解决方案,最常见的 flex、margin、绝对定位,「复古」一点的用 padding、vertical-align,甚至伪类 after、before 来实现,但是,垂直居中真的那么简单嘛?

    无特殊说明,本文示例都在小程序运行环境中

    我们来看个需求:


    ...阅读全文
  • 你需要更简洁的 Redux(二)

    2019年9月18日

    上期回顾

    首先我们先来回顾一下上一篇文章我们总结的几个痛点:

    • 低入侵

    • 异步 Action

    • 跨组件获取 Store


    ...阅读全文
  • 你需要更简洁的 Redux(一)

    2019年9月13日

    使用 React 的过程中,或多或少都会接触到 状态管理 ,从 Flux 到 Redux 到 Dva,各种状态管理工具满天飞,今天让我们来聊一聊这些工具,以及思考在这些工具的基础上如何更简洁的使用 状态管理 这个大杀器。

    引子

    聊状态管理之前,先让我们梳理下在原生 React 中如何进行组件间通信。

    • Props

      子组件需要父组件的数据,通过 props 一层层向下传递。

      子组件需要更改父组件数据,通过 props callback 调用父组件的方法更新数据。

      多个组件共享数据,抽象 Container 组件,从 Container 组件统一分发 props。


    ...阅读全文
  • 使用NodeJS借助阿里云dns解析API实现DDNS

    2018年1月3日

    DDNS,即动态DNS,简单来说就是服务器的 IP 地址经常变动,这个时候需要一个主动上报的服务来更新 DNS 的解析记录,保证域名指向正确的 IP 地址。

    比如在自己家中的树莓派上部署了某些服务,且路由器有公网 IP,由于每次重新拨号,公网 IP 都会变,所以想要根据域名去访问树莓派,必须做 DDNS。

    DDNS 可以选择 花生壳,但是花生壳提供的 DDNS 服务无法自定义域名,配置起来也较为麻烦,所以这里用 NodeJS 来实现一个 DDNS 服务。

    源码地址(https://github.com/luoye-fe/aliyun-ddns)

    原理

    • 定期获取本机公网 IP


    ...阅读全文
  • 借助redis实现定时任务

    2017年11月13日

    在 nodejs 中实现定时任务可以使用 node-schedule ,但是无法持久化,脚本停止后,不仅任务停止,再次启动也无法恢复未完成的定时任务。

    当然也可以使用 crontab 这种方案,但是较为麻烦,其实可以简单的使用 redis 的 pub/sub 功能实现定时任务。

    pub/sub 功能简单来说就是,当某个事件被触发时 redis 会向监听此事件的频道推送消息,所以,如果我们监听 redis 中某个 key 的过期事件,即可完成定时任务功能。

    redis 配置

    redis 默认未启用 pub/sub 功能,需手动开启。

    配置 redis.conf 的 notify-keyspace-events 字段来开启此功能,其值可以为以下值:

    • K,表示 keyspace 事件,有这个字母表示会往 __keyspace@[db]__:[event] 频道推消息


    ...阅读全文
  • nginx将多个服务代理到同一域名

    2017年6月7日

    有时候需要将来自不同端口的服务代理到同一个域名上,利用 nginx 可以轻易实现这样的需求,记录如下。

    需求如下,两个 node 服务分别启动在 8888 和 9999 端口,然后在访问时需要将 api.com/version1 代理到 127.0.0.1:8888,将 api.com/version2 代理到 127.0.0.1:9999。

    利用 nginx 的 location,搭配 proxy_pass 来实现此功能的伪代码如下。

    server {
        listen 80;
        server_name api.com;
    
    
    ...阅读全文
下一页

© 2015 - 2023 Luoye, unless otherwise noted.