查看JS项目时,会看到package.json中会有sideEffects配置,这个是什么含义,如何使用呢,这里总结下。

sideEffects

顾名思义,副作用,如下函数,进行条件过滤,返回全新数组,但是也修改了原数组本身

1
2
3
4
5
6
7
8
9
10
11
function filterArr(arr) {
return arr.filter((item, index) => {
arr[index] = Math.random();
return item > 3;
});
}

const arr = [4, 5, 1, 2];
console.log('before:' + arr);
console.log(filterArr(arr));
console.log('after:' + arr);

与副作用相反的即纯函数,固定输入即可固定输出。

阅读全文 »

最近在做上传功能,需要将ZIP文件读取内容传到后台,后台将数据写入创建ZIP文件,最后解压处理,但是联调时,报错提示ZIP文件不合法。

由报错可以断定写入ZIP文件的字节流肯定不对。

当前代码

查了下当前的读取ZIP文件的代码如下

前端

阅读全文 »

编写Alfred Workflows已经快30个,在使用中,我也会根据遇到的问题及不足进行版本迭代,然后更新到GitHub上,方便他人下载使用。但GitHub中存储的是workflow文件格式,没办法直接看到版本信息,除非下载安装。这样就无法直观确定,版本问题。

手动维护更新?no,太浪费实践。

因此我需要CI帮我读取workflow的版本,更新到对应的readme文件中,这样我就可以很快确定本地安装的与仓库托管的版本是否一致,是否需要更新。

可行性基础

Alfred的workflow文件本质是一个zip压缩文件,解压后,会看到一个plist文件,其中就记录了版本信息。

确定了可行性就好说了

阅读全文 »

公司项目有些用到了DvaJS[D.va],为了更好的使用,这些调研总结下。

概述

React and redux based, lightweight and elm-style framework.

dva 首先是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量级的应用框架。

dva做了三件事

  • 把 store 及 saga 统一为一个 model 的概念, 写在一个 js 文件里面
  • 增加了一个 Subscriptions, 用于收集其他来源的 action, eg: 键盘操作
  • model写法很简约, 类似于 DSL 或者 RoR, coding 快得飞起✈️

可以看出dva主要解决的也是围绕redux的数据流转,同时补充了react-router,fetch。

阅读全文 »

因为本人主要从事前端开发,于是Alfred的workflow更多是采用JS去写,但是每次都重复在写Script Filter,参数拆分拼接等等,于是萌生了开发个JS工具包的念头,这样以后workflow中常用的代码块直接调用即可,效率必然高不少。

心动不如行动,开搞。

这里贴出我的工具包地址,戳这里。相关开发直接安装即可使用

好奇源码的,访问该仓库GitHub地址。

这里了解开发中的几点设计。

技术栈

阅读全文 »

最近参与维护一些项目,其中有用到saga-duck,一脸茫然,于是了解了下,有点收获,这里Mark。

关联技术点

saga-duck的学习,延伸出duck,extensible-duck,redux-saga,这些都有必要提下。

Duck

阅读全文 »

当前工作中经常使用Whistle代理来进行Web模块开发,因为环境不同,项目不同,经常需要切换代理Rule。采用网页GUI操作还是过于低效,于是决定做个workflow来提升切换效率。

效果

操作指南

  • ⌥ ⏎ 访问WEB管理页面
  • ⏎ 切换rule选择状态
  • ⌘ C拷贝当前Rule具体配置项
  • ⌘ Y或者⌘ L进行Rule预览
阅读全文 »

最近发布Action到GitHub Market需要开启两步验证,于是就搞了下,但是发现还是有些坑的,这里记录下。

开启GitHub两步验证

  1. 点击右上角settings-Account security
  1. 按照提示开启即可,中间提醒下载恢复码,下载保存

  2. 弹出的二维码需要用支持MFA的App扫描,对于认证App,选择很多,个人习惯使用1Password

    • 解释下,二维码本身就是个链接,但并不一定是HTTP链接,之所以不是直接弹出链接进行拷贝,个人理解是因为不安全且体验不友好
    • App扫描后存储该链接到登陆项,每次点击App其实就是根据该链接请求得到一个新的且有效时间的验证码

填写验证码即可正常开启两步验证

阅读全文 »

个人的开源项目每当被Star,会收到电报推送消息,这样以此进而激励我继续dev,做受欢迎的项目。

实现这个自动化的基础设施是GitHub Action,但是现在我想优化下推送体验,当被star时,获取项目:star:数目,于是研究使用Action来实现一键使用。

该action下载地址-Repo Star Count。想了解原理的👇看。

获取星星数方式

如何获取:star:,GitHub Action本身并没有提供该环境变量,且star event也没有包含该元信息,因此只能通过API方式,好在GitHub API非常丰富。

这里贴下关键代码

阅读全文 »

个人博客中经常需要贴一些录制的GIF动画,考虑到GIF大小会影响页面加载体验,我需要手动进行GIF压缩,压缩过程乏味且浪费时间,因此动手写个小工具来提升操作效率。

效果

选中文件,唤起Alfred,输入gif,选中Compress GIF,回车即可。

Workflow下载地址,戳这里

阅读全文 »
0%