背景:我都之前说php7对wordpress提升不大,没有一个兄弟支持我,都说提升大,你看这文章,qq会员那边的一个实践更多证实了我的观点。

                                                                               ......
在benchmark(测试程序)中得到非常好的结果,实现JIT后性能比PHP5.5提升了8倍。然而,当他们把这个优化放入到实际的项目WordPress(一个开源博客项目)中,却几乎看不见性能的提升。原因在于测试项目的代码量比较少,通过JIT产生的机器码也不大,而真实的WordPress项目生成的机器码太大,引起CPU缓存命中率下降(CPU Cache Miss)。
                                                                               ......

对apache的工作模式分析很透彻:
Prefork、Worker、Event三者粗略介绍:

(1)prefork,多进程模式,1个进程服务于1个用户请求,成本比较高。但是,稳定性最高,不需要支持线程安全。
(2)worker,多进程多线程模式,1个进程含有多个worker线程,1个worker线程服务于1个用户请求,因为线程更轻量,成本比较低。但是,在KeepAlive场景下,worker资源会被client占据,无法响应其他请求(空等待)。
(3)event,多进程多线程模式,1个进程也含有多个worker线程,1个worker线程服务于1个用户请求。但是,它解决了KeepAlive场景下的worker线程被占据问题,它通过专门的线程来管理这些KeepAlive连接,然后再分配“工作”给具体处理的worker,工作worker不会因为KeepAlive而导致空等待。

博文摘自 : http://geek.csdn.net/news/detail/77849
背景:先升级wordpress最新版本,WP到最新的4.5.2版本。,再修改/etc/ImageMagick/policy.xml里修改配置文件屏蔽,官方给予的方法,禁止ImageMagick即可。

如果我们有关注服务器、网站安全方面信息的肯定在上周有看到关于ImageMagick安全漏洞的相关文章,如果我们的服务器、VPS是自己运维的那就需要注意这方面的问题。如果我们的WEB环境有安装过ImageMagick组件,那需要检查是否有漏洞的存在一起升级和解决问题。

同时,上午肯定很多网友有得到阿里云服务器安全提示,存放在上面的WordPress程序有WP_Image_Editor_Imagick漏洞问题,需要登入后台补丁等等的暗示。如果需要在线补丁则需要升级阿里云的骑士专业版,当然是需要收费的,其实我们即便要补丁安全也没有必要这样操作。因为这个WP_Image_Editor_Imagick漏洞本不是WP程序的,而是如果我们服务器环境中有安装ImageMagick且没有补丁的才会被利用。

第一、检查是否有ImageMagick漏洞

实践如下:
yum install ImageMagick  
[root@iZ25dcp92ckZ htdocs]# convert 'https://jackxiang.com"|ls "-la' OUT.png      
convert: not authorized `//jackxiang.com"|ls "-la' @ error/constitute.c/ReadImage/454.
convert: no images defined `OUT.png' @ error/convert.c/ConvertImageCommand/3046.

被我屏蔽了。

如果提示有执行成功且没有错误,则说明有漏洞,我们需要升级组件。如果提示错误,或者我们压根没有安装ImageMagick,那就没有问题。

第二、补丁WP_Image_Editor_Imagick

如果是自己架设的服务器,且有安装ImageMagick存在漏洞最好的方法是升级最新版本。临时解决WP漏洞的方法只需要修改一行代码就可以。

1、找到wp-includes/media.php 2898行

2、修改文件

$implementations = apply_filters( 'wp_image_editors', array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' ) );
将2个库优先级对调就可以了。这样我们在阿里云后台再验证下就可以看到被修复。

总结,这个仅仅是临时解决方法,最为直接的方法还是要升级WP到最新版本,以及ImageMagick如果有安装则需要升级。

PS:补充信息

如果我们是虚拟主机,这个就需要主机提供商负责任了,咨询服务商是否有安装且是否有更新到最新版本的补丁。如果有安装ImageMagick且升级到最新版本一般是没有问题的。这里,根据官方提供的解决方法,如果我们是自建服务器,也可以通过这个方法解决。

1、修改配置文件

/etc/ImageMagick/policy.xml
2、添加脚本


这个官方给予的方法,禁止ImageMagick。

来自:https://wuzhuti.cn/1339.html
win10下很多软件的拖拽功能都失效了,也就是说不能把文件拖动到软件上直接打开,必须要用软件里的打开功能,这是非常麻烦的。经过几天搜索在网上找到了一个折中的方法,有着鱼和熊掌不能兼得的可惜。
    运行中输入regedit,打开注册表编辑器
    在下面的键值:
    HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > Windows > CurrentVersion > Policies > System
    找到EnableLUA将1改成0,然后重启。
win10drag
    重启后会发现拖拽问题正常了,但是win10自带的商店和浏览器Edge将不能打开,这可能是权限问题。

来自:http://lf.lnu.edu.cn/detail.jsp?id=42172
origin 是默认的远程版本库名称
你可以在 .git/config 之中进行修改

事实上 git push origin master 的意思是 git push origin master:master (将本地的 master 分支推送至远端的 master 分支,如果没有就新建一个)
在本地组策略编辑器界面,依次展开左侧面板用户配置-〉管理模板-〉windows组件-〉任务计划程序,点击选中“任务计划程序”,在右侧窗口找到并蛋黄及打开“禁止拖放”。
背景:运维这个活其实是系统偏重的活,鄙人一直没做过运维,干了不到一个月,感觉发现其实也有点打杂的感觉,但都是围绕系统、权限、分配多机器、调度、维修、协调、沟通,特别是strace在启动一些服务时启动不了,用它就能很好的定位问题在哪儿。
下面这个主要是讲常用 的一个命令,如下:
运维利器:万能的strace:(批注:这个哥们写得好,赞一个:跟踪进程启动,跟踪命令的执行,根据进程号跟踪,启动时都访问了哪些文件。)
http://www.yunweipai.com/archives/7334.html?utm_source=tuicool&utm_medium=referral

1)跟踪进程启动,主要是系统调用:
strace -tt -f  ./some_server ../conf/some_server.conf

2)通过它启动要跟踪的进程:
strace ls -lh /var/log/messages

3)在运行的some_server服务:
pidof some_server
17553

得到其pid 17553然后就可以用strace跟踪其执行:
strace -p 17553

strace常用选项:
从一个示例命令来看:
strace -tt -T -v -f -e trace=file -o /data/log/strace.log -s 1024 -p 23489

-tt 在每行输出的前面,显示毫秒级别的时间
-T 显示每次系统调用所花费的时间
-v 对于某些相关调用,把完整的环境变量,文件stat结构等打出来。
-f 跟踪目标进程,以及目标进程创建的所有子进程
-e 控制要跟踪的事件和跟踪行为,比如指定要跟踪的系统调用名称
-o 把strace的输出单独写到指定的文件
-s 当系统调用的某个参数是字符串时,最多输出指定长度的内容,默认是32个字节
-p 指定要跟踪的进程pid, 要同时跟踪多个pid, 重复多次-p选项即可。


实例:跟踪nginx, 看其启动时都访问了哪些文件
strace -tt -T -f -e trace=file -o /data/log/strace.log -s 1024 ./nginx



附录:
使用strace追踪多个进程:
http://www.ttlsa.com/tools/use-strace-to-track-multiple-processes/

如何使用strace+pstack利器分析程序性能:
http://www.cnblogs.com/bangerlee/archive/2012/04/30/2476190.html
strace_pstack]# gcc server.c -g -o server
strace_pstack]# gcc client.c -g -o client
[root@iZ25dcp92ckZ strace_pstack]# ./server
listening...
hello
hello
hello
hello

[root@iZ25dcp92ckZ strace_pstack]# ./client

ps -elf | grep server | grep -v grep
0 S root     2327417130  0  80   0 -  1041 hrtime 14:58 pts/1    00:00:00 ./server
[root@iZ25dcp92ckZ strace_pstack]# strace -o server.strace -Ttt -p 23274
Process 23274 attached
能看到生成的server.strace 脚本里时间相差1;s不对,nanosleep:


用pstack脚本找到是哪儿调用了nanosleep系统函数导致慢了1s:
[root@iZ25dcp92ckZ strace_pstack]# sh pstack.sh 23274
#0  0x00007f75e5bec480 in __nanosleep_nocancel () from /lib64/libc.so.6
#1  0x00007f75e5bec334 in sleep () from /lib64/libc.so.6
#2  0x0000000000400813 in ha_ha ()
#3  0x0000000000400aea in main ()


[root@iZ25dcp92ckZ strace_pstack]# vi pstack.sh


这个命令是用来把filename备份成filename.bak,等同于命令

cp filename filename.bak

这里利用的是bash的brace expansion(大括号扩展)功能,
按照bash手册(man bash)所述:
bash支持{a,b,c}这样的扩展,比如a{d,c,b}e 会被扩展成ade ace abe
所以
filename{,.bak}被扩展成filename filename.bak也就好理解了



原文http://www.haw-haw.org/node/1507



如果要批量备份就需要用 find 与 cp 向结合,cp 也有批量备份的功能,但是功能太单一,如 -b -S 选项:

    .复制时产生备份文件
     cp -b a.txt tmp/
    .复制时产生备份文件,尾标 ~1~格式
     cp -b -V t   a.txt /tmp    
    .指定备份文件尾标    
     cp -b -S _bak a.txt /tmp

find  /home/user -name date* –mtime 1 –exec cp {} /backup/{} .backup /;

  注意最后一封号 “  ; ” 必须有。


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


经常会在博客或者论坛看到类似下面的命令 大括号扩展  Brace expansion  {     }  shell   作用

cp /etc/httpd/httpd.{,.bakup}
或者是

mv resume{z,}.doc
那么,在uinx / linux  shell命令中是什么意思?起什么作用呢?

{  } 并没有什么实际的含义,但是却可以作为Brace expansion(大括号扩展或叫做花括号扩展)而经常用于产生各种组个。以下是翻译自 GNU/BASH  man page  的内容:

Brace expansion(大括号扩展或叫做花括号扩展) 是用来随机产生字符串组合的机制。这种机制类似于文件的扩展名,但是并不需要存在响应的文件。Brace expansion(大括号扩展或叫做花括号扩展)模式是一可选的preamble(前导字符),后面跟着一系列逗号分隔的字符串,包含在一对花括号中, 再后面是一个可选的postscript(打印编程语言)。preamble(前导字符)被添加到花括号中的每个字符串前面,postscript(打印编程语言)被附加到每个结果字符串之后, 从左到右进行扩展。  花括号扩展可以嵌套。扩展字符串的结果没有排序;而是保留了从左到右的顺序。


1.如,在终端中输入下面命令:

echo foo{1,2,3}.txt
输出如下:


foo1.txt foo2.txt foo3.txt
foo1.txt foo2.txt foo3.txt


2.也可以使用下面附加的实例,去在命令中“创建”一个参数,以节省输入的时间,提高工作效率:


    echo file.txt{,.bak}

    echo file-{a..d}.txt

    echo mkdir -p /apache-jail/{usr,bin,lib64,dev}

    echo cp httpd.conf{,.backup}

    echo mv delta.{txt,doc}

    echo file.txt{,.bak}

    echo file-{a..d}.txt

    echo mkdir -p /apache-jail/{usr,bin,lib64,dev}

    echo cp httpd.conf{,.backup}

    echo mv delta.{txt,doc}


3.可以使用Brace expansion(大括号扩展或叫做花括号扩展)来复制,重命名文件,或者是备份文件,还可以是创建目录等。在下面这个习惯性使用的的例子中,将   file1.txt  备份为  file2.txt.bak  ,输入:


cp   -v  file1.txt file1.txt.bak
cp   -v  file1.txt file1.txt.bak


如果使用Brace expansion,节省时间,则输入:


cp    -v    file1.txt{,.bak}
cp    -v    file1.txt{,.bak}


输出如下:

file1.txt -> file1.txt.bak

更多大括号扩展实例如下:

4. 如果我们执行:


$ cp  /etc/apt/sources.list          /etc/apt/sources.list.bak
$ cp  /etc/apt/sources.list          /etc/apt/sources.list.bak


这两个 /etc/apt/sources 部分相同,为了少输入两次/etc/apt/sources ,大括号扩展参数。还有平时重命名,备份文件,创建链接时候,都可以使用大括号扩展参数的方法提高效率。

大括号扩展,即大括号包围的,用逗号隔开的参数会扩展为独立的多个参数。


$ cp /etc/apt/sources.{list,list.bak}
$ cp /etc/apt/sources.{list,list.bak}


Shell 在解释时会自动将后面的参数扩展成两个,就变成了和上面一样的完整命令。

当然,还可更简单,将   list  也考虑进去,在逗号前什么都不写,如下:


$ cp /etc/apt/sources.list{,.bak}
$ cp /etc/apt/sources.list{,.bak}


这样逗号前面没东西,那么参数就保持原来的不变,逗号后面的照样扩展。
From:
http://blog.csdn.net/bluecy/article/details/6529685
http://www.dabu.info/brace-expansion-cp-and-mv-with-shell-role-in.html
背景:大学学习c语言够久,但对浮点数是如何存储和读取实现的,突然想到,觉得有点意思,查了下发现还是有点意思的,特摘录如下。
类型float大小为4字节,即32位,内存中的存储方式如下:
符号位(1 bit) 指数(8 bit)尾数(23 bit)
123.456
+1.23456E+2
类型double大小为8字节,即64位,内存布局如下:
符号位(1 bit)指数(11 bit) 尾数(52 bit)
浮点数float保存的字节格式如下:
地址 +0 +1 +2 +3
内容 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
这里
S 代表符号位,1是负,0是正
E 偏移127的指数(exp),二进制阶码=(EEEEEEEE)-127。
M 24位的尾数(mantissa)。保存在23位中,只存储23位,最高位固定为1。此方法用最较少的位数实现了
较高的有效位数,提高了精度。
零是一个特定值,指数是0 尾数也是0。
浮点数-12.5作为一个十六进制数0xC1480000保存在存储区中,这个值如下: 地址 +0 +1 +2 +3
内容0xC1 0x48 0x00 0x00
浮点数和十六进制等效保存值之间的转换相当简单。下面的例子说明上面的值-12.5如何转换。
浮点保存值不是一个直接的格式,要转换为一个浮点数,位必须按上面的浮点数保存格式表
所列的那样分开,例如:
地址 +0 +1 +2 +3
格式 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
二进制 11000001 01001000 00000000 00000000
十六进制 C1 48 00 00
从这个例子可以得到下面的信息:
符号位是1 表示一个负数
指数是二进制10000010或十进制130,130减去127是3,就是实际的指数。 尾数是后面的二进制数1001 0000 0000 0000 0000 000
在尾数的左边有一个省略的小数点和1,这个1在浮点数的保存中经常省略,加上一个1和小数
点到尾数的开头,得到尾数值如下:
1.1001 0000 0000 0000 0000 000
接着C语言小数的内存表示,根据指数调整尾数.一个负的指数向左移动小数点.一个正的指数向右移动小数点.因为 指数是3,尾数调整如下:
1100.10000000000000000000
2/3页
结果是一个二进制浮点数,小数点左边的二进制数代表所处位置的2的指数,例如:1100表示
(1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)+ 1*2^(-1)=12.5。
因为设置的符号位表示这数是负的,因此十六进制值0xC1480000表示-12.5。
7F7FFFFF
0111 1111 0111 1111 1111 1111 1111
+
1111 11102=25410
254-127=127
1.111 1111 1111 1111 1111 1111*2127
1111 1111 1111 1111 1111 1111*2104
=(10000 0000 0000 0000 0000 00002-1) *2104
=(224-1) *2104
=3.4E+38
推导出float精度为7位
1111 1111 1111 1111 1111 1111
2^24-1
16777215
1.6777215E7
1.23456789
1111

来自:http://wapwenku.baidu.com/view/958f563c580216fc700afd10.html?ssid=0&from=844b&uid=0&pu=usm@0,sz@1320_1002,ta@iphone_2_5.1_2_6.6&bd_page_type=1&baiduid=D64FEF90FEB247AE244A958817E6D953&tj=www_normal_4_0_10_title#1
背景:最后卡开机画面了,无论咋apt-get重新安装都不行,Ubuntu16.04下没有声音的解决方法,平时用Firefox或Chrome下的Flash插件。最后重新安装后好了。
          由于这个笔记本太老了华硕A8F,还是大学时候的老笔记本了,后来装了Ubuntu16.04发现它运行并不快,再就是Ubuntu16.04的后面版本Ubuntu17.04吧,也是一个过渡版本,
          于是,装了一个Ubuntu17.04的ubuntu 17.04 gnome3版本,觉得性能要好一些,可能和这个gnome3是C写的有关吧,再就是Ubuntu想用这个KDE做手机端,现在没有做得起来,还是回到了gnome3,我觉得是一个明智的选择,其实现在很少有人装Linux,再就是很多装Linux的人都是GEEK,笔记本配置都不会高到哪儿去这才是真实情况啊。
         Ubuntu17.04吧,这个版本的声卡不发声,于是按最后的方法做了一下配置好了,折腾了好久,不容易,这也是开源的一个实实在在的问题,如果自由微软收费合理又系统不错,还是用Win10吧,前提你有钱买好点的硬件。



Intel GMA950,http://blog.chinaunix.net/uid-2595338-id-2139474.html
http://ubuntuforums.org/showthread.php?t=205449
(1)检查系统

aplay -l


应该能看到安装的声卡设备,否则应该就是驱动安装失败了。

etual@Hikari:~$ aplay -l
**** PLAYBACK硬件设备列表 ****
卡 0: Intel [HDA Intel], 设备 0: ALC662 Analog [ALC662 Analog]
  子设备: 0/1
  子设备:#0: subdevice #0
卡 0: Intel [HDA Intel], 设备 1: ALC662 Digital [ALC662 Digital]
  子设备: 1/1
  子设备:#0: subdevice #0

(2)检查一下系统设备是否有检测到声卡

lspci -v


应该能看到类似的:
00:1b.0 Audio device: Intel Corporation NM10/ICH7 Family High Definition Audio Controller (rev 02)
  Subsystem: ASUSTeK Computer Inc. NM10/ICH7 Family High Definition Audio Controller
  Flags: bus master, fast devsel, latency 0, IRQ 29
  Memory at feb3c000 (64-bit, non-prefetchable) [size=16K]
  Capabilities: [50] Power Management version 2
  Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
  Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
  Capabilities: [100] Virtual Channel
  Capabilities: [130] Root Complex Link
  Kernel driver in use: snd_hda_intel
  Kernel modules: snd_hda_intel

(3)通过ubuntu的APT-GET安装,好吧,我就是通过这个搞回来的驱动,推荐!
首先,将原来的卸载干净

sudo apt-get --purge remove linux-sound-base alsa-base alsa-utils

千万注意,因为依赖关系,多删除了部分东西,必须装回来,否则重启后就进不了桌面了。
出现进入不了桌面一是ctrl alt f到f7,再就是恢复模式了:http://m.blog.csdn.net/article/details?id=9199939

sudo apt-get install gdm ubuntu-desktop

下面就是安装了

sudo apt-get install linux-sound-base alsa-base alsa-utils


恩,经过漫长的下载安装,重启后,我的UBUNTU又在发出声音了,yeah~~~
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
最后就是修改一下音量,顺便保存一下:

alsamixer

调节好之后保存

sudo alsactl store 0


到此就完毕了,继续听歌,yeah~~~
有兴趣的看看原文吧,还有不少东西的呢:
http://ubuntuforums.org/showthread.php?t=205449



没有声音的原因是因为当前用户没有使用声卡相关设备的权限:

ls -l /dev/snd 查看了一下,发现用户权限为 root 用户组为audio

解决方法为将当前用户加入audio组就可以了。

使用usermod -a -G audio username

就可以解决啦。
实践如下:
[jackxiang@jackX ~]$ ls -l /dev/snd
总用量 0
drwxr-xr-x  2 root root       60 5月  14 23:10 by-path
crw-rw----+ 1 root audio 116,  2 5月  14 23:10 controlC0
crw-rw----+ 1 root audio 116,  8 5月  14 23:10 hwC0D0
crw-rw----+ 1 root audio 116,  9 5月  14 23:10 hwC0D1
crw-rw----+ 1 root audio 116,  4 5月  14 23:10 pcmC0D0c
crw-rw----+ 1 root audio 116,  3 5月  14 23:10 pcmC0D0p
crw-rw----+ 1 root audio 116,  5 5月  14 23:23 pcmC0D1p
crw-rw----+ 1 root audio 116,  7 5月  14 23:10 pcmC0D6c
crw-rw----+ 1 root audio 116,  6 5月  14 23:10 pcmC0D6p
crw-rw----+ 1 root audio 116,  1 5月  14 23:10 seq
crw-rw----+ 1 root audio 116, 33 5月  14 23:10 timer
[jackxiang@jackX ~]$ id
uid=1000(jackxiang) gid=1000(jackxiang) 组=1000(jackxiang),129(wireshark)
[jackxiang@jackX ~]$ usermod -a -G audio jackxiang
usermod: Permission denied.
usermod:无法锁定 /etc/passwd,请稍后再试。
[jackxiang@jackX ~]$ sudo su -

id发现其是jackxiang,不是root,则把jackxiang和root一起加到组里面去:
chmod -R a+rwx /dev/snd
[root@jackX ~]# usermod -a -G audio jackxiang
[root@jackX ~]# usermod -a -G audio root

参考:http://blog.sina.com.cn/s/blog_5ce530a10100kyxf.html

——————————————————————————————
/home/xiangdong/下载/alsa-driver-1.0.25/SUPPORTED_KERNELS
cat /home/xiangdong/下载/alsa-driver-1.0.25/SUPPORTED_KERNELS
The alsa-drivers in this package are designed for the following kernels:

- Vanilla 3.0 to 3.2
- Vanilla 2.6.18 to 2.6.39

It's not guaranteed that they work with any newer version than above
or modified kernels by distributors.

It might be eventually possible to build the alsa-drivers with older
modified kernels by distributors (2.6.9+). These kernels have backported
many things from more recent vanilla kernels.

http://blog.csdn.net/ldl22847/article/details/8616921
http://blog.chinaunix.net/uid-30031530-id-5177359.html
http://blog.chinaunix.net/uid-20069582-id-227907.html

太旧了,下面这个版本:
Linux xiangdong-A8F 4.10.0-21-generic  
Ubuntu 10.04是我使用的第一个Linux系统,一开始就碰上这种问题让我很恼火,也折腾很长时间没搞定,终于在Ubuntu中文论坛上找到了yechao1989提供的解决办法,我把它粘过来留着以后自己可能还有用。我的本子是联想天逸F40,声卡为Analog Devices AD1986A。

1.检测声卡

代码:

sudo head -1 /proc/asound/card0/codec#0

2.修改配置文件

代码:

sudo gedit /etc/modprobe.d/alsa-base.conf

找到如下段:

代码:

# Keep snd-pcsp from being loaded as first soundcard

options snd-pcsp index=-2

注销下面语句

代码:

#options snd-pcsp index=-2

添加下面语句

代码:

options snd-hda-intel model=laptop-eapd

3.重启电脑

再试下喇叭,ok啦

但紧接着又出现让人郁闷的问题了,耳机喇叭一起响,按照如下方法也没有用:

打开新立得,安装gnome-alsamixer,运行,在“Headphone Jack Sense”打勾,插上耳机喇叭不再同时响了。

再找找办法吧



这个驱已经Ok了,只做下设置:
/home/xiangdong/下载/alsa-driver-1.0.25/alsa-kernel/Documentation/HD-Audio-Models.txt

AD1986A
=======
  6stack        6-jack, separate surrounds (default)
  3stack        3-stack, shared surrounds
  laptop        2-channel only (FSC V2060, Samsung M50)
  laptop-eapd   2-channel with EAPD (ASUS A6J)
  laptop-automute 2-channel with EAPD and HP-automute (Lenovo N100)
  ultra         2-channel with EAPD (Samsung Ultra tablet PC)
  samsung       2-channel with EAPD (Samsung R65)
  samsung-p50   2-channel with HP-automute (Samsung P50)
如果系统原来已经有 ALSA 驱动,但是没有识别声卡或者声音驱动有问题。那么理论上只需要在两个地方做改动:
添加 /etc/modprobe.d/sound 文件,内容为:
alias snd-card-0 snd-hda-intel
alias sound-slot-0 snd-hda-intel


vi  /etc/modprobe.d/alsa-base.conf
# options snd-pcsp index=-2
options snd-hda-intel model=laptop-eapd
-p, --password PASSWORD       encrypted password of the new account
阅读全文
背景:查了下ansible这块,好像可以通过pip安装,尽管后面是用的yum,但是后面还是得用pip安装ansible的其它模块,特备忘之用。
1、pip下载安装
1.1 pip下载

# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate
# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate
1.2 pip安装

# tar -xzvf pip-1.5.4.tar.gz
# cd pip-1.5.4
# python setup.py install
# tar -xzvf pip-1.5.4.tar.gz
# cd pip-1.5.4
# python setup.py install
2. pip使用详解
2.1 pip安装包

# pip install SomePackage
  [...]
  Successfully installed SomePackage
# pip install SomePackage
  [...]
  Successfully installed SomePackage
2.2 pip查看已安装的包

# pip show --files SomePackage
  Name: SomePackage
  Version: 1.0
  Location: /my/env/lib/pythonx.x/site-packages
  Files:
   ../somepackage/__init__.py
   [...]
# pip show --files SomePackage
  Name: SomePackage
  Version: 1.0
  Location: /my/env/lib/pythonx.x/site-packages
  Files:
   ../somepackage/__init__.py
   [...]
2.3 pip检查哪些包需要更新

# pip list --outdated
  SomePackage (Current: 1.0 Latest: 2.0)
# pip list --outdated
  SomePackage (Current: 1.0 Latest: 2.0)
2.4 pip升级包

# pip install --upgrade SomePackage
  [...]
  Found existing installation: SomePackage 1.0
  Uninstalling SomePackage:
    Successfully uninstalled SomePackage
  Running setup.py install for SomePackage
  Successfully installed SomePackage
# pip install --upgrade SomePackage
  [...]
  Found existing installation: SomePackage 1.0
  Uninstalling SomePackage:
    Successfully uninstalled SomePackage
  Running setup.py install for SomePackage
  Successfully installed SomePackage
2.5 pip卸载包

$ pip uninstall SomePackage
  Uninstalling SomePackage:
    /my/env/lib/pythonx.x/site-packages/somepackage
  Proceed (y/n)? y
  Successfully uninstalled SomePackage
$ pip uninstall SomePackage
  Uninstalling SomePackage:
    /my/env/lib/pythonx.x/site-packages/somepackage
  Proceed (y/n)? y
  Successfully uninstalled SomePackage
3. pip使用实例
3.1 安装redis

# pip install redis
# pip install redis
3.2 卸载redis

# pip uninstall redis
Uninstalling redis:
  /usr/lib/python2.6/site-packages/redis-2.9.1-py2.6.egg-info
.....省略一些内容....
Proceed (y/n)? y
  Successfully uninstalled redis
# pip uninstall redis
Uninstalling redis:
  /usr/lib/python2.6/site-packages/redis-2.9.1-py2.6.egg-info
.....省略一些内容....
Proceed (y/n)? y
  Successfully uninstalled redis
3.3 查看待更新包

pip list --outdate
pygpgme (Current: 0.1 Latest: 0.3)
pycurl (Current: 7.19.0 Latest: 7.19.3.1)
iniparse (Current: 0.3.1 Latest: 0.4)
pip list --outdate
pygpgme (Current: 0.1 Latest: 0.3)
pycurl (Current: 7.19.0 Latest: 7.19.3.1)
iniparse (Current: 0.3.1 Latest: 0.4)
4. 常见错误
4.1 ImportError No module named setuptools
请参考《ImportError No module named setuptools解决》
5. pip参数解释

# pip --help

Usage:  
  pip <command> [options]

Commands:
  install                     安装包.
  uninstall                   卸载包.
  freeze                      按着一定格式输出已安装包列表
  list                        列出已安装包.
  show                        显示包详细信息.
  search                      搜索包,类似yum里的search.
  wheel                       Build wheels from your requirements.
  zip                         不推荐. Zip individual packages.
  unzip                       不推荐. Unzip individual packages.
  bundle                      不推荐. Create pybundles.
  help                        当前帮助.

General Options:
  -h, --help                  显示帮助.
  -v, --verbose               更多的输出,最多可以使用3次
  -V, --version               现实版本信息然后退出.
  -q, --quiet                 最少的输出.
  --log-file <path>           覆盖的方式记录verbose错误日志,默认文件:/root/.pip/pip.log
  --log <path>                不覆盖记录verbose输出的日志.
  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
  --timeout <sec>             连接超时时间 (默认15秒).
  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
  --cert <path>               证书.
# pip --help

Usage:  
  pip <command> [options]

Commands:
  install                     安装包.
  uninstall                   卸载包.
  freeze                      按着一定格式输出已安装包列表
  list                        列出已安装包.
  show                        显示包详细信息.
  search                      搜索包,类似yum里的search.
  wheel                       Build wheels from your requirements.
  zip                         不推荐. Zip individual packages.
  unzip                       不推荐. Unzip individual packages.
  bundle                      不推荐. Create pybundles.
  help                        当前帮助.

General Options:
  -h, --help                  显示帮助.
  -v, --verbose               更多的输出,最多可以使用3次
  -V, --version               现实版本信息然后退出.
  -q, --quiet                 最少的输出.
  --log-file <path>           覆盖的方式记录verbose错误日志,默认文件:/root/.pip/pip.log
  --log <path>                不覆盖记录verbose输出的日志.
  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
  --timeout <sec>             连接超时时间 (默认15秒).
  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
  --cert <path>               证书.
6. 结束
安装使用一目了然,太简单了。


From:http://www.ttlsa.com/python/how-to-install-and-use-pip-ttlsa/

设备采用长连接与IoT Socket Server保持连接,不断开。每隔0.5秒上传一次数据,报文长度<200B。压测使用50组长连接为基数,从50,100,150,200,250,300,每隔50基数做测试。此事发现:CPU占用率维持在25%左右,出网带宽维持在125kbps,但是入网带宽随着压测而上升到500kbps。由于IDC入网带宽统计严重滞后于出网带宽。出现非实时的出网带宽统计,甚至绘图不完整。只能够推测数值。

但是由于外网带宽总数在1Mbps,所以300台左右时,总带宽大约在600~700kbps左右,此时TeraTerm输入命令已经感觉到了延时。

结论
1Mbps带宽是系统瓶颈,即使采用高配服务器并不能够改善并实现高并发的IO连接数。

但实际上,每0.5秒发送200B,相当于400 B/s = 3.2kbps。而1Mbps支持300台设备,相当于每台占用带宽为3.5kbps。


来自:https://segmentfault.com/q/1010000004214610


300个是125kbps啊,,我说的呢,
3000 = 1250kbps
1250/8 = 416kbps  如果说是要很密集还得x参数
416.66666666666666666666666666667
uerdel删除用户时候提示:userdel: user ** is currently logged in


今天在删除用户账号的时候,发现一个奇怪现象,即:
#userdel -r aaron

userdel: user aaron is currently logged in


解决方法:
mv /var/run/utmp /var/run/utmp_old      //将原文件改名
touch > /var/run/utmp        //新创建一同名文件

再次执行删除操作。。。成功删除用户

关于:/var/run/utmp

utmp是一个文件,除了utmp程序你不能编辑这个文件,删掉他的话,当前登陆信息都会丢失。这个文件在每次机器reboot起来后都会重新创建。

更多关于utmp文件介绍请参考下面说明:
/var/run/utmp

  该日志文件记录有关当前登录的每个用户的信息。因此这个文件会随着用户登录和注销系统而不断变化,它只保留当时联机的用户记录,不会为用户保留永久的记录。系统中需要查询当前用户状态的程序,如 who、w、users、finger等就需要访问这个文件。该日志文件并不能包括所有精确的信息,因为某些突发错误会终止用户登录会话,而系统没有及时更新 utmp记录,因此该日志文件的记录不是百分之百值得信赖的。

 (/var/log/wtmp、/var/log/utmp、/var/log/lastlog)是日志子系统的关键文件,都记录了用户登录的情况。这些文件的所有记录都包含了时间戳。这些文件是按二进制保存的,故不能用less、cat之类的命令直接查看这些文件,而是需要使用相关命令通过这些文件而查看。其中,utmp和wtmp文件的数据结构是一样的,而lastlog文件则使用另外的数据结构,关于它们的具体的数据结构可以使用man命令查询。

  每次有一个用户登录时,login程序在文件lastlog中查看用户的UID。如果存在,则把用户上次登录、注销时间和主机名写到标准输出中,然后login程序在lastlog中记录新的登录时间,打开utmp文件并插入用户的utmp记录。该记录一直用到用户登录退出时删除。utmp文件被各种命令使用,包括who、w、users和finger。

  下一步,login程序打开文件wtmp附加用户的utmp记录。当用户登录退出时,具有更新时间戳的同一utmp记录附加到文件中。wtmp文件被程序last使用。


但是,本人自己试验了还是不行,依旧得到同样的提示
      那就暴力删除该用户吧:
      $userdel -r -f XXXX
    提示:userdel: warning: can't remove /var/mail/git: No such file or directory
          userdel: git home directory (/home/git) not found
但是没关系。实际上已成功删除用户。

来自:http://www.2cto.com/os/201408/328936.html
问题:
确认重新提交表单

此网页需要使用您之前输入的数据才能正常显示。您可以重新发送这些数据,不过,这么做会重复执行此网页之前执行过的所有操作。
按“重新加载”按钮,重新提交加载该网页所需的数据。
ERR_CACHE_MISS
————————————————————————————————————————————————————————————————


瀏覽很多網站後都會發生一個小問題,那就是瀏覽搜尋結果,當我點近物件後,再使用瀏覽器的回上一頁功能,就會出現空白頁面,並出現錯誤,以chrome為例,如下:

這個網頁需要使用您先前輸入的資料才能正確顯示。您可以重新傳送這些資料,不過這麼做會重複執行這個網頁先前執行過的任何動作。
重新載入這個網頁。
按下重新載入按鈕,重新提交載入網頁所需的資料。
錯誤代碼:ERR_CACHE_MISS
這通常是搜尋頁面為a.php把搜尋的結果置入b.php,當我們把搜尋結果點進去看物件的時候,就是c.php畫面,所以一般來說瀏覽器回上一頁就是進入b.php,但是問題是b.php並沒有任何值的載入,所以就會發生空白頁面與錯誤代碼:ERR_CACHE_MISS的問題,解決的方式很簡單,就是在a.php放入下一段

  

如此,輕鬆解決問題,當然還有人會把傳輸的值把它存成cookie/session,這也都是解決辦法喔!

来自:http://blog.csdn.net/a9925/article/details/42027229
“PHP之父”Rasmus Lerdorf性格直接坦荡,措辞简练精辟,字里行间透着一股“务实至上”的精神气。在参加“PHP全球开发者大会”前夕,这位“实干家”接受了《程序员》采访,分享了自己的编程感悟。

工作重心

我参与的项目总与用户直接相关。我曾多年担任雅虎工程师,负责连接数亿终端用户的基础设施,这些基础设置仍在服役。而如今,我在Etsy也是负责连接百万用户的后端基础设施。技术其实只是解决问题的工具,是抽象的锤头、锯子,并没什么了不起,而真正振奋人心的是用技术提升了百万人的生活品质。

“问题”为指引

比起“计算机科学家”,“工程师”的称谓更得我心。论这两者的区别,我认为后者更专注于解决眼前的问题。之所以开发PHP,并非因为我喜爱编程或语言设计,反倒是因为不喜欢。1993年的那套编程把式,让我没法轻松迅捷地解决Web问题。于我而言,只有当遇到困难,才会翻翻书,查查资料来充实自己,技能不是为了提高而提高,我的每一个决定都是以解决问题为中心的。

经验与教训

我犯了很多错,有些事后才意识到;但也取得过好于预期的成果。最重要的经验是:解决Web问题的确应该从一开始就专注相关的整个生态系统。20年来,针对Web问题的解决方案层出不穷,而质量却参差不齐,没几个能构建起完整的生态圈,并为普通人所用。

PHP 7何处费思量?

开发PHP 7那最后10%最费时,也最无趣。不过强大的新功能和性能突飞猛进,还是让积极心态占了上风,也激励了整个团队,帮我们很快熬了过去。不过,每次更新都有做不完的测试、解决不完的平台问题,调查不完的诡异边缘情况,看不完的漏洞报告,没个尽头。

吸纳新人

我知道前不久Emacs的版本控制系统从BZR换成了Git,不过对于吸纳新贡献者,我觉得它们其实平分秋色。Git近来更受欢迎,方便蜻蜓点水式的添砖加瓦。不过对于长期的忠实贡献者,版本控制系统无关紧要。良好的文档和方便新贡献的流程才重要呢。

假如能重新设计PHP

假如时光能倒流,肯定有我希望能改进的地方,比如区分Keyword大小写。刚开始PHP不过是种HTML模板语言。九十年代初,人们争论HTML标签是该大写、小写还是大小写混合。我不想争来争去的,就把PHP的模版标签做成不区分大小写的,这个做法至今还在沿用。

JavaScript在吞噬其他语言吗?

PHP和JavaScript的演进几乎同步。我与Brendan Eich(JavaScript设计者)是同一时期开始的,他的重心显而易见是客户端,而我则是服务器。如果你写客户端应用,除了JavaScript,别无选择——浏览器支持哪种语言就得用哪种;但如果重心是服务器就很不一样了。

写客户端代码者众,所以会JavaScript的人多,而如今它在服务器这厢也开花结果了。但JavaScript跟PHP一样只是解决方案之一,而非唯一,这样挺好。就像我刚说的,语言只是解决问题的工具,不是受人膜拜的宗教。如果眼前有问题,而你更倾向于JavaScript,那么它就是最佳选择。

编程原则

只要有效、安全、够快,就发布,然后解决下个问题。三者缺一不可,否则就要回头检查代码,好抓紧时间解决下一个问题。

未来展望

关于编程语言,我还真没想过这些工具未来会经历什么,我更关心的是它们能否解决当下的问题。拿Etsy举例,作为手工工艺品网站,它能在富有的买家和穷苦艺术家之间牵线搭桥,让他们摆脱贫穷的窘境吗?我们的基础设施能帮助其他公司去应对同等重大的问题吗?我们的解决方案是否强大到一转眼客户的问题就去无踪了呢?这些才是我关心的。

过去,我不喜欢编程,现在还是不咋喜欢。我只喜欢以解决问题为中心,这点永远不变。
背景:用阿里云编译mysql5.7.12时在编译一半时出现错误,如下:

[ 50%] Building CXX object sql/CMakeFiles/sql.dir/item_cmpfunc.cc.o
[ 50%] Building CXX object sql/CMakeFiles/sql.dir/item_create.cc.o
[ 50%] Building CXX object sql/CMakeFiles/sql.dir/item_func.cc.o
[ 50%] Building CXX object sql/CMakeFiles/sql.dir/item_geofunc.cc.o
c++: 编译器内部错误:已杀死(程序 cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
make[2]: *** [sql/CMakeFiles/sql.dir/item_geofunc.cc.o] 错误 4
make[1]: *** [sql/CMakeFiles/sql.dir/all] 错误 2
make: *** [all] 错误 2



不要感觉奇怪,其实是内存不够导致的,这位兄弟也遇到一样的问题,如下:
在这里特别提醒, 对于mysql5.7.8的make编译, 如果是阿里云centos主机512M内存的, 会在make编译到45%时会报错, 这是内存不足所致。

c++: Internal error: Killed (program cc1plus)
Please submit a full bug report.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
make[2]: *** [sql/CMakeFiles/sql.dir/item_geofunc.cc.o] Error 1
make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2
make: *** [all] Error 2
那么设置2G交换分区来用下 :

# dd if=/dev/zero of=/swapfile bs=1k count=2048000 --获取要增加的2G的SWAP文件块
# mkswap /swapfile     -- 创建SWAP文件
# swapon /swapfile     -- 激活SWAP文件
# swapon -s            -- 查看SWAP信息是否正确
# echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab     -- 添加到fstab文件中让系统引导时自动启动
注意, swapfile文件的路径在/var/下
编译完后, 如果不想要交换分区了, 可以删除:

# swapoff /swapfile
# rm -fr /swapfile

部分摘录自:http://blog.csdn.net/cryhelyxx/article/details/47610247
背景:用raspberry pi+chrome做了一个孵化小鸡的硬件,当时想用websocket,好像没有,想用svg画温度曲线,好像测试了一下也没有,最后用的ajax轮训,后面不知这个新出的版本有没有加上。

Chromium OS for Raspberry Pi 3 0.5版本发布:
下载:download the Chromium OS for Raspberry Pi 3 0.5 binary image
当时被问及Chromium OS是否会移植到树莓派3的时候,Callahan表示已经购买了两台树莓派3,并确认将会得到扩展支持。而现在,Callahan非常高兴的宣布面向树莓派3单板电脑的0.5版本。树莓派3 Model B于2016年2月29日正式发布,支持WiFi和蓝牙,并内部包含64位四核ARM Cortex-A53处理器。
团队表示尽管在树莓派2的基础上开发移植Chromium OS for 树莓派3,但是在0.5版本依然带来了很多新特性。首先提到的是已经压缩尺寸的Linux 4.2.8-ckt8内核,BFS优化、更少的调试输出,且没有Dynamic tick模块,声卡驱动的多重改善,借助BFQ分级调度和按需调度的优化调整带来更好的储存性能。
安卓端的微信使用的是一个自带的专用浏览器,应该是一个精简版的qq浏览器。然后就造成了我们一系列蛋疼的问题,各种不兼容。而ios端的微信无疑问用的是内置safari浏览器,不管是canvas运算还是类似todataurl这样对运算能力要求比较高的API,在上面的实现都挺流畅的。

作者:陈秋鑫
链接:https://www.zhihu.com/question/23595715/answer/36213456
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
背景:关于PHP的异步回调啥的,其实PHP这种语言的运行机制想优雅实现是不可能的,有一个叫swoole的扩展实现这个队列的处理是很不错的,之前有张宴兄弟写过一个叫https的队列处理(基于libevent),后面有韩天峰兄弟写的swoole,更注重了异步IO实现对CPU的IO的吃满(基于自己编写的epoll加队列链表内存分配一堆东西,反正我是看过没看明白有空再研究),但是,作为swoole的粉丝兼顾问,异步问题在PHP业界的一个需求量还是蛮大的,尤其是日志异步写、url访问、邮件异步发、跨机房db特殊的小同步、审核异步队列、框架底层对接口访问排查错误的db和cache接口查询及返回,这些目前对于大并发网站都是需要异步来解决的,但是异步归异步,回调这块也实现异步回调(真大并发想知道结果可能阻塞了PHP进程产生进程等待异步返回而新来的连接没法及时处理的php-fpm进程性雪崩),在实际运用中常规处理办法是开一个新的端口,下面的swoole也是开了新的端口来处理,于httpsqs不同在于swoole可以把简单的curl啥的逻辑也可封装里面,在httpsqs里只是纯队列,一个投递进来,再起一个php的daemon进行读取队列,因为如果真是繁忙,导致异步处理返回慢,这个等待也是太漫长,我觉得看具体业务而看要不要等待,在实际中异步和队列大都用于抛数据以及解耦,swoole在这块不光有了异步还有异步回调,所以,最大限度的解决了上面这些场景,先抄一篇文章再说,有空再研究研究其实现,假如能看懂的话:-),异步回调这块如果有明白的可以留言给我,谢谢。
————————————————————————————————————————————————————————————————————————
关于异步任务队列

用户打开了我们的网站。他要做的就是勾选需要发邮件的代理商列表,然后把结算邮件发出去。
假如我们需要发1封邮件,我们写个函数执行即可。考虑到网络可能会稍微有点延迟,但是是可以接受的,用户会乖乖等你的网页发完邮件了再关闭网页。
假如我们要发布10封邮件,用一个for循环,循环10遍执行发邮件操作。这时候,也许10倍的网络延迟会让用户稍微有点不耐烦,但勉强可以等吧。
假如要发100封邮件,for循环100遍,用户直接揭竿而起,什么破网站!
但实际上,我们很可能有超过1万的邮件。怎么处理这个延迟的问题?
答案就是用异步。把“发邮件”这个操作封装,然后后台异步地执行1万遍。这样的话,用户提交网页后,他所等待的时间只是“把发邮件任务请求推送进队列里”的时间。而我们的后台服务将在用户看不见的地方跑。
在实现“异步队列”这点上,有人采用mysql表或者redis来存放待发送的邮件,然后,每分钟定时读取待发送列表,然后处理。这便是定时异步任务队列。但当前提交的任务要一分钟后才能执行,在某些实时性要求应用场景里还是不快。有些场景要求,只有一提交任务,便马上执行,但用户不需要等待返回结果。
在云平台SAE和BAE上,都有taskqueue服务来解决上面的问题。而如果是自己假设服务器,则如何解决?本文将探讨用php扩展swoole实现实时异步任务队列的方案。

安装swoole

pecl 安装:
pecl install swoole

看命令行提示,如果它提示说没有写php.ini,则自己手动在PHP.ini后面加上:
extension = "swoole.so"

服务端

在打算放置脚本的目录(你也可以自行新建)新建Server.php,代码如下:


由于服务端是异步、常驻内存的,因此必须通过命令行来启动。在命令行执行以上代码以启动服务
php Server.php
执行完毕后关闭命令行窗口即可。服务会在后台以守护进程运行

客户端

启动服务后,让我们看看如何调用服务。新建测试文件Client_test.php
代码如下:


在上面代码中,url即为任务所在地址,param为所需传递参数。
保存好代码,在命令行或者浏览器中执行Client_test.php,便实现了异步任务队列。你所填写的URL,将会在每次异步任务被提交后,以HTTP GET的方式异步执行。

查看与关闭

swoole好像没有很便捷的关闭方式。所以只能直接通过关闭进程来关闭。
查看命令:
ps -ef | grep php
结束单个进程:
kill -9 {进程号}
结束所有进程的命令:
killall -9 php

摘自第七星尘的博客:http://blog.star7th.com/2016/01/1905.html
实践发现,ubunut16.0.4里面的chromium没法设置代理的,而是采用了下面这个办法进行命令行设置:
在受支持的桌面环境中运行Chromium时,将使用系统代理设置。但您的系统不受支持,或启动系统配置时出现问题。
但您仍可通过命令行进行配置。如需详细了解各项实验功能和环境变量,请参见 man chromium-browser。

=========================================================================================
先安装再代理 ,安装后可以google: http://jackxiang.com/post/8703/

受支持的桌面环境中运行Chromium时,将使用系统代理设置。但您的系统不受支持,或启动系统配置时出现问题。
但您仍可通过命令行进行配置。如需详细了解各项实验功能和环境变量,请参见 man chromium-browser。


安装好google-chrome(或者chromium也行)后,我们发现浏览器的设置中,代理配置功能失效,显示为:

在受支持的桌面环境中运行google-chrome时,将使用系统代理设置。但您的系统不受支持,或启动系统配置时出现问题。

但您仍可通过命令行进行配置。如需详细了解各项实验功能和环境变量,请参见 man google-chrome。

2、关闭该google-chrome,并重新从命令行启动,加入一个参数:

jackX@thinkpad:~$ google-chrome --proxy-server="socks5://localhost:8787"
chromium-browser --proxy-server="socks5://localhost:8787"

值得注意的是,由于我平常windows环境下使用的代理工具为:chrome+SwitchyOmega插件+MyEntunnel,配置是SSH+socks5,所以一开始没有在–proxy-server参数中指定socks5,导致启动后代理失效。(可通过google-chrome –help了解详细参数)

chrome成功启动后,打开百度输入“ip”,可显示我的代理服务器IP,说明代理成功启用。
[root@jackX ~]# vi /etc/sudoers
在 /etc/sudoers 中添加:
Defaults editor=/usr/bin/vim, env_editor
即可将默认编辑器设置为 vim。
apt-get install vim
root@jack:~# which vim
/usr/bin/vim
[root@jackX ~]# update-alternatives --config editor
有 4 个候选项可用于替换 editor (提供 /usr/bin/editor)。

  选择       路径              优先级  状态
------------------------------------------------------------
* 0            /bin/nano            40        自动模式
  1            /bin/ed             -100       手动模式
  2            /bin/nano            40        手动模式
  3            /usr/bin/vim.basic   30        手动模式
  4            /usr/bin/vim.tiny    10        手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:3
update-alternatives: 使用 /usr/bin/vim.basic 来在手动模式中提供 /usr/bin/editor (editor)
From:http://blog.longwin.com.tw/2008/10/ubuntu-debian-modify-default-edit-2008/
chrome和firefox都没法使用Flash:

sudo apt-get install software-center

http://tieba.baidu.com/p/4395787288
分页: 12/245 第一页 上页 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 下页 最后页 [ 显示模式: 摘要 | 列表 ]