黑苹果安装记录

因工作原因换台电脑,作为开发人员,肯定是优先Mac的,其次是Linux系,但Linux系系统在软件工具生态上还有些不足,而Mac无疑是最佳选择。虽然黑苹果可能会遇到一些意外事故,但是也挡不住我对它的喜爱,哈哈。

以下介绍基本都是参照https://www.tonymacx86.com/threads/unibeast-install-macos-mojave-on-any-supported-intel-based-pc.259381/#create_unibeast得来,有能力的还是去tonymacx86好好研究一番。

安装前准备

硬件准备

黑苹果安装中最大的问题就是驱动问题,所以最好是安装tonymacx86上推荐的配置去购买,但是我的机器已经是准备好的了,就跳过这一步,但是要通过搜索确认下自己的硬件安装黑苹果没有太大问题。我的主要配置如下:

  • Intel I5 8400
  • MSI B310M
  • 集成显卡 Intel UHD 630

另外你最好有一台白苹果,没有的话用Windows应该也可以,不过我更倾向于白苹果制作引导盘的方式。

除此意外你还需要准备一个8G以上(最好16G)的U盘用来做安装盘。

软件准备

首先你需要注册一个tonymacx86的账号,因为我们需要的工具以及教程基本上都是在这里找到的。

然后在下载Mac的系统安装文件,根据自己情况选择不同的方案。这里以macOS High Sierra 10.13.6版本为例(最新的Mojave版本感觉有不少问题,我的白苹果一直都没有升级),白苹果前往https://itunes.apple.com/cn/app/macos-high-sierra/id1246284741?ls=1&mt=12下载。Windows系统可以通过下载集成clover的系统镜像配合TransMac工具制作启动盘进行安装,因为这个方式没有做过测试,所以不做过多介绍,各位可以自行搜索尝试,成功之后的操作应该都是一样的。

另外还需要在tonymacx86下载好MultiBeastUniBeast工具,注意配合自己下载的系统版本。

这里需要将白苹果的系统语言改为英语,这是UniBeast的强制性要求,改完后重启。

安装流程

  1. 制作启动盘。插上U盘,在白苹果的磁盘工具中擦除U盘,格式选择Mac扩展(日志)。然后打开UniBeast按照流程进行启动盘制作,这里引导方式选择UEFI模式(一般新的电脑都是支持的)。制作完成后将MultiBeast应用拖到U盘中以备后用。
  2. 修改主板设置。让要安装黑苹果的电脑重启进入BIOS,关闭CPU的VT-D功能,关闭CFG-Lock,关闭主板的安全启动模式(Secure Boot Mode),关闭IO串口(IO Serial Port),打开XHCI,硬盘调整为AHCI模式(一般新电脑都改成这种模式)。以上说的这些都是有则改之,无则跳过。然后修改U盘为第一启动盘,保存重启就可以进入Clover启动界面了。
  3. 准备安装。在Clover界面选择安装macOS系统,然后就等待安装吧,安装过程中可能会多次重启,重启后在Clover界面选择High Sierra来进行下一步安装。如果过程中出现什么错误(我就出现了叉号禁止符,并在之后一直无法进行下一步安装),那么在Clover界面选择启动参数设置(下面第2个还是第3个的)并追加-v参数并重新进行之前操作,这样就可以将日志打印出来,找到你出错的那一行的关键信息进行搜索并找到解决方案。我出现的问题是通过在启动参数后追加-f UseKernelCache=No来解决了,有时可能还需要不断的重启或者更改U盘插的USB位置来修复,也是奇葩。

  4. 系统安装。第一次安装时需要将整个盘都擦除,同样是macOS扩展(日志)格式,安装完成后就是一些系统的初始化配置了,之后就进入我们的黑苹果系统了。

后续操作

  1. 使用MultiBeast安装各种驱动。将MultiBeast从U盘拖到应用程序中并启动,按照自己电脑硬件选择合适的驱动文件(鬼知道我应该勾选哪些驱动,除了个别是明确的,其它驱动都是看着最像或者凭感觉选的)并完成安装,之后重启电脑,这是基本上就可以拔掉U盘(这个启动盘后期还可以作为我们系统的修复引导工具)。
  2. 配置基本环境并安装工具。作为开发,我们还是要给我们的电脑安装些基础和必备的东西

    • Homebrew 这个在安装时可能很慢,所以需要提前找好梯子

      1
      /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    • nvm NodeJs版本管理

      1
      curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
    • Git

      1
      brew install git
    • Xcode 一些命令行工具需要

    • Docker VSCode iTerm2 Alfred等

总结

安装黑苹果不难,但需要新手花点时间学习研究,遇到问题通过日志搜索,多逛逛tonymacx86

Electron应用开发总结

这次又是工作总结,不过是关于Electron的,之前工作花了差不多10个月做的产品,一直想写个填坑记录的,现在闲下来可以写写了。我们的产品是互联网化的,所以有很多内容也是没做过,一路也是遇到了很多坑。

1.0版本

之前虽然有做过Electron的经历,但之前做的功能相对简单,前端一套东西就可以搞完,但这次不行了。第一个版本当时是用electron-vue模板生成的,在完成产品基本功能后发行的1.0版本中,我们发现了大量的问题,比如

  • 内存占用过大,软件用的时间越长越大,越来越卡。
  • 从主界面打开子页面窗口时会出现很长时间的白屏,用户可能接受不了。
  • 数据库(一开始用的是RxDB)一旦存储大量数据,读取起来就会很卡。
  • 总之给用户的感受就是慢卡白屏。

记新windows电脑打造前端开发环境流程

系统环境

  • 查看电脑配置(主要是CPU内存硬盘SSD这些),对于该配置能完成什么样的开发强度心里有数
  • 联网,设置固定IP(较推荐)
  • 清理已安装工具,取消不常用的任务栏(比如IE浏览器,应用商店)
  • 规划分区,明确每个分区盘的用处

基于Rancher搭建k8s的集群环境

本文主要纪录了在k8s的学习过程中我是如何搭建k8s集群环境的经历。
在学习和了解了k8s的一些基础概念我开始尝试去自己搭建一套集群环境,经过一段时间的尝试,我决定使用rancher来帮助搭建环境,并使用rancher os作为主机镜像。
你要问我为什么使用rancher搭建?因为简单啊!为什么使用rancher os作为主机镜像?因为小啊!

记录在开发electron-ssr过程中遇到的问题

首先是项目介绍,其实这个项目就是给shadowsocksr-python项目加一个GUI壳,所以它的功能就是为了FQ。GitHub地址在这

其次,本文这里只记录这此在2017年底开始的重构经历,因为之前的代码写得实在比较乱(我一开始只是打算练习用的。。。)。OK,话不多说,下面进入正题。

脚手架

我们在开发一个完整的功能的时候往往不是从零开始做(因为那太费时间和经历了,还得自己维护项目框架),这里我是从electron-vue项目初始化而来的。为什么用这个框架?跨平台用electron,前端开发用vue配合webpack,所以就选择了这个框架咯。

工作中遇到的cookie知识整理

本文主要记录在工作中遇到的cookie知识的一些整理,这些零散的细节的知识点在没遇到的时候是模棱两可,遇到的时候又不是很深入地了解,所以还要查资料,写demo来反复验证。所以这里把这次关于cookie的知识记录下以便后续查看。

在介绍结果之前先阐述个基本知识:同源,即相同协议、相同域名、相同端口。浏览器对于跨域访问有一些限制,但是对于cookie的限制稍微有些不同。

利用dokku打造自己的私有云仓库和自动化部署

dokku是什么?一句话概括就是一个几百行shell代码的高可扩展性的类Heroku的单服务器PAAS平台,利用它可以简化很多docker操作,更加方便我们维护一个docker driven的平台。

CI简介和实际应用

什么是CI

引用知乎上的一个回答

作者:赵劼
链接:https://www.zhihu.com/question/23444990/answer/26995938
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

集成是指软件个人研发的部分向软件整体部分交付,以便尽早发现个人开发部分的问题;部署是代码尽快向可运行的开发/测试节交付,以便尽早测试;
交付是指研发尽快向客户交付,以便尽早发现生产环境中存在的问题。
如果说等到所有东西都完成了才向下个环节交付,导致所有的问题只能再最后才爆发出来,解决成本巨大甚至无法解决。
而所谓的持续,就是说每完成一个完整的部分,就向下个环节交付,发现问题可以马上调整。是的问题不会放大到其他部分和后面的环节。

这种做法的核心思想在于:既然事实上难以做到事先完全了解完整的、正确的需求,那么就干脆一小块一小块的做,并且加快交付的速度和频率,使得交付物尽早在下个环节得到验证。早发现问题早返工。

举个例子,你家装修厨房,其中一项是铺地砖,边角地砖要切割大小。如果一次全切割完再铺上去,发现尺寸有误的话浪费和返工时间就大了,不如切一块铺一块。这就是持续集成。
装修厨房有很多部分,每个部分都有检测手段,如地砖铺完了要测试漏水与否,线路铺完了要通电测试电路通顺,水管装好了也要测试冷水热水。如果全部装完了再测,出现问题可能会互相影响,比如电路不行可能要把地砖给挖开……。那么每完成一部分就测试,这是持续部署。
全部装修完了,你去验收,发现地砖颜色不合意,水池太小,灶台位置不对,返工吗?所以不如没完成一部分,你就去用一下试用验收,这就是持续交付。
-——————-
补充:从敏捷思想中提出的这三个观点,还强调一件事:通过技术手段自动化这三个工作。加快交付速度。

还有些细节可以参考阮一峰的文章

Windows下调试平板设备

本文主要记录Android上的Chrome和IOS上的Safari浏览器的调试方法,方便以后查看。开始之前请自备梯子,下面会需要翻墙。

利用firebase打造极速静态博客

之前博客一直是做的动态的,后台页面,添加博文,然后保存后查看博文。但最近VPS感觉不稳定加之价格有点小高(主要是穷),打算将vps上的所有东西都放在云端,使用免费资源(还不是因为穷)。第一步就是从博客开始。