Forum: D Programlama Dili RSS
duraklatma ve indirme modülü(var mı?)
Sayfa:  1  2  3  sonraki 
canalpay (Moderatör) #1
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: duraklatma ve indirme modülü(var mı?)
Aklıma python'da gördüğüm sleep işlevi geldi. Bende D'de işe yarar diye D için olanını baktım ama bulamadım. Ama C için unistd.h başlığında varmış galiba. Tabii c ile ilgili bir şey bilmediğim ve c kodlarını D'de kullanamadığım için bir şey ifade etmiyor. Acaba D için sleep yani duraklatma işlevi var mı ?

Birde internet'ten bir şey indirebilmek için olsun, web tarayıcısıyla bir web sitesini açtırmak gibi olsun, yada web sitelerinin içeriğini indirmek gibi olsun bunlarla ilgili modül var mı ? (Yine bunun gibi şeyler python gibi kütüphanesi çok geniş dillerde dilin kütüphanesinde var oluyor.)

Sanırım D'dili diğer dillere göre daha az modülü var. Tango kütüphanesinden bakacaktım ama proje sayfası açılmadığı için bakamadım.  Acaba diyorum çok zor olmayacaksa D için kendi kütüphanemizi mi geliştirsek. Çok zor veya anlamsız mı olur ?
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
canalpay:
Aklıma python'da gördüğüm sleep işlevi geldi. Bende D'de işe yarar diye D için olanını baktım ama bulamadım. Ama C için unistd.h başlığında varmış galiba. Tabii c ile ilgili bir şey bilmediğim ve c kodlarını D'de kullanamadığım için bir şey ifade etmiyor. Acaba D için sleep yani duraklatma işlevi var mı ?

C olanakları için sistemine göre dmd'yi kurduğun şu klasörlere bakabilirsin:

    dmd/src/druntime/import/core/sys/osx/
    dmd/src/druntime/import/core/sys/posix/      (Linux ve başkaları için)
    dmd/src/druntime/import/core/sys/windows/

sleep'i zamanında ben de aramıştım. :) Bir daha bakıyorum... Linux için üç, Windows için de bir yol buldum! :) (Windows en altta.)

Bunların dönüş değerleri farklı. Ayrıca nanosleep'in nano saniye bilgisinin geçerlilik koşulunu bir in bloğunda gösterdim.

import std.cstream;
import core.sys.posix.unistd// sleep ve usleep
import core.sys.posix.time;    // nanosleep
 
void sleep_dene(in int süre_saniye)
{
    dout.writefln("sleep ile %s saniye", süre_saniye);
 
    const int kalan_saniye = sleep(süre_saniye);
 
    if (kalan_saniye) {
        dout.writefln(kalan_saniye, " saniye erken uyandım");
    }
}
 
void usleep_dene(in int süre_mikrosaniye)
{
    dout.writefln("usleep ile %s mikro saniye", süre_mikrosaniye);
 
    const int hata_kodu = usleep(süre_mikrosaniye);
 
    if (hata_kodu) {
        derr.writefln("usleep hata döndürdü");
    }
}
 
void nanosleep_dene(in int süre_saniye,
                    in int süre_nanosaniye)
in
{
    assert(süre_nanosaniye >= 0);
    assert(süre_nanosaniye <= 999_999_999);
}
body
{
    dout.writefln("nanosleep ile %s saniye ve %s nano saniye",
                  süre_saniye, süre_nanosaniye);
 
    timespec süre = {süre_saniye, süre_nanosaniye};
    timespec kalan_süre;
 
    const int dönüş_değeri = nanosleep(&süre, &kalan_süre);
 
    if (dönüş_değeri) {
        dout.writefln("nanosleep bir sinyal veya bir hata ile sonlandı");
 
        dout.writefln("kalan süre: %s saniye ve %s nano saniye",
                      kalan_süre.tv_sec, kalan_süre.tv_nsec);
    }
}
 
void main()
{
    sleep_dene(2);
    usleep_dene(2_000_000);
    nanosleep_dene(2, 500_000_000);
}

Windows için de core.sys.windows.windows modülünde şu var:

export void Sleep(DWORD dwMilliseconds);

Ali
acehreli (Moderatör) #3
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #1
canalpay:
internet'ten bir şey indirebilmek için olsun, web tarayıcısıyla bir web sitesini açtırmak gibi olsun, yada web sitelerinin içeriğini indirmek gibi olsun bunlarla ilgili modül var mı ?

Ben olsam şu adresteki listede açıklamasında "web" geçenlere bakardım:

  http://dsource.org/projects/

Ancak bir sorun var: O projelerin çoğu D1 için yazılmış ve bazıları D2'nin hızlı gelişiminin durmasını bekliyorlar. (D2'nin tanımının sonu yaklaşıyor. :) )

Onların D2'ye uymasını bekleyebiliriz.

Geçmişte dsss'i denemiş ve bunalmıştık... (Bu arada, onun da artık geliştirilmediğini öğrendim. Onun yerine başka bir çözüm olduğunu duydum ama daha bakmadım.)

Acaba diyorum çok zor olmayacaksa D için kendi kütüphanemizi mi geliştirsek. Çok zor veya anlamsız mı olur ?

Ben zaman yettiği sürece varım ama hazırda bulunan C kütüphanelerini "D binding"i yazarak kullanmak da her zaman için bir çözüm.

Ali
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #2
acehreli:
import core.sys.posix.unistd// sleep ve usleep
import core.sys.posix.time;    // nanosleep 

Başından beri core ile başlayan modül eklemek bana mantıklı gelmemişti. Onlar kütüphanenin kendi iç işleri kabul edilmeli... :) Onların yerine doğrusu tek şunu eklemek:

import std.c.linux.linux;

Windows C işlevleri için de herhalde şu yeter:

import std.c.windows.windows;

Ali
canalpay (Moderatör) #5
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
acehreli:
Ben zaman yettiği sürece varım ama hazırda bulunan C kütüphanelerini "D binding"i yazarak kullanmak da her zaman için bir çözüm.

O zaman wiki'ye c'de olupta D'de olmayan işlevleri tanıtan bir sayfa ekleyelim. Hatta zaten C'deki işlevlerin tanıtıldığı bir web sayfası vardır. Alıntı yaptığımızı belirterek kopyalayıp D'nin kütüphanesinde olanları listeden çıkartalım.  Sizce olur mu ?
canalpay (Moderatör) #6
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
canalpay:
O zaman wiki'ye c'de olupta D'de olmayan işlevleri tanıtan bir sayfa ekleyelim. Hatta zaten C'deki işlevlerin tanıtıldığı bir web sayfası vardır. Alıntı yaptığımızı belirterek kopyalayıp D'nin kütüphanesinde olanları listeden çıkartalım.  Sizce olur mu ?

Eğer bunu yapmayacaksak bile derslerde veya Wiki'de C'de standart C kütüphanesini kullanabildiğimizi belirtmeliyiz.
Site içinde şuan C'de işlev bakmak için belgeler.org'u buldum. Ama Kitap olarak yazdıkları için işimize gelmez. Ben sadece google'da sleep site:www.belgeler.com/glibc olarak aratarak yada işlevin amacını tanıtan anahtar sözcükleri aratarak buluyorum.

Birde C'nin standart kütüphanesinden(sanırım glibc değil mi?) başka bir kütüphaneyi nasıl kullanabiliriz ? Yine kendi modülümüzü tanımlar gibi mi yapacağız. Örneğin işlevler dizininde başka bir kütüphane var. Onu import işlevler.modüladı; gibi mi tanımlıyoruz.

Birde bildiğiniz başka c kütüphanesi var mı ?
acehreli (Moderatör) #7
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
canalpay:
Eğer bunu yapmayacaksak bile derslerde veya Wiki'de C'de standart C kütüphanesini kullanabildiğimizi belirtmeliyiz.

Evet, bir şekilde bunun altını çizmek gerek. D varken C kullanmaya gerek olmamalı tabii ama alışma döneminde bildiklerini kullanabilmek de yararlı...

Çok iyi fikir ama doğrusu benim gözümü korktu. :) Her işlevi anlatmak çok uzun iş olur. Ama işin güzel tarafı, anladığım kadarıyla neredeyse bütün C kütüphanesi var.

C standart kütüphanesindeki başlıkları http://en.wikipedia.org/wiki/C_library adresinden alarak ve D modüllerini dmd/src/druntime/import/core/stdc/ klasöründen alarak şöyle karşılaştırıyorum:

<assert.h>
<complex.h>    complex.d
               config.d
<ctype.h>      ctype.d
<errno.h>      errno.d
<fenv.h>       fenv.d
<float.h>      float_.d
<inttypes.h>   inttypes.d
<iso646.h>
<limits.h>     limits.d
<locale.h>     locale.d
<math.h>       math.d
<setjmp.h>
<signal.h>     signal.d
<stdarg.h>     stdarg.d
<stdbool.h>
<stddef.h>     stddef.d
<stdint.h>     stdint.d
<stdio.h>      stdio.d
<stdlib.h>     stdlib.d
<string.h>     string.d
<tgmath.h>     tgmath.d
<time.h>       time.d
<wchar.h>      wchar_.d
<wctype.h>     wctype.d

Ayrıca Windows için de şu dosyanın içindeki bir sürü Win32 işlevi var:

  dmd/src/druntime/import/core/sys/windows/windows.d

Bunlar ilerisi için bir kaynak oluştursun. Daha sonra birisi okul tatili gibi boş bir zamanda belki bunlarla ilgili bir tanıtım yazısı yazar da Tanıtım sayfasına koyarız. (Ben şimdilik D.ershane'yi bitirmek istiyorum. ;) )

Birde C'nin standart kütüphanesinden(sanırım glibc değil mi?) başka bir kütüphaneyi nasıl kullanabiliriz ? Yine kendi modülümüzü tanımlar gibi mi yapacağız. Örneğin işlevler dizininde başka bir kütüphane var. Onu import işlevler.modüladı; gibi mi tanımlıyoruz.

C kütüphanelerini kullanabilmek için onun bir "D binding"inin oluşturulması gerekiyor. Ya otomatik araçlardan yardım alınıyor, ya da elle yapılıyor. Eğer <c_basligi.h> diye bir C kütüphanesi başlığı varsa, onun için bir c_basligi.d ara dosyası oluşturmak ve o dosyayı kullanmak ("import etmek") gerekiyor.

Bunun en güzel örneğini yukarıdaki C başlıklarıyla D karşılıklarını açarak görebilirsin. Örneğin şu iki dosyanın içeriklerine bak:

/usr/include/stdio.h
~/dmd/src/druntime/import/core/stdc/stdio.d

(Tabii aslında dmd'yi başka bir yere de kurmuş olabilirsin.)

Ayrıca "D binding" yerine ne diyeceğimizden emin değilim. "D bağlantısı" güzel değil. "D modülü" olmaz, çünkü modülde asıl işlevler de bulunur ama bu dosyalarda ise yalnızca bildirimler bulunuyor. "D dönüştürücü dosyası"? "D aracı dosyası"?

Birde bildiğiniz başka c kütüphanesi var mı ?

Standart C kütüphanesi o kadar. Onun yanında "standart gibi" olan POSIX tanımı var. Onun dosyaları da şurada:

~/dmd/src/druntime/import/core/sys/posix/

Bunlardan başka artık "üçüncü şahıs" (third party) kütüphaneleri var. ncurses, libxml2, vs. Bunların bazılarının D aracıları zaten yazılmış. Şurada "binding" olan satırlar:

  http://dsource.org/projects/

Oradaki şu projeler birden fazla D aracısını bir araya getiriyor:

  http://dsource.org/projects/bindings
  http://dsource.org/projects/derelict

O tanıtım yazısının özü oldu galiba... :)

Ali
canalpay (Moderatör) #8
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
alicehreli:
Çok iyi fikir ama doğrusu benim gözümü korktu. :) Her işlevi anlatmak çok uzun iş olur. Ama işin güzel tarafı, anladığım kadarıyla neredeyse bütün C kütüphanesi var.

Bende bunun zaten farkındayım. Bu yüzden size bu fikri açtım ve size sordum. Sorumu bir daha daha net bir şekilde sorayım. Siz nam-ı değer c++(c içinde aynı takma adı alıyorsunuzdur :-D) ayaklı kütüphanesi; C'nin kütüphanesindeki işlevleri şu şekilde veya o şekle benzer bir şekilde tanıtan bir site biliyor musunuz ? (Türkçe tercih edilir ama ingilizce de olsa olur.)
ŞEKİL
<math.h> şeklinde sayfa açacak.
sqrt():karekökünü alır.//yoksa kök müydü :-D
pow(int a, int b):üstünü alır. İki parametre alır. int değerindedir. ilk sayı kuvveti alınacak sayı ikincisi ise kuvvetidir.
işlevadı: şuna yarar...


Gibi
acehreli:
Ayrıca "D binding" yerine ne diyeceğimizden emin değilim. "D bağlantısı" güzel değil. "D modülü" olmaz, çünkü modülde asıl işlevler de bulunur ama bu dosyalarda ise yalnızca bildirimler bulunuyor. "D dönüştürücü dosyası"? "D aracı dosyası"?

bağlayıcı bence bu terime gelebilecek en iyi sözcük. Benim buna öneri listem :
1. Bağlayıcı (C dosyasını D'ye bağlıyor. Bence anlam olarakta tutuyor ki anlama çok bakmakta gerekmiyor.)
2. İlişkilendirme => İliştirmek => İliştirici (Bu sözcüğüde çok tuttum :-) )
3. Yapıştırıcı (Anlamda az çok tutuyor. Düşünmek için neden olmasın ? )

Şuan ayrı olarak bunlar geliyor aklıma(usuma :-) ). Erdem Bey sanırım D sözlük adında sözcük türetmek için bir konu açmıştı. Ordan devam etsek kötü olmaz.
acehreli (Moderatör) #9
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
canalpay:
C'nin kütüphanesindeki işlevleri şu şekilde veya o şekle benzer bir şekilde tanıtan bir site biliyor musunuz ? (Türkçe tercih edilir ama ingilizce de olsa olur.)

Ben "mutlaka vardır" diye düşündüğüm bir işlev için açıp başlık dosyasına bakıyorum. Örneğin /usr/include/string.h

Ondan sonra Linux'taki belgesini okuyorum: örneğin "man strstr". Aynı komut Google'a da yazılabilir.

C++'ın STL'i için kısaca hatırlatma olarak STL'in sahibi SGI'ın belgeleri var:

  http://www.sgi.com/tech/stl/table_of_contents.html

Not: SGI'ın STL'i ile C++ standardındaki birbirini tam tutmaz ve C++ standardında iostreams, string, vs. gibi başka kütüphaneler de vardır.

Türkçe olarak hiç bilmiyorum ama hemen Google'ladım ve tam söylediğin gibi bir tane buldum:

  http://www1.gantep.edu.tr/~bingul/c/index.php?ders=5

Ayrıca şu kitabı da buldum:

  http://www.kadifeli.com/fedon/stdcprtr.php

Eğer yanılmıyorsam zamanında en beğendiğim Türkçe C kitabıydı.

bağlayıcı bence bu terime gelebilecek en iyi sözcük. Benim buna öneri listem :
1. Bağlayıcı (C dosyasını D'ye bağlıyor. Bence anlam olarakta tutuyor ki anlama çok bakmakta gerekmiyor.)

"Linker"a da "bağlayıcı" dediğimiz için karıştıracak tabii... :( Biraz dursun bakalım... :)

Ali
canalpay (Moderatör) #10
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
  http://www1.gantep.edu.tr/~bingul/c/index.php?ders=5

Evet istediğim tam böyle bir şey. Diğer Türkçe kitabı da bunu da biliyorum.(Bir sıra C'ye geçmeye karar vermiştim ama ilerleyemedim :-) )
Hatırlayamamışım. Ama antep üni. belgesi sanırım tamamlanmamış. En azından o sayfası. Çünkü bütün kütüphane anlatılmıyor. Belki de başka sayfadadır. Yada başka sitede vardır. Ne de olsa koskoca C programlama dili.

Sözlük olarakta siz de sanırım hiç bir sözcük beğenmemişsiniz ama bence sözcükler çok güzel :-D Eğer anlamı karşılıyorsa benim bu sözcüklerden çok beğendiğim iki sözcük var.
1. İliştirici //10 üzerinden 10
2. aracı dosyası // 10 üzerinden 8

Özellikle birincisi olmasını isterim. Çünkü Türkçede ilişmek kökü(gövde sanırım) çok kullanılır. Bu yüzden bunu sözcüğü okuyan biri çok kolay anlamını anlar. Aracı da araçtan sonra gelen ı işi bozuyor. C söylenmesi zor bir harf. Zaten Türkçe'ye c harfi gerektiği halde gelmemesinin nedeni bu bence :-) (Ağaç => Ağacı yumuşaması için ç'nin yanına c şart )
acehreli (Moderatör) #11
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
"İliştirici" bence de güzel...

Ali
canalpay (Moderatör) #12
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
D'nin ingilizce formunda curl'nin d iliştiricisini(bağlayıcı-binding) gördüm.

http://arsdnet.net/dcode/curl.d

Ancak bir örnek ile deneyemedim.

Derleme komudu olarak şunu denemiştim :
dmd -w -L-lcurl örnek.d

Hata :
/usr/bin/ld: cannot find -lcurl
collect2: ld returned 1 exit status
--- errorlevel 1
acehreli (Moderatör) #13
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Herhalde curl kuruludur, değil mi? Bende şunlar var:

  /usr/lib/libcurl.a
  /usr/lib/libcurl.so

Eğer varsa, komut satırına bir de -L-L eklemeyi deneyebilirsin:

dmd -w -L-L/usr/lib -L-lcurl örnek.d

Ali
canalpay (Moderatör) #14
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Bende kurulu gibi tahmin ediyordum ama onlar yok.

Benzer olarak libcurlso.3 so.4 so.4.1.1 var.

Nasıl yükleyebilirim ?
acehreli (Moderatör) #15
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
En kolayı o dağıtımın paket yöneticisini kullanmak olur. Görsel bir kurulum programı da vardır kesin. Orada 'curl' aratıp kurabilirsin.

Hangi Linux dağıtımıydı?

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  1  2  3  sonraki 
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-19, 08:04:01 (UTC -08:00)