Hardcode Today

I think, then write down✨

Programming Articles


macOS App 自动升级实现

0. 序 macOS 下 AppStore 外分发的 App 升级最常用的是 Sparkle。 哪还有这边文章主要是因为,公司 Windows App 已经有一套升级服务器接口,不想再为 Mac App 单独设置一套接口,所以 Mac App这边只能自己实现自动升级了🤷🏻‍。然后就有了这边算是笔记吧。 1.开工 实现自动升级,可以分为3部分 下载更新包 用新版覆盖旧版App 运行新版App 1.1下载更新包 这个,直接调 URLSession 下载就可以,或者你也可以像我一样骚气的用 XPC 实现也可以。关于 XPC 可以点击这里 1.2 用新版覆盖旧版App 这部分,其实需要分成两部, 1.2.1 …

Go Module 使用

0.开始 本文主内容用翻译自官方博客,加上在使用过程中遇到的问题 1.介绍 Go 在1.11 和 1.12 加入了依赖管理 module。一个 module 是一个根目录有个 go.mod 文件的包(package)。 module 不依赖 $GOPATH,不需要将包放到 $GOPATH/src 目录下。 在 GO 1.11 里, 如果在工作目录或者其上级目录存在 go.mod 文件,并且不在 $GOPATH/src 目录下, module 相关命令自动打开。在 $GOPATH/src 目录下,需要设置环境变量 export …

单例的实现

0. 前言 最近在面试iOS,被问到单例,我当时就蒙(这个名字似曾相识,但是真的其想不起啦,背景本人Objtive-C完全是照着将Category翻译成类别的书本和Apple的官方文档学的)。后来晚上回家上网搜了搜,这不就是单一实例对象么。讲真,我用这个功能完全是我懒得一遍遍的写alloc+init。 1.Objective-C下的实现 因为这个问题是在面试iOS被问到,所以先写Objective-C下的,也是最蛋疼的一个。看看C++有多好写就知道了。 最简单的写法: id A; @implementation ClassA + (instancetype)shareA { if (A == nil) { A = [[self alloc]init]; } return A; } @end 解释: id A是个全局变量,程序运行时候,全局变量被创建,注意这里A是个指针,我说的创建是指针变量被创建,就是存储指针的变量被创建,不是A指向的ClassA对象被创建。 这个指针是最简单的实现,只是图自己方便,不考虑被非法使用,比方说extern一下A …

Build C Language Library for Android

0.Introduction Android apps are written in Java, Java have provide JNI(Java Native Interface) to call or be called by native applications and libraries written in other language such as C/C++ and assembly. Android provide NDK(Native Development Kit) to support native development in C/C++. 1.Installing …

Markdown in Emacs

简单的一个笔记,我在OS X下的Emacs的Markdown配置 1.下载Markdown-Model,按照网页中的介绍下载、添加启动到.emacs文件中,这里有个问题是总是提示找不到markdown-mode文件,我的解决方法是,git clone 到\~/.emacs.d下,会在.emcas.d目录下生成一个markdown-mode目录,添加\~/.emacs.d/markdown-mode到load-path。最终调用markdown-mode的配置部分如下 ;;Markdown-Mode (add-to-list 'load-path "~/.emacs.d/markdown-mode/") (autoload 'markdown-mode "markdown-mode" "Major mode for editing Markdown files" t) (add-to-list 'auto-mode-alist '("\\.markdown\\'". markdown-mode)) (add …