1. Download intellij-java-google-style.xml from GitHub: https://raw.githubusercontent.com/google/styleguide/gh-pages/intellij-java-google-style.xml
  2. On Mac, IntelliJ Preferences -> Editor -> Code Style -> Java -> (Click “Gear” icon) -> Import Scheme -> Import IDEA code style XML

  1. Disable “duplicated code” detection
    • Settings → Editor → Inspections → General → Duplicated Code
    • (Or better) in the source code, use @SuppressWarnings(“Duplicates”)
    • Ref.: stackoverflow
  2. Show source file structure
    1. From menu: “View” -> “Tool Windows” -> “Structure”
    2. Quick key: CMD + 7
  3. Reformat all codes under a folder: in Project view, select the folder, then Code -> Reformat Code

This is reading notes on Professional C++ by Marc Gregoire.

  1. In switch statement, expression must be integer type.
    1. Why can’t be string? Because C++ does not recognize string as a type. Ref:
      1. stackoverflow.com
      2. llvm.org
      3. hbfs.wordpress.com
  2. Array initialization
    1. in C style:
      1. int myArray[3] = {0}; // all 0
      2. int myArray[3] = {1}; // first 1, other two 0
      3. int myArray[] = {0,1,2}; // an array of 3 elements, [0;1;2]
    2. in C++ style:
      1. array<int, 3> myArray = {0, 1, 2}
    3. For array of variable length, use vector
  3. Range-based for loop
    1. for (int i : myArray)
  4. __func__ is implicitly declared (i.e. can be used as function name directly inside of a function) as:
    1. static const char __func__[] = “func-name”;
  5. Alternative function syntax (with trailing return type):
    1. auto func(int i) -> int // {…}
  6. Function return type deduction (use compiler to figure out return type)
    1. auto func(int i) // {…}
    2. all returns should resolve to the same type
    3. in recursive calls, first return must be non-recursive
  7. Type inference
    1. by auto:
      1. auto result = func();
    2. by decltype:
      1. int x = 1; decltype(x) y = 2;
  8. const int i = 1 is not equal to #define i 1
  9. int *j; later *j is called “dereference”
  10. C++ coding style: https://google.github.io/styleguide/cppguide.html
  11. Better only use static_cast (according to Ira Pohl)

If you don’t want fields such as “[Online]”, “Available: …” appear in IEEEtran bibliography items:

1. Go to installation folder of IEEEtan bst.
(on my Mac OS with Texlive, the folder is /usr/local/texlive/2016/texmf-dist/bibtex/bst/IEEEtran)

2. Backup and then edit IEEEtran.bst, search “FUNCTION XXX” (XXX could be “inproceedings”, “inbook”, etc.), and comment out “format.url output”

3. run “texhash”

4. recompile .bib and .tex files.

Reference:https://tex.stackexchange.com/questions/45160/remove-url-in-ieeetran-bibliography

Reference: https://www.tensorflow.org/versions/r0.10/api_docs/python/nn/activation_functions_

1. Smooth nonlinearities:
(tf.nn.)sigmoid, tanh, elu, softplus, softsign

2. Continuous but not everywhere differentiable:
(tf.nn.)relu, relu6

3. Random regularization:
(tf.nn.)dropout

e.g. for tf.contrib.learn.DNNClassifier, the default activation function in __init__ is relu:

__init__( ..., activation_fn=tf.nn.relu, ...)