|
|
Yılmaz Yavuz tarafından 20 Haziran 2010 tarihinde yazılmış
Bir çok web tasarımcısının sitelerinin tasarımlarını firebug ile düzenlediğini ve burada yaptığı değişiklikleri css dosyalarına kopyalayıp yapıştırdığına şahit oldum. Dün bununla ilgili biraz araştırma yapıp firebug üzerindeki değişiklikleri direk kaydetmenin bir yolunu aradım ve karşıma FireFile adında bir Firebug eklentisi çıktı. Bu eklenti ile yaptığınız değişiklikleri direk server a gönderebiliyorsunuz.
Kısaca yaptığı işlem şu :
- Firebug a attach olarak Css düzenlemelerini track ediyor
- Eklemiş olduğunuz bir endpoint service e bu değişiklikleri otomatik yada manuel bir şekilde gönderebiliyor.
Burda sözü geçen endpoint eklentiyi geliştiren arkadaşın canlıda kullanılmak üzere yazdığı bir php dosyasından ibaret.
Dosyayı server a atarak gerekli düzenlemeleri yaptığınızda (dosya yetkileri vb) sitenize girip firebug ile düzenlediğiniz css leri herhangi bir kopyala yapıştır işlemi olmaksızın kaydedebiliyorsunuz.
Eklentiyi biraz debug ederek yaptığı işlemin en basit halini kendim kullanabileceğim bir Asp.Net dosyası olarak geliştirdim. Böylece local de asp.net web development server üzerinden istediğim gibi css lerimi kolay bir şekilde değiştirebilir hale geldim.
Asp.Net Web Developer larının çok işine yarayacağını düşündüğüm bu dosyayı aşağıdaki adresten indirebilirsiniz.
Kurulum için öncelikle bu adresten firebug ı kurmuş olmanız gerekiyor:
http://getfirebug.com/
Sonra firefile eklentisini bu adresten edinebilirsiniz:
https://addons.mozilla.org/en-US/firefox/addon/52365/
En son olarakta FireFile.aspx dosyasını aşağıdaki adresten indirebilirsiniz :
http://www.yilmazyavuz.com/yyblog/wp-content/uploads/FireFileAspx.rar
Kullanımı readme.txt dosyasında anlatılmıştır.Soru ve önerileriniz için bu yazıya yorum yapabilirsiniz.
Yılmaz Yavuz tarafından 2 Haziran 2010 tarihinde yazılmış
Backgroundworker windows application yazarken yönetilmesi kolay bir multi-thread componentidir. Farklı bir thread de yapmak istediğiniz işlemleri kolay bir şekilde yapabilir, durum değişikliklerini UI thread e gönderebilirsiniz.
Örnekte 100 birimlik bir iş yapan bir kodumuz var ve progress bar ile bu işlerin ne kadarının bittiğini kullanıcıya göstermek istiyoruz.

Form üzerinde bir adet ProgressBar ve bir adet BackgroundWorker sürükleyip bırakıyoruz. Yukarıdaki gibi görünecektir.
Daha sonra formun üstüne çift tıklayıp yada Events penceresinden Form_Load ın üzerine çift tıklayıp aşağıdaki kodları yazıyoruz.
//Main Thread
private void Form1_Load(object sender, EventArgs e)
{
//Backgroundworker in başlaması için
backgroundWorker1.RunWorkerAsync();
}
Daha sonra Backround worker in Do work eventini yakalıyor ve şu şekilde yazıyoruz. (Backgroundworker üzerine çift tıklandığında gelen event)
//Backgroundworker in Thread i
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
//burda yapmak istediğimiz işlemi yapıyoruz
//örnek olarak for ile 1 den 100 e kadar rasgele bekletiyoruz.
for (int i = 0; i < 100; i++)
{
//Her birim işlem bitiminde report progress methodunu çağırıyoruz
backgroundWorker1.ReportProgress(i);
Thread.Sleep(new Random().Next(10) * 100);
}
}
Daha sonra yine Backgroundworker in ProgressChanged eventini yakalıyor ve aşağıdaki kodu yazıyoruz:
//Main Thread
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//Progress değiştiğinde göstermek istediğimiz şekilde bunu ekrana gönderiyoruz
progressBar1.Value = e.ProgressPercentage;
}
Böylece her durum değişikliğinde çalışan progresschanged bize UI tarafında yapılan işlemle ilgili bilgi verebilmemizi sağlıyor. Bu işlemi direk Do_Work içerisinde yaparsak Cross-Thread olacağından exception verecektir.
Yılmaz Yavuz tarafından 10 Mayıs 2010 tarihinde yazılmış

Visual Basic .Net ile yazılmış bir kodu Csharp a çevirmek için yapılmış bir online tool.
Ufak tefek hatalarla beraber birebir çeviri yapmak için kullanışlı bir araç.
Yılmaz Yavuz tarafından 3 Mayıs 2010 tarihinde yazılmış

Devexpress AspxCloudControl u elimizde hazır bulunan bir cloud datasını ekrana basmak için kullandığımız bir devex kontrolüdür.
Örnekte bir blog sitesindeki tag leri aspx cloud control ü kullanarak nasıl ekrana çıkartacağımız gösterilmiştir.
İlk olarak Visual Studio yu açarak, Yeni bir Web Project oluşturuyoruz. Proje içinde; öncelikle Tag adında bir class oluşturup Name,DisplayName,Count adında üç property ekliyoruz.
Sonra default.aspx içerisine devexpress CloudControl u sürükleyip bırakıyoruz. Default.aspx.cs içerisine gelip, Yeni bir tag tipinde generic list oluşturup, içine tag elemanlarını ekliyoruz. Bu elemanların count propertylerinin birbirinden farklı olması cloud controlün görünümünü etkileyen asıl unsurdur. Daha sonra CloudControl ün TextField alanını “DisplayName” , NameField alanını “Name”, NavigateUrlField alanını “Name” , NavigateUrlFormatString alanını “http://www.yilmazyavuz.com/yyblog/index.php/tag/{0}/” , ValueField alanını “Count” şeklinde atıyoruz. Burdaki alanlardan önemli olan TextField , ValueField ve NavigateUrlField alanları bu alanlar :
TextField : Önyüzde gösterilecek olan yazı,
ValueField: Önyüzde gösterilecek olan yazıyı boyutlandırmak için kullanılacak değer.
NavigateUrlField : Önyüzde gösterilecek olan elemanın gideceği adres yada NavigateUrlFormatString de belirtilen stringin içerisine yerleştirilecek değer.
NavigateUrlFormatString : içinde sadece {0} alanının NavigateUrlField değeriyle doldurulacağı string.Format yazımı ile aynı olan değer.
Son olarak oluşturduğumuz generic tag listesini aspxCloudControl ün DataSource özelliğine atıyoruz, ve databind methodunu çağırıyoruz.
Böylece nurtopu gibi bir tag cloud umuz olmuş oluyor .
Örnekte anlatılanların koda dökülmüş hali aşağıdadır.
default.aspx :
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Blog.DevexTagCloud._Default" %>
<%@ Register Assembly="DevExpress.Web.v9.1, Version=9.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxCloudControl" TagPrefix="dxcc" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<dxcc:ASPxCloudControl ID="ASPxCloudControl1" runat="server">
</dxcc:ASPxCloudControl>
</div>
</form>
</body>
</html>
default.aspx.cs :
using System;
using System.Collections.Generic;
namespace Blog.DevexTagCloud
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<Tag> myTags = new List<Tag>(10);
myTags.Add(new Tag("DevExpress",20));
myTags.Add(new Tag("Csharp",25));
myTags.Add(new Tag("Asp.Net",15));
myTags.Add(new Tag("Mono",5));
myTags.Add(new Tag("Objective-C",2));
myTags.Add(new Tag("Telerik",1));
myTags.Add(new Tag("Wcf",2));
myTags.Add(new Tag("TXTextControl",0));
ASPxCloudControl1.NameField = "Name";
ASPxCloudControl1.TextField = "DisplayName";
ASPxCloudControl1.ValueField= "Count";
ASPxCloudControl1.NavigateUrlField = "Name";
ASPxCloudControl1.NavigateUrlFormatString = "http://www.yilmazyavuz.com/yyblog/index.php/tag/{0}/";
ASPxCloudControl1.DataSource = myTags;
ASPxCloudControl1.DataBind();
}
}
}
Tag.cs :
namespace Blog.DevexTagCloud
{
public class Tag
{
public Tag(string name, int count)
{
DisplayName = name;
Name = name.ToLower();
Count = count;
}
public int Count { get; set; }
public string DisplayName { get; set; }
public string Name { get; set; }
}
}
Yılmaz Yavuz tarafından 15 Şubat 2010 tarihinde yazılmış
Asp.Net de herhangi bir html form elementinin verisini server-side olarak işlemek için; elementin üzerine runat=server yazdığınızda verdiğiniz id ile server-side ulaşabilmektesiniz.
Örnek aspx :
<input type="hidden" id="hdnGizliBilgi" runat="server" />
Csharp :
hdnGizliBilgi.Value = "CokGizliBilgi";
Ancak runat=”server” demediğiniz form elementlerinin değerine ulaşabilmek için ; ilgili elementin name attribute ünü vermeniz gerekmektedir. Ve server-side olarak alırken içindeki değeri şu şekilde alabilirsiniz.
Örnek aspx :
<input type="hidden" name="hdnGizliBilgi" />
Csharp:
string gelenveri =Request.Form["hdnGizliBilgi"];
if(gelenveri == "AzGizliVeri")
Response.Redirect("http://www.google.com");
else
Response.Redirect("http://yilmazyavuz.com");
Yılmaz Yavuz tarafından 19 Kasım 2009 tarihinde yazılmış
Programatik olarak formu minimize etmek için
this.WindowState = FormWindowState.Minimized;
kodunu formun herhangi bir static olmayan methodunda yazarak işlemi gerçekleştirebiliriz.
WindowsState property si formun durumunu Minimize, Maximize etmek yada Normal haline döndürmek için kullanılan property dir.
Yılmaz Yavuz tarafından 20 Ekim 2009 tarihinde yazılmış

Arasıra takip etmeye çalıştığım mono projesine bugün göz attığımda, Novell in MonoTouch adında bir SDK geliştirdiğini gördüm. İlgili SDK 400$ bir fiyata satılıyor ve yaptığı şey ise, Iphone application geliştirmeye çalışan bir .Net yazılımcısı için paha biçilemez. Xcode da yazmak yerine MonoDevelop ile C# da Iphone application geliştirmenize yarayan bu sdk, arayüz tasarlayıcı olarak apple in Interface designer ını kullanıyor.
Yeni kurduğum için, hakkında çok fazla bilgi veremediğim ancak bu sdk ile ilgili yazılarımı, burdan yayımlayacağım.
Ayrıca bir soap webservice çağırmak için ojb-c ile okadar çok boğuştuktan sonra, bunu monotouch ile ne zamanda yapacağımı çok merak ediyorum : )
Merak edenler için linkler:
Mono-Project
MonoDevelop (2.2 beta versiyonu MonoTouch için gerekli)
MonoTouch
MonoTouch ın yapabildikleri :
- C# and .NET on the iPhone
- .NET Bindings to Native APIs
- Distribute on the Apple App Store
- Enterprise deployable
- MonoDevelop Integration
- XCode Integration
Assemblies (MonoTouch ile kullanabileceğiniz Assembly ler)
MonoTouch ships with several assemblies. Just as Silverlight is an extended subset of the desktop .NET assemblies, Monotouch is also an extended subset of several Silverlight and desktop .NET assemblies.
Note: MonoTouch is not ABI compatible with existing assemblies compiled for a different profile. You must recompile your source code to generate assemblies targeting the MonoTouch profile (just as you need to recompile source code to target Silverlight and .NET 3.5 separately).
The assemblies shipped with MonoTouch include:
| Assembly |
API Compatibility |
| mscorlib |
Silverlight |
| Mono.Security.dll |
Cryptographic APIs. |
| OpenTK.dll |
The OpenGL/OpenAL object oriented APIs, extended to provide iPhone device support. |
| System.Core.dll |
Silverlight |
| System.Json.dll |
Silverlight |
| System.ServiceModel.dll |
WCF stack as present in Silverlight |
| System.Xml.dll |
.NET 3.5 |
| System.Web.Services |
Basic Web services from the .NET 3.5 profile, with the server features removed. |
| System.Xml.Linq.dll |
.NET 3.5 |
| System.dll |
Silverlight, plus types from the following namespaces:
- System.Collections.Specialized
- System.ComponentModel
- System.ComponentModel.Design
- System.Diagnostics
- System.IO.Compression
- System.Net
- System.Net.Mail
- System.Net.Mime
- System.Net.NetworkInformation
- System.Net.Security
- System.Net.Sockets
- System.Security.Cryptography
|
| monotouch.dll |
This assembly contains the C# binding to the CocoaTouch API. |
| Mono.CompilerServices.SymbolWriter.dll |
For compiler writers. |
Yılmaz Yavuz tarafından 29 Eylül 2009 tarihinde yazılmış
İşinize yarayabileceğini düşündüğüm guid doğrulama kodunu google araştırırken bir blog da görmüştüm.
private static Regex isGuid = new Regex(@"^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$", RegexOptions.Compiled);
internal static bool IsGuid(string candidate, out Guid output)
{
bool isValid = false;
output=Guid.Empty;
if(candidate!=null)
{
if (isGuid.IsMatch(candidate))
{
output=new Guid(candidate);
isValid = true;
}
}
return isValid;
}
Yılmaz Yavuz tarafından 7 Eylül 2009 tarihinde yazılmış
Frank McCown adında bir hayırsever, csharp programcısı olupta vb de yazması gerekenler ve vb programcısı olupta csharp da program yazmak isteyenler için karşılaştırmalı bir referans hazırlamış asp alliance da bunu baskıya hazır halde pdf ve word dosyası haline getirmiş.
Asp Alliance ın düzenlediği hali
Orjinali ve halen geliştirilen hali
Yılmaz Yavuz tarafından 3 Eylül 2009 tarihinde yazılmış

Kargo bilgilerini ve ptt nin yurtiçi ve dışı kayıtlı gönderilerini sorgulayan bir programa ihtiyacım oldu ve ortaya böyle birşey çıktı.
bir form oluşturup şekilde görüldüğü üzere bir TextBox, bir ComboBox , bir Button ve birde WebBrowser controlü ekleyip aşağıdaki kodları yazdığınızda program çalışacaktır.
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var cmbItem = (CmbItem)comboBox1.SelectedItem;
String postdata = String.Format("{0}={1}",cmbItem.FieldToPost,textBox1.Text);
System.Text.Encoding a = System.Text.Encoding.UTF8;
byte[] byte1 = a.GetBytes(postdata);
webBrowser1.Navigate(cmbItem.Url, "",byte1, "Content-Type: application/x-www-form-urlencoded" );
}
private void Form1_Load(object sender, EventArgs e)
{
List<CmbItem> list =new List<CmbItem>();
list.Add(new CmbItem("PTT-Yurtiçi Kayıtlı Posta","barkod","https://interaktif.ptt.gov.tr/apps/sonuc.php"));
list.Add(new CmbItem("PTT-Yurtdışı Kayıtlı Posta", "barkod", "https://interaktif.ptt.gov.tr/apps/sonuc-yd.php"));
list.Add(new CmbItem("Yurtiçi Kargo(GönderiNo)", "DocId", "http://selfservis.yurticikargo.com/reports/SSWDocumentDetail.aspx"));
list.Add(new CmbItem("Aras Kargo(GönderiNo)", "Cargo_Code", "http://appl-srv.araskargo.com.tr/yurticigonbil.aspx",METHOD.GET));
comboBox1.DataSource = list;
}
}
internal class CmbItem
{
public string Url { get; set; }
public string FieldToPost { get; set; }
public string DisplayName { get; set; }
public METHOD SendMethod { get; set; }
public CmbItem(string displayName,string fieldToPost,string url) : this(displayName, fieldToPost, url, METHOD.POST)
{}
public CmbItem(string displayName,string fieldToPost,string url,METHOD sendMethod)
{
SendMethod = sendMethod;
Url = url;
DisplayName = displayName;
FieldToPost = fieldToPost;
}
public override string ToString()
{
return DisplayName;
}
}
public enum METHOD
{
POST,
GET
}
Burda kullandığımız method webBrowser in Navigate methodunda post edilecek veriyi alan değişkeni göndermekten ibarettir. Bilindiği üzere POST ve GET olmak üzere iki adet methodla web sayfalarına veri gönderebiliyoruz. GET methodu url string i içinde gönderilebilirken POST için bizim kullandığımız methodu uygulamak gerekiyor.
Burda SendMethod property si programı geliştirebilmek açısından yazılmıştır. Bu property i siz kendiniz buttonun tıklanma olayında kontrol ederek Navigate methodunun uygun overload unu çağırabilirsiniz.
|
|
Son Yorumlar