2009-12-26

KCM


Televizyonlarda polis baskınlarında gördüğümüz polislerin yeleklerinde genellikle KCM yazar.KCM;Kaçakçılık ve Organize Suçlarla Mücadele Daire Başkanlığı'nın(tabi kısaltmadaki C'nin anlamını hala çözebilmiş değilim) kısaltılmasıdır.
İlgili Başkanlığın web adresi : http://www.kom.pol.tr

2009-12-17

Reflection ile Nullable Özelliklere değer verilmesi


Eğer Reflection ile Nullable(Of T),Nullable şeklinde bir PropertInfo değerini setliyorken Invalid cast from 'System.Int32' to ' System.Nullable`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
şeklinde hata alırsınız.
Aşağıdaki fonksiyon ile tipi değiştirip değeri setleyebiliriz:

Private Function _TipDegistir(ByVal deger As Object, ByVal hedefTip As System.Type) As Object
If hedefTip Is Nothing Then Throw New ArgumentException("Hedef Tip tanımsız")
If deger.GetType Is (hedefTip) Then
Return deger
End If
If hedefTip.IsGenericType Then
If hedefTip.GetGenericTypeDefinition().Equals(GetType(Nullable(Of ))) Then
If deger Is Nothing Then Return Nothing
Dim c As New System.ComponentModel.NullableConverter(hedefTip)
hedefTip = c.UnderlyingType
End If
End If
Return Convert.ChangeType(deger, hedefTip)
End Function

Örneğin :

propertyInfoObject.SetValue(refObject, _TipDegistir(1,System.Nullable(Of Integer), Nothing)

2009-12-02

WMI ile MicrosoftDNS_AType güncellemek


Bir DNS sunucu da ki belli bir AType kayda yeni bir IP değeri vermek istediğimde önce ManagementObjectSearcher ile query yapıp ilgili kayda gelip RecordData değerini güncelledikten sonra ilgili Sınıfın Put metodu çağırdığımda ne yaparsam yapayım mevcut kaydı güncellemek yerine,yeni bir kayıt oluşuyordu.
Oysa MicrosoftDNS_AType Modify diye bir metodu var.Put yerine onu invoke ederek güncelleme işini yapabiliyoruz.

Dim selectQ As New System.Management.SelectQuery("Select * from MicrosoftDns_Atype "+"......")
Dim oSer As New System.Management.ManagementObjectSearcher(Me._Scope, selectQ)
Dim oSerRes As System.Management.ManagementObjectCollection = oSer.Get()
If oSerRes.Count = 1 Then
Dim enu As System.Management.ManagementObjectCollection.ManagementObjectEnumerator = oSerRes.GetEnumerator()
If enu.MoveNext Then
Dim obj As System.Management.ManagementObject = enu.Current
Dim mv As System.Management.ManagementBaseObject = obj.GetMethodParameters("Modify")
mv.Item("IPAddress") = ip
'mv.Item("TTL")=35 TTL'de güncellenebilir
obj.InvokeMethod("Modify", mv, Nothing)
End If
End If

2009-11-23

Scrollbar boyutlarını bulan fonksiyon

HTML de bir bölümü javascript ile boyutlandırken DIV,TABLE,vs. genellikle kaydırma çubuklarının değerlerini hep es geçiyordum.Tabi haliyle boyutlandırma işlemi isteğim gibi olmuyordu.Aşağıdaki kod ile kaydırma çubuklaranın boyutlarını window'a ekleyebilirsiniz..
function SBBoyut(){
if(typeof(window.scrollbarWidth)!='undefined' &&
typeof(window.scrollbarHeight)!='undefined' )
return true;
var i = document.createElement('p');
i.style.width = '100%';
i.style.height = '200px';
var o = document.createElement('div');
o.style.position = 'absolute';
o.style.top = '0px';
o.style.left = '0px';
o.style.visibility ='hidden';
o.style.width = '200px';
o.style.height = '150px';
o.style.overflow = 'hidden';
o.appendChild(i);
document.body.appendChild(o);
var w1 = i.offsetWidth;
var h1 = i.offsetHeight;
o.style.overflow = 'scroll';
var w2 = i.offsetWidth;
var h2 = i.offsetHeight;
if (w1 == w2) w2 = o.clientWidth;
if (h1 == h2) h2 = o.clientWidth;
document.body.removeChild(o);
//artık boyutları window
//nesnesinde alabiliriz..
window.scrollbarWidth = w1 - w2;
window.scrollbarHeight = h1 - h2;
}

2009-11-19

Microformats



Microformats ; web de bulunan verilerden(XHTML/HTML) anlamsal veriler çıkarmaya yarayan bir metodolojidir.

Örneğin web sayfanızda bir adres vereceksiniz.Basit şekilde adresi yazmak yerine microformat ile bu adresin içinede o yerin kordinatlarını girebilirsiniz.Böylece Microformat standartını destekleyen bir uygulamınız varsa gereken koordinat bilgilerini alıp GPS cihazına aktarabilir; böylece o adrese giderken tam koordinatları GPS cihazınıza yazmaktan kurtaracaktır.

Yukarda örnek verdiğim adres olayının kod(XHTML) olarak örneği:

<div>
Adresimiz 06531 Odtü/Ankara
<span class="geo" >
<span class="latitude">39,89</span>
<span class="longitude" >32,77</span >
</span>
</div>

2009-10-15

RTM


RTM = Release To Manufacturing/Marketing
anlamına gelen RTM bir yazılımın bütün evrelerinin bitip(Pre Alpha,Alpha,Beta,RC), artık piyasaya sürülmeden önceki halidir.Genellikle bu sürüm donanım üreticilerine verilerek;yazılımı kendi donanımların uygun özelleştirilmesi için kullanılır.

2009-09-02

Silverlight da Scroll Problemi



Silverlight da bir çok bileşende fare tekeri ile scroll olayının olmadığı görürsünüz.Nedeni browser'in fare tekerleği eventine silverlightdan bağlanılamamasıdır.
Örnek olarak bir treeview'in yapalım:
Ağaç yüklendikten sonra eğer browser içindeysek browser'in onmousewheel/DOMMouseScroll eventlerine bağlanalım ve gerkli scroll olayını mouse tekeri döndüğünde gerçekleştirelim..

Private Sub tvAgac_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles tvAgac.Loaded
If System.Windows.Browser.HtmlPage.IsEnabled Then 'browser içindeysek
System.Windows.Browser.HtmlPage.Document.AttachEvent("onmousewheel", AddressOf Tekerlek)'ms event
System.Windows.Browser.HtmlPage.Window.AttachEvent("onmousewheel", AddressOf Tekerlek)'ms event
System.Windows.Browser.HtmlPage.Window.AttachEvent("DOMMouseScroll", AddressOf Tekerlek)'ff/gecko/vb event
System.Windows.Browser.HtmlPage.Window.AttachEvent("DOMMouseScroll", AddressOf Tekerlek)'ff/gecko/vb event
End If
End Sub
Private Function TekerlekVerisi(ByRef eO As System.Windows.Browser.ScriptObject) As Decimal
If System.Windows.Browser.HtmlPage.IsEnabled Then
'eo ile browser event nesnesi
Dim sign As Integer = 1
Dim tip = "wheelDelta"'ms ve operada alınacak dğer
Dim tip2 = "detail"'diğerleri içim
Dim val As Object = eO.GetProperty(tip)
If IsNothing(val) Then
val = eO.GetProperty(tip2)
sign = -1'ms/opera harici teker çevrilme yönünü ters algılıyor.
End If
If Not IsNothing(val) Then
Try
Return Decimal.Parse(val.ToString) * sign
Catch ex As Exception
End Try
Else
System.Windows.Browser.HtmlPage.Window.Alert("Değer yok")
End If
End If
Return 0D
End Function
Private Sub Tekerlek(ByVal sender As Object, ByVal e As System.Windows.Browser.HtmlEventArgs)
'bakalım istek nerden gelmiş
Dim obj As Object = e.EventObject.GetProperty("srcElement")'ms için
If obj Is Nothing Then obj = e.EventObject.GetProperty("target")'diğerleri için
If Not obj Is Nothing AndAlso TypeOf obj Is System.Windows.Browser.HtmlElement Then
With DirectCast(obj, System.Windows.Browser.HtmlElement)
If Not .TagName.ToLower.StartsWith("obj") Then Exit Sub'eğer object tagindan gelmiyorsa çıkalım
End With
End If
Dim temp As System.Windows.Automation.Peers.AutomationPeer = System.Windows.Automation.Peers.FrameworkElementAutomationPeer.FromElement(Me.tvAgac)
If temp Is Nothing Then
temp = System.Windows.Automation.Peers.FrameworkElementAutomationPeer.CreatePeerForElement(Me.tvAgac)
End If
If Not temp Is Nothing Then
Dim isp As System.Windows.Automation.Provider.IScrollProvider = temp.GetPattern(Automation.Peers.PatternInterface.Scroll)
If Not isp Is Nothing Then
Dim val As Decimal = TekerlekVerisi(e.EventObject)
If val <> 0 Then
e.PreventDefault()
Try
If val > 0 Then'yöne göre scroll'i döndürelim
isp.Scroll(Automation.ScrollAmount.NoAmount, Automation.ScrollAmount.SmallDecrement)
Else
isp.Scroll(Automation.ScrollAmount.NoAmount, Automation.ScrollAmount.SmallIncrement)
End If
Catch ex As Exception
End Try
End If
End If
End If
End Sub

2009-08-07

Web bileşenin özelliklerin aspx kodu olarak yazan sınıf




Imports System.Web
Imports System.Web.UI
Public Class ControlDesignerParser
Public Shared Function ParseControl(ByVal argControl As System.Web.UI.Control, ByVal prefix As String) As String
Dim _t As System.Type = argControl.GetType
Dim xNas As System.Xml.Linq.XNamespace = XNamespace.Get("http://www.adasoft.com.tr/yilmaz")
Dim xNam As XName = XName.Get(_t.Name, xNas.NamespaceName)
Dim ele As System.Xml.Linq.XElement = New System.Xml.Linq.XElement(xNam, "")
Dim att As XAttribute = New XAttribute(XNamespace.Xmlns + prefix, xNas.NamespaceName)
ele.Add(att)
ParseInnerProps(ele, _t, argControl)
Return ele.ToString.Replace(att.ToString, "")
End Function
Private Shared Sub ParseInnerProps(ByRef root As System.Xml.Linq.XElement, ByRef _t As System.Type, ByVal argObject As Object)
For Each pi As System.Reflection.PropertyInfo In _t.GetProperties
Dim ca2() As System.Attribute = pi.GetCustomAttributes(GetType(System.Web.UI.PersistenceModeAttribute), True)
Dim isInner As Boolean = False
Dim ca As System.Attribute() = pi.GetCustomAttributes(GetType(System.ComponentModel.DefaultValueAttribute), True)
If ca.Length = 1 Then
If ca2.Length = 1 Then
isInner = True
Else
Dim oval As Object = DirectCast(ca(0), System.ComponentModel.DefaultValueAttribute).Value
Dim val As Object = pi.GetValue(argObject, Nothing)
If Not oval Is Nothing AndAlso Not Object.Equals(oval, val) Then
root.SetAttributeValue(pi.Name, pi.GetValue(argObject, Nothing).ToString)
End If
End If
Else
If ca2.Length = 1 Then
isInner = True
End If
End If
If isInner Then
If ca2.Length = 1 Then
Dim mode As System.Web.UI.PersistenceMode = DirectCast(ca2(0), System.Web.UI.PersistenceModeAttribute).Mode
If mode = PersistenceMode.InnerDefaultProperty Or mode = PersistenceMode.InnerProperty Then
Dim x2 As System.Xml.Linq.XElement = New System.Xml.Linq.XElement(pi.Name)
ParseInnerProps(x2, pi.PropertyType, pi.GetValue(argObject, Nothing))
root.Add(x2)
End If
End If
End If
Next
End Sub

End Class


2009-08-05

Full Text Catalog PDF arama




  • Önce
    http://www.adobe.com/support/downloads/detail.jsp?ftpID=2611 adresindeki PDF IFilter kurulur.

  • SQL servisi yeniden başlatılır

  • Unsigned binaries'in kullanımına izin verilen SQL Kodu çalıştırılır:

    exec sp_fulltext_service 'verify_signature',0;

  • FTC için sistem bileşenleri yüklenir:

    exec sp_fulltext_service 'load_os_resources',1;

  • PDF 'in listelendiği kontrol edilir:

    exec sp_help_fulltext_system_components 'all';


Filmlerin Sonundaki Kısaltmalar


Birçok filmlerde kişilerin sonunda A.C.E.,A.S.C. gibi kısaltmalar bulunuyor.
Merak ettim bu kısaltmalar nedir/ne değildir diye..
Ufak bir araştırma ile


sonuçları çıktı..

2009-07-29

Firefox/Safari de Response.BinaryWrite ile yazılan dosyaların hatalı alınması



Eğer Bir handler/vb. ile bir stream nesnesini karşı tarafa yollerken gönderdiğiniz içerik IE'de düzgün çıkıp diğer browserlarda sıkıntı yaratıyor olabilir.
Aşağıdaki kod ile Response 'i bufferlayıp Response.End'e kadar birşey yollamayarak sorunu çözebiliriz:z

With Response
.Clear()
.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
.Cache.SetCacheability(HttpCacheability.Private)
.Expires = -1
.Response.Buffer = true 'önemli nokta
.AddHeader("Content-Disposition", String.Format("{0};FileName={0}", "attachment", "a.docx"))
.OutputStream.Write(buffer, 0,buffer.Length)
.End()
End With

2009-07-10

IIS 6.0 da Session Kaybı



Eğer uygulamanızda rastgele Session kaybına uğruyorsanız;uygulamanın bulunduğu AppPoolda aşağıdaki adımları kontrol ediniz.
  • Uygulamnınızın bulunduğu AppPool'da yakalamadığınız bir hata(UnhandledException) sonucunda AppPool restart/recycle olabilir.

  • AppPool'un Web Garden 'daki Maximum worker process değer'i 1 den farklı bir değer olabilir.


2009-06-17

Web servisinden inen dosyalarda açma hatası



Eğer webservisinden dosya indirip ,dosyayı açmaya çalıştığınızda hata alıyorsanız muhtemelen web servisinde dönen byte değerlerini Filestream'den okuyorsunuzdur.Filestream'den okumak yerine BinaryReader denerseniz dosyanız büyük ihtimalle doğru çalışacaktır.
Örneğin:
 Dim bn As New System.IO.BinaryReader(System.IO.File.Open( _ 
    Server.Mappath("~/OkunacakDosya.docx"), IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read))

2009-05-26

IIS 6 için "Element not found." hatası



Eğer IIS'de yeni bir Application oluştururken bu hatayı alıyorsanız,hatanın büyük bir ihtimalle nedeni mevcut olmayan bir Application Pool'un bir veya birkaç site/Aplication'a atanmış olmasıdır.
Benim başıma gelen olayda DefaultAppPool'u sildikten sonra almaya başlamıştım hatayı.


IIS Hatası

Meğerse yukarda görüldüğü üzere Web Sites' in de özellikleri varmış ve Application Pool olarak DefaultAppPool gözüküyor ve sürekli disabled durumda.Benim IIS de ise invalid_application_pool yazıyordu ve muhtemelen sizdede bu şekilde kalmış bir Application Pool olacaktır.

2009-05-21

Window Desktop Arama Yerine Normal Arama



Eğer Windows Desktop Search'i kurduğunuzda normal aramanın kaybolmasından nefret ediyorsanız :
Registrydeki HKEY_CURRENT_USER\Software\Microsoft\Windows Desktop Search\DS altındaki ShowStartSearchBand değerini 0'a çekiniz..

2009-05-17

BlueBird BIP-1300


Bir projede kullanmak üzere bu cihaz geçti elimize.Cihaz Kredi Kartı,Barkod okuyabiliyor.Ayrıca üzerinde termal bir yazıcı var.Üzerinde WinMobile 5 çalışıyor ve GSM desteği mevcut.Yanında dokümanı yoktu bizdeki cihazda.Gerekli bilgi http://pda.bluebird.co.kr/ adresinde var(API,Dokuman,vs)..

2009-05-16

Posta Çeki ile döviz göndermek


Geçenlerde bir aboneliğim için posta çeki ile ödeme yapmam gerekiyordu.Ödeme olarak sadece € gönderiliyordu.Bende yakında olan ÖSYM'deki PTT şubesine gittim.Meğer orası bağlı şubeymiş ve döviz olarak işlem yapamıyormuş.Atlayıp Botaşın yanındaki şubeye gittiğimde ise beni 2. süprizi bekliyordu PTTnin...
 Posta çeki kağıdını doldurdum ve verdim görevliye; görevli bana işlem ücretini söyledi; bende tamam dedim ve parayı uzttım.
 Görevli, bana bakarak TL kabul etmediklerini söyledi.Bir an için anlıyamadım!Bende zaten TL yatırmıyorum € yatırıyorum dedim,neyse kurunuz ondan alırsınız dedim.Görevli bana sistemin buna olanak vermediğin söyledi.
 Gerçekten süpermiş PTT Bank.Hem bankacılık hizmetini yapacaksın,hemde döviz işlemi yaparken dönüşüm yapamayacaksın!Bravo PTT!

2009-05-07

WinMobile İçin Reset Sınıfı




Public Class SoftReset

Private Const FILE_DEVICE_HAL As Integer = &H101
Private Const METHOD_BUFFERED As Integer = 0
Private Const FILE_ANY_ACCESS As Integer = 0

<DllImport("coredll.dll", CharSet:=CharSet.Auto)> _
Private Shared Function KernelIoControl(ByVal dwIoControlCode As Integer, _
ByVal lpInBuf As IntPtr, ByVal nInBufSize As Integer, ByVal lpOutBuf As IntPtr,_
ByVal nOutBufSize As Integer, ByRef lpBytesReturned As Integer) As Integer
End Function

Private Shared Function CTL_CODE(ByVal DeviceType As Integer, _
ByVal Func As Integer, ByVal Method As Integer, _
ByVal Access As Integer) As Integer
Return (DeviceType << 16) Or (Access << 14) Or (Func << 2) Or Method
End Function

Public Shared Sub [Do]()
Dim bytesReturned As Integer = 0
Dim IOCTL_HAL_REBOOT As Integer = CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
Dim sonuc = KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0, IntPtr.Zero, 0, bytesReturned)
End Sub

End Class

2009-05-04

DataGridTableStyle de MappingName



Eğer DataGrid de datasource/databinding olarak DataSet/DataTable kullanıyorsanız(Örneğin Generic List) ve sütunlara stil vermek isterken DataGridTableStyle değeri için MappingName özelliği olarak ne yazacağım derseniz:

  • Array için o tipdeki array adı:örneğin string ->string[] , benimarray - >benimarray[]
  • Diğer sınıflar için o tipin adı :
    public Class Kullanici
    Inherits System.Collections.Generic.List(Of Kullanici)
    End Class
    '......
    benimStil.MappingName = benimSinif.GetType().Name


2009-02-17

ASP.NET de body tag'ine ulaşmak



Eğer uygulamanızda body tag'inin bulunduğu yerde değişiklik lazımsa aşağıdaki class yardımcı olabilir(Body tag'i literal control olarak bulunuyor.)

Public MustInherit Class BasePage
Inherits System.Web.UI.Page
Public Event OnBodyTagRender(ByVal sender As Object, ByVal e As System.EventArgs)
Protected Overrides Sub OnPreRenderComplete(ByVal e As System.EventArgs)
MyBase.OnPreRenderComplete(e)
Dim _page As Object = Me.Page
If Not Me.Page.Master Is Nothing Then
_page = Me.Master
While Not _page.Master Is Nothing
_page = DirectCast(_page.Master, System.Web.UI.MasterPage).Page
End While
End If

Dim list = From ctrl In DirectCast(_page, System.Web.UI.Control).Controls _
Where TypeOf ctrl Is System.Web.UI.LiteralControl
If list.Count >0 Then
Dim list2 = From lit As System.Web.UI.LiteralControl In list _
Where lit.Text.ToLower.Contains("<body")
If list2.Count = 1 Then
RaiseEvent OnBodyTagRender(list2(0), New System.EventArgs)
End If
End If
End Sub
End Class

Sanırsam yukarıdaki kod pek stabil çalışmıyor:( <body runat="server"> yazmak daha makul bir çözüm gibi olacak!

2009-02-12

Google Takvim Senkronizasyon Problemi


Eğer outlook ile Google takviminizi senkronize ederken "You seem to have outdated time zone information" şeklinde bir hata alıyorsanız:
Window KB942763 Güncellemesi ni kurunuz.