Delete Trac Tables

Aug 27
2009
for i in `sqlite3 trac.db '.tables'`; do sqlite3 trac.db "delete from $i"; done

Generate HTML with Javascript

Jul 29
2009

sample HTML file

< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xml:lang="en">
  <head>
    <script src="jquery.min.js" type="text/javascript"></script>
  </head>
  <body>
    <div id="container"></div>
    <script src="gen.html.js" type="text/javascript"></script>
  </body>
</html>

sample JavaScript file (should be named gen.html.js)

$("#container").css({margin:"5% auto 5% auto",width:"70%",'max-width':"70%"});
$("#container").append("<div id='header'>this is the header</div>");
$("#container").append("<div id='body'>this is the body</div>");
$("#container").append("<div id='footer'>this is the footer</div>");
 
$("#header").css({width:"100%",height:"33px",'padding-top':"10px",'text-align':"center",border:"1px solid #777",background:"#ddd"});
$("#header").after("<div style='clear:both'>&&</div>");
$("#body").css({width:"100%",height:"50%",'madrgin-top':"2%",border:"1px solid #777",background:"#eee"});
$("#body").after("<div style='clear:both'>&nbsp;</div>");
$("#footer").css({width:"100%",height:"33px",'padding-top':"10px",'text-align':"center",border:"1px solid #777",background:"#ddd"});
 
$("#body").append("<p>1. sub body</p>");
$("#body").append("<p>2. sub body</p>");
$("#body p:first").css("text-decoration", "underline");
$("#body p:last").css("text-decoration", "overline");

How to sort a file by its columns

Jun 04
2009
# sort by user id
ruby -a -F: -ne 'puts $F.values_at(2, 0).join("\t")' '/etc/passwd' | sort -g
 
# sort by user home directory
ruby -a -F: -ne 'puts $F.values_at(5, 0).join("\t")' '/etc/passwd' | sort -g
 
# sort by username
ruby -a -F: -ne 'puts $F.values_at(0).join("\t")' '/etc/passwd' | sort -g

How to edit the ReCaptcha look

May 01
2009

Take a look at recaptcha.js for DOM elements details.

Simple Ruby Text Parser

Mar 20
2009
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
filename = "sample records.txt"
file = File.open(filename)
data = []
record = {}
 
class MyParse
  Tokens = [
    ### change the regular expressions accordingly ###
    ### sale date, sale time, sale address,
    [/^Sale:\s*(\d+\/\d+\/\d+)\s+(\S+\s+\w\w)\s+(.+?)\s*$/,
        lambda { |m| m.to_a &&
            {"sale date"=>m[1], "sale time"=>m[2], "sale address"=>m[3] } }],
    ### seller name, seller time, seller address
    [/^Seller:\s*(\d+\/\d+\/\d+)\s+(\S+\s+\w\w)\s+(.+?)\s*$/,
        lambda { |m| m.to_a &&
            {"seller date"=>m[1], "seller time"=>m[2], "seller address"=>m[3] } }],
    ### Trustor: trustor
    [/^Trustor:\s+(.+?)\s*$/,
        lambda { |m| m.to_a && {"trustor"=>m[1] } }],
  ]
 
  def self.read(text)
    parse(text)
  end
 
  protected
  def self.parse(text)
    text.each do |line|
      Tokens.each do |token|
        if m = token.first.match(line)
          return token.last.call(m)
        end
      end
    end
    nil
  end
 
end
 
begin
  while line = file.readline
    if line.match(/^\s*$/)
      record = {}
      next
    end
    line.sub!("\r", "")
    if record = MyParse.read(line)
      data.push(record)
    end
  end
rescue EOFError => e
  puts "'#{filename}': #{e}"
ensure
  file.close
end
 
puts data.inspect
 
exit(0)

a quick remedy for ipod shuffle illnesses

Mar 18
2009

Symptoms: one green light flash, followed by two green ones.

Conclusion: the player is dead.

Remedy: download ipod reset utility, reset the player and

# change _path_to_the_device_ with the real path (see `dmesg|tail`)
 
mount /dev/_path_to_the_device_  /mnt && cd /mnt
 
# download rebuild_db.py from http://shuffle-db.sourceforge.net/
# copy 'rebuild_db.py' in /mnt and create the dirs' structure
 
python -c '
import os
os.makedirs("iPod_Control/iTunes")
os.makedirs("Music")
'
 
cd /mnt && cp ~/Music/*.mp3 Music
python rebuild_db.py
cd .. && umount

That’s it.

P.S. you can format an ipod device as many times as you like,
just follow the above procedure to reset it.

How to download an image from flickr

Mar 11
2009

I wasn’t able to download a photo from flickr. It happened to be 1px transparent image over the other. Here is a simple scaper in cases of such “protection”:

1
2
3
4
5
6
7
8
9
10
11
12
require 'rubygems'
require 'www/mechanize'
 
url = 'http://www.flickr.com/photos/46457493@N00/3162339409/in/set-72157612102050814/'
 
my_id = url.split("/")[-3]
agent  = WWW::Mechanize.new
page   = agent.get(url)
 
url   = page.search("//div[@id='photoImgDiv#{my_id}']/img").attr('src')
 
agent.get(url).save_as((File.basename(url)).split("?")[0])

Code refactoring

Feb 21
2009

An example (The Bible, Genesis 1)

1: In the beginning God created the heaven and the earth.



4: And God saw the light, that it was good: and God divided the light from the darkness.

… and God saw that it was good.

… and God saw that it was good.



and so on …

iptables – blocking incoming traffic

Feb 14
2009

This iptables config will block all incoming traffic, except from machines, identified by thier MAC addresses:

iptables -F INPUT

iptables -A INPUT -m mac—mac-source 00:3f:5f:ab:2c:7d -j ACCEPT

iptables -A INPUT -m mac—mac-source 00:1e:32:36:97:4a -j ACCEPT

iptables -A INPUT -m mac—mac-source 00:44:11:a5:1d:6d -j ACCEPT

# or by ip address:

#iptables -A INPUT -p tcp -s 1.1.1.1 -j ACCEPT

#iptables -A INPUT -p tcp -s 2.2.2.2 -j ACCEPT

#iptables -A INPUT -p tcp -s 3.3.3.3 -j ACCEPT

iptables -A INPUT -m state—state ESTABLISHED -j ACCEPT

iptables -A INPUT -s 127.0.0.1 -j ACCEPT

iptables -A INPUT -j REJECT

PS1 colors

Feb 14
2009

I like to see green prompt for userid > 0 and red for root, also the hostname and the history number of a command.

PS1="\[\e[32;1m\]\u\[\e[30;1m\]@\[\e[32;1m\]\H[\!]\W\[\e[30;1m\]\\$\[\e[0m\]"
PS1="\[\e[32;1m\]\u\[\e[30;1m\]@\[\e[32;1m\]\H[\!]\W\[\e[30;1m\]\\$\[\e[0m\]"

Calendar

September 2010
M T W T F S S
« Aug    
 12345
6789101112
13141516171819
20212223242526
27282930  

Tags