js中的Map、Filter和Reduce的用法动画诠释

本文摘取和翻译自Medium文章:Map, Filter and Reduce – Animated

对于Map、Filter和Reduce,我们经常给出很多复杂通过可视化去记忆它们的思路。没有任何以可视化为作为出发点的撸码教学的文章。然而可视化在教学上是扮演着总要的角色的。这也适用于撸码。

即使是和Map、Filter和Reduce打交道了多年,我仍然常常问自己:这是不是生成了原始数组的副本?是否会关联原数组的变化?我将通过制作本次教程解答这些问题。

我希望一旦通过这种可视化的方式,记忆起来会更加简单。

Array.map – 映射所有元素至一个表达式。

Array.map(): 将 “value + 1” 表达式应用到7 个数字 [1, 2, 3, 4, 5, 6, 7]

1] 表达式value +1被应用于每一个原始数组的元素中。

2] .map()返回的是一个被修改的的副本,而对原始数组没有任何影响。

3] 结果:[2,3,4,5,6,7,8](一个新的数组被创建)。

Read more
在windows上连接一个非445端口的smb服务

本文用于记录搭建一个可在windows以及其他操作系统下访问的远端smb网盘服务。

起因

由于不让使用自己的mac办公,在windows下工作了很长一段时间,期间,因为要使用linux,而不管是wsl还是wsl2都很坑的情况下,已经习惯用hyper-v架设一台虚拟机然后用ssh连接来办公,而在文件访问方面,突然发现用samba来开启网络共享盘给Windows主机直接访问编辑东西很是方便,于是就对自己在家的ftp服务和空闲的主机打起了网盘的念头,是否可以自己创建一个远程的samba服务来玩呢?答案是肯定的!而且非常简单,我们只需要:

  • 一台windows或者linux主机,windows下就共享一个盘或者文件夹并设置用户权限,linux就用apt install samba然后配置共享来架设smb服务,不管怎么样,这台主机就暴露了一个445端口(可能还有137~139);

  • 一个拥有真实外网ip的网络环境,并且这个环境的WAN口映射是可控的,比如家庭可以和电信申请真实ip并用路由器拨号,公司的要请网管喝杯奶茶,最终你要能够在NAT设备出口把这台主机的445端口映射出外网IP;

  • 准备好你的客户端,比如windows的资源管理器,mac的访达,其他手机的什么app等等。

Read more
使用nodejs+websocket写的一个简单的loraserver用web界面mqtt客户端

公司是做loraWAN开发的,由于使用lora server project作为服务器,经常需要MQTT来测试设备,用nodejs的mqtt包简单实现命令行工具,但是鉴于开发人员太多只熟悉c语言什么的,装个nodejs还会很莫名其妙,就做了一个带有服务端和web客户端的项目。
项目地址:https://github.com/HobaiRiku/loraserver-mqtt-test-console

主要功能:

  • 向一个loraserver的mqtt服务端发起连接
  • 订阅指定的rx主题并实时接收设备的mqtt消息
  • 设备fCnt计数以及丢包率统计
  • mqtt下行消息

这个工具也是在使用中逐步变化来的,由原来的只用命令行变为有简单html+websoeckt的本地服务+客户端,后来应需求(开发人员不方便也不熟悉部署和使用nodejs环境)就用vue和element写了界面,koa+websocket写了多用户能够同时创建mqtt实时连接的服务端。

Read more
LoRa Server Project 项目学习

目前公司采用的LoRaWAN服务器是一个由开源开发者Orne Brocaar(自由职业软件工程师,专注go、Python,IoT,美国meetup网络社交聚会组“阿姆斯特丹Golang”的组织者)使用go语言编写的一个开源LoRaWAN服务器,项目名称为“LoRa Server Project “,开源于GitHub。LoRa Server Project是一个性能优越,功能完善,具备柔性框架的LoRa服务端,项目维护更新活跃。

本文描述的项目版本:LoRa Gateway Bridge 2.1.5\LoRa Server 0.20.1\LoRa App Server 0.12.0

项目简介

Lora Server project 是一套开源应用软件,实现从网关接收到节点数据一直到应用程序接收到数据这一段链路的处理。整个工程设计地非常灵活,这样可以用不同方式来使用它。例如 LoRa App Server 组件实现应用服务器组件,为用户提供一套Web UI来访问和修改他们的网关、应用程序和节点,还可以通过 gRPC and JSON REST APIs 编程接口来访问系统。而且,API设计地也很灵活,子系统可以用其他相同接口的软件来替代。

architecture

Read more
使用Nginx搭建并代理GitLab服务器

本文作记录自己通过使用单独的Nginx服务器代理运行一个远端GitLab应用的过程。

安装

1. 准备

在安装gitlab之前,先要看一遍gitlab官方的安装指导,虽然网上有很多关于gitlab安装、配置等博客,但是还是推荐直接到官网按照指示安装。
最重要的是硬件需求,第一次安装没注意,直接装了,导致出现了诡异的事情,最后内存不足启动失败。
官方的配置要求
gitlab_requirements

Read more
mqtt服务端的鉴权

因为工作中遇到了需要通过权限进行mqtt消息的限制的情境,对mqtt鉴权的实现进行了简单的研究。
首先要理解mqtt的鉴权,其实是需要三个方面的控制:

  1. 创建链接的权限,若无此权限,客户端连创建连接的机会都没有
  2. 订阅一个主题的权限,当有用了链接权限,用户可以随意订阅任意主题,这达不到隔离的效果,我们还要对用户能订阅的主题进行限制
  3. 向一个主题发布的权限,同理我们也需要限制用户发送消息的功能
Read more
初次用Hexo

这是我的第一个post.md

这是一段代码:

1
2
3
4
5
let cars = [];
let text = '';
for (i = 0; i < cars.length; i++) {
text += cars[i] + "<br>";
}

Read more