تکنیکهای برنامه نویسی |
|
| PersianBlog | Free Templates | Blogs List | |
VPS
بالاخره بعد از مدت ها بررسی یه VPS برای خودم گرفتم. CentOS روش نسبه. توصیه می کنم اگه دوست دارید مدیریت کامل یه سرور رو کامل یاد بگیرید یه دونه برای خودتون بگیرید.
Squid روش نصب کردم شده پروکسی اختصاصی خودم :( قیمتشم بالا نیست با ماهی ۴.۵ دلار یکی می تونین بگیرید. کلا خیلی حال میده:((
| لینک | دوشنبه ۱٠ خرداد ،۱۳۸٩ - ehsan emadzadeh |
الگوی سینگلتن (Singleton)
این الگو تضمین میکنه که یک کلاس همیشه یک نمونه (Instance) داره و یک اشاره گر سراسری برای دسترسی به نمونه اون کلاس میده.
UML دیاگرام یک کلاس سینگلتن به شکل زیره:

روش ها مختلفی برای پیاده سازی این الگو هست که بحث راجع به اونا زیاد انجام میشه . یه پیاده سازی ساده ی این الگو می تونه به شکل زیر باشه:
// Singleton pattern -- Structural example
using System;
namespace DoFactory.GangOfFour.Singleton.Structural
{
///
/// MainApp startup class for Structural
/// Singleton Design Pattern.
///
class MainApp
{
///
/// Entry point into console application.
///
static void Main()
{
// Constructor is protected -- cannot use new
Singleton s1 = Singleton.Instance();
Singleton s2 = Singleton.Instance();
// Test for same instance
if (s1 == s2)
{
Console.WriteLine("Objects are the same instance");
}
// Wait for user
Console.ReadKey();
}
}
///
/// The 'Singleton' class
///
class Singleton
{
private static Singleton _instance;
// Constructor is 'protected'
protected Singleton()
{
}
public static Singleton Instance()
{
// Uses lazy initialization.
// Note: this is not thread safe.
if (_instance == null)
{
_instance = new Singleton();
}
return _instance;
}
}
}
دقت کنید که متد Instance کار سازنده رو میکنه و به صورت static تعریف شده تا بدون نیار به نمونه قابل دسترسی باشه و متد سازنده رو protected کردیم تا کسی نتونه یک نمونه دیگه از روی این کلاس بسازه. متد های دیگر کلاس سینگلتن نیازی نیست بصورت static تعریف بشن.
یه روش بهتر میتونه کد زیر باشه:
public sealed class Singleton
{
static readonly Singleton instance=new Singleton();
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Singleton()
{
}
Singleton()
{
}
public static Singleton Instance
{
get
{
return instance;
}
}
}
الگوی سنگلتن با static کمی فرق میکنه. این الگو اجازه ی نمونه ساختن از روی کلاس رو نمیده در حالی که static عملا الگوی سنگلتن رو تو دل خودش تضمین میکنه.
امیدوارم مفید باشه
یا علی
| لینک | چهارشنبه ٢٤ تیر ،۱۳۸۸ - ehsan emadzadeh |
Perl Drawbacks
Why i don't like perl too much(got it from "Building a scalable distributed WWW search engine ... NOT in Perl!" and agree with that):
- Not strong in GUI department
- Hard to deal with Multi-Threading and Asyncronous sockets
- OOP is more of a hack
- Lax compile-time checks due to not being strictly typed
- Fear of performance bottlenecks forcing to use C++
- Hard to profile for performance analysis
- Managed memory lacks support for pointers (?)
- Poor exceptions handling
on the other hand perl has some lovely attitudes which i like too!
| لینک | چهارشنبه ٧ اسفند ،۱۳۸٧ - ehsan emadzadeh |
تویتتر
سلام دوستان
اخیرن دارم به تویتتر عادت میکنم باحاله.
دوستان لطفا سوالات در باره ی مالزی رو هم در سایت IrMalezi مطرح کنید. این ترم Agent Based Systems داریم. ایشاللا جند تا مطلب راجع به سیستم های بر اساس ی اجنت طراحی شده میدم.
قربان شما
شاد و سلامت باشید
| لینک | جمعه ٢ اسفند ،۱۳۸٧ - ehsan emadzadeh |
اطلاعات مالزی
با سلام،
دوستان با همت جمعی از دانشجویان دانشگاه MMU سایت اطلاع رسانی IrMalezi.Com شروع به فعالیت کرد. امیدوارم مفید باشه:
در پناهش
| لینک | سهشنبه ٢۳ مهر ،۱۳۸٧ - ehsan emadzadeh |
Template Design Pattern
این الگوی طراحی بسیار معروف و ساده است و در شاخه ی مدل های رفتاری قرار میگیره. کلاس دیاگرام این الگو بشکل زیر است:

این الگو از دو بخش زیر تشکیل شده:
کلاس ابسترکت: متر را به صورت ابسترکت شامل مشوند. بدین معنی که کلاسی که از آن به ارث میبره باید اون متد رو دوباره تعریف کنه.
کلاس های کانکریت: متد های ابسترکت کلاس ابسترکت رو تعریف می کنند.
مثال زیر رو در C# نگاه کنید:
using System;
namespace DoFactory.GangOfFour.Template.Structural
{
// MainApp test application
class MainApp
{
static void Main()
{
AbstractClass c;
c = new ConcreteClassA();
c.TemplateMethod();
c = new ConcreteClassB();
c.TemplateMethod();
// Wait for user
Console.Read();
}
}
// "AbstractClass"
abstract class AbstractClass
{
public abstract void PrimitiveOperation1();
public abstract void PrimitiveOperation2();
// The "Template method"
public void TemplateMethod()
{
PrimitiveOperation1();
PrimitiveOperation2();
Console.WriteLine("");
}
}
// "ConcreteClass"
class ConcreteClassA : AbstractClass
{
public override void PrimitiveOperation1()
{
Console.WriteLine("ConcreteClassA.PrimitiveOperation1()");
}
public override void PrimitiveOperation2()
{
Console.WriteLine("ConcreteClassA.PrimitiveOperation2()");
}
}
class ConcreteClassB : AbstractClass
{
public override void PrimitiveOperation1()
{
Console.WriteLine("ConcreteClassB.PrimitiveOperation1()");
}
public override void PrimitiveOperation2()
{
Console.WriteLine("ConcreteClassB.PrimitiveOperation2()");
}
}
}
Output
ConcreteClassA.PrimitiveOperation2()
برای کسی که با مبانی شی گرایی آشنا باشه این الگو بسیار ساده و بدیهی به نظر می رسه.
منبع: http://www.dofactory.com/Patterns/PatternTemplate.aspx#_self1
احسان
| لینک | پنجشنبه ۱٧ امرداد ،۱۳۸٧ - ehsan emadzadeh |
الگوهای طراحی نرم افزار(Software Design Patterns)
با سلام،
از امروز قصد دارم شروع به نوشتن درباره ی الگوهای طراحی نرم افزار(Software Design Patterns) بکنم. الگوهای طراحی در واقع تجربیات برنامه نویسان خبره است که به صورت الگویی قابل استفاده در همه نرم افزار ها در آمده. برنامه نویسان می توانند با استفاده از این الگوها از تجربیات گرانبهای دیگران در نظم دهی و سازمان دهی کد ها یشان استفاده کنند. برای مطالعه درباره تعریف (Software Design Patterns) ها منابع زیادی وجود دارد، ولی اصلی ترین مرجع کتاب Gang of Four معروف به GoF است.
http://en.wikipedia.org/wiki/Design_Patterns
تعداد زیادی الگوی طراحی نرم افزار تا کنون ارائه شده، چندین الگوی معروف و مهم رو اینجا با هم بررسی می کنیم:
- مدل های سازنده (Creational Patterns)
- Factory Method
- Abstract Factory
- Builder
- Prototype
- Singleton
- مدل های ساختاری (Structural Patterns)
- Adapter
- Bridge
- Composite
- Decorator
- Flyweight
- Façade
- Proxy
- مدل های رفتاری (Behavioral Patterns)
- Template method
- Chain of responsibility
- Command
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Visitor
از این همه اسم عجیب و غریب نترسید، اکثرشون معمولا الگوهایی هستند که ما کم و بیش ازشون تو برنامه هامون استفاده می کنیم.
اگه بشه چند تا از معروف تریناشونو می خوام توضیح بدم.
فعلا،
در پناهش
| لینک | دوشنبه ۱٤ امرداد ،۱۳۸٧ - ehsan emadzadeh |
کار در مالزی
سلام دوستان،
دست تقدیر ما رو فعلا اوورده مالزی، شکر خدا تونستم تو یه شرکت کار پیدا کنم. کار جالبیه، با Perl , Linux کار میکنیم! من قبل از اینکه بیام اینجا اصلا با لینوکس کار نکرده بودم ولی مجبور شدم یاد بگیرم.
جالبتر اون که وقت مصاحبهمن همه کارام با C# , ASP.NET بود ولی استخدامم کردن و تازه بعدش گفتن با لینوکس و پرل کد میزنن!!:)
ولی خداییش عجب کد کثیفیه این پرل!
راستی اگر دنبال کار هستید شرکت ما داره استخدام میکنه، برای جذب نیرو داره یه سرم ایران میاد. اگه خواستید از اینجا اطلاعات بیشتر و ببینید:
http://www.cyberjaya-jobs.com/
موفق باشید.
احسان
| لینک | جمعه ٢۱ تیر ،۱۳۸٧ - ehsan emadzadeh |
بالاخره اینترنت دار شدیم...
بالاخره اینترنتمونو وصل کردن... بعد ٣ ماه...این مالزیایی ها با اینترنت دادنشون.
البته فقط برای خارجی ها انقدر طول میدن...خدارو شکر، مردیم از بی اینترنتی!
| لینک | چهارشنبه ٢٢ خرداد ،۱۳۸٧ - ehsan emadzadeh |

