Monday, August 1, 2011

实现分享到各大SNS的代码

为了寻求简便,在和炫仔定制UChome的时候想把内容分享到各大的SNS和微博上,所以找了一圈,最后使用分享条来做,http://www.sharebar.cn/ ,具体我用了图标式分享。
当然,修改一下UChome的代码,在ROOT/template/default/space_blog_list.htm 中的64行左右和ROOT/template/default/space_blog_view.htm 的第20行左右,分别加入代码,代码内容为


<div>
<!-- JiaThis Button BEGIN -->
<div id="jiathis_style_32x32">
<a class="jiathis_button_tsina"></a>
<a class="jiathis_button_tqq"></a>
<a class="jiathis_button_renren"></a>
<a class="jiathis_button_tsohu"></a>
<a class="jiathis_button_douban"></a>
<a class="jiathis_button_qzone"></a>
<a class="jiathis_button_googlereader"></a>
<a class="jiathis_button_buzz"></a>
<a class="jiathis_button_feixin"></a>
<a class="jiathis_button_douban"></a>
<a class="jiathis_button_twitter"></a>
<a class="jiathis_button_fb"></a>
<a class="jiathis_button_follow5"></a>
<a class="jiathis_button_kaixin001"></a>
<a href="http://www.jiathis.com/share" class="jiathis jiathis_txt jtico jtico_jiathis" target="_blank"></a>
</div>
<script type="text/javascript" src="http://v2.jiathis.com/code/jia.js" charset="utf-8"></script>
<!-- JiaThis Button END -->
</div>

然后就可以实现分享的功能了。

以上是一种方法,当然还有一种更加简单的,就是在ROOT/template/default/footer.htm 中的第14行加入以下代码:

<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?btn=r3.gif" charset="utf-8"></script>
这是用来实现侧边栏的分享。以上两种均可以

PHP 下 CURL 通过 POST 提交表单失败的原因之一与解决办法

前几天在学习使用 CURL 时遇到一个问题:在 a.php 中以 POST 方式向 b.php 提交数据,但是 b.php 下就是无法接收到数据,而 CURL 操作又显示成功,非常诡异。后经多方查找,在某个网友的博客中得到了启发。原来,“传递一个数组到CURLOPT_POSTFIELDS,cURL会把数据编码成 multipart/form-data,而然传递一个URL-encoded字符串时,数据会被编码成 application/x-www-form-urlencoded。
”,而和我一样对 CURL 不太熟悉的人在编写程序时,代码往往是下面的样子:
$data = array( 'Title' => $title, 'Content' => $content, 'ComeFrom' => $comefrom ); 
curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, false); 
curl_setopt($ch, CURLOPT_URL, 'http://example.com/b.php'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
 curl_exec($ch);
也就是将所要提交的数据以数组的形式通过 POST 发送,而这样就会导致 CURL 使用“错误”的编码“multipart/form-data”,其效果相当于我们直接以“<form method="post" action="b.php" enctype="multipart/form-data">”这样的表单来完成操作,大家可以试试,这时的“b.php”是无论如何也无法通过 $_POST 来接收数据的。
所以,正确的做法应该是将上述范例代码中的 $data 由数组变为经 urlencode() 编码后的字符串连接,类似:
$data = 'Title=' .urlencode($title) . '&Content=' .urlencode($content) . '&ComeFrom=' .urlencode($comefrom);
这样就可以了。

注意:两种发送编码格式的区别,"multipart/form-data" 是把表单设置为MIME编码,目的是用来传输二进制文件的,若想上传文件,必须用这个编码。但是普通的url数据request使用的是“application/x-www-form-urlencoded” 格式, 所以如果传普通数据用2进制格式,对方就无法得不到值了。所以特别注意应该将发送请求的编码确定。

顺便再记录一下echo和print_r()的区别,一般总是用echo来输出一个变量,比如
echo $data;
echo  " i am a fool!!!";
echo主要用来输出字符串,或者变量,不能用于直接输出数组

print_r()是一个函数,专门用来直接输出数组的,比如
print_r($array);     他会按照一定的格式,把数组的标号和内容打印出来。

php和html中实现页面重定向和窗口关闭的一些方法

首先说PHP中实现重定向
1、header("location: http://www.xiaonei.com");
2、echo "<script> window.location.href='www.xiaonei.com'</script>";
3、内嵌html的方法,echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=index.php\">"; (此方法也是晚上看的,没有试过还。。。)

在记录一下HTML中的页面的刷新、关闭和重定向
例如写一个按钮
<input onclick=window.close() type=“button” value=“关闭”>             用来关闭当前窗口
<input onclick=window.location.reload() type="button">                 刷新
<input onclick="javascript: window.location.href='http://www.xiaonei.com' ">

Ubuntu下安装vpn (自己买的)

当然,这个是自己买的vpn,也是openVPN的结构,也许是师哥(他卖的)配置不同吧。
1、下载了安装包后,需要安装openssl或者libssl-dev
sudo apt-get install opensll  或者
sudo apt-get install libssl-dev
2、看是否安装了lzo,通常ubuntu都不自带貌似。。。。
去LZO官网下载,我下的是LZO-2.05,然后解压编译安装
3、最后再进入vpn源代码目录编译安装vpn。OK!

Linux下使用c编写程序调用mysql,缺少mysql.h头文件

 这个问题也是最近发现的。mysql好的地方不是一点半点,配合php,其他的数据库用程序操作的话怎么还需要个开放接口来连接数据库,什么jdbc,odbc,ado等等,php访问直接写,c访问的话直接要个头文件就ok了,呵呵,不过在当时做Windows蜜罐的时候,mysql安装之后就在安装目录里有include文件夹,里面直接都是一堆可以用的头文件,这个多好。开始做Linux版本的时候发现mysql安装后竟然哪里都没有头文件!擦。。。。
       后来几经寻找,原来在linux里安装的mysql是有client和server两个包,通常如果是集成的安装,应该是两个桶装了,这个对于正常的WEB开发没有什么问题(因为用php)。但是如果想用C来调mysql的函数,需要另外一个包,就是libmysqlclient16-dev,这个是mysql的开发环境包,算是一个辅助的吧。16是对照着不同的mysql版本来对应的,也有15,,14等,这个需要网上查对应表了。我的mysql是5.1.48,所以安装
sudo apt-get install libmysqlclient16-dev,然后到目录  usr/include/mysql 里面都是头文件啦!!!

Linux下安装LAMP环境

哎,由于本人vpn在ipv4环境下要用代理,上着blogger太麻烦了,最近又在重新整理linux的web服务器环境,杂七杂八东西太多,所以先在人人上发了总结,现在一次性迁移。。。。。。

拿到新装好的ubuntu(本人喜欢10.04),安装LAMP环境有很多种方法,这里主要提供三个一键安装方法
1、使用新立得软件包。(在ubuntu 10.10版本之后就没有分组标记软件包的选择了。所以还是10.04方便点哈)
系统 ->系统管理 ->新立得软件包管理器 ->编辑 ->使用任务标记分组软件包 ->LAMP Server(勾选 )->确定 ->返回到上一个窗口点击应用 ( System->Administration->Synaptic Package Manager->Edit->Mark packages by Task->LAMP Server->OK)。然后系统会自动下载安装 lamp环境软件包,几分钟就下载搞定。安装过程中会要求设置MySQL root帐号的密码,设置好了记住。另外当 Ubuntu系统升级时 lamp环境组件也会同时更新到最新版本。
2、命令行
sudo apt-get update
sudo apt-get install tasksel
sudo tasksel
3、另一种命令行
sudo  apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql

以上三种都是不需要自己的配置,会自动安装好。当然也可以下载XMAPP集成环境包安装。剩下的就是分开来自己编译安装apache、php、mysql了,不再细说。
安装好后,可以顺便装个phpmyadmin,对于不大喜欢命令行操作数据库的童鞋很方便。
sudo apt-get install phpmyadmin
装phpmyadmin  这里要注意,比如安装的www目录在/var/www,用命令:sudo ln -s /usr/share/phpmyadmin /var/www,来创造一个指向phpmyadmin的软连接,即可在web目录下访问phpmyadmin了。在浏览器地址栏中打开ttp://localhost/phpmyadmin
让apache支持.htm .html .php
sudo gedit /etc/apache2/apache2.conf
在文件后面加上
AddType application/x-httpd-php .php .htm .html

各种服务的开启
重启 apache sudo /etc/init.d/apache2ctl restart
重启 mysql sudo /etc/init.d/mysql restart
配置 php.ini sudo gedit /etc/php5/apache2/php.ini
配置 apache2.conf sudo gedit /etc/apache2/apache2.conf

Dropbox邀请链接+终极扩容方法(转自北邮人BBS)

国内网盘很多,但是同类服务中我还是更推荐国外的。毕竟用户数、技术水平、稳定性上都更胜一筹。 

邀请地址:http://db.tt/QSXRISM(用这个地址注册,你会比普通注册多出250M,我也会扩容250M,对大家都有利哈!) 

别忘了在hosts文件中加上这样一条: 
174.36.30.71 www.dropbox.com 



附上注册后的终极扩容方法:源地址 http://url.cn/2TsqKD 


Dropbox增容方法总结 

作者:老杨 来源:http://laoyang.info/dropbox-increase-storage 

1.完成dropbox主页里面的get started里面的5个任务,增加250MB 

2.在https://www.dropbox.com/free 上完成和facebook/twitter的连接任务,增加768MB 

3. 邀请好友,每邀请一个好友可以增加250MB的容量,上限是8GB(32位),如果你找不到这么多好友的话,不妨试试虚拟机。(我见过的最NB 的发放邀请的方法是在水木上发一篇帖子,题目是“发放Google网盘内测邀请”,无数小白中招,当然我也回复邀请了几个……) 

4.如果你有一个edu邮箱的话(有些edu邮箱可以免费申请),在https://www.dropbox.com/edu 提交你的edu邮箱验证,你的邀请容量就可以翻倍,也就是每邀请一个好友增加500MB的容量,上限变为16G(32位)。这一条和上一条没有时间先后的限制,先做哪个都可以 

5.最近Dropbox在搞活动,完成一系列任务就可以增容1G。 

活动攻略(来自http://www.fatwallet.com/forums/hot-deals/1066357/): 

Step 1 
访问 https://www.dropbox.com/dropquest2011 开始参加活动 
Step 2 
访问 https://www.dropbox.com/dropquest2011/D 5305404/18681 = 284 
Step 3 
访问 http://forums.dropbox.com/topic.php?id=284 
Step 4 
下载 http://dl.dropbox.com/u/211024/Step4.zip 
Step 5 
上一步的解压密码为huskies 
Step 6 
完成 http://www.dropbox.com/dropquest2011/r 给出的九宫格拼图 

Step 7 
完成拼图后跳转到 http://www.dropbox.com/dropquest2011/0 
输入 33739 后提交 
Step 8 
https://www.dropbox.com/dropquest2011/p 

Step 9 
访问他们的博客http://blog.dropbox.com/,看到第一副图墙上的字没有? 
Step 10 
https://www.dropbox.com/dropquest2011/b 
解这个数独,答案是: 
OWIREDFSA 
DEFAWSIOR 
RSAOIFWED 
EIDFRASWO 
FAOISWDRE 
SRWEDOAIF 
IOSDFREAW 
WFRSAEODI 
ADEWOIRFS 
Step 11 
https://www.dropbox.com/dropquest2011/o 
Step 12 
访问自己的dropbox主页,上面有一个链接,写着"it’s not hunt"的,点进去 
Step 13 
跳转到 https://www.dropbox.com/dropquest2011/x 
Step 14 
访问 http://forums.dropbox.com/topic.php?page=18&id=18#post-9110 
Step 15 
访问 http://blog.dropbox.com/?p=18 
点击 katana-ya 这个链接 
Step 16 
下载 http://dl.dropbox.com/u/211024/Step16.zip 
Step 17 
访问 https://www.dropbox.com/dropquest2011/h 
答案是 BAFF1E 
Step 18 
跳转到 https://www.dropbox.com/dropquest2011/e 
答案是 Drew Houston 
Step 19 
https://www.dropbox.com/dropquest2011/a 
Step 20 
访问 http://www.dropbox.com/help/206 ,得到一个下载链接 
Step 21 
http://dl.dropbox.com/u/211024/Step21.zip 
新建一个名为1F75CC的文件夹分享给 dropquest@dropbox.com 
Step 22 
访问 https://www.dropbox.com/votebox/3712/frozen-yogurt 
Step 23 
访问 https://www.dropbox.com/about 
Step 24 
点击 Rian Hunter 
Step 25 
下载 http://dl.dropbox.com/u/211024/rainbowshell.zip 
Step 26 
下载文件中有下一步提示 
Step 27 
https://www.dropbox.com/dropquest2011/t 
答案是 badcabbage 
Step 28 
https://www.dropbox.com/dropquest2011/s 
答案是1133471056 
Step 29 
https://www.dropbox.com/dropquest2011/U 
答案是 Dr0pbox heaRts U 
Step 30 
https://www.dropbox.com/dropquest2011/finish_line 
到此游戏结束,你获得了1G的额外容量,可以到https://www.dropbox.com/dropquest2011/wall_of_fame 去看看别人完成的时间。 

如果上面5种方法你都完成了,那一共免费的空间有20G,应该够用了吧?