I thought I'd mention that one of my highlights of last year was completing the "Functional Programming Principles in Scala" class led by Martin Odersky, the designer of Scala. This Coursera class started in September 2012 and was around 7 weeks long. Learning about functional programming was a rewarding experience and I found the course and assignments quite challenging, but immensely enjoyable. I even managed to get a distinction! I believe this course will be running again this year and I'd highly recommend it to people who wish to discover functional programming and Scala.
I have committed my assignment solutions to my GitHub repository.
I am now looking forward to starting some new classes in 2013!
Related posts:
Stanford's Online Courses: ml-class, ai-class and db-class
Sunday, January 06, 2013
Tuesday, January 01, 2013
fahd.blog in 2012
Happy 2013!
I'd like to wish everyone a great start to an even greater new year! During 2012, I posted 31 new entries on fahd.blog. I am also thrilled that I have more readers from all over the world too! Thanks for reading and especially for giving feedback. Top 5 posts of 2012: I'm going to be writing a lot more this year, so stay tuned for more great techie tips, tricks and hacks! :)
I'd like to wish everyone a great start to an even greater new year! During 2012, I posted 31 new entries on fahd.blog. I am also thrilled that I have more readers from all over the world too! Thanks for reading and especially for giving feedback. Top 5 posts of 2012: I'm going to be writing a lot more this year, so stay tuned for more great techie tips, tricks and hacks! :)
Monday, December 31, 2012
Sed: Mutli-Line Replacement Between Two Patterns
This post has some useful
To perform a replacement on each line between
To perform a replacement on each line between
To delete all lines between
To delete all lines between
To perform a replacement on a block of lines between
To perform a replacement on a block of lines between
Sed - An Introduction and Tutorial by Bruce Barnett
sed commands which can be used to perform replacements and deletes between two patterns across multiple lines.
For example, consider the following file:
$ cat file line 1 line 2 foo line 3 line 4 line 5 bar line 6 line 71) Replace text on each line between two patterns (inclusive):
To perform a replacement on each line between
foo and bar, including the lines containing foo and bar, use the following:
$ sed '/foo/,/bar/{s/./x/g}' file
line 1
line 2
xxx
xxxxxx
xxxxxx
xxxxxx
xxx
line 6
line 7
2) Replace text on each line between two patterns (exclusive):To perform a replacement on each line between
foo and bar, excluding the lines containing foo and bar, use the following:
$ sed '/foo/,/bar/{/foo/n;/bar/!{s/./x/g}}' file
line 1
line 2
foo
xxxxxx
xxxxxx
xxxxxx
bar
line 6
line 7
3) Delete lines between two patterns (inclusive):To delete all lines between
foo and bar, including the lines containing foo and bar, use the same replacement sed command as shown above, but simply change the replacement expression to a delete.
$ sed '/foo/,/bar/d' file line 1 line 2 line 6 line 74) Delete lines between two patterns (exclusive):
To delete all lines between
foo and bar, excluding the lines containing foo and bar, use the same replacement sed command as shown above, but simply change the replacement expression to a delete.
$ sed '/foo/,/bar/ {/foo/n;/bar/!d}' file
line 1
line 2
foo
bar
line 6
line 7
5) Replace all lines between two patterns (inclusive):To perform a replacement on a block of lines between
foo and bar, including the lines containing foo and bar, use:
$ sed -n '/foo/{:a;N;/bar/!ba;N;s/.*\n/REPLACEMENT\n/};p' file
line 1
line 2
REPLACEMENT
line 6
line 7
How it works:
/foo/{ # when "foo" is found
:a # create a label "a"
N # store the next line
/bar/!ba # goto "a" and keep looping and storing lines until "bar" is found
N # store the line containing "bar"
s/.*\n/REPLACEMENT\n/ # delete the lines
}
p # print
6) Replace all lines between two patterns (exclusive):To perform a replacement on a block of lines between
foo and bar, excluding the lines containing foo and bar, use:
$ sed -n '/foo/{p;:a;N;/bar/!ba;s/.*\n/REPLACEMENT\n/};p' file
line 1
line 2
foo
REPLACEMENT
bar
line 6
line 7
References:Sed - An Introduction and Tutorial by Bruce Barnett
Saturday, December 22, 2012
Useless Use of Echo
Most of us are familiar with the Useless Use of Cat Award which is awarded for unnecessary use of the
cat command. For example, in nearly all cases, cat file | command arg can be rewritten as <file command arg.
In a similar vein, this post is about the useless use of the echo command. In nearly all cases:
echo string | command argcan be rewritten using a heredoc:
command arg << END string ENDor, using a here-string:
command arg <<< stringNote: Here-strings are not portable (but most modern shells support them) so use the heredoc alternative shown above if you are writing a portable script!
Saturday, December 01, 2012
Spring: Creating a java.util.Properties Bean
The easiest way to create a
java.util.Properties bean in Spring is with a PropertiesFactoryBean as shown in the example below:
<bean id="emailProperties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties">
<value>
smtp.host=mail.host.com
from=joe.bloggs@domain.com
to=${mail.recipients}
</value>
</property>
</bean>
Spring will parse the key=value pairs and put them into the Properties object.
Labels:
Java,
programming,
spring
Subscribe to:
Posts (Atom)