手动修复grub2启动

在easybcd手欠点了保存设置,然后我的fedora24就悲剧了。。还好easybcd可以安装grub启动项。
重启进入grub
grub> uuid //查看硬盘分区
grub> root=(hd0,1) //进入第一个分区,等同于 cd /
grub> kernel /vmlinuz-4.7.7-200.fc24.x86_64 root=/dev/mapper/fedora_localhost-root //配合tab自动补全
//root可以参考grub.cfg
grub> cat (hd0,1)/grub2/grub.cfg //嗯,必须要绝对路径
grub> initrad /initramfs-4.7.7-200.fc24.x86_64.img //同样参考grub.cfg kernel必须在initrad前面,而且root参数必须正确
grub> boot //启动
进入系统后,记得重新安装grub2配置
$ grub2-install /dev/sda

wordnet-lite 开发小结

需求很简单,解决很暴力。
前端很大一部分是纯javascript,没有第三方依赖的库,框架。嗯,借鉴了jQuery的 $ 选择元素。。。

css写在了index里,减少了个http请求

所有js都在一个立即执行的匿名函数里,虽然不符合jslint,但是完全封闭,安全些。

动态加载html用的大部分是dom函数,虽然有点乱,但比直接写清晰些html。

所有click事件统一处理,彻底解决了不要在循环里定义函数。。。

关于#!这个问题,用的很正常的url,js判断location.pathname,然后处理路由。很暴力,完全无视seo。

分页,因为get的数据不大,全部存到localStorage中,直接slice

异常处理,基本都是日常调试的时候加的。不能说测试。。没有测试文件。。。

国际化也很暴力,字段存到对象里,根据navigator.language判断,如果不支持用户的语言,直接默认英文

很好的利用了localStorage,减少了很多不必要的请求。所以速度也飞快。

请求ajax时加了个mask遮罩层,想加动画来着,不过,估计动画比整个程序都大,算了

页面很长的时候,虽然没加goTOP,但是对用户体验还是有很大的提升。不信找个百度百科页面,把页面拉到下面,然后打字试试。
还是看代码吧

document.addEventListener("scroll", function () {
    if (window.scrollY !== 0) {
        $("input.word").blur();
    } else {
        $("input.word").focus();
    }
});

后端php负责api,http服务器负责伪静态重定向。。。

后端还处理了很重要的东西,base标签的值
没有它,ajax还有history全部瘫痪。。有了它,不用到处去配置url

<base href="/<?=APP_HOME?>/">

遗憾的是没能折腾个简单的前端模板。嗯,api也是完全暴露的,没有任何认证过滤限制机制,数据量很小,而且后端做的不错。。。等把算法学精了再加吧

记一次备份 重装 恢复

备份

$ mysqldump --all-databases --lock-all-tables -uroot -p > data.sql
$ tar cf html.tar /var/www/

重装

$ vi /etc/apt/sources.list
$ wget https://www.dotdeb.org/dotdeb.gpg
$ apt-key add dotdeb.gpg
$ apt-get update
$ apt-get install nginx php5 mysql-server php5-mysql php5-mcrypt php5-curl  varnish php5-memcache memcached python-pip fish zsh htop dnsutils curl
$ php -v
$ service apache2 restart
$ passwd
$ pip install shadowsocks
$ apt-get upgrade

恢复
安装mysql-server后,直接恢复整个数据库,成功.
执行 /usr/bin/mysql_secure_installation后,删除了一些账户.添加/etc/mysql/debian.cnf中的账户,并添加权限.
如果启动mysql服务出现”Cannot load from mysql.proc. The table is probably corrupted。”需要对数据库数据进行升级,mysql_upgrade -uroot -p 请提前删除/var/mysql/performance_schema/.

scp上传文件如果意外中断了,rsync -P 后面参数一样,可以续传.以防万一,最好sha256sum校验下.
安装包,如果强制中断了,可以执行dpkg -P packgae_name,再重新安装

隐藏apache版本
/etc/apache2/apache2.conf
ServerTokens ProductOnly
ServerSignature Off
隐藏php版本
/etc/php5/apache/php.ini
expose_php Off

GNS3 1.5.1 安装小记

所需文件:
GNS3
Oracle VM VirtualBox
GNS3 VM

一、安装虚拟机以及GNS3
注意,安装GNS3的时候,选择要安装的组件,要慎重选择,可以选择安装。也可以提前安装wiresharke 以及 Solorwinds。如果不提前安装,在这个过程中是要下载的,下载速度很慢很慢。当然也可以取消下载。安装npcap前注意备份下系统变量path……不知道gns3什么时候更新依赖,所以保险起见,或者事先安装新版本的npcap。
二、导入GNS3 VM
解压双击导入,就这么简单
三、配置GNS3
打开GNS3,选择Edit-Preferences
选择Server,这里不要本地服务器,就要远程。远程设置成那个虚拟机的ip就好,记得要输用户名和密码,都是gns3
选择远程的一个原因是,方便。
如果是本地的,本地要打开两个进程,而且打开gns3的时候也会自动启动虚拟机,好麻烦。。远程的自己打开虚拟机随用随开,想休眠就休眠。没那么多顾忌。
四、配置GNS3 VM
虚拟机两块网卡,第一块最好与主机共享,然后选择支持dhcp的那块。第二块是网络地址转换(NAT),反正两块中必须有个nat。
ssh进虚拟机,这个虚拟机只有nano,凑活用吧。 下面代码是乱入的,保存为keygen.py

#! /usr/bin/python
print "************************************************************************"
print "Cisco IOU License Generator v2 - Kal 2011, python port of 2006 C version"
import os
import socket
import hashlib
import struct

# get the host id and host name to calculate the hostkey
hostid=os.popen("hostid").read().strip()
hostname = socket.gethostname()
ioukey=int(hostid,16)

for x in hostname:
    ioukey = ioukey + ord(x)

print "hostid=" + hostid +", hostname="+ hostname + ", ioukey=" + hex(ioukey)[2:]

# create the license using md5sum
iouPad1='\x4B\x58\x21\x81\x56\x7B\x0D\xF3\x21\x43\x9B\x7E\xAC\x1D\xE6\x8A'
iouPad2='\x80' + 39*'\0'

md5input=iouPad1 + iouPad2 + struct.pack('!Q', ioukey)[4:] + iouPad1
iouLicense=hashlib.md5(md5input).hexdigest()[:16]

print "************************************************************************"
print "Add the following text to ~/.iourc:"
print "[license]\n" + hostname + " = " + iouLicense + ";\n"

print "************************************************************************"
print "You can disable the phone home feature with something like:"
print " echo '127.0.0.127 xml.cisco.com' >> /etc/hosts"
print "************************************************************************"

在虚拟及中安装python-minimal,否则运行python keygen.py的时候也要提示你安装。
然后检查两个文件
nano ~/.iourc
nano /etc/hosts
如果对了,那licence就搞好了。否则的话就自己新建吧。
1.5.1的web地址是ip:3080,之前的版本是ip:8000
然后就可以愉快的玩耍了
对了,送点福利
www.networklab.in/downloads/
sobek.su/Cisco/IOS/
自己注册cisco也是可以下载ios的

ecshop 2.7.3 从安装开始兼容高版本php

接上篇 ecshop 2.7.3 向上兼容至php7
首先修改/install/index.php

//line 95
//|| !function_exists('mysql_connect'))
|| !function_exists('mysqli_connect'))

这样在环境检查的时候,底部就可以继续下一步
按照前面的文章,把所有改修改的修改了,也可以暂时跳过这一步,无视那些Deprecated信息,只修改mysqli相关
再修改/install/includes/lib_installer.php

//那个lib_auto_installer.php就没有用处。。。
//首先是gd_version静态调用 line 27
function get_gd_version()
{
    include_once(ROOT_PATH . 'includes/cls_image.php');
    $image = new cls_image;
    //return cls_image::gd_version();
    return $image->gd_version();
}
//然后检测支持mysql line87
//$mysql_enabled = function_exists('mysql_connect') ? $_LANG['support'] : $_LANG['not_support'];
$mysql_enabled = function_exists('mysqli_connect') ? $_LANG['support'] : $_LANG['not_support'];
//line 160
//$filter_dbs = array('information_schema', 'mysql');
$filter_dbs = array('information_schema');
//line 162
//$conn = @mysql_connect($db_host, $db_user, $db_pass);
$conn = @mysqli_connect($db_host, $db_user, $db_pass, 'ecshop');//这个最后一个参数指定为ecshop的数据库就行,也可以为任意存在的数据库
//line 172 这个函数修改完,就可以正常搜索数据库了
//while (($row = mysql_fetch_assoc($result)) !== false)
while (($row = mysqli_fetch_assoc($result)) != false)
//line 533 这个在安装demo数据的时候,可能要嵌套创建目录,所以修改下
//if (!mkdir($target, 0777))
if (!mkdir($target, 0777, true))

接下来,就可以和ecshop愉快的玩耍了。