Hardcode Today

I think, then write down✨

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 …

  • Thu 29 October 2015
  • Linux

Get Spec from RPM file

0. 前言 常言道程序猿的成长道路就是Ctrl-C + Ctrl-V (OS X用户自动切换到⌘-C + ⌘-V). Coding之路上少不了要借鉴前辈的code,这也是开源的好处之一。 1. 原因 因为要给一个Qt开发的程序打rpm包,以支持SUSE和RedHat,so 如果用户的桌面环境不是基于Qt的KDE之类的,就有可能系统中没有Qt的运行库,所以要在安装包里声明需要安装Qt的运行库, 在RPM平台上是 libQtGui.so.4, 本来以为可以像deb包写道Requires后面,像这样: Requires: libQtGui4 >= 4.8.0 但是,这样是万万不行滴,然后发现SUSE下 libQtGui.so.4 的包名是 libqt4-x11,在RedHat下这个包是qt4-x11。所以就想这个是不是要区分对待。Google下得到了这篇openSUSE:Build Service cross distribution howto,然后写成这样 %if 0%{?suse_version …

Google I/O Keynote 观后感

首先澄清,我还在看Keynote,还没看完,刚看到Android Wear,个人在使用Apple全线产品,以前用过Nexus S 和 Motorola XT910。个人更倾向于Apple的生态。所以本文大多时间都是在吐槽XD。 Android M加入权限管理 只能说终于Android用户可以不再借助第三方需求几乎所有权限的软件+Root,来控制我的隐私。但是考虑到,在Android Lollipop正式发布半年之后,全球Android 5.0+设备寥寥无几和各家厂商的自行定制,我真的觉得这个功能到用户手里要等到猴年马月(我真的说的是猴年马月,也就是明年下半年),而且都是各家的旗舰机种。对于这个全线管理,我只能说我很想看看到时候国内开发者的反应。 Android Pay, finger print and so on 这个真的不知道最后的情况,也没有机会用到Apple家的Apple pay。但是可以预见,这个东西天朝是不能用的。 这个指纹识别,只能说是给Sony,Moto这样,用原生Android的OEM厂商减少系统定制的投入而已。 Android Wear 只能说 …

Note for Stanford CS193p

Class 2 What's the different between exclamation mark and question mark after the vars? they are same, but exclamation mark means the var will automatical unwrap. @IBOutlet weak var display: UILabel! @IBOutlet weak var display: UILabel? Class 3 Same way to instance array and dictionary var opStack = Array() var …

Latex with Emacs on OS X

记录在OS X下使用Emacs编辑LATEX 0.安装LATEX Mac版的Tex可以网站https://tug.org/mactex/获得,这里有提供一个2.4G的完整安装包,包括编辑器、预览等一整套立等可取软件套装,可以直接拿来编辑Latex。这里我们主要是用Emacs编辑Latex所以,只需要 下载基础安装包BasicTex.pkg并安装。 1.安装AUCTEX AUCTEX是一个提供给GNU Emacs和XEmacs使用来书写和格式化的TEX的插件,提供各种宏,包括AMS-TEX, LATEX, Texinfo, ConTEXT和docTEX(英文)真的不是太好翻译Orz。这里可以用源码安装,也可以使用brew安装,偷懒仍然使用brew安装。 brew install auctex 2.添加AUCTEX到Emacs配置文件中 在用brew安装完AUCTEX,最后会友好的提示 To activate, add the following to your .emacs …

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 …