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
DebugDiag ile Dump Almak
21 Temmuz 2020 Salı
WER ile Otomatik IIS Dump Almak
DumpCount: Kaç adet dump alsın
DumpType: Ne tür bir dump alınsın(1:mini , 2: Full -- Bir de 0 var ama wer üstünden hiç denemedim, bilen arkadaşım dürtebilir; revize edebiliriz yazıyı)
Örneğimizde(üstteki görsel) F altında Dumps adında bir klasöre atıyoruz. 3 defa, full dump aldırıyoruz. Bu sayede crash anında, arıza telaşına düşmeden, arka planda birileri bizim için dump alabilir.
Burada oluşan dump'ı yine DebugDiag'a verip, raporunu inceleyebilirsiniz.
Sonra görüşürüz.
IIS Application Pool Identity
20 Temmuz 2020 Pazartesi
Perfmon User Defined Collector Ekleme
Yakında kayıt ekleyeceğim deyip de, 1 saat sonra eklemeyi ben de beklemiyordum. :) Ani gelişen bir istek diyelim. :)
Bu yazımda, Windows sunucularımız üzerinde yer alan, Performance Monitoring aracı ile istediğimiz collector'ü nasıl ekleyeceğimize bakacağız. Çok kullanmayanlar için, kısaca PerfMon, server'ın, IIS'in performans verilerini toplayabileceğimiz bir tooldur. İşlemci, bellek, w3process'ler, paging... Aklınıza gelebilecek her şeyi izleyebilirsiniz.
Perfmon üzerinde varsayılan tanımlı ajanlar/collectorler sizin için data toplayabilir, aktiflerseniz şayet. Şimdi bu yazımızla birlikte, istediğimiz Collectoru eklemeyi göreceğiz.