DevOpsMemo

=Background=
 * This page is created out of LearningLite.
 * Top 10 programming fonts click

=Leadership= Refer to linkedin
 * Bad ones
 * 1) Marionette
 * 2) * In an age of uncertainty, many managers are yielding to this trap of just playing it safe to preserve their position and privileges.
 * 3) * They just follow orders.
 * 4) * They never stand up for their team or question policies.
 * 5) * They are mere puppets and exude no loyalty to employees.
 * 6) * A lack of integrity in a manager can make an employee lose passion for the job.
 * 7) King Kong
 * 8) * Some managers when they reach to the top immediately forget where they came from.
 * 9) * These type of managers possess a superiority complex and like to draw the distinction between management and staff.
 * 10) * It is dreadful to work under a manager who is more worried about pushing their weight around than building relationships.
 * 11) * Great leaders don’t talk down to their employees or make them feel inferior.
 * 12) * Respect is a must.
 * 13) Superman
 * 14) * They think the organisation revolves around them.
 * 15) * Some start behaving like they are the owners of the company.
 * 16) * This trap includes making all of the decisions solo, ignoring feedback and taking the credit.
 * 17) * When employees don't feel appreciated, morale and engagement plummets.
 * 18) Taskmaster
 * 19) * Their sole focus is on the bottomline.
 * 20) * Continuously drilling employees is a sure way make them unhappy at work. Micromanagement suffocates, demoralises and kills creativity.
 * 21) * If you hired someone, it means you believe they are capable of doing the job.
 * 22) * A manager's job is to motivate and provide guidance and support.
 * 23) * It's not constantly monitoring an employee's every movement.

=Languages= Compiled, interpreted, object orientated, functional
 * Key words

Java

 * Coding convention click guide
 * JUnit4 with table / parameters click

Python
Tbd

Kotlin

 * Kotlin Learning Note
 * Learning Coroutine

Swift
Refer to DevOpsMemo for development memo on platform of iPhone. Refer to |visual studio code for swift on windows
 * Learning Swift Memo
 * Swift Programming Language click
 * Json to swift online tool click

Swift on Ubuntu

 * example project click
 * code and tests example git clone https://github.com/apple/example-package-dealer
 * editor::atom click and its plugins apm::swift-debugger click

Swift Comments

 * Both /// (inline) and /** */ (block) style comments are supported
 * Comment Markup Formatting Reference click
 * Based on MarkDown click
 * Coding Without Comments click

Swift Library

 * iOS framework tutorial click

=General Areas=

Patterns

 * source making click
 * Design Patterns command pattern

Branching Strategy

 * Git `git clone --branch remote-name --single-branch https://github.com/android.git`
 * Gitflow - 2010 click
 * Gitflow - 2013 click
 * Gitflow is Considered Harmful - 2015 first-post follow-up

Git
git branch -m old-name new-name git push origin :old-name new-name git push origin -u new-name
 * Rename remote branch

PC

 * JVM

RxJava

 * Observable - producing entity
 * Subjects - producing entity
 * Observer - consuming entity
 * Subscriber - consuming entity
 * RxJava Learning Note

Mobile

 * Appium a general mobile testing framework
 * Cloud testing amazon test types

Android

 * AndroidNote

Android on Mac OS

 * Intel HAXM click x86 x10 faster than arm cpu

Android on Ubuntu

 * adb devices - refer to stackoverflow
 * `lsusb`
 * create file `/lib/udev/rules.d/10-adb.rules` with content
 * Access hardware device click

Handy Android Commands
Refer to for more
 * Light up screen from command line

Android Gradle
-Pandroid.testInstrumentationRunnerArguments.class=com.tatts.android.tests.journeys.subscripitions.management.UpdateSubscriptionJourneyTest
 * Run single suite


 * Multiple Flavours
 * tools android com sourceset

Instrumentation
adb shell am instrument -w /
 * Run instrumentation from command line click more examples
 * Re Run on Failure
 * TestRule and custom TestRunner click
 * Learning Android Application Testing 2015 pdf sample

Espresso

 * Espresso click
 * Espresso code sample - android-testing github
 * ViewMatchers click assertThat(String message, T actual, Matcher matcher)
 * Hamcrest click
 * Cheat Sheet click
 * ViewActions.java click
 * Recipes click
 * R.id.button1 is different to android.R.id.button1
 * Espresso vs UiAutomator click
 * Espresso Advanced Samples click
 * Android user interface testing with Espresso - Tutorial click
 * Espresso + BDD
 * a11n cucumber and espresso click
 * stabilitron epresso-cucumber click
 * cucumber-jvm and android click


 * robolectric.org testing framework
 * Robolectric lets you run your tests on your workstation, or on your Continuous Integration environment in a regular JVM, without an emulator.


 * Espresso, Mockito and Dagger dagger2
 * Fast and reliable UI tests on Android click
 * Introduction to Automated Android Testing click

Cucumber

 * Cucumber-jvm::Android click
 * Cukelator click
 * How to install Espresso and Cucumber in Android Studio click
 * Another cucumber on android/espresso 2.0 click

androidTestCompile ('info.cukes:cucumber-android:1.2.4') { exclude module: 'cucumber-jvm-deps' exclude group: 'com.google.guava', module: 'guava' }       androidTestCompile ('info.cukes:cucumber-picocontainer:1.2.4') { exclude module: 'cucumber-jvm-deps' exclude group: 'com.google.guava', module: 'guava' }       androidTestCompile ('info.cukes:cucumber-jvm-deps:1.0.3'){ exclude group: 'com.google.guava', module: 'guava' }
 * Version

Parallelism
echo "no" | $ANDROID_HOME/tools/android create avd --name "Test-Emulator-API23-Nexus-5" --target "Google Inc.:Google APIs:23" --abi google_apis/x86_64 --device "Nexus 5" --skin "1080x1920" echo "no" | $ANDROID_HOME/tools/android create avd --name "Test-Emulator-API23-Nexus-7" --target "Google Inc.:Google APIs:23" --abi google_apis/x86_64 --device "Nexus 7" --skin "1200x1920" echo "no" | $ANDROID_HOME/tools/android create avd --name "Test-Emulator-API23-Nexus-10" --target "Google Inc.:Google APIs:23" --abi google_apis/x86_64 --device "Nexus 10" --skin "2560x1600"
 * Shard click
 * Spoon
 * Android Emulator command line parameter
 * -port
 * adb -s emulator-5554 emu kill click
 * AVD

Other Testing

 * Mockito home vogella introduction

Mock

 * mockito click

RxJava

 * Going Reactive: An Architectural Journey click
 * Replace AsyncTask with RxJava click

BDD on Android

 * Calabash click

General Android

 * zxing on android as a fragment click

iOS

 * Install Mac OS Yosemite on PC unibeast yosemite-zone
 * How To Make An iPhone App - with Swift click
 * Develop iOS App with Swift click


 * Where to Put Code click
 * Expect your app to be a sort of tree of references from the AppDelegate to one class instance (like a main UIViewController), which will have references to other class instances (like a UIView and other UIViewControllers), and so on
 * In a UIViewController, expect to do most of your setup in viewDidLoad
 * At first, you can probably do most of what you need to do without subclassing UIView at all, unless you need to use drawRect: or override other UIView methods, using a view instead of a view controller is mostly organizational
 * In a UIView, do most of your setup (i.e. creating subviews) in init (save drawRect: for actual drawing only)
 * If you're trying to create a more complex layout, don't forget about layoutSubviews for adjusting subview frames and so on
 * For now, bias to using properties instead of ivars, you can create a private @interface if you don't want to expose a property to other classes
 * Read the documentation for UIViewController's viewWillAppear, viewDidAppear, viewWillDisappear, and viewDidDisappear (all pretty succinct and once you start to do anything remotely complex you will need to override these methods)

Learning Materials

 * CS193 click
 * BDD with iOS click
 * Blog - iOS Architecture Patterns click - a pattern for fruit cake not for burger.

Fastlane

 * Scan
 * Gym
 * Snapshot

Gradle
Not quite working for now.

UI Programming

 * iOS iPhone Programming Learning Memo
 * UIView - programming guide click
 * Implement a custom control click
 * iOS Basically: Reusable UIView part1 part2
 * iOS – Developing reusable Views in a Swift Framework click

UI Automation

 * UI Testing in Xcode - wwdc2015 click
 * UI Testing in Xcode 7 Part 1: UI Testing Gotchas
 * masilotti click
 * ui testing cheat sheet click
 * Accessibility click
 * Do NOT set isAccessibilityElement=True to container view
 * XCUITest cheat-sheet click
 * XC 'Unit Test'
 * UIKit.UIStoryboard.instantiateViewController(withIdentifier:) click
 * Clean Swift click
 * Testing Business Logic in Interactor click
 * Testing Presentation Logic in Presenter click
 * Testing View Controller part1
 * Automation Patterns click - not sure how good it is
 * Gui testing tips click

Parallelism
xcrun simctl create "dev1" com.apple.CoreSimulator.SimDeviceType.iPhone-6s-Plus com.apple.CoreSimulator.SimRuntime.iOS-9-3 # refer to xcrun simctl list xcrun open -n /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/ --args -CurrentDeviceUDID 5CECDC88-00BD-4144-A8DC-7C708E000000 xcodebuild -scheme MyApp-AcceptanceTests -project ../source/MyApp.xcodeproj \ -destination "platform=iOS Simulator,id=5CECDC88-00BD-4144-A8DC-7C708E000000" \ -derivedDataPath './DerivedData/MyApp' -archivePath './ArchiveData/MyApp' \ build-for-testing xcodebuild -scheme MyApp-AcceptanceTests \ -project ../source/MyApp.xcodeproj \ -destination 'platform=iOS Simulator, id=5CECDC88-00BD-4144-A8DC-7C708E000000' \ -derivedDataPath './DerivedData/MyApp' \ -archivePath './ArchiveData/MyApp' \ test-without-building # do not send name and id at the same time for -destination The issue is that Xcode will end up communicating with all Simulator.app instances because they all listen to the same notifications. The support that you are looking for is currently not available. click
 * Launch multiple Simulators click
 * linked in blue pill click
 * create simulator from command line
 * open simulator by uuid
 * build the workspace without testing
 * testing
 * Issue

BDD on iOS

 * XCFit click
 * Fastlane Cucumberish click
 * Fitnesse
 * Frank click

Http Request

 * NSURLConnection click deprecated
 * USURLSession click
 * Alamofire click
 * With Swift NSURLSession click

Mock Server

 * Kakapo swift

Pkg

 * Install the package
 * Unpack package
 * Unzip payload
 * Unpax payload
 * List installation
 * Delete installation
 * Delete installation

xCode

 * Free up disk space click
 * ~/Library/Developer/Xcode/DerivedData
 * ~/Library/Developer/Xcode/Archives
 * ~/Library/Developer/Xcode/iOS DeviceSupport
 * ~/Library/Developer/CoreSimulator
 * ~/Library/Caches/com.apple.dt.Xcode
 * ~/Library/Application Support/MobileSync/Backup
 * xCode9 new features
 * BDD with XCTActivity click

=Web=

Page Object Pattern

 * Martin Fowler 2013 click
 * Github 2015 click

=Web Service=
 * WSDL
 * WADL impl w3 xsd
 * YAML
 * Swagger
 * Tutorial 1 intro
 * Swagger Specification tutorial click
 * RAML
 * atom+api-workbench `apm install api-workbench`
 * raml tutorial click
 * raml, swagger or blueprint click
 * postman to swagger stack overflow online convert

JSON

 * Convert json and Java www.jsonschema2pojo.org
 * json to schema online genson tools
 * json2c# json2csharp.com
 * json2yaml www.json2yaml.com

API Endpoints

 * media tatts media.tatts.com documentations/Default.html

=SCM=

Gradle
Tbd

=Books=
 * 影印版
 * weibo user collection
 * it-ebooks-2016 click
 * it-ebooks-2015 click
 * it-ebooks-2014 click

=Videos=
 * Standford 193P videos click objective-c
 * WWDC click

=Hardwares=
 * Mac Mini spec
 * Wynston Sit Stand Desk $97
 * Headphone comparison

Scissor
Aka Scissor-switch
 * A4Tech WK-520
 * A4Tech KV-300 (the same as WK-520) click

Mechanical

 * n/a

Volcano

 * Microsoft Wired KB 600 (blank keyboard)

Desktops

 * Optiplex 790 / 990 click
 * DisplayPort to HDMI
 * UNITEK (Y-6332) DisplayPort to HDMI Female (Support 4K) Converter - $ 11.00
 * Comsol DisplayPort to HDMI 4K2K Adaptor - $34.88
 * HP Compaq 6200 / 6300 Pro; 8000 / 8100 / 8200 Elite click
 * Lenovo ThinkCentre click

Monitors

 * Samsung LU28E590D 28" UHD Monitor 3840x2160 $349 $399 $499
 * $279.20 was once seen on ebay.com.au by ozbargin

Mac

 * Mac font issue
 * How to Fix Blurry Fonts in MacOS Mojave for Non-Retina Displays click
 * Change Font Smoothing Settings in Mac OS X click

=Softwares=

Operating Systems

 * Yosemite
 * Unibeast click
 * Hackintosh click
 * x86 list click
 * Ubuntu click
 * Swift Unit Testing on Ubuntu click

=Appendix= Tbd