fatihsarac adlı üyeden alıntı: mesajı görüntüle
ama bu zamana kadar dikkatimi çeken bir şey var, bu node.js ve benzerleri hakkında "kod" haricinde her şey anlatılıyor. bence bilgisi olan birileri bu noje.js için örnek uygulama nasıl yazılır onu anlatmalı. gerçi büyük ihtimalle bir çok kaynak vardır ama dediğim gibi işimiz düşmeden araştırıp öğrenmiyoruz.
Konu Node.js ile uzmanlaşmak yerine öğrenmek ise, açıkçası çok fazla bir kaynağa ihtiyacınız olacağını düşünmüyorum. Node.js çok yabancı bir platform değil zira kodlarınızı Javascript ile yazıyorsunuz. Eğer Javascript biliyorsanız, ki pek çok PHP programcısının en azından temellerini bildiğini farz ediyorum, Node.js ile programlama yapamamak için hiç bir nedeniniz yok. Bilmiyor olsanız dahi öncelikli olarak öğrenmeniz gereken dil Javascript ve öğrenmesi çok zor olan bir dil değil. Gerekli olan bütün bilgi API dökümanlarında var;

http://nodejs.org/api/

Bir kaç farklı örnek istiyorsanız eğer, Node.js ve npm kurulumlarını bilgisayarınıza yaptıktan aşağıdaki paketleri de indirin.

npm install coffee-script
npm install felixge/node-mysql
Aşağıdaki kodu 'simple_node_server.coffee' olarak kaydedin ve terminalde aynı dizinde aşağıdaki kodu çalıştırın.

coffee simple_node_server.coffee
http = require('http')

server = http.createServer (request, response) ->
    response.writeHead 200, {'Content-Type': 'text/html; charset=utf-8'}
    response.end 'Merhaba Dünya'

server.listen 5555

console.log 'http://127.0.0.1:5555/ adresinde sunucu dinliyor'
Yukarıdaki basit örnek bir sunucu oluşturuyor ve 5555 nolu port üzerinden dinliyor. Gelen isteklere response ile cevap veriyor. Ancak gelen istekler için uğraşmak biraz yorucu. Tabii bunları PHP ile yaparken sunucu işlemlerini genellikle Apache gibi bir web sunucusuna bırakıyorsunuz. Istek bilgilerine $_POST, $_GET, $_SERVER gibi değişkenler vasıtasıyla ulaşıyorsunuz. Geri göndereceğiniz cevabı pek çok etkeni düşünmek zorunda kalmadan basit bir 'echo "Merhaba Dünya"; ' ile yapabiliyorsunuz. İşin bu kısmı Node.js bilmekten çok web sunucuları hakkında bilgi sahibi olmanıza dayalı. Zira HTTP sunucu desteği sağlayan pek çok farklı platform buna benzer bir arayüzü size sunuyor.

Biraz daha ayrıntılı bir örnek isterseniz;

'test' adını vereceğiniz bir veritabanına aşağıdaki tabloyu ekleyin.
CREATE TABLE IF NOT EXISTS `entries` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `subject` varchar(16) NOT NULL,
  `content` text NOT NULL,
  `created_at` int(11) NOT NULL,
  `updated_at` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Bu kodu 'simple_node.coffee' adındaki bir dosyaya kaydedin ve aynı dizinde iken, terminalde aşağıdaki komutu çalıştırın. Node.js ile 5555 nolu port üzerinde bir web sunucusu kurmuş olacaksınız. Bu sunucu aynı zamanda '/', '/new' ve '/create' yollarına cevap veriyor. 'Başlık' ve 'mesaj'dan oluşan verilerinizi 'mysql'den okuyabilir ve yeni veriler kaydedebilirsiniz.

coffee simple_node.coffee
port = 5555
db_host = 'localhost'
db_username = 'root'
db_password = ''
db_name = 'test'

puts = (obj) ->
  console.log obj

zeroFill = (number) ->
  return '' + number if number > 9
  '0' + number 

Date::formatted = ->
  zeroFill(@.getDate()) + '.' + zeroFill(@.getMonth() + 1)  + "." +  @.getFullYear();

class Server
  constructor: () ->
    @db = new DB(db_host, db_username, '').connect(db_name)

    @server = require('http').createServer (@request, @response) =>
      @route request, (data) =>
        @response.end data

  route: (request, callback) ->
    switch request.url
      when "/" then @index (data) -> callback(data)
      when "/new" then @new (data) -> callback(data)
      when "/create" then @create (data) -> callback(data)
      else @response.end 'Sayfa bulunamadı. <a href="javascript:window.history.back()">Geri</a>'


  run: (@port) ->
    @server.listen @port
    console.log "http://127.0.0.1:#{@port}/ adresinde sunucu dinliyor"

  index: (callback) ->
    @db.query "SELECT * FROM entries", (results) =>
      @response.writeHead 200, {'Content-Type': 'text/html; charset=utf-8'}
      data += '<h3>Index</h3>'
      data = "<table>"
      data += "<tr><th>ID</th><th>Konu</th><th>Mesaj</th><th>Gönderme</th><th>Güncelleme</th>"
      data += @create_entry_row result for result in results
      data += "</table>"
      data += '<a href="/new">Ekle</a>'
      callback(data)

  create_entry_row: (result) ->
    created_at = new Date(result.created_at * 1000).formatted()
    updated_at = new Date(result.updated_at * 1000).formatted()
    "<tr><td>#{result.id}</td><td>#{result.subject}</td><td>#{result.content}</td><td>#{created_at}</td><td>#{updated_at}</td></tr>"

  new: (callback) ->
    @response.writeHead 200, {'Content-Type': 'text/html; charset=utf-8'}
    data = '<form action="/create" method="POST">'
    data += '<p><input type="text" placeholder="Konu" name="subject"></p>'
    data += '<p><textarea placeholder="Mesaj" name="content"></textarea></p>'
    data += '<p><input type="submit" value="Konu Ekle"></p>'
    callback(data)

  create: (callback) ->
    d = ''

    @request.on 'data', (data) ->
      d += data

    @request.on 'end', =>
      post = require('querystring').parse(d)
      now = Math.round(Date.now() / 1000)
      @db.query "INSERT INTO entries (subject, content, created_at, updated_at) VALUES ('#{post.subject}','#{post.content}', #{now}, #{now})", (results) =>
        @response.writeHead(302, { 'Location': '/' })
        callback('')

class DB
  constructor: (host, username, password = '') ->
    @connection = require('mysql').createConnection
      host : host,
      user : username,
      password : password,

  connect: (database = 'test') ->
    @connection.connect()
    @connection.query 'USE ' + database, (err, rows, fields) ->
      throw "HATA: Veritabanı '#{database}' bulunamadı" if err
    @

  disconnect: ->
    @connection.end

  query: (string, callback) ->
    @connection.query string, (err, rows, fields) ->
      throw err if err
      callback(rows)

s = new Server
s.run(port)



Eğer coffeescript hoşunuza gitmiyor ise aşağıdaki komutu çalıştırarak, coffeescript dosyasını bir javascript dosyasına çevirebilirsiniz.

coffee -c simple_node.coffee
Basit bir işlem için bayağı fazla bir kod. Hemen her şeyi kendiniz yapmak zorunda kalıyorsunuz. Bununla birlikte düşük seviyeli işlemleri yapabilmek uygulamanız üzerinde büyük bir kontrole sahip olmanızı sağlıyor ancak gerçekten başınızı ağrıtabilir. Bir framework kullanmadan Node.js ile web programlaması yapmak C ile bir site yazmak gibi. Dahası sürekli olarak asenkronize çalışan "callback" fonksiyonlarla uğraşmak başlangıçta aklınızı karıştırabilir. Samimi olmak gerekirse eğer bu örneği CoffeeScript ile hazırlama imkânım olmasaydı, bu kadar uğraşmazdım. Önceki mesajımda da belirttiğim gibi, bu işlemleri tam anlamıyla yerine getirebilecek bir framework olmadığı sürece, her ne kadar hızlı da olsa, Node.js ile web programcılığı yapmak pek mantıklı değil. Eğer araştırırsanız pek çok basit soket uygulaması bulabilirsiniz sanırım. Bu yüzden yazdığım örneğin bir web uygulaması üzerine olmasını tercih ettim. Uygulamanın detaylarını şu an anlatmayı gerekli görmüyorum. Araştırmak isteyen yazılımcılar zaten gerekli kaynakları bulabilir ve bu kodları da inceleyebilirler. Diğer yandan Node.js ile programlama yapmak istiyorsanız öncelikle gerekli Javascript bilgisine sahip olmalısınız. Bu açıdan zaten yeterli kaynağı bulabileceğinize inanıyorum.