Archive for the ‘Server’ Category

Install erlang with wxwidgets (macports)


21 1月

In case observer.start gives you wx_object is not available or undefined

port install wxWidgets-3.0

port install erlang +wxwidgets

Install php5.4 on Ubuntu 11.10/12.04


29 6月
sudo add-apt-repository ppa:ondrej/php5 sudo apt-get update sudo apt-get install php5

Solution for mouse left key stuck in VMWare Workstation/Player


14 5月
Uninstall default official vmware tools. Install open-vm-tools & open-vm-toolbox vim /etc/apt/source.list add 'contrib' to debian source apt-get update apt-get install open-vm-tools open-vm-toolbox reboot done

Install Sphinx 2.0.3 on Debian (Solution for missing MySQL include files)


09 1月
aptitude install libmysql++-dev libmysqlclient-dev libssl-dev libssl-dev is critical here. without it you'll meet the weird problem below even you got other 2 installed as other tutorials said: checking for mysql_real_connect... no checking MySQL include files... configure: error: missing include files. I guess somehow it need the libssl to do the mysql_real_connect and without it you cannot pass the configure. after these, it's quite easy and normal. Just download the tar and extract, configure, make, make install. Done.

Direct simple answer: How to login as root in Debian 6


24 12月
Edit: /etc/pam.d/gdm3   Comment out the line with: ...user != root ...   Done.

How to setup pptp vpn server on linux (fedora 14)


03 8月
All in root:   1.Get ppp installed: yum install ppp ppp-devel   2. Get pptpd from : http://poptop.sourceforge.net/yum/stable/fc14/x86_64/ (if you are not installing on fc14 please just browser the parent folder and find yourself the correct version) wget http://poptop.sourceforge.net/yum/stable/fc14/x86_64/pptpd-1.3.4-2.fc14.x86_64.rpm   3. Install pptpd: rpm -ivh pptpd-1.3.4-2.fc14.x86_64.rpm   4. vim /etc/pptpd.conf Edit these 2 lines: localip 10.0.0.1 remoteip 10.0.0.10-100 (You can customize the ips. The first one is for the host in your future virtual network and the second is the range for the guests)   5. vim /etc/ppp/options.pptpd Edit the ms-dns lines: ms-dns 208.67.222.222 ms-dns 208.67.220.220 (Dns for the guest to use. These 2 are from openDns. Surely you can set whatever you like. 8.8.8.8, 8.8.4.4 may also be a nice choice. They are Google's DNS.)   6. Setup user/passwd: vim  /etc/ppp/chap-secrets Follow the comments in the file write something like this: username pptpd password * username2 pptpd password2 * (The * at the end means open access for all the ips. Of course if you want to specify one,  just serve yourself. )   7. IP forward vim /etc/sysctl.conf Edit this line: net.ipv4.ip_forward = 1 To make this take effect: sysctl -p   8.  iptables or firewall If you are using csf as I do you will have to do this: Step 1 Create File vi /etc/csf/csfpre.sh Input Text down iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT iptables -A INPUT -i eth0 -p gre -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT iptables -A FORWARD -i eth0 -o ppp+ -j ACCEPT Save File chmod +x /etc/csf/csfpre.sh Step 2 Create File vi /etc/csf/csfpost.sh Input Text down service pptpd stop service pptpd start Save File chmod +x/etc/csf/csfpost.sh restart csf+lfd (web interface or command line ) I also opened 1723 port in csf.conf file, which might not be necessary.   If you are not using it then you just need to run the commands in the .sh files above. After restart everything should work then.   Reference: http://blog.plite.org/neo_one2199/2011/04/03/installing-and-configuring-pptp-vpn-on-rhelcentos-5/ http://forum.configserver.com/viewtopic.php?p=8449      

「轉」如何学好C++语言


01 8月

by 陈皓 http://coolshell.cn/articles/4119.html

昨天写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学好C语言中谈到了算法和系统,所以这里就只谈C++语言。
  • C++是最难的语言。这个世界上最难的编程语言可能非C++莫属了。你千万不要以为几天就可以学好C++,C++的学习曲线是相当BT的,你可以看看这篇文章。C++是一门很自由的语言,自由到了有点BT和恐怖的地步。我甚至认为C++并不是一门成熟的编程语言,因为太容易犯错了。所以,你一定要在一开始就要有很小心谨慎的态度,并把C++当成一种难以训服的猛兽来看待
  • 多问“为什么要这样”的问题。学习C++一定要多问几个“为什么是这样”,“凭什么要这样”的问题。比如:很多人知道C++有拷贝构造函数和初始化列表,但你真的知道为什么要有拷贝构造函数?为什么要有初始化列表吗?为什么要有template,为什么要有RTTI,为什么不是别的呢?难道就是为了让一门语言变得Cool一些吗?完全不是这样的,C++中的任何一个feature都有些实实在在的原因,你一定要去了解为什么要把C++设计成这样的原因,你才能学好C++。有空看看《C++演化和设计》一书。
 
  • 看书,大量的C++书。你可以按如下先后顺序阅读(下面这些书,我花了大约4-5年的时间,今天我还在随时温习)
    • C++ Primer》,这本初级读本可能让会你啃得很痛苦,所有的语言的特性和为什么都在里面了,好好读读。当然由C++之父写的《C++程序设计语言》也不错。两本看一本就好了(我看的是前者)。
    • 了解C++的语法仅仅是万里长征的第一步,你还需要看看《Effective C++》和《More Effective C++》这两本书并不厚,但我从02年就一直看到现在,每次读我都有新的体会,这两本书太经典了。如果你对C语言不熟,这两本书会让你回去补C语言的课。
    • Think in C++同样是另一本经典之极的书,学c++必读,但是中文版的翻译的很不好,所以还是去读英文版的吧。
    • C++沉思录》同样非常值得一读,这里教的不是编程,而是思考的方法,这是相当珍贵的。
    • Exceptional C++》和《More Exceptional C++》让你看看各种问题的解决方法和一些常见的经典错误。
    • Advanced C++》和《Modern C++》可以让你知道C++各种神奇的用法。
    • 泛型编程与STL》是把C++实践到了极致的东西。很强大。STL——神一样的模板库(容器,算法和函数对象),不得不服。
    • 深入探索C++对象模型》让你了解编译器下的C++是什么样的,让你了解C++的性能并不差。这个对于C++的程序员太关键了。我以前写过的《C++虚函数表解析》还有《C++对象内存布局》属于这个范畴。
  • 和Java语言做对比。我个人以为Java对C++这个并不成熟的语言做了很多调整,规范和限制。所以,对比一下Java和C++,想一想,为什么一些东西在C++中可以做,但在Java中却不行。比如:Java的异常是必需要catch的,不然就会编译不通过。为什么Java不提供操作符重载?为什么Java会引入接口来做多重继承?为什么Java没有像C++那样的I/O字符流?为什么Java不支持指针?为什么Java可以做到垃圾回收?等等。Java体现着很多面向对象设计的东西,学习Java有助于你学会怎么更好地使用C++来编程
  • 面向对象设计 。虽然面向对象可能是个骗局。但是我觉得面向对象设计中的一些实践非常的不错,比如,单一原则,依赖倒置原则,等等,都非常地经典。《设计模式》必需一读,《面向对象的分析和设计》可以一读。但不可以设计模式为中心来编程,而应该是用设计模式来解藕
  • 类库学习。看看MFC是怎么封装Windows API的,看看ACE是怎么面向对象的,看看boost是怎么玩面向对象的,看看CPPUnit又是怎么设计的。当然,Java的JDK中有太多的设计模式,可以参考。
希望没有吓到大家,并欢迎大家补充。 —————更新 2011/03/30 19:20———— 更新几个观点:
  • 1)我不擅长写书评,所以推荐的这些书可能会让你有点看点没有感觉,你可以上豆瓣或是China-pub上看看书评。
  • 2)C++有很多奇淫技巧,有的很BT,包括虚函数表,也许会有人觉得有点没意思,但我觉得很有意思,一方面可以了解一门语言的实现细节,另一方面可以开阔思路。我从学习这些知识中受益很多。
  • 3)上述是我的个人的学习历程,我觉得对我很有效,所以是经验之谈。
  • 4)这类的文章在网上有很多很多,我不是第一个写这样的文章,我也不是写得最好的,我并不希望用长篇大论来谈论什么。只是想给大家了解一下大概的学习样子。毕竟,C++博大精深,任何一篇文章都无法说好。不如就简单一些。

「轉」如何学好C语言


01 8月

by 陈皓 http://coolshell.cn/articles/4102.html

 
有人在酷壳的留言版上询问下面的问题
keep_walker : 今天晚上我看到这篇文章。 http://programmers.stackexchange.com/questions/62502/small-c-projects 我也遇到了和提问的老外一样的问题。。能给像遇到这样烦恼的程序员一点建议嘛?谢谢!
我相信,这可能是很多朋友的问题,我以前也有这样的感觉,编程编到一定的时候,发现能力到了瓶颈,既不深,也不扎实,半吊子。比如:你长期地使用Java和.NET ,这些有虚拟机的语言对于开发便利是便利,但是对于程序员来说可能并不太好,原因有两个:
  1. 虚拟机屏蔽了操作系统的系统调用,以及很多底层机制。
  2. 大量的封装好的类库也屏蔽了很多实现细节。
一段时间后,你会发现你知其然,不知所以然。。我以前在CSDN上写过一篇《Java NIO类库Selector机制解析(》,在那篇文章中我说提到过(有讥讽的语气)Java的程序员不懂底层实现,所以很难把技术学得更扎实。此时,一部分程序员会不自然地想学学底层的技术,很自然的,C语言就被提了上来。 下面是我给这位朋友的一些建议:  
  • 鼓励并为你叫好。我鼓励你想要去学C语言的想法和精神,很多人都觉得C语言好学,其实并不然。(你可以看看《C语言的迷题》)现在的这个社会更多地去关注那些时髦的技术,而忽略了这个流行了40+年的C语言。一门技术如果能够流行40多年,这才是你需要去关注和学习的技术,而不是那些刚出来的技术(过度炒作的技术Windows编程史)。这才是踏踏实实的精神。
  • 不要找借口。这一条路走下来并不容易,不要给自己找借口。我最不喜欢听到的就是“很忙,没有时间”这样的借口。我以前在银行做项目,早9点到晚10点,周一到周六,我一样可以每天抽1个小时来看书和专研,一年下来也能精读5、6本书。我现在的工作项目和招聘任务很紧张,刚生的小孩只有自己和老婆两人带,还需要准备讲课,但是我还是能够找到时间看文章写文章维护酷壳。所以,我可以告诉你,“时间就像乳沟,只要你肯挤,就一定会有”。
如果你能在2-3年内精读完这些书,并全部融会贯通,那么你就明白什么是一览众山小的感觉了!我足足花了5年时间才算是真正全部读完这些书的。最后,祝你好运!努力! ——-更新:2011/03/29 20:00——- 我想,这篇文章主要想告诉大家这么几件事:
  • 编程编到一定时候,你就需要了解底层系统的机制,否则,知其然不知所以然。
  • 我没有否定非C的程序员的逻辑,真正的逻辑是——如果你想要了解底层机制,请学习C语言和操作系统。
  • 40多年的Unix/C影响深远。包括影响了Windows。如果你想一通百通,一定要了解Unix。那是计算机文化真正的根。
  • 不要肤浅地去思考问题。比如,不要以为一个DBA就不会考虑数据库引擎的内存页面的问题。也不要以为Web程序员就不需要了解后台的服务器和脚本的运行性能以及TCP/IP的问题。
高手往往都是有很强的系统的基础知识的,表面的东西永远是肤浅的。

Ubuntu Virtual Machine(KVM) Notes


02 6月
virt-manger : start the VM manager panel. need ssh -X. virsh: almost all operations with the VM. details see --help.   How to clone a VM: sudo virt-clone --original [original vm id] --name [new vm id] -f /data/virtual/var/lib/libvirt/images/[new vm img file name] After cloned, login to the new guest machine and change its hostname, ip add info, etc. For Ubuntu guest machine: vim /etc/udev/rules.d/70-persistent-net.rules Remove the eth0 which should be cloned from the original one and modify the other eth1 to eth0. sed -i "s/[original host name]/[new host name]/g" `grep [original host name] -rl /etc/ssh/ /etc/hosts /etc/hostname` vim /etc/network/interfaces auto eth0 iface eth0 inet static address 192.168.1.X netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1   For CentOS guest machine: use 'setup' to config the network and host name. and: rm /etc/sysconfig/networking/devices/ifcfg-eth0.bak /etc/sysconfig/networking/profiles/default/ifcfg-eth0.bak /etc/sysconfig/network-scripts/ifcfg-eth0.bak   How to Rename a VM: Shutdown the VM. sudo virsh dumpxml [original id] > [new id].xml vim [new id].xml and modify all the original id in the xml to the new one. sudo virsh undefine [original id] goto the image folder and change the original img name to the new one. sudo virsh define [new id].xml Done.

【转】8 Commonly Used Scalable System Design Patterns


27 12月
Ricky Ho in Scalable System Design Patterns has created a great list of scalability patterns along with very well done explanatory graphics. A summary of the patterns are:
  1. Load Balancer - a dispatcher determines which worker instance will handle a request based on different policies.
  2. Scatter and Gather - a dispatcher multicasts requests to all workers in a pool. Each worker will compute a local result and send it back to the dispatcher, who will consolidate them into a single response and then send back to the client.
  3. Result Cache - a dispatcher will first lookup if the request has been made before and try to find the previous result to return, in order to save the actual execution.
  4. Shared Space - all workers monitors information from the shared space and contributes partial knowledge back to the blackboard. The information is continuously enriched until a solution is reached.
  5. Pipe and Filter - all workers connected by pipes across which data flows.
  6. MapReduce -  targets batch jobs where disk I/O is the major bottleneck. It use a distributed file system so that disk I/O can be done in parallel.
  7. Bulk Synchronous Parallel - a  lock-step execution across all workers, coordinated by a master.
  8. Execution Orchestrator - an intelligent scheduler / orchestrator schedules ready-to-run tasks (based on a dependency graph) across a clusters of dumb workers.

貓熊寶寶幼齒園

姜經緯的博客