PCManFM右键解压rar

Posted by Linuxtty on 二月 24, 2010

才解决了侧栏显示可挂载分区的问题,又碰到了新的问题。PCMan不能右键解压rar文件。zip,tar,bz2,gz之类的都好好的。唯独rar不行。唉,又要折腾一下了。

最早看到的解决方法在一阁狐狸那,谁知一时半会没看明白。后来明白要修改源码,汗!

另外今天也Google到一篇鸟文解决方案,很详细。

pcmanfm已经emerge过一遍了,直接去/usr/portage/distfiles/里面找源码包拷贝一份,解压,修改。结果make的时候各种错误,就去掉一段注释代码,不至于弄出这么多搞头吧。最后是卸了装,装了卸,拼RP似的给make install上去了,囧rz…

让pcmanfm支持右键解压rar文件,要做的就是修改源码包里面src/ptk/ptk-file-archiver.c文件,vim搜一下rar就可以找到注释代码了,在64行左右。除了像yegle说的去掉注释符号外,还要修改unrar的解压参数,把’unrar -o- e’改成’unrar -o- x’。unrar的e参数很囧,把压缩包里面的所有文件全部展开解压到当前目录下面。当时不知道,拿一个rar文件来测试的时候就悲剧了>.<

需要支持7zip的文件解压的话,再在后面加一段代码吧。

      {
           “application/x-7z-compressed”,
           “7zr a -bd -y”,
           “7zr x -bd -y”,
           “.7z”, TRUE
       }

要实现这两个功能的前提是安装了unrar和p7zip。

另外,归档管理器即file-roller,平时用Ubuntu的时候都没留意软件叫啥名字=。=!

End:其实现在的FM有两个,一个是Nautilus,一个是PCManFM。Nautilus还是很稳健的,PCManFM不熟,问题不断,果断卸之又不爽。非得折腾出个结果才罢休啊。玩的就是一个折腾……还有还有,为毛作者注释掉那段代码啊?

让文件管理器侧栏显示可挂载分区 1

Posted by Linuxtty on 二月 23, 2010

寒假一直在用Gentoo,桌面环境没太多设置,草草的解决了下Gentoo的字体设置问题,顺便装了awesome就完了。本想体验现awesome这个平铺式的窗口管理器,结果用到现在,貌似也没怎么体会到精髓处。sigh~

鉴于此,打算在开学回校之前把桌面环境弄好。就把WM切换成Openbox了,这openbox相比awesome还是很好配置的。然后装了tint2做panel,Conky沿用Ubuntu时期的配置,虽然配色和现在的壁纸看起来有点不和谐。接着问题出在了文件管理器上,pcmanfm和nautilus都试了,两者的侧栏让我感觉很不适,跟Ubuntu的效果不一样,硬盘上其他可挂载分区都没有显示出来。不能即点即挂了。这很不方便啊,不可能每次都去用命令行挂载啊>.<,改fstab开机一次全挂载上来也不爽啊,一是没必要,二还要自己建文件夹去。昨天google了半天都没结果,也没心情折腾了。

问题在绞尽脑子想的之后偏不能解决,不去想的时候解决办法就来了。无意Google了下“Gentoo 自动挂载”就出来了,先在这帖子最后一层看到引用,想着无聊,就顺路爬过去看看原始问题是怎么描述的,没想到和我碰到的问题是一样的,修改文件后重启,然后打开FM一看,哇塞,分区显示出来了XD。高兴之余再回去爬一下那帖子,发现,楼主是TX Orz…

解决方法:打开/usr/share/hal/fdi/policy/10osvendor/99-storage-policy-fixed-drives.fdi
修改:

<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->

<deviceinfo version="0.2">
<device>
  <match key="@block.storage_device:storage.hotpluggable" bool="false">
    <match key="@block.storage_device:storage.removable" bool="false">
      <merge key="storage.automount_enabled_hint" type="bool">false</merge>
      <merge key="volume.ignore" type="bool">false</merge>
    </match>
  </match>
</device>
</deviceinfo>

重启完事。:)

GReader分享到人人脚本 2

Posted by Linuxtty on 二月 17, 2010

有时候在GReader阅读的时候想分享点文章到人人,使用GReader的Send-to功能感觉颇麻烦(要不就是俺弄的Send-to设置不好),要登录到分享页,再点击次确定才完成分享。

想到之前 @shellex 猫写的 用GAE同步twitter到人人网状态 的python脚本,是否可以借用来做些修改来实现GReader分享到人人的目的?

于是乎年前几天无聊,兼python都快忘完了,就动手丰衣足食写脚本。首先是RSS解析的库,Google了下,找到了 feedparser 这个RSS解析库,官网也列出了一部分使用方法,可以满足基本需要了。

解析好RSS后剩下的功能和 @shellex 的脚本就差不多了。登录+发送状态。

其实这脚本写了两个版本,先写了个本地的,后面又改成GAE的版本=,=折腾。(一开始就弄个GAE的不就好了嘛-___-#)主要之前也写过一个类似的“登录+发送状态”的机器人,只要把RSS解析弄好就可以使用了,想着偷懒呢。

代码有一块注释没删掉,是写本地版本的时候用的登录代码。貌似在GAE上用不了。不知道是不是urllib2的缘故。Cookie和cookielib还要区分下-_____-!!

脚本同时参考了梦.:如此短暂用GAE同步twitter到人人网状态

脚本后面有过修改,就是先检查最新的分享条目,再登录人人更新,要不每次都登录多少感觉不爽。

下面丢代码:

 #!/usr/bin/env python
#coding=utf8
#
import feedparser
import urllib,urllib2,cookielib
import time
import Cookie
#from setting import app
#GAE Modules
from google.appengine.ext import db
from google.appengine.api import urlfetch
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
usr = '帐号'
passwd = '密码'
source = '[GReader分享] '
greader_url = "http://www.google.com/reader/public/atom/user%2F10398641251604775002%2Fstate%2Fcom.google%2Fbroadcast"
cookie_buf = Cookie.SimpleCookie();

class LastItemRecord(db.Model):
    id = db.StringProperty(multiline=True)
def make_cookie_header(cookie):
    ret = ''
    for v in cookie.values():
        ret += '%s=%s;' % (v.key, v.value)
    return ret
def do_redirect(url, cookie):
    result = urlfetch.fetch(
    url=url,
    headers={
    'Cookie':make_cookie_header(cookie),
    'Content-Type': 'application/x-www-form-urlencoded',
    'user-agent':'Mozilla/5.0 (Linux; U; Linux i686; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.4.2.80 Safari/525.13',},
    method=urlfetch.GET,
    follow_redirects = False,
    )
    return result
#短链接,is.gd/
def shorturl(url):
    surl = "http://is.gd/api.php?longurl=%s" %(url)
    slink = urlfetch.fetch(
    url=surl,
    method=urlfetch.GET,
    )
    result = slink.content
    return result
#格式化
def format(title,link):
    if len(link) < 60:
        status = u"[GReader分享] "+title+" "+shorturl(link)
    else:
        status = u"[GReader分享] "+title+" "+link
        #statu = status.encode('utf8')
    return status

def send_status(status,cookie):
    status_url = 'http://status.renren.com/doing/update.do'
    status_data = urllib.urlencode(
    {
    'c':status,
    'raw':status,
    'isAtHome':0,
    })
    result = urlfetch.fetch(
    url=status_url,
    headers={
        'Cookie':make_cookie_header(cookie),
        'Content-Type': 'application/x-www-form-urlencoded',
        'user-agent':'Mozilla/5.0 (Linux; U; Linux i686; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.4.2.80 Safari/525.13',
        'Referer': 'http://status.renren.com/ajaxproxy.htm'
    },
    method=urlfetch.POST,
    payload=status_data,
    )
    return 0
#def login2renren(usr,passwd):
#    verify_url = 'http://passport.renren.com/PLogin.do'
#    cookie = cookielib.CookieJar()
#    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
#    urllib2.install_opener(opener)
#    verify_data = urllib.urlencode(
#        {
#            'domain':’renren.com’,
#            'email':usr,
#            'password':passwd,
#            'origURL':’http://home.renren.com/Home.do’,
#        }
#    )
#    signin = opener.open(verify_url,verify_data)
#    print 'login'
def login2renren(usr,passwd):
    verify_url = 'http://passport.renren.com/PLogin.do'
    verify_data= urllib.urlencode(
    {
        'domain':'renren.com',
        'email':  usr,
        'password': passwd,
        'origURL':'http://home.renren.com/Home.do',
    })
    result = urlfetch.fetch(
    url=verify_url,
    headers={
        'Cookie':make_cookie_header(cookie_buf),
        'Content-Type': 'application/x-www-form-urlencoded',
        'user-agent':'Mozilla/5.0 (Linux; U; Linux i686; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.4.2.80 Safari/525.13',},
    method=urlfetch.POST,
    payload=verify_data,
    follow_redirects = False,
    )
    return result

class sync(webapp.RequestHandler):
    def get(self):
        global cookie_buf
        rss = feedparser.parse(greader_url)
        entries = rss.entries[:]
        i=0
        last_item_record = None
        #print entries[0].id
        last_item_records = db.GqlQuery('SELECT * FROM LastItemRecord')
        if last_item_records.count() == 0:
            last_item_record = LastItemRecord()
            last_item_record.put()
            last_item_record = last_item_records[0]
        if entries[0].id.encode('utf8')!=last_item_record.id:
        #login to renren
            result = login2renren(usr,passwd)
            cookie_buf = Cookie.SimpleCookie(result.headers.get('set-cookie', ''))
            callback_url = result.headers.get('location','xx');
            result = do_redirect(callback_url, cookie_buf)
            cookie_buf = Cookie.SimpleCookie(result.headers.get('set-cookie', ''))
            while i!=5 and entries[i].id.encode('utf8')!=last_item_record.id:
                status = format(entries[i].title,entries[i].link)
                send_status(status.encode('utf8'),cookie_buf)
                time.sleep(3)
                i+=1
                last_item_record.id = entries[0].id
                db.put(last_item_record)
application = webapp.WSGIApplication([('/md5sum', sync)],debug=True)

if __name__ == "__main__":
    run_wsgi_app(application)

app.yaml 限制只有管理员才能访问/md5sum

application: read2rr
version: 5
runtime: python
api_version: 1

handlers:
- url: /md5sum
script: read2rr.py
login: admin

cron.yaml 每15分钟触发一次。

cron:
- description: read2rr
url: /md5sum
schedule: every 15 minutes

回来了 4

Posted by Linuxtty on 二月 12, 2010

最后一篇日志都是去年底的了,本来想在元旦前夕写个wishlist的,结果主机遭遇不测,IP被封了。赶紧的翻墙过去上FTP,上后台,把文件和数据库都备份下来。等找到主机了再恢复。

1月份碰上期末复习,也没心情折腾。放假后弄了个ramhost的vps来用,第一次搭的时候没想到内存给弄爆了,第二次竟然在编译mysql的时候内存爆了= =悲剧之下不想再折腾,就拿来开了openvpn了事。

最近某中央把自己的blog也迁到墙外了,用的000webhost。俺也就跟风,谁知那厮竟然不让中国注册,但俺的linuxtty域名绑在账户上,又不能删除,重新注册就不能用了,悲剧。

好嘛,换个之前申请的俄国佬的。net。ru域名,还翻墙重新注册了。换了DNS准备好等待生效了。结果访问的时候,reset了,翻墙又直接访问得到。这什么事啊,都让我撞上了。后头@Ratoo童鞋提醒:”。net。ru”是关键词关键词关键词关键词关键词关键词。我/(ㄒoㄒ)/~~墙角画圈诅咒该死的GFW。

受不了了,这年三十都要来了,赶紧再找个,000webhost“温馨”提醒说,有个叫0fees的合作伙伴,如果”一时半会”账户还没生效,可以去用用他的服务。好嘛,经不起折腾了,就赶紧申请了个把blog恢复了。还算顺利,碰到点小问题,
1、要ftp链接,结果填好表单说找不到目录,在wp-config.php加了两行设置

define('FTP_CONTENT_DIR', 'wp-content的绝对路径');
define('FTP_PLUGIN_DIR', 'wp-content/plugins的绝对路径');

两个绝对路径都应该在主机后台可以看到。

2、说无法定位wp-content,就Google了下,在wp-config.php结尾前加了几行代码:

/** Override default file permissions */
if(is_admin()) {
add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
define( 'FS_CHMOD_DIR', 0751 );
}

300M的硬盘空间,10G带宽,访问速度一般般,不追求啥了,赤贫有个主机落脚就满足了。:)

这段时间折腾了些东西,主要是Gentoo,昨天还弄了个GReader分享到淫淫网的脚本,过阵子再放出来吧。

sigh~ 3

Posted by Linuxtty on 十二月 23, 2009

好久没更新鸟,看看最后一篇日志都是一个半月前了。这会儿也到年底了。该更新下了。

说起一个月前碰的事情还是有点杂,例如电脑坏了送修,FeedBurner烧录出问题,去围观WCG,手机排线坏了,心血来潮动手写了个脚本小激动了把等等杂七杂八可以码字的机会也没动手。懒啊懒……

要说的还是最近找实习的事情。某某跟我说有个机会,问我要尝试否。我说,有机会当然好,试试吧。期末了,每天睡觉都是中午11点才打算起床,因为那时候食堂恰好开饭了。当时电面的时候自己都还没睡醒,接到电话就立马得蹦起来,衣服还没穿就浑浑噩噩跑阳台电面去了。回想还是囧啊,要动真格的时候才知道自己缺了o(╯□╰)o勉勉强强的回答人家的问题,小心奕奕的对案例提出自己的解决方案。而且其中还需要我写份简历寄过去,写的时候那个惭愧啊,一张纸都没法写满。缺陷不是一点点。

后面呢?电面让过了。但公司方面的要求没像开头说的只是实习了,希望能够在毕业后留在公司工作一段时期。这不得不考虑得更多。似乎跟签生死状般,一下子给绑紧了,敲定了。工作地点,继续在成都。OK,自己在这方面问题不大。早些给自己想的大框架是拿到回GZ的机会,那是期望的情形,如果争取到的机会是待在成都或者去其他地方,也不会出太大的问题。

昨天跟公司见了面,当面谈了谈。对于毕业后的期望,公司再次跟我说了,要求没有变。杂七杂八的也谈了些。后头说到待遇问题,成都这边也没给具体答复,自己也没什么心理准备。说,后面再讨论吧。

离开的时候没及时找到返程的公交车,就决定在路上吹吹风,走一下想一想。

离毕业还有一年半,其实要说做决定,剩下也只半年多点的时间了。并没有什么具体的想法,只是之前说的那个大框架罢了。真要面对走进社会,在一个地方生活下来的时候,懵了。自己每天要怎么生活,吃个饭,买个东西上哪去?去哪哪怎么走?出了问题可以找谁谁谁帮下?生活成本是多少?没概念,没想法。为什么说愿望是回GZ,虽然某某说不想回,说自己不喜欢那的治安。但那城市怎么样,一点点的概念还是有的,换个说法,也就说自己某些方面可控,方向感还是有,哪哪的地名也有个概念,会有多远,啥啥的旁边,需要什么东西可以在哪里弄,日常便饭、家常菜有什么吃,至少心里有个薄底都好。

对成都?这座城市在3年前是自己选择的。3年后,自己仍然感到对城市的陌生。进市区的需求是什么?去本部办点事情?要去市区总会选择恰到中午的时间出发,到“坑”下匆匆吃个饭,接着开始在城里溜达,办该办的事去。需要吃东西的时候似乎眼前都是一样的菜,面临一样的选择。而且,进城基本是“陪”办事,主动进城?印象中,不多。进趟城总这么折腾,这么累,还有什么欲望进城?日常的三点一线的生活,解决吃饭的问题也就饭堂和隔壁的小区。缺生活用品?学校超市买去。窝在这里面可以让你活。但你无非也就这个样子,没什么出奇的地方,没其他的奢望。毕业后的生活轨迹不会简单成这个样子。

突然想到暑假去的青岛,似乎也跟成都一样,一样的不熟悉,自己住的时间也只是短短的5天而已。在想为何我突然更想青岛而对比之下对成都没什么留恋的。生活的轨迹差不了多大,每天都要回到同一个地方睡觉,基本上去同一个地方吃饭。差别大概是我每天都在市区内行走,每天都在市里面消费过,对我每天踩过的地方有谱。那时的生活方式很容易找到点门路,找到点规律。很轻松。每次进市区,似乎只有在公车上待的份。到目的地逛完一圈,把进城的目的实现了。接着又是搭车回校。

说了这么多,似乎很讨厌成都:P 瞧前面还说呢,最好回哪去,待成都或者其他地方问题不大。

我想说的是为何更愿意的是回哪?“问题不大”,想想还需要跟半年后的求职扯上关系吧?拿到自己喜欢的工作,憧憬着去那个城市工作、生活,说得再好听点,华丽丽的在那个城市奋斗。“问题不大”应该说的是这样的状态吧。

也许4年毕业之后我不敢说在成都生活过,只是在成都边上待过罢了。

黑屏了 1

Posted by Linuxtty on 十一月 12, 2009

电脑还是不可避免的黑屏了,下午翘了局域网和城域网送修去了。周末满是实验 ,不会周一叫我也翘课去吧?虽然,周一我确实全部逃了的…
不爽!!!
还好今天顺便去把G1的充电器也换了,要不什么都没得用了…这几天就靠G1的wifi来过日子了。sigh~

这篇日志顺便测试下wp2go!

WCG2009@Chengdu 2

Posted by Linuxtty on 十一月 04, 2009

091104-184139

091104-184007

下个周六,看半决赛去。
让Ubuntu logo客串下……XDD

上古图 4

Posted by Linuxtty on 十月 28, 2009

现在才知道这上古奇闻,Orz…

99_8130_3527e9c1a1cf975

99_8130_020b23956c811a9

上古信息,见谅见谅……

将近1年…… 5

Posted by Linuxtty on 十月 17, 2009

BB上的短信存了近一年了,第一条短信是10月19号00:00收到的,那时候在跟朋友讨论苏打绿歌友会买票的事情。昨晚上花了点时间从头翻到尾,短信内容基本上是各种宵夜召唤和逃课点名短信。

接着就开始去找各种一年前的东西,翻了下blog,去年10月17号记录的是聂老走了的噩耗,接着说的想看海也在今年暑假完成任务。另外还有lily离开ZX的事情。想起这些事情心情都不是很好~

昨天下午踢了场球,回忆起高中经常踢球的那群人,TC/D,老杨,WBF,KY,何伯,HY,LQY,肥羊……当然还有几个篮球足球双控的就不点名了:)

再看看一年前在学校某论坛 *nix区发的帖子,之前还在想自己什么时候开始用Ubuntu的,这回应该清楚了,10.26号15:59分前。第一帖是在win下问笨兔怎么拨号上网,所以时间应该还要早一点……当时wubi安装,没上网语言包又没法弄,英文看着啥都不懂。那时候一天重启10+次以上,笨兔下碰到问题就重启到win下问。后来把拨号问题解决了,一切都方便了很多。

应该在11月份把wubi给删了的,然后把8.04给硬盘安装起。中间断了几个月吧,今年4月份9.04出来之后笨兔使用就一般频繁了。现在9.10还有12天发布。

不看看还真不知道这一年这么快就过完了,剩下这一年不知道又会是什么样子……

=======================================

PS:豆瓣电台太应景了。

前天twitter上的事情 2

Posted by Linuxtty on 十月 12, 2009

觉得这件事情还是值得记录一下吧。

近日某位推友在twitter上发了一条只有”help”的推,然后消失了N个小时没出现新推了。导致一大部分群众纷纷RT表示关注,不可避免有群众认为当事人可能被熊猫挟持。

最后官方连发两推表示对此失误负责:
“…………很抱歉,让大家受精了。。。。。先前的 help 是发在 HelloTxt 的机器人上,当时测试了一下没反应,我还很奇怪……于是就出去打球吃饭了…………很抱歉很抱歉!!!(一边感动中……)”

“今天用代理死活打不开 twitter.com,很是郁闷…………用了一下 hellotxt,想获得些帮助,就发了 help…………结果。。。唉。。。两次抱歉。顺便,今天有气没地儿撒的,全冲我来吧…………”

大家都很有爱!: )

顺带再测试下WP for BB,断电懒得再重新拨号上网了。