mysql命令基础

windows启动mysql服务
运行(windows+r)-> net start mysql
windows关闭mysql服务
运行(windows+r)-> net stop mysql
windows下查看mysql服务是否启动
netstat -ano | findstr 3306
Linux下查看mysql服务是否启动
netstat -ano | grep 3306
登录
mysql -h hostname -u username -p
Example:
mysql -h localhost -u root -p
查看所有数据库
show databases;
设置当前数据库
use <数据库名>;
Example:
use testphp;
查看当前使用数据库
select database();
删除数据库
drop database <数据库名>
查看数据库包含的表
show tables;
查看表结构
describe <表名> ; 或 desc <表名>;
Example:
describe person; 或 desc person;
操作数据库
在设置当前数据库后,即可运行sql语句,操纵数据库
退出
exit 或 快捷键Ctrl + d

git基本操作

 

取得项目的仓库
1)在工作目录中初始化新仓库
git init
2)从现有仓库克隆
git clone git://github.com/realwall/realwall.git [重命名]
这里采用的是git协议,也可以是其他,如http(s)
将当前目录下的文件纳入版本控制
git add *.c
git add README
git commit -m 'initial project version'
检查当前文件状态
文件状态:untracked(未跟踪),unmodified(未修改),modified(已修改),staged(已暂存)
git status
暂存文件
git add README
注:git add是一个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它来跟踪新文件,或者把已跟踪的文件放入暂存区域,还能用于合并时把有冲突的文件标记为已解决状态。
忽略某些文件
在项目任意目录创建文件.gitignore,以忽略某些文件,使它们不会总是出现在未跟踪文件列中。
.gitignore文件示例:
#此为注释,将被git忽略
*.a #忽略左右后缀名为a的文件
!lib.a #lib.a除外
查看已暂存和未暂存的更新
git diff
提交更新
git commit
注:每次提交前,要先用git status命令查看所有修改是否都已暂存
从跟踪列表移除文件
git rm README
移动/重命名文件
git mv file_from file_to
查看当前远程库
git remote [-v]
选项-v显示远程库的地址
添加远程仓库
git remote add [shortname] [url]
注:如果在www.github.com上添加远程仓库,需先在网站上新建一个同名仓库,然后再将本地项目提交到该新建仓库远程地址。
从远程仓库抓取数据
git fetch [remote-name]
推送数据到远程仓库
git push [remote-name] [branch-name]
查看某个远程仓库的详细信息
git remote show [remote-name]
重命名远程仓库
git remote rename [old-remote-name] [new-remote-name]
删除远程仓库
git remote rm [remote-name]

 

npm命令概述

npm (node package manager)是node模块管理工具,类似与Linux下的yum和apt。

常用npm命令(参考:https://npmjs.org/doc/
安装模块
npm install
安装当前目录package.json文件中配置的dependencies模块
安装本地的模块文件
npm install <tarball file>
Example:
npm install ./package.tgz
安装指定URL的模块
npm install <tarball url>
Example:
npm install https://github.com/indexzero/forever/tarball/v0.5.6
安装本地文件系统中指定的目录包含的模块
npm install <folder>
安装并更新package.json中的版本配置
npm install <name> [--save|--save-dev|--save-optional]
其中:
添加--save 参数安装的模块的名字及其版本信息会出现在package.json的dependencies选项中
添加--save-dev 参数安装的模块的名字及其版本信息会出现在package.json的devDependencies选项中
添加--save-optional 参数安装的模块的名字及其版本信息会出现在package.json的optionalDependencies选项中
安装模块的config的tag配置中含有指定tag的版本
npm install <name>@<tag>
Example:
npm install sax@latest
安装模块的指定版本
npm install <name>@<version>
Example:
npm install underscore@1.5.2
安装模块指定版本号范围内的某一个版本
npm install <name>@<version range>
Example:
npm install async@">=0.2.0 <0.2.9"
--force强制拉取远程资源,即使本地已经安装这个模块
Example:
npm install underscore --force
-g或--global全局安装模块,如果没有这个参数,会安装在当前目录的node_modules子目录下
Example:
npm install -g express
显示npm的bin目录
npm bin
设置npm配置
npm config set <key> <value> [--global]
使用--global参数,设置全局配置
Example:
设置代理
npm config set proxy=http://proxy.tencent.com:8080
设置npm的镜像地址
npm config set registry http://npm.oa.com
获取npm配置
npm config get <key>
Example:
获取npm当前镜像地址
npm config get registory
删除npm配置
npm config delete <key>
Example:
删除代理设置
npm config delete proxy
在编辑器中打开npm配置文件
npm config edit
交互式的创建package.json文件
npm init
创建模块的压缩包
npm pack [<pkg> [<pkg> ... ]]
如果没有参数,则npm会打包当前模块目录
发布模块,发布后可通过名称来安装该模块
npm publish <tarball>
npm publish <folder>
其中:
<folder>:包含package.json文件的目录
<tarball>:经过gzip压缩并归档的一个URL或文件路径,该压缩包包含单个目录,且该目录内有package.json文件
删除模块
npm rm <name>
npm r <name>
npm uninstall <name>
npm un <name>
注意:不会删除package.json文件dependencies选项中对应的依赖配置
查找模块
npm search [search terms ..]
npm s [search terms ..]
npm se [search terms ..]
查找匹配查找字符串的模块
更新模块
npm update [-g] [<name> [<name> ... ]]
更新指定name列表中的模块。-g参数更新全局安装的模块。
如果没有指定name,且不是在某个模块内,会更新当前目录依赖的所有包都会被更新(包括全局和模块内);如果当前目录在某个模块目录内,会更新该模块依赖的模块,所以不指定name直接运行npm update时,最好在某个模块内运行,以免更新到其他不想更新的模块。
执行脚本
npm start [<name>]
npm stop [<name>]
npm test [<name>] 等
运行package的start脚本,该脚本写在package.json文件scripts的start字段中。
该字段的值可以是当前系统控制台可执行的脚本,也可以是当前系统可执行文件的路径。
如果不传name参数,则执行当前目录下package.json文件中定义的脚本。
package.json文件
模块的配置文件,详见https://npmjs.org/doc/files/package.json.html

Windows命令行常用命令

console

此处列举了Windows命令行中常用的一些命令,如果不熟悉该命令的用法,可以在键入命令后 跟随 /?,如下所示:
copy /?

arp 显示与修改地址解析协议(ARP)使用的IP地址到网卡物理地址之间的转换表
assoc 显示与修改扩展文件关联
attrib 显示与修改文件属性
bcdedit 显示与管理引导配置数据(BCD)库文件
call 以过程的形式调用脚本或脚本标记
cd 显示目录名或切换当前目录
chkdsk 检查磁盘的错误并显示报告
chkntfs 显示卷状态,在计算机启动时设置或排除一些系统自动检测过程中涉及到的卷
choice 创建一个选择列表,通过该列表,用户可以在批处理脚本中选择相应的选项
cipher 显示当前的加密状态,或在NTFS卷上修改文件夹与文件加密
clip 将命令行工具的输出重定向到Windows剪切板,这个文本输出可以被粘贴到其他程序中
cls 清空控制台窗口
cmd 启动Windows命令解释器的一个新实例
cmdkey 创建,显示和删除保存的用户名和密码
color 设置默认的控制台前景和背景颜色
comp 比较两个文件或文件集的内容
compact 显示或改变NTFS分区上文件的压缩
convert 将FAT卷转换为NTFS
copy 复制或合并文件
date 显示或设置日期
defrag 对硬盘驱动器进行碎片整理
del 删除一个或多个文件
dir 显示目录内的文件与子目录列表
diskcomp 比较两个软盘的内容
doskey 编辑命令行,重新调用命令,创建宏
driverquery 显示所有已安装设备驱动程序及其属性列表
echo 显示信息,或将命令回显打开或关上
edit MS-DOS编辑器
endlocal 在批处理文件中终止环境变量的局部化,所做的环境变量的改动不再仅限于批处理文件中
erase 同del,删除一个或多个文件
esentutl 管理可扩展存储引擎(ESE)数据库,包括活动目录域(ADDS)使用的
eventcreate 在事件日志中创建自定义事件
exit 退出命令解释器或当前批处理脚本
expand 取消文件的压缩
fc 比较两个文件并显示差别
find 在文件中搜索文本字符串
findstr 使用正则表达式在文件中搜索字符串
for 对文件集中的每一文件运行指定命令
forfiles 选择一个或多个文件并对每一文件执行命令
format 对软盘或硬盘进行格式化
ftype 显示或修改用在文件扩展名关联中的文件类型
getmac 显示网络适配器信息
goto 跳转到批处理脚本中标号行
gpupdate 强制进行组策略的后台刷新
hostname 打印计算机名
icacls 显示或修改文件的访问控制表(ACL)
if 在批处理脚本程序中进行条件处理
ipconfig 显示TCP/IP配置
label 创建、改变或删除磁盘的卷标
md 创建目录或子目录(同mkdir)
more 输出一次显示在一个屏幕
mountvol 创建、删除或列出卷挂载点
move 将文件从一个目录移动到同一驱动器上的其他目录
nbtstat 显示协议统计和当前使用NBI的TCP/IP连接
net config server 显示或修改server服务的配置
net continue 恢复暂停的服务
net localgroup 显示、创建、修改或删除本地组帐号
net pause 挂起服务
net print 显示或管理打印任务与共享队列
net session 列出或断开回话
net share 显示或管理共享的打印机与目录
net start 列出或启动网络服务
net statistics 显示工作站与服务器统计信息
net stop 终止服务
net time 显示或同步网络时间
net use 显示或管理远程链接
net user 显示、创建、修改或删除本地用户帐号
net view 显示网络资源或计算机
netsh 调用一个单独的命令提示符,用于对本地计算机或远程计算机上的网络服务配置进行管理
netstat 显示网络连接状态
nslookup 显示DNS状态
path 在当前窗口中,显示或设置可执行文件的搜索路径
pathping 对路由进行追踪并提供丢包信息
pause 挂起对脚本的处理,直至有键盘输入
ping 确定是否可以建立网络连接
popd 切换到由pushd保存的目录
print 打印文本文件
prompt 改变Windows命令提示符
pushd 保存当前目录,之后切换到新目录
rd 移除目录
reg add 向注册表添加一个子健或条目
reg copy 将某注册表条目复制到本地或远程系统上的特定健路径
reg delete 从注册表中删除一个子健或条目
reg query 列出某注册表健下的条目与子健名(如果有)
reg restore 将保存的子健与条目写会到注册表
reg save 将指定子健、条目、值的副本保存到某个文件中
regsvr32 注册或取消对DLL的注册
ren 对文件进行重命名
route 管理网络路由表
runas 以特定用户许可权限运行程序
set 显示或修改Windows环境变量,也可以用于在命令中评估数字表达式
setlocal 在批处理文件中开始变量的局部化
shift 移动脚本中可替换的位置
shutdown 关闭或重启计算机
sort 对输入进行排序
start 启动一个新的命令shell窗口,用来运行指定的程序或命令
systeminfo 显示详尽的配置信息
taskkill 根据进程名和进程ID终止运行中的进程
tasklist 根据进程名或进程ID列出所有运行中的进程
time 显示或设置系统时间
timeout 在批处理脚本中设置超时周期或者等待按键
title 为命令提示窗口设置标题
tracert 显示计算机之间的联通路径
type 显示文本文件内容
ver 显示Windows版本
where 显示匹配搜索模式的文件列表
whoami 显示当前用户的登录与安全信息

 

 

 

CentOS下搭建svn服务器


1.1
 安装SVN服务器端
yum install subversion
1.2 查看是否安装成功
svnserve --version
创建SVN版本库
mkdir /opt/svn
mkdir /opt/svn/repos
svnadmin create /opt/svn/repos
3 配置SVN
创建版本库后,在/opt/svn/repos目录下会生成配置文件目录conf
cd /opt/svn/repos/conf
该目录下有 authz passwd svnserve.conf 三个配置文件
3.1 svnserve.conf文件
分别配置以下5项(顶格写,行开始处不留空格,下同。注意:要在[general]下,不是文件结尾):
anon-access = none 设置未认证用户无访问权限
auth-access = write 设置认证用户具有写权限
password-db = passwd 指定用户文件,该文件保存用户名和密码
authz-db = authz 指定权限配置文件,该文件可以细粒度的控制版本库某个文件或目录的访问
realm = /opt/svn/repos 指定版本库的认证域(认证命名空间),即在登录时提示的认证域名称
3.2 passwd文件
设置用户名和密码
realwall = 111111
3.3 authz文件

[groups]
project_p = pm
project_s = server1,server2,server3
project_c = client1,client2,client3
project_t = test1,test1,test1

[/]
realwall = rw
@project_p = rw
* =

[/server]
@project_p = rw
@project_s = rw
* =

[/client]
@project_p = rw
@project_c = rw
* =

[/doc]
@project_p = rw
@project_s = r
@project_c = r
@project_t = r
* =

说明:以上信息表示,只有project_p用户组有根目录的读写权。r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该目录有读写权限。最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。这个很重要,一定要加上!

配置authz时,注意svnserve启动参数-r所指定的目录,设repos1版本库路径为/opt/svn/repos1。
a.当-r直接指定某版本库(称为单库svnserve模式),即svnserve -d -r /opt/svn/repos1
这种情况下一个svnserve只能为一个版本库工作,authz配置成
[repos1:/]
user1 = rw
就是错的,而应该是
[/]
user1 = rw
使用类似这样的URL:svn://192.168.0.1/ 即可访问repos1。
b.当-r指定到版本库的上级目录(称之为多库svnserve方式),即svnserve -d -r /opt/svn
这种情况,一个svnserve可以为多个版本库工作,这时如果想限制指定库的指定目录,就应该指定具体的库,像这样
[repos1:/]
如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录。
使用类似这样的URL:svn://192.168.0.1/project1 即可访问project1。
此外,对中文目录进行权限控制时,要将权限文件authz改为无BOM的utf-8格式。

停止svnserve

ps aux | grep svnserve

kill -9 pid(即正在运行的svnserve对应的pid)

参考资料
http://blog.csdn.net/tianlesoftware/article/details/6119231
http://svndoc.iusesvn.com/svnbook/1.4/svn.serverconfig.svnserve.html
authz文件权限控制 http://doc.iusesvn.com/show-8-1.html

MATLAB读写视频文件

做视频实验最基本的就是视频的读写操作了,写了两个简单的函数来读写视频。

读视频函数readVideo输入读取文件的路径+文件名,输出帧结构数组,用官方的话说就是 Array of frame structures, each of which contains fields cdata and colormap.

%// read vedio
function source = readVideo(filePath)
readerobj = VideoReader(filePath);

%// Read in all video frames.
vidFrames = read(readerobj);

%// Get the number of frames.
% numFrames = get(readerobj, 'NumberOfFrames');
[d1, d2, d3, d4] = size(vidFrames);

%// Create a MATLAB movie struct from the video frames.
for k = 1 : d4
     source(k).cdata = vidFrames(:,:,:,k);
     source(k).colormap = [];
end

写视频函数,cutVideo截取源视频的某部分,写到目标路径,写入的视频格式为avi

%// cut and write video file 
%// srcFile can be avi or mpg, destFile to be avi
function cv = cutVideo(srcFile, destFile, startIndex, endIndex)

source = readVideo(srcFile);
source2 = source(startIndex:endIndex);
writerObj = VideoWriter(destFile);
open(writerObj);
writeVideo(writerObj,source2);
close(writerObj);

cv = source2;

 

参考文章:

http://www.mathworks.cn/cn/help/matlab/ref/videowriter.writevideo.html

JavaScript数组方法map

map方法是我最喜欢的方法了,虽然简单,但功能强大,用起来非常方便。在ECMPAScript 5中也添加了这个方法。

map()方法功能:将调用的数组的每个元素传递给指定的函数,并返回一个数组,该数组由函数的返回值构成。

注:map返回的是新数组,它不修改调用的数组。

为了兼容不支持map的浏览器,developer.mozilla.org上给出了map兼容性解决方法。

// Production steps of ECMA-262, Edition 5, 15.4.4.19
// Reference: http://es5.github.com/#x15.4.4.19
if (!Array.prototype.map) {
  Array.prototype.map = function(callback, thisArg) {

    var T, A, k;

    if (this == null) {
      throw new TypeError(" this is null or not defined");
    }

    // 1. Let O be the result of calling ToObject passing the |this| value as the argument.
    var O = Object(this);

    // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length".
    // 3. Let len be ToUint32(lenValue).
    var len = O.length >>> 0;

    // 4. If IsCallable(callback) is false, throw a TypeError exception.
    // See: http://es5.github.com/#x9.11
    if (typeof callback !== "function") {
      throw new TypeError(callback + " is not a function");
    }

    // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
    if (thisArg) {
      T = thisArg;
    }

    // 6. Let A be a new array created as if by the expression new Array(len) where Array is
    // the standard built-in constructor with that name and len is the value of len.
    A = new Array(len);

    // 7. Let k be 0
    k = 0;

    // 8. Repeat, while k < len
    while(k < len) {

      var kValue, mappedValue;

      // a. Let Pk be ToString(k).
      //   This is implicit for LHS operands of the in operator
      // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.
      //   This step can be combined with c
      // c. If kPresent is true, then
      if (k in O) {

        // i. Let kValue be the result of calling the Get internal method of O with argument Pk.
        kValue = O[ k ];

        // ii. Let mappedValue be the result of calling the Call internal method of callback
        // with T as the this value and argument list containing kValue, k, and O.
        mappedValue = callback.call(T, kValue, k, O);

        // iii. Call the DefineOwnProperty internal method of A with arguments
        // Pk, Property Descriptor {Value: mappedValue, : true, Enumerable: true, Configurable: true},
        // and false.

        // In browsers that support Object.defineProperty, use the following:
        // Object.defineProperty(A, Pk, { value: mappedValue, writable: true, enumerable: true, configurable: true });

        // For best browser support, use the following:
        A[ k ] = mappedValue;
      }
      // d. Increase k by 1.
      k++;
    }

    // 9. return A
    return A;
  };      
}