29 Kasım 2012


cannot connect to sqlexpress

ADDITIONAL INFORMATION:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified) (Microsoft SQL Server, Error: -1)

MSSQL Server kurduktan sonra SQL Server Management Studio kullanarak servera bağlanmaya çalıştığımızda alacağımız hatalardan biri bu olabilir. Daha doğrusu server name (server ismi) bilmiyor olabiliriz. SQL Server Management Studio 'ı açtığımızda otomatik olarak server name'in gelmesi için aşağıdaki işlemleri uyguluyoruz.

Çalıştırı açmak için Windows tuşu + R
Run -> services.msc

21 Kasım 2012

ERROR You don't have permission to open this file.
Contact the file owner or an administrator to obtain permission.

Visual Studio platformunda Database Explorer'dan yeni bağlantı oluşturmaya çalışırken alabileceğiniz hatalardan biridir. Hatanın sebebi, dosya erişimine izniniz olmamasıdır.

Çözüm 1 : Visual Studio'yu admininstrator olarak çalıştırın

Çözüm 2 : Ulaşmaya çalıştığınız veritabanı dosyasını, ulaşılabilir bir dizine(klasöre) kopyalayıp ulaşmayı deneyin.(Örnek : C:/TestDb/)

Çözüm 3 : İlgili dizine ulaşım izni verin ;)

---------------------------------------------------

Bunları yaptıktan sonra başka bir hatayla karşılaşmanız da muhtemeldir:


ERROR This file is in use. Enter a new name or close the file that's open in another program.

Bunun çözümü de; Çalıştır'a services.msc (Services - Hizmetler ekranı) yazıp çıkan ekrandan sqlserver servisini bulup durdukduktan sonra tekrar visual studio'ya geri dönüp bağlanmaktır. Bağlandıktan sonra server erişim hatası verecektir, services.msc 'den tekrar SqlServer servisini başlatmanız yeterli olacaktır.


Umarım yardımcı olabilmişimdir, kolay gelsin...
yorumlarınızı eksik etmeyin :))

20 Kasım 2012

ERROR No rows were deleted.
A problem occurred attempting to delete row 1.
Error Source: Microsoft.SqlServer.Management.DataTools.
Error Message: The row value(s) updated or deleted either do not make
the row unique or they alter multiple rows(3 rows).

Correct the errors and attempt to delete the row again or press ESC to
cancel the change(s).

Microsoft SQL Server Management kullanmaya başlayan arkadaşların, kayıt silerken karşılabileceği hatalardan biridir. Bu hatanın sebebi primary key kullanmamanız ve bu yüzden aynı kaydın birçok kez aynı tabloya eklenmesidir. Aynı kaydın birden fazla olduğu durumlarda Tool üzerinden silme, değiştirme işlemi yapılamamaktadır. Bunun yerine işimizi sql cümleciği ile halletmemiz gerekir.






DELETE FROM [DB_Proje].[dbo].[Deneme] WHERE [num] = 0.12

Umarım yardımcı olabilmişimdir, kolay gelsin...
yorumlarınızı eksik etmeyin :))

19 Kasım 2012

ERROR
Saving changes is not permitted. The changes you have made require the
following tables to be dropped and re-created. You have either made changes to a table that can't be re-created or enabled the option Prevent saving changes that require the tables to be re-created.

Mssql Server'da oluşturulmuş bir tabloda değişiklik yapmaya kalkıştığımızda, yukarıdaki hatayı alırız. Bunun sebebi;  "oluşturulmuş tablo üzerinde istenmeden yanlışlıkla yapılacak değişiklikleri engellemek" amacıyla oluşturulmuş tablo değiştirememe özelliğinin default olarak aktif olmasıdır.

Sorunun çözümü :

Tools -> Options 

açılan pencerede 

Designers -> Table and Database Designers 

"Prevent saving changes that require table re-creation" kutucuğundaki işareti kaldırmak...





Umarım yardımcı olabilmişimdir, kolay gelsin...
yorumlarınızı eksik etmeyin :))

Başlangıç seviyesi için detaylı araştırdım ve türkçe olarak sunuyorum :)

"app.config", istediğimiz kurulum özellikleri içeren, küçük projelerde kendisine ihtiyaç duymadığımız, xml tabanlı dosyadır. Birtakım özellikleri kodun içine gömmek yerine, app.config dosyasına yazarız.

Yararları :
  • Standartlaşmayı başarmıştır kendisi... Grup olarak çalıştığınız projelerde kolaylık sağlar, ya da yazdığınız bir projeye başkası devam etmek zorunda kaldığında, "Allah razı olsun" dedirtir :)
  • Büyük projelerde kod tekrarını azaltır.
Başta görünen yararları bunlar. Özellikle veritabanı bağlantısı kurulacağı zaman "connectionstring"in app.config dosyasına yazıldığını yoğun olarak görmüşsünüzdür. 

Burada aklıma şu takıldı : 
"connectionstring"i değişmemiz gerektiği zaman ya da birden çok yerde kullanmamız gerektiği zaman yararlı(exe'ye dokunmadan app.config üzerindeki değişiklik ile işimiz hallolur); ama veritabanı bağlantısı bilgilerimi neden app.config dosyasına yazıp da bilgilere rahatça ulaşılmasına neden olayım ki ? ( Kodun içerisine gömdüğümüz zaman exe'yi ya da dll'i decompile edip biraz uğraştırmak varken :)) 

Microsoft amca, bunu tabi ki düşünüp "connectionstring"i şifreleme methotlarını da bizlerden eksik etmemiş.

Geçelim uygulamalara :

Öncelikle app.config ile connectionstring kullanımından başlayalım, daha sonra şifreleme işlemlerine geçelim:


  • İlk olarak projenize System.Configuration referansını ekliyoruz ve kullanacağımız classta using System.Configuration; eklemeyi unutmuyoruz :)

  • Ctrl + Shift + A   yaparak açılan pencerede Application Configuration File seçip ismini değiştirmeden dosyamızı oluşturup projemize ekliyoruz.

  • app.config dosyamızı aşağıdaki gibi kendi bilgilerinizle dolduruyorsunuz, username ve şifre kullanıyorsanız, connectionstringe ekleyin...
<configuration>
  <connectionStrings>
    <add name="MyDBConnectionString" connectionString="server=.\SQLEXPRESS;database=db_deneme;trusted_connection=true;connection timeout=30"/>
  </connectionStrings>
</configuration>
  •  Kodumuzda çağırırken de ;
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MyDBConnectionString"].ConnectionString);
try
{
 conn.Open();
}
catch (Exception)
{
 MessageBox.Show("!!! Veritabanı bağlantısı kurulamadı.");
}

Ve böylelikle, veritabanı bağlantısı için gerekli olan connectionstring'i app.config dosyasından çekmiş olduk.

---------------------------------------------------------------------

Şimdi gelelim, güvenlik konusuna... Güvenlik için connectionstring'i şifreleyen methoda göz atalım..


Configuration config = ConfigurationManager.OpenExeConfiguration("deneme.exe");

ConnectionStringsSection section = config.GetSection("connectionStrings") as ConnectionStringsSection;


"deneme.exe" projemizin adının exe dosyası, default olarak debug klasörünün içinde olduğu için path vermiyoruz. Bu exe'nin app.config dosyası için "configuration" nesnesi oluşturduk ve bu nesnedeki "connectionStrings" isimli bölüm için de "section" nesnesi oluşturduk.

Section nesnesinin korumalı ise korumasız hale, korumasız ise korumalı hale getiren kodu aşağıda verelim :


if (section.SectionInformation.IsProtected)
{
 section.SectionInformation.UnprotectSection();
}
else
{
 section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
}


Son olarak config nesnemizi kaydedelim.


config.Save();

kendinize göre bu kodları projenize ekleyip, müşterinizin bilgisayarına kuracağınız zaman app.config dosyasını  şifreleyip korumalı hale getirebilirsiniz.

Not: app.config dosyası debug edildikten sonra "uygulamaismi.exe.config" olarak "debug" klasörüne kaydedilir, oradan korumalı haline bakabilirsiniz.


Umarım yardımcı olabilmişimdir, kolay gelsin...
yorumlarınızı eksik etmeyin :))


3 Ekim 2012

Windows8 evaluation yüklü sistemime Visual Studio 2012 kurmaya çalışırken aldığım ilk hata :


The .Net Framework installed on this machine does not meet the minimum required version: 4.5.50709.

Yani .net framework 4.5 istiyor, zaten windows 8 ile birlikte .net framework 4.5 geliyor, neyse bi deneyelim dediğimde ise:



Microsoft .NET Framework 4.5 is already a part of this operating system. You do not need to install the .NET Framework 4.5 redistributable.

Bu hatayı aldım. Forumları karıştırdıktan sonra (microsoft henüz düzeltmemiş bu sorunu) çözüm yolunu buldum...


Bizde yüklü .net framework 4.5.50xxx, yani 4.5.50709 dan önceki sürüm. Çözüm ne olabilir; yüklü sürümü 50709 gibi göstermek... Bu sürümü 50709 göstermek için kayıt defterinden değerini değiştirmemiz yeterli olacaktır. Ama değiştirmeye çalıştığınızda ise :



error writing the values new content

diye bir hata almanız muhtemel :) Tabi değiştirme izni olmadığından değiştirme yapamıyoruz, öncelikle değiştirme izni vermemiz lazım... Yapacağımız işlemler bunlar, sırasıyla uygulamaya başlayalım :

1. C:\Windows dizininde regedit.exe ye sağ tıklayıp Properties i açın

2. Security tabına geçin ve Advanced butonuna tıklayın
3. En üstte ikinci satırda Change (En üstten ikinci satırda - Owner) linkine tıklayın ve açılan penceredeki boşluğa Adminisrators (Administrator değil sonunda "s" var :) yazın ve ok butonuna tıklayın. Diğer ekranda da ok butonuna tıklayıp kapatın. Değişikliklerin yapıldığından emin olun
4. C:\Windows dizininde regedit.exe ye sağ tıklayıp Run as administrator yani yönetici olarak çalıştır  


  • 64 bit kullananlar için:
    • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full
  • 32 bit kullananlar için: 
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full

bu klasör dizinine gelip Full klasörüne sağ tıklayıp Permissions a tıklayın
5. Açılan pencerede Administrators u seçip Full Control kutucuğu işaretli değilse işaretleyin
6. Hemen altında Advanced e tıklayın, açılan pencerede en üstte Change (Owner olan satır) tıklayın ve açılan pencerede 3. adımdaki gibi Administrators yazın ve ok butonu ile kaydedin, diğer pencerede de ok butonu ile kaydedin.
7. Son olarak sağ Full dizinine tıkladığımızda sağ tarafta Version parametresine çift tıklayıp değeri 4.5.50709 yapıp kaydetmek..

Şimdi visual studio 2012 kurulumunu başarıyla gerçekleştirebilirsiniz, kolay gelsin...


2 Ekim 2012

Bu hatanın nedeni, etiketlerin çok fazla olması, etiketleri azaltın hallolur, 200 karakterden fazlası kadar aç gözlü olmamak lazım diyor google amca :)


Biraz araştırdım ve eksik kaynak olduğunu düşündüğümden paylaşmak istedim. Simplex metodun algoritmasını öğrendim, sonra C# dilinde kodlayacaktım ki, birden karşıma Microsoft Solver Foundation kütüphanesi çıktı :) Hemen denedim, sonuçlar çok başarılı, lingo, lpsolve ve daha birçok solver ın kütüphaneleri ve apileri mevcut.

Gelelim programlama çözümlerine...
Zaten indirdiğinizde örnek kodlar var, C:\Users\username\Documents\Microsoft Solver Foundation\Samples
klasör dizininde.

Rastgele bir örnek oluşturalım,  maksimizasyon problemi olsun. Maksimizasyon problemim 24 saatlik dilim içerisinde Q[i] * F[i] nin maksimizasyonunu çözmeye çalışalım.
Koşullar:
Q[i] >=1.15
Q[i] <= 5.25
X[i+1] = X[i] - 2*Q[i] + 2*F[i]
olsun, (Sonuç çıkmayabilir, değerleri salladım ;)
F[i] sabit olsun, yani
F[0] = 1.00
F[1] = 1.25
F[2] = 1.15
....
F[23] = 1.45

X[0] başlangıç değerimiz 3000 olsun

başlayalım...Tabi ki en başta SimplexSolver nesnesi oluşturuyor:

SimplexSolver simplex = new SimplexSolver();

max = Qi * Fi    , i = 1,2,3...,24
burada maksimizasyonumuzun ne olduğunu tanımlıyoruz

int goal;
simplex.AddRow("goal", out goal);
for (int i = 0; i < Q.Length; i++) 
{ 
 simplex.SetCoefficient(goal, Q[i], F[i]); // max = Q[i] * F[i]
} 
simplex.AddGoal(goal, 1, false); // false = maximization, true = minimization

Eğer sabit değerlerimiz varsa, alt ve üst limitini aynı değer verilir, yoksa alt ve üst limtleri verilir.

simplex.SetBounds(X[0], 3000, 3000); // X[0] = 3000

for (int i = 0; i < 24; i++)
{
 varName = "Q" + i.ToString();
 simplex.AddVariable(varName, out Q[i]);
 simplex.SetBounds(Q[i], 1.15, 5.25);
}

X başka bir değişken ve maksimizasyon formülünün içinde yer almayan; fakat Q ya bağlı bir değer:
X[i+1] = X[i] -2* Q[i] + 2*F[i] gibiyse ve sabitimiz yoksa X[i+1] - X[i] + 2*Q[i] - 2*F[i] = 0 olarak düşünülür ya da sabitimiz varsa 0 yerine yazılır, mesela X[i+1] - X[i] + 2*Q[i]  = 2*F[i]

int[] row = new int[24];
for (int i = 0; i < 24; i++)
{        
 rowName = "row" + i.ToString();
 simplex.AddRow(rowName, out row[i]);
 simplex.SetBounds(row[i], 2 * F[i], 2 * F[i]); // >= <= ya da == olarak düşünülür
 simplex.SetCoefficient(row[i], X[i + 1], 1);
 simplex.SetCoefficient(row[i], X[i], -1);
 simplex.SetCoefficient(row[i], Q[i], 2);    
}

Buradan sonrasında problemi çözmek ve değerleri görmek istersek :


SimplexSolverParams p = new SimplexSolverParams(); 
p.UseExact = true; 
simplex.Solve(p); 
if (simplex.Result == LinearResult.Optimal) 
{
 Console.WriteLine((double)simplex.GetValue(Q[0]));
}

Umarım faydalı olmuştur, kolay gelsin...
yorumlarınızı eksik etmeyin :)

3 Ağustos 2012

Windows 7 ve Windows 8 de notepad++ programında türkçe karakter sorununu çözmek, programa ya da kısayoluna sağ tıklayıp "özellikler"den(Properties) "uyumluluk"( Compatibility) sekmesinde "Windows XP (Service Pack 3) ile uyumlu çalışmasını işaretleyip kaydediyoruz.

(Programın kendisini ya da kısayolunu bulup sağ tıklayamadıysan program files içerisinden bulabilirsin ;)

Dün gece localhost'da çalışıp sunucuda(server) çalışmayan header ve session'larla karşılaştım. Bendeki sorunun kaynağı dosyaların utf-8 olarak kodlanmasıymış. Bunun yerine utf-8 (BOM'suz) olarak kodlamak gerekiyormuş.



Yukarıdaki resim notepad++ programına ait.

Tabi bendeki sorunun sebebi buydu; ama konu açılmışken header session genel sorunlarından da bahsedelim:
Genel kullanımı :

header('Location: index.php');

header ("refresh:3; url=index.php");
ya da sorunla karşılaşıyorsanız 
echo "<script>window.location = 'http://www.yourdomain.com'</script>";

şeklindedir.

Sorunların sebebi :

  • session_start();


ob_start();

komutlarının sayfanın en başında kullanılmaması.


  • session_register() gibi eski sürüm php fonksiyonlarının kullanılması...
  • header ya da session kodunuzun olduğu satıra kadar hataların olabilmesi ;)





2 Ağustos 2012

Ben zamanında bunu çok aramıştım, doğru arama sorgusunu bulmakta çok zorlanmıştım :)

Adı, jquery modal window - box - dialog, ama ben arama yaparken web sayfasında üstte açılan uyarı, üstte açılan sayfa, kullanıcı girişi sayfası, ajax giriş ekranı, jquery giriş ekranı, ajax uyarı ekranı, jquery uyarı ekranı, jquery kullanıcı login box ve dahası...

Bunları yazmamın sebebi benim gibi bu sorgularla arama yapanların karşısına bu sayfanın çıkması ve istediğine ulaşabilmesi. Bu sebeple siz de yaptığınız arama sorgularını yorum kısmına yazarsanız, siz de yeni başlayan arkadaşlara yardımcı olursunuz.

Aşağıdaki adreslerden modal kütüphaneleri ile ilgili çalışmalara göz atabilirsiniz.

http://jqueryui.com/demos/dialog/

http://nyromodal.nyrodev.com/

http://www.ericmmartin.com/projects/simplemodal-demos/

http://www.queness.com/post/77/simple-jquery-modal-window-tutorial

23 Temmuz 2012

IIS ve Apache aynı anda kullanabilmek.
Windows işletim sisteminde IIS 80 numaralı portu dinler. wampserver, xampserver gibi apache serverları kullanan yazılımlar kurulduğunda da 80 numaralı port dinlenir. Bu nedenle ikisi aynı anda çalışmaz. Bunu sağlayabilmek için birinin portunu değiştirmemiz lazım.

Bendeki klasör yolu:
"C:\wamp\bin\apache\apache2.4.2\conf" klasörünün içindeki ya da alttaki resimdeki gibi "httpd.conf" adlı dosyayı not defterinde açıp 


Listen 80

yazan satırı bulup 

Listen 8080




ile değiştirmeniz yeterli olacaktır ya da siz hangi porttan dinlemek isterseniz o portun numarasını yazabilirsiniz.
Şimdi ise wampserver ya da hangi hangisi ise, sol alt görevçubuğundan kapatıp (ya da görev yöneticisinden) tekrar başlatmak. 

Adres çubuğuna localhost:8080 ya da 127.0.0.1:8080 yazarak wampserver anasayfasına ulaşabilirsniz.

(Port çakışmalarını önlemek için yazacağınız port numarasının hangi programlar tarafından kullanıldığına da bakmayı ihmal etmeyin.

Google'da "önemli port numaraları" ya da "windowsun kullandığı port numaraları" diye aratıp bilgi sahibi olmanızda yarar var.)

22 Temmuz 2012


Spam, virüs vb. falan değil arkadaşlar, ben yazdım :)

Öncelikle şunu söylemeliyim : Facebook zaman tüneli SİLİNMİYOR.
Sayfalarda paylaşılan "zaman tüneline kesin çözüm..." gibi linklere aldanmayın, çoğu virüs ya da spam oluyor.

Eğer ki ben zaman tünelini görmek istemiyorum diyorsanız, şöyle bir yol izleyebilirsiniz.
http://www.timelineremove.com/ sitesinden kullandığınız tarayıcı için zaman tüneli GİZLEME eklentisi indirebilirsiniz.

Eklentiyi kurduğunuzda sadece sizin profiliniz değil, bütün facebook profilleri eski halinde görünecektir.

13 Temmuz 2012

Bir aralar uğraştığım günlük yazılarına tekrar başlamaya karar verdim. Bu kararda etkili olan birkaç neden var.

- Zamanında Matlab GUI oluşturma ile ilgili 3 tane video yüklemiştim ve açıklamada o zamanki blog adresim yazılıydı ve bugün o adrese baktığımda farklı bir kişinin aldığını gördüm. Bir kişi ise matlab ile ilgili bir konu danışmak istediğini yazmış blog yorumuna.
- Bilgisayar mühendisliği mesleğini icra ederek hayatımı idame ettirmem mecburiyetini gün geçtikçe hissetmem :)
- Bilgi paylaşımı

Bu Blogda Ara

İletişim

Ad

E-posta *

Mesaj *