Matthew Garrett
"Open"Solaris. Especially ironic given that there's a 2-clause BSD implementation out there already.
"Open"Solaris. Especially ironic given that there's a 2-clause BSD implementation out there already.
| Title | La seguridad en c mputo: Con qu se come? |
| Publication Type | Magazine Article |
| Year of Publication | 2009 |
| Authors | Wolf, Gunnar |
| Magazine | Software Gur |
| Frequency | Quarterly |
| Issue Number | 23 |
| Pagination | 47 |
| Date Published | 02/2009 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| Key Words | Seguridad |
| Citation Key | 1928 |
| Export |
| Title | C mo ense ar a los programadores del futuro? |
| Publication Type | Magazine Article |
| Year of Publication | 2008 |
| Authors | Gunnar, Wolf. |
| Magazine | Software Gur |
| Issue Number | 22 |
| Pagination | 64 |
| Date Published | 11/2008 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| Key Words | ense anza, paradigmas, motivaci n, autodidacta |
| Citation Key | 1927 |
| Export |
| Title | Coordinaci n de esfuerzos en grupos de desarrollo e integraci n de Software Libre |
| Publication Type | Magazine Article |
| Year of Publication | 2008 |
| Authors | Gunnar, Wolf. |
| Magazine | Software Gur |
| Frequency | Quarterly |
| Issue Number | 21 |
| Pagination | 62-63 |
| Date Published | 08/2008 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| Key Words | Software libre, comunidad, organizaci n |
| Citation Key | 1926 |
| Export |
| Title | La metaprogramaci n y los lenguajes din micos |
| Publication Type | Web Article |
| Year of Publication | 2008 |
| Authors | Gunnar, Wolf. |
| Access Date | 2009/03/27 |
| Key Words | Metaprogramaci n, Ruby, programaci n |
| Abstract | La metaprogramaci n es una t cnica muy poderosa, y muy socorrida en el terreno de los lenguajes din micos. Puede llevarnos a reducir muy fuertemente el total de c digo que escribimos - Y lo que es mucho m s importante, a minimizar la cantidad de c digo repetido innecesariamente. Nos lleva claramente a aumentar la calidad y mantenibilidad de nuestro c digo. |
| URL | http://www.sg.com.mx/content/view/718/1/ |
| Citation Key | 1925 |
| Export |
Two days ago I read about the Ada Lovelace day, which was an event were men and women were asked to blog about the women in technology which made an impact on them, in an effort to present girls (and women) all over the world with female role models in technology.
I have booked my flights for Debconf9 in July. I will arrive in Madrid on July 23th at 10:30 from Lyon Saint-Exup ry (LYS-MAD, flight AF5891) and I will leave on July 31th at 17:40 (MAD-LYS, flight AF5892). I plan to use the train to go to C ceres but it s too early to buy tickets on renfe.es. I also have no idea how far the train station is (from the airport) but it looks like I will have several hours transit time anyway. There aren t so many trains for C ceres. The train tickets will likely cost around 30 EUR each.
I m glad that I can attend again this year. I m sure it will be very productive. At least concerning dpkg it will be good to meet Guillem Jover IRL.
Partagez cet article / Share This
One of the largest FLOSS events in the world, FISL (International Free Software Forum in english) subscriptions are already being accepted. They also already called for papers! They re calling this year s a special edition since they expect to reach 10-thousand attendees (last year exceeded 7-thousand)... this is pretty big if you ask me.
As usual, it will take place at Porto Alegre, and is scheduled from June 24th to 27th. I think we can expect the usual activities (Programming Arena, Interesting Workshops, FLOSS shows, Great Speakers, Brazilian Government), but I think the special edition is not just due to the number of attendees. What surprises are being cooked by the Organization Committee is just something we ll have to wait and see :-)
See you there!
Due to the repeated tendency of our
I generally try not to get caught up in writing auxiliary tools for my
free software projects. My experience in the past has been that given
how little spare time I have each week, a tool that takes more than an
hour or two to write quickly ends up becoming a time sink that
prevents me from making progress on the main project. But
occasionally it's worth the effort.
I spent the last couple weeks putting together a tool to extract
information about a dependency search from a log trace of aptitude's
resolver. The search is displayed in a log interface that shows both
the steps of the search in order, and the tree structure of the
search. It took a long time to write, but after working with it for
just a few hours, I was able to track down the bugs in the resolver
modifications I was trying to write; without a tool like this, it
would have taken a lot of painful grepping through log files to get
all the information I needed.
In other news, the resolver now stores the choices it has made as a
single set of choices, instead of using two different sets for the two
types of choices it can make. There's no user-visible change
(although I did fix another performance problem that affected
safe-upgrade), but this will pave the way for adding more types of
choices in a cleaner way: in particular, the resolver should get
explicit support for package replacements in the near future.
The code for this is available in the tools directory of aptitude's
experimental Mercurial repository,
http://hg.debian.org/hg/aptitude/post-lenny. When I get around to
merging it this with the main repository, it will also be available at
http://hg.debian.org/hg/aptitude/head.
print 'Highest bash version:', max(apt.Cache()['bash'].versions)This makes it very clear that you can build really cool applications with it. The various candidate*() and installed*() methods of apt.Package objects haven been deprecated, and you should use the Version() objects available via Package.installed or Package.candidate properties. Summary All in all, the python-apt 0.7.9 is a big step forward. It is one of the largest releases in the history of python-apt and provides various new features to make developing easier. With all the code cleanups, and the documentation, you should be able to find everything you need; if not please report a bug. When we are asked Can we do this with python-apt? , we can finally say: Yes we can! Posted in Debian

Today is my 38th birthday. (Chronologically that is. It was on Thursday by tithi.) As a present I got an Acer Extensa EX 4630-3922 laptop. I added an extra 2GB of RAM to the listed configuration and still managed to spend less than $500. It came with Windows Vista but shrinking that to a minimum and installing Linux (Kubuntu Intrepid) on it was completely uneventful. Now the next step will be to learn about Xen or KVM (Who's winning these days?) so I can add Debian Lenny and RHEL 5.2 to the mix. The only complaint I have so far is the anemic battery life which barely reaches 2.5 hours though perhaps that might improve with a bit of tweaking.
and now for something completely different...
sometimes in a shell script you need to do stuff that modifies
the positional parameters ($@, $1,
$2, etc) from the cmdline, usually via the builtin
shift, maybe from using getopt(1) or similar.
for example, it's quite common to see the following in a shell
script that parses cmdline flags with getopt
# parse cmdline options with getopt
TEMP= getopt -o h123 -n $0 -- "$@"
if [ $? != 0 ] ; then usage >&2 ; exit 1 ; fi
# overwrites $@ with getopt-generated/sanitized arguments
eval set -- "$TEMP"
# destructively iterates across $@
while true; do
case "$1" in
-h)
# handle option h
shift
;;
...
--)
shift
break
;;
esac
...
done
but sometimes you want to be able to restore the original
positional parameters later, or otherwise quote them in a manner
where they can be passed along to another script/function, log
them, embed them in a string/file, etc. you can't always just stash
them in another variable to use that later, because
"$@" has a special meaning to the shell that can't
otherwise be reproduced with another variable.
one way you could try to store/save them would be to save
the original copy of $@ and use eval set
-- later on to change it back to the saved variable. using a
slightly simplified version of the above:
#!/bin/sh
# save the cmdline
saved="$@"
echo original command line, $# arguments: "$@"
while test -n "$*"; do echo arg: "$1"; shift; done
echo mangled command line, $# arguments: "$@"
# restore the cmdline
eval set -- "$saved"
echo restored command line, $# arguments: "$@"
while test -n "$*"; do echo arg: "$1"; shift; done
and at first glance, it seems to work:
rangda[/home/sean] ./bad.sh one two three
original command line, 3 arguments: one two three
arg: one
arg: two
arg: three
mangled command line, 0 arguments:
restored command line, 3 arguments: one two three
arg: one
arg: two
arg: three
but you may run into problems when some parameters have spaces,
or quotes:
rangda[/home/sean] ./bad.sh "1: one" "2: two"
original command line, 2 arguments: 1: one 2: two
arg: 1: one
arg: 2: two
mangled command line, 0 arguments:
restored command line, 4 arguments: 1: one 2: two
arg: 1:
arg: one
arg: 2:
arg: two
rangda[/home/sean] ./bad.sh "one's one"
original command line, 1 arguments: one's one
arg: one's one
mangled command line, 0 arguments:
./bad.sh: eval: line 12: unexpected EOF while looking for matching ''
or worse, shell meta characters:
rangda[/home/sean] ./bad.sh 'i wonder what pwd would do'
original command line, 1 arguments: i wonder what pwd would do
arg: i wonder what pwd would do
mangled command line, 0 arguments:
restored command line, 6 arguments: i wonder what /home/sean would do
arg: i
arg: wonder
arg: what
arg: /home/sean
arg: would
arg: do
the solution is to build up the saved value a bit more manually,
single-quoting each parameter (which should prevent any unintended
side effects of space/quotes/metacharacters), and escaping existing
single quotes inside of parameters.
# escape any single quotes in an argument
quote()
echo "$1" sed -e "s,','\\\\'',g"
# save up a properly quoted/escaped version of "$@"
for arg in "$@"; do
saved="$ saved:+$saved '$(quote "$arg")'"
done
echo original command line, $# arguments: "$@"
while test -n "$*"; do echo arg: "$1"; shift; done
echo mangled command line, $# arguments: "$@"
# restore the cmdline
eval set -- "$saved"
echo restored command line, $# arguments: "$@"
while test -n "$*"; do echo arg: "$1"; shift; done
let's see how it behaves:
rangda[/home/sean] ./good.sh "1 one" "2: two"
original command line, 2 arguments: 1 one 2: two
arg: 1 one
arg: 2: two
mangled command line, 0 arguments:
restored command line, 2 arguments: 1 one 2: two
arg: 1 one
arg: 2: two
rangda[/home/sean] ./good.sh "one's one"
original command line, 1 arguments: one's one
arg: one's one
mangled command line, 0 arguments:
restored command line, 1 arguments: one's one
arg: one's one
rangda[/home/sean] ./good.sh 'i wonder what pwd would do'
original command line, 1 arguments: i wonder what pwd would do
arg: i wonder what pwd would do
mangled command line, 0 arguments:
restored command line, 1 arguments: i wonder what pwd would do
arg: i wonder what pwd would do
while not entirely pretty, it does to do the trick. i'd be
interested to know if anyone has a better way of doing this (or if
there are hidden problems in what i've posted above).
Next.