王骏的博客 http://blog.okbase.net/JO2000 DOS批处理BAT实现扫描局域网所有机器IP、MAC地址 http://blog.okbase.net/JO2000/archive/56429.html JO2000 2020-3-20 10:04:00 将下面的代码复制保存到BAT文件里,IP地址作相应修改:

for /l %%i in (1,1,255) do (
    start ping 192.168.1.%%i
)
arp -a>>%temp%\log.log
type %temp%\log.log|findstr "192.168.1."

 

]]>
华为交换机Huawei配置用户telnet http://blog.okbase.net/JO2000/archive/56427.html JO2000 2020-3-13 16:08:00 aaa
local-user admin password cipher xxxxx 用户名和密码
local-user admin privilege level 15 用户等级,15是最高等级
local-user admin service-type telnet 服务模式
qu

 

user-interface vty 0 4
authentication-mode aaa
protocol inbound telnet

 

]]>
创建pip.ini并设置镜像网址的批处理 http://blog.okbase.net/JO2000/archive/56423.html JO2000 2020-3-9 14:19:00 这是创建pip.ini并设置镜像网址的批处理,如果pip.ini不存在则建立,如果pip.ini已经存在则不做修改。

将下面的批处理复制到createpip.bat批处理中并运行即可。

命令如下:

@echo off
c:
cd %USERPROFILE%
if not exist %USERPROFILE%\pip (
	md %USERPROFILE%\pip
)
set pipfile=%USERPROFILE%\pip\pip.ini
if not exist %pipfile% (
    echo [global]>%pipfile%
	echo timeout=300>>%pipfile%
	echo index-url=https://pypi.mirrors.ustc.edu.cn/simple>>%pipfile%
	echo [install]>>%pipfile%
	echo trusted-host=tsinghua.edu.cn>>%pipfile%
	echo %pipfile%+"创建成功"
) else ( echo %pipfile%+"已经存在,请手工修改index-url" )
pause

其它几个国内的镜像网址:

  1. 阿里云:https://mirrors.aliyun.com/pypi/simple/
  2. 中国科学技术大学:https://pypi.mirrors.ustc.edu.cn/simple
  3. 清华:https://pypi.tuna.tsinghua.edu.cn/simple
  4. 豆瓣:http://pypi.douban.com/simple/
  5. 华中理工大学 : http://pypi.hustunique.com/simple
  6. 山东理工大学 : http://pypi.sdutlinux.org/simple
]]>
Windows自带IIS和PHPStudy和平共处的方法 http://blog.okbase.net/JO2000/archive/56408.html JO2000 2020-2-20 17:47:00 PHPStudy在启动或重启的时候apache,nginx服务的时候会自动将w3svc服务停止,导致IIS停止。需要手工将IIS重新启动。

为了使PHPStudy不干扰系统自带的IIS,我们可以在PHPStudy安装并配置好后通过命令行启动nginx,方法如下:
顺便解决php-cgi崩溃自动恢复的问题,先下载xxfpm,
xxfpm下载网址:https://github.com/78/xxfpm
放到D:\phpStudy\PHPTutorial\xxfpm目录下,

建立批处理,内容如下:

D:
CD D:\phpStudy\PHPTutorial\nginx
D:\phpStudy\PHPTutorial\nginx\nginx.exe -s stop
start D:\phpStudy\PHPTutorial\nginx\nginx.exe -c D:\phpStudy\PHPTutorial\nginx\conf\nginx.conf
D:\phpStudy\PHPTutorial\xxfpm\xxfpm.exe "D:\phpStudy\PHPTutorial\php\php-5.4.45-nts\php-cgi.exe -c D:\phpStudy\PHPTutorial\php\php-5.4.45-nts\php.ini" -n 5 -i 127.0.0.1 -p 9000

开机后自动运行该批处理即可。

]]>
JS定时器setInterval的使用 http://blog.okbase.net/JO2000/archive/56405.html JO2000 2020-2-18 23:17:00 如果重复调用setInterval而没有用clearInterval清理,容易导致页面卡死,所以要记得用clearInterval清理。

参考如下代码:

<script>
// 测试代码1
var interval, i = 0;
​
function fn() {
   console.log(i++);
}
​
function clickBtn() {
   interval && clearInterval(interval);
   interval = setInterval(fn, 1000);
}
</script>

 

<script>
// 测试代码2
var cnt, handle;

$('#btn').click(function () {
  cnt = 0
  if (handle !== undefined) {
    clearInterval(handle)
  }
  handle = setInterval(function() {
    console.log(cnt++)
  }, 1000)
})
</script>
]]>
MySQL恢复InnoDB表的时候出现错误解决一例 http://blog.okbase.net/JO2000/archive/56011.html JO2000 2018-12-20 10:51:00 现象:

恢复时将整个库复制到data目录下,
打开think_picture表的时候出现错误:


1146 - Table 'test.think_picture' doesn't exist

 

看库目录下think_picture.ibd 和 think_picture.frm是存在的。
这是表空间不一致引起的。

 

解决:
alter table `think_picture` discard tablespace;
alter table `think_picture` import tablespace;

]]>
node.js初体验(windows环境) http://blog.okbase.net/JO2000/archive/55992.html JO2000 2018-12-15 22:56:00 下载node.js
https://nodejs.org/download/release/
解压到 d:\nodejs目录下
将d:\nodejs加入到环境变量PATH下面

下载NPM模块管理
https://github.com/isaacs/npm/tags
解压到d:\npm

node d:\npm\cli.js install -gf

Hello Node.js

var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello Node.js\n');
}).listen(2000, "127.0.0.1");
console.log('Server running at http://127.0.0.1:2000/');

打开浏览器访问 http://127.0.0.1:2000 将看到返回的页面。


------------------------------------------------

npm install -g node-gyp

编辑 binding.gyp ,放在d:\nodejs\node_modules\node-gyp 目录下,内容如下:
{
"targets": [
{
"target_name": "binding",
"sources": [ "src/binding.cc" ]
}
]
}

在d:\nodejs\node_modules\node-gyp 目录下,执行
node-gyp rebuild

 

]]>
PHP数组常用操作备忘 http://blog.okbase.net/JO2000/archive/55963.html JO2000 2018-12-5 21:22:00 添加元素
1)方式1
$arr = array();
$arr[] = 1;
$arr[] = 2;

 

2)方式2
array_push($arr,1,2,3);

 

3)在头部添加
array_unshift($arr, 'joe', 'hank');

 

4)任意位置插入
$arr = array('A', 'B', 'C');
$arr2 = 'abc';
$t = array_splice($arr, 1, 0, $arr2);


array_splice方法,参数一是被操作的数组,参数二是操作元素的索引值,参数三是长度,参数四是要替换成的元素。该方法的效果是删除$arr中以1为起始位置,长度0的连贯的元素,然后用$arr2补上。假如长度为0,那么效果就相当于在指定索引值处插入指定元素了。

 

删除元素
$array = array(0 => "a", 1 => "b", 2 => "c");
array_splice($array, 1, 1); //删除了b

 

 

数组遍历
用foreach(速度最快):
$urls= array('aaa','bbb','ccc','ddd'); 
foreach ($urls as $url){ 
echo "This Site url is $url! <br />"; 
}

 

用for:
for ($i= 0;$i< count($urls); $i++){ 
$str= $urls[$i]; 
echo "This Site url is $str.<br />"; 
}

]]>
JavaScript面向对象编程 http://blog.okbase.net/JO2000/archive/55962.html JO2000 2018-12-5 19:22:00 非闭包实现

var MyObject = function() {
    // 私有变量
    var private_v1;
    // 私有方法
    function private_func() {}
    // 特权方法
    this.getName = function() {};
    this.setName = function() {};
    // 公有属性
    this.id = 200;
    // 公有方法
    this.public_func = function() {};
    // 构造器
    this.setName(name);
}
 
MyObject.prototype = {
    // 静态公有属性
    static_public_v1 : true,
    // 静态公有方法
    static_public_func : function() {}
};

闭包实现

var MyObject = (function() {
    // 静态私有变量
    var static_private_v1 = 0;
    // 静态私有方法
    function static_private_func() {}
    // 创建类
    function _myobject(id, name) {
        // 私有变量
        var private_v1;
        // 私有方法
        function private_func() {}
        // 特权方法
        this.getName = function() {};
        this.setName = function() {};
        // 公有属性
        this.id = 200;
        // 公有方法
        this.public_func = function() {};
        // 构造器
        this.setName(name);
    }
     
    // 构建原型
    _myobject.prototype = {
        // 静态公有属性
        static_public_v1 : true,
        // 静态公有方法
        static_public_func : function() {}
    };
     
    // 返回类
    return _myobject;
})();

实例化

var test = new MyObject();
test.static_public_func()
]]>
ui-grid 鼠标移到该行显示高亮 http://blog.okbase.net/JO2000/archive/55959.html JO2000 2018-12-4 22:29:00 Html:

<!doctype html>
<html ng-app="app">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular-touch.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular-animate.js"></script>
<script src="http://ui-grid.info/docs/grunt-scripts/csv.js"></script>
<script src="http://ui-grid.info/docs/grunt-scripts/pdfmake.js"></script>
<script src="http://ui-grid.info/docs/grunt-scripts/vfs_fonts.js"></script>
<script src="http://ui-grid.info/release/ui-grid.js"></script>
<link rel="stylesheet" href="http://ui-grid.info/release/ui-grid.css" type="text/css">
<link rel="stylesheet" href="main.css" type="text/css">
</head>
<body>

<div ng-controller="MainCtrl">
<div ui-grid="gridOptions" class="grid" ui-grid-pinning></div>
</div>

<script src="app.js"></script>
</body>
</html>

 

JS:
var app = angular.module('app', ['ngTouch', 'ui.grid', 'ui.grid.pinning']);

app.controller('MainCtrl', ['$scope', '$http', '$log', function ($scope, $http, $log) {
$scope.gridOptions = {};

$scope.gridOptions.columnDefs = [
{ name:'id', width:50, enablePinning:false },
{ name:'name', width:100, pinnedLeft:true },
{ name:'age', width:100, pinnedRight:true },
{ name:'address.street', width:150 },
{ name:'address.city', width:150 },
{ name:'address.state', width:50 },
{ name:'address.zip', width:50 },
{ name:'company', width:100 },
{ name:'email', width:100 },
{ name:'phone', width:200 },
{ name:'about', width:300 },
{ name:'friends[0].name', displayName:'1st friend', width:150 },
{ name:'friends[1].name', displayName:'2nd friend', width:150 },
{ name:'friends[2].name', displayName:'3rd friend', width:150 },
];
$scope.gridOptions.rowTemplate = '<div ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.uid" ng-mouseover="grid.appScope.hoveredIndex = rowRenderIndex" ng-mouseleave="grid.appScope.hoveredIndex = null" ui-grid-one-bind-id-grid="rowRenderIndex + \'-\' + col.uid + \'-cell\'" class="ui-grid-cell" ng-class="{\'ui-grid-row-header-cell\': col.isRowHeader, \'your-hover-class\': grid.appScope.hoveredIndex === rowRenderIndex}" role="{{col.isRowHeader ? \'rowheader\' : \'gridcell\'}}" ui-grid-cell></div>';

$http.get('https://cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/data/500_complex.json')
.success(function(data) {
$scope.gridOptions.data = data;
});
}]);


CSS:
.your-hover-class {
color:red;
}

]]>