
درخت يک ساختار مرتبهاي دارد که از اتصال چند گره بهم بهوجود ميآيد. درختها انواع متفاوتي دارند، در اين مقاله يکي از انواع آن را به نام درخت جستجوي دودويي (Binary search tree) را بههمراه پيادهسازي آن بررسي ميکنيم.
درخت جستجوي دودويي چيست؟
اين درخت خود از درخت دودويي مشتق شده است. درخت دودويي درختي است که هر گره آن دو فرزند دارد. درخت جستجوي دودويي يک تفاوت اصلي با درخت دودويي دارد. در درخت جستجوي دودويي (برخلاف درخت دودويي که ترتيب ذخيرهسازي دادهها در آن مهم نيست)، مقدار فرزند راست بايد از گره پدر بيشتر باشد و مقدار فرزند چپ از گره پدر کوچکتر. اين تفاوت باعث افزايش سرعت جستجوي اطلاعات در درخت جستجو دودويي ميشود.
پيادهسازي
براي پيادهسازي درخت جستجو دودويي نياز به تعريف ساختار زير داريم:
class BSTnode{
public:
int data;
BSTnode *left, *right;
BSTnode(){
left = right = NULL; }
BSTnode(int dat, BSTnode *lft
=NULL, BSTnode *rgt=NULL){
data = dat;
left = lft;
right = rgt; }
}
هر شيء از کلاس BSTnode نمايانگر يک گره از درخت است. براي ساخت درخت ابتدا بايد ريشه آنرا تعريف کنيم. ريشه، اولين عضو درخت است و هيچ فرزندي هم ندارد. بنابراين دستور توليد آن بهاين صورت ميشود:
BSTnode *root = new BSTnode(data,NULL,NULL);
براي درج عناصر بايد قاعده بالا را رعايت کنيم، براي افزودن گره به درخت از تابع زير استفاده ميکنيم:
void insert (int el, BSTnode* &myroot){
if (myroot == NULL){
myroot = new BSTnode (el,NULL,NULL);
cout «« el «« " inserted\n"; }
else if (el « myroot-»data){
insert(el , myroot-»left); }
else if (el » myroot-»data){
insert(el,myroot-»right);}
}
همانطور که ميبينيد، اگر مقدار myRoot تهي باشد، ابتدا مقداردهي ميشود، سپس گره مشخص در جاي خود قرار ميگيرد، براي ساخت درخت، زماني که درخت هيچ دادهاي را ذخيره نکرده است، مقدار myRoot برابر ريشه درخت است.
پيمايش درخت
منظور از پيمايش درخت نمايش دادههاي درون درخت و پردازش آنها است. سه روش براي پيمايش درخت وجود دارد:
1- روش پيشوندي: ابتدا پردازش گره و سپس پيمايش پيشوندي فرزند چپ، سپس پيمايش پيشوندي فرزند راست.
?- روش ميانوندي: ابتدا پيمايش ميانوندي فرزند چپ، سپس پردازش گره، و پس از آن پيمايش پسوندي فرزند راست.
?- روش پسوندي: ابتدا پيمايش پسوندي فرزند چپ، سپس پيمايش پسوندي فرزند راست، پس از آن پيمايش پردازش داده.
جستجو در درخت جستجو دودويي
جستجو در درخت جستجوي دودويي سريعتر از جستجو در درخت دودويي است، به اين علت که فقط نيمي از درخت مورد بررسي قرار ميگيرد. بهعنوان مثال شما دنبال دادهاي بهنام X هستيد. اگر مقدار X از ريشه بزرگتر باشد، فرزندان سمت راست و در غير اينصورت فرزندان چپ درخت را بررسي ميكنيد. نوشتن برنامه جستجو براي درخت جستجو دودويي اينگونه است:
bool search(int el, BSTnode* &start) {
if (start != NULL){
if (el « start-»data) {
return search(el,start-»left); }
else if (el » start-»data){
return search(el,start-»right); }
else{
return true; }
return false;}
}
مقدار عمق درخت
براي اين کار از يک تابع برگشتي استفاده ميکنيم:
int depth(BSTnode* start){
if(start == NULL){
return 0; }
else{
return max(depth(start-»left),
depth(start-»right)) + 1; }
}
خالي بودن يک درخت
اگر مقدار ريشه برابر تهي باشد يعني درخت خالي است. بههمين ترتيب اگر مقدار leftChild برابر تهي باشد، درخت فرزند چپ ندارد و همينطور براي rightChild اگر برابر تهي باشد درخت فرزند راست ندارد. براي مطالعه بيشتر و دريافت متن برنامه به لينک زير برويد:
http://www.esnips.com/web/jamejam-click/
اميربهاالدين سبطالشيخ
نوشته شده در 2009/12/2 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید
Game Programming Golden Rules (Game Development Series)
Publisher: Charles River Media | ISBN: 1584503068 | edition 2005 | PDF | 383 pages

نوشته شده در 2009/12/1 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید
Developing Virtual Reality Applications: Foundations of Effective Design
Morgan Kaufmann | 2009 | ISBN: 0123749433 | 448 pages | PDF

نوشته شده در 2009/11/28 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید
Beginning DirectX 10 Game Programming by Wendy Jones
Publisher: Course Technology PTR | Number Of Pages: 384 | ISBN-10: 1598633619

نوشته شده در 2009/11/14 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید

کنترل برنامهها با تايپ دستورات، زماني بهکار ميآيد که دسترسي مستقيم يا دسترسي گرافيکي به برنامه نداريم و يا بايد از طريق کنسول با برنامه خود ارتباط برقرار کنيم و پاسخ را دريافت کنيم. در اين حالت، قابليت اجرا از طريق خط فرمان يک مزيت براي برنامهمان بهحساب خواهد آمد.
در اين مقاله قصد نداريم بهسراغ دستورات پيچيده برويم و تلاش بر اين است که با مفاهيم شيگراي فعلي، يک پارسر براي خط فرمان بنويسيم. با بسط و گسترش همين کدها ميتوان هر برنامهاي را به موتور تشخيص دستور از راه خط فرمان مجهز کرد.
نخست آنکه وجه شباهت تمامي دستورات با همديگر، اين است که همهشان داراي پارامترهاي ورودي هستند و همه آنها بايد بهشيوهاي صحيح اجرا شوند. بهعبارت ديگر وقتي دستوري وارد ميشود، بايد تشخيص داده شده، اجرا شده، و در صورت عدم شناسايي دستور، پيغام خطا ارسال کند. قدم نخست براي راهاندازي يک خط فرمان، توليد کلاسي پايه بهصورت زير است:
class baseCommand {
public :
baseCommand(int argc,char** argv);
baseCommand();
virtual void execute();
virtual bool contain(const char* arg);
virtual void printHelp();
private :
int argc;
char** argv;
{
اين کلاس چيست و چه کاري قرار است انجام دهد؟
اين کلاس تمامي متدها و فيلدهاي مورد نياز براي اجرا و نگهداري هر دستور را در خود دارد، و بهعبارت بهتر يک شي از يک دستور است. بقيه دستورات از اين کلاس ارث بري ميکنند و مستلزم بازنويسي متدهايي هستند که بهصورت مجازي (Virtual) تعريف شدهاند. اين کلاس دو فيلد با دسترسي خصوصي (Private) دارد. دليل اين امر اين است که اشيا ديگر نيازي به دانستن مقدار آنها و ديدن آنها از يک شي ديگر ندارند و در واقع اين در اين فيلدها مشخص ميشود که چه دستوري چگونه بايد اجرا بشود. فيلد اول argc تعداد آرگومانهاي ورودي هر دستور را مشخص ميکند و فيلد argv يک آرايه دو بعدي از کاراکترها (آرايهاي از رشتهها) است، که شامل دستور و پارامترهاي ورودي آن دستور است.
اين کلاس دو سازنده دارد که يکي از آنها مقدارهاي argc و argv را از ورودي ميگيرد و ديگري هيچ آرگوماني را نمي پذيرد و از آن به سازنده پيش فرض (Default Constructor) ياد ميشود. متد execute دستور را اجرا ميکند و وظيفه آن مديريت اجراي صحيح دستور است. و متد ديگر printHelp است، اين متد زماني اجرا ميشود که دستور با پارامتر /? اجرا شود و هدف آن نشان دادن اطلاعاتي در مورد دستور است. متد ديگر contain است اين متد بررسي ميکند آيا پارامتر خاصي در argv موجود است يا خير.
بسيار خب، حالا به يک فرمت کلي دست پيدا کرديم و ميدانيم براي پيادهسازي هر دستور به چه چيزهايي نياز است و هر دستور بايد از چه الگويي بايد پيروي کند. حالا ميتوان بهشيوهاي ديگري به هر دستور نگاه کرد تا پيادهسازي راحتتري داشته باشد. هر دستور يکسري پارامتر را به عنوان ورودي دريافت ميکند. خوب هر پارامتر براي انجام عمل خاصي است، پس در کلاسهاي مربوط به هر دستور علاوه بر دستورات فوق بايد متدهايي براي انجام هر عمل نوشته شود. بهطور مثال دستور Copy، اين دستور بايد دو پارامتر را بهصورت پيشفرض دريافت کند. اولين پارامتر فايل منبع و دومي فايل مقصد را مشخص ميکند حال اگر دستور copy با فرمان /x اجرا شود بايد فايل منبع به مقصد منتقل شود و کپي گرفته نشود. بنابراين، دو متد به نامهاي CopyFile و MoveFile را بايد در کلاس مربوط به دستور copy بنويسيم که عمليات مربوطه را انجام دهند.
مشکلي که در اين ميان ممکن است رخ بدهد، اين است که متدهاي MoveFile و CopyFileرا بايد بهچه صورتي تبديل کنيم که امنيت کافي داشته باشد؟ آيا اين متدها private باشند يا public؟ از آنجا که اين متدها براي کلاس مربوط به دستور copy هستند پس بايد بهصورت private تعريف شوند. اما اگر طور ديگري به اين دو متد نگاه کنيم، و اگر دستور ديگري داشتيم که نياز به کپي و کات کردن فايلها داشت نتيجه چه ميشد؟ بايد اين متدها هر بار نوشته شوند؟ يا اينکه آنها را بصورت عمومي تعريف کنيم؟
اگر بهصورت عمومي تعريف کنيم، طراحي ما غلط است چون ديگر کلاسها نبايد متدهايي که براي اجراي پارامترهاي ورودي هر دستور هستند را ببينند، راه حل چيست؟ميتوانيم با نوشتن يک کلاس جداگانه براي کارکردن با فايلها، اين مشکل را حل کنيم. اين کار دو مزيت دارد:
1- متدهاي CopyFile و MoveFile از سطح کلاس دستورها جدا خوهد شد و بطور مستقل کار ميکنند. اين کار debug (اشکال زدايي) برنامه را راحتتر و نگهداري کد را سادهتر ميکند.
در ضمن طراحي يکپارچهاي خواهيم داشت، بدين ترتيب کلاس File را براي کار با فايلها را بهصورت زير مينويسيم:
class File{
const static int BUF_SIZE = 4096;
public:
static void Copy(char* source,char* destination);
static void Move(char* source,char* destination);
static void Delete(char* filename);
static void Rename(char* oldname,char* newname);
static bool Exist(char* filename);
static void Create(char* filename,bool overwrite);
};
نيازي به توضيح در مورد متدهاي کلاس نيست، بسيار خوب پس پيادهسازي متد execute از کلاس مربوط به دستور copy به صورت زير خواهد شد:
void execute(){
if(this-»contain("/X") || this-»contain("/x")){
File::Move(this-»argv[1],this-»argv[2]);
}
else
File::Copy(this-»argv[1],this-»argv[2]);
}
حالا که موفق شديم کلاس مربوط به Copy را پياده کنيم، به بررسي کلاس ديگري مي پردازيم. اين کلاس براي ايجاد رابطه با کاربر مورد استفاده قرار ميگيرد، نام اين کلاس را Helper ميگذاريم، اين کلاس قرار است دستوراتي را که کاربر وارد ميکند، اعتبارسنجي کند و با توجه به دستورات وارد شده، عمليات مناسب را اجرا کند. اين کلاس بصورت زير تعريف شده است :
class utility{
public :
utility(char* command);
utility();
void Run();
private :
char* command;
char** argv;
int argc;
baseCommand* internaleCommand;
void parse();
void createCommand();
{;
اين کلاس شامل 3 فيلد است يکي argv وديگري argc که
قبلا درمورد آنها و کاربردشان صحبت کردهايم. ديگري يک شي از baseCommand.
همانطور که گفتيم کلاس baseCommand کلاس پدر همه کلاسهاي مربوط به
دستورات است و مقدار آن ميتواند تمامي دستورات را قبول کند، متد Run اين
کلاس در واقع دستوري که کاربر وارد کرده است، را تجزيه و تحليل ميکند و
فرمان مربوطه را اجرا ميکند. در اين متد ابتدا عبارت وارد شده توسط متد
parse تجزيه و تحليل ميشود و فيلدهاي argv و argc مقدار دهي ميشوند، و
سپس متد createCommand اجرا ميشود و بر اساس مقدار argv فيلد
internalCommand مقدار دهي ميشود و سپس متدexecute از کلاس baseComman
اجرا ميشود. با اين کار دستور مورد نظر انجام شده و خروجيها چاپ ميشود،
تا اينجا ما موفق شديم دستوري را وارد و آن را اجرا کنيم. حال بگذاريد
شرايطي را بررسي کنيم که ما بخواهيم دستورات را پست سر هم وارد كنيم و
اينکار تا آنجا ادامه پيدا کند که کاربر دستور exit را وارد کند و از
برنامه خارج شود (يعني يک محيط خط فرمان براي کاربر ايجاد کنيم)، وظيفه
اين کار بر عهده متد main يا متد اجرايي برنامه است که به اين صورت پياده
سازي شده است:
با اين پيادهسازي، يک
محيط خوب براي برنامه خود داريد که ميتوانيد در آن دستورات مختلف را
پياده کنيد. در اين مقاله، دستورات اجرايي، همان دستورات سيستم عامل
ويندوز بود. آيا ميتوانيد توابع و کلاسهاي داخلي سيستم خود را با
استفاده از اين روش، راهاندازي و اجرا کنيد. موفق باشيد.
اميربهاالدين سبطالشيخ
نوشته شده در 2009/11/1 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید
Sams Teach Yourself Perl in 24 Hours

Publisher: Sams | ISBN: 0672327937 | edition 2005 | PDF | 665 pages | 6,7 mb
Learn Perl programming quickly
and easily with 24 one-hour lessons in Sams Teach Yourself Perl in 24
Hours. The book’s step-by-step lessons teach you the basics of Perl and
how to apply it in web development and system administration. Plus, the
third edition has been updated to include five chapters on new
technologies, information on the latest version of Perl, and a look
ahead to Perl 6. Sams Teach Yourself Perl in 24 Hours focuses on
real-world development, teaching you how to:
* Effectively use Perl for large development projects using Perl modules
* Use Perl for data processing
* Utilize Perl as a “glue” language with other programming languages
* Use Perl as a web development language
نوشته شده در 2009/10/30 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید

بياييد يک تلفنچي را مثال بزنيم؛ اين شخص ممکن است بهخاطر فشار شديد کاري در يک روزگرم تابستاني، بهشدت از کوره در رفته باشد و حتي چند تماس را با بدخلقي تمام پاسخ داده باشد، اما وقتي يک تماس شخصي از سوي يکي از اعضاي خانوادهاش دريافت ميکند، اخلاق خوشي از خود نشان ميدهد و صورت ديگري از خود را بروز ميدهد. اين قابليت، يعني چندريختي2 يکي از ويژگيهاي پيادهشده در برنامهنويسي شيءگرا است.
انواع مختلفي از چندريختي ممکن است وجود داشته باشد، يکي از آنها که مثال زديم، بازنويسي رفتار3 است. يکي ديگر از انواع بازنويسي، بازنويسي عملگرها4 است که بهآن بيشتر خواهيم پرداخت.
هدف از بازنويسي عملگرها، تغيير رفتار عملگرهاست، تا جايي که عملگرها با توجه نوع عملوندها رفتاري متفاوتي از خود نشان بدهند. برخي از اين عملوندها را خود زبان برنامهنويسي بازنويسي کرده است، اما برخي ديگر را برنامهنويس بهدلخواه خود بازنويسي ميکند.
بگذاريد يک مثال بزنيم تا بهتر مشخص شود چه کاري ميخواهيم انجام بدهيم. عملگر جمع (+) را فرض کنيد. در زبان سيشارپ اگر 2 عملوند عدد صحيح از نوع int باشد، خروجي int خواهد بود و 2 عدد را جمع ميکند و حاصل را بر ميگرداند، حالا اگر 2 عملوند از نوع رشته متني باشند، چه؟ در اينجا زبان سيشارپ يک بازنويسي عملگر دروني دارد و در آن، 2 رشته ورودي را با هم ترکيب ميکند و نتيجه بهصورت يک رشتهمتني باز ميگردد، مثلا اگر بنويسيم: "Jamejam" + " Click!" خروجي عبارت Jamejam Click! خواهد بود، در ادامه نحوه بازنويسي عملگرها را براي کلاسي که خودمان تعريف کرديم بررسي ميکنيم.
پيش از اينکه نحوه بازنويسي کردن عملگرها را توضح دهيم، لازم است ببينيم کدام عملگرها قابليت بازنويسي دارند:
عملگرهاي دودويي (عملگرهايي که به دو عملوند (Operand) براي اجرا شدن نياز دارند)، مانند: + (جمع)، - (تفريق)، *، /، %، &، |، ^، «« و »» .
عملگرهاي يگاني (عملگرهايي که تنها به يک عملوند نياز دارند)، مانند: + (مثبت)، - (منفي)، !، ~، ++، --، true و false.
بقيه عملگرها قابليت باز نويسي ندارند ولي بعضي از آنها را ميتوان بهصورت ديگري بازنويسي کرد؛ مثلا عملگر += خلاصه عملگر + است، که خود + قابليت بازنويسي را دارد يا عملگر () (تبديل نوع يا cast) ، قابل بازنويسي را ندارد، ولي شما با استفاده از explicit و implicit که هر دو از keywordهاي سيشارپ هستند ميتوانيد آنرا بازنويسي کنيد.
کار خود را با يک مثال شروع ميکنيم. ما يک کلاس به اسم Matrix تعريف کرديم. اين کلاس عمليات خاصي را روي يک ماتريس انجام ميدهد. مثلا دترمينان يک ماتريس را حساب ميکند، يا 2ماتريس را جمع يا ضرب ميکند و ... . حال فرض کنيد بدون استفاده از بازنويسي عملگرها بخواهيم اين کلاس را بنويسيم. براي جمع 2 ماتريکس، 2 روش وجود دارد، نخست اينکه يک متد استاتيک تعريف کنيم تا 2 ماتريس را جمع کند و حاصل را بهصورت يک ماتريس برگرداند. اين متد بهصورت زير خواهد بود:
System.Math.Matrix mx1 =
new System.Math.Matrix(4,5);
System.Math.Matrix mx2 =
new System.Math.Matrix(4,5);
System.Math.Matrix result =
System.Math.Matrix.Add(mx1, mx2);
اين روش اشتباه نيست، اما بگذاريد کمي آن را بهتر بنويسيم. در کلاس ماتريکس متد Add را از حالت استاتيک در ميآوريم، و بهجاي دريافت 2 پارامتر ورودي، يک پارامتر ورودي بهآن ميدهيم و با خودش جمع ميکنيم:
mx1.Add(mx2);
بههرحال اين هم يک روش است که بهنظر سادهتر و منطقيتر ميرسد. حتي از اين هم ميتوان زيباتر نوشت. اينجا همانجايي است که بازنويسي عملگرها وارد صحنه ميشود:
mx1 = mx1 + mx2;
اگر بتوانيم ماتريکسها را همانطور که روي کاغذ مينويسيم و جمع ميزنيم، در کد خود بنويسيم، هم خواندن کد براي ما سادهتر ميشود، هم در کار تيمي جلوه بهتري دارد.
ما چه کار خواهيم كرد؟ عملگر + (جمع) را براي کلاس ماتريس خودمان بازنويسي ميکنيم و به کامپايلر نشان ميدهيم که اگر 2 عملوند عملگر + از جنس ماتريس بود، فلان کار را انجام بده. که اين فلان کار يعني 2 ماتريس را با هم جمع کن و خروجي را از نوع ماتريکس برگردان. خوب اين هم کار ما را خيلي سادهتر کرد، البته بيشتر براي کساني که از کلاس ما استفاده مي کنند ساده شده است، حال بررسي ميکنيم ببينيم اين عمل چگونه اتفاق ميافتد يعني کامپايلر از کجا ميفهمد که بايد هنگام برخورد با +، بهسراغ متد خاصي برود و آن را اجرا کند؟ بياييد متدي را تعريف کنيم:
public class Matrix {
public static Matrix operator +
(Matrix mx1, Matrix mx2)
return mx1.Add(mx2); }
همانطور که ميبينيد، در اين جا ما عملگر + را بهصورت عملگري دوگانه تعريف کرده که 2 پارامتر mx1 و mx2 را دريافت ميکند و mx1 را با mx2 جمع کرده و نتيجه را باز ميگرداند (با استفاده از متد فرضي Add).
و در نهايت کد بسيارسادهاي خواهيم داشت. اما فراموش نکنيد، استفاده از بازنويسي عملگرها، کد را بهشدت ساده ميکند، اما همين سادگي ميتواند کار دست برنامهنويس بدهد. بهفرض، اگر عملگر + را براي يک پارامتر از هر نوعي و يک پارامتر از نوع int بگيريد بهخاطر تقدم و تاخر پارامترها، C+2 مجاز است، اما 2+C غير مجاز است چون در ترتيب آرگومانها، بازنويسي ندارد. اين اشتباهات ساده ممکن است صدمات بزرگي به کد نوشته شده بزند و آن را کاملا غيرقابل اعتماد بکند.
پينوشتها
1. Object Oriented
2. Polymorphism
3. Method Overloading
4. Operator Overloading
اميربهاالدين سبطالشيخ
نوشته شده در 2009/10/26 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید
C# Network Programming
Richard Blum
Publisher: Sybex | ISBN: 9780782141764 | 672 pages chm | 6.14 mb
On its own, C# simplifies network programming. Combine it with the precise instruction found in C# Network Programming, and you’ll find that building network applications is easier and quicker than ever.
This book helps newcomers get started with a look at the basics of network programming as they relate to C#, including the language’s network classes, the Winsock interface, and DNS resolution. Spend as much time here as you need, then dig into the core topics of the network layer. You’ll learn to make sockets connections via TCP and “connectionless” connections via UDP. You’ll also discover just how much help C# gives you with some of your toughest chores, such as asynchronous socket programming, multithreading, and multicasting.
Network-layer techniques are just a means to an end, of course, and so this book keeps going, providing a series of detailed application-layer programming examples that show you how to work with real protocols and real network environments to build and implement a variety of applications. Use SNMP to manage network devices, SMTP to communicate with remote mail servers, and HTTP to Web-enable your applications. And use classes native to C# to query and modify Active Directory entries.
Rounding it all out is plenty of advanced coverage to push your C# network programming skills to the limit. For example, you’ll learn two ways to share application methods across the network: using Web services and remoting. You’ll also master the security features intrinsic to C# and .NET–features that stand to benefit all of your programming projects.
نوشته شده در 2009/10/21 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید
Name: HTML & XML for Beginners
Author: Michael Morrison
Publisher: Microsoft Press 2001-07-27 | 358 Pages | ISBN: 0735611890

نوشته شده در 2009/10/9 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید

http://www.phpdataservices.codeplex.com
شرح مختصر در مورد سرويسهاي دادهاي ADO.NET
سرويسهاي دادهاي ADO.NET (که قبلا با عنوان پروژه آستوريا شناخته ميشد)، فناوري است براي استفاده از انواع مختلفي از دادهها از طريق رابط سرويس REST. منابع دادهاي ميتوانند پايگاههاي داده، فايلهاي XML و ... باشند. سرويسهاي دادهاي ADO.NET آدرسدهي قابل انعطافي دارند و ميتوان از طريق قراردادهاي URL، به دادهها دسترسي پيدا کرد. همچنين ميتوان امور عادي منابعدادهاي را (از جمله ايجاد/خواندن/بهروزرساني/حذف) بهسادگي انجام داد.
در ويژوال استوديو 2008 سرويسپک 1، و قطعا ويژوال استوديو 2010، بهطور کامل از ايجاد و مصرف منابع دادهاي مختلف پشتيباني ميشود.
معماري ابزارهاي PHP و سرويسهاي دادهاي ADO.NET
بايد دو ديدگاه ابزارهاي PHP را در نظر گرفت:
1- زمان طراحي:
مجموعهابزار PHP کلاسهاي مبتني بر Proxy را با فرادادههاي سرويسهاي دادهاي ADO.NET (که در ويژوال استوديو ايجاد شده است) پيوند ميزند.
2- زمان اجرا:
از کلاس پراکسي PHP يک تابع صدا زده ميشود و بعد برنامه بهسادگي از سرويسهاي دادهاي ADO.NET استفاده ميکند. کلاسهاي پراکسي و کتابخانههايي که در اين جعبه ابزار وجود دارند، با استفاده از سرويسهاي مبتني بر REST که در پروتکل HTTP فعاليت ميکنند، ارتباط ميان سرويسهاي دادهاي ADO.NET و نرمافزار PHP را برقرار ميکنند.
براي تست اين سرويس، کافي است از سرويسهاي دادهاي پيشفرض ADO.NET استفاده کنيم و ديتابيس معروف Northwind را تست کنيم. با کمک پيادهسازي درست سرويس، از طريق URL ميتوان به نتيجه XML معتبر رسيد.
مرحله بعدي استفاده از فايلي است که سرويسهاي دادهاي را کنترل کرده و فايلهاي کلاس پراکسي را براي اتصال به اين ديتابيس بسازد:
از اين به بعد تنها کافي است کد کلاس پراکسي را در بخشي از برنامه که بايد اجرا شود، فراخواني کرده و بعد آدرس سرويس را تعيين کرد.
بعد از آن، ميتوان از کد استفاده کرد تا دادهها را از منابع مختلف جمعآوري نمود.
يک نمونه از خروجي کد در PHP به صورت زير خواهد بود:
اميربهاالدين سبط الشيخ
نوشته شده در 2009/10/2 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید

زبانهاي برنامهنويسي اکسپرس، تنها به VB، VC#، VC++، و VJ# محدود ميشود. در حوزه نرمافزارهاي وب هم Visual Web Developer و Visual C# و Visual Basic حضور دارند.
در مورد مستندها، نسخه اکسپرس کتابخانه کامل MSDN را ندارد، و 210 مگابايت کتابخانههاي پايه و تنها خلاصهاي از MSDN را دارد. اما مهم نيست؛ MSDN بهطور آنلاين در اختيار همگان است.
در نرمافزار Visual Web Developer، تنها فرق اکسپرس با دو نسخه ديگر اين است که طراحي ويندوز فرم ندارد. و طراح فرمهاي تحت وبش نيز بهطور برعکس در بخش ويندوزي قابل دسترسي نيست.
براي برنامهنويسي با موبايل بايد بهسراغ نسخههاي استاندارد يا حرفهاي برويد. همچنين در نسخه اکسپرس، طراح کلاس، Object Test Bench و کنترل سورس کد وجود ندارد. همچنين نميتوانيد نرمافزارهاي آفيس را گسترش بدهيد و کامپايلر 64 بيتي هم در آن وجود ندارد. همچنين با SQL Server 2005 بهطور يکپارچه نيست و بايد به آن متصل شويد.
در غير از اين موارد، نسخه اکسپرس بسيار شبيه به نسخه استاندارد و حتي حرفهاي است. با اين تفاوت که اگر در ايران نبوديم، بايد مبلغ زيادي را صرف مجوز و هزينههاي مرتبط با آن ميکرديم در صورتي که نسخه اکسپرس رايگان، سبک و کار راه بيانداز است.
نوشته شده در 2009/9/23 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید

اين پروژه که توسط گروه نرمافزاري Embedthis Software مديريت ميشود، براي شرکتها نيز نسخه تجاري با پشتيباني دارد و تحت GPLv2 منتشر ميشود و تحت تمام سيستمهاي عامل ويندوز، مک و لينوکس کار ميکند.
اين سرور وب تنها به 800 کيلوبايت حافظه نياز دارد و با سيستم جديد پردازش دستورات، دوبرابر سريعتر از گذشته است.
اين سرور وب از PHP، OpenSSL و XML، SOAP و REST پشتيباني ميکند. همچنين براي شبکههاي IPv6 هم سرويسدهي ميکند.
نوشته شده در 2009/9/23 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید
Developing Games in Java
David BrackeenPublisher: New Riders Games | 2003-08-31 | 1008 Pages | ISBN: 1592730051 | CHM

نوشته شده در 2009/9/17 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید
نام کتاب: آموزش DHTML در یک هفته
مشخصات: Publisher: Sams 1997-09 | 508 Pages | ISBN: 1575213354 | PDF | 5.3 MB

نوشته شده در 2009/9/5 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید
C# Network Programming

Richard Blum
Publisher: Sybex | ISBN: 9780782141764 | 672 pages chm | 6.14 mb
On its own, C# simplifies network programming. Combine it with the precise instruction found in C# Network Programming, and you’ll find that building network applications is easier and quicker than ever.
This book helps newcomers get started with a look at the basics of network programming as they relate to C#, including the language’s network classes, the Winsock interface, and DNS resolution. Spend as much time here as you need, then dig into the core topics of the network layer. You’ll learn to make sockets connections via TCP and “connectionless” connections via UDP. You’ll also discover just how much help C# gives you with some of your toughest chores, such as asynchronous socket programming, multithreading, and multicasting.
Network-layer techniques are just a means to an end, of course, and so this book keeps going, providing a series of detailed application-layer programming examples that show you how to work with real protocols and real network environments to build and implement a variety of applications. Use SNMP to manage network devices, SMTP to communicate with remote mail servers, and HTTP to Web-enable your applications. And use classes native to C# to query and modify Active Directory entries.
Rounding it all out is plenty of advanced coverage to push your C# network programming skills to the limit. For example, you’ll learn two ways to share application methods across the network: using Web services and remoting. You’ll also master the security features intrinsic to C# and .NET–features that stand to benefit all of your programming projects.
نوشته شده در 2009/8/31 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید
The Finite Element Method Using Matlab
(Crc Mechanical Engineering Series)
CRC Press; Har/Dsk edition | ISBN: 0849396530 | 519 pages | August 1996 | PDF | 25 Mb
The finite element method (FEM) has become one of the most important and useful tools for scientists and engineers. This new book features the use of MATLAB to present introductory and advanced finite element theories and formulations. MATLAB is especially convenient to write and understand finite element analysis programs because a MATLAB program manipulates matrices and vectors with ease. The book is suitable for introductory and advanced courses in the Finite Element Method, as well as a reference for practicing engineers.
29 MB PDF download :
نوشته شده در 2009/8/30 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید
فایل pdf آموزش کد نویسی با جاوا اسکریپت را می توانید از لینک زیر دانلود کنید.
برای دانلود فایل، بر روی آن راست کلیک کرده و save target as را بزنید.
برای باز کردن فایل نیاز به برنامه adobe reader خواهید داشت.

لینک دانلود مستقیم – با حجم 277 کیلو بایت
نوشته شده در 2009/8/19 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید
دانلود کتاب معماری کامپیوتر موریس مانو (انگلیسی)
دانلود حل المسائل معماری کامپیوتر موریس مانو (فارسی)
فایل powerpoint خلاصه فصل 3 کتاب موریس مانو (فارسی)
فایل powerpoint خلاصه فصل 5 کتاب موریس مانو (فارسی)
فایل powerpoint خلاصه فصل 7 کتاب موریس مانو (فارسی)
نوشته شده در 2009/8/19 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید
پروژه رایگان رزرو بلیط هواپیما به زبان ویژوال بیسیک
جهت دانلود آماده است.
از امکانات این برنامه بسیار زیبا و کاربردی می توان به:
1-استفاده از بانک اطلاعاتی اکسس
2-استفاده از پوسته و اسکین مختلف
3-اضافه کردن مشخصات هواپیما
4-اضافه نمودن مشخصات آژانس
5- انجام کلیه امور مسافرین اعم از اضافه،حذف،ویرایشو...
6-چاپ فاکتور بسیار زیبا همراه با نشان دادن تمامی جزئیات
7-انتخاب نمودن پرینتر دلخواه

و ... اشاره نمود.
توجه: چون در این برنامه از کامپوننت های متنوعی استفاده گردیده ابتدا کامپوننت ها را به برنامه ویژوال بیسیک خود اضافه کنید.
نوشته شده در 2009/8/19 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید
ویژوال بیسیک 6 فارسی
فارسی ساز ویژوال بیسیک 6 به همراه تغییر پوسته برنامه به ویندوز ویستا
به کمک این فایل ها محیط برنامه نویسی ویژوال بیسیک فارسی می شود که مناسب برای کلیه افراد مبتدی و حتی حرفه ای خواهد بود.
ابتدا این سه فایل رو در مسیر "C:\Program Files\Microsoft Visual Studio\VB98\" کپی کنید بعد
برنامه رو اجرا کنید. البته این فایل ها ترجیحا برای ویندوز xp نوشته شده است
کارهایی که این فایل ها میکنند عبارتند از :
- 1 فارسی کردن کامل محیط ویژوال بیسیک 6
- 2 قالب زشت ویژال بیسیک را به صورت Xp در می آورد.
توجه:
برای راحتی شما عزیزان فایل به دو پارت تقسیم شده است.
نکته مهم :
اول
از فایل VB6IDE.DLL و VB6.exe موجود در پوشه خود VB یک کپی در جای دیگر
برای پشتیبان در صورتت بروز خطا نگه دارید و اگر برنامه کارنکرد برشون
گردانید سر جاشون البته من خودم تست کردم 100% جواب می دهد.
نوشته شده در 2009/8/19 توسط امیرحسینamir hosseinستوده بیدختیsotoudeh |نظر دهید
حرکت قویترین لیگ بسکتبال جهان به سوی خودکشی؟
فیفا تغییر مقررات داوری در بازیهای جام جهانی را بررسی می کند
شیفتگان بازیهای ویدئویی در 'واقعیت' رقابت میکنند
تکنولوژی تفاوت مردان و زنان را آشکار می کند
ارتباطات در بریتانیا تحت نظارت دقیقتر قرار میگیرد
گام بعد بازیهای قابل حمل از آن کیست؟
اینتل با ۱.۲۵ میلیارد دلار رضایت AMD را جلب کرد
تاثیر مواد شیمیایی موجود در کالاهای پلاستیکی بر رفتار پسربچه ها
استقبال گرم استرالیایی ها از پانداهای چینی
تلاش برای کاهش آروغ گوسفندان استرالیا
وقتی سراپا "گوش" می شویم
توصیه های دارویی برای ایدز تغییر کرد
دستنوشتههای استاندال فرانسوی بر روی شبکه جهانی اینترنت
ژنهای موجود در اسپرم 'عمر مردها را کوتاه می کند'
گوگل دسترسي رايگان به مقالات روزنامهها محدود ميکند
ثبتنام دانشجويان انصرافي و اخراجي در كنكور
حل مسائل فیزیک هالیدی
پمپ ها و علم هیدرولیک
ركوردهایی كه شكسته شد
اسوس، نتبوک با قابلیت ارتباط لمسی را روانه بازار کرد
پیوند اولین دست بیونیک با توانایی برقراری ارتباط با مغز
برنامه مخرب؛ عامل صفحه سیاه مرگ
برترین جستجوهای سال 2009 یاهو اعلام شد
امشب ماه به دیدار خوشه پروین می رود
جريمه 2.6 ميليون دلاري شركت eBay
جايگزيني براي آکروبات
صفحهکليد با شماره!
تکثير سازمان يافته پرتوآبي
مرگ پرتو آبي با ورود لوح فشرده 5 بعدي بي انتهاي 10ترابايتي





