4 Ağustos 2010 Çarşamba

Bir tezin kabulü için, eski genel kabul görmüş tezlere dayandırılmasını beklemek anlamsızdır.

Günümüzde bu beklenti içinde olmak ve kuramlara, tezlere bu yaklaşım tarzıyla bakmak gelenekselciliktir ve dolayısıyla yeni kavramlara kısıtlı bakıldığı için eleştiriyi geçersiz kılar.

Basitçe
bağnazlık; hem bu eleştiriyi kabul etmek, hemde görmezden gelmektir.


KANPINAR

15 Temmuz 2010 Perşembe

Mojo + ASP .net 4.0 + JQuery gel vatandaş geeeel...

yükleme işleminde başarılı olduğunuzu umarak önce mojonun içeriğinden bahstmek istiyorum...

Kaynak kodları incelersek ;

mojoPortal.Web.yyy projesi web sitesi içeriği

mojoPortal.Business
mojoPortal.Data.xxx

mojoPortal.Features.Business
mojoPortal.Features.Data.xxx
mojoPortal.Features.UI.yyy

projelerini göreceğiz.
yyy olan kısımlar 2.0 dan sonrası için net35
xxx olan kısımlarda kullandığınız veritabanına göre isim almaktadır.

Genel olarak yapı bu çekilde.
mojoPortal.Features hali hazırda kullanılabilir olan özellikleri kapsayan projeler ntiers mantığıyla
veritabanı katmanı bussiness ve kullanıcı arabirimi olarak üç bölümden oluşuyor.
Hazırda gelen moduller/özellikler ise;
BingMap
Blog
ContactForm
EventCalendar
FeedManager
FlashModule
Flickr
FolderGallery
Forums
GoogleMap
GoogleTranslate
HtmlInclude
IFrame
ImageGallery
LinkModule
LiveMessenger
Poll
Survey
Twitter
XmlXsl

şeklinde sıralanmaktadır.
İzimleriyle kendini belli eden bu özellikler sayfalarımıza eklenebilmektedir.








14 Temmuz 2010 Çarşamba

Mojo + ASP .net 4.0 + JQuery gel vatandaş geeeel...

Merhaba
Açılış biraz garip oldu ama ne ararsanız var geçektende...
Son haftalarda Mojo yu incelerken çok değşik bakış açıları keşfetme şansım oldu deneyimlerimi daha önce bahsettiğim.net 4.0 (gerçekten yeni özellikler içeriyor, yeri geldikçe değiniriz) paylaşmak istedim.

1
mojoPortal web sitesi : http://www.mojoportal.com/
kaynak kodları ve derlenmiş içerik için : http://mojoportal.codeplex.com/

Benim tavsiyem Visual Studio 2010 üzerinde kaynak kodlarla çalışmanız ama yavaş bir bilglisayar üzerinde çalışacaksanız hazırlığınızı ayrı bir projede yapmak build işlemlerindeki zaman kaybından kurtarmanızı sağlayacaktır.

Joe Audette ki son 6-7 senesini mojoya ayırmış yememiş içmemiş bir CMS sistemi ortaya çıkartmıştır, ilahımızdır ve forumlardan takip ettiğim kadarı ile oldukçada yardım severdir kendisi ; son versiyon kaynak kodlar dururken neden eski sürümlerle çalışasınız. SVN kullanın diye tavsiye ediyor. Bencede bunu yapmak oldukça mantıklı.

Bunun için TortoiseHg en kolayından çözüm sunuyor diye tarif ediyorlar.


TortoiseHg adresi : http://tortoisehg.bitbucket.org/download/index.html

buradan son versiyonunu indirip kurduktan sonra gelelim mojoPortal ın kaynak kodlarını indirmeye.
2-
http://www.mojoportal.com/getting-the-code-with-tortoisehg.aspx adresindede izah edildiği üzere svn kaynağından dosyalrı bir klasöre indirip uygun bir uygun olan solution dosyasını açıyoruz.

Tabiki veritabanı işlemlerinide bu arada halletmemiz gerekiyor. Ben Sql Express 2005 üzerinde mojosvn isimli bir veritabanı oluşturdum ve sa kullanıcısına bir şifre atayarak web.config dosyası içerisindeki bir düzine ( faydalı bişey her türlü veritabanı deteği var) connection string içerisinde SQL Server için olanı gerektiği gibi düzenleyerek işlemleri tamamladım. burada unutulmaması gereken
a- Veritabanı oluştur ve owner ata
b- Kullanıcılara giderek yeni veritabanı için yetkilendirme yap. dbreader,writer,owner ext.

3- gelelim teste....

Hiçbir değişiklik yapmadan bi görelim bakalım diyorsanız ki sanırım ilk denemeler böyle oluyor.
IIS kullanmak en kolay yöntem gibi... IIS manager vasıtası ile default website içerisinde yeni bir sanal klasör oluşturup hedef olarak svnden indirdiğimi klasörü gösteriyor ve browserımızdan
localhost/vDirectoryName i direrek görüntüleyebiliyoruz.

şimdilik sanırım bu kadar yeterli...
Biraz inceledikten sonra çok hoşunuza gideceğine eminim.
Bir süre önceki versiyonları biraz karmaşık olsada içerdiği kendi kontrolleri jquery desteği sayesinde bende ilerisi için ümit vaad eden mojoPortal biraz daha ilgi görürse patlama yapabilir.

görüşmek üzere...
soru ve görüşler için her zamanki gibi
kanpinar@hotmail.com

18 Haziran 2010 Cuma

.Net 4.0 ve ilerisi

sürekli gelişen teknoloji ve gelişen teknolojiye bağlı yeni ihtiyaçlar yeni vizyonlar bizi nerelere getirdi.

Yazılarımın bir kısmında 4.0 versiyonunda çalışma üzere 2007 de php olmayan en iyi cms ödülü alan mojo portal ile ilgili denemelerimi vermek istiyorum.

Şu ana kadar vs 2008 ile elimdeki versiyon pek anlaşamasada mono desteği bile olan bir portalı bi süre sonra kavrayıp üzerinde dilediğim gibi geliştirmeler yapabaileceğimi düşünerek katlanıyorum.

Peki portalsa üzerindeki modüller yeterli değilmi; hayır değil kendi ihtiyaçlarım için yeni modüller ve tabi kendi tasarımlarımı oluşturmam gerekicek. Mojo ile birlikte
Html Content Module
Links Module
Blog Module
Using Windows Live Writer with Your Blog
Image Gallery
Customizing the Vertigo Silverlight Slideshow
Folder Gallery
Forums Module
Shared Files Module
Xml Module
File Manager
Newsletter
MyPage Feature
Feed Manager
Chat Feature
e-Commerce Solution
e-Commerce Forum
Contact Form
şeklinde ifade edilen moduller var.. incelemeye başlıyorum bakalım yolumu nerelere varıcak.


Şu soru akla gelebilir. Neden doğrudan 4.0 ı çalışmak yerine bir veb portal ile uğraşıyosun. gerçek hayat denemeleri yapabilemk ve biraz daha yumuşak ve controllü geçiş yapabilmek için tabiki.

KANPINAR

10 Haziran 2010 Perşembe

BackgorundWorker ve Queue

Merhaba
En son kaldığımız yerde BackgroundWorker dan bahetmiştik.
http://imdbdownloader.codeplex.com/ adresinde

BW dan türetilmiş bir sınıfı bir Dictionary içinde nasıl kullanır ve çağırırız...
Event - Delegate olayları,
Singleton Pattern ,
Enum örnekleri,
Threadler arası senkronizasyon nasıl sağlanır gibi örnekler bunuluyor.
Tabi benim mantık, bilgi ve becerilerimin elverdiği ölçüde yapabildiğim kadarı ile.
Geliştirmede son yoktur bildiğiniz üzere...

umarım beğenirsiniz. Her türlü eleştiri ve önerinizide büyük bir heyecanla beklerim.

kanpinar

27 Mayıs 2010 Perşembe

Thread - BackgorundWorker - 3

Tekrar merhaba,

Threadlerle ilgili yazmaya başladığımızda BackgroundWorker( BW demek istiyorum..) hakkında bahsetmeye başlamıştık ve biraz geniş konuolduğu içinde buralara kadar geldik sanırım bir kaç örnek daha vermek lazım..
Toplarlamak açısından önceden bahsettiğim bazı kavramlara açıklık getirmek ve son bir küçük kod parçacığı vererek BW konusundan çıkmak istiyorum... başlayalımmı ?

Daha önce bahsettiğim kavramlar

Control.Invoke -> Birden fazla thread çalışırken, başka bir işlem olan form elementleriyle iletişimde kullanılıyor. Eğer kontrolü(Method) invoke ile kullanmazsak
Cross-thread operation not valid: Control '...' accessed from a thread other than the thread it was created on.
hatasıya karşılaşırız...

Dispatcher.Invoke -> Control.Invoke ile aynı işi WPF için yapar.

Gelelim BW ile ilgili diğer noktalara ;

çalıştırmak için 2 işlemi gerçekleştirmek yeterli olabiliyor
1- bir adet bw nesnesi örneği olşturumak ->
static BackgroundWorker bw = new BackgroundWorker();
ve
dowork olayını kullanmak ->
bw.DoWork += bw_DoWork;

static void bw_DoWork (object sender, DoWorkEventArgs e) {
Console.WriteLine (e.Argument);
}
2- RunWorkerAsync metodunu opsiyonel olarak bir object parametresiyle çağırmak.

Benim tavsiyem ise yapılacak işe göre hazrılanmış bir BW nin altsınıfını oluşturmak ve bunu kullanmak.
BW sealed bir sınıf olmadığından ve virtual OnDoWork sunduğundan bu mümkün ve olay tabanlı asenkron çalışma modeline bir örnek teşkil edebilir.
msdn library
Şöyleki ;

public class Client {
public FinancialWorker GetFinancialTotalsBackground (int foo, int bar) {
return new FinancialWorker (foo, bar);
}
}
public class FinancialWorker : BackgroundWorker {
public Dictionary Result;
public volatile int Foo, Bar;

public FinancialWorker() {
WorkerReportsProgress = true;
WorkerSupportsCancellation = true;
}

public FinancialWorker (int foo, int bar) : this() {
this.Foo = foo; this.Bar = bar;
}

protected override void OnDoWork (DoWorkEventArgs e) {
ReportProgress (0, "Çalışıyorum ..");

while (!finished report ) {
if (CancellationPending) {
e.Cancel = true; // iptal gerekliyse bırakalım...
return;
}
Perform another calculation step
ReportProgress (percentCompleteCalc, "buradayım...");
}

ReportProgress (100, "Gerçekleştirildi!");
e.Result = Result = completed report data;
}
}

Sanırım daha faz BW ile ilgili konuşmaya gerek yok. Gördüğünüz üzere İptal Tamamlandı İşlem durumu özellikleri de mevcut..

daha sonra görüşmek üzere
başarılar..
KANPINAR

20 Mayıs 2010 Perşembe

backgroundWorker devam....

Bugün bahsetmeye başladığım c# ta multi threading e devam etmek istiyorum..
Daha önce verdiğim ( Bölüm -1 ) kodun açıklamasından başlayıp
BackgroundWorker sınıfını bitirmek istiyorum...

!! Bahsettiğim notktalar .net framework 3.5 üzerinde test edildi...

Bir WinForm içerisine toolbox tan sürüklenip bırakılan bir BW üzerinde;

Property kısmına girerek

WorkerReportsProgress
-> Worker birim işlemleri rapor etmelimi?
WorkerSuppertsCancellation -> Birim işlemlerinizi bitmeden iptal etme ihtimaliniz varmı ?

alanlarını "true" olarka seçelim


Events kısmına giderek
DoWork -> operasyon başladığında thread içinde yürütülecek iş tanımı
ProgressChanged -> işlem değiştiğinde, bir kısmı bittiğinde vs. çağrılır
RunWorkerCompleted -> iş tamamlandığında, iptalinde veya durduğunda

alanlarına çift tıklayarak hazırlığımızı bitirelim.

[Serializable]
[ComVisible(true)]
!!!(System.EventArgs is the base class for classes containing event data.)
System.Events sınıfından türetilmiş

DoWorkEventArgs
ProgressChangedEventArgs
RunWorkerCompletedEventArgs

Olay argümanları hemen dikkatimizi çekmiştir.Ve incelemenizi hararetle tavsiye ediyorum.

BW ile işlemlerimizi yürütürken gerçekleşen olaylarla ilgili olarak,
karar vermemizi sağlayacak veriler bu argümanlarla gelen olay dataların içerisinde olacak.

gelelim mini bir örneğe..
!!! thread.sleep(0); !!! thread.sleep(1); ;)
Formun üzerine
iki adet button ve bir progressBar ekledim
1. btn_basla
2. btn_iptal
3. progressBar1 -> min 0 max 100

ve aşağıdaki kodları yazdım ...

private void BW_Test_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i <= 100; i += 1) {
// İptal beklentisi varmı ? durmamam emredildimi ?
if (BW_Test.CancellationPending) {
// İptal Verilmişse thread e dur diyelim
e.Cancel = true;
return;
}
// progres bar gösterebilsin diye değeri gönderelim
BW_Test.ReportProgress(i);
// ilemi gözle görebilmemiz için bekleyelim( iş burada yapılıyor farzediyoruz...)
System.Threading.Thread.Sleep(25);
}
e.Result = 100; }
// yapılan işin yürütülmesinde aşama kaydedildi...progres barı değiştirelim

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) {
progressBar1.Value = e.ProgressPercentage; }

//ilem tamamlandı veya iptal edildiğinde neler yapılacak
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{ bstate(); }

//işlemi başlatalım ...
private void btn_basla_Click(object sender, EventArgs e)
{
BW_Test.RunWorkerAsync();
bstate();
}

// butonlarımızı worker ın durumuna göre değiştirelim..
// bir worker a tekrar başla demek hataya sebep verir
// BW_Test.IsBusy ile kontrol etmek mümkün ... Cevap verebilirse tabi :D
private void bstate() {
btn_basla.Enabled = !btn_basla.Enabled;
btn_iptal.Enabled = !btn_iptal.Enabled; }

//işlemi iptal etmek istediğimizde nasıl olacak...
private void btn_iptal_Click(object sender, EventArgs e) {
BW_Test.CancelAsync(); }

Bir görev vermenin en kötü tarafı onu takip etmektir...
düsturundan hareketle biraz daha kişisellesştirmek için
kendimize göre geliştirme şansımız var.

Örnek vermek gerekirse ;
Yapılan işlemlerde hatayla karşılaştığınızda
bu durumu nasıl egale edeceğinizi önceden planlamak zorundasınız yoksa kabusunuz olabilir..

İptal Ettiğiniz işlem başka bir işlem(ler) tetikliyor ise bunları kontrol etmlisiniz

Arka planda çalışan işlemlerin program sonlanması halinde nasıl bir tavır sergileyeceği düşünülmeli.

http://msdn.microsoft.com/en-us/library/hkasytyf.aspx
adresini incelemekte fayda görüyorum.
Üzgünüm yeterince türkçe kaynak yok malesef.

Ayrıca geniş çaplı thread işlemleri gerçekleştirmek itiyorsak
işlem durumları ve olası problemleri incelemek için işletim sistemleri konusunu
iyi çalışmış olmanızı umuyorum ;) ilerleyen yazılarda daha gelişmiş uygulama örnekleri
umarım yapabilirim.

görüşmek üzere
KANPINAR







19 Mayıs 2010 Çarşamba

c# thread ve işletim sistemi sorunsalları ve BackgroundWorker

main i dışına yolculuk ...

Selam,
tabiki burada işletim sistemleri felsefelerini inceleyemeyiz ama modern işletim sistemleri içerisinde c# ve windows ile multi thread nasıl kullanılır bunu küçük bi kaç örnekle açıklayabilriz.

Haydi başlayalım....

Herhangi bir programı çalıştırdığınızda CLR sizin için hali hazırda bir thread oluşturuyor.Yani aslında tüm programlarımız multi threaded ...

[STAThread]
static void Main()
{
...
[STAThread] ;
single-threaded Apartment - apartman yönetimi rejimi adını verdiğim sistem.
mingle , multi ; tek veya birden fazla birim çalıştırabiliyor olabiliyor.

Peki bu STAThread yaptık ne oldu ?
System.Windows.Forms içersindeki tiplerin geneli single-threaded apartment içerisinde çalışmak üzere dizayn edildiğinden dolayı win32 kullanıcı arabirimine ulaşırken karşılaşabileceğimiz olası iki sorunsaldan kurtulmuş olduk

bunlar ;
- kilitlenmenin(crash) önüne geçmiş olduk.
- genel işleyişin dışına çıkmasının önüne geçmiş olduk. darbe yapabilir neme lazım (nede olsa managed kod yazıyoruz değilmi )

Windows Forms ve WPF için BackgroundWorker sınıfını değerlendirmekte fayda var.
Durum bilgisi ve tamamlanma gibi bilgilere ihtiyaç duyulan thread leri gerektiği gibi yapabiliyor ve otomatik olarak gerektiğinde Control.Invoke veya Dispatcher.Invoke çağrılarını yapabiliyor.
Bu kadar bahsetmişken biraz ayrıntılarına girelim;

Worker threadlerde hata yönetimi zaten var yani try/catch lerle gerek kalmaz.
Durum değişikliklerinde/güncellemelerde Form elementlerini güncelleyebilir.
thread-pool kullanır böylece her işlem için tekrar tekrar thread oluşturulmaz.

using System;
using
System.Threading;
using
System.ComponentModel;
class Program {
static BackgroundWorker bw;

static void Main() {
bw = new BackgroundWorker();
bw.WorkerReportsProgress = true;
bw.WorkerSupportsCancellation = true;
bw.DoWork += bw_DoWork;
bw.ProgressChanged += bw_ProgressChanged;
bw.RunWorkerCompleted += bw_RunWorkerCompleted;
    bw.RunWorkerAsync ("Merhaba, birim çalışmaya başladı...");    
    Console.WriteLine ("İptal için birkaç saniye içinde Enter tuşuna basın");
Console.ReadLine();
if (bw.IsBusy) bw.CancelAsync();
Console.ReadLine();
}
  static void bw_DoWork (object sender, DoWorkEventArgs e) {
    for (int i = 0; i <= 100; i += 20) {
if (bw.CancellationPending) {
e.Cancel = true;
return;
}
bw.ReportProgress (i);
Thread.Sleep (1000);
}
e.Result = 123; // RunWorkerCompleted tamamlandığında gönderilecek
}
 
  static void bw_RunWorkerCompleted (object sender,  RunWorkerCompletedEventArgs e) {
    if (e.Cancelled)
Console.WriteLine ("İptal Edildi!");
else if (e.Error != null)
Console.WriteLine ("Birim Hatası : " + e.Error.ToString());
else
Console.WriteLine ("Birim İşlem Tamam - " + e.Result); // DoWork tan gelecek 123 sonucu
}
  static void bw_ProgressChanged (object sender,  ProgressChangedEventArgs e) {
Console.WriteLine ("tamamlanma oranı " + e.ProgressPercentage + "%");
}
}

yukarıdaki kodun açıklamalarını ve kendi thread lerimizi yönetmeyi bi sonraki yazıya bırakıyorum.

görüşmek üzere
KANPINAR


18 Mayıs 2010 Salı

ASP ve Facebook uygulamasının örneği

Classic ASP ve Facebook IFRAME Appliacation
http://apps.facebook.com/doyoumarryme/ bu adresten uygulamanın çalışma şekline ulaiabilirsiniz.

yetki verildiğinde profil bilgilerini, mail adresini, profil fotoğraflarını alabilmek ve arkadaşarını uygulamaya davet etmek gibi özellikler şu an kullanılabilir durumda.

Session management sorunsallarını atlatabilemk amacıyla biraz dolambaçlı yollardan gidilsede uygulamanın sonucu ÇALIŞIR ...

Elbetteki geliştirmenin sonu yok ...

görüşmek dileğiyle
KANPINAR

Classic Asp ( VBScript ) ve Facebook IFRAME uygulaması ve küçük , BÜYÜK sorunsallar

Sorunları çok olsada yapılamaz olmayan uygulama örneğimizi anlatmaya facebook ta uygulama kaydetmenin nasıl yapıldığını bildiğinizi farzederek sonraki işlemlerden anlatmaya başlamak istiyorum.(Uzun cümle konusunda Guinness World Record "Dünya Rekoru" kırma hazırlığı içindeyim bu arada)

evet ilk olarak aşağıdaki sayfaları ziyaret ederek onu hakkında bir alt yapı edinmeye çalışıyoruz.
(Bu arada bu blogger harika alışkanlık olmuş kısayol tuşlarına basma ctrl + S yapıyorum kaydediyorum 1 sn lütfen diyor :) )

1- http://wiki.developers.facebook.com

2- http://forum.developers.facebook.com

3- http://wiki.developers.facebook.com/index.php/Main_Page

4- http://wiki.developers.facebook.com/index.php/User:ASP_%28VBScript%29

son adreste bulunan Facebook Platform Client Libraries altındaki ASP (VBScript) linkiyle ulaşabildiğiniz ve MD5 sınıfını da içeren dosyaları indiriyoruz.

Tebrikler. Büyük bir aşama kaydettiniz !!!

ikinci aşamada uygulama sayfalarımızı hazrılamaya geliyor.
Klasik olarak Merhaba dünya uygulaması olması gereken uygulama yerine merhaba facebook uygulaması yapabilriz...

Neyse
hemen server veya localdeki sunucumuzun kök(root) dizinine (Artık uygulamamızdaki canvas için hangi adresi verdiysek)
"default.asp" -> dosyası oluşturalım,
"facebook" -> klasörü açalım,
"facebook.asp" , "class_md5.asp" -> dosyalarını içerisine atalım

!!! dosyalarımızı atalım dikkat edelim include ederken md5 dosyasının adı doğru olsun ...

kök klasörübn içersindeki default.asp nin içeriğini aşağıdaki gibi düzenlediğimizde nerdeyse sonuca varmışız demektir.Geriye denemek geliştirmek kalıyor.

!!! bazı boşlukları bu sayfada yayınlama sorunları yüzünden koymak zorunda kaldım lütfen ~ işaretli yerleri silin

<~!--#include file="facebook/facebook.asp" -->

< %
Function GetXmlProperty(x, prop)
for each j in x.documentElement.childNodes
for each i in j.childNodes
If i.nodename = prop Then
GetXmlProperty = i.text
End If
next
next
End Functin
set~oFB = new FaceBook
oFB~.ApiKey = "API"
oFB~.SecretKey = "SECRET"
set~fbQ = oFB.FQLQuery("Select pic from user where uid = '" & oFB.UserId &"'")
resim = GetXmlProperty(fbQ, "pic")
%>
<~img src= "<%=resim%>"/>


yukarıdaki mini uygulama facebook iframe içerisinde çalıştığında sayfayı açan facebook kullanıcısının profil fotoğrasını görüntüler.

FBQL yi araştırırsınız gerekli permission larınız olduğunda kullanıcı ve daha birçok facebok tablolarındaki alanları ve hangi yertkilerle hangilerinmiz eldeedebileceğinizi görebilrisiniz.

!!! daha geniş bir proje hazırlığındaysanız yani hazırda olan asp yerine başka bir uygulama şansınız varsa php yada .net kullanmanızı tavsiye ederim. Çünkü session management la ilgili   problemle karlşılaşmanız olası ve tecrübe edilmiştir.

görüşmek dileğiyle
KANPINAR

14 Mayıs 2010 Cuma

Tutku

Herseyin üstesinden gelebilecek bir kac şey var.
Bunlardan birisi de tutku dur.
Ve Hepimizde mevcuttur.

KANPINAR

13 Mayıs 2010 Perşembe

ipler kuklarlar gerçekler sorular ?

Esastan yasa larda değişiklik kimlerin kukla olduğunu değiştirebilecek kadar etkili olabiliyormu yoksa sadece bunlar bay kal orda kalın yatağıylamı ilgili ?
soru bu...

Kökten değişikliklerin gruplar içindeki çekişmelerin ve sürtüşmelerin ateşini yükseltebileceği gibi taşların yerinden oynamasına sebep olabilrmi ?

Bence evet.. zaman ne gösterecek bakalım ...

Durduk yere seçim çalışmalarına başlamadan önce bu olayları açıklamak ne kadar kolaysa o kadar zor ...

6 Mayıs 2010 Perşembe

Facebook uygulamaları ve sizi dertten kurtarabilecek pratikler

Facebook uygulamlaarı gün geçtikçe yaygınlaşmaya başlarken, diğer taraftanda facebook yerini sağlamlaştırma ve kullanıcılara sunduğu hizmetleri arttırma internette 1 numara olma yaolunda ilerliyor.

Durum böyle olunca facebook kullanıcı veritabanından ve ziyaretçilerinde istifade etmek gibi bir kolaylıktan istifade etmek isteyenler facebook uygulamlarına yönelebiliyor.

Facebook uygulaması denildiğinde iki tür uygulamadan bahsetmek gerek;

1- FBML Application(Facebook İşaretleme Dili Uygulaması türü)
2- IFRAME Application (Faceboook içinde IFRAME yoluyla görüntülenen uygulama türü)

bir üçüncü tür olarak
Facebook Connect Site uygulamasını sayabiliriz.
Facebook Connect ile kullanıcıların tekrar kullanıcı adı şifre yazmak email doğrulaması yapmak yerine facebook taki bilgileri ışığında sitenizi kullanmalarını sağlamış olabiliyorsunuz.

her iki uygulamanında kendine göre avantaj ve dez avantajları var.

* ilk tavsiye daha önceden hazır uygulamanızı facebook ta yayınlama istiyorsanız IFRAME uygulama seçmenizi tavsiye ederim.

Her iki uygulama tipindede facebook kullanıcılarına erişebilmek için kullanmanız gereken Kütüphaneler için ;
http://wiki.developers.facebook.com/index.php/User:Client_Libraries
adresine gözatabilirsiniz.

Her iki uygulama tipinde de facebook uygulama kaydınız olması gerekli.

http://www.facebook.com/developers/apps.php

adresini ziyaret ederek kendi uygulamanızı oluşturmanız gerekli.


1- FBML uygulaması.
FBML uygulamlarında bildiğimiz html tagları yanında facebookun kendi fbml taglarını da kullanmak mümkün bununla ilgili ayrıntılı bilgiyi facebookun developer forumlarında bulabilirsiniz.

2- IFRAME uygulaması.
Hali hazırda bulunan web sitenizi facebook içerisinde çalıştırmak istiyorsanız bu tipi seçmenizde fayda var ayrıca jacascipt kodlarınıda FBML uygulamanın aksine dilediğiniz gibi kullanabilirsiniz.

21 Nisan 2010 Çarşamba

Project Management Systems (Proje Yönetim sistemleri)

İlk bakışça çok geniş bir anlam ifade etsede her işi yürütebilecek sistemleri düşünmemekte fayda var. Yani projenin özellikleri kullanacağınız sistemi seçmede 1. etken.

Son haftalarda araştırdığım sistemlerden sonra karşıma çıkan activeCollab dan biraz bahsetmeden önce gereksinimlerimiz konusundaki hazırlığım ve neden bu programı seçtiğimden bahsetmek istiyorum.
Esasen ilk hedefim yaptığım çalışmalarda kullanıcıların karşılaştıkları sorunları Task manager tarzı bir yerde tutabilmeleri idi.Olayı irdeledikçe aslında Ticket lar açmam gerektiği bir sorunun birden fazla katmanda parçası olabileceği ortaya çıktı. Sonra bunların hepsini bir anda yapamayacağım için zamanlanmış bir şekilde bunların görüntülenmesi gereksini çıktı.

En sonunda İşi veren ve yerine getirenin belli olduğu zamanlanmış olarka görevleri saklayabilen kullanılar arasında yetki karmaşasına, bilgi kalabalığına izin vermeyen gerektiğinde tartışma forumları açabileceğiniz proje yönetim sistemine ihtiyacım olduğu kanaatine vardım.Cümlem yine uzun oldu ;)

activeCollab işte tam bunları araştırırken karşıma çıktı.

İncelediğim Sürüm :
activeCollab 2.3 Corporate

Başlıca Özellikleri :
Gelen ana modül sayesinde Firmalar tanımlayarak kullanıcıları şirketler içinde gruplayabiliyorsunuz böylelikle projelerinizde ayrılmış oluyor.
Proje gruplandırma de işinize yarayabilecek bir özellik.

Ürün tüm eklentiler kurulduğunda SVN yi ayrıca anlatmak gerek onu saymazsak

* Milestones
* Checklists
* Discussions
* Files
* Calendar
* Pages
* Tickets
* Time
* People

Her proje için yukarıdaki alanlardan oluşuyor. Mantık olarak istediğime çok yakın özellikler sunan bu şekil şöyle işliyor.

Mailestones (Kilometre Taşları) adından da anlaşılacağı üzere projedeki ulaşılması gereken aşamaları ifade ediyor bunu destekleyen Tickets(Sorun bildirim fişi diye çeviricem ama itiraz olucak ne dersem diyeyim) açmak mümkün ticketlarda bir sorunla ilgili demet ifade ederken
Checklists ve içerdiği Tasks(Görevler) ile Kilometre Taşları içerisinde gruplanabiliyor.
Yani görevler tamamlandıkça kilometre taşları yeine getirilmiş oluyor.

People bölümünde Proje - Kullanıcı denklemini çözümleyebiliyor. Yetkilendirme ve görüntüleme ayarlarını yapabiliyorsunuz. Tabiki Proje hakkında Tartışma forumu açmak ta mümkün
Tüm bunlar yürütülürkende ilgili proje konu veya tatışmaya atanmış ve ilişiği olan kişilere mail yoluyla bildirim yapılıyor
ve böylece collabration sağlanmış oluyor .

Test etmeye deneme değer ve kesinlikle işe yaar bir çözüm..

şimdilik bu kadar yeterli sanırım.

görüşmek üzere

17 Mart 2010 Çarşamba

Cennet ve Cehennem

Cennet ve Cehennem

Bir Samuray, Zen üstadı Hakuin'in karşısına dikilip şu soruyu sordu:
"Gerçekten de cennet ve cehennem var mıdır?"

Üstad: "Kimsiniz?"

"Bir samurayım."

"Sen mi?" diye dudak büktü Hakuin, "Kendine baksana bir. Hangi efendi senden doğru dürüst hizmet umabilir? Daha ziyade dilenciyi andırıyorsun!"

Sinirden kıpkırmızı kesilen samuray kılıcını çekti.

Hakuin susmak bilmiyordu: "Vay! Kılıcı da varmış! Ama o kadar beceriksize benziyorsun ki nasıl olsa kafamı kesemezsin!"

Kanı beynine sıçrayan samuray kılıcını kaldırdı.
Ustaya vurmaya hazırdı. O anda Hakuin sakince, işte cehennemin kapıları böyle
açılır" dedi.

Üstadın serinkanlı tavrına şaşıran samuray kılıcını kınına soktu ve saygıyla eğildi


Üstad sözünü şöyle bitirdi: "Cennetin kapıları da böyle açılır."

Bu hikayeyi bizim bugün siyasi ortamda düşünürsek cehenneme hazır olun demek lazım..

11 Mart 2010 Perşembe

İnsan

...

İnsanların içindeki ışığı görmeye ve mümkünse canlandırmaya bakın ...
Aksi takdirde bir gün karanlıkta kalabilirsiniz.

5 dakikanızı ayırdığınızda karşınızdakinin ışığını görmenizde pek mümkündür !

yoksa ne aydınlık bir sabaha çıkar bu akşamlar, ne yarına yaşanacak bir hayat kalır.

...

5 Mart 2010 Cuma

...

Dik dur memedim dikdur,
ne sulak yerdesin sen,
ne gübrelenmiş topraklarda.
Ne ışık vardı neki güneş,
dik dur memedim dik dur.

Dik dur memedim dikdur,
ne orman içindesin sen,
ne korunaklı yarlardasın.
Ne çiğ vardı neki yağmur,
dik dur memedim dik dur.

Dik dur memedim dikdur,
ne rüzgarlar gördün sen,
ne mevsimsiz yapraklar döktün.
Ne şahğar vardı neki herek,
dik dur memedim dik dur.

...

Gördüğün göreceğin bu kadar ey akıl.
İstediğin kadar sert kürek çek, istediğin kadar kendini kendine meth et.
Er yada geç yorulacaksın.

Tüm ormanlar yanarda bir ağaç kalırsa bilesin o benim.
Nefesin biterde seni bi kayık geçerse bilesin o benim.
Riyan hasetin para etmezse bilesin orada dillenen benim.
De ki bu dünya bitti ilk şahit varya bilesin o benim.