C++ GLib信号量

typedef struct GSem GSem;

struct GSem
{
    GCond *condition;
    GMutex *mutex;
    guint counter;
};

GSem *
g_sem_new (void)
{
    GSem *sem;

    sem = g_new (GSem, 1);
    sem->condition = g_cond_new ();
    sem->mutex = g_mutex_new ();
    sem->counter = 0;

    return sem;
}

void
g_sem_free (GSem *sem)
{
    g_cond_free (sem->condition);
    g_mutex_free (sem->mutex);
    g_free (sem);
}

void
g_sem_down (GSem *sem)
{
    g_mutex_lock (sem->mutex);

    while (sem->counter == 0)
    {
        g_cond_wait (sem->condition, sem->mutex);
    }

    sem->counter--;

    g_mutex_unlock (sem->mutex);
}

void
g_sem_up (GSem *sem)
{
    g_mutex_lock (sem->mutex);
    sem->counter++;
    g_cond_signal (sem->condition);
    g_mutex_unlock (sem->mutex);
}

Bash 从grep中排除一些目录

find . -name "*.html" \( -name 'dirFoo' -prune -o  -name 'dirBar' -prune \) | xargs grep -n "THE_PATH_YOU_ARE_LOOKING_FOR"

Ruby 基本没有注释的Crappy Binary Radix Trie

class Fixnum
    def to_b(l = 8)
        "0′" + self.to_s(2).rjust(l, "0")
    end
    def set?(i)
        if((self & (1 << i)) != 0)
            return true
        else
            return false
        end
    end

     def bdiff(x)
         ret = -1
         32.downto(0) do |i|
             if(self.set?(i) != x.set?(i))
                 ret = i
                 break
             end
         end
         ret
     end
end

class String
    def to_ip
        ip = 0
        split(".").each_with_index do |octet, index|
            ip |= (octet.to_i << ((3 - index)*8))
        end
        ip
    end
end

class SimpleTrie
    def initialize(width=32)
        @@node ||= Struct.new(:right, :left, :pos, :key, :value, :color)
        @root = @@node.new(nil, nil, width, 0, nil)
        @root.right = @root
        @root.left = @root
        @width = width
        @sz = 0
    end

    private

    def srch(key, limit=nil)
        cur = @root
        prev = nil

        while(((not prev) or (cur.pos < prev.pos)) and ((not limit) or cur.pos > limit))
            prev = cur
            if(key.set? cur.pos)
                cur = cur.right
            else
                cur = cur.left
            end
        end

        return cur, prev
    end

    public

    def []=(key, val)
        x, prev = srch(key)
        bit = key.bdiff(x.key)
        cur, prev = srch(key, bit)

        node = @@node.new(nil, nil, bit, key, val)

        if(key.set? bit)
            node.right = node
            node.left = cur
        else
            node.right = cur
            node.left = node
        end

        if(key.set? prev.pos)
            prev.right = node
        else
            prev.left = node
        end

        @sz += 1

        return val
    end

    def walk
        color = rand
        walker = lambda do |x, dir, tab|
            if(x.color != color)
                tab.times { print "  " }
                puts "#{ dir } #{ x.key } ( #{ x.key.to_b } ) @ #{ x.pos }"

                x.color = color

                walker.call(x.right, "-> ", tab+1)
                walker.call(x.left, "<- ", tab+1)
            end
        end

        walker.call(@root, ".   ", 0)
    end

    def [](key)
        res, p = srch(key)
        return res.value
    end
end

HTML 将样式和脚本附加到ID

<html>
	<head>
		<style> 
			#google {color: white; background: black}
		</style> 
	</head>
	<body>
		<a id="google" href="http://google.com/">google.com</a>
		<script type="text/javascript">
			document.getElementById("google").onclick = function() { return false; };
		</script>
	<body>
</html>

PHP 从MySQL查询循环

$sql = "SELECT * FROM table WHERE column = 1";
$result = mysql_query( $sql );

while( $fetch = mysql_fetch_array( $result ) ) {
	extract( $fetch, EXTR_OVERWRITE );
}

PHP PHP版本检查

if( phpversion() < '4.3.0' )
{
	...
}

SQL MySQL转储

mysqldump -h [server] -u [user] -p [dbname] > [file].sql

Bash 删除.svn

find . -name "*.svn" -exec rm -f -r {} \;

HTML 美国使用的50种最常用语言 - 在线表格的下拉列表

<select>
    <option>Spanish</option>
    <option>French</option>
    <option>German</option>
    <option>Italian</option>
    <option>Chinese</option>
    <option>Tagalog</option>
    <option>Polish</option>
    <option>Korean</option>
    <option>Vietnamese</option>
    <option>Portuguese</option>
    <option>Japanese</option>
    <option>Greek</option>
    <option>Arabic</option>
    <option>Hindi (urdu)</option>
    <option>Russian</option>
    <option>Yiddish</option>
    <option>Thai (laotian)</option>
    <option>Persian</option>
    <option>French Creole</option>
    <option>Armenian</option>
    <option>Navaho</option>
    <option>Hungarian</option>
    <option>Hebrew</option>
    <option>Dutch</option>
    <option>Mon-khmer (cambodian)</option>
    <option>Gujarathi</option>
    <option>Ukrainian</option>
    <option>Czech</option>
    <option>Pennsylvania Dutch</option>
    <option>Miao (hmong)</option>
    <option>Norwegian</option>
    <option>Slovak</option>
    <option>Swedish</option>
    <option>Serbocroatian</option>
    <option>Kru</option>
    <option>Rumanian</option>
    <option>Lithuanian</option>
    <option>Finnish</option>
    <option>Panjabi</option>
    <option>Formosan</option>
    <option>Croatian</option>
    <option>Turkish</option>
    <option>Ilocano</option>
    <option>Bengali</option>
    <option>Danish</option>
    <option>Syriac</option>
    <option>Samoan</option>
    <option>Malayalam</option>
    <option>Cajun</option>
    <option>Amharic</option>
</select>

HTML Web表单的肤色下拉列表

<select>
    <option>Albino</option>
    <option>Black</option>
    <option>Dark</option>
    <option>Yellow</option>
    <option>Dark Brown</option>
    <option>Fair</option>
    <option>Light</option>
    <option>Light Brown</option>
    <option>Medium</option>
    <option>Medium Brown</option>
    <option>Olive</option>
    <option>Ruddy</option>
    <option>Sallow</option>
    <option>Other</option>
</select>