Güncel İçerikler

İlginç Görüntüleme Sistemi Gerçek Oluyor!

Teknolojinin büyük gelişim gösteriyor olması, hiç şüphesiz askeri alanlarda daha da değerli bir hale geliyor. Gerek hava, gerek kara, gerekse de deniz kuvvetlerinde teknoloji geliştiren özel birimler ve bilim insanları, varlığını uzun süredir devam ettiriyor. Bu çalışmaların son sonuçları öyle görünüyor ki akıllı asker konseptine uyum ile belirtilen engel arkası görüntü imkânı sunun cihazlar için çalışmalar ile ilgili kendini gösteriyor.

Bilindiği gibi beton gibi kalın ve ısı geçirmesi zor olan engeller arkasından, kızılötesi ve termal görüntüler elde etmek mümkün olamıyor. Ancak yapılan son sızıntılara göre Pentagon‘ da ( Amerikan Savunma Bakanlığı ), cephe savaşlarında bu durumun üstesinden gelebilecek bir teknolojiyi neticelendirme peşinde.
Bu teknolojinin sağlayacağı yarar, özellikle güvenlik birliklerinin bina veya herhangi bir siper arkasında saklanan karşı asker veya grupların saklandıklarını belirleyerek, olası bir pusunun önüne geçilebileceği olarak açıklanıyor. Bu duruma ek olarak hava devriyelerinde yoğun bulut tabakasının kara görüntüsünün engele takılması da böylelikle yine çözüme kavuşmuş olacak.

Her ne kadar söz konusu teknolojinin detayları hakkında net bir açıklama yapılmasa da, kızılötesinden ve termal görüntüleme teknolojisine nazaran çok daha gelişmiş ve REVEAL ( Revolutionary Enhancement of Visibility by Exploiting Active Light-fields ) temelini alan bir çalışma sonucu olduğu dile getirilenler arasında yer alıyor.

Bu tarz teknolojik gelişmeleri akıllı asker konsepti altında farklı çözümlerle sık sık görmek mümkün. Takdir edileceği üzere günlük yaşantının yanı sıra özellikle ülkeler, askeri alanda büyük teknolojik çalışmalar gerçekleştirmeye devam ediyor.

Bilimsel Kağıt Teknolojisi!

Önce Google Glass sonrasında Android dünyasının farklı akıllı saatleri ve son olarak da Apple Watch ile birçok firma, teknolojiyi ceplerden vücutlara taşımak peşinde atılımlarda bulunuyor. Bu noktada, başta estetik ve kullanılabilirlik olmak üzere birçok sebep için de giyilebilir teknolojiler adına eğimli veya bükülebilir ekranlar daha da önem kazanıyor. Ancak hali hazırdaki eğimli ekran teknolojisi, ne yazık ki kullanıcı beklentilerini karşılayabilecek tüm detaylara sahip olamıyor.
Son gelişme ile eğimli ekran konusunda büyük gelişmelere zemin hazırlayabilecek bir yenilik, Çinli bilim insanları tarafından ortaya çıkartıldı.

Söz konusu teknolojinin kaba tabiri “elektronik kâğıt veya parlayan kağıt” olarak dile getiriliyor. Her ne kadar doğrudan akıllı cihazlar ile kullanılabilmesi mümkün olmasa da bilim insanları, bu çalışma sonucunun eğimli ekranların teknolojisini tümden değiştirebileceğini ve daha yetenekli ekranları ortaya çıkartabileceğini vurguluyor.
Yapılan açıklamalarda detaylı bilgiler yer almasa da kabaca anlatılanlar, karanlıkta ışık sağlayabilen bir kâğıt meydana getirdikleri, bunu ise nano selüloz partiküllerinin enerji emilimleri noktasında farklı bir çalışma ile gerçekleştirdikleri üzerine şekillenmiş durumda.
Bu atılımın eğimli ekran gelişimi için ne denli öneme sahip olabileceği ise şu an yoğun olarak kullanılan quantum dots teknolojisinin yerini alabilecek niteliği barındırması olarak açıklanıyor. Nano selüloz yapısı ile eğimli ekranlar, quantum dots teknolojisine sahip ekranlara göre çok daha verimli sonuçlar oryaya koyabilecek. Bu verimliliklerin başlıca olanları ise enerji tüketimi, eğim derece yelpazesi genişlemesi ve minimum ısı oluşturması olarak sıralanıyor.

Şu an için sadece laboratuvar ortamında kendini gösteren elektronik kâğıt teknolojisi, öyle görünüyor ki önümüzdeki yıllarda başlıca ekran üretici firmaların da ortak çalışmalarıyla, yeni teknolojilerin zeminini hazırlayabilecek potansiyele sahip.

AdBlock Kapatma!



AdBlock Plus için izlenmesi gereken ilk adım, tarayıcınızın sağ üst köşesinde bulununan AdBlock Plus logosuna tıklamak olacaktır.

Açılan alan içerisinde “Bu Sitede Etkin!” yazısına tıklayarak, etkinliği devre dışı bırakabilirsiniz.

Devre dışı bırakmanızın ardından “Bu sitede devre dışı” yazısını göreceksiniz.
Böylelikle artık söz konusu web sitesi içerisinde yer alan reklamların engeli kalkmış olacak ve takibini sağladığınız sitenin devamlılığına katkıda bulunacaksınız.
Benzer adımlar AdBlock uygulaması içinde geçerli. Ancak birkaç farklı adım bulunmakta.
İlk olarak yine aynı şekilde kullandığnız web tarayıcısının sağ üst bölümünde yer alan AdBlocksimgesine tıklayınız.

Açılan menüden “Seçenekler” kısmına tıklayarak uygulamanın seçenekler sayfasına ulaşınız.

AdBlock ayarlarını içeren sayfadan yukarıda yer alan “ÖZELLEŞTİR” sekmesine geçiniz.


Son olarak ise yukarıdaki görselde görülebileceği üzere gri bölmede “habertekno.com” isminin eklenmiş olduğundan emin olarak, geçerli sekmeyi kapatıp habertekno.com adresine geri dönebilirsiniz.
Her iki reklam engelleyici web eklentisinin, takibini sağladığınız siteler için devre dışı bırakılma yöntemini bu şekilde gerçekleştirebilirsiniz. Eğer farklı bir eklenti kullanıyorsanız, yine benzer adımları kullandığınız eklenti üzerinden gerçekleştirerek habertekno.com sitesini beyaz listeye ekleyerek, reklamların engellenmesine önlem almış olabilirsiniz.

BELLEK OPTİMİZASYONU (BİL461-ÖDEV4)

ÖDEV 4
BELLEK OPTİMİZASYONU

Memory Optimizer: RAM üzerinde optimizasyon yaparak kullanılabilir bellek alanını arttırdığı ve bu sayede programların daha hızlı çalışmasını sağladığı düşünülen programlara memory optimizer denir. Bu programlar bellek yönetimine müdahale ederek optimizasyon sağlamayı hedefler. Bilgisayar üzerinde çalışan programların daha fazla kullanmadıkları bellek alanları ya da artık erişim sağlanamayan bellek alanları erişilebilir memory’nin azalmasına neden olurlar. Optimizasyon yapılması sayesinde bu alanlar tekrardan erişilebilir bellek alanına dahil edilebilirler. Optimizasyon programları,  bellek optimizasyonu için bellekten kendilerine yer ayrılmasını isterler ve bu alanların kullanılabilir olmasını sağlarlar.

Bu özellikler göz önünde bulundurulduğunda bellek optimizasyonu sağlayan programların bellek kullanımı konusunda verimliliği sağladıkları düşünülebilir. Fakat bunun gerçekte böyle olup olmadığı konusunda şüpheler olduğu ortaya çıkmaktadır.

Bellek optimizasyonu yapan programlar bellekten sürekli kendilerine yer ayrılmasını isterler ve bellek de bunu sağlayabilmek için alanları serbest hale getirmeye çalışır. Bunu yaparken de yalnızca boşa gitmiş alanlar değil aslında kullanılmakta olan alanlar da boşaltılmaya çalışılır. Bellek alanlarını boşaltma sırasında, çalışmakta olan programlar bellekten çıkarılırsa bu program ile ilgili yapılacak işlemler gerçekleştirilirken hard diske erişme mecburiyeti ortaya çıkar. Bu da işlemlerin yavaşlamasına neden olur.

Ayrıca bellekte sürekli yer açılmaya çalışıldığı için önbellek alanı da boşaltılır. En çok kullanılan ve belirli bir anda kullanılmakta olan programlar normalde önbellekte durdukları için bellekten daha küçük olan önbelleğe erişim yapılarak bu programların daha hızlı bir şekilde çalışması sağlanır. Ancak önbellek alanlarının boşaltılması ile önbellekte normalde bulunabilecek olan veri artık bulunamaz ve bu veriye erişim daha yavaş bir şekilde bellekten gerçekleştirilebilir. Hatta bellek zaten boşaltıldığı için hard disk’e erişilmesi gerekir. Bu şekilde de normalde hızlandırması beklenen programların yaptıkları, gerçekleşen işlemlerin yavaşlamasına neden olur.


Bu gerçekleşen durumlara bakıldığında, bellek optimizasyonu işleminin aslında bir aldatmaca olduğu ve işlemleri hızlandırmak yerine tam tersi yavaşlatmak gibi bir etkisinin olduğu anlaşılmıştır. Bu nedenle bu tür programların kullanılması tercih edilmemelidir.

Referanslar:

SCHEDULING ALGORİTMALARI (BİL461-ÖDEV3)

ÖDEV-3

SCHEDULING ALGORİTMALARI

Önceleri geliştirilmiş olan ve belirli bir zamanda yalnızca bir işlemi gerçekleştirebilen tek görevli işletim sistemleri yerine, günümüzde bunun aksine aynı anda birden çok işlemi gerçekleştirebilen çok görevli işletim sistemleri bulunmaktadır. Ancak işletim sistemlerinin sağladığı bu özellik için düşünülmesi gereken belirli noktalar vardır. Aynı anda işlemler çalışmaya kalktığında bu işlemlerin her biri için işlemcinin hangi sırayla ve ne kadar süreyle kullanılacağı konusunda problemler ortaya çıkmaktadır. Bunları düzenleyebilmek için zamanlama algoritmaları(scheduling algorithms) tasarlanmıştır.

Zamanlama algoritmaları:
            1.      First-Come, First-Served (FCFS) Scheduling

            2.      Shortest-Job-First (SJR) Scheduling
3.      Priority Scheduling
4.      Round Robin(RR) Scheduling
5.      Multilevel Queue Scheduling

Windows NT’ye geçildiğinden beri Windows process scheduling için Multilevel Queue Scheduling ve Round Robin Scheduling algoritmalarını bir arada kullanarak çalışan Multilevel Feedback Queue algoritması kullanılmaktadır.
Multilevel Feedback Queue Algoritması:
Bu algoritmada kendi aralarında öncelik sırası bulunan ayrı kuyruklar bulunmaktadır. Gerçekleştirilen işlemler bulunması gereken kuyrukta yerini alınca öncelik sırasına göre işlenmeye başlanır. Yüksek önceliğe sahip olan iş daha önce yapılır. Herhangi bir iş kuyruk için belirlenen işlem zamanında(quantum time) tamamlanamazsa öncelik olarak bir alt sırada yer olan kuyruğa geçer. Bu durum işlem bitene kadar ya da temel kuyruğa ulaşana kadar devam eder. Temel kuyruk öncelik sırasında en düşük seviyede bulunan kuyruktur. Temel kuyruk içindeki işlemler arasında ise öncelik sırası kullanılmaz bu nedenle bu kuyruktaki işlerin yapılması için Round Robin Scheduling algoritması kullanılır.
Eğer aynı anda yapılacak işlerin önceliğine bakıldığında aynı önceliğe sahip oldukları görülürse bu durumda bunların işlenmesi Round Robin Scheduling algoritmasına göre ayarlanır. Round Robin Scheduling algoritmasına göre her işlem sırasıyla, belirlenen zaman diliminde çalışır. Bu süre içinde işi bitmese bile işlemciyi terk etmek zorundadır(preemptive yapı). Bütün işlemlere, sırayla çalışma süresi verildikten sonra ise tekrar ilk işleme dönülerek tamamlanmamış işlemlere aynı süre tekrar verilir. Bu şekilde işlemler bitene kadar tekrar tekrar belirlenen süre kadar işlemciyi kullanabilirler.

Multilevel Feedback Queue Algoritması ile belirli kriterlere göre belirlenen öncelikler verilen işlerin daha önce tamamlanması sağlanmıştır. Kuyruklar için belirlenen quantum time ile çok uzun sürecek işlemlerin diğer işleri engellemesi önlenmiştir. Eğer bu yapılmasaydı uzun süren işlemin bitmesi bekleneceği için yapılacak diğer işlemlerde gecikme yaşanmış olurdu. Zaman kısıtlaması Round Robin Scheduling algoritmasında da bulunduğu için aynı önceliğe sahip olan işler için de birbirini bekleyerek gecikme yaşanması durumu söz konusu olmamaktadır. Her iş sırayla belirli süre işlemciyi kullanarak adım adım tamamlanmaktadır.  Yani Multilevel Feedback Queue Algoritması, işlemcinin, aynı anda çalışan işlemler için daha az gecikmeye neden olacak ve işlemler arasında adaleti sağlayacak şekilde kullanılmasına olanak vermektedir.




BİL461-ÖDEV2



ÖDEV-2
1)      IBM Power 7 işlemcili RHEL6 sunucusu üzerinde çalışan Xeyes uygulaması, sanallaştırmanın getirdiği özellikler sayesinde sanal makine üzerine kurulan RHEL6 sunucusu üzerinde de çalışabilir. Sanallaştırma sayesinde bu sunucu üzerinde yapılabilecek olan işlemler sanal makine tarafından desteklenebilir hale getirilmiştir.

2)      Notepad++  programını  Centos üzerinde çalıştırabilmek için:

·         Epel repository’si kurulur :




·         Epel repository’si içinde bulunan wine paketini yüklemek için “yum install wine”  komutu kullanılır ve wine paketinin kurulumu yapılır :

·         Kurulumu yapıldıktan sonra winecfg komutu ile konfigüre edilir :


·         Konfigürasyon işlemi tamamlandıktan sonra notepad++ programı Centos üzerine indirilir. İndirilen program “sağ tık, Open With Other Application” seçeneğinden ”Wine Windows Program Loader”  seçilerek açılır :


·         Wine ile açılan notepad++ kurulumu tamamlanır ve çalıştığı görülür :



Burada Wine Windows’ta çalışabilecek bir programı Linux üzerinde çalışabilecek hale getirmiştir. Wine, Windows’un uyarlanan kitaplıkları sayesinde belirli programları Linux üzerinde çalıştırabilir. Notepad++ da bu şekilde Linux üzerinde çalıştırılabilmiştir.



3)       Uygulama strace ile çalıştırıldığında gözlenen API çağrıları şu şekildedir:
·         execve
·         brk
·         mmap
·         access
·         open
·         fstat
·         close
·         read
·         mprotect
·         arch_prctl
·         munmap
·         write
·         exit_group
Execve:
int execve(const char *filename, char *const argv[], char *const envp[]);
Filename ile gösterilen programı çalıştırır. Burada HelloWorld isimli binary dosyasını çalıştırmıştır. Çalıştırılma sırasında bir hata olmadığı için execve bir şey dönmemiştir, eğer hata olsaydı -1 dönerdi.
Brk:
Brk,  işlemin bulunduğu data segment’in sonunu gösterir ve böylece program için bellekte yer belirtmiş olur.
Mmap:
Çağrımı yapılan işlem için sanal adres alanında yeni bir mapping oluşturulmasını sağlar.
Access:
İşlem çağrısının dosyanın path’ine erişip erişemediğini kontrol eder.
Open:
Dosyanın yapılacağı işe göre (okuma, yazma vb.) negatif olmayan bir tam sayı döner.
Fstat:
Dosya hakkında bilgi döner.
Close:
Dosya tanımlayıcısını kapatır, böylece descriptor hiçbir dosyayı göstermiyor olur ve tekrar kullanılabilir.
Read:
Buffer’da file descriptor’dan itibaren olan byte’ların sayılmak için okunmasını sağlar.
Mprotect:
Bellek alanındaki erişim için olan korumayı değiştirir.
Arch_prctl:
Mimariye özgü işlemleri veya thread durumunu ayarlar.
Munmap:
Belirli adres alanları içerisindeki mappingleri siler ve bu şekilde geçersiz hale gelen bellek adreslerinin sonraki referanslar için kullanılabilmesini sağlar.
Write:
Bufferdan file descriptor’a kadar olan byteları yazar.
Exit_group:
İşlem çağrımının thread grubundaki bütün threadlerin durdurulmasını ve programın sonlanmasını sağlar.









KVM (BİL461-ÖDEV1)


ÖDEV-1

KERNEL-BASED VIRTUAL MACHINE(KVM)

Sanallaştırma, birçok kuruluşun daha esnek, kolay yönetilebilir ve az maliyetli alt yapılar sağlayabilmek amacıyla üzerinde çalışmalar yaptığı ve bir kaynağı birden fazla alt işleme bölerek daha verimli hale getirmeye dayanan bir sistemdir. Son yıllarda sanallaştırma üzerine yapılan çalışmalar hız kazanmış ve x86 mimarisi için de uygulanmaya başlamıştır.

x86 mimarisi ile tasarlanmış işlemciler, 8 ya da daha fazla çekirdek içererek multi-threading sağlamaları, büyük belleğe sahip sistemleri desteklemeleri, yüksek hızlı işlemci bağlantısı gibi özellikler sayesinde güvenilirlik(reliability),  uygunluk(availability) ve kullanışlılık(serviceability) özelliklerini sağlarlar. Bunlar, önceleri yalnızca ana bilgisayarlarda ve high end Unix sistemlerde bulunan özellikler iken şu anda soketler aracılığıyla x86 sistemleri de bu özellikleri sağlayabilecek şekilde geliştirilmiştir. Böylece kurumların daha az masraflı olan bu sistemleri tercih etmeye başlamalarının ne kadar mantıklı olduğunu görebiliyoruz.
x86 mimarisinde işlemlerin güvenli bir şekilde yürütülebilmesi için kullanıcı uygulamaları ve işletim sistemi uygulamaları arasında ayrım sağlayan bir yapı geliştirilmiştir. Kod Yetki Düzeyi(Code Privilege Level ) adı verilen bu yapı kodun çalıştığı yetki seviyesini gösteren 2 bitlik bir değerdir. Seviyeler ring0, ring1, ring2 ve ring3 olmak üzere 4’e ayrılır. En yetkili olan ring0 seviyesidir ve işletim sistemi bu seviyede çalışır. En az yetkiye sahip olan ring3 seviyesinde ise kullanıcı uygulamaları çalışır. Çoğu işletim sisteminde yalnızca ring0 ve ring3 seviyeleri kullanılır.

Bu çalışma sistemi göz önüne alındığında Kod Yetki Düzeyi modelinin sanal makinelerin çalışması sırasında bazı sorunlar meydana getireceği görülebilmektedir. Sanal makineler ring3 düzeyinde çalışmaktadır, ancak bu sanal makineler kendi üzerlerinde kurulu olan bir işletim sistemi ile çalışırlar ve işletim sistemlerinin çalışmasının normalde ring3 yerine ring0 düzeyinde olması gerekir. İşletim sistemi tarafından yapılan işlem çağrılarının ring3 düzeyinde yapılması uygun değildir. Bu durumda da büyük bir sorun ortaya çıkmış olur.
Bu sorunu çözmek için “Ring Compression ” adı verilen ve sanal makine üzerinde çalışan işletim sisteminin yetki seviyesini değiştirmeyi sağlayan bir yöntem düşünülmüştür. Ancak bu yöntem ile gereken başarım sağlanamayınca daha etkili teknikler üzerinde çalışılmıştır.

Sanal makinenin doğrudan işlemci üzerinde çalışması üzerine kurulu bir yöntemde, yetkilendirilmiş buyruklar ortaya çıktığında işlemci tarafından yakalanır ve bu buyruklar hypervisor(VMware gibi) tarafından ele alınır. Ancak bu şekilde yakalanamayan bazı buyruklardan dolayı işletim sistemi gerçekte ring3’te çalışıyor olduğunu anlayabilir. Bu durumda “Binary Translation” adı verilen çevrimle hypervisor, sanal makine belleğini tarayarak bu buyruklar çalışmadan önce tespit eder ve bu kodları uygun şekilde tekrar yazar. Böylece işletim sistemi bu durumun farkına varmadan normal şekilde çalışır.

“Paravirtualization” adı verilen bir başka yöntemde ise sanal makine üzerinde çalışan işletim sistemi bunun farkındadır ve ayrıcalıklı buyrukları hypervisor’a yapılan çağrımlar ile değiştirerek hypervisor ile birlikte uyumlu bir şekilde çalışabilir. Bu yöntem işletim sisteminin bunu sağlayacak şekilde uygulanmasıyla kullanılabilir hale gelir. Linux üzerinde gereken değişiklikler yapılarak bu yöntemin uygulanabilmesi sağlanmıştır.

Xen Hypervisor, Domain0(Dom0) adı verilen ve donanıma doğrudan erişimi olan bir sanal makine yükler. Bu sanal makineler gerekli değişiklikler yapılmış bir Linux kernel içerir ve Xen Hypervisor’ı ile iletişim kurar. Bu modelde dom0 üzerindeki kernel ring1 üzerinde çalışır.

Yazılım ile sağlanan bu sanallaştırmalar dışında işlemci üzerinde yapılabilecek donanımsal sanallaştırmalar da geliştirilmiştir. Bu yöntemde işlemci, host mode ya da guest mode olarak 2 farklı şekilde çalışabilir. Hypervisor, işlemcinin guest mode ile çalışmasını sağlayarak kontrolü ele alır. Sanal makine üzerindeki işletim sistemi belleğe doğrudan erişemeyeceği için hypervisor tarafından sanal bir bellek sağlanır. Bu bellek genellikle hypervisor’ın içerdiği sayfa tabloları ile implement edilir.

Kernel-based Virtual Machine(KVM) bütün bu gelişmeler temel alınarak, Linux kernel için geliştirilmiş bir sanallaştırma altyapısıdır. Donanımsal sanallaştırma ve hypervisor üzerinde yapılmış çalışmalar göz önünde bulundurularak sanallaştırma konusunda rahat bir şekilde başarım sağlanmıştır. KVM mimarisinde sanal makine normal bir Linux işlemi gibi implement edildiği için, KVM bütün Linux kernel özelliklerinden yararlanabilmektedir.  

KVM güvenlik için Linux güvenlik modelini kullanmaktadır. Linux kernel, SELinux(Security Enhanced Linux) projesini içerir. SELinux sayesinde Linux kernel üzerinde sıkı bir kaynak izolasyonu sağlanabilir.
KVM ayrıca Linux’un sıradan Linux işlemleri için sağladığı gelişmiş bellek özelliklerinden de faydalanır. İşlemci üzerindeki sanallaştırma özelliklerini destekler.
Linux tarafından desteklenen bütün donanım KVM tarafından kullanılabilir. KVM depolama için Linux tarafından kullanılabilen bütün depolama alanını güvenli bir şekilde kullanabilir.
KVM, çalışmakta olan bir sanal makinenin fiziksel sunucular arasında herhangi bir kesinti olmadan taşınmasını sağlayan Live Migration özelliğini destekler.
KVM, Linux, Windows, OpenBSD, FreeBSD, OpenSolaris, Solaris x86, MS DOS gibi birçok guest işletim sistemini destekler.
KVM hibrit sanallaştırmayı destekler. Bu sayede guest işletim sistemine, sanal makine için optimize edilmiş bir I/O arayüzü sağlayarak yüksek hızda I/O performansı sunan sanallaştırılmış sürücüler yüklenebilir.

Desteklenen bu özellikler sayesinde Linux kernel, sanal makine üzerinde çalışan uygulamalarda gecikmeyi azaltır ve hız kazandırır. Bir araya gelen bu özellikler sayesinde iyi performans sağlanması konusunda iç açıcı sonuçlar elde edilebildiği görülmektedir.

Kazanımlar
Ödev için gerekli bilgiyi sağlayan metni okumadan önce sanallaştırma ve KVM hakkında bir fikre sahip olmadığım için bütün bu yazdıklarım benim için önemli bir kazanım olmuştur. Sanallaştırma sayesinde sağlanan kolaylıkları biliyor olmamın her zaman işime yarayacağını düşünüyorum çünkü daha az maliyete neden olacak bir sistemle aynı anda birçok birbirinden bağımsız uygulamayı kullanabilmenin nasıl sağlanabileceğinin bilinmesi her zaman için kurumlar ve kişiler açısından büyük bir avantajdır. Sanallaştırmanın getirdiği imkanlar göz önünde bulundurularak tasarlanan KVM’i düşünecek olursak da belki de başka teknolojiler için de benzer bir model temel alınarak iyi sonuçlar ortaya çıkabileceği fikrini edindim.

Popüler İçerikler