Sayfa:  1  2  3 ... 301  302  303  sonraki 

Mesajlarını aradığınız kullanıcı: acehreli (4536)

konu: Editörlerde Açılan Kodun Boyutu ve Kullandığı Bellek Miktarı  ; forum:: Diğer Konular
acehreli (Moderatör) #1
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4536 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Nasıl yaptıklarını bilmiyorum ama dosyanın yalnızca baş tarafını okuyup gösterir, programcı o bölümden çıkmaya başladıkça yeni yerlerini yükleyebilir. Yani, dosyanın hepsini belleğe almaya gerek olmayabilir.

Sublime Text tam da bu iş için bir araç olduğundan herhalde bu iş onların kesinlikle çözmeyi düşündükleri bir problem olmuştur.

Sanırım Qt Creator metin düzenlemeden başka işlere de yarıyor. O yüzden daha fazla yükleniyor olabilir. (Yine de, 22MB günmüzde çok büyük değil. İnternet tarayıcısı gibi başka programları çalıştıran sistemde 22MB dosya açamamak garip geldi.)

Ali
konu: JSON element sırası  ; forum:: D Programlama Dili
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4536 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13090
Tahminimde yanılmışım: Tam tersine, özellikle sıralıyorlarmış:

  https://dlang.org/phobos/std_json.html#.toJSON

"Any Object types will be serialized in a key-sorted order."

Koda baktım, JSON_TYPE.OBJECT çeşidinden verilere .object ile erişilebiliyor:
    writeln(request.object.keys);
Onu yazdırınca baştan söylediğim gibi belirsiz sırada çıkıyorlar. (Ama tesadüf: Gösterdiğin anahtarlar yine de aynı sırada çıkıyorlar. :) )

Yani, request.object eşleme tablosu isteğe göre kullanılabilir ama değerlere alan sıralamasına göre tek tek erişmek gerek.

Başka bir yöntem, en sonunda JSON'dan tekrar dönüştürmek olabilir ama o da ayrıca dertli. :-/

Ali
konu: JSON element sırası  ; forum:: D Programlama Dili
acehreli (Moderatör) #3
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4536 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13088
std.json, alanları eşleme tablosu (associative array) olarak tuttuğu için öyle oluyor. json standardında sıra önemli olmadığından sorun olarak görmemiş olmalılar.

Ali
konu: Fiber'ın Türkçesi  ; forum:: D Programlama Dili
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4536 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13085
İyi bilmiyorum ama sanırım işlem gücüyle ilgili. O yüzden fiberların özellikle yarar getireceğini sanmıyorum.

Ali
konu: GtkD ile ilgili bir soru  ; forum:: Diğer Konular
acehreli (Moderatör) #5
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4536 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13071
Windows'a elimi sürmeyeli 10 seneyi geçmiş. :/

Ali
konu: GtkD ile ilgili bir soru  ; forum:: Diğer Konular
acehreli (Moderatör) #6
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4536 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13068
Not: Büyük i ve küçük L karışmasın diye erdem'in mesajındaki quote belirteçlerini m belirteçleri ile değiştirdim.

Ali
konu: linux zaman dilimini UTC olarak ayarlamak  ; forum:: Diğer Konular
acehreli (Moderatör) #7
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4536 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13054
RTC (real time clock), bilgisayarın içindeki saatmiş. BIOS'tan değiştirilebilir ama anlaşılan, timedatectl'in set-local-rtc seçeneğini 0 yapınca da oluyormuş.

Ali
konu: D dilinde log sistemi  ; forum:: D Programlama Dili
acehreli (Moderatör) #8
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4536 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13052
Günlük olarak D kullanmıyorum ama genel deneyimlerime dayanarak, "şu işleme başlandı", "şu işlem bitti", vs. gibi ve genelde kendime yarayan bilgiler veriyorum. Sonuçta en büyük amaç, bir sorun çıktığında o sorundan önce neler olduğunu anlamak.

Sanırım kullandığım bütün log sistemleri dosyaya yazıyorlardır çünkü Linux ortamlarında da varsayılan o.

Ancak, D kullandığım bir ortamda oldukça alt düzey bir sistem kendi ikili dosya düzenine dayanıyordu ve öncelikle belleğe yazıyordu. Ancak, o sisteme loglama diyemeyiz çünkü her işlev çağrısını, her işlev parametre değerini, vs. kaydediyordu. Böylece, ne kadar nadir olursa olsun hata bir kere yakalandığında kaynağı biraz çabayla da olsa bulunabiliyordu. Bellek adresleri kullandığı ve işlemekte olan programa bir debugger gibi bağlı olduğundan metin dosyaları değil, kendi veri yapılarını kullanıyordu.

Ali
konu: D dilinde log sistemi  ; forum:: D Programlama Dili
acehreli (Moderatör) #9
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4536 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13050
std.experimental, ileride std'ye eklenmesi düşünülen modülleri içeriyor. O modülün genelde beğenildiğini ve yazarının da çok iyi bir programcı olduğunu biliyorum.

Ali
konu: Dizilerle ilgili bir soru  ; forum:: D Programlama Dili
acehreli (Moderatör) #10
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4536 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13032
(Önemli bir konunun altını çizmeyi unuttuk: remove(5) deyince indeksi 5 olan eleman gider, değeri 5 olan değil.)

cos00kun:
dizitoplam.remove(5)) aslında eşit değildir dizitoplam=(dizitoplam.remove(5)

Bir yerde hata yapıyor olabilirsin çünkü şunlar aynı sonucu üretiyor:
    writeln("5.elemanı çıkarttım ve yazdırdım..",dizitoplam.remove(5));
    writeln("5.elemanı çıkarttım ve yazdırdım..",dizitoplam = dizitoplam.remove(5));
Ama ikisini aynı programda öyle art arda çağırırsan remove(5) iki kere çağrıldığından kafa karıştırıcı olabiliyor. (Hatırlarsan birinci satır 'dizitoplam'ın hangi elemanları gösterdiğini değiştirmiyor.)

Ali
konu: Flask ile günlük  ; forum:: Diğer Konular
acehreli (Moderatör) #11
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4536 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13029
erdem:
Örneğin /oy/5/yukarı Ama bize ne getirisi olabilir tam anlayamadım.

Yani, sunucu URL'e bakacak ve sonunda 'yukari' varsa oy arttıracak, 'asagi' varsa oy azaltacak. Tabii, zaten oylamış olan kullanıcılar bilgisini de tutmak gerekiyor.

Ali
konu: Dizilerle ilgili bir soru  ; forum:: D Programlama Dili
acehreli (Moderatör) #12
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4536 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13025
İki kavramı hatırlayalım:

  • Dizi: Yan yana duran (ve indeksle hızlıca erişilebilen) elemanlar topluluğu. Başka bir şey değil; örneğin, olayın içinde bunların ilkini gösteren gösterge ve hatta kaç adet oldukları bile yok.

Not: Evet, sabit uzunluklu dizilerin bile uzunlukları yok; çünkü uzunluk türlerinin parçası. Yani, uzunlukları derleme zamanında bilinen bir kavram ve çalışma zamanında değişmiyor.

  • Dilim: Yan yana duran elemanlara erişim sağlayan yapı; elemanların ilkini gösteren göstergeden ve eleman adedinden oluşuyor

Çoğu aralık algoritması gibi, remove() da çok kullanışlı olmak isteyen bir işlev. Bu yüzden, yalnızca dizilerle değil, kendisini BidirectionalRange olarak sunabilen her tür aralıkla kullanılabiliyor. BidirectionalRange hem başından hem de sonundan erişim sağlayan aralık demek. (Ek olarak, save() işlevi ile erişme durumunu da saklayabiliyor; yani, "save ettiğim yerden devam edeyim" diyebiliyor.)

remove() şöyle işliyor:

1) Baştan başlayayım

2) Bildirilen indekse gelince durayım

3) O indeksteki elemanı çıkartmış olmak için sonuncu elemanı onun üstüne kopyalayayım indekse yerleştireyim (Aslında bu davranışı değiştirebiliyoruz; aşağıda açıklıyorum)

4) Bir eleman eksilmiş olsun diye (ve tabii o sonuncu eleman iki kere tekrarlanmasın diye) sonuç olarak döndüreceğim aralığı son taraftan bir azaltayım

Yani, silme işlemi asıl elemanların dizi olduklarını bilmeden ve elemanları bir yerden başka yere taşıyarak gerçekleştiriliyor. Dolayısıyla, asıl elemanlar bu örnekteki gibi dizi olduklarında asıl dizide tekrarlanan elemanlar oluyor. (Bu örnekteki sondaki 9 gibi.)

Anlattığım algotirmanın bu örneğe uymadığının farkındayım çünkü ben eleman değiştirme kararınını daha kolay anlatayım diye SwapStrategy.unstable olarak düşündüm. Oysa, varsayılan karar SwapStrategy.stable'dır. stable, elemanların sıralarının korunması, unstable ise korunmaması anlamına gelir.

unstable daha hızlı tek kopyalama yetiyor: 3 numaralı adımda sondaki elemanı belirtilen indekse kopyaladık ve işimiz bitti. stable olsaydı, belirtilen indeksten sonraki bütün elemanları teker teker bir sola kaydırmak gerekirdi. Çok daha fazla eleman kopyalardık ama sonuçta eleman sıralarını korumuş olurduk. Programcı ne istediğine karar verebiliyor. Aynı programı bir de unstable ile çalıştıralım:
    writeln("5.elemanı çıkarttım ve yazdırdım..",dizitoplam.remove!(SwapStrategy.unstable)(5));
Bu sefer sondaki elemanın (yani, 9'un) belittiğimiz indekse gittiğini görüyoruz:

5.elemanı çıkarttım ve yazdırdım..[0, 1, 2, 3, 4, 9, 6, 7, 8]
Tekrar yazdırdım..................[0, 1, 2, 3, 4, 9, 6, 7, 8, 9]


Ali
konu: Dizilerle ilgili bir soru  ; forum:: D Programlama Dili
acehreli (Moderatör) #13
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4536 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13022
Öncelikle, sabit uzunluklu dizilerle ilgili söylediklerim bu konuyla ilgili değilmiş çünkü remove() yapılan dizi sabit uzunluklu değil.

Konuyla ilgili sizler kadar deneyimli olmamam sebebiyle sorularımdaki hatalar ve sizlerin uğraşılarınız için anlayışınıza sığınıyorum..

Dizi konuları D'de karışık olabiliyor çünkü sabit-dizilerle dilimler farklı hem de olayın içine aralık kavramı da giriyor. Seninle ilgisi yok. :)

cos00kun:
Bu durumda dizitoplam.remove(5)); ifadesi bir sonuç veriyor ama atama yapmayınca dizitoplam değişkeninden farklı netice çıkartıyor..

Evet. Bunun nedeni, std.algorithm.remove işlevinin bir aralık algoritması olması ve dizi olmayan topluluklarla da işleyebilmesidir. Diziden daha genel türlerle de işleyebildiğinden, eleman çıkartma işlemini, elemanları yer değiştirerek halleder. (Aynı gariplik C++'ın erişicilerle işleyen algoritmalarında da bulunur.)

Sabit uzunluklu dizi kullanıldığında gözlemler şaşırtıcı olabiliyor.

aynı olması lazım

Sonucu aynı değişkene atayınca sorun kalmıyor:
    dizitoplam = dizitoplam.remove(5);
Ali
konu: Dizilerle ilgili bir soru  ; forum:: D Programlama Dili
acehreli (Moderatör) #14
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4536 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13020
Burada başka bir etken daha var: Sabit uzunluklu dizilerin uzunluğu değiştirilemez. Yani, int[5] her zaman için beş elemana sahip olacaktır.

Sabit uzunluklu dizilerle dilimlerin bellekteki durumları da çok farklı: Yukarıdaki sabit uzunluklu dizi, yan yana duran beş elemandan başka bir şey değil. Hatta, program yığıtında duruyor.

dizibes'i gösteren bir dilim ise bellekte şu yapının eşdeğeridir:
    int[] dilim = dizibes;
 
/* 'dilim' iki üyeye sahiptir:
        size_t length; // Doğal olarak değeri 5'tir
        int* ptr;      // dizibes'in ilk elemanını gösteren göstergedir
*/

Ali
konu: D dili derleyicisi klasör İçerikleri  ; forum:: D Programlama Dili
acehreli (Moderatör) #15
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4536 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13015
cos00kun on 2017-11-11, 01:52:
Linux yada Windows farketmez

Pratikte öyle olmasını bekliyoruz ama aşağıda bağlayıcı ile ilgili söylediğim gibi, işletim sistemi farklılıklar getirebiliyor.

DMD2 derleyicisinin kurulduğu klasör içeriklerinin hangilerinin ne işe yaradığını Türkçe olarak açıklayabilir misiniz ?

tree -d ~/dmd2.074.0 komutunun çıktısını değiştirerek bakıyorum. (Sistemimde aslında daha yeni bir dmd sürümü kurulu. Aşağıdaki, .zip dosyası olarak kurduğum eski bir sürüm.)


# Desteklenen işletim sistemleri için oluşturulmuş programlar (dmd vs.):

├── freebsd
│   ├── bin32
│   └── bin64
├── linux
│   ├── bin32
│   ├── bin64
│   ├── lib32
│   └── lib64
├── osx
│   └── bin
├── solaris
│   ├── bin32
│   └── bin64
└── windows
    └── bin

# Yerel olarak okunabilen belgeler (hem derleyici hem Phobos)

├── html
│   └── d
│       ├── changelog
│       ├── css
│       ├── images
│       │   ├── ddox
│       │   └── orgs-using-d
│       ├── js
│       ├── phobos
│       ├── spec
│       └── zlib

# Unix ortamlarında kullanılan 'man' belgeleme programına ek dosyalar.
# Böylece, örneğin Linux'ta 'man dmd' diyebiliyoruz.

├── man
│   ├── man1
│   └── man5

# Örnek programlar (varlıklarından haberim yoktu :) )

├── samples
│   └── d
│       └── mydll

# Derleme sırasında gereken kaynak dosyalar
# Bunların derleyicinin bütün kaynakları olduklarını sanmıyorum.
# Bunlar, şablon, object.d vs. gibi bizim programlarımız için
# de gereken dosyalar. (Galiba.)
#
# Bunlar arasından bu güne kadar arada bir object.d dosyasına baktığım oluyor.
# Bu dosya çalışma zamanında bilgi veren TypeInfo_Class gibi ilginç sınıfları
# tanımlıyor:
#
#   ~/dmd2.074.0/src/druntime/import/object.d

├── src
│   ├── dmd
│   │   ├── ddmd
│   │   │   ├── backend
│   │   │   ├── root
│   │   │   └── tk
│   │   └── vcbuild
│   ├── druntime
│   │   ├── benchmark
[...]
│   │   ├── changelog
│   │   ├── def
│   │   ├── import
[...]
│   │   ├── src
[...]

# Herhalde çöp toplayıcı (GC: garbage collector) ile ilgili

│   │   │   ├── gc
│   │   │   │   └── impl
│   │   │   │       ├── conservative
│   │   │   │       └── manual

# Standard kütüphane
# Çoğunlukla şablon olduklarından bu dosyalar kendi programlarımızda
# doğrudan kullanılıyor. O yüzden hemen hemen bütün kaynak kodları burada.
# Çoğu modül std klasörünün altında ama std.algorithm ve std.phobos gibi
# modüller artık 'package' olduklarından onların kendi klasörleri var:

│   └── phobos
[...]
│       └── std
│           ├── algorithm
[...]
│           ├── range


(Örneğin linker nerde tanımlı hangi dosya çalıştırır

Bağlayıcı (ve yakın arkadaşı 'loader' (yükleyici?)) işletim sistemine bağlı bir kavram ve programdır. İşletim sistemiyle geliyor. Bir fark, sanırım Linux'ta kurulu olduğu halde bağlayıcı gibi 'developer' (program geliştirici) araçlarını ayrıca kurmak gerekiyor. Ama Windows ortamında D programı oluşturabiliyorsanız bağlayıcınız da kurulu demektir.

Linux ortamında bağlayıcı olara geleneksel olarak ld ama ondan daha yeni gold var.

ayar yapmadığımız taktirde program genellikle çalışmayacaktır

Bu konuda C ve C++ programlarındaki gibi: Erdem'in dediği gibi, import edilen modüllerin nerede olduklarını ve kütüphane dosyalarının nerede ve neler olduklarını bildirmek gerekiyor.

Ali
Özel Karakterler:
Sayfa:  1  2  3 ... 301  302  303  sonraki 
Özel sorgulamalar

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-12-15, 11:49:11 (UTC -08:00)