4 Kasım 2015 Çarşamba

WebMap Oluşturma


Aslında bundan önce servisler nasıl hazırlanıra bakmamız daha mantıklı ama servislerinizin hazır olduğunu düşünerek (esrinin kendi örnek featurelayer'ları üzerinden gidecez, esri samples feature service... gibi anahtar kelimelerle google üzerinden arama yaparak bu adresleri elde edebilirsiniz) webmap oluşturup onun id numarasını yazılımınızda kullanabilirsiniz.

Ya da webmap'e artık nasıl ihtiyaç duyarsanız. Şimdi nasıl webmap oluşturuyoruz id nerde görünüyor bakalım.

Yine resim resim gidiyoruz.

                                    
                                        Esrinin kendi sitesinden online giriş yapıyoruz kaydımız yoksa yeni bir kayıt oluşturabilirsiniz.


Giriş yaptıktan sonra okla görülen yerdeki haritayı tıklıyoruz.

Açılan sayfada ekle butonunu tıklayarak istediğimiz katmanı ekliyoruz. Sol menüyü kurcalayıp neler yapabileceğinizi görebilirsiniz. Katmanı isterseniz web adresinden çekin isterseniz dosyadan çekebilirsiniz. Yani elinizi korkak alıştırmayın.Bütün menüleri türkçe olarak inceleyebilirsiniz diye hepsini tek tek açıklamıyorum.

Açılan ekranda url olan yere oluşturacağınız webmap'te hangi katmanı eklemek istiyorsanız adresini ekliyorsunuz.


Yayınlamadan önce kaydetmeniz gerekiyor. Okla belirtildiği gibi kaydet linkine tıklayıp kaydediyoruz.

Daha sonra paylaş diyerek paylaşımı sağlıyoruz. Seçenekleri türkçe olduğu için tek tek açıklamıyorum.

Yayımladıktan sonra burdaki gibi haritamız ortaya çıkmış oluyor. Artık okla gösterdiğim yerde webmap'inizin yazılımınızda kullanmak için bir id'si bulunmakta. Hadi gözünüz aydın :)
Daha sonralarda hazır templatelerde bu webmap id yi nasıl kullanır yayımlarsınız ona bakarız.


17 Ekim 2015 Cumartesi

Javascript ile Querytask Örneği

Bugün katmanlarda sorgu işlemi nasıl yapılıyor bakalım. Javascript ArcGis  kütüphanesi kullanarak katmanlarda sorguyu yapabiliriz

sorgu: function () {

       var urli = "Sorgulamak istediğimiz katmanın url uzantısını buraya yazıyorsunuz";
       var qParams = new esri.tasks.Query();
       qParams.returnGeometry = false;//geometrik bir sorgu yaptığımızda burası true olacak
         //yukarısı true olursa; 
        //qParams.geometry=geometrisiz alınan değeri buraya işleyebilirsiniz. Mesela haritaya tıklayınca aldığınız koordinatı yazarsanız tıkladığınız yerdeki sorguyu çeker.
       qParams.outFields = ["BOLGE_ADI", "ISLETME_ADI"];//katmandan herşey gelsin derseniz buraya "*" şeklinde yazın.
       qParams.where = '1=1'; //Şartımız ISLETME_ADI =="Bilecik"...gibi istediğiniz şarta göre yazabilirsiniz
       qParams.outSpatialReference = this.map.spatialReference; //Burda haritada varsaydığımız spatialReference verdik
       var task = new esri.tasks.QueryTask(urli);
       task.execute(qParams, dojo.hitch(this, this.onIsletmeAra)) //dojo üzerinden gittiğim için bu şekilde oldu. normalde task.execute(qParams, gidilecekmetod) yeterli olacaktır.
   },

 onIsletmeAra: function (featureSeti) {

        var fi;
       var valuesi = [];
       var valuesii = [];

       for (var i = 0; i < featureSeti.features.length; i++) { //sorguda feature sayısı kadar yani katmandaki veri sayısı kadar dönecek
           fi = featureSeti.features[i];  
             valuesi.push({ iname: fi.attributes.ISLETME_ADI }); // İşletme adlarını alıp valuesi diye tanımladığımız diziye yazacak
             valuesii.push({ bname: fi.attributes.BOLGE_ADI })
       
            ......artık dizideki verileri nerde göstermek isterseniz kodlamanıza ona göre devam edebilirsiniz.Ben hepsini comboxa işlediğim için şu şekilde devam ettim:

         var dataItemsi = {
        identifier: 'iname',
        items: valuesi

           };
         var storei = new dojo.data.ItemFileReadStore({
        data: dataItemsi

       });
       this.widgets.cbos.store = storei;//cbos combomuza oluştururken verdiğimiz isim.
       this.widgets.cbos.searchAttr = "iname";
   },


   },

15 Ekim 2015 Perşembe

Ortaya Karışık Ajax

Bugün çok önceleri ajax kullanarak gis yazılımımda yaptığım bir post geti yazacağız.

Haritaya tıklayınca katmandan çektiği veriyi, eşsiz bir veri(Örn:GlobalId) ile tablosal veride eşleştirerek, tablosal verileri ile birleştirip istenilen bilgileri getirmesi ve değişiklikleri kaydetmesini sağlayan güzel bir işlem ; ortaya karışık herşeyin kullanıldığı bir işlem diyebiliriz:

Servis açtık , Sql Connection sağladık. Serviste oluşturulan sınıflarda Veritabanından verileri çektik ve kaydettik.

Katman ekledik. Katmanlardan haritaya tıklanınca istenilen verileri çektik

Tablosal veriden çekilen ile katmandan çekilen arasında var olan ortak veriyi sorguladık ve tablosal veritabanındaki verileri böylece haritayı tıklayınca getirmiş olduk.
Aşağıdaki resimde haritaya tıklayınca pencereye bu verilerin geldiğini görebiliyoruz. Ekle ve Güncelle tuşları altında ajax nasıl işliyor ona bakalım.


Güzel bir yemek tarifi verir gibi de olur:)
Malzemeler:
Bir adet tablosal veritabanı(MySql üzerinde olacak)
Bir adet coğrafik veritabanı (GeoDatabase üzerinde olacak)
Bir adet iki veritabanı arasında ortak bir veri, biz globalid kullanacağız
Bir adet  arada servis etmek ve yemek için ajax

İki veri tabanını ortak attribute ile bağlıyoruz. Ajax ile karıştırarak çekiyourz ve servis ediyoruz.

Hadi bakalım başlayalım;

Visual Studio üzerinden File>New Web Site diyerek oluşturduğum proje üzerinde yaptığım bir kısım olduğu için onun üzerinden gideceğiz.
Tablosal veritabanımıza bağlantıyı servis yazarak yapıyoruz ;
Aşağıdaki resimde olduğu gibi yeni servis açtım ismini isteğinize göre verirsiniz ben Servis dedim geçtim .



//Tablosal veritabanına bağlantı 
//Aşağıdaki satırları web.config içine yazıyoruz. Ve SqlConnection yani bağlantımızı sağlamış //oluyoruz.

 <connectionStrings>

 <add name="Bağlantınıza koyacağınız isim" connectionString="Data Source=veritabanın bulunduğu makinanın adı-adresi; Persist Security Info=True; Initial Catalog=Veritabanınızın ismi; UserID=Veritabanına bağlanabilen ve yazılımda neler yapılması gerekiyorsa yetkisi olan kullanıcı bağlantı ismi; Password=Şifre" />

  </connectionStrings>

Servisimizdeki sınıflarda get post metodlarını aynı sınıfta da tutabilirsiniz ayrı sınıfta da ben iki ayrı sınıfta tuttum. 



get metodumuz - verileri getirmek için




post metodumuz-verileri kaydetme ve güncelleme için


Özetlersek: Yukarıda tablosal verilerimize erişim için AJAX enabled WCF servis oluşturarak , bağlantıyı sağladık get ve post metodlarında select, insert, update sql komutlarını kullanarak verilerimizi listelere atadık ki ajax ile servis isminden ulaşabilelim.


Şimdi gelelim haritamızı oluşturduğumuz sınıfta katmanı ekleyip o katmandaki verileri çekip tablosal verilerle kesiştirerek istediğimize ulaşmaya...

//Haritamızı oluşturuyoruz. Altlık olarak topo seçtim siz farklı bir altlık haritası seçebilirsiniz

initialExtent = new esri.geometry.Extent({ "xmin": 2927447, "ymin": 4259478, "xmax": 5018471, "ymax": 5196834, "spatialReference": { "wkid": 102100 } });

        map = new Map("map", {
            extent: initialExtent,
            basemap: "topo",
            zoom: 6
        });

//Katmanı oluşturuyoruz

 var layer = new  FeatureLayer("ArcGis veya bunun benzeri programlar ile oluşturduğunuz harita servisinizde katmana erişim urlsini buraya yazıyoruz", {
  mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
  outFields: ["*"],
   });

 //haritaya katmanı ekliyoruz
 map.addLayers([layer]);

  //haritaya tıklayınca olacak olanlar :)
  dojo.connect(layer, "onClick", function (evt) { //haritayı tıkla
            var globalids = evt.graphic.attributes.BLG_GLBLID); //eventı grafikten attribut olarak al ve adını globalids yap. Yani haritayı tıklayınca katmana git ordaki coğrafi verilerden bölgeglobalidyi çek ismini globalids koy.
            var bolgeadi = evt.graphic.attributes.BLGADI; //Yukarıdaki mantık
            $.ajax({
                type: 'GET', //verileri getirmek için GET
                contentType: 'application/json; charset=utf-8',
                url: 'Service.svc/Getobje', //Oluşturduğumuz serviste get metodumuzun(yukarıdaki resimde olan metod) ismine erişimi sağlıyoruz
                data: '{#globalids}', //get metodumuzdaki parametremiz
                proccessData: false,
                dataType: 'json',
                success: function (data) {
                    var d = eval(data.d);
                    var i = 0;
                    for (i; i < d.length; i++) {
                    sqlglobal.push(d[i].globalid); //Getobje metodunda select komutu ile çektiğimiz verileri burda yazmasam da oluşturduğumuz dizilere ekliyoruz.  Herbir veri için ayrı dizi oluşturdum bunun sebebi herbirine ayrı karşılaştırmaya ihtiyaç duymamdı. Siz tek bir diziye ekleyebilirsiniz. Yani sqlglobal ve diğerleri birer dizidir.
                        sqltelefon.push(d[i].telefon);
                        sqleposta.push(d[i].eposta);
                        sqlvergino.push(d[i].vergino);
                        sqlvergidairesi.push(d[i].vergidairesi);
                        sqlkepadresi.push(d[i].kepadresi);
                        sqlx.push(d[i].x);
                        sqly.push(d[i].y);
                        sqlfax.push(d[i].fax);
                        sqladres.push(d[i].adres);

                    }

  for (i; i < sqlglobal.length; i++) {
  if (sqlglobal[i] === globalids) { //Tablosal veriden çektiğim globalid ile geodatabase(haritayı tıklayınca katmandan gelen globalid eşit mi şartını burda yazıyoruz. Asıl amacımız buydu o yüzden kırmızııı :))).

map.infoWindow.setTitle("İLETİŞİM");//Ekrana verileri getirince çıkacak olan penceremiz ve başlığı

var contentString = '<div class="block"><label><b>Adres:</b></label><input type="text" value="' + sqladres[i] + '" id="adres_id" runat="server" /></div>' +
                                                '<div class="block"><label><b>Telefon:</b></label> <input type="text" value="' + sqltelefon[i] + '" id="telefon_id" runat="server" /></div> ' +
                                                '<div class="block"><label><b>Fax    :</b></label> <input type="text" value="' + sqlfax[i] + '" id="fax_id"/></div> ' +
                                                '<div class="block"><label><b>Kep Adresi:</b></label> <input type="text" value="' + sqlkepadresi[i] + '"id="kepadresi_id"/></div>' +
                                                '<div class="block"><label><b>Vergi Dairesi:</b></label> <input type="text" value="' + sqlvergidairesi[i] + '" readonly/></div>' +
                                                '<div class="block"><label><b>Vergi No:</b></label> <input type="text" value="' + sqlvergino[i] + '" readonly/></div>' +
                                                '<div class="block"><label><b>e-posta:</b></label> <input type="text" value="' + sqleposta[i] + '" id="eposta_id" /></div>' +
                                                '<div class="block"><label><b>X Koordinatı:</b></label> <input type="text" value="' + sqlx[i] + '" readonly /></div>' +
                                                '<div class="block"><label><b>Y Koordinatı:</b></label> <input type="text" value="' + sqly[i] + '" readonly /></div>' +
                                                '<button id="gncClick" value="Submit" onClick="guncelle_click()" runat="server">GUNCELLE</button>' + '<b><button id="btnekleClick" value="Ekle" onClick="ekle_click()" runat="server">EKLE</button>';
                            
map.infoWindow.setContent(contentString); //yukarıda belirlediğimiz stringleri pencerese set ediyoruz.
map.infoWindow.resize(350, 240);//pencerenin büyüklüğünü belirliyoruz.
map.infoWindow.show(evt.screenPoint, map.getInfoWindowAnchor(evt.screenPoint)); //pencereyi gösteriyoruz

                            $('#gncClick').click(function () {//güncelle butonuna tıklanınca işleme başla//ekle tuşuna basılınca olayında sadece tuş ismini değiştiriyoruz
                                var arrData = {};
                                arrData.Adres = document.getElementById('adres_id').value;
                                arrData.Telefon = document.getElementById('telefon_id').value;
                                arrData.GlobalId = globalids;
                                $.ajax({
                                    type: 'POST',
                                    url: 'Service.svc/PostObjectId', //yukarıdaki resimlerdeki sonuncusunda güncellemek için yazdığımız metoda erişim urlsini yazıyoruz //ekle tuşuna basılırsa burda o metodun ismi yazılacak.
                                    data: JSON.stringify(arrData),
                                    contentType: 'application/json; charset=utf-8',
                                    dataType: 'json',
                                    async: false,
                                    success: function (data) {//değiştirilen değerleri veritabanına işlemesini sağlayan success//ekle tuşuna basıldığında bu succes içerisine şartlar koymanız gerekecek varsa ekleme yoksa ekle gibi...
                                        var obj = eval(data.d);
                                        if (obj == 'true') {
                                            $('#adres_id').val('');
                                            $('#telefon_id').val('');
                                        }
                                        alert("Güncelleme işlemi başarılı şekilde gerçekleştirilmiştir.");
                                        window.location.reload();
                                    },
                                    error: function () {
                                    alert("error");
                                    }
                                });
                            });
                        }
                    }

                }

            });
        });

1 Ekim 2015 Perşembe

Linux'ta ( Ubuntu ) Eclipse yükleme

Aslında ubuntuyu en baştan sırayla anlatmayı planlıyordum ancak benim bugün yaptıklarımı yazıp baştan alınacak yazıları hazırladıktan sonra eklemenin sorun olmayacağını düşünüyorum..
Bugün ubuntu'da ecplipse ve diğer yazılım araçları nasıl yüklenir bir görelim basit ve anlaşılır.
Öncelikle Applications'tan Ubunt Software Center'ı açalım:



Daha sonra ecplipse aynı zamanda temel olarak java editörü olarak bilindiğinden search kısmına java  yazmamız yeterli olacaktır:) arama yaptıkğınızda orada netbeans ve diğer araçları da bulabilir ve istediğinizi yükleyebilirsiniz. İstediğiniz yazılımın üzerine gelin ve yanda çıkan install'ı tıklayın gerisi çorap söküğü gibi gelecektir.
linux  yazılım merkezi

Applications 'ı açınca iconunu görebilirsiniz

Eclipse Üzerinde Processing Çalıştırma

Bugün blog'ta yazmak istediklerimden biraz farklı konulara değineceğim...Ancak bu tamamen bugün bir çalışmayı anlama ve üzerinde değişiklikler yapmak için uğraşmamla alakalı...Türkçe kaynakların fazla bulunmadığı bir durum olsa gerek ki araştırmalarımda hep yabancı sitelere bakmam gerekti...
Neyse gelelim konuya;Eclipse'yi yüklemiştik , şimdi processing nasıl çalıştırılır ki aslında processing çalışmıyor eclipse'te ..Şöyle oluyor bir processing'te yazılmış olanı java programlamaya dönüştürüyor ve o şekilde derliyor. Gelelim sadede;

Eclipse'yi çalıştırdığımızda (ben ingilizce kullanıyorum size de türkçe karşılığı tam olarak nasıl bilmiyorum ama anlamlarını yazabilirim) Help (Yardım) menüsünden Install New Software (Yeni yazılımı yükle) 'yi tıklıyoruz , orda çıkan menüden Add tuşuna basıyoruz ve karşımıza bir diyalog kutusu çıkacak orda

Name (isim) yerine "Processing Plug-in" yazıyoruz
Location(Lokasyon) yerine " http://eclipse.processing.org/plugin/site.xml"

ve Ok tuşuna basıyoruz.Daha sonra karşımıza çıkan ekranda Next(İleri) diyoruz. Lisans sözleşmesi çıkacak onu da onaylıyor ve ilerliyoruz, eğer karşınıza pop-up bloklanmış şeklinde izin isterse izin vermeniz gerekir.
Daha sonra eclipse yeniden başlatıyoruz

Yeni bir processing oluşturmak için File(Dosya)-> New(Yeni) -> 'Processing Sketch' dediğimizde bizden bir isim isteyecek ve processing .pde uzantılı dosyamız boş olarak açılacak...Biz kodları yazdıktan sonra Run as->Processing Sketch (Applet) diyerek programınızı derleyebilirsiniz.Eğer küçük bir örnek yapmak hazır ve açık kodlardan derlemek istiyorum derseniz : www.processing.org sitesinden learning 'e bir göz atabilirsiniz.
Not:Yalnız burda benim bilgisayarda şöyle bir durum oluştu, ben Run as kısmından Processing Sketch kısmını aktifleştiremedim bu yüzden sağ üst köşedeki Java yazan yeri tıkladım ve Java'da derle dedim.Programı java kodlarına dönüştürdü ve çalıştırdı.

Kaynak : wiki.processing.org

29 Eylül 2015 Salı

ABD'ye adım attın çok değiştin :)

Hayır yok öyle birşey. Sadece blog sayfama yazı yazmayalı zamanım ile gidiş zamanlarım aynı olmuş.
Bir gitmişim ve her sene gider olmuşum.
Bu kadar zaman blog sayfama neden yazmadım ben de bilmiyordum ama bugün cevabı buldum. Kendimi ertelemişim. Şu anda iş alanımın yeni bir yere taşınması ile birazcık ta olsun kendime zaman ayırırken blog sayfalarına denk geldim ve kendi sayfama yazmadığım zamanı görünce neden sorusunda, kendimi erteledim, evet zeyntuni kendini erteledi.
Neler oldu bu zamana kadar part 1
*Abd planları start verdi (şimdi ingilizce kelimeyi cümlelerin arasına katmak gerek moda bu sonuçta :) )
İlk çıkışımın fotoğraflarına bakarken biri dikkatimi çekti. Ve acayip dalga geçmiştim neden mi ?
O fotoğrafı çekerken sadece sürü psikolojisi ile hareket ettim ve bunu bilerek yaptım. Anlamı var mı ? Sadece bir bina(elbetteki white house olduğunu biliyoruz:) ). OOOVVVV Amerikadayıımmmm arkadaşlarrrrr ; burayı yamuk ağızla söylemeniz gerekiyor :)))

Suratımdaki o anlam veremediğim herkes yapıyorsa vardır bir nane diye çektirdiğim fotoğraf daha ne olsun:)
Yalnız benim o zamanlardaki favori fotoğrafım ise New York Times Square Meydanında çektirdiğim idi ; işte o bir anlam ifade ediyordu; farklı bir ton insanın enerjisi, birbirinden farklı enerjiler milyarları geçecek çeşitte farklı kar taneleri gibi. Birbirine benzemeyen kar taneleri...Tek farkla kar tanelerinin hepsinde güzellik var ama insanlarda telaş, endişe, korku, yalnızlık, bitmişlik, sevgi, hüzün, mutluluk ... ortaya karışık salata gibi. Ama en çok ta yalnızlık vardı. Evet oraya gittiğim ilk anda gözlemlediğim şey şuydu; İnsanlar kalabalıklar içinde yalnızlar. Aslında bu Türkiye'de de aynı. Nerdeyse herkes artık depresyon ilacı kullanıyor. Yoldan geçen on kişiye sorun 9 kişi evet cevabını verecektir. Hemi de koca aileleri varken. Yani yalnız değillerken. Türkiye'deki eczanelerimizin küreselleşmiş şekli diye tanımladığım cvs ve benzeri ezcanelerinde reçetesiz uyku hapları bile bunun bir kanıtı. Yaşam standartları evet yüksek ama herkes bireysel yaşama itilmiş yalnızlar. Ben yalnızlığı severim sanırım o yüzden burası tam bana göre :D Yalnızlıktan korkmayın, kalitesiz insanlardansa yalnız kalmak sizin için daha iyi olacaktır.

Orası gerçekten refah düzeyi yüksek bir ülke ve eğer bir aileniz varsa orda yaşamanız size güzellikler sunacaktır. Yalnızları oynamanızı tavsiye etmem:) Ama yalnızlığı seviyor ve alışıksanız gayet güzel yaşarsınız. Orada yaşam süremi uzattıkça o uzunlukta neler oldu yazmayı başarırsam burda yazarım...Çünki çalışma hayatımda sanki orası benim ütopyam. Bakalım zaman haklı mıyım haksız mıyım gösterecek.

Bu fotoğrafta aynen şunu diyorum: Ya Rabbi, altı ay öncesine kadar elimde kumanda işten akşam eve gelmişim Rtl (almancam gitmesin bacım) izleyen ben sana sitem ediyordum. Küçükken dünya çocuğu olmak istedim. Uçakta doğunca olunuyor, dendiğinde hayal kırıklığı yaşadım. Nasıl olacam dünya çocuğu(din,dil,ırk ayrımı yapılmayan bir ütopya hayal et)? Bari göreyim bileyim, nasıl olacak o, iş varken zaman yok zaman varken para yok yaşlanınca mıııı...Ve sen şimdi beni gezdiriyorsun hatta ütopyan orası yaşa orda diyorsun. Sitemim için affet.

Dipnot: Evlat !( Varolacak mısın bilmiyorum ama :)  ) birgün bu yazıyı okuyor olursan senin dünya çocuğu olman için elimden geleni yapacağım. Soy anneden geçer ne de olsa dimi. Senin baban değişir annen hep aynı kalır. Bunu sen dememiş miydin? :) 
Olur ki varoldun,bu yazıyı okuyor olursan annenin başaramadığı birşey yokmuş dersin...
Bu cümleyi yazınca anne ve babamın da kendi şartlarına binaeren başaramadığı şey olmamış diye aklımdan geçmedi değil ;) Çünki biz çocukların yaptıkları aslında onların başarısı, bence tabi. Başarısızlıklarımızın arkasında ise kesin bizim tembelliğimiz vardır :D

Neler oldu bu zamana kadar part2
*CBS- GIS artık ne dersen onun yazılım alanına yöneldim. Yönelmem iyimiydi değil miydi bilmiyoruz. ama yöneldik işte...
Önce C# ile bir yazılım geliştirdim(yarım kaldı çünki javascriptte karar verdik) sonra javascript ile(javascriptte yeni olunca biraz uğraştırdı) ve şimdi tamamlanan üzerinden  yeniliklerle geliştirme aşamasında.
Bu zaman içerisinde şunu anladım; çoğu insan öğretmekten kaçarmış. Ben birçok şeyi bilmiyormuş havasında gezinirken arkamdan neler olduğunu hem gördüm hem tanıdım hem de işimi öğrendim ve öğrenceğim çok şey karşımda duruyor. İnanın birşeyleri öğrenmeniz ve yapmanız için insanlar size yardımcı olmaz beklentileriniz o  yönde olmasın. 

Umarım ilerki zamanlarda öğrendiklerim ve yaptıklarımla ilgili yazarım. Zaten javascriptin gis alanında türkçe kaynağı yokmuş. Artık onu da biz oluşturalım öyle değil mi ...
ArcGIS kullanımı, javascript'in ArcGIS kütüphanesinin kullanımı, C# 'ta ArcGIS kütüphanesinin kullanımı, Oracle veritabanında yaşayabileceğiniz sorunlar ArcSDE kullanacağız sonuçta değil mi ;)...Ben ve Coğrafi Bilgi Sistemleri (Geographical Information System); haritalar, katmanlar ...deniz derya bla bla...:)
Ve hazır templatelerin kullanımı...
Onlardan bir tanesini kullandım ve zamanla onlarla ilgili yazıları buraya yazmayı umutla bekliyorum, kimden kendimden :)
Ama şimdilik hoşçakalın...

Neler oldu part3 ?

Hafizam geri geldi :) Şimdi kolları sıvama zamanı