入手Alfred已经有几个年头,真心觉得实乃利器一枚,这里梳理总结下目前的常用点,方便自己回顾,兴许也可帮助部分同道中人。

目前Alfred已经是我Mac电脑上检索,查询等的第一入口了。登录电脑之后进行的一切操作,都要从这一个输入框开始。

废话不多说,开搞!

Mac自带Spotlight其实也蛮不错的,但是奈何Alfred更为强大,所谓一山不容二虎,没办法,干掉.

  • 设定->键盘,Spotlight快捷键取消选择
  • 设定->Dock,选择自动隐藏和展示Dock
  • Alfred-快捷键设定,推荐 double ⌘,选择登录启动

设定后,你会发现桌面会很干净,双击⌘,将会弹出Alfred输入框,一切将从这里开始,即使是各个APP的启动,也从这里可以方便执行。

对于常用的网站检索服务,可以将其配置为搜索,比如我这里经常进行 京东,和NPM ,直接配置下,以后只需要唤起Alfred, 输入关键词,回车即可直接进入到相关网页的检索结果页。

最近入手了Surge for Mac,
购买的直接动机是希望对网络请求有更好的管理,比如我想实现Mail客户端下,发送Gmail邮件走代理,而发送其它邮件不走代理。这个如果不用Surge能做到吗?可以,但是麻烦些,比如使用ShadowSocks配合Proxier。

有时软件多也是累赘,对于Surge大名,早有耳闻,看了下官方手册,好长。不过官网的 …

Recently, a community project received a request for users to connect an external camera to their Mac, hoping that Alfred would support one-click switching between different cameras. …

It has been a few months since Alfred launched Universal Action, and I have become accustomed to using it to solve demands of some scenarios. Here is a summary of the role that action plays in my efficient use.

Position of Universal Action

Here, let’s talk about the difference between this interaction method and…

最近有需求需要Jenkins实现发布NPM新包,这里记录下配置方法。

具体需求

  • 执行release命令,生成新版本号及changelog记录
  • 提交修改后的package.json,changelog到GitLab仓库
  • 打包新版本到私服Nexus

Jenkins插件安装

为实现该功能,需要确保安装以下3个插件

Pipeline具体配置

node() {

nodejs(nodeJSInstallationName: "nodejs_v10.16.0", configId: "96de5baa-02b1-4cb9-9f65-e8f96452b59c") {

stage("checkout") {
checkout([$class: 'GitSCM', branches: [
[name: 'master']
], userRemoteConfigs: [
[credentialsId: 'gitlab', url: 'git@gitlab.1991421.cn:personal/hello-web.git']
]])
}


stage("release lib") {
sshagent( ['gitlab']) {
sh '''
git config --global user.email "alan@1991421.cn"
git config --global user.name "Alan's 2st Bot"
npm install -g yarn
yarn install
npm run release
git push origin HEAD:refs/heads/master --tags
'''
}
}

}

}

文件下载

字段值说明

  • nodeJSInstallationName为Global Tool Configuration-NodeJS中指定版本name
  • nodejs configId为Config File Management中npmrc文件ID
  • userRemoteConfigs credentialsId为Credentials中Git仓库私有令牌ID

注意

  • push到上游时增加--tags有两个原因
  • release命令的背后是用standard-version进行版本管理,生成ChangeLog时需要基于Tag,否则出现ChangeLog中重复显示commit问题
  • Tag充当版本快照,有益于版本管理,和问题修复
  • 这里未考虑npm包缓存化,建议有时间了,优化该点,否则每次重新安装第三方稳定版本包,浪费资源

写在最后

  • 一直觉得,Jenkins文档,插件都是参差不齐,但同时因为Jenkins确实设计的合理巧妙,依然也算是CI/CD的主流工具,真是哭笑不得。实际实现上述需求时,还是踩了些坑,因此这里Mark下,留作备忘
  • 如上配置后,对于包的版本管理相当于交付给了Jenkins来自动化,对于开发来说只需要按照规范进行提交feat,fix等即可

微信支持添加GIF到表情包,为了丰富下自己贫瘠的表情包,需要方便的找到新的动图GIF。国外有个网站Giphy还不错,并且提供了API支持,于是花了点时间实现了搜索表情包的Workflow。

效果

输入gif或sticker即可进行搜索,回车即可复制到剪贴板,然后⌘ V即可。当然还有些其它一些操作,比如⌥选择即可浏览器浏览,⌘在访达中浏览等。

于是乎,再也不担心找不到酷酷的表情包了。

Workflow下载地址,戳这里

实现细节点

为了实现这个workflow还是踩了点坑的,这里Mark下

  1. Alfred的Script filter Input中的icon目前不支持GIF动态显示,即使是动态GIF。如上可看出搜索结果列表的GIF都只是第一帧静态图
  2. GIF拷贝到剪贴板使用Apple Script解决,关键代码如下,目前测试,粘贴微信,Typora,印象笔记等均OK
  • set the clipboard to POSIX file thePath
  1. Giphy返回GIF的URL会有一些参数,需要去掉才可正常下载,否则会报403
  2. 下载的GIF动图属于缓存资源,Alfred针对缓存有推荐位置
  3. Cache: ~/Library/Caches/com.runningwithcrayons.Alfred/Workflow Data/[bundle id],对应环境变量alfred_workflow_cache Data: ~/Library/Application Support/Alfred/Workflow Data/[bundle id],对应环境变量alfred_workflow_data
  4. 当前我选择alfred_workflow_cache,但对应workflow文件夹,Alfred默认并不会创建,需要自己手动创建。
  5. alfred_workflow_cache等路径存在空格,作为quicklookurl时需要进行下编码空格替换为%20才可正常使用
  6. Giphy国内被墙,Mac需要走系统代理,同时Alfred也需要走代理,才可正常使用
  7. Giphy提供了各种平台的SDK,但这里因为是做workflow,因此使用WEB API
  8. Giphy API Key分为Production及beta,Production Key申请审核,5个工作日内即会回信,经测试,申请门槛儿不高。

相关资料

需求背景

WEB中有些请求很慢,有些请求因为功能上要求,需要增加遮罩从而避免用户在WEB还是执行请求的同时进行其它操作,因此需要加增加loading动画。为了方便控制,采用的办法是在axios的配置项中拓展一个个性化参数配置,比如叫loading,一旦某个请求配置为loading:true,则在请求发起及结束时,开关动画。

功能很好做,但如何保证类型安全呢,而axios的配置项AxiosRequestConfig接口定义并没有给出范型参数口子,从而无法增加自定义参数,那么如何优雅解决这个呢-声明合并

具体代码

在项目中创建定义文件,添加如下接口声明

declare module 'axios' {
export interface AxiosRequestConfig {
/**
* @description 设置为true,则会在请求过程中显示loading动画,直到请求结束才消失
*/
loading?: boolean;
}
}

如上声明后,当光标移动到配置代码位置时,即可正确的进行类型提示。

声明合并

声明合并完整介绍,请看官网

这里之所以可以解决主要是用到了接口声明合并,接口属性声明本身会进行merge操作。

举个例子

interface A {
name: string;
}
interface A {
address: string;
}

const user: A = {
name: 'aaa',
address: 'bbb'
};

写在最后

  1. 采用声明合并的做法解决该问题,好处是保证了自定义配置的类型安全。如果不考虑这里的类型安全,当然也有别的做法,比如我们使用as unknown as AxiosRequestConfig,skip掉类型检测,或者自行二次包装下Axios请求方法,对比而言,声明合并才是最简单正确的做法。
  2. TS只是类型加持,对JS功能本身并无effect

微信支持添加GIF到表情包,为了丰富下自己贫瘠的表情包,需要方便的找到新的动图GIF。国外有个网站Giphy还不错,并且提供了API支持,于是花了点时间实现了搜索表情包的Workflow。

效果

输入gif或sticker即可进行搜索,回车即可复制到剪贴板,然后⌘ V即可。当然还有些其它一些操作,比如⌥选择即可浏览器浏览,⌘在访达中浏览等。

于是乎,再也不担心找不到酷酷的表情包了。

Workflow下载地址,戳这里

实现细节点

为了实现这个workflow还是踩了点坑的,这里Mark下

  1. Alfred的Script filter Input中的icon目前不支持GIF动态显示,即使是动态GIF。如上可看出搜索结果列表的GIF都只是第一帧静态图
  2. GIF拷贝到剪贴板使用Apple Script解决,关键代码如下,目前测试,粘贴微信,Typora,印象笔记等均OK
  • set the clipboard to POSIX file thePath
  1. Giphy返回GIF的URL会有一些参数,需要去掉才可正常下载,否则会报403
  2. 下载的GIF动图属于缓存资源,Alfred针对缓存有推荐位置
  3. Cache: ~/Library/Caches/com.runningwithcrayons.Alfred/Workflow Data/[bundle id],对应环境变量alfred_workflow_cache Data: ~/Library/Application Support/Alfred/Workflow Data/[bundle id],对应环境变量alfred_workflow_data
  4. 当前我选择alfred_workflow_cache,但对应workflow文件夹,Alfred默认并不会创建,需要自己手动创建。
  5. Giphy国内被墙,Mac需要走系统代理才可正常使用
  6. Giphy提供了各种平台的SDK,但这里因为是做workflow,因此使用WEB API

相关资料

I love Alfred so much that once I find one of my own efficiency needs, I will study the feasibility of Alfred, and immediately look for third-party or custom development if it is feasible. …

Just listed some computer software that I used on my Mac. Keep it as record, and also can provide reference for some friends.

Keep Updated

Statement

  1. Some of them are paid APPs, and there are many free and open source as well, but the APP depends on the output value at…

Alan He

Develop with pleasure!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store