LINQPad – linq ile rastgele veri çekme

Dosya sistemindeki ilgili klasörden rastgele 10 dosya listeleme

//file system
var files = (from file in new DirectoryInfo("c:\windows").GetFiles()
let tempName = Path.GetRandomFileName()
orderby tempName
select new
{
   Name = file.Name
}).Take(10);
files.Dump();

Product tablosundan rastgele 10 kayıt listeleme

//DbContext Server
var products = (from p in Products
select new
{
   Name = p.Name
}
).OrderBy(p => Guid.NewGuid()).Take(10);
products.Dump();

 

mongodb ye blob storage muamelesi yapma

Uygulama için kullandığım Nuget paketi

Install-Package mongocsharpdriver -Version 2.5.0

dosya ve diğer ek bilgileri tanımlamak için şık bir nesne örneği

public class Blob
{
  [BsonId]
  public ObjectId ID { get; set; }
  [BsonElement("blobid")]
  public string BlobId { get; set; }
  [BsonElement("name")]
  public string Name { get; set; }
  [BsonElement("extension")]
  public String Extension { get; set; }
  [BsonElement("content")]
  public byte[] Content { get; set; }
}

csharp için hazırlanmış mongodb bağlantı sürücüsü (driver) ile önce dosyayı yükleme ve peşinden test işlemi

void Main()
{
  var client = new MongoClient("mongodb://username:password@xxxxxxx.mlab.com:38319/blobstorage");
  var database = client.GetDatabase("blobstorage");
  var collection = database.GetCollection<Blob>("blob");
  var dataFile = File.ReadAllBytes(@"D:\Images\Icons\beos\png\128\Be_AIM.png");
  var blobId = "416550a4-ac76-4fa4-8f9f-ce583708ed62";
  collection.InsertOne(new Blob
  {
    Name = "Be_AIM",
    Extension = ".png",
    BlobId = blobId,
    Content = dataFile
  });

  var document = collection.Find(
    p => p.BlobId == "416550a4-ac76-4fa4-8f9f-ce583708ed62"
  ).FirstOrDefault();
  var img = Image.FromStream(new MemoryStream(document.Content));
  //kullanıma bağlı bir takım kodlar vs vs
}

Mongodb denemeleri yapmak için mlab adresinden ücretsiz bir hesap oluşturabilirsiniz.

LINQPad – tcmb.gov.tr günlük kur bilgisi

void Main()
{
  string path = "http://www.tcmb.gov.tr/kurlar/today.xml";
  XDocument xDoc = XDocument.Load(path);
  var tarih = xDoc.Element("Tarih_Date").Attribute("Tarih").Value;
  var usd = (from x in xDoc.Descendants("Currency") where (string)x.Attribute("Kod") == "USD" select x).FirstOrDefault();
  usd.Element("ForexBuying").Value.Dump();
  usd.Element("ForexSelling").Value.Dump();
}

 

kendi imkanlarımız ile evde captcha yapımı

Alan Turing ‘i saygıyla andıktan sonra adım adım ilerleyelim.

1 – Alfa numerik karakterlerimizi oluşturalım:

publicstring CreateCaptchaKey()
{
    string[] chars = { "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "j", "k", "m", "n", "p", "r", "s", "t", "u", "v", "y", "z", "x", "q", "w" };

    Random rand = new Random();
    string captchaKey = "";

    for (int i = 0; i < 5; ++i)
    {
        captchaKey += chars[rand.Next(0, chars.Length)];
    }
    return captchaKey;
}

1,i ve l karakterlerini bilinçli olarak kaldırdım.

2 – Ürettiğimiz karakterlerden GDI+ ile grafik dosyası oluşturalım:

public byte[] CreateImage(string key)
{
    Random rnd = new Random();
    Bitmap bmp = new Bitmap(200, 80);
    Graphics g = Graphics.FromImage(bmp);
    g.Clear(Color.White);
    Font f = new Font("Arial", 34, FontStyle.Bold);
    Font fa = new Font("Arial", 18, FontStyle.Bold);
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
    g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

    g.FillEllipse(new SolidBrush(Color.FromArgb(125, 255, 0, 0)), -10, -10, 80, 80);
    g.FillEllipse(new SolidBrush(Color.FromArgb(85, 85, 119, 100)), 60, -10, 60, 60);
    g.FillEllipse(new SolidBrush(Color.FromArgb(161, 173, 185, 9)), 90, 0, 80, 80);

    var colorArray = new Color[] { Color.Red, Color.Green, Color.Blue, Color.Purple, Color.Orange };
    int left = 10;

    for (int i = 0; i < colorArray.Length; i++)
    {
        var color = colorArray[rnd.Next(5)];
        var harf = key[i].ToString();

        if (i % 2 == 0)
        {
            g.RotateTransform(5);
            g.DrawString(harf, f, new SolidBrush(color), left, 10);
        }
        else
        {
            g.RotateTransform(-3);
            g.DrawString(harf, fa, new SolidBrush(color), left, 10);
        }
        left += 30;
    }
    MemoryStream mem = new MemoryStream();
    bmp.Save(mem, ImageFormat.Png);
    return mem.ToArray();
}

3 – Oluşan grafik dosyasını arayüze ekleyelim;

<!-- login.cshtml -->
<!-- formun uygun bir yerine koyabilirsiniz -->
<div class="form-group">
    <div class="col-xs-12" style="text-align:center;">
         <img src="/Account/CreateImage" style="cursor:pointer" onclick="reloadR()" class="captcha" />
    </div>
</div>
<!-- sayfanı en altına ekleyin -->
<script>
    //yenilemek için kullanılacak
    function reloadR() {
        $(".captcha").removeAttr("src").attr("src", "/Account/CreateImage?Id=" + Math.floor((Math.random() * 100) + 1));
    }
</script>

//login controller

[AllowAnonymous]
public ActionResult CreateImage()
{
    var captchaKey = StringHelper.CreateCaptchaKey();
    Session["CaptchaKey"] = captchaKey;
    return File(GdiHelper.CreateImage(captchaKey), "image/png");
}

geriye sadece formu gönderdiğimiz action da kontrol etmek kaldı. Orası da sizin yoğurt yiyişiniz.

ado.net temel işlemleri için helper

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using System.Data;
using System.Text.RegularExpressions;

namespace DBHelper
{
    public static class Db
    {
        static string connectionString;

        [ThreadStatic]
        static SqlConnection connection;
        [ThreadStatic]
        static SqlTransaction transaction;

        static Db()
        {
            connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
        }

        public static bool OpenConnection()
        {
            if (connection == null)
            {
                connection = new SqlConnection(connectionString);
            }
            if (connection.State == ConnectionState.Closed ||
                connection.State == ConnectionState.Broken)
            {
                connection.Open();
                return true;
            }
            return false;
        }

        static void CloseConnection(bool close)
        {
            if (close)
            {
                connection.Close();
                connection.Dispose();
                connection = null;
            }
        }

        static void SetParameterToCommand(SqlCommand command, string sql, params object[] parameterValues)
        {
            string pattern = @"@\w+";
            var parameterNamesFromQuery = Regex.Matches(sql, pattern);
            if (parameterNamesFromQuery.Count != parameterValues.Length)
                throw new Exception("Parametre eksik veya fazla!");

            for (int i = 0; i &lt; parameterNamesFromQuery.Count; i++)
            {
                command.Parameters.AddWithValue(parameterNamesFromQuery[i].Value, parameterValues[i] ?? DBNull.Value);
            }
        }

        public static bool BeginTransaction()
        {
            if (transaction == null)
            {
                transaction = connection.BeginTransaction();
                return true;
            }
            return false;
        }

        public static void CommitTransaction(bool commit)
        {
            if (commit)
            {
                transaction.Commit();
                transaction.Dispose();
                transaction = null;
            }
        }

        public static void RollbackTransaction()
        {
            if (transaction != null)
            {
                transaction.Rollback();
                transaction.Dispose();
                transaction = null;
            }
        }

        public static object ExecuteScalar(string sql, params object[] parameterValues)
        {
            bool con = OpenConnection();
            using (SqlCommand cmd = new SqlCommand(sql, connection))
            {
                SetParameterToCommand(cmd, sql, parameterValues);

                if (transaction != null)
                    cmd.Transaction = transaction;

                try
                {
                    return cmd.ExecuteScalar();
                }
                finally
                {
                    CloseConnection(con);
                }
            }
        }

        public static int ExecuteNonQuery(string sql, params object[] parameterValues)
        {
            bool con = OpenConnection();
            using (SqlCommand cmd = new SqlCommand(sql, connection))
            {
                SetParameterToCommand(cmd, sql, parameterValues);

                if (transaction != null)
                    cmd.Transaction = transaction;

                try
                {
                    return cmd.ExecuteNonQuery();
                }
                finally
                {
                    CloseConnection(con);
                }
            }
        }

        public static IDataReader ExecuteReader(string sql, params object[] parameterValues)
        {
            bool con = OpenConnection();
            SqlCommand cmd = new SqlCommand(sql, connection);
            SetParameterToCommand(cmd, sql, parameterValues);
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }

        public static void FillTable(DataTable dataTable, string sql, params object[] parameterValues)
        {
            bool con = OpenConnection();
            using (SqlDataAdapter dap = new SqlDataAdapter(sql, connection))
            {
                dap.SelectCommand.CommandTimeout = 100;
                SetParameterToCommand(dap.SelectCommand, sql, parameterValues);

                if (transaction != null)
                    dap.SelectCommand.Transaction = transaction;

                try
                {
                    dap.Fill(dataTable);
                }
                finally
                {
                    CloseConnection(con);
                }
            }
        }

    }
}

Örnek Kullanım:

Db.ExecuteNonQuery("insert Product values(@Name,@Amount)", name, amount);

Proje dosyası için Github

powershell ile basit yedekleme kodu

      Yorum yok powershell ile basit yedekleme kodu
//dosya sıkıştırmak için gerekli kütüphane ekleniyor
Add-Type -A System.IO.Compression.FileSystem
//oluşacak zip dosyasının adı işlem tarihi ile aynı olacak
$filename = [DateTime]::Now.ToString("dd_MM_yyyy") + ".zip"
//veritabanının yedeği alınıyor (windows authentication)
Backup-SqlDatabase -ServerInstance "SunucuAdı" -Database "VeriTabanıAdı" -BackupFile "C:\www\site\App_Data\DB.bak"
//App_Data klasörü ile bak dosyası sıkıştırılıyor
[IO.Compression.ZipFile]::CreateFromDirectory('C:\www\site\App_Data', 'c:\www\backup\'+ $filename)
//veritabanı yedeği siliniyor
Remove-Item C:\www\site\DB.bak