Install newest nginx on ubuntu 18.04
Jan 17, 2019
Install nginx_signing.key $ cd /etc/apt curl -O https://nginx.org/keys/nginx_signing.key apt-key add nginx_signing.key Update apt source $ vim /etc/apt/sources.list deb http://nginx.org/packages/ubuntu/ bionic nginx deb-src http://nginx.org/packages/ubuntu/ bionic nginx $ apt-get update apt-get install nginx
Setup flutter for iOS without homebrew on macOS
Jan 15, 2019
requirements: macports Install cocoapods $ sudo gem install cocoapods Deploy to iOS devices $ sudo port install usbmuxd libimobiledevice ideviceinstaller ios-deploy $ pod setup Get the Flutter SDK current stale version: 1.0.0 flutter_macos_v1.0.0-stable.zip $ unzip flutter_macos_v1.0.0-stable.zip Add the flutter tool to your path: $ export PATH=$PATH:`pwd`/flutter/bin
Install Chisel for Xcode without brew
Jan 14, 2019
Clone Chisel git clone https://github.com/facebook/chisel.git chisel Build and install chisel.framework cd chisel/Chisel sudo make install Setup chisel commands vim ~/.lldbinit # ~/.lldbinit command script import /your/repo/chisel/fblldb.py script fblldb.loadCommandsInDirectory('/your/repo/chisel/commands')
Get free SSL/TLS Certificates from Let's Encrypt
Jan 13, 2019
My platform: macOS + macports Install certbot $ sudo port install certbot Write a shell script make_cert.sh #!/bin/sh set -e sudo certbot --duplicate certonly -d "*.$1" -d "$1" --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory Usage $ make_cert.sh domain.com Configure nginx Copy all certs to /etc/nginx/cert On Ubuntu $ vim /etc/nginx/sites-available/default Enable ssl configuration ssl on; ssl_certificate /etc/nginx/cert/fullchain.pem; ssl_certificate_key /etc/nginx/cert/privkey.pem;
Change toolchain for Xcode
Dec 20, 2018
Change toolchain for Xcode something about Xcode toolchian: Default toolchain location is /Applications/Xcode.app/Contents/Developer/Toolchains Extension of xcode toolchain bundle is .xctoolchain Display name and identifier of toolchain is defined in .xctoolchain/ToolchainInfo.plist CFBundleIdentifier : toolchain bundle identifier DisplayName : name displayed in Xcode menu All binaries, headers, libs etc in .xctoolchain/usr From menu Xcode - Toolchains to switch toolchians If you want install toolchain out of Xcode, the location is /Library/Developer/Toolchains If your toolchain is installed in /Library/Developer/Toolchains, must add CompatibilityVersion key to ToolchainInfo.plist and set the value is 2 with Number type. More about information of toolchain, you can learn from toolchain of swift Note: any applications builded with toolchain installed at /Library/Developer/Toolchains can not be uploaded to AppStore. …
Calc NSAttributedString size correctly with NSLayoutManager
Dec 16, 2018
Some code like this: NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:@"lvv" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:30]}]; NSTextStorage *textStorage = [[NSTextStorage alloc] initWithAttributedString:attrString]; NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init]; [textStorage addLayoutManager:layoutManager]; NSTextContainer *textContainer = [[NSTextContainer alloc] initWithSize:CGSizeMake(INFINITY, INFINITY)]; [layoutManager addTextContainer:textContainer]; CGRect usedRect = [layoutManager usedRectForTextContainer:textContainer]; NSLog(@"usedRect:%@", NSStringFromCGRect(usedRect)); result is CGRectZero: usedRect:{{0, 0}, {0, 0}} Why? Because glyph generation, layout and font fallback not have happened yet. Just adjust code simply: NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:@"lvv" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:30]}]; NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init]; NSTextContainer *textContainer = [[NSTextContainer alloc] initWithSize:CGSizeMake(INFINITY, INFINITY)]; [layoutManager addTextContainer:textContainer]; // add layout at the last NSTextStorage *textStorage = [[NSTextStorage alloc] init]; [textStorage addLayoutManager:layoutManager]; // set string after add layout [textStorage setAttributedString:attrString]; CGRect usedRect = [layoutManager usedRectForTextContainer:textContainer]; NSLog(@"usedRect:%@", NSStringFromCGRect(usedRect)); the result is correct: usedRect:{{0, 0}, {46.1962890625, 35.80078125}} BTW: Apple suggest call glyphRangeForTextContainer before usedRectForTextContainer , because the layout manager performs layout lazily. …
Debug WebKit with Xcode on iOS simulator
Dec 15, 2018
Debug WebKit with Xcode on iOS simulator Build WebKit git clone git://git.webkit.org/WebKit.git WebKit cd WebKit sudo Tools/Scripts/configure-xcode-for-ios-development Tools/Scripts/build-webkit --debug --ios-simulator It will take 1 hour. Configure WebKit.xcworkspace open WebKit.xcworkspace with Xcode File - Workspace Settings Advanced … Custom - Relative to Workspace Products: WebKitBuild Intermediates: WebKitBuild Done Configure MobileMiniBrowser open MobileMiniBrowser project in WebKit.xcworkspace change TARGETS (both MobileMiniBrowser and MobileMiniBrowser.framework) Build Settings - Base SDK: iOS change Architectures: Standard architectures (optional) Edit Info.plist of MobileMiniBrowser, add NSAppTransportSecurity settings for access http site. Configure Scheme of AllSource All Source - Edit Scheme … Run - Executable: MobileMiniBrower.app All done. …