[ Content | Sidebar ]

Archives for soft

一段指定附件下载名的apache配置

继续优化

SetEnvIf Request_URI "\/SAVE\/(.*)$" save_file_name="$1"
SetEnvIf Request_URI "\.(jpg|jpeg|png|gif|bmp)$" is_image_file
#除了图片,其他文件直接访问均提示下载,防止上传了js,css,html等不应该被浏览器加载的文件
Header set Content-Disposition attachment env=!is_image_file
Header set Content-Disposition "attachment; filename=%{save_file_name}e" env=save_file_name
RewriteEngine On
RewriteRule ^/(.*)\/SAVE\/.*$ /$1 [L]
Copy Code 

——————————————————-
优化一下~

SetEnvIf Request_URI "\/SAVE\/(.*)$" save_file_name="$1"
Header set Content-Disposition "attachment; filename=%{save_file_name}e" env=save_file_name
RewriteEngine On
RewriteRule ^/(.*)\/SAVE\/.*$ /$1 [L]
Copy Code 

只需要访问 : ….5_1300238850.jpg/SAVE/我的图片.jpg 就可以了,ie下文件名后面竟然也不会出现“[1]”了~
—————————————-

SetEnvIf Request_URI "_DOWN_NAME_(.*)_DOWN_EXT_(.*)$" save_file_name="$1.$2"
#下面这种ie下有问题
#SetEnvIf Request_URI "_DOWN_NAME_(.*)$" save_file_name="$1"
Header set Content-Disposition "attachment; filename=%{save_file_name}e" env=save_file_name
RewriteEngine On
RewriteRule ^/(.*)\._DOWN_NAME_.*$ /$1 [L]
Copy Code 

实现的效果:
假设一个附件上传后的地址是:

http://foo.com/03/21/1bc5b77f3e50b7fbe12c792ee438da45_1300688708.jpg

如果想要指定下载名,则访问:

http://foo.com/03/21/1bc5b77f3e50b7fbe12c792ee438da45_1300688708.jpg._DOWN_NAME_我的图片_DOWN_EXT_jpg

ie下的效果:
screenshot_127.png

chrome下的效果:
screenshot_128.png

FF下的效果,很杯具:
screenshot_129.png

———–
vim->email->wordpress

升级了一下wordpress,貌似出bug了

WordPress升级到3.1发现用来排除某些目录feed输出的代码不好用了,bug?,有空再整。。

function blue_feed_cat_exclude($query) {
    if ($query->is_feed) {
        $query->set('cat','-48,-179');
    }
    return $query;
}
 
add_filter('pre_get_posts','blue_feed_cat_exclude');
Copy Code 

———–
vim->email->wordpress

分享个pidgin插件

原帖:http://bluehua.org/2010/01/12/796.html

当年我会用pidgin同时开3个IM:gtalk,qq,msn. 于是我在pidgin里建了两个情景模式 work:三个都在线,其中qq隐身 at home:msn下线。 回到家就点到at home,但msn上还是难免有些烦人的消息发给我,让我改这改那。。,凭着饥渴精神,于是我就想出了上面的点子,完全不用伤脑筋。有问题打我电话吧,至少你得先知道我手机号^_^

好吧,出于学习的目的,现在我把它完全重写成一个标准的pidgin插件,并且支持定时功能,用ubuntu的同学如果有同样烦恼可以试下~

用ubuntu 10.10的话可以直接从源里安装

sudo add-apt-repository ppa:emptyhua/toolbox
sudo apt-get update
sudo apt-get install pidgin-autostatus
Copy Code 

旧版本麻烦点

sudo apt-get install libglib2.0-dev libnm-glib-dev  libdbus-glib-1-dev network-manager-dev libgtk2.0-dev libtool pidgin-dev
svn checkout http://pidgin-auto-status.googlecode.com/svn/trunk/ pidgin-autostatus
cd pidgin-autostatus
make
sudo make install
Copy Code 

google code项目主页: http://code.google.com/p/pidgin-auto-status/

screenshot:

使用gsasl模拟smtp认证

使用gsasl模拟smtp认证

gsasl -a username --service=smtp -m LOGIN --verbose -c smtp.sina.com 25
Trying `smtp.sina.com'...
220 irxd5-187.sinamail.sina.com.cn ESMTP
EHLO [127.0.0.1]
250-irxd5-187.sinamail.sina.com.cn
250-8BITMIME
250-SIZE 83886080
250-AUTH PLAIN LOGIN
250 AUTH=PLAIN LOGIN
EHLO [127.0.0.1]
250-irxd5-187.sinamail.sina.com.cn
250-8BITMIME
250-SIZE 83886080
250-AUTH PLAIN LOGIN
250 AUTH=PLAIN LOGIN
AUTH LOGIN
334 VXNlcm5hbWU6
eHh4eAo=
334 UGFzc3dvcmQ6
Enter password: 
bGFuc2VkZWh1YQ==
235 #2.0.0 OK Authenticated
客户端认证完成(服务器可信)……
输入应用程序数据(用 EOF 结束输入):
^C
Copy Code 

试了一下sina,163,qq,都只支持PLAIN LOGIN两种验证方式。。

———–
post by gmail~

终于可以直接在vim里编辑日志了

最终我还是给blogo2增加了一个不实用的通过邮件编辑日志的功能,需要加一个#edit:BLOGID的标记,但是因为邮件客户端跟本不知道已发blog的id,所以功能略显鸡肋。这绝对是我专用的功能,在bin目录又加了一个小命令,只需在vim里输入:r!wpblog bluehua.org 便可以把最新的blog拽回来,包括blogid

wpblog的内容

#!/usr/bin/env python
import sys 
import xmlrpclib
import getpass
import os
 
'''
A simple tool for dump blog powered by wordpress
For example: in vim, dump the last webblog into current buffer
:r!wpblog myblog.domain
'''
 
#make sure the stderr is the control terminal 
if os.name == 'posix':
    sys.stderr = open('/dev/tty', 'a')
 
if len(sys.argv) < 2: 
    print >> sys.stderr,'''
Usage:
wpblog myblog.domain [blogid]
    '''
    exit(1)
 
rpc = 'http://%s/xmlrpc.php' % sys.argv[1]
 
print >> sys.stderr, '\r\nUsername:'
user = raw_input()
passwd = getpass.getpass('Password:')
 
api = xmlrpclib.ServerProxy(rpc)
 
try:
    if len(sys.argv) > 2:
        blog = api.metaWeblog.getPost(sys.argv[2], user, passwd)
    else:
        blogs = api.metaWeblog.getRecentPosts('', user, passwd, 1)
        if not len(blogs):
            print >> sys.stderr, 'no blog returned~'
            exit(1)
        blog = blogs[0]
except xmlrpclib.Fault, ex:
        print >> sys.stderr, ex.faultString.encode('utf-8')
        exit(1)
 
print '#cats:%s' % u','.join(blog['categories']).encode('utf-8')
print '#tags:%s' % blog['mt_keywords'].encode('utf-8')
print '#edit:%s' % str(blog['postid'])
print blog['description'].encode('utf-8')
Copy Code 

———–
post by gmail~