免费的国内 git 代码托管服务
Nov 07, 2019
码云 官网: https://gitee.com 功能最为丰富,Pages 需要付费才能使用自定义域名和 https Coding 官网: https://coding.net 已被腾讯收购,Pages 功能免费提供自定义域名和 https 阿里云 官网: https://code.aliyun.com 简洁易用,目前还没有 Pages 功能 …
iOS 13 下访问受限制的 _ivar
Jun 09, 2019
在 iOS 13 之前,一般是使用 KVC 来实现访问私有的实例变量,比如要访问 UITextField 的 _placeholderLabel 一般会这么做: extension UITextField { var placeholderLabel: UILabel? { get { return value(forKey: "_placeholderLabel") as? UILabel } } } 一直到 iOS 12,这个方法运行的很好,但是升级到了 iOS 13,运行的时候就崩溃了: …
模仿微信适配 iPad 的布局方式
May 08, 2019
微信在 iPad 上竖屏时显示的样式和手机版一样,横屏的显示为分隔视图。 UIKit 里可以实现这样的效果的组件是UISplitViewController。 接下来就是要自定义一个 UISplitViewController 来逐步实现像微信一样的效果。 …
Fix Reveal load error in iOS 12 (jailbreaked)
May 02, 2019
After install CCRevealLoader, RevealServer.framework installed at /Library/Application Support/CCRevealLoader/RevealServer.framework file system sandbox blocked mmap When loading Reveal server a solution: move RevealServer.framework to /Library/TweakInject/ mv "/Library/Application Support/CCRevealLoader/RevealServer.framework" /Library/TweakInject/ ln -s /Library/TweakInject/RevealServer.framework /Library/Application\ Support/CCRevealLoader/ That`s OK now.
rsshub with TLS
May 01, 2019
Deploy rsshub rsshub server listen 127.0.0.1:1200 docker-compose.yml version: '3' services: rsshub: image: 'diygod/rsshub' Deploy nginx docker-compose.yml version: '3' services: nginx: image: 'cntrump/ubuntu_nginx_boringssl' volumes: - /opt/nginx/etc:/etc/nginx - /opt/nginx/log:/var/log/nginx - /opt/nginx/cache:/var/cache/nginx - /opt/www:/var/www ports: - '80:80' - '443:443' command: /usr/sbin/nginx -g "daemon off;" Reverse proxy, using http 1.1 with tls 1.2/1.3 nginx.conf { ... # HTTPS server server { listen 443 ssl; server_name localhost; ssl_protocols TLSv1.2 TLSv1.3; ssl_certificate /etc/nginx/certs/fullchain.pem; ssl_certificate_key /etc/nginx/certs/privkey.pem; location / { proxy_redirect off; proxy_pass http://rsshub:1200; # rsshub is service name which defined in docker-compose.yml proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; # Show realip in v2ray access.log proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }
在 iOS 中使用 icofont 字体
Apr 30, 2019
获取 icofont 可以在 icofont.com 下载到 icofont.ttf,里面包含了很多图标。 把下载回来的 icofont.ttf 拖到项目里,或者新建一个 fonts.bundle 用来放字体资源。 在 APP 启动的时候注册字体,注册之后就能在 APP 里全局使用了,使用方法和使用系统字体一样。 …
在 ObjC 项目里使用 Swift 静态库
Mar 29, 2019
Xcode 9 开始 Swift 支持编译生成静态类型的 framework 如果给之前的 ObjC 项目直接添加 Swift 写的 framework,在编译的时候会报错,错误信息是无法找到 Swift 的方法。 解决方法很简单,在 ObjC 项目里添加一个空的 swift 源文件就行了。 …
git with GPG sign
Mar 25, 2019
Setup GPG pub key for git server Install GPG Suite or gpgosx on macOS Create a GPG key Setup GPG pub key for github or gitlab etc. Setup GPG key for git client List all GPG key $ gpg -K Setup signingkey for git $ git config user.signingkey your-key Enable gpgsign for git commit $ git config commit.gpgsign true using gpg2 $ git config --global gpg.program $(which gpg2)
GNU auto tools
Mar 25, 2019
The GNU Autotools: Autoconf Automake Libtool (Xcode built-in) Gettext
Make carthage portable
Mar 23, 2019
I wanna run carthage without install CarthageKit.framework to system library. Download latest release get latest carthage pkg form https://github.com/Carthage/Carthage/releases Extract pkg file pkgutil --expand-full Carthage.pkg Carthage Copy to system path cp Carthage/CarthageApp.pkg/Payload/usr/local/bin/carthage /usr/local/bin mkdir -p /usr/local/Library/Frameworks cp -r Carthage/CarthageApp.pkg/Payload/Library/Frameworks/CarthageKit.framework /usr/local/Library/Frameworks Add rpath for carthage install_name_tool -add_rpath @executable_path/../Library/Frameworks /usr/local/bin/carthage install_name_tool -add_rpath @executable_path/../Library/Frameworks/CarthageKit.framework/Versions/Current/Frameworks /usr/local/bin/carthage All done. I using a shell script make it easy #!/bin/bash set -e if [ ! -f Carthage.pkg ]; then echo Carthage.pkg not found. exit -1 fi if [ -d Carthage ]; then echo found Carthage, removed rm -rf Carthage fi pkgutil --expand-full Carthage.pkg Carthage mkdir -p Carthage_portable/bin mkdir -p Carthage_portable/Library/Frameworks cp Carthage/CarthageApp.pkg/Payload/usr/local/bin/carthage Carthage_portable/bin cp -r Carthage/CarthageApp.pkg/Payload/Library/Frameworks/CarthageKit.framework Carthage_portable/Library/Frameworks rm -rf Carthage install_name_tool -add_rpath @executable_path/../Library/Frameworks Carthage_portable/bin/carthage install_name_tool -add_rpath @executable_path/../Library/Frameworks/CarthageKit.framework/Versions/Current/Frameworks Carthage_portable/bin/carthage echo Make Carthage portable at Carthage_portable echo Testing Carthage_portable/bin/carthage version Carthage_portable/bin/carthage version