<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;C08BQnk4fSp7ImA9WhRUGUQ.&quot;"><id>tag:blogger.com,1999:blog-7021327</id><updated>2012-01-31T04:37:33.735-02:00</updated><category term="linux" /><category term="common subexpression elimination" /><category term="android" /><category term="sysadmin" /><category term="git" /><category term="python" /><category term="turbogears" /><category term="gnote" /><category term="hosting" /><category term="ubuntu" /><category term="cpp" /><category term="c++" /><category term="backup" /><category term="ekiga" /><title>I, Admin</title><subtitle type="html">Technical dump of a professional Systems Administrator.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://i-admin.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>52</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/IAdmin" /><feedburner:info uri="iadmin" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUIGQX0yfCp7ImA9Wx5VEU4.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-8869393841366037467</id><published>2010-10-03T16:18:00.000-03:00</published><updated>2010-10-03T16:18:40.394-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-03T16:18:40.394-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="git" /><category scheme="http://www.blogger.com/atom/ns#" term="backup" /><category scheme="http://www.blogger.com/atom/ns#" term="hosting" /><title>Internet services I recommend</title><content type="html">I'm a happy consumer of Internet services. Besides buying products from Amazon, iTunes, Google and other giants, I also subscribe to a bunch of small service providers that prove their competence and respect for consumers. It's only fair that I give them some praise and recommend their services to whoever might find this post.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.rsync.net/"&gt;rsync.net is a remote storage site that provides flexible data access like SSH, WebDAV and obviously rsync&lt;/a&gt;. They are a bit pricy but offer nice features like Git support. The problem is I can't use them to backup all of my MP3 bought from iTunes and Amazon, because of their price. And I've been using github.com for private git repositories, so I'll probably cancel my subscription with rsync.net sometime soon. I'm still looking for another cheap per-byte general purpose backup provider. This is a commodity service and features are not *that* important. So there is a chance I'll be stuck with Amazon S3 or Google Docs (which doesn't support access to upload via API, unless you are a premium subscriber or something).&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.github.com/"&gt;github.com is a Git hosting site&lt;/a&gt;.&amp;nbsp;All cool kids are using GitHub. These guys really know what their are doing. The UI is very well polished and they know what developers need, which is evident from recent feature additions such as the &lt;a href="http://github.com/blog/712-pull-requests-2-0"&gt;Pull Request 2.0&lt;/a&gt;. They offer free hosting for open source projects and you can pay a small fee for private repositories.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rimuhosting.com/"&gt;rimuhosting.com&lt;/a&gt; offers Linux virtual private servers. I've been a customer for a long time and worked for them as a Linux tech guy for about a year. Their prices are a bit high but their support really kick-ass. If you are afraid you might brake your system during an upgrade and need some help to fix it, or may get stuck setting up a mail server, RimuHosting is for you.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;I'll add more stuff to this list as I remember about them.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-8869393841366037467?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/_hnacyjKE-E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/8869393841366037467/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2010/10/internet-services-i-recommend.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/8869393841366037467?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/8869393841366037467?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/_hnacyjKE-E/internet-services-i-recommend.html" title="Internet services I recommend" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>1</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2010/10/internet-services-i-recommend.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AER3w-fyp7ImA9Wx5VF0g.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-2924994084423215120</id><published>2010-09-27T19:24:00.006-03:00</published><updated>2010-10-10T21:08:26.257-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-10T21:08:26.257-03:00</app:edited><title>German to English dictionary in the Kindle</title><content type="html">I wanted to read books in German in my Kindle, but because I don't know any German, I need a dictionary. If that's what you want, a dictionary for German that works in the Kindle, then download this:&lt;br /&gt;
&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/goog_615831286"&gt;German to English dictionary converted from StarDict, ready to be used as a &lt;/a&gt;&lt;i&gt;&lt;a href="http://www.blogger.com/goog_615831286"&gt;default dictionary&lt;/a&gt;&lt;/i&gt;&lt;a href="http://cetico.org/Dictionary_de-en.mobi.gz"&gt;&amp;nbsp;in Kindle 3&lt;/a&gt;&amp;nbsp;(Available under the terms of the GPL)&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Long version:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;I went through a lot of problem converting the &lt;a href="http://stardict.sourceforge.net/Dictionaries_dictd-www.freedict.de.php"&gt;StarDict dictionary of German to English&lt;/a&gt;. It really took me days. So let me dump the process here, roughly:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;download the stardict file. I believe the extension is .xdxf&lt;/li&gt;
&lt;li&gt;use pyglossary to convert it to a tab-separate text file&lt;/li&gt;
&lt;li&gt;use &lt;a href="http://www.klokan.cz/projects/stardict-lingea/"&gt;tab2opf from this dude&lt;/a&gt; to convert the text file into an OPF set of files (.opf plus a bunch of HTMLs)&lt;/li&gt;
&lt;li&gt;go to&amp;nbsp;&lt;a href="http://www.mobipocket.com/dev/"&gt;http://www.mobipocket.com/dev/&lt;/a&gt;&amp;nbsp;and download the proprietary "kindlegen" tool&lt;/li&gt;
&lt;li&gt;use kindlegen on the .opf file. If all goes right, you'll get a .mobi file at the end.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;After that, put the mobi file in the Kindle (I use Calibre for that) and make it the default dictionary, by going to Home, then Menu, Settings, then Menu, then Change Primary Dictionary.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;There's a big catch. They clearly tune the Kindle to use as less power as possible. So it makes sense for the English language to save a few CPU cycles by&lt;b&gt; skipping dictionary lookups when the word starts with an uppercase letter in the middle of a phrase&lt;/b&gt;. Like for example if in this phrase: "I think Amazon sucks at making internalized products". In English, a dictionary lookup for "Amazon" doesn't make sense.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;As you, a smart reader, knows, the German language uses capitalized letters for all nouns. So it's effectively impossible to lookup the meaning of for example&amp;nbsp;&lt;i&gt;Weihnachten&lt;/i&gt;&amp;nbsp;(christmas). The only workaround I could think it's to edit the content of the book and search all&amp;nbsp;capitalized letters by lower case ones.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Or, alternatively, stop wasting time tuning the Kindle and go &lt;b&gt;study&lt;/b&gt;&amp;nbsp;German so you don't need a dictionary in the first place :-).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;UPDATE&lt;/b&gt;: Thanks to helpful suggestions from&lt;a href="http://www.mobileread.com/forums/showthread.php?p=1155553#post1155553"&gt; Ea and stehk from MobileReads&lt;/a&gt;, I changed directions and decided to buy a better dictionary that actually works with all inflections, and is much better overall. The process was very complicated, but here's the outline:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;buy the book from mobipocket.com (&lt;a href="http://www.mobipocket.com/en/eBooks/eBookDetails.asp?BookID=86467"&gt;this one is good&lt;/a&gt;, thanks stehk!)&lt;/li&gt;
&lt;li&gt;download their mobile reader. Because I don't have Windows, I had to setup it up using "msiexec&amp;nbsp;mobireadersetup.msi"&lt;/li&gt;
&lt;li&gt;run the reader.exe from wine&lt;/li&gt;
&lt;li&gt;find your way through their hideous interface to login, download and activate your books&lt;/li&gt;
&lt;li&gt;make sure you can open that book from their reader&lt;/li&gt;
&lt;li&gt;go to the list of ebooks in the reader program, right+click and take a look at the properties, to see where the file is now. From outside Wine, copy that file to somewhere you know. Like /var/tmp&lt;/li&gt;
&lt;li&gt;Go to mobipocket.com and find the PID of your "device". Device in this case it's actually the "Windows" Mobipocket Reader.&lt;/li&gt;
&lt;li&gt;Use MobiDeDRM to decrypt your book. &lt;a href="http://www.makeuseof.com/tag/how-to-strip-mobi-and-prc-ebooks-of-encryption/"&gt;As explained here&lt;/a&gt;. If you keep getting "invalid PID checksum" errors, &lt;a href="http://stream-recorder.com/forum/mobidedrm-py-remove-drm-mobipocket-ebooks-t5429.html"&gt;try a different version of the script&lt;/a&gt;. Sample command:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;python mobidedrm.py pons_gross_de2.prc pons.prc 'KYJZGSJ$HC'&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;(this is a fake number. Note that I enclosed the PID with single quotes)&lt;/li&gt;
&lt;li&gt;(this command can take several minutes depending on the book size. It took about 10 minutes for this 20MB dictionary)&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;I have no words to describe how disgusted I am with all of this. First, we all know how stupid DRM is, in so many levels. It just makes the lives of honest dudes more difficult (I'm freaking BUYING the book and not distributing it). But worst of all, AMAZON OWNS MOBIPOCKET.COM!!! And I'm having to DE-DRM their own ebooks so I can read them on my Kindle!!!!!1&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Are you also angry? Than use&amp;nbsp;&lt;a href="http://inkmesh.com/"&gt;inkmesh.com&lt;/a&gt; or a simular search engine to find *other* ebook stores that sell books compatible to the Kindle. Don't buy everything from Amazon. Besides all, they seem to be doing &lt;a href="http://inkmesh.com/blog/2010/08/21/how-does-amazon-bn-and-sony-stack-up-on-ebook-prices-post-agency-model/"&gt;predatory prices&lt;/a&gt; too, which is bad for all consumers in the long term.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-2924994084423215120?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/4VE33zMKq8U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/2924994084423215120/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2010/09/german-to-english-dictionary-in-kindle.html#comment-form" title="19 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/2924994084423215120?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/2924994084423215120?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/4VE33zMKq8U/german-to-english-dictionary-in-kindle.html" title="German to English dictionary in the Kindle" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>19</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2010/09/german-to-english-dictionary-in-kindle.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYESHo8fCp7ImA9Wx5UEE0.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-8985179766795060689</id><published>2010-09-16T19:22:00.001-03:00</published><updated>2010-10-13T17:35:09.474-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-13T17:35:09.474-03:00</app:edited><title>how to liberate O'Reilly books acquired from the Android Market</title><content type="html">&lt;i&gt;this post may be useful to people out there trying to read on a Kindle the O'Reilly books they acquired from the Android Market&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
O'Reilly is a competent, decent and not-evil publisher of technical books. They know that DRM only causes pain to good costumers, because bad customers will find other ways to access/steal their books. I therefore feel respected as a customer and retribute by buying lots of e-books from them :-).&lt;br /&gt;
&lt;br /&gt;
The cheapest way to get e-books from O'Reilly is, besides the very unfriendly O'Reilly Safari bookshelf, to buy them via Android Market. Books acquired in the Market come bundled with a crippled version of Aldiko. Most of the time, that's good enough. But, there are two problems:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;I want to have a backup of the books that I legally acquired. If in X years I don't have an android phone anymore, or maybe if I lose access to my gmail account, I won't be able to re-download the books.&lt;/li&gt;
&lt;li&gt;I believe it's legal and fair that I should be able to read this book in other devices that I own. Recently I bought a Kindle, and it become my main ebook reading device. I don't think it's reasonable to expect that I'm going to buy those books all over again, this time from the Amazon Kindle book shop.&lt;/li&gt;
&lt;/ul&gt;Optionally, I could have bought these books from the Amazon Kindle bookstore and read them using the Amazon Kindle for Android. That's not ideal, though. First, it's more expensive. Second, these books are DRM protected and I would only be able to read them using a Kindle software. I don't want that.&lt;br /&gt;
&lt;br /&gt;
So instead, I found a way to copy the DRM-free O'Reilly books that I bought from the Android Market. It's simple:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Install ASTRO file manager from the Android Market&lt;/li&gt;
&lt;li&gt;Open ASTRO, go to Tools and Application Manager/Backup&lt;/li&gt;
&lt;li&gt;Select the applications referring to the books, then hit backup. The ".apk" files will be copied to your sdcard.&lt;/li&gt;
&lt;li&gt;Connect the phone via USB to a computer and copy the files from the /backups directory. Alternatively, use ASTRO itself to "Send" the apk from /sdcard/backups to your email, then download it to your computer.&lt;/li&gt;
&lt;li&gt;The APK files are really zip files. If you want, you can simply backup these apk files. That's what I do.&lt;/li&gt;
&lt;li&gt;If you want to open the book in another device that reads epub books, then unzip the apk file, enter the directory called assets, then zip the contents of this directory into a .zip file. Rename the zip file to .epub, and you're done.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;good luck!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-8985179766795060689?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/sFShkSHYLzw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/8985179766795060689/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2010/09/how-to-liberate-oreilly-books-acquired.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/8985179766795060689?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/8985179766795060689?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/sFShkSHYLzw/how-to-liberate-oreilly-books-acquired.html" title="how to liberate O'Reilly books acquired from the Android Market" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>3</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2010/09/how-to-liberate-oreilly-books-acquired.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIBSHcyfSp7ImA9WxJVF04.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-5841469431043646016</id><published>2009-07-04T16:13:00.003-03:00</published><updated>2009-07-04T16:42:39.995-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-04T16:42:39.995-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>My preferred Android applications</title><content type="html">I bought an HTC Magic a few weeks ago. One of the its coolest thing is the sheer number of apps in the Android Market. There are actually too many and finding the good ones requires lots of searching and testing. These are the ones I use the most so far:&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://wapedia.mobi"&gt;Wapedia&lt;/a&gt;, which greatly optimizes the wikipedia display for mobile devices.&lt;br /&gt;- &lt;a href="http://pixelpipe.om"&gt;Pixelpipe&lt;/a&gt;, to upload media to Flickr easily.&lt;br /&gt;- QuickDic German, by Thad Hughes (a googler, by the way)&lt;br /&gt;- &lt;a href="http://ichi2.net/anki/"&gt;AnkiOnline&lt;/a&gt;. Not actually an app, but a mobile-friendly web site that is always synced with my desktop Anki database. I use it to study german vocabulary while commuting. Pretty cool.&lt;br /&gt;- &lt;a href="http://newsrob.com"&gt;NewsRob&lt;/a&gt;, a Google Reader client (suggested by Cesar from &lt;a href="http://pinguinsmoveis.blogspot.com"&gt;Pinguis Moveis&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Soon I'll hopefully expand this list with an I app I wrote myself, but I've been very lazy lately, so who knows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-5841469431043646016?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/GjCKrIoi5Ss" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/5841469431043646016/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2009/07/my-preferred-android-applications.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/5841469431043646016?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/5841469431043646016?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/GjCKrIoi5Ss/my-preferred-android-applications.html" title="My preferred Android applications" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>1</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2009/07/my-preferred-android-applications.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYCQ3o9eCp7ImA9WxJWEE8.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-7531231490071593753</id><published>2009-06-14T19:46:00.005-03:00</published><updated>2009-06-14T20:29:22.460-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-14T20:29:22.460-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="sysadmin" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>Sometimes I miss doing Linux end user support work</title><content type="html">Last October I set an Ubuntu desktop for &lt;a href="http://whodsay.blogspot.com"&gt;Carla&lt;/a&gt;'s family. We live very far away from them, so it was important that their system was resilient, otherwise it wouldn't last long. They are all beginners in this internet thing, so installing Windows for them would have been a bad idea.&lt;br /&gt;&lt;br /&gt;And I was right. Things ran pretty smoothly, we talked via Skype very often, with no signs of virus or crashes. I even found this file in their system:&lt;br /&gt;&lt;blockquote&gt;clica-aqui.exe (click-here.exe, in Portuguese)&lt;/blockquote&gt;&lt;br /&gt;After many months of usage everything was still working fine, until the computer stopped booting.&lt;br /&gt;&lt;br /&gt;Helping them from the phone was a challenge. They had to read the error messages in English for me (and they don't understand this language), while we tried to fix GRUB. In the end I assumed the hard disk was just dead.&lt;br /&gt;&lt;br /&gt;I asked my good friend &lt;a href="http://marcelolemos.blogspot.com/"&gt;Marcelo Lemos&lt;/a&gt; for help and he burned an ISO image of Ubuntu and sent them by mail. I live in Switzerland and it would take ages for the package to get there. The customs in Brazil are a black hole. &lt;br /&gt;&lt;br /&gt;The CD got there after a couple days but, of course, since the worst case scenario always apply, the computer was not set to boot via CD-ROM, so we had to fix that - all by phone, while the girls spell each CMOS setup word for me.&lt;br /&gt;&lt;br /&gt;Now the Ubuntu Live CD system was finally up, I logged in via a reverse SSH connection (I gave them commands via Gmail that they would run via terminal) and fixed the filesystem errors. But the kernel still showed too many I/O errors from that hard disk. The only safe thing to do was to backup their remaining personal files somewhere while the system is still up, then reinstall everything with a new hard disk.&lt;br /&gt;&lt;br /&gt;I needed a safe place to send all their stuff but my amazing friends and former colleagues at &lt;a href="http://rimuhosting.com"&gt;RimuHosting&lt;/a&gt; do not offer the cheapest disk space plans, unfortunately. So I remembered that a RimuHosting customer once said great things about rsync.net (awesome name, by the way), and I gave them a try.&lt;br /&gt;&lt;br /&gt;I ordered a one-year 4Gb quote with them and my account was setup in a few minutes, even before I send them the payment, which is really awesome. I got all login details by mail, and started rsync'ing everything right away. Pretty neat. So it turns out that &lt;a href="http://rsync.net"&gt;rsync.net is a decent secure offsite backup service&lt;/a&gt; that I strongly recommend so far. They even have servers here in Zürich :-).&lt;br /&gt;&lt;br /&gt;The rsync is still running inside a &lt;span style="font-style:italic;"&gt;screen(1)&lt;/span&gt; session as I write this, and it's going to take a while to finish. I just hope the disk is not too damaged and that it copies the most important files. Otherwise how would they live without the &lt;span style="font-style:italic;"&gt;clica-aqui.exe&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;So much adrenaline! Only end-user support work gives me that. I miss that a little bit.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;NOT!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-7531231490071593753?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/if6OJJmcWjw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/7531231490071593753/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2009/06/sometimes-i-miss-doing-linux-end-user.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/7531231490071593753?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/7531231490071593753?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/if6OJJmcWjw/sometimes-i-miss-doing-linux-end-user.html" title="Sometimes I miss doing Linux end user support work" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>0</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2009/06/sometimes-i-miss-doing-linux-end-user.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcDQnk7fyp7ImA9WxJWEE8.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-292103569022744230</id><published>2009-06-09T21:22:00.004-03:00</published><updated>2009-06-14T20:27:53.707-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-14T20:27:53.707-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><category scheme="http://www.blogger.com/atom/ns#" term="gnote" /><title>Fixed my first bug in C++. PROFIT!</title><content type="html">I'm still &lt;a href="http://i-admin.blogspot.com/2009/06/having-fan-while-trying-to-learn-c.html"&gt;trying to learn C++ by fixing bugs&lt;/a&gt;. Well, the bug I wanted to fix in Ekiga had already being solved upstream (should I be happy or sad?), but I had fun trying to debug it anyway.&lt;br /&gt;&lt;br /&gt;Luckily I found another one to fix today. After 1h30m playing around with gdb and adding debug messages everywhere, I fixed a &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=582789"&gt;bug in Gnote where preferences were not being set unless you restarted the program&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The biggest challenge was to find out that all code was written already, it just wasn't working. I initially thought I'd have to write the callback methods myself, but then I saw references to "gconf...notify" in the code, which would normally be enough.&lt;br /&gt;&lt;br /&gt;Reading the gconf API docs was sufficient for me to find the culprit. &lt;a href="http://git.gnome.org/cgit/gnote/commit/?id=22e48c6de1373c73f64196b29f7d1b274d1300b4"&gt;2-liner patch submitted&lt;/a&gt; ;-).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-292103569022744230?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/8wrTBQNTMpU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/292103569022744230/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2009/06/fixed-my-first-bug-in-c-profit.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/292103569022744230?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/292103569022744230?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/8wrTBQNTMpU/fixed-my-first-bug-in-c-profit.html" title="Fixed my first bug in C++. PROFIT!" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>0</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2009/06/fixed-my-first-bug-in-c-profit.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EFSHgyfSp7ImA9WxJXFUo.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-2141224639296402316</id><published>2009-06-08T21:16:00.004-03:00</published><updated>2009-06-09T17:33:39.695-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-09T17:33:39.695-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><category scheme="http://www.blogger.com/atom/ns#" term="cpp" /><category scheme="http://www.blogger.com/atom/ns#" term="ekiga" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>Having fun while trying to learn C++</title><content type="html">I've been trying to learn C++ lately. I read a few chapters of a few books, but I got tired of just reading so now I am trying to fix bugs in free software out there.&lt;br /&gt;&lt;br /&gt;The first step was to install Ubuntu on the Macbook Pro that I use. Second step was to find useful software written in C++ that needs small bugs fixing.&lt;br /&gt;&lt;br /&gt;First I tried to fix a &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=581080"&gt;bug in gnote&lt;/a&gt;, but I wasn't persistent enough and the lead developer fixed the bug himself after many days without any update from me. The lesson learned here is &lt;b&gt;do not just propose a fix a go walkabout. Stick to it until the end.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now I'm trying to fix an bug in Ekiga. Actually, I think the bug is in the libopal, but I'm not so sure. The symptom is a segmentation fault in SIPHandler::SendRequest() and it only crashes when I set an outbound SIP proxy. Maybe I'm setting an invalid proxy, but well, it shouldn't be crashing.&lt;br /&gt;&lt;br /&gt;Let's see how far I'll go this time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-2141224639296402316?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/KQcVr3K5kr4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/2141224639296402316/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2009/06/having-fan-while-trying-to-learn-c.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/2141224639296402316?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/2141224639296402316?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/KQcVr3K5kr4/having-fan-while-trying-to-learn-c.html" title="Having fun while trying to learn C++" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>0</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2009/06/having-fan-while-trying-to-learn-c.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QFQHs9eCp7ImA9WxVSF00.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-8456486994701667991</id><published>2008-12-29T16:55:00.007-02:00</published><updated>2009-01-11T18:21:51.560-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-11T18:21:51.560-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="common subexpression elimination" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>Being naïve about Python object identities, references and sizes.</title><content type="html">I'm ashamed of how naïve and ignorant I stand regarding Python stuff. At least this time, I've learned a great lesson about object identities, references and sizes. Hopefully you won't make the same mistake as I did.&lt;br /&gt;&lt;br /&gt;Here's what I wanted to do: write an in-memory simplistic log keeper for my application, that would be used as a poor man's brute force protection.  The details don't matter much. All this meant is I'd have to keep, say, all the last 10 authentication attempts for all users, for as long as needed, in memory.&lt;br /&gt;&lt;br /&gt;I was then a bit worried about memory usage, so &lt;span style="font-weight:bold;"&gt; I got creative&lt;/span&gt;. I'm probably the &lt;a href="http://everythingsysadmin.com/2008/10/system-administration-needs-mo.html"&gt;electrician sysadmin that Tom referred&lt;/a&gt;. Sometimes the wires burst in flames when I get creative.&lt;br /&gt;&lt;br /&gt;A normal (and sane) person would write something like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;UserLog(object):&lt;br /&gt;  def __init__(self, auth_result, auth_timestamp, client_ip):&lt;br /&gt;    self.auth_result = auth_result&lt;br /&gt;    self.auth_timestamp = auth_timestamp&lt;br /&gt;    self.client_ip = client_ip&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It's a simple class type object. It would be used this way:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;lastlog = UserLog(True, 1231700497, '127.0.0.1')&lt;br /&gt;print lastlog.client_ip   &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;But then I looked at the object names, "client_ip", "auth_result", "auth_timestamp". And I thought: OMG, I'd have one UserLog object instance for each auth event, for each user. I don't want to waste so many precious bytes by keeping these &lt;span style="font-weight:bold;"&gt;object names &lt;/span&gt;in my structure!&lt;br /&gt;&lt;br /&gt;So this stupid person had the following reasoning to try and save memory.&lt;br /&gt;&lt;br /&gt;Instead of keeping a proper structured and clean "log" object with each log component with their names, I thought I should throw everything inside a list, and use the index numbers to reference to each member. For example:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;user_logs['yves'] = [False, 1231700497, '10.0.0.33']&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In order to add mnmemonics for this stupid structure, I'd use some constants that I could use to refer to the indexes. Eg:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;AUTH_TIMESTAMP = 1&lt;br /&gt;&lt;br /&gt;for log in user_logs['yves']:&lt;br /&gt;    print log[AUTH_TIMESTAMP]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Although this hideous code is common for C programmers, it's a deadly sin for Python programmers. What kind of creature would NOT use a dictionary to store this data? That creature is me, Yves, and I ask for your forgiveness.&lt;br /&gt;&lt;br /&gt;Of course I should have used a dictionary. A class type object would be even cleaner. So I rewrote that portion of the code.&lt;br /&gt;&lt;br /&gt;The truth is the overhead for keeping 1 million instances of the string constant 'client_ip' is not as big as I thought, even when compared to keeping 1 million instances of the integer 2. Why is that?&lt;br /&gt;&lt;br /&gt;It's simple. As we know, Python uses references for keeping its objects. We'd have 1 million references to "client_ip", yes, but they all point to exactly the same object: the string constant "client_id" is kept just once in memory, for all our instances.&lt;br /&gt;&lt;br /&gt;It's easy to see this happening:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&gt;&gt;&gt; a = 'gggggggggggggg'&lt;br /&gt;&gt;&gt;&gt; b = 'gggggggggggggg'&lt;br /&gt;&gt;&gt;&gt; c = 'xxxxxxxxxxxxxx'&lt;br /&gt;&gt;&gt;&gt; id(a)&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;154424848&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; id(b)&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;154424848&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; id(c)&lt;br /&gt;154424888&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Note how a and b refer to the same object id. One can even compare them by using 'is'.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&gt;&gt;&gt; a is b&lt;br /&gt;True&lt;br /&gt;&lt;/blockquote&gt; above&lt;br /&gt;&lt;br /&gt;So although a and b are independent containers, they point to the same string constant, which is only saved once in memory. Interesting, hun? This is called &lt;a href="http://en.wikipedia.org/wiki/Common_subexpression_elimination"&gt;common subexpression elimination&lt;/a&gt; and it's a well-known optimization technique for compilers.&lt;br /&gt;&lt;br /&gt;Obviously, although we don't have to worry about repeated string constants for the keys in our multiple dictionaries, there's still a storage overhead of using a dictionary compared to using a list to keep objects, but this is also minimal.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Bottom-line: don't bother too much about creating your own "memory efficient" data structure instead of using a good and old dictionary (or similar, such as a class type). It's usually not worth trouble.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Curiously, I noticed the common subexpression elimination does not &lt;span style="font-weight:bold;"&gt;always&lt;/span&gt; happen, and sometimes identical string constants are stored in different places in memory:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt; a&lt;br /&gt;'my string'&lt;br /&gt;&gt;&gt;&gt; b&lt;br /&gt;'my string'&lt;br /&gt;&gt;&gt;&gt; a is b&lt;br /&gt;False&lt;br /&gt;&gt;&gt;&gt; id(a)&lt;br /&gt;154424808&lt;br /&gt;&gt;&gt;&gt; id(b)&lt;br /&gt;154424928&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Something to discuss in a later post, I guess.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-8456486994701667991?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/iiPLVWiMGyk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/8456486994701667991/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2008/12/being-nave-about-python-object.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/8456486994701667991?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/8456486994701667991?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/iiPLVWiMGyk/being-nave-about-python-object.html" title="Being naïve about Python object identities, references and sizes." /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>0</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2008/12/being-nave-about-python-object.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8GQHo4fip7ImA9WxRbEEg.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-9056957627612167680</id><published>2008-11-30T13:22:00.001-02:00</published><updated>2008-11-30T13:27:01.436-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-30T13:27:01.436-02:00</app:edited><title>Sharing the USB 3G serial network of a Mac OS X with a VirtualBox guest machine</title><content type="html">When configuring networking on VirtualBox for Mac OS X, I got stuck because it didn't give me the option to use the "Host Interface" option with my ppp0 connection. The ppp0 connection is my "dial-up" Internet connection using a 3G USB modem.&lt;br /&gt;&lt;br /&gt;The solution is so obvious, that I'm surprised I couldn't think of it before finding &lt;a href="http://forums.virtualbox.org/viewtopic.php?p=37658&amp;sid=485edee6410389582ef8d79e0419e280"&gt;this post&lt;/a&gt; on the VirtualBox forum: just use the (amazing) Internet sharing option of the Mac.&lt;br /&gt;&lt;br /&gt;- First, configure VirtualBox to use "Host Interface", and pick the "Ethernet" device down below.&lt;br /&gt;- Then, Boot your guest OS (for example,&lt;a href="http://debian-live.alioth.debian.org/"&gt; Debian Live&lt;/a&gt;, or &lt;a href="http://haiku-os.org/"&gt;HaikuOS&lt;/a&gt;) and use DHCP to configure the network.&lt;br /&gt;- Finally, configure Internet sharing on the Mac OS X. Just share the "connection from: " .. "To computers using: Ethernet". Wait a few seconds, then force a reload of the DHCP configuration on the guest OS, and it's done!&lt;br /&gt;&lt;br /&gt;Now, the trick is how to make the network work on HaikuOS :-).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-9056957627612167680?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/8Ue2YaSHwbs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/9056957627612167680/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2008/11/sharing-usb-3g-serial-network-of-mac-os.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/9056957627612167680?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/9056957627612167680?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/8Ue2YaSHwbs/sharing-usb-3g-serial-network-of-mac-os.html" title="Sharing the USB 3G serial network of a Mac OS X with a VirtualBox guest machine" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>3</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2008/11/sharing-usb-3g-serial-network-of-mac-os.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIFQ3g7fip7ImA9WxZTGU4.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-3667428821180630701</id><published>2007-07-26T01:02:00.000-03:00</published><updated>2008-01-21T14:38:32.606-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-21T14:38:32.606-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="turbogears" /><title>Setting the default locale (language) in TurboGears</title><content type="html">The TurboGears &lt;a href="http://docs.turbogears.org/1.0/Internationalization"&gt;documentation&lt;/a&gt; only mentions this &lt;span style="font-style: italic;"&gt;en passant&lt;/span&gt;. It's easy to change the default locale (language) of your TG application.&lt;br /&gt;&lt;br /&gt;In your project/controllers.py, in you can add:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;def locale_pt():&lt;br /&gt;   return 'pt'&lt;br /&gt;&lt;br /&gt;turbogears.config.update({'i18n.get_locale' : locale_pt})&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I have this in the top namespace of my controllers.py file, not inside the Root class. I'm not sure if this is the prettiest way to make this work, but hey, it works for me. If you have any better suggestion, please leave a comment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-3667428821180630701?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/boMZS6RBfWc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/3667428821180630701/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2007/07/setting-default-locale-language-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/3667428821180630701?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/3667428821180630701?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/boMZS6RBfWc/setting-default-locale-language-in.html" title="Setting the default locale (language) in TurboGears" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>0</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2007/07/setting-default-locale-language-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIBQnk-cSp7ImA9WxZTGU4.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-4839189705484494942</id><published>2007-06-18T16:45:00.000-03:00</published><updated>2008-01-21T14:39:13.759-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-21T14:39:13.759-02:00</app:edited><title>linux group passwords</title><content type="html">&lt;p style="margin: 0px;"&gt;&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:Helvetica;font-size:100%;"  &gt;Group passwords is a sort of obscure feature most people don't use. It is safer *not* to have passwords set for groups.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 14px;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:Helvetica;font-size:100%;"  &gt;By setting a password to a group, you allow an arbitrary users to be part of that group as long as they know the password. That generally doesn't make any sense unless you need to grant a shell user temporary access to a certain group. I don't even know if it works as advertised.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 14px;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:Helvetica;font-size:100%;"  &gt;If you see this at webmin for example, you can safely ignore this option. For more information, see:&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 14px;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:Helvetica;font-size:100%;"  &gt;&lt;a href="http://tldp.org/HOWTO/Shadow-Password-HOWTO-7.html"&gt;http://tldp.org/HOWTO/Shadow-Password-HOWTO-7.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 14px;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-4839189705484494942?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/lq9IiMOlPcM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/4839189705484494942/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2007/06/linux-group-passwords.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/4839189705484494942?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/4839189705484494942?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/lq9IiMOlPcM/linux-group-passwords.html" title="linux group passwords" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>0</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2007/06/linux-group-passwords.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYGQH08eip7ImA9Wx5bFEg.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-112621809684730789</id><published>2005-09-08T19:15:00.001-03:00</published><updated>2010-10-30T12:48:41.372-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-30T12:48:41.372-02:00</app:edited><title>Suriproxy -  Release soon</title><content type="html">"Release Soon, Release Often".&lt;br /&gt;
&lt;br /&gt;
Com esse mantra na cabeça, estou disponibilizando o Suriproxy, uma ferramenta anti-spam e, principalmente, anti-phishing.&lt;br /&gt;
&lt;br /&gt;
O suriproxy é um PROXY SMTPD para o Postfix, que filtra as mensagens&lt;br /&gt;
recebidas pelo daemon smtpd e repassa a outro daemon, seja um amavis ou outro&lt;br /&gt;
smtpd do postfix.&lt;br /&gt;
&lt;br /&gt;
Ele faz consultas URIBL de DNS quando encontra algum link nas mensagens,&lt;br /&gt;
ele consulta se o domínio deste link está nas listas URIBL (inclusive na&lt;br /&gt;
uribl.cetico.com).&lt;br /&gt;
&lt;br /&gt;
Veja o exemplo. Você recebe o e-mail com o seguinte texto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;a href="http://www.blable.net"&amp;gt;CLIQUE AQUI&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ou ainda&lt;br /&gt;
&lt;br /&gt;
&amp;lt;a href="http://www.blable.net/virus-mal.scr"&amp;gt;CLIQUE AQUI&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O Postfix pedirá que o Suriproxy verifique essa mensagem. Este, por sua vez,&lt;br /&gt;
irá consultar seus dominios URIBL (uribl.cetico.com e multi.surbl.org),&lt;br /&gt;
para ver se "blable.net" está em alguma dessas listas.&lt;br /&gt;
&lt;br /&gt;
Caso esteja, antes mesmo de se terminar a conexão SMTP, o Postfix mostrará&lt;br /&gt;
uma mensagem de erro, informando que aquele e-mail não foi aceito. Isso&lt;br /&gt;
evita que mensagens sejam perdidas, mas por outro lado não gera BOUNCES ou&lt;br /&gt;
tráfego desnecessário para você.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A instalação pode ser um pouco complexa para usuários iniciantes, principalmente porque ainda não tive tempo de escrever uma documentação bem detalhada.&lt;br /&gt;
&lt;br /&gt;
Além disso, em alguns casos, um bug ainda não resovido faz com que a ferramenta aja de forma inesperada, fechando conexões antes da hora, o que faz com que o servidor remoto tenha que enviar a mensagem novamente. Isso geralmente só acontece quando o host remoto envia mensagens lentamente.&lt;br /&gt;
&lt;br /&gt;
Para pegar o Suriproxy, &lt;a href="http://www.cetico.org/suriproxy-0.13.tar.gz"&gt;siga este link&lt;/a&gt;. Veja o README sobre instruções de instalação. Qualquer dúvida deixe um comentário aqui, que responderei assim que possível.&lt;br /&gt;
&lt;br /&gt;
Muito obrigado a todos pelo interesse :-).&lt;br /&gt;
&lt;br /&gt;
UPDATE: código do &lt;a href="http://github.com/nictuku/suriproxy"&gt;Suriproxy&lt;/a&gt; no github, caso seja útil pra alguém.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-112621809684730789?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/sKUlZDcviO8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/112621809684730789/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2005/09/suriproxy-release-soon.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/112621809684730789?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/112621809684730789?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/sKUlZDcviO8/suriproxy-release-soon.html" title="Suriproxy -  Release soon" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>1</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2005/09/suriproxy-release-soon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QFSXwzeCp7ImA9WBRVEEw.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-112601500843480820</id><published>2005-09-06T10:38:00.000-03:00</published><updated>2005-09-06T11:01:58.280-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2005-09-06T11:01:58.280-03:00</app:edited><title>Release do Mozilla Calendar 0.3a1 está próxima</title><content type="html">Aparentemente, acompanhando o &lt;a href="http://www.babylonsounds.com/blog.html"&gt;blog do Sipaq&lt;/a&gt; e o &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=298936"&gt;tracking bug da release 0.3a1&lt;/a&gt;, a nova versão pública está próxima.&lt;br /&gt;&lt;br /&gt;Na versão atual, o Sunbird tem muitos bugs sérios, que atrapalham a integração com serviços WebDAV. No meu caso, o Mozilla Calendar é item estratégico no projeto de migração de uma plataforma Microsoft Exchange. Sem um sistema de calendário robusto, é impossível deixar de usar o combo "Exchange+Outlook".&lt;br /&gt;&lt;br /&gt;O &lt;a href="http://wiki.mozilla.org/Calendar:Home_Page"&gt;Wiki&lt;/a&gt; é outra fonte de informações sobre o projeto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-112601500843480820?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/dEW5IZUt6fE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/112601500843480820/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2005/09/release-do-mozilla-calendar-03a1-est.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/112601500843480820?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/112601500843480820?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/dEW5IZUt6fE/release-do-mozilla-calendar-03a1-est.html" title="Release do Mozilla Calendar 0.3a1 está próxima" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>0</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2005/09/release-do-mozilla-calendar-03a1-est.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkACR3Y7eyp7ImA9WBRXGEg.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-112485413390719371</id><published>2005-08-24T00:25:00.000-03:00</published><updated>2005-08-24T00:39:26.803-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2005-08-24T00:39:26.803-03:00</app:edited><title>Como usar o Google Talk no seu cliente Jabber preferido para Windows</title><content type="html">&lt;a href="http://www.cetico.org/blog/2005/08/how-to-use-google-talk-using-your.html"&gt;English&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O Google irá lançar o &lt;a href="http://talk.google.com"&gt;Google Talk&lt;/a&gt; amanhã, mas você já pode se conectar.&lt;br /&gt;&lt;br /&gt;Basta usar um cliente Jabber completo, como o &lt;a href="http://gaim.sourceforge.net"&gt;Gaim&lt;/A&gt; ou Exodus.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ufpr.dl.sourceforge.net/sourceforge/gaim/gaim-1.5.0.exe"&gt;Download do Gaim&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://exodus.jabberstudio.org/daily/setup.exe"&gt;Download do Exodus&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Os dados que voce precisa são:&lt;br /&gt;&lt;br /&gt;Servidor: talk.google.com&lt;br /&gt;Porta: 5222&lt;br /&gt;Usuario: seugmail@gmail.com (com domínio)&lt;br /&gt;Senha: sua senha do gmail&lt;br /&gt;&lt;br /&gt;Boa sorte!! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-112485413390719371?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/hAZi3Aoi6x4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/112485413390719371/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2005/08/como-usar-o-google-talk-no-seu-cliente.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/112485413390719371?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/112485413390719371?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/hAZi3Aoi6x4/como-usar-o-google-talk-no-seu-cliente.html" title="Como usar o Google Talk no seu cliente Jabber preferido para Windows" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>1</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2005/08/como-usar-o-google-talk-no-seu-cliente.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4ERHw4eCp7ImA9WBRXGEg.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-112485390522390196</id><published>2005-08-24T00:17:00.000-03:00</published><updated>2005-08-24T00:25:05.230-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2005-08-24T00:25:05.230-03:00</app:edited><title>How to use Google Talk using your preferred Jabber Client for Windows</title><content type="html">Google will launch tomorrow its instant messaging service.&lt;br /&gt;&lt;br /&gt;You can connect to it using any Jabber full client for Windows, like Gaim or Exodus (I could not make it work with Miranda, a great client).&lt;br /&gt;&lt;br /&gt;You need to setup the following:&lt;br /&gt;&lt;br /&gt;Server: talk.google.com&lt;br /&gt;User: youremail@gmail.com (with the domain part)&lt;br /&gt;password: yourpass&lt;br /&gt;port 5222&lt;br /&gt;&lt;br /&gt;Add me if you want :-) yves.junqueira@gmail.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-112485390522390196?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/yDODELWOnbY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/112485390522390196/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2005/08/how-to-use-google-talk-using-your.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/112485390522390196?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/112485390522390196?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/yDODELWOnbY/how-to-use-google-talk-using-your.html" title="How to use Google Talk using your preferred Jabber Client for Windows" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>0</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2005/08/how-to-use-google-talk-using-your.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEDRn49eyp7ImA9WBRRFUQ.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-112259324707757532</id><published>2005-07-28T20:24:00.000-03:00</published><updated>2005-07-28T20:34:37.063-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2005-07-28T20:34:37.063-03:00</app:edited><title>CACIC - Agente para Linux</title><content type="html">http://www.cetico.org/cacic/cacic-agente-linux-1.0rc1.tar.gz&lt;br /&gt;&lt;br /&gt;Essa é a versão 1.0RC1 do agente para Linux. Acredito que ela está&lt;br /&gt;praticamente pronta para ser disponibilizada publicamente - por isso é&lt;br /&gt;o Release Candidate 1.&lt;br /&gt;&lt;br /&gt;Algumas mudanças dessa pra última, são:&lt;br /&gt;&lt;br /&gt;- Criado script de instalação "install.sh" (não serve para&lt;br /&gt;atualização, apenas para a primeira instalação).&lt;br /&gt;&lt;br /&gt;- Melhor consistência nas mensagens de saída e interatividade com o usuário.&lt;br /&gt;&lt;br /&gt;- Melhor organização do código.&lt;br /&gt;&lt;br /&gt;- Agente irá entender a configuração "MACs Inválidos".&lt;br /&gt;&lt;br /&gt;- Agente irá entender quando uma determinada "etiqueta" da coleta de&lt;br /&gt;patrimônio for desativada.&lt;br /&gt;&lt;br /&gt;- Corrigidos outros bugs. (Ver bugzilla).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sugestões de metas para a próxima versão:&lt;br /&gt;(por favor, dêem palpite também)&lt;br /&gt;&lt;br /&gt;- Atualização automática&lt;br /&gt;&lt;br /&gt;- Coletar informações de placa de vídeo, etc&lt;br /&gt;&lt;br /&gt;- Coletar informações de "compartilhamentos" Samba e NFS.&lt;br /&gt;&lt;br /&gt;- Melhorar organização do código (argh).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Eu pessoalmente prefiriria, entretanto, começar a mexer no gerente.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Mais informações sobre o desenvolvimento em:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cetico.org/wiki"&gt;http://www.cetico.org/wiki&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://listas.cidades.gov.br/cgi-bin/mailman/listinfo/cacic-agente-linux"&gt;http://listas.cidades.gov.br/cgi-bin/mailman/listinfo/cacic-agente-linux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.governoeletronico.gov.br/cacic"&gt;http://www.governoeletronico.gov.br/cacic&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Yves Junqueira&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-112259324707757532?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/svUlNFegSpA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/112259324707757532/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2005/07/cacic-agente-para-linux.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/112259324707757532?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/112259324707757532?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/svUlNFegSpA/cacic-agente-para-linux.html" title="CACIC - Agente para Linux" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>1</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2005/07/cacic-agente-para-linux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MDSX84fip7ImA9WBdbGEo.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-111887947813711750</id><published>2005-06-15T20:49:00.000-03:00</published><updated>2005-06-15T20:51:18.136-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2005-06-15T20:51:18.136-03:00</app:edited><title>Delete print jobs in cups - cupsd</title><content type="html">To delete print jobs in cups in a Linux system you should use this command:&lt;br /&gt;&lt;br /&gt;# lprm &lt;job id&gt;&lt;br /&gt;&lt;br /&gt;Or, to cancel all jobs:&lt;br /&gt;&lt;br /&gt;# lprm -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-111887947813711750?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/KpBgR1vzCNk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/111887947813711750/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2005/06/delete-print-jobs-in-cups-cupsd.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111887947813711750?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111887947813711750?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/KpBgR1vzCNk/delete-print-jobs-in-cups-cupsd.html" title="Delete print jobs in cups - cupsd" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>4</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2005/06/delete-print-jobs-in-cups-cupsd.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QCSX07eCp7ImA9WBdbGEo.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-111887936829905537</id><published>2005-06-15T20:48:00.000-03:00</published><updated>2005-06-15T20:49:28.300-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2005-06-15T20:49:28.300-03:00</app:edited><title>list print jobs in cups or cupsd</title><content type="html">To list print jobs in cups, issue:&lt;br /&gt;&lt;br /&gt;# lpq -a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-111887936829905537?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/IzSvw0D_p7M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/111887936829905537/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2005/06/list-print-jobs-in-cups-or-cupsd.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111887936829905537?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111887936829905537?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/IzSvw0D_p7M/list-print-jobs-in-cups-or-cupsd.html" title="list print jobs in cups or cupsd" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>0</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2005/06/list-print-jobs-in-cups-or-cupsd.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYCQns6eyp7ImA9WBNXFEs.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-111887929378423167</id><published>2005-06-15T20:47:00.000-03:00</published><updated>2006-08-01T17:29:23.513-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2006-08-01T17:29:23.513-03:00</app:edited><title>tdb(/var/cache/samba/printing.tdb): rec_free_read bad magic 0x0 at offset=21104</title><content type="html">[2005/06/15 20:33:36, 0] tdb/tdbutil.c:tdb_log(531) tdb(/var/cache/samba/printing.tdb): rec_free_read bad magic 0x0 at offset=21104&lt;br /&gt;&lt;br /&gt;If you find something like this in your logs, and you can't print, just remove the file and restart samba.&lt;br /&gt;&lt;br /&gt;Visit my sponsors if you find this information and their ads useful hehe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-111887929378423167?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/9rOdyAAe208" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/111887929378423167/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2005/06/tdbvarcachesambaprintingtdb.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111887929378423167?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111887929378423167?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/9rOdyAAe208/tdbvarcachesambaprintingtdb.html" title="tdb(/var/cache/samba/printing.tdb): rec_free_read bad magic 0x0 at offset=21104" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>4</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2005/06/tdbvarcachesambaprintingtdb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYGSXs-eCp7ImA9WBdbEkg.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-111825412854401695</id><published>2005-06-08T15:03:00.000-03:00</published><updated>2005-06-08T15:08:48.550-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2005-06-08T15:08:48.550-03:00</app:edited><title>Jun  8 14:57:50  rinetd[21939]: accept(0): Socket operation on non-socket</title><content type="html">For the record.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Jun  8 14:57:50 &lt;host&gt; rinetd[21939]: accept(0): Socket operation on non-socket&lt;/host&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I had this syslog message filling my hard disk due to a configuration problem of rinetd.&lt;br /&gt;&lt;br /&gt;I was setting it to list in a IP address which was not set to the network interfaces. I usually setup many IP's for external interfaces in a host. I had disabled a certain IP for some time (ip addr del ..) and rinetd got crazy.&lt;br /&gt;&lt;br /&gt;Fix: check what IP it is trying to listen in.&lt;br /&gt;# /etc/init.d/rinetd stop&lt;br /&gt;&lt;br /&gt;# tail -f /var/log/syslog |less&lt;br /&gt;&lt;br /&gt;in another screen:&lt;br /&gt;&lt;br /&gt;# /etc/init.d/rinetd start&lt;br /&gt;&lt;br /&gt;You will see:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Jun  8 14:57:48 &lt;host&gt; rinetd[21939]: couldn't bind to address &lt;ip.ip.ip.ip&gt; port &lt;port&gt; (Cannot assign requested address)&lt;br /&gt;Jun  8 14:57:48 &lt;host&gt; rinetd[21939]: Starting redirections...&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Then just go and remove that reference in rinetd.conf and you're done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-111825412854401695?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/lrFDilsYaKE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/111825412854401695/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2005/06/jun-8-145750-rinetd21939-accept0.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111825412854401695?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111825412854401695?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/lrFDilsYaKE/jun-8-145750-rinetd21939-accept0.html" title="Jun  8 14:57:50 &lt;host&gt; rinetd[21939]: accept(0): Socket operation on non-socket" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>3</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2005/06/jun-8-145750-rinetd21939-accept0.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IBQno5eyp7ImA9WBBaFkk.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-111815819554949510</id><published>2005-06-07T11:40:00.000-03:00</published><updated>2007-01-24T11:32:33.423-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-24T11:32:33.423-02:00</app:edited><title>PF-Graph - Solução para análise de logs do Postfix</title><content type="html">&lt;span style="font-size:85%;"&gt;Estou desenvolvendo uma ferramenta para análise de logs do Postfix. O PF-Graph, além de gerar relatórios com base em remetentes ou destinatários (incluíndo busca por domínios), cria gráficos coloridos sobre o status do serviço.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Veja abaixo algumas screenshots:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://img212.echo.cx/my.php?image=pfgraph9lj.png" target="_blank"&gt;&lt;img alt="Free Image Hosting at www.ImageShack.us" src="http://img212.echo.cx/img212/2430/pfgraph9lj.th.png" border="0" /&gt;PF-Graph, mostrando o sumário de gráficos.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img279.echo.cx/my.php?image=pfgraph23dm.png" target="_blank"&gt;&lt;img alt="Free Image Hosting at www.ImageShack.us" src="http://img279.echo.cx/img279/4962/pfgraph23dm.th.png" border="0" /&gt;&lt;span style="font-size:85%;"&gt;Resultado de busca &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Entre os recursos do PF-Graph, incluem-se:&lt;br /&gt;&lt;br /&gt;- Capacidade de auditar todas as mensagens recebidas e enviadas em um ou mais servidor de e-mail, em tempo real.&lt;br /&gt;&lt;br /&gt;- Um daemon/agente rodando nos servidores de e-mail é responsável por coletar as informações em tempo real, e atualizar o banco de dados.&lt;br /&gt;&lt;br /&gt;- Capacidade de mostrar total de bytes trafegados para um usuário, domínio ou qualquer termo de busca(exige Amavisd-new ou Suriproxy).&lt;br /&gt;&lt;br /&gt;- Escrita em Perl, com integração nativa para MySQL, mas possível de se adaptar para outros bancos de dados, conforme a necessidade.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Assim que eu der uma "limpada" no código do PF-Graph, o mesmo será disponibilizado sob a licença GPL. Caso esteja interessado nessa ferramenta, deixe um comentário!&lt;br /&gt;&lt;br /&gt;Até mais!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-111815819554949510?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/f_VntNnxqOQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/111815819554949510/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2005/06/pf-graph-soluo-para-anlise-de-logs-do.html#comment-form" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111815819554949510?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111815819554949510?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/f_VntNnxqOQ/pf-graph-soluo-para-anlise-de-logs-do.html" title="PF-Graph - Solução para análise de logs do Postfix" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>10</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2005/06/pf-graph-soluo-para-anlise-de-logs-do.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIGQ3c7fip7ImA9WBNXEk0.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-111812494722339672</id><published>2005-06-07T03:13:00.000-03:00</published><updated>2006-07-29T17:22:02.906-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2006-07-29T17:22:02.906-03:00</app:edited><title>004 dk.eos.net.FtpError: Login incorrect.</title><content type="html">If you get this error in blogger, even if you are using blogspot.com, not FTP:&lt;br /&gt;&lt;br /&gt;&lt;div class="error" id="verboseStatus" style="display: block;"&gt;&lt;blockquote&gt;004  dk.eos.net.FtpError: Login incorrect. &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;You can fix it by cleaning your browser cache, or just using a different browser temporarily (ie &lt;-&gt; firefox).&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-111812494722339672?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/Pgbmw3pFuNg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/111812494722339672/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2005/06/004-dkeosnetftperror-login-incorrect.html#comment-form" title="13 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111812494722339672?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111812494722339672?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/Pgbmw3pFuNg/004-dkeosnetftperror-login-incorrect.html" title="004 dk.eos.net.FtpError: Login incorrect." /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>13</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2005/06/004-dkeosnetftperror-login-incorrect.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEICRHc4eyp7ImA9WxNTF0Q.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-111812320787993838</id><published>2005-06-07T02:18:00.001-03:00</published><updated>2009-08-20T16:29:25.933-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-20T16:29:25.933-03:00</app:edited><title>How to crack Windows Terminal Services 3 month trial</title><content type="html">HOW TO RESET WINDOWS TERMINAL SERVICES 3 MONTH TRIAL&lt;br /&gt;Warning: greyhat content.&lt;br /&gt;&lt;br /&gt;Thanks to a Microsoft article, I've found out that it is very easy to extend your Windows Terminal Services 3-month trial or experience time. It's so easy that I'm sure many administrators have done this in their own systems, while waiting for their managers or financial staff to buy the definitive licenses (not being hypocrite here).&lt;br /&gt;&lt;br /&gt;Following these instructions, you don't have to crack any program. You won't mess with your system. The magic is to only delete the licenses databases both in the server and the clients, and let windows re-create them for you.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;----&lt;br /&gt;&lt;br /&gt;Make sure you've installed "Terminal Services Licensing". By the way, this method only makes sense if you need to use Terminal Services in Application Mode, which is the one that requires licensing.&lt;br /&gt;&lt;br /&gt;The idea is quite simple.&lt;br /&gt;&lt;br /&gt;First, disconnect all users from the terminal. If you need to do this remotely, you can also disconnect yourself, and access the files remotely.&lt;br /&gt;&lt;br /&gt;Go to %WINDIR%\system32\lserver&lt;br /&gt;&lt;br /&gt;Notice the file TSLIC.edb. Rename it to tslic.old&lt;br /&gt;&lt;br /&gt;In every client computer, remove the CAL TS registry keys, located at:&lt;br /&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing&lt;br /&gt;&lt;br /&gt;Restart your server.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finally, if you need more information about how to crack terminal services, &lt;a href="http://support.microsoft.com/?id=839878"&gt;go check at Microsoft's web site.&lt;/a&gt; See the "Cause 2" steps. :-)&lt;br /&gt;&lt;br /&gt;Shouldn't MS improve the security for TS Licensing in the next versions of Windows (2003 with SP1 is also easy to "crack")?&lt;br /&gt;&lt;br /&gt;PS&gt; I am definitely against software piracy. I strongly believe that Microsoft should strength their anti-piracy policy. Only then they could theoretically lower their licensing prices. The biggest result, though, would be a huge increase of free software popularity. Only then we, FOSS proponents, would have the opportunity to prove our paradigm is superior (now I'm being hypocrite, I guess).&lt;br /&gt;&lt;br /&gt;UPDATE: Since Windows 2003, instead of following the complex process above, you can just switch to "Per User" mode. As long as you have a TS Licensing server up, it should work, even if you don't have license. If that's not the case please leave a comment below.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-111812320787993838?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/Pg1qaj82Vlg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/111812320787993838/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2005/06/how-to-crack-windows-terminal-services.html#comment-form" title="191 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111812320787993838?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111812320787993838?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/Pg1qaj82Vlg/how-to-crack-windows-terminal-services.html" title="How to crack Windows Terminal Services 3 month trial" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>191</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2005/06/how-to-crack-windows-terminal-services.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAFQH44fip7ImA9WBdbEU8.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-111812071103580682</id><published>2005-06-07T02:01:00.000-03:00</published><updated>2005-06-07T02:05:11.036-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2005-06-07T02:05:11.036-03:00</app:edited><title>New home: cetico.org</title><content type="html">Great.  As GoDaddy's prices are so low, I've decided to pay for a web hosting (so cheap!) and host this blog there.&lt;br /&gt;&lt;br /&gt;Unfortunately I've lost my old site's layout, so I'll have to start that from stratch. Argh. It's so painful to draw web sites. I'll see if Macromedia can give me hand (Fireworks, Dreamweaver, etc).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-111812071103580682?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/VI112Z_IGcE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/111812071103580682/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2005/06/new-home-ceticoorg.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111812071103580682?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111812071103580682?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/VI112Z_IGcE/new-home-ceticoorg.html" title="New home: cetico.org" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>1</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2005/06/new-home-ceticoorg.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMMR3s5fip7ImA9WBdbEUw.&quot;"><id>tag:blogger.com,1999:blog-7021327.post-111697027476938668</id><published>2005-05-24T18:12:00.000-03:00</published><updated>2005-06-07T01:11:26.526-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2005-06-07T01:11:26.526-03:00</app:edited><title>tail-nagios information and source code</title><content type="html">Hi.&lt;br /&gt;&lt;br /&gt;Some fellows from nagios-users list have requested more information about my solution to integrate nagios 2.0 with mysql, so here it is.&lt;br /&gt;&lt;br /&gt;Since nagios 2.0 doesn't have built-in support for mysql, we have to find another way to integrate this software with a custom interface that reads a database.&lt;br /&gt;&lt;br /&gt;A way to do that is to use service performance data (service_perfdata).&lt;br /&gt;&lt;br /&gt;You'll need to setup service_perfdata_file to a "log" of service perfomance data, and design a service_perfdata_file_template.&lt;br /&gt;&lt;br /&gt;In my case, I used:&lt;br /&gt;&lt;br /&gt;service_perfdata_file=/usr/local/nagios/var/service-perfdata&lt;br /&gt;service_perfdata_file_template=[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t&lt;br /&gt;$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$&lt;br /&gt;\t$SERVICEPERFDATA$\t$SERVICESTATETYPE$&lt;br /&gt;&lt;br /&gt;(singe line)&lt;br /&gt;&lt;br /&gt;Then, after restarting nagios, and if you don't forget to check permissions for that perdata file, nagios will start to append service check output to this file.&lt;br /&gt;&lt;br /&gt;The next step is to read this file and update a database as we want.&lt;br /&gt;&lt;br /&gt;In my case, I've designed a simple table that will list every server and service and their latest status combined in a "object" row.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&gt; describe status;&lt;br /&gt;+--------+--------------------------+------+-----+---------+-------+&lt;br /&gt; Field  Type  Null  Key  Default  Extra &lt;br /&gt;+--------+--------------------------+------+-----+---------+-------+&lt;br /&gt; objeto  varchar(45)   PRI   &lt;br /&gt; tipo  varchar(45)     &lt;br /&gt; status  varchar(45)     &lt;br /&gt; output  varchar(255)     &lt;br /&gt; time  int(16) unsigned  YES   NULL  &lt;br /&gt; hard  int(1) unsigned zerofill    0  &lt;br /&gt;+--------+--------------------------+------+-----+---------+-------+&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&gt; select * from status limit 1;&lt;br /&gt;+-----------------------+---------+--------+------------------------------------------------------+------------+------+&lt;br /&gt; objeto  tipo  status  output  time  hard &lt;br /&gt;+-----------------------+---------+--------+------------------------------------------------------+------------+------+&lt;br /&gt; adsl-router.LINK_ADSL  servico  OK  HTTP OK HTTP/1.0 200 OK - 1.113 second response time  1116971094  1 &lt;br /&gt;+-----------------------+---------+--------+------------------------------------------------------+------------+------+&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;"objeto" means "object" and "tipo" means "type" (unused, actually).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The script to read the logs and update the database is:&lt;br /&gt;&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;#!/usr/bin/perl -w&lt;br /&gt;&lt;br /&gt;# tail-nagios&lt;br /&gt;# v. 0.001&lt;br /&gt;# Yves Junqueira - yves.junqueira AT gmail.com&lt;br /&gt;# License: GPL&lt;br /&gt;&lt;br /&gt;use strict;&lt;br /&gt;&lt;br /&gt;use DBI;&lt;br /&gt;use File::Tail;&lt;br /&gt;&lt;br /&gt;my $driver = "mysql";&lt;br /&gt;my $user = "nagios";&lt;br /&gt;my $password = "mypass";&lt;br /&gt;my $database = "nagios";&lt;br /&gt;&lt;br /&gt;my $oldlogs = 0;&lt;br /&gt;my $verbose = 0;&lt;br /&gt;&lt;br /&gt;my $name = '/usr/local/nagios/var/service-perfdata';&lt;br /&gt;my $file = File::Tail-&gt;new(&lt;br /&gt;name =&gt; $name,&lt;br /&gt;interval =&gt; 3,&lt;br /&gt;adjustafter =&gt; 5,&lt;br /&gt;tail =&gt; -1&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;print "Tail Nagios\n";&lt;br /&gt;my $dsn = "DBI:$driver:dbname=$database";&lt;br /&gt;&lt;br /&gt;my $dbh =&lt;br /&gt;DBI-&gt;connect( $dsn, $user, $password, { RaiseError =&gt; 1, AutoCommit =&gt; 1 } )&lt;br /&gt;or die "could not connect $!";&lt;br /&gt;&lt;br /&gt;my $sth =&lt;br /&gt;$dbh-&gt;prepare(qq[select time, objeto from status order by time DESC LIMIT 1]);&lt;br /&gt;&lt;br /&gt;$sth-&gt;execute();&lt;br /&gt;&lt;br /&gt;my ( $lasttimestamp, $lastobjeto ) = $sth-&gt;fetchrow;&lt;br /&gt;&lt;br /&gt;$lasttimestamp = 0;&lt;br /&gt;$lastobjeto = 0;&lt;br /&gt;&lt;br /&gt;my $count = 0;&lt;br /&gt;my $nextok = 0;&lt;br /&gt;my $lastcommit = 0;&lt;br /&gt;&lt;br /&gt;my $sth2 = $dbh-&gt;prepare(&lt;br /&gt;qq[&lt;br /&gt;replace into status (objeto, tipo, status, output, time, hard) values&lt;br /&gt;(?,?,?,?,?,?)]&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;while ( defined( $_ = $file-&gt;read ) ) {&lt;br /&gt;&lt;br /&gt;#[SERVICEPERFDATA] 1111058462 roteador-cpd1 PING OK&lt;br /&gt;# 4.008 0.135 PING OK - Packet loss = 0%, RTA = 1.32 ms&lt;br /&gt;s/[\n\r]//g;&lt;br /&gt;&lt;br /&gt;my (&lt;br /&gt;$i, $time, $maquina, $servico, $status,&lt;br /&gt;$checkduration, $latency, $output, $etc, $statetype&lt;br /&gt;)&lt;br /&gt;= split /\t/;&lt;br /&gt;&lt;br /&gt;if ( ( $time &lt; $lasttimestamp ) &amp;&amp;amp; ( $oldlogs != 1 ) ) { #print "."; } else { if ( ( $time &gt; $lasttimestamp )  ( $oldlogs == 1 ) ) {&lt;br /&gt;&lt;br /&gt;my $hard = ( $statetype eq "HARD" ) ? 1 : 0;&lt;br /&gt;&lt;br /&gt;if ( $verbose &gt;= 1 ) { print "Insert this!\n"; }&lt;br /&gt;$sth2-&gt;execute( $maquina . "." . $servico,&lt;br /&gt;'servico', $status, $output, $time, $hard )&lt;br /&gt;or die "Argh $!";&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;if ( $verbose &gt;= 1 ) { print "Finish. Will commit\n"; }&lt;br /&gt;print "1\n";&lt;br /&gt;$dbh-&gt;commit()&lt;br /&gt;or print "oh no! $!\n"&lt;br /&gt;; # I don't even need this since AutoCommit is on. But someday I can turn it on...&lt;br /&gt;print "2\n";&lt;br /&gt;$sth-&gt;finish() or print "sth finish booo $!\n";&lt;br /&gt;print "3\n";&lt;br /&gt;$sth2-&gt;finish() or print "sth2 finish aaaaaaaaaa $!\n";&lt;br /&gt;&lt;br /&gt;print "4\n";&lt;br /&gt;$dbh-&gt;disconnect();&lt;br /&gt;print "end\n";&lt;br /&gt;&lt;br /&gt;#1;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;This script is not a daemon actually, but I run the following script in the crontab, that checks if it's running, and starts tail-nagios if necessary.&lt;br /&gt;&lt;br /&gt;-------------------- tnagios-monitor.sh -----------------------&lt;br /&gt;#!/bin/sh&lt;br /&gt;pidof -x tail-nagios 2&gt;&amp;1 &gt; /dev/null  (echo "Starting tail-nagios" ; /usr/local/bin/tail-nagios &amp;amp;)&lt;br /&gt;&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;A desirable /etc/crontab follows:&lt;br /&gt;&lt;br /&gt;*/5 * * * * root /usr/local/sbin/tnagios-monitor.sh&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well that's almost all you need.&lt;br /&gt;&lt;br /&gt;Sorry if it's a mess, but it serves my needs.&lt;br /&gt;&lt;br /&gt;If you need more information, or maybe is interested in the perl+apache user interface that shows services status, please let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021327-111697027476938668?l=i-admin.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IAdmin/~4/SZimjQBMo5U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://i-admin.blogspot.com/feeds/111697027476938668/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://i-admin.blogspot.com/2005/05/tail-nagios-information-and-source.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111697027476938668?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7021327/posts/default/111697027476938668?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IAdmin/~3/SZimjQBMo5U/tail-nagios-information-and-source.html" title="tail-nagios information and source code" /><author><name>Yves Junqueira</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_tH2T9rJWyg0/SwxGJoJ7wKI/AAAAAAAADz4/FL4NnODxmDc/s1600-R/AIbEiAIAAABECN3Gza2f-t6Q3wEiC3ZjYXJkX3Bob3RvKig5NTZjOTZhNjA4ZGEzYjQyYjhmYzY3MGU2MzFkYjBhY2EwYjAzYjQ0MAFyhZimgTMoi6K6nxFuQsm9qQu2gA" /></author><thr:total>0</thr:total><feedburner:origLink>http://i-admin.blogspot.com/2005/05/tail-nagios-information-and-source.html</feedburner:origLink></entry></feed>

