Windows Downloads Klasörüne Erişim

Selam,

Geçenlerde windowsun downloads ve resimler klasörüne erişmem gerekti ve path bilgisini nasıl bulurum diye bir araştırma yaptım.
Windows ile gelen standart klasörlerin birer unique id’si mevcut bu idleri kullanarak windows yüklü tüm cihazlarda erişim sağlayabilirsiniz.

[CSharp]
//Sample:

string downloadsPath = KnownFolders.GetPath(KnownFolder.Downloads);

//Class:

using System;
using System.Runtime.InteropServices;

///
/// Class containing methods to retrieve specific file system paths.
///

public static class KnownFolders
{
private static string[] _knownFolderGuids = new string[]
{
“{56784854-C6CB-462B-8169-88E350ACB882}”, // Contacts
“{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}”, // Desktop
“{FDD39AD0-238F-46AF-ADB4-6C85480369C7}”, // Documents
“{374DE290-123F-4565-9164-39C4925E467B}”, // Downloads
“{1777F761-68AD-4D8A-87BD-30B759FA33DD}”, // Favorites
“{BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968}”, // Links
“{4BD8D571-6D19-48D3-BE97-422220080E43}”, // Music
“{33E28130-4E1E-4676-835A-98395C3BC3BB}”, // Pictures
“{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}”, // SavedGames
“{7D1D3A04-DEBB-4115-95CF-2F29DA2920DA}”, // SavedSearches
“{18989B1D-99B5-455B-841C-AB7C74E4DDFC}”, // Videos
};

///
/// Gets the current path to the specified known folder as currently configured. This does
/// not require the folder to be existent.
///

///The known folder which current path will be returned. /// The default path of the known folder.
/// Thrown if the path
/// could not be retrieved.
public static string GetPath(KnownFolder knownFolder)
{
return GetPath(knownFolder, false);
}

///
/// Gets the current path to the specified known folder as currently configured. This does
/// not require the folder to be existent.
///

///The known folder which current path will be returned. ///Specifies if the paths of the default user (user profile
/// template) will be used. This requires administrative rights. /// The default path of the known folder.
/// Thrown if the path
/// could not be retrieved.
public static string GetPath(KnownFolder knownFolder, bool defaultUser)
{
return GetPath(knownFolder, KnownFolderFlags.DontVerify, defaultUser);
}

private static string GetPath(KnownFolder knownFolder, KnownFolderFlags flags,
bool defaultUser)
{
IntPtr outPath;
int result = SHGetKnownFolderPath(new Guid(_knownFolderGuids[(int)knownFolder]),
(uint)flags, new IntPtr(defaultUser ? -1 : 0), out outPath);
if (result >= 0)
{
return Marshal.PtrToStringUni(outPath);
}
else
{
throw new ExternalException(“Unable to retrieve the known folder path. It may not ”
+ “be available on this system.”, result);
}
}

[DllImport(“Shell32.dll”)]
private static extern int SHGetKnownFolderPath(
[MarshalAs(UnmanagedType.LPStruct)]Guid rfid, uint dwFlags, IntPtr hToken,
out IntPtr ppszPath);

[Flags]
private enum KnownFolderFlags : uint
{
SimpleIDList = 0x00000100,
NotParentRelative = 0x00000200,
DefaultPath = 0x00000400,
Init = 0x00000800,
NoAlias = 0x00001000,
DontUnexpand = 0x00002000,
DontVerify = 0x00004000,
Create = 0x00008000,
NoAppcontainerRedirection = 0x00010000,
AliasOnly = 0x80000000
}
}

///
/// Standard folders registered with the system. These folders are installed with Windows Vista
/// and later operating systems, and a computer will have only folders appropriate to it
/// installed.
///

public enum KnownFolder
{
Contacts,
Desktop,
Documents,
Downloads,
Favorites,
Links,
Music,
Pictures,
SavedGames,
SavedSearches,
Videos
}
[/CSharp]

System.Tuple Nedir ?

Tuple için generic bir taşıyıcı ya da class görevi görür diyebiliriz. Bir metodunuz var ve 2 ya da n adet veri dönmek istiyorsunuz ve bunu yapabilmek için farklı yöntemler kullanabilirsiniz. Class oluşturabilirsiniz ya da out parametrelerini kullanabilirsiniz ama ikisi de hem vakit kaybı hemde kodun okunabirliğini kısmen de olsa kötü etkileyen yöntemlermiş meğer 🙂 tuple ile n adet dönüş değeri saklayabilirsiniz.

Örnek:

public Tuple<stringbool> CommitPackageLine()
{
   // commit impl.
   //*
 
   string Result = "Commit operation is success!";
   bool HasError = false;
 
   return Tuple.Create(ResultHasError);
}
var result = CommitPackageLine();

// Commit operation is success!
result.item1

// false
result.item2

Harici ODAC Kurulumu

Oracle Data Access kullanarak veritabanı işlemleri gerçekleştirmek isteniyorsa, sunucu üzerinde yüklü bir odac olmalıdır.

Oracle client kurulumu esnasında opsiyon olarak gelen odac kurulumunu yapmadıysanız eğer sonradan kurulum için izlemeniz gereken yok şöyledir.

  1.  oracle client versiyonuna göre 32 ya da 64 bit xcopy odac zip dosyasını indir
  2. cmd ile indirilen klasörün içerisine konumlanarak aşağıdaki komut paremetreleri verilerek çalıştırılır.

   install.bat oracle_home_path oracle_home_name all_compodent;

Siri Nasıl Çalışıyor ?

Siri (Speech Interpretation and Recognition Interface) , apple firmasının geliştirdiği ve muhtemelen ilerisi için akıllı evler,tvler ve araçlara entegre olmaya aday bir ürün.

 

 

Backend olarak hangi dilde yazıldı derseniz, tam olarak c++ ya da c diyemiyorum çünkü 4 yıllık bir CALO-funded research sonucu ortaya çıkmış kullanılan dilden çok algoritması ile çok iyi bir cloud performansı sunuyor. Pal ve SPARK AGENT gibi frameworkleri kullandığını biliyoruz fakat tamamen yeni bir programlama dili kullandıkları da makaleler arasında yer alıyor.

Kullanılan teknolojiler ile ilgili detaylı bilgiye aşağıdaki linklerden erişebilirsiniz.

 

Bu videoda basit bir çalışma mantığı işlenmiş

ODBC ile mysql bağlantısı

ODBC(Open Database Connectivity), birbirinden farklı veritabanlarına (MySQL, Oracle, MSSQL vb.) standart metotlarla bağlantı yapmanızı sağlar. Bir nevi veritabanları ve uygulamalar arasında bir köprü görevi görürler.

ASP.NET kullanarak mysql veritabanına bağlanmak için gerekli ana başlıklar şöyle:

ConnectionStrings.com adresinden yardım alarak ihtiyacınız olan bağlantı cümlesini oluşturun, daha sonra uygulamanız içerisinde kullanın.

Örnek ConnString = “Driver={MySQL ODBC 5.1 Driver};Server=127..0.0.1;Database=mydb; User=myUsername;Password=myPAss;Option=3;”
Gerekli kurulumlar (x64/x86):

Okumaya devam et “ODBC ile mysql bağlantısı”

Oracle’da clob türünde parametre set etme

Oracle’da varchar2 türü max size değerinden daha büyük alanlar için clob türünde alanlar oluştururuz, aşağıdaki örnekte c# ile clob nesnesine nasıl parametre gönderildiğini görebilirsiniz.

CLOB :
Verileri karakter olarak saklar .Max 128 TB’a kadar veri saklar. TXT dosyalarının içerisindeki verileri CLOB veri tipinde saklayabiliriz

Command command = new Command();
OracleConnection Con = command.Connection();
Con.Open();
OracleTransaction tx = Con.BeginTransaction();
OracleCommand tempcmd = Con.CreateCommand();
tempcmd.Transaction = tx;
tempcmd.CommandText = “declare xx clob; begin dbms_lob.createtemporary(xx, false, 0); :tempclob := xx; end;”;
tempcmd.Parameters.Add(new OracleParameter(“tempclob”, OracleType.Clob)).Direction = ParameterDirection.Output;
tempcmd.ExecuteNonQuery();
//————————————————————

OracleLob tempLob = (OracleLob)tempcmd.Parameters[0].Value;

System.Text.Encoding enc = Encoding.Unicode;
Byte[] b = enc.GetBytes(result);
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
tempLob.Write(b, 0, b.Length);
tempLob.EndBatch();
//————————————————————
OracleCommand cmd = new OracleCommand(“my_procedure_name_api.Yeni”, Con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Transaction = tx;
cmd.Parameters.AddWithValue(“MESSAGE_ID_”, messageId);
cmd.Parameters.AddWithValue(“FILE_NAME_”, remoteFileName);
cmd.Parameters.AddWithValue(“SFTP_FILE_”, OracleType.Clob).Value = tempLob;
cmd.ExecuteNonQuery();
tx.Commit();
Con.Close();

Okumaya devam et “Oracle’da clob türünde parametre set etme”

Basit bir wcf servis örneği

Ne zaman servis yazmalı?


Yazılımcılar olarak üzerinde çalıştığımız işlev birden çok uygulama tarafından kullanılacaksa, bu işlevi yeninden kullanılabilir ve diğer sistemlere monte edilebilir bir şekilde üretmek pek tabii ki akıl karı bir iş olacaktır. Peki bunu başarmak nasıl mümkün olabilir?

 

Örnek olarak bir firmanın faturalama işlemini ele alalım. Üzerinde çalıştığımız otomasyon uygulamasının bir faturalama işlevi sağlaması gerektiğini varsayalım. Bu faturalama işlevini nesne yönelimli programlama prensiplerini kullanarak bir sınıf (veya sınıflar)içinde modüler bir biçimde toplayabiliriz. Ancak bu işlevi başka bir uygulamada kullanmak için yazdığımız sınıfları diğer uygulamaya kopyalamamız gerekecektir. Aynı sınıfların farklı projelerde ayrık bir biçimde var olması demek, ileride faturalama işlevinde gerekli olabilecek değişikliklerin birden çok yerde güncellenme zorunluluğu yaratacağından, bu durum pek istenen bir durum olmayacaktır.

 

Faturalama işlevi sağlayan sınıfları bileşen yönelimli programlama prensiplerini kullanarak bir bileşen kütüphanesi (mesela bir DLL paketi)içinde toplayabiliriz ve nerede faturalama işlemine ihtiyaç duyarsak, geliştirdiğimiz paketi kullanabiliriz. Bu yaklaşımla yukarıda bahsettiğimiz problemi elimine etmiş olmakla birlikte, şimdi de kurulum ve entegrasyon problemi ile baş etmek durumunda kalmış oluruz. Ne zaman DLL paketinde bir değişiklik yapılırsa, yeni versiyonun kurulumu ve başarılı entegrasyonu gerekecektir. Bu da DLL cehennemi adıyla da bilinen probleme meyilli bir alternatiftir.

Okumaya devam et “Basit bir wcf servis örneği”

SAP Crystal Reports for Visual Studio – PrintJobLimit Issue

Crystal reports kurulumuyla birlikte gelen regedit üzerinde default değerler vardır,örneğin PrintJobLimit değeri cr’nin admin tarafından set edilen max döküman işleme limitidir.

Bu değer standart olarak 25 ile 75 arasında olmalıdır.Sınırsız limit vermek için -1 değeri vermekten söz eden forum siteleri mevcuttur ama bunu önermiyorum çünkü bir süre sonra memory leak durumu ile karşı karşıya Okumaya devam et “SAP Crystal Reports for Visual Studio – PrintJobLimit Issue”