四月 22, 2008
» [tips] poorman's uudecode

For those who cursed by ash and awk, welcome to 80's !

now you can send everything in ASCII -- hooray!!

#!/bin/sh
#
# uudecode.sh
#
# Author: Ximian, Inc.
#
# Modified: by timchen119 at http://timchen119.blogspot.com from Ximian go-gnome's GPL code
#
# Usage: uudecode.sh encodedfile > decodefile
#
# License: GPL
#
# Download: http://kalug.linux.org.tw/~tim/gpl/uudecode.sh
#
# Ref: http://ftp.cesnet.cz/pub/ximian-gnome/installers/go-gnome
#
# The Ximian Desktop Pre-Installer
#
# Comments to:
# distribution@ximian.com
#
# Copyright 2000-2001, Ximian, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307,
# USA.
#
#
# This script and its embedded programs are distributed with
# absolutely, positively NO WARRANTY WHATSOEVER, without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. The author and Ximian, Inc. take no responsibility for
# the consequences of running this script.
#
#

CACHEDIR=/tmp
_awk="awk"

# poor man's uudecode
_awkprog="$CACHEDIR/uudecode.awk"
# encoded file
_uudecode_in=$1

#awk-script
cat > ${_awkprog} <<EOF
function x(l, p) {
n="!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_";
return index(n,substr(l,p+1,1));
}
/^begin/ {}
/^[^be]/ {
len = x(\$0, 0);
for (i=1;len>0;i+=4) {
a=x(\$0,i);b=x(\$0,i+1);c=x(\$0,i+2);d=x(\$0,i+3);
printf("%c",a*4+b/16);
if (len>1) {
printf("%c",b*16+c/4);
if (len>2) {
printf("%c",c*64+d);
}
}
len-=3;
}
}
EOF
${_awk} -f ${_awkprog} < ${_uudecode_in}
rm -f ${_awkprog}


get uudecode.sh at here.

九月 29, 2007
» BSD版權真正的敵人是GPL吗?

我下的果然是聳動的標題 :X

不過這陣子來Theo de Raadt (正反評價兩極化的openbsd hacker)對GPL的抨擊可以說是將沈睡已久的聲音再吶喊出來.
關於這件八卦有興趣的人其實可以在網上搜索一下,應該可以查到不少消息. 所以我只發表一下我無聊的感想.

一直以來信仰GPL的人們對於BSD license的評價就是以BSD-like版權放出的程式有機會被大企業給偷盜,然後變成close sourced的商業軟體. 所以最好自由軟體都使用GPL license才不會有問題.

簡而言之以GPL信仰者的觀點就是:

GPL --> 正義的一方
商業公司,closed source --> 邪惡的一方
BSD --> 爛好人,鄉愿

不過以BSD版權使用者的觀點來看, 似乎就不是這樣了.

大部份使用BSD版權釋出的軟體, 在實務上即使是被公司當作是closed source軟體販賣, 這些公司經常仍會回報patch給原本的團隊或作者. 此外, 增加使用的人數並真實的在商業上運用也有助於程式的測試改進.

所以公司或商業化的軟體 就算沒有幫助 基本上對BSD版權的危害並不如GPL的信仰者們所說的大.

而如果有人將軟體做了一些改進, 並用GPL版權釋出, 結果會變成怎樣呢?

今天舉個例子,比如說如果某個原本是用BSD版權開發的blog軟體,被某個GPL信仰者做了一些改進,並且改用GPL版權釋出. 這會造成原本都是自由軟體的使用族群分散之外, 另外如果新的修正是基於GPL版本的blog做的修正, 原本的BSD軟體就不再能拿回來用了. 因為新的修正會受到GPL的影響. 不得不變成一個GPL patch.(任何基於GPL衍生的程式碼均得為GPL授權), 知道這樣的嚴重性了吧, 也就是說GPL比封閉軟體還狠, 作完自己的修正之後不僅要奪走BSD版權的軟體現在的顧客,還要剝奪未來原本BSD可參考改進的程式碼, 變成只剩GPL-only授權釋出的程式有做修正. (當然 可以請求每個patch的原作者再用BSD版權釋出,然後再基於這個patch再做修改,不過在實務上似乎很少能做到如此)

Theo事件的導火線也在於此, linux people將BSD/GPL dual license的driver版權宣告拿掉, 然後re-license成GPL. 拿掉別人原本的版權宣告沒有任何問題吗? GPL people認為是沒有的, 總而言之 為了GPL people相信的正義 是可以犧牲BSD people的, 即使以後所有在linux上的driver的code patch都不得不為GPL, BSD版權的人們一點都不能拿來用也無所謂, 非我族類, 其心必殊.....

所以說... 就算theo過去怎樣怎樣 這次我覺得他講的倒有點道理... gpl 信仰者們, 也許BSD對於你們是異教徒, 但, 所謂自由軟體的正義真的是只有一條道路吗? 刪掉別人的雙版權宣告, 然後改成GPL only 真的是那麼的正義那麼理所當然吗? 我想值得再思考思考.

biggo.com.tw

A Django site.