使用WindowsAPI函数打开console控制台

s窗口,实时显示一些运行信息,这里就告诉大家是如何实现的,我们做个简单的,其实对控制台的操作还有很多,有兴趣的可以去查资料。 用到的API函数如下: //创建控制台 AllocConsole; //获取控制台窗口 GetStdHandle; //向控制台输出信息 WriteConsole; //释放控制台 FreeConsole; 具体示例如下: #include<stdio.h> HANDLE Handle; char buff[256]; unsigned long num; int winmain(){ AllocConsole(); Handle=GetstdHandle(); strcpy(buff,"HELLO WORLD"); WriteConsole(Handle,buff,strlen(buff),&amp;num,NULL); FreeConsole(); } buff是实际要写入的东西,很简单,调试的时候很适合这样做,既可以看到执行信息,还可以利用它进行多线程编程的调试,用于分析结果。

2012-11-24 · qhsong

Ubuntu 10.04 安装Y460 双显卡切换

这几天一直在折腾ubuntu,就为了他的一个显卡切换功能。自己用的小Y,显卡是i3集成显卡以及HD 5650。以前一直不喜欢在ubuntu上工作,因为发热量太大了,吹风口直接很烫手。加上最近原来的ubuntu空间已经不够了,就决定自己重新装一下系统。 回归正题,安装Y460 ubtuntu驱动,先去官网上下载11.6的驱动。 这是ati驱动的wiki:http://wiki.cchtml.com/index.php/Ubuntu_Lucid_Installation_Guide 先安装依赖关系 64位还要安装 然后使用 安装 最后初始化一下就行了。 ———————————————–分割线——————————— 经过我几天的测试,amd的驱动11.6的目前来说对于这个系统是最稳定的,没出什么问题。特效全开没问题,也不会死机。折腾了好几天,重新安装了好几遍ubuntu,可怜我的小电脑啊。。 附上这个版本的下载地址: http://support.amd.com/us/gpudownload/windows/previous/11/Pages/radeon_linux.aspx?os=Linux x86&rev=11.6 看来不是越新的越好啊。。。

2012-10-25 · qhsong

centos中配置samba作为PDC域服务器

饭饱神虚,前几天手贱,把我们的服务器装上了个centos,还没有显卡驱动。干什么事情都要在text-mode,这几天由于需要,装了个samba,光配置就花了好几天,下面把配置samba的各种过程记录下来,以供大家查询。 如何配置samba的事情,我想之前有很多文章了,我参考的是 1.samba 3.0 轻松搞定PDC域服务器 2.一步步学习samba 3.samba之PDC配置 4.linux下用户权限和文件权限相关管理文件。 问题一:启动samba服务,无法客户机无法加入 启动完成后,无论怎么设置,都无法加入。最后经过排查,是防火墙把所有进入的数据阻挡了。一气之下,把防火墙关了。 >>setup 防火墙配置把enable前面的去了。service 里把iptables这个服务前面的去了。 >>service iptables stop 问题解决。 问题二:在所有文件夹为777的权限之下,登录提示无法创建配置文件,登陆后发现共享磁盘不能写。 samba文件不能写 原因是SElinux阻止了,关闭SElinux就可以解决问题了。 >>vi /etc/selinux/config 把SELINUX改为disabled就行了,彻底关闭之后,就可以访问了。

2012-05-13 · qhsong

resolv.conf 配置信息重启后丢失解决方法

我要配置DNS,修改/etc/resolv.conf,修改后重启服务 service network restart ,修改/etc/resolv.conf的信息丢失,请大家看看。 修改前的配置 # No nameservers found; try putting DNS servers into your # ifcfg files in /etc/sysconfig/network-scripts like so: # # DNS1=xxx.xxx.xxx.xxx # DNS2=xxx.xxx.xxx.xxx # DOMAIN=lab.foo.com bar.foo.com 解决方法在ifcfg-eth0 直接加入DNS1=xxx.xxx.xxx.xxx,再service network restart DEVICE="eth0" BOOTPROTO="static" HWADDR="00:0C:29:B5:E4:65" NM_CONTROLLED="yes" ONBOOT="yes" IPADDR=192.168.128.133 NETMASK=255.255.255.0 GATEWAY=192.168.128.1 DNS1=222.46.120.6 再来查看resolv.conf 多了一行 namerserver xxx.xxx.xxx.xx Generated by NetworkManager nameserver 222.46.120.6 还有方法二: 终于找到一篇文章解决了我的问题:http://tech.techweb.com.cn/archiver/tid-380658.html 文章内容: vim /etc/resolvconf/resolv.conf.d/head 文件 显示与resolv.conf相同的内容: Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) DO NOT EDIT THIS FILE BY HAND – YOUR CHANGES WILL BE OVERWRITTEN) 在最后键入nameserver 202....

2012-05-08 · qhsong

改造笔记本之换光驱硬盘位

之前买的那块硬盘坏了,送去新蛋修了,直接把硬盘发回去了,什么发票啊,什么保修卡啊,什么外壳,什么都没发过去。等了一个月,那边的人给回电话说硬盘只能退钱,还要寄发票过去,换新的他们没货了(该死的泰国洪水。)。。。后来折中了一下,他们给我换了一块良品盘,别人用过的,但是是修好了的。也只能这样了,想想良品盘嘛,不能再装在移动硬盘里折腾了,于是乎买了个光驱位硬盘架,把原来很少用的光驱拆下来了,装上去了,缓解一下电脑磁盘紧张的局势。 大概就是这样吧,搞好之后更多的是分区的折腾。。 折腾,永无止境啊。

2012-03-19 · qhsong

pptpd+freeradius+mysql 构架VPN并进行流量限制笔记

去年就折腾了一下这个,一直没有折腾出来,今年在北京呆了几天,在情人节结束之后,到今天回到了秦皇岛,又折腾了一下午,总算把上述一套系统给做出来了。 主要参照 1、PPTP/L2TP + FreeRADIUS + MySQL 安装与配置 2、CentOS+pptpd+freeradius+mysql+ara 总结 3、freeradius wiki …. 步骤 1、安装pptpd参照资料2,资料2里面那个脚本文件已经相当详细,没有什么好说的,几乎是傻瓜化了的 2、安装freeradius,下载安装过程参照的是资料1里面,这样也能保证自己得到的是最新版本的。但是在测试完成之后,加入mysql测试的时候,输入radiusd -X,有一个提示是Failed to add duplicate client localhost,自己一直搞不懂为什么有个副本呢?后来把naslist.conf文件里面全部注释了,还是不行。 后来查资料发现,我原先为了安全,把test123改成了其他密码,本以为顺着做按照自己的想法改就行了。所以在naslist.conf还有后面的mysql里面输入的是我自己改的这个secret,不是test123,而radius的客户端没有改,所以主机就不认。改也很简单, cd /usr/local/etc/raddb vi clients.conf 找到这样的语句 client localhsot{ } 把这个语句块中的secret=test123改为你要的密码,这样,客户端和nas之前就能正常沟通了,也保证了安全的需要。 3、mysql部分 mysql对于用户的控制是在radcheck表里面,最简单的,用户名和密码控制就用User-Password ==这个属性就可以了,还有一个限制连接数的属性是Simultaneous-Use := ,不同的操作符会有不同的含义,具体参见wiki里面。 还可以用group来控制,这个可以将用户分组来做。大家可以看一下那个表的结构,大家也就知道怎么做了。 4、流量限制部分 我是把统计部分直接加到了sql/mysql/counter.conf文件末尾,所以,首先到radiusd.conf文件里面,找到$INCLUDE /sql/mysql/counter.conf前面的#去掉,然后 cd sql cd mysql vi counter.conf 在文件后面加入计算模块 sqlcounter monthlyBytecounter{ counter-name = Total-Max-Octets check-name = Max-Octets reply-name = ChilliSpot-Max-Total-Octets sqlmod-inst = sql key = User-Name reset = monthly query = "SELECT (SUM(acctinputoctets)+SUM(acctoutputoctets)) FROM radacct WHERE UserName='%{%k}'AND UNIX_TIMESTAMP(AcctStartTime) &gt; '%b'" } 同时,在/usr/local/raddb/sites-available/default文件里的authorize {} 节点里的最后(一定是最后,我之前加在开始就不行),加入这个模块的名字...

2012-02-15 · qhsong

[转]修改Ubuntu 10.04 启动菜单默认系统的三种简便易用的方法总结

博客地址:http://www.cnblogs.com/cubean/archive/2010/08/02/1790286.html 一、能上网情况下的最好方法:安装startupmanager——图形启动项管理器 打开终端输入:sudo apt-get install startupmanager 安装启动管理器 系统——系统管理——启动管理器,选中默认开机操作系统即可。 (编者注)或者安装: 安装命令如下: sudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo apt-get update sudo apt-get install grub-customizer (/编者注释完毕) 二、最方便的方法:调整Windows系统的默认启动顺序(不需要修改grub.cfg) /etc/grub.d 目录中的脚本文件的文件名都是以数字开头,这确定了在执行update-grub 时各文件内容被执行的顺序。 用 sudo nautilus 命令,以root权限打开文件浏览器。然后找到30_os-prober这个文件,把 30_os-prober这个文件名的数字30改为05到10之间的数字即可(没多少可选06、07、08、09),比如改为08_os-prober,这样创建出来的grub.cfg内的菜单项,windows的排序就会自动在ubuntu之前; 运行 sudo update-grub 命令。就可以看到,windows7 已经排在了第一个的位置上。 三、网上介绍最多的方法(修改grub.cfg) 用 sudo gedit /boot/grub/grub.cfg 命令打开grub.cfg 这个文件, 一种方法是并将文件中的 set default=“0” 中的 0 改成对应欲默认启动的操作系统的序号(从0开始) 。然后保存; 另一种方法是把Windows对应的启动说明那一段剪切到启动说明段最前面; 用这2种方法都能默认启动Windows,但用修改grub.cfg 文件来实现修改默认启动项应注意:当使用update-grub 命令或者系统升级、grub升级等,grub.cfg文件将被复原。需要重新修改。 如果懒于每次update-grub 之后都要修改grub.cfg 文件,则可以进行如下操作: 用 sudo gedit /etc/grub.b/00_header 命令打开00_header 这个文件,找到 ser default ="${GRUB_DEFAULT}" 一行,将${GRUB_DEFAULT} 换成欲默认启动的操作系统的序号(从0开始),保存,再update-grub。这样每次update-grub之后生成的grub.cfg将自动改成我们想要的样子。

2012-01-15 · qhsong

关于晚会技术准备的几点心得

广告一下,我们晚会的开场视频 我们跳舞的视频 一帮技术男人们在这里跳舞,也真是为难大家了,这个舞蹈练了大家一个星期吧,逗大家乐乐。下一页,我们言归正传。 ...

2011-12-26 · qhsong

安装组建三屏显示器 HD6850 两块 crossfire

最近台里新入手一批设备,之前我们报的计划买到了一些。来了一台我们要的高配置电脑,配置如下: i7 2600K/2TB3/16GB/HD 68502 报上去的是3屏显示器,本想着这些商家能够帮我组好3屏显示的,结果,这些无良商家,什么都不管。直接把东西拿过来,什么都不装。。。连连接线都是DVI转VGA的,真想说他们坑爹啊。 好了,回归正题。观察得,6850有总共有两个DVI接口,两个mini DP接口,一个HDMI接口。 1、crossfire 要组建crossfire,首先必备的硬件是一根交火线,图片如下 每端插一张显卡,硬件方面OK。 打开ccc,选择gaming-> AMD crossfireX configuration,把enable corssfire勾选上,屏幕一闪,交火打开了。 PS:我们之前还以为要去主板里面设置某些选项交火才会开,没想到是直接买根交火线,然后一装驱动就打开了。 2、三屏界面 考虑到我们的显示器是只有DVI和VGA接口的显示器,于是乎,我们考虑使用两个DVI接口,外加一个miniDP转接口。花了几天时间,我们在淘宝上淘到了一个miniDP 转VGA接口的转接器。这里有两点需要注意的,首先,组建3屏以及以上显示器都要使用一个DP接口,其次,DP口转其他接口的接线一定要是带芯片的,有的仅仅只是简单的转接一下,那这是不行的。 上图就是我们现在的配置,两个DVI的线,一个miniDP转VGA的线。 接入之后,就可以按照各自喜欢的做法来组建三屏,具体看催化剂中的详细说明。 我在实际测试的过程中发现,如果把三屏组成一个大的显示器,即分辨率在3000那种样子的话,接miniDP转VGA这个显示屏有时会出问题,在屏幕的某个地方会有一种拖影和卡顿的现象,我们猜测是到了VGA线传输的性能极限了,所以才会出现这种情况。于是我们把两个屏幕连起来组,另外一块屏幕扩展出来。这符合我们的需求。 这是我的最终成果,期待你与我共同的讨论。

2011-11-15 · qhsong

《乱码大会》——一篇强大的文章

本文的最初版本发表于水木清华站(SMTH)的(Internet)讨论区。作者蓝海(bluesea)为水木清华病毒讨论区的现任板主。本篇是唯一在正式出版物上刊登的版本。本文不是计算机用户的入门指南,需要读者对最基本的计算机知识有一定的了解。 这是当时一篇很老的文章,但是现在的人读起来,仍然是受益匪浅。字符编码,永远是作为一个程序员应该考虑的问题,特别是一个跨国家,跨地区的程序员,UTF并不是都是王道。放在这里,仅供大家阅读。 教育网用户移步至http://epub.cnki.net/grid2008/detail.aspx?QueryID=4&CurRec=1,使用IP登陆后下载。 以下是对其原文的摘录: 乱码的产生既然是信息编码和解码不能够统的结果因此,解决乱码的过程就是找到和编码相统一的解码方法,并对计算机软件不能全自动进行适当解码的信息进行重新的处理和解码使得所恢复的信息达到可被理解和交换的目的。由于信息编码的种类繁多,信息交换中的具体形式和特殊情况非常复杂,因此乱码问题的解决并没有一个特定的方法,通常需要对相关的知识有一定的了解,然后通过肉眼对乱码的表现形式进行观察,对乱码的性质做出初步的判定后,才能找到相应的解码方法进行试验。 本文讨论的这些有关乱码的内容,基本上都是取材于BBS中很多初学者经常遇到并提出询问的问题,对它们进行了分类与整理,针对E-mail和WWW中经常出现的、初学者不易理解的特殊标记、乱码等现象,以乱码的的形成原因和识别手段为主线,涉及汉字乱码、ANSI、UUENCODE、MIME/BASE64、QUOYED-PRINTABLE、ROT13、HTML,文件格式、 [1]数据加密等方面的内容,为大家比较全面地介绍一下各种乱码的产生原因、判断依据和解决方法。可以说,常见的乱码有这样一些规律(1)和汉字或其他国家的文字有关(2)经常发生在E-mail,Usenet,www的阅读中(3)和传送二进制文件有关(4)和信息的加密解 密有关。 而乱码产生的原因正如前面所说的,和软件的版本,即软件能自动识别和使用的解码协议有密切的关系。本文的写作主要针对DOS/windows操作系统的用户,为在乱码发生的时候对不能识别的信息进行还原和理解提供一些帮助。至于如何避免乱码的产生,内容则更繁杂,本文对于软件或网络开发过程中遇到的类似问题并不涉及。

2011-11-15 · qhsong