Kimin hoşuna gitmezki Raj Kapor'un bu ünlümü ünlü şarkısı.
Elbette 1951 de ben yoktum ama çocukluğumda dinlediğim ve o dönem çevremdeki herkesinde sanki her defasında ilk kez duymuş gibi sevgiyle söyleyip dinledikleri şarkıdır. Sanki zenginleştikçe kopuyor ve vahşileşiyoruz bu ülkede. Sanki kızılderililer gibi doğadan koparılıp (tarım hayvancılık mesleğinden) şehirlere sürülen(sanayi işçisi yapılan) bizlere ters bir hayata konuluyoruz. Şehrin içinde vahşileşiyor birbirimizi tanımaz oluyoruz.
Ben zaten her iktidara muhaliftim ve öyle olmanında en doğrusu olduğunu düşünürüm. Bana göre iktidara yandaş olmak, ya çıkardan nemalanmak ya da daha iyi olmak için eksikleri görmeye çalışma çabasından kaçıp iradeyi teslim etmek demektir. Dünde muhaliftim demiştim, ama hiç bu kadar yoğun muhalefet içinde olmamıştım. IMF nin kucağına bilmem kaçıncı kez oturan bu hükümet diğerlerinden farklı olarak herşeyi yaptı. Evet evet herşeyi yaptılar. Kendi medyasını kendi zenginini hatta kendi fakirini ve dilencisini de yaptı.
Ama solcuya komünist, sağcıya faşist bakan bu millete dostluğu söylemek yerine her defasında diğerlerine "samimiyetsiz" dedi.
Hakikaten! Düşünsenize, birisi hep dürüstlükten bahsediyorsa şüphe etmez misiniz? Hep namustan, doğruluktan, samimiyetten bahsediyorsa, demez misiniz "bu adam niye ikide bir bunları söylüyor" diye? Ben soruyorum. Kendini bu kadar öveni sevmeyiz bizler. Rakibini karalayan satıcıyı hele hiç sevmeyiz. Ticarette yapmayız. Yani kuruşumuzu vermeyiz. Bilirizki dürüst, samimi insan ne dillendirir bunları, ne de öne atar kendini.
Ne diyordum gene. Hah, bilmem kaçıncı kez oturdular gene IMF nin kucağına diyordum. IMF'nin köyleri boşaltın emrini yerine getiriyorlar diyordum. Bizi de köyümüzden koparıp şehirlerde boğdu, boğuyorlarda. Dönümlere sığamazdık, 60 metre kare TOKİ'lere hapsettiler, sanki lütufetmiş gibi. Kendileri girse ya 60 metre evlere.
Dün hep kardeştik, bilmezdik kim kürt kim ermeni ama şimdi belledik herkesin kimliğini. Bugün ancak Taraf olabildik.
Fakir ama gururlu bir o kadar seven ve sevilen olmamız dileği ile. Bir de; yüce Türk milletiyiz biz(Kürtümüzle, çerkesimizle, arnavutumuzla ...). Bize lâyık helal süt emmişlere ermek ümidiyle. Nice güzel senelere 2010 ile hep birlikte.
\t tab (0×09) (9)
\r carriage return (0×0D) (13)
\n new line (0×0A) (10)
\a bell (0×07) (7)
\e escape (0×1B) (27)
\f form feed (0×0C) (12)
\v vertical tab (0×0B) (11)
Aşağıdaki metin üzerinden regular expression ifadelerini çalışalım
“Özdemir, biliyor musun, gazetelerde Musevi ya da Yahudi kökenli işadamı Moiz Milka diye yazdıkları zaman tüylerim diken diken oluyor. Ermeni kökenli, Rum kökenli de diyorlar. Sana Türk kökenli Türk yazarı mı diyorlar? Bizler Türkiye Cumhuriyeti vatandaşlarıyız. Senin adının önüne kökenle ilgili bir sıfat yapıştırılmıyorsa, bizlere de yapıştırılamaz. Biz yasalara göre her vatandaş gibi Türk’üz!”
Her harfi ara:
>> .
Sadece noktaları arar:
>> \.
Harf ya da kelimeden önceki ve/veya sonraki harfleri harf ya da kelime ile birlikte arar:
>> ..b.
"k" harfi geçenleri arar:
Sadece
>> k
yazsaydık aşağıdaki sonuca ulaşırdık:
Sadece
>> \bk
yazsaydık, ilk harfi "k" başlayan kelimelerdeki "k" harfleri seçilecek.
Sadece
>> \bSana\b
yazarsak, "Sana" kelimesi seçilir.
>> \bsana\b
S!=s (byte değerlerini düşünürsek) bu yüzden hiç bulunamayacaktır.
>> \b..rk\b
4 Harfli kelime seçiyoruz(..rk). İlk iki harfi herşey olabilir ama son iki harfi rk olacak. Sonuç:
>> [Bb]iz
[] içinde geçen harflerin olduğu yerleri seç.
[a-z] Küçük harflerin geçtiği yerleri seç.
[a-zA-z] Büyük küçük harflerin geçtiği yerleri seç.
[0-9] Rakamların geçtiği yerleri seç
[^öşç] öşç olmayanları(^) seç:
Hiçbirini seç:
>> ^
Yan yana 2 ya da 6 adet olan "o" harflerini seç:
>> o{2,6}
"x" harfi ile başlayan ve o ile devam eden(yan yana n tane "o" olmak şartıyla devam eden) harfleri seç:
>> xo+
o ile başlayan(yan yana n tane "o" olmak şartıyla devam eden) ve "x" harfi ile biten harfleri seç:
>> o+x
o ile başlaması şart değil ama yan yana n tane "o" ile birlikte, "x" harflerinide seç:
>> o*x
o+x : en az bir tane "o" harfi gerekiyor.
0?x : "o" karakteri olmasada olur. "o" karakteri yoksa sadece "x" ama varsa "x" den önceki tek "o" karakteri.
o*x : "o" karakteri olmasada olur ama olursa x den önceki tüm "o" larla birlikte "x" karakterini de seç.
>> <.+w
>> <.+?w
Satırın sonundaki harfi seç:
>> >$
Satır sonundaki herhangi tek karakteri seç.
>> .$
>> x.*$
Sadece yazılı kısmı arar:
>> vatan
|(boru) dan önceki kısmı ya da sonraki kısmı arar
>> Türk|Yahudi
o harfinden sonra o harfi olmayan. Ama sonraki n tane harfi seçen. < karakterini görünce durup, < karakteri hariç seçen.
>> o(?!o).*(?=<)
Special Sequences
w - Any “word” character (a-z 0-9 _)
W - Any non “word” character
s - Whitespace (space, tab CRLF)
S - Any non whitepsace character
d - Digits (0-9)
D - Any non digit character
. - (Period) – Any character except newline
Meta Characters
^ - Start of subject (or line in multiline mode)
$ - End of subject (or line in multiline mode)
[ - Start character class definition
] - End character class definition
| - Alternates, eg (a|b) matches a or b
( - Start subpattern
) - End subpattern
- Escape character
Quantifiers
n* - Zero or more of n
n+ - One or more of n
n ? - Zero or one occurrences of n
{n} - n occurrences exactly
{n,} - At least n occurrences
{,m} - At most m occurrences
{n,m} - Between n and m occurrences (inclusive)
Pattern Modifiers
i - Case Insensitive
m - Multiline mode - ^ and $ match start and end of lines
s - Dotall - . class includes newline
x - Extended– comments and whitespace
e - preg_replace only – enables evaluation of replacement as PHP code
S - Extra analysis of pattern
U - Pattern is ungreedy
u - Pattern is treated as UTF-8
Point based assertions
b - Word boundary
B - Not a word boundary
A - Start of subject
Z - End of subject or newline at end
z - End of subject
G - First matching position in subject
Assertions
(?=) - Positive look ahead assertion foo(?=bar) matches foo when followed by bar
(?!) - Negative look ahead assertion foo(?!bar) matches foo when not followed by bar
(?<=) - Positive look behind assertion (?<=foo)bar matches bar when preceded by foo
(? - Negative look behind assertion (?
(?>) - Once-only subpatterns (?>d+)bar Performance enhancing when bar not present
(?(x)) - Conditional subpatterns
(?(3)foo|fu)bar - Matches foo if 3rd subpattern has matched, fu if not
That regex is designed to match raw byte sequences, not character sequences. When you read the file, you're converting the bytes to characters according to the default encoding, then applying the regex to the character sequence as if it were still the undecoded bytes. For example, assuming the text was really encoded as UTF-8, the character 'ä' would be represented by the two-byte sequence C3 A4. If you decode that using the windows-1252 encoding, it becomes the two-character sequence "ä" ("\u00C3\u00A4"). That matches the regex because the Unicode codepoints of the characters just happen to have the same value as their encodings. But that isn't the case with 'Ä'. Its UTF-8 encoding is C3 84, which becomes "Ä" ("\u00C3\u201E") after decoding, and of course, that doesn't match the regex.
If you want to confirm that a file contains UTF-8 encoded text, you have to work on the raw bytes. That means you can't use regexes, because Java regexes only work with char sequences. But that's a poor approach anyway, in my opinion. Here's a much better way: http://glaforge.free.fr/wiki/index.php?wiki=GuessEncoding
non-static variable this cannot be referenced from a static context: Statik bir noktadan statik olmayan bir değişkene erişilemez. Ama inner class olmayan A sınıfından bir obje türetmek sorunsuz olarak tamamlanıyor.
inner classes cannot have static declarations: Alt sınıflar statik tanımlamalara sahip olamaz
Bir nesnenin kendi durumunda olabilecek değişikliklerin haberdar edilmesi gereken başka nesneler varsa (nesneler arasında ilişki varsa) bu tasarım kalıbı kullanılır.
Örneğin: Bir hisse kağıdındaki hareketden haberdar edilecek müşteriler, bir blog sitesinde meydana gelecek değişimden haberdar edilecek abonelerin haberdar edilmesi gibi.
Blog sitemizdeki değişimleri abonelere bildirmek isteyelim. Buna göre blog sitemiz abonelerin listesini tutmalı. Ama abonelerimiz çeşitli tiplerde olabilir. Hisse senedindeki değişimden haberdar olmak isteyen bireysel yatırımcı, kurumsal yatırımcı, denetleme kurumu, SPK gibi abonler olabilir. Bu abone tiplerinin ortak bir tipte toplanması için bir arayüz ya da bir soyut sınıftan türetilmesi gerekir.
Depişimini haber verecek sınıfların(ki bunlar Subject atasından türetilmiş olmalı), abonelerini (ki abonelerde Observer sınıfından türetilmiş olmalı(ki update() metotları olsun)) ekleyip, çıkartabilmesi gerekiyor. Bunun için Attach(Observer obj) ve Detattach(Observer obj) metotları olacak. Birde tüm bu değişimleri abonelerine bildirmek için Notify() metodu olacak. Notify metodu aslında abonelerinin update metodunu çağıracak. Update metodu Observer ata sınıfından gelen bir metotdu. Update metodu her sınıfın kendi içinde sağladığı (implement) bir metot olduğu için her abone sınıf tipi gelen değişim bilgisinde kendine özgü bir iş yapacak
Abstract Factory, Builder ve Prototype tasarım şablonlarında olabileceği gibi birçok tasarım şablonu Singleton tasarım şablonu kullanılarak implemente edilir.
Facade objeleri genellik Singleton’dır çünkü sadece bir tane Facade objesi gereklidir.
Bir projemiz var ve bu projede bir sürü Interface ve Class'larımız olsun.
Bir gün dışarıdan bir sınıfı(örneğin SMS atan bir apiyi) projemize dahil etmemiz gereksin.
Tabi o gün kullanılan Turkcell(En azından yerli sermaye az da olsa) GSM operatörü yerine, ileride başka bir GSM operatörü ve onun API'sini de kullanabileceğimizi düşünerek sistemimize, bu sınıfı dahil etmemiz gerekecektir.
Bir adaptör sınıfı yazmamız gerekecek.
1. Method : Class Adapter
Sistemde mesaj atması gereken sınıfların uyguladığı arayüzü, kullanan bir sınıf oluştururuz. Bu sınıf aynı zamanda TurkcellApi sınıfını da miras alarak kısa mesaj atma metotlarını kullanmamızı sağlayabilir. Böylece TurkcellApi sınıfı dışarıdan gelip sisteme adapte edilen bir tip olarak kullanılabilir.
2. Method: Object Adapter
Sistemde mesaj atması gereken sınıfların uyguladığı arayüzü, kullanan bir sınıf oluştururuz. Bu sınıf aynı zamanda TurkcellApi sınıfından bir property (field, değişken ne derseniz deyin) içerir ve tüm kısa mesaj işlerini yeni sınıfımızın bu değişkenine yaptırılır. Böylece TurkcellApi sınıfndan(tipinden) bir değişkeni yeni sınıfımızda kullanarak sisteme adapte etmiş oluruz.
* Bridge Bridge tasarım şablonu, modelleme esnasında oluşan soyut oluşumlar ve bunların implementasyonunu ayırmak için kullanılır. Bu yöntem sayesinde sınıf hiyerarşileri daha esnek bir hale getirilebilir, çünkü üst sınıflar bünyelerinde barındırdıkaları soyut metodları bir interface sınıfına taşıyarak, alt sınıfların istedikleri bir implementasyonu kullanmalarına izin verirler.