If you have a binary that was produced by a golang compiler, and you want to find out which version of the compiler was used, you can use use the C debugger gdb as follows:
$ gdb /path/to/binary
(gdb) p 'runtime.buildVersion'
$1 = 0x5e1d83 "go1.9"
If all you have is an SSH private key and you need to generate a public key out of it, you can run the following:
ssh-keygen -y -f yoursshkey
It will spit out the public key on the standard output.
To list all the commit hashes in the whole history of a git repository:
git log --pretty=format:"%h"
To list all the files tracked a commit, run this:
git ls-tree --full-tree -r <hash>
If you’re only interested in the names:
git ls-tree --full-tree -r --name-only <hash>
If you want to completely remove a file from the history of a branch in git, do this:
git filter-branch --index-filter
'git rm --cached --ignore-unmatch <file>'
A helpmate is a problem where a mate is possible with the help of the color that is defending. Here a nice example of a helpmate in 1:
Solution is here:
Solution: Rxc8 Kg7 Bh6 Kxg6 Nf7 (black queen’s lost)
I have started to learn go, Google’s system language. I really like it. I appreciate these features in particular:
- It is truly cross-platform, in par with java
- It has a huge standard library, again like java’s but without the GUI stuff
- It compiles to standalone executables that include the runtime! Imagine a JAR file that would carry a little JVM with it. No need to “install go” on a deployment machine!
In terms of design, it takes a little bit of time to get used to. But on the whole it is fairly easy and straightforward. I have a good knowledge of C, java, lua and bash and I had no problem to adapt to go.
These are the steps I took to build the sqlite JDBC driver so that it works on a musl-based Linux distro, namely Alpine Linux.
- Install a couple of dependencies:
# apk update && apk upgrade
# apk add git gcc make openjdk8 maven
# apk add perl curl unzip bash musl-dev
- Set up JAVA_HOME:
# export JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
- Clone sqlite-jdbc repository:
# git clone https://github.com/xerial/sqlite-jdbc.git
- Build the shared object library and the JNI bindings:
# cd sqlite-jdbc
# make jni-header native
- Build the JAR (some tests don’t pass, you have to skip them):
# mvn -Dmaven.test.skip=true package
- The jar that is produced is in the target directory:
# ls target/sqlite-jdbc*
- To use it in a gradle build, mkdir a lib directory in your gradle project, copy into it the jar that was built as above and add the following compile line to build.gradle:
compile fileTree(dir: 'lib', include: '**/*.jar')