26 Aralık 2015 Cumartesi

Write once , run every where

Herkese Merhaba ,


Bilge Adam eğitim kurumundan almış olduğum ve devam eden java-android uygulama geliştirme bölümünde bugüne kadar bize destek olan bora hocamızın bize aktardığı bilgilerin aklımda kaldığı kadarıyla burda sizlerle paylaşıyor olacağım aynı zamanda java uygulama dilinde en başından en karmaşık projelerin derinliklerini beraber incelemek için analizler yapacağız. 
.
Java Uygulama dilinde - Şuan güncel sürümü olan  8.65 JDK sürümünü PC nize indirdikten sonra herhangi bir arayüz kullanmadan notepad'de uygulama yazarak ekrana yansıtacağımız çıktının nasıl aktarıldığını görelim . 


(Write once , run every where ) prensibi ile yola çıkarsak java dilinin her işletim sisteminde çalışıyor olacağını anlayacağız . Açık kaynak kod ile geliştirilen java dilinde özelliklerini bir kenara bırakırsak en basit haliyle şu şekilde göreceğiz ...





public class HelloWorld{
public static void main(String[] args){


system.out.println("HELLO WORLD");

}
}


Bende burdan java ailesine Hello World demek istiyorum...




26 Eylül 2015 Cumartesi

CPU Ussage with Powershell ( Graph)



Herkese Merhaba ,

Yaptığım çalışmada Process lerimizde açık uygulamalar listemizde CPU yu en çok kullanan uygulamaların son 5 ini sıralıyıp bunu görselleştireceğiz .

Scriptimize geçmeden önce , açık uygulama listemizi görelim (Resim-1) :

Resim-1


Scriptimiz ve Ekran görüntümüz : 


[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms.DataVisualization")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 



$Chart = New-object System.Windows.Forms.DataVisualization.Charting.Chart 
$Chart.Width = 500 
$Chart.Height = 400 
$Chart.Left = 40 
$Chart.Top = 30

$ChartArea = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea 
$Chart.ChartAreas.Add($ChartArea)



$CPUPercent = @{
  Name = 'CPUPercent'
  Expression = {
    $TotalSec = (New-TimeSpan -Start $_.StartTime).TotalSeconds
    [Math]::Round( ($_.CPU * 100 / $TotalSec), 2)
  }
}


 $CPU = Get-Process | Select-Object -Property Name, $CPUPercent | Sort-Object -Property CPUPercent -Descending | Select-Object -First 4 



$ProcNames = @(foreach($CPUs in $CPU){$CPUs.Name } )
$WS = @(foreach($CPUs in $CPU){ $CPUS.CPUPercent/ 1MB })

[void]$Chart.Series.Add("Data") 
$Chart.Series["Data"].Points.DataBindXY($ProcNames, $WS)


$Chart.Anchor = [System.Windows.Forms.AnchorStyles]::Bottom -bor [System.Windows.Forms.AnchorStyles]::Right -bor 
                [System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Left 
$Form = New-Object Windows.Forms.Form 
$Form.Text = "CPU Kullanımı" 
$Form.Width = 600 
$Form.Height = 600 
$Form.controls.add($Chart) 
$Form.Add_Shown({$Form.Activate()}) 


$SaveButton = New-Object Windows.Forms.Button 
$SaveButton.Text = "Save" 
$SaveButton.Top = 500 
$SaveButton.Left = 450 
$SaveButton.Anchor = [System.Windows.Forms.AnchorStyles]::Bottom -bor [System.Windows.Forms.AnchorStyles]::Right 
$SaveButton.add_click({$Chart.SaveImage($Env:USERPROFILE + "\Desktop\Chart.png", "PNG") 


[System.Windows.Forms.MessageBox]::Show("Ekran Görüntüsü Masaüstüne Kaydedilmiştir . ")
 })
$Form.controls.add($SaveButton)







$Chart.Series["Data"].Sort([System.Windows.Forms.DataVisualization.Charting.PointSortOrder]::Descending, "Y")

$ChartArea.AxisX.Title = "Açık Uygulamalar" 
$ChartArea.AxisY.Title = "Çalışan Uygulamalar (MB)"


$maxValuePoint = $Chart.Series["Data"].Points.FindMaxByValue() 
$maxValuePoint.Color = [System.Drawing.Color]::Red

$minValuePoint = $Chart.Series["Data"].Points.FindMinByValue() 
$minValuePoint.Color = [System.Drawing.Color]::Green


$Chart.Series["Data"]["DrawingStyle"] = "Cylinder"
$Form.ShowDialog()






12 Temmuz 2015 Pazar

Powershell ( CheckBox ) işlemleri



Merhaba , Powershell esnek yapısıyla bize .Net platformundaki system kütüphanesindeki objeleri kullanmaya ve powershell komutları ile çektiğimiz verilere görsellik katmaya yardımcı olur . Powershell 3.0 ile hayata geçen bu dizi serisi ile görsel olarak daha iyi işler çıkartabiliyoruz . Kendi çalıştığım yerde 15 gündür üzerinde kafa yorduğum proje içerisinde kullandığım ve yeni başlayan powershell kullanıcılarının da hoşuna gidebileceğini düşündüğüm bir detay paylaşmak istedim . Oda Check Box kullanımı : 

* Forum içerisindeki elemanlarımı System Kütüphanesi  ile PowerShell ISE min içerisine yerleştiriyorum . 

Burda sadece ben checkbox değil aynı zamanda listbox , button gibi .Net elemanlarını ekledim . 





PowerShell Ping Time ( Avarage)


Belirtilen PC ve web adresimine atılacak pinglerin süresini hesaplamak istiyoruz . Bunu commanderden ;

ping \\PCName -t dediğimiz zaman bize müdahale edeceğimiz süreye kadar sinyal cevabı verecektir . Biz ping süremizin ortalama değerini çekmek istiyorsak eğer bunu belirli sayıda pingletip ortalamasını alarak ekrana yazdırmak işlevli olacaktır .

Bunun için kontrol edilmesi kod :


$CompName = "google.com","localhost"

foreach ($comp in $CompName) {
   
    $test = (Test-Connection -ComputerName $comp -Count 4  | measure-Object -Property ResponseTime -Average).average
    $response = ($test -as [int] )
       
write-Host "Ortalama ping süresi " -ForegroundColor Green -NoNewline;write-Host " `"$comp`" is " -ForegroundColor Red -NoNewline;;Write-Host "$response ms" -ForegroundColor Black
     
}
 

Olacaktır . Önemli olan nokta ; ( -Count 4 ) kısmıdır . Belirtilen "google.com" ve "LocalHost" için 4 kez sinyal gönderip bize .Avarage ile ortalama değeri döndürecektir .


alabileceğiniz ortalama ekran görüntüsü aşağıdaki gibidir . (Resim-1)






(Resim-1)









21 Nisan 2015 Salı

PowerShell Last Boot



Merhabalar , Şimdi yapacağımız script ile localde bulunan PC son logon zamanını tarih ayarları yapılarak ve daha sonrasında ComputerName zorunlu girmesi gerekecek şekilde değiştirerek adım adım yapıyor olacağız .

Öncelikle bu script için Wmi üzerinde bilgimizin olması gerekir , bunun için
http://www.powertheshell.com/reference/wmireference/root/cimv2/   adresini göz gezdirmeniz faydalı olacaktır . 


En taslak hali ile ; 

Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost |
Select-Object -Property CSName,LastBootUpTime 

*** Win32_OperatingSystem Classımızından kullanılan PC üzerinde CSName ( PC İsmini ) ve , Son restart tarihini en taslak hali ile ( Resim-1 ) deki gibi verecektir . 

Resim-1


*** Şimdi Bu taslağımızı daha da derinleştirelim ; 
Select-Object -Property CSName,@{n=”RESTART”;
e={[Management.ManagementDateTimeConverter]::ToDateTime($_.LastBootUpTime)}}


Resim-2



(Resim-2) de belirildiği üzere ; Select-Object -Property CSName,@{n=”RESTART”;
e={[Management.ManagementDateTimeConverter]::ToDateTime($_.LastBootUpTime)}} ile son restart edilen tarihi Gün/Ay/Yıl formatında çevirilmiştir . 

*** Script'imizin son hali ise Computer Name giriş zorunlu bırakacak şekilde parametre tanımlamamız olacaktır  . 

param (
[Parameter(Mandatory=$true)][string]$ComputerName
)
Get-WmiObject -Class Win32_OperatingSystem –ComputerName $ComputerName |
Select-Object -Property CSName,@{n=”Last Booted”;
e={[Management.ManagementDateTimeConverter]::ToDateTime($_.LastBootUpTime)}}
(Resim-3) Çıktısı Alınmıştır . 

Resim-3



Teşekkür Ederim . 
gorkemkarayel@outlook.com

20 Nisan 2015 Pazartesi

PowerShell ile Dosya Transfer Nasıl Yapılır



Merhabalar , Domain içerisinde bir PC ye dosya transfer yapabilmemiz için kullanılması gereken PowerShell komutumuz ; 

Start-BitsTransfer


Konu ile ilgili örnek vermek gerekirse ; 

Start-BitsTransfer -Source C:\clientsourcedir\*.txt ` 
-Destination c:\clientdir\ -TransferType Download

Destination ( Hede ) ile dosyamızı kopyalayacağımız alan belirlenir .

-TransferType ( Upload , UploadReply , Download ) Seçeneği bulunmaktadır . 


Start-BitsTransfer http://Server01/serverdir/testfile1.txt C:\clientdir\testfile1.txt

Üstte verilen örnekte Http:\\ upload edilmiş ve tipi yükle olarak ayarlanmış olan
dosyaları belirtilen Path yükleyecektir .



Kaynak : https://msdn.microsoft.com/en-us/library/ee663885%28v=vs.85%29.aspx


18 Nisan 2015 Cumartesi

Wmi Object ile Driver Sorgulama



Merhabalar , bu yazımızda bilgisayarımızdaki driverlar hakkında bilgi almak için PowerShell yönetici modülümüze öncelikle manuel olarak kodumuzu yazarak sorgulama yapacağız ve daha sonra WMIExplorer kullanarak aynı sonuca erişmeye çalışacağız ;

Resim-1

(Resim-1) de görüldüğü gibi PowerShell arayüzümüze Get-WmiObject -Query " Select * From Win32_LogicalDisk Where DriveType='3'"

ile PC de bulunan driverlar hakkında bilgi alabiliriz . Şimdi aynı sorgu için WMIExplorer tool kullanarak ilerleyelim . Bu tool için ; https://wmie.codeplex.com/ linkini kullanabilirsiniz .

Tool içinde (.) olarak Local PC de Wmi bilgilerim Resim-2 deki gibi sıralanacaktır . Yapmamız gereken NameSpace ve Classes seçimi yaparak sorgumuzu Execute etmektedir .

Resim-2



PowerShell



PowerShell ile ilgili araştırmalarımın ve gerçekleştireceğim ufak Scriptingleri sizinle paylaşmak istiyorum . 

Öncelike PowerShell ,  Windows 7 ile default olarak sistemlerimizde bulunan daha öncesinde Kasım 2006 da ilk olarak Windows Vista işletim sisteminin bir parçası olarak planlanmıştır . Microsoft Exchange Server 2007 ile birlikte ilk olarak piyasaya sürülmüştür . PS1 XP , Server 2012 ve Vistaya free olarak download edilebilmektedir.Betiklerimizi oluşturduğumuz ve kısaca Microsoft tarafından Windows komut satırı ( Cmd.exe) ve Windows Script Host (WSH) alternatif olarak geliştirilen yeni nesil komut satırıdır . 




İlk bakışta basit bir komut satırı gibi duran "Powershell", aslında bundan çok daha fazlasıdır, hatta bir programlama dili derleyicisi yapısına sahiptir ve birçok programlama dilinde yapılabilecekleri bünyesinde barındırır. Bu sistem yöneticileri için büyük kolaylıklar sağlamıştır. Arayüzden yapabilecekler ve daha fazlası Powershell kullanılarak çok kısa sürede yapılabilir.



Powershell arayüzüne komutlar metin tabanlı olarak girilse de aslında arka planda nesne tabanlı bir yapıya sahiptir. Yani powershell metinleri işlemez,  .NET ortamına dayalı nesnelerle işlem yapar.
Powershell’de komutların çalışma mantığı .Net ile aynıdır. Tüm komutlar fiil-isim şeklinde bir kullanıma sunulur. Örneğin sistemdeki çalışan süreçleri görüntülemek için “Get-Process” komutu kullanılır.(Resim-2)

Resim-2

Resim-3


(Resim-3) ' de gösterilen komut ile Get-Host ile PC de bulunan PowerShell versiyonunu tespit edebilirsiniz . 

PowerShell , Cmd gibi çok sayıda komut içermektedir .  Bunların hepsini akılda tutmak imkansızdır . Bunun için tüm komutlarını sıralayarak en azından anımsatma açısından size Get-Command destek olacaktır . (Resim-4)



Resim-4


(Resim-4) de ekrana getirdiğim komutlar tabiki tümünü göstermemektedir . Daha da fazla olabileceğini tahmin etmişsinizdir . Bu Cmdlet lerin PC de default olarak yüklenenlerini daha kolay olarak ISE uygulamasını açarak uygulamanın sağ tarafında otomatik gelen komut listesinden de ulaşabilirsiniz . Aslında PowerShell'in ilk GUIsi olarak düşündüğüm ISE oldukça verimli çalışma ortamı sunmaktadır . (Resim-5) .PowerShell ISE Erişim için ; C:\Windows\System32\WindowsPowerShell\V1\PowerShellISE.exe den erişebilirsiniz . 
  

Resim-5

NOT: "get" komutları sadece veri çekebilen, "set" komutları veri işleyebilen komutlardır.

Powershel(Cmdlet)Powershell(alias) cmd.exeLinuxGörevi
 Set-Location cd,chdir cd,chdircd Dizin Değiştirir.
 Clear-Host cls, clear cls clear Ekranı Temizler.
 Copy-Item cpi, copy, cp copy, cp cp Dosya ve Dizin Kopyalar.
 Get-Help help, man help man  Yardım Görüntüler.
 Remove-Item
 ri, del, rmdir,
 rd, rm
 del, rmdir,
 rd
rm, rmdir Dosya ve Dizin Siler .
 Rename-Item rni, ren renmv
 Dosya ve Dizin Taşır,
 Adını Değiştirir.
 Get-Childitem gci, dir, ls dirls Dizin İçeriğini Görüntüler.
 Write-Output echo, write echoecho 
 Bir Yazıyı ya da Değişkenin
 Değerini Yazıdırır .
 Set-Variable sv, set setset Değişkene Değer Atar.
 Get-Content gc, type, cat typecat  Dosyaların İçeriğini  Görüntüler.


Alias (Takma Ad)
Powershell’ de kullanılan bazı komutları için farklı aliaslar (takma adlar) tanımlanmıştır. Örneğin silme işlemi için kullanılan "remove-item" komutunu kullanmak yerine "ri" komutunu kullanılabilir. Bunun gibi birçok takma ad tanımlanmıştır, sistemdeki tanımlı takma adların listesini görmek için yine "get-alias" komutu kullanılabilir.(Resim-6)


(Resim-6)




Daha sonraki yazımda Pipeline ve Scripting yapmaya başlıcaz . 


http://bidb.itu.edu.tr/seyirdefteri/blog/2013/09/07/powershell-ve-avantajlar%C4%B1
http://tr.wikipedia.org/wiki/Windows_PowerShell