Removing the SVN metadata files (.svn/) in Linux
If you ever want to remove a folder from SVN control (clean the folder by removing the .snv metadata folders) in Linux, you can simply run the following command:
rm -rf $(find path/to/the/CORRECT/folder -type d -name .svn) |
where:
rm -rfis remove recursive force. Recursive for deleting the directories and their contents recursively and force for no prompting (for example, for write protected files)$(..)is the command substitution, that takes the output of a command and uses it as input for anotherfind path/to/the/CORRECT/folder -type d -name .svnis searching (recursively) for folders (d for directory) with the name .svn1 in the directory pointed bypath/to/the/CORRECT/folder
Be careful to use the correct path, else you can remove the svn metada for the wrong folder! A good approach can be to execute the find command without the rm, check the output, and then proceed to the remove :-).
—
1case sensitive, use -iname for insensitive
Extracting citations from a BibTex file using Linux terminal
I had a big (around 40 entries) BibTex file with the references of some papers I studied and I wanted to extract the citations in the format used for citing in Latex (\cite{AuthorYear}). Just today I read some tutorials about awk, so I thought “Let’s use it!!”.
An example BibTex file:
@article{Kotselidis2010, author = {Kotselidis, Christos and Lujan, Mikel and Ansari, Mohammad and Malakasis, Konstantinos and Kahn, Behram and Kirkham, Chris and Watson, Ian}, doi = {10.1109/IPDPS.2010.5470460}, isbn = {978-1-4244-6442-5}, journal = {2010 IEEE International Symposium on Parallel \& Distributed Processing (IPDPS)}, pages = {1--12}, publisher = {Ieee}, title = {{Clustering JVMs with software transactional memory support}}, url = {http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=5470460}, year = {2010} } @phdthesis{Zhang2009c, author = {Zhang, Bo}, keywords = {cache-coherence,contention manager,distributed transactional memory}, title = {{On the Design of Contention Managers and Cache-Coherence Protocols for Distributed Transactional Memory}}, year = {2009} } |
Solution
awk 'BEGIN{FS="[{,]"} /@/ {print "\\cite{"$2"}"}' filename.bib |
\cite{Zhang2009c}
\cite{Kotselidis2010}
In order to save the output in a file named cites.txt:
awk 'BEGIN{FS="[{,]"} /@/ {print "\\cite{"$2"}"}' filename.bib > cites.txt |
Hint: Use “>>” if you want to append the output. Single > creates a new file (if not existing), or empties the existing one and then appends the content..
If you want to know my “implementation” process, continue reading 😉
Read the rest of this entry »
Netbeans 6.9.1 on Ubuntu 10.10 Installation – OpenJDK problem
I wanted to install Netbeans IDE 6.9.1 (C/C++ version, but I believe that the problem is generic) on my Ubuntu 10.10 laptop, so after downloading the latest version from netbeans.org, I tried to install it:
$ ls -l netbeans-6.9.1-ml-cpp-linux.sh -rw-r--r-- 1 ** ** 36699136 2011-02-06 00:58 netbeans-6.9.1-ml-cpp-linux.sh $ chmod +x netbeans-6.9.1-ml-cpp-linux.sh $ sudo ./netbeans-6.9.1-ml-cpp-linux.sh |
and got the following output:
Configuring the installer... Searching for JVM on the system... Extracting installation data... Running the installer wizard... null |
The installation wizard (GUI) did not appear at all.
Luckily, I “immediately” thought “hmm, I re-installed Ubuntu quite recently, did I install JRE?”
So, I checked if I had “Java” installed and checked that everything is “good”:.
$java -version java version "1.6.0_20" OpenJDK Runtime Environment (IcedTea6 1.9.5) (6b20-1.9.5-0ubuntu1) OpenJDK Client VM (build 19.0-b09, mixed mode, sharing) |
As you can see, I had OpenJDK installed..
For some reason, which I don’t know, I had already installed the Sun JDK, but not removed the OpenJDK, or at least set the java to point to the Sun version.
So, using synaptic, I unistalled OpenJDK (you can (un)install OpenJDK and Sun JDK from the Software Center also):
$java -version java version "1.6.0_22" Java(TM) SE Runtime Environment (build 1.6.0_22-b04) Java HotSpot(TM) Server VM (build 17.1-b03, mixed mode) |
And then, everything worked fine..
Linux Commands: a useful article
Yesterday, I found an article called “A Practical Guide to Linux Commands“; a compact guide to several linux command use cases, such as backup and compression, searching the filesystem, etc. I have to admit that it was one of the most interesting/useful articles I have ever read, thus I share it with you.
The article is posted on linuxconfig.org and you can access it here.
Pointers and Arrays in C
As anyone who had programmed in C knows, pointers can be (also) used to access the data of an array.
From the Wikipedia article about C language:
C supports the use of pointers, a very simple type of reference that records, in effect, the address or location of an object or function in memory. Pointers can be dereferenced to access data stored at the address pointed to, or to invoke a pointed-to function. Pointers can be manipulated using assignment and also pointer arithmetic. The run-time representation of a pointer value is typically a raw memory address (perhaps augmented by an offset-within-word field), but since a pointer’s type includes the type of the thing pointed to, expressions including pointers can be type-checked at compile time. Pointer arithmetic is automatically scaled by the size of the pointed-to data type.
Parallelizing simple algorithms series
Fibonacci Spiral
In the following weeks, I will try to write some posts about parallelizing simple algorithms with the Erlang programming language. The main motivation for executing program instructions in parallel is to complete the computation faster than the sequential equivalent solution. As it is used, when someone wants to present the “parallelization power” of a programming language/model, the Fibonacci numbers are used. So, following this conversion, my first post will be about parallelizing the calculation of the Fibonacci integer sequence.
Read the rest of this entry »
Google vs. Bing search test
n an recent article in searchengineland.com, Conrad Saam run some search “accuracy” tests on Google and Bing. He used some complex queries in order to check if the two search engines were able to “understand” and answer what was he looking for. Of course, this testing method, especially since he used only 20 queries, can only be characterized as subjective, but the outcome was that Bing outperformed Google.
Doing these sounds fun.. I will try it one day and let you know about my results..
After Chrome, Opera will drop support for H.264
As you probably already know, some days ago Google announced that they will not support H.264 video codec in the future releases of Chrome (announcement).The <video> html tag, in Chrome, will support WebM (VP8) and Theora video codecs, and will consider adding support for other open codecs in the future.
After this announcement, Opera decided to support Google’s decision on dropping the H.264 codec. Thomas Ford, Senior Communications Manager, Opera, told Muktware, “Actually, Opera has never supported H.264. We have always chosen to support open formats like Ogg Theora and WebM. In fact, Opera was the first company to propose the <video> tag, and when we did, we did it with Ogg. Simply put, we welcome Google’s decision to rely on open codecs for HTML5 video.”. Indeed, Opera was the company that proposed the <video> tag in an post back in 2007.
I have to disagree with both companies’ decision, because there is a big difference between better supporting and promoting open standards and forcing the drop of a proprietary technology that is currently so commonly used..