闻心阁

一蓑烟雨看苍生,半壶浊酒笑红尘

Stand-macOS下简洁的定时提醒小工具

2018-05-03 约 1 分钟读完 百宝箱
身在 21 世纪,已经很少有什么工作是可以离开计算机的了,而长时间面对电脑的工作也在威胁着人们的健康。本文推荐来一个 macOS 下定时提醒的小工具——Stand。 为什么是它 小 巧 免费 都有什么功能 每隔XX分钟,提示一次,甚至可以锁屏。 下载 Stand for Mac

macOS切换Python2和Python3的探索

2018-05-03 约 1 分钟读完 搬砖秘籍
最近要在 macOS 下安装 YouCompleteMe ,需要一个 Python 环境。考虑到 Python2 即将被放弃,安装一个 Python 也是必要的。所以探索了一下在 macOS 下同时安装这两个版本的方法,本文做一个小总结。 前言 一般情况下,macOS 是自带了一个 Python 环境的,一般是2.7,但编译 youcompleteMe 的时候发现需要pip。本来想基于自带的安装 pip,后来百度了一下发现使用 Homebrew 安装的 Python 都是已经安装好 pip 了。所以本文的方案不动自带的 python,使用 Homebrew 重新安装。 安装 Python2 和 Python3 直接运行 brew search python 结果如下: 其中 python 是 3.x 版本, python@2 是 2.x 版本。 运行 brew install python brew install python@2 此时运行 brew info python brew info python@2 可以查看这两个版本具体的安装信息。 图中两个箭头分别是 Homebrew 安装的python目录和映射到的目录。 替换系统默认 Python 这时运行 python 命令你会发现使用的还是系统默认的 python. 继续阅读

macOS下Vim“正确”的使用方式指南

2018-05-03 约 1 分钟读完 搬砖秘籍
在 Manjaro 下使用 Vim 习惯了,到 MacOS 下也想配置下 Vim,结果发现了几个坑。经过一段时间的摸索,自认为找到了一种不错的解决方案,这里做一个总结。 安装 Homebrew PS:必须。 安装方法很简单,直接参照官网来就可以了。The missing package manager for macOS — The missing package manager for macOS 安装 iTerm2 PS: 不必须但建议。 MacOS 自带的 Terminal 我觉得不好用,就换成了这个。 安装 oh-my-zsh PS:不必须 安装方法直接参照官网来:robbyrussell/oh-my-zsh 不要忘了更改默认的shell chsh -s /bin/zsh 安装 MacVim 为什么?因为系统自带的 Vim 不支持剪贴板(这个不能忍),而我又不想自己编译 Vim,使用 MacVim 是最简单、最方便的解决方案。 这里要注意的是,安装 MacVim 不要通过官网下载二进制包了,要使用 Homebrew 来安装。 brew install macvim 安装完成,可以在命令行中输入 mvim 弹出 MacVim 表明安装成功。 替换系统默认 Vim 在 .zshrc 中加入 alias vim='mvim -v' 这样在命令行中输入 vim 命令调用的就是 MacVim 了。 继续阅读

Clipy-macOS下好用的剪贴板管理软件

2018-05-03 约 1 分钟读完 百宝箱
Clipy 是 MacOS 平台下一款简洁好用的剪贴板管理软件。 推荐理由 开源。Clipy/Clipy: Clipboard extension app for macOS. 好看。 好用。 下载地址 GitHub:Clipy/Clipy: Clipboard extension app for macOS. 官网 Clipy - Clipboard extension app for macOS 啰嗦 我发现日本人在 MacOS 上贡献了好多小而美的精致软件,致敬。

MacBook Pro 更新 10.13.4 失败 循环重启的解决方案

2018-04-26 约 1 分钟读完 百宝箱
换了一个工作环境,公司直接给发了一台 MacBookPro。之前也没怎么使用过 MacOS, 看到有个提示系统更新 10.13.4,想也没想就直接点更新了,结果悲剧了,重启之后开始安装更新,后面就显示出一个安装日志(install.log)无法进入系统。后面一直重启了几次一直是这种情况,这刚刚来,代码还没写呢,生产力工具让我搞废了。 解决方案 1 找运维。 呃,我不喜欢给别人添麻烦。 解决方案 2 在 install.log 界面点击左上角选择启动盘 10.13.3,然后重启。 原因分析 公司发了个公告,说网络在调整,没在意,估计是没下载完整。我回家挂上 VPN 使用 100M 联通宽带下载安装成功更新,完全没有问题。 几个思考 Mac在安装更新的时候难道不校验文件是否完整么?为什么会有这种问题? 遇到自己不熟悉的问题,不要产生不必要的情绪。遇到问题,那就解决问题,仅此而已。 PS: Mac这键盘打字还是不如机械爽。

浅说JavaScript之Event Loop(上)

2018-03-14 约 1 分钟读完 搬砖秘籍
Event Loop 也叫事件循环,是 JavaScript 中的基础概念,听起来蛮唬人,查了一些资料,斗胆用大白话来说说这个东西。PS:仅限浏览器的讨论。 为什么会有 Event Loop 这一切还要从 JavaScript 的诞生说起,因为造它的用途简单,就是来浏览器“谈谈心”。谈心嘛,套路什么的不用太深,给你一个单线程的脑子就够了。于是乎,这“一根筋”的 JavaScript 就来到了人间,虽然这个呆头呆脑的家伙后来上了一件叫 “Worker” 的装备,也开始学会了城里人的套路,但它总归是村里出来的(web worker本身限制诸多,有空再叨),再多的套路也没变了它“一根筋”的本质。 虽然它“一根筋”,但它不傻。不管工作多么忙碌,人家照样张弛有度。举例来说,就像衣服放洗衣机了,它才不会在那等着45分钟衣服洗完去晒,而是继续扫地、打麻将…等听到洗衣机洗完响了,再去收。它的这个本事就叫“非阻塞”,而让它能有这个本事的,就是今天的主角——Event Loop。 Event Loop 的流程 说起 Event Loop 的流程,要先看这张来自 Philip Roberts 的图。 基本的过程就先从左边看起,JavaScript 主线程运行的过程中产生了 堆(heap) 和 栈(stack),栈中的代码顺序执行,当遇到“拦路虎(异步)”操作的时候,就把这“锅”扔给浏览器老大哥,并对它说“大哥,这事我不好搞,你帮搞定吧。对了,搞定完了,和我弟(任务队列/task queue)说一声啊。”。然后继续栈中的代码跳过这,继续往下走,再遇到(比如DOM操作,AJAX请求)再找老大哥。。。 当栈中的活都干完了,“哎?大哥帮我把事处理的怎样了?找我弟问问去。” 老弟(任务队列)给了一个列表:二哥,这些活(回调),还要你干。 于是,把任务队列的活再接着干,直到没活可干,就可以休息了。 这就是上面图的流程,所以同步总要比异步的结果先出来。比如: setTimeout(function(){ console.log('2') }, 0) console.log('1') console.log('3') 结果: 1 3 2 老弟的账本(任务队列的秘密) 既然 JavaScript 这么信任小弟,那小弟做事也不能马虎,对浏览器老大哥也是言听计从。可老弟也是一个有原则的人。当浏览器老大哥给来一堆任务的时候,哪个在前,哪个在后呢? 老弟内心也门清,他把这些任务分为了2类,当官的(micro task)和老百姓(macro task)。任务来了,他就先看看身份,然后把他们放到不同的队伍中去(干部的纯洁性嘛)。于是当大任务(好处)来临时,干部优先嘛,先处理micro task,再处理macro task。 那何人可为官? new Promise() new MutaionObserver() 老百姓是谁? setInterval() setTimeout() 所以下面的代码: setTimeout(function () { console.log(1); }); new Promise(function(resolve,reject){ console. 继续阅读

text-overflow: ellipsis 无效的解决方案

2018-03-12 约 1 分钟读完 搬砖秘籍
一个简单的需求,要展示用户的微信名,有的人喜欢把微信名起的很长,导致一个框框显示不下,于是用到了 text-overflow 的属性。代码如下: width: 90%; margin: 0 auto; overflow: hidden; font-size: 14px; color: #fff; text-align: center; text-overflow: ellipsis; 可效果不是我想要的 解决方案 可以看出问题出在换行,加一句white-space: nowrap;即可。