Forum: Projeler derle RSS
Proje Yöneticisi
Sayfa:  1  2  3  sonraki 
Avatar
Racih (Moderatör) #1
Üye Ağu 2009 tarihinden beri · 126 mesaj · Konum: Antalya
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Proje Yöneticisi
Merhaba,

Code::Block üzerinden proje geliştirmeye çalıştım fakat ayarlarını bir türlü yapamadım. Bende metin editörü üzerinden yazmaya devam ediyorum. İşte burda sorun beliriyor. O anki veriyi kaydetip, derleyip, çalıştırmak zor geliyor. Bunun yerine D dilini kullanarak bir proje yönetici yapmayı düşünüyorum. Şuan ufak ufak denemelere başladım. Şuanki kod durumu;

Düzeltme: Hataları düzelterek ekliyorum.
Düzeltme 2 : Şuan dosya derleyip çalıştırabiliyor. :)
import std.stream;
import std.cstream;
import std.array;
import std.file;
import std.process;
import std.string;
 
string parametre;
 
void main(string[] args){
  /*
  * Örnek kullanım : derle -a -w -d deneme.d
  * -a = Argümanlar. Kullanımı -a -w -p derle
  * -Y = Yeni proje oluşturur. Kullanımı -Y derle
  * -Yd = Yeni Dosya oluşturur. Kullanımı -Yd dcurses.d
  */
  parametre ~="dmd";
 switch (args[1]) {
   case "-a":
     Derle(args);
     break;
   case "-Y":
     ProjeOluştur(args[2]);
     break;
   case "-Yd":
     DosyaOluştur(args[2],args[3]);
     break;
     
    default:
        dout.writefln("-a = Argümanlar. Kullanımı:derle -a -w -L... -p proje");
    dout.writefln("-Y = Yeni proje oluşturur. Kullanımı:derle -Y proje");
    dout.writefln("-Yd = Yeni Dosya oluşturur. Kullanımı: derle -Yd proje.d");
    }
}
 
void Derle(string[] args){
  /*
  * -p = Projeyi derler. Kullanımı : derle -a -w -p proje
  * -d = Dosyayı derler. Kullanımı : derle -a -w -d proje.d
  */
  
    for(int k=0;k<args.length; k++){
     if(args[k]=="-p"){
       for(int i = 2;i<k;i++){
        parametre~=" "~args[i];
        }
        ProjeDerle(args[k+1]);
      }else if(args[k]=="-d"){
        for(int i = 2;i<k;i++){
        parametre~=" "~args[i];
        }
         DosyaDerle(args[k+1]);
      }
  }
}
 
void ProjeDerle(string pAdi){
  if(exists(pAdi)){
    dout.writefln(pAdi~" adlı dizin var");
  }else{
    dout.writefln(pAdi~" adlı dizin yok");
  }
}
 
void ProjeOluştur(string pAdi){
  string projeDizini = getcwd()~"/"~pAdi;
  mkdir(projeDizini);
  File dosya = new File(projeDizini~"/main.d",FileMode.OutNew);
  dosya.writefln("import std.stdio;");
  dosya.writefln("void main(){");
  dosya.writefln(" writefln('Merhaba');");
  dosya.writefln("}");
  File index = new File(projeDizini~"/index.txt",FileMode.OutNew);
  index.writefln("argümanlar: ");
  index.writefln("derle: main.d");
}
 
void DosyaDerle(string dAdi){
  parametre~=" "~dAdi;
  system(parametre);
  string çalıştır = replace(dAdi,".d","");
  system("./"~çalıştır);
}
void DosyaOluştur(string dAdi,string pAdi){
  string projeDizini = getcwd()~"/"~pAdi;
  File dosya = new File(projeDizini~"/"~dAdi,FileMode.OutNew);
  dosya.writefln("class "~dAdi~"{");
  dosya.writefln("}");
  File index = new File(projeDizini~"/"~"index.txt",FileMode.Append);
  index.writefln("sınıf: "~dAdi);
}

derle.d ye parametre gönderek hem derleyip hemde uygulamayı çalıştıracak.

Çalışma mantığı şu şekil olacak;
1) Proje yaratmak için derle -Y projeAdı
1-1) projeAdı dğerindeki dizini oluşturak içerisine index.txt dosyasını yazacak.
1-2) Yeni ana dosya yaratmak için derle -Yad dosya projeAdı
1-3) projeAdı değerindeki dizine ait index.txt e belirtilen dosyayı ekleyecek.
1-4) Yeni dosya yaratmak için derle -Yd dosya projeAdı
1-5) projeAdı değerindeki dizinin içerisine dosyayı oluşturacak.
2) Proje derlemek için derle -a -w -L-lncurses -p projeAdı
2-1) -a = Argüman. Projeyi derlemek için gerekli argümanların verilmesi için gerekli parametre.
2-2) -p = Proje olduğunu belirden argüman
3) Dosya derlemek için derle -a -w -L-lncurses -D dosya.d

Bence çok faydalı olucak :). Hem ilerde qtd ve gtkd sorunsuz kurulduğunda arayüzünüde yapabiliriz. Ve IDE olarak bir başlangıç yapmış oluruz. IDE nin küçük bir parçası olmasına rağmen çok yardımcı olacağına inanıyorum :)
Bu mesaj 6 defa değişti; son değiştiren: Racih; zaman: 2010-06-18, 13:44.
canalpay (Moderatör) #2
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ı
Projenin make dosyasının komudunu ona göre ayarlayarak bu işi yapabilirsiniz. Make kullanımını internetten öğrenebilirsiniz. Ali Bey'de make programını kullanıyor.

Yani bu proje için Ali Bey zaten make var diyebilir. Çünkü ben daha önce benzer bir projeden söz etmiştim yine Ali Bey make'den söz etmişti.
levent2z #3
Üye Haz 2010 tarihinden beri · 16 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
make kullanimi icin faydali olabilecek bir makale

http://akdora.files.wordpress.com/2007/01/makefile.pdf
Avatar
Racih (Moderatör) #4
Üye Ağu 2009 tarihinden beri · 126 mesaj · Konum: Antalya
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #2
Evet make i biliyorum. Ama bu proje biraz farklı. Proje oluşturabiliyor. İlerde bir IDE yapacağımızda bunu kullanabiliriz. Proje yönetimi yapan bir araç bizim için çok önemli.
acehreli (Moderatör) #5
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4508 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
D programı olsun da ne olursa olsun... :)

make'i bildiğinizi biliyorum ama bir özet:

Bir programı veya herhangi bir dosyayı oluşturmak için belirli adımların işletilmeleri gerekir. O adımların birbirlerine bağımlıkları vardır.

C'den örnek olarak, deneme programını oluşturmak için deneme1.o ve deneme2.o gerekir, bir .o dosyası oluşturmak için de onun .c dosyası gerekir.

make, bütün bu adımları kafasında kurar ve bağımlılıkları göz önüne alarak projeyi az adımla oluşturur. Örneğin yalnızca deneme2.c değişmişse deneme2.o'yu derler. deneme programı deneme2.o'ya bağlı olduğu için onu da oluşturur.

make'in yetersiz kaldığı noktalar var; ve zaten o yüzden onun yerine başka programlar veya sistemler de geliştirildi. Ama çoğu proje için yeterlidir. Örneğin benim son 15 senedir çalıştığım her firma make'i kullandı. Bir çok açık kod projesi de make'i kullanır.

ddili.org'un forum dışındaki bölümleri de tamamen make ile oluşturuluyor. :)

Ama... :)

dmd çok hızlı bir derleyici. Artık bilgisayarlarımız çok hızlı ve C++ gibi çoook yavaş derlenen bir dil ile ilgilenmiyoruz. Ayrıca, derleyicinin programı en hızlı şekilde çalıştıracak şekilde derleyebilmesi için bütün kodu görmesi gerekiyor.

O yüzden, belki de artık programları tek adımda oluşturmak çoğu durumda hem yeterli hem de zaten istene şey:

dmd bütün_dosyalar_buraya -w -wi -ofprogram_ismi

Hatta, dmd çok hızlı olduğu için Phobos'a std.all isminde bir modül eklemeyi düşünüyorlar. O modül bütün diğer modülleri ekleyecek ve artık istersek modülleri tek tek seçerek kullanmak zorunda kalmayacağız.

Özet: make iyidir ama D programları yazmak için şart olmadığını düşünmeye başladım. Belki Racih'in projesinden başka yararlar da çıkar... :)

Ali
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ı
Bende sizden çok daha önce böyle bir projeden bahsetmiştim.

Çünkü ben o zamanlar windowsu daha çok kullanıyordum ve trileri projesini geliştiriyorduk.(O haldeki proje ile şuankinin hiç bir alakası yok :-) )Ali Bey kendine bir make yapmış hemen 1 komut ile derliyordu. Ben ise uzun uzun yazıyordum. Ondan sonra sizinki gibi bir projeyi söylendirmiştim böylece platform bağımsızı bir biçimde tek komutla derleyebilecektik ve güzel bir şey olacaktı. Ama olmadı :-(

Evet benide bu projeye yazabilirsiniz. Githubta kendiniz açın projeyi bizde üye olalım.

Ama proje daha çok dsss benzeri olsun.
Avatar
Racih (Moderatör) #7
Üye Ağu 2009 tarihinden beri · 126 mesaj · Konum: Antalya
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Make güzel bir araç. D ile yazılan bir şey çıkartalımda ortaya, dediğiniz gibi ne olursa olsun :). Projelerimizi daha kolay yöneticeğimize eminim :) . Şuanki durumu, proje ekleyip içerisinede sonradan dosya ekleyebiliyoruz. Son işlem olarak proje derlemesi kaldı. Onun üzerinde uğaşıyorum şuan :). Make den farkı olmaya başlıyor :).

can, github a atayım. İsim derle olarak kalsın mı ? Kısmet bugüneymiş. Geç oldu ama olsun :)

İlk mesajıma projenin en son halini koydum. Ali abinin dediği gibi cidden dmd çok hızlı ! Derlenin üzerinden bir program derleyin anlayacaksınız :)
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ı
Evet Derle adıyla github'a at. Ondan sonra birde projede yapılacak listesi adında bir liste yap ve onuda at. Sonra beraber o yapılacaklar listesini yapalım.
Ali abinin dediği gibi cidden dmd çok hızlı ! Derlenin üzerinden bir program derleyin anlayacaksınız :)

Evet çok hızlı. Hatta rdmd ile derleyici diye değil yorumlayıcı olarak bile çalıştırabiliyoruz. Ve bu kadar hızlı olmasına karşın ben bir şeylerden feragat ettiklerini sanmıyorum.
canalpay (Moderatör) #9
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 taaa milattan önce D ile ilk tanıştığım zamanlarda(DSSS'yi bile bilmediğim zamanlar bunlar) buna benzer bir proje yapmaya çalışmıştım. Adı Dkurucu idi.

Onda sistem şöyle yürüyordu:

Dkurucuyu açıyordun. Kur dosyası oluştur diyordun. Sonra linux için kurulum kodlarını giriyordun ve windows için kurulum kodlarını giriyordun. Dkurucu otomatik olarak o kurulum kodlarını windows için ayrı yere linux için ayrı yere kaydediyordu.

Daha sonra Dkurucu bir program kurmak için Dkurucu programAdı diyordun. O da senin windowsta mı olduğunu yoksa linuxta mı olduğunu anlayıp ona göre kurulum kodlarını system işlevi ile gönderiyordu.

Hatta bunu biraz daha geliştirmiştim. Sizin şuanda yaptığınız şeyide benim şuan anlattığım şeyide yapabiliyordu. Ama dediğim gibi benim eski bir projemdi ve aradan 1 yıldan fazla geçti. Bu yüzden son kodlar format attığımda gitmiş olmalı.

Eğer kodlar olsaydı 1 yıl önceki çıraklık döneminin başlangıcında yazdığım kodları düzenleyerek bu işi halledebilirdik.

Neyse anlatmak istediğim Derle projeside Dkurucu gibi kur dosyası oluşturup onu çalıştırsın mı ? Özel komutlar gerekirse kurulum kodlarının girilmesini isteriz. Yok gerekmez ise şu anki Derle'nin yaptığı şeyi yaptırırız. Her türlü projemizin ayarlarını bir tıkla kullanıcılara kurdurturuz. Hemde platform bağımsızı bir şekilde kurdurturuz. Denemeye değer mi ?
Avatar
Racih (Moderatör) #10
Üye Ağu 2009 tarihinden beri · 126 mesaj · Konum: Antalya
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Proje içerisinde index.txt diye dosya var. Onun içerisine bayraklar diye bir kısım ekleyerek özel argümanları ordanda kullanacağız.

Şimdi derleye git ve svn desteğide getirmek gerek :). Dosya değişikliklerini takip ederek kodları gönderecek. derle -kontrol parametresiyle sistemde bekleyecek. Belirtilen projeleri kontrol edecek.

Çok harika olacağına eminim :) Sevindirik oldum valla :D
Avatar
Racih (Moderatör) #11
Üye Ağu 2009 tarihinden beri · 126 mesaj · Konum: Antalya
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
http://github.com/rutku/derle githubda açtım :). Şimdi sizide ekleyeyim :)
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ı
Ali Bey çalıştırılabilir bir dosyanın github gibi yerlere gönderilmesine karşı. Çünkü o çalıştırılabilir dosyanın ne olacağı belli olmaz. Belki içine yanlışlıkla virüs yerleşmiştir. Belki yanlış bir kod hatası yüzünden sistemimiz çökebilir. Düşünsenize Ali Beyi. Forumlarda kaç kişinin programcığına bakıyor. Biri isteyerek yada istemeden yanlış kod yazsa sistem çökebilir. (Eğer Ali Bey forumlarda bahsedilen programcıkları kendi derlemese çalıştırılabilir dosya olarak edinip çalıştırsa eminim bilgisayarı çökerdi :-D )

Örneğin ben kendi dkv projemi düşünüyorum. Eski sürümünde yanlış bir değer gönderilse belkide linux kendini tamamen silecek. Bu yüzden Ali Bey kararını değiştirsede ben çalıştırılabilir dosyanın github gibi mekanlara gönderilmesine karşıyım.

Bu arada beni ekleyememişsin.

Birde benim daha önce belirttiğim özellikte Derle projesinde var olacak mı ? Bahsettiğim özelliği tekrar hatırlatayım:
Dkurucuyu açıyordun. Kur dosyası oluştur diyordun. Sonra linux için kurulum kodlarını giriyordun ve windows için kurulum kodlarını giriyordun. Dkurucu otomatik olarak o kurulum kodlarını windows için ayrı yere linux için ayrı yere kaydediyordu.

Daha sonra Dkurucu bir program kurmak için Dkurucu programAdı diyordun. O da senin windowsta mı olduğunu yoksa linuxta mı olduğunu anlayıp ona göre kurulum kodlarını system işlevi ile gönderiyordu.

Bu mesaj canalpay tarafından değiştirildi; zaman: 2010-06-19, 16:03.
Avatar
Racih (Moderatör) #13
Üye Ağu 2009 tarihinden beri · 126 mesaj · Konum: Antalya
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Derlenmiş dosyayı yanlışlıkla attım. Ordan silmek zulüm. Eklmeside aynı dert. Neyse artık öğrendim. işlem yaptıktan sonra git commit -m "olay" yazıp sonrasında git push demek yeterli.

Dedikleriniz projede olacaktır. Fırsat buldukça eklemeye çalışacağım. Kod düzeni kötü geldi bana onada bir el atacam. Bu arada Ali abi ve sizi ekleyebildim sanırım.
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ı
Bu arada Ali abi ve sizi ekleyebildim sanırım.
   

Eklenmedim ben daha.
Avatar
Racih (Moderatör) #15
Üye Ağu 2009 tarihinden beri · 126 mesaj · Konum: Antalya
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Nerden ekleniyor ? Beceremedim .
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 
Forum: Projeler derle RSS
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-10-18, 07:54:03 (UTC -07:00)