用 emacs 写 blog

2010年3月10日 wd 2 条评论

不想看大段文字的可以直接看 http://github.com/wd/work/tree/master/weblogger.el/。

先看看 这个, 我用的weblogger.el 就是从那来的,这个 el 打了 html 支持和 tags(summary) 的支持。

因为写中文 title 的时候,生成的 url 会有一堆的中文字符,看起来就是乱码,不可读,这时候可以在 wp 的后台指定一个 post-slug,url 会根据这个生成。这里我主要是研究了一下对 post-slug 的支持。

weblogger.el 里面 应该是在 weblogger-determine-capabilities 里面判断一下你的 blog 支持的类型,我看了 wordpress 的支持的 methods,里面metaWeblog.newPost, 和 blogger.newPost 应该都是支持的,他应该首选的是 metaWeblog 那个。

然后呢,就是看 wp 的 xml-rpc 文件,里面有个 mw_newPost 对应的就是 metaWeblog.newPost 应该是。在这个函数头试了一把,用的确实是这个。然后就看这里面是怎么处理的了。

这里面最后用的是 wp_insert_post 发的贴子,再看这个函数,能看到里面用的是 post_name 来生成的 post-slug。那么我们只要设置一下这个变量就可以了。在这个函数里面,搜一下 post-name 能看到

// Let WordPress generate the post_name (slug) unless
// one has been provided.
$post_name = "";
if(isset($content_struct["wp_slug"])) {
    $post_name = $content_struct["wp_slug"];
}

我们只要在 weblogger.el 里面 post 一个这个变量就好了。在 post 里面能看到如果有个 X-url 的话,他会 post 一个 link 字段出来。那就好了,把上面那个 wp_slug 改成 link,然后写 blog 的时候加一个字段 X-url 就会使用这个你指定的 url 了。

这个文章就是用 emacs 写的。 :D

又研究了下,再补充点内容,呵呵。(2010-03-10)

问题是这样的,新建一个 post 的时候会出来 subject, keywords, newsgroup 这三个字段,怎么能让他加上 summary 和 x-url 呢,这样我就不用每次都手动写了,怎么弄呢,我就找啊找啊,总算找到方法了。

新建的 buffer 里面不是会有个提示么,什么 ‘–text follows this line –’, 就找这个,看是哪里提供的。在 weblogger.el 里面,找了半天,发现没有这个提示。怎么回事?要相信程序,肯定是会有的,只能是找错了地方。

看看这个 el 的看头,引用了 message.el,搜了一下,这个原来是 gnus 提供的,找到这个 el,搜了一下,找到那几个字符了。原来是在这里面添加的。然后我就尝试定义 message-required-news-headers 这个变量,发现不好用,看来还是得在 weblogger.el 里面弄。在这里面找到 weblogger-edit-entry 这个函数,这个就是发帖子的时候用的,在里面有个顺序往下看,这个 message-goto-keywords 比较可疑,在 message.el 里面搜了下,果然,同时还看到一个 message-goto-summary,加上看看,嘿嘿,果然就搞定了。再找找 x-url,没找到,那就仿 summary 的写一个呗

(defun message-goto-x-url ()
  "Move point to the x-url header."
  (interactive)
  (message-position-on-field "X-url" "Subject"))

这不完了么,这下就爽多了,嘿嘿。。不过如果能把那些 keywords, summary 等字段改成什么 categories,tags 就好了。。。有时间看看。。。

又研究了一下,加点内容。。(2010-03-11)

其实就是上面留的这点东西,我自己改吧了一下,好像能用了。地址在 http://github.com/wd/work/tree/master/weblogger.el/,里面的 permlink 就是指定 url 的。我看发文章好像没问题了。

另外,我试着在这个 mode 里面让他自动启动 auto-complete-mode,可是怎么弄都不行,不知道怎么回事。下面是我在 .emacs 用的代码。

(add-hook 'weblogger-start-edit-entry-hook (lambda()
    (auto-fill-mode -1)
    (abbrev-mode -1)
    (auto-complete-mode 1)
    ))

有人能帮忙不。。。

分类: Linux 标签: ,

Twitter Weekly Updates for 2010-03-01

2010年3月1日 wd 没有评论

Powered by Twitter Tools

a test

分类: Heart 标签:

Twitter Weekly Updates for 2010-03-01

2010年3月1日 wd 没有评论

Powered by Twitter Tools

分类: Heart 标签:

Jemplate 的简单介绍

2010年2月27日 wd 没有评论

如果你还在用 php 写 web,那么你 out 了,呵呵。现在流行的是 rest + js。当然,rest 层可能还是 php 写的,不过还有用 perl 写的 openresty 1.0 和完全用 c 写的 openresty 2.0。openresty 是个很不错的东西,本来想细说一下,发现不知道怎么说好。去 cpan 上面搜吧。openresty 2.0 是基于 nginx 的,agentzh 在他上面加了好多的模块,让 nginx 直接和数据库通信,都不用 php 了。前端完全用 js 来搞定,以后应该都是 js 工程师了。

smarty 写 php 的人应该都知道吧,Jemplate 是很类似的一个东西,是方便你写 js 的一个工具。我这写了一个非常简单的例子。

下面这个是 Jemplate 的一个模板,保存为 test.tt。

<div>[% test %]</div>
<p>
[% FILTER html %]
    asdff < sdf > sdfsdf
[% END %]
</p>

然后用 Jemplate 编译一下

jemplate --runtime > a.js
jemplate --compile test.tt >> a.js

这之后就和 test.tt 没关系了,除非你改了他,那就需要重新生成这个 a.js。

再看我们的页面。里面 jquery-1.4.2.min.js 是为了方便操作页面使用的,jquery 决对是个好东西,写 js 应该使用他。那个 jquery.b.js 是我们自己写的,真正把数据添加到页面的代码。

<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>test</title>
    <script src='jquery-1.4.2.min.js' type="text/javascript" charset="utf-8"> </script>
    <script src='a.js' type="text/javascript" charset="utf-8"> </script>
    <script src='jquery.b.js' type="text/javascript" charset="utf-8"> </script>
</head>
<body>
<div id=main></div>    
</body>
</html>

在这个 jquery.b.js 里面,我们让 jemplate 处理了一下 test.tt,给他里面的 test 变量赋值 ffffff,然后把设置到 #main 的 html 里面。

$(function() {
    var html= Jemplate.process(
        'test.tt', { test: 'ffffff' }
    );
 
    $('#main').html(html);
});

这样这个页面就完事了,简单么,呵呵。你可以用 jemplate 和 js 强大的语法来实现更多的功能的。

分类: Linux 标签: , ,

Twitter Weekly Updates for 2010-02-22

2010年2月22日 wd 1 条评论
  • 没 proxy ,只能上 dabr 了。。 #

Powered by Twitter Tools

分类: Heart 标签:

Twitter Weekly Updates for 2010-02-15

2010年2月15日 wd 1 条评论

Powered by Twitter Tools

分类: Heart 标签:

Twitter Weekly Updates for 2010-02-01

2010年2月1日 wd 没有评论

Powered by Twitter Tools

分类: Heart 标签:

Twitter Weekly Updates for 2010-01-25

2010年1月25日 wd 没有评论

Powered by Twitter Tools

分类: Heart 标签:

ssh 之穿越与反穿越

2010年1月21日 wd 没有评论

有时候我们不得不和网管对着干,去想办法去穿越某些防火墙,访问到我们要访问的资源。例如下面的情况,A 和 C 之间是有个墙的,不通。可有个 B 能访问到 C,而 A 又能访问到 B ,那我们可以通过你 ssh 做代理穿越那个墙。

A -> | -> C
\-> B -> C

在A 上面执行下面的命令

ssh -f -N -g -L 8888:C_ip:80 B_ip
参数的含义:-f 放到后台
-N 不在对方机器请求 shell
-g 能使得别的机器能连接 A 的那个端口
-L 就是代理,具体看 man

这样,在 A 上面访问 8888 端口,就能访问到 C 的 80 端口了。

那如果是下面的网络情况,那怎么办?A 能访问到 C,但是 C 不能直接访问 A。

A -> C
C-> | -> A

在 A 上面执行下面的命令

ssh -f -N -R 9999:A_ip:80 C_ip
-R 是反向代理, -g 在这里好像不好用不知道为什么

从 C 上面访问自己的 9999 端口,就会访问到 A 的 80 端口。

分类: Linux 标签: ,

怎么能知道旁边的一台没有显示器的 windows 的 ip 呢?

2010年1月20日 wd 6 条评论

我旁边有个 windows,是 dhcp 获取 ip 的,ip 总变,很恶心。这机器还没有显示器,我都是通过 rdesktop 连上去用的,这样必须知道 ip 才行。那不接显示器,怎么能知道 ip 呢?

方法一,写一个脚本定时把 ipconfig 的结果通过 scp 或 ftp 发到某个有固定 ip 的机器。这样 ip 变了我至少过那么久的间隔就能知道他目前的 ip 了。时间设的长短可能就是你等的时间了。

方法二,扫描一下局域网结果存到 a,给那个机器断网,再扫一下存到 b,diff 比较那个状态有变化的。我用的就是这个方法。

# nmap -PN 10.32.20.0/24 -p 3389 –open > a

要用 root 执行,此外还有别的方法没?呵呵

分类: Heart 标签: