MacOS使用截图的方法

MacOS使用截图的方法:

1.Command+shift+3:全屏截图
2.Command+shift+4:鼠标选定区域截图

​按键

解说

Command-Shift-3

将整个屏幕拍下并保存到桌面。

Command-Shift-Control-3

将整个屏幕拍下并保存到剪贴板(Clipboard),可以Command+V直接粘贴到如Photoshop等软件中编辑

Command-Shift-4

将屏幕的一部分拍下并保存到桌面。按下这个组合键后,光标会变为一个十字,你可以拖拉来选取拍摄区域。

Command-Shift-Control-4

将屏幕的一部分拍下并保存到剪贴板。

Command-Shift-4再按空格键

这时光标会变为一个照相机图标,点击可拍下当前窗口或菜单或Dock以及图标等,只要将照相机图标移动到不同区域(有效区域会显示为浅蓝色)点击.

Command-Shift-Control-4再按空格键

将选取的窗口或其他区域的快照保存到剪贴板。

使用第二种截图,还有两个小技巧

1.  使用Command+shift+4后,按下空格键,鼠标会变成一个小相机,这时候你使用鼠标对一个窗口点击一下鼠标左键,你已经对一个窗口进行了截图。

2. 按Command+shift+4 后 ,画一个抓取的区域,不要松开鼠标,接着:

1. 按住空格可以移动这个区域
2. 按住 Shift后,将锁定X 或者 Y轴进行拖动
3. 按住 Option后 将按照区域圆心进行放大.

最后所有截图将直接显示在桌面上。

 

 

 

解决CentOS安装过程中出现的Kdump安装失败

在安装完成重启后开始进行一些初始化的配置,在最后一项是配置Kdump,但是蛋疼的问题出现了。

看到这个“没有足够的内存配置kdump”(在英文界面下提示的是“insufficient memory to configure kdump”),但是我后来分配了4G内存给虚拟机,但是还是提示这个错误。后来想起kdump还有一个图形界面配置的命令,所以在终端下输入system-config-kdump命令,会弹出下面的界面:

选择Target settings,会弹出下面的界面:

我第一次点开的时候没有红色圈住的那部分,后来就点了那个“Reload”按钮,然后再点击了“apply”按钮,在终端下输入service kdump restart终于启动成功了!真是太爽了!

赶紧测试一下,输入echo “c”>/proc/sysrq-trigger,界面会出现一些信息,类似下面一样:

过一会系统就会自动重启,这个时候就说明你的kdump已经配置成功了,重启之后/var/crash目录下就可以看到有一个文件夹,文件夹的名字是日期,里面就是你需要的core文件。至此终于神奇的误打误撞成功了。如果你还没成功,就把那几个“apply”、“reload”,“enable”,“disable”按钮来回点,多试几次,说不定也像我一样成功了。

最后总结一下整个过程:

1、完全安装CentOS 6.2,所有的包都选,一个也不要落下。
2、安装按成后忽略“没有足够的内存配置kdump”(在英文界面下提示的是“insufficient memory to configure kdump”)这个错误,进入系统后打开终端输入system-config-kdump命令,如果没有,先安装。
3、在界面中先点击reload按钮,然后在点击“apply”让配置生效,重启系统,测试看是否成功。

 

安装CentOS时提示kdump安装失败

由于测试需要,我在Ubuntu的虚拟机下安装了CentOS。安装过程中一切顺利,结果在启动的时候发现kdump启动失败。
听名字感觉kdump像个debug工具。上网搜索了一下,得知:
[codesyntax lang=”text”]

kdump是在系统崩溃、死锁或者死机的时候用来转储内存运行参数的一个工具和服务。
打个比方,如果系统一旦崩溃那么正常的内核就没有办法工作了,
在这个时候将由kdump产生一个用于capture当前运行信息的内核,
该内核会将此时的内存中的所有运行状态和数据信息收集到一个dump core
文件中以便于Red Hat工程师分析崩溃原因,一旦内存信息收集完成,系统将自动重启。
这和以前的diskdump,netdump是同样道理。只不过kdump是RHEL5特有的。

[/codesyntax]
虽然不影响设备的正常使用,启动不了老是觉得不舒服。经过我的多次研究,我是这样修复的:

编辑/etc/sysconfig/kdump文件:
设置MKDUMPRD_ARGS和KDUMP_COMMANDLINE

MKDUMPRD_ARGS="/sbin/mkdumprd"(默认时这个参数的空的)
KDUMP_COMMANDLINE="ro root=LABEL=xxx"

其中xxx是root所在的分区的卷标。查看root卷标的命令是:
ls /etc/disk/by-label

保存,然后重启。

重启之后如果还不行:
安装kexec-tools
[codesyntax lang=”bash”]

yum install kexec-tools

[/codesyntax]
其实我不知道安装这个软件是不是必须的,
对于一般用户来说,没有必要开kdump。
所以建议初次时候通过ntsysv禁止其随开机启动

nginx使用三方模块方法

nginx文件非常小但是性能非常的高效,这方面完胜apache,nginx文件小的一个原因之一是nginx自带的功能相对较少,好在nginx允许第三方模块,第三方模块使得nginx越发的强大. 在安装模块方面,nginx显得没有apache安装模块方便,当然也没有php安装扩展方便.在原生的nginx,他不可以动态加载模块,所以当你安装第三方模块的时候需要覆盖nginx文件.接下来看看如何安装nginx第三模块吧.

nginx第三方模块安装方法:
[codesyntax lang=”text”]

./configure --prefix=/你的安装目录  --add-module=/第三方模块目录

[/codesyntax]
以安装pagespeed模块实例

在未安装nginx的情况下安装nginx第三方模块
[codesyntax lang=”text”]

# ./configure --prefix=/usr/local/nginx-1.4.1 \
--with-http_stub_status_module \
--with-http_ssl_module --with-http_realip_module \
--with-http_image_filter_module \
--add-module=../ngx_pagespeed-master --add-module=/第三方模块目录
# make
# make isntall
# /usr/local/nginx-1.4.1/sbin/nginx

[/codesyntax]

在已安装nginx情况下安装nginx模块
[codesyntax lang=”text”]

# ./configure --prefix=/usr/local/nginx-1.4.1 \
 --with-http_stub_status_module \
 --with-http_ssl_module --with-http_realip_module \
 --with-http_image_filter_module \
 --add-module=../ngx_pagespeed-master
# make
# /usr/local/nginx-1.4.1/sbin/nginx -s stop
# cp objs/nginx /usr/local/nginx/sbin/nginx
# /usr/local/nginx-1.4.1/sbin/nginx

[/codesyntax]

相比之下仅仅多了一步覆盖nginx文件.

总结,安装nginx安装第三方模块实际上是使用–add-module重新安装一次nginx,不要make install而是直接把编译目录下objs/nginx文件直接覆盖老的nginx文件.如果你需要安装多个nginx第三方模块,你只需要多指定几个相应的–add-module即可.

备注:
重新编译的时候,记得一定要把以前编译过的模块一同加到configure参数里面.

nginx提供了非常多的nginx第三方模块提供安装,地址http://wiki.nginx.org/3rdPartyModules

HTTPD启动绑定端口失败

问题描述:

在apache中绑定非http标准端口时,一直出现如下的错误提示:

[root@localhost ~]# /etc/init.d/httpd start
Starting httpd: (13)Permission denied: make_sock: could not bind to address 0.0.0.0:8087
no listening sockets available, shutting down
Unable to open logs

原因分析:

该问题是由SELinux 引起的

解决方案:

 

1、快速解决,修改selinux级别(不推荐)

vi /etc/sysconfig/selinux 
SELINUX=enforcing =>SELINUX=disabled 
reboot

 

2、从根本上解决(推荐)

根据自己的需求在selinux中添加需要指定的端口
前提需要先安装semanage(Centos6.0默认没有安装该应用)
a)安装方式如下:

[root@localhost /]# yum provides /usr/sbin/semanage
[root@localhost /]# yum whatprovides /usr/sbin/semanage
[root@localhost /]# yum -y install policycoreutils-python
[root@localhost /]# semanage

b)使用semanage添加apache侦听的端口

查看现在的支持http的端口有哪些

[root@localhost /]# semanage port -l|grep http 
为http服务添加新的端81 

[root@localhost /]# semanage port -a -t http_port_t -p tcp 81 
查看添加的结果 

[root@localhost /]# semanage port -l|grep http

 

Git 乱码处理方法

乱码情景1

在cygwin中,使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如274\232\350\256\256\346\200\273\347\273\223.png的乱码。

解决方案:

在bash提示符下输入:

[codesyntax lang=”text”]

git config --global core.quotepath false

[/codesyntax]
core.quotepath设为false的话,就不会对0×80以上的字符进行quote。中文显示正常。

乱码情景2

在MsysGit中,使用git log显示提交的中文log乱码。

解决方案:

设置git gui的界面编码

[codesyntax lang=”text”]

git config --global gui.encoding utf-8

[/codesyntax]
设置 commit log 提交时使用 utf-8 编码,可避免服务器上乱码,同时与linux上的提交保持一致!

[codesyntax lang=”text”]

git config --global i18n.commitencoding utf-8

[/codesyntax]
使得在 $ git log 时将 utf-8 编码转换成 gbk 编码,解决Msys bash中git log 乱码。

[codesyntax lang=”text”]

git config --global i18n.logoutputencoding gbk

[/codesyntax]
使得 git log 可以正常显示中文(配合i18n.logoutputencoding = gbk),在 /etc/profile 中添加:

[codesyntax lang=”text”]

export LESSCHARSET=utf-8

[/codesyntax]

乱码情景3

在MsysGit自带的bash中,使用ls命令查看中文文件名乱码。cygwin没有这个问题。

解决方案:

使用?lls --show-control-chars?命令来强制使用控制台字符编码显示文件名,即可查看中文文件名。

为了方便使用,可以编辑?/etc/git-completion.bash?,新增一行?alias ls="ls --show-control-chars"

Git push错误及解决方法

在使用Git Push代码到数据仓库时,提示如下错误: [codesyntax lang=”text”]

[remote rejected] master -> master (branch is currently checked out)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To git@192.168.1.X:/var/git.server/.../web
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push Test refs to 'git@192.168.1.X:/var/git.server/.../web'

[/codesyntax]

这是由于git默认拒绝了push操作,需要进行设置,修改.git/config添加如下代码:

[codesyntax lang=”text”]

[receive]
    denyCurrentBranch = ignore

[/codesyntax]

注意上面修改的是代码仓库的config,而不是本地分支的config

在初始化远程仓库时最好使用 git –bare init   而不要使用:git init

如果使用了git init初始化,则远程仓库的目录下,也包含work tree,当本地仓库向远程仓库push时,   如果远程仓库正在push的分支上(如果当时不在push的分支,就没有问题), 那么push后的结果不会反应在work tree上,  也即在远程仓库的目录下对应的文件还是之前的内容,必须得使用git reset –hard才能看到push后的内容.

push.default is unset的解决方案

在执行 git push 时看到如下消息: [codesyntax lang=”text”]

warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

[/codesyntax]

经百度后,得知 ‘matching’ 参数是 Git 1.x 的默认行为,其意是如果你执行 git push 但没有指定分支,它将 push 所有你本地的分支到远程仓库中对应匹配的分支。 而 Git 2.x 默认的是 simple,意味着执行 git push 没有指定分支时,只有当前分支会被 push 到你使用 git pull 获取的代码。

根据提示,修改git push的行为:
[codesyntax lang=”text”]

git config --global push.default matching

[/codesyntax]再次执行 git push 得到解决。

Git乱码及解决方法

1. 系统乱码

项目中的编码统一设置为UTF-8编码。
设置系统的语言设置为 zh_UTF-8,把
export LANG=zh_CN.UTF-8
保存到~/.profile文件中。
$ env|grep LANG
LANG=zh_CN.UTF-8

2. 使用 git add 命令添加文件名含中文字符的文件时

乱码类似:
\316\304\261\276\316\304\265\265.txt
解决方案:
编辑C:\Git\etc\inputrc文件中对应的行,
查找以下2行,并修改其值,
原先:
set output-meta off?set convert-meta on
改为:
set output-meta onset convert-meta off

3. 使用git log查看含有中文的log信息时

乱码类似:
<E4><BF><AE><E6><94><B9><E6><96><87><E6><9C><AC><E6><96><87><E6><A1><A3>
解决方案:
在Bash提示符下输入:
git config –global i18n.commitencoding utf-8
git config –global i18n.logoutputencoding gbk
注:设置commit提交时使用utf-8编码,可避免Linux服务器上乱码;同时设置在执行git log时将utf-8编码转换成gbk编码,以解决乱码问题。因为windows系统默认编码为gbk。
编辑C:\Git\etc\profile文件,添加如下一行:
export LESSCHARSET=utf-8
注:以使git log可以正常显示中文(需要配合:i18n.logoutputencoding gbk)
如果系统设置了:
export LANG=zh_CN.UTF-8
则日志输出编码设置为utf-8
git config –global i18n.logoutputencoding utf-8

4. 使用ls命令查看含有中文的文件名乱码时

乱码类似:
????.txt
解决方案:
使用?ls –show-control-chars?命令来强制使用控制台字符编码显示文件名,即可查看中文文件名。
为了方便使用,可以编辑 C:\Git\etc\git-completion.bash 文件,添加如下一行:
alias ls=”ls –show-control-chars”

5. 在Git Gui中查看UTF-8编码的文本文件时

乱码类似:
锘夸腑鏂囨枃妗£
解决方案:
在Bash提示符下输入:
git config –global gui.encoding utf-8
注:通过上述设置,UTF-8编码的文本文件可以正常查看,但是GBK编码的文件将会乱码,所以还是没有从根本上解决问题。
可行的方法之一为:将所有文本文件的编码统一为UTF-8或GBK,然后设置相应的gui.encoding参数为utf-8或gbk。

6. git status乱码

git config –global core.quotepath false
或者编辑git配置文件:vi ~/.gitconfig
[core]
quotepath = false
作用:没有这一条,$git status输出中文会显示为UNICODE编码。

7. 回车符设置

git config –global core.autocrlf false
git config –global core.safecrlf true
或者编辑git配置文件:vi ~/.gitconfig
[core]
autocrlf = false
safecrlf = true

8. 用户信息设置

  • git config –global user.name KangLin

10.git config –global user.email kl222@126.com
或者编辑git配置文件:vi ~/.gitconfig
[user]
??? name = KangLin
??? email = kl222@126.com

11. 设置git默认编辑器

12.git config –global core.editor vim
或者编辑git配置文件:vi ~/.gitconfig
[core]
????? editor = vim

13. 彩色的 git 输出:

git config? –global color.ui true
或者编辑git配置文件:vi ~/.gitconfig
[color]
??? ui = true

14. 参考资料:

 

Windows安装Pycrypto

最近想着利用pysftp将本地的图片全部上传到站点服务器上去

结果却是发现他每次都提示找不到Crypto模块

没办法,只好上网找了   但是苦逼的是安装pyCrypto的时候  要么就报找不到.h头文件,要么就直接编译的时候给报错

报找不到.h文件的解决方法:

1. 直接从VS库里面将对应的.h文件放到python的include文件夹里面

2. 更改python脚本,让其在cl.exe后面添加新目录 –I <.h文件所在目录>

 

编译时错误:

[codesyntax lang=”text”]
D:\Apps\Python\module\pycrypto-2.6.1>setup.py install
running install
running build
running build_py
running build_ext
warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.

building ‘Crypto.Random.OSRNG.winrandom’ extension
W:\PROGRA~2\Microsoft Visual Studio 9.0\VC\bin\cl.exe /c /nologo /Ox /MD /W3 /GS – /DNDEBUG -Isrc/ -Isrc/inc-msvc/ -ID:\Apps\Python\include -ID:\Apps\Python\PC /Tcsrc/winrand.c /Fobuild\temp.win-amd64-2.7\Release\src/winrand.obj
winrand.c
D:\Apps\Python\include\winnt.h(3019) : error C2061: 语法错误 : 标识符“PCONTEXT”
D:\Apps\Python\include\winnt.h(3020) : error C2059: 语法错误 : “}”
D:\Apps\Python\include\winbase.h(1481) : error C2061: 语法错误 : 标识符“LPCONTEXT”
D:\Apps\Python\include\winbase.h(1481) : error C2059: 语法错误 : “;”
D:\Apps\Python\include\winbase.h(2222) : error C2146: 语法错误 : 缺少“)”(在标识符“lpContext”的前面)
D:\Apps\Python\include\winbase.h(2222) : error C2081: “LPCONTEXT”: 形参表中的名称非法
D:\Apps\Python\include\winbase.h(2222) : error C2061: 语法错误 : 标识符“lpContext”
D:\Apps\Python\include\winbase.h(2222) : error C2059: 语法错误 : “;”
D:\Apps\Python\include\winbase.h(2223) : error C2059: 语法错误 : “)”
D:\Apps\Python\include\winbase.h(2230) : error C2143: 语法错误 : 缺少“)”(在“*”的前面)
D:\Apps\Python\include\winbase.h(2230) : error C2143: 语法错误 : 缺少“{”(在“*”的前面)
D:\Apps\Python\include\winbase.h(2231) : error C2059: 语法错误 : “)”
error: command ‘W:\\PROGRA~2\\Microsoft Visual Studio 9.0\\VC\\bin\\cl.exe’ failed with exit status 2
[/codesyntax]

 

找了很久 都没有找到解决办法

后来一想,算了虽然是开源的 但至少网络上已经人家已经编译好的程序 就直接进行复制得了
也省得自己耗费大量的精力去处理这些错误

功夫不负有心人,总算让我找到Windows下使用VS2008或者VS2010编译的PyCrypto应用了

 

PyCrypto 2.6:

 

PyCrypto 2.3:

 

PyCrypto 2.1:

 

好了 总算是大功告成了  暂时就先这样处理吧

同时 也欢迎诸位大神,如果能解决那个编译时错误的话 也敬请和我联系

 

本文参考至:  The Voidspace Python Module