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
fatal: cannot run gpg: No such file or directory
Mar 22, 2019
After installed GPG Site: https://gpgtools.org/ Git commit with error: fatal: cannot run gpg: No such file or directory error: gpg failed to sign the data fatal: failed to write commit object Solution: git config --global gpg.program $(which gpg) About Signing commits
Using xcrun
Mar 22, 2019
Run a command with special toolchain $ xcrun --toolchain org.llvm.8.0.0 clang -v output clang version 8.0.0 Target: x86_64-apple-darwin18.2.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/LLVM8.0.0.xctoolchain/usr/bin Show SDK path $ xcrun --show-sdk-path --sdk iphoneos /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk $ xcrun --show-sdk-path --sdk iphonesimulator /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk $ xcrun --show-sdk-path --sdk macosx /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk
build LLVM 8 on macOS
Mar 21, 2019
TL;DR download my pre-built: LLVM8.0.1.xctoolchain.7z MD5: 32241cb3e093b15c58bd40200dc2fd76 LLVM8.0.0.xctoolchain.7z MD5: 169fd4d3fdffa5a136cbe77aac759cdc prepare building lldb Install editline Install pcre && swig Read code-signing.txt building clone llvm-project checkout 8.0 branch cd llvm run build-llvm.sh build-llvm.sh #!/bin/bash set -e mkdir build && cd build output=/tmp/llvm-build cmake -DCMAKE_INSTALL_PREFIX=${output} \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_INCLUDE_TESTS=OFF \ -DLLVM_INCLUDE_EXAMPLES=OFF \ -DLLDB_CODESIGN_IDENTITY='' \ -DLLDB_BUILD_FRAMEWORK=ON \ -DLLVM_ENABLE_PROJECTS="all" \ -DLLVM_CREATE_XCODE_TOOLCHAIN=ON \ -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \ -GNinja \ .. ninja ninja install-xcode-toolchain echo build finish. echo toolchain installed at ${output} Note: you need install cmake and ninja first. …