Working effectively with iTerm


brew cask install iterm2


Cmd+\ Show Annotations
Cmd+Click Clickable Links
Cmd+Shift+H Paste History
Cmd + k Clear buffer
Cmd+Shift+O Open Quickly(Search tabs)
Cmd+; Autocomplete
Cmd+Shift+; Show Command History
Cmd+Shift+H Show Paste History
Cmd+Option+/ Recent Directories popup


Reuse previous session’s directory
  • Profiles > Default > General > Working Directory > Reuse previous session’s directory ##### Store command history/directory info
  • General > Save copy/paste and command history
  • Ensure Preferences > Advanced > Restore window contents at startup is set to Yes in iTerm (default to true)
  • Ensure “Close windows when quitting an app” is off in Mac’s System Preferences >General
Change default window size
  • Profiles -> Window -> Set rows to 80, Columns to 300
  • No way to open as maximized by default

Bash Settings

# \w - Full path of the current working directory
export PS1="\w "

Bash emacs mode shortcuts

CTRL-A Move cursor to the beginning of the line
CTRL-E Move to the end of the line
CTRL-K Kill forward to the end of a line
CTRL-U Kill the line from the beginning to this point
^abc­^­def Run previous command, replacing abc with def
Option+left(right) Move backward(forward) one word
Make Option+left(right) work
  • Preferences > Profiles > Keys
Keyboard Shortcut: Option+Left Action: Send Escape Sequence Esc+ b
Keyboard Shortcut: Option+Right Action: Send Escape Sequence Esc+ f
Command History - Cmd+Shift+;
Paste History - Cmd+Shift+H
  • Works for multiple-lines command
highlight errors and warnings
  • Preferences > Profiles > Advanced > Triggers > Edit
(?i:.*error.*)                     // Yellow on Black
(?i:.*(warning|warn).*)            // Orange on Black
(?i:.*FATAL.*)                     // White on Red
install shell-integration
  • Install from menu: iTerm2 > Install Shell Integration
  • add command: imgcat
  • to use the feature download and upload with scp, we need install shell integration on each remote host
  • Preferences>Profiles>General>Badge (session.username)@(session.hostname)


Track long running command

  • Edit > Marks and Annotations > Alert on next mark

Chrome Tips And Tricks


Chrome Extensions

Chrome Vimium
  • Shortcuts
  • numbers+command
    • number+x-close multiple tabs
    • number+r-reload multiple tabs
    • number+W-move multiple tabs to new window
    • number+<<(>>) move multiple tabs
    • (number+)f(F)-open multiple links
    • (number+)d(u)- multiple half page(up) down
  • Find Mode (/)
    • Support regex()
    • Find queries are global and persistent
    • Use and to re-use previous queries
  • Visual Mode
    • v or V (line mode)
    • o to swap the anchor and the focus
    • c to enter caret mode from a visual mode
    • vi-like movements: $
Chrome Urls
  • chrome://flags/
  • chrome://restart/
Change/Assign extension’s shortcuts
  • chrome://extensions/shortcuts


Block notification requests
  • go to chrome://settings/content/notifications
  • toggle Ask before sending (recommended) to Blocked
  • Hide headers and footers
Close Download Bar

NET::ERR_CERTIFICATE_TRANSPARENCY_REQUIRED for known safe (intranet) sites
  • edit /Library/Preferences/


Drag multiple tabs to new window hold the Command key
Open a Search in New Tab Hold down the Command button and hit return
Cmd+click Open link in new tab
  • How to Merge Multiple Tabs from Two Windows
    • Left-click the first tab in the window you want to merge. While holding the shift key, left-click the right most tab. All of tabs for the current window are now selected, so you can drag and drop them as as group on the other window.


Extension Development

Partition code into background scripts and content scripts
  • Content Scripts
    • Run in the context of web pages
    • limited access to Chrome APIs
    • Use Chrome Dev Tools to debug it
  • Background Scripts
    • Full access to Chrome APIs, but no access to web page content
    • Use background.html page in chrome://extensions/ to debug it
  • Message Passing
    • Some functions can be only run in context scripts, some only in background script, use message passing to pass data in different context
    • Disable Blocking of Mixed Content
    • chrome.tabs.sendMessage, chrome.extension.onMessage.addListener
  • chrome.commands|shortcuts
  • chrome.contextMenus.create
  • window.getSelection()

Productivity Tools for Developers

Chrome Tips && Tricks


HipChat App


Adobe Reader


Mac Tips and Tricks


Change Notification type

  • Preferences > Notifications
  • None: no notification at all
  • Banners: go away automatically
  • Alters: stay until user dismisses it
Option click EVERYTHING
  • in Finder, Option+Click will show menu: “copy items as pathnames”, and “show inspector”

Prevent a Mac from Sleeping

  • pmset noidle

Remove Siri from the Touch Bar

  • Preferences > Keyboard > Customize Control Strip
  • Highlight the Siri button, click, and drag the Siri button upward and out of the Touch Bar

Enable Touch ID

  • Preferences > Touch ID
  • Then we can use touch id instead of manually type password
  • Use Touch ID for sudo
    • vi nano /etc/pam.d/sudo
    • add “auth sufficient” to the top

Change default application for a file type

  • right-click the file, select Get Info and change the application in Open With section.
  • click Change All… button to apply the changes to all files
  • Shortcut: Command+space
  • Reveal the Location
    • Preview location: with Command key
    • Open the location in Finder: hold the Command key, and press Return


Messages App to send/receive SMS


Manually manage music and videos

To manually copy videos from mac to iPad: - Select Summary option from the device’s settings in iTunes, then enable the option



  • brew cask install the-unarchiver
  • open its preferences and select all the file format


Mac Tips & Tricks - 2016



CSR(Certificate Signing Request)

Create a keypair

keytool -genkeypair -keystore keystore.p12 -storetype PKCS12 
-alias ${THE_ALIAS} -keyalg RSA -keysize 2048 
-dname "CN=${THE_CN}" -storepass ${THE_PASSWORD}
#### Create a Certificate Signing Request
keytool -certreq -keystore keystore.p12 -storetype PKCS12 
-alias ${THE_ALIAS} -sigalg SHA256withRSA -storepass ${THE_PASSWORD}
#### Install the downloaded certificate.chain.pem to the keystore
keytool -import -keystore keystore.p12 -alias ${THE_ALIAS} 
-trustcacerts -file the.chain.pem -storepass ${THE_PASSWORD}
##### Extract private key
openssl pkcs12 -nocerts -in keystore.p12 -out the_private.key -nodes
##### Convert the pem to PKCS12 Keystore
openssl pkcs12 -export -in the.chain.pem -out keystore.p12 
-inkey the_private.key -name ${THE_ALIAS} -noiter -nomaciter


  • unique string to identify the key entry
trustStore vs keyStore
  • Keystore is used by a server to store private keys, and truststore is used by third party client to store public keys provided by server to access.

Markdown Tips


Backslash Escape

bad word - Link without text

Table without header

Nested list

automatically numbered list

Task(Check) List

Line breaks in markdown

Named anchor

  • we can use html in markdown
  • Reference the anchor


Supported Languages

  • markdown, java, json,html, javascript, shell, yaml, xml etc

Write email with markdown

Share markdown with socrates


  • Functions: export as html, save to google drive, blogger, github, dropbox etc
  • alternatives:

Blogger with markdown

  • Focus on the content, easy to store/edit the content locally
  • Easy to hide text(Cmd+/)

1: Use “Copy Html” function from markdown-preview-plus

  • Then paste output
<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="font-size: large;">

2: Use pandoc

  • then remove no needed head, body tags

Atom Plugins

Slides Syntax


  • brew install pandoc
  • Add eval “$(pandoc –bash-completion)” to ${HOME}/.bash_profile
  • generate pdf: -o output.df
    • install this first: brew cask install mactex
  • generate ppt: -o output.pptx
  • pandoc –list-extensions
  • pandoc –list-output-formats


  • in-browser, markdown-driven slideshow tool


  • Space matters:
    • for link, no space between [] and (), for header, need space between ### and the words
    • check the colors in atom
  • Empty line matters
    • when not sure, add empty line
  • It doesn’t wrap in code block

collapsible markdown?

CLICK ME hidden by default

Basic Syntax

Keyboard Shortcuts

  • Use Mac without a mouse and less fingers
  • My fingers burn when use mac trackpad or touch bar, so try to use key board as possible as I can.
  • Some shortcuts are supported by multiple applications, or we can customize them to use same shortcuts.


Turn on Full Keyboard Access
  • Keyboard > Shortcuts > All Controls
  • Control + F7 to switch the modes
Mouse Keys
  • Command+Option+F5 > Open Accessibility Option
  • Enable Press Option key five times to toggle Mouse Keys
  • Move pointer: 7, 8, 9, 4, 6, 1, 2, 3
  • Click mouse button: I
  • Press and hold the mouse button: M
  • Release the mouse button: .
Right Click
  • When Mouse key is on, Fn-Ctrl-I
  • Control + Click
Switch input source
  • Keyboard > Shortcuts > Input Sources
  • Select the previous input source: ctrl+space
  • Customize at Preferences > Keyboard > Shortcuts > Keyboard
/ or Command+Shift+G Go to Folder
Fn+F11 Show Desktop
Command+Shift+3 Capture the entire screen
Command+Shift+4 Capture a selected area
Control + a/e Got to head/end - work in Terminal, Chrome, Atom
Command+` cycle between open windows in selected application
Command+Option+D show or hide dock
Command + Option + Escape Force Quit Applications
Ctrl+F2 Access menu, enable it at Keyboard -> Shortcuts -> Keyboard
Shift+Cmd+? Open Help menu and navigate
^+F3 Move focus to dock
^+F8 Move focus to status menu, search all actions in menu
Command+q Quit the app
Command+shift+w Close the window
Command + , Open Preferences
Command+~ Switch windows for same application(Command-Shift-~, reverse order)
Command + X Cut the highlighted text
Shift+Alt+Command+V paste the highlighted text and matches the destination style
Cmd+Shift++(-) Zoom in(out) text
Command + B/I/U make text bold/italic/underlined
Shift+Arrow Select text
(Shift+)Option+Left(Right) (Select)Jump by word
Cmd+Shift+Z Redo
Fn + up(down) Page up(down)
Cmd+1..8 Move tab
Cmd+9 Move to last tab
Cmd++(or -) Increase(Decrease) Font Size
[[ or ]] Follow the link labeled previous or < | next or > - not always works
gu(or U) Go up the URL hierarchy or Go to root of current URL hierarchy
v(visual), c(caret mode), /(find mode)
vi mode movement
  • h(move left), l(right), j(down), k(up), w(move to right one word), b(move to left one word)

Command + up go up a level
Command + down open current selected folder in same window
Command + [(]) go bak or forward
Spacebar preview(open) the item
Command + I get info

Mac Mail

Command+shift+D Send message
Command+shift+D Forward message
Command+shift+R Reply all
Command+shift+A Attach files to message
Command+1 Go to inbox
Command+1 or +2 etc Go to other items in favorites


Cmd+shift+J then close it Close download bar
Option+Cmd+left(right) go one tab left(right)
(Shift+)spacebar Page down(up)
Command-Shift-V Paste without formatting
Cmd+left(right) go back(forward) in history
⌘ + Shift + w Closes the current window
⌘ + Shift + j Open the Downloads page
⌘ + Option + i Open Developer Tools - conflict in mac
Cmd+Option+C Open dev tools in inspect mode

Change/Assign extension’s shortcuts
  • chrome://extensions/shortcuts

Install Tampermonkey and then install the “Auto Close YouTube Ads” script


(number+)W move tabs(s) to new window
(number+)<<(>>) Move tab to the left(right)
T search through your open tabs
B Bookmark search
(number+)r reload tab(s)
(number+)f(F) open/click multiple links in the current(or new) tab or execute multiple action in same tab
(number+)x close tabs(s)
^ Go to previously-visited tab
yt duplicate current tab
gE Edit the current URL and open in a new tab
X restore closed tab (i.e. unwind the ‘x’ command)
gi focus the first (or n-th) text input box on the page
h/j/k/l scroll left/down/up/right
(number+)d(u) half page down(up)
yy copy the current url to the clipboard
yf copy a link url to the clipboard
p/P search the text in clipboard using search engine
? help
Customize keys
map m toggleMuteTab
map M toggleMuteTab all
map X toggleMuteTab other
map cl closeTabsOnLeft
map cr closeTabsOnRight
map co closeOtherTabs
map fi LinkHints.activateModeToOpenIncognito
unmap J
unmap K
unmap t


Cmd+\ Show Annotations
Cmd+Click Clickable Links
Cmd+Shift+H Paste History
Cmd + k Clear buffer
Cmd+Shift+O Open Quickly(Search tabs)
Cmd+; Autocomplete
Cmd+Shift+; Show Command History
Cmd+Shift+H Show Paste History
Cmd+Option+/ Recent Directories popup

VLC Player

  • Preferences > HotKeys
Cmd + F Toggle Full Screen
Space Toggle Play/Pause
Command + Shift + left/right jump back/forward about a minute
Command + Ctrl + left/right jump back/forward about ten seconds
Cmd + =(-) Faster(Slower)
Cmd + Up(down) Volume up(down)
Cmd+Option+P Playlist


Command+P Switch to File
Command+Shift+P Command Palette
Command+\ Toggle Tree View
Command+Enter Replace all
Cmd+Ctrl+G Select all matching characters
Shift+Ctrl+M Markdown Preview
Cmd+R File symbol navigation
Ctrl+Shift+C Copy full path
Ctrl + g Go to Line
Ctrl+m Go to Matching Bracket
Cmd+Shift+t Bring up the list of corrections (with spell-check extension)
Ctrl+Shift+left(or right) move tab to left(or right)
Cmd+k+u Convert to Upper Case
Cmd+k+l Convert to Lower Case
Ctrl+Shift+k Delete Line
Ctrl+K Cut to End of Line


Command+3 Quick Access( a lot of things, like switch views)
Cmd+F8 Switch between perspectives
Shift+F10 Open context menu
Cmd+Option+X +T(J) Run Junit test(Java Application)
Fn+Up(down) Page up(down)
Cmd+Option+ctrl+left(right) Previous(next) tab, need manually add them in Pref > Keys
Cmd+Option+left(right) Go to previous or next
Ctrl+M Maximize(restore) the editor area
Cmd+Shift+L List all shortcuts
Cmd+I Show info


Command+Option+1/2/3 Large/Medium/Small Heading
Command+Shift+L Bulleted List
Command+Shift+7 Numbered List
Command+Option+K Code block
Command+Option+C Toggle Conversation
Command+/ Keyboard shortcuts

Useful Java Code Snippets



  • As stack or queue:
  • its default iterator or stream is a queue: fifo
  • Use iterator, for loop to access it, but not support random access like get(i)



Avoid null check


Gson Essentials


Jackson Essentials


Java (162) Lucene-Solr (112) Interview (63) J2SE (53) Algorithm (45) Soft Skills (39) Eclipse (32) Code Example (31) Troubleshooting (27) JavaScript (23) Linux (22) Spring (22) Tools (22) Windows (22) Web Development (20) Nutch2 (18) Bugs (17) Dev Tips (17) Debug (16) Defects (14) Text Mining (14) J2EE (13) Network (13) PowerShell (11) Chrome (10) Problem Solving (10) Google (9) How to (9) Learning code (9) Performance (9) Security (9) UIMA (9) html (9) Design (8) Http Client (8) Maven (8) bat (8) blogger (8) Big Data (7) Database (7) Guava (7) JSON (7) Shell (7) System Design (7) ANT (6) Coding Skills (6) Lesson Learned (6) Programmer Skills (6) Scala (6) css (6) Algorithm Series (5) Cache (5) Continuous Integration (5) IDE (5) Testing (5) adsense (5) xml (5) AIX (4) Become a Better You (4) Code Quality (4) Concurrency (4) GAE (4) Git (4) Good Programming Practices (4) Jackson (4) Life (4) Memory Usage (4) Miscs (4) OpenNLP (4) Project Managment (4) Review (4) Spark (4) ads (4) regular-expression (4) Android (3) Apache Spark (3) Distributed (3) Dynamic Languages (3) Eclipse RCP (3) English (3) Happy Hacking (3) IBM (3) J2SE Knowledge Series (3) JAX-RS (3) Jetty (3) Mac (3) Python (3) Restful Web Service (3) Script (3) regex (3) seo (3) .Net (2) Android Studio (2) Apache (2) Apache Procrun (2) Architecture (2) Batch (2) Bit Operation (2) Build (2) Building Scalable Web Sites (2) C# (2) C/C++ (2) CSV (2) Career (2) Cassandra (2) Fiddler (2) Google Drive (2) Gson (2) How to Interview (2) Html Parser (2) Http (2) Image Tools (2) JQuery (2) Jersey (2) LDAP (2) Logging (2) Software Issues (2) Storage (2) Text Search (2) xml parser (2) AOP (1) Application Design (1) AspectJ (1) Chrome DevTools (1) Cloud (1) Codility (1) Data Mining (1) Data Structure (1) ExceptionUtils (1) Exif (1) Feature Request (1) FindBugs (1) Firefox (1) Greasemonkey (1) HTML5 (1) Httpd (1) I18N (1) IBM Java Thread Dump Analyzer (1) Invest (1) JDK Source Code (1) JDK8 (1) JMX (1) Lazy Developer (1) Machine Learning (1) Mobile (1) My Plan for 2010 (1) Netbeans (1) Notes (1) Operating System (1) Perl (1) Problems (1) Product Architecture (1) Programming Life (1) Quality (1) Redhat (1) Redis (1) RxJava (1) Solutions logs (1) Team Management (1) Thread Dump Analyzer (1) Tips (1) Visualization (1) boilerpipe (1) htm (1) ongoing (1) procrun (1) rss (1)

Popular Posts