2016-11-22

MS-SQL Log Yedekleme(Boyut küçültme)

Eğer bir veritabanınızın Recovery Model'i Full ise ve ldf(Log) dosyanız artık iflah olmaz seviyede şiştiyse en hızlı şekilde boyutunu azaltmak için aşağıdaki adımları uygulayın:

  1. Önce Full backup alın
  2. SQL scriptleri çalıştırın:
    USE master ;
    ALTER DATABASE [sizin_vt_adı] SET RECOVERY SIMPLE WITH ROLLBACK IMMEDIATE;
    CHECKPOINT;
    CHECKPOINT;--ikinci defa çalıştırıyoruz
    DBCC SHRINKFILE([sizin_logfile_adı],[mb_olarak_boyut]);

2016-04-28

UDP Broadcast

Windows altında (255.255.255.255) ile UDP broadcast yapıp sonuç alamıyorsanız, yayın yaptığınız Ip adresini kendi subnet mask'ınız ile broadcast edin.Örneğin Ip numaranız 172.16.132.xxx ise 172.16.132.255 şeklinde kullanın.

Referans:http://jc-bell.com/blog/2010/02/udp-broadcasts-wrong-source-address/

2015-11-27

netsh ile ssl eklerken alınan 1312 hatası

Eğer netsh http sslcert  komutu ile sertifika kururken "SSL Certificate add failed, Error: 1312" hatası alıyorsanız muhtemelen private key sertifikada bulunmuyordur.

WCF JSON Servisleri için CORS IEndPointBehavior

CORS(Cross-origin resource sharing) yapabilen JSON servisler için browser'lar normal istekten önce bir preflight(ön istek/uçuş) gerçekleştiriler. Bu aslında servise yapılan bir HTTP OPTIONS isteğidir.

Eğer sunucuda bu isteği değerlendirebilecek bir mekanizmanız yoksa,genellikle 405(Method not Allowed) yanıtı alırsınız. Bunu önleme için bu istekleri değerlendirip, ona göre yanıt vermeniz gerekir.

Aşağıdaki sınıf bu işlemi yapan bir IEndPointBehavior oluşturarak yapmaktadır.

using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Description;
 
public class EnableCrossOriginResourceSharingBehavior : IEndpointBehavior, System.ServiceModel.Dispatcher.IDispatchMessageInspector
{
 
 public static string AllowedMethods { get; set; }
 public static string AllowedHeaders { get; set; }
 
 static EnableCrossOriginResourceSharingBehavior()
 {
  EnableCrossOriginResourceSharingBehavior.AllowedHeaders = "GET,POST,OPTIONS";
  EnableCrossOriginResourceSharingBehavior.AllowedHeaders = "X-Requested-With,Content-Type,origin";
 }
 public void AddBindingParameters1(ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
 {
 }
 void IEndpointBehavior.AddBindingParameters(ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
 {
  AddBindingParameters1(endpoint, bindingParameters);
 }
 
 
 public void ApplyClientBehavior1(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.ClientRuntime clientRuntime)
 {
 }
 void IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.ClientRuntime clientRuntime)
 {
  ApplyClientBehavior1(endpoint, clientRuntime);
 }
 
 public void ApplyDispatchBehavior1(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.EndpointDispatcher endpointDispatcher)
 {
  endpointDispatcher.DispatchRuntime.MessageInspectors.Add(this);
  //   endpointDispatcher.DispatchRuntime.MessageInspectors.Add(New CustomHeaderMessageInspector(requiredHeaders))
 }
 void IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.EndpointDispatcher endpointDispatcher)
 {
  ApplyDispatchBehavior1(endpoint, endpointDispatcher);
 }
 
 
 public void Validate1(ServiceEndpoint endpoint)
 {
 }
 void IEndpointBehavior.Validate(ServiceEndpoint endpoint)
 {
  Validate1(endpoint);
 }
 
 public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel, System.ServiceModel.InstanceContext instanceContext)
 {
  System.ServiceModel.Channels.HttpRequestMessageProperty httpHeader = request.Properties[System.ServiceModel.Channels.HttpRequestMessageProperty.Name] as System.ServiceModel.Channels.HttpRequestMessageProperty;
  if (httpHeader != null)
  {
   if (httpHeader.Method.ToLowerInvariant() == "options")
   {
    request.Properties.Add("is_options_header", httpHeader);
   }
  }
  return null;
 }
 
 public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
 {
  //System.Diagnostics.Debugger.Launch()
  if (reply.IsFault) return;
  var props = System.ServiceModel.OperationContext.Current.IncomingMessageProperties;
  if (props.ContainsKey("is_options_header"))
  {
   System.ServiceModel.Channels.HttpRequestMessageProperty httpHeader = props["is_options_header"] as System.ServiceModel.Channels.HttpRequestMessageProperty;
   System.ServiceModel.Channels.HttpResponseMessageProperty resProp = reply.Properties.Values.OfType<System.ServiceModel.Channels.HttpResponseMessageProperty>().FirstOrDefault();
   //  If respo.StatusCode = Net.HttpStatusCode.MethodNotAllowed Then
   Dictionary<string, string> requiredHeaders = new Dictionary<string, string>();
   requiredHeaders.Add("Access-Control-Allow-Origin", "*");
   requiredHeaders.Add("Access-Control-Request-Method", EnableCrossOriginResourceSharingBehavior.AllowedMethods);
   requiredHeaders.Add("Access-Control-Allow-Headers", EnableCrossOriginResourceSharingBehavior.AllowedHeaders);
   requiredHeaders.Add("Access-Control-Max-Age", TimeSpan.FromHours(1).TotalSeconds.ToString());
   requiredHeaders.Add("X-EP-Behaviour", typeof(EnableCrossOriginResourceSharingBehavior).Name);
   foreach (string item in requiredHeaders.Keys)
   {
    resProp.Headers.Add(item, requiredHeaders[item]);
   }
 
   if (resProp.StatusCode == System.Net.HttpStatusCode.MethodNotAllowed)
   {
    resProp.StatusCode = System.Net.HttpStatusCode.OK;
    resProp.SuppressEntityBody = true;
   }
  }
 
 }
}

2015-09-15

Windows'da kasan sqldeveloper arayüzü

Eğer Sqldeveloper'ı indirip Windows'da  arayüz  problemleri yaşıyorsanız, biraz kastırıp Araçlar menüsünden Seçenekleri tıklayıp; Look and Feel ayarını Windows olarak değiştirip deneyiniz.

2012-11-09

Uzak masaüstü ses sorunu

     Çalıştığımız bir çok kurumda proxy/websense/vs gibi kısıtlamalar yüzünden twitter , youtube gibi siteler açılmıyor. Çoğu zaman bu kurumlarda uygulamaları kurduğumuz makinalar kısıtlamalar olmadığı için bahsi geçen sitelere uzak masaüstü ile bağlanarak erişiyorum.
     Ama genellikle bu makineler sunucu oluyor ve  fiziksel olarak ses kartları olmadığı için video seyrederken sadece görüntüsü ile idare ediyorduk. Ufak bir arama ile bu işin çözümü olduğunu öğrendim: 

  • Önce uzak masaüstü ayarlarında (Play on this computer) seçili olup olmadığı kontrol edilir.
     
  • Sonra uzak masaüstü ile bağlantı yapılır.Servislerden (Windows->Run->services.msc) Windows Audio servisi bulunur. Eğer başlatma tipi otomatik olarak başlamıyorsa; otomatik yapılıp servis çalıştırılır.
  • Uzak masaüstündeki makinada 
    • Windows Server 2008 için: Administrative Tools altındaki Remote Desktop Services'in menüsünde bulunan Remote Desktop Session Host Configuration açılır.
    • Windows Server 2003 için: Administrative Tools altındaki Terminal Services Configuration açılır.
  • Remote Desktop Session Host Configuration(yada Terminal Services Configuration) da Connections ki RDP-Tcp ye sağ tıklanıp özellikleri açılır.
  • Client Settings sekmesindeki Audio and Video playback(yada Audio Mapping)  kaldırılır.
  • Uzak masaüstü bağlantısındaki makinadan log-off yapılıp. Tekrar uzak masaüstü bağlantısı kurulduğunda artık sesi duyabilirsiniz.

2012-07-09

Web Farm Framewok da wcf için 404 hatası

Eğer Web Farm Framework kurup birde üzerine ARR ile Load Balance yapıyorsanız ve
herhangi *.svc uzantılı dosyalarınız için 404 hatası alıyorsanız.ARR olduğu kontrolör makinasındaki
IIS *.svc uzantılı dosyaları diğer makinelere yönlendirmeden kandi üzerinde çalıştırıyor demektir.
Bu yüzden  ARR'in olduğu web.config'de ServiceModel'e ait bütün handler ve module mapping lerin kadırılması gerekir.

2012-03-13

Aniden Kapanan Uygulama

Eğer Visual Studio ile VB.NET de uygulama geliştirken uygulamanız hata vermeden kendini kapatıyorsa Tek başına End şeklinde bir satır bırakmışsınızdır.
End If yazarken If kısmını unutmuşum!

2011-09-16

Clipboard Html Okuma Encoding Problemi

Eğer clipboard'dan CF_HTML formatında veri okurken encoding problemi çıkartıyorsa:
Dim cdata As String= Clipboard.GetText(TextDataFormat.Html)

şeklinde okuma yerine
  Dim str As System.IO.MemoryStream = TryCast(Clipboard.GetData("Html Format"),System.IO.MemoryStream)
            If str IsNot Nothing Then
                str.Seek(0, IO.SeekOrigin.Begin)
                Dim sr As New System.IO.StreamReader(str, System.Text.Encoding.UTF8)
                cdata = sr.ReadToEnd
                sr.Close()
            End If

şeklinde değiştirirseniz encoding problemini aşarız.

2011-06-08

SlSvcUtil.exe kullanırken oluşan StackOverflowException


Eğer Silverlight için SlSvcUtil.exe kullanarak bir WCF servisi consume ederken Process is terminated due to StackOverflowException hatası alıyorsanız SlSvcUtil.exe'nin bulunduğu dizine aşağıdaki konfigurasyonu içeren SlSvcUtil.exe.config dosyası oluşturun:

<configuration>
<satelliteassemblies>
<assembly name="SlSvcUtil, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</satelliteassemblies>
</configuration>

2011-06-04

Lambda expressionda kendini(recursive) kullanım


Visual 2008 VB ile gelen Lambda expression ile artık kod içinde istediğimiz yerde Function,Sub kullanabiliyorduk.Örneğin:

Private Sub UCAgac_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles Me.Loaded
Dim action = Sub()
MessageBox.Show("Deneme")
End Sub
Dim bol = Function(a As Double)
Return a / 4
End Function
End Sub



Eğer bu şekilde tanımlı bir lambda expression kendi içinde çağırmak istediğimizde

Dim bol = Function(a As Double)
If a > 0.0111 Then
Return bol(a / 4)
Else
Return a / 8
End If
End Function
Dim t As New System.Windows.Threading.DispatcherTimer()
t.Interval = TimeSpan.FromMilliseconds(100)
Dim handler = Sub()
If 1 > 0 Then
RemoveHandler t.Tick, handler
End If
End Sub
AddHandler t.Tick, handler
t.Start()

  1. Type of 'bol' cannot be inferred from an expression containing 'bol'

  2. Type of 'handler' cannot be inferred from an expression containing 'handler'


Visual Studio şeklinde bize bir hata verecektir.Sebebi ise lamda expressionlarının açık şekilde
tanımlanmamasıdır.Eğer açık şekilde tanımlarsak:

Dim bol As System.Func(Of Double, Double) = Function(a As Double)
If a > 0.0111 Then
Return bol(a / 4)
Else
Return a / 8
End If
End Function
Dim t As New System.Windows.Threading.DispatcherTimer()
t.Interval = TimeSpan.FromMilliseconds(100)
Dim handler As System.EventHandler = Sub(sender As Object, e As System.EventArgs)
If 1 > 0 Then
RemoveHandler t.Tick, handler
End If
End Sub
AddHandler t.Tick, handler
t.Start()
hata alınmaz.

2010-10-29

Outlook hesap ayarlarını yedeklemek

Bu aralar sıklıkla sistemimi yeniden kurar oldum.
Her kuruluşunda Outlook'a yeniden hesap kurmaktan bıktım.Bayağı uğraştıktan sonra buldum :

  • Registrydeki HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook dalı ve alt dalları yedeklenir.

  • Outlook tekrar kurulduktan sonra bu yedek tekrar yüklenir.

  • Artık eski hesaplarınız yeni kurduğunuz Outlook'a eklenmiştir.(Hesap şifrelerinizi tekrar sorabilir.)


VSTO İle word belgelerini sayfa sayfa okuma


Elimizde bir word belgesi var ve programatik olarak içinde bazı kelimleri sayfa bazlı aramamız gerekiyor.
Önce word belgemizi Interop yardımıyla açıyoruz ve bir Range nesnesi alıyoruz.


  _WORD = New Microsoft.Office.Interop.Word.Application
  _Doc = _WORD.Documents.Open(OpenFileDialog1.FileName)
  If _Doc IsNot Nothing Then
   Dim rng As Microsoft.Office.Interop.Word.Range = _Doc.Range()
   '............

Range nesnesin parametresiz vererek tüm içeriğe erişmiş oluyoruz.
Şimdi toplam sayfa sayısını bulalım.
 Dim pages As Integer = rng.ComputeStatistics(Microsoft.Office.Interop.Word.WdStatistic.wdStatisticPages)

Bütün sayfaların başlangıç-bitiş değerlerini bir Dictionary nesnesinde tutalım
  Dim list As New System.Collections.Generic.Dictionary(Of Integer, Integer())  

İlk sayfanın başına gidelim ve en son Range değerini tutalım.
  Dim what = Microsoft.Office.Interop.Word.WdGoToItem.wdGoToPage
  Dim which = Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToAbsolute
  Dim nRange As Microsoft.Office.Interop.Word.Range 
  Dim last As Integer = rng.End

Şimdi 2. sayfadan son sayfaya kadar ilerliyelim.
   Dim oncekiSon As Integer = 0
   For i = 2 To pages
        nRange = rng.GoTo(what, which, i)
        list.Add(i - 1, New Integer() {oncekiSon, nRange.End})
        oncekiSon = nRange.End
   Next

Şimdi son sayfanın başlangıç ve bitişlerini ekliyelim.(Son Range değeri)
   If list.Count > 0 Then
          list.Add(list.Keys.Last + 1, New Integer() {oncekiSon, last})
   End If

Artık elimizdde bütün sayflar için Range(Başlangıç-Bitiş) değerleri mevcut.
Sayfaların içerikleri işleyebiliriz.
  For Each key As Integer In list.Keys
    rng.SetRange(list(key)(0), list(key)(1))
    Dim data As String = rng.Text 'key nolu sayfanın içeriği
  Next

Word dan çıkalım.

COM nesnelerimizi bırakmayı unutmayalım :)
  _WORD.Quit(SaveChanges:=Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges)
  System.Runtime.InteropServices.Marshal.ReleaseComObject(_WORD)
  System.Runtime.InteropServices.Marshal.ReleaseComObject(_Doc)
 _WORD = Nothing
 _Doc = Nothing

2010-09-21

MSSQL'de tablo boyutlarını bulmak


Aşağıdaki script MSSQL de ki bir veritabanındaki tablolar ile ilgili boyut bilgilerini,döndürürür:

Declare @T TABLE(name varchar(1000),
[rows] varchar(100),
[reserved] varchar(100),
[data] varchar(100),
[index_size] varchar(100),
[unused] varchar(100))

DECLARE P1 CURSOR FOR
SELECT NAME FROM SYS.OBJECTS WHERE TYPE='U'
OPEN P1
DECLARE @N AS VARCHAR(100)
FETCH NEXT FROM P1
INTO @N
WHILE @@FETCH_STATUS=0
BEGIN
INSERT INTO @T
exec sp_spaceused @N
-------------------
FETCH NEXT FROM P1
INTO @N
END
CLOSE P1
DEALLOCATE P1
SELECT * FROM @T ORDER BY name ASC

2010-09-01

Windows 2008de normal kullanıcı login problemi


Yeni kurduğum bir Windows 2008R2 makineye kendi kullanıcımı ekledim.Kendim Administrators grubunda olduğum için farketmedim.Ama normal kullanıcılardan login olamadıklarına dair hatalar almaya başladım.
Aldıkları hata "user profile service failed the logon" şeklindeydi.
Epeyce bir googleda arama ile boğuştuktan sonra çözümü buldum.Çözüm Roaming folder olup olmadığının kontrolünün iptaliymiş:


  • Local group policy editor(gpedit.msc) açılır.

  • Administrative Templates dalına geçilir, buradan da User Profiles dalına geçilir

  • Do not check for user ownership of Roaming Profile Folders özelliği disable edilir.





Son not olarak eğer Admin iseniz ve Interet Explorer'in zırt-pırt uyarmasında bıktıysanız,
Server Manager'e girip Configure IE ESC disable etmenizde fayda var.


2010-08-14

Firefox'da içerik menüsü


Eğer Firefox ile sağ-tıklama ile gelen içerik(context) menüsünü gizleyip kendi menüsünü oluşturan bir uygulamada menü gelmiyor ise muhtemelen ayarları değişmiştir.
Menüyü göstermek için adres çubuğuna about:config yazıp enter'a basın,gelen ekranda
dom.event.contextmenu.enabled özelliğini bulun false olan değeri true yapın.
Hepsi bu kadar.

2010-07-10

Gold Safran Otel


  • Şirin ilçemiz Alanya'nın Oba mevkisinde bulunan 4 yıldızlı(!) otel

  • Devremülk olarak 2009'da gidilen,2010 yılında ise kapısından içeri sokulmayan otel.

  • Türk olduğunuzu bildiği halde; size merhaba demeyen, selamlamaktan aciz bir bayan müdürün bulunduğu otel(2009).

  • Açık büfe olmasına rağmen aşçıların çocukları "Önce tabağınızdakini bitirin,sonra tekrar alırsınız!" diyerek uzaklaşıtıran otel.

  • Başka bir 4 yıldızlı otele gidildiğinde,3.5 yıldızlı otelde kalındığını hissettiren otel.

2010-05-26

Windows XP'de ki hoşgeldiniz müziği


Windows XP ilk kurulduğunda son ayarlar kısmında
alttan tatlı bir müzik çalar.Windows 7'de keşke o müziğe benzer bir müzikle kurulsaymış.Müziğe C:\WINDOWS\system32\oobe\images\title.wma dosyasından,
bestecisinede ise http://www.billbrownmusic.com adresinden ulaşılabilir.Amcam birçok dizi ve filmede beste yapıyormuş.

2010-05-24

Silverlight içinde jQuery kullanmak


Silverlight uygulamaları içine gömüldükleri sayfaların DOM nesnelerine ve javascript lerine ulaşabiliyorlar.Silverlight ile jQuery konuşturmak için
Silverlight'a jQuery'i System.Windows.Browser.ScriptObject nesnesi tanıtmak gerekir.

Public Class MainPage
Inherits UserControl
private jQuery as System.Windows.Browser.ScriptObject
Private Sub MainPage_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
me.jQuery = TryCast(System.Windows.Browser.HtmlPage.Window.GetProperty("jQuery"), System.Windows.Browser.ScriptObject)
If Not jQuery Is Nothing Then
'şimdi body'ini stilini değiştirelim
Dim body As System.Windows.Browser.ScriptObject = _
TryCast(jQuery.InvokeSelf("body"), System.Windows.Browser.ScriptObject)
'artık body = window.jQuery(body)
'şimdi css fonksiyonu cagıralım
body.Invoke("css", "background-color", "red")'tek bir stil özelliği değiştirme
Dim list As System.Windows.Browser.ScriptObject = _
System.Windows.Browser.HtmlPage.Window.CreateInstance("Object")
list.SetProperty("background-color", "green")
list.SetProperty("font-size", "15")
list.SetProperty("display", "block")
body.Invoke("css", list)'birden stil özelliği değiştirme
End If
End Sub
End Class

2010-05-16

Query String de karakter problemi


Web sayfasında yapılan isteğin QueryString değerini kullanırken karakter problemi yaşanabilir.(Ş,ğ,ç,vb Türkçe karakterler Hexadecimal olarak formatlanır mesela).
Tam değeri almak içinse System.Web.HttpUtility.UrlDecode kullanırız.Ama sıklıkla bu metodu kullanarak bir türlü isteğim sonucu alamadım.
System.Web.HttpRequest sınıfının RawUrl özelliğini kullanarak istediğim değeri tam olarak alabildim:

Dim list As System.Collections.Specialized.NameValueCollection = _
System.Web.HttpUtility.ParseQueryString( _
ctx.Request.RawUrl.Substring(_ctx.Request.RawUrl.LastIndexOf("?")))