September 18, 2013

Ben dmd ve arkadaşlarını GitHub'dan doğrudan alıp kurmadım hiç. Onun yerine şu projeyi öneririm:

https://github.com/carlor/dlang-workspace

Hiç OSX'te denemedim ama orada açıklandığı gibi:

  • dmd, druntime, ve phobos'u ayrı ayrı bu projenin altına 'git clone' edin.

  • Herşeyi 'bash posix/gen.sh' diye oluşturun. (Alt projeleri git pull yaptıktan sonra önce 'bash posix/gen.sh clean' yapmanız hararetle önerilir.)

  • Oluşan dmd'nin adı dmd değil, wbd oluyor. Programınızı o komutla derleyin: 'wbd deneme.d' gibi...

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 19, 2013

ufak bir araştırma sonucu bilgilendirme.

Nginx ile Unix Domain Socket kullanımını araştırırken şöyle bir yapılandırma ile karşılaştım.

upstream backend
{
   server backend2.example.com:8080;
   server unix:/tmp/backend3;

   server backup1.example.com:8080   backup;
   server backup2.example.com:8080   backup;
}

server
{
   location /
   {
       proxy_pass http://backend;
   }
}

Yapacağımız uygulamada TCP socket ile boğuşmak yerine güzelce Unix Domain Socket yapısı üzerine uygulamamızı yazarız.

Sonra uygulamanın çalışacağı makinaya Nginx kurup yapılandırmasını yaptığımız zaman yaptığımız uygulama Nginx uygulamasını bir uzantısı olarak çalışacaktır. Böylece ve performanslı bir yapı olacak hemde Cluster yapısı oluşturabiliriz.

Şöyle seneryo cizelim.

5 tane sunucumuz var. ve 5 tane ip adresimiz var.
Sunucularımız Nginx + Unix Socket Uygulamamızı kurduk yapılandırmalarını yaptık şuanda 5 sunucuda Nginx ile göreve hazır bekliyorlar.

Domain adresimizi birtane ip adresine yönlendirdik. Yönlendirdiğimiz ip adresinde sunucumuz hazır bekliyor daha sonra Nginx ile yaptığımız cluster yapısı ile 5 tane makina birbiri ile iletişim halinde gelen istekleri karşılıyor.

Böylece hem performanslı hemde ölçeklebilir yapı elde ederiz.

Bunun yanına güzel veritabanı yapısı ve cacheleme yaptığımız zaman kesinlikle yaslanın arkanıza bakın keyfinize :D

Daha detaylı bilgi için: http://tutarticle.com/linux/nginx-web-server-cluster/

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 19, 2013

acehreli verdiğinizi örneği sonunda derledim derleme sırasında hata yok ancak çalıştırmak istediğimde hata veriyor.

/test --rol=sunucu olarak çalıştırmak istediğim zaman bu hatayı veriyor

std.socket.SocketOSException@std/socket.d(2495): Unable to bind socket: No such file or directory
----------------
5   test                                0x000000010f8caf68 ref test.Sunucu test.Sunucu.__ctor(immutable(char)[]) + 100
6   test                                0x000000010f8cae77 void test.sunucuOl(immutable(char)[]) + 51
7   test                                0x000000010f8cadc6 _Dmain + 250
8   test                                0x000000010f8ec331 extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runMainWithInit().void __lambda1() + 33
9   test                                0x000000010f8ebaa5 extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate()) + 45
10  test                                0x000000010f8ec2c4 extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runMainWithInit() + 52
11  test                                0x000000010f8ebaa5 extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate()) + 45
12  test                                0x000000010f8eba21 _d_run_main + 449
13  test                                0x000000010f8cae30 main + 20
14  test                                0x000000010f8cacc4 start + 52
15  ???                                 0x0000000000000002 0x0 + 2
----------------

/test --rol=istemci olarak çalıştırmak istediğim zaman bu hatayı veriyor

std.socket.SocketOSException@std/socket.d(2527): Unable to connect socket: No such file or directory
----------------
5   test                                0x00000001045bd3c8 ref test.İstemci test.İstemci.__ctor(immutable(char)[]) + 100
6   test                                0x00000001045bced7 void test.istemciOl(immutable(char)[]) + 51
7   test                                0x00000001045bcdde _Dmain + 274
8   test                                0x00000001045de331 extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runMainWithInit().void __lambda1() + 33
9   test                                0x00000001045ddaa5 extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate()) + 45
10  test                                0x00000001045de2c4 extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runMainWithInit() + 52
11  test                                0x00000001045ddaa5 extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate()) + 45
12  test                                0x00000001045dda21 _d_run_main + 449
13  test                                0x00000001045bce30 main + 20
14  test                                0x00000001045bccc4 start + 52
15  ???                                 0x0000000000000002 0x0 + 2

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 18, 2013

Alıntı (darkofpain):

>

farkı nedir ?

Kolaylık. dmd, druntime, ve phobos üç farklı proje. Onları tek tek kendi Makefile'larıyla oluşturmak yerine tek bir ortamda hepsini birden oluşturuyoruz.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 19, 2013

Tüm hayallerim suya düştü :(

klasör yolunu doğru şekilde belirledim. enum soketİsmi = "/private/tmp/testsock";

/test --rol=sunucu olarak çalıştırdım

Nginx ayalarını şu şekilde yaptım

worker_processes  1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events
{
   worker_connections 1024;
}

http
{
	upstream webb
	{
		server 127.0.0.1:3000;
		server unix:/private/tmp/testsock;
	}

	server
	{
		listen 80;
		server_name localhost;
		root /usr/local/test/application;

		location /
		{
			index index.html;
		}
	}

	server
	{
		root /usr/local/test/application;

		location /
		{
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme;
			proxy_set_header Host $http_host;
			proxy_redirect off;
			proxy_pass http://webb;
		}
	}
}

ama çalışmadı düşündüğüm gibi olsaydı harika olacaktı :(

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 19, 2013

Malesef Nginx ile iletişim kurmuyor :(

Debug işin uzun sürmez'den kastınız nedir :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 19, 2013

Dosya ismiyle ilgili bir sorun gibi görünüyor. Ben olsam öncelikle dosya yolunun başındaki '\0' karakterini kaldırarak denerdim. Doğru hatırlıyorsam, '\0' yalnızca Linux'un bir olanağı olabilir.

Bir de, OS X'te /tmp klasörü var mı? Yani, dosya yolu geçerli olmalı...

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 19, 2013

Sistemler nazlı olur. :) Umarım debug işin uzun sürmez.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 19, 2013

Alıntı (darkofpain):

>

Debug işin uzun sürmez'den kastınız nedir :)

Elinde çalışmayan bir sistem var. Şimdi hatanın nereden kaynaklandığını bulmak ("debug etmek") gerekiyor. :)

Hiç bilmesem de en azından bir tutarsızlık var:

'
upstream webb
{
server 127.0.0.1:3000;
server unix:/private/tmp/testsock;
}
'
Senin sunucu 127.0.0.1:3000 adresinde mi yoksa unix:/private/tmp/testsock adresinde mi? Nginx aynı sunucu (webb) için iki farklı server ayarı görünce ne yapar acaba?

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 20, 2013

upstream webb
{
server unix:/private/tmp/testsock;
}

böyle yaptığım zaman bile çalışmıyor malesef. ayrıca hepsini kontrol eder

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]