[{"data":1,"prerenderedAt":11105},["ShallowReactive",2],{"blog-posts-tr-all":3},[4,1211,1331,1380,1636,1723,1761,1824,1933,2144,2209,2415,2643,2842,3054,3182,4010,5664,5883,6016,6681,6756,7086,7653,7779,8256,8798,9833,10728],{"id":5,"title":6,"body":7,"date":1200,"description":1201,"extension":1202,"meta":1203,"navigation":231,"path":1204,"seo":1205,"stem":1206,"tags":1207,"translation":1209,"__hash__":1210},"pages_tr\u002Ftr\u002Fblog\u002Fgit-commands-every-developer-should-know.md","Her Geliştiricinin Bilmesi Gereken Git Komutları",{"type":8,"value":9,"toc":1190},"minimark",[10,15,28,39,43,46,132,135,185,189,200,329,340,431,435,441,539,542,603,652,655,674,678,691,828,838,842,845,908,919,926,1007,1018,1054,1058,1061,1117,1120,1167,1171,1186],[11,12,14],"h2",{"id":13},"giriş","Giriş",[16,17,18,19,23,24,27],"p",{},"Git'te günlük işin büyük kısmı yaklaşık 20 komutla yapılır; bu yazı o komutları kullanım sırasıyla, örnekleriyle topluyor. İster yeni başlıyor olun ister yıllardır kullanıyor olun, ",[20,21,22],"code",{},"reset"," ile ",[20,25,26],{},"revert"," arasındaki farkı ya da kaybolmuş bir commit'i nasıl geri getireceğinizi hızlıca hatırlamak için bu sayfayı yer imlerine ekleyebilirsiniz.",[16,29,30,31,34,35,38],{},"Örneklerde ",[20,32,33],{},"main"," ana branch, ",[20,36,37],{},"origin"," ise uzak repo adı olarak kullanılıyor.",[11,40,42],{"id":41},"_1-kurulum-ve-yapılandırma","1. Kurulum ve yapılandırma",[16,44,45],{},"Git'i ilk kurduğunuzda kimliğinizi bir kez tanıtmanız yeterli; bu bilgiler her commit'e yazılır.",[47,48,53],"pre",{"className":49,"code":50,"language":51,"meta":52,"style":52},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git config --global user.name \"Ad Soyad\"\ngit config --global user.email \"ad@ornek.com\"\ngit config --global init.defaultBranch main\ngit config --list          # tüm ayarları göster\n","bash","",[20,54,55,84,103,118],{"__ignoreMap":52},[56,57,60,64,68,71,74,78,81],"span",{"class":58,"line":59},"line",1,[56,61,63],{"class":62},"sBMFI","git",[56,65,67],{"class":66},"sfazB"," config",[56,69,70],{"class":66}," --global",[56,72,73],{"class":66}," user.name",[56,75,77],{"class":76},"sMK4o"," \"",[56,79,80],{"class":66},"Ad Soyad",[56,82,83],{"class":76},"\"\n",[56,85,87,89,91,93,96,98,101],{"class":58,"line":86},2,[56,88,63],{"class":62},[56,90,67],{"class":66},[56,92,70],{"class":66},[56,94,95],{"class":66}," user.email",[56,97,77],{"class":76},[56,99,100],{"class":66},"ad@ornek.com",[56,102,83],{"class":76},[56,104,106,108,110,112,115],{"class":58,"line":105},3,[56,107,63],{"class":62},[56,109,67],{"class":66},[56,111,70],{"class":66},[56,113,114],{"class":66}," init.defaultBranch",[56,116,117],{"class":66}," main\n",[56,119,121,123,125,128],{"class":58,"line":120},4,[56,122,63],{"class":62},[56,124,67],{"class":66},[56,126,127],{"class":66}," --list",[56,129,131],{"class":130},"sHwdD","          # tüm ayarları göster\n",[16,133,134],{},"Yeni bir proje başlatmak ya da var olan bir repoyu indirmek için:",[47,136,138],{"className":49,"code":137,"language":51,"meta":52,"style":52},"git init                                   # bulunduğun klasörü repo yap\ngit clone https:\u002F\u002Fgithub.com\u002Fkullanici\u002Fproje.git\ngit clone \u003Curl> yeni-klasor-adi            # farklı klasöre klonla\n",[20,139,140,150,160],{"__ignoreMap":52},[56,141,142,144,147],{"class":58,"line":59},[56,143,63],{"class":62},[56,145,146],{"class":66}," init",[56,148,149],{"class":130},"                                   # bulunduğun klasörü repo yap\n",[56,151,152,154,157],{"class":58,"line":86},[56,153,63],{"class":62},[56,155,156],{"class":66}," clone",[56,158,159],{"class":66}," https:\u002F\u002Fgithub.com\u002Fkullanici\u002Fproje.git\n",[56,161,162,164,166,169,172,176,179,182],{"class":58,"line":105},[56,163,63],{"class":62},[56,165,156],{"class":66},[56,167,168],{"class":76}," \u003C",[56,170,171],{"class":66},"ur",[56,173,175],{"class":174},"sTEyZ","l",[56,177,178],{"class":76},">",[56,180,181],{"class":66}," yeni-klasor-adi",[56,183,184],{"class":130},"            # farklı klasöre klonla\n",[11,186,188],{"id":187},"_2-günlük-iş-akışı","2. Günlük iş akışı",[16,190,191,192,195,196,199],{},"Değişiklikler üç aşamadan geçer: çalışma dizini → staging alanı (",[20,193,194],{},"add",") → repo geçmişi (",[20,197,198],{},"commit",").",[47,201,203],{"className":49,"code":202,"language":51,"meta":52,"style":52},"git status                 # neler değişti, neler stage'de\ngit status -s              # kısa format\n\ngit add dosya.java         # tek dosyayı stage'e al\ngit add .                  # tüm değişiklikleri al\ngit add -p                 # değişiklikleri parça parça seçerek al\n\ngit commit -m \"Login validasyonu eklendi\"\ngit commit -am \"Mesaj\"     # takip edilen dosyaları add + commit\ngit commit --amend         # son commit'i düzelt (push etmeden önce!)\n",[20,204,205,215,227,233,246,259,272,277,295,316],{"__ignoreMap":52},[56,206,207,209,212],{"class":58,"line":59},[56,208,63],{"class":62},[56,210,211],{"class":66}," status",[56,213,214],{"class":130},"                 # neler değişti, neler stage'de\n",[56,216,217,219,221,224],{"class":58,"line":86},[56,218,63],{"class":62},[56,220,211],{"class":66},[56,222,223],{"class":66}," -s",[56,225,226],{"class":130},"              # kısa format\n",[56,228,229],{"class":58,"line":105},[56,230,232],{"emptyLinePlaceholder":231},true,"\n",[56,234,235,237,240,243],{"class":58,"line":120},[56,236,63],{"class":62},[56,238,239],{"class":66}," add",[56,241,242],{"class":66}," dosya.java",[56,244,245],{"class":130},"         # tek dosyayı stage'e al\n",[56,247,249,251,253,256],{"class":58,"line":248},5,[56,250,63],{"class":62},[56,252,239],{"class":66},[56,254,255],{"class":66}," .",[56,257,258],{"class":130},"                  # tüm değişiklikleri al\n",[56,260,262,264,266,269],{"class":58,"line":261},6,[56,263,63],{"class":62},[56,265,239],{"class":66},[56,267,268],{"class":66}," -p",[56,270,271],{"class":130},"                 # değişiklikleri parça parça seçerek al\n",[56,273,275],{"class":58,"line":274},7,[56,276,232],{"emptyLinePlaceholder":231},[56,278,280,282,285,288,290,293],{"class":58,"line":279},8,[56,281,63],{"class":62},[56,283,284],{"class":66}," commit",[56,286,287],{"class":66}," -m",[56,289,77],{"class":76},[56,291,292],{"class":66},"Login validasyonu eklendi",[56,294,83],{"class":76},[56,296,298,300,302,305,307,310,313],{"class":58,"line":297},9,[56,299,63],{"class":62},[56,301,284],{"class":66},[56,303,304],{"class":66}," -am",[56,306,77],{"class":76},[56,308,309],{"class":66},"Mesaj",[56,311,312],{"class":76},"\"",[56,314,315],{"class":130},"     # takip edilen dosyaları add + commit\n",[56,317,319,321,323,326],{"class":58,"line":318},10,[56,320,63],{"class":62},[56,322,284],{"class":66},[56,324,325],{"class":66}," --amend",[56,327,328],{"class":130},"         # son commit'i düzelt (push etmeden önce!)\n",[16,330,331,332,335,336,339],{},"Neyin değiştiğini görmek için ",[20,333,334],{},"diff",", geçmişe bakmak için ",[20,337,338],{},"log"," kullanılır:",[47,341,343],{"className":49,"code":342,"language":51,"meta":52,"style":52},"git diff                   # stage'e alınmamış farklar\ngit diff --staged          # commit'lenecek farklar\ngit log --oneline --graph --all   # okunaklı branch geçmişi\ngit log -p dosya.java      # bir dosyanın değişim geçmişi\ngit show \u003Ccommit>          # tek commit'in detayı\ngit blame dosya.java       # hangi satırı kim değiştirdi\n",[20,344,345,355,367,386,399,419],{"__ignoreMap":52},[56,346,347,349,352],{"class":58,"line":59},[56,348,63],{"class":62},[56,350,351],{"class":66}," diff",[56,353,354],{"class":130},"                   # stage'e alınmamış farklar\n",[56,356,357,359,361,364],{"class":58,"line":86},[56,358,63],{"class":62},[56,360,351],{"class":66},[56,362,363],{"class":66}," --staged",[56,365,366],{"class":130},"          # commit'lenecek farklar\n",[56,368,369,371,374,377,380,383],{"class":58,"line":105},[56,370,63],{"class":62},[56,372,373],{"class":66}," log",[56,375,376],{"class":66}," --oneline",[56,378,379],{"class":66}," --graph",[56,381,382],{"class":66}," --all",[56,384,385],{"class":130},"   # okunaklı branch geçmişi\n",[56,387,388,390,392,394,396],{"class":58,"line":120},[56,389,63],{"class":62},[56,391,373],{"class":66},[56,393,268],{"class":66},[56,395,242],{"class":66},[56,397,398],{"class":130},"      # bir dosyanın değişim geçmişi\n",[56,400,401,403,406,408,411,414,416],{"class":58,"line":248},[56,402,63],{"class":62},[56,404,405],{"class":66}," show",[56,407,168],{"class":76},[56,409,410],{"class":66},"commi",[56,412,413],{"class":174},"t",[56,415,178],{"class":76},[56,417,418],{"class":130},"          # tek commit'in detayı\n",[56,420,421,423,426,428],{"class":58,"line":261},[56,422,63],{"class":62},[56,424,425],{"class":66}," blame",[56,427,242],{"class":66},[56,429,430],{"class":130},"       # hangi satırı kim değiştirdi\n",[11,432,434],{"id":433},"_3-branch-işlemleri","3. Branch işlemleri",[16,436,437,438,440],{},"Her özellik veya hata düzeltmesi için ayrı bir branch açmak, ",[20,439,33],{},"'i temiz tutmanın en kolay yoludur.",[47,442,444],{"className":49,"code":443,"language":51,"meta":52,"style":52},"git branch                 # yerel branch'ler\ngit branch -a              # uzak branch'ler dahil\ngit switch -c feature\u002Flogin     # yeni branch aç ve geç\ngit switch main                 # branch değiştir\ngit checkout -b feature\u002Flogin   # eski sözdizimi, aynı iş\ngit branch -d feature\u002Flogin     # birleşmiş branch'i sil\ngit branch -D feature\u002Flogin     # zorla sil\n",[20,445,446,456,468,484,496,511,525],{"__ignoreMap":52},[56,447,448,450,453],{"class":58,"line":59},[56,449,63],{"class":62},[56,451,452],{"class":66}," branch",[56,454,455],{"class":130},"                 # yerel branch'ler\n",[56,457,458,460,462,465],{"class":58,"line":86},[56,459,63],{"class":62},[56,461,452],{"class":66},[56,463,464],{"class":66}," -a",[56,466,467],{"class":130},"              # uzak branch'ler dahil\n",[56,469,470,472,475,478,481],{"class":58,"line":105},[56,471,63],{"class":62},[56,473,474],{"class":66}," switch",[56,476,477],{"class":66}," -c",[56,479,480],{"class":66}," feature\u002Flogin",[56,482,483],{"class":130},"     # yeni branch aç ve geç\n",[56,485,486,488,490,493],{"class":58,"line":120},[56,487,63],{"class":62},[56,489,474],{"class":66},[56,491,492],{"class":66}," main",[56,494,495],{"class":130},"                 # branch değiştir\n",[56,497,498,500,503,506,508],{"class":58,"line":248},[56,499,63],{"class":62},[56,501,502],{"class":66}," checkout",[56,504,505],{"class":66}," -b",[56,507,480],{"class":66},[56,509,510],{"class":130},"   # eski sözdizimi, aynı iş\n",[56,512,513,515,517,520,522],{"class":58,"line":261},[56,514,63],{"class":62},[56,516,452],{"class":66},[56,518,519],{"class":66}," -d",[56,521,480],{"class":66},[56,523,524],{"class":130},"     # birleşmiş branch'i sil\n",[56,526,527,529,531,534,536],{"class":58,"line":274},[56,528,63],{"class":62},[56,530,452],{"class":66},[56,532,533],{"class":66}," -D",[56,535,480],{"class":66},[56,537,538],{"class":130},"     # zorla sil\n",[16,540,541],{},"Branch'leri birleştirmenin iki yolu var:",[47,543,545],{"className":49,"code":544,"language":51,"meta":52,"style":52},"git switch main\ngit merge feature\u002Flogin    # merge commit ile birleştir\ngit switch feature\u002Flogin\ngit rebase main            # commit'leri main'in ucuna taşı\ngit rebase -i HEAD~3       # son 3 commit'i düzenle\u002Fbirleştir (squash)\n",[20,546,547,555,567,576,588],{"__ignoreMap":52},[56,548,549,551,553],{"class":58,"line":59},[56,550,63],{"class":62},[56,552,474],{"class":66},[56,554,117],{"class":66},[56,556,557,559,562,564],{"class":58,"line":86},[56,558,63],{"class":62},[56,560,561],{"class":66}," merge",[56,563,480],{"class":66},[56,565,566],{"class":130},"    # merge commit ile birleştir\n",[56,568,569,571,573],{"class":58,"line":105},[56,570,63],{"class":62},[56,572,474],{"class":66},[56,574,575],{"class":66}," feature\u002Flogin\n",[56,577,578,580,583,585],{"class":58,"line":120},[56,579,63],{"class":62},[56,581,582],{"class":66}," rebase",[56,584,492],{"class":66},[56,586,587],{"class":130},"            # commit'leri main'in ucuna taşı\n",[56,589,590,592,594,597,600],{"class":58,"line":248},[56,591,63],{"class":62},[56,593,582],{"class":66},[56,595,596],{"class":66}," -i",[56,598,599],{"class":66}," HEAD~3",[56,601,602],{"class":130},"       # son 3 commit'i düzenle\u002Fbirleştir (squash)\n",[604,605,606,622],"table",{},[607,608,609],"thead",{},[610,611,612,616,619],"tr",{},[613,614,615],"th",{},"Komut",[613,617,618],{},"Ne yapar",[613,620,621],{},"Ne zaman",[623,624,625,639],"tbody",{},[610,626,627,633,636],{},[628,629,630],"td",{},[20,631,632],{},"merge",[628,634,635],{},"Geçmişi korur, merge commit ekler",[628,637,638],{},"Paylaşılan branch'lerde",[610,640,641,646,649],{},[628,642,643],{},[20,644,645],{},"rebase",[628,647,648],{},"Geçmişi doğrusal hale getirir",[628,650,651],{},"Henüz push edilmemiş yerel branch'lerde",[16,653,654],{},"Altın kural: başkalarının da kullandığı, push edilmiş bir branch'i rebase etmeyin.",[16,656,657,658,661,662,665,666,669,670,673],{},"Çakışma (conflict) olursa dosyaları düzeltip ",[20,659,660],{},"git add"," yapın, ardından ",[20,663,664],{},"git merge --continue"," veya ",[20,667,668],{},"git rebase --continue"," ile devam edin; vazgeçmek için ",[20,671,672],{},"--abort",".",[11,675,677],{"id":676},"_4-uzak-repo-ile-çalışma","4. Uzak repo ile çalışma",[16,679,680,683,684,687,688,690],{},[20,681,682],{},"fetch"," sadece indirir, ",[20,685,686],{},"pull"," indirip birleştirir; emin değilseniz önce ",[20,689,682],{}," yapıp neyin geldiğine bakın.",[47,692,694],{"className":49,"code":693,"language":51,"meta":52,"style":52},"git remote -v                          # bağlı uzak repolar\ngit remote add origin \u003Curl>            # uzak repo ekle\n\ngit fetch origin                       # değişiklikleri indir, birleştirme\ngit pull                               # fetch + merge\ngit pull --rebase                      # fetch + rebase (daha temiz geçmiş)\n\ngit push                               # mevcut branch'i gönder\ngit push -u origin feature\u002Flogin       # ilk push, upstream'i ayarla\ngit push --force-with-lease            # rebase sonrası güvenli zorla push\ngit push origin --delete feature\u002Flogin # uzak branch'i sil\n",[20,695,696,709,731,735,747,757,769,773,783,799,811],{"__ignoreMap":52},[56,697,698,700,703,706],{"class":58,"line":59},[56,699,63],{"class":62},[56,701,702],{"class":66}," remote",[56,704,705],{"class":66}," -v",[56,707,708],{"class":130},"                          # bağlı uzak repolar\n",[56,710,711,713,715,717,720,722,724,726,728],{"class":58,"line":86},[56,712,63],{"class":62},[56,714,702],{"class":66},[56,716,239],{"class":66},[56,718,719],{"class":66}," origin",[56,721,168],{"class":76},[56,723,171],{"class":66},[56,725,175],{"class":174},[56,727,178],{"class":76},[56,729,730],{"class":130},"            # uzak repo ekle\n",[56,732,733],{"class":58,"line":105},[56,734,232],{"emptyLinePlaceholder":231},[56,736,737,739,742,744],{"class":58,"line":120},[56,738,63],{"class":62},[56,740,741],{"class":66}," fetch",[56,743,719],{"class":66},[56,745,746],{"class":130},"                       # değişiklikleri indir, birleştirme\n",[56,748,749,751,754],{"class":58,"line":248},[56,750,63],{"class":62},[56,752,753],{"class":66}," pull",[56,755,756],{"class":130},"                               # fetch + merge\n",[56,758,759,761,763,766],{"class":58,"line":261},[56,760,63],{"class":62},[56,762,753],{"class":66},[56,764,765],{"class":66}," --rebase",[56,767,768],{"class":130},"                      # fetch + rebase (daha temiz geçmiş)\n",[56,770,771],{"class":58,"line":274},[56,772,232],{"emptyLinePlaceholder":231},[56,774,775,777,780],{"class":58,"line":279},[56,776,63],{"class":62},[56,778,779],{"class":66}," push",[56,781,782],{"class":130},"                               # mevcut branch'i gönder\n",[56,784,785,787,789,792,794,796],{"class":58,"line":297},[56,786,63],{"class":62},[56,788,779],{"class":66},[56,790,791],{"class":66}," -u",[56,793,719],{"class":66},[56,795,480],{"class":66},[56,797,798],{"class":130},"       # ilk push, upstream'i ayarla\n",[56,800,801,803,805,808],{"class":58,"line":318},[56,802,63],{"class":62},[56,804,779],{"class":66},[56,806,807],{"class":66}," --force-with-lease",[56,809,810],{"class":130},"            # rebase sonrası güvenli zorla push\n",[56,812,814,816,818,820,823,825],{"class":58,"line":813},11,[56,815,63],{"class":62},[56,817,779],{"class":66},[56,819,719],{"class":66},[56,821,822],{"class":66}," --delete",[56,824,480],{"class":66},[56,826,827],{"class":130}," # uzak branch'i sil\n",[16,829,830,833,834,837],{},[20,831,832],{},"--force"," yerine her zaman ",[20,835,836],{},"--force-with-lease"," kullanın: bu, siz son baktığınızdan beri başkası push ettiyse işlemi durdurur.",[11,839,841],{"id":840},"_5-hataları-geri-almak","5. Hataları geri almak",[16,843,844],{},"Neyi geri almak istediğinize göre doğru komut değişir:",[604,846,847,856],{},[607,848,849],{},[610,850,851,854],{},[613,852,853],{},"Durum",[613,855,615],{},[623,857,858,868,878,888,898],{},[610,859,860,863],{},[628,861,862],{},"Dosyadaki kaydedilmemiş değişikliği at",[628,864,865],{},[20,866,867],{},"git restore dosya.java",[610,869,870,873],{},[628,871,872],{},"Dosyayı stage'den çıkar",[628,874,875],{},[20,876,877],{},"git restore --staged dosya.java",[610,879,880,883],{},[628,881,882],{},"Son commit'i geri al, değişiklikler kalsın",[628,884,885],{},[20,886,887],{},"git reset --soft HEAD~1",[610,889,890,893],{},[628,891,892],{},"Son commit'i ve değişiklikleri tamamen sil",[628,894,895],{},[20,896,897],{},"git reset --hard HEAD~1",[610,899,900,903],{},[628,901,902],{},"Push edilmiş commit'i güvenle geri al",[628,904,905],{},[20,906,907],{},"git revert \u003Ccommit>",[16,909,910,912,913,915,916,918],{},[20,911,22],{}," geçmişi yeniden yazar, ",[20,914,26],{}," ise geri alan yeni bir commit ekler; paylaşılan branch'lerde her zaman ",[20,917,26],{}," kullanın.",[16,920,921,922,925],{},"Yarım kalan işi kenara koymak için ",[20,923,924],{},"stash",":",[47,927,929],{"className":49,"code":928,"language":51,"meta":52,"style":52},"git stash                      # değişiklikleri sakla\ngit stash push -m \"yarım login\"   # isimle sakla\ngit stash list                 # saklananları listele\ngit stash pop                  # son stash'i geri getir ve sil\ngit stash apply stash@{1}      # belirli stash'i uygula\n",[20,930,931,941,961,973,985],{"__ignoreMap":52},[56,932,933,935,938],{"class":58,"line":59},[56,934,63],{"class":62},[56,936,937],{"class":66}," stash",[56,939,940],{"class":130},"                      # değişiklikleri sakla\n",[56,942,943,945,947,949,951,953,956,958],{"class":58,"line":86},[56,944,63],{"class":62},[56,946,937],{"class":66},[56,948,779],{"class":66},[56,950,287],{"class":66},[56,952,77],{"class":76},[56,954,955],{"class":66},"yarım login",[56,957,312],{"class":76},[56,959,960],{"class":130},"   # isimle sakla\n",[56,962,963,965,967,970],{"class":58,"line":105},[56,964,63],{"class":62},[56,966,937],{"class":66},[56,968,969],{"class":66}," list",[56,971,972],{"class":130},"                 # saklananları listele\n",[56,974,975,977,979,982],{"class":58,"line":120},[56,976,63],{"class":62},[56,978,937],{"class":66},[56,980,981],{"class":66}," pop",[56,983,984],{"class":130},"                  # son stash'i geri getir ve sil\n",[56,986,987,989,991,994,997,1001,1004],{"class":58,"line":248},[56,988,63],{"class":62},[56,990,937],{"class":66},[56,992,993],{"class":66}," apply",[56,995,996],{"class":66}," stash@{",[56,998,1000],{"class":999},"sbssI","1",[56,1002,1003],{"class":66},"}",[56,1005,1006],{"class":130},"      # belirli stash'i uygula\n",[16,1008,1009,1010,1013,1014,1017],{},"Son çare ",[20,1011,1012],{},"reflog","'dur: ",[20,1015,1016],{},"reset --hard"," sonrası \"kaybolan\" commit'ler bile burada görünür.",[47,1019,1021],{"className":49,"code":1020,"language":51,"meta":52,"style":52},"git reflog                     # HEAD'in gittiği her yer\ngit reset --hard HEAD@{2}      # o noktaya geri dön\n",[20,1022,1023,1033],{"__ignoreMap":52},[56,1024,1025,1027,1030],{"class":58,"line":59},[56,1026,63],{"class":62},[56,1028,1029],{"class":66}," reflog",[56,1031,1032],{"class":130},"                     # HEAD'in gittiği her yer\n",[56,1034,1035,1037,1040,1043,1046,1049,1051],{"class":58,"line":86},[56,1036,63],{"class":62},[56,1038,1039],{"class":66}," reset",[56,1041,1042],{"class":66}," --hard",[56,1044,1045],{"class":66}," HEAD@{",[56,1047,1048],{"class":999},"2",[56,1050,1003],{"class":66},[56,1052,1053],{"class":130},"      # o noktaya geri dön\n",[11,1055,1057],{"id":1056},"_6-zaman-kazandıran-ipuçları","6. Zaman kazandıran ipuçları",[16,1059,1060],{},"Sık yazdığınız komutlar için alias tanımlayın:",[47,1062,1064],{"className":49,"code":1063,"language":51,"meta":52,"style":52},"git config --global alias.st status\ngit config --global alias.co checkout\ngit config --global alias.lg \"log --oneline --graph --all\"\n# Artık: git st, git lg\n",[20,1065,1066,1080,1094,1112],{"__ignoreMap":52},[56,1067,1068,1070,1072,1074,1077],{"class":58,"line":59},[56,1069,63],{"class":62},[56,1071,67],{"class":66},[56,1073,70],{"class":66},[56,1075,1076],{"class":66}," alias.st",[56,1078,1079],{"class":66}," status\n",[56,1081,1082,1084,1086,1088,1091],{"class":58,"line":86},[56,1083,63],{"class":62},[56,1085,67],{"class":66},[56,1087,70],{"class":66},[56,1089,1090],{"class":66}," alias.co",[56,1092,1093],{"class":66}," checkout\n",[56,1095,1096,1098,1100,1102,1105,1107,1110],{"class":58,"line":105},[56,1097,63],{"class":62},[56,1099,67],{"class":66},[56,1101,70],{"class":66},[56,1103,1104],{"class":66}," alias.lg",[56,1106,77],{"class":76},[56,1108,1109],{"class":66},"log --oneline --graph --all",[56,1111,83],{"class":76},[56,1113,1114],{"class":58,"line":120},[56,1115,1116],{"class":130},"# Artık: git st, git lg\n",[16,1118,1119],{},"Birkaç küçük alışkanlık da büyük fark yaratır:",[1121,1122,1123,1141,1144,1151,1157],"ul",{},[1124,1125,1126,1129,1130,1133,1134,1133,1137,1140],"li",{},[20,1127,1128],{},".gitignore"," dosyasını projenin ilk commit'inde ekleyin (",[20,1131,1132],{},"target\u002F",", ",[20,1135,1136],{},"*.class",[20,1138,1139],{},".idea\u002F"," gibi).",[1124,1142,1143],{},"Commit mesajlarını emir kipiyle ve kısa yazın: \"Login validasyonunu ekle\".",[1124,1145,1146,1147,1150],{},"Hatanın hangi commit'le geldiğini bulmak için ",[20,1148,1149],{},"git bisect"," ile ikili arama yapın.",[1124,1152,1153,1154,918],{},"Belirli bir commit'i başka branch'e taşımak için ",[20,1155,1156],{},"git cherry-pick \u003Ccommit>",[1124,1158,1159,1160,1163,1164,673],{},"Sürümleri etiketlemek için ",[20,1161,1162],{},"git tag -a v1.0 -m \"İlk sürüm\""," ve ",[20,1165,1166],{},"git push --tags",[11,1168,1170],{"id":1169},"sonuç","Sonuç",[16,1172,1173,1174,1163,1176,1178,1179,1133,1181,1163,1183,1185],{},"Bu komutların çoğunu ilk haftada ezberleyeceksiniz; ",[20,1175,1012],{},[20,1177,26],{}," gibi kurtarıcılarıysa ihtiyaç anında hatırlamak için bu sayfaya döneceksiniz. En iyi pratik, risksiz bir deneme reposu açıp ",[20,1180,22],{},[20,1182,645],{},[20,1184,924],{}," komutlarını orada kırarak öğrenmektir.",[1187,1188,1189],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":52,"searchDepth":86,"depth":86,"links":1191},[1192,1193,1194,1195,1196,1197,1198,1199],{"id":13,"depth":86,"text":14},{"id":41,"depth":86,"text":42},{"id":187,"depth":86,"text":188},{"id":433,"depth":86,"text":434},{"id":676,"depth":86,"text":677},{"id":840,"depth":86,"text":841},{"id":1056,"depth":86,"text":1057},{"id":1169,"depth":86,"text":1170},"2026-10-09","Günlük işin yaklaşık 20 komutla döndüğü Git'in temel komutları — kullanım sırasıyla, örnekleriyle.","md",{},"\u002Ftr\u002Fblog\u002Fgit-commands-every-developer-should-know",{"title":6,"description":1201},"tr\u002Fblog\u002Fgit-commands-every-developer-should-know",[63,1208],"rehber","\u002Fen\u002Fblog\u002Fgit-commands-every-developer-should-know","ToEfL63Wnt_1S1oGz57CqihUwfETOe6nqRCddrC104A",{"id":1212,"title":1213,"body":1214,"date":1321,"description":1322,"extension":1202,"meta":1323,"navigation":231,"path":1324,"seo":1325,"stem":1326,"tags":1327,"translation":1329,"__hash__":1330},"pages_tr\u002Ftr\u002Fblog\u002Fcreate-a-web-project-with-tailwind-css.md","Tailwind CSS ile Web Projesi Oluşturmak",{"type":8,"value":1215,"toc":1312},[1216,1220,1228,1232,1238,1241,1245,1248,1254,1258,1261,1267,1271,1274,1280,1284,1287,1293,1297,1303,1306],[11,1217,1219],{"id":1218},"proje-klasörü-ve-nodejs-aktivasyonu","Proje klasörü ve Node.js aktivasyonu",[47,1221,1226],{"className":1222,"code":1224,"language":1225},[1223],"language-text","mkdir tailwind-demo\ncd tailwind-demo\nnpm init\n","text",[20,1227,1224],{"__ignoreMap":52},[11,1229,1231],{"id":1230},"tailwind-cssi-kur","Tailwind CSS'i kur",[47,1233,1236],{"className":1234,"code":1235,"language":1225},[1223],"npm install -D tailwindcss\nnpx tailwindcss init\n",[20,1237,1235],{"__ignoreMap":52},[16,1239,1240],{},"Bu adımla tailwind için dev dependency ve tailwind.config.css dosyası oluşacaktır.",[11,1242,1244],{"id":1243},"pathi-ayarla","Path'i ayarla",[16,1246,1247],{},"Dizini belirtmek için content alanını aşağıdaki gibi değiştir.",[47,1249,1252],{"className":1250,"code":1251,"language":1225},[1223],"content: [\".\u002Fsrc\u002F**\u002F*.{html,js}\"],\n",[20,1253,1251],{"__ignoreMap":52},[11,1255,1257],{"id":1256},"tailwind-directivelerini-ekle","Tailwind directive'lerini ekle",[16,1259,1260],{},"src klasörü ve input.css dosyasını oluştur. src\u002Finput.css dosyan olacak; sonra aşağıdaki satırları ekle.",[47,1262,1265],{"className":1263,"code":1264,"language":1225},[1223],"@tailwind base;\n@tailwind components;\n@tailwind utilities;\n",[20,1266,1264],{"__ignoreMap":52},[11,1268,1270],{"id":1269},"tailwind-css-watch-aracını-packagejsona-ekle","Tailwind CSS Watch aracını package.json'a ekle",[16,1272,1273],{},"Bu watch script'ini package.json dosyasındaki scripts bölümüne ekle. Projeyi daha sonra bu komutla başlatacağız.",[47,1275,1278],{"className":1276,"code":1277,"language":1225},[1223],"\"watch\": \"npx tailwindcss -i .\u002Fsrc\u002Finput.css -o .\u002Fdist\u002Foutput.css --watch\"\n",[20,1279,1277],{"__ignoreMap":52},[11,1281,1283],{"id":1282},"test-amaçlı-bir-html-sayfası-oluştur","Test amaçlı bir HTML sayfası oluştur",[16,1285,1286],{},"src klasörü altında index.html dosyası oluştur ve aşağıdaki satırları ekle.",[47,1288,1291],{"className":1289,"code":1290,"language":1225},[1223],"\u003C!doctype html>\n\u003Chtml>\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Clink href=\"\u002Fdist\u002Foutput.css\" rel=\"stylesheet\">\n\u003C\u002Fhead>\n\u003Cbody>\n  \u003Ch1 class=\"text-3xl font-bold underline\">\n    Hello world!\n  \u003C\u002Fh1>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[20,1292,1290],{"__ignoreMap":52},[11,1294,1296],{"id":1295},"projeyi-başlat","Projeyi başlat",[47,1298,1301],{"className":1299,"code":1300,"language":1225},[1223],"npm run watch\n",[20,1302,1300],{"__ignoreMap":52},[16,1304,1305],{},"index.html dosyasını LiveServer ya da benzeri bir test aracıyla tarayıcında aç. Tailwind destekli sayfayı göreceksin. Afiyet olsun.",[47,1307,1310],{"className":1308,"code":1309,"language":1225},[1223],"http:\u002F\u002F127.0.0.1:5500\u002Fsrc\u002Findex.html\n",[20,1311,1309],{"__ignoreMap":52},{"title":52,"searchDepth":86,"depth":86,"links":1313},[1314,1315,1316,1317,1318,1319,1320],{"id":1218,"depth":86,"text":1219},{"id":1230,"depth":86,"text":1231},{"id":1243,"depth":86,"text":1244},{"id":1256,"depth":86,"text":1257},{"id":1269,"depth":86,"text":1270},{"id":1282,"depth":86,"text":1283},{"id":1295,"depth":86,"text":1296},"2022-12-18","Tailwind CSS ile web projesi kurmak: proje oluşturma, config yolları, directive'ler ve CSS derleme.",{},"\u002Ftr\u002Fblog\u002Fcreate-a-web-project-with-tailwind-css",{"title":1213,"description":1322},"tr\u002Fblog\u002Fcreate-a-web-project-with-tailwind-css",[1328],"application servers","\u002Fen\u002Fblog\u002Fcreate-a-web-project-with-tailwind-css","s6yU-dbOuJjii-yPT06nTsPWfalbsWY0TbGmXqoe3Gk",{"id":1332,"title":1333,"body":1334,"date":1371,"description":1372,"extension":1202,"meta":1373,"navigation":231,"path":1374,"seo":1375,"stem":1376,"tags":1377,"translation":1378,"__hash__":1379},"pages_tr\u002Ftr\u002Fblog\u002Finstall-go-on-centos.md","CentOS Üzerine Go Kurmak",{"type":8,"value":1335,"toc":1366},[1336,1340,1346,1350,1356,1360],[11,1337,1339],{"id":1338},"versiyonu-kontrol-et","Versiyonu Kontrol Et",[47,1341,1344],{"className":1342,"code":1343,"language":1225},[1223],"go version\n",[20,1345,1343],{"__ignoreMap":52},[11,1347,1349],{"id":1348},"i̇ndir-ve-arşivi-aç","İndir ve Arşivi Aç",[47,1351,1354],{"className":1352,"code":1353,"language":1225},[1223],"wget https:\u002F\u002Fgo.dev\u002Fdl\u002Fgo1.18.5.linux-amd64.tar.gz\n\ntar -C \u002Fusr\u002Flocal -zxvf go1.18.5.linux-amd64.tar.gz\n",[20,1355,1353],{"__ignoreMap":52},[11,1357,1359],{"id":1358},"ortam-değişkenine-ekle-ve-etkinleştir","Ortam Değişkenine Ekle ve Etkinleştir",[47,1361,1364],{"className":1362,"code":1363,"language":1225},[1223],"vi \u002Fetc\u002Fprofile\n\nexport PATH=$PATH:\u002Fusr\u002Flocal\u002Fgo\u002Fbin\n\nsource \u002Fetc\u002Fprofile\n",[20,1365,1363],{"__ignoreMap":52},{"title":52,"searchDepth":86,"depth":86,"links":1367},[1368,1369,1370],{"id":1338,"depth":86,"text":1339},{"id":1348,"depth":86,"text":1349},{"id":1358,"depth":86,"text":1359},"2022-10-31","CentOS üzerine Go kurulumu: indirme, \u002Fusr\u002Flocal altına açma ve PATH ayarı.",{},"\u002Ftr\u002Fblog\u002Finstall-go-on-centos",{"title":1333,"description":1372},"tr\u002Fblog\u002Finstall-go-on-centos",[1328],"\u002Fen\u002Fblog\u002Finstall-go-on-centos","r5qc8FzYekK0Y-s6nLvqxRn321tJFN1Dd_Sj0pLZksE",{"id":1381,"title":1382,"body":1383,"date":1371,"description":1627,"extension":1202,"meta":1628,"navigation":231,"path":1629,"seo":1630,"stem":1631,"tags":1632,"translation":1634,"__hash__":1635},"pages_tr\u002Ftr\u002Fblog\u002Flinux-best-practices.md","Linux Best Practices",{"type":8,"value":1384,"toc":1625},[1385,1391,1409,1414,1441,1446,1466,1471,1503,1508,1535,1540,1552,1557,1566,1571,1584,1589,1622],[16,1386,1387],{},[1388,1389,1390],"strong",{},"CPU",[47,1392,1394],{"className":49,"code":1393,"language":51,"meta":52,"style":52},"lscpu\ncat \u002Fproc\u002Fcpuinfo\n",[20,1395,1396,1401],{"__ignoreMap":52},[56,1397,1398],{"class":58,"line":59},[56,1399,1400],{"class":62},"lscpu\n",[56,1402,1403,1406],{"class":58,"line":86},[56,1404,1405],{"class":62},"cat",[56,1407,1408],{"class":66}," \u002Fproc\u002Fcpuinfo\n",[16,1410,1411],{},[1388,1412,1413],{},"Memory Usage",[47,1415,1417],{"className":49,"code":1416,"language":51,"meta":52,"style":52},"free\ncat \u002Fproc\u002Fmeminfo\ntop\nhtop\n",[20,1418,1419,1424,1431,1436],{"__ignoreMap":52},[56,1420,1421],{"class":58,"line":59},[56,1422,1423],{"class":62},"free\n",[56,1425,1426,1428],{"class":58,"line":86},[56,1427,1405],{"class":62},[56,1429,1430],{"class":66}," \u002Fproc\u002Fmeminfo\n",[56,1432,1433],{"class":58,"line":105},[56,1434,1435],{"class":62},"top\n",[56,1437,1438],{"class":58,"line":120},[56,1439,1440],{"class":62},"htop\n",[16,1442,1443],{},[1388,1444,1445],{},"Disk Usage",[47,1447,1449],{"className":49,"code":1448,"language":51,"meta":52,"style":52},"df -h\ndu -h\n",[20,1450,1451,1459],{"__ignoreMap":52},[56,1452,1453,1456],{"class":58,"line":59},[56,1454,1455],{"class":62},"df",[56,1457,1458],{"class":66}," -h\n",[56,1460,1461,1464],{"class":58,"line":86},[56,1462,1463],{"class":62},"du",[56,1465,1458],{"class":66},[16,1467,1468],{},[1388,1469,1470],{},"OS Check",[47,1472,1474],{"className":49,"code":1473,"language":51,"meta":52,"style":52},"cat \u002Fetc\u002Fos-release\ncat \u002Fetc\u002Fsystem-release\nlsb_release -a\nsw_vers\n",[20,1475,1476,1483,1490,1498],{"__ignoreMap":52},[56,1477,1478,1480],{"class":58,"line":59},[56,1479,1405],{"class":62},[56,1481,1482],{"class":66}," \u002Fetc\u002Fos-release\n",[56,1484,1485,1487],{"class":58,"line":86},[56,1486,1405],{"class":62},[56,1488,1489],{"class":66}," \u002Fetc\u002Fsystem-release\n",[56,1491,1492,1495],{"class":58,"line":105},[56,1493,1494],{"class":62},"lsb_release",[56,1496,1497],{"class":66}," -a\n",[56,1499,1500],{"class":58,"line":120},[56,1501,1502],{"class":62},"sw_vers\n",[16,1504,1505],{},[1388,1506,1507],{},"Users",[47,1509,1511],{"className":49,"code":1510,"language":51,"meta":52,"style":52},"w\nwho\nusers\ncat \u002Fetc\u002Fpasswd\n",[20,1512,1513,1518,1523,1528],{"__ignoreMap":52},[56,1514,1515],{"class":58,"line":59},[56,1516,1517],{"class":62},"w\n",[56,1519,1520],{"class":58,"line":86},[56,1521,1522],{"class":62},"who\n",[56,1524,1525],{"class":58,"line":105},[56,1526,1527],{"class":62},"users\n",[56,1529,1530,1532],{"class":58,"line":120},[56,1531,1405],{"class":62},[56,1533,1534],{"class":66}," \u002Fetc\u002Fpasswd\n",[16,1536,1537],{},[1388,1538,1539],{},"Groups",[47,1541,1543],{"className":49,"code":1542,"language":51,"meta":52,"style":52},"cat \u002Fetc\u002Fgroup\n",[20,1544,1545],{"__ignoreMap":52},[56,1546,1547,1549],{"class":58,"line":59},[56,1548,1405],{"class":62},[56,1550,1551],{"class":66}," \u002Fetc\u002Fgroup\n",[16,1553,1554],{},[1388,1555,1556],{},"Change Password",[47,1558,1560],{"className":49,"code":1559,"language":51,"meta":52,"style":52},"passwd\n",[20,1561,1562],{"__ignoreMap":52},[56,1563,1564],{"class":58,"line":59},[56,1565,1559],{"class":62},[16,1567,1568],{},[1388,1569,1570],{},"Port Check",[47,1572,1574],{"className":49,"code":1573,"language":51,"meta":52,"style":52},"netstat -ant\n",[20,1575,1576],{"__ignoreMap":52},[56,1577,1578,1581],{"class":58,"line":59},[56,1579,1580],{"class":62},"netstat",[56,1582,1583],{"class":66}," -ant\n",[16,1585,1586],{},[1388,1587,1588],{},"Change Directory",[604,1590,1591,1600],{},[607,1592,1593],{},[610,1594,1595,1597],{},[613,1596,615],{},[613,1598,1599],{},"Açıklama",[623,1601,1602,1612],{},[610,1603,1604,1609],{},[628,1605,1606],{},[20,1607,1608],{},"cd \u002Fpath\u002Fto\u002Fyou\u002Fwant\u002Fto\u002Fgo",[628,1610,1611],{},"İstediğin dizine geçer",[610,1613,1614,1619],{},[628,1615,1616],{},[20,1617,1618],{},"cd -",[628,1620,1621],{},"Eski çalıştığın dizine geçer",[1187,1623,1624],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":52,"searchDepth":86,"depth":86,"links":1626},[],"Linux'ta sık kullanılan sistem komutları ve iyi pratikler: CPU, bellek, disk, kullanıcı ve port yönetimi.",{},"\u002Ftr\u002Fblog\u002Flinux-best-practices",{"title":1382,"description":1627},"tr\u002Fblog\u002Flinux-best-practices",[1633],"linux","\u002Fen\u002Fblog\u002Flinux-best-practices","uB2f4yQxUUOs4f9D0PqrQxIfrhrcuMaa_M8lcSM9ecQ",{"id":1637,"title":1638,"body":1639,"date":1714,"description":1715,"extension":1202,"meta":1716,"navigation":231,"path":1717,"seo":1718,"stem":1719,"tags":1720,"translation":1721,"__hash__":1722},"pages_tr\u002Ftr\u002Fblog\u002Fsftp-configuration-on-centos.md","CentOS Üzerinde SFTP Konfigürasyonu",{"type":8,"value":1640,"toc":1706},[1641,1652,1656,1662,1666,1672,1676,1682,1686,1692,1696,1702],[16,1642,1643,1644,1651],{},"CentOS üzerinde SFTP konfigürasyonu için bir cheat sheet. Uzun hali ",[1645,1646,1650],"a",{"href":1647,"rel":1648},"https:\u002F\u002Fwww.digitalocean.com\u002Fcommunity\u002Ftutorials\u002Fhow-to-enable-sftp-without-shell-access-on-centos-7",[1649],"nofollow","DigitalOcean","'da.",[11,1653,1655],{"id":1654},"kullanıcı-oluştur","Kullanıcı Oluştur",[47,1657,1660],{"className":1658,"code":1659,"language":1225},[1223],"sudo adduser xfiles\nsudo passwd xfiles\n",[20,1661,1659],{"__ignoreMap":52},[11,1663,1665],{"id":1664},"dosya-transferi-i̇çin-dizin-oluştur","Dosya Transferi İçin Dizin Oluştur",[47,1667,1670],{"className":1668,"code":1669,"language":1225},[1223],"sudo mkdir -p \u002Fvar\u002Fsftp\u002Fuploads\nsudo chown root:root \u002Fvar\u002Fsftp\nsudo chmod 755 \u002Fvar\u002Fsftp\nsudo chown xfiles:xfiles \u002Fvar\u002Fsftp\u002Fuploads\n",[20,1671,1669],{"__ignoreMap":52},[11,1673,1675],{"id":1674},"ssh-daemonu-ayarla","SSH Daemon'u Ayarla",[47,1677,1680],{"className":1678,"code":1679,"language":1225},[1223],"sudo vi \u002Fetc\u002Fssh\u002Fsshd_config\n\nMatch User xfiles\nForceCommand internal-sftp\nPasswordAuthentication yes\nChrootDirectory \u002Fvar\u002Fsftp\nPermitTunnel no\nAllowAgentForwarding no\nAllowTcpForwarding no\nX11Forwarding no\n",[20,1681,1679],{"__ignoreMap":52},[11,1683,1685],{"id":1684},"ssh-daemonu-yeniden-başlat","SSH Daemon'u Yeniden Başlat",[47,1687,1690],{"className":1688,"code":1689,"language":1225},[1223],"sudo systemctl restart sshd\n",[20,1691,1689],{"__ignoreMap":52},[11,1693,1695],{"id":1694},"sunucuda-test-et","Sunucuda Test Et",[47,1697,1700],{"className":1698,"code":1699,"language":1225},[1223],"sftp xfiles@localhost\n",[20,1701,1699],{"__ignoreMap":52},[11,1703,1705],{"id":1704},"tamamdır","Tamamdır!",{"title":52,"searchDepth":86,"depth":86,"links":1707},[1708,1709,1710,1711,1712,1713],{"id":1654,"depth":86,"text":1655},{"id":1664,"depth":86,"text":1665},{"id":1674,"depth":86,"text":1675},{"id":1684,"depth":86,"text":1685},{"id":1694,"depth":86,"text":1695},{"id":1704,"depth":86,"text":1705},"2021-06-20","CentOS'ta sshd_config ile sadece SFTP erişimi olan bir kullanıcı ve yükleme dizini ayarlamak.",{},"\u002Ftr\u002Fblog\u002Fsftp-configuration-on-centos",{"title":1638,"description":1715},"tr\u002Fblog\u002Fsftp-configuration-on-centos",[1328],"\u002Fen\u002Fblog\u002Fsftp-configuration-on-centos","XZDbcirneCcaBHHhYF5gBqjunZW_DJfwPQAQg1wjrkA",{"id":1724,"title":1725,"body":1726,"date":1751,"description":1752,"extension":1202,"meta":1753,"navigation":231,"path":1754,"seo":1755,"stem":1756,"tags":1757,"translation":1759,"__hash__":1760},"pages_tr\u002Ftr\u002Fblog\u002Finstall-java-on-centos-7-rhel-7.md","CentOS 7 & Red Hat Enterprise Linux 7 Java Kurulumu",{"type":8,"value":1727,"toc":1749},[1728],[1729,1730,1731,1734,1737,1740,1743,1746],"ol",{},[1124,1732,1733],{},"sudo -i",[1124,1735,1736],{},"yum update",[1124,1738,1739],{},"yum list available java*",[1124,1741,1742],{},"yum install java-11-openjdk",[1124,1744,1745],{},"alternatives –config java",[1124,1747,1748],{},"choose you want",{"title":52,"searchDepth":86,"depth":86,"links":1750},[],"2019-11-08","CentOS 7 ve RHEL 7 üzerine yum ile Java 11 (OpenJDK) kurulumu ve alternatif sürüm seçimi — adım adım kısa rehber.",{},"\u002Ftr\u002Fblog\u002Finstall-java-on-centos-7-rhel-7",{"title":1725,"description":1752},"tr\u002Fblog\u002Finstall-java-on-centos-7-rhel-7",[1758,1633],"java","\u002Fen\u002Fblog\u002Finstall-java-on-centos-7-rhel-7","zlGdNTFz2BIGtQs49dg0lri3yMc2WJ5Jr-o6y8QC01E",{"id":1762,"title":1763,"body":1764,"date":1751,"description":1816,"extension":1202,"meta":1817,"navigation":231,"path":1818,"seo":1819,"stem":1820,"tags":1821,"translation":1822,"__hash__":1823},"pages_tr\u002Ftr\u002Fblog\u002Frhel-remote-desktop-with-vnc.md","VNC ile RHEL Uzak Masaüstü",{"type":8,"value":1765,"toc":1814},[1766,1805,1811],[1729,1767,1768,1774,1780,1786,1796,1802],{},[1124,1769,1770,1771],{},"Önce bir desktop uygulaması yüklememiz lazım.\n",[20,1772,1773],{},"yum groupinstall \"GNOME Desktop\"",[1124,1775,1776,1777],{},"TigerVNC sunucusunu fontlarıyla birlikte yüklemeliyiz.\n",[20,1778,1779],{},"yum install tigervnc-server xorg-x11-fonts-Type1",[1124,1781,1782,1783],{},"5903 portundan yayın yapabilmesi için bir service oluşturalım.\n",[20,1784,1785],{},"cp \u002Flib\u002Fsystemd\u002Fsystem\u002Fvncserver@.service \u002Fetc\u002Fsystemd\u002Fsystem\u002Fvncserver@:3.service",[1124,1787,1788,1789],{},"Kullanıcı bilgisini tüm ",[1790,1791,1792,1793],"user",{}," alanlarını değiştirerek güncelleyelim.\n",[20,1794,1795],{},"vi \u002Fetc\u002Fsystemd\u002Fsystem\u002Fvncserver@:3.service",[1124,1797,1798,1799],{},"İlgili kullanıcıya geçiş yapıp vncserver için kullanıcı ve şifre oluşturalım.\n",[20,1800,1801],{},"vncserver",[1124,1803,1804],{},"Aşağıdaki komutlarla da deamonu enable edip başlatalım",[47,1806,1809],{"className":1807,"code":1808,"language":1225},[1223],"systemctl daemon-reload\nsystemctl start vncserver@:3.service\nsystemctl enable vncserver@:3.service\n",[20,1810,1808],{"__ignoreMap":52},[16,1812,1813],{},"Artık VNC viewer ile bağlanabiliriz 🙂",{"title":52,"searchDepth":86,"depth":86,"links":1815},[],"VNC ile RHEL sunucuya uzak masaüstü bağlantısı kurma adımları.",{},"\u002Ftr\u002Fblog\u002Frhel-remote-desktop-with-vnc",{"title":1763,"description":1816},"tr\u002Fblog\u002Frhel-remote-desktop-with-vnc",[1633],"\u002Fen\u002Fblog\u002Frhel-remote-desktop-with-vnc","OXWAi8mJI8A_L5AMUgcV_evUdxnAaqRry63r-9ZrEQw",{"id":1825,"title":1826,"body":1827,"date":1924,"description":1925,"extension":1202,"meta":1926,"navigation":231,"path":1927,"seo":1928,"stem":1929,"tags":1930,"translation":1931,"__hash__":1932},"pages_tr\u002Ftr\u002Fblog\u002Flinux-x11-forwarding.md","Linux X11Forwarding",{"type":8,"value":1828,"toc":1922},[1829,1832,1919],[16,1830,1831],{},"Linux sunucu ekranını kendi masaüstümüze çekmek için X11Forwarding açmamız lazım. Aşağıdaki komutlarla açabiliriz.",[47,1833,1835],{"className":49,"code":1834,"language":51,"meta":52,"style":52},"cat \u002Fetc\u002Fssh\u002Fsshd_config\nvi \u002Fetc\u002Fssh\u002Fsshd_config\n\n# sshd_config içinde:\nAddressFamily inet\nX11Forwarding yes\n\nservice sshd restart\n\ntouch \u002Fhome\u002Fuser\u002F.Xauthority\nxauth list\nxauth add\n",[20,1836,1837,1844,1851,1855,1860,1868,1876,1880,1891,1895,1903,1911],{"__ignoreMap":52},[56,1838,1839,1841],{"class":58,"line":59},[56,1840,1405],{"class":62},[56,1842,1843],{"class":66}," \u002Fetc\u002Fssh\u002Fsshd_config\n",[56,1845,1846,1849],{"class":58,"line":86},[56,1847,1848],{"class":62},"vi",[56,1850,1843],{"class":66},[56,1852,1853],{"class":58,"line":105},[56,1854,232],{"emptyLinePlaceholder":231},[56,1856,1857],{"class":58,"line":120},[56,1858,1859],{"class":130},"# sshd_config içinde:\n",[56,1861,1862,1865],{"class":58,"line":248},[56,1863,1864],{"class":62},"AddressFamily",[56,1866,1867],{"class":66}," inet\n",[56,1869,1870,1873],{"class":58,"line":261},[56,1871,1872],{"class":62},"X11Forwarding",[56,1874,1875],{"class":66}," yes\n",[56,1877,1878],{"class":58,"line":274},[56,1879,232],{"emptyLinePlaceholder":231},[56,1881,1882,1885,1888],{"class":58,"line":279},[56,1883,1884],{"class":62},"service",[56,1886,1887],{"class":66}," sshd",[56,1889,1890],{"class":66}," restart\n",[56,1892,1893],{"class":58,"line":297},[56,1894,232],{"emptyLinePlaceholder":231},[56,1896,1897,1900],{"class":58,"line":318},[56,1898,1899],{"class":62},"touch",[56,1901,1902],{"class":66}," \u002Fhome\u002Fuser\u002F.Xauthority\n",[56,1904,1905,1908],{"class":58,"line":813},[56,1906,1907],{"class":62},"xauth",[56,1909,1910],{"class":66}," list\n",[56,1912,1914,1916],{"class":58,"line":1913},12,[56,1915,1907],{"class":62},[56,1917,1918],{"class":66}," add\n",[1187,1920,1921],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":52,"searchDepth":86,"depth":86,"links":1923},[],"2019-11-05","SSH üzerinden X11Forwarding açarak Linux sunucunun grafik ekranını yerel masaüstüne taşımak.",{},"\u002Ftr\u002Fblog\u002Flinux-x11-forwarding",{"title":1826,"description":1925},"tr\u002Fblog\u002Flinux-x11-forwarding",[1328],"\u002Fen\u002Fblog\u002Flinux-x11-forwarding","T_xpFJo2xHt-9Vm4LXrxjf1-AvXjSwaiYEeePygReWU",{"id":1934,"title":1935,"body":1936,"date":2134,"description":2135,"extension":1202,"meta":2136,"navigation":231,"path":2137,"seo":2138,"stem":2139,"tags":2140,"translation":2142,"__hash__":2143},"pages_tr\u002Ftr\u002Fblog\u002Fdocker-cheat-sheet.md","Docker Cheat Sheet",{"type":8,"value":1937,"toc":2121},[1938,1942,1948,1952,1957,1961,1967,1971,1977,1981,1986,1990,1995,1999,2005,2009,2014,2018,2023,2027,2032,2036,2041,2046,2051,2056,2061,2066,2071,2076,2081,2086,2091,2096,2101,2106,2111,2116],[11,1939,1941],{"id":1940},"docker-versiyonu-ve-bilgisi","Docker Versiyonu ve Bilgisi",[47,1943,1946],{"className":1944,"code":1945,"language":1225},[1223],"docker -v\ndocker info\n",[20,1947,1945],{"__ignoreMap":52},[11,1949,1951],{"id":1950},"i̇majları-listele","İmajları Listele",[16,1953,1954],{},[20,1955,1956],{},"docker images",[11,1958,1960],{"id":1959},"containerları-listele-çalışanlar-hepsi","Container'ları Listele (çalışanlar, hepsi)",[47,1962,1965],{"className":1963,"code":1964,"language":1225},[1223],"docker container ls\ndocker container ls --all\ndocker ps\ndocker ps -a\n",[20,1966,1964],{"__ignoreMap":52},[11,1968,1970],{"id":1969},"yeni-container-çalıştır","Yeni Container Çalıştır",[47,1972,1975],{"className":1973,"code":1974,"language":1225},[1223],"docker run \u003Cimage-name>\ndocker run --name \u003Cname> \u003Cimage-name>\ndocker run -p \u003Couter-port>:\u003Cinner-port> \u003Cimage-name>\ndocker run -d -p \u003Couter-port>:\u003Cinner-port> \u003Cimage-name>\n",[20,1976,1974],{"__ignoreMap":52},[11,1978,1980],{"id":1979},"container-başlat","Container Başlat",[16,1982,1983],{},[20,1984,1985],{},"docker start \u003Cname>",[11,1987,1989],{"id":1988},"container-durdur","Container Durdur",[16,1991,1992],{},[20,1993,1994],{},"docker stop \u003Cname>",[11,1996,1998],{"id":1997},"container-sil","Container Sil",[47,2000,2003],{"className":2001,"code":2002,"language":1225},[1223],"docker rm \u003Ccontainer-id>\ndocker rm -f \u003Ccontainer-id>\n",[20,2004,2002],{"__ignoreMap":52},[11,2006,2008],{"id":2007},"i̇maj-sil","İmaj Sil",[16,2010,2011],{},[20,2012,2013],{},"docker rmi \u003Cimage-name>",[11,2015,2017],{"id":2016},"durdurulmuş-tüm-containerları-sil","Durdurulmuş Tüm Container'ları Sil",[16,2019,2020],{},[20,2021,2022],{},"docker container prune",[11,2024,2026],{"id":2025},"kullanılmayan-tüm-i̇majları-sil","Kullanılmayan Tüm İmajları Sil",[16,2028,2029],{},[20,2030,2031],{},"docker image prune -a",[11,2033,2035],{"id":2034},"bash-ile-dockera-bağlan","Bash ile Docker'a Bağlan",[16,2037,2038],{},[20,2039,2040],{},"docker exec -it \u003Cname> bash",[16,2042,2043],{},[1388,2044,2045],{},"Docker'ı Kur",[16,2047,2048],{},[20,2049,2050],{},"yum install docker",[16,2052,2053],{},[1388,2054,2055],{},"Docker Daemon'unu Başlat",[16,2057,2058],{},[20,2059,2060],{},"systemctl start docker",[16,2062,2063],{},[1388,2064,2065],{},"Postgres Container Oluştur",[16,2067,2068],{},[20,2069,2070],{},"docker run -d --name my-postgres -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres",[16,2072,2073],{},[1388,2074,2075],{},"Keycloak Sunucusu Oluştur",[16,2077,2078],{},[20,2079,2080],{},"docker run -d --name my-keycloak -e KEYCLOAK_USER=keyadmin -e KEYCLOAK_PASSWORD=keypass -p 7000:8080 jboss\u002Fkeycloak",[16,2082,2083],{},[1388,2084,2085],{},"Konga Admin GUI Oluştur",[16,2087,2088],{},[20,2089,2090],{},"docker run -d --name my-konga -p 1337:1337 -e \"TOKEN_SECRET=somerandomstring\" -e \"DB_ADAPTER=postgres\" -e \"DB_HOST=kong-database\" -e \"DB_PORT=5432\" -e \"DB_USER=kong\" -e \"DB_PASSWORD=kong\" -e \"DB_DATABASE=konga\" -e \"NODE_ENV=development\" --net=kong-net pantsel\u002Fkonga",[16,2092,2093],{},[1388,2094,2095],{},"Docker Network Oluştur",[16,2097,2098],{},[20,2099,2100],{},"docker network create --driver bridge kong-net",[16,2102,2103],{},[1388,2104,2105],{},"Docker Container'ı Network'e Bağla",[16,2107,2108],{},[20,2109,2110],{},"docker network connect kong-net kong-database",[16,2112,2113],{},[1388,2114,2115],{},"Docker Compose Pull",[16,2117,2118],{},[20,2119,2120],{},"docker-compose pull && docker-compose down && docker-compose up -d",{"title":52,"searchDepth":86,"depth":86,"links":2122},[2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133],{"id":1940,"depth":86,"text":1941},{"id":1950,"depth":86,"text":1951},{"id":1959,"depth":86,"text":1960},{"id":1969,"depth":86,"text":1970},{"id":1979,"depth":86,"text":1980},{"id":1988,"depth":86,"text":1989},{"id":1997,"depth":86,"text":1998},{"id":2007,"depth":86,"text":2008},{"id":2016,"depth":86,"text":2017},{"id":2025,"depth":86,"text":2026},{"id":2034,"depth":86,"text":2035},"2019-09-17","Docker cheat sheet: imajlar, container'lar, run flag'leri, prune, exec, network'ler ve sık kullanılan tarifler.",{},"\u002Ftr\u002Fblog\u002Fdocker-cheat-sheet",{"title":1935,"description":2135},"tr\u002Fblog\u002Fdocker-cheat-sheet",[2141],"docker","\u002Fen\u002Fblog\u002Fdocker-cheat-sheet","1hsfHUuq7hh0jA8WnyXHMnLKX6MJOpudYtbIyantiCE",{"id":2145,"title":2146,"body":2147,"date":2200,"description":2201,"extension":1202,"meta":2202,"navigation":231,"path":2203,"seo":2204,"stem":2205,"tags":2206,"translation":2207,"__hash__":2208},"pages_tr\u002Ftr\u002Fblog\u002Fcreate-ssh-key-pair.md","SSH Key Pair Oluşturmak",{"type":8,"value":2148,"toc":2197},[2149,2156,2160,2171,2194],[16,2150,2151,2152,2155],{},"Güvenlik amaçlı bağlandığım yerlere çoğunlukla “username”\u002F”password” kullanmaktansa SSH Key Pair oluşturarak “Public Key”i paylaşıp bağlanmayı tercih ediyorum.\nBu yazıda da ",[1388,2153,2154],{},"Mac OS"," işletim sistemi için nasıl anahtar çifti oluşturulur detaylı bir şekilde anlatmaya çalışacağım.",[11,2157,2159],{"id":2158},"ssh-key-pair-nedir-güvenli-kabuk-anahtar-çifti","SSH Key Pair Nedir? (Güvenli Kabuk Anahtar Çifti)",[16,2161,2162,2163,2166,2167],{},"Secure Shell (Güvenli Kabuk), güvensiz bir ağ üzerinde güvenli haberleşmeye olanak sağlayan bir kriptografik ağ protokolüdür.\nAmacım şu an private-public key pair (özel-genel anahtar çifti) oluşturmak olduğu için “asimetrik şifreleme” ile RSA anahtar çifti üreteceğim. Aşağıda ",[1388,2164,2165],{},"ssh-keygen"," aracının özelliklerini bulabilirsiniz.\n",[2168,2169],"img",{"alt":52,"src":2170},"\u002Fimages\u002Fcreate-ssh-key-pair-Screenshot-2019-06-26-at-18.10.14.png",[1729,2172,2173,2179,2182,2185,2188],{},[1124,2174,2175,2176],{},"Terminal üzerindeki aşağıdaki komutu çalıştıracağım. RSA anahtar çifti oluşturmama yardımcı olacak.\n",[20,2177,2178],{},"ssh-keygen -t rsa",[1124,2180,2181],{},"Hangi dosyaya kaydetmek istediğimizi soracak, istediğiniz ismi verebilirsiniz.",[1124,2183,2184],{},"Bu adımdam sonra isterseniz bu anahtarları kullanmak için şifre koyabilirsiniz.",[1124,2186,2187],{},"Çıktı aşağıdaki gibi olacaktır. Sizin bir private bir de public olmak üzere iki anahtar oluşturuldu. Private olanı kimse ile paylaşmamanız lazım.",[1124,2189,2190,2191],{},"Public olanının (sonu .pub ile bitiyor) içinden anahtarı alıp artık paylaşabilirsiniz.",[2168,2192],{"alt":52,"src":2193},"\u002Fimages\u002Fcreate-ssh-key-pair-Screenshot-2019-06-26-at-19.33.20.png",[16,2195,2196],{},"Kolay gelsin.",{"title":52,"searchDepth":86,"depth":86,"links":2198},[2199],{"id":2158,"depth":86,"text":2159},"2019-06-26","ssh-keygen ile SSH key pair oluşturma ve sunucuya parolasız bağlantı kurma adımları.",{},"\u002Ftr\u002Fblog\u002Fcreate-ssh-key-pair",{"title":2146,"description":2201},"tr\u002Fblog\u002Fcreate-ssh-key-pair",[1328],"\u002Fen\u002Fblog\u002Fcreate-ssh-key-pair","J4m12t8PBLriTICjaAjlXaX_DWyQW3Sz7Juu2CIvGok",{"id":2210,"title":2211,"body":2212,"date":2406,"description":2407,"extension":1202,"meta":2408,"navigation":231,"path":2409,"seo":2410,"stem":2411,"tags":2412,"translation":2413,"__hash__":2414},"pages_tr\u002Ftr\u002Fblog\u002Fjava-11-12-13-and-beyond.md","Java 11-12-13 ve …",{"type":8,"value":2213,"toc":2400},[2214,2217,2231,2234,2238,2241,2247,2250,2254,2257,2274,2287,2301,2305,2316,2323,2330,2340,2346,2352,2364,2370,2374,2377,2380,2383,2385,2388],[16,2215,2216],{},"Merhabalar, Java 11 ile beraber Java kullanan herkesin hayatında önemli değişiklikler olacak. Bu yazımda onlardan bahsedeceğim.\nJDK (Java Development Kit) artık her 6 ayda bir güncellenecek, bunlar da yıl içinde Mart ve Eylül aylarına denk geliyor. LTS (Long Term Support) dediğimiz “Uzun Dönem Destek” paketleri de 3 yılda bir çıkacak.",[1121,2218,2219,2222,2225,2228],{},[1124,2220,2221],{},"2018 Eylül – Java 11",[1124,2223,2224],{},"2021 Eylül – Java 17",[1124,2226,2227],{},"2024 Eylül – Java 23",[1124,2229,2230],{},"… gibi",[16,2232,2233],{},"Ve tabi ki ücretini ödeyen 3 seneden sonra da desteğini alabilir 🙂",[11,2235,2237],{"id":2236},"lisanslama-oracle-jdk-open-jdk","Lisanslama – Oracle JDK & Open JDK",[16,2239,2240],{},"Java 11 ile artık karşımızda Oracle JDK ve Open JDK kavramları var. Bundan sonra",[2242,2243,2244],"blockquote",{},[16,2245,2246],{},"Oracle JDK – Oracle Binary Code License Aggrement\nOpen JDK – GPL2",[16,2248,2249],{},"ile lisansları ile hayatımızda yer alacak. GPL2 tamamen açık kaynak ve ücretsiz. Oracle Binary Code Lisansı ise geliştirme yaparken yine ücretsiz kullanılabilecek ama üretim (production) ortamlarına ücretli olacak.",[11,2251,2253],{"id":2252},"modası-geçen-ve-kaldırılanlar","Modası Geçen ve Kaldırılanlar",[16,2255,2256],{},"Enterprise API’lerden aşağıdakiler JDK içerisinden çıkarıldı.",[1121,2258,2259,2262,2265,2268,2271],{},[1124,2260,2261],{},"JAXB – xml binding",[1124,2263,2264],{},"JAX-WS – xml web services and endpoint technology",[1124,2266,2267],{},"CORBA – distributed object technology",[1124,2269,2270],{},"JTA – java transaction api",[1124,2272,2273],{},"JavaBeans Activation",[16,2275,2276,2277,2281,2282],{},"Detayına şu adresten ulaşabilirsiniz; ",[1645,2278,2279],{"href":2279,"rel":2280},"https:\u002F\u002Fopenjdk.java.net\u002Fjeps\u002F320",[1649],"\nAyrıca Thread sınıfından destroy() ve stop(Throwable obj) metodları çıkarıldı.\nJDK 10 – ",[1645,2283,2286],{"href":2284,"rel":2285},"https:\u002F\u002Fdocs.oracle.com\u002Fjavase\u002F10\u002Fdocs\u002Fapi\u002Fjava\u002Flang\u002FThread.html",[1649],"Thread",[16,2288,2289,2290,2294,2295,2300],{},"JDK 11 – ",[1645,2291,2286],{"href":2292,"rel":2293},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F11\u002Fdocs\u002Fapi\u002Fjava.base\u002Fjava\u002Flang\u002FThread.html",[1649],"\nJavaFX jdk içerisinden çıkarılarak ayrı bir kütüphane haline getirildi, adı da ",[1645,2296,2299],{"href":2297,"rel":2298},"https:\u002F\u002Fopenjfx.io\u002F",[1649],"OpenJFX","oldu.",[11,2302,2304],{"id":2303},"dil-ve-kütüphane-yenilikleri","Dil ve Kütüphane Yenilikleri",[16,2306,2307,2308,2311],{},"JDK 9 ve 10’da deneysel olarak bulunan HTTP isteği gönderip yanıtını almak için kullanılabilen HttpClient sınıfı artık canlıda. HTTP2 desteği sunduğundan dolayı çoğu yeni proje için Java 11’e geçiş sebebi 🙂 API’yi tanımak için aşağıya bağlantılarını ekledim.\n",[2168,2309],{"alt":52,"src":2310},"\u002Fimages\u002Fjava-11-12-13-and-beyond-httpclient-1024x422.png",[1645,2312,2315],{"href":2313,"rel":2314},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F11\u002Fdocs\u002Fapi\u002Fjava.net.http\u002Fjava\u002Fnet\u002Fhttp\u002FHttpClient.html",[1649],"HttpClient API",[16,2317,2318],{},[1645,2319,2322],{"href":2320,"rel":2321},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F11\u002Fdocs\u002Fapi\u002Fjava.net.http\u002Fjava\u002Fnet\u002Fhttp\u002FHttpRequest.html",[1649],"HttpRequest API",[16,2324,2325],{},[1645,2326,2329],{"href":2327,"rel":2328},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F11\u002Fdocs\u002Fapi\u002Fjava.net.http\u002Fjava\u002Fnet\u002Fhttp\u002FHttpResponse.html",[1649],"HttpResponse API",[16,2331,2332,2333,2336,2339],{},"String sınıfına yeni kullanışlı metodlar eklendi.\n",[2168,2334],{"alt":52,"src":2335},"\u002Fimages\u002Fjava-11-12-13-and-beyond-string-246x300.png",[1388,2337,2338],{},"repeat","() – herhangi bir string i tekrarlamak için",[16,2341,2342,2345],{},[1388,2343,2344],{},"isBlank","() – string in boş olup olmadığına bakar",[16,2347,2348,2351],{},[1388,2349,2350],{},"strip","() – string’in önü ve arkasındaki boşluk karakterlerini trim() metodundan farklı olarak unicode karakterleri ile temizler",[16,2353,2354,2357,2358,2363],{},[1388,2355,2356],{},"lines","() – string in içindeki satırları “\\r\\n” yani line feed ve carriage return karakterleri stream olarak almamızı sağlar\nAyrıca ",[1645,2359,2362],{"href":2360,"rel":2361},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F11\u002Fdocs\u002Fapi\u002Fjava.base\u002Fjava\u002Fnio\u002Ffile\u002FFiles.html",[1649],"Files","sınıfına aşağıdaki yeni metodlar gelmiş;",[16,2365,2366,2369],{},[2168,2367],{"alt":52,"src":2368},"\u002Fimages\u002Fjava-11-12-13-and-beyond-files.png","Unicode 10 desteği de yine JDK 11 ile geliyor.\nBen burada sadece en çok kullanabileceklerimi yazdım. Tam listeyi yazının en altına ekliyorum.",[11,2371,2373],{"id":2372},"performans-ve-güvenlik-i̇yileştirmeleri","Performans ve Güvenlik İyileştirmeleri",[16,2375,2376],{},"G1 Garbage Collector ile Java 11, Java 8’e göre %60 daha iyi performans sergiliyor. Bu da yazdığımız kodda herhangi bir değişiklik yapmadan Java 11’e geçirsek bile daha iyi bir performans alabileceğimizin göstergesi.\nAyrıca Epsilon GC ve Z GC adında iki yeni GC eklendi. İkisi de henüz deneysel.\nEpsilon Garbage Collector, performans ölçüm amaçlı kullanılabilir, aşağıdaki parametrelerle açılabiliyor.",[16,2378,2379],{},"XX:+UnlockExperimentalVMOptions",[16,2381,2382],{},"XX:+UseEpsilonGC\nZ Garbage Collector, multi-terabytes heap e çıkmayı sağlıyor. Sadece 64 bit Linux makinelerde çalışıyor.",[16,2384,2379],{},[16,2386,2387],{},"XX:+UseZGC\nGüvenlik konusuna gelirsek, TLS 1.3 desteği sağlanmış ve eski güvenliğini kaybetmiş kriptografik algoritmalar çıkarılmış ve yeni daha güvenli algoritmalar eklenmiş. Handshake sırasındaki ilk mesaj hariç hepsi şifrelenmiş. Detaylarına aşağıdaki linkten erişilebilir.",[16,2389,2390,2394,2395],{},[1645,2391,2392],{"href":2392,"rel":2393},"https:\u002F\u002Fopenjdk.java.net\u002Fjeps\u002F332",[1649],"\nSon olarak Oracle’ın açıkladığı",[1645,2396,2399],{"href":2397,"rel":2398},"https:\u002F\u002Fwww.oracle.com\u002Ftechnetwork\u002Fjava\u002Fjavase\u002F11-relnote-issues-5012449.html",[1649],"Java 11 değişiklikler listesi bağlantıdadır.",{"title":52,"searchDepth":86,"depth":86,"links":2401},[2402,2403,2404,2405],{"id":2236,"depth":86,"text":2237},{"id":2252,"depth":86,"text":2253},{"id":2303,"depth":86,"text":2304},{"id":2372,"depth":86,"text":2373},"2019-02-13","Java 11 ve sonrasındaki sürümlerde gelen yenilikler: yeni sürüm döngüsü ve dikkat çeken özellikler.",{},"\u002Ftr\u002Fblog\u002Fjava-11-12-13-and-beyond",{"title":2211,"description":2407},"tr\u002Fblog\u002Fjava-11-12-13-and-beyond",[1758],"\u002Fen\u002Fblog\u002Fjava-11-12-13-and-beyond","jeVAu_8gMdI7V2-AEbJKnUoslxcG07M9PpwuHptBFgo",{"id":2416,"title":2417,"body":2418,"date":2633,"description":2634,"extension":1202,"meta":2635,"navigation":231,"path":2636,"seo":2637,"stem":2638,"tags":2639,"translation":2641,"__hash__":2642},"pages_tr\u002Ftr\u002Fblog\u002Finstall-mysql-on-centos-7.md","CentOS 7 Üzerine MySQL Kurmak",{"type":8,"value":2419,"toc":2631},[2420,2423,2439,2447,2454,2472,2475,2492,2495,2513,2516,2531,2534,2537,2558,2561,2577,2580,2608,2611,2625,2628],[16,2421,2422],{},"CentOS package manager olarak yum kullanıyor. O sebeple önce bunu güncellememiz lazım. Aşağıdaki komutla yapabiliriz.",[47,2424,2426],{"className":49,"code":2425,"language":51,"meta":52,"style":52},"sudo yum update\n",[20,2427,2428],{"__ignoreMap":52},[56,2429,2430,2433,2436],{"class":58,"line":59},[56,2431,2432],{"class":62},"sudo",[56,2434,2435],{"class":66}," yum",[56,2437,2438],{"class":66}," update\n",[16,2440,2441,2442,2446],{},"Güncelleme bittikten sonra indireceğimiz mysql server versiyonunu belirlememiz lazım. Mysql download sayfasından (",[1645,2443,2444],{"href":2444,"rel":2445},"http:\u002F\u002Fdev.mysql.com\u002Fdownloads\u002Frepo\u002Fyum\u002F",[1649],") versiyonumuzu seçelim.\nBen versiyon olarak bu örnekte aşağıdaki versiyonu seçtim.",[16,2448,2449,2453],{},[1645,2450,2451],{"href":2451,"rel":2452},"https:\u002F\u002Fdev.mysql.com\u002Fget\u002Fmysql57-community-release-el7-11.noarch.rpm",[1649],"\nŞimdi sırasıyla bu versiyonu indirelim.",[47,2455,2457],{"className":49,"code":2456,"language":51,"meta":52,"style":52},"sudo rpm -Uvh https:\u002F\u002Fdev.mysql.com\u002Fget\u002Fmysql57-community-release-el7-11.noarch.rpm\n",[20,2458,2459],{"__ignoreMap":52},[56,2460,2461,2463,2466,2469],{"class":58,"line":59},[56,2462,2432],{"class":62},[56,2464,2465],{"class":66}," rpm",[56,2467,2468],{"class":66}," -Uvh",[56,2470,2471],{"class":66}," https:\u002F\u002Fdev.mysql.com\u002Fget\u002Fmysql57-community-release-el7-11.noarch.rpm\n",[16,2473,2474],{},"İndirme işlemi bitince kurulumu başlatalım.",[47,2476,2478],{"className":49,"code":2477,"language":51,"meta":52,"style":52},"sudo yum install mysql-community-server\n",[20,2479,2480],{"__ignoreMap":52},[56,2481,2482,2484,2486,2489],{"class":58,"line":59},[56,2483,2432],{"class":62},[56,2485,2435],{"class":66},[56,2487,2488],{"class":66}," install",[56,2490,2491],{"class":66}," mysql-community-server\n",[16,2493,2494],{},"Kurulum da bitince MySQL Community Server’ı başlatabiliriz.",[47,2496,2498],{"className":49,"code":2497,"language":51,"meta":52,"style":52},"sudo service mysqld start\n",[20,2499,2500],{"__ignoreMap":52},[56,2501,2502,2504,2507,2510],{"class":58,"line":59},[56,2503,2432],{"class":62},[56,2505,2506],{"class":66}," service",[56,2508,2509],{"class":66}," mysqld",[56,2511,2512],{"class":66}," start\n",[16,2514,2515],{},"Sunucunun durumuna aşağıdaki komut ile bakabiliriz.",[47,2517,2519],{"className":49,"code":2518,"language":51,"meta":52,"style":52},"sudo service mysqld status\n",[20,2520,2521],{"__ignoreMap":52},[56,2522,2523,2525,2527,2529],{"class":58,"line":59},[56,2524,2432],{"class":62},[56,2526,2506],{"class":66},[56,2528,2509],{"class":66},[56,2530,1079],{"class":66},[16,2532,2533],{},"Active(running) şeklinde görebildiysek başarılıyız.\nŞimdi aklımızda sorular olması lazım 🙂 Kurdum ama şifrem ne, hangi porttan erişebilirim gibi…",[16,2535,2536],{},"Öncelikle şifremizi belirleyelim. Kurulum aşamasında bize rastgele bir şifre verildi, onu önce bi alalım.",[47,2538,2540],{"className":49,"code":2539,"language":51,"meta":52,"style":52},"sudo grep ‘temporary password’ \u002Fvar\u002Flog\u002Fmysqld.log\n",[20,2541,2542],{"__ignoreMap":52},[56,2543,2544,2546,2549,2552,2555],{"class":58,"line":59},[56,2545,2432],{"class":62},[56,2547,2548],{"class":66}," grep",[56,2550,2551],{"class":66}," ‘temporary",[56,2553,2554],{"class":66}," password’",[56,2556,2557],{"class":66}," \u002Fvar\u002Flog\u002Fmysqld.log\n",[16,2559,2560],{},"Süper artık random password elimizde. O zaman değiştirelim, bunun için MySQL Server’a bağlanmamız lazım.",[47,2562,2564],{"className":49,"code":2563,"language":51,"meta":52,"style":52},"mysql -uroot -p\n",[20,2565,2566],{"__ignoreMap":52},[56,2567,2568,2571,2574],{"class":58,"line":59},[56,2569,2570],{"class":62},"mysql",[56,2572,2573],{"class":66}," -uroot",[56,2575,2576],{"class":66}," -p\n",[16,2578,2579],{},"MySQL konsoluna düşmemiz lazım. “mysql>” şeklinde görebiliriz. Şifreyi değiştirelim.",[47,2581,2583],{"className":49,"code":2582,"language":51,"meta":52,"style":52},"ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘YeniSifrem123!’;\n",[20,2584,2585],{"__ignoreMap":52},[56,2586,2587,2590,2593,2596,2599,2602,2605],{"class":58,"line":59},[56,2588,2589],{"class":62},"ALTER",[56,2591,2592],{"class":66}," USER",[56,2594,2595],{"class":66}," ‘root’@’localhost’",[56,2597,2598],{"class":66}," IDENTIFIED",[56,2600,2601],{"class":66}," BY",[56,2603,2604],{"class":66}," ‘YeniSifrem123!’",[56,2606,2607],{"class":76},";\n",[16,2609,2610],{},"Portu da kontrol edip yazımızı bitirelim.",[47,2612,2614],{"className":49,"code":2613,"language":51,"meta":52,"style":52},"select @@port;\n",[20,2615,2616],{"__ignoreMap":52},[56,2617,2618,2622],{"class":58,"line":59},[56,2619,2621],{"class":2620},"s7zQu","select",[56,2623,2624],{"class":174}," @@port;\n",[16,2626,2627],{},"Bu arada mysql konsolundan çıkmak için “exit;” yazıp entera basın, kalmayın orada 🙂",[1187,2629,2630],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":52,"searchDepth":86,"depth":86,"links":2632},[],"2017-09-27","CentOS 7 üzerine yum ile MySQL kurulumu ve ilk yapılandırma adımları.",{},"\u002Ftr\u002Fblog\u002Finstall-mysql-on-centos-7",{"title":2417,"description":2634},"tr\u002Fblog\u002Finstall-mysql-on-centos-7",[2640,2570],"database management systems","\u002Fen\u002Fblog\u002Finstall-mysql-on-centos-7","o683c8qPjHcQa9I0NapAX_O6jDHsLK3M2iR9fwYY9og",{"id":2644,"title":2645,"body":2646,"date":2832,"description":2833,"extension":1202,"meta":2834,"navigation":231,"path":2835,"seo":2836,"stem":2837,"tags":2838,"translation":2840,"__hash__":2841},"pages_tr\u002Ftr\u002Fblog\u002Foracle-create-user-and-grant-privileges.md","Oracle’da Kullanıcı Açmak ve Yetki Vermek",{"type":8,"value":2647,"toc":2830},[2648,2651,2678,2681,2702,2705,2723,2726,2744,2747,2767,2770,2827],[16,2649,2650],{},"Merhaba, Oracle DB üzerinde kullanıcı açmak için gerekli komutlar aşağıdaki gibi olabilir. Bu arada yetkili bir kullanıcı ile bağlandığımızı farz ediyorum. Kullanıcı adını SUKRU olarak belirledim.\nKullanıcı tanımlamak için",[47,2652,2656],{"className":2653,"code":2654,"language":2655,"meta":52,"style":52},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","CREATE USER SUKRU IDENTIFIED BY SUKRU\n","sql",[20,2657,2658],{"__ignoreMap":52},[56,2659,2660,2663,2665,2669,2672,2675],{"class":58,"line":59},[56,2661,2662],{"class":999},"CREATE",[56,2664,2592],{"class":999},[56,2666,2668],{"class":2667},"s2Zo4"," SUKRU",[56,2670,2671],{"class":174}," IDENTIFIED ",[56,2673,2674],{"class":999},"BY",[56,2676,2677],{"class":174}," SUKRU\n",[16,2679,2680],{},"Bağlanma hakkı vermek için",[47,2682,2684],{"className":2653,"code":2683,"language":2655,"meta":52,"style":52},"GRANT CREATE SESSION TO SUKRU\n",[20,2685,2686],{"__ignoreMap":52},[56,2687,2688,2691,2694,2697,2700],{"class":58,"line":59},[56,2689,2690],{"class":999},"GRANT",[56,2692,2693],{"class":999}," CREATE",[56,2695,2696],{"class":999}," SESSION",[56,2698,2699],{"class":999}," TO",[56,2701,2677],{"class":174},[16,2703,2704],{},"Tablo oluşturma hakkı vermek için",[47,2706,2708],{"className":2653,"code":2707,"language":2655,"meta":52,"style":52},"GRANT CREATE TABLE TO SUKRU\n",[20,2709,2710],{"__ignoreMap":52},[56,2711,2712,2714,2716,2719,2721],{"class":58,"line":59},[56,2713,2690],{"class":999},[56,2715,2693],{"class":999},[56,2717,2718],{"class":999}," TABLE",[56,2720,2699],{"class":999},[56,2722,2677],{"class":174},[16,2724,2725],{},"Sequence oluşturma hakkı vermek için",[47,2727,2729],{"className":2653,"code":2728,"language":2655,"meta":52,"style":52},"GRANT CREATE SEQUENCE TO SUKRU\n",[20,2730,2731],{"__ignoreMap":52},[56,2732,2733,2735,2737,2740,2742],{"class":58,"line":59},[56,2734,2690],{"class":999},[56,2736,2693],{"class":999},[56,2738,2739],{"class":999}," SEQUENCE",[56,2741,2699],{"class":999},[56,2743,2677],{"class":174},[16,2745,2746],{},"Tablespace alanını kullanabilmek için",[47,2748,2750],{"className":2653,"code":2749,"language":2655,"meta":52,"style":52},"GRANT UNLIMITED TABLESPACE TO SUKRU\n",[20,2751,2752],{"__ignoreMap":52},[56,2753,2754,2756,2759,2762,2765],{"class":58,"line":59},[56,2755,2690],{"class":999},[56,2757,2758],{"class":999}," UNLIMITED",[56,2760,2761],{"class":174}," TABLESPACE ",[56,2763,2764],{"class":999},"TO",[56,2766,2677],{"class":174},[16,2768,2769],{},"Güncel sürüm Oracle’da SELECT, INSERT, UPDATE, DELETE için yetki gerekmiyor ama gerekirse",[47,2771,2773],{"className":2653,"code":2772,"language":2655,"meta":52,"style":52},"GRANT\n  SELECT,\n  INSERT,\n  UPDATE,\n  DELETE\nON\n  schema.table\nTO\n  SUKRU\n",[20,2774,2775,2780,2788,2795,2802,2807,2812,2817,2822],{"__ignoreMap":52},[56,2776,2777],{"class":58,"line":59},[56,2778,2779],{"class":999},"GRANT\n",[56,2781,2782,2785],{"class":58,"line":86},[56,2783,2784],{"class":999},"  SELECT",[56,2786,2787],{"class":174},",\n",[56,2789,2790,2793],{"class":58,"line":105},[56,2791,2792],{"class":999},"  INSERT",[56,2794,2787],{"class":174},[56,2796,2797,2800],{"class":58,"line":120},[56,2798,2799],{"class":999},"  UPDATE",[56,2801,2787],{"class":174},[56,2803,2804],{"class":58,"line":248},[56,2805,2806],{"class":999},"  DELETE\n",[56,2808,2809],{"class":58,"line":261},[56,2810,2811],{"class":999},"ON\n",[56,2813,2814],{"class":58,"line":274},[56,2815,2816],{"class":174},"  schema.table\n",[56,2818,2819],{"class":58,"line":279},[56,2820,2821],{"class":999},"TO\n",[56,2823,2824],{"class":58,"line":297},[56,2825,2826],{"class":174},"  SUKRU\n",[1187,2828,2829],{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":52,"searchDepth":86,"depth":86,"links":2831},[],"2017-08-08","Oracle'da yeni kullanıcı açma ve yetki (grant) verme komutları.",{},"\u002Ftr\u002Fblog\u002Foracle-create-user-and-grant-privileges",{"title":2645,"description":2833},"tr\u002Fblog\u002Foracle-create-user-and-grant-privileges",[2839],"oracle","\u002Fen\u002Fblog\u002Foracle-create-user-and-grant-privileges","HB1ahuWtz9XBJKIDeVT_SROSXZjVKeLOnLiDUfs7EnQ",{"id":2843,"title":2844,"body":2845,"date":3042,"description":3043,"extension":1202,"meta":3044,"navigation":231,"path":3045,"seo":3046,"stem":3047,"tags":3048,"translation":3052,"__hash__":3053},"pages_tr\u002Ftr\u002Fblog\u002Fspring-security-primefaces-redirect-issue-fix.md","Spring Security + PrimeFaces Yönlendirme Problemi Çözümü",{"type":8,"value":2846,"toc":3040},[2847,2855,2872,2945,2948,2953,2959,2964,2970,2979,2982,2990,2993,3001,3006,3012,3017,3023,3037],[16,2848,2849,2850,673],{},"Spring Security, Java EE dünyasında kabul görmüş ve java uygulamaları için -bence- güvenlik için bulunmaz bir nimet. Ayrıntılı bilgiye ",[1645,2851,2854],{"href":2852,"rel":2853},"http:\u002F\u002Fprojects.spring.io\u002Fspring-security\u002F",[1649],"sitesinden ulaşabilirsiniz",[16,2856,2857,2858,2863,2864,2871],{},"PrimeFaces da JSF dünyasında kabul gören en başarılı bileşen kütüphanesi, yine bu adresten ",[1645,2859,2862],{"href":2860,"rel":2861},"http:\u002F\u002Fwww.primefaces.org",[1649],"detaylı bilgiye ulaşabilirsiniz",".\nJSF 2.2 + Spring 4 + Hibernate 4 + PrimeFaces 5 şeklinde altyapısını kurguladığım projemde fark ettim ki başarılı bir giriş (login) işlemi sonrası sayfa gitmesi gereken URL’e gitmiyor. Spring Security loglarını incelediğimde ise herhangi bir problem olmadan “",[1388,2865,2866],{},[1645,2867,2870],{"href":2868,"rel":2869},"https:\u002F\u002Ftomcat.apache.org\u002Ftomcat-5.5-doc\u002Fservletapi\u002Fjavax\u002Fservlet\u002Fhttp\u002FHttpServletResponse.html#sendRedirect(java.lang.String)",[1649],"sendRedirect","” ile konfigürasyondaki belirttiğim URL’e gönderiyor. Her şeyin bu kadar mükemmel olduğu yerde nasıl olur da bu çalışmaz diye kafayı sıyırdım tabi ki 🙂\nSpring Security logu aşağıdaki gibi. \u002Flogin sayfasından istediğim gibi \u002Fpages\u002Fhome sayfasına yönlendirmiş.",[47,2873,2875],{"className":49,"code":2874,"language":51,"meta":52,"style":52},"[DEBUG] ..access.intercept.FilterSecurityInterceptor – Authorization successful\n[DEBUG] ..security.web.FilterChainProxy            – \u002Fpages\u002Fhome.xhtml reached end of additional filter chain; proceeding with original chain\n[DEBUG] ..web.access.ExceptionTranslationFilter    – Chain processed normally\n[DEBUG] ..web.context.SecurityContextPersistenceFilter – SecurityContextHolder now cleared, as request processing completed\n",[20,2876,2877,2891,2923,2934],{"__ignoreMap":52},[56,2878,2879,2882,2885,2888],{"class":58,"line":59},[56,2880,2881],{"class":76},"[",[56,2883,2884],{"class":174},"DEBUG",[56,2886,2887],{"class":76},"]",[56,2889,2890],{"class":174}," ..access.intercept.FilterSecurityInterceptor – Authorization successful\n",[56,2892,2893,2895,2897,2899,2902,2905,2908,2911,2914,2917,2920],{"class":58,"line":86},[56,2894,2881],{"class":76},[56,2896,2884],{"class":174},[56,2898,2887],{"class":76},[56,2900,2901],{"class":174}," ..security.web.FilterChainProxy            – \u002Fpages\u002Fhome.xhtml reached ",[56,2903,2904],{"class":2620},"end",[56,2906,2907],{"class":174}," of additional filter chain",[56,2909,2910],{"class":76},";",[56,2912,2913],{"class":62}," proceeding",[56,2915,2916],{"class":66}," with",[56,2918,2919],{"class":66}," original",[56,2921,2922],{"class":66}," chain\n",[56,2924,2925,2927,2929,2931],{"class":58,"line":105},[56,2926,2881],{"class":76},[56,2928,2884],{"class":174},[56,2930,2887],{"class":76},[56,2932,2933],{"class":174}," ..web.access.ExceptionTranslationFilter    – Chain processed normally\n",[56,2935,2936,2938,2940,2942],{"class":58,"line":120},[56,2937,2881],{"class":76},[56,2939,2884],{"class":174},[56,2941,2887],{"class":76},[56,2943,2944],{"class":174}," ..web.context.SecurityContextPersistenceFilter – SecurityContextHolder now cleared, as request processing completed\n",[16,2946,2947],{},"Başladım daha detaylı incelemeye, önce tarayıcı üzerinde gelen-giden akışı izledim.",[16,2949,2950],{},[1388,2951,2952],{},"İstek (Request):",[47,2954,2957],{"className":2955,"code":2956,"language":1225,"meta":52},[1223],"javax.faces.partial.ajax:true\njavax.faces.source:loginButton\njavax.faces.partial.execute:loginForm\njavax.faces.partial.render:loginForm\nloginButton:loginButton\nloginForm:loginForm\nusername:test\npassword:123456\n_csrf:49756ca7-38fd-4777-bea8-58fcfe7deb73\njavax.faces.ViewState:-3601270081246135757:6121484162719565648\n",[20,2958,2956],{"__ignoreMap":52},[16,2960,2961],{},[1388,2962,2963],{},"Yanıt (Response):",[47,2965,2968],{"className":2966,"code":2967,"language":1225,"meta":52},[1223],"xml version='1.0' encoding='UTF-8'?\n-6140875972550706628:-2367790204853062502\n",[20,2969,2967],{"__ignoreMap":52},[16,2971,2972,2973,2978],{},"Bunları görünce tabi ki ",[1645,2974,2977],{"href":2975,"rel":2976},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=gbnhydOczwI",[1649],"“Aman Tanrım didim”",", neden mi? 🙂",[16,2980,2981],{},"Çünkü gelen yanıtta “redirect-url” yok! Sadece “update” var! Yani ajax işinde hata yapmışız (javax.faces.partial.ajax:true) ve bunu aşmak için önümüzde iki yol var;",[1729,2983,2984,2987],{},[1124,2985,2986],{},"Primefaces commandButton özelliklerinde ajax=”false” demek",[1124,2988,2989],{},"Primefaces butonu yerine klasik JSF butonu kullanmak",[16,2991,2992],{},"Kullandığım buton",[47,2994,2997],{"className":2995,"code":52,"language":2996,"meta":52,"style":52},"language-xml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","xml",[20,2998,2999],{"__ignoreMap":52},[56,3000],{"class":58,"line":59},[1729,3002,3003],{},[1124,3004,3005],{},"yol",[47,3007,3008],{"className":2995,"code":52,"language":2996,"meta":52,"style":52},[20,3009,3010],{"__ignoreMap":52},[56,3011],{"class":58,"line":59},[1729,3013,3014],{"start":86},[1124,3015,3016],{},"yol (primefaces butonunun css’inden faydalanamazsınız, elle eklemeniz lazım)",[47,3018,3019],{"className":2995,"code":52,"language":2996,"meta":52,"style":52},[20,3020,3021],{"__ignoreMap":52},[56,3022],{"class":58,"line":59},[16,3024,3025,3026,3031,3032],{},"Sonuç olarak bu kadar basit görünse de tarayıcı üzerindeki trafiği izlemeden ben anlayamadım. Bu arada tüm tarayıcılarda neredeyse standart haline geldi, “Developer Tools” deniliyor genelde ve F12 tuşu ile açabiliyorsunuz, bilmeyenler olabilir diye bahsedeyim dedim.\nBunların dışında Spring Security’nin “sendRedirect” yaptığı yeri ezerek (override) de bu işi yapabilirdik ama daha maliyetli olurdu. Nasıl yapılabileceği ",[1645,3027,3030],{"href":3028,"rel":3029},"http:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F9305144\u002Fusing-jsf-2-0-facelets-is-there-a-way-to-attach-a-global-listener-to-all-ajax\u002F9311920#9311920",[1649],"şuradaki cevapta"," üstad BalusC tarafından verilmiş 🙂\nSorunun temeline de ",[1645,3033,3036],{"href":3034,"rel":3035},"http:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F10954319\u002Fjsf-2-response-sendredirect-is-not-working",[1649],"şu kaynaktan bakılabilir.",[1187,3038,3039],{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":52,"searchDepth":86,"depth":86,"links":3041},[],"2015-05-15","Spring Security ile PrimeFaces kullanılırken ortaya çıkan yönlendirme probleminin çözümü.",{},"\u002Ftr\u002Fblog\u002Fspring-security-primefaces-redirect-issue-fix",{"title":2844,"description":3043},"tr\u002Fblog\u002Fspring-security-primefaces-redirect-issue-fix",[1758,3049,3050,3051],"jsf","primefaces","spring","\u002Fen\u002Fblog\u002Fspring-security-primefaces-redirect-issue-fix","ZFReUm2bjk0Zopl5_MX9BQzUPD1s781umxBGD3W0YQY",{"id":3055,"title":3056,"body":3057,"date":3173,"description":3174,"extension":1202,"meta":3175,"navigation":231,"path":3176,"seo":3177,"stem":3178,"tags":3179,"translation":3180,"__hash__":3181},"pages_tr\u002Ftr\u002Fblog\u002Fjsf-2-primefaces.md","JSF 2 + PrimeFaces",{"type":8,"value":3058,"toc":3171},[3059,3078,3083,3086,3109,3112,3117,3120,3134,3140,3145,3156,3163,3166],[16,3060,3061,3065,3066,3071,3072,3077],{},[1645,3062,3064],{"href":2860,"rel":3063},[1649],"PrimeFaces",", JSF 2 için yazılmış bileşen kütüphanelerinin en başında gelmektedir. Şu an itibariyle de ",[1645,3067,3070],{"href":3068,"rel":3069},"http:\u002F\u002Fwww.netbeans.org",[1649],"NetBeans"," geliştirme ortamında hazır gelen tek bileşen kütüphanesidir. Gelişmiş bir çok bileşenini ve detaylarını ",[1645,3073,3076],{"href":3074,"rel":3075},"http:\u002F\u002Fwww.primefaces.org\u002Fshowcase\u002F",[1649],"demo sayfalarında"," bulabilirsiniz.",[16,3079,3080],{},[1388,3081,3082],{},"Bu yazıya başlamadan önce…",[16,3084,3085],{},"Daha önce yazmış olduğum şu yazıları, bu makaleye başlamadan önce okumanızı tavsiye ederim.",[1729,3087,3088,3095,3102],{},[1124,3089,3090],{},[1645,3091,3094],{"href":3092,"rel":3093},"https:\u002F\u002Fwww.sukrucakmak.com\u002Fjsf-life-cycle\u002F",[1649],"JSF Life Cycle",[1124,3096,3097],{},[1645,3098,3101],{"href":3099,"rel":3100},"https:\u002F\u002Fwww.sukrucakmak.com\u002Fjsf-model-view-controller-mvc\u002F",[1649],"JSF Model-View-Controller",[1124,3103,3104],{},[1645,3105,3108],{"href":3106,"rel":3107},"https:\u002F\u002Fwww.sukrucakmak.com\u002Fjavaserver-faces-2-jsf-2\u002F",[1649],"JSF 2’ye Giriş",[16,3110,3111],{},"Konular hakkında bilgili olanlar tabi ki okumasına gerek yok, lakin JSF 2’ye giriş yazısında oluşturduğumuz geliştirme ortamı üzerinden bu yazıya devam edeceğim için, en azından ona bakmanızda fayda var.",[16,3113,3114],{},[1388,3115,3116],{},"PrimeFaces ile Güçlenmek",[16,3118,3119],{},"JSF 2 projemizi PrimeFaces ile güçlendirmek sadece iki adımdan oluşmaktadır.",[1729,3121,3122,3131],{},[1124,3123,3124,3125,3130],{},"PrimeFaces ",[1645,3126,3129],{"href":3127,"rel":3128},"http:\u002F\u002Fwww.primefaces.org\u002Fdownloads.html",[1649],"indirme sayfasından"," en son kararlı sürümü indirmek ve projenin kütüphaneleri arasına eklemek",[1124,3132,3133],{},"xhtml sayfalarının başındaki xmlns tanımları arasına aşağıdaki satırı eklemek.",[47,3135,3138],{"className":3136,"code":3137,"language":1225},[1223],"xmlns:p=\"http:\u002F\u002Fprimefaces.org\u002Fui\"\n",[20,3139,3137],{"__ignoreMap":52},[16,3141,3142],{},[2168,3143],{"alt":52,"src":3144},"\u002Fimages\u002Fjsf-2-primefaces-Screen-Shot-2011-09-06-at-11.50.52-PM.png",[16,3146,3147,3148,3151,3152,3155],{},"Evet, sadece bu kadar! Bundan sonra sayfalarımız içinde\nGörüldüğü üzere ",[1388,3149,3150],{},"index.xhtml"," sayfası içerisine bileşenini eklemiş bulunmaktayız. Projeyi çalıştırıp ",[1388,3153,3154],{},"index.jsf"," sayfasını çalıştırdığımızda aşağıdaki gibi bir görümüne sahip oluruz.",[16,3157,3158],{},[1645,3159,3161],{"href":3160},"\u002Fimages\u002Fjsf-2-primefaces-Screen-Shot-2011-09-03-at-2.12.37-PM.png",[2168,3162],{"alt":52,"src":3160},[16,3164,3165],{},"Bir sonraki yazıda bu JSF 2 + PrimeFaces uygulamamızı Ajax kullanarak geliştireceğiz.\nKolay gelsin.",[47,3167,3169],{"className":3168,"code":52,"language":1225},[1223],[20,3170,52],{"__ignoreMap":52},{"title":52,"searchDepth":86,"depth":86,"links":3172},[],"2011-09-05","JSF 2 üzerinde PrimeFaces bileşen kütüphanesiyle zengin kullanıcı arayüzleri geliştirmek.",{},"\u002Ftr\u002Fblog\u002Fjsf-2-primefaces",{"title":3056,"description":3174},"tr\u002Fblog\u002Fjsf-2-primefaces",[1758,3049],"\u002Fen\u002Fblog\u002Fjsf-2-primefaces","-Il2v-1O33YRqtenNW3A68lPPXXmldVBkxQxlb7LLgU",{"id":3183,"title":3184,"body":3185,"date":4001,"description":4002,"extension":1202,"meta":4003,"navigation":231,"path":4004,"seo":4005,"stem":4006,"tags":4007,"translation":4008,"__hash__":4009},"pages_tr\u002Ftr\u002Fblog\u002Fjavaserver-faces-2-jsf-2.md","JavaServer Faces 2 (JSF 2)",{"type":8,"value":3186,"toc":3999},[3187,3200,3222,3227,3239,3244,3262,3267,3279,3284,3287,3430,3433,3766,3771,3774,3962,3967,3996],[16,3188,3189,3190,3194,3195,3199],{},"JavaServer Faces (JSF), Java Komitesi tarafından standart web teknolojisi olarak kabul edilmiştir. Java ile web programlama yapmak isteyen bir kişinin mutlaka öğrenmesi tavsiye edilir. Ayrıntılı bilgiye ",[1645,3191,3192],{"href":3192,"rel":3193},"http:\u002F\u002Fjavaserverfaces.java.net\u002F",[1649]," adresinden erişebilirsiniz.\nJSF, Model-View-Controller (MVC) tabanlı olduğundan Java sınıflarımız ile görsel sayfalarımız yani önyüzümüz farklı farklı katmanlarda bulunmaktadır. Bu konuyu detaylı bir şekilde ",[1645,3196,3198],{"href":3099,"rel":3197},[1649],"şu sayfada"," anlatmıştım.\nŞimdi JSF 2 ile ilk uygulamamızı yapalım. Bize aşağıdaki malzemeler lazım daha doğrusu ben bunları kullanacağım;",[1121,3201,3202,3209,3216],{},[1124,3203,3204],{},[1645,3205,3208],{"href":3206,"rel":3207},"http:\u002F\u002Fwww.eclipse.org\u002Fdownloads\u002F",[1649],"Eclipse Java EE IDE for Web Developers (Helios)",[1124,3210,3211],{},[1645,3212,3215],{"href":3213,"rel":3214},"http:\u002F\u002Ftomcat.apache.org\u002Fdownload-70.cgi",[1649],"Apache Tomcat 7",[1124,3217,3218],{},[1645,3219,3221],{"href":3192,"rel":3220},[1649],"JSF 2 Libraries (jsf-api.jar ve jsf-impl.jar)",[16,3223,3224],{},[1388,3225,3226],{},"Tomcat",[16,3228,3229,3230,3233,3234],{},"Eclipse başlatıp yeni bir çalışma alanı (workspace) açalım. İlk olarak “Server”ı tanıtalım. Server tabında sağ tıklayarak ",[1388,3231,3232],{},"New > Server"," yolunu takip ettikten sonra Tomcat’in yerini aşağıdaki gibi gösterebilirsiniz.\n",[1645,3235,3237],{"href":3236},"\u002Fimages\u002Fjavaserver-faces-2-jsf-2-Screen-Shot-2011-09-02-at-12.55.44-PM.png",[2168,3238],{"alt":52,"src":3236},[16,3240,3241],{},[1388,3242,3243],{},"Proje Oluşturma",[16,3245,3246,3247,3250,3251,3256,3257],{},"Şimdi “Package Explorer” ya da “Project Explorer” görünümünde ",[1388,3248,3249],{},"New > Dynamic Web Project"," yolu ile aşağıdaki gibi projeyi oluşturuyoruz. Önce proje ismi gibi alanları dolduruyoruz.\n",[1645,3252,3254],{"href":3253},"\u002Fimages\u002Fjavaserver-faces-2-jsf-2-Screen-Shot-2011-09-02-at-1.00.59-PM.png",[2168,3255],{"alt":52,"src":3253},"\nSonra ileri ve tekrar ileri diyerek aşağıdaki gibi “web.xml” dosyasını oluşturmasını sağlayıp “finish” butonuna basarız.\n",[1645,3258,3260],{"href":3259},"\u002Fimages\u002Fjavaserver-faces-2-jsf-2-Screen-Shot-2011-09-02-at-2.53.42-PM.png",[2168,3261],{"alt":52,"src":3259},[16,3263,3264],{},[1388,3265,3266],{},"JSF 2 için Gerekli Jarlar",[16,3268,3269,3270,3273,3274],{},"JSF 2 uygulamamızın çalışması için yapmamız gereken bir kaç adım var, ilk olarak en başta belirttiğimiz 2 adet jar dosyasını ",[1388,3271,3272],{},"WEB-INF\u002Flib"," dizini altına kopyalayalım, projemizin görünümü aşağıdaki gibi olmalı.\n",[1645,3275,3277],{"href":3276},"\u002Fimages\u002Fjavaserver-faces-2-jsf-2-Screen-Shot-2011-09-06-at-11.43.46-PM.png",[2168,3278],{"alt":52,"src":3276},[16,3280,3281],{},[1388,3282,3283],{},"web.xml Ayarları",[16,3285,3286],{},"JSF 2 uygulamamızın server tarafından yorumlanabilmesi için web.xml içine şu satırları eklememiz lazım.",[47,3288,3290],{"className":2995,"code":3289,"language":2996,"meta":52,"style":52},"        \u003C!– Faces Servlet –>\n    \u003Cservlet>\n        \u003Cservlet-name>Faces Servlet\u003C\u002Fservlet-name>\n        \u003Cservlet-class>javax.faces.webapp.FacesServlet\u003C\u002Fservlet-class>\n        \u003Cload-on-startup> 1 \u003C\u002Fload-on-startup>\n    \u003C\u002Fservlet>\n    \u003C!– Faces Servlet Mapping –>\n    \u003Cservlet-mapping>\n        \u003Cservlet-name>Faces Servlet\u003C\u002Fservlet-name>\n        \u003Curl-pattern>*.jsf\u003C\u002Furl-pattern>\n    \u003C\u002Fservlet-mapping>\n",[20,3291,3292,3297,3309,3329,3347,3365,3374,3379,3388,3404,3422],{"__ignoreMap":52},[56,3293,3294],{"class":58,"line":59},[56,3295,3296],{"class":174},"        \u003C!– Faces Servlet –>\n",[56,3298,3299,3302,3306],{"class":58,"line":86},[56,3300,3301],{"class":76},"    \u003C",[56,3303,3305],{"class":3304},"swJcz","servlet",[56,3307,3308],{"class":76},">\n",[56,3310,3311,3314,3317,3319,3322,3325,3327],{"class":58,"line":105},[56,3312,3313],{"class":76},"        \u003C",[56,3315,3316],{"class":3304},"servlet-name",[56,3318,178],{"class":76},[56,3320,3321],{"class":174},"Faces Servlet",[56,3323,3324],{"class":76},"\u003C\u002F",[56,3326,3316],{"class":3304},[56,3328,3308],{"class":76},[56,3330,3331,3333,3336,3338,3341,3343,3345],{"class":58,"line":120},[56,3332,3313],{"class":76},[56,3334,3335],{"class":3304},"servlet-class",[56,3337,178],{"class":76},[56,3339,3340],{"class":174},"javax.faces.webapp.FacesServlet",[56,3342,3324],{"class":76},[56,3344,3335],{"class":3304},[56,3346,3308],{"class":76},[56,3348,3349,3351,3354,3356,3359,3361,3363],{"class":58,"line":248},[56,3350,3313],{"class":76},[56,3352,3353],{"class":3304},"load-on-startup",[56,3355,178],{"class":76},[56,3357,3358],{"class":174}," 1 ",[56,3360,3324],{"class":76},[56,3362,3353],{"class":3304},[56,3364,3308],{"class":76},[56,3366,3367,3370,3372],{"class":58,"line":261},[56,3368,3369],{"class":76},"    \u003C\u002F",[56,3371,3305],{"class":3304},[56,3373,3308],{"class":76},[56,3375,3376],{"class":58,"line":274},[56,3377,3378],{"class":174},"    \u003C!– Faces Servlet Mapping –>\n",[56,3380,3381,3383,3386],{"class":58,"line":279},[56,3382,3301],{"class":76},[56,3384,3385],{"class":3304},"servlet-mapping",[56,3387,3308],{"class":76},[56,3389,3390,3392,3394,3396,3398,3400,3402],{"class":58,"line":297},[56,3391,3313],{"class":76},[56,3393,3316],{"class":3304},[56,3395,178],{"class":76},[56,3397,3321],{"class":174},[56,3399,3324],{"class":76},[56,3401,3316],{"class":3304},[56,3403,3308],{"class":76},[56,3405,3406,3408,3411,3413,3416,3418,3420],{"class":58,"line":318},[56,3407,3313],{"class":76},[56,3409,3410],{"class":3304},"url-pattern",[56,3412,178],{"class":76},[56,3414,3415],{"class":174},"*.jsf",[56,3417,3324],{"class":76},[56,3419,3410],{"class":3304},[56,3421,3308],{"class":76},[56,3423,3424,3426,3428],{"class":58,"line":813},[56,3425,3369],{"class":76},[56,3427,3385],{"class":3304},[56,3429,3308],{"class":76},[16,3431,3432],{},"Bu satırları ekledikten sonra web.xml dosyasının görünümü aşağıdaki gibi olacaktır.",[47,3434,3436],{"className":2995,"code":3435,"language":2996,"meta":52,"style":52},"\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003Cweb-app xmlns:xsi=\"http:\u002F\u002Fwww.w3.org\u002F2001\u002FXMLSchema-instance\"\n    xmlns=\"http:\u002F\u002Fjava.sun.com\u002Fxml\u002Fns\u002Fjavaee\" xmlns:web=\"http:\u002F\u002Fjava.sun.com\u002Fxml\u002Fns\u002Fjavaee\u002Fweb-app_2_5.xsd\"\n    xsi:schemaLocation=\"http:\u002F\u002Fjava.sun.com\u002Fxml\u002Fns\u002Fjavaee http:\u002F\u002Fjava.sun.com\u002Fxml\u002Fns\u002Fjavaee\u002Fweb-app_2_5.xsd\"\n    id=\"WebApp_ID\" version=\"2.5\">\n    \u003Cdisplay-name>jsf2-helloworld\u003C\u002Fdisplay-name>\n    \u003C!– Faces Servlet –>\n    \u003Cservlet>\n        \u003Cservlet-name>Faces Servlet\u003C\u002Fservlet-name>\n        \u003Cservlet-class>javax.faces.webapp.FacesServlet\u003C\u002Fservlet-class>\n        \u003Cload-on-startup> 1 \u003C\u002Fload-on-startup>\n    \u003C\u002Fservlet>\n    \u003C!– Faces Servlet Mapping –>\n    \u003Cservlet-mapping>\n        \u003Cservlet-name>Faces Servlet\u003C\u002Fservlet-name>\n        \u003Curl-pattern>*.jsf\u003C\u002Furl-pattern>\n    \u003C\u002Fservlet-mapping>\n    \u003Cwelcome-file-list>\n        \u003Cwelcome-file>index.html\u003C\u002Fwelcome-file>\n    \u003C\u002Fwelcome-file-list>\n\u003C\u002Fweb-app>\n",[20,3437,3438,3474,3499,3529,3548,3575,3593,3598,3606,3622,3638,3654,3662,3667,3676,3693,3710,3719,3729,3748,3757],{"__ignoreMap":52},[56,3439,3440,3443,3445,3449,3452,3454,3457,3459,3462,3464,3466,3469,3471],{"class":58,"line":59},[56,3441,3442],{"class":76},"\u003C?",[56,3444,2996],{"class":3304},[56,3446,3448],{"class":3447},"spNyl"," version",[56,3450,3451],{"class":76},"=",[56,3453,312],{"class":76},[56,3455,3456],{"class":66},"1.0",[56,3458,312],{"class":76},[56,3460,3461],{"class":3447}," encoding",[56,3463,3451],{"class":76},[56,3465,312],{"class":76},[56,3467,3468],{"class":66},"UTF-8",[56,3470,312],{"class":76},[56,3472,3473],{"class":76},"?>\n",[56,3475,3476,3479,3482,3485,3487,3490,3492,3494,3497],{"class":58,"line":86},[56,3477,3478],{"class":76},"\u003C",[56,3480,3481],{"class":3304},"web-app",[56,3483,3484],{"class":3447}," xmlns",[56,3486,925],{"class":76},[56,3488,3489],{"class":3447},"xsi",[56,3491,3451],{"class":76},[56,3493,312],{"class":76},[56,3495,3496],{"class":66},"http:\u002F\u002Fwww.w3.org\u002F2001\u002FXMLSchema-instance",[56,3498,83],{"class":76},[56,3500,3501,3504,3506,3508,3511,3513,3515,3517,3520,3522,3524,3527],{"class":58,"line":105},[56,3502,3503],{"class":3447},"    xmlns",[56,3505,3451],{"class":76},[56,3507,312],{"class":76},[56,3509,3510],{"class":66},"http:\u002F\u002Fjava.sun.com\u002Fxml\u002Fns\u002Fjavaee",[56,3512,312],{"class":76},[56,3514,3484],{"class":3447},[56,3516,925],{"class":76},[56,3518,3519],{"class":3447},"web",[56,3521,3451],{"class":76},[56,3523,312],{"class":76},[56,3525,3526],{"class":66},"http:\u002F\u002Fjava.sun.com\u002Fxml\u002Fns\u002Fjavaee\u002Fweb-app_2_5.xsd",[56,3528,83],{"class":76},[56,3530,3531,3534,3536,3539,3541,3543,3546],{"class":58,"line":120},[56,3532,3533],{"class":3447},"    xsi",[56,3535,925],{"class":76},[56,3537,3538],{"class":3447},"schemaLocation",[56,3540,3451],{"class":76},[56,3542,312],{"class":76},[56,3544,3545],{"class":66},"http:\u002F\u002Fjava.sun.com\u002Fxml\u002Fns\u002Fjavaee http:\u002F\u002Fjava.sun.com\u002Fxml\u002Fns\u002Fjavaee\u002Fweb-app_2_5.xsd",[56,3547,83],{"class":76},[56,3549,3550,3553,3555,3557,3560,3562,3564,3566,3568,3571,3573],{"class":58,"line":248},[56,3551,3552],{"class":3447},"    id",[56,3554,3451],{"class":76},[56,3556,312],{"class":76},[56,3558,3559],{"class":66},"WebApp_ID",[56,3561,312],{"class":76},[56,3563,3448],{"class":3447},[56,3565,3451],{"class":76},[56,3567,312],{"class":76},[56,3569,3570],{"class":66},"2.5",[56,3572,312],{"class":76},[56,3574,3308],{"class":76},[56,3576,3577,3579,3582,3584,3587,3589,3591],{"class":58,"line":261},[56,3578,3301],{"class":76},[56,3580,3581],{"class":3304},"display-name",[56,3583,178],{"class":76},[56,3585,3586],{"class":174},"jsf2-helloworld",[56,3588,3324],{"class":76},[56,3590,3581],{"class":3304},[56,3592,3308],{"class":76},[56,3594,3595],{"class":58,"line":274},[56,3596,3597],{"class":174},"    \u003C!– Faces Servlet –>\n",[56,3599,3600,3602,3604],{"class":58,"line":279},[56,3601,3301],{"class":76},[56,3603,3305],{"class":3304},[56,3605,3308],{"class":76},[56,3607,3608,3610,3612,3614,3616,3618,3620],{"class":58,"line":297},[56,3609,3313],{"class":76},[56,3611,3316],{"class":3304},[56,3613,178],{"class":76},[56,3615,3321],{"class":174},[56,3617,3324],{"class":76},[56,3619,3316],{"class":3304},[56,3621,3308],{"class":76},[56,3623,3624,3626,3628,3630,3632,3634,3636],{"class":58,"line":318},[56,3625,3313],{"class":76},[56,3627,3335],{"class":3304},[56,3629,178],{"class":76},[56,3631,3340],{"class":174},[56,3633,3324],{"class":76},[56,3635,3335],{"class":3304},[56,3637,3308],{"class":76},[56,3639,3640,3642,3644,3646,3648,3650,3652],{"class":58,"line":813},[56,3641,3313],{"class":76},[56,3643,3353],{"class":3304},[56,3645,178],{"class":76},[56,3647,3358],{"class":174},[56,3649,3324],{"class":76},[56,3651,3353],{"class":3304},[56,3653,3308],{"class":76},[56,3655,3656,3658,3660],{"class":58,"line":1913},[56,3657,3369],{"class":76},[56,3659,3305],{"class":3304},[56,3661,3308],{"class":76},[56,3663,3665],{"class":58,"line":3664},13,[56,3666,3378],{"class":174},[56,3668,3670,3672,3674],{"class":58,"line":3669},14,[56,3671,3301],{"class":76},[56,3673,3385],{"class":3304},[56,3675,3308],{"class":76},[56,3677,3679,3681,3683,3685,3687,3689,3691],{"class":58,"line":3678},15,[56,3680,3313],{"class":76},[56,3682,3316],{"class":3304},[56,3684,178],{"class":76},[56,3686,3321],{"class":174},[56,3688,3324],{"class":76},[56,3690,3316],{"class":3304},[56,3692,3308],{"class":76},[56,3694,3696,3698,3700,3702,3704,3706,3708],{"class":58,"line":3695},16,[56,3697,3313],{"class":76},[56,3699,3410],{"class":3304},[56,3701,178],{"class":76},[56,3703,3415],{"class":174},[56,3705,3324],{"class":76},[56,3707,3410],{"class":3304},[56,3709,3308],{"class":76},[56,3711,3713,3715,3717],{"class":58,"line":3712},17,[56,3714,3369],{"class":76},[56,3716,3385],{"class":3304},[56,3718,3308],{"class":76},[56,3720,3722,3724,3727],{"class":58,"line":3721},18,[56,3723,3301],{"class":76},[56,3725,3726],{"class":3304},"welcome-file-list",[56,3728,3308],{"class":76},[56,3730,3732,3734,3737,3739,3742,3744,3746],{"class":58,"line":3731},19,[56,3733,3313],{"class":76},[56,3735,3736],{"class":3304},"welcome-file",[56,3738,178],{"class":76},[56,3740,3741],{"class":174},"index.html",[56,3743,3324],{"class":76},[56,3745,3736],{"class":3304},[56,3747,3308],{"class":76},[56,3749,3751,3753,3755],{"class":58,"line":3750},20,[56,3752,3369],{"class":76},[56,3754,3726],{"class":3304},[56,3756,3308],{"class":76},[56,3758,3760,3762,3764],{"class":58,"line":3759},21,[56,3761,3324],{"class":76},[56,3763,3481],{"class":3304},[56,3765,3308],{"class":76},[16,3767,3768],{},[1388,3769,3770],{},"xhtml Sayfası Oluşturmak",[16,3772,3773],{},"Artık tüm altyapı hazırlıklarımız tamam, sıra geldi bir sayfa oluşturup çalıştırmaya. WebContent dizini altına index.xhtml adında bir dosya oluşturup aşağıdaki gibi düzenliyoruz.",[47,3775,3779],{"className":3776,"code":3777,"language":3778,"meta":52,"style":52},"language-html shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C!DOCTYPE html PUBLIC \"-\u002F\u002FW3C\u002F\u002FDTD XHTML 1.0 Transitional\u002F\u002FEN\" \"http:\u002F\u002Fwww.w3.org\u002FTR\u002Fxhtml1\u002FDTD\u002Fxhtml1-transitional.dtd\">\n\u003Chtml xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\"\n    xmlns:h=\"http:\u002F\u002Fjava.sun.com\u002Fjsf\u002Fhtml\"\n    xmlns:f=\"http:\u002F\u002Fjava.sun.com\u002Fjsf\u002Fcore\"\n    xmlns:ui=\"http:\u002F\u002Fjava.sun.com\u002Fjsf\u002Ffacelets\">\n\u003Ch:head>\n    \u003Cmeta http-equiv=\"Content-Type\" content=\"text\u002Fhtml; charset=UTF-8\" \u002F>\n    \u003Ctitle>jsf2-helloworld\u003C\u002Ftitle>\n\u003C\u002Fh:head>\n\u003Ch:body>\n    Merhaba JSF 2\n\u003C\u002Fh:body>\n\u003C\u002Fhtml>\n","html",[20,3780,3781,3803,3820,3834,3848,3864,3873,3907,3924,3932,3941,3946,3954],{"__ignoreMap":52},[56,3782,3783,3786,3789,3792,3795,3798,3801],{"class":58,"line":59},[56,3784,3785],{"class":76},"\u003C!",[56,3787,3788],{"class":3304},"DOCTYPE",[56,3790,3791],{"class":3447}," html",[56,3793,3794],{"class":3447}," PUBLIC",[56,3796,3797],{"class":66}," \"-\u002F\u002FW3C\u002F\u002FDTD XHTML 1.0 Transitional\u002F\u002FEN\"",[56,3799,3800],{"class":66}," \"http:\u002F\u002Fwww.w3.org\u002FTR\u002Fxhtml1\u002FDTD\u002Fxhtml1-transitional.dtd\"",[56,3802,3308],{"class":76},[56,3804,3805,3807,3809,3811,3813,3815,3818],{"class":58,"line":86},[56,3806,3478],{"class":76},[56,3808,3778],{"class":3304},[56,3810,3484],{"class":3447},[56,3812,3451],{"class":76},[56,3814,312],{"class":76},[56,3816,3817],{"class":66},"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml",[56,3819,83],{"class":76},[56,3821,3822,3825,3827,3829,3832],{"class":58,"line":105},[56,3823,3824],{"class":3447},"    xmlns:h",[56,3826,3451],{"class":76},[56,3828,312],{"class":76},[56,3830,3831],{"class":66},"http:\u002F\u002Fjava.sun.com\u002Fjsf\u002Fhtml",[56,3833,83],{"class":76},[56,3835,3836,3839,3841,3843,3846],{"class":58,"line":120},[56,3837,3838],{"class":3447},"    xmlns:f",[56,3840,3451],{"class":76},[56,3842,312],{"class":76},[56,3844,3845],{"class":66},"http:\u002F\u002Fjava.sun.com\u002Fjsf\u002Fcore",[56,3847,83],{"class":76},[56,3849,3850,3853,3855,3857,3860,3862],{"class":58,"line":248},[56,3851,3852],{"class":3447},"    xmlns:ui",[56,3854,3451],{"class":76},[56,3856,312],{"class":76},[56,3858,3859],{"class":66},"http:\u002F\u002Fjava.sun.com\u002Fjsf\u002Ffacelets",[56,3861,312],{"class":76},[56,3863,3308],{"class":76},[56,3865,3866,3868,3871],{"class":58,"line":261},[56,3867,3478],{"class":76},[56,3869,3870],{"class":3304},"h:head",[56,3872,3308],{"class":76},[56,3874,3875,3877,3880,3883,3885,3887,3890,3892,3895,3897,3899,3902,3904],{"class":58,"line":274},[56,3876,3301],{"class":76},[56,3878,3879],{"class":3304},"meta",[56,3881,3882],{"class":3447}," http-equiv",[56,3884,3451],{"class":76},[56,3886,312],{"class":76},[56,3888,3889],{"class":66},"Content-Type",[56,3891,312],{"class":76},[56,3893,3894],{"class":3447}," content",[56,3896,3451],{"class":76},[56,3898,312],{"class":76},[56,3900,3901],{"class":66},"text\u002Fhtml; charset=UTF-8",[56,3903,312],{"class":76},[56,3905,3906],{"class":76}," \u002F>\n",[56,3908,3909,3911,3914,3916,3918,3920,3922],{"class":58,"line":279},[56,3910,3301],{"class":76},[56,3912,3913],{"class":3304},"title",[56,3915,178],{"class":76},[56,3917,3586],{"class":174},[56,3919,3324],{"class":76},[56,3921,3913],{"class":3304},[56,3923,3308],{"class":76},[56,3925,3926,3928,3930],{"class":58,"line":297},[56,3927,3324],{"class":76},[56,3929,3870],{"class":3304},[56,3931,3308],{"class":76},[56,3933,3934,3936,3939],{"class":58,"line":318},[56,3935,3478],{"class":76},[56,3937,3938],{"class":3304},"h:body",[56,3940,3308],{"class":76},[56,3942,3943],{"class":58,"line":813},[56,3944,3945],{"class":174},"    Merhaba JSF 2\n",[56,3947,3948,3950,3952],{"class":58,"line":1913},[56,3949,3324],{"class":76},[56,3951,3938],{"class":3304},[56,3953,3308],{"class":76},[56,3955,3956,3958,3960],{"class":58,"line":3664},[56,3957,3324],{"class":76},[56,3959,3778],{"class":3304},[56,3961,3308],{"class":76},[16,3963,3964],{},[1388,3965,3966],{},"Projenin Çalıştırılması",[16,3968,3969,3970,3973,3974,3979,3980,3984,3985,3990,3991,3995],{},"Tomcat’in menüsünden ",[1388,3971,3972],{},"Add and Remove"," aracılığı ile projemizi Tomcat altına ekliyoruz.\n",[1645,3975,3977],{"href":3976},"\u002Fimages\u002Fjavaserver-faces-2-jsf-2-Screen-Shot-2011-09-02-at-3.37.24-PM.png",[2168,3978],{"alt":52,"src":3976},"\nDaha sonra Tomcat’i başlatıyoruz. Herhangi bir port değişikliği yapmadıysanız ",[1645,3981,3982],{"href":3982,"rel":3983},"http:\u002F\u002Flocalhost:8080\u002Fjsf2-helloworld\u002Findex.jsf",[1649]," bağlantısına gidince karşımıza aşağıdaki ekran gelir.\n",[1645,3986,3988],{"href":3987},"\u002Fimages\u002Fjavaserver-faces-2-jsf-2-Screen-Shot-2011-09-02-at-3.42.01-PM.png",[2168,3989],{"alt":52,"src":3987},"\nEn saf haliyle bir JSF 2 uygulamasına sahibiz. Bundan sonraki derste bu uygulamamıza, ",[1645,3992,3064],{"href":3993,"rel":3994},"http:\u002F\u002Fwww.primefaces.org\u002F",[1649]," component suite eklemesi yapacağız. Uygulamayı sade halinden PrimeFaces’ın sağladığı bileşenlerle zenginleştireceğiz.\nKolay gelsin.",[1187,3997,3998],{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":52,"searchDepth":86,"depth":86,"links":4000},[],"2011-09-02","JavaServer Faces 2'ye giriş: bileşen tabanlı web geliştirmenin temelleri.",{},"\u002Ftr\u002Fblog\u002Fjavaserver-faces-2-jsf-2",{"title":3184,"description":4002},"tr\u002Fblog\u002Fjavaserver-faces-2-jsf-2",[1758,3049],"\u002Fen\u002Fblog\u002Fjavaserver-faces-2-jsf-2","7Khz40qhJJa7A35VsLvB9qjysn9DxTIkJG2Dzk-0a7s",{"id":4011,"title":4012,"body":4013,"date":5655,"description":5656,"extension":1202,"meta":5657,"navigation":231,"path":5658,"seo":5659,"stem":5660,"tags":5661,"translation":5662,"__hash__":5663},"pages_tr\u002Ftr\u002Fblog\u002Fparse-xml-list-into-objects.md","XML’deki Listeyi Okuyarak Nesnelere Çevirme",{"type":8,"value":4014,"toc":5653},[4015,4024,4135,4147,4683,4686,4971,4974,4999,5002,5025,5041,5058,5061,5638,5641,5647,5650],[16,4016,4017,4018,4023],{},"XStream kütüphanesinden ",[1645,4019,4022],{"href":4020,"rel":4021},"https:\u002F\u002Fwww.sukrucakmak.com\u002Fxstream-java-to-xml-xml-to-java\u002F",[1649],"buradaki"," yazıda bahsetmiştim. Java’dan XML’e, XML’den Java’ya dönüşüm yapmamıza yardımcı oluyordu. Yalnız bir konuyu es geçtiğimi farkettim, ya nesne yerine nesneler olsa o zaman nasıl bir çıktı alacağız? XML’de liste halinde bir sürü nesne olsa o zaman nasıl Java’ya çevireceğiz? Bu yazıda bu konuları aydınlatmaya çalışacağım, fakat ilk yazının mutlaka okunması gerek, çünkü oradaki “Ders” ve “Ogretmen” sınıflarını kullanacağım.\nTek bir “Ders” nesnesinin XML çıktısını oluşturmak çok kolaydı ve aşağıdaki gibi bir sonuç veriyordu.",[47,4025,4027],{"className":2995,"code":4026,"language":2996,"meta":52,"style":52},"\u003CDers>\n  \u003Cid>1\u003C\u002Fid>\n  \u003Cad>Software Engineering\u003C\u002Fad>\n  \u003Cogretmen>\n    \u003Cad>Yasin\u003C\u002Fad>\n    \u003Csoyad>Kenar\u003C\u002Fsoyad>\n  \u003C\u002Fogretmen>\n\u003C\u002FDers>\n",[20,4028,4029,4038,4056,4074,4083,4100,4118,4127],{"__ignoreMap":52},[56,4030,4031,4033,4036],{"class":58,"line":59},[56,4032,3478],{"class":76},[56,4034,4035],{"class":3304},"Ders",[56,4037,3308],{"class":76},[56,4039,4040,4043,4046,4048,4050,4052,4054],{"class":58,"line":86},[56,4041,4042],{"class":76},"  \u003C",[56,4044,4045],{"class":3304},"id",[56,4047,178],{"class":76},[56,4049,1000],{"class":174},[56,4051,3324],{"class":76},[56,4053,4045],{"class":3304},[56,4055,3308],{"class":76},[56,4057,4058,4060,4063,4065,4068,4070,4072],{"class":58,"line":105},[56,4059,4042],{"class":76},[56,4061,4062],{"class":3304},"ad",[56,4064,178],{"class":76},[56,4066,4067],{"class":174},"Software Engineering",[56,4069,3324],{"class":76},[56,4071,4062],{"class":3304},[56,4073,3308],{"class":76},[56,4075,4076,4078,4081],{"class":58,"line":120},[56,4077,4042],{"class":76},[56,4079,4080],{"class":3304},"ogretmen",[56,4082,3308],{"class":76},[56,4084,4085,4087,4089,4091,4094,4096,4098],{"class":58,"line":248},[56,4086,3301],{"class":76},[56,4088,4062],{"class":3304},[56,4090,178],{"class":76},[56,4092,4093],{"class":174},"Yasin",[56,4095,3324],{"class":76},[56,4097,4062],{"class":3304},[56,4099,3308],{"class":76},[56,4101,4102,4104,4107,4109,4112,4114,4116],{"class":58,"line":261},[56,4103,3301],{"class":76},[56,4105,4106],{"class":3304},"soyad",[56,4108,178],{"class":76},[56,4110,4111],{"class":174},"Kenar",[56,4113,3324],{"class":76},[56,4115,4106],{"class":3304},[56,4117,3308],{"class":76},[56,4119,4120,4123,4125],{"class":58,"line":274},[56,4121,4122],{"class":76},"  \u003C\u002F",[56,4124,4080],{"class":3304},[56,4126,3308],{"class":76},[56,4128,4129,4131,4133],{"class":58,"line":279},[56,4130,3324],{"class":76},[56,4132,4035],{"class":3304},[56,4134,3308],{"class":76},[16,4136,4137,4138,4141,4142,4146],{},"Peki ama birden fazla “Ders” nesnesi olsa ne olacak, çıktı nasıl şekillenecek ve öncesinde biz nasıl ürettireceğiz 🙂 Aşağıda kodda, iki adet “Ogretmen” nesnesi üretip bunları kullanarak da üç adet “Ders” nesnesi oluşturacağım (15 ve 19. satırlar arası). Sınıfların özelliklerine yukarıda bağlantısını verdiğim sayfadan bakabilirsiniz.\nSonra bu oluşturduğum nesneleri bir listeye ekleyeceğim (21 ve 24. satırlar arası).\nSon olarak da ",[1388,4139,4140],{},"XStream"," nesnemin ",[4143,4144,4145],"em",{},"toXML()"," metoduna “listemi” vereceğim. Evet önceki örnekte direk “Ders” nesnemi vermiştim, bu sefer listeyi veriyorum (26 ve 28. satırlar arası).",[47,4148,4151],{"className":4149,"code":4150,"language":1758,"meta":52,"style":52},"language-java shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","package org.sukru.xstream.test;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.sukru.xstream.entity.Ders;\nimport org.sukru.xstream.entity.Ogretmen;\nimport com.thoughtworks.xstream.XStream;\npublic class XStreamListTest {\n    public static void main(String[] args) {\n        Ogretmen o1 = new Ogretmen(\"Yunus Emre\", \"Aslan\");\n        Ogretmen o2 = new Ogretmen(\"Yasin\", \"Kenar\");\n        Ders d1 = new Ders(1L, \"Türkçe\", o1);\n        Ders d2 = new Ders(2L, \"Arapça\", o2);\n        Ders d3 = new Ders(3L, \"Farsça\", o2);\n        List\u003CDers> dersList = new ArrayList\u003CDers>();\n        dersList.add(d1);\n        dersList.add(d2);\n        dersList.add(d3);\n        XStream xstream = new XStream();\n        xstream.alias(\"Ders\", Ders.class);\n        String xml = xstream.toXML(dersList);\n        System.out.println(xml);\n    }\n}\n",[20,4152,4153,4178,4198,4215,4240,4265,4287,4301,4332,4370,4401,4437,4471,4504,4532,4548,4563,4578,4596,4625,4650,4671,4677],{"__ignoreMap":52},[56,4154,4155,4158,4161,4163,4166,4168,4171,4173,4176],{"class":58,"line":59},[56,4156,4157],{"class":999},"package",[56,4159,4160],{"class":3447}," org",[56,4162,673],{"class":76},[56,4164,4165],{"class":3447},"sukru",[56,4167,673],{"class":76},[56,4169,4170],{"class":3447},"xstream",[56,4172,673],{"class":76},[56,4174,4175],{"class":3447},"test",[56,4177,2607],{"class":76},[56,4179,4180,4183,4186,4188,4191,4193,4196],{"class":58,"line":86},[56,4181,4182],{"class":999},"import",[56,4184,4185],{"class":3447}," java",[56,4187,673],{"class":76},[56,4189,4190],{"class":3447},"util",[56,4192,673],{"class":76},[56,4194,4195],{"class":3447},"ArrayList",[56,4197,2607],{"class":76},[56,4199,4200,4202,4204,4206,4208,4210,4213],{"class":58,"line":105},[56,4201,4182],{"class":999},[56,4203,4185],{"class":3447},[56,4205,673],{"class":76},[56,4207,4190],{"class":3447},[56,4209,673],{"class":76},[56,4211,4212],{"class":3447},"List",[56,4214,2607],{"class":76},[56,4216,4217,4219,4221,4223,4225,4227,4229,4231,4234,4236,4238],{"class":58,"line":120},[56,4218,4182],{"class":999},[56,4220,4160],{"class":3447},[56,4222,673],{"class":76},[56,4224,4165],{"class":3447},[56,4226,673],{"class":76},[56,4228,4170],{"class":3447},[56,4230,673],{"class":76},[56,4232,4233],{"class":3447},"entity",[56,4235,673],{"class":76},[56,4237,4035],{"class":3447},[56,4239,2607],{"class":76},[56,4241,4242,4244,4246,4248,4250,4252,4254,4256,4258,4260,4263],{"class":58,"line":248},[56,4243,4182],{"class":999},[56,4245,4160],{"class":3447},[56,4247,673],{"class":76},[56,4249,4165],{"class":3447},[56,4251,673],{"class":76},[56,4253,4170],{"class":3447},[56,4255,673],{"class":76},[56,4257,4233],{"class":3447},[56,4259,673],{"class":76},[56,4261,4262],{"class":3447},"Ogretmen",[56,4264,2607],{"class":76},[56,4266,4267,4269,4272,4274,4277,4279,4281,4283,4285],{"class":58,"line":261},[56,4268,4182],{"class":999},[56,4270,4271],{"class":3447}," com",[56,4273,673],{"class":76},[56,4275,4276],{"class":3447},"thoughtworks",[56,4278,673],{"class":76},[56,4280,4170],{"class":3447},[56,4282,673],{"class":76},[56,4284,4140],{"class":3447},[56,4286,2607],{"class":76},[56,4288,4289,4292,4295,4298],{"class":58,"line":274},[56,4290,4291],{"class":3447},"public",[56,4293,4294],{"class":3447}," class",[56,4296,4297],{"class":62}," XStreamListTest",[56,4299,4300],{"class":76}," {\n",[56,4302,4303,4306,4309,4312,4314,4317,4320,4323,4327,4330],{"class":58,"line":279},[56,4304,4305],{"class":3447},"    public",[56,4307,4308],{"class":3447}," static",[56,4310,4311],{"class":3447}," void",[56,4313,492],{"class":2667},[56,4315,4316],{"class":76},"(",[56,4318,4319],{"class":3447},"String",[56,4321,4322],{"class":76},"[]",[56,4324,4326],{"class":4325},"sHdIc"," args",[56,4328,4329],{"class":76},")",[56,4331,4300],{"class":76},[56,4333,4334,4337,4340,4342,4345,4348,4350,4352,4355,4357,4360,4362,4365,4367],{"class":58,"line":297},[56,4335,4336],{"class":3447},"        Ogretmen",[56,4338,4339],{"class":174}," o1 ",[56,4341,3451],{"class":76},[56,4343,4344],{"class":2620}," new",[56,4346,4347],{"class":2667}," Ogretmen",[56,4349,4316],{"class":76},[56,4351,312],{"class":76},[56,4353,4354],{"class":66},"Yunus Emre",[56,4356,312],{"class":76},[56,4358,4359],{"class":76},",",[56,4361,77],{"class":76},[56,4363,4364],{"class":66},"Aslan",[56,4366,312],{"class":76},[56,4368,4369],{"class":76},");\n",[56,4371,4372,4374,4377,4379,4381,4383,4385,4387,4389,4391,4393,4395,4397,4399],{"class":58,"line":318},[56,4373,4336],{"class":3447},[56,4375,4376],{"class":174}," o2 ",[56,4378,3451],{"class":76},[56,4380,4344],{"class":2620},[56,4382,4347],{"class":2667},[56,4384,4316],{"class":76},[56,4386,312],{"class":76},[56,4388,4093],{"class":66},[56,4390,312],{"class":76},[56,4392,4359],{"class":76},[56,4394,77],{"class":76},[56,4396,4111],{"class":66},[56,4398,312],{"class":76},[56,4400,4369],{"class":76},[56,4402,4403,4406,4409,4411,4413,4416,4418,4421,4423,4425,4428,4430,4432,4435],{"class":58,"line":813},[56,4404,4405],{"class":3447},"        Ders",[56,4407,4408],{"class":174}," d1 ",[56,4410,3451],{"class":76},[56,4412,4344],{"class":2620},[56,4414,4415],{"class":2667}," Ders",[56,4417,4316],{"class":76},[56,4419,4420],{"class":999},"1L",[56,4422,4359],{"class":76},[56,4424,77],{"class":76},[56,4426,4427],{"class":66},"Türkçe",[56,4429,312],{"class":76},[56,4431,4359],{"class":76},[56,4433,4434],{"class":174}," o1",[56,4436,4369],{"class":76},[56,4438,4439,4441,4444,4446,4448,4450,4452,4455,4457,4459,4462,4464,4466,4469],{"class":58,"line":1913},[56,4440,4405],{"class":3447},[56,4442,4443],{"class":174}," d2 ",[56,4445,3451],{"class":76},[56,4447,4344],{"class":2620},[56,4449,4415],{"class":2667},[56,4451,4316],{"class":76},[56,4453,4454],{"class":999},"2L",[56,4456,4359],{"class":76},[56,4458,77],{"class":76},[56,4460,4461],{"class":66},"Arapça",[56,4463,312],{"class":76},[56,4465,4359],{"class":76},[56,4467,4468],{"class":174}," o2",[56,4470,4369],{"class":76},[56,4472,4473,4475,4478,4480,4482,4484,4486,4489,4491,4493,4496,4498,4500,4502],{"class":58,"line":3664},[56,4474,4405],{"class":3447},[56,4476,4477],{"class":174}," d3 ",[56,4479,3451],{"class":76},[56,4481,4344],{"class":2620},[56,4483,4415],{"class":2667},[56,4485,4316],{"class":76},[56,4487,4488],{"class":999},"3L",[56,4490,4359],{"class":76},[56,4492,77],{"class":76},[56,4494,4495],{"class":66},"Farsça",[56,4497,312],{"class":76},[56,4499,4359],{"class":76},[56,4501,4468],{"class":174},[56,4503,4369],{"class":76},[56,4505,4506,4509,4511,4513,4515,4518,4520,4522,4525,4527,4529],{"class":58,"line":3669},[56,4507,4508],{"class":3447},"        List",[56,4510,3478],{"class":76},[56,4512,4035],{"class":3447},[56,4514,178],{"class":76},[56,4516,4517],{"class":174}," dersList ",[56,4519,3451],{"class":76},[56,4521,4344],{"class":2620},[56,4523,4524],{"class":3447}," ArrayList",[56,4526,3478],{"class":76},[56,4528,4035],{"class":3447},[56,4530,4531],{"class":76},">();\n",[56,4533,4534,4537,4539,4541,4543,4546],{"class":58,"line":3678},[56,4535,4536],{"class":174},"        dersList",[56,4538,673],{"class":76},[56,4540,194],{"class":2667},[56,4542,4316],{"class":76},[56,4544,4545],{"class":174},"d1",[56,4547,4369],{"class":76},[56,4549,4550,4552,4554,4556,4558,4561],{"class":58,"line":3695},[56,4551,4536],{"class":174},[56,4553,673],{"class":76},[56,4555,194],{"class":2667},[56,4557,4316],{"class":76},[56,4559,4560],{"class":174},"d2",[56,4562,4369],{"class":76},[56,4564,4565,4567,4569,4571,4573,4576],{"class":58,"line":3712},[56,4566,4536],{"class":174},[56,4568,673],{"class":76},[56,4570,194],{"class":2667},[56,4572,4316],{"class":76},[56,4574,4575],{"class":174},"d3",[56,4577,4369],{"class":76},[56,4579,4580,4583,4586,4588,4590,4593],{"class":58,"line":3721},[56,4581,4582],{"class":3447},"        XStream",[56,4584,4585],{"class":174}," xstream ",[56,4587,3451],{"class":76},[56,4589,4344],{"class":2620},[56,4591,4592],{"class":2667}," XStream",[56,4594,4595],{"class":76},"();\n",[56,4597,4598,4601,4603,4606,4608,4610,4612,4614,4616,4618,4620,4623],{"class":58,"line":3731},[56,4599,4600],{"class":174},"        xstream",[56,4602,673],{"class":76},[56,4604,4605],{"class":2667},"alias",[56,4607,4316],{"class":76},[56,4609,312],{"class":76},[56,4611,4035],{"class":66},[56,4613,312],{"class":76},[56,4615,4359],{"class":76},[56,4617,4415],{"class":174},[56,4619,673],{"class":76},[56,4621,4622],{"class":174},"class",[56,4624,4369],{"class":76},[56,4626,4627,4630,4633,4635,4638,4640,4643,4645,4648],{"class":58,"line":3750},[56,4628,4629],{"class":3447},"        String",[56,4631,4632],{"class":174}," xml ",[56,4634,3451],{"class":76},[56,4636,4637],{"class":174}," xstream",[56,4639,673],{"class":76},[56,4641,4642],{"class":2667},"toXML",[56,4644,4316],{"class":76},[56,4646,4647],{"class":174},"dersList",[56,4649,4369],{"class":76},[56,4651,4652,4655,4657,4660,4662,4665,4667,4669],{"class":58,"line":3759},[56,4653,4654],{"class":174},"        System",[56,4656,673],{"class":76},[56,4658,4659],{"class":174},"out",[56,4661,673],{"class":76},[56,4663,4664],{"class":2667},"println",[56,4666,4316],{"class":76},[56,4668,2996],{"class":174},[56,4670,4369],{"class":76},[56,4672,4674],{"class":58,"line":4673},22,[56,4675,4676],{"class":76},"    }\n",[56,4678,4680],{"class":58,"line":4679},23,[56,4681,4682],{"class":76},"}\n",[16,4684,4685],{},"En son olarak da çıktıyı aldığımızda XML aşağıdaki gibi oluyor.",[47,4687,4689],{"className":2995,"code":4688,"language":2996,"meta":52,"style":52},"\u003Clist>\n  \u003CDers>\n    \u003Cid>1\u003C\u002Fid>\n    \u003Cad>Türkçe\u003C\u002Fad>\n    \u003Cogretmen>\n      \u003Cad>Yunus Emre\u003C\u002Fad>\n      \u003Csoyad>Aslan\u003C\u002Fsoyad>\n    \u003C\u002Fogretmen>\n  \u003C\u002FDers>\n  \u003CDers>\n    \u003Cid>2\u003C\u002Fid>\n    \u003Cad>Arapça\u003C\u002Fad>\n    \u003Cogretmen>\n      \u003Cad>Yasin\u003C\u002Fad>\n      \u003Csoyad>Kenar\u003C\u002Fsoyad>\n    \u003C\u002Fogretmen>\n  \u003C\u002FDers>\n  \u003CDers>\n    \u003Cid>3\u003C\u002Fid>\n    \u003Cad>Farsça\u003C\u002Fad>\n    \u003Cogretmen reference=\"..\u002F..\u002FDers[2]\u002Fogretmen\"\u002F>\n  \u003C\u002FDers>\n\u003C\u002Flist>\n",[20,4690,4691,4700,4708,4724,4740,4748,4765,4781,4789,4797,4805,4821,4837,4845,4861,4877,4885,4893,4901,4918,4934,4955,4963],{"__ignoreMap":52},[56,4692,4693,4695,4698],{"class":58,"line":59},[56,4694,3478],{"class":76},[56,4696,4697],{"class":3304},"list",[56,4699,3308],{"class":76},[56,4701,4702,4704,4706],{"class":58,"line":86},[56,4703,4042],{"class":76},[56,4705,4035],{"class":3304},[56,4707,3308],{"class":76},[56,4709,4710,4712,4714,4716,4718,4720,4722],{"class":58,"line":105},[56,4711,3301],{"class":76},[56,4713,4045],{"class":3304},[56,4715,178],{"class":76},[56,4717,1000],{"class":174},[56,4719,3324],{"class":76},[56,4721,4045],{"class":3304},[56,4723,3308],{"class":76},[56,4725,4726,4728,4730,4732,4734,4736,4738],{"class":58,"line":120},[56,4727,3301],{"class":76},[56,4729,4062],{"class":3304},[56,4731,178],{"class":76},[56,4733,4427],{"class":174},[56,4735,3324],{"class":76},[56,4737,4062],{"class":3304},[56,4739,3308],{"class":76},[56,4741,4742,4744,4746],{"class":58,"line":248},[56,4743,3301],{"class":76},[56,4745,4080],{"class":3304},[56,4747,3308],{"class":76},[56,4749,4750,4753,4755,4757,4759,4761,4763],{"class":58,"line":261},[56,4751,4752],{"class":76},"      \u003C",[56,4754,4062],{"class":3304},[56,4756,178],{"class":76},[56,4758,4354],{"class":174},[56,4760,3324],{"class":76},[56,4762,4062],{"class":3304},[56,4764,3308],{"class":76},[56,4766,4767,4769,4771,4773,4775,4777,4779],{"class":58,"line":274},[56,4768,4752],{"class":76},[56,4770,4106],{"class":3304},[56,4772,178],{"class":76},[56,4774,4364],{"class":174},[56,4776,3324],{"class":76},[56,4778,4106],{"class":3304},[56,4780,3308],{"class":76},[56,4782,4783,4785,4787],{"class":58,"line":279},[56,4784,3369],{"class":76},[56,4786,4080],{"class":3304},[56,4788,3308],{"class":76},[56,4790,4791,4793,4795],{"class":58,"line":297},[56,4792,4122],{"class":76},[56,4794,4035],{"class":3304},[56,4796,3308],{"class":76},[56,4798,4799,4801,4803],{"class":58,"line":318},[56,4800,4042],{"class":76},[56,4802,4035],{"class":3304},[56,4804,3308],{"class":76},[56,4806,4807,4809,4811,4813,4815,4817,4819],{"class":58,"line":813},[56,4808,3301],{"class":76},[56,4810,4045],{"class":3304},[56,4812,178],{"class":76},[56,4814,1048],{"class":174},[56,4816,3324],{"class":76},[56,4818,4045],{"class":3304},[56,4820,3308],{"class":76},[56,4822,4823,4825,4827,4829,4831,4833,4835],{"class":58,"line":1913},[56,4824,3301],{"class":76},[56,4826,4062],{"class":3304},[56,4828,178],{"class":76},[56,4830,4461],{"class":174},[56,4832,3324],{"class":76},[56,4834,4062],{"class":3304},[56,4836,3308],{"class":76},[56,4838,4839,4841,4843],{"class":58,"line":3664},[56,4840,3301],{"class":76},[56,4842,4080],{"class":3304},[56,4844,3308],{"class":76},[56,4846,4847,4849,4851,4853,4855,4857,4859],{"class":58,"line":3669},[56,4848,4752],{"class":76},[56,4850,4062],{"class":3304},[56,4852,178],{"class":76},[56,4854,4093],{"class":174},[56,4856,3324],{"class":76},[56,4858,4062],{"class":3304},[56,4860,3308],{"class":76},[56,4862,4863,4865,4867,4869,4871,4873,4875],{"class":58,"line":3678},[56,4864,4752],{"class":76},[56,4866,4106],{"class":3304},[56,4868,178],{"class":76},[56,4870,4111],{"class":174},[56,4872,3324],{"class":76},[56,4874,4106],{"class":3304},[56,4876,3308],{"class":76},[56,4878,4879,4881,4883],{"class":58,"line":3695},[56,4880,3369],{"class":76},[56,4882,4080],{"class":3304},[56,4884,3308],{"class":76},[56,4886,4887,4889,4891],{"class":58,"line":3712},[56,4888,4122],{"class":76},[56,4890,4035],{"class":3304},[56,4892,3308],{"class":76},[56,4894,4895,4897,4899],{"class":58,"line":3721},[56,4896,4042],{"class":76},[56,4898,4035],{"class":3304},[56,4900,3308],{"class":76},[56,4902,4903,4905,4907,4909,4912,4914,4916],{"class":58,"line":3731},[56,4904,3301],{"class":76},[56,4906,4045],{"class":3304},[56,4908,178],{"class":76},[56,4910,4911],{"class":174},"3",[56,4913,3324],{"class":76},[56,4915,4045],{"class":3304},[56,4917,3308],{"class":76},[56,4919,4920,4922,4924,4926,4928,4930,4932],{"class":58,"line":3750},[56,4921,3301],{"class":76},[56,4923,4062],{"class":3304},[56,4925,178],{"class":76},[56,4927,4495],{"class":174},[56,4929,3324],{"class":76},[56,4931,4062],{"class":3304},[56,4933,3308],{"class":76},[56,4935,4936,4938,4940,4943,4945,4947,4950,4952],{"class":58,"line":3759},[56,4937,3301],{"class":76},[56,4939,4080],{"class":3304},[56,4941,4942],{"class":3447}," reference",[56,4944,3451],{"class":76},[56,4946,312],{"class":76},[56,4948,4949],{"class":66},"..\u002F..\u002FDers[2]\u002Fogretmen",[56,4951,312],{"class":76},[56,4953,4954],{"class":76},"\u002F>\n",[56,4956,4957,4959,4961],{"class":58,"line":4673},[56,4958,4122],{"class":76},[56,4960,4035],{"class":3304},[56,4962,3308],{"class":76},[56,4964,4965,4967,4969],{"class":58,"line":4679},[56,4966,3324],{"class":76},[56,4968,4697],{"class":3304},[56,4970,3308],{"class":76},[16,4972,4973],{},"Farkları neler? Birden fazla ders nesnesi var",[47,4975,4977],{"className":2995,"code":4976,"language":2996,"meta":52,"style":52},"\u003Clist>\n\n\u003C\u002Flist>\n",[20,4978,4979,4987,4991],{"__ignoreMap":52},[56,4980,4981,4983,4985],{"class":58,"line":59},[56,4982,3478],{"class":76},[56,4984,4697],{"class":3304},[56,4986,3308],{"class":76},[56,4988,4989],{"class":58,"line":86},[56,4990,232],{"emptyLinePlaceholder":231},[56,4992,4993,4995,4997],{"class":58,"line":105},[56,4994,3324],{"class":76},[56,4996,4697],{"class":3304},[56,4998,3308],{"class":76},[16,5000,5001],{},"arasında yer alıyor ve id bilgisi 3 olan “Ders” nesnesinin “ogretmen” bilgisi",[47,5003,5005],{"className":2995,"code":5004,"language":2996,"meta":52,"style":52},"\u003Cogretmen reference=\"..\u002F..\u002FDers[2]\u002Fogretmen\"\u002F>\n",[20,5006,5007],{"__ignoreMap":52},[56,5008,5009,5011,5013,5015,5017,5019,5021,5023],{"class":58,"line":59},[56,5010,3478],{"class":76},[56,5012,4080],{"class":3304},[56,5014,4942],{"class":3447},[56,5016,3451],{"class":76},[56,5018,312],{"class":76},[56,5020,4949],{"class":66},[56,5022,312],{"class":76},[56,5024,4954],{"class":76},[16,5026,5027,5028,5033,5034,5036,5037,5040],{},"şeklinde 2. sıradaki “Ders”in “ogretmen” bilgisi ile aynı olarak gösteriliyor.\nŞimdi asıl konumuza gelelim, bu xml çıktısını alıp yeni bir xml dosyası oluşturalım, adını da “dersler.xml” olarak verip projemizin altında oluşturacağımız “files” dizini altında oluşturalım. Aşağıda projenin yeni yapısını görebilirsiniz.\n",[1645,5029,5031],{"href":5030},"\u002Fimages\u002Fparse-xml-list-into-objects-xstream-xml-reading.png",[2168,5032],{"alt":52,"src":5030},"\nBu xml dosyasını okuyarak ",[1388,5035,4140],{},"in ",[4143,5038,5039],{},"fromXML()"," metodu ile nesnemize atayacağız. Adım adım işlemlerimizi yazıp gerçekleyelim.",[1729,5042,5043,5046,5049,5052,5055],{},[1124,5044,5045],{},"Dosya ismini al. (“files\u002Fdersler.xml”)",[1124,5047,5048],{},"XStream nesnesi oluştur ve alias tanımla. (XML de nesne “Ders” olarak tutulduğu için alias tanımlamalıyız. Paket ismi ile olsaydı gerek kalmazdı. )",[1124,5050,5051],{},"BufferedReader nesnesine bu dosyayı okuyarak at.",[1124,5053,5054],{},"XStream nesnesi üzerinden fromXML metoduna BufferedReader nesnesini ver, listeyi alsın.",[1124,5056,5057],{},"Listeyi dönerek nesneyi aldığımızı gösterelim.",[16,5059,5060],{},"Kodunu yazarsak;",[47,5062,5064],{"className":4149,"code":5063,"language":1758,"meta":52,"style":52},"package org.sukru.xstream.test;\nimport java.io.BufferedReader;\nimport java.io.FileNotFoundException;\nimport java.io.FileReader;\nimport java.util.List;\nimport org.sukru.xstream.entity.Ders;\nimport com.thoughtworks.xstream.XStream;\npublic class XStreamReadingListTest {\n    @SuppressWarnings(\"unchecked\")\n    public static void main(String[] args) {\n        String file = \"files\u002Fdersler.xml\";\n        BufferedReader reader = null;\n        XStream xstream = new XStream();\n        xstream.alias(\"Ders\", Ders.class);\n        try {\n            reader = new BufferedReader(new FileReader(file));\n        } catch (FileNotFoundException e) {\n            System.out.println(\"[\" + file + \"] adresinde belirtilen dosya bulunamadı!\");\n            e.printStackTrace();\n        }\n        StringBuffer sb = new StringBuffer();\n        List\u003CDers> dersList = (List\u003CDers>) xstream.fromXML(reader);\n        for (Ders ders : dersList) {\n            sb.append(ders.getId()).append(\" – \").append(ders.getAd()).append(\"\\t\").append(ders.getOgretmen().getAd()).append(\"\\n\");\n        }\n        System.out.println(sb);\n    }\n}\n",[20,5065,5066,5086,5104,5121,5138,5154,5178,5198,5209,5229,5251,5269,5282,5296,5322,5329,5357,5377,5415,5427,5432,5449,5488,5509,5603,5608,5628,5633],{"__ignoreMap":52},[56,5067,5068,5070,5072,5074,5076,5078,5080,5082,5084],{"class":58,"line":59},[56,5069,4157],{"class":999},[56,5071,4160],{"class":3447},[56,5073,673],{"class":76},[56,5075,4165],{"class":3447},[56,5077,673],{"class":76},[56,5079,4170],{"class":3447},[56,5081,673],{"class":76},[56,5083,4175],{"class":3447},[56,5085,2607],{"class":76},[56,5087,5088,5090,5092,5094,5097,5099,5102],{"class":58,"line":86},[56,5089,4182],{"class":999},[56,5091,4185],{"class":3447},[56,5093,673],{"class":76},[56,5095,5096],{"class":3447},"io",[56,5098,673],{"class":76},[56,5100,5101],{"class":3447},"BufferedReader",[56,5103,2607],{"class":76},[56,5105,5106,5108,5110,5112,5114,5116,5119],{"class":58,"line":105},[56,5107,4182],{"class":999},[56,5109,4185],{"class":3447},[56,5111,673],{"class":76},[56,5113,5096],{"class":3447},[56,5115,673],{"class":76},[56,5117,5118],{"class":3447},"FileNotFoundException",[56,5120,2607],{"class":76},[56,5122,5123,5125,5127,5129,5131,5133,5136],{"class":58,"line":120},[56,5124,4182],{"class":999},[56,5126,4185],{"class":3447},[56,5128,673],{"class":76},[56,5130,5096],{"class":3447},[56,5132,673],{"class":76},[56,5134,5135],{"class":3447},"FileReader",[56,5137,2607],{"class":76},[56,5139,5140,5142,5144,5146,5148,5150,5152],{"class":58,"line":248},[56,5141,4182],{"class":999},[56,5143,4185],{"class":3447},[56,5145,673],{"class":76},[56,5147,4190],{"class":3447},[56,5149,673],{"class":76},[56,5151,4212],{"class":3447},[56,5153,2607],{"class":76},[56,5155,5156,5158,5160,5162,5164,5166,5168,5170,5172,5174,5176],{"class":58,"line":261},[56,5157,4182],{"class":999},[56,5159,4160],{"class":3447},[56,5161,673],{"class":76},[56,5163,4165],{"class":3447},[56,5165,673],{"class":76},[56,5167,4170],{"class":3447},[56,5169,673],{"class":76},[56,5171,4233],{"class":3447},[56,5173,673],{"class":76},[56,5175,4035],{"class":3447},[56,5177,2607],{"class":76},[56,5179,5180,5182,5184,5186,5188,5190,5192,5194,5196],{"class":58,"line":274},[56,5181,4182],{"class":999},[56,5183,4271],{"class":3447},[56,5185,673],{"class":76},[56,5187,4276],{"class":3447},[56,5189,673],{"class":76},[56,5191,4170],{"class":3447},[56,5193,673],{"class":76},[56,5195,4140],{"class":3447},[56,5197,2607],{"class":76},[56,5199,5200,5202,5204,5207],{"class":58,"line":279},[56,5201,4291],{"class":3447},[56,5203,4294],{"class":3447},[56,5205,5206],{"class":62}," XStreamReadingListTest",[56,5208,4300],{"class":76},[56,5210,5211,5214,5217,5219,5221,5224,5226],{"class":58,"line":297},[56,5212,5213],{"class":76},"    @",[56,5215,5216],{"class":3447},"SuppressWarnings",[56,5218,4316],{"class":76},[56,5220,312],{"class":76},[56,5222,5223],{"class":66},"unchecked",[56,5225,312],{"class":76},[56,5227,5228],{"class":76},")\n",[56,5230,5231,5233,5235,5237,5239,5241,5243,5245,5247,5249],{"class":58,"line":318},[56,5232,4305],{"class":3447},[56,5234,4308],{"class":3447},[56,5236,4311],{"class":3447},[56,5238,492],{"class":2667},[56,5240,4316],{"class":76},[56,5242,4319],{"class":3447},[56,5244,4322],{"class":76},[56,5246,4326],{"class":4325},[56,5248,4329],{"class":76},[56,5250,4300],{"class":76},[56,5252,5253,5255,5258,5260,5262,5265,5267],{"class":58,"line":813},[56,5254,4629],{"class":3447},[56,5256,5257],{"class":174}," file ",[56,5259,3451],{"class":76},[56,5261,77],{"class":76},[56,5263,5264],{"class":66},"files\u002Fdersler.xml",[56,5266,312],{"class":76},[56,5268,2607],{"class":76},[56,5270,5271,5274,5277,5279],{"class":58,"line":1913},[56,5272,5273],{"class":3447},"        BufferedReader",[56,5275,5276],{"class":174}," reader ",[56,5278,3451],{"class":76},[56,5280,5281],{"class":76}," null;\n",[56,5283,5284,5286,5288,5290,5292,5294],{"class":58,"line":3664},[56,5285,4582],{"class":3447},[56,5287,4585],{"class":174},[56,5289,3451],{"class":76},[56,5291,4344],{"class":2620},[56,5293,4592],{"class":2667},[56,5295,4595],{"class":76},[56,5297,5298,5300,5302,5304,5306,5308,5310,5312,5314,5316,5318,5320],{"class":58,"line":3669},[56,5299,4600],{"class":174},[56,5301,673],{"class":76},[56,5303,4605],{"class":2667},[56,5305,4316],{"class":76},[56,5307,312],{"class":76},[56,5309,4035],{"class":66},[56,5311,312],{"class":76},[56,5313,4359],{"class":76},[56,5315,4415],{"class":174},[56,5317,673],{"class":76},[56,5319,4622],{"class":174},[56,5321,4369],{"class":76},[56,5323,5324,5327],{"class":58,"line":3678},[56,5325,5326],{"class":2620},"        try",[56,5328,4300],{"class":76},[56,5330,5331,5334,5336,5338,5341,5343,5346,5349,5351,5354],{"class":58,"line":3695},[56,5332,5333],{"class":174},"            reader ",[56,5335,3451],{"class":76},[56,5337,4344],{"class":2620},[56,5339,5340],{"class":2667}," BufferedReader",[56,5342,4316],{"class":76},[56,5344,5345],{"class":2620},"new",[56,5347,5348],{"class":2667}," FileReader",[56,5350,4316],{"class":76},[56,5352,5353],{"class":174},"file",[56,5355,5356],{"class":76},"));\n",[56,5358,5359,5362,5365,5368,5370,5373,5375],{"class":58,"line":3712},[56,5360,5361],{"class":76},"        }",[56,5363,5364],{"class":2620}," catch",[56,5366,5367],{"class":76}," (",[56,5369,5118],{"class":3447},[56,5371,5372],{"class":4325}," e",[56,5374,4329],{"class":76},[56,5376,4300],{"class":76},[56,5378,5379,5382,5384,5386,5388,5390,5392,5394,5396,5398,5401,5403,5406,5408,5411,5413],{"class":58,"line":3721},[56,5380,5381],{"class":174},"            System",[56,5383,673],{"class":76},[56,5385,4659],{"class":174},[56,5387,673],{"class":76},[56,5389,4664],{"class":2667},[56,5391,4316],{"class":76},[56,5393,312],{"class":76},[56,5395,2881],{"class":66},[56,5397,312],{"class":76},[56,5399,5400],{"class":76}," +",[56,5402,5257],{"class":174},[56,5404,5405],{"class":76},"+",[56,5407,77],{"class":76},[56,5409,5410],{"class":66},"] adresinde belirtilen dosya bulunamadı!",[56,5412,312],{"class":76},[56,5414,4369],{"class":76},[56,5416,5417,5420,5422,5425],{"class":58,"line":3731},[56,5418,5419],{"class":174},"            e",[56,5421,673],{"class":76},[56,5423,5424],{"class":2667},"printStackTrace",[56,5426,4595],{"class":76},[56,5428,5429],{"class":58,"line":3750},[56,5430,5431],{"class":76},"        }\n",[56,5433,5434,5437,5440,5442,5444,5447],{"class":58,"line":3759},[56,5435,5436],{"class":3447},"        StringBuffer",[56,5438,5439],{"class":174}," sb ",[56,5441,3451],{"class":76},[56,5443,4344],{"class":2620},[56,5445,5446],{"class":2667}," StringBuffer",[56,5448,4595],{"class":76},[56,5450,5451,5453,5455,5457,5459,5461,5463,5465,5467,5469,5471,5474,5476,5478,5481,5483,5486],{"class":58,"line":4673},[56,5452,4508],{"class":3447},[56,5454,3478],{"class":76},[56,5456,4035],{"class":3447},[56,5458,178],{"class":76},[56,5460,4517],{"class":174},[56,5462,3451],{"class":76},[56,5464,5367],{"class":76},[56,5466,4212],{"class":3447},[56,5468,3478],{"class":76},[56,5470,4035],{"class":174},[56,5472,5473],{"class":76},">)",[56,5475,4637],{"class":174},[56,5477,673],{"class":76},[56,5479,5480],{"class":2667},"fromXML",[56,5482,4316],{"class":76},[56,5484,5485],{"class":174},"reader",[56,5487,4369],{"class":76},[56,5489,5490,5493,5495,5497,5500,5502,5505,5507],{"class":58,"line":4679},[56,5491,5492],{"class":2620},"        for",[56,5494,5367],{"class":76},[56,5496,4035],{"class":3447},[56,5498,5499],{"class":174}," ders ",[56,5501,925],{"class":2620},[56,5503,5504],{"class":174}," dersList",[56,5506,4329],{"class":76},[56,5508,4300],{"class":76},[56,5510,5512,5515,5517,5520,5522,5525,5527,5530,5533,5535,5537,5539,5542,5544,5546,5548,5550,5552,5554,5557,5559,5561,5563,5565,5568,5570,5572,5574,5576,5578,5580,5583,5586,5588,5590,5592,5594,5596,5599,5601],{"class":58,"line":5511},24,[56,5513,5514],{"class":174},"            sb",[56,5516,673],{"class":76},[56,5518,5519],{"class":2667},"append",[56,5521,4316],{"class":76},[56,5523,5524],{"class":174},"ders",[56,5526,673],{"class":76},[56,5528,5529],{"class":2667},"getId",[56,5531,5532],{"class":76},"()).",[56,5534,5519],{"class":2667},[56,5536,4316],{"class":76},[56,5538,312],{"class":76},[56,5540,5541],{"class":66}," – ",[56,5543,312],{"class":76},[56,5545,199],{"class":76},[56,5547,5519],{"class":2667},[56,5549,4316],{"class":76},[56,5551,5524],{"class":174},[56,5553,673],{"class":76},[56,5555,5556],{"class":2667},"getAd",[56,5558,5532],{"class":76},[56,5560,5519],{"class":2667},[56,5562,4316],{"class":76},[56,5564,312],{"class":76},[56,5566,5567],{"class":174},"\\t",[56,5569,312],{"class":76},[56,5571,199],{"class":76},[56,5573,5519],{"class":2667},[56,5575,4316],{"class":76},[56,5577,5524],{"class":174},[56,5579,673],{"class":76},[56,5581,5582],{"class":2667},"getOgretmen",[56,5584,5585],{"class":76},"().",[56,5587,5556],{"class":2667},[56,5589,5532],{"class":76},[56,5591,5519],{"class":2667},[56,5593,4316],{"class":76},[56,5595,312],{"class":76},[56,5597,5598],{"class":174},"\\n",[56,5600,312],{"class":76},[56,5602,4369],{"class":76},[56,5604,5606],{"class":58,"line":5605},25,[56,5607,5431],{"class":76},[56,5609,5611,5613,5615,5617,5619,5621,5623,5626],{"class":58,"line":5610},26,[56,5612,4654],{"class":174},[56,5614,673],{"class":76},[56,5616,4659],{"class":174},[56,5618,673],{"class":76},[56,5620,4664],{"class":2667},[56,5622,4316],{"class":76},[56,5624,5625],{"class":174},"sb",[56,5627,4369],{"class":76},[56,5629,5631],{"class":58,"line":5630},27,[56,5632,4676],{"class":76},[56,5634,5636],{"class":58,"line":5635},28,[56,5637,4682],{"class":76},[16,5639,5640],{},"En sonunda ekrana bastırmıştık, çıktıyı da verelim 🙂",[47,5642,5645],{"className":5643,"code":5644,"language":1225},[1223],"1 - Türkçe  Yunus Emre\n\n2 - Arapça  Yasin\n\n3 - Farsça  Yasin\n",[20,5646,5644],{"__ignoreMap":52},[16,5648,5649],{},"Bu kodları kendi ortamınızda derleyip adım adım debug yaparsanız, çok daha iyi anlayabilirsiniz.\nKolay gelsin.",[1187,5651,5652],{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":52,"searchDepth":86,"depth":86,"links":5654},[],"2011-08-11","XML dosyasındaki liste elemanlarını Java nesnelerine dönüştürme.",{},"\u002Ftr\u002Fblog\u002Fparse-xml-list-into-objects",{"title":4012,"description":5656},"tr\u002Fblog\u002Fparse-xml-list-into-objects",[1758,2996],"\u002Fen\u002Fblog\u002Fparse-xml-list-into-objects","WwF9t3ToFSjy3hJ73eFn_WHPYMpFVn_YKPOYxVC7vrY",{"id":5665,"title":5666,"body":5667,"date":5874,"description":5875,"extension":1202,"meta":5876,"navigation":231,"path":5877,"seo":5878,"stem":5879,"tags":5880,"translation":5881,"__hash__":5882},"pages_tr\u002Ftr\u002Fblog\u002Fjava-package.md","Java Package",{"type":8,"value":5668,"toc":5872},[5669,5672,5687,5692,5703,5730,5733,5756,5759,5764,5845,5848,5850,5855,5869],[16,5670,5671],{},"Java Package (paket) kavramı Java sınıflarını düzenli tertipli biçimde biraraya getirmek, organize etmek için kullanılır. Aynı kategorideki ya da benzer görevdeki sınıflar biraraya getirilerek mantıksal bir bütünlük sağlanır. Bilgisayarınızdaki klasörler gibi düşünebilirsiniz; müziklerim şurada olsun, resimlerimi şuraya koyayım gibi…",[1121,5673,5674,5684],{},[1124,5675,5676,5677,5679,5680,5683],{},"“package” bir Java sınıfına ait eşsiz bir ad uzayı oluşturur. Örnek olarak ",[1388,5678,4319],{},"sınıfı ",[1388,5681,5682],{},"java.lang"," paketi altında tektir, bulunduğu paket de tektir.",[1124,5685,5686],{},"Aynı paketteki sınıflar birbirlerinin “package-access members” yani paket seviyesinde erişim üyeleri olurlar. Bu kavram şu an havada kalabilir, başka bir yazıda “erişim” üzerine detaylı inceleme yaparız, orada daha iyi anlaşılır.",[16,5688,5689],{},[1388,5690,5691],{},"İsimlendirme Standartı",[16,5693,5694,5695,5702],{},"Çoğu yazılım standartı gibi, bu da zorunlu olmayan ama bu şekil kullanılırsa insanların daha rahat anlayabilecekleri ve anlaşabilecekleri bir düzen olarak karşımıza çıkmaktadır. Örnek olarak ben şu an ",[1388,5696,5697],{},[1645,5698,5701],{"href":5699,"rel":5700},"http:\u002F\u002Fwww.i2i-systems.com",[1649],"i2i systems"," isimli şirkette çalışıyorum ve “EasyProv” adında ticari (commercial) bir uygulama yazıyorum, uygulama üzerindeki sık kullandığım araçları (utilities) bir paket altında toplamak istiyorum;",[47,5704,5706],{"className":4149,"code":5705,"language":1758,"meta":52,"style":52},"package com.i2i.easyprov.util;\n",[20,5707,5708],{"__ignoreMap":52},[56,5709,5710,5712,5714,5716,5719,5721,5724,5726,5728],{"class":58,"line":59},[56,5711,4157],{"class":999},[56,5713,4271],{"class":3447},[56,5715,673],{"class":76},[56,5717,5718],{"class":3447},"i2i",[56,5720,673],{"class":76},[56,5722,5723],{"class":3447},"easyprov",[56,5725,673],{"class":76},[56,5727,4190],{"class":3447},[56,5729,2607],{"class":76},[16,5731,5732],{},"Tekrar okursak şu bilgileri ediniyoruz;",[1729,5734,5735,5741,5746,5751],{},[1124,5736,5737,5740],{},[1388,5738,5739],{},"com"," – Ticari bir paket",[1124,5742,5743,5745],{},[1388,5744,5718],{}," – i2i şirketi yazmış",[1124,5747,5748,5750],{},[1388,5749,5723],{}," – easyprov projesine ait",[1124,5752,5753,5755],{},[1388,5754,4190],{}," – util (utilities) yani araçlar burada bulunuyor",[16,5757,5758],{},"Kısacası bu paket altında neler bulabileceğim önceden görünüyor 🙂",[16,5760,5761],{},[1388,5762,5763],{},"Java Temel Paketlerinden bazıları…",[1121,5765,5766,5773,5781,5789,5797,5805,5813,5821,5829,5837],{},[1124,5767,5768,5772],{},[1645,5769,5682],{"href":5770,"rel":5771},"http:\u002F\u002Fdownload.oracle.com\u002Fjavase\u002F6\u002Fdocs\u002Fapi\u002Fjava\u002Flang\u002Fpackage-summary.html",[1649]," \t— dilin işlevselliği ve temel tiplerin bulunduğu paket, String, Integer gibi…",[1124,5774,5775,5780],{},[1645,5776,5779],{"href":5777,"rel":5778},"http:\u002F\u002Fdownload.oracle.com\u002Fjavase\u002F6\u002Fdocs\u002Fapi\u002Fjava\u002Futil\u002Fpackage-summary.html",[1649],"java.util","\t— collection veri yapılarının sınıfları",[1124,5782,5783,5788],{},[1645,5784,5787],{"href":5785,"rel":5786},"http:\u002F\u002Fdownload.oracle.com\u002Fjavase\u002F6\u002Fdocs\u002Fapi\u002Fjava\u002Fio\u002Fpackage-summary.html",[1649],"java.io"," \t— dosya işlemleri",[1124,5790,5791,5796],{},[1645,5792,5795],{"href":5793,"rel":5794},"http:\u002F\u002Fdownload.oracle.com\u002Fjavase\u002F6\u002Fdocs\u002Fapi\u002F\u002Fjava\u002Fmath\u002Fpackage-summary.html",[1649],"java.math"," \t— matematiksel işlemler",[1124,5798,5799,5804],{},[1645,5800,5803],{"href":5801,"rel":5802},"http:\u002F\u002Fdownload.oracle.com\u002Fjavase\u002F6\u002Fdocs\u002Fapi\u002Fjava\u002Fnet\u002Fpackage-summary.html",[1649],"java.net"," \t— ağ operasyonları, socket programlama vb…",[1124,5806,5807,5812],{},[1645,5808,5811],{"href":5809,"rel":5810},"http:\u002F\u002Fdownload.oracle.com\u002Fjavase\u002F6\u002Fdocs\u002Fapi\u002Fjava\u002Fsecurity\u002Fpackage-summary.html",[1649],"java.security"," \t— anahtar üretme, şifreleme, çözümleme…",[1124,5814,5815,5820],{},[1645,5816,5819],{"href":5817,"rel":5818},"http:\u002F\u002Fdownload.oracle.com\u002Fjavase\u002F6\u002Fdocs\u002Fapi\u002Fjava\u002Fsql\u002Fpackage-summary.html",[1649],"java.sql"," \t—veritabanlarına erişim için Java Database Connectivity (JDBC)",[1124,5822,5823,5828],{},[1645,5824,5827],{"href":5825,"rel":5826},"http:\u002F\u002Fdownload.oracle.com\u002Fjavase\u002F6\u002Fdocs\u002Fapi\u002Fjava\u002Fawt\u002Fpackage-summary.html",[1649],"java.awt"," \t— masaüstü uygulamaları için görsel arayüz bileşen paketi",[1124,5830,5831,5836],{},[1645,5832,5835],{"href":5833,"rel":5834},"http:\u002F\u002Fdownload.oracle.com\u002Fjavase\u002F6\u002Fdocs\u002Fapi\u002Fjavax\u002Fswing\u002Fpackage-summary.html",[1649],"javax.swing"," \t— awt gibi ama platform bağımsız arayüz bileşen paketi",[1124,5838,5839,5844],{},[1645,5840,5843],{"href":5841,"rel":5842},"http:\u002F\u002Fdownload.oracle.com\u002Fjavase\u002F6\u002Fdocs\u002Fapi\u002Fjava\u002Fapplet\u002Fpackage-summary.html",[1649],"java.applet"," \t— applet geliştirmek için kullanılan sınıfların bulunduğu paket",[16,5846,5847],{},"Umarım faydalı olmuştur 🙂 en sevmediğiniz paket “default package” olsun.",[16,5849,2196],{},[16,5851,5852],{},[1388,5853,5854],{},"Kaynaklar",[1729,5856,5857,5863],{},[1124,5858,5859],{},[1645,5860,5861],{"href":5861,"rel":5862},"http:\u002F\u002Fdownload.oracle.com\u002Fjavase\u002Ftutorial\u002Fjava\u002Fconcepts\u002Fpackage.html",[1649],[1124,5864,5865],{},[1645,5866,5867],{"href":5867,"rel":5868},"http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJava_package",[1649],[1187,5870,5871],{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":52,"searchDepth":86,"depth":86,"links":5873},[],"2011-08-01","Java'da package kavramı: sınıfları düzenleme, isim çakışmalarını önleme ve erişim kontrolü.",{},"\u002Ftr\u002Fblog\u002Fjava-package",{"title":5666,"description":5875},"tr\u002Fblog\u002Fjava-package",[1758],"\u002Fen\u002Fblog\u002Fjava-package","8sn-Zo6Vo04qYnwPZiXk97O5M8g4Qobcq3W-zNiBFnc",{"id":5884,"title":5885,"body":5886,"date":6006,"description":6007,"extension":1202,"meta":6008,"navigation":231,"path":6009,"seo":6010,"stem":6011,"tags":6012,"translation":6014,"__hash__":6015},"pages_tr\u002Ftr\u002Fblog\u002Fintroduction-to-exception-handling.md","Introduction to Exception Handling – Hata Yakalamaya Giriş",{"type":8,"value":5887,"toc":6004},[5888,5903,5917,5922,5929,5936,5943,5948,5959,5964,5971,5976,5986,5990],[16,5889,5890,5891,5896,5897,5902],{},"Java’da “exceptions” kavramı hataları yakalamak ve istisnai durumlar için kullanılır. Güçlü bir yazılım için çok gereklidir fakat çoğu zaman gözardı edilmektedir. Biz gözardı etmeyelim.\n“Exception”, programın çalışması sırasında normal akışı kesen bir olaydır. Aşağıdaki resimde “main” metodundan sırasıyla aşağıdan yukarı bir akış görüyoruz ve son adımda bir hata olduğunu anlıyoruz. Hata aldığı yerden itibaren kod, hatayı yakalayabilecek kısmı (exception handler) aramaya başlıyor, bu sefer ters sırada. Hata yakalama mekanızmasını (handler) bulunca hatayı uygun yakalayıcıya geçiyor.\n",[1645,5892,5894],{"href":5893},"\u002Fimages\u002Fintroduction-to-exception-handling-exceptions-callstack.gif",[2168,5895],{"alt":52,"src":5893},"\nBu işlemlere hata yakalama (catch the exception) diyoruz.\n",[1645,5898,5900],{"href":5899},"\u002Fimages\u002Fintroduction-to-exception-handling-exceptions-errorOccurs.gif",[2168,5901],{"alt":52,"src":5899},"\nHata yakalama işlemi;",[1121,5904,5905,5911],{},[1124,5906,5907,5910],{},[20,5908,5909],{},"try"," kod bloğu içinde yakalanarak ya da",[1124,5912,5913,5916],{},[20,5914,5915],{},"throws"," ifadesi ile metodun başında belirlenerek yapılabilir.",[2242,5918,5919],{},[16,5920,5921],{},"Hataların 3 tipi vardır;",[2242,5923,5924],{},[1729,5925,5926],{},[1124,5927,5928],{},"Checked Exception",[2242,5930,5931],{},[1729,5932,5933],{"start":86},[1124,5934,5935],{},"Error",[2242,5937,5938],{},[1729,5939,5940],{"start":105},[1124,5941,5942],{},"Runtime Exception",[16,5944,5945],{},[1388,5946,5947],{},"1. Checked Exception",[16,5949,5950,5951,5954,5955,5958],{},"Örnek olarak ",[20,5952,5953],{},"java.io.FileReader"," sınıfından bir nesne ile dosya okuma işlemi yapıyorsunuz, dosya ismi veriyorsunuz ve dosyayı bulamayarak ",[20,5956,5957],{},"java.io.FileNotFoundException"," hatası fırlatıyor. İyi yazılmış bir programda bunu try-catch bloğu içinde yakalarsınız ve hatayı kullanıcıya bildirir, dosya ismini düzeltmesini sağlarsınız.\n“Error” ya da “Runtime Exception” haricindeki bütün durumlar “Checked Exception” olur.",[16,5960,5961],{},[1388,5962,5963],{},"2. Error",[16,5965,5966,5967,5970],{},"Sizin uygulamanız dışındaki ekstra uygulamalardan kaynaklanan durumlardır. Örnek olarak, dosya okumak istiyorsunuz ama daha dosya sisteminize -mesela diske- erişilemiyor, işte burada “Error” tipinde bir durum oluşur, uygulama ",[20,5968,5969],{},"java.io.IOError."," hatası fırlatır.",[16,5972,5973],{},[1388,5974,5975],{},"3. Runtime Exception",[16,5977,5978,5979,5982,5983,5985],{},"Uygulamanızın çalışma zamanında oluşan durumdur. Uygulamanın kendisinden kaynaklanır, programın bug ıdır, mantık hatasıdır ya da API’nın yanlış kullanımından kaynaklanır 🙂 He ben niye güldüm, herkes gibi ben de yaptım ve genellikle ",[20,5980,5981],{},"NullPointerException"," aldım ondan 🙂\nŞimdi daha açık olması bakımından örneklersek, dosya okumak istiyorsunuz ama dosya adını vermediniz, ee ne olacak çat ",[20,5984,5981],{}," alacaksın. Yani çalışma zamanında uygulama patlamış (!) – genelde böyle derler- olacak.\nBu arada “Error” ve “Runtime Exception” kavramlarına topluca “Unchecked Exceptions” da denilir.\nGiriş için daha doğrusu zihninizde yer edinmesi, karşılık bulması için bu kadar bilginin yeterli olduğunu düşünüyorum. Bu konuda yazacağım bir sonraki yazıda bol bol kod yazacağız 🙂\nKolay gelsin.",[16,5987,5988],{},[1388,5989,5854],{},[1729,5991,5992,5998],{},[1124,5993,5994],{},[1645,5995,5996],{"href":5996,"rel":5997},"http:\u002F\u002Fdownload.oracle.com\u002Fjavase\u002Ftutorial\u002Fessential\u002Fexceptions\u002F",[1649],[1124,5999,6000],{},[1645,6001,6002],{"href":6002,"rel":6003},"http:\u002F\u002Ftutorials.jenkov.com\u002Fjava-exception-handling\u002Findex.html",[1649],{"title":52,"searchDepth":86,"depth":86,"links":6005},[],"2011-07-26","Java'da hata yakalamaya (exception handling) giriş: try-catch mekanizması ve checked\u002Funchecked ayrımı.",{},"\u002Ftr\u002Fblog\u002Fintroduction-to-exception-handling",{"title":5885,"description":6007},"tr\u002Fblog\u002Fintroduction-to-exception-handling",[6013,1758],"exceptions","\u002Fen\u002Fblog\u002Fintroduction-to-exception-handling","kTyXozoGmRU_Ic6RJiBfPpEAPfTjZWKaKhaRe6m4awo",{"id":6017,"title":6018,"body":6019,"date":6672,"description":6673,"extension":1202,"meta":6674,"navigation":231,"path":6675,"seo":6676,"stem":6677,"tags":6678,"translation":6679,"__hash__":6680},"pages_tr\u002Ftr\u002Fblog\u002Fgeneric-types.md","Generic Types",{"type":8,"value":6020,"toc":6670},[6021,6042,6156,6163,6334,6344,6461,6468,6478,6621,6632,6652,6655,6667],[16,6022,6023,6024,6027,6028,6030,6031,6034,6035,6038,6039,6041],{},"Programlamada bazen öyle olur ki bazı değerlerin tipleri önceden kestirilemez. Siz gelecek değerin ",[20,6025,6026],{},"Integer"," olmasını beklerken, bir bakmışsınız ",[20,6029,4319],{}," gelmiş, uygulamanız ",[20,6032,6033],{},"java.lang.ClassCastException"," hatası almış, ",[20,6036,6037],{},"java.lang.String cannot be cast to java.lang.Integer"," diyerek gelen String değerin Integer’a dönüştürülememiş olur.\nİşte bu durumda ",[1388,6040,6018],{}," (Genel Tipler) kavramı karşımıza çıkar.\nŞimdi yukarıda bahsettiğim olayı göstermek açısından hata ile karşılaştığımız bir örneği gösteriyorum. Object tipinde bir değişkeni olan Box isimli bir sınıf var.",[47,6043,6045],{"className":4149,"code":6044,"language":1758,"meta":52,"style":52},"package org.sukru.classic;\npublic class Box {\n    private Object object;\n    public void add(Object object) {\n        this.object = object;\n    }\n    public Object get() {\n        return object;\n    }\n}\n",[20,6046,6047,6064,6075,6088,6107,6121,6125,6139,6148,6152],{"__ignoreMap":52},[56,6048,6049,6051,6053,6055,6057,6059,6062],{"class":58,"line":59},[56,6050,4157],{"class":999},[56,6052,4160],{"class":3447},[56,6054,673],{"class":76},[56,6056,4165],{"class":3447},[56,6058,673],{"class":76},[56,6060,6061],{"class":3447},"classic",[56,6063,2607],{"class":76},[56,6065,6066,6068,6070,6073],{"class":58,"line":86},[56,6067,4291],{"class":3447},[56,6069,4294],{"class":3447},[56,6071,6072],{"class":62}," Box",[56,6074,4300],{"class":76},[56,6076,6077,6080,6083,6086],{"class":58,"line":105},[56,6078,6079],{"class":3447},"    private",[56,6081,6082],{"class":3447}," Object",[56,6084,6085],{"class":174}," object",[56,6087,2607],{"class":76},[56,6089,6090,6092,6094,6096,6098,6101,6103,6105],{"class":58,"line":120},[56,6091,4305],{"class":3447},[56,6093,4311],{"class":3447},[56,6095,239],{"class":2667},[56,6097,4316],{"class":76},[56,6099,6100],{"class":3447},"Object",[56,6102,6085],{"class":4325},[56,6104,4329],{"class":76},[56,6106,4300],{"class":76},[56,6108,6109,6112,6115,6117,6119],{"class":58,"line":248},[56,6110,6111],{"class":76},"        this.",[56,6113,6114],{"class":174},"object ",[56,6116,3451],{"class":76},[56,6118,6085],{"class":174},[56,6120,2607],{"class":76},[56,6122,6123],{"class":58,"line":261},[56,6124,4676],{"class":76},[56,6126,6127,6129,6131,6134,6137],{"class":58,"line":274},[56,6128,4305],{"class":3447},[56,6130,6082],{"class":3447},[56,6132,6133],{"class":2667}," get",[56,6135,6136],{"class":76},"()",[56,6138,4300],{"class":76},[56,6140,6141,6144,6146],{"class":58,"line":279},[56,6142,6143],{"class":2620},"        return",[56,6145,6085],{"class":174},[56,6147,2607],{"class":76},[56,6149,6150],{"class":58,"line":297},[56,6151,4676],{"class":76},[56,6153,6154],{"class":58,"line":318},[56,6155,4682],{"class":76},[16,6157,6158,6159,6162],{},"add() metoduna gönderdiğimiz değişkenin tipi ne olursa kabul edecek de, get() metodunda mecburen “",[1388,6160,6161],{},"cast","” etmemiz gerekecek.",[47,6164,6166],{"className":4149,"code":6165,"language":1758,"meta":52,"style":52},"package org.sukru.classic;\nimport org.sukru.classic.Box;\npublic class BoxTest {\n    public static void main(String[] args) {\n        Box integerBox = new Box();\n        integerBox.add(new Integer(10)); \u002F\u002F Ya burada String ekleseydim?\n        Integer someInteger = (Integer) integerBox.get();\n        System.out.println(someInteger);\n    }\n}\n",[20,6167,6168,6184,6205,6216,6238,6254,6281,6307,6326,6330],{"__ignoreMap":52},[56,6169,6170,6172,6174,6176,6178,6180,6182],{"class":58,"line":59},[56,6171,4157],{"class":999},[56,6173,4160],{"class":3447},[56,6175,673],{"class":76},[56,6177,4165],{"class":3447},[56,6179,673],{"class":76},[56,6181,6061],{"class":3447},[56,6183,2607],{"class":76},[56,6185,6186,6188,6190,6192,6194,6196,6198,6200,6203],{"class":58,"line":86},[56,6187,4182],{"class":999},[56,6189,4160],{"class":3447},[56,6191,673],{"class":76},[56,6193,4165],{"class":3447},[56,6195,673],{"class":76},[56,6197,6061],{"class":3447},[56,6199,673],{"class":76},[56,6201,6202],{"class":3447},"Box",[56,6204,2607],{"class":76},[56,6206,6207,6209,6211,6214],{"class":58,"line":105},[56,6208,4291],{"class":3447},[56,6210,4294],{"class":3447},[56,6212,6213],{"class":62}," BoxTest",[56,6215,4300],{"class":76},[56,6217,6218,6220,6222,6224,6226,6228,6230,6232,6234,6236],{"class":58,"line":120},[56,6219,4305],{"class":3447},[56,6221,4308],{"class":3447},[56,6223,4311],{"class":3447},[56,6225,492],{"class":2667},[56,6227,4316],{"class":76},[56,6229,4319],{"class":3447},[56,6231,4322],{"class":76},[56,6233,4326],{"class":4325},[56,6235,4329],{"class":76},[56,6237,4300],{"class":76},[56,6239,6240,6243,6246,6248,6250,6252],{"class":58,"line":248},[56,6241,6242],{"class":3447},"        Box",[56,6244,6245],{"class":174}," integerBox ",[56,6247,3451],{"class":76},[56,6249,4344],{"class":2620},[56,6251,6072],{"class":2667},[56,6253,4595],{"class":76},[56,6255,6256,6259,6261,6263,6265,6267,6270,6272,6275,6278],{"class":58,"line":261},[56,6257,6258],{"class":174},"        integerBox",[56,6260,673],{"class":76},[56,6262,194],{"class":2667},[56,6264,4316],{"class":76},[56,6266,5345],{"class":2620},[56,6268,6269],{"class":2667}," Integer",[56,6271,4316],{"class":76},[56,6273,6274],{"class":999},"10",[56,6276,6277],{"class":76},"));",[56,6279,6280],{"class":130}," \u002F\u002F Ya burada String ekleseydim?\n",[56,6282,6283,6286,6289,6291,6293,6295,6297,6300,6302,6305],{"class":58,"line":274},[56,6284,6285],{"class":3447},"        Integer",[56,6287,6288],{"class":174}," someInteger ",[56,6290,3451],{"class":76},[56,6292,5367],{"class":76},[56,6294,6026],{"class":174},[56,6296,4329],{"class":76},[56,6298,6299],{"class":174}," integerBox",[56,6301,673],{"class":76},[56,6303,6304],{"class":2667},"get",[56,6306,4595],{"class":76},[56,6308,6309,6311,6313,6315,6317,6319,6321,6324],{"class":58,"line":279},[56,6310,4654],{"class":174},[56,6312,673],{"class":76},[56,6314,4659],{"class":174},[56,6316,673],{"class":76},[56,6318,4664],{"class":2667},[56,6320,4316],{"class":76},[56,6322,6323],{"class":174},"someInteger",[56,6325,4369],{"class":76},[56,6327,6328],{"class":58,"line":297},[56,6329,4676],{"class":76},[56,6331,6332],{"class":58,"line":318},[56,6333,4682],{"class":76},[16,6335,6336,6337,6340,6341,6343],{},"Evet, bu kodları çalıştırdığımızda buraya kadar bir sıkıntı yok ama kod içine de not düştüğüm gibi ya orada ",[20,6338,6339],{},"integerBox.add(\"10\");"," şeklinde String olarak parametre verseydim işte o zaman ilk bahsettiğim ",[20,6342,6033],{}," hatasını alırız.\nÇözüme gelirsek, Box sınıfını  ifadesiyle aşağıdaki gibi generic type olduğunu belirtirsek, ne gelirse gelsin 🙂 bu arada sınıf isimleri aynı olmasına rağmen farklı bir paket altında çalıştığıma dikkat edin.",[47,6345,6347],{"className":4149,"code":6346,"language":1758,"meta":52,"style":52},"package org.sukru.generics;\npublic class Box\u003CT> {\n    private T t; \u002F\u002F T burada \"Type\" anlamına gelir.\n    public void add(T t) {\n        this.t = t;\n    }\n    public T get() {\n        return t;\n    }\n}\n",[20,6348,6349,6366,6383,6398,6416,6429,6433,6445,6453,6457],{"__ignoreMap":52},[56,6350,6351,6353,6355,6357,6359,6361,6364],{"class":58,"line":59},[56,6352,4157],{"class":999},[56,6354,4160],{"class":3447},[56,6356,673],{"class":76},[56,6358,4165],{"class":3447},[56,6360,673],{"class":76},[56,6362,6363],{"class":3447},"generics",[56,6365,2607],{"class":76},[56,6367,6368,6370,6372,6374,6376,6379,6381],{"class":58,"line":86},[56,6369,4291],{"class":3447},[56,6371,4294],{"class":3447},[56,6373,6072],{"class":62},[56,6375,3478],{"class":76},[56,6377,6378],{"class":3447},"T",[56,6380,178],{"class":76},[56,6382,4300],{"class":76},[56,6384,6385,6387,6390,6393,6395],{"class":58,"line":105},[56,6386,6079],{"class":3447},[56,6388,6389],{"class":3447}," T",[56,6391,6392],{"class":174}," t",[56,6394,2910],{"class":76},[56,6396,6397],{"class":130}," \u002F\u002F T burada \"Type\" anlamına gelir.\n",[56,6399,6400,6402,6404,6406,6408,6410,6412,6414],{"class":58,"line":120},[56,6401,4305],{"class":3447},[56,6403,4311],{"class":3447},[56,6405,239],{"class":2667},[56,6407,4316],{"class":76},[56,6409,6378],{"class":3447},[56,6411,6392],{"class":4325},[56,6413,4329],{"class":76},[56,6415,4300],{"class":76},[56,6417,6418,6420,6423,6425,6427],{"class":58,"line":248},[56,6419,6111],{"class":76},[56,6421,6422],{"class":174},"t ",[56,6424,3451],{"class":76},[56,6426,6392],{"class":174},[56,6428,2607],{"class":76},[56,6430,6431],{"class":58,"line":261},[56,6432,4676],{"class":76},[56,6434,6435,6437,6439,6441,6443],{"class":58,"line":274},[56,6436,4305],{"class":3447},[56,6438,6389],{"class":3447},[56,6440,6133],{"class":2667},[56,6442,6136],{"class":76},[56,6444,4300],{"class":76},[56,6446,6447,6449,6451],{"class":58,"line":279},[56,6448,6143],{"class":2620},[56,6450,6392],{"class":174},[56,6452,2607],{"class":76},[56,6454,6455],{"class":58,"line":297},[56,6456,4676],{"class":76},[56,6458,6459],{"class":58,"line":318},[56,6460,4682],{"class":76},[16,6462,6463,6464,6467],{},"Yukarıdaki ",[20,6465,6466],{},"Box\u003CT>"," ifadesindeki T’nin anlamını biraz açarsak “Type” anlamına geldiğini söyleyebiliriz, yani bu sınıftan herhangi bir tipte nesne tanımlanabilir.",[16,6469,6470,6473,6474,6477],{},[20,6471,6472],{},"Box\u003CInteger> integerBox = new Box\u003CInteger>();"," da olabilir ",[20,6475,6476],{},"Box\u003CString> integerBox = new Box\u003CString>();"," da ya herhangi başka bir tip, primitive tipler hariç!\nŞimdi buradan hareketle Integer tipinde bir Box nesnesi üreterek üzerinden gidilecek.",[47,6479,6481],{"className":4149,"code":6480,"language":1758,"meta":52,"style":52},"package org.sukru.generics;\npublic class BoxTest {\n    public static void main(String[] args) {\n        Box\u003CInteger> integerBox = new Box\u003CInteger>();\n        integerBox.add(new Integer(10));\n        Integer someInteger = integerBox.get(); \u002F\u002F cast’e gerek yok!\n        System.out.println(someInteger);\n    }\n}\n",[20,6482,6483,6499,6509,6531,6555,6575,6595,6613,6617],{"__ignoreMap":52},[56,6484,6485,6487,6489,6491,6493,6495,6497],{"class":58,"line":59},[56,6486,4157],{"class":999},[56,6488,4160],{"class":3447},[56,6490,673],{"class":76},[56,6492,4165],{"class":3447},[56,6494,673],{"class":76},[56,6496,6363],{"class":3447},[56,6498,2607],{"class":76},[56,6500,6501,6503,6505,6507],{"class":58,"line":86},[56,6502,4291],{"class":3447},[56,6504,4294],{"class":3447},[56,6506,6213],{"class":62},[56,6508,4300],{"class":76},[56,6510,6511,6513,6515,6517,6519,6521,6523,6525,6527,6529],{"class":58,"line":105},[56,6512,4305],{"class":3447},[56,6514,4308],{"class":3447},[56,6516,4311],{"class":3447},[56,6518,492],{"class":2667},[56,6520,4316],{"class":76},[56,6522,4319],{"class":3447},[56,6524,4322],{"class":76},[56,6526,4326],{"class":4325},[56,6528,4329],{"class":76},[56,6530,4300],{"class":76},[56,6532,6533,6535,6537,6539,6541,6543,6545,6547,6549,6551,6553],{"class":58,"line":120},[56,6534,6242],{"class":3447},[56,6536,3478],{"class":76},[56,6538,6026],{"class":3447},[56,6540,178],{"class":76},[56,6542,6245],{"class":174},[56,6544,3451],{"class":76},[56,6546,4344],{"class":2620},[56,6548,6072],{"class":3447},[56,6550,3478],{"class":76},[56,6552,6026],{"class":3447},[56,6554,4531],{"class":76},[56,6556,6557,6559,6561,6563,6565,6567,6569,6571,6573],{"class":58,"line":248},[56,6558,6258],{"class":174},[56,6560,673],{"class":76},[56,6562,194],{"class":2667},[56,6564,4316],{"class":76},[56,6566,5345],{"class":2620},[56,6568,6269],{"class":2667},[56,6570,4316],{"class":76},[56,6572,6274],{"class":999},[56,6574,5356],{"class":76},[56,6576,6577,6579,6581,6583,6585,6587,6589,6592],{"class":58,"line":261},[56,6578,6285],{"class":3447},[56,6580,6288],{"class":174},[56,6582,3451],{"class":76},[56,6584,6299],{"class":174},[56,6586,673],{"class":76},[56,6588,6304],{"class":2667},[56,6590,6591],{"class":76},"();",[56,6593,6594],{"class":130}," \u002F\u002F cast’e gerek yok!\n",[56,6596,6597,6599,6601,6603,6605,6607,6609,6611],{"class":58,"line":274},[56,6598,4654],{"class":174},[56,6600,673],{"class":76},[56,6602,4659],{"class":174},[56,6604,673],{"class":76},[56,6606,4664],{"class":2667},[56,6608,4316],{"class":76},[56,6610,6323],{"class":174},[56,6612,4369],{"class":76},[56,6614,6615],{"class":58,"line":279},[56,6616,4676],{"class":76},[56,6618,6619],{"class":58,"line":297},[56,6620,4682],{"class":76},[16,6622,6623,6624,6627,6628,6631],{},"Önceki örnekte Integer tipine dönüştürmeye (cast) ihtiyaç vardı, bu örnekte gerek yok. Ayrıca daha güzeli, geliştirme ortamları (IDE) siz farkında olmadan add() metoduna Integer’dan farklı bir tip göndermeye kalkarsanız, sizi daha çalıştırmadan uyarır 🙂 Bence en önemlisi bu 🙂\nBu arada Java 7 ile beraber nesne üretme ifadesi kısalarak ",[20,6625,6626],{},"Box\u003CInteger> integerBox = new Box\u003C>();"," şeklinde olacakmış, yani ",[4143,6629,6630],{},"diamond operator"," denilen kısıma tekrardan tip belirtmeye gerek kalmayacakmış.\nAklınızda şu soru belirmiş olabilir,  bu “T” de neyin nesi idi, ben başka birşey kullanabilir miyim. İşte burada da Java Naming Convention dediğimiz Java İsimlendirme Standartları devreye giriyor.",[1121,6633,6634,6637,6640,6643,6646,6649],{},[1124,6635,6636],{},"E – Element (genellikle Java Collection Framework da kullanılıyor)",[1124,6638,6639],{},"K – Key",[1124,6641,6642],{},"N – Number",[1124,6644,6645],{},"T – Type",[1124,6647,6648],{},"V – Value",[1124,6650,6651],{},"S,U,V vb. (eğer 2., 3., 4. tipler gerekirse de bu harfler seçiliyor)",[16,6653,6654],{},"Standartlar olmasaydı birbirlerinden ayırt etmek zor olacaktı, yani gözünü seveyim standartların 🙂",[16,6656,6657,6658,6661,6662,6666],{},"Umarım konuyu anlamak açısından faydalı olmuştur.\nKolay gelsin.\n",[4143,6659,6660],{},"Not:"," Anlaşılırlığı artırmak bakımından ",[1645,6663,6664],{"href":6664,"rel":6665},"http:\u002F\u002Fdownload.oracle.com\u002Fjavase\u002Ftutorial\u002Fjava\u002Fgenerics\u002Findex.html",[1649]," adresindeki örnekler kullanılmıştır.",[1187,6668,6669],{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":52,"searchDepth":86,"depth":86,"links":6671},[],"2011-07-08","Java'da generic tiplerin neden ortaya çıktığı ve ClassCastException'lardan nasıl korundukları.",{},"\u002Ftr\u002Fblog\u002Fgeneric-types",{"title":6018,"description":6673},"tr\u002Fblog\u002Fgeneric-types",[6363,1758],"\u002Fen\u002Fblog\u002Fgeneric-types","7iLW6TSyS_4frBytc_1nvacrBr-5DzZ7eVwYfGUUjk8",{"id":6682,"title":6683,"body":6684,"date":6747,"description":6748,"extension":1202,"meta":6749,"navigation":231,"path":6750,"seo":6751,"stem":6752,"tags":6753,"translation":6754,"__hash__":6755},"pages_tr\u002Ftr\u002Fblog\u002Fjsf-model-view-controller-mvc.md","JSF Model-View-Controller (MVC)",{"type":8,"value":6685,"toc":6745},[6686,6697,6717,6725],[16,6687,6688,6689,6692,6693,6696],{},"Yeni nesil Internet uygulamalarında karşımıza çıkan ilk kavramlardan biri, ",[1388,6690,6691],{},"MVC","açılımı ",[1388,6694,6695],{},"Model-View-Controller",". JSF de kendine örnek olarak MVC yapısını baz almaktadır.",[1729,6698,6699,6705,6711],{},[1124,6700,6701,6704],{},[1388,6702,6703],{},"Model"," – Java sınıflarımız",[1124,6706,6707,6710],{},[1388,6708,6709],{},"View"," – Görsel Sayfalarımız, önyüzümüz",[1124,6712,6713,6716],{},[1388,6714,6715],{},"Controller"," – Servlet (Faces Servlet) olarak görülebilir.",[16,6718,6719,6724],{},[1645,6720,6723],{"href":6721,"rel":6722},"http:\u002F\u002Fjsfcompref.appspot.com\u002F",[1649],"JSF Referans kitabı","nda konu ile alakalı şu resim olayı betimliyor.",[16,6726,6727,6732,6733,6735,6736,6738,6739,6741,6742,6744],{},[1645,6728,6730],{"href":6729},"\u002Fimages\u002Fjsf-model-view-controller-mvc-jsf-mvc-demonstration.png",[2168,6731],{"alt":52,"src":6729},"\nResimdeki örnek projeye göre daha da açarsak; ",[1388,6734,6703],{}," katmanında Java Beans bulunurken (User.java, Account.java, Item.java, ShoppingCart.java, vb…), ",[1388,6737,6709],{}," katmanında xhtml sayfalarımız (showUser.xhtml, purchase.xhtml, editUser.xhtml vb…) bulunur ve bu sayfalar son kullanıcının gördüğü görsel sayfalardır. Tabi temelde işleri yöneten de ",[1388,6740,6715],{},"dediğimiz ",[4143,6743,3321],{},"tir. Faces Servlet kavramını çok açmıyorum, JSF’in derinlerine başka bir yazıda inip inceleriz.\nSözün özü, kurumsal uygulamalarda (Java için JavaEE) katmanlar birbirinden ayrılmıştır. Sunum katmanı (View) son kullanıcıya yönelik, arka plana iş veren, görsel bir pozisyon üstlenirken, arka plandaki iş mantığını yapan (Model) ayrı bir katman olarak bulunmakta ve bunları da yöneten, kontrol eden (Controller) bir başka katman bulunmaktadır.\nYazılım dili bağımsız bir kavram olan MVC’yi, sanıyorum ki Java bilsin bilmesin herkes temelde bu gösterimle anlayabilir. 🙂 Anlamayan iletişime geçsin.\nKolay gelsin.",{"title":52,"searchDepth":86,"depth":86,"links":6746},[],"2011-07-05","JSF'in MVC mimarisini nasıl uyguladığı: model, view ve controller ayrımı.",{},"\u002Ftr\u002Fblog\u002Fjsf-model-view-controller-mvc",{"title":6683,"description":6748},"tr\u002Fblog\u002Fjsf-model-view-controller-mvc",[1758,3049],"\u002Fen\u002Fblog\u002Fjsf-model-view-controller-mvc","zpS0SwoTTmd7HKmMZdfIBvBq9Avmm8GcMye89s3FB0A",{"id":6757,"title":6758,"body":6759,"date":7076,"description":7077,"extension":1202,"meta":7078,"navigation":231,"path":7079,"seo":7080,"stem":7081,"tags":7082,"translation":7084,"__hash__":7085},"pages_tr\u002Ftr\u002Fblog\u002Fweb-service-client.md","Web Servis İstemcisi (Web Service Client)",{"type":8,"value":6760,"toc":7074},[6761,6774,6782,6790,6815,6823,6837,7064,7071],[16,6762,6763,6764,6769,6770,6773],{},"Web servis hizmetinin nasıl sağlanacağını ",[1645,6765,6768],{"href":6766,"rel":6767},"https:\u002F\u002Fwww.sukrucakmak.com\u002F2011\u002F06\u002Fglassfish-uzerinde-web-servis\u002F",[1649],"önceki bir yazımda"," GlassFish uygulama sunucusu için anlatmıştım. Lâkin web servis hizmetlerini kullanan bir de istemciler vardır. Bu yazıda da bir istemcinin nasıl oluşturulacağını ve çalıştırılacağını anlatmaya çalışacağım.\nEclipse üzerinde bir ",[1388,6771,6772],{},"web servis istemcisi"," oluşturmak için öncelikle standart bir java projesi açıyorum. Önceki projenin adı “WebServiceGlassFish” olduğundan buna da “WebServiceGlassFishClient” dedim, herhangi bir isim vermekte elbette özgürsünüz.",[16,6775,6776,6781],{},[1645,6777,6779],{"href":6778},"\u002Fimages\u002Fweb-service-client-web-service-client-project.png",[2168,6780],{"alt":52,"src":6778},"\nProje adını girdikten sonra, tamam deyip projeyi oluşturuyoruz. Sırada istemciyi oluşturmak var; projeye sağ tıklayıp, New > Web Service Client diyoruz.",[16,6783,6784,6789],{},[1645,6785,6787],{"href":6786},"\u002Fimages\u002Fweb-service-client-web-service-client.png",[2168,6788],{"alt":52,"src":6786},"\nBir sonraki ekranda bize istemcinin adresini soruyor, yani web servisi nerede diyor. GlassFish üzerinde çalışan web servisinin adresini aşağıda görüldüğü gibi giriyorum, bir kaç saniye sonra algılıyor ve devam et butonu ve diğerleri aktif oluyor. Tamam diyoruz.",[16,6791,6792,6797,6798,6803,6804,6807,6808,6811,6812,6814],{},[1645,6793,6795],{"href":6794},"\u002Fimages\u002Fweb-service-client-web-service-client-definition.png",[2168,6796],{"alt":52,"src":6794},"\nBu aşamalardan sonra artık Eclipse bizim için aşağıdaki gibi bir yapı hazırlıyor. Yapılanın özü şu; web service nerede, hangi metodları var, ne tür parametre alır vb sorulara cevap olacak sınıfları hazırlamak 🙂\n",[1645,6799,6801],{"href":6800},"\u002Fimages\u002Fweb-service-client-web-service-client-project-structure.png",[2168,6802],{"alt":52,"src":6800},"\nSırada artık web servisi sorgulamak ve cevabını almak var,  bunun için “",[1388,6805,6806],{},"WebServiceTest","” adında “",[1388,6809,6810],{},"org.sukru.webservices.test","” paketi altında “",[1388,6813,33],{},"” metodu olan bir sınıf oluşturuyorum.",[16,6816,6817,6822],{},[1645,6818,6820],{"href":6819},"\u002Fimages\u002Fweb-service-client-web-service-client-test-class.png",[2168,6821],{"alt":52,"src":6819},"\nVee oluşan sınıf içinden sırasıyla şu işlemleri yapıyorum;",[1729,6824,6825,6828,6831,6834],{},[1124,6826,6827],{},"Web servis ile iletişime geçmek çin bir “service” oluşturuyorum.",[1124,6829,6830],{},"“service” üzerinden bir bağlantı alıp HelloWorld nesneme atıyorum.",[1124,6832,6833],{},"Metodun herhangi aksi bir durumda exception fırlatabileceğini tahmin eden Eclipse exception eklemem konusunda beni uyarıyor, ekliyorum.",[1124,6835,6836],{},"Web servisin çağıracağım metodu -sayHello()- String döneceğinden buna uygun tanımı yapıp, web servisi çalıştırıyorum.",[47,6838,6840],{"className":4149,"code":6839,"language":1758,"meta":52,"style":52},"package org.sukru.webservices.test;\nimport org.sukru.webservices.HelloWorld;\nimport org.sukru.webservices.HelloWorldService;\nimport org.sukru.webservices.HelloWorldServiceLocator;\npublic class WebServiceTest {\n    public static void main(String[] args) throws Exception {\n        HelloWorldService service = new HelloWorldServiceLocator();\n        HelloWorld port = service.getHelloWorldPort();\n        String cevap = port.sayHello(\"Melih Sakarya\");\n        System.out.println(\"Web Servisinin Cevabı: \"+ cevap );\n    }\n}\n",[20,6841,6842,6863,6884,6905,6926,6937,6965,6982,7001,7029,7056,7060],{"__ignoreMap":52},[56,6843,6844,6846,6848,6850,6852,6854,6857,6859,6861],{"class":58,"line":59},[56,6845,4157],{"class":999},[56,6847,4160],{"class":3447},[56,6849,673],{"class":76},[56,6851,4165],{"class":3447},[56,6853,673],{"class":76},[56,6855,6856],{"class":3447},"webservices",[56,6858,673],{"class":76},[56,6860,4175],{"class":3447},[56,6862,2607],{"class":76},[56,6864,6865,6867,6869,6871,6873,6875,6877,6879,6882],{"class":58,"line":86},[56,6866,4182],{"class":999},[56,6868,4160],{"class":3447},[56,6870,673],{"class":76},[56,6872,4165],{"class":3447},[56,6874,673],{"class":76},[56,6876,6856],{"class":3447},[56,6878,673],{"class":76},[56,6880,6881],{"class":3447},"HelloWorld",[56,6883,2607],{"class":76},[56,6885,6886,6888,6890,6892,6894,6896,6898,6900,6903],{"class":58,"line":105},[56,6887,4182],{"class":999},[56,6889,4160],{"class":3447},[56,6891,673],{"class":76},[56,6893,4165],{"class":3447},[56,6895,673],{"class":76},[56,6897,6856],{"class":3447},[56,6899,673],{"class":76},[56,6901,6902],{"class":3447},"HelloWorldService",[56,6904,2607],{"class":76},[56,6906,6907,6909,6911,6913,6915,6917,6919,6921,6924],{"class":58,"line":120},[56,6908,4182],{"class":999},[56,6910,4160],{"class":3447},[56,6912,673],{"class":76},[56,6914,4165],{"class":3447},[56,6916,673],{"class":76},[56,6918,6856],{"class":3447},[56,6920,673],{"class":76},[56,6922,6923],{"class":3447},"HelloWorldServiceLocator",[56,6925,2607],{"class":76},[56,6927,6928,6930,6932,6935],{"class":58,"line":248},[56,6929,4291],{"class":3447},[56,6931,4294],{"class":3447},[56,6933,6934],{"class":62}," WebServiceTest",[56,6936,4300],{"class":76},[56,6938,6939,6941,6943,6945,6947,6949,6951,6953,6955,6957,6960,6963],{"class":58,"line":261},[56,6940,4305],{"class":3447},[56,6942,4308],{"class":3447},[56,6944,4311],{"class":3447},[56,6946,492],{"class":2667},[56,6948,4316],{"class":76},[56,6950,4319],{"class":3447},[56,6952,4322],{"class":76},[56,6954,4326],{"class":4325},[56,6956,4329],{"class":76},[56,6958,6959],{"class":3447}," throws",[56,6961,6962],{"class":3447}," Exception",[56,6964,4300],{"class":76},[56,6966,6967,6970,6973,6975,6977,6980],{"class":58,"line":274},[56,6968,6969],{"class":3447},"        HelloWorldService",[56,6971,6972],{"class":174}," service ",[56,6974,3451],{"class":76},[56,6976,4344],{"class":2620},[56,6978,6979],{"class":2667}," HelloWorldServiceLocator",[56,6981,4595],{"class":76},[56,6983,6984,6987,6990,6992,6994,6996,6999],{"class":58,"line":279},[56,6985,6986],{"class":3447},"        HelloWorld",[56,6988,6989],{"class":174}," port ",[56,6991,3451],{"class":76},[56,6993,2506],{"class":174},[56,6995,673],{"class":76},[56,6997,6998],{"class":2667},"getHelloWorldPort",[56,7000,4595],{"class":76},[56,7002,7003,7005,7008,7010,7013,7015,7018,7020,7022,7025,7027],{"class":58,"line":297},[56,7004,4629],{"class":3447},[56,7006,7007],{"class":174}," cevap ",[56,7009,3451],{"class":76},[56,7011,7012],{"class":174}," port",[56,7014,673],{"class":76},[56,7016,7017],{"class":2667},"sayHello",[56,7019,4316],{"class":76},[56,7021,312],{"class":76},[56,7023,7024],{"class":66},"Melih Sakarya",[56,7026,312],{"class":76},[56,7028,4369],{"class":76},[56,7030,7031,7033,7035,7037,7039,7041,7043,7045,7048,7050,7052,7054],{"class":58,"line":318},[56,7032,4654],{"class":174},[56,7034,673],{"class":76},[56,7036,4659],{"class":174},[56,7038,673],{"class":76},[56,7040,4664],{"class":2667},[56,7042,4316],{"class":76},[56,7044,312],{"class":76},[56,7046,7047],{"class":66},"Web Servisinin Cevabı: ",[56,7049,312],{"class":76},[56,7051,5405],{"class":76},[56,7053,7007],{"class":174},[56,7055,4369],{"class":76},[56,7057,7058],{"class":58,"line":813},[56,7059,4676],{"class":76},[56,7061,7062],{"class":58,"line":1913},[56,7063,4682],{"class":76},[16,7065,7066,7067,7070],{},"Sağ tıklayıp Run As > Java Application deyince çıktının şu şekilde olduğunu görürsek ",[1388,7068,7069],{},"Web Servisinin Cevabı: Merhaba Melih Sakarya!",", sevinebiliriz 🙂\nKolay gelsin.",[1187,7072,7073],{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":52,"searchDepth":86,"depth":86,"links":7075},[],"2011-07-01","Java ile bir web servis istemcisi (web service client) yazma adımları.",{},"\u002Ftr\u002Fblog\u002Fweb-service-client",{"title":6758,"description":7077},"tr\u002Fblog\u002Fweb-service-client",[1758,7083],"web service","\u002Fen\u002Fblog\u002Fweb-service-client","y7s5KIgIuqcSwx1ibWNMZKSPmJ-rECMN0A68L5xYzGo",{"id":7087,"title":7088,"body":7089,"date":7644,"description":7645,"extension":1202,"meta":7646,"navigation":231,"path":7647,"seo":7648,"stem":7649,"tags":7650,"translation":7651,"__hash__":7652},"pages_tr\u002Ftr\u002Fblog\u002Fjava-system-properties.md","Java System Properties",{"type":8,"value":7090,"toc":7642},[7091,7101,7112,7343,7350,7356,7359,7365,7627,7630,7636,7639],[16,7092,7093,7094,7097,7098],{},"Java’da ",[1388,7095,7096],{},"sistem bilgilerini"," Java’nın bize sunduğu anahtar kelimeler aracılığı ile alabiliriz.\n",[20,7099,7100],{},"Properties properties = System.getProperties();",[16,7102,7103,7104,7107,7108,7111],{},"ifadesi ile sistem özelliklerini bir “properties” nesnesine alalım, sonra ",[1388,7105,7106],{},"entrySet","i bir ",[1388,7109,7110],{},"Set","nesnesine aşağıdaki ifade ile alalım ki üzerinde dönerek tek tek değerlerine bakabilelim. Çünkü daha sonra sadece zaman zaman işimize yarayacak olanlara bakabilelim. Örnek kodu aşağıda görebilirsiniz.",[47,7113,7115],{"className":4149,"code":7114,"language":1758,"meta":52,"style":52},"package org.sukru.system;\nimport java.util.Map.Entry;\nimport java.util.Properties;\nimport java.util.Set;\npublic class SystemProperties {\n    public static void main(String[] args) {\n        Properties properties = System.getProperties();\n        Set\u003CEntry\u003CObject, Object>> sets = properties.entrySet();\n        for (Entry\u003CObject, Object> entry : sets) {\n            System.out.println(entry.getKey());\n        }\n    }\n}\n",[20,7116,7117,7134,7156,7173,7189,7200,7222,7242,7276,7306,7331,7335,7339],{"__ignoreMap":52},[56,7118,7119,7121,7123,7125,7127,7129,7132],{"class":58,"line":59},[56,7120,4157],{"class":999},[56,7122,4160],{"class":3447},[56,7124,673],{"class":76},[56,7126,4165],{"class":3447},[56,7128,673],{"class":76},[56,7130,7131],{"class":3447},"system",[56,7133,2607],{"class":76},[56,7135,7136,7138,7140,7142,7144,7146,7149,7151,7154],{"class":58,"line":86},[56,7137,4182],{"class":999},[56,7139,4185],{"class":3447},[56,7141,673],{"class":76},[56,7143,4190],{"class":3447},[56,7145,673],{"class":76},[56,7147,7148],{"class":3447},"Map",[56,7150,673],{"class":76},[56,7152,7153],{"class":3447},"Entry",[56,7155,2607],{"class":76},[56,7157,7158,7160,7162,7164,7166,7168,7171],{"class":58,"line":105},[56,7159,4182],{"class":999},[56,7161,4185],{"class":3447},[56,7163,673],{"class":76},[56,7165,4190],{"class":3447},[56,7167,673],{"class":76},[56,7169,7170],{"class":3447},"Properties",[56,7172,2607],{"class":76},[56,7174,7175,7177,7179,7181,7183,7185,7187],{"class":58,"line":120},[56,7176,4182],{"class":999},[56,7178,4185],{"class":3447},[56,7180,673],{"class":76},[56,7182,4190],{"class":3447},[56,7184,673],{"class":76},[56,7186,7110],{"class":3447},[56,7188,2607],{"class":76},[56,7190,7191,7193,7195,7198],{"class":58,"line":248},[56,7192,4291],{"class":3447},[56,7194,4294],{"class":3447},[56,7196,7197],{"class":62}," SystemProperties",[56,7199,4300],{"class":76},[56,7201,7202,7204,7206,7208,7210,7212,7214,7216,7218,7220],{"class":58,"line":261},[56,7203,4305],{"class":3447},[56,7205,4308],{"class":3447},[56,7207,4311],{"class":3447},[56,7209,492],{"class":2667},[56,7211,4316],{"class":76},[56,7213,4319],{"class":3447},[56,7215,4322],{"class":76},[56,7217,4326],{"class":4325},[56,7219,4329],{"class":76},[56,7221,4300],{"class":76},[56,7223,7224,7227,7230,7232,7235,7237,7240],{"class":58,"line":274},[56,7225,7226],{"class":3447},"        Properties",[56,7228,7229],{"class":174}," properties ",[56,7231,3451],{"class":76},[56,7233,7234],{"class":174}," System",[56,7236,673],{"class":76},[56,7238,7239],{"class":2667},"getProperties",[56,7241,4595],{"class":76},[56,7243,7244,7247,7249,7251,7253,7255,7257,7259,7262,7265,7267,7270,7272,7274],{"class":58,"line":279},[56,7245,7246],{"class":3447},"        Set",[56,7248,3478],{"class":76},[56,7250,7153],{"class":3447},[56,7252,3478],{"class":76},[56,7254,6100],{"class":3447},[56,7256,4359],{"class":76},[56,7258,6082],{"class":3447},[56,7260,7261],{"class":76},">>",[56,7263,7264],{"class":174}," sets ",[56,7266,3451],{"class":76},[56,7268,7269],{"class":174}," properties",[56,7271,673],{"class":76},[56,7273,7106],{"class":2667},[56,7275,4595],{"class":76},[56,7277,7278,7280,7282,7284,7286,7288,7290,7292,7294,7297,7299,7302,7304],{"class":58,"line":297},[56,7279,5492],{"class":2620},[56,7281,5367],{"class":76},[56,7283,7153],{"class":3447},[56,7285,3478],{"class":76},[56,7287,6100],{"class":3447},[56,7289,4359],{"class":76},[56,7291,6082],{"class":3447},[56,7293,178],{"class":76},[56,7295,7296],{"class":174}," entry ",[56,7298,925],{"class":2620},[56,7300,7301],{"class":174}," sets",[56,7303,4329],{"class":76},[56,7305,4300],{"class":76},[56,7307,7308,7310,7312,7314,7316,7318,7320,7323,7325,7328],{"class":58,"line":318},[56,7309,5381],{"class":174},[56,7311,673],{"class":76},[56,7313,4659],{"class":174},[56,7315,673],{"class":76},[56,7317,4664],{"class":2667},[56,7319,4316],{"class":76},[56,7321,7322],{"class":174},"entry",[56,7324,673],{"class":76},[56,7326,7327],{"class":2667},"getKey",[56,7329,7330],{"class":76},"());\n",[56,7332,7333],{"class":58,"line":813},[56,7334,5431],{"class":76},[56,7336,7337],{"class":58,"line":1913},[56,7338,4676],{"class":76},[56,7340,7341],{"class":58,"line":3664},[56,7342,4682],{"class":76},[16,7344,7345,7346,7349],{},"Bu kodu çalıştırdığımızda gelen tüm anahtar kelimelere ulaşabiliriz. Çıktısında her bir satır sistem hakkında farklı bir bilgiyi veriyor, genellikle tek sefer anlarsınız neyi sorgulayabileceğinizi. Örnek: ",[1388,7347,7348],{},"java.version"," size sistem üzerindeki Java versiyon bilgisini verecektir. Çıktıyı aşağıya ekledim.",[47,7351,7354],{"className":7352,"code":7353,"language":1225},[1223],"java.runtime.name\nsun.boot.library.path\njava.vm.version\njava.vm.vendor\njava.vendor.url\npath.separator\njava.vm.name\nfile.encoding.pkg\nsun.java.launcher\nuser.country\nsun.os.patch.level\njava.vm.specification.name\nuser.dir\njava.runtime.version\njava.awt.graphicsenv\njava.endorsed.dirs\nos.arch\njava.io.tmpdir\nline.separator\njava.vm.specification.vendor\nuser.variant\nos.name\nsun.jnu.encoding\njava.library.path\njava.specification.name\njava.class.version\nsun.management.compiler\nos.version\nuser.home\nuser.timezone\njava.awt.printerjob\nfile.encoding\njava.specification.version\njava.class.path\nuser.name\njava.vm.specification.version\nsun.java.command\njava.home\nsun.arch.data.model\nuser.language\njava.specification.vendor\nawt.toolkit\njava.vm.info\njava.version\njava.ext.dirs\nsun.boot.class.path\njava.vendor\nfile.separator\njava.vendor.url.bug\nsun.io.unicode.encoding\nsun.cpu.endian\nsun.desktop\nsun.cpu.isalist\n",[20,7355,7353],{"__ignoreMap":52},[16,7357,7358],{},"Yine de bir kaç tanesini kendi makinemde sorgulayayım, bakalım ben nasıl bir ortamda çalışıyormuşum 🙂",[16,7360,7361,7364],{},[20,7362,7363],{},"System.getProperty(String property)"," ifadesinde paramatre olarak vericez ve bize değerini dönecek.",[47,7366,7368],{"className":4149,"code":7367,"language":1758,"meta":52,"style":52},"package org.sukru.system;\npublic class SystemInfo {\n    public static void main(String[] args) {\n        System.out.println(\"Java version: \" + System.getProperty(\"java.version\"));\n        System.out.println(\"Java vendor: \" + System.getProperty(\"java.vendor\"));\n        System.out.println(\"Operating system name: \" + System.getProperty(\"os.name\"));\n        System.out.println(\"Operating system architecture: \" + System.getProperty(\"os.arch\"));\n        System.out.println(\"Operating system version: \" + System.getProperty(\"os.version\"));\n    }\n}\n",[20,7369,7370,7386,7397,7419,7459,7499,7539,7579,7619,7623],{"__ignoreMap":52},[56,7371,7372,7374,7376,7378,7380,7382,7384],{"class":58,"line":59},[56,7373,4157],{"class":999},[56,7375,4160],{"class":3447},[56,7377,673],{"class":76},[56,7379,4165],{"class":3447},[56,7381,673],{"class":76},[56,7383,7131],{"class":3447},[56,7385,2607],{"class":76},[56,7387,7388,7390,7392,7395],{"class":58,"line":86},[56,7389,4291],{"class":3447},[56,7391,4294],{"class":3447},[56,7393,7394],{"class":62}," SystemInfo",[56,7396,4300],{"class":76},[56,7398,7399,7401,7403,7405,7407,7409,7411,7413,7415,7417],{"class":58,"line":105},[56,7400,4305],{"class":3447},[56,7402,4308],{"class":3447},[56,7404,4311],{"class":3447},[56,7406,492],{"class":2667},[56,7408,4316],{"class":76},[56,7410,4319],{"class":3447},[56,7412,4322],{"class":76},[56,7414,4326],{"class":4325},[56,7416,4329],{"class":76},[56,7418,4300],{"class":76},[56,7420,7421,7423,7425,7427,7429,7431,7433,7435,7438,7440,7442,7444,7446,7449,7451,7453,7455,7457],{"class":58,"line":120},[56,7422,4654],{"class":174},[56,7424,673],{"class":76},[56,7426,4659],{"class":174},[56,7428,673],{"class":76},[56,7430,4664],{"class":2667},[56,7432,4316],{"class":76},[56,7434,312],{"class":76},[56,7436,7437],{"class":66},"Java version: ",[56,7439,312],{"class":76},[56,7441,5400],{"class":76},[56,7443,7234],{"class":174},[56,7445,673],{"class":76},[56,7447,7448],{"class":2667},"getProperty",[56,7450,4316],{"class":76},[56,7452,312],{"class":76},[56,7454,7348],{"class":66},[56,7456,312],{"class":76},[56,7458,5356],{"class":76},[56,7460,7461,7463,7465,7467,7469,7471,7473,7475,7478,7480,7482,7484,7486,7488,7490,7492,7495,7497],{"class":58,"line":248},[56,7462,4654],{"class":174},[56,7464,673],{"class":76},[56,7466,4659],{"class":174},[56,7468,673],{"class":76},[56,7470,4664],{"class":2667},[56,7472,4316],{"class":76},[56,7474,312],{"class":76},[56,7476,7477],{"class":66},"Java vendor: ",[56,7479,312],{"class":76},[56,7481,5400],{"class":76},[56,7483,7234],{"class":174},[56,7485,673],{"class":76},[56,7487,7448],{"class":2667},[56,7489,4316],{"class":76},[56,7491,312],{"class":76},[56,7493,7494],{"class":66},"java.vendor",[56,7496,312],{"class":76},[56,7498,5356],{"class":76},[56,7500,7501,7503,7505,7507,7509,7511,7513,7515,7518,7520,7522,7524,7526,7528,7530,7532,7535,7537],{"class":58,"line":261},[56,7502,4654],{"class":174},[56,7504,673],{"class":76},[56,7506,4659],{"class":174},[56,7508,673],{"class":76},[56,7510,4664],{"class":2667},[56,7512,4316],{"class":76},[56,7514,312],{"class":76},[56,7516,7517],{"class":66},"Operating system name: ",[56,7519,312],{"class":76},[56,7521,5400],{"class":76},[56,7523,7234],{"class":174},[56,7525,673],{"class":76},[56,7527,7448],{"class":2667},[56,7529,4316],{"class":76},[56,7531,312],{"class":76},[56,7533,7534],{"class":66},"os.name",[56,7536,312],{"class":76},[56,7538,5356],{"class":76},[56,7540,7541,7543,7545,7547,7549,7551,7553,7555,7558,7560,7562,7564,7566,7568,7570,7572,7575,7577],{"class":58,"line":274},[56,7542,4654],{"class":174},[56,7544,673],{"class":76},[56,7546,4659],{"class":174},[56,7548,673],{"class":76},[56,7550,4664],{"class":2667},[56,7552,4316],{"class":76},[56,7554,312],{"class":76},[56,7556,7557],{"class":66},"Operating system architecture: ",[56,7559,312],{"class":76},[56,7561,5400],{"class":76},[56,7563,7234],{"class":174},[56,7565,673],{"class":76},[56,7567,7448],{"class":2667},[56,7569,4316],{"class":76},[56,7571,312],{"class":76},[56,7573,7574],{"class":66},"os.arch",[56,7576,312],{"class":76},[56,7578,5356],{"class":76},[56,7580,7581,7583,7585,7587,7589,7591,7593,7595,7598,7600,7602,7604,7606,7608,7610,7612,7615,7617],{"class":58,"line":279},[56,7582,4654],{"class":174},[56,7584,673],{"class":76},[56,7586,4659],{"class":174},[56,7588,673],{"class":76},[56,7590,4664],{"class":2667},[56,7592,4316],{"class":76},[56,7594,312],{"class":76},[56,7596,7597],{"class":66},"Operating system version: ",[56,7599,312],{"class":76},[56,7601,5400],{"class":76},[56,7603,7234],{"class":174},[56,7605,673],{"class":76},[56,7607,7448],{"class":2667},[56,7609,4316],{"class":76},[56,7611,312],{"class":76},[56,7613,7614],{"class":66},"os.version",[56,7616,312],{"class":76},[56,7618,5356],{"class":76},[56,7620,7621],{"class":58,"line":297},[56,7622,4676],{"class":76},[56,7624,7625],{"class":58,"line":318},[56,7626,4682],{"class":76},[16,7628,7629],{},"Çıktısı da görüldüğü üzere;",[47,7631,7634],{"className":7632,"code":7633,"language":1225},[1223],"Java version: 1.6.0_25\nJava vendor: Sun Microsystems Inc.\nOperating system name: Windows 7\nOperating system architecture: amd64\nOperating system version: 6.1\n",[20,7635,7633],{"__ignoreMap":52},[16,7637,7638],{},"Tabi bunları kullanmak isteğe bağlı olarak değişebileceği gibi sektörde yazdığınız bir programın açılışında yazılım versiyonunu ve çalıştığı ortamı özetlemek bakımından loglar arasına bastırılır.\nKolay gelsin.",[1187,7640,7641],{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":52,"searchDepth":86,"depth":86,"links":7643},[],"2011-06-30","Java System Properties ile çalışma zamanında ortam ve sistem bilgilerini okuma.",{},"\u002Ftr\u002Fblog\u002Fjava-system-properties",{"title":7088,"description":7645},"tr\u002Fblog\u002Fjava-system-properties",[1758],"\u002Fen\u002Fblog\u002Fjava-system-properties","jjRrP_wrluI4bz3l9COtHHm7lLvBve_9fMSre-O8CFc",{"id":7654,"title":7655,"body":7656,"date":7770,"description":7771,"extension":1202,"meta":7772,"navigation":231,"path":7773,"seo":7774,"stem":7775,"tags":7776,"translation":7777,"__hash__":7778},"pages_tr\u002Ftr\u002Fblog\u002Fjsf-life-cycle.md","JSF Life Cycle (Yaşam Döngüsü)",{"type":8,"value":7657,"toc":7768},[7658,7672,7677,7683,7692,7712,7720,7729,7738,7747,7756,7765],[16,7659,7660,7661,5367,7666,7671],{},"Bu yazıda ",[1645,7662,7665],{"href":7663,"rel":7664},"http:\u002F\u002Ftr.wikipedia.org\u002Fwiki\u002FJavaServer_Faces",[1649],"JSF Uygulama Çatısı",[1645,7667,7670],{"href":7668,"rel":7669},"http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJavaServer_Faces",[1649],"JavaServer Faces Framework",")’nın nasıl bir hayat sürdüğünü yazmaya çalışacağım 🙂 Geç yatar, geç kalkar, alkol de alırmış… Şaka bir yana, JSF’in web sayfasında işlem yapmamızdan işlemin sonucunu bize gösterene kadar hangi işlemleri yaptığı ve bize nasıl cevap verdiğini bu işlere ilk başlamam da çok merak etmiştim, hatta aramış taramış anlamamıştım, çünkü bunu açıkça anlatan pek bir kaynak yoktu, olanlar da benim dilimden anlatmıyordu (köylü usulü arıyordum çünkü 🙂 ).",[2242,7673,7674],{},[16,7675,7676],{},"Bir JSF isteği 6 adımda işlenir.",[16,7678,7679,7682],{},[1645,7680,6723],{"href":6721,"rel":7681},[1649],"ndan aldığım şu resim olayı betimliyor. Ben de bu adımları tek tek açacağım.",[16,7684,7685,7691],{},[1645,7686,7688],{"href":7687},"\u002Fimages\u002Fjsf-life-cycle-jsf-life-cycle.png",[2168,7689],{"alt":7690,"src":7687},"jsf-life-cycle","\nŞimdi bu adımları sıralayalım;",[1729,7693,7694,7697,7700,7703,7706,7709],{},[1124,7695,7696],{},"Create or Restore View",[1124,7698,7699],{},"Apply Values from User",[1124,7701,7702],{},"Ensure Values are Valid",[1124,7704,7705],{},"Update Model with Valid Values",[1124,7707,7708],{},"Fetch a New View, If Necessary",[1124,7710,7711],{},"Render View",[16,7713,7714,7719],{},[4143,7715,7716],{},[1388,7717,7718],{},"1. Create or Restore View"," (Görünümü oluştur)",[16,7721,7722,7723,7728],{},"Bir JSF uygulamasını açtığımız anda karşımıza gelen sayfaya ait bileşenlerin oluşması gerçekleşir. Kullanıcı burada bir “submit” yani bir gönderme işlemi -genellikle bir buton aracılığı ile olur ama ajax ile başka yöntemler de mevcut- gerçekleştirir.\n",[4143,7724,7725],{},[1388,7726,7727],{},"2. Apply Values from User"," (Kullanıcıdan verileri al)",[16,7730,7731,7732,7737],{},"Kullanıcının girdiği değerler bu “Apply Values” fazında alınır.\n",[4143,7733,7734],{},[1388,7735,7736],{},"3. Ensure Values are Valid"," (Verilerin doğruluğunu kontrol et)",[16,7739,7740,7741,7746],{},"Kullanıcının girdiği değerlerin kritelerle uyup uymadığı, zorunlu alanların doldurup doldurulmadığı vb diğer işlemler bu fazda kontrol edilir, eğer herşey uygunsa bir sonraki faza geçilir, yoksa ilk faza dönülür. Mesela ilgili alana sadece sayı girilmesini istemişiz ama kullanıcı harf yazmış ya da ilgili alanı zorunlu yapmışız ama kullanıcı herhangi bir değer vermeden formu göndermiş gibi…\n",[4143,7742,7743],{},[1388,7744,7745],{},"4. Update Model with Valid Values"," (Verilerle modeli güncelleştir)",[16,7748,7749,7750,7755],{},"Verilerin doğruluğunun bir önceki fazda kontrolünden sonra sıra artık modeli (bean, entity vb.) güncelleştirir yani formdan elde edilen verilen yapışmasını sağlar. Formdaki “name” alanına girilmiş veri “Student” sınıfının “name” alanına yapışması gibi…\n",[4143,7751,7752],{},[1388,7753,7754],{},"5. Fetch a New View, If Necessary"," (Gerekliyse yeni bir görünüm oluştur)",[16,7757,7758,7759,7764],{},"Eğer formdaki işlemler sonucu yeni bir görünüm yaratmak istiyorsak onu oluşturur.\n",[4143,7760,7761],{},[1388,7762,7763],{},"6. Render View"," (Görünümü İşle)",[16,7766,7767],{},"Son olarak web sayfasını kullanıcıya tekrardan göstermek için bu faz çalışır ve görünüm işlenmiş olur.\nGenel hatlarıyla JSF’in böyle bir yaşantısı var, şimdilik mâkul görünüyor ne dersiniz 🙂",{"title":52,"searchDepth":86,"depth":86,"links":7769},[],"2011-06-28","JSF yaşam döngüsünün 6 adımı: isteğin işlenmesinden yanıtın render edilmesine kadar geçen süreç.",{},"\u002Ftr\u002Fblog\u002Fjsf-life-cycle",{"title":7655,"description":7771},"tr\u002Fblog\u002Fjsf-life-cycle",[1758,3049],"\u002Fen\u002Fblog\u002Fjsf-life-cycle","vQdkaQH8jPnqwXuS0YkSYHAJCL-iUKbT3jF-CcYidm0",{"id":7780,"title":7781,"body":7782,"date":7770,"description":8247,"extension":1202,"meta":8248,"navigation":231,"path":8249,"seo":8250,"stem":8251,"tags":8252,"translation":8254,"__hash__":8255},"pages_tr\u002Ftr\u002Fblog\u002Fweb-service-on-glassfish.md","GlassFish Üzerinde Web Servis",{"type":8,"value":7783,"toc":8245},[7784,7793,7812,7831,7842,7850,7861,7877,8046,8049,8168,8175,8183,8195,8208,8222,8230,8242],[16,7785,7786,7787,7792],{},"Web servis (",[1645,7788,7791],{"href":7789,"rel":7790},"http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWeb_service",[1649],"Web Service",") kavramı, iki cihaz arasındaki iletişim yöntemlerinden biridir.",[16,7794,7795,7796,7803,7804,7811],{},"Java ile web servisi geliştirmenin birden çok yolu var. Son yeniliklerle beraber “",[1388,7797,7798],{},[1645,7799,7802],{"href":7800,"rel":7801},"http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJava_annotation",[1649],"Annotations","” kavramı sayesinde bu iş daha da kolaylaştı, elle wsdl üretmeye gerek kalmadı, gerekli annotation işaretlerini yerine koyunca program çalışırken wsdl kendi kendine oluşuyor.\n",[1645,7805,7808],{"href":7806,"rel":7807},"http:\u002F\u002Fglassfish.java.net\u002F",[1649],[1388,7809,7810],{},"GlassFish"," bilindiği üzere JavaEE’nin temel taşlarından biri olan açık kaynak uygulama sunucusu, sektörde kullanımı diğer sunuculara göre az olabilir ama en bilindiklerden ve bana göre kullanması çok kolay olanlardan biri. Yönetim paneli kullanımını hakkaten kolaylaştırıyor.\nŞimdi GlassFish üzerinde gerçekleştireceğimiz web servis örneğine gelirsek, edinmemiz gereken malzemeler şunlar;",[1121,7813,7814,7825],{},[1124,7815,7816,7820],{},[1645,7817,7819],{"href":7806,"rel":7818},[1649],"GlassFish 3 uygulama sunucusu",[1645,7821,7823],{"href":7822},"\u002Fimages\u002Fweb-service-on-glassfish-glassfish_logo.png",[2168,7824],{"alt":52,"src":7822},[1124,7826,7827],{},[1645,7828,7830],{"href":3206,"rel":7829},[1649],"Eclipse IDE for Java EE Developers",[16,7832,7833,7834,7837,7838,7841],{},"Adım adım ilerleyelim. Yapacağımız web servisi, en basitinden aldığı “String” parametreye karşılık “Merhaba {parametre}” desin.\nEclipse üzerinde yeni bir “",[1388,7835,7836],{},"Dynamic Web Project","” açalım. Resimde görüldüğü gibi adını “",[1388,7839,7840],{},"WebServiceGlassFish","” koydum.",[16,7843,7844,7849],{},[1645,7845,7847],{"href":7846},"\u002Fimages\u002Fweb-service-on-glassfish-web-service-glassfish.png",[2168,7848],{"alt":52,"src":7846},"\nİleri dedikten sonra bize kaynak kodları nereye yazdığımı soruyor, hiç dokunmadan ileri diyoruz, karşımıza aşağıdaki ekran geliyor, web.xml oluşturmasını özellikle istiyoruz.",[16,7851,7852,7857,7858,7860],{},[1645,7853,7855],{"href":7854},"\u002Fimages\u002Fweb-service-on-glassfish-web-xml.png",[2168,7856],{"alt":52,"src":7854},"\nSıra geldi kodlamamıza, artık sınıfımızı ve yazmak istediğimiz metodları gerçekleştirelim. Proje içinde yeni bir Java sınıfı oluşturup adını “",[1388,7859,6881],{},"” veriyorum, sınıfını da “**org.sukru.webservices”**olarak yazıyorum.",[16,7862,7863,7868,7869,7872,7873,7876],{},[1645,7864,7866],{"href":7865},"\u002Fimages\u002Fweb-service-on-glassfish-web-service-class.png",[2168,7867],{"alt":52,"src":7865},"\nBir sınıfın web servis olabilmesi için sınıfın başına ",[1388,7870,7871],{},"@WebService()"," annotation işareti koyulur, web servis metodu olması istediğimiz metodun başına da ",[1388,7874,7875],{},"@WebMethod()"," annotation işareti konulur. Tamam bilmemiz gerekenler bu kadardı, dağılabilirsiniz 🙂 Şaka bir yana örnek java kodu aşağıda…",[47,7878,7880],{"className":4149,"code":7879,"language":1758,"meta":52,"style":52},"package org.sukru.webservices;\nimport javax.jws.WebMethod;\nimport javax.jws.WebService;\n@WebService()\npublic class HelloWorld {\n    @WebMethod()\n    public String sayHello(String name) {\n        System.out.println(\"Merhaba \" + name);\n        return \"Merhaba\" + name + \"!\";\n    }\n}\n",[20,7881,7882,7898,7917,7934,7944,7955,7963,7984,8011,8038,8042],{"__ignoreMap":52},[56,7883,7884,7886,7888,7890,7892,7894,7896],{"class":58,"line":59},[56,7885,4157],{"class":999},[56,7887,4160],{"class":3447},[56,7889,673],{"class":76},[56,7891,4165],{"class":3447},[56,7893,673],{"class":76},[56,7895,6856],{"class":3447},[56,7897,2607],{"class":76},[56,7899,7900,7902,7905,7907,7910,7912,7915],{"class":58,"line":86},[56,7901,4182],{"class":999},[56,7903,7904],{"class":3447}," javax",[56,7906,673],{"class":76},[56,7908,7909],{"class":3447},"jws",[56,7911,673],{"class":76},[56,7913,7914],{"class":3447},"WebMethod",[56,7916,2607],{"class":76},[56,7918,7919,7921,7923,7925,7927,7929,7932],{"class":58,"line":105},[56,7920,4182],{"class":999},[56,7922,7904],{"class":3447},[56,7924,673],{"class":76},[56,7926,7909],{"class":3447},[56,7928,673],{"class":76},[56,7930,7931],{"class":3447},"WebService",[56,7933,2607],{"class":76},[56,7935,7936,7939,7941],{"class":58,"line":120},[56,7937,7938],{"class":76},"@",[56,7940,7931],{"class":3447},[56,7942,7943],{"class":76},"()\n",[56,7945,7946,7948,7950,7953],{"class":58,"line":248},[56,7947,4291],{"class":3447},[56,7949,4294],{"class":3447},[56,7951,7952],{"class":62}," HelloWorld",[56,7954,4300],{"class":76},[56,7956,7957,7959,7961],{"class":58,"line":261},[56,7958,5213],{"class":76},[56,7960,7914],{"class":3447},[56,7962,7943],{"class":76},[56,7964,7965,7967,7970,7973,7975,7977,7980,7982],{"class":58,"line":274},[56,7966,4305],{"class":3447},[56,7968,7969],{"class":3447}," String",[56,7971,7972],{"class":2667}," sayHello",[56,7974,4316],{"class":76},[56,7976,4319],{"class":3447},[56,7978,7979],{"class":4325}," name",[56,7981,4329],{"class":76},[56,7983,4300],{"class":76},[56,7985,7986,7988,7990,7992,7994,7996,7998,8000,8003,8005,8007,8009],{"class":58,"line":279},[56,7987,4654],{"class":174},[56,7989,673],{"class":76},[56,7991,4659],{"class":174},[56,7993,673],{"class":76},[56,7995,4664],{"class":2667},[56,7997,4316],{"class":76},[56,7999,312],{"class":76},[56,8001,8002],{"class":66},"Merhaba ",[56,8004,312],{"class":76},[56,8006,5400],{"class":76},[56,8008,7979],{"class":174},[56,8010,4369],{"class":76},[56,8012,8013,8015,8017,8020,8022,8024,8027,8029,8031,8034,8036],{"class":58,"line":297},[56,8014,6143],{"class":2620},[56,8016,77],{"class":76},[56,8018,8019],{"class":66},"Merhaba",[56,8021,312],{"class":76},[56,8023,5400],{"class":76},[56,8025,8026],{"class":174}," name ",[56,8028,5405],{"class":76},[56,8030,77],{"class":76},[56,8032,8033],{"class":66},"!",[56,8035,312],{"class":76},[56,8037,2607],{"class":76},[56,8039,8040],{"class":58,"line":318},[56,8041,4676],{"class":76},[56,8043,8044],{"class":58,"line":813},[56,8045,4682],{"class":76},[16,8047,8048],{},"Yapılması gereken ek bir şey de web.xml üzerinde servlet tanımlarını yapmak, en başta oluşan web.xml içerisine aşağıdaki kodu yazıyorum.",[47,8050,8052],{"className":2995,"code":8051,"language":2996,"meta":52,"style":52},"\u003Cservlet>\n    \u003Cdisplay-name>HelloWorld\u003C\u002Fdisplay-name>\n    \u003Cservlet-name>HelloWorld\u003C\u002Fservlet-name>\n    \u003Cservlet-class>org.sukru.webservices.HelloWorld\u003C\u002Fservlet-class>\n\u003C\u002Fservlet>\n\u003Cservlet-mapping>\n    \u003Cservlet-name>HelloWorld\u003C\u002Fservlet-name>\n    \u003Curl-pattern>\u002FHelloWorld\u003C\u002Furl-pattern>\n\u003C\u002Fservlet-mapping>\n",[20,8053,8054,8062,8078,8094,8111,8119,8127,8143,8160],{"__ignoreMap":52},[56,8055,8056,8058,8060],{"class":58,"line":59},[56,8057,3478],{"class":76},[56,8059,3305],{"class":3304},[56,8061,3308],{"class":76},[56,8063,8064,8066,8068,8070,8072,8074,8076],{"class":58,"line":86},[56,8065,3301],{"class":76},[56,8067,3581],{"class":3304},[56,8069,178],{"class":76},[56,8071,6881],{"class":174},[56,8073,3324],{"class":76},[56,8075,3581],{"class":3304},[56,8077,3308],{"class":76},[56,8079,8080,8082,8084,8086,8088,8090,8092],{"class":58,"line":105},[56,8081,3301],{"class":76},[56,8083,3316],{"class":3304},[56,8085,178],{"class":76},[56,8087,6881],{"class":174},[56,8089,3324],{"class":76},[56,8091,3316],{"class":3304},[56,8093,3308],{"class":76},[56,8095,8096,8098,8100,8102,8105,8107,8109],{"class":58,"line":120},[56,8097,3301],{"class":76},[56,8099,3335],{"class":3304},[56,8101,178],{"class":76},[56,8103,8104],{"class":174},"org.sukru.webservices.HelloWorld",[56,8106,3324],{"class":76},[56,8108,3335],{"class":3304},[56,8110,3308],{"class":76},[56,8112,8113,8115,8117],{"class":58,"line":248},[56,8114,3324],{"class":76},[56,8116,3305],{"class":3304},[56,8118,3308],{"class":76},[56,8120,8121,8123,8125],{"class":58,"line":261},[56,8122,3478],{"class":76},[56,8124,3385],{"class":3304},[56,8126,3308],{"class":76},[56,8128,8129,8131,8133,8135,8137,8139,8141],{"class":58,"line":274},[56,8130,3301],{"class":76},[56,8132,3316],{"class":3304},[56,8134,178],{"class":76},[56,8136,6881],{"class":174},[56,8138,3324],{"class":76},[56,8140,3316],{"class":3304},[56,8142,3308],{"class":76},[56,8144,8145,8147,8149,8151,8154,8156,8158],{"class":58,"line":279},[56,8146,3301],{"class":76},[56,8148,3410],{"class":3304},[56,8150,178],{"class":76},[56,8152,8153],{"class":174},"\u002FHelloWorld",[56,8155,3324],{"class":76},[56,8157,3410],{"class":3304},[56,8159,3308],{"class":76},[56,8161,8162,8164,8166],{"class":58,"line":297},[56,8163,3324],{"class":76},[56,8165,3385],{"class":3304},[56,8167,3308],{"class":76},[16,8169,8170,8171,8174],{},"Böylelikle, HelloWorld isminde bir servletim olduğunu, url bilgisi ve sınıfının nerede olduğunu eklemiş oldum ki uygulama sunucusu tanısın uygulamamızı.\nSıra artık önemli noktalardan birine yani GlassFish’e yüklemeye geldi. Eclipse’in Servers tabında yeni sunucu eklemek istiyoruz ama standartında GlassFish i bulamazsınız o sebeple, Servers altında New > Download Additional Adapters yolunu takip ediyoruz, gelen listeden “",[1388,8172,8173],{},"Oracle GlassFish Server Tools","” seçimini yapıyoruz, kısa bir yüklemeden sonra Eclipse i yeniden başlatmak istiyor, başlat diyoruz.\nŞimdi ekleyebiliriz. Aşağıda örneği var.",[16,8176,8177,8182],{},[1645,8178,8180],{"href":8179},"\u002Fimages\u002Fweb-service-on-glassfish-eclipse-server-glassfish.png",[2168,8181],{"alt":52,"src":8179},"\nGlassFish kullanıcı adı ve şifremizi giriyoruz.",[16,8184,8185,8190,8191,8194],{},[1645,8186,8188],{"href":8187},"\u002Fimages\u002Fweb-service-on-glassfish-eclipse-server-glassfish-password.png",[2168,8189],{"alt":52,"src":8187},"\nŞifre ekranından sonra hangi uygulamaları sunucuya atacağımızı soruyor, web servis uygulamamamızı seçiyoruz. Eğer sizin Eclipse inize GlassFish sunucusu tanımlanmışsa sadece sunucuya sağ tıklayıp “Add and Remove” ile de sadece uygulamayı yükleyebilirsiniz.\nSon olarak projenin build-path ine GlassFish i göstermemiz lazım. proje sağ tıklayıp ",[4143,8192,8193],{},"Build Path > Configure Build-Path"," yolunu takip edip Server Runtime üzerinden sunucuyu ekliyoruz.",[16,8196,8197,8202,8203,8207],{},[1645,8198,8200],{"href":8199},"\u002Fimages\u002Fweb-service-on-glassfish-web-service-properties-add-glassfish-library.png",[2168,8201],{"alt":52,"src":8199},"\nBundan sonra GlassFish’i başlatın ve uygulamanın artık GlassFish altında çalışıyor olması lazım 🙂\nGlassFish Yönetim Ekranından (",[1645,8204,8205],{"href":8205,"rel":8206},"http:\u002F\u002Flocalhost:4848",[1649],") -eğer değişiklik yapmadıysanız- görebiliriz, sunucuya giriş yaptıktan sonra soldaki “Applications” menüsüne tıklayarak yüklü uygulamaları görebiliriz.",[16,8209,8210,8215,8216,8218,8219,8221],{},[1645,8211,8213],{"href":8212},"\u002Fimages\u002Fweb-service-on-glassfish-glassfish-applications.png",[2168,8214],{"alt":52,"src":8212},"\nGörüldüğü üzere ",[1388,8217,7840],{}," projesi GlassFish altına yüklenmiş ki zaten server altına eclipse içinden ilk eklemenizde de konsola yüklenip yüklenemediği bilgisini yazar.\nŞimdi o ekrandan “launch” yani çalıştır dedikten sonra ",[1388,8220,8153],{}," servlet ismini tarayıcıya aşağıdaki gibi ekleyince karşınıza web servis hakkında bazı bilgiler gelecektir.",[16,8223,8224,8229],{},[1645,8225,8227],{"href":8226},"\u002Fimages\u002Fweb-service-on-glassfish-glassfish-web-service-servlet.png",[2168,8228],{"alt":52,"src":8226},"\nWSDL adresine tıklayınca da wsdl a ulaşabileceksiniz, bendekinin ekran görüntüsü şu şekilde.",[16,8231,8232,8237,8238,8241],{},[1645,8233,8235],{"href":8234},"\u002Fimages\u002Fweb-service-on-glassfish-glassfish-web-service-wsdl.png",[2168,8236],{"alt":52,"src":8234},"\nWeb servisi artık kullanıma hazır. Başka bir yazıda da bu web servisinin testini yaparız inşallah 🙂 (Ben yaptım da buraya yazması var bir de ",[8239,8240],"d",{},")\nKolay gelsin.",[1187,8243,8244],{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":52,"searchDepth":86,"depth":86,"links":8246},[],"GlassFish uygulama sunucusu üzerinde Java web servisi yayınlama.",{},"\u002Ftr\u002Fblog\u002Fweb-service-on-glassfish",{"title":7781,"description":8247},"tr\u002Fblog\u002Fweb-service-on-glassfish",[1328,8253,1758,7083],"glassfish","\u002Fen\u002Fblog\u002Fweb-service-on-glassfish","LD-NWJMjZ-kZsNNdN_DfYz37lHbHoZvusUBNXeFdqRQ",{"id":8257,"title":8258,"body":8259,"date":8788,"description":8789,"extension":1202,"meta":8790,"navigation":231,"path":8791,"seo":8792,"stem":8793,"tags":8794,"translation":8796,"__hash__":8797},"pages_tr\u002Ftr\u002Fblog\u002Fapache-log4j.md","Apache log4j",{"type":8,"value":8260,"toc":8786},[8261,8272,8277,8280,8293,8300,8308,8321,8469,8472,8726,8729,8753,8760,8780,8783],[16,8262,8263,8268,8269,8271],{},[1645,8264,8267],{"href":8265,"rel":8266},"http:\u002F\u002Flogging.apache.org\u002Flog4j\u002F",[1649],"Apache loj4j"," Java tabanlı bir ",[1388,8270,338],{},"(sistem günlüğü) tutma mekanizmasıdır. Sektörde sevilir, kullanışlıdır. Projelere entegre edilmesi ve kullanması da kolay sayılabilir.",[16,8273,8274],{},[2168,8275],{"alt":8258,"src":8276},"http:\u002F\u002Flogging.apache.org\u002Flog4j\u002F2.x\u002Fimages\u002Flogo.jpg",[16,8278,8279],{},"Yapmamız gerekenler;",[1121,8281,8282,8290],{},[1124,8283,8284,8289],{},[1645,8285,8288],{"href":8286,"rel":8287},"http:\u002F\u002Flogging.apache.org\u002Flog4j\u002F1.2\u002Fdownload.html",[1649],"jar dosyasını indirip"," projemizin kütüphaneleri arasına eklemek",[1124,8291,8292],{},"projemizin build path’ine bu jarı göstermek.",[16,8294,8295,8296,8299],{},"Bu adımlardan sonra log4j ile çalışmaya hazırız. Örnek olması açısından bir “",[1388,8297,8298],{},"Student","” sınıfı yazıp, onu loglamaya çalışacağım. Uygulama çok temek olacak, hatta o kadar temel olacak ki, normalde 2 çeşit log4j ayarlama yolu var;",[1729,8301,8302,8305],{},[1124,8303,8304],{},"property file hazırlayarak",[1124,8306,8307],{},"XML dosyası hazırlayıp",[16,8309,8310,8311,8314,8315,8320],{},"fakat ben log4j’nin sağlamış olduğu “",[1388,8312,8313],{},"BasicConfigurator","” sınıfının “",[4143,8316,8317],{},[1388,8318,8319],{},"configure()","” metodu yardımıyla herhangi bir dosya kullanmadan log4j’i ayağa kaldıracağım.",[47,8322,8324],{"className":4149,"code":8323,"language":1758,"meta":52,"style":52},"package org.sukru.log4j;\npublic class Student {\n    private Long studentNumber;\n    private String firstName;\n    private String lastName;\n    public Student(Long studentNumber, String firstName, String lastName) {\n        this.studentNumber = studentNumber;\n        this.firstName = firstName;\n        this.lastName = lastName;\n    }\n    \u002F\u002F getters and setters\n}\n",[20,8325,8326,8343,8354,8366,8377,8388,8417,8430,8443,8456,8460,8465],{"__ignoreMap":52},[56,8327,8328,8330,8332,8334,8336,8338,8341],{"class":58,"line":59},[56,8329,4157],{"class":999},[56,8331,4160],{"class":3447},[56,8333,673],{"class":76},[56,8335,4165],{"class":3447},[56,8337,673],{"class":76},[56,8339,8340],{"class":3447},"log4j",[56,8342,2607],{"class":76},[56,8344,8345,8347,8349,8352],{"class":58,"line":86},[56,8346,4291],{"class":3447},[56,8348,4294],{"class":3447},[56,8350,8351],{"class":62}," Student",[56,8353,4300],{"class":76},[56,8355,8356,8358,8361,8364],{"class":58,"line":105},[56,8357,6079],{"class":3447},[56,8359,8360],{"class":3447}," Long",[56,8362,8363],{"class":174}," studentNumber",[56,8365,2607],{"class":76},[56,8367,8368,8370,8372,8375],{"class":58,"line":120},[56,8369,6079],{"class":3447},[56,8371,7969],{"class":3447},[56,8373,8374],{"class":174}," firstName",[56,8376,2607],{"class":76},[56,8378,8379,8381,8383,8386],{"class":58,"line":248},[56,8380,6079],{"class":3447},[56,8382,7969],{"class":3447},[56,8384,8385],{"class":174}," lastName",[56,8387,2607],{"class":76},[56,8389,8390,8392,8394,8396,8399,8401,8403,8405,8407,8409,8411,8413,8415],{"class":58,"line":261},[56,8391,4305],{"class":3447},[56,8393,8351],{"class":2667},[56,8395,4316],{"class":76},[56,8397,8398],{"class":3447},"Long",[56,8400,8363],{"class":4325},[56,8402,4359],{"class":76},[56,8404,7969],{"class":3447},[56,8406,8374],{"class":4325},[56,8408,4359],{"class":76},[56,8410,7969],{"class":3447},[56,8412,8385],{"class":4325},[56,8414,4329],{"class":76},[56,8416,4300],{"class":76},[56,8418,8419,8421,8424,8426,8428],{"class":58,"line":274},[56,8420,6111],{"class":76},[56,8422,8423],{"class":174},"studentNumber ",[56,8425,3451],{"class":76},[56,8427,8363],{"class":174},[56,8429,2607],{"class":76},[56,8431,8432,8434,8437,8439,8441],{"class":58,"line":279},[56,8433,6111],{"class":76},[56,8435,8436],{"class":174},"firstName ",[56,8438,3451],{"class":76},[56,8440,8374],{"class":174},[56,8442,2607],{"class":76},[56,8444,8445,8447,8450,8452,8454],{"class":58,"line":297},[56,8446,6111],{"class":76},[56,8448,8449],{"class":174},"lastName ",[56,8451,3451],{"class":76},[56,8453,8385],{"class":174},[56,8455,2607],{"class":76},[56,8457,8458],{"class":58,"line":318},[56,8459,4676],{"class":76},[56,8461,8462],{"class":58,"line":813},[56,8463,8464],{"class":130},"    \u002F\u002F getters and setters\n",[56,8466,8467],{"class":58,"line":1913},[56,8468,4682],{"class":76},[16,8470,8471],{},"Loj4j’yi ayağa kaldırıp, kullandığımız test sınıfımızı da yazalım.",[47,8473,8475],{"className":4149,"code":8474,"language":1758,"meta":52,"style":52},"package org.sukru.log4j;\nimport org.apache.log4j.BasicConfigurator;\nimport org.apache.log4j.Logger;\npublic class Log4jTest {\n    public static void main(String[] args) {\n        BasicConfigurator.configure(); \u002F\u002F log4j’yi ayağa kaldıralım.\n        Logger logger = Logger.getLogger(Student.class); \u002F\u002F hangi sınıfı takip edeceğimizi belirtelim.\n        logger.info(\"Initializing new Student…\");\n        Student student = new Student(100L, \"Yunus Emre\", \"Aslan\");\n        logger.info(\"new Student initialized: \"+student.getFirstName()+\" \"+student.getLastName());\n    }\n}\n",[20,8476,8477,8493,8514,8535,8546,8568,8583,8615,8636,8673,8718,8722],{"__ignoreMap":52},[56,8478,8479,8481,8483,8485,8487,8489,8491],{"class":58,"line":59},[56,8480,4157],{"class":999},[56,8482,4160],{"class":3447},[56,8484,673],{"class":76},[56,8486,4165],{"class":3447},[56,8488,673],{"class":76},[56,8490,8340],{"class":3447},[56,8492,2607],{"class":76},[56,8494,8495,8497,8499,8501,8504,8506,8508,8510,8512],{"class":58,"line":86},[56,8496,4182],{"class":999},[56,8498,4160],{"class":3447},[56,8500,673],{"class":76},[56,8502,8503],{"class":3447},"apache",[56,8505,673],{"class":76},[56,8507,8340],{"class":3447},[56,8509,673],{"class":76},[56,8511,8313],{"class":3447},[56,8513,2607],{"class":76},[56,8515,8516,8518,8520,8522,8524,8526,8528,8530,8533],{"class":58,"line":105},[56,8517,4182],{"class":999},[56,8519,4160],{"class":3447},[56,8521,673],{"class":76},[56,8523,8503],{"class":3447},[56,8525,673],{"class":76},[56,8527,8340],{"class":3447},[56,8529,673],{"class":76},[56,8531,8532],{"class":3447},"Logger",[56,8534,2607],{"class":76},[56,8536,8537,8539,8541,8544],{"class":58,"line":120},[56,8538,4291],{"class":3447},[56,8540,4294],{"class":3447},[56,8542,8543],{"class":62}," Log4jTest",[56,8545,4300],{"class":76},[56,8547,8548,8550,8552,8554,8556,8558,8560,8562,8564,8566],{"class":58,"line":248},[56,8549,4305],{"class":3447},[56,8551,4308],{"class":3447},[56,8553,4311],{"class":3447},[56,8555,492],{"class":2667},[56,8557,4316],{"class":76},[56,8559,4319],{"class":3447},[56,8561,4322],{"class":76},[56,8563,4326],{"class":4325},[56,8565,4329],{"class":76},[56,8567,4300],{"class":76},[56,8569,8570,8573,8575,8578,8580],{"class":58,"line":261},[56,8571,8572],{"class":174},"        BasicConfigurator",[56,8574,673],{"class":76},[56,8576,8577],{"class":2667},"configure",[56,8579,6591],{"class":76},[56,8581,8582],{"class":130}," \u002F\u002F log4j’yi ayağa kaldıralım.\n",[56,8584,8585,8588,8591,8593,8596,8598,8601,8603,8605,8607,8609,8612],{"class":58,"line":274},[56,8586,8587],{"class":3447},"        Logger",[56,8589,8590],{"class":174}," logger ",[56,8592,3451],{"class":76},[56,8594,8595],{"class":174}," Logger",[56,8597,673],{"class":76},[56,8599,8600],{"class":2667},"getLogger",[56,8602,4316],{"class":76},[56,8604,8298],{"class":174},[56,8606,673],{"class":76},[56,8608,4622],{"class":174},[56,8610,8611],{"class":76},");",[56,8613,8614],{"class":130}," \u002F\u002F hangi sınıfı takip edeceğimizi belirtelim.\n",[56,8616,8617,8620,8622,8625,8627,8629,8632,8634],{"class":58,"line":279},[56,8618,8619],{"class":174},"        logger",[56,8621,673],{"class":76},[56,8623,8624],{"class":2667},"info",[56,8626,4316],{"class":76},[56,8628,312],{"class":76},[56,8630,8631],{"class":66},"Initializing new Student…",[56,8633,312],{"class":76},[56,8635,4369],{"class":76},[56,8637,8638,8641,8644,8646,8648,8650,8652,8655,8657,8659,8661,8663,8665,8667,8669,8671],{"class":58,"line":297},[56,8639,8640],{"class":3447},"        Student",[56,8642,8643],{"class":174}," student ",[56,8645,3451],{"class":76},[56,8647,4344],{"class":2620},[56,8649,8351],{"class":2667},[56,8651,4316],{"class":76},[56,8653,8654],{"class":999},"100L",[56,8656,4359],{"class":76},[56,8658,77],{"class":76},[56,8660,4354],{"class":66},[56,8662,312],{"class":76},[56,8664,4359],{"class":76},[56,8666,77],{"class":76},[56,8668,4364],{"class":66},[56,8670,312],{"class":76},[56,8672,4369],{"class":76},[56,8674,8675,8677,8679,8681,8683,8685,8688,8690,8692,8695,8697,8700,8703,8705,8707,8709,8711,8713,8716],{"class":58,"line":318},[56,8676,8619],{"class":174},[56,8678,673],{"class":76},[56,8680,8624],{"class":2667},[56,8682,4316],{"class":76},[56,8684,312],{"class":76},[56,8686,8687],{"class":66},"new Student initialized: ",[56,8689,312],{"class":76},[56,8691,5405],{"class":76},[56,8693,8694],{"class":174},"student",[56,8696,673],{"class":76},[56,8698,8699],{"class":2667},"getFirstName",[56,8701,8702],{"class":76},"()+",[56,8704,312],{"class":76},[56,8706,77],{"class":76},[56,8708,5405],{"class":76},[56,8710,8694],{"class":174},[56,8712,673],{"class":76},[56,8714,8715],{"class":2667},"getLastName",[56,8717,7330],{"class":76},[56,8719,8720],{"class":58,"line":813},[56,8721,4676],{"class":76},[56,8723,8724],{"class":58,"line":1913},[56,8725,4682],{"class":76},[16,8727,8728],{},"Bu sınıfı çalıştırdığımız zaman çıktısı şu şekilde olacaktır.",[47,8730,8732],{"className":49,"code":8731,"language":51,"meta":52,"style":52},"0 [main] INFO org.sukru.log4j.Student  – Initializing a new Student…\n\n2 [main] INFO org.sukru.log4j.Student  – new Student initialized: Yunus Emre Aslan\n",[20,8733,8734,8742,8746],{"__ignoreMap":52},[56,8735,8736,8739],{"class":58,"line":59},[56,8737,8738],{"class":62},"0",[56,8740,8741],{"class":174}," [main] INFO org.sukru.log4j.Student  – Initializing a new Student…\n",[56,8743,8744],{"class":58,"line":86},[56,8745,232],{"emptyLinePlaceholder":231},[56,8747,8748,8750],{"class":58,"line":105},[56,8749,1048],{"class":62},[56,8751,8752],{"class":174}," [main] INFO org.sukru.log4j.Student  – new Student initialized: Yunus Emre Aslan\n",[16,8754,8755,8756,8759],{},"Bilgi amaçlı “",[1388,8757,8758],{},"info(Object message)","” metodunu kullandım ama isteğe ve amaca göre şu metodlar kullanılabilir;",[1121,8761,8762,8765,8768,8771,8774,8777],{},[1124,8763,8764],{},"fatal()",[1124,8766,8767],{},"error()",[1124,8769,8770],{},"warn()",[1124,8772,8773],{},"debug()",[1124,8775,8776],{},"trace()",[1124,8778,8779],{},"info()",[16,8781,8782],{},"Diğer yapılandırma usüllerini başka bir yazıda anlatacağım. Giriş için bunun yeterli olacağını düşünüyorum. Kolay gelsin.",[1187,8784,8785],{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":52,"searchDepth":86,"depth":86,"links":8787},[],"2011-06-27","Java'da loglama çatısı Apache log4j'ye giriş: temel kavramlar, log seviyeleri ve kullanımı.",{},"\u002Ftr\u002Fblog\u002Fapache-log4j",{"title":8258,"description":8789},"tr\u002Fblog\u002Fapache-log4j",[1758,8795],"logging","\u002Fen\u002Fblog\u002Fapache-log4j","Q8ZLXTuxPLUWWS3NWK-ufaUyPVRDkE9qIQYdC72Lv7Y",{"id":8799,"title":8800,"body":8801,"date":8788,"description":9825,"extension":1202,"meta":9826,"navigation":231,"path":9827,"seo":9828,"stem":9829,"tags":9830,"translation":9831,"__hash__":9832},"pages_tr\u002Ftr\u002Fblog\u002Flog4j-configuration.md","Log4j Konfigürasyon",{"type":8,"value":8802,"toc":9823},[8803,8812,8826,8837,8843,8850,8857,8864,8876,8896,8899,8984,8995,9203,9232,9295,9298,9440,9443,9739,9742,9771,9784,9808,9820],[16,8804,8805,8806,8811],{},"Apache log4j ",[1645,8807,8810],{"href":8808,"rel":8809},"https:\u002F\u002Fwww.sukrucakmak.com\u002Fapache-log4j\u002F",[1649],"şu yazıda"," da bahsettiğim gibi bir loglama mekanızmasıdır ve bize şu soruların cevaplarını verir;",[1729,8813,8814,8817,8820,8823],{},[1124,8815,8816],{},"Kim?",[1124,8818,8819],{},"Ne?",[1124,8821,8822],{},"Ne zaman?",[1124,8824,8825],{},"Nerede?",[16,8827,8828,8829,8832,4359],{},"Şimdi bilmemiz gereken temel kavramlardan biraz bahsetmenin zamanıdır.\n",[1388,8830,8831],{},"Log Seviyeleri (LEVELS)",[1645,8833,8836],{"href":8834,"rel":8835},"http:\u002F\u002Flogging.apache.org\u002Flog4j\u002F1.2\u002Fapidocs\u002Forg\u002Fapache\u002Flog4j\u002FLevel.html#TRACE",[1649],"TRACE",[16,8838,8839,4359],{},[1645,8840,2884],{"href":8841,"rel":8842},"http:\u002F\u002Flogging.apache.org\u002Flog4j\u002F1.2\u002Fapidocs\u002Forg\u002Fapache\u002Flog4j\u002FLevel.html#DEBUG",[1649],[16,8844,8845,4359],{},[1645,8846,8849],{"href":8847,"rel":8848},"http:\u002F\u002Flogging.apache.org\u002Flog4j\u002F1.2\u002Fapidocs\u002Forg\u002Fapache\u002Flog4j\u002FLevel.html#INFO",[1649],"INFO",[16,8851,8852,4359],{},[1645,8853,8856],{"href":8854,"rel":8855},"http:\u002F\u002Flogging.apache.org\u002Flog4j\u002F1.2\u002Fapidocs\u002Forg\u002Fapache\u002Flog4j\u002FLevel.html#WARN",[1649],"WARN",[16,8858,8859,4359],{},[1645,8860,8863],{"href":8861,"rel":8862},"http:\u002F\u002Flogging.apache.org\u002Flog4j\u002F1.2\u002Fapidocs\u002Forg\u002Fapache\u002Flog4j\u002FLevel.html#ERROR",[1649],"ERROR",[16,8865,8866,8871,8872,8875],{},[1645,8867,8870],{"href":8868,"rel":8869},"http:\u002F\u002Flogging.apache.org\u002Flog4j\u002F1.2\u002Fapidocs\u002Forg\u002Fapache\u002Flog4j\u002FLevel.html#FATAL",[1649],"FATAL"," olmasına rağmen, kendi log seviyenizi de yazabilirsiniz ama önerilmediğini de belirteyim.\nSeviyeler arasındaki sıralama da şu şekilde **",[20,8873,8874],{},"DEBUG \u003C INFO \u003C WARN \u003C ERROR \u003C FATAL",".**Bu sıralamanın ne işe yaradığını aşağıdaki örnekte daha iyi anlayacağız.\n**Log Yazıcılar (APPENDERS)**Logları çeşitli ortamlara yazmak mümkün, aşağıda birkaçının adı var. Ben, daha çok dosyaya ve console ortamına yazıyorum.",[1121,8877,8878,8881,8884,8887,8890,8893],{},[1124,8879,8880],{},"FileAppender",[1124,8882,8883],{},"ConsoleAppender",[1124,8885,8886],{},"SocketAppender",[1124,8888,8889],{},"SyslogAppender",[1124,8891,8892],{},"NTEventLogAppender",[1124,8894,8895],{},"SMTPAppender",[16,8897,8898],{},"**Düzen (LAYOUTS)**Logun nasıl görüneceğine dair bilgileri içerir; zaman logun neresinde yazsın, hangi metod olduğu neresinde vb.",[604,8900,8901,8911],{},[607,8902,8903],{},[610,8904,8905,8908],{},[613,8906,8907],{},"Kısaltma",[613,8909,8910],{},"Anlamı",[623,8912,8913,8921,8929,8937,8945,8953,8960,8968,8976],{},[610,8914,8915,8918],{},[628,8916,8917],{},"%r",[628,8919,8920],{},"Loglama başlayana kadar ne kadar zaman harcandı.",[610,8922,8923,8926],{},[628,8924,8925],{},"%t",[628,8927,8928],{},"Loglama olayını üreten thread’in ismi.",[610,8930,8931,8934],{},[628,8932,8933],{},"%p",[628,8935,8936],{},"Logun seviyesi.",[610,8938,8939,8942],{},[628,8940,8941],{},"%c",[628,8943,8944],{},"Logun kategorisi yani üretildiği sınıfın paket bilgisi vb.",[610,8946,8947,8950],{},[628,8948,8949],{},"%x",[628,8951,8952],{},"Logun bazı kontrolleri için.",[610,8954,8955,8958],{},[628,8956,8957],{},"%m",[628,8959,309],{},[610,8961,8962,8965],{},[628,8963,8964],{},"%n",[628,8966,8967],{},"Yeni satıra geçmek için.",[610,8969,8970,8973],{},[628,8971,8972],{},"%L",[628,8974,8975],{},"Hangi satırda olduğu bilgisi.",[610,8977,8978,8981],{},[628,8979,8980],{},"%d",[628,8982,8983],{},"Logun üretildiği zaman.",[16,8985,8986,8987,8990,8991,8994],{},"Şimdi bu kadar teorik bilgi ile çalışan bir uygulama yapacağım. Projemin altına “",[1388,8988,8989],{},"config","” adında bir klasör açıyorum altına da “",[1388,8992,8993],{},"log4j.xml","” adını verdiğim aşağıdaki dosyayı hazırlıyorum.",[47,8996,8998],{"className":2995,"code":8997,"language":2996,"meta":52,"style":52},"\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003C!DOCTYPE log4j:configuration PUBLIC \"-\u002F\u002FLOGGER\" \"http:\u002F\u002Flogging.apache.org\u002Flog4j\u002F1.2\u002Fapidocs\u002Forg\u002Fapache\u002Flog4j\u002Fxml\u002Fdoc-files\u002Flog4j.dtd\">\n\u003Clog4j:configuration>\n \u003Cappender name=\"stdout\" class=\"org.apache.log4j.ConsoleAppender\">\n    \u003Clayout class=\"org.apache.log4j.PatternLayout\">\n        \u003Cparam name=\"ConversionPattern\" value=\"%d [%t] %5p %c{1}:%L – %m %n\" \u002F>\n    \u003C\u002Flayout>\n  \u003C\u002Fappender>\n \u003Croot>\n   \u003Cappender-ref ref=\"stdout\" \u002F>\n \u003C\u002Froot>\n\u003C\u002Flog4j:configuration>\n",[20,8999,9000,9028,9040,9053,9084,9104,9136,9144,9152,9161,9182,9191],{"__ignoreMap":52},[56,9001,9002,9004,9006,9008,9010,9012,9014,9016,9018,9020,9022,9024,9026],{"class":58,"line":59},[56,9003,3442],{"class":76},[56,9005,2996],{"class":3304},[56,9007,3448],{"class":3447},[56,9009,3451],{"class":76},[56,9011,312],{"class":76},[56,9013,3456],{"class":66},[56,9015,312],{"class":76},[56,9017,3461],{"class":3447},[56,9019,3451],{"class":76},[56,9021,312],{"class":76},[56,9023,3468],{"class":66},[56,9025,312],{"class":76},[56,9027,3473],{"class":76},[56,9029,9030,9032,9034,9037],{"class":58,"line":86},[56,9031,3785],{"class":76},[56,9033,3788],{"class":999},[56,9035,9036],{"class":174}," log4j:configuration",[56,9038,9039],{"class":76}," PUBLIC \"-\u002F\u002FLOGGER\" \"http:\u002F\u002Flogging.apache.org\u002Flog4j\u002F1.2\u002Fapidocs\u002Forg\u002Fapache\u002Flog4j\u002Fxml\u002Fdoc-files\u002Flog4j.dtd\">\n",[56,9041,9042,9044,9046,9048,9051],{"class":58,"line":105},[56,9043,3478],{"class":76},[56,9045,8340],{"class":3304},[56,9047,925],{"class":76},[56,9049,9050],{"class":3304},"configuration",[56,9052,3308],{"class":76},[56,9054,9055,9057,9060,9062,9064,9066,9069,9071,9073,9075,9077,9080,9082],{"class":58,"line":120},[56,9056,168],{"class":76},[56,9058,9059],{"class":3304},"appender",[56,9061,7979],{"class":3447},[56,9063,3451],{"class":76},[56,9065,312],{"class":76},[56,9067,9068],{"class":66},"stdout",[56,9070,312],{"class":76},[56,9072,4294],{"class":3447},[56,9074,3451],{"class":76},[56,9076,312],{"class":76},[56,9078,9079],{"class":66},"org.apache.log4j.ConsoleAppender",[56,9081,312],{"class":76},[56,9083,3308],{"class":76},[56,9085,9086,9088,9091,9093,9095,9097,9100,9102],{"class":58,"line":248},[56,9087,3301],{"class":76},[56,9089,9090],{"class":3304},"layout",[56,9092,4294],{"class":3447},[56,9094,3451],{"class":76},[56,9096,312],{"class":76},[56,9098,9099],{"class":66},"org.apache.log4j.PatternLayout",[56,9101,312],{"class":76},[56,9103,3308],{"class":76},[56,9105,9106,9108,9111,9113,9115,9117,9120,9122,9125,9127,9129,9132,9134],{"class":58,"line":261},[56,9107,3313],{"class":76},[56,9109,9110],{"class":3304},"param",[56,9112,7979],{"class":3447},[56,9114,3451],{"class":76},[56,9116,312],{"class":76},[56,9118,9119],{"class":66},"ConversionPattern",[56,9121,312],{"class":76},[56,9123,9124],{"class":3447}," value",[56,9126,3451],{"class":76},[56,9128,312],{"class":76},[56,9130,9131],{"class":66},"%d [%t] %5p %c{1}:%L – %m %n",[56,9133,312],{"class":76},[56,9135,3906],{"class":76},[56,9137,9138,9140,9142],{"class":58,"line":274},[56,9139,3369],{"class":76},[56,9141,9090],{"class":3304},[56,9143,3308],{"class":76},[56,9145,9146,9148,9150],{"class":58,"line":279},[56,9147,4122],{"class":76},[56,9149,9059],{"class":3304},[56,9151,3308],{"class":76},[56,9153,9154,9156,9159],{"class":58,"line":297},[56,9155,168],{"class":76},[56,9157,9158],{"class":3304},"root",[56,9160,3308],{"class":76},[56,9162,9163,9166,9169,9172,9174,9176,9178,9180],{"class":58,"line":318},[56,9164,9165],{"class":76},"   \u003C",[56,9167,9168],{"class":3304},"appender-ref",[56,9170,9171],{"class":3447}," ref",[56,9173,3451],{"class":76},[56,9175,312],{"class":76},[56,9177,9068],{"class":66},[56,9179,312],{"class":76},[56,9181,3906],{"class":76},[56,9183,9184,9187,9189],{"class":58,"line":813},[56,9185,9186],{"class":76}," \u003C\u002F",[56,9188,9158],{"class":3304},[56,9190,3308],{"class":76},[56,9192,9193,9195,9197,9199,9201],{"class":58,"line":1913},[56,9194,3324],{"class":76},[56,9196,8340],{"class":3304},[56,9198,925],{"class":76},[56,9200,9050],{"class":3304},[56,9202,3308],{"class":76},[16,9204,9205,9206,9208,9209,9211,9212,9214,9215,9218,9219,9221,9222,9224,9225,9228,9229,9231],{},"Şimdi yukarıdaki xml’i biraz açıklayayım; Program bu xml’i okumaya başlarken önce ",[1388,9207,9158],{}," altına bakar ve bir ",[1388,9210,9059],{}," arar ki oraya log’u yazabilsin. Bizimkinin ",[1388,9213,9068],{}," isminde bir tane var, gider onu ",[1388,9216,9217],{},"appenderlar","arasında bulur, bizimkinin ",[1388,9220,8883],{},"yani console’a yazan bir ",[1388,9223,9059],{},"olduğunu anlar, ",[1388,9226,9227],{},"pattern","‘ine göre ",[1388,9230,9059],{},"üzerine yazar. Hikaye bu şekilde 🙂\nŞimdi de pattern’i biraz açalım;",[1121,9233,9234,9245,9258,9266,9274,9281,9288],{},[1124,9235,9236,9240,9241,9244],{},[4143,9237,9238],{},[1388,9239,8980],{}," – Çalışma zamanını göster (herhangi bir formatter vermedim ama yaylı parantezler içinde istediğiniz ",[4143,9242,9243],{},"date format pattern","i yazabilirsiniz)",[1124,9246,9247,9253,9254,9257],{},[4143,9248,9249],{},[1388,9250,9251],{},[56,9252,8925],{}," – Hangi metodun çalıştığını göster, “",[56,9255,9256],{},"” ve “","” karakterleri arasına al.",[1124,9259,9260,9265],{},[4143,9261,9262],{},[1388,9263,9264],{},"%5p"," – Logun seviyesini göster.",[1124,9267,9268,9273],{},[4143,9269,9270],{},[1388,9271,9272],{},"%c{1}"," – Logun kategorisini 1. seviyeye kadar göster. (Bir de kaldırıp deneyin 🙂 )",[1124,9275,9276,9280],{},[4143,9277,9278],{},[1388,9279,8972],{}," – Hangi satırın çalıştığını göster.",[1124,9282,9283,9287],{},[4143,9284,9285],{},[1388,9286,8957],{}," – Mesajı yaz.",[1124,9289,9290,9294],{},[4143,9291,9292],{},[1388,9293,8964],{}," – Yeni gelen mesajı bir alt satırda yaz.",[16,9296,9297],{},"Şimdi log4j’yi kullanalım. Önce bir sınıf yazalım.",[47,9299,9301],{"className":4149,"code":9300,"language":1758,"meta":52,"style":52},"package org.sukru.log4j;\npublic class Student {\n private Long studentNumber;\n private String firstName;\n private String lastName;\n public Student(Long studentNumber, String firstName, String lastName) {\n   this.studentNumber = studentNumber;\n   this.firstName = firstName;\n   this.lastName = lastName;\n }\n  \u002F\u002F getters and setters\n}\n",[20,9302,9303,9319,9329,9340,9350,9360,9389,9402,9414,9426,9431,9436],{"__ignoreMap":52},[56,9304,9305,9307,9309,9311,9313,9315,9317],{"class":58,"line":59},[56,9306,4157],{"class":999},[56,9308,4160],{"class":3447},[56,9310,673],{"class":76},[56,9312,4165],{"class":3447},[56,9314,673],{"class":76},[56,9316,8340],{"class":3447},[56,9318,2607],{"class":76},[56,9320,9321,9323,9325,9327],{"class":58,"line":86},[56,9322,4291],{"class":3447},[56,9324,4294],{"class":3447},[56,9326,8351],{"class":62},[56,9328,4300],{"class":76},[56,9330,9331,9334,9336,9338],{"class":58,"line":105},[56,9332,9333],{"class":3447}," private",[56,9335,8360],{"class":3447},[56,9337,8363],{"class":174},[56,9339,2607],{"class":76},[56,9341,9342,9344,9346,9348],{"class":58,"line":120},[56,9343,9333],{"class":3447},[56,9345,7969],{"class":3447},[56,9347,8374],{"class":174},[56,9349,2607],{"class":76},[56,9351,9352,9354,9356,9358],{"class":58,"line":248},[56,9353,9333],{"class":3447},[56,9355,7969],{"class":3447},[56,9357,8385],{"class":174},[56,9359,2607],{"class":76},[56,9361,9362,9365,9367,9369,9371,9373,9375,9377,9379,9381,9383,9385,9387],{"class":58,"line":261},[56,9363,9364],{"class":3447}," public",[56,9366,8351],{"class":2667},[56,9368,4316],{"class":76},[56,9370,8398],{"class":3447},[56,9372,8363],{"class":4325},[56,9374,4359],{"class":76},[56,9376,7969],{"class":3447},[56,9378,8374],{"class":4325},[56,9380,4359],{"class":76},[56,9382,7969],{"class":3447},[56,9384,8385],{"class":4325},[56,9386,4329],{"class":76},[56,9388,4300],{"class":76},[56,9390,9391,9394,9396,9398,9400],{"class":58,"line":274},[56,9392,9393],{"class":76},"   this.",[56,9395,8423],{"class":174},[56,9397,3451],{"class":76},[56,9399,8363],{"class":174},[56,9401,2607],{"class":76},[56,9403,9404,9406,9408,9410,9412],{"class":58,"line":279},[56,9405,9393],{"class":76},[56,9407,8436],{"class":174},[56,9409,3451],{"class":76},[56,9411,8374],{"class":174},[56,9413,2607],{"class":76},[56,9415,9416,9418,9420,9422,9424],{"class":58,"line":297},[56,9417,9393],{"class":76},[56,9419,8449],{"class":174},[56,9421,3451],{"class":76},[56,9423,8385],{"class":174},[56,9425,2607],{"class":76},[56,9427,9428],{"class":58,"line":318},[56,9429,9430],{"class":76}," }\n",[56,9432,9433],{"class":58,"line":813},[56,9434,9435],{"class":130},"  \u002F\u002F getters and setters\n",[56,9437,9438],{"class":58,"line":1913},[56,9439,4682],{"class":76},[16,9441,9442],{},"Log4j için test sınıfımız.",[47,9444,9446],{"className":4149,"code":9445,"language":1758,"meta":52,"style":52},"package org.sukru.log4j;\nimport org.apache.log4j.Logger;\nimport org.apache.log4j.xml.DOMConfigurator;\npublic class Log4jTest {\n  private static Logger logger;\n  public static void main(String[] args) {\n    configureLog4j();   \u002F\u002Flog4j’yi ayağa kaldırması için bu metodu yazdım.\n    logger.info(\"Initializing a new Student…\");\n    Student student = new Student(100L, \"Tuncay\", \"Uzun\");\n    logger.info(\"new Student initialized: \"+student.getFirstName()+\" \"+student.getLastName());\n  }\n  private static void configureLog4j() {\n    DOMConfigurator.configureAndWatch(\"config\u002Flog4j.xml\");   \u002F\u002Flog4j konfigürasyon dosyasının projedeki yerini veriyoruz.\n    logger = Logger.getLogger(Log4jTest.class);\n  }\n}\n",[20,9447,9448,9464,9484,9509,9519,9533,9556,9566,9586,9623,9663,9668,9683,9707,9731,9735],{"__ignoreMap":52},[56,9449,9450,9452,9454,9456,9458,9460,9462],{"class":58,"line":59},[56,9451,4157],{"class":999},[56,9453,4160],{"class":3447},[56,9455,673],{"class":76},[56,9457,4165],{"class":3447},[56,9459,673],{"class":76},[56,9461,8340],{"class":3447},[56,9463,2607],{"class":76},[56,9465,9466,9468,9470,9472,9474,9476,9478,9480,9482],{"class":58,"line":86},[56,9467,4182],{"class":999},[56,9469,4160],{"class":3447},[56,9471,673],{"class":76},[56,9473,8503],{"class":3447},[56,9475,673],{"class":76},[56,9477,8340],{"class":3447},[56,9479,673],{"class":76},[56,9481,8532],{"class":3447},[56,9483,2607],{"class":76},[56,9485,9486,9488,9490,9492,9494,9496,9498,9500,9502,9504,9507],{"class":58,"line":105},[56,9487,4182],{"class":999},[56,9489,4160],{"class":3447},[56,9491,673],{"class":76},[56,9493,8503],{"class":3447},[56,9495,673],{"class":76},[56,9497,8340],{"class":3447},[56,9499,673],{"class":76},[56,9501,2996],{"class":3447},[56,9503,673],{"class":76},[56,9505,9506],{"class":3447},"DOMConfigurator",[56,9508,2607],{"class":76},[56,9510,9511,9513,9515,9517],{"class":58,"line":120},[56,9512,4291],{"class":3447},[56,9514,4294],{"class":3447},[56,9516,8543],{"class":62},[56,9518,4300],{"class":76},[56,9520,9521,9524,9526,9528,9531],{"class":58,"line":248},[56,9522,9523],{"class":3447},"  private",[56,9525,4308],{"class":3447},[56,9527,8595],{"class":3447},[56,9529,9530],{"class":174}," logger",[56,9532,2607],{"class":76},[56,9534,9535,9538,9540,9542,9544,9546,9548,9550,9552,9554],{"class":58,"line":261},[56,9536,9537],{"class":3447},"  public",[56,9539,4308],{"class":3447},[56,9541,4311],{"class":3447},[56,9543,492],{"class":2667},[56,9545,4316],{"class":76},[56,9547,4319],{"class":3447},[56,9549,4322],{"class":76},[56,9551,4326],{"class":4325},[56,9553,4329],{"class":76},[56,9555,4300],{"class":76},[56,9557,9558,9561,9563],{"class":58,"line":274},[56,9559,9560],{"class":2667},"    configureLog4j",[56,9562,6591],{"class":76},[56,9564,9565],{"class":130},"   \u002F\u002Flog4j’yi ayağa kaldırması için bu metodu yazdım.\n",[56,9567,9568,9571,9573,9575,9577,9579,9582,9584],{"class":58,"line":279},[56,9569,9570],{"class":174},"    logger",[56,9572,673],{"class":76},[56,9574,8624],{"class":2667},[56,9576,4316],{"class":76},[56,9578,312],{"class":76},[56,9580,9581],{"class":66},"Initializing a new Student…",[56,9583,312],{"class":76},[56,9585,4369],{"class":76},[56,9587,9588,9591,9593,9595,9597,9599,9601,9603,9605,9607,9610,9612,9614,9616,9619,9621],{"class":58,"line":297},[56,9589,9590],{"class":3447},"    Student",[56,9592,8643],{"class":174},[56,9594,3451],{"class":76},[56,9596,4344],{"class":2620},[56,9598,8351],{"class":2667},[56,9600,4316],{"class":76},[56,9602,8654],{"class":999},[56,9604,4359],{"class":76},[56,9606,77],{"class":76},[56,9608,9609],{"class":66},"Tuncay",[56,9611,312],{"class":76},[56,9613,4359],{"class":76},[56,9615,77],{"class":76},[56,9617,9618],{"class":66},"Uzun",[56,9620,312],{"class":76},[56,9622,4369],{"class":76},[56,9624,9625,9627,9629,9631,9633,9635,9637,9639,9641,9643,9645,9647,9649,9651,9653,9655,9657,9659,9661],{"class":58,"line":318},[56,9626,9570],{"class":174},[56,9628,673],{"class":76},[56,9630,8624],{"class":2667},[56,9632,4316],{"class":76},[56,9634,312],{"class":76},[56,9636,8687],{"class":66},[56,9638,312],{"class":76},[56,9640,5405],{"class":76},[56,9642,8694],{"class":174},[56,9644,673],{"class":76},[56,9646,8699],{"class":2667},[56,9648,8702],{"class":76},[56,9650,312],{"class":76},[56,9652,77],{"class":76},[56,9654,5405],{"class":76},[56,9656,8694],{"class":174},[56,9658,673],{"class":76},[56,9660,8715],{"class":2667},[56,9662,7330],{"class":76},[56,9664,9665],{"class":58,"line":813},[56,9666,9667],{"class":76},"  }\n",[56,9669,9670,9672,9674,9676,9679,9681],{"class":58,"line":1913},[56,9671,9523],{"class":3447},[56,9673,4308],{"class":3447},[56,9675,4311],{"class":3447},[56,9677,9678],{"class":2667}," configureLog4j",[56,9680,6136],{"class":76},[56,9682,4300],{"class":76},[56,9684,9685,9688,9690,9693,9695,9697,9700,9702,9704],{"class":58,"line":3664},[56,9686,9687],{"class":174},"    DOMConfigurator",[56,9689,673],{"class":76},[56,9691,9692],{"class":2667},"configureAndWatch",[56,9694,4316],{"class":76},[56,9696,312],{"class":76},[56,9698,9699],{"class":66},"config\u002Flog4j.xml",[56,9701,312],{"class":76},[56,9703,8611],{"class":76},[56,9705,9706],{"class":130},"   \u002F\u002Flog4j konfigürasyon dosyasının projedeki yerini veriyoruz.\n",[56,9708,9709,9712,9714,9716,9718,9720,9722,9725,9727,9729],{"class":58,"line":3669},[56,9710,9711],{"class":174},"    logger ",[56,9713,3451],{"class":76},[56,9715,8595],{"class":174},[56,9717,673],{"class":76},[56,9719,8600],{"class":2667},[56,9721,4316],{"class":76},[56,9723,9724],{"class":174},"Log4jTest",[56,9726,673],{"class":76},[56,9728,4622],{"class":174},[56,9730,4369],{"class":76},[56,9732,9733],{"class":58,"line":3678},[56,9734,9667],{"class":76},[56,9736,9737],{"class":58,"line":3695},[56,9738,4682],{"class":76},[16,9740,9741],{},"Bakalım nasıl bir log elde ettik – bence gayet açıklayıcı- 🙂",[47,9743,9745],{"className":49,"code":9744,"language":51,"meta":52,"style":52},"2011-06-27 14:42:19,507 [main]  INFO Log4jTest:12 – Initializing a new Student…\n\n2011-06-27 14:42:19,511 [main]  INFO Log4jTest:14 – new Student initialized: Tuncay Uzun\n",[20,9746,9747,9757,9761],{"__ignoreMap":52},[56,9748,9749,9751,9754],{"class":58,"line":59},[56,9750,8788],{"class":62},[56,9752,9753],{"class":66}," 14:42:19,507",[56,9755,9756],{"class":174}," [main]  INFO Log4jTest:12 – Initializing a new Student…\n",[56,9758,9759],{"class":58,"line":86},[56,9760,232],{"emptyLinePlaceholder":231},[56,9762,9763,9765,9768],{"class":58,"line":105},[56,9764,8788],{"class":62},[56,9766,9767],{"class":66}," 14:42:19,511",[56,9769,9770],{"class":174}," [main]  INFO Log4jTest:14 – new Student initialized: Tuncay Uzun\n",[16,9772,9773,9774,9776,9777,9779,9780,9783],{},"Şimdi xml dosyası ile biraz oynayalım ve ",[1388,9775,9158],{}," altına şu ifadeyi yazarak log seviyemizi ",[1388,9778,8624],{}," dan daha az kapsamlı ",[1388,9781,9782],{},"warn","a çekelim. (Yukarıda sıralamasını yazmıştım 😉 )",[47,9785,9787],{"className":2995,"code":9786,"language":2996,"meta":52,"style":52},"\u003Clevel value=\"warn\" \u002F>\n",[20,9788,9789],{"__ignoreMap":52},[56,9790,9791,9793,9796,9798,9800,9802,9804,9806],{"class":58,"line":59},[56,9792,3478],{"class":76},[56,9794,9795],{"class":3304},"level",[56,9797,9124],{"class":3447},[56,9799,3451],{"class":76},[56,9801,312],{"class":76},[56,9803,9782],{"class":66},[56,9805,312],{"class":76},[56,9807,3906],{"class":76},[16,9809,9810,9811,9813,9814,9816,9817,9819],{},"Şimdi tekrar çalıştırırsak, herhangi bir log yazmadığını görürüz 🙂 Yani xml deki tek bir ifade ile tüm projedeki log seviyesini ",[1388,9812,9782],{}," yaptık ve bizim ",[1388,9815,8624],{}," olara baktıklarımızın loga yazılmasını engelledik, varsa eğer ",[1388,9818,9782],{},"ve üzeri ifadeler görülecek 😉\nKolay gelsin.",[1187,9821,9822],{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":52,"searchDepth":86,"depth":86,"links":9824},[],"Apache log4j yapılandırması: appender, layout ve log seviyesi ayarları.",{},"\u002Ftr\u002Fblog\u002Flog4j-configuration",{"title":8800,"description":9825},"tr\u002Fblog\u002Flog4j-configuration",[1758,8795],"\u002Fen\u002Fblog\u002Flog4j-configuration","Xx3r0SMLPfjD-t_4RDa7jxccCDicODqmI9nrnA4FUpk",{"id":9834,"title":9835,"body":9836,"date":10719,"description":10720,"extension":1202,"meta":10721,"navigation":231,"path":10722,"seo":10723,"stem":10724,"tags":10725,"translation":10726,"__hash__":10727},"pages_tr\u002Ftr\u002Fblog\u002Fxstream-java-to-xml-xml-to-java.md","XStream – Java to XML, XML to Java",{"type":8,"value":9837,"toc":10717},[9838,9847,9855,10004,10184,10602,10605,10705,10708,10714],[16,9839,9840],{},[1645,9841,9844],{"href":9842,"rel":9843},"https:\u002F\u002Fwww.sukrucakmak.com\u002Fwp-content\u002Fuploads\u002F2011\u002F06\u002Fxstream_logo.gif",[1649],[2168,9845],{"alt":52,"src":9846},"\u002Fimages\u002Fxstream-java-to-xml-xml-to-java-xstream_logo-300x98.gif",[16,9848,9849,9850,9854],{},"Java nesnesinin XML çıktısını almak ya da XML olarak verdiğimiz bilgiyi Java nesnesine çevirmek için kullanabileceğimiz çok şık bir kütüphane. ",[1645,9851,9852],{"href":9852,"rel":9853},"http:\u002F\u002Fxstream.codehaus.org\u002F",[1649]," adresinde ikamet ediyor.\nYapılması gereken gayet basit, ilgili jarları indirip projemizin kütüphaneleri arasına ekliyoruz.\nKütüphanenin kullanımını anlaşılmasını kolaylaştırmak için “Ders” ve “Ogretmen” isimli iki nesne üzerinden aşağıda anlattım, kodları siz de kendi ortamınızda çalıştırabilirsiniz.",[47,9856,9858],{"className":4149,"code":9857,"language":1758,"meta":52,"style":52},"package org.sukru.xstream.entity;\npublic class Ders {\n public Long id;\n public String ad;\n public Ogretmen ogretmen;\n public Ders(Long id, String ad, Ogretmen ogretmen) {\n this.id = id;\n this.ad = ad;\n this.ogretmen = ogretmen;\n }\n\u002F\u002Fgetters and setters\n}\n",[20,9859,9860,9880,9890,9901,9912,9923,9951,9965,9978,9991,9995,10000],{"__ignoreMap":52},[56,9861,9862,9864,9866,9868,9870,9872,9874,9876,9878],{"class":58,"line":59},[56,9863,4157],{"class":999},[56,9865,4160],{"class":3447},[56,9867,673],{"class":76},[56,9869,4165],{"class":3447},[56,9871,673],{"class":76},[56,9873,4170],{"class":3447},[56,9875,673],{"class":76},[56,9877,4233],{"class":3447},[56,9879,2607],{"class":76},[56,9881,9882,9884,9886,9888],{"class":58,"line":86},[56,9883,4291],{"class":3447},[56,9885,4294],{"class":3447},[56,9887,4415],{"class":62},[56,9889,4300],{"class":76},[56,9891,9892,9894,9896,9899],{"class":58,"line":105},[56,9893,9364],{"class":3447},[56,9895,8360],{"class":3447},[56,9897,9898],{"class":174}," id",[56,9900,2607],{"class":76},[56,9902,9903,9905,9907,9910],{"class":58,"line":120},[56,9904,9364],{"class":3447},[56,9906,7969],{"class":3447},[56,9908,9909],{"class":174}," ad",[56,9911,2607],{"class":76},[56,9913,9914,9916,9918,9921],{"class":58,"line":248},[56,9915,9364],{"class":3447},[56,9917,4347],{"class":3447},[56,9919,9920],{"class":174}," ogretmen",[56,9922,2607],{"class":76},[56,9924,9925,9927,9929,9931,9933,9935,9937,9939,9941,9943,9945,9947,9949],{"class":58,"line":261},[56,9926,9364],{"class":3447},[56,9928,4415],{"class":2667},[56,9930,4316],{"class":76},[56,9932,8398],{"class":3447},[56,9934,9898],{"class":4325},[56,9936,4359],{"class":76},[56,9938,7969],{"class":3447},[56,9940,9909],{"class":4325},[56,9942,4359],{"class":76},[56,9944,4347],{"class":3447},[56,9946,9920],{"class":4325},[56,9948,4329],{"class":76},[56,9950,4300],{"class":76},[56,9952,9953,9956,9959,9961,9963],{"class":58,"line":274},[56,9954,9955],{"class":76}," this.",[56,9957,9958],{"class":174},"id ",[56,9960,3451],{"class":76},[56,9962,9898],{"class":174},[56,9964,2607],{"class":76},[56,9966,9967,9969,9972,9974,9976],{"class":58,"line":279},[56,9968,9955],{"class":76},[56,9970,9971],{"class":174},"ad ",[56,9973,3451],{"class":76},[56,9975,9909],{"class":174},[56,9977,2607],{"class":76},[56,9979,9980,9982,9985,9987,9989],{"class":58,"line":297},[56,9981,9955],{"class":76},[56,9983,9984],{"class":174},"ogretmen ",[56,9986,3451],{"class":76},[56,9988,9920],{"class":174},[56,9990,2607],{"class":76},[56,9992,9993],{"class":58,"line":318},[56,9994,9430],{"class":76},[56,9996,9997],{"class":58,"line":813},[56,9998,9999],{"class":130},"\u002F\u002Fgetters and setters\n",[56,10001,10002],{"class":58,"line":1913},[56,10003,4682],{"class":76},[47,10005,10007],{"className":4149,"code":10006,"language":1758,"meta":52,"style":52},"package org.sukru.xstream.entity;\npublic class Ogretmen {\n public String ad;\n public String soyad;\n public Ogretmen(String ad, String soyad) {\n this.ad = ad;\n this.soyad = soyad;\n }\n\u002F\u002Fgetters and setters\n@Override\n public String toString() {\n     return \"Ogretmen [ad=\" + ad + \", soyad=\" + soyad + \"]\";\n }\n}\n",[20,10008,10009,10029,10039,10049,10060,10082,10094,10107,10111,10115,10122,10135,10176,10180],{"__ignoreMap":52},[56,10010,10011,10013,10015,10017,10019,10021,10023,10025,10027],{"class":58,"line":59},[56,10012,4157],{"class":999},[56,10014,4160],{"class":3447},[56,10016,673],{"class":76},[56,10018,4165],{"class":3447},[56,10020,673],{"class":76},[56,10022,4170],{"class":3447},[56,10024,673],{"class":76},[56,10026,4233],{"class":3447},[56,10028,2607],{"class":76},[56,10030,10031,10033,10035,10037],{"class":58,"line":86},[56,10032,4291],{"class":3447},[56,10034,4294],{"class":3447},[56,10036,4347],{"class":62},[56,10038,4300],{"class":76},[56,10040,10041,10043,10045,10047],{"class":58,"line":105},[56,10042,9364],{"class":3447},[56,10044,7969],{"class":3447},[56,10046,9909],{"class":174},[56,10048,2607],{"class":76},[56,10050,10051,10053,10055,10058],{"class":58,"line":120},[56,10052,9364],{"class":3447},[56,10054,7969],{"class":3447},[56,10056,10057],{"class":174}," soyad",[56,10059,2607],{"class":76},[56,10061,10062,10064,10066,10068,10070,10072,10074,10076,10078,10080],{"class":58,"line":248},[56,10063,9364],{"class":3447},[56,10065,4347],{"class":2667},[56,10067,4316],{"class":76},[56,10069,4319],{"class":3447},[56,10071,9909],{"class":4325},[56,10073,4359],{"class":76},[56,10075,7969],{"class":3447},[56,10077,10057],{"class":4325},[56,10079,4329],{"class":76},[56,10081,4300],{"class":76},[56,10083,10084,10086,10088,10090,10092],{"class":58,"line":261},[56,10085,9955],{"class":76},[56,10087,9971],{"class":174},[56,10089,3451],{"class":76},[56,10091,9909],{"class":174},[56,10093,2607],{"class":76},[56,10095,10096,10098,10101,10103,10105],{"class":58,"line":274},[56,10097,9955],{"class":76},[56,10099,10100],{"class":174},"soyad ",[56,10102,3451],{"class":76},[56,10104,10057],{"class":174},[56,10106,2607],{"class":76},[56,10108,10109],{"class":58,"line":279},[56,10110,9430],{"class":76},[56,10112,10113],{"class":58,"line":297},[56,10114,9999],{"class":130},[56,10116,10117,10119],{"class":58,"line":318},[56,10118,7938],{"class":76},[56,10120,10121],{"class":3447},"Override\n",[56,10123,10124,10126,10128,10131,10133],{"class":58,"line":813},[56,10125,9364],{"class":3447},[56,10127,7969],{"class":3447},[56,10129,10130],{"class":2667}," toString",[56,10132,6136],{"class":76},[56,10134,4300],{"class":76},[56,10136,10137,10140,10142,10145,10147,10149,10152,10154,10156,10159,10161,10163,10166,10168,10170,10172,10174],{"class":58,"line":1913},[56,10138,10139],{"class":2620},"     return",[56,10141,77],{"class":76},[56,10143,10144],{"class":66},"Ogretmen [ad=",[56,10146,312],{"class":76},[56,10148,5400],{"class":76},[56,10150,10151],{"class":174}," ad ",[56,10153,5405],{"class":76},[56,10155,77],{"class":76},[56,10157,10158],{"class":66},", soyad=",[56,10160,312],{"class":76},[56,10162,5400],{"class":76},[56,10164,10165],{"class":174}," soyad ",[56,10167,5405],{"class":76},[56,10169,77],{"class":76},[56,10171,2887],{"class":66},[56,10173,312],{"class":76},[56,10175,2607],{"class":76},[56,10177,10178],{"class":58,"line":3664},[56,10179,9430],{"class":76},[56,10181,10182],{"class":58,"line":3669},[56,10183,4682],{"class":76},[47,10185,10187],{"className":4149,"code":10186,"language":1758,"meta":52,"style":52},"package org.sukru.xstream.test;\nimport org.sukru.xstream.entity.Ders;\nimport org.sukru.xstream.entity.Ogretmen;\nimport com.thoughtworks.xstream.XStream;\npublic class XStreamTest {\n public static void main(String[] args) {\n \u002F\u002F Yeni bir öğretmen üretelim.\n Ogretmen ogretmen = new Ogretmen(\"Yasin\", \"Kenar\");\n \u002F\u002F Yeni bir ders üretip öğretmenini belirtelim.\n Ders ders = new Ders((Long) 1L, \"Software Engineering\", ogretmen);\n \u002F\u002F XStream sihiri şimdi başlıyor.\n XStream xstream = new XStream();\n xstream.alias(\"Ders\", Ders.class); \u002F\u002F Ders sınıfı için bir isim verdik,\n \u002F\u002F yoksa paket isimlerini de dahil\n \u002F\u002F ediyor.\n String xml = xstream.toXML(ders); \u002F\u002F ders nesnesini xml’e çevir diyoruz.\n \u002F\u002F Bakalım nasıl bir xml ürettik.\n System.out.println(xml);\n \u002F\u002F Şimdi de oluşan xml i verip nesne alalım.\n Ders xmldenDers = (Ders) xstream.fromXML(xml);\n System.out.println(\"\\n XML den Ders: \"+xmldenDers.getId()+\" – \"+xmldenDers.getAd()+\" – \"+xmldenDers.getOgretmen().toString());\n }\n}\n",[20,10188,10189,10209,10233,10257,10277,10288,10310,10315,10346,10351,10387,10392,10406,10435,10440,10445,10468,10473,10491,10496,10523,10594,10598],{"__ignoreMap":52},[56,10190,10191,10193,10195,10197,10199,10201,10203,10205,10207],{"class":58,"line":59},[56,10192,4157],{"class":999},[56,10194,4160],{"class":3447},[56,10196,673],{"class":76},[56,10198,4165],{"class":3447},[56,10200,673],{"class":76},[56,10202,4170],{"class":3447},[56,10204,673],{"class":76},[56,10206,4175],{"class":3447},[56,10208,2607],{"class":76},[56,10210,10211,10213,10215,10217,10219,10221,10223,10225,10227,10229,10231],{"class":58,"line":86},[56,10212,4182],{"class":999},[56,10214,4160],{"class":3447},[56,10216,673],{"class":76},[56,10218,4165],{"class":3447},[56,10220,673],{"class":76},[56,10222,4170],{"class":3447},[56,10224,673],{"class":76},[56,10226,4233],{"class":3447},[56,10228,673],{"class":76},[56,10230,4035],{"class":3447},[56,10232,2607],{"class":76},[56,10234,10235,10237,10239,10241,10243,10245,10247,10249,10251,10253,10255],{"class":58,"line":105},[56,10236,4182],{"class":999},[56,10238,4160],{"class":3447},[56,10240,673],{"class":76},[56,10242,4165],{"class":3447},[56,10244,673],{"class":76},[56,10246,4170],{"class":3447},[56,10248,673],{"class":76},[56,10250,4233],{"class":3447},[56,10252,673],{"class":76},[56,10254,4262],{"class":3447},[56,10256,2607],{"class":76},[56,10258,10259,10261,10263,10265,10267,10269,10271,10273,10275],{"class":58,"line":120},[56,10260,4182],{"class":999},[56,10262,4271],{"class":3447},[56,10264,673],{"class":76},[56,10266,4276],{"class":3447},[56,10268,673],{"class":76},[56,10270,4170],{"class":3447},[56,10272,673],{"class":76},[56,10274,4140],{"class":3447},[56,10276,2607],{"class":76},[56,10278,10279,10281,10283,10286],{"class":58,"line":248},[56,10280,4291],{"class":3447},[56,10282,4294],{"class":3447},[56,10284,10285],{"class":62}," XStreamTest",[56,10287,4300],{"class":76},[56,10289,10290,10292,10294,10296,10298,10300,10302,10304,10306,10308],{"class":58,"line":261},[56,10291,9364],{"class":3447},[56,10293,4308],{"class":3447},[56,10295,4311],{"class":3447},[56,10297,492],{"class":2667},[56,10299,4316],{"class":76},[56,10301,4319],{"class":3447},[56,10303,4322],{"class":76},[56,10305,4326],{"class":4325},[56,10307,4329],{"class":76},[56,10309,4300],{"class":76},[56,10311,10312],{"class":58,"line":274},[56,10313,10314],{"class":130}," \u002F\u002F Yeni bir öğretmen üretelim.\n",[56,10316,10317,10319,10322,10324,10326,10328,10330,10332,10334,10336,10338,10340,10342,10344],{"class":58,"line":279},[56,10318,4347],{"class":3447},[56,10320,10321],{"class":174}," ogretmen ",[56,10323,3451],{"class":76},[56,10325,4344],{"class":2620},[56,10327,4347],{"class":2667},[56,10329,4316],{"class":76},[56,10331,312],{"class":76},[56,10333,4093],{"class":66},[56,10335,312],{"class":76},[56,10337,4359],{"class":76},[56,10339,77],{"class":76},[56,10341,4111],{"class":66},[56,10343,312],{"class":76},[56,10345,4369],{"class":76},[56,10347,10348],{"class":58,"line":297},[56,10349,10350],{"class":130}," \u002F\u002F Yeni bir ders üretip öğretmenini belirtelim.\n",[56,10352,10353,10355,10357,10359,10361,10363,10366,10368,10370,10373,10375,10377,10379,10381,10383,10385],{"class":58,"line":318},[56,10354,4415],{"class":3447},[56,10356,5499],{"class":174},[56,10358,3451],{"class":76},[56,10360,4344],{"class":2620},[56,10362,4415],{"class":2667},[56,10364,10365],{"class":76},"((",[56,10367,8398],{"class":174},[56,10369,4329],{"class":76},[56,10371,10372],{"class":999}," 1L",[56,10374,4359],{"class":76},[56,10376,77],{"class":76},[56,10378,4067],{"class":66},[56,10380,312],{"class":76},[56,10382,4359],{"class":76},[56,10384,9920],{"class":174},[56,10386,4369],{"class":76},[56,10388,10389],{"class":58,"line":813},[56,10390,10391],{"class":130}," \u002F\u002F XStream sihiri şimdi başlıyor.\n",[56,10393,10394,10396,10398,10400,10402,10404],{"class":58,"line":1913},[56,10395,4592],{"class":3447},[56,10397,4585],{"class":174},[56,10399,3451],{"class":76},[56,10401,4344],{"class":2620},[56,10403,4592],{"class":2667},[56,10405,4595],{"class":76},[56,10407,10408,10410,10412,10414,10416,10418,10420,10422,10424,10426,10428,10430,10432],{"class":58,"line":3664},[56,10409,4637],{"class":174},[56,10411,673],{"class":76},[56,10413,4605],{"class":2667},[56,10415,4316],{"class":76},[56,10417,312],{"class":76},[56,10419,4035],{"class":66},[56,10421,312],{"class":76},[56,10423,4359],{"class":76},[56,10425,4415],{"class":174},[56,10427,673],{"class":76},[56,10429,4622],{"class":174},[56,10431,8611],{"class":76},[56,10433,10434],{"class":130}," \u002F\u002F Ders sınıfı için bir isim verdik,\n",[56,10436,10437],{"class":58,"line":3669},[56,10438,10439],{"class":130}," \u002F\u002F yoksa paket isimlerini de dahil\n",[56,10441,10442],{"class":58,"line":3678},[56,10443,10444],{"class":130}," \u002F\u002F ediyor.\n",[56,10446,10447,10449,10451,10453,10455,10457,10459,10461,10463,10465],{"class":58,"line":3695},[56,10448,7969],{"class":3447},[56,10450,4632],{"class":174},[56,10452,3451],{"class":76},[56,10454,4637],{"class":174},[56,10456,673],{"class":76},[56,10458,4642],{"class":2667},[56,10460,4316],{"class":76},[56,10462,5524],{"class":174},[56,10464,8611],{"class":76},[56,10466,10467],{"class":130}," \u002F\u002F ders nesnesini xml’e çevir diyoruz.\n",[56,10469,10470],{"class":58,"line":3712},[56,10471,10472],{"class":130}," \u002F\u002F Bakalım nasıl bir xml ürettik.\n",[56,10474,10475,10477,10479,10481,10483,10485,10487,10489],{"class":58,"line":3721},[56,10476,7234],{"class":174},[56,10478,673],{"class":76},[56,10480,4659],{"class":174},[56,10482,673],{"class":76},[56,10484,4664],{"class":2667},[56,10486,4316],{"class":76},[56,10488,2996],{"class":174},[56,10490,4369],{"class":76},[56,10492,10493],{"class":58,"line":3731},[56,10494,10495],{"class":130}," \u002F\u002F Şimdi de oluşan xml i verip nesne alalım.\n",[56,10497,10498,10500,10503,10505,10507,10509,10511,10513,10515,10517,10519,10521],{"class":58,"line":3750},[56,10499,4415],{"class":3447},[56,10501,10502],{"class":174}," xmldenDers ",[56,10504,3451],{"class":76},[56,10506,5367],{"class":76},[56,10508,4035],{"class":174},[56,10510,4329],{"class":76},[56,10512,4637],{"class":174},[56,10514,673],{"class":76},[56,10516,5480],{"class":2667},[56,10518,4316],{"class":76},[56,10520,2996],{"class":174},[56,10522,4369],{"class":76},[56,10524,10525,10527,10529,10531,10533,10535,10537,10539,10541,10544,10546,10548,10551,10553,10555,10557,10559,10561,10563,10565,10567,10569,10571,10573,10575,10577,10579,10581,10583,10585,10587,10589,10592],{"class":58,"line":3759},[56,10526,7234],{"class":174},[56,10528,673],{"class":76},[56,10530,4659],{"class":174},[56,10532,673],{"class":76},[56,10534,4664],{"class":2667},[56,10536,4316],{"class":76},[56,10538,312],{"class":76},[56,10540,5598],{"class":174},[56,10542,10543],{"class":66}," XML den Ders: ",[56,10545,312],{"class":76},[56,10547,5405],{"class":76},[56,10549,10550],{"class":174},"xmldenDers",[56,10552,673],{"class":76},[56,10554,5529],{"class":2667},[56,10556,8702],{"class":76},[56,10558,312],{"class":76},[56,10560,5541],{"class":66},[56,10562,312],{"class":76},[56,10564,5405],{"class":76},[56,10566,10550],{"class":174},[56,10568,673],{"class":76},[56,10570,5556],{"class":2667},[56,10572,8702],{"class":76},[56,10574,312],{"class":76},[56,10576,5541],{"class":66},[56,10578,312],{"class":76},[56,10580,5405],{"class":76},[56,10582,10550],{"class":174},[56,10584,673],{"class":76},[56,10586,5582],{"class":2667},[56,10588,5585],{"class":76},[56,10590,10591],{"class":2667},"toString",[56,10593,7330],{"class":76},[56,10595,10596],{"class":58,"line":4673},[56,10597,9430],{"class":76},[56,10599,10600],{"class":58,"line":4679},[56,10601,4682],{"class":76},[16,10603,10604],{},"ve XML çıktısı da aşağıdaki gibi oluyor.",[47,10606,10607],{"className":2995,"code":4026,"language":2996,"meta":52,"style":52},[20,10608,10609,10617,10633,10649,10657,10673,10689,10697],{"__ignoreMap":52},[56,10610,10611,10613,10615],{"class":58,"line":59},[56,10612,3478],{"class":76},[56,10614,4035],{"class":3304},[56,10616,3308],{"class":76},[56,10618,10619,10621,10623,10625,10627,10629,10631],{"class":58,"line":86},[56,10620,4042],{"class":76},[56,10622,4045],{"class":3304},[56,10624,178],{"class":76},[56,10626,1000],{"class":174},[56,10628,3324],{"class":76},[56,10630,4045],{"class":3304},[56,10632,3308],{"class":76},[56,10634,10635,10637,10639,10641,10643,10645,10647],{"class":58,"line":105},[56,10636,4042],{"class":76},[56,10638,4062],{"class":3304},[56,10640,178],{"class":76},[56,10642,4067],{"class":174},[56,10644,3324],{"class":76},[56,10646,4062],{"class":3304},[56,10648,3308],{"class":76},[56,10650,10651,10653,10655],{"class":58,"line":120},[56,10652,4042],{"class":76},[56,10654,4080],{"class":3304},[56,10656,3308],{"class":76},[56,10658,10659,10661,10663,10665,10667,10669,10671],{"class":58,"line":248},[56,10660,3301],{"class":76},[56,10662,4062],{"class":3304},[56,10664,178],{"class":76},[56,10666,4093],{"class":174},[56,10668,3324],{"class":76},[56,10670,4062],{"class":3304},[56,10672,3308],{"class":76},[56,10674,10675,10677,10679,10681,10683,10685,10687],{"class":58,"line":261},[56,10676,3301],{"class":76},[56,10678,4106],{"class":3304},[56,10680,178],{"class":76},[56,10682,4111],{"class":174},[56,10684,3324],{"class":76},[56,10686,4106],{"class":3304},[56,10688,3308],{"class":76},[56,10690,10691,10693,10695],{"class":58,"line":274},[56,10692,4122],{"class":76},[56,10694,4080],{"class":3304},[56,10696,3308],{"class":76},[56,10698,10699,10701,10703],{"class":58,"line":279},[56,10700,3324],{"class":76},[56,10702,4035],{"class":3304},[56,10704,3308],{"class":76},[16,10706,10707],{},"XML’den oluşturduğumuz nesneyi konsola bastırdığımız zaman aşağıdaki gibi olduğunu görürüz.",[47,10709,10712],{"className":10710,"code":10711,"language":1225,"meta":52},[1223],"XML den Ders: 1 – Software Engineering – Ogretmen [ad=Yasin, soyad=Kenar]\n",[20,10713,10711],{"__ignoreMap":52},[1187,10715,10716],{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":52,"searchDepth":86,"depth":86,"links":10718},[],"2011-06-15","XStream kütüphanesiyle Java nesnelerini XML'e ve XML'i tekrar nesneye dönüştürme.",{},"\u002Ftr\u002Fblog\u002Fxstream-java-to-xml-xml-to-java",{"title":9835,"description":10720},"tr\u002Fblog\u002Fxstream-java-to-xml-xml-to-java",[1758,2996],"\u002Fen\u002Fblog\u002Fxstream-java-to-xml-xml-to-java","8jYJAceRdZnJ2c-eOc4yY5Sj6oszDrMzvKtIWbdUhqA",{"id":10729,"title":10730,"body":10731,"date":11095,"description":11096,"extension":1202,"meta":11097,"navigation":231,"path":11098,"seo":11099,"stem":11100,"tags":11101,"translation":11103,"__hash__":11104},"pages_tr\u002Ftr\u002Fblog\u002Fintroduction-to-concurrency.md","Concurrency – Aynı Anda Kullanım",{"type":8,"value":10732,"toc":11093},[10733,10744,10752,10765,10960,11064,11090],[16,10734,10735,10736,10739,10740,10743],{},"Java’da “",[1388,10737,10738],{},"Concurrency","” yani “",[1388,10741,10742],{},"Aynı Anda Kullanım","” kavramı, aynı zamanda birden fazla iş yapmak gerektiği zaman kullanılır.\nİki temel işlemi vardır;",[1729,10745,10746,10749],{},[1124,10747,10748],{},"Processes",[1124,10750,10751],{},"Threads",[16,10753,10754,10755,10757,10758,10761,10762,10764],{},"Aslında hemen akla “",[1388,10756,10751],{},"” gelir. Her bir “thread” başlıbaşına bir “process”tir. Yeni bir “thread” başlatmanın 2 tür yolu var; birincisi “",[1388,10759,10760],{},"Runnable","” arayüzünden türetmek, ikincisi “",[1388,10763,2286],{},"” nesnesinin alt sınıfı yapmak. Aşağıda 2 örnek de mevcut;",[47,10766,10768],{"className":4149,"code":10767,"language":1758,"meta":52,"style":52},"public class HelloRunnable implements Runnable {\n    @Override\n    public void run() {\n        System.out.println(\"Hello from a thread!\");\n    }\n    public static void main(String args[]) {\n        Thread t = new Thread(new HelloRunnable());\n        t.start();\n        System.out.println(\"ID: \"+ t.getId());\n        System.out.println(\"NAME: \"+ t.getName());\n    }\n}\n",[20,10769,10770,10787,10793,10806,10829,10833,10854,10877,10889,10920,10952,10956],{"__ignoreMap":52},[56,10771,10772,10774,10776,10779,10782,10785],{"class":58,"line":59},[56,10773,4291],{"class":3447},[56,10775,4294],{"class":3447},[56,10777,10778],{"class":62}," HelloRunnable",[56,10780,10781],{"class":3447}," implements",[56,10783,10784],{"class":62}," Runnable",[56,10786,4300],{"class":76},[56,10788,10789,10791],{"class":58,"line":86},[56,10790,5213],{"class":76},[56,10792,10121],{"class":3447},[56,10794,10795,10797,10799,10802,10804],{"class":58,"line":105},[56,10796,4305],{"class":3447},[56,10798,4311],{"class":3447},[56,10800,10801],{"class":2667}," run",[56,10803,6136],{"class":76},[56,10805,4300],{"class":76},[56,10807,10808,10810,10812,10814,10816,10818,10820,10822,10825,10827],{"class":58,"line":120},[56,10809,4654],{"class":174},[56,10811,673],{"class":76},[56,10813,4659],{"class":174},[56,10815,673],{"class":76},[56,10817,4664],{"class":2667},[56,10819,4316],{"class":76},[56,10821,312],{"class":76},[56,10823,10824],{"class":66},"Hello from a thread!",[56,10826,312],{"class":76},[56,10828,4369],{"class":76},[56,10830,10831],{"class":58,"line":248},[56,10832,4676],{"class":76},[56,10834,10835,10837,10839,10841,10843,10845,10847,10849,10852],{"class":58,"line":261},[56,10836,4305],{"class":3447},[56,10838,4308],{"class":3447},[56,10840,4311],{"class":3447},[56,10842,492],{"class":2667},[56,10844,4316],{"class":76},[56,10846,4319],{"class":3447},[56,10848,4326],{"class":4325},[56,10850,10851],{"class":76},"[])",[56,10853,4300],{"class":76},[56,10855,10856,10859,10862,10864,10866,10869,10871,10873,10875],{"class":58,"line":274},[56,10857,10858],{"class":3447},"        Thread",[56,10860,10861],{"class":174}," t ",[56,10863,3451],{"class":76},[56,10865,4344],{"class":2620},[56,10867,10868],{"class":2667}," Thread",[56,10870,4316],{"class":76},[56,10872,5345],{"class":2620},[56,10874,10778],{"class":2667},[56,10876,7330],{"class":76},[56,10878,10879,10882,10884,10887],{"class":58,"line":279},[56,10880,10881],{"class":174},"        t",[56,10883,673],{"class":76},[56,10885,10886],{"class":2667},"start",[56,10888,4595],{"class":76},[56,10890,10891,10893,10895,10897,10899,10901,10903,10905,10908,10910,10912,10914,10916,10918],{"class":58,"line":297},[56,10892,4654],{"class":174},[56,10894,673],{"class":76},[56,10896,4659],{"class":174},[56,10898,673],{"class":76},[56,10900,4664],{"class":2667},[56,10902,4316],{"class":76},[56,10904,312],{"class":76},[56,10906,10907],{"class":66},"ID: ",[56,10909,312],{"class":76},[56,10911,5405],{"class":76},[56,10913,6392],{"class":174},[56,10915,673],{"class":76},[56,10917,5529],{"class":2667},[56,10919,7330],{"class":76},[56,10921,10922,10924,10926,10928,10930,10932,10934,10936,10939,10941,10943,10945,10947,10950],{"class":58,"line":318},[56,10923,4654],{"class":174},[56,10925,673],{"class":76},[56,10927,4659],{"class":174},[56,10929,673],{"class":76},[56,10931,4664],{"class":2667},[56,10933,4316],{"class":76},[56,10935,312],{"class":76},[56,10937,10938],{"class":66},"NAME: ",[56,10940,312],{"class":76},[56,10942,5405],{"class":76},[56,10944,6392],{"class":174},[56,10946,673],{"class":76},[56,10948,10949],{"class":2667},"getName",[56,10951,7330],{"class":76},[56,10953,10954],{"class":58,"line":813},[56,10955,4676],{"class":76},[56,10957,10958],{"class":58,"line":1913},[56,10959,4682],{"class":76},[47,10961,10963],{"className":4149,"code":10962,"language":1758,"meta":52,"style":52},"public class HelloThread extends Thread {\n    public void run() {\n        System.out.println(\"Hello from a thread!\");\n    }\n    public static void main(String[] args) {\n        (new HelloThread()).start();\n    }\n}\n",[20,10964,10965,10981,10993,11015,11019,11041,11056,11060],{"__ignoreMap":52},[56,10966,10967,10969,10971,10974,10977,10979],{"class":58,"line":59},[56,10968,4291],{"class":3447},[56,10970,4294],{"class":3447},[56,10972,10973],{"class":62}," HelloThread",[56,10975,10976],{"class":3447}," extends",[56,10978,10868],{"class":62},[56,10980,4300],{"class":76},[56,10982,10983,10985,10987,10989,10991],{"class":58,"line":86},[56,10984,4305],{"class":3447},[56,10986,4311],{"class":3447},[56,10988,10801],{"class":2667},[56,10990,6136],{"class":76},[56,10992,4300],{"class":76},[56,10994,10995,10997,10999,11001,11003,11005,11007,11009,11011,11013],{"class":58,"line":105},[56,10996,4654],{"class":174},[56,10998,673],{"class":76},[56,11000,4659],{"class":174},[56,11002,673],{"class":76},[56,11004,4664],{"class":2667},[56,11006,4316],{"class":76},[56,11008,312],{"class":76},[56,11010,10824],{"class":66},[56,11012,312],{"class":76},[56,11014,4369],{"class":76},[56,11016,11017],{"class":58,"line":120},[56,11018,4676],{"class":76},[56,11020,11021,11023,11025,11027,11029,11031,11033,11035,11037,11039],{"class":58,"line":248},[56,11022,4305],{"class":3447},[56,11024,4308],{"class":3447},[56,11026,4311],{"class":3447},[56,11028,492],{"class":2667},[56,11030,4316],{"class":76},[56,11032,4319],{"class":3447},[56,11034,4322],{"class":76},[56,11036,4326],{"class":4325},[56,11038,4329],{"class":76},[56,11040,4300],{"class":76},[56,11042,11043,11046,11048,11050,11052,11054],{"class":58,"line":261},[56,11044,11045],{"class":76},"        (",[56,11047,5345],{"class":2620},[56,11049,10973],{"class":2667},[56,11051,5532],{"class":76},[56,11053,10886],{"class":2667},[56,11055,4595],{"class":76},[56,11057,11058],{"class":58,"line":274},[56,11059,4676],{"class":76},[56,11061,11062],{"class":58,"line":279},[56,11063,4682],{"class":76},[16,11065,11066,11067,11070,11077,11089],{},"Her iki örnekte de görüldüğü üzere “",[1388,11068,11069],{},"Thread.start()",[4143,11071,11072,11073,11076],{},"” ifadesi ile thread çalışmaya başlıyor. Thread çalışmaya başlayınca “",[1388,11074,11075],{},"run()","” metodunu tetikliyor.",[4143,11078,11079,11081,11082],{},[1388,11080,6660],{}," ",[4143,11083,11084,11088],{},[1645,11085,11086],{"href":11086,"rel":11087},"http:\u002F\u002Fdownload.oracle.com\u002Fjavase\u002Ftutorial\u002Fessential\u002Fconcurrency\u002Findex.html",[1649]," adresinden faydalanılmıştır.","\n**\n**",[1187,11091,11092],{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":52,"searchDepth":86,"depth":86,"links":11094},[],"2011-06-13","Java'da eşzamanlı programlamaya (concurrency) giriş: thread kavramı ve temel yaklaşımlar.",{},"\u002Ftr\u002Fblog\u002Fintroduction-to-concurrency",{"title":10730,"description":11096},"tr\u002Fblog\u002Fintroduction-to-concurrency",[11102,1758],"concurrency","\u002Fen\u002Fblog\u002Fintroduction-to-concurrency","B_xm0Ons3zjf3hWy2pipV_x5zE9t_rTqsTXJPL3yp1E",1792353224397]