分类 技术 下的文章

typecho添加按文章修改时间排序的独立页面

搜索了一圈都没有发现现成的例子,动手自己改了一个。
总体方法参考了不安装插件添加归档页面的方法typecho添加接口方法

这个添加归档页面的方法中使用了typecho内核预制一个Widget接口,Widget_Contents_Post_Recent,位于typecho/var/Widget/Contents/Post中的Recent.php中。
仿照Recent.php在同目录下添加Update.php文件,内容如下

<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;

class Widget_Contents_Post_Update extends Widget_Abstract_Contents
{
    /**
     * 执行函数
     *
     * @access public
     * @return void
     */
    public function execute()
    {
        $this->parameter->setDefault(array('pageSize' => $this->options->postsListSize));

        $this->db->fetchAll($this->select()
        ->where('table.contents.status = ?', 'publish')
        ->where('table.contents.modified < ?', $this->options->time)
        ->where('table.contents.type = ?', 'post')
        ->order('table.contents.modified', Typecho_Db::SORT_DESC)
        ->limit($this->parameter->pageSize), array($this, 'push'));
    }
}

主要修改了接口名称Widget_Contents_Post_Update,数据库字段table.contents.modified

然后在主题目录typecho/usr/themes/xxx/下添加模版,page-update.php,内容如下

<?php    
   /**  
    * update    
    * @package custom   
    */    
$this->need('header.php');?>   
<div class="col-8" id="main">
    <div class="res-cons">
            <article class="post">
                <div class="post-content-pages">
                    <?php $this->widget('Widget_Contents_Post_Update', 'pageSize=30')->to($archives);   
            $year=0; $mon=0; $i=0; $j=0;   
            $output = '<div id="archives">';   
            while($archives->next()):   
            $year_tmp = date('Y',$archives->modified);   
             $mon_tmp = date('m',$archives->modified);   
             //var_dump($year_tmp);   
             $y=$year; $m=$mon;   
             if ($mon != $mon_tmp && $mon > 0) $output .= '</ul></li>';   
             if ($year != $year_tmp && $year > 0) $output .= '</ul>';   
             if ($year != $year_tmp) {   
                 $year = $year_tmp;   
                 $output .= '<div class="al_year">'. $year .' 年</div><ul class="al_mon_list">'; //输出年份   
             }   
             $output .= '<li>'.date('m/d',$archives->modified).'<a href="'.$archives->permalink .'">'. $archives->title .'</a></li>'; //输出文章日期和标题   
        endwhile;   
        $output .= '</ul></li></ul></div>';   
        echo $output;   
        ?>
                </div>
            </article>
    </div>
</div>
<?php $this->need('sidebar.php'); ?>
<?php $this->need('footer.php'); ?>

主要修改了模版名称update,接口名称Widget_Contents_Post_Update,变量名称modified

最后在typecho后台添加独立页面选择update这个模版。

RouterOS裸机安装后由32位系统升级为64位

RouterOS裸机安装是32位系统,只能使用2gb内存,并且要在routeros的kvm模块下安装虚拟机只能是32位虚拟机系统,并且虚拟机内存不能大于2gb。

升级64位系统方法

  • 下载官方未正式发布的6.31版系统, 解压后把所有.npk文件上传到routeros根目录
  • 然后在System,Packages下按降级按钮,把系统降级到6.31
  • 重启后,在System,Resources,Hardware下会看到有x86_64,钩上后重启routeros
  • 最后在System,Packages下选择自动升级到最新版本

查看System,Resources,可以看到Architecture Name是x86_64,并且Total Memory为系统安装的所有内存。

在线视频下载方法,m3u8在线视频下载合并

网页在线视频发展至今,一般播放方式有:1,IE时代activex插件和flash播放器;2,js或者h5播放器

目前大部分在线视频网站都使用js或者h5播放器,这又分为整个视频文件和视频文件切片播放,这里介绍复杂的切片视频下载合并。

首先视频切片原理是将原视频切成几秒的小片段,一般后缀名为ts,并生成一个这些小片段的播放列表,一般后缀名为m3u8,网页嵌入js或者h5播放器,然后播放器载入m3u8的播放列表,按顺序下载视频播放。这样的好处一是加快视频载入,而是防止视频被完整下载。

下面介绍这种m3u8在线视频下载方法。

以最近很火的电视剧《亲爱的,热爱的》为例,盗版网站拿到样片后为了网站流量只能在线观看,以这个网站为例
首先下载一个m3u8下载器,地址
chrome浏览器右键检查-网络-过滤关键字m3u8
网页
在m3u8文件上右键复制链接
打开下载器,把上面的链接粘贴在文件/链接一栏,文件名填写这个视频的名称,这里是第41集填写41,然后按添加
然后点击全部开始,任务进行的同时可以继续向任务列表中添加。
下载器
可以修改下载器同时下载数量,默认是3,建议不要超过20,否则会被服务器封。
当所有视频分片下载完成后,下载器会把所有分片合成一个文件,并命名为上面写当名称。

这个下载器大概有三个部分组成,作者自己写的m3u8解析器,aria2(下载),ffmpeg(合成)

esxi备份配置文件

esxi单机运行时如果系统崩溃,虽然重装系统只要十几分钟,虚拟机可以放在其他硬盘或者nas上,但是配置文件还是会丢失,所以备份配置文件很有必要。
备份配置文件大致有四种方法
1是vSphere CLI
2是vSphere CLI for Windows
3是vSphere PowerCLI
4是ESXi 命令行
这里介绍第四种
首先打开ssh,登陆到esxi

要将已更改的配置与持久存储同步,请运行以下命令: vim-cmd hostsvc/firmware/sync_config

要备份 ESXi 主机的配置数据,请运行以下命令:

vim-cmd hostsvc/firmware/backup_config

注意:此命令应输出 Web 浏览器可能用于下载此文件的 URL。 例如: Bundle can be downloaded at :
http://*/downloads/123456/configBundle-xx.xx.xx.xx.tgz

其中 * 是指主机的 IP/FQDN。

备份文件还位于 /scratch/downloads 目录中,形式为 configBundle-HostFQDN.tgz

使用filezilla或者其他工具备份上述打包配置文件到安全地方。

恢复配置文件

注意:还原配置数据时,此主机的内部版本号必须与创建备份文件的主机的内部版本号匹配,并且主机的 UUID (可通过 "esxcfg-info
-u" 命令获得)应与创建备份文件的主机的 UUID 一致。

使用数字 1 作为强制选项忽略不匹配的 UUID。例如: vim-cmd hostsvc/firmware/restore_config 1
/tmp/configBundle.tgz 运行以下命令,将主机置于维护模式:

vim-cmd hostsvc/maintenance_mode_enter 将备份配置文件复制到主机可访问的位置,并运行以下命令:

在此情况下,配置文件复制到主机的 /tmp 目录。有关详细信息,请参见 Using SCP to copy files to or from
an ESX host (1918)。 vim-cmd hostsvc/firmware/restore_config
/tmp/configBundle.tgz

注意:执行此命令将在命令完成后启动主机的自动重新引导。

其他方式参考官方说明

超微主板修改ipmi风扇转速报警值

超微主板ipmi风扇控制的最低转速报警值是800,适合的是服务器的暴力风扇,要使用家用散热风扇的话需要合理修改这个值。
以猫头鹰风扇NF-A14 PWM为例,最低转速为300 RPM,这里修改为200rpm
ubuntu18.04系统为例:

查看风扇转速值

apt-get install ipmitool
ipmitool -I lanplus -U ADMIN -H 192.168.1.10 sensor list

修改风扇FAN1的转速值

ipmitool -I lanplus -U ADMIN -H 192.168.1.10 sensor thresh FAN1 lower 200 200 200