7/28/2016
Make Mac xcode settings better
Preferences -> Text Editing -> Check Page guide at column: 80
Preferences -> Text Editing -> Indent width: 2
Preferences -> Fonts and Colors -> Shift to select them all, change the font to Consolas, Size 13
Make Linux screen command settings better
defscrollback 99999
altscreen on
vbell on
vbell_msg ''
termcapinfo * vb=:
7/22/2016
Java commonly used util functions
=====
Paths.get(a, b); // path join
String.format("%s, haha ", a);
Dependency Injection: Guice
https://github.com/google/guice/wiki/Motivation
https://github.com/google/guice/wiki/GettingStarted
Java docs:
==========
http://www.grpc.io/grpc-java/javadoc/io/grpc/stub/StreamObserver.html
Server:
=======
Apache Struts
Apache Tiles
Jetty as the servelet container
Shell/Bash frequently/commonly used commands
==============
# Find all cpp files with debug in it.
$find . -name \*.cpp -exec grep -q "debug" '{}' \; -print
# Import Bash script tips
http://www.davidpashley.com/articles/writing-robust-shell-scripts/
if [ -z "${ZONE-}" ] # if ZONE is null
if [ -n "${ZONE-}" ] # if ZONE is non-zero
if [ -f "/cluster/env.sh" ] then # if file exists
echo "haha"
fi
RSRC=${1:-"/var/www"} # default to /var/www if the first arg is null.
# Get group members
getent group docker
status (an init conf file in /etc/init/*.conf)
# Rename file extensions
for i in `ls --color=never`; do j=`echo $i | awk -F "." '{print $1}'`; echo $j; mv $i $j.bin; done
# Rename a file with leading 0 prefix
for i in `ls *.jpg`; do j=`echo $i | awk -F "." '{print $1}'`; k=$(printf "%06d" $j); mv $i $k.jpg; done
# To find and replace
sed -i 's/haha/xixi/g' $input
use -i to change the input file directly
for i in `grep -r "2009 Google" * -l`; do sed -i 's/2009\ Google/2010\ Google/g' $i; done
for i in `find . -name BUILD`; do echo $i; sed -i 's/\"\/\/third_party/\"@deepmap_base\/\/third_party/g' $i; done
for i in `find . -name BUILD`; do for j in common point_cloud protos third_party public anga_clients; do sed -i "s/\"\/\/$j/\"@deepmap_base\/\/$j/g" $i; rm -rf $j; done; buildifier $i; done
for i in `find . -iname "SCon*"`; do if grep -q "\\.a" $i; then echo $i; fi done
# Loop a bash array
ids=(1 2 3)
for i in ${ids[@]} do echo $i; done;
for i in {0..10}; do echo $i; done;
# Loop file content: each line
cat run.txt | while read line; do echo $line; done
# Change file name
for i in `cat files.txt`; do echo $i; j=`echo $i | awk -F hgt '{print $1}'`; mv $i ${j}.hgt.zip; done
# Change files names based on pages
for i in `ls *.pdf`; do mv $i "第${j}页.pdf"; j=$(($j+1)); done
# Sort by size
du -sh * | gsort -h
# cd to real path of a link
cd -P
# List files with full absolute path
ls -d -1 $PWD/*
# tar filter
find . -name '*.php' | tar -cvjf my.tar.bz2 --files-from -
Kubernetes frequently used commands
Kubernetes:
===========
# Start cluster
# install virtualbox. Enable VT-x and disable secure boot from BIOS if applicable. Then install minikube and kubectl
minikube start
# China commands within GFW and use Clash for Windows as the proxy
# 192.168.1.30 is the host Linux machine's physical network card ip.
# Clash for Windows needs to turn on Allow LAN
minikube start --vm-driver="docker" --docker-env HTTP_PROXY=http://192.168.1.30:7890 --docker-env HTTPS_PROXY=http://192.168.1.30:7890 --docker-env NO_PROXY=127.0.0.1
# Debug command:
minikube ssh
docker@minikube: docker info
docker@minikube:ping www.google.com
docker@minikube: docker pull docker.io/kubernetesui/dashboard:v2.7.0
docker info
Failed? BE CAREFUL, ALL SERVICES WILL BE GONE. Try:
k cluster-info
k describe pod [pod name]
k get pods
k delete pod [pod name]
k expose pod [pod name] --port 8088
k scale deployment hello-node --replicas=4
k edit deployment hello-node
k apply -f [?]/a.yaml
k get deployment my-nginx -o yaml
k logs [pod id]
k get nodes --show-labels
k port-forward svc/minio -n minio-dev 9090 # Forward port
#Careful, service will be down
kubectl replace -f docs/user-guide/nginx/nginx-deployment.yaml --force
http://kubernetes.io/docs/user-guide/docker-cli-to-kubectl/
Kubernetes cluster is running. The master is running at:
https://52.34.246.212
The user name and password to use is located in /home/liangzou/.kube/config
7/21/2016
7/20/2016
Docker commonly used commands
d inspect [container id]
d ps -a
d images
# Fetch image
d pull "image"
d rm [container id]
d rmi [image id]
d run -it # interactive tty
--rm # remove after exiting
-p 8888:8080 publish container port 8080 to 8888. To access: localhost:8888
-v /home/liangzou:/home/liangzou # mounts the host drive to container
d commit [container id] # create a new image from the existing docker
d history # history of an image
d run -it --rm tomcat /bin/bash # to check the container content
d attach --sig-proxy=false [container]
d search ubuntu # search for images
d tag [image id] name:tag # d tag 80ff9c14b9e0 core-builddeps-dazel:ubuntu1804
d exec # runs a new command in a running container.
# Run a docker first
d run -it -d -v /var/lib/jenkins/workspace/:/root/user --mac-address 70:85:c2:53:5d:4e 776923679937.dkr.ecr.us-west-2.amazonaws.com/buildenv:latest
d exec `d ps -f ancestor=776923679937.dkr.ecr.us-west-2.amazonaws.com/buildenv:latest -q` bash -c "cd /root/user/DeepMap-Presubmit && bazel build --verbose_failures --spawn_strategy=standalone --genrule_strategy=standalone -- //experimental/..."
d cp [containerid]:/file/path /host/path
# To detach the tty without exiting the shell, use the escape sequence Ctrl+p + Ctrl+q
If instead of enter you would start typing a command, you would not see the extra empty prompt line. If you were to run
$ docker exec -it --user root <container-ID-or-name> bash
7/19/2016
How to use meld for git and configure meld diff tool colors
emacs ~/.gitconfig
Add:
[diff]
tool = meld
[merge]
tool = meld
=====
Configure meld external editor:
emacs -fh -geometry 180x160 {file}
=====
For Version: 3.0+
sudo emacs /usr/share/meld/meld.css
For syntax colors:
sudo emacs /usr/share/gtksourceview-3.0/styles/classic.xml
---
Change classic.xml magenta definition to
7/18/2016
Make emacs settings better
The way to change starting window (a.k.a frame) position and size:
Click Preferences | search for default-frame-alist, add var left 300, width 125, height 60, top 0 | Click the state and save for future
Do the same for initial-frame-alist
Command to have a better default GUI:
emacs -fh -geometry 180x160 {file}
sudo apt install xclip
wget http://www.emacswiki.org/emacs-en/download/xclip.el /home/$USER/.emacs.d/xclip.el
==== (Copy to ~/.emacs)
Don't use rm in Linux. Use trash command
It happened to me twice. I used rm -rf in a directory which is not what I wanted to purge. It was a disaster.
Install trash-cli and don't use rm -rf anymore.
7/15/2016
How to fix sougou pinyin after fcitx crashes or fcitx has high CPU usage
In a terminal run:
fcitx &
Then give it sometime, like 45 seconds or 1 minute for sougyou pinyin to go back to normal. That's it!
Thank YOU, Eclipse!!
I really want to say THANK YOU Eclipse! The best code editor ever!
In memory MySQL for java | Embedded MySQL for java unit testing
http://blog.palominolabs.com/2011/10/03/embedded-mysql-on-java-with-connectormxj-and-64-bit-linux/
And
https://github.com/airlift/testing-mysql-server
The idea is to use mysql-connector-mxj, but the development has been discontinued. Therefore the newest version that came with it is Mysql 5.5.9. That's included in mysql-connector-mxj-db-files.
That's too old and I want to use a newer version: 5.7.5.
The goal here is therefore to build the new mysql-connector-mxj-db-files jar file to include the new Mysql version.
Here is what I did:
1. Download the newer version MySQL to: ~/Downloads/mysql-5-7-5/mysql-5.7.5-m15-linux-glibc2.5-x86_64
2. Run the command:
bin/mysql_install_db --insecure --user=mysql --datadir=/tmp/dbfiles/5-7-5/data --lc-messages-dir=./share/
cd /tmp/dbfiles/5-7-5/data
jar -cf ../data_dir.jar *
This step generates the data folder to /tmp/dbfiles/5-7-5/data. Then I create the data_dir.jar file. The data_dir.jar file should be included in the mysql-connector-mxj-db-files jar.
Another command to run:
jar -cf /tmp/dbfiles/5-7-5/share_dir.jar share/
The share_dir.jar should also be included in the mysql-connector-mxj-db-files jar.
3. Create the mysql-connector-mxj-db-files.jar with newer MySQL version.
Unzip the original mysql-connector-mxj-db-files.jar file. Copy the mysql, mysqld file, data_dir.jar, share_dir.jar to appropriate locations.
Run another jar -cf bla bla command to create the final mysql-connector-mxj-db-files.jar.
7/13/2016
MySQL commonly used commands
In order to connect remotely you have to have MySQL bind port: 3306 to your machines IP in my.cnf. Then you have to have created the user in both localhost and '%' wildcard and grant permissions on all DB's as such . See below:
#Replace xxx with your IP Address
bind-address = xxx.xxx.xxx.xxx
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
- The bind-address should be: 0.0.0.0
- Your machine ip address should be added to amazon security group.
How To Get The Current Epoch Time (Unix Timestamp)
| Perl | time |
| PHP | time() |
| Ruby | Time.now (or Time.new). To display the epoch: Time.now.to_i |
| Python | import time first, then int(time.time()) |
| Java | long epoch = System.currentTimeMillis()/1000; |
| Microsoft .NET C# | epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000; |
| VBScript/ASP | DateDiff("s", "01/01/1970 00:00:00", Now()) |
| Erlang | calendar:datetime_to_gregorian_seconds(calendar:now_to_universal_time( now()))-719528*24*3600.OR element(1, now()) * 10000 + element(2, now()). |
| MySQL | SELECT unix_timestamp(now()) |
| PostgreSQL | SELECT extract(epoch FROM now()); |
| Oracle PL/SQL | SELECT (SYSDATE - TO_DATE('01-01-1970 00:00:00', 'DD-MM-YYYY HH24:MI:SS')) * |
| SQL Server | SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE()) |
| JavaScript | Math.round(new Date().getTime()/1000.0) getTime() returns time in milliseconds. |
| Unix/Linux Shell | date +%s |
| PowerShell | Get-Date -UFormat "%s" Produces: 1279152364.63599 |
| Actionscript | (new Date()).time |
| Other OS’s | Command line: perl -e "print time" (If Perl is installed on your system) |
| ColdFusion (CFML) MX 6.1+ | #int( getTickCount() / 1000 )# |
| Bash | Command Line: date +%s |