2009年9月28日

tor

http://docs.google.com/View?id=dfc32596_290ffjb68dt

翻墙还需搭桥——Portable Tor设置特别说明

Portable Tor的下载地址:http://bit.ly/USOkd

下载之后双击执行,会要求你指定一个目录,将其压缩包内的文件释放到指定目录中。

解压缩完毕之后双击执行PortableTor.exe,则可看到以下程序窗口:

(或下载Vidalia Bundle安装版:http://ifile.it/xvcf3zj)




去掉"启动时显示此窗口"之前的对号,省得以后开机自动运行该程序的时候总是显示这个窗口……

按"设定"按钮,就可以看到以下对话框:



在"常规"标签中,可以去掉"Start a proxy application when Vidalia starts"之前的对号(当然有人不在意这个)……



对于国内用户这一步最重要

"网络"标签中这一页对话框中,在"我的ISP阻挡了对Tor网络的连接"之前打勾,然后就可以看到"Bridge Settings",可以为Tor添加Bridge。

bridges@torproject.org发一封邮件(最好使用gmail邮箱,没有的话就最好注册一个),内容为:"get bridges"(邮件写不写标题都可以),几秒钟之内,你就会收到一封含有bridge list(一般是三个)的邮件,比如,其中有这样的内容:


[This is an automated message; please do not reply.]

Here are your bridge relays:

bridge 92.41.50.141:443
bridge 83.226.198.100:9443
bridge 69.60.117.34:9001


把这三行分别拷贝粘贴到文字输入框中,然后点击右边标有绿色加号的按钮即可。



由于必须有bridge才可以正常使用tor,所以,这一项中,现在还只能选择"Run as a client only"……

至此,设定完毕,关闭此对话框,在主窗口中启动tor,一会儿就连接上了。而后,还可以查看Tor网络地图,看看你现在连上的tor中转站都在地球上的什么位置……



如果你恰好喜欢使用Firefox,那么请下载这个定制版:http://ifile.it/ay1zgp3

解压缩之后,Mozilla Firefox 3的目录下有一个tor目录,里面的执行文件就是Tor Portable,按照以上方式设置即可。该定制版的Firefox已经安装了FoxyProxy插件,默认已经为Youtube、Facebook、Twitter设定了"自动通过Tor访问"……

Firefox究竟好在哪里,请查阅这个链接的内容:http://bit.ly/4G4GAn

分享自由

当成功连接Tor(表现为主界面中的洋葱头变绿了)之后,就可以将自己的机器也变成bridge。

  1. 停止Tor服务(在主界面中按"Stop Tor"按钮);
  2. 点击"设置中继服务器"按钮;
  3. 在"Sharing"标签页中选择第三项"帮助用户访问Tor网络……";
  4. 在"网络"标签中,把"我的ISP阻挡了对Tor网络的连接"之前的对号去掉;
  5. 点击"确定"按钮关闭对话框;
  6. 退出Vidalia控制面板(记得也要在任务托盘中退出"Privoxy"程序),而后重新启动Vidalia(就是重新运行PortableTor.exe)——这时Windows可能会跳出一个对话框要求你为Tor程序解除防火墙禁止规则,确认即可。
  7. 成功连接Tor之后,点击"设置中继服务器"按钮,就可以看到对话框最低端"Let others access your bridge by giving them this line:"之下多了一行代码
    (例如:***.***.***.***:9001 0B8C4718CA87DA97C0673D3F73AAAD6FD80C953A)如下图所示:


这时,你的计算机也成了Tor网络中的一个bridge。你可以把"bridge ***.***.***.***:9001"这行代码(无需后面那一长串数字字母构成的字符串)拷贝粘贴给你的那些无法正常访问Tor的朋友,让他按照之前介绍的方法添加到他的网桥列表中,他就可以正常访问Tor了——因为他也有bridge了,而后他也可以将自己的机器变成bridge……如此生生不息。




2009年9月16日

被雷得外焦内嫩 - 我爱我的祖国各地群众自发朗诵



新白娘子传奇之洞房花烛版:

山东快书版:

伦敦音版:

绵羊音:

京剧版:

变形金刚版:

大师兄版:

杭州话版:

外星人版:

生产队版:  

山东版:

混搭版:

电视购物咆哮版:

小沈阳、葛优、易中天以及唐僧御弟:

吟诗事件记录曲:

超级玛丽版:

猥琐欠抽版:

18X:

2009年9月6日

醉舟网开发笔记

一、网址跳转
以下是.htaccess全文:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.zzhou\.net$ [NC]
RewriteRule ^(.*)$ http://zzhou.net/$1 [R=301,L]
RewriteRule ^(\w+)/(\w+)$ view.php?user=$1&sub=$2
RewriteRule ^(\w+)$ view.php?user=$1&sub=home
RewriteRule ^(\w+)/$ view.php?user=$1&sub=home

实现以下功能:
1、将www.zzhou.net自动跳转到zzhou.net


二、mysql字符集问题及其它
1、MySQL 字符集: UTF-8 Unicode (utf8)
2、建表是设定字符集utf8_unicode_ci,字段字符集为utf8_general_ci
3、要读写相关UTF8字段时:
    mysql_query("set names 'utf8' ");  
    mysql_query("set character_set_client=utf8");  
    mysql_query("set character_set_results=utf8");
    mysql_query("set character_set_connection=utf8");
4、设置自增变量
  先建表,然后修改结构,在AUTO_INCREMENT一项打勾。


三、表单检查
  <FORM ID='fm1' ACTION='adduser2.php' METHOD='post'> //将表单提交给adduser2.php
    用户名(英文与数字组合): <INPUT TYPE='TEXT' ID='uname' NAME='username' SIZE='20'>
<BR /><BR />
密码:       <INPUT TYPE='PASSWORD' ID='p1' NAME='pwd' SIZE='20'><BR /><BR />
重输入密码: <INPUT TYPE='PASSWORD' ID='p2' NAME='pwd2' SIZE='20'><BR /><BR />
昵称(可中文): <INPUT TYPE='TEXT' NAME='nick' SIZE='20'><BR /><BR />
图片地址: <INPUT TYPE='TEXT' NAME='pp' SIZE='80'><BR /><BR />
描述一下自己: <BR /><BR />
<TEXTAREA NAME="desc" COLS="80" ROWS="10"></TEXTAREA><BR /><BR />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<INPUT TYPE='BUTTON' NAME='sub' SIZE='30' VALUE='提  交' onClick='checkinput()'><BR /><BR /> //提交前先执行checkinput()
  </FORM>

  <script language="javascript">
    function checkinput()
{
 var flag1=/^[a-zA-Z0-9]{1,20}$/;  
 var tmp='';
 var ff=true;
      if (!flag1.exec(document.getElementById('uname').value)) //检查用户名输入有效性
 {
tmp='用户名只能是英语或数字, 长度1-20位!\n';
ff=false;
 }
 else
 {
ff=true;
 }
      var pwd=document.getElementById('p1').value;
 var pwd2=document.getElementById('p2').value;
 if (pwd !== pwd2)
 {
tmp=tmp+'两次输入的密码不一致!';
ff=false;
 }
 else
 {
 }  
 if (ff==true)
 {
   document.getElementById('fm1').submit(); //全部检查完结,则提交表单
 }
 else
 {
   alert (tmp);
 }
}

  </script>

从表单得到数据:
$user = $_POST['username']; 

在adduser2.php进一步检查用户名是否重复,如重复则提示信息将返回表单页面:
$tmp = "用户".$user2."已存在!";
$tmp = "<script language=javascript>alert ('" . $tmp . "')</script>";
echo $tmp;
echo ("<script language=javascript>window.history.go(-1);</script>"); 


五、建立SQL连接
  $link=mysql_connect("ip address","username","password"); //connect to mysql
  mysql_select_db('db name'); // connect to db  
  mysql_query("set names 'utf8' ");  
  mysql_query("set character_set_client=utf8");  
  mysql_query("set character_set_results=utf8");
  mysql_query("set character_set_connection=utf8");

  查询具体数据:
  $sql = "SELECT * FROM tb_list"; // select sql
  $result = mysql_query($sql);
  while ($user_data = mysql_fetch_array($result))  // get data from dataset array
  {
    $sub = $user_data['fl_subdomain']; // get 1 single data
  }

  检查结果集是否为空:
  $result = mysql_query($sql);
  $i = mysql_num_rows($result);
  if ($i == 0): //有数据

mysql_close($link);//关闭连接


六、cookie
设置cookie:
setcookie('usrid',(string) $userid);
setcookie('usr',$user);
setcookie('pwd',$pwd);

清除cookie:
  setcookie('usrid', "", time() - 3600);
  setcookie('usr', "", time() - 3600);
  setcookie('pwd', "", time() - 3600);  


七、根据查询结果创建动态元素
用类似document.getElementById('button_" . $sub . "').value == '显示'的方法创建动态java script脚本,然后用document.getElementById属性获得相应对象,修改相应的属性。

输入新在线文档的名称:

一、网址跳转
以下是.htaccess全文:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.zzhou\.net$ [NC]
RewriteRule ^(.*)$ http://zzhou.net/$1 [R=301,L]
RewriteRule ^(\w+)/(\w+)$ view.php?user=$1&sub=$2
RewriteRule ^(\w+)$ view.php?user=$1&sub=home
RewriteRule ^(\w+)/$ view.php?user=$1&sub=home

实现以下功能:
1、将www.zzhou.net自动跳转到zzhou.net


二、mysql字符集问题及其它
1、MySQL 字符集: UTF-8 Unicode (utf8)
2、建表是设定字符集utf8_unicode_ci,字段字符集为utf8_general_ci
3、要读写相关UTF8字段时:
    mysql_query("set names 'utf8' ");  
    mysql_query("set character_set_client=utf8");  
    mysql_query("set character_set_results=utf8");
    mysql_query("set character_set_connection=utf8");
4、设置自增变量
  先建表,然后修改结构,在AUTO_INCREMENT一项打勾。


三、表单检查
  <FORM ID='fm1' ACTION='adduser2.php' METHOD='post'> //将表单提交给adduser2.php
    用户名(英文与数字组合): <INPUT TYPE='TEXT' ID='uname' NAME='username' SIZE='20'>
<BR /><BR />
密码:       <INPUT TYPE='PASSWORD' ID='p1' NAME='pwd' SIZE='20'><BR /><BR />
重输入密码: <INPUT TYPE='PASSWORD' ID='p2' NAME='pwd2' SIZE='20'><BR /><BR />
昵称(可中文): <INPUT TYPE='TEXT' NAME='nick' SIZE='20'><BR /><BR />
图片地址: <INPUT TYPE='TEXT' NAME='pp' SIZE='80'><BR /><BR />
描述一下自己: <BR /><BR />
<TEXTAREA NAME="desc" COLS="80" ROWS="10"></TEXTAREA><BR /><BR />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<INPUT TYPE='BUTTON' NAME='sub' SIZE='30' VALUE='提  交' onClick='checkinput()'><BR /><BR /> //提交前先执行checkinput()
  </FORM>

  <script language="javascript">
    function checkinput()
{
 var flag1=/^[a-zA-Z0-9]{1,20}$/;  
 var tmp='';
 var ff=true;
      if (!flag1.exec(document.getElementById('uname').value)) //检查用户名输入有效性
 {
tmp='用户名只能是英语或数字, 长度1-20位!\n';
ff=false;
 }
 else
 {
ff=true;
 }
      var pwd=document.getElementById('p1').value;
 var pwd2=document.getElementById('p2').value;
 if (pwd !== pwd2)
 {
tmp=tmp+'两次输入的密码不一致!';
ff=false;
 }
 else
 {
 }  
 if (ff==true)
 {
   document.getElementById('fm1').submit(); //全部检查完结,则提交表单
 }
 else
 {
   alert (tmp);
 }
}

  </script>

从表单得到数据:
$user = $_POST['username']; 

在adduser2.php进一步检查用户名是否重复,如重复则提示信息将返回表单页面:
$tmp = "用户".$user2."已存在!";
$tmp = "<script language=javascript>alert ('" . $tmp . "')</script>";
echo $tmp;
echo ("<script language=javascript>window.history.go(-1);</script>"); 


五、建立SQL连接
  $link=mysql_connect("ip address","username","password"); //connect to mysql
  mysql_select_db('db name'); // connect to db  
  mysql_query("set names 'utf8' ");  
  mysql_query("set character_set_client=utf8");  
  mysql_query("set character_set_results=utf8");
  mysql_query("set character_set_connection=utf8");

  查询具体数据:
  $sql = "SELECT * FROM tb_list"; // select sql
  $result = mysql_query($sql);
  while ($user_data = mysql_fetch_array($result))  // get data from dataset array
  {
    $sub = $user_data['fl_subdomain']; // get 1 single data
  }

  检查结果集是否为空:
  $result = mysql_query($sql);
  $i = mysql_num_rows($result);
  if ($i == 0): //有数据

mysql_close($link);//关闭连接


六、cookie
设置cookie:
setcookie('usrid',(string) $userid);
setcookie('usr',$user);
setcookie('pwd',$pwd);

清除cookie:
  setcookie('usrid', "", time() - 3600);
  setcookie('usr', "", time() - 3600);
  setcookie('pwd', "", time() - 3600);  


七、根据查询结果创建动态元素
用类似document.getElementById('button_" . $sub . "').value == '显示'的方法创建动态java script脚本,然后用document.getElementById属性获得相应对象,修改相应的属性。