Skip to content


WPF ile ilgili bilgim son derece sınırlı olmakla birlikte, şuan üzerinde çalıştığım proje de WPF kullanmam gerekiyor. Uygulamanın analizinde belirli bir textboxt içerisinde, belirli uzunlukta metin alınacağı ve bu belirli uzunluktan sonra girilen metnin farklı bir renkte boyanarak  silineceği görsel bilgisinin kullanıcıya verilmesi gerekiyor.

Bir örnekle açıklarsak, metin kutusuna girilen 25 karakterden ilk 10 karakteri kırmızı, geri kalan 15 karakterin siyah olması ve tamam düğmesine basıldığında bu 10 karakterin işlenmesi gerekiyor.

Normalde rahatlıkla yapılabilecek bu isteği, WPF’in bileşenlerinin biraz yetersiz ve farklı, ve benim bu konudaki bilgimin az oluşu nedeniyle yarım gün boyunca araştırmam gerekti. Fakat neyseki mutlu son ile bitti ve aşağıdaki birkaç satır kod ile bu işi kotardım.

Öncelikle formumuza koyduğumuz bir RichTextBox nesnesinin KeyUp olayının içerisine aşağıdaki satırları yazıyoruz.

private void TextInput_KeyUp(object sender, KeyEventArgs e)
{

// mevcut metindeki butun renklendirmeleri kaldir
TextRange documentRange = new TextRange(TextInput.Document.ContentStart, TextInput.Document.ContentEnd);
documentRange.ClearAllProperties();
// 10 karakterden fazla bir text girilmisse
if (documentRange.Text.Trim().Length gt;= 10)
{
Color c = Colors.Red;
SolidColorBrush brush = new SolidColorBrush(c);

// 10. karakterin pointer bilgisini al. (text in sonunda \r\n karakterleri oldugundan +2)
var rightPointer = TextInput.Document.ContentStart.GetPositionAtOffset(10 + 2, LogicalDirection.Forward);
// ilk 10 karakteri sec
TextRange tr = new TextRange(TextInput.Document.ContentStart, rightPointer);

// yazi rengini degistir
tr.ApplyPropertyValue(TextElement.ForegroundProperty, brush);
}
}

WPF RichTextBox Output

WPF RichTextBox Coloring Output

WPF in normal TextBox bileşeni bu tarz renklendirmeyi desteklemediği için RichTextBox kullanmamız gerekti.

Ayrıca, RichTextBox’un textchanged olayına bu kodları yazarsanız metnin rengini değiştirdiğiniz anda tekrar tekrar textchange olayının tetiklenmesine sebep olacağından hata ile karşılaşırsınız.
jeu de roulette casino

drug interactions levitra

Posted in Uncategorized.


Mevcut projemizde test sunucumuz Windows 2008 yüklü IIS 7 kullanan bir sisteme sahipti. Web tabanlı uygulamayı test sunucusuna deploy etmeye kalktığımda Kurulum Sihirbazı, “The installer was interrupted before lt;uygulamanın adıgt; could be installed. You need to restart the installer to try again’” şeklinde bir mesaj ile kurulumu iptal ediyordu. Event log’a baktığımda “…. Installation success or error status: 1603.” şeklinde bir hata aldığımızı gördüm. Öncelikle sorunun başka birşey olduğunu düşündüm  ve deployment pack’i tekrar tekrar oluşturdum. Her seferinde aynı hatayı verince google’a danışayım dedim. Nitiative, Inc adlı bir blogda bu sorunun aynısının yaşandığını ve bizim test sunucumuzdaki bir eksik konfigürasyon nedeniyle bu hatayı aldığımızı öğrendim.

Server Manager üzerinden IIS 7 servis rollerine “IIS 6 Metabase Compatibility” rolünü ekledikten sonra kurulum başarı ile başladı. starpoker
payday loan cash advances

Posted in Uncategorized.


Geliştirdiğimiz workflowların başlatıldığı anda bitmesinin gerekmediği durumlar olabilir. Yani, düğmeye bastığınızda yapılacak olan iş başka birilierinin onayına ihtiyaç duyuyor olabilir, başka kaynaklardan bilgi alması gerekiyor olabilir ya da buna benzer dış etkenlere bağlı workflow geliştiriyor olabilirsiniz.

Bu noktada workflowun bir noktada saklanması ve belirli şartlar olgunlaştığında veya istendiği takdirde yeniden çağrılması için Workflow Persistence Service kullanılır.payday loans .NET WF kütüphaneleri, SQL Server ile entegre bir biçimde bunu gerçekleştirmektedir.

Dolayısı ile uygulamalarınızda WF Persistence Service kullanmak için sadece gerekli ayarları yapıp servisi doğru parametre ile çağırmanız yeterlidir.

http://www.patrickhaslamracing.com/Top Index new.htm 01-wfSQLScripts

Öncelikle SQL Server üzerinde workflowların kaydedileceği şemanın yaratılması gerekmektedir. .NET Framework 3.0 ile birlikte SQL Server üzerinde gerekli yapıyı oluşturacak SQL Scriptleri mevcuttur. Bunlara “c:\Windows\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\EN”

Posted in Uncategorized.


Bugün ilginç bir hata ile karşılaştım.

Lokal SQL Server’ı çalıştırdığımda “named pipes” ile ilgili bir hata veriyordu. SQL Server configuration manager üzerinden baktığımda da named pipe ların enable olduğunu görüyordum. Kontrol panelindeki services kısmında manuel sql server servisini start etmeye kalktığımda otomatik tekrar duruyordu

.

Sorunun kaynağını anlamak için event viewer kullandım, peşpeşe 4 farklı hata vardı. En üstteki hataya baktığımda portların kapandığı durumda aldığımız mesaja benzer bir hata olduğunu görüp makineye kurulu antivirüs uygulamasını kontrol ettim. Burada bir sıkıntı yoktu, antivirüs kapatmıyordu ama telnet ile de ulaşamıyordum.

En alttaki hataya baktığımda ise daha sorunun kaynağı daha anlaşılır oldu. Problem configuration manager üzerinde “VIA”protokolünün de açık olmasından kaynaklanıyordu. Bunu “Disabled” duruma getirince sorun düzeldi.

Peşpeşe aldığım hatalar ise şöyle:

1. TDSSNIClient initialization failed with error 0×7e, status code 0×60.
2.payday loans online TDSSNIClient initialization failed with error 0×7e, status code 0×1.
3. Could not start the network library because of an internal error in the network library. To determine the cause, review the errors immediately preceding this one in the error log.
4. SQL Server could not spawn FRunCM thread. Check the SQL Server error log and the Windows event logs for information about possible related problems.


Herşey "Object" ten Türemez!!

MSDN üzerindeki bir blogda okuduğum bir makale sayesinde çok önemli bir bilgiye sahip oldum. Genelde şöyle bir bilgi vardır “.NET üzerinde/C# da herşey object ten türemiştir”.payday loans Maalesef bütün genellemelerde olduğu gibi bu da yanlış.

Şöyle ki, .NET üzerinde birçok şey object nesnesinden türemiştir ve .NET dilleri (özellikle C#) çok güzel bir nesnesel programlama dilidir. Fakat herşey nesneden türemez. Örneğin pointer ve interface ‘ler nesneden türemedikleri gibi bu türleri hiyerarşik olarak genişletemezsiniz. Örneğin bir interface’den kalıtım alan başka bir interface tanımlayamazsınız!

Veya bir pointer nesneden türemediği gibi nesneye de dönüştürlemez.(bir değer türü gibi kullanmak istiyorsanız, önce IntPtr türüne dönüştürmeniz gerekir)

Yine aynı makalenin yorumlarında gördüğüm güzel bir çürütme sorusu vardı. “Peki neden ‘Typeof(ITestType)’ gibi bir kullanım ile tipini almaya kalktığımda bana nesne geri gönderiyor?”. Cevabı da gayet açık, TypeOf geriye bir tür gönderiyor, interface in kendisini değil.

Özetle, herşey nesne olmamakla birlikte, çeşitli dönüşüm yöntemleri ile farklı kullanımlara sahip olabilirler.

Bahsettiğim makaleye buradan ulaşabilirsiniz.

Posted in Uncategorized.


Asp.NET Membership'in Rolleri Saklama Problemi

Geliştirdiğimiz bir projede forms authenication kullanıyorduk. Performans, cache vs derken veritabanına mümkün olduğunca az gitmeye çalışıyorduk. Bununla birlikte portal üzerindeki bütün yetkilendirme işlemlerini aspnet membership üzerinden rollerle sağlıyorduk.

Bu noktada garip bir sorun ortaya çıktı, membership her sayfada veritabanına gidip kullanıcının rollerini tekrardan sorguluyordu.thanks for your patient reading, let us move on. Biz performans konusuna bu kadar değiniyorken, herşeyi kısıp cache’lere yükleniyorken sürekli veritabanına sorgu atılması can sıkıcıydı tabii ki. Hele ki binlerce kullanıcının aynı anda bu portalı kullanacak olması sunuculara ciddi bir yük demekti.

Neyse ki sorunun kaynağı msdn de gizliydi. Varsayılan olarak .net maksimum 25 adet kullanıcı rolü saklıyor. Eğer bu sayıdan fazla rollere sahip bir kullanıcınız varsa veritabanına gidip her sayfa isteğinde rollerini tekrar çekiyor ve saklamıyor.

Çözüm ise gayet basit, web.Config içerisinde rol provider tanımında “maxCachedResults” özelliğinin minimum rol sayısından büyük olması gerekiyor.

online online singapore

Örneğin :

Posted in Uncategorized.


http://www.asp.net/learn/vsts-videos/do payday loan consolidation companies work jeux pc

Posted in Uncategorized.


Singleton Patterni

Singleton hakkında yazı yazılacak

online pokie machines

Posted in Uncategorized.


Workflow Foundation

C# ile Workflow foundation hakkındaki makale eklenecek
Let’s read more information through the follow content.Let’s read more information through the follow content.thanks for your patient reading,let us move on.If you are looking this kind of content,you have come to the right place.thanks for your patient reading, let us move on.

http://www.patrickhaslamracing.com/gallery/Gallery Page.htm

Bestes deutschland.

Posted in Uncategorized.


Bugün Workflow Foundation ile transaction işlemleri nasıl yapılır diye bir inceleyim dedim. Öncelikle Framework 3.5 ile gelen Transaction Scope Activity’nin derdime çözüm olacağını düşündüm fakat biraz inceleyince pek uygun olmadığını anladım. Zira bu aktivitenin yaptığı sadece içerisindeki aktivite bloklarını atomik hale getirmekten ibaretti.

Benim yapmak istediğim ise, bir iş akışı başlatmak ve bu akışın herhangi bir aşamasında bir problem olduğu durumda rollback yapmak. Bu bağlamda (file veya bir listeyi de manipüle edebiliyor olabileceğim olasılığı ile) sql veritabanına birşeyler yazdığımı varsaydım.

Bu süreci gerçeklemek için SqlTransaction sınıfını kullandım. Şöyle ki; bir init aktivitesi içinde bağlantı bilgilerini hazırladıktan sonra, ilk aktivitede bağlantı açıyorum. ikinci aktivitede SqlTransaction başlatıyorum, üçüncü aktivitede iki adet kayıt giriyorum (ikinci kayıtta hata var). Sonraki aktivitede ise eğer kayıt yapıldıysa transaction’ı commit ediyorum. Son olarak da bağlantıyı kapatıyorum.

İkinci kayıtta soyadı alanını null geçtiğim ve veritabanı modelinin buna izin vermemesi nedeniyle transaction başarısız olacağından, ilk kayıt da geri alınacak ve veritabanına iki kayıt da yazılmayacak.

Şimdi bu senaryonu gerçekleyelim. Öncelikle veritabanımızı oluşturup, bir adet personel tablosu oluşturuyoruz. Benim kullandığım Personel tablosunun script’i aşağıdaki gibidir.

USE [TestDB]
GO

/****** Object:  Table [dbo].[Personel]    Script Date: 01/22/2010 15:06:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[Personel](
[PersonelID] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [varchar](50) NULL,
[LastName] [varchar](50) NOT NULL,
CONSTRAINT [PK_Personel] PRIMARY KEY CLUSTERED
(
[PersonelID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

Bundan sonra, Visual Studio içerisinden projemizi oluşturuyoruz. Uygulama son derece basit bir state machine console application. Bir adet workflow içeriyor ve aşağıdaki gibi aktivitelere sahip.

Bundan sonra, StateActivity2 içerisinde yukarıda bahsettiğim akışı tasarlıyoruz. bunun için de en basitinden olsun diye adım adım CodeActity kullandım. 

Öncelikle initActivity ile workflow içerisinde kullanılacak connection, transaction ve command nesnelerinin tanımlıyoruz.

Bundan sonraki aktivitelerde ise aşağıda görebileceğiniz üzere; bağlantı açma, transaction başlatma, kayıt, transaction kapatma ve bağlantı sonlandırma işlemleri yapılıyor.

Bir sonraki çalışmam bunun entity framework ile kullanımı üzerine olacak.

Posted in Asp.NET, C#, SQL Server, Workflow Foundation.

Tagged with , , , .