Metin Dizilerini Değiştirme – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları
Metin Dizilerini Değiştirme
Chat’in birçok farklı pakette 500’den fazla sınıfı olan büyük bir uygulama olduğunu varsayalım. Adına göre doğru sınıfı tahmin etmeyi ummak, kodunuzun ilk derlemeden sonra doğru şekilde çalışacağını ummak gibidir.
Bir başlangıç noktası elde etmek için daha güvenilir bir yöntem kullanmanız gerekir. Sohbet yardımcı programı oldukça iyi günlük mesajları yazar, bu yüzden onu kullanmayı deneyelim. Başlattıktan sonra başka bir kullanıcıya mesaj gönderiyoruz, cevap alıyoruz ve Java konsolunda aşağıdaki çıktıyı alıyoruz.
Sohbet geçmişine yeni bir mesaj eklemenin, bir mesaj gönderildiğinde veya alındığında gerçekleştiğini tahmin etmek zor değil. Bir mesajı gönderen veya mesaj için bir hedef olan ana bilgisayar gibi bilgilerin statik bir dizginin parçası olmayacağı da oldukça açıktır.
Bu nedenle, çalışma dizinindeki tüm .class dosyaları için bir arama kriteri olarak Host’tan Alınan mesaj’ı kullanacağız. Arama, ChatServer.jad’ı almak için derhal derlediğimiz ChatServer.class adında bir dosya üretir. Geri derlenen kaynak kodun içindeki dizeyi aramak, bizi aşağıdaki gibi olan getMessage() yöntemine götürür.
ChatServer.jad’de messageListener’ı ararken, bunun bir arayüz olduğunu ve dinleyici örneğini setMessageListener() adlı bir yöntemin ayarladığını öğreniriz. Şimdi iki seçeneğimiz var: Birincisi, MessageListener’ı uygulayan sınıfları bulmak ve hangisinin (birkaç tane varsa) ChatServer ile ilişkili olduğunu görmek gerekir.
Başka bir yaklaşım, Java yöntem adlarının bayt kodu içinde metin olarak saklandığı gerçeğine dayanır. Kod karışık olmadığından, tüm sınıf dosyalarında setMessageListener() öğesini arayabiliriz. İkinci yöntemi kullanacağız ve aramayı çalıştıracağız. Bizim durumumuzda, ChatServer ve MainFrame olmak üzere iki sınıf döndürür.
ChatServer’da sadece MainFrame’in dinleyici olarak davrandığı sonucuna varıyoruz ve onu kaynak koda dönüştürmeye devam ediyoruz. Araştırmanın geri kalanı, tıpkı MainFrame’i bulmak için sınıf adını kullandığımız önceki bölümde olduğu gibi gerçekleştirilir.
Örnek uygulamamızda, sınıf adından başlangıç noktasını tahmin etmenin daha hızlı olduğu kanıtlanmıştır, ancak belirli bir şans faktörü söz konusudur. Günlük mesajlarını kullanmak, gerçek hayattaki çoğu uygulama için daha iyi çalışan daha güvenilir bir yaklaşımdır.
Uygulama Mantığını Gezinmek için Çağrı Yığınını Kullanma
Java’daki birçok sorun, istisnalarla kendini gösterir. İstisnalar, Java çalışma zamanı sınıfları veya uygulamanın kendisi tarafından atılabilir ve elbette istisnanın istisna türü ile birlikte sağladığı hata mesajı sorunu çözmek için genellikle yeterlidir.
Ancak bu çalışmanın var olmasının nedeni, hayatta her şeyin basit olmamasıdır. Bir NullPointerException veya hata mesajı olmayan bir istisna alabilirsiniz ve üçüncü taraf koduyla uğraşıyorsanız, bunun nasıl çözüleceğine dair hiçbir fikriniz olmaz. Lisans, kaynak kodu çözmenize engel olmadığı sürece veya kaynak kodun kendisine sahipseniz, çok daha az zahmetli bir yöntemle arama yapabilirsiniz.
İstisnaya neyin sebep olduğunu anlamanın en kolay ve en kesin yolu çağrı yığınına güvenmektir. İşletim sistemlerinin yöntem çağrılarını takip etmek için bir yığın kullandığını bilmelisiniz. A yöntemi B yöntemini çağırırsa, A’nın bilgisi yığına yerleştirilir. B, C yöntemini daha fazla çağırırsa, B’nin bilgisi de yığına yerleştirilir.
Her yöntem döndüğünde, hangi yöntemin yürütmeye devam etmesi gerektiğini belirlemek için yığın kullanılır. Her neyse, Java’da çağrı yığınına bir hata ayıklayıcı aracılığıyla (istisna durumunda printStackTrace()’i çağırarak) veya Thread.dumpStack() yöntemini kullanarak erişebilirsiniz. Bir hata ayıklayıcı kullanmak genellikle sunucu tarafı uygulamalar için çok külfetlidir, bu nedenle örneğimiz için son iki yöntemi kullanmanızı öneririm.
İstisnanın printStackTrace() işlevi yaygın olarak kullanılmaktadır ve kimseyi şaşırtmamalıdır. Thread’in dumpStack’i o kadar yaygın değildir, ancak çalışma zamanında kimin bir yöntemi çağırdığını görmek istiyorsanız son derece yardımcı olabilir. Araştırmakta olduğunuz yöntem gövdesine eklemeniz ve uygulamayı çalıştırmanız yeterlidir. Yöntem her çağrıldığında, yürütmenin ona nasıl ulaştığını ve başka hangi yöntemlerin inceleneceğini tam olarak bileceksiniz.
Java String Metodları
Java replace kullanımı
Java substring kullanımı
Java String nesnesi değiştirme
Java string içinde kelime arama
Java String içinde Sayı arama
java’da string nedir
değiştirilebilir string işlemleri için stringbuffer veya
Yeni Mantık Sağlamak için Bir Sınıfı Oluşturmak
Artık neyin yamalanması gerektiğini bildiğinize göre, asıl iş nispeten kolaydır. Kaynak dosyayı doğrudan dağıtımdan veya .class dosyasının derlemesini açarak elde edin (lisansın bunu engellemediğinden emin olun).
Bakım kolaylığı için, tüm yamalı sınıflarınızı ayrı bir dizinde, örneğin yamalarda tutmalısınız. Sınıfın paket yapısına uyması için dizin yapısını yeniden oluşturun ve sınıfta değişiklikler yapmak için en sevdiğiniz IDE’yi veya eski düzenleyicinizi ve komut satırı derleyicinizi kullanın. Bir noktada kitaplığı yükseltme olasılığınızın yüksek olduğunu unutmayın, bu nedenle eklediğiniz her kod parçası için yorum yazmalısınız.
Bu şekilde, orijinal sınıfın yeni sürümünü aldığınızda adımları kolayca tekrarlayabilirsiniz. Aynı nedenle, değişikliklerinizi izole etmeli ve hepsini dosyada bir arada tutmalısınız. Makul miktarda kod ekliyorsanız, yamalı dosyada mümkün olduğunca az değişiklik yapmak için bir yardımcı sınıf oluşturmayı ve bu sınıfa temsilci atamayı düşünün.
Örneğimizde, GetDisplayName() yöntemi için UserName (HostName) modelini kullanacak yeni bir uygulama sağlamalıyız.
Ardından, uygulama kurulum dizininde covertjava.chat adlı bir alt dizine sahip patch adlı yeni bir dizin oluşturuyoruz ve MessageInfo.jad’ı buraya kopyalayıp, adını MessageInfo.java olarak değiştiriyoruz. MessageInfo zaten getUserName() yöntemini içeriyor, bu yüzden görevimiz sadece iki dizgiyi birleştirmek. getDisplayName() yöntemini görünecek şekilde de yeniden yazıyoruz.
Ardından MessageInfo.java’yı derliyoruz. Bunu yaptıktan sonra, yeni mantığı yürürlüğe koymak için uygulamayı güncelleyebiliriz. Gelecekte kodu koruyabilmek için değişikliklerimizi de belgelemeliyiz.
Web sitelerinizi, arama motorlarında en yukarı getirmek adına sizlere 3 adet paket öneriyoruz. Bu paketler sayesinde web siteleriniz aramalarda 1 yıl içerisinde en yukarıya tırmanacaktır.
1) Backlink Paketi 50 $ (Yıllık Ücret)
2) Hızlandırma Paketi 300 $ (Yıllık Ücret)
3) Kelime Yönlendirme Paketi 150 $ (Aylık Ücret)