I just installed Plasma5 on my machine and it is beautiful!
Math, Machine Learning and Programming
Space for writing on the topics given in the title. Used for remembering things. Updated every now and then, given enough time.
Sunday, January 18, 2015
Tuesday, August 26, 2014
KDE Dolphin integrated konsole
Just by accident I hit the "f4" key while in Dolphin and by that discovered a very useful feature:
Friday, August 8, 2014
Developing Java using Emacs
As you might know, I recently started writing code in Java. For the time being, I ditched Emacs (only for Java!) and used Eclipse instead. However, I just came across this blog post, which gives detailed instructions on how to use emacs-eclim for obtaining Eclipse functionality in Emacs. Thanks to that, I can now switch back to Emacs for good!
Monday, July 21, 2014
git: permanently purge file/folder from git repo including history
My config repo suffered from being too large after I had dumped my ~/.config directory into it. At some time I decided, that storing my ~/.config directory in a non-selective manner is pointless and and removed the .config directory from my config repo. However, the repo remained rather large (.git directory was 107MB, total repo size, including .git, 110MB), as both adding and removing the .config directory made fat commits.
Following this blog post, I was able to shrink my repo size from 110MB to 3.8MB, .git directory went from 107MB to 1.3MB. In addition to instructions on how to cleanup your repo history, the blog post also provides a script for finding big files in your repository, which was not necessary for me as I knew the location of the files/directory to be deleted.
A short summary of what I did, so you do not need to go through the complete blog post (Following these instructions will lead to irreversible changes in your commit history and potentially to unwanted loss of data. Only apply when you are 100% sure that you know what you are doing):
Following this blog post, I was able to shrink my repo size from 110MB to 3.8MB, .git directory went from 107MB to 1.3MB. In addition to instructions on how to cleanup your repo history, the blog post also provides a script for finding big files in your repository, which was not necessary for me as I knew the location of the files/directory to be deleted.
A short summary of what I did, so you do not need to go through the complete blog post (Following these instructions will lead to irreversible changes in your commit history and potentially to unwanted loss of data. Only apply when you are 100% sure that you know what you are doing):
$ git filter-branch --tree-filter 'git rm -rf .config --ignore-unmatch' HEAD $ rm -rf .git/refs/original/ $ git reflog expire --expire=now --all $ git gc --aggressive --prune=now $ git push origin master --force
Saturday, July 19, 2014
Bios Update Lenovo X1 Carbon
I finally fixed the closing lid issue of my Lenovo X1 Carbon (2nd gen). I had known the solution to it for a while, which is a BIOS update. While they offer an update utility for Windows, they also offer an iso image of the BIOS update. Supposedly, if you burn the iso image on a CD or DVD, they should be auto-bootable. However, the X1 Carbon does not have an optical drive, thus i tried to generate a bootable USB drive
which turned out to be not bootable and thus I let the issue rest for a while.
A couple of days ago I came across this blog post that suggests updating the BIOS using Windows while it's still on the Laptop (didn't work for me apparently) and also mentioned that you could extract the eltorito image from the ISO and create a bootable USB drive from that. Some more googling led to two forum posts that contained a link to a perl script that is exactly doing that.
So all you need to do is
and then reboot your machine, boot form your USB drive and follow the instructions. Keep in mind that you should not turn off the machine or remove the USB drive during the update!
beethoven:~:% dd if=gruj11us.iso of=/dev/sdX
which turned out to be not bootable and thus I let the issue rest for a while.
A couple of days ago I came across this blog post that suggests updating the BIOS using Windows while it's still on the Laptop (didn't work for me apparently) and also mentioned that you could extract the eltorito image from the ISO and create a bootable USB drive from that. Some more googling led to two forum posts that contained a link to a perl script that is exactly doing that.
So all you need to do is
beethoven:Downloads:% wget http://www.uni-koblenz.de/~krienke/ftp/noarch/geteltorito/geteltorito.pl beethoven:Downloads:% perl geteltorito.pl bios-udpate.iso > bios-update.img beethoven:Downloads:% dd if=bios-update.img of=/dev/sdX
and then reboot your machine, boot form your USB drive and follow the instructions. Keep in mind that you should not turn off the machine or remove the USB drive during the update!
Wednesday, July 16, 2014
gcc show filename of library
gcc provides the option
which is very helpful for debugging linking problems. When invoked with this flag, gcc does not compile/link, but prints the full path that it uses for that library, e.g:
That way you can easily determine whether or not gcc sees the correct libraries.
-print-file-name=<library-name>
which is very helpful for debugging linking problems. When invoked with this flag, gcc does not compile/link, but prints the full path that it uses for that library, e.g:
beethoven:~:% gcc -print-file-name=libvigraimpex.so /home/phil/local/lib/../lib/libvigraimpex.so
That way you can easily determine whether or not gcc sees the correct libraries.
Saturday, June 28, 2014
Grouping -exec commands using the find command in shell
I just found out how to group commands that are executed on filenames found by the command line tool find.
The common syntax is:
where command2 is only executed if command1 exits with a zero return value.
While I was using this quite a lot, the actual syntax was not clear to me up to just a couple of minutes ago:
-exec is a find expression and expressions are separated by operators, where a missing operator is interpreted as -a (AND). Furthermore, expressions can be grouped by parentheses, which is especially useful when you want to perform some actions only on some files, but more actions on all of them afterwards.
As an example, take a directory tree with the following structure:
Then, the following command
prints every path found by find, and prints it a second time if it is a directory, hence './arch' and '.' are printed twice, respectively, while './arch/install.log' is printed only once.
Step by step, if
For more information, read the find man pages, in particular sections EXPRESSIONS, ACTIONS and OPERATORS.
The common syntax is:
find <path>[options] -exec command1 \; -exec command2 \;
where command2 is only executed if command1 exits with a zero return value.
While I was using this quite a lot, the actual syntax was not clear to me up to just a couple of minutes ago:
-exec is a find expression and expressions are separated by operators, where a missing operator is interpreted as -a (AND). Furthermore, expressions can be grouped by parentheses, which is especially useful when you want to perform some actions only on some files, but more actions on all of them afterwards.
As an example, take a directory tree with the following structure:
$ find . . ./arch ./arch/install.log
Then, the following command
$ find . \( \( -exec test -d {} \; -a -exec sh -c 'echo {}; exit 1' \; \) , -exec echo {} \; \) . . ./arch ./arch ./arch/install.log
prints every path found by find, and prints it a second time if it is a directory, hence './arch' and '.' are printed twice, respectively, while './arch/install.log' is printed only once.
Step by step, if
-exec test -d {} \;returns false,
-exec sh -c 'echo {}; exit 1' \;will not be executed, as both are seperated by the AND (-a) operator. The grouped expression, indicated by parentheses, always returns false, as the second command contains 'exit 1'. Nevertheless,
-exec echo {} \;will always be executed, as two expressions separated by the ',' operator will always be executed, returning the outcome of the second expression.
For more information, read the find man pages, in particular sections EXPRESSIONS, ACTIONS and OPERATORS.
Subscribe to:
Posts (Atom)