18 Aralık 2020 Cuma
SQL Server'da Bir Tablonun Veritabanını Bulmak
13 Aralık 2020 Pazar
Veri Ambarında (DWH) Neden SK(Surrogate Key) Üretilir?
5 Aralık 2020 Cumartesi
Kanban: Classes Of Services
Sonra görüşürüz.
SQL'de Join Çeşitleri
Şimdi örnek üstünden açıklayalım. Soldaki tablo nedir: JoinTableTest1. Bu tabloda takımlar vardı. Demek ki eşleşse de eşleşmese de, bu tablonun tüm kayıtları gelecek. Eşleşen 11 kayıt, zaten inner join'de de görmüştük, kafadan gelmiş. Ancak son 2 kayda dikkat buyurun. Oyuncuları tutan JoinTableTest2 tablosunda Trabzonspor ve Galatasaray'lı oyuncu yoktu. Yani eşleşme yok. Bu nedenle OyuncuAdı alanları NULL bir şekilde, bu iki takım da gösterilmiş. Left Join tam olarak böyle bir dünya. :)
Sağdaki tablomuz nedir: JoinTableTest2. Oyuncu bilgilerini tutan tablo. Eşleşen 11 kayıt yine geliyor. İlave olarak sağdaki oyuncu tablosunda TakımID'si 21 ve 26 olan iki oyuncu bilgisi de geliyor. Yalnız bu takımID'ler, JoinTableTest1 tablosunda yok. Bu nedenle TakımAdı bilgisi boş geliyor. Ancak sağdaki tablonun tüm kayıtları listelendiğinden, Nouma ve İlhan kayıtları, eşleşmese de sonuç kümesinde geliyor.
12 Kasım 2020 Perşembe
Kabul Kriterleri: Gherkin Formatı
- Given
- When
- Then
6 Kasım 2020 Cuma
Spotify Agile Organization - Spotify Çevik Organizasyonu
Merhaba Arkadaşlar,
Üzerinde mutabık olunamayan ama bazı firmalarca taklit edilen bir diğer Agile organizasyonu ise : Spotify Yapılanması.
Bir klasik haline gelen internetten resim alıntılama faslıyla başlayalım. :)
3 Kasım 2020 Salı
Chief Product Owner
Merhaba Arkadaşlar,
Chief Product Owner nedir, ne değildir'i kısaca sizinle de paylaşmak istiyorum. Önce bir adım geri gidelim. Agile mantalitesinde, biliyorsunuz, bir product owner-scrum master-development team yer alır.
Normalde product owner'lar, kitabi terimle anlatmak gerekirse, ürünün değerini arttıran ve bunu da dev team ile çalışarak yapan kişidir.
Buraya kadar sorun yok. Soru tam olarak şu: " Tek bir Product Owner'ın başa çıkabileceğinden daha büyük bir ürün varsa ne olacak? ( what happens when the product ise too large for a single product owner?)
Bir diğer soru da şu: Tek bir ürün üzerinde çalışan birçok takım varsa ne olacak? ( what happens when you have dozens of teams working on a single project?)
Tam da böyle durumlara karşı, agile organizasyonel yapılanmasında bir kavram karşımıza çıkıyor: Chief Product Owner.
Chief Product Owner, daha üst seviyeden kararlar alabilen, takım product ownerlarının kendisine bağlı olduğu ve bu takım product owner'larına yön veren kişidir.
Bu yapılanmadaki anahtar kelime HİYERARŞİ'dir (hierarchical organization). Burada ast-üst olayı var yani. İnternetten yine hazır bir resme kondum; kendim çizmedim, onu paylaşayım sizlerle.
Yani daha üst seviye olaylara bakan, stratejik kararları veren, ürünün nereye gideceğini belirleyen ve hatta bunun için karar verici paydaşlarla görüşen kişidir. Takım PO'su gibi detaylarla ilgilenmez.
Sonra görüşürüz.
7 Ağustos 2020 Cuma
Çocuğumu Hangi Okula Göndermeliyim?
2 Ağustos 2020 Pazar
Linux'ta Ortak Disk Sorunu ve Yama Çözüm
1 Ağustos 2020 Cumartesi
Web Sitenizde Otomatik Restart Shell Scripti
Başıma gelen bir olay ve nasıl bir ara çözüm uyguladığımı paylaşacağım. Elimdeki web sitesi çok temel seviyede olan, caching'i zayıf denebilecek, yüksek trafikleri kaldıramayacak basit bir mini site idi. Ancak bir şekilde web siteme aşırı yük geldi. :)
31 Temmuz 2020 Cuma
Web Sitenizin Internet Explorer Uyumluluğu
30 Temmuz 2020 Perşembe
Performance Monitor (PerfMon)
Word'de İçindekiler Sayfası Oluşturmak
29 Temmuz 2020 Çarşamba
IIS CPU Settings
27 Temmuz 2020 Pazartesi
SQL Server'daki Authentication Seçimi
26 Temmuz 2020 Pazar
İpucu: Dynamic Teaming Sorunu
SFTP Public Key Authentication
İki makina arasında iletişimi kolaylaştırmak veya iki makina arasında otomatik dosya transferi yapabilmek için makianalar arasında iletişim kurulabilir. Bu yönteme sftp public key authentication denir. Böylece herhangi bir şifre olmadan, key ile bağlantı sağlanmış oluyoruz.
Öncelikle kendi makinamızdan bağlanacağın user'a geçiş yaparız. (ör: dzdo -iu wlsadmin)
Kendi makinamızda .ssh adında bir directory oluşturulur:
mkdir .ssh
ls -la komutu ile oluşturduğumuz .ssh directory'sini görürüz.
chmod 777 .ssh
diyerek directory'e full yetki verdik. Tabi bu istenen bir şey değildir; 777 benim işime gelir ama os admin'ler bir şekilde bu yetkiyi iptal etmek için kapınızı çalar. =)
Şimdi erişimde kullanmak için private/public anahtar çiftini oluşturacağız. Bunun için de şu komutu çalıştırırız:
ssh-keygen
Gelen her soruya Enter deyip geçebilirsiniz. Sizden passphrase isteyecektir. Bir şifre belirleyip, onu iki defa girmenizi isteyecektir. Onu da girdiğinizde, wlsadmin userımın altında .ssh directory'si altında, id_rsa ve id_Rsa.pub adında iki dosya oluşacaktır.
chmod 777 id_rsa* ile yine yetkileri dibine kadar alıyoruz.
more id_rsa.pub komutu ile dosya içeriğindeki açık anahtarını karşı sunucuya girilmek üzere alabilirsiniz.
Karşı sunucuda da login olup, aynı şekilde:
mkdir .ssh komutuyla .ssh folderı oluştururuz.
Akabinde chmod 777 .ssh komutuyla yetkileri açarız.
Şimdi bu sunucuda authorized_keys adında bir dosya oluştururz bu defa(dizin değil)
touch authorized_keys
Ve bir klasik olarak=) chmod 777 authorized_keys
Diğer sunucudaki, id_Rsa.pub içinde oluşturduğumuz key'i, authorized_keys altına kopyalarız.
Hepsi bu kadar. Şimdi minik bir test yaparız:
İlk sunucumuza girerek:
ssh wlsadmin@IkinciSunucuIPsi
Eğer password olmadan erişirsek ikinci sunucu konsoluna, her şey tamam demektir. :)
Sonra görüşürüz.
Oracle'da Kolondaki Data Formatlarını Bulmak
25 Temmuz 2020 Cumartesi
Agile Yaklaşımlar için Tuckman Modeli
24 Temmuz 2020 Cuma
WIP (Work in Progress) Limit
23 Temmuz 2020 Perşembe
Client IP'yi IIS Loguna Yazdırmak
WinDBG ile Dump Analizi
0:000>
~87s
eax=00000000
ebx=00000001 ecx=00000000 edx=00000000 esi=00000001 edi=00000001
eip=7741c8ac
esp=39b2ec10 ebp=39b2ed98
iopl=0 nv up ei pl nz ac po nc
cs=0023
ss=002b ds=002b es=002b fs=0053
gs=002b
efl=00000212
ntdll!NtWaitForMultipleObjects+0xc:
7741c8ac
c21400
ret 14h
0:087> !clrstack2 à artık başında a görüldüğü gibi 87 nolu thread'e geçti.
DbgId
ThreadId Apartment Kind
CLR
GC Mode GC Suspending?
87 11fc4
MTA
v4.0.30319.34209 Preemptive no
MonitorWait
-----------
Method
XXXXXXX.Esb.Queue.QueueManager.GetNextMessage()
Monitor
Address 0x0000000020421088
SP
IP
Function
Source
39b2ef7c
00000000
GCFrame
39b2f02c
00000000 HelperMethodFrame_1OBJ [System.Threading.Monitor.ObjWait(Boolean,
Int32, System.Object)] à alttaki de bunu
çağırmış.
39b2f0b0
72625d16 System.Threading.Monitor.Wait(System.Object, Int32,
Boolean) à
alttaki getnextmessage methodu bir yerde threadslep yapıyor; bekliyor yani. 87
nolu thread
bekliyor.
39b2f0c0
39006df7
XXXXXX.Esb.Queue.QueueManager.GetNextMessage()
39b2f104
39006ff5
XXXXXXXX.Esb.Queue.WorkerThread.Run()
39b2f128
7259ab43
System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
39b2f134
725ada07
System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,
System.Threading.ContextCallback, System.Object, Boolean)
39b2f1a0
725ad956
System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,
System.Threading.ContextCallback, System.Object,
Boolean)
39b2f1b4
725ad921 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,
System.Threading.ContextCallback,
System.Object) à http contextin içine konup istek
gelir soaptan vs. burda contextin içi
kounuyor.
39b2f1cc
7259aacc System.Threading.ThreadHelper.ThreadStart()
à threadim burda
başlar.
39b2f320
00000000
GCFrame
39b2f500
00000000
DebuggerU2MCatchHandlerFrame
39b2f56c
00000000
ContextTransitionFrame
39b2f6f4
00000000 DebuggerU2MCatchHandlerFrame
!name2ee
* XXXXXX.Esb.Queue.WorkerThread.Run komutu ile bu classın bu methodunu tüm
kütüphanelerde ararız.
--------------------------------------
Module:
3647869c à
esb.dll’in memorydeki adresi
Assembly:
XXXXXX.Esb.dll
Token:
0600d745
MethodDesc:
38f4b56c
Name:
XXXXX.Esb.Queue.WorkerThread.Run()
JITTED
Code Address: 39006fd0
--------------------------------------
!savemodule
3647869c C:\Temp\XXXXX.Esb.dll à
bu komut ile esb.dll’i Temp dizinine oluşturmuş oluruz.
22 Temmuz 2020 Çarşamba
Unix'te Text/IP Replacement
Üst üste Windows konuları yazdım. Bu defa da unix'te kullanabileceğiniz bir bilgi paylaşalım. Unix makinanızda bir text ya da IP aramak istiyorsunuzdur, yetkiniz dahilinde. Bunu çok hızlı yapabileceğiniz mini bir shell scriptini aşağıda paylaşıyorum:
for x in `find . -name \* | xargs grep -l "127.0.0.1"`;
do
echo $x
done
Sarı ile verdiğim IPyi bulunduğunuz dizin ve onun alt dizinlerinde aratacak, yetkiniz varsa da listeleyecektir.
Mesela bir connection string değişimi veyahut server IP değişimi yapacaksınız. IPleri listelettiniz yukarıdaki gibi. Tek tek elle mi değiştireceksiniz? Tabi ki hayır. Küçük bir ilave ile onu da aşağıdaki gibi yapabilirsiniz:
for x in `find . -name \* | xargs grep -l "127.0.0.1"`;
do
echo $x
sed "s@127.0.0.1@19.86.19.03@g" $x > temp;
mv temp $x;
done