0%

前言

为了节省功耗,需要让系统在不需要工作的时候尽可能的休眠(甚至断电)。同时,为了不影响到系统功能的正常运作,又必须保证休眠不能打断正在进行的重要事务,且能在适时还原回来。因此,一个高效运行的Low Power框架必不可少。 Linux电源管理介绍-1 本文以Linux 4.4内核为基础,介绍Linux的Low Power框架。

Read more »

双击会有惊喜哦!

引用自麦葱的博客 , 对源码做了一点修改提升手机平板上的点击体验。目前本站只有本篇博文有此效果 ![为你的博客开出地狱模式](http://pic.l2h.site/l2hsite屏幕快照 2018-10-20 下午8.53.10.png “为你的博客开出地狱模式”)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
(<script>function () {
var __timeout;
var __lastTap = 0;
var __tapNum = 0;
var hell = function hell() {
var hell = document.getElementById('hell');
if (hell) {
hell.parentNode.removeChild(hell);
} else {
var style = document.createElement('style');
style.id = 'hell';
style.textContent = 'body{ background:black; -webkit-transform: scale(-1,1); -ms-transform: scale(-1,1); transform: scale(-1,1); -webkit-filter: sepia(0) saturate(0) invert(1) brightness(1) contrast(1); filter: sepia(0) saturate(0) invert(1) brightness(1) contrast(1); }';
document.head.appendChild(style);
}
};
document.addEventListener('dblclick', hell, false);
document.addEventListener('touchend', function () {
var currentTime = new Date().getTime();
var tapInt = currentTime - __lastTap;
++__tapNum;
clearTimeout(__timeout);
if (tapInt < 500 ) {
if (tapInt > 0) {
if(0 == __tapNum%2) {
hell();
}
}
}
__lastTap = currentTime;
});
})();</script>

![支付宝推出“相互保”](http://pic.l2h.site/l2hsite屏幕快照 2018-10-18 下午9.52.50.png “支付宝推出“相互保””) 支付宝蚂蚁保险和信美联合推出了“相互保”,10月16号上线,满足650芝麻积分即可参加。不用投入高额的保险费用,获得包括恶性肿瘤在内的100种大病保障,当参与成员有人患病时,大家共同帮助,参与费用分摊,如果自身不幸患病,也可一次性领取10万元或30万元不等的治疗费用。看到支付宝的推送,推荐一下 :-) 。 具体使用规则如下: 支付宝推出“相互保”

前言

几乎所有Linux的文件操作,例,read、write、mkdir等都会涉及到路径名查找操作。而文件查找对Linux内核来说,主要指的是找到文件路径对应的Dentry节点。其主要过程就是对路径字符串进行一级级解析(以路径名中的.. , . , /等字符作为解析依据),找到路径的最后一级目录。若传入的路径字符串是以/开始的,那么查找会从系统根目录开始。否则,从当前工作目录开始查找。 Linux虚拟文件系统(4)-- 路径名查找 然而,查找过程并非仅仅是对路径名一级级解析和匹配,其中还要考虑到如下细节:

Read more »

今天请假去办事,办完事一时兴起到青石桥转了一圈。和老婆提了两只小萌物回家,就叫”赖宝”和”孬宝”吧?

好吧,叫“一五”和“一十”吧

两只萌物
两只萌物
两只萌物

两个月后的灰兔子,长得真快:


前言

前2章分别介绍了VFS的基本数据结构和初始化流程。本章介绍VFS文件系统的使用。文件系统使用大多是从应用层系统调用开始的,下表是对文件系统系统调用的一个整理。

Linux虚拟文件系统(3)-- VFS系统调用

MOUNT

文件系统可以使用的前提是系统挂载(Mount)成功。初始化过程中,Linux会预先挂载一些支撑系统运行的特殊文件系统,例如,sysfs、rootfs、tmpfs等。本节先介绍初始化过程中Kernel对rootfs和sysfs文件系统的直接挂载,接着以一个典型的文件系统类型(待补充)介绍在用户空间态做挂载后内核的执行流程。

Read more »

突然想起自己以往懵懂的日子,也多次建了个人博客。 随着空间的消失,域名的回收,小站的内容也一去不复返了。 今天突然想起有webarchive这个网站,抱着试试看的心态,居然回收了一些内容回来:

  1. 本科期间的建站– COGT.cn
  2. 读研期间的建站– imlambert.tk/lambert-scape.appspot.com
Read more »

旅行到过国内20+城市,却一直心念念没有到过的东南沿海–江浙沪包邮地区。7月份趁着南航会员日机票打折,全程只要860/人,便订好了重庆往返杭州的机票等待出发。

出门怎么能少的了住宿呢,推荐一家西湖边上清波门旁边的民宿,装修地理位置俱佳也是我们住宿所在地: https://abnb.me/VMyIlGzwMQ

Read more »

写这篇文章的目的,是因为在使用WP-MulticolLinks插件时,发现只能增加一个小工具(Widget)到工具栏。如下图,这样没有办法按照类别增加多列友链小工具。 Wordpress-写插件增加小工具(Widget)的方法 于是对该插件做了修改,可以支持在后台拖动多个多列友情链接小工具。 Wordpress-写插件增加小工具(Widget)的方法 以下是在插件中增加代码实现多列的方法:

  • 注册我们的小工具,在widget界面初始化时可以在后台界面中增加我们的小工具

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    // 以下为在widgets界面初始化时,注册我们自己定义的小工具

    function register_ex_widget() {
    register_widget( 'EX_Widget' );
    }
    add_action( 'widgets_init', 'register_ex_widget' );

    * 定义小工具的类,继承自WP_Widget,这个基类是可以创建多个实例的

    // 自定小工具类,继承WP_Widget
    class EX_Widget extends WP_Widget {
    // 初始化设定,定义小工具的名字等基本信息
    function EX_Widget() {
    $widget_ops = array( 'classname' => 'side_ex', 'description' => '设定多列友情链接');
    $control_ops = array( 'width' => 300, 'height' => 500, 'id_base' => 'side_ex-widget' );
    $this->WP_Widget( 'side_ex-widget', '多列友情链接', $widget_ops, $control_ops );
    }
    // 小工具在工具栏显示的函数,之后介绍具体实现
    function widget( $args, $instance ) {

    }
    // 更新Widget时执行该函数
    function update( $new_instance, $old_instance ) {
    return $instance;
    }
    // Widget菜单的显示时执行该函数
    function form( $instance ) {
    }
    }
  • widget函数实现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    function widget( $args, $instance ) {
    // 以上均为转化参数用于后续传递
    $this_title = empty($instance['title']) ? __('Links', 'wp-multicollinks') : $instance['title'];
    $orderbyParam = 'name';
    if ($instance['orderby'] == 2) {
    $orderbyParam = 'url';
    } else if ($instance['orderby'] == 3) {
    $orderbyParam = 'rating';
    } else if ($instance['orderby'] == 4) {
    $orderbyParam = 'rand';
    }
    $orderParam = 'ASC';
    if ($instance['order'] == 2) {
    $orderParam = 'DESC';
    }
    // 组合参数字符串,用于wp_multicollinks函数执行时使用。wp_multicollinks为显示友情链接的函数,原插件就有定义
    $argsBinding = 'limit=' . $instance['number']
    . '&columns=' . $instance['columns']
    . '&category=' . $instance['category']
    . '&orderby=' . $orderbyParam
    . '&order=' . $orderParam
    . '&navigator=' . ($instance['navigator'] ? 'true' : 'false');
    extract( $args );// $args裡可以拿到所在栏位的资讯,如before_widget、after_widget..等
    echo $before_widget;
    echo "<h2 class=\\"widget-title\\">$this_title</h2>";
    echo '<ul>';
    wp_multicollinks($argsBinding);
    echo '</ul>';
    echo $after_widget;
    }
  • 后台小工具显示及更新函数实现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    // 於後台更新Widget時會做的事
    function update( $new_instance, $old_instance ) {
    $instance = $old_instance;
    //用填写的值给新创建的Widget实例赋值
    $instance['title'] = strip_tags( $new_instance['title'] );
    $instance['number'] = strip_tags( $new_instance['number'] );
    $instance['columns'] = strip_tags( $new_instance['columns'] );
    $instance['category'] = strip_tags( $new_instance['category'] );
    $instance['orderby'] = strip_tags( $new_instance['orderby'] );
    $instance['order'] = strip_tags( $new_instance['order'] );
    $instance['navigator'] = strip_tags( $new_instance['navigator'] );

    return $instance;
    }

    // Widget在後台模組頁的外觀
    function form( $instance ) {
    // 可以用数组设定显示小工具表格的时的预设值
    $defaults = array('title'=>'友情链接');
    $instance = wp_parse_args( (array) $instance, $defaults ); ?>
    // 表项的显示,显示时应该要能加载出之前已经保存的内容
    <p>
    <label for="<?php echo $this->get_field_id( 'title' ); ?>">
    <?php _e('Title: ', 'wp-multicollinks'); ?>
    <input class="widefat" id="title" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $instance['title']; ?>" />
    </label>
    </p>
    <p>
    <label for="<?php echo $this->get_field_id( 'number' ); ?>">
    <?php _e('Number of links to show: ', 'wp-multicollinks'); ?>

    </label>
    <input style="width: 25px;" id="number" name="<?php echo $this->get_field_name( 'number' );?>" type="text" value="<?php echo $instance['number']; ?>" />
    <br />
    <small><?php _e('(0 for ∞)', 'wp-multicollinks'); ?></small>
    </p>
    //以下省略剩余表项代码
    }
Read more »

Wordpress-使用七牛云存储测试域名过期问题解决博客目前空间很小,一直使用的是七牛云做免费图床 今天登录控制台,发现七牛云公告,测试域名会有过期时间。好在七牛提供了绑定自己所需域名的方法,操作步骤如下:

七牛融合 CDN 测试域名(以 clouddn.com/qiniucdn.com/qiniudn.com/qnssl.com/qbox.me 结尾),每个域名每日限总流量 10GB,每个测试域名自创建起 30 个自然日后系统会自动回收,仅供测试使用,详情查看 七牛测试域名使用规范 。点击域名可查看剩余回收时间。

Read more »