博客

  • IP地址,天气,邮编,外汇等常用查询Web Service接口

     

  • wordpress3.1 功能解释之二-文章样式功能

    wordpress3.1版本 正式发布,看过官方说明之后,渐渐发现wp越来越像CMS了。虽然增加的功能很多,但是国内的教程少之又少,纯英文文档对很多童鞋来说还是有一点点难度的。所以我会陆陆续续写下wordpress3的新增功能的具体用法,助人助己。前面写过一篇WordPress3+的自定义内容类型功能详解,这一篇则是介绍wordpress3.1的文章样式功能。

     

    1.小窥wordpress3.1文章样式

    文章样式一种meta信息,主题可以通过这些信息来定制文章的样式。简单地说,文章样式就是设计某篇文章表现形式的一种方式。利用文章样式功能,你 可以指定某一篇文章所显示出的格式效果。这个功能挖掘出了WordPress在微博方面的潜力,用户可以把视频、链接、图像、音频、引用文字等整合到一 处,并进行相应样式设计。

    假设你发现某个外部网站的某篇文章很有意思,你想分享给你的读者。为了告诉读者你的分享,你得写一篇新文章并给出相关的外部链接,否则读者不知道这是篇什么类型的文章,他们要点开链接读完全文才可能了解你想告诉他们的内容。文章样式功能可以帮你解决这个问题。

    这有点类似于微博,你可以像在微博上一样发表一些小段子,然后不用费很大功夫就可以为不同文章设定不同的样式。例如,当你发现一条值得分享的句子,就可以立即在自己的WordPress博客上分享出来,并且只需要一个点击动作,就可以突出显示这句话。

    文章样式的主要目的就是让WordPress成为一个全方位的博客平台。

    和文章缩略图、菜单、自定义背景等功能一样,文章样式也需要通过主题激活。这意味着,如果你的主题不兼容,那么你就没法使用这个功能。

    警告:若要进行以下操作,最好熟悉HTML、CSS代码,并对WordPress循环函数具有一定了解。

    打开主题的functions.php文件,加入以下代码:

    add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );

    注意:aside和galery只是列举出的两个可用的文章样式而已。可用的文章样式包括:

    aside —— 通常没有标题,类似于社交网站上的状态更新

    chat —— 聊天记录

    gallery —— 图片库(多幅图片)

    link —— 外部链接

    image —— 单幅图片

    quote —— 引用语句

    status —— 简短的状态更新,通常限制在140个字符内,类似微博

    video —— 单个视频

    在functions,php中加入代码后,你会在文章编辑界面右侧的文章发布设置区看到一些新内容。

    编辑完文章之后,你可以在这里更改文章的样式并点击发布,让文章以预先设置好的格式发布到前台。

    但是我们并没有预先设置任何文章样式,因此即使你在下拉菜单里选择了新的样式,前台所显示的效果也和其他文章没什么区别。所以现在我们需要做的就是编辑文章的主循环。

    我们会用到条件标签has_post_format()。

    if ( has_post_format( 'aside' ) {
    // code to display the aside format post here
    } else if (has_post_format('gallery')) {
    // stuff to display the gallery format post here
    } else if (has_post_format('link')) {
    // stuff to display the link format post here
    }else {
    // code to display the normal format post here
    }

    对开发人员来说,这或许算不上什么,但最终用户应该可以受益不少了。

     

  • Linux VPS下SSH常用命令

    目录操作:
    rm -rf mydir /*删除mydir目录*/
    cd mydir /*进入mydir目录*/
    cd – /*回上一级目录*/
    cd .. /*回父目录,中间有空格*/
    cd ~ /*回根目录*/
    mv tools tool /*把tools目录改名为tool */
    ln -s tool bac /*给tool目录创建名为bac的符号链接,最熟悉的应该就是FTP中www链接到public_html目录了*/
    cp -a tool /home/vpser/www /*把tool目录下所有文件复制到www目录下 */

    文件操作:
    rm go.tar /* 删除go.tar文件 */
    find mt.cgi /* 查找文件名为mt.cgi的文件 */
    df –h /* 查看磁盘剩余空间,好像没这个必要,除非你太那个了 */

    解压缩:
    tar xvf wordpress.tar /* 解压tar格式的文件 */
    tar -tvf myfile.tar /* 查看tar文件中包含的文件 */

    tar cf toole.tar tool /* 把tool目录打包为toole.tar文件 */
    tar cfz vpser.tar.gz tool /* 把tool目录打包且压缩为vpser.tar.gz文件,因为.tar文件几乎是没有压缩过的,MT的.tar.gz文件解压成.tar文件后差不多是10MB */

    tar jcvf /var/bak/www.tar.bz2 /var/www/ /*创建.tar.bz2文件,压缩率高*/
    tar xjf www.tar.bz2 /*解压tar.bz2格式*/

    gzip -d ge.tar.gz /* 解压.tar.gz文件为.tar文件 */
    unzip phpbb.zip /* 解压zip文件,windows下要压缩出一个.tar.gz格式的文件还是有点麻烦的 */

    下载:
    wget http://soft.vpser.net/web/nginx/nginx-0.8.0.tar.gz
    /*下载远程服务器上的文件到自己的服务器,连上传都省了,服务器不是100M就是1000M的带宽,下载一个2-3兆的MT还不是几十秒的事 */
    wget -c http://soft.vpser.net/web/nginx/nginx-0.8.0.tar.gz
    /* 继续下载上次未下载完的文件 */

    转载请注明出处:VPS侦探 http://www.vpser.net

    进程管理:
    ps -aux /*ps 进程状态查询命令*/

    ps命令输出字段的含义:
    [list]
    [*]USER,进程所有者的用户名。
    [*]PID,进程号,可以唯一标识该进程。
    [*]%CPU,进程自最近一次刷新以来所占用的CPU时间和总时间的百分比。
    [*]%MEM,进程使用内存的百分比。
    [*]VSZ,进程使用的虚拟内存大小,以K为单位。
    [*]RSS,进程占用的物理内存的总数量,以K为单位。
    [*]TTY,进程相关的终端名。
    [*]STAT,进程状态,用(R–运行或准备运行;S–睡眠状态;I–空闲;Z–冻结;D–不间断睡眠;W-进程没有驻留页;T停止或跟踪。)这些字母来表示。
    [*]START,进程开始运行时间。
    [*]TIME,进程使用的总CPU时间。
    [*]COMMAND,被执行的命令行。
    [/list]

    ps -aux | grep nginx /*在所有进程中,查找nginx的进程*/
    kill 1234 /*1234为进程ID,即ps -aux 中的PID*/
    killall nginx /*killall 通过程序的名字,直接杀死所有进程,nginx为进程名*/

    Vim操作:

    移动类的:
    h/j/k/l: 左/下/上/右 移一格
    w : 向后词移动 (前面加数字移动多少个词)
    b : 向前词移动 (前面加数字移动多少个词)
    e : 向后移到词末
    ge : 向前移到词末
    $ : 行末
    0 : 行首
    tx : 向右查找本行的x并移到那儿(大写时向左)
    33G : 移到文件的第33行
    gg : 文件首行
    G : 文件尾行
    33% : 文件的33%处
    H/M/L : 屏幕的首/中/尾行
    zt/zz/zb : 当前行移到屏幕的首/中/底部

    跳转:
    ” : 回到跳转来的地方
    CTRL-O : 跳到一个 “较老” 的地方
    CTRL-I : 则跳到一个 “较新” 的地方

    查找:
    / : 向下查找(后加关键字)
    ? : 向上查找(后加关键字)
    n : 下一条符合的记录

    编辑:
    i : 转换到插入模式
    x : 删除当前字符
    . : 重复最后一次的修改操作(同PS里ctrl+f执行滤镜)
    u : 撤销操作
    CTRL-R : 重做
    p : 将删除的字符插入到当前位置(put)

    退出保存:
    :q : 退出
    :q! : 不保存退出
    ZZ : 保存后退出
    :e! : 放弃修改重新编辑

    掌握这些基本命令,Linux下的基本使用已经掌握,只要多加练习,多遇到问题,解决问题,能力就会不断的提升。

    出处:VPS侦探 http://www.vpser.net

  • Dropbox,金山快盘,SugarSync,EverBox等等..服务评测

    话说 Company 不但封锁了无数的网络而且还不能用U盘,真是掩耳盗铃。咱好歹也是用过软盘的人,且不说可以用虚拟机、装双系统,甚至都可以直接强制Kill掉防止U盘的进程。 但咱是大好青年,不能那么暴力,于是乎只能求助于云同步了。

    目前我用过的云同步软件有:快盘(金山),T盘(金山),EverBox(盛大),Dropbox(国外),Dbank(据说是华为),Live-Mesh(微软),Sugar Sync(国外)。 这么多软件在我电脑上共存了大约三个月的时间,现在只剩下Dropbox一枚。且在此记录一下原因: 1、快盘,T盘 金山这个瓜娃子不知打的什么主意,一模一样的服务非得做两个软件。除了让用户更晕之外,没有任何用处。金山的有点是可以完全自定义同步文件的目录,缺点只有一个——速度巨慢。 2、EverBox 盛大出品的软件同步速度很快,但是灰常消耗宽带资源,基本上你有多少速度它用多少带宽,勉强算个缺点吧。也可以自定义目录,目前内测中,需要邀请码才可以注册,客户端也不是特别稳定。(PS:需要邀请码的童鞋请留言) 3、Dropbox 目前唯一一个还活在我电脑里面的同步软件,虽说服务器在国外,但是速度很不错,客户端还算稳定的吧。可惜不支持自定义目录。例如你只能选择 x:xxDropbox 这样的目录,也就是说同步文件夹的名字只能是Dropbox。 4、Dbank(数据银行) 据说是华为出品 待续……

  • 写给还奋战在XP第一线的同志们

    话说XX公司的网络监控客户端只支持win平台而且最高到 Vista(汗!!!三滴汗),偶千辛万苦的下载了各个版本的XP,挨个的安装测试,这把我累的要死要活的。
    最终找到这个版本《深度技术 Deepin Lite XP SP3 完美精简版》,一张光盘,两种选择,可以传统安装也可以Ghost,你爱咋咋地…
    为了劳苦大众,我千辛万苦的传到了网盘上。
    现如今咱还是转回Windows 7的阵营了,不就是个MD5质询么,就这~~~还难得住咱这上过刀山下过火海的?!
    PS:帝都你他妈的真扯蛋!歧视外地人,TMD孩子上个学还得交那么多钱,万恶的户口制度!!!
  • 这才是真正的-北京特产

    忽见装13的文章一篇:《谁稀罕什么帝都,我只是回不去了》(想看的童鞋自己搜索),一向不喜欢这种带有浓重酸腐气息的很犹豫的文艺青年。

  • Windows 7 SP1官方简体中文正式版下载

    早前在1月份网上已经泄漏了Windows 7 SP1,微软高管在官方博客亦透露该版本就是正式版。不过仍然有不少网友怀疑其的真实性。不过无关紧要,因为现在Windows 7 SP1官方简体中文正式版正式发布了。MSDN或TechNet订阅用户将会首先获得使用的权限。

    WINDOWS7 SP1 RTM

    MK使用的是之前泄漏版本,感觉还是很不错的。当然肉眼是无法看出SP1与Windows 7区别。明天凌晨MSDN或TechNet订阅用户将可以下载Windows 7 SP1,相信稍后将会MSDN或TechNet订阅用户上传文件共享,大家期待吧。

    WINDOWS7 SP1 RTM IMG04

    Windows 7 SP1的安装过程截图,MK在这里就不再提供,需要了解的朋友可以参考网站泄露版本安装截图。该文章也介绍了Windows 7 SP1的新增功能emoteFX和动态内存(Dynamic Memory)

    Windows 7 SP1正式版下载地址

    单独的安装包(来自于itellyou.cn 多语言版本,包括中文),32位和64位通用。

    Windows 7 SP1 单独安装包
    SHA1: F2ABA1102E18EAD08C78527AB422C09AB7D1F54C

    整合SP1的正式版 (目前只有英文版本,更新中)

    Windows 7 Ultimate with SP1 x86(32位)
    SHA1: 92C1ADA4FF09C76EC2F1974940624CAB7F822F62

    Windows 7 Ultimate with SP1 x86(64位)
    SHA1: 1693B6CB50B90D96FC3C04E4329604FEBA88CD51

    Windows 7 Enterprise With SP1 x86(32位)
    SHA1: 4788041EB06E0F49720C112FBD256AC637909D4F

    Windows 7 Enterprise With SP1 x86(64位)
    SHA1: 2C9774A1F48570E749E6D33C642FE8F6F7898CB0

  • WordPress3+的自定义内容类型功能详解

    WordPress3+进一步完善了自定义内容类型功能,也算是向CMS迈进了一大步。网络上关于这个功能的介绍少之又少,来来回回就那么几篇转来转去的,那我就来总结一下吧。

    实现方式一:辅助插件

    这里的插件只是辅助你利用这个功能的插件,并不是传统意义上的装上就完事ok的插件,关于插件的介绍大家可参见 wordpress.la的文章《如何在WordPress 3.0中使用自定义内容类型》 我就不多做介绍了

    实现方式二:functions.php中添加自定义代码

    对于完美主义者或者不喜欢插来插去的童鞋可以参考这个方法,废话不多说直接上例子;
    首先打开你的主题的functions.php文件,然后添加代码如下

    [php]
    add_action( ‘init’, ‘create_events’ );
    function create_events() {
    $labels = array(
    ‘name’ => _x(‘Events’, ‘post type general name’),
    ‘singular_name’ => _x(‘Event’, ‘post type singular name’),
    ‘add_new’ => _x(‘Add New’, ‘Event’),
    ‘add_new_item’ => __(‘Add New Event’),
    ‘edit_item’ => __(‘Edit Event’),
    ‘new_item’ => __(‘New Event’),
    ‘view_item’ => __(‘View Event’),
    ‘search_items’ => __(‘Search Events’),
    ‘not_found’ => __(‘No Events found’),
    ‘not_found_in_trash’ => __(‘No Events found in Trash’),
    ‘parent_item_colon’ => ”
    );

    $supports = array(‘title’, ‘editor’, ‘custom-fields’, ‘revisions’, ‘excerpt’);

    register_post_type( ‘event’,
    array(
    ‘labels’ => $labels,
    ‘public’ => true,
    ‘supports’ => $supports
    )
    );
    }
    [/php]

    参数详解:

    add_action告诉wordpress初始化时调用函数create_events

    $label数组告诉wordpress如何显示这个文章类型的相关信息

    $supports数组告诉wordpress这个文章类型可以支持什么(比如文章摘要excerpt)

    register_post_type就是在wordpress注册这个新的文章类型,这个函数有很多选项可用,具体可以参阅相关文章。

    一旦我们把代码添加到function.php后,我们可以在后台管理页面看到如下页面:

    wordpress-自定义文章类型

    点击添加新事件(Add New)你可以像发表一般文章一样来添加新的事情,如下图:

    wordpress-自定义文章类型

    显示自定义内容类型的文章

    为了显示自定义内容类型的文章,请添加下面的代码到循环(loop)中。将“name”用你的内容类型名称替换。 注意: 你不需要在index.php文件中添加自定义的内容类型。你可以创建一个自定义WordPress页面并循环(Loop)里运行下面的查询。
    query_posts( 'post_type=name');
    要显示来自多个内容类型下的文章,将上面的代码改成下面这样,并记得将“movie”改成自定义内容类型的名称。
    query_posts(array('post_type' => array('post', 'movies')));
    使用上面的代码将会显示所有来自普通的内容类型的文章以及其他自定义内容类型下的内容。

  • 推荐个对付wordpress垃圾评论(针对机器人)的终极办法

    前一段时间网站忽然多了大量垃圾评论,弄得数据库哗啦哗啦的涨到了百兆级别,话说我这么个小博客哪来这么大数据量!
    然后找了不少防止垃圾评论的方法和插件,国内最典型的就是 验证码和中文字符判断了(也就是如果评论内容没有中文就判断为垃圾评论) ,当然还有一些变态的 比如让你算个数学题啊这些咱就不考虑了。(你说我留个言容易么我):
    最终让我找到了 Willin kan 同志写的 Anti-Spam ;原理就是把评论内容表单替换掉了,机器人只会向默认不显示在页面上的表单提交数据,由此达到了防止机器人评论的目的。目前看来 效果是相当不错的,清净的有点不习惯还……
    使用我的King-blog主题的童鞋不用更新了,里面已经包含了这个功能。
    添加方式是:在你的主题文件functions.php中添加代码如下
    //建立
    class anti_spam {
    function anti_spam() {
    if ( !current_user_can('level_0') ) {
    add_action('template_redirect', array($this, 'w_tb'), 1);
    add_action('init', array($this, 'gate'), 1);
    add_action('preprocess_comment', array($this, 'sink'), 1);
    }
    }
    //设栏位
    function w_tb() {
    if ( is_singular() ) {
    ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=(["'])comment(["'])(.+)/textarea>#",
    "textarea$1name=$2w$3$4/textarea><textarea name="comment" cols="100%" rows="4" style="display:none"></textarea>",$input);') );
    }
    }
    //检查
    function gate() {
    if ( !empty($_POST['w']) && empty($_POST['comment']) ) {
    $_POST['comment'] = $_POST['w'];
    } else {
    $request = $_SERVER['REQUEST_URI'];
    $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '隐瞒';
    $IP = isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] . ' (透过代理)' : $_SERVER["REMOTE_ADDR"];
    $way = isset($_POST['w']) ? '手动操作' : '未经评论表格';
    $spamcom = isset($_POST['comment']) ? $_POST['comment'] : null;
    $_POST['spam_confirmed'] = "请求: ". $request. "n来路: ". $referer. "nIP: ". $IP. "n方式: ". $way. "n内容: ". $spamcom. "n -- 记录成功 --";
    }
    }
    //处理
    function sink( $comment ) {
    if ( !empty($_POST['spam_confirmed']) ) {
    if ( in_array( $comment['comment_type'], array('pingback', 'trackback') ) ) return $comment; //不管 Trackbacks/Pingbacks
    //方法一: 直接挡掉, 将 die(); 前面两斜线删除即可.
    die();
    //方法二: 标记为 spam, 留在资料库检查是否误判.
    //add_filter('pre_comment_approved', create_function('', 'return "spam";'));
    //$comment['comment_content'] = "[ 小墙判断这是Spam! ]n". $_POST['spam_confirmed'];
    }
    return $comment;
    }
    }
    $anti_spam = new anti_spam();

    搞定。