CODEC - COmpressor/DECompressor (C++)

Başlatan Objective, 05 Eylül 2015 - 19:49:59

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

Objective

CODEC: COmpressor/DECompressor

C++ programlama dili ile yazılmış olan, bir dosyanın ortalama olarak boyutunu dörtte biri kadar indirebilen hızlı ve hafif bir arşivleme yazılımı. Aslında ilk olarak bu projeyi Python ardından Python ve assembly programlama dilini kullanarak geliştirmeyi düşünüyordum ama bunu bâzı teknik nedenlerden dolaylı gerçekleştiremedim ve verdiğim bütün süreyi ziyan ettim; Şimdi LZMA SDK kütüphanesi okuyorum, kaynak kod üzerinde dinamik hafızaya ve düzene dair tek bir harf yok. Şimdilik hata ve uyarıların 'raporlanması' için ayrıca olası bir çöküş durumunda yazılımı durdurması için Bekçi köpeği (Watchdog) sınıfını hazırlıyorum ve yakın zaman içinde grafiksel arayüzü hazırlamam gerekiyor (GTKmm+). Yâni lafın kısasına gelirsek yazılım henüz belirsiz bir tarihte Github üzerinden en azından bir Linux dağıtımı kullanan herkesin kulllanabileceği bir şekilde yayınlanacaktır. Bu arada heartsmagic'e özellikle teşekkür ediyorum, bir daha geliştirdiğim bir yazılımın en az yarısını tamamlamadan ve konu üzerine detaylı bir araştırma yapmadan reklamını yapmam. Ayrıca deneyim amaçlı bena yardım etkmek isteyen biri bu başlığa yorum yazsın. Bu projeyi aynı zamanda Macintosh OS ve Windows için de geliştirmek istiyorum, bu konuda bana yardımcı olabilirsiniz.
Github adresi: https://github.com/GObjective/CODEC/tree/master

Yenilikler:
Değişkenler hazırlandı; BIT: Bool, BYTE: Unsigned char, WORD: Unsigned short, DWORD: Unsigned int, QWORD: Unsigned long. Bütün bunları hazırlamamın nedeni bol miktarda kullanacağım değişken türlerini daha seri ve anlaşılabilir bir şekilde yazabilmek. 

Bekçi köpeği (Watchdog) sınıfı hazırlanıyor, bu sınıfın içindeki Zamanlayıcı fonksiyonu sıkıştırılmak veya açılmak istenen dosyanın boyutunu ölçüyor ve buna göre bu süreçin en fazla kaç saniye sürebileceğini ölçüyor, sonuç Maksimum değeişkenine atanıyor ve bir döngü başlıyor; döngü içinde her bir saniye geçtiğinde Zaman değişkeni bir arttırılıyor. Eğer Zaman değişkenin değeri, Maksimum değişkeninin değerini geçerse bir çöküş durumu olduğu anlaşılıyor ve yazılım durduruluyor. Ayrıca bu sınıfın içinde iki adet Boolean türünden dizi var. Bu dizilerse herhangi bir hata ve uyarı durumunu raporlamak için kullanılıyor. Örneğin; bir dosyanın açılması sırasında dosyanın başına yazılmış olan CRC kodu okunuyor ve bir değişkene atanıyor, açma işlemi gerçekleştikten sonra dosyanın CRC kodu ölçülüyor ve ilk CRC kodu ile karşılaştırılıyor.Eğer yakın bir kod ortaya çıkarsa Warning[1], Doğru olarak ayarlanıyor ve kullanıcı uyarılıyor ama eğer uzak bir CRC kodu çıkarsa dosyanın hatalı sıkıştırıldığı anlaşıldığı için Error[1], Doğru olarak ayarlanıyor ve işlem sonunda hata bildiriliyor, dinamik hafıza devreye giriyor. Tabi ki bütün bunlar bir Thread üzerinden gerçekleşiyor.

Çok büyük bir aptallık yapmış olacağım ki Bekçi köpeği sınıfından önce CPU hızını hesaplayacak bir yapı (CPUClock) oluşturmayı unuttum. Algoritma şu şekilde çalışıyor; ilk olarak sayaç hazırlanıyor, ardından sıfır değerine sahip tam sayı türünden değişkeni 1000'den küçük veya 1000'e eşit olduğu sürece onu bir arttıran boş bir döngü oluşturuluyor. Bu döngüden sonra sayaç sonlandırılıyor, sayaç işlemin kaç saniye sürdüğünü CLOCK_PER_SEC makrosuna kayıt ediyor. 1000 değeri CLOCK_PER_SEC makrosunun taşıdığı değere bölünüyor ve sonuç değer döndürülüyor. Tabi ki bütün bunları yapıcı fonksiyonun üstünde yapıyoruz, biliyorsunuz C++ ile sınıflar üzerinde yapabildiğiniz herşeyi yapılar üzerinde yapabilirsiniz.

heartsmagic

Proje biraz muğlak gibi. Kripto ile boyut küçültmenin alakasını kuramadım. Ayrıca uygulama boyut küçültse dahi indirme ve senin çıkış amacın olan AKK için nasıl bir faydası olacak? Hani konu AKK değilse o konuya değinmenin bir anlamı yok zaten.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Objective

#2
Alıntı yapılan: heartsmagic - 06 Eylül 2015 - 13:13:28
Proje biraz muğlak gibi. Kripto ile boyut küçültmenin alakasını kuramadım. Ayrıca uygulama boyut küçültse dahi indirme ve senin çıkış amacın olan AKK için nasıl bir faydası olacak? Hani konu AKK değilse o konuya değinmenin bir anlamı yok zaten.

Benim bildiğim kadarıyla arşivleme ugulamaları dosyaları sıkıştırmak için kripto benzeri yöntemler kullanıyorlar. Amacım bu uygulamayı yaygınlaştırmak, örnek olarak FTP sunucuları veya bunun gibi bir şeyde kullanılmasını sağlamak. Bu şekilde AKK yüzündez ay sonuna kadar internetini fazla kullanmayan insanlara yardımcı olmak, dediğim gibi. Yazılımın kodları github üzerinden paylaşacağım. Yorumun için teşekkürler.

Örnek olarak CODEC ile sıkıştırdığın bir dosyayı, uçbirim üzerinden arkadaşlarınla 'scp' komutu ile paylaşabilirsin. Bu arada eklemeyi unutmuşum ki yazılım üzerinde yaptığım değişiklikleri bu başlıkta paylaşacağım ve CODEC yazılımını tek bir yazılım olarak geliştirmiyorum...

heartsmagic

Yaklaşık gün sonra ortaya çıkartacağın bir proje için net konuşamaman kulağa çok hoş gelmiyor :) Sıkıştırma uygulamaları adı üzerinde sıkıştırma algoritmaları kullanırlar. Kriptografi ile pek alakası olduğunu sanmıyorum. Kriptografi algoritmaları belli bir yerde önce sıkıştırma algoritmalarını kullanıyor olabilir, orası ayrı bir konu. Ben yine net konuşmayayım ama ortada bir yanlışlık var gibi.

Kısacası senin yapacağını söylediğin şey bir "sıkıştırma algoritması". Dörtte bir oranında sıkıştırma yapabildiğini söylüyorsun ki bu da bilinen tüm sıkıştırma algoritmaları ve bunları uygulayan programlardan daha büyük bir orandır:
http://www.peazip.org/peazip-compression-benchmark.html

Hoş, kocaman kocaman CD'leri 20-30MB'ye kadar düşüren şeyler de gördüm ama sıkıştırma zamanları uzundur yüksek ihtimalle.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Objective

#4
Dediğim gibi bu benim ilk özgür yazılım projem, pek net konuşamam. Bu konu üzerinde pek araştırma yaptığımı da pek söyleyem, mesela arşivleme yazılımlarının dosyları sıkıştırmak için kullandığı algoritmalara sıkıştırma algoritması denildiğini bilmiyordum. Verdiğin adres için teşekkürler, bu bana yazılımı geliştirmek konusunda yardımcı olarabilir. 'kripto' derken kast ettiğim şey kripto'nun normal tanımından biraz daha farklı. Dosyaları birinin içeriğine ulaşamaması için değil, dosyaların boyutunu düşürmek için kripto işleminden geçirmeyi düşünüyorum.   

heartsmagic

Alıntı yapılan: ObjectiveDediğim gibi bu benim ilk özgür yazılım projem, pek net konuşamam. Bu konu üzerinde pek araştırma yaptığımı da pek söyleyem, mesela arşivleme yazılımlarının dosyları sıkıştırmak için kullandığı algoritmalara sıkıştırma algoritması denildiğini bilmiyordum.

Peki bu kadar az bilgiyle 6 gün sonrası için nasıl proje çıkacak ortaya? 12 Eylül 2015 tarihinde yayınlanacak şey nedir?

Alıntı Yap
Verdiğin adres için teşekkürler, bu bana yazılımı geliştirmek konusunda yardımcı olarabilir. 'kripto' derken kast ettiğim şey kripto'nun normal tanımından biraz daha farklı. Dosyaları birinin içeriğine ulaşamaması için değil, dosyaların boyutunu düşürmek için kripto işleminden geçirmeyi düşünüyorum. 

Kripto kriptodur, normal tanımından farklı bir şey olmaz. Sıkıştırma için kripto konularına da bakılmaz, sıkıştırma konularına bakılır. Boyut küçültmek için kripto kullanılmaz. Madem öyle X algoritması ile şifrelediğim dosyanın boyutu neden küçüldü diye sorabilirsin (bazı uygulamalar yapıyor sanırım). Onlar kripto algoritmasını yanında sıkıştırma da kullanıyorlar, nedeni budur.

Heves kırmak gibi olmasın ancak henüz yolun çok başında olmana rağmen amacını tam açıklayamıyor gibisin. Sıfırdan bir projeye başlamak hiç ama hiç sorun değil, hatta bu konu hakkında bilgili olmaman da sorun değil, sorun reklama erken başlıyor olman.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Reverser

zlib ile zamanında ISO - CISO (Compressed ISO) Compressor / Decompressor yazmıştım hala sistemin bir kenarında durur kaynak kod. Bir ara derleyip paylaşayım aklıma soktun. :)
Kendi deneyimlerimden elde ettiğim şey ise, sıkıştırma başarımının dosya içeriğine göre değişiklik gösterdiği oldu.
standart ISO-9660 imaj dosyasında ciddi bir sıkıştırma oranına sahip.
1024 MB - ISO
~500MB - CISO
Sıkıştırması en güç olan dosyalar ise genellikle çeşitli formatlardaki animasyonlar ve videolar oldu.

XFCE ROCKS !
Powered by Thunar & XFWM4



Objective

Alıntı yapılan: Reverser - 06 Eylül 2015 - 16:52:35
zlib ile zamanında ISO - CISO (Compressed ISO) Compressor / Decompressor yazmıştım hala sistemin bir kenarında durur kaynak kod. Bir ara derleyip paylaşayım aklıma soktun. :)
Kendi deneyimlerimden elde ettiğim şey ise, sıkıştırma başarımının dosya içeriğine göre değişiklik gösterdiği oldu.
standart ISO-9660 imaj dosyasında ciddi bir sıkıştırma oranına sahip.
1024 MB - ISO
~500MB - CISO
Sıkıştırması en güç olan dosyalar ise genellikle çeşitli formatlardaki animasyonlar ve videolar oldu.

Bana biraz bu proje konusunda yardımcı olabilme imkanın var mı?

Reverser

hangi konuda yardım istediğine bağlı.

XFCE ROCKS !
Powered by Thunar & XFWM4



Objective

Alıntı yapılan: Reverser - 06 Eylül 2015 - 17:32:19
hangi konuda yardım istediğine bağlı.

Pekâla, herhangi bir konuda bir sorun yaşarsam size bildiririm.

Objective

Alıntı yapılan: heartsmagic - 06 Eylül 2015 - 16:49:49
Alıntı yapılan: ObjectiveDediğim gibi bu benim ilk özgür yazılım projem, pek net konuşamam. Bu konu üzerinde pek araştırma yaptığımı da pek söyleyem, mesela arşivleme yazılımlarının dosyları sıkıştırmak için kullandığı algoritmalara sıkıştırma algoritması denildiğini bilmiyordum.

Peki bu kadar az bilgiyle 6 gün sonrası için nasıl proje çıkacak ortaya? 12 Eylül 2015 tarihinde yayınlanacak şey nedir?

Alıntı Yap
Verdiğin adres için teşekkürler, bu bana yazılımı geliştirmek konusunda yardımcı olarabilir. 'kripto' derken kast ettiğim şey kripto'nun normal tanımından biraz daha farklı. Dosyaları birinin içeriğine ulaşamaması için değil, dosyaların boyutunu düşürmek için kripto işleminden geçirmeyi düşünüyorum.

Kripto kriptodur, normal tanımından farklı bir şey olmaz. Sıkıştırma için kripto konularına da bakılmaz, sıkıştırma konularına bakılır. Boyut küçültmek için kripto kullanılmaz. Madem öyle X algoritması ile şifrelediğim dosyanın boyutu neden küçüldü diye sorabilirsin (bazı uygulamalar yapıyor sanırım). Onlar kripto algoritmasını yanında sıkıştırma da kullanıyorlar, nedeni budur.

Heves kırmak gibi olmasın ancak henüz yolun çok başında olmana rağmen amacını tam açıklayamıyor gibisin. Sıfırdan bir projeye başlamak hiç ama hiç sorun değil, hatta bu konu hakkında bilgili olmaman da sorun değil, sorun reklama erken başlıyor olman.

"Reklamına" erken başlıyor olayım yada olmayım, ben disiplinli biriyimdir. "Bir hafta" uzun bir süre.

heartsmagic

İlk ileti düzenlenmiş, kripto ile ilgili kısımlar çıkartılmış böylece benim ilk iletimin bir kısmı da boşa çıkmış. Süre de iki gün öteye alınmış. Tamamdır üç gün beş gün, hatta üç ay beş ay, sen söylediğini yap bizler de sevinelim.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Objective

Alıntı yapılan: heartsmagic - 11 Eylül 2015 - 02:04:27
İlk ileti düzenlenmiş, kripto ile ilgili kısımlar çıkartılmış böylece benim ilk iletimin bir kısmı da boşa çıkmış. Süre de iki gün öteye alınmış. Tamamdır üç gün beş gün, hatta üç ay beş ay, sen söylediğini yap bizler de sevinelim.

Sürenin uzatılması grafiksel arayüz ile alakalıydı. Ayrıca c++ üzerinde teknik sorunlar yaşadığım için dediğim gibi python kullanmak zorunda kaldım. Doğrusu varken neden yanlış yazayım ki?  Hala devam ediyorum. Projenin yarısı bitti sayılır. eğerki grafiksel arayüzü yetiştiremezsem sonraki versiyona kadar bütün yazılım komut tabanlı olacak

Objective

#13
Lütfen birinci yorumu okuyun.

ShangriLa

Yeeeeeaaah hazırız!

Alıntı YapEverybody sign:
Are you motherf*****s ready?
For the new shit?
Stand up and admit, tomorrow's never coming.
This is the new shit.
Stand up and admit.
Do we get it? Nooooo.
Do we want it? Yeeeeeaaah.

This is the new shit,
Stand up and admit.

Bu parça aklıma geldi bu başlığı okuyunca :-)
Ubuntu Mate Trusty

Objective

#15
Lütfen birinci yorumu okuyun.

betseg

Mesaj tekrarı olduğu için kimse görmemiştir, görülsün diye attı bu yorumu.

ShangriLa

ASM ile yazıldıysa sadece x86 için mi olacak CODEC. Tüm hype hüsrana uğradı.
Ubuntu Mate Trusty

Reverser

Biz bekleriz, ortaya bir şeyler çıksın yeter ki.

XFCE ROCKS !
Powered by Thunar & XFWM4



Objective

#19
Alıntı yapılan: ShangriLa - 15 Eylül 2015 - 02:51:05
ASM ile yazıldıysa sadece x86 için mi olacak CODEC. Tüm hype hüsrana uğradı.

Lütfen birinci yorumu okuyun.



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 15 Eylül 2015 - 19:59:25

Lütfen birinci yorumu okuyun.

Objective

Hala devam ediyorum. Bekç köpeği'ne sinyalleri yakayabilmesi (csignal) için fonksiyon geliştirdim, örnek olarak Ctrl+D tuşuna bastığınızda program otamatik olarak kapanacak ve dinamik hafıza devreye girecek.