2014年8月24日星期日

全息+体感+环境模拟=(游戏)未来

先来说说最近的热门产品,VR 我觉得这样的设备,很容易造成思维拘束,对人的视野范围,以及肢体感应是一个非常困惑的问题

再说说精神方面的沉浸式设备,就算现在还没有研发出来,但这只是时间的问题,我觉得这要是出了问题,不光是精神受冲击,估计生命也会有很大的危险

我觉得改变自身周围因素,会比以上两种设备来的安全及容易接受些

目前全息投影技术,在那些技术牛人的不断努力下,现在已经越来越近了,“空间光调制器” 有兴趣的可以搜索下

体感设备,不多说,目前设备出来不少,但是技术还是不够成熟,等待先的革新



环境模拟,目前没有什么好的设备,虚拟现实跑步机算一个,接着就等待虚拟其他环境的设置出现了

未来的游戏好期待不知道,有生之年能不能遇上


2014年6月6日星期五

MySQl分组显示组内前N项

之前在网上搜索过几种解决办法,一直都不是很满意

分开查询

先查询id
select CAST(group_concat(ids) AS CHAR(10000) CHARACTER SET utf8) as iid 
from (select SUBSTRING_INDEX(group_concat(id ORDER BY 字段),',',4) as ids from `table` group by 字段) as val
在根据id查询数据
SELECT * FROM table where id in ($id)

这种也是可以的
select 字段,substring_index(group_concat( concat(字段,':',字段) order by 字段 desc separator '|'),'|',5) fromtable group by 字段;
具体看情况

Linux下mysql忘记root密码的简单解决办法

在密码多如牛毛的今天,很多时候,管理员会出现忘记各种各样的密码,针对mysql中root密码的忘记情况,可以采用以下步骤重新设置root管理密码。
1、修改mysql的配置文件:
#vi /etc/my.cnf
在[mysqld]中加上一句:skip-grant-tables
保存退出;

2、重新启动mysql
# /etc/init.d/mysql restart
3、登录并修改mysql的root密码
#/usr/local/mysql/bin/mysql
mysql>use mysql;
mysql>UPDATE user SET Password = password ( ‘you-passwd’ ) WHERE User = ‘root’;
mysql>flush privileges;
mysql>quit
4、将第一步修改的my.conf修改回来
# vi /etc/my.cnf
将刚才在[mysqld]的段中加上的skip-grant-tables删除,保存退出;
5、重新启动mysql即可

不记得是否有用,先收藏,下次实践

一行命令安装PPTPD VPN

一行命令安装PPTPD VPN(注意,只在CentOS 5 32bits/64bits下测试通过,其他系统未测试):
wget http://www.CTOHome.com/linux-vps-pack/vpn-pptpd.sh;sh ./vpn-pptpd.sh;
如何创建更多的vpn用户?
请在linux下,ssh编辑/etc/ppp/chap-secrets文件,按照相同格式添加用户名和密码即可。

防火墙如果开启,需要设置

*nat
:PREROUTING ACCEPT [27:2438]
:POSTROUTING ACCEPT [49:3077]
:OUTPUT ACCEPT [49:3077]
-A POSTROUTING -s 172.16.36.0/255.255.255.0 -j SNAT --to-source 服务器ip
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [42517923:199393012741]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT 
-A FORWARD -j RH-Firewall-1-INPUT 
-A RH-Firewall-1-INPUT -i lo -j ACCEPT 
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT 
-A RH-Firewall-1-INPUT -p esp -j ACCEPT 
-A RH-Firewall-1-INPUT -p ah -j ACCEPT 
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT 
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT 
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 47 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited 
COMMIT


CentOS卸载Apache Mysql 和php

收藏
目前新版的Centos系统会集成Apache的服务,而我们在安装有些功能的时候,需要一个完全纯净的系统,这样就需要卸载apache的httpd。
首先我们要知道我们安装了哪些组件,通过命令
rpm -qa|grep httpd
rpm -qa|grep mysql
rpm -qa|grep php
分别可以查看本机安装的apache、mysql和php服务。如果返回为空,则说明本机没有安装该服务。
比如笔者输入第一个命令,返回为:
[root@localhost ~]# rpm -qa|grep httpd
httpd-2.2.3-43.el5.centos
说明本机已经有了httpd组件。如果我们要卸载它,我们输入以下的命令:
rpm -e httpd-2.2.3-43.el5.centos
rpm –e 是卸载rpm包的命令,后面是名称,最后的版本号可以不用打。如果我们需要卸载多个应用,只要输入多次即可。
如果实在卸载不掉的话,可以加—nodeps这个参数来卸载,比如我们卸载httpd-2.2.3-43.el5.cento,实在卸不掉了:
rpm -e httpd-2.2.3-43.el5.centos --nodeps
就可以用以上的命令卸载,看清后面是两个-

mysql 数据库热备份主从设置

一、主从设置

log-bin=mysql-bin
server-id       = 1
expire_logs_days = 5
binlog-do-db=数据库1
binlog-do-db=数据库2
binlog-ignore-db=mysql

二、mysql多实例化(windows下) 如果有其他mysql服务器,这里不需要
拷贝mysql目录
mysqld install mysql2 服务安装
修改端口
注册表修改
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/项目找到你刚才手动安装的服务,在mysql-nt"和mysql2之间加入my.ini的路径信息,格式为:

--defaults-file="d:/mysql/my.ini"

server-id = 2
master-host=主ip
master-user=用户名
master-password=密码
master-port=3306
replicate-ignore-db=mysql
replicate-do-db=数据库1
replicate-do-db=数据库2

数据库需要一致,到出主服务器数据到从服务器
导出数据库为sql命令文件
第一步是清空所有表和块写入语句,并锁定COMMIT操作。这里不要退出mysql!
第二步是启动另一个终端导出数据。
第三步是查看状态,
第四步是解除第一步的锁状态。
mysql>FLUSH TABLES WITH READ LOCK;
mysqldump --master-data=2 --single-transaction -u root -p table >table.sql
mysql>SHOW MASTER STATUS;
mysql>UNLOCK TABLES;


帐户设置
用户名 密码 RELOAD, SUPER, REPLICATION SLAVE

从服务器命令启动
slave stop;
show variables like 'server_id';
set global server_id=2;
CHANGE MASTER to MASTER_HOST='主ip', MASTER_PORT=3306, MASTER_USER='用户名', MASTER_PASSWORD='密码', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=106;

MASTER_LOG_FILE MASTER_LOG_POS 通过master执行show master status 获得

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; 设置同步错误时执行

查看是否成功
slave start;
show slave status\G;
  Slave_IO_Running: Yes
 Slave_SQL_Running: Yes
代表成功

centos 常用命令

.tar.gz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName

tar -czvf  项目.tar.gz   --exclude=目录 --exclude=目录  项目目录 

cp -Ri file1 file2
复制文件夹

vi
插入到光标后面 a
返回控制命令 esc
推出 :q 强制退出:q!
保存退出 :wq
到最后一行:$
查找字符串 /

重启
reboot

服务重启
service httpd restart

SElinux设置vsftp
setsebool -P allow_ftpd_full_access on
setsebool -P ftp_home_dir on
getsebool -a|grep ftp


cpu和内存使用情况
top

添加centos到用户组apache
 
usermod -a -G apache centos

设置网站根目录/var/www的所有组为apache
 
chown -R :apache /var/www

设置网站根目录的权限为用户组有读写权限
 
chmod -R g+rw /var/www

查看Apache运行用户和组
ps -ef |grep httpd

查看用户属于哪个组
id user

查看所有用户

cat /etc/passwd

mysql 备份
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

mysql还原
mysql -hhostname -uusername -ppassword databasename < backupfile.sql
或者
mysql -u root -p

mysql>use 数据库

然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:\wcnc_db.sql


系统每天定时备份mysql数据库

1、创建保存备份文件的路径/mysqldata
#mkdir /mysqldata

2、创建/usr/sbin/baktest文件
输入以下内容:
mysqldump -uroot -proot test | gzip > /mysqldata/test`date +%Y-%m-%d_%H%M%S`.sql.gz

3、修改文件属性,使其可以执行
#chmod +x /usr/sbin/baktest

4、修改/etc/crontab
在下面添加
01 3 * * * root /usr/sbin/baktest
表示每天3点钟01分执行备份

5、重新启动crond
#/etc/rc.d/init.d/crond restart

添加root权限的用户
修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 :

mysql备份用户权限设置LOCK TABLES,SELECT,FILE,RELOAD,SUPER,SHOW VIEW*

df -hl      查看分区大小

Linux下如何合并目录

\cp -Rf  要合并目录 目标目录的父级目录     目录下的同名目录合并

f参数是为了避免提示是否要覆盖文件
cp之前还有一个“\”符号 是因为 cp命令使用-f参数后,还是会提示是否要覆盖文件,因为cp命令的alias是cp -i,而恰恰-i参数是表明有交互提示,于是直接输入cp -Rf是不能消除提示的。在cp命令前加上“\”,或者使用cp命令的绝对地址就可以保证不出现提示了。

2014年6月3日星期二

Linode VPS上的Centos iptables security raw nat[FAILED]filter

纯属转载,方便自己查找
重启Linode VPS上的Centos 6.4系统的防火墙的时候,遇到以下错误:
service iptables restart
Setting chains to policy ACCEPT: security raw nat[FAILED]filter

经过搜索,明白是Linode官方在iptables里加了一个security的规则链,但Centos不支持。
而找到的解决方法是,编辑/etc/init.d/iptables,找到:
  1. for i in $tables; do
  2. echo -n "$i "
  3. case "$i" in
  4. raw)
  5. $IPTABLES -t raw -P PREROUTING $policy \
  6. && $IPTABLES -t raw -P OUTPUT $policy \
  7. || let ret+=1
  8. ;;
加入以下内容到“case "$i" in”下面:
  1. security)
  2. $IPTABLES -t filter -P INPUT $policy \
  3. && $IPTABLES -t filter -P OUTPUT $policy \
  4. && $IPTABLES -t filter -P FORWARD $policy \
  5. || let ret+=1
  6. ;;
  7.  
最终版本类似:
  1. for i in $tables; do
  2. echo -n "$i "
  3. case "$i" in
  4. security)
  5. $IPTABLES -t filter -P INPUT $policy \
  6. && $IPTABLES -t filter -P OUTPUT $policy \
  7. && $IPTABLES -t filter -P FORWARD $policy \
  8. || let ret+=1
  9. ;;
  10. raw)
  11. $IPTABLES -t raw -P PREROUTING $policy \
  12. && $IPTABLES -t raw -P OUTPUT $policy \
  13. || let ret+=1
  14. ;;
保存后,重启则可
service iptables restart