Linux Shell 下的输出重定向

转自:http://www.xxlinux.com/linux/article/development/shell/2006-08-06/3376.html

Linux Shell 环境中支持输入输出重定向,用符号<和>来表示。0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出,比如 2>a.txt 表示将错误信息输出到文件a.txt中。

同时,还可以在这三个标准输入输出之间实现重定向,比如将错误信息重定向到标准输出,可以用 2>&1来实现。

Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。

如果想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null, 例如:

# ls 1>/dev/null 2>/dev/null

还有一种做法是将错误重定向到标准输出,然后再重定向到 /dev/null,例如:

# ls >/dev/null 2>&1

注意:此处的顺序不能更改,否则达不到想要的效果,此时先将标准输出重定向到 /dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,于是一切静悄悄:-)

luci的验证机制

luci的验证代码都在 dispatcher的dispatch()函数中。

luci为每一个成功登陆的session建一session,放在/tmp/luci-sessions中。

其中包含两个,一个是sid,会作为cookie返回给客户端。另一个叫做token,之后每一个http请求url中都会包含这个token。每个请求中也包含那个cookie。

路由器后台收到这个请求后,先检查session,没有就去cookie中取sysauth,用取到的值再再磁盘中去取此cookie对应的token,然后拿来跟我们链接中的token比较。如果一致就通过。

ssh 不需要密码登陆

主要来自峰哥的这篇文章:http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

$ ssh-keygen

$ ssh-copy-id user@host

就ok了,但是我的mac上木有ssh-copy-id,就按照他说的原理,将公钥内容直接拷贝到 服务器 ~./ssh/authorized_keys末尾就ok啦。。。

java int[] 和 byte[] 互转,太tm坑了。。。

最近用camera360的sdk做滤镜。太tm有点小坑。。。主要就是byte[]和int[]互转。

int2Byte:

public static byte[] intArrToByteArray(int[] intArr) throws IOException {
        ByteArrayOutputStream buf = new ByteArrayOutputStream();
        DataOutputStream out = new DataOutputStream(buf);
        for (int i : intArr) {
            out.writeInt(i);
        }
        byte[] b = buf.toByteArray();
        out.close();
        buf.close();
        return b;
    }

 

byte[] 2 int[]

ByteBuffer bb = ByteBuffer.wrap(arrRGBA);
int[] arrIntRGBA = new int[arrRGBA.length/4];
for (int i = 0; i < arrIntRGBA.length; i++) {
    arrIntRGBA[i] = bb.getInt();
}

 

java变量的访问权限。。。

一直以为自己很懂。。。悲剧了。。。

一直以为是三种,public protected private,如果不写就是默认,就是protected…结果今天吃亏了。。。

变量声明为public,就是所有都可以访问。

protected,包内可访问,而且包外的子类可以访问。

private,只能自己访问。

如果变量不声明,包内的类可以使用,类似protected,但是包外的子类去是无法访问!。。。太悲剧了。。。对包外就像private。。。

所以默认的访问权限是第四种。。。跟前三种都不一样。。。

还有一个是类的访问权限,public class或者什么都不加的class,同理public可以自由使用,默认的是包内可使用,但包外一率不行。

配自己vps,wordpress时的一些笔记

0. ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
1. lnmp给用户设密码失败,我操。。。只能自己来。。。坑爹,怪不得sql一直连接不上。。。
重改密码!

# /etc/init.d/mysql stop
# mysqld_safe –user=mysql –skip-grant-tables –skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD(‘newpassword’) where USER=’root’;
mysql> FLUSH PRIVILEGES;
mysql> quit

# /etc/init.d/mysqld restart
# mysql -uroot -p
2.Download WordPress
cd /var/www/html
wget http://wordpress.org/latest.zip
unzip latest.zip
rm latest.zip
# remove superfluous directory
mv wordpress/* ./
rmdir wordpress/
# wordpress needs these to be writable by the webserver
mkdir wp-content/uploads wp-content/cache
chown apache:apache wp-content/uploads wp-content/cache
Configure WordPress
# copy default config
cp wp-config-sample.php wp-config.php

# set username / password
# make sure you change your password to something more awesome
sed -i -e ‘s@putyourdbnamehere@wordpress@’ wp-config.php
sed -i -e ‘s@usernamehere@wordpress@’ wp-config.php
sed -i -e ‘s@yourpasswordhere@an-awesome-password@’ wp-config.php
browner:http://your-server-ip-or-hostname/wp-admin/install.php

CentOS 5.5下搭建pptp VPN

(原文在 http://blog.renhao.org/2010/08/build-pptp-vpn-on-centos-5-5/comment-page-1/#comment-1682)很好用,一次就成功了,呵呵

前段时间想在自己的服务器上搭建个VPN,结果按照网上的很多方法弄下来却死活上不去。后来经过多次折腾,终于成功的架设了PPTP VPN。不敢保留,将这个经验分享出来,供自己今后参考的同时也能够让需要的朋友找到正确的安装方法。

Linux下常用的VPN服务有两个,一个是pptp,另一个则是openvpn。前者更简单一些,但是只有独立服务器和XEN VPS可以搭建;后者则没有任何限制。前者搭建出来的VPN,不需要特殊的VPN客户端,直接在Windows下创建VPN拨号连接即可;而后者需要安装一个客户端来进行拨号。

废话不说,下面我们就开始在CentOS 5.5下搭建pptp的VPN吧!本教程同样适用于CentOS 5.0~5.4的任意一个版本。 继续阅读“CentOS 5.5下搭建pptp VPN”

最近再搞点混响,没这么简单噢,呵呵。

音乐中音阶的划分是在频率的对数坐标(20×log)上取等分而得

相对响度也是 20log(x),都是以10为底数

 

幅度与音强

人耳对于声音细节的分辨只有在强度适中时才最灵敏。人的听觉响应与强度成对数关系。一般的人只能察觉出3 分贝的音强变化,再细分则没有太多意义。我们常用音量来描述音强,以分贝(dB=20log)为单位。在处理音频信号时,绝对强度可以放大,但其相对强度更有意义,一般用动态范围定义: 动态范围=20×log(信号的最大强度 / 信号的最小强度) (dB),它的动态范围就可以达到96分贝=20Log65536(6分贝/比特)

相对音强 = 20 log(数据),如果想让音强降低x db,即是:

20log(a)- 20log(b)= x;变化得:a/b = 10^(x/20), 再变化一下 a * 系数 = b; 系数 = 1/(10 ^ (x / 20)), 如果要升高或音强,只要乘以一个系数就可以了,而不是加上或减去一个值。

参考数据:

-2db 0.794

-3db 0.708

-20db 0.1

-25db 0.0562

-30db 0.0316

当低于0.01时,就很难很难听出效果了,呵呵。

根据native crash log 查找native出错代码

使用ndk,如果native crash,会打出一大堆带地址的出错信息,这里有一个很给力的python,来自于这个项目,很有用,可以还原回出错的行。

文件下载地址

项目地址在这里:https://code.google.com/p/android-ndk-stacktrace-analyzer/

使用方法如下:只需要三步,

1.得到so的asm文件,2.拿到crash log 3.使用这个脚本,ok 如下:

 

1.android-ndk/android-ndk-1.6_r1/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/arm-eabi-objdump -S mylib.so > mylib.asm

2.自己adb logcat 拷出来那一堆东西,保存

3.python parse_stack.py libslpi.asm logcat.txt