Node.js 和 Socket.io 入门教程

安装Nodejs:

nodejs有自己的包管理工具,叫npm,通过npm管理依赖包,相当的方便。安装nodejs也是比较方便,Ubuntu上直接用:

apt-get install nodejs

Debian系统:

Node.js在官方的Debian Sid(unstable).中已经有了,可以直接通过apt-get安装,首先检查apt-get的source文件/etc/apt/source.list中是不是已经包含

deb http://ftp.us.debian.org/debian/ sid main

可以通过如下方式安装:

root@host: ~ # echo deb http://ftp.us.debian.org/debian/ sid main > /etc/apt/sources.list.d/sid.list
root@host: ~ # apt-get update
root@host: ~ # apt-get install nodejs

详细的安装信息这里有: https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

安装Socket.io:

开发Node.js程序当然离不开Socket.io,安装Socket.io也是比较的简单: Ubuntu系统,先安装npm包:

apt-get install npm

安装npm包后,就可以通过npm包安装Socket.io了:

npm  install socket.io

开发入门:

socket.io主页上有不少的例子,这里是自己整理的一个例子,服务器每隔2秒向客户端发送一条消息的例子:

Server: server.js

var app = require('http').createServer(handler), 
    io = require('socket.io').listen(app), 
    fs = require('fs');

app.listen(8080);
function handler (req, res) {
    fs.readFile(__dirname + '/index.html',  
    function (err, data) {  
        if (err) {
          res.writeHead(500);
          return res.end('Error loading index.html');
        }
        res.writeHead(200);
        res.end(data);
    });
}

io.sockets.on('connection', function (socket) {
    io.sockets.emit('news',  'welcome to nodejs');
    var tweets = setInterval(function () {
      socket.emit('news', 'bieber tweet ok');
    }, 2000);

    socket.on('disconnect', function () {
        clearInterval(tweets);
        io.sockets.emit('user disconnected');
    });
});

Client: index.html

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost/');
  socket.on('news', function (data) {
      console.log(data);
      $("#alarm").append(data).append('<br/>');
    socket.emit('my other event', { my: 'data' });
  });
</script>
</head>
<body>
    <div id="alarm"></div>
</body>
</html>

server.js和index.html放到同一个目录下,然后启动:

> node server.js

在浏览器上访问: http://127.0.0.1:8080/ 即可看到客户端不断的有数据更新。

本文链接[Link]




为何云思考?

曾经,一直在寻找类似HackerNews、Reddit的中文技术互动社区,分享,创造,和探讨一些新鲜的观点、想法,寻找具有共同话题的人群,沉淀自己的思绪,见证自己的成长历程。有一些圈子氛围不是我喜欢的,微博和知乎是很好的地方,但不是技术交流的地方,传统的都是在BBS里讨论,但免不了一些废话和顶贴。我没有PG老大的领导力和影响力,也正因为此,我希望“云思考”建立成一个平等、自由的技术/科技交流社区,每个人可以平等的交流,分享自己的思想,没有废话、吵架和谩骂,每个人拥有独立思考的能力,尊重每个人的想法和言论自由,但也不给别人添乱。这里没有明星一呼百应,前簇后拥,大牛可以获得众人的好评、追捧,新人们也同样可以,精彩的想法会得到正面的鼓励、赞扬、认可。这里鼓励发表有意义有深度的想法、主题、Idea,不鼓励无意义的闲言废语。这里的主题只有向上的投票,没有向下的投票,对于不喜欢或者反对的人/事,最好的反对方式就是漠视它,它也会因为其他好的人/事慢慢销声匿迹。这里不鼓励没有意义的顶贴沙发,但允许自己的、哪怕别人看起来很弱智的想法,因为经过思考的想法,不管是好的坏的,正确的错误的,才是有意义的,才值得保留下来,对别人或许一文不值,对自己却可能是一生的财富。每个人都有自己独特的世界观和价值观,每个人有自己独特的价值体现,或许你自己没有发现,或许你功力修练还不够深厚。云思考是个帮助程序员和设计师们体现自己能力和价值的地方,你的一言一行体现了你的价值存在。云思考鼓励独立思考,找到自己喜爱的事情,并乐此不疲的为之奋斗。云思考不是人云亦云,无数个独立思考的人,才能形成一片智慧的云,满足众人的求知欲。

云思考是什么?

云思考是一个类似Hacker News、Reddit的中文社区,这里是程序员、设计师、和互联网创业者交流、分享、创造的社区,关注有价值的讨论、有意思的思考、实实在在的创造。

云思考搭建历程:

第一版是用HN的代码搭建的,HN由Arc编写并且开源,在经过学习Arc、安装环境、测试代码后,一次不巧的偶然,系统挂掉了,并且再也起不来。HN的代码不需要安装数据库,所有数据基于文件系统,正因为此,在周期执行TopStory的时候文件没有写完,数据格式不完整,系统加载失败。在联系作者后,Bug是修改了,但心有余悸,因为自己只能看懂Arc代码,却没有能力修改HN的代码。

继续寻找HN的开源实现,找到了newsmeme(Python),lamernews(Ruby)这2个比较出名的实现。由于对flask不熟悉,在搭建过程中newsmeme遇到几个Bug,一直未能解决,也便不了了之。于是花了几个晚上,用Python/Tornado Clone了一个HN,就是目前的云思考。http://www.yunsikao.com

提交手册:

受欢迎的话题:

任何能够激发想象力、创造力,满足众人的求知欲的、有趣的话题,主要关注IT技术、互联网方面的话题。可以是自己的一段精彩的代码,一个非常实用的小工具,也可以是一段经过思考的总结,或一段即使看起来有点天马行空的想法。

不受欢迎的话题:

关于政治、军事、体育等,以及其他与本站核心背离的话题。如果在互联网上经常能看到的文章,或已经被众多网站转载过的文章,就不必再转载到云思考了,因为你不在云思考,也都能获得此信息,云思考不希望为互联网制造太多的重复信息。

发帖指导:

发帖是个耽误时间的事,不仅耽误自己的时间,还会耽误别人的时间,请确信自己的时间值得耽误。即使5毛钱也算不少的钱,但还请慎重消耗你的karma值。

不要做标题党,一句美妙的文字好过一段无意义的文章。否则管理员可能会修改你的文章标题。

不要在标题里携带奇怪的字符,来突出标题。如果标题里面带有网站名字,请除去掉网站的名字。因为在文章的链接后面,已经携带有网站的链接。

不要转载内容工厂的文章。如果转载的文章是转载的别人的,请转载最原始的文章,如果找不到原始的文章,请放弃转载。

如果想问技术问题,先去CSDN、iteye问问,或许能有收获。如果还没有答案,再来这里询问。如果想找人做毕业设计,请最好不要再这里提及。

如果你想展示自己的创业内容,至少你要确信是想获得别人的建议或意见,而不是为了获得一些点击量,那么请发表自己的一些很酷的创造。

不要吵架。这里的人都是真实存在的人,如果你和某人在线下也经常吵,天气这么好,何不找个小河边好好切磋一下?如果不是,那就闭嘴吧。善用Block功能,但有时火花需要激情才能碰撞出来。

不要冰天雪地裸体跪求,不要求求好心人帮你,但可以适当求求别人表扬你。

精简你的语言,可以改变你的不好习惯。多年以后再来回顾,这些言语片段会是你积累下的财富。

本文链接[Link]




New job, new start, new dream

总结过去没有做好的几点: 1、没有自己的技术博客,没有对自己的技术做一些总结 2、在技术圈的知名度不高 3、对未来的规划不够清晰。

用了一点时间搭建了jekyll+github环境,用来写博客,看不少人极力推荐。搭建完后的感觉, markdown格式写blog还是不错的,比较方便将来移植排版,github可以免费使用,访问速度非常的快,还可以绑定域名。

第一步、使用Git Pages

参考这里http://www.noreal.pro/2011/12/26/use-Jekyll-build-Blog-on-Github/

第二步、使用Jekyll

jekyll安装的教程很多,不一一列举, 可见上面的参考链接。

自己在Mac下安装没有成功, 但其实不需要搭建jekyll环境,只有想修改Blog的Theme时才需要安装jekyll环境了。

只需要将Jekyll-Bootstrap的文件下载下来,放到自己的USERNAME.github.com里面并上传到github中,以后写博客只需要在_posts目录里面添加YYYY-MM-DD-[blog-title].md格式的文件即可。

如何安装jekyllbootstrap请看这里jekyllbootstrap.com

从今天开始,开始整理总计自己过去用过的技术,一些心得体会。

本文链接[Link]




最近发布的文章