تبليغاتX
یک پروژه جدید


اطلاعيه هاي وبلاگ :
 1) در اين وبلاگ شما مطالبي در مورد برنامه نويسي، پروژه هاي سخت افزاري و نرم افزاري، پايان نامه ها، اخبار تکنولوژي هاي جديد و .... مي خوانيد. و همچنين مي توانيد eBook هايي در زمينه هاي مختلف را دانلود کنيد.

2) با عضويت در خبر نامه از بروز رساني وبلاگ با خبر شويد

3) شما می توانید پروژه مورد نظر خود را در ابعاد و ویژگی های مختلف سفارش دهید

عينک مترجم به بازار مي‌آيد

اين شرکت، که در حوزه ساخت و ارائه خدمات ارتباطي، رايانه و تجهيزات الکترونيکي فعاليت دارد مي گويد: اين عينک به کاربران آن کمک خواهد کرد سد زبان هاي خارجي را بشکنند و با افراد از مليت هاي مختلف ارتباط کلامي برقرار کنند.

گرچه که اين ابزار جديد ظاهري شبيه عينک دارد اما از لنز خبري نيست. تصوير کلمات تقريبا به طور همزمان ترجمه شده و با يک پروژکتور کوچک به قرنيه چشم منعکس مي شود.

بنا به گفته NEC ، دو نفر که با دو زبان مختلف حرف مي زنند، مي توانند با استفاده از اين عينک هوشمند به راحتي با يکديگر گفتگو کنند.

اين شرکت هنگام طراحي اين وسيله، که «تله اسکوتر» (Tele Scouter) نام دارد، فروشندگان کالا يا کارمنداني را مد نظر داشته که وظيفه جوابگويي به سوالات مشتريان را دارند.

اين شرکت مي گويد تله اسکوتر در واقع يک وسيله تجاري است و با تاباندن اطلاعات مشتري به قرنيه چشم به فروشندگان کالا کمک مي کند که هم زمان با صحبت با مشتري، از مراودات قبلي او مطلع باشند.از اين وسيله همچنين ممکن است براي کارهايي جذاب تر مانند ترجمه همزمان استفاده کرد.

در چنين حالتي ميکروفوني که در قاب عينک جاسازي شده صداي دو نفري را که در حال گفتگو هستند ضبط مي کند، آن را به نرم افزار ترجمه و سيستم برگردان صدا به متن منتقل مي کند و بعد ترجمه را به قاب عينک پس مي فرستد.

در حالي که کاربر، ترجمه آن چه را به او گفته شده مي شنود، متن گفته ها را نيز مانند زير نويس فيلم روي قرنيه چشمش دريافت مي کند.

تاکايوکي اومينو، سخنگوي شرکت ان ايي سي گفت: از اين سيستم ممکن است براي گفتگوهاي محرمانه که حضور مترجم به لحاظ امنيتي صلاح نيست، نيز کاربرد دارد.

او گفت تله اسکوتر در ماه نوامبر 2010 در ژاپن به بازار خواهد آمد، اما در ابتدا شامل مشخصه ترجمه نخواهد بود ؛ مدلي که ترجمه نيز مي کند يک سال بعدتر به بازار خواهد آمد.

وقتي عينک هوشمند به بازار بيايد هر 30 جفت آن حدود پنجاه هزار پوند عرضه خواهد شد.اين رقم شامل قيمت نرم افزار و ادوات ترجمه نخواهد بود.

لينک | شنبه 16 آبان1388 | موضوع : اخبار تکنولوژی های جدید | نویسنده :مجتبی جعفری (Romper) |

 
نحوه تشخیص ماشین مجازی - Virtual Machine Detection

کمی در مورد Virtual Machine Software
هر دو نرم افزار Virtual PC و VMWare به شما اجازه می دهند تا Add_in هایی برای شتاب دادن به شبیه سازی نصب کنید. یا اجازه Drag_n_Drop کردن فایلها از دسکتاپ واقعی به دسکتاپ مجازی را هم می دهند و همچنین اجازه به اشتراک کذاری فایلها بین ماشین واقعی و مجازی را هم می دهند.
به منظور انجام اینکار، باید یک مکانیسم ارتباطی بین نرم افزار ماشین مجازی و ماشین واقعی وجود داشته باشد. این نوع واسط، Backdoor Interfacing نامیده می شود.

زمانی که از یک مکانیسم خاص/غیر مستند استفاده می کنیم، دستورات معینی می تواند انجام شوند و به روشهای مختلفی تفسیر شوند (بستگی به نوع نرم افزار ماشین مجازی می باشد). برخلاف تفسیر آنها در ماشین واقعی.


چگونگی تشخیص virtual PC
همانطور که می دانید، هر ماشین، مجموعه ای از دستورالعمل های تعریف شده ای دارد که معماری مجموعه دستورالعمل ها نامیده می شود. (Instruction Set Architecture or ISA)
وقتی Virtual PC با دستورالعمل های نا متعبری برخورد می کند (دستورالعملی که در ISA وجود ندارد)، ماشین خطایی از نوع “Invalid OpCode” تولید می کند.
نرم افزار هم می تواند با استفاده از مکانیسم معمول Try/Catch خطا را کنترل کند و هم می تواند کنترل خطا را به سیستم عامل بسپارد و در بدترین حالت ماشین Crash کند.
Virtual PC از دسته ای از دستورالعمل های نامعتبر برای واسط قرار گرفتن بین ماشین و نرم افزار ماشین مجازی استفاده می کند.
در اینجا مراحلی که در حین ارتباط ماشین و Virtual PC رخ می دهد، لیست شده است :
1.    برنامه کنترل کننده های خطا را تنظیم می کند. (بلوکهای Try/Catch)
2.    پارامترهای مورد نیاز را قبل از فراخوانی VM تنظیم کنیم
3.    دستورالعمل “Invalid OpCode” خاصی صادر می شود.
4.    نرم افزار VM این خطای Invalid OpCode را تشخیص خواهد داد و مطابق با آن برخورد خواهد کرد.
اگر Virtual PC وجود داشته باش، باعث عدم بروز خطا می شود و بلعکس.
5.    بلوک Catch در برنامه خطا را کنترل خواهد کرد و پارامترهای برگشت داده شده را برای حضور/عدم حضور نرم افزار VM بررسی می کند.
بطور خلاصه Virtual PC از مکانیسم “Invalid OpCode” به عنوان BackDoor استفاده می کند.

کد تشخیص Virtual PC
// IsInsideVPC's exception filter

DWORD __forceinline IsInsideVPC_exceptionFilter(LPEXCEPTION_POINTERS ep)
{
  PCONTEXT ctx = ep->ContextRecord;

  ctx->Ebx = -1; // Not running VPC

  ctx->Eip += 4; // skip past the "call VPC" opcodes

  return EXCEPTION_CONTINUE_EXECUTION;
  // we can safely resume execution since we skipped faulty instruction

}

// High level language friendly version of IsInsideVPC()

bool IsInsideVPC()
{
  bool rc = false;

  __try
  {
    _asm push ebx
    _asm mov  ebx, 0 // It will stay ZERO if VPC is running

    _asm mov  eax, 1 // VPC function number


    // call VPC

    _asm __emit 0Fh
    _asm __emit 3Fh
    _asm __emit 07h
    _asm __emit 0Bh

    _asm test ebx, ebx
    _asm setz [rc]
    _asm pop ebx
  }
  // The except block shouldn't get triggered if VPC is running!!

  __except(IsInsideVPC_exceptionFilter(GetExceptionInformation()))
  {
  }

  return rc;
}

جزئیات بیشتری در مورد کد
1.    نصب کنترل کننده های خطا
2.    مقدار دهی رجیسترهای ورودی EAX و EBX
3.    Invalid Instruction را صادر می کند.(0X0F 0X3F 0X07 0X0B)
این دستور نامعتبر شبیه به یک نقش دهنده عملیاتی می باشد، به Virtual PC می گوید که دقیقا چه کاری را انجام دهد. برای عملیات دیگر، Virtual PC از Invalid Instruction های دیگری استفاده می کند.
4.    در داخل Exception Handler
رجیسترها را برای نشان دادن عدم حضور Virtual PC تغییر می دهد.
اگر خطایی وجود داشته باشد، مقدار EBX، منفی یک می شود آنگاه Virtual PC حضور ندارد.
5.    از Exception باز میگردد و اجرای برنامه را ادامه می دهد. (فقط اگر Virtual PC وجود نداشته باشد)
6.    نتیجتا" رجیستری های بازگشت داده شده را بررسی می کند.





چگونگی تشخیص VMWare
Intel X86 دو دستورالعمل را برای اجازه حمل دستورات I/O فراهم می کند. این دستورالعمل ها، دستورالعمل های “IN” و “OUT” هستند که دارای Privilege هایی می باشند که در پروسس مد کاربر قابل استفاده نمی باشند. (تا زمانی که در حالت محافظت شده هستند) مگراینکه Privilege های ضروری فعال شوند. بنابراین استفاده از آنها در حالت نرمال باعث ایجاد خطایی از نوع  “ECXEPTION_PRIV_INSTRUCTION” خواهد شد.
VMWare از دستورالعمل “IN” برای خواند از یک پورت خاص استفاده می کند. اگر چه VMWare در حال اجرا می باشد ولی این پورت به صورت مؤثر وجود ندارد. این پورت واسط بین ماشین و VMWare خواهد شد.
 
    
کد تشخیص VMWare
bool IsInsideVMWare()
{
  bool rc = true;

  __try
  {
    __asm
    {
      push   edx
      push   ecx
      push   ebx

      mov    eax, 'VMXh'
      mov    ebx, 0 // any value but not the MAGIC VALUE

      mov    ecx, 10 // get VMWare version

      mov    edx, 'VX' // port number


      in     eax, dx // read port

                     // on return EAX returns the VERSION

      cmp    ebx, 'VMXh' // is it a reply from VMWare?

      setz   [rc] // set return value


      pop    ebx
      pop    ecx
      pop    edx
    }
  }
  __except(EXCEPTION_EXECUTE_HANDLER)
  {
    rc = false;
  }

  return rc;
}
جزئیات بیشتر در مورد کد :
1.    برنامه کنترل کننده های خطا را تنظیم می کند.
2.    قرار دادن Magic Number در رجیستری EAX. (Magic Number is 0X564D5868 or VMXh)
3.    مقدار دهی رجیستری EBX به مقداری به جزء Magic Number
4.    مقدار دهی رجیستری ECX به مقدار "شماره تابع" مورد نظر.
مقدار 10 یعنی شماره ورژن VMWare را برگردان. کدهای دیگر به معنی توابعی دیگر هستند.
5.    مقدار دهی رجیستری DX به مقدار Magic Port Number.
 (Magic Port Number is 0X5658 or VX)
این شماره پورت مخصوص اجازه ارتباط با VMWare را زمانی که در حال اجرا می باشد، می دهد.
6.    خواندن از پورت و قرار دادن آن در داخل رجیستری EAX
    زمانی که VMWare وجود ندارد، خطایی رخ خواهد داد و ما وجود VMWare را رد خواهیم کرد.
    در غیر این صورت جریان کد ادامه پیدا می کند.
7.    حالا رجسیتری EBX باید مقدار Magic Number را بخواند.
8.    اگر چنین باشد، VMWare وجود دارد.

Author : Mojtaba Jafari
Sources:
1.    http://www.codeproject.com/KB/system/VmDetect.aspx
2.    Methods for Virtual Machine Detection - 20th June 2006
Alfredo Andr´es Omella
Grupo S21sec Gesti´on S.A.

لينک | جمعه 15 آبان1388 | موضوع : مقالات آموزشی | نویسنده :مجتبی جعفری (Romper) |

 
نکاتی در مورد پلتفرم دات نت - Dot Net

پلتفرم دات نت :
علم هر روزه در حال پیشرفت می باشد. بطوری که افراد برای انجام بسیاری از کارها و حتی ملاقات های خارج از کشور دیگر احتیاج به ترک میز کار و کامپیوتر خود ندارد.
ممکن است برای بیشتر تجارت ها وب سایت ها وسیله مناسبی برای بازاریابی نباشند اما بعضا مکانی برای انجام جریان های حساس و بحرانی مالی هستند.
وظیفه ما بعنوان یک برنامه نویس این است که کاربران بهترین تجربه ممکن وبگردی در این سایتها را داشته باشند. اما متأسفانه Time-to-Market برای این برنامه های مهم کاربردی تحت وب، هر روزه کمتر و کمتر می شود.
بنابراین چطور یک برنامه نویس می تواند با این روند روبرو شود ؟
خوشبختانه در سالهای اخیر توسعه برنامه های کاربردی تحت وب در جهت بهبود تغییراتی داشته اند.
ابزارهای جدید زیادی برای برنامه نویسان تولید شده اند. یکی از این ابزارها Microsoft Platform می باشد که از آن به .Net یاد می کنند.
بطور خلاصه پلتفرم دات نت، فریم ورک جدیدی بر پایه استانداردهای اقتصادی است که برای ساخت برنامه های اینترنتی در راستای محقق کردن شعار معروف مایکروسافت می باشد.

“Any time, Any Place and on Any Device”

برای اینکه عاملیت اینترنت را افزایش دهیم باید انحصار این مقوله (اینترنت) را از کامپیوترهای دسکتاپ و لپ تاپ حذف کنیم. هم اکنون دستگاه هایی مانند تلفن های همراه و PDAها، اتصال اینترنتی را فراهم می کنند و باید به کاربران موبایل امکان آزادی عملی که در هنگام کار با کامپیوترهای شخصی خود داشته اند را بدهد.
پلتفرم دات نت توسعه اینگونه نرم افزارهای دستگاههای موبایل را آسان تر می کند. همچنین مشکل برقراری ارتباط و به اشتراک گذاشتن را بین دستگاههای گوناگونی که دراری سیستم عامل مختلفی هستند و یا از زبان های برنامه نویسی خاصی استفاده می کنند و یا حتی پروتکل خاص خود را دارند را حل می کند.


بررسی نکاتی قبل از ظهور دات نت :

مایکروسافت قصد دارد دات نت را یک پلتفرم برای تمام زبان ها کند برعکس جاوا که یک زبان برای پلتفرم های مختلف است.
قبل از ظهور دات نت به عنوان یک پلتفرم مرجع برای زبانهای مختلف، برنامه نویسان مجبور بودند برای توسعه برنامه ها، از زبانها و ابزارهای گوناگونی استفاده کنند. برای همین منظور می بایست زبانهای زیادی و با سینتکس های مختلفی را فرا بگیرند. مشکلات اینکار در پروژه های بزگ کاملا ملموس و قابل درک بود. برای همین مایکروسافت تصمیم به ارائه پلتفرمی برای زبانهای مختلف گرفت. که توانست ابزارهای مورد نیاز برنامه نویسان مختلف را یکجا جمع آوری کند.
یکی از دلایلی که مایکروسافت را وادار به تولید یک پلتفرم گسترده و یکپارچه برای تولید نرم افزار کرد، وجود پیچیدگی های زیاد تکنولوژی های قبل از دات نت برای توسعه بود. چون آینده نگری زیادی در طراحی آنها نبود.

در اواخر دهه 90 زبان های مطرح در بازار VC++، VB6، دلفی و جاوا بودند.


•    VC++
       قدرت بالا اما پیچیدگی برای برنامه نویسان متوسط
•    VB6 معروف به Kindergarten Language و برای تکنولوژی RAD می باشد
        قدرت پایین، عدم پشتیبانی از Web Programming
        عدم دسترسی مستقیم به APIها
        استفاده از Activex و DLLهای نوشته شده توسط VC
•    دلفی
         تلفیقی از زبان های VB6 و VC++
•    جاوا

         پشتیبانی از Web Programming


در مورد Cross Platform  :
چون ویندوز برای مایکروسافت در درجه اول اولویت قرار دارد، هیچگاه این شرکت، Dot Net را Cross Platform نمی کند که بتواند در سیستم عامل های دیگر همچون لینوکس اجرا شود.در غیر اینصورت ویندوز دچار ضررهای زیادی می شود.

Active Server Pages.Net (ASP.Net) یکی از راههای توسعه تحت وب توسط پلتفرم دات نت می باشند. ASP.Net به توسعه دهندگان امکان ساخت برنامه های تحت وب پویا را به همان طریقی که برنامه های دسکتاپ را می سازند، می دهد.
برنامه های تحت وب می توانند به اشتراک گذاشته شوند به همان طریقی که برنامه های دسکتاپ به اشتراک گذاشته می شوند. بنابراین کاربران می توانند با مهارتهای کامپیوتری که از قبل دارند می توانند کارهای بیشتری انجام دهند.
ASP.Net برای توسعه دهندگان نرم افزار مزایای بیستری نسبت به دیگر مدل های توسعه برنامه های تحت وب دارد. که می توان به سرعت بالای آن اشاره کرد.
برای استفاده از پلتفرم دات نت به سخت افزار خاصی نیار نیست، همان سخت افزارهایی که برای کار با ویندوز XP/NT/2000 احتیاج هستند، کافی می باشند.
حتی با Win98 هم می توان از پلتفرم دات نت استفاده کرد اما با کمی محدودیت. برای مثال نمی توان برنامه های سرور تحت وب را میزبانی کرد. هر چند بقیه برنامه های دات نتیِ Client می توانند توسعه پیدا کنند و روی Win98 و بالاتر از آن اجرا شود. (از قبیل برنامه های کنسولی یا Clientی برای سرویس های وب، برنامه های Windows Form و ...

تفاوتهای ASP.Net و PHP
•    ASP.net  یک محصول مایکروسافتی است که در مجموعه دات نت ارائه شده است. اما php  یک زبان تحت وب اوپن سورس است.
•    برنامه های نوشته شده توسط asp.net  روی سرور های ویندوز قابل اجرا هستند ، اما برنامه هایی که با php توليد ميشوند تحت لينوکس اجرا ميشوند. (البته تحت ویندوز هم ميشه php  نصب کرد، اما تحت لينوکس به صرفه تره . چون اجاره سرور لينوکس ارزان تره)
•    قابليت encode  کردن کدهای نوشته شده سمت سرور را با تبدیل آنها به یک فایل DLL  فراهم ساخته است ( code-Behind ) تا حتی کسی که به سرور شما دسترسی دارد هم سورس های شما رو نبيند. اما php  گزینه کامپایل ندارد . البته یک رمزنگار بنام zend  برای php  نوشته شده که کاری مشابه encode کردن را بر روی کدهای php  انجام ميدهد.
•    قابليت های شی گرایی در asp.net  به دليل قابليت کامپایلی بودن آن و مجتمع شدن با سایر زبان های دات نت خيلی بهتر پياده سازی شده است.
•    Asp.net  برای برنامه نویسی های سریع بسيار مناسب است. زیرا تعداد بسيار زیادی کتابخانه دارد که کامپوننت های مخصوص هر کاری را بصورت آماده در اختيارتان قرار می دهد . اما در برنامه نویسی با php  شما مجبورید اکثر بخش های برنامه نویسی را خودتان بنویسيد و این وقت زیادی از شما می گيرد. البته در پروژه های بزرگ ، بخش کدینگ چون یکبار نوشته شده و چندین بار استفاده ميشود، در ميزان وقتی که در مقایسه با asp.net  می گذارید چندان فرقی نمی کند. در ضمن در php  گاهی دستان شما بازتر است.
•    IDE  به محيطی برنامه نویسی زبان ها ميگویند. ASP.net  تحت Visual Studio  نوشته ميشود که در کشورهایی که ملزم به رعایت کپی رایت هستند 4000 دﻻر قيمت دارد. در حالی که IDE  های موجود برای زبان PHP  معموﻻ رایگان است. اما در ایران که خداروشکر این مورد با هزار تومن در درسترس است.
•    بانک اطﻼعاتی مورد استفاده برای زبان های دات نت معموﻻ SQL Server  است و بانک اطﻼعاتی مرتبط با PHP  معموﻻ MySQL  است. تا این اواخر MySQL  امکان نوشتن stored Procedure  را نداشت که گویا در نسخه جدیدش اضافه شده. قيمت ﻻیسنس SQL server معموﻻ از my sql  باﻻتره.
•    کدهای رایگان برای هر دو زبان در اینترنت به وفور یافت ميشود و در این مورد نگرانی ندارید.
•    امکانات URL-Rewriting  در زبان PHP  ساده تر از زبان های دات نتی قابل پياده سازی است. برای اینکار در ریشه سایتی که نوشته اید یک فایل htaccess  ميگذارید و تنظيمات مربوط به URL Rewriting  را داخل آن تنظيم ميکنيد. اما برای زبان های دات نتی شما باید این تنظيمات را روی سرور انجام دهيد. به همين دليل اگر پروژه ای نوشته باشيد که بخواهيد در آن از امکانات URL Rewriting  استفاده کنيد در حالت برنامه نویسی دات نتی، نيازمند اجاره کردن یک سرور هستيد که اینکار برای پروژه های کوچک که با 20  مگابایت هاست کارشون راه ميفته توجيه اقتصادی نداره.
(( URL-Rewriting  به ایجاد آدرس های مجازی روی سرور ميگن. مثﻼ آدرس وبﻼگ هایی که شما در یک سرویس مانند پرشين بﻼگ ميسازید مجازی هستند. چون هيچ دامنه ای امکان داشتن یک ميليون ساب دامين واقعی رو نداره. پس اینکار توسط شبيه سازی انجام ميشه که بهش URL Rewriting میگن ))
•    PHP  با زبان خاص خودش نوشته ميشود و چندان هم مشکل نيست. اما ASP.net  با استفاده از زبان  های دات نتی قابل نوشتن است. که معروف ترین آنها vb.net  و سی شارپ است . کدنویسی با استفاده از VB.net برای تازه کارهای برنامه نویسی خيلی ساده تر است و کد نویسی C#  برای دانشجویان رشته نرم افزار که با زبان C  آشنایی دارند توصيه ميشه. معموﻻ هر برنامه نویسی با یکی از این زبان ها کار ميکند و روی آن زبان متمرکز ميشود. قدرت هر 2  زبان سی شارپ و VB.net در برنامه نویسی یکسان است و فقط سينتکس آنها متفاوت است.

خلاصه اینکه این دو زبان قدرت یکسانی دارند و فقط گاهی برای رسيدن به یک نتيجه خاص در پروژه تان ، با یکی ممکن است بيش از دیگری کد بنویسيد و گاهی برعکس . اما در کل چيزی از هم کم ندارند و این پارامترهای تجاری است که تعيين ميکند که در پروژه های بزرگ از کدام زبان استفاده شود .

Author : Mojtaba Jafari

Sources :
1) Microsoft Statement, December 2001
http://www.Microsoft.com/PressPass/Inside_ms.asp
2) ASP.Net and VB.Net Programming Book – Matt Crouch
http://www.amazon.com/ASP-NET-VB-NET-Programming-Matt-Crouch
3) Sites
http://www.BarnameNevis.org
http://www.MacroMediaX.com

لينک | جمعه 15 آبان1388 | موضوع : مقالات آموزشی | نویسنده :مجتبی جعفری (Romper) |

 
را‌ه‌اندازي شبکه بي‌سيم در 15 دقيقه

شبكه‌هاي بي‌سيم
بسياري از کاربران دوست دارند که شبکه بي‌سيم منزل يا دفتر کارشان را خود را‌ه‌اندازي کنند. با اين شبکه، امکان به اشتراک گذاشتن فايل‌ها، چاپگرها و نيز دسترسي به اينترنت را بدون اتصال کابل به کامپيوترتان خواهيد داشت. اين قابليت مخصوصاً براي کامپيوترهايي که در جايي قرار دارند که وصل کردن کابل به آنها مشکل است و يا از آن مهمتر براي دسترسي به شبکه و اينترنت توسط نوت بوك‌ها که در هر جاي دلخواهي از خانه يا دفتر کار قابليت فعاليت داشته باشند، خيلي ايده‌آل است. در حاليکه شما نوت بوک را از اتاق خواب به اتاق پذيرايي مي‌بريد، همچنان اتصال به شبکه و اينترنت برقرار است.
البته در مورد نوت بوك‌هايي صحبت مي‌کنيم که داراي کارت شبکه بي‌سيم مي‌باشند. ( هرچند هر نوت بوکي که در 2 سال اخير ساخته شده باشد، حتماً اين قابليت را خواهد داشت. ) اگر شما از نوت بوک يا کامپيوتري استفاده مي‌کنيد که داراي اين قابليت نيست، ابتدا بايد به فکر خريد يک کارت شبکه بي‌سيم باشيد.
براي را‌ه‌اندازي يک شبکه بي‌سيم به موارد زير نياز داريد:

1 ـ يک اتصال اينترنتي با پهناي باند بالا ( مثل خطوط ADSL ) براي اشتراک اينترنت در شکبه
2 ـ يک کارت شبکه بي‌سيم به ازاي هر دستگاهي که تمايل به اتصال آن به شبکه بي‌سيم داريد.
3 ـ يک روتر بي‌سيم با پهناي باند بالا ( البته اختياري است )

معمولاً يک سخت‌افزار به نام "روتر بي‌سيم با پهناي باند بالا"  يا "Access Point" براي را‌ه‌اندازي يک شبکه بي‌سيم مورد نياز است. در اين مقاله نحوه را‌ه‌اندازي يک شبکه بي‌سيم را بدون استفاده از اين وسيله نسبتاً گران قيمت آموزش خواهيم داد. هرچند برخلاف اين ضرب المثل شيرين فارسي که مي‌گويد: " هيچ بقالي نمي‌گويد که ماست من ترشه! "  ابتدا به محدوديت هاي اين روش که ناشي از عدم استفاده از روتر مي‌باشد، اشاره مي‌کنم:

l کامپيوتري که داراي اتصال اينترنت با پهناي باند بالا مي‌باشد، بايد هميشه روشن باشد. اگر آن را خاموش کنيد، ارتباط به اينترنت کامپيوترهاي ديگر قطع مي‌شود، در حاليکه اگر از روتر بي‌سيم استفاده کنيد، اتصال اينترنت شما به روتر متصل شده و در نتيجه با خيال راحت مي‌توانيد تمام کامپيوترها را بدون قطع شدن اينترنت خاموش کنيد.

l امنيت شبکه شما کمتر خواهد بود، چرا که روترهاي با پهناي باند بالا داراي يک فايروال سخت‌افزاري داخلي هستند که شما با حذف اين روتر، در واقع آن فايروال را هم از دست داده‌ايد.

l رمزگذاري روي اطلاعات در روش ad hoc نسبت به روش روتر خيلي ضعيف‌تر است و در نتيجه هکرهاي حرفه‌اي در زمان کوتاه‌تري مي‌توانند رمز شبکه را بدست بياورند. ( البته براي کاربران خانگي که بيشتر نگران استفاده همسايگانشان از سيگنال هاي بي‌سيم آنها هستند، به اندازه کافي ايمن مي‌باشد. ) بنابراين اين روش براي افرادي که اطلاعات محرمانه را انتقال مي‌دهند، به هيچ وجه توصيه نمي‌شود و تنها راه آنها خريد يک دستگاه روتر مي‌باشد.

l سرعت شبکه شما به 11 Mbps محدود مي‌شود. حتي اگر از كارت‌هاي با سرعت 54 Mbps هم استفاده کنيد، باز به خاطر ماهيت اين پروتکل، سرعت شما به 11 Mbps کاهش مي‌يابد.

حتي اگر شما داراي يک روتر با پهناي باند بالا بدون قابليت بي‌سيم باشيد، باز هم مي‌توانيد يک شبکه ad hoc را پيکربندي کنيد. اگر شبکه شما داراي اين ويژگي باشد، بنابراين نقطه ضعف دوم از موارد ذکر شده بالا، حل خواهد شد. هرچند سه مورد ديگر همچنان پابرجاست. همچنين يک مورد مهم ديگر در اين نوع شبكه‌ها وجود دارد و آن عبارتست از اينکه شما مجبوريد که محدوده آيپي آدرس شبکه را درصورتي که در محدوده 192.168.0.X پيکربندي شده باشد، تغيير دهيد و از محدوده 192.168.1.X به جاي آن استفاده کنيد، زيرا " سرويس اشتراک اينترنت ويندوز " هم از محدوده 192.168.0.X استفاده مي‌کند و شما با تداخل آيپي آدرس‌هاي شبکه مواجه خواهيد شد. اين پيکربندي معمولاً با اجراي برنامه روتر انجام مي‌شود. ( اغلب با بازکردن IE و تايپ http://192.168.0.1 در خط آدرس آن، از هر کامپيوتر دلخواهي که به روتر متصل مي‌باشد، انجام مي‌شود. )

كارت‌هاي شبکه بي‌سيم
همانگونه که قبلاً اشاره شد، براي هر دستگاهي که مي‌خواهيد به شبکه بي‌سيم متصل باشد، نياز به خريد يک کارت شبکه بي‌سيم داريد. كارت‌هاي شبکه بي‌سيم با حداقل يکي از پروتکل‌هاي IEEE 802.11 تطابق دارند. چندين پروتکل وجود دارد که رايج ترين آنها 802.11a ، 802.11b  و 802.11g مي‌باشند.
از اين به بعد و براي سهولت، در اين مقاله به آنها به صورت a ، b و g اشاره مي‌کنم. تفاوت اصلي آنها در سرعت و فرکانس مي‌باشد. حداکثر سرعت b حدود 11 Mbps مي‌باشد و حداکثر سرعت a و g در حدود  54 Mbpsاست. ( تفاوت a وg  هم در فرکانس کاري آنها مي‌باشد. ) نسل بعدي اين پروتکل ها 802.11n  مي‌باشد که داراي حداکثر سرعت 540 Mbps مي‌باشد.

جدول 1: مقايسه انواع استانداردهاي شبكه‌هاي بي‌سيم

بعضي از كارت‌هاي شبکه بي‌سيم با سرعت 108 Mbps معرفي مي‌شوند، اما در حقيقت آنها داراي سرعت 54 Mbps مي‌باشند که توسط تکنيک هايي مثل فشرده سازي اطلاعات به اين سرعت مي‌رسند. براي بهره بردن از اين قابليت بايد کليه تجهيزات بي‌سيم شبکه ( روتر و کليه كارت‌هاي شبکه بي‌سيم ) از يک سازنده باشند و در غير اينصورت باز از همان سرعت پروتکل هاي عادي a ، b و g استفاده خواهيد کرد. متاسفانه اين قابليت هم در شبكه‌هاي ad-hoc کار نمي‌کند. پس باز هم به سرعت 11 Mbps قناعت پيشه کنيد!
در تئوري بهترين حالت اين است که تمام کامپيوترها مجهز به كارت‌هاي شبکه بي‌سيم 54 Mbps ( يا 108 Mbps ) باشند. هرچند سرعت شما به سرعت اتصال به اينترنت‌تان محدود مي‌شود. بنابراين اگر از شبکه شما براي انتقال فايل بين کامپيوترها استفاده نمي‌شود، خريد كارت‌هاي شبکه 54 Mbps هيچ کمکي به سرعت شما نمي‌کند چرا که سرعت اتصال به اينترنت شما بسيار پايين‌تر از اين مي‌باشد. براي مثال، اگر شما داراي يک اتصال 1 Mbps براي اينترنت مي‌باشيد، با داشتن كارت‌هاي 54 Mbps، داراي شبکه‌اي مي‌باشيد که قادر است اطلاعات را 54 بار سريعتر از اتصال اينترنت شما انتقال دهد. يک شبکه 11 Mbps با توجه به هزينه پايين تر، بهتر عمل خواهد کرد. ( هرچند آن هم 11 بار سريعتر از اتصال اينترنت شما خواهد بود ) بنابراين با خريد كارت‌هاي 11 Mbps ، در هزينه صرفه جويي خواهد شد.
نکته مهمتر براي ما در اين مقاله آن است که شبكه‌هاي ad-hoc قادر به انتقال اطلاعات با سرعت بالاي 11 Mbps نمي‌باشند، بنابراين خريد كارت‌هاي 54 Mbps براي اينگونه شبكه‌ها، در واقع دور ريختن پول است! اگر شما واقعاً نياز به سرعت 54 Mbps و يا 108 Mbps براي انتقال اطلاعات داريد، چاره‌اي جز خريد روتر و را‌ه‌اندازي شبکه براساس روتر نداريد.
پس اگر شما داراي يک اتصال اينترنت 1 Mbps يا حتي 2 Mbps باشيد، با داشتن كارت‌هاي 11 Mbps يا 54 Mbps يا 108 Mbps ، سرعت اينترنت شما از 1 Mbps يا 2 Mbps بالاتر نخواهد رفت.
اگر با وجود توصيه‌هاي فوق، باز هم تمايل به خريد كارت‌هاي 54 Mbps داريد، حداقل مطمئن باشيد کارتي که مي‌خريد با استاندارد 802.11b مطابقت داشته باشد ( يعني 802.11g باشد و نه 802.11a ) چرا که با آن مي‌توانيد شبکه بي‌سيم خود را بدون استفاده از روتر بسازيد، زيرا شبكه‌هاي ad-hoc فقط در 11 Mbps کار مي‌کنند. نکته مهم بعدي اين است که تمام كارت‌هاي 54 Mbps خريداري شده داراي يک استاندارد ( همه a يا همه g ) باشند، چرا که اگر در آينده قصد ارتقاء شبکه بي‌سيم خود را داشتيد و اقدام به خريد يک روتر کرديد، همه دستگاهها قادر به انتقال اطلاعات با سرعت 54 Mbps باشند.

انواع كارت شبكه بي‌سيم
دو نوع کارت شبکه بي‌سيم وجود دارد: USB و add on .
معمولاً كارت‌هاي add-on پايدارتر مي‌باشند. كارت‌هاي add on براي کامپيوترهاي روميزي مطابق با اسلات PCI ( و معمولاً مطابق با استاندارد PCI-Express X1 ) و براي نوت بوك‌ها مطابق با PC Card و يا Express Card توليد مي‌شوند. اگر نوت بوکتان داراي کارت شبکه بي‌سيم نمي‌باشد، بايد مطمئن شويد که داراي اسلات توسعه ( PC Card يا Express Card ) مي‌باشد يا نه؟ و سپس اقدام به خريد کارت مناسب با آن اسلات بکنيد.
نصب کارت شبکه طبق دستورالعمل همراه آن به سادگي انجام مي‌شود. مراحل آن معمولاً بدين ترتيب مي‌باشد: ابتدا کارت را به کامپيوترتان متصل کنيد. ( اگر يک کارت PCI را روي يک کامپيوتر روميزي نصب مي‌کنيد، ابتدا بايد دستگاه را خاموش کنيد و درب کيس را باز کنيد. ) سپس دستگاه را روشن کنيد و درايور آن را نصب کنيد.
كارت‌هاي شبکه بي‌سيم را در کامپيوترهايي که مي‌خواهيد به شبکه بي‌سيم متصل شوند، نصب کنيد. مرحله بعدي پيکربندي کامپيوتر ميزبان ( Host ) مي‌باشد که آن کامپيوتري است که به اينترنت متصل مي‌باشد. اگر شما اتصال اينترنت را با استفاده از يک روتر با پهناي باند بالا ( بدون قابليت بي‌سيم ) به اشتراک گذاشته ايد، هر کامپيوتري که به روتر متصل مي‌باشد را مي‌توانيد به عنوان ميزبان، پيکربندي کنيد. در اين حالت به خاطر داشته باشيد که همانگونه که قبلاً اشاره شد، مجبوريد که محدوده IP آدرس شبکه اتان را در صورتيکه از محدوده 192.168.0.X استفاده مي‌کند، تغيير دهيد تا از محدوده آدرس 192.168.1.X استفاده کند، چرا که سرويس اشتراک اينترنت ويندوز هم از محدوده آدرس 192.168.0.X استفاده مي‌کند و شما دچار تداخل آدرس IP خواهيد شد.

پيکربندي کامپيوتر ميزبان
حالا بايد کامپيوتر ميزبان ( همان کامپيوتري که به اينترنت وصل مي‌باشد ) را پيکربندي کرد. اگر اتصال اينترنت را با استفاده از يک روتر به اشتراک بگذاريد، هر کامپيوتري که به روتر متصل باشد، مي‌تواند به عنوان ميزبان پيکربندي شود. همانگونه که اشاره شد، نمي‌توانيد اين کامپيوتر را خاموش کنيد چرا که تمام کامپيوترهاي ديگر قادر به دسترسي به اينترنت نخواهند بود.
حالا مراحل زير را گام به گام دنبال کنيد:
1 ـ ابتدا گزينه Network Connections را از کنترل پانل باز کنيد. سپس روي گزينه Wireless Network Connection کليک راست کرده و گزينه Properties را انتخاب کنيد. ( به شکل1 دقت نماييد. )

شکل 1:  انتخاب wireless connection properties


2 ـ در پنجره باز شده به برگه Wireless Networks رفته ( به شکل 2 دقت کنيد ) و مطمئن شويد که هيچ شبکه بي‌سيمي از قبل در ليست Preferred Network وجود نداشته باشد، اگر وجود داشت، آن را انتخاب کرده و سپس توسط دکمه Remove آن را حذف کنيد.  

شکل 2 : Wireless network configuration


3 ـ سپس مطابق با شکل 3 روي دکمه Advanced کليک کرده و گزينه Computer to Computer (ad hoc)

Network only را انتخاب کنيد و دکمه Close را بزنيد.

شکل3 : Configuring our network as “ad-hoc”


4 ـ حالا از پنجره  Wireless Network Connection Propertiesدکمه Add را انتخاب کنيد. ( به شکل 4 دقت کنيد. ) با اين کار شبکه بي‌سيم را پيکربندي مي‌کنيم. شما بايد موارد زير را تعيين کنيد:
l نام شبکه ( Network Name SSID ) : اين بخش نام شبکه بي‌سيم شما را مشخص مي‌کند و کامپيوترها با اين نام به دنبال شبکه بي‌سيم مي‌گردند.
l اعتبار سنجي شبکه ( Network Authentication ) : آيا اعتبار کامپيوترهاي شبکه هنگام برقراري ارتباط بررسي بشود يا نه؟ براي شبكه‌هاي ad hoc مقدار آن را Open انتخاب کنيد.
l رمز گذاري داده‌ها ( Data Encryption ) : نوع سيستم رمز گذاري داده‌ها را WEP انتخاب کنيد.
l کادر " The Key is Provided for me automatically" را از حالت انتخاب خارج کنيد.
l پيکربندي کليد شبکه ( Network Key ) : کليد شبکه، يک اسم رمز مي‌باشد که براي رمز گذاري داده‌هاي انتقالي در شبکه استفاده مي‌شود. اين رمز گذاري مانع از دسترسي همسايگان به امواج شبکه بي‌سيم شما شده و از ديدن و درنتيجه حذف کردن فايل‌هاي شما توسط آنها جلوگيري مي‌کند، حتي اگر سرويس اشتراک فايلها در شبکه شما فعال باشد. البته لازم بذکر است که آنها امواج شبکه شما را توسط كارت‌هاي شبکه بي‌سيم خودشان دريافت مي‌کنند، ولي بدليل نداشتن کليد شبکه، قادر به ورود به شبکه شما نيستند. اين کليد هر ترکيبي از حروف و اعداد مي‌تواند باشد.

شکل 4: تنظيمات شبکه بي‌سيم


بعد از زدن دکمه OK، نام شبکه شما در بخش Preferred Network ديده مي‌شود. ( به شکل 5 دقت کنيد ) شبکه شما با يک علامت ضربدر قرمز مشخص شده است که کاملاً طبيعي است و جاي هيچ نگراني از بابت آن ضربدر قرمز نيست!

شکل 5 : نام شبکه شما در ليست قرار مي‌گيرد


حالا بايد اتصال اينترنت را در شبکه به اشتراک گذاشت. توجه داشته باشيد که اين عمل بر روي کارت شبکه‌اي که به کانکشن اينترنت متصل است، انجام مي‌شود و نه بر روي کارت شبکه بي‌سيم دستگاه. براي اينکار مجدداً گزينه Network Connections را از کنترل پانل باز کرده و روي کارت شبکه‌اي که به کانکشن اينترنت متصل مي‌باشد، کليک راست کرده و گزينه Properties را انتخاب کنيد. در پنجره نمايان شده، برگه Advanced را انتخاب کرده و کادر "Allow Other Network Users to Connect …" را انتخاب کرده و کادر پاييني يعني "Allow Other Network Users to Control …" را از حالت انتخاب خارج کنيد. ( به شکل 6 دقت کنيد. )

شکل6 : اشتراک اتصال اينترنت


ـ دکمه OK را بزنيد. حالا تحت نام کارت شبکه‌اي که به اينترنت متصل مي‌باشد، عبارت "Shared" را مي‌بينيد. ( به شکل7 دقت کنيد. ) در عين حال هنوز اتصال کارت شبکه بي‌سيم شما به صورت "Not Connected" نمايان مي‌باشد که اين امر هم کاملاً طبيعي است. تنها در صورتيکه هر کامپيوتر ديگري به شبکه شما بپيوندد، اين عبارت به "Connected" تغيير مي‌کند.

شکل7 : اشتراک اينترنت انجام شده است


حالا کامپيوتر ميزبان بدرستي پيکربندي شده است و بايد کامپيوترهاي ديگر را براي استفاده از شبکه بي‌سيم پيکربندي کرد.

پيکربندي ساير کامپيوترها
پيکربندي ساير کامپيوترها بسيار ساده مي‌باشد و کافي است که مراحل زير را دنبال کنيد:
ـ اگر کامپيوتر ميزبان را بدرستي پيکربندي کرده باشيد، شبکه بي‌سيم شما در ليست شبكه‌هاي در دسترس تمام کامپيوترهايي که داراي کارت شبکه بي‌سيم مي‌باشند، قرار  مي‌گيرد. فقط کافيست که روي آيکون شبکه بي‌سيم واقع در نوار وظيفه کليک کرده و يا روي آيکون  Wireless Network Connection در پنجره Network Connections در کنترل پانل دابل کليک کنيد تا ليست شبكه‌هاي بي‌سيم در دسترس را ببينيد. همانگونه که در شکل 8 مشخص شده است، امکان دارد که چندين شبکه بي‌سيم را ببينيد. ( بقيه شبكه‌ها مربوط به شبكه‌هاي بي‌سيم اطراف شما مي‌باشند و اينجاست که رمز گذاري داده‌ها اهميت پيدا مي‌کند. ) حال بايد روي شبکه خودتان ( مثلاً MyHome ) کليک کنيد.

شکل8 : شبكه‌هاي بي‌سيم در دسترس


ـ بعد از دابل کليک کردن بر روي نام شبکه مورد نظر، مطابق با شکل 9 ويندوز کليد شبکه مذکور را از شما مي‌خواهد. ( همان کليدي که در مرحله 4 وارد کرديد. )

شکل 9 : ورود کليد شبکه


ـ بعد از وارد کردن کليد شبکه ( 2بار )، وضعيت شبکه شما به صورت "Acquiring Network Address" ظاهر مي‌شود و سپس به وضعيت "Connected" تغيير حالت مي‌دهد.

شکل 10: حالا شما به شبکه متصل شده‌ايد.


ـ بعد از اين، از طريق اتصال اينترنت موجود بر روي کامپيوتر ميزبان، به اينترنت دسترسي خواهيد داشت. اگر تمام کارها را مطابق با مقاله انجام داده‌ايد مي‌توانيد صحت آنها را از طريق باز کردنIE  و سر زدن به سايت www.ComputerNews.ir بررسي کنيد!
ـ حالا روي کامپيوتر ميزبان عبارت "Connected" براي ارتباط بي‌سيم ظاهر مي‌شود. ( به شکل 11 دقت نماييد. ) همانگونه که اشاره شد، تنها وقتي عبارت "Connected" در کامپيوترهاي ميزبان ظاهر مي‌شود که حداقل يکي از کاميپوترهاي ديگر به آن متصل شده باشند.


شکل 11: شبکه بي‌سيم کامپيوتر ميزبان به صورت Connected ظاهر مي‌شود.

ـ براي اطمينان بيشتر، پيشنهاد مي‌شود ساير شبكه‌هايي که در بخش "Preferred Networks" نمايان مي‌شوند و مربوط به شبکه همسايگان گرامي مي‌باشند را در تمام کامپيوترها حذف کنيد.
حالا که شما اينترنت را در شبکه بي‌سيم خود به اشتراک گذاشته ايد، مي‌توانيد شبکه را براي اشتراک چاپگرها و فايل‌ها هم پيکربندي کنيد. نکته مهم آن است که فايل‌ها يا چاپگرها ( برخلاف اينترنت ) نيازي نيست که بر روي کامپيوتر ميزبان قرار داشته باشند و مي‌توانند روي هر کامپيوتري که در شبکه قرار دارد، باشند. ( هرچند بهتر است که چاپگرها روي کامپيوتر ميزبان باشند، زيرا اين کامپيوتر مجبور است که به خاطر تامين اينترنت براي سايرين، هميشه روشن باشد و درنتيجه چاپگر شما هم هميشه فعال خواهد بود. )
سخن پاياني
را‌ه‌اندازي شبکه بي‌سيم به صورت ad hoc يکي از روش‌هاي پر کاربرد در منازل و دفاتر اداري کوچک مي‌باشد که با توجه به سادگي پياده سازي آن، به راحتي توسط کاربران عادي قابل انجام است. لذا در صورتيکه نياز به سرعت بالا در انتقال اطلاعات بين کامپيوترها نداريد، شک نکنيد که بهترين گزينه همين روش ad hoc مي‌باشد.

لينک | پنجشنبه 14 آبان1388 | موضوع : مقالات آموزشی | نویسنده :مجتبی جعفری (Romper) |

 
هاورکرافت شخصی داشته باشین

Air Board Personal Hovercraft

نام این هاورکرافتِ شخصی، AirBoard هستش که بنزین سوزه و می تونه روی بالشتکی از هوا با سرعتی معادل تقریبا 24 کیلومتر بر ساعت حرکت کنه.

قیمت این وسیله 14000 دلاره که می تونه روی جاهای سفت و سخت، آسفالت، چاله و چوله های کم عمق، چمن و زمین های خیس حرکت کنه اما نمی تونه مستقیما روی آب و شن و زمین های کثیف بره.

جالبه که قیمت این وسیله معادل پژو 405 توو ایرانه. قیمتش بالاست ولی لااقل آتیش نمی گیره که تووش زنده زنده کباب شی !!!

برای عکس های بیشتر روی ادامه مطلب کلیک کنید




ادامه مطلب

لينک | دوشنبه 11 آبان1388 | موضوع : اخبار تکنولوژی های جدید | نویسنده :مجتبی جعفری (Romper) |

 
10 توصیه برای مدیریت زندگی

پیر مرد نجاری به زمان بازنشستگی خود نزدیک شده بود. بنابراین نزد کارفرمایش رفت و گفت که می خواهد ساخت خانه و ساختمان را کنار بگذارد و وقتش را با آرامش در کنار همسرش بگذراند و از دیدن فرزندان و نوه هایش لذت ببرد. او با این کار حقوقش را از دست می داد، اما به بازنشستگی نیاز داشت. به هر حال او و همسرش می توانستند زندگی را بدون مشکل خاصی بگذرانند.
مرد کارفرما از این که یکی از بهترین افرادش را از دست می داد ناراحت شد و از مرد نجار خواست تا فقط یک خانه ی دیگر برایش بسازد. مرد نجار قبول کرد.

ولی مشخص بود که این بار زیاد دل به کار نمی دهد. او از مهارتش استفاده نکرد و برای ساختن خانه، مصالح نامرغوب به کار برد. نجار پیر راه خوبی را برای پایان دادن به کاری که عمر خود را وقت آن کرده بود، انتخاب نکرد. زمانی که مرد نجار ساختن خانه را تمام کرد، کارفرما به دیدن او آمد، کلید در اصلی را به طرف مرد نجار گرفت و گفت: این هدیه من به توست. مرد نجار یکه خورد. وای! چقدر بد شد! اگر می دانست که این خانه مال اوست، به گونه ای کاملا متفاوت آن را می ساخت.

در مورد ما هم همین طور است. ما نیز در حال ساخت زندگی خود هستیم. هر بار یک روز از آن را می سازیم و اغلب کمتر از آنچه می توانیم برای ساختن آن مایه می گذاریم. در پایان شوکه می شویم چون پی می بریم که در خانه ای که خودمان ساختیم باید زندگی کنیم. اگر می توانستیم آن را از نوبسازیم، به گونه ی کاملا متفاوتی این کار را انجام می دادیم. اما نمی توانیم زمان از دست رفته را برگردانیم. شما همان مرد نجار هستید. هر روز بر میخی چکش می زنید یا دیواری علم می کنید. زندگی یک پروژه ی بگیر و بساز است. نگرش ها و انتخاب های شما امروز خانه ای می سازد که افراد در آن زندگی خواهید کرد، پس عاقلانه آن را بسازید.


1) پس فهرستی از رویاهای خود تهیه کنید و در آن همه ی آنچه را می خواهید انجام دهید، باشد، داشته باشید و یا جاهایی را که قصد دارید بروید بنویسید. هر سال یکی از رویاهای خود را به همراه خانواده عملی سازید.
2) زمانی که می خواهید عملکرد یک فرد را بالا ببرید، خواه این فرد یک کودک باشد خواه یک همکار، با دادن بالاترین نمره ی ممکن شروع کنید. سپس از او بخواهید که یک نامه بنویسد، به گونه ای که انگار آخر سال است و او باید کارهایی را که برای توجیه نمره خود انجام داده، در آن شرح دهد.
3) حتما مهمترین درسی را که از پدر، مادر یا یک فرد بزرگتر آموخته اید به فرزندان خود بیاموزید.
4) زمانی را برای آموختین چگونگی کار با پول به فرزندانتان اختصاص دعید. به آنها کمک کنید تا یک برنامه ی ساده درآمد و هزینه را آماده و آن را دنبال کنند.
5) فرزند یا عزیز خود را به محل کار خود ببرید. اجازه دهید با محیط کار شما آشنا شود. به او بگویید که روز خود را چگونه می گذرانید.
6) همید امروز مچ فرزند خود را در حال انجام یک کار خوب بگیرید و او را تشویق کنید.
7) یکی از برنامه های تلویزیونی مورد علاقه ی آنها را ببینید و نشان دهید که مثل آنها، آن را دوست دارید.
8) در اولین فرصت ممکن، یک بعد از ظهر تماس بگیرید و آن را با کسانی که برای شما ارزش دارند، بگذرانید.
9) به خود قول دهید که هیچگاه رابطه ی خود را با فرزند یا عزیز خود در هر سنی که هستند و حتی زمانی که خانه را به نشانه ی قهر ترک می کنند قطع نکنید.
10) فهرستی از ارزشهایی را که برایتان مهم هستند، تهیه کنید. از خود بپرسید آیا به نحوه مؤثری آنها را به فرزندان منتقل می کنید.

لينک | دوشنبه 4 آبان1388 | موضوع : موفقیت | نویسنده :مجتبی جعفری (Romper) |

 
عکس از بهترین استخرها

12 Unusual Swimming Pools


برای حس کردنه تفاوت استخرهای ما و اوونا و همچنین قبطه خوردن، روی ادامه مطلب کلیک کنید


ادامه مطلب

لينک | یکشنبه 3 آبان1388 | موضوع : عکس | نویسنده :مجتبی جعفری (Romper) |

 
مقدمه ای بر تکنولوژی WPF یا Windows Presentation Foundation

تکنولوژي هاي جديد دات نت

از زمان ظهور دات نت، با اولين نسخه آن يعني دات نت فريم ورک 1.0 که همراه با ويژوال استوديو 2002 همراه بود، تا به امروز که شاهد نسخه 3.5 از اين تکنولوژي مي باشيم، تغييرت بسياري در آن به وجود آمده است. افزوده شدن کلاس هاي جديد در غالب فايل هاي DLL اي که ما آن ها را دات نت اسمبلي مي ناميم، همچنين اضافه شدن تکنولوژي هاي جديد به اين مجموعه باعث گسترش کاربرد اين مجموعه شده است.

همزمان با ظهور نسخه 3.0 دات نت فريم ورک، تکنولوژي هاي جديدي نيز به وجود آمد. اين تکنولوژي ها، که بر خلاف تصور سطحي و ابتدايي بسياري از برنامه نويسان در ابتداي ظهور آن ها، صرفا اضافه شدن تعدادي دات نت اسمبلي به دات نت اسمبلي هاي قبلي، تلقي مي شد، تغييرات بسياري را در امر برنامه نويسي دات نت به وجود آورد. تکنولوژي WPF به همراه تکنولوژي هاي WCF و WWF با نسخه 3.0 دات نت فريم ورک توسط شرکت ماکروسافت معرفي شدند.

در ادامه توضيح مختصري راجع به WCF و WWF خواهيم ديد و سپس به بحث اصلي، يعني WPF خواهيم پرداخت.

Windows Communication Foundation

تکنولوژي WCF که مخفف Windows Communication Foundation مي باشد، ترکيب شده تکنولوژي هاي ارتباطي مختلفي که در دات نت فريم ورک 2.0 وجود داشت، مي باشد. در دات نت فريم ورک 2.0 ، تکنولوژي هاي ارتباطي بين سيستم ها عبارت بودند از، ارتباطات بر پايه Soap ، ارتباطات دودويي بهينه شده و... . تکنولوژي WCF که با نام Indigo نيز شناخته مي شود، تمامي جنبه هاي ارتباطي بين سيستم ها را درون خود دارد. جهت مطالعه بيشتر به آدرس Windows Communication Foundation و WCF مراجعه نماييد.

Windows Workflow Doundation

تکنولوژي WWF که مخفف Windows Workflow Foundation مي باشد و بيشتر به صورت مخفف WF نشان داده مي شود، امکان پياده سازي و حل مسائل پيچيده دنياي پيرامون خود را که در حالت عادي ممکن است حل آن بسيار پيچييده و دشوار به نظر آيد، به صورت بصري و بسيار ساده ارائه مي کند. در کل دو شکل Sequential و State Machine را مي توانيد با WF پياده سازي کنيد. به عنوان نمونه بسيار ساده به راحتي مي توانيد يک دستور چند شرطي را به صورت کاملا انتزاعي و با امکاناتي که براي طراحي آن موجود است، پياده سازي نماييد. به عنوان مثال، نمونه زير، پياده سازي يک دستور چهار شرطي در سيستم WF از نوع Sequential مي باشد.

 جهت اطلاعات بيشتر در مورد WF به آدرس هاي زير مراجعه نماييد

Windows Workflow Foundation و WWF

نکته: تکنولوژي ديگري که همراه با دات نت فريم ورک 3.0 منتشر شد، Windows CardSpace بود که با نام info Card نيز معروف مي باشد. که جهت اطلاعات بيشتر مي توانيد به آدرس هاي زير مراجعه نماييد

Info CardSpace

معرفي تکنولوژي WPF

بررسي نياز به اين تکنولوژي

پس از توضيح و اشارات مختصري درباره تکنولوژي هاي همپاي تکنولوژي WPF که ارتباط بسيار نزديکي نيز با هم دارند، اينک به معرفي تکنولوژي WPF خواهم پرداخت.

WPF سر آغاز سه کلمه Windows Presentation Foundation مي باشد. هر کسي که تا به حال در محيط هاي گرافيکي و يا به اصلاح برنامه نويسان، محيط هاي ويژوال، برنامه نويسي کرده باشد، يقينا با مفاهيم Windows Application ها که گاها به صورت مخفف WinApp نيز ناميده مي شوند، آشنا مي باشد. اين نوع برنامه نويسي همزمان با ورود سيستم عامل هاي ويندوز در دنياي کامپيوتر شروع شد و روز به روز با به وجود آمدن زبان هاي متفاوت جايگاه محبوبتري نزد برنامه نويسان پيدا کرد. در اينجا قصد توضيح دادن اين نوع برنامه نويسي را ندارم. فقط نگاهي گذرا به آن خواهم داشت تا مفهوم تکنولوژي WPF برايتان روشن تر گردد.

همانطور که مي دانيد، Windows Application ها، از API هاي سيستم عامل مربوطه ( که اکثرا ويندوز XP نيز مي باشد) براي ترسيم عناصر گرافيکي يا همان عناصر ويژوال، استفده مي کنند. به عنوان مثال براي ترسيم انواع دکمه ها، فرم ها و بسياري از عناصرديگري که با آن ها آشنا هستيد، از توابع API ويندوز کمک گرفته مي شود. همين مسئله باعث ايجاد محدوديت براي برنامه نويسان در ايجاد کنترل هاي سفارشي با ظاهر دلخواه خود شده بود. اگر چه با ابزار هاي گرافيکي که در دات نت فريم ورک 2.0 نيز وجود داشت، مي توانستيم تا حد خوبي اقدام به ايجاد کنترل هاي مورد دلخواه خود را بکنيم، اما اين موضوع نياز به دانستن اطلاعات زياد در مورد ايجاد کنترل هاي سفارشي و همچنين نوشتن گاها کد هاي بسيار زيادي جهت ايجاد کنترل مورد نظر مي بود. اين به آن دليل بود که قالب و اساس اوليه کنترل ها بسته بود و نمي توانستيد به راحتي کنترل ها را شخصي سازي نماييد. در بهترين حالت، يک برنامه نويس ماهر ميتوانست با ارث بري از کلاس Control اقدام به ايجاد يک کنترل جديد با ظاهر و امکانات مورد نظر خود بکند. به عنوان مثال کنترل منوي زير را اخيرا براي شرکتي طراحي کردم. تنها، يکي از کلاس هاي اين منو داراي 1000 خط کد به غير از کدهاي توليد شده توسط خود دات نت مي باشد. شايد 1000 خط، براي يه برنامه نويس بسيار ناچيز باشد. ولي چنانچه بخواهيد تمامي کنترل هاي برنامه هاي خود را، خودتان طراحي کنيد، مي بينيد که زمان زيادي از وقت شما صرف نوشتن کد ها مي گردد.

اين مسئله زماني نمود بيشتري پيدا ميکند که بخواهيد، اکثر جنبه هاي يک کنترل را در کنترل سفارشي خود قرار دهيد. به عنوان مثال به دليل قرار گرفتن حالت هاي مختلف گراديان بر روي منو، استفاده از امکانات قبلي مانند ترسيم متن آيتم به صورت اتوماتيک توسط خود منو و يا ترسيم کليد هاي ميان بر آيتم و .... از بين مي رود و تمامي اين موارد بايستي با کد و توسط شما ايجاد گردد. درست است که مي توان از کنترل هاي ايجاد شده توسط خودتان به کرات و در برنامه هاي مختلف استفاده کنيد ولي تجربه نشان داده است که گاهي نيز مجبور به ايجاد کنترل ديگري شويد. اين به اين دليل نيست که شما الزاما کنترل قبلي خود را خوب طراحي نکرده ايد. عوامل زيادي مي توانند باعث بروز اين مورد شوند که پرداختن به آن ها از حوصله اين بحث خارج است.

معرفي WPF

حال که تا حدودي با مشکلات برنامه نويسي هاي WinApp به روش جاري شديد، در ادامه به معرفي WPF خواهم پرداخت و در ادامه بحث هاي اين آموزش، خواهيد ديد که WPF چگونه بسياري از مشکلات موجود را مرتفع مي کند.
تکنولوژي WPF به روشي ديگر عمل مي کند. در واقع علاوه بر اينکه اين تکنولوژي همچنان داراي کنترل هاي سابقي که آن ها را مي شناسيد، مي باشد، مي تواند دسترسي به بيشتر جنبه هاي کنترل ها را براي شما فراهم کند. در واقع قدرت WPF در اين است که اساس و پايه هر کنترلي مانند برنامه نويسي قبل، بسته نيست و اين شما هستيد که به WPF خواهيد گفت که متن روي کنترل را به چه صورتي طراحي کنيد. يا پس زمينه کنترل يا کناره هاي آن را به آن صورتي که شما مي گئييد طراحي کند. به همين منظر نيز داراي ابزارهاي بسيار زيادي جهت کار براي طراحي کنترل هاي شما مهيا مي کند. ابزارهايي مانند قلم مو هاي گراديان با تعداد رنگ هاي نامحدود، انواع ابزار هاي گرافيکي براي ترسيم شکل دلخواه شما، امکان ايجاد افکت هاي بسيار زيبا و متنوع بر روي هر قسمتي از کنترل که بخواهيد، وجود افکت هاي از پيش تعريف شده، امکان طراحي هاي 2 بعدي و نيز 3 بعدي، امکان ايجاد انيميشن و بسياري از امکانات ديگر که به مرور با آن ها آشنا خواهيد شد.

پايه و اساس WPF بر Directx استوار مي باشد. اين موضوع سبب مي شود که بتوان از بسياري از جنبه هاي گرافيکي بدون ايجاد سربار اضافي بر روي برنامه بهره برد و در واقع برنامه هايي با ظاهر هايي بسازيد که ساختن آن ها با برنامه نويسي هاي پيشين يا غير ممکن و يا متحمل کار بسيار زيادي بوده است. اگرچه نقطه قوت اين تکنولوژي اعمال گرافيکي، انيميشن و .. مي باشد، ولي اين بدان معني نيست که نمي توان با WPF اقدام به ايجاد فرم ها و کنترل هاي سابق نمود. اين تکنولوژي به شما امکان استفاده از کنترل هاي پيشين را مي دهد و همچنين برنامه نويسي WinApp را به همان شکلي که مي شناسيد، براي شما مقدور مي سازد. علاوه بر اين موارد، WPF امکان کار با اسناد متني، کنترل کردن بر روي نحوه Print شدن آن ها و ... را براي شما مهيا مي سازد.
نکته ديگري که در مورد WPF بايد بدان اشاره کرد، امکان برنامه نويسي به شيوه اي است که شايد تاکنون امثال آن را يا نديده ايد و يا بسيار کم ديده ايد و آن هم برنامه نويسي بر اساس عناصري در WPF مي باشد که به آن ها Page مي گويند. اين نوع برنامه نويسي را مي توان به نوعي شبيه سازي برنامه هاي وب نامگذاري کرد. اين نوع برنامه نويسي WPF Browser Application نام دارد که در بخش هاي بعدي تفاوت آن را با برنامه نويسي معمولي WPF خواهيد آموخت. توسط اين مدل برنامه نويسي، مي توانيد اسمبلي هاي ايجاد شده را در مرورگر وب نظير Internet Explorer بدون پيغام هاي امنيتي که معمولا در صفحات وب وجود دارند، نمايش دهيد. به عنوان مثال عکس زير نمونه اي از نحوه استفاده از Page جهت نمايش وب سايت ها در يک برنامه WPF مي باشد.

البته استفاده از امکانات مختلف گرافيکي به مانند آنچه در برنامه هاي WPF امکان پذير است، در برنامه هاي بر پايه صفحه ، امکان پذير نيست. دلايل اين موضوع را در بخش هاي آتي خواهيد دانست.

User32، GDI، GDI+ و DirectX

به طور کلي برنامه هاي ويندوزي از دو امکان، توابع User32 و GDI/GDI+ براي ترسيم عناصر گرافيکي استفاده مي کنند که User32 امکان ترسيم عناصر ويژوال را با ظاهر عادي مهيا مي کند. عناصري مانند فرم ها، دکمه ها و ... و GDI/GDI+ امکانات گسترده تري را جهت ايجاد برخي اعمل گرافيکي مانند ايجاد گراديان ها و ... را مهيا مي کنند.

شرکت ماکروسافت به دليل محدوديت هايي که در هر يک از دوبخش فوق، وجود داست، اقدام به ايجاد کتابخانه سطح بالايي به نام DirectX کرد.( حرف X مي تواند جايگزين کلماتي مانند Sound و .. شود). اين ابزار که امروزه نيز از آن استفاده هاي زيادي ميشود،( از جمله در ايجاد بازي هاي سه بعدي و ... ) با بهره گيري از توان کارت هاي گرافيکي با بهره بري بالا، حداکثر توان آن را براي ايجاد گرافيک هاي قوي به کار مي برد.

اما با قدرت زياد اين کتابخانه، به دليل برقراري ارتباط مشکل با ان و نياز به کد نويسي هاي زياد، اين ابزار بيشتر در تهيه بازي ها و برنامه هاي گرافيکي مورد استفاده قرار گرفت و جايگاه زيادي در توسعغه برنامه هاي تجاري پيدا نکرد.

تکنولوژي WPF تمامي اين مشکلات را مرتفع کرد و در واقع کاربر را از درگير کردن نوشتن کدهاي زياد و گاه طاقت فرسا به صورت مستقيم در DirectX ، رهايي داد. WPF از تمامي قدرت DirectX جهت ايجاد گرافيک هاي 2 بعد، 3 بعدي، ايجاد انيميشن ها، استفاده مي کند. همچنين ابزار هاي بسياري را جهت طراحي کردن در اختيار شما قرار مي دهد. علاوه بر اين DirectX به جهت اينکه به خوبي با مفاهيم Texture، Gradient و ... تطبيق پيدا مي کند، دراراي سرعت بالاتري نسبت GDIو GDI+ مي باشد. به اين دليل که اين تکنولوژي ها براي رندر کردن از روش پيکسلي و الگوريتم هاي آن که اصطلاحا Pixel By Pixel Instruction گفته مي شود، استفاده مي کنند.

يکي ديگر از مشکلاتي که کار کردن با DirectX به صورت مستقيم وجود داشت( دارد) به دليل نوع بهينه سازي و نحوه رندر کردن اشکال توسط کارت هاي ويديويي متفاوت بود، که با WPF اين مشکل نيز مرتفع شده است.

يکي از مهمترين اهداف WPF استفاده از GPU به جاي CPU جهت انجام روتين هاي پيچيده گرافيکي مي باشد که اين امر باعث آزاد بودن CPU بوده که ميتواند به پردازش هاي ديگر در سيستم رسيدگي کند.

WPF به عنوان يک API سطح بالا

همناطور که پيشتر توضيح داده شد، WPF قادر به انجام کار هاي بسياري براي شما خواهد بود که قبل از آن، انجام آن ها بسيار مشکل و زمان بر ونياز به نوشتن کد هاي بسياري مي بود. در ادامه به صورت ليست وار، تعدادي از امکانات اين تکنولوژي همراه با توضيح مختصر آمده است:

طرح بندي اجزا و عناصر برنامه شبيه برنامه هاي تحت وب: WPF از عناصر جديد و بسياري دي تراز بندي و چيدمان کنترل ها و عناصر مختلف بر روي فرم هاي برنامه شما استفاده ميکند. توسط اين ابزار ها که از کلاس پايه Panel ارث بري مي کنند، قادر خواهيد بود که چديمان عناصر خود را چنان تنظيم کنيد، که برنامه شما در رزولوشن هاي مختلف به خوبي قابل نمايش باشد.

نکته مهم و بسيار حياتي در هنگام کار کردن با تکنولوژي WPF

يک برنامه نويس WPF حرفه اي حتي المقدور از خواص Width و Height اشياء براي چيدمان آن ها استفاده نخواهد کرد. يقينا برايتان غير قابل تصور است. به اين دليل که تا الان هر عنصري که در برنامه خود استفاده کرده ايد، پس از نامگذاري آن اقدام به ايجاد سايز مناسب آن نمده ايد. اما در نمونه برنامه ها و بخش هاي آتي خواهيد ديد، که کمترين استفاده را از اين دو خاصيت خواهيم کرد. اين موضوع به دليل ماهيت WPF و غير وابسته بودن به رزولوشن صفحه نمايش مي باشد که در قسمت بعدي بيشتر به شرح آن خواهم پرداخت.

برخي از امکانات و جنبه هاي برنامه نويسي با WPF

مدل قدرتمند و قوي طراحي

توسط WPF از درگير شدن با پيکسل ها و کار کردن بر روي ان ها رهايي خواهيد يافت و در واقهع با ابجکت ها و اشکال سطح بالا تعامل خواهيد داشت. همچنين قادر به ايجاد اشکال سه بعدي و... خواهيد بود.

نکته: يکي از محدوديت هايي که WPF داراست، کار کردن با اشکال سه بعدي مي باشد. در واقع گرچه با WPF به خوبي مي توانيد اقدام به ترسيم اين نوع اشکال نماييد، اما از لحاظ کارايي، اشکال سه بعدي ايجاد شده با WPF کارايي کمتري نسبت به نوع هاي مشابه و توليد شده با DirectX و يا OpenGL به صورت مستقيم مي باشد. به همين دليل چنانچه قصد نوشتن بازيهاي سه بعدي Real Time را داريد، WPF ممکن است انتخاب خوبي نباشد. چون ممکن است آن کارايي را که انتظار داريد براي شما فراهم نکند. در اين موارد مي توانيد از محيط هاي ديگر و مناسب اينگونه برنامه ها استفاده نماييد.

انيميشن، صدا و تصوير

همانطور که پيش تر نيز توضيح داده شد، علاوه بر انجام اعمال بسياري که مي توانيد، با اشکال انجام دهيد، اعم از چرخش، بزگر نمايي، کوچک نمايي و ...، نيز مي توانيد اقدام به ايجاد انيميشن هاي زيبا توسط WPF نماييد. همچنين قادر خواهيد فايل هاي صوتي و ويديويي را به خوبي به کار بگيريد.

استايل ها و قالب ها

همواره يکي از دغدغه هاي برنامه نويسان ويندوز، ايجاد ظاهري زيبا براي فرم ها و عناصر خود بوده است. تا آن جا که اکثر برنامه نويسان به سراغ کامپوننت هاي شرکت هاي ثالث که آن ها را Third party Components مي ناميم، رفته و از آن ها به کرات در برنامه هاي خود استفاده مي کرده و مي کنند. من جداي از اينکه اين کامپوننت ها چقدر در عمل و کارايي درست و حساب شده عمل مي کنند، و اينکه با معيار هاي زبان فارسي متناسب هستند ( که اکثرا نيستند)، دليل ديگري براي استفاده نکردن از اين نوع کامپوننت ها دارم و ان هم وابستگي برنامه شما به آبجکت ها و عناصر شرکت هاي ديگر خواهد بود. اين موضوع مي تواند در طولاني مدت و استفاده مکرر از اين نوع ابزار ها، ضررهاي جبران ناپذيري به برنامه نويسيان وارد نمايد. با تکنولوژي WPF تقريبا تمامي اين مشکلات رفع شده و به راحتي مي توانيد اقدام به ايجاد استايل ها و قالب هاي متناسب با معيار خود و برنامه خود، نماييد. چنانچه برنامه نويسي مسلط به اين موارد گردد، مطمئن هستم که ديگر به هيچ عنوان به دنبال ابزار هاي ظاهر سازي برنامه ها و کامپوننت هاي متفاوت نخواهد رفت.

دستورات ( Commands)

يکي از جنبه ها و امکانات فوق العاده زيبا و قدرتمند WPF استفاده از Command ها براي هماهنگ سازي واکنش هاي مختلف کاربر و هماهنگ سازي قسمت هاي مختلف برنامه به کار مي رود که در جاي خود، مفصلا به شرح آن خواهم پرداخت. فعلا به همين قدر بسنده کنم که با يادگيري و استفاده از اين ابزار، فوق العاده شگفت زده خواهيد شدد و خواهيد ديد که برنامه هاي شما با اين ابزار به چه درصد بالايي از کارايي خواهد رسيد.

برنامه هاي بر پايه صفحه : کمي پيش تر در اين مورد صحبت کردم و نمونه عکس برنامه اي را هم که از صفحات استفاده شده بود را مشاهده کرديد. در موقعيت مناسب تري بر روي اين نوع برنامه نويسي نيز تمرکز بيشتري خواهيم کرد.

ايجاد واسط کاربر به صورت توصيفي

زماني که نامي از تکنولوژي WPF برده ميشود، در ادامه آن نامي هم از XAML مي آيد. XAML که يک زبان توصيفي و XML Based مي باشد، توسط ويژوال استوديو به کار گرفته مي شود تا شما بتوانيد فرم ها و عناصر خود را با سرعت بيشتري ايجاد نماييد. به جرات مي توانم بگويم که استفاده از XAML در سرعت توليد برنامه هاي شما، تاثير چشمگيري خواهد داشت. در ابتدا ممکن است در استفاده از آن کمي دچار سردرگمي شويد، تا آن جايي که بخواهيد آن را رها کنيد و اقدام به ايجاد محيط واسط برنامه خود با کد نماييد. اما با کمي تلاش و مسلط شدن بر آن ، لز کار کردن با آن لذت خواهيد برد، تا جايي که هيچ وقت دوست نداريد ديگر سراغ کد نويسي برويد!!! ( البته اين يه امر محال خواهد. چون حتما نياز به کدنويسي هم خواهيد داشت)

عدم وابستگي WPF به رزولوشن

بدون شک يکي از جنبه هاي فوق العاده مفيد و قوي WPF عدم وابستگي آن به رزولوشن صفحه نمايش است. اگر به خاط داشته باشيد، کمي پيش در يک نکته مهم، اين موضوع را يادآور شدم که يک برنامه نويس حرفه اي در WPF حتي المقدور از خواص Width و Height عناصر براي چيدمان آن ها استفاده نخواهد کرد. دليل اين گفته را در ادامه متوجه خواهيد شد.

برنامه هاي تحت ويندوزي که تا کنون و با تکنولوژي هاي موجود نوشته مي شدند( مي شوند) وابستگي زيادي به رزولوشن صفحه نمايش دارند. يه عنوان مثال فرم هاي شما، که در صفحه نمايش شما با رزولوشن 1024 * 768 به خوبي طراحي شده اند، ممکن است در يک کامپيوتر ديگري با رزولوشن بالاتر از ان (اين امر در Laptop ها بسيار معمول مي باشد. علاوه بر اينکه ان ها در بيشتر مواقع از تراکم 120 DPI استفاده مي کنند. در صورتي که مونيتور هاي CRT معمولا از تراکم 96 DPI استفاده مي کنند. "گر چه قابل تغيير مي باشد" ) کوچک شود، و بر عکس، در يک سيستم با رزولوشن پايين، قسمتي از فرم هاي شما از صفحه نمايش خارج گردد.

اما با WPF اين مشکلات مرتفع مي گردد. دليل آن هم استفاده از سيستم خاصي براي اندازه گيري اجزاء و عناصر برنامه شما، مي باشد. عناصر، اعم از دکمه ها، فرم ها و هر شي قابل اندازه گيري با واحدي با نام DIU (Device Independent Unit ) اندازه گيري مي شوند. هر يک DIU معادل با 1/96 (1 تقسيم بر 96) هر اينچ مي باشد. در واقع مي توان گفت هر DIU در صفحه نمايشي با تراکم پيکسل استاندارد يعني 96 DPI ، دقيقا برابر با 1 پيکسل فيزيکي در صفحه نمايش مي باشد. حال اگر از DPI بالاتري استفاده گردد، طبيعتا هر يک DIU (در همان رزولوشن قبلي)کمتر از 1 پيکسل خواهد شد( چرا؟)

حال WPF با اندازه گيري DPI در هر رزولوشني که با فرمول مشخصي محاسبه مي شود، مي توانيد سايز مناسب عناصر شما را محاسبه کند. اين روش باعث مي شود که نمايش يک کنترل مانند Button در رزولوشن 1024*786 و با 96 DPI تراکم، با نمايش آن در رزولوشن 1600*1200 و با تراکم 120 DPI يکسان باشد.

حال بايد دليل اينکه چرا نبايد حتي الامکان عرض و ارتفاع کنترل ها را به صورت مطلق و دستي تعيين کرد را متوجه شده باشيد. (چرا؟)

معماري WPF

تکنولوژي WPF يک تکنولوژي چند لايه مي باشد. در بالاترين لايه آن اسمبلي هاي پايه اي و اساي WPF قرا گرفته اند که تماما به صورت کد هاي مديريت شده سي شارپ مي باشند. اين لايه شامل API هاي PresentationFramework.dll ، WindowsBase.dll و PresentationCore.dll مي باشد که در واقع برنامه شما با اين اسمبلي ها ارتباط خواهد داشت.

در لايه زير آن، کامپوننت مديريت نشده milcore.dll قرار دارد. تمامي کدهاي نوشته شده توسط شما، از طريق لايه اول و ارتباط لايه اول با لايه دوم و کامپوننت مذکور تبديل آبجکت هاي مورد نظر مي گردد.
در واقع دليل اينکه کامپوننت milcore.dll به صورت مديريت نشده مي باشد، اين است که اين کامپوننت بايستي ارتباط تنگاتنگي و مجتمع شده اي با Direct3D داشته باشد و نيز داراي کارايي بسيار بالايي از هر لحاظي باشد.

Direct3D در لايه زيرين milcore.dll قرار گرفته است که به صورت يک API سطح پايين مي باشد و در واقع به نوعي موتور WPF به همراه milcore نيز به حساب مي آيد.

در شکل زير بخش هاي مختلف معماري WPF نشان داده شده اند:

همانطور که گفته شد، برنامه شما در بالاترين سطح با API هاي سطح بالا که در واقع پايه واساس WPF را تشکيل مي دهند، ارتباط بر قرار مي کنند. در ادامه به تشريح هر يک از اين کامپوننت ها و ابزار ها خواهم پرداخت.

PresentationFramework.dll : اين اسمبلي در واقع تمامي آبجکت هاي سطحه بالا و در واقع به نوعي بالاترين سطح از آبجکت هاي WPF مانند Windows ها ( که بالاترين سطح در برنامه هاي WPF را در مدل برنامه نويسي WPFApplication دارا مي باشد) و Panel ها که از ديگر اجزاء اساسي برنامه هاي WPF مي باشند،را نگه داري مي کند.

مي توانيد Windows ها را به مانند Form ها در برنامه هاي معمولي در نظر بگيريد. همچنين Panel، کلاس پايه براي تمامي کنترل هاي Container از جمله Grid ( که مهمترين آن ها و پر کاربرد ترين آن ها مي باشد)، StackPanel، Canvas و ... مي باشد.

Presentationcore.dll : شامل نوع هاي پايه از جمله UIElement و Visual مي باشد که تمامي اشکال و کنترل هاي از اين کلاس ها ارث بري مي کنند. در قسمت بعدي نمودارسلسله مراتبي کلاس هاي WPF را مشاهده خواهيد کرد.

Milcore.dll : در واقع هسته اصلي WPF در رندر کردن آبجکت ها به آبجکت هايي که لايه زيرين خودش يعني Direct3D نياز دارد، مي باشد. علاوه بر اين در ويندوز ويستا، مدير پنجره هاي دسکتاپ يعني Desktop Windows manager ( که عمل مديريت پنجره هاي دسکتاب را بر عهده دارد) از همين کامپوننت استفاده مي کند. در واقع شما مي توانيد با فراخواني DWM ، به فرم ها، يا صحيح تر بگويم به پنجره هاي برنامه خود، افکت هايي که پنجره هاي ويندوز ويستا دارا هستند را اضافه نماييد.

نکته: دقت کنيد که اين افکت ها بر روي ويندوز ويستا به تنهايي قابل پياده سازي هستند. گرچه ابزار ها و کامپوننت هاي Cross نيز براي اين کار نوشته شده اند و لي به صورت عادي برنامه هايي که بر روي ويندوز ويستا اجرا مي شوند، مي توانند قابليت افکت هاي ويندوز ويستا را دارا باشند.

WindowsCodec.dll : يک API سطح پايين مي باشد که قابليت اعمال، کارهاي زيادي را بر روي عکس ها، از قبيل بزرگ نمايي، چرخش و .. را دارد.
Direct3D : نيز يک API سطح پايين است که شامل تمامي گرافيک هاي رندر شده در WPF مي باشد.

ساختار سلسله مراتبي آبجکت ها در WPF

شکل زير ساختار سلسله مراتبي آبجکت هاي مختلف را در تکنولوژي WPF نشان مي دهد.

به عنوان مثال کلاس Button را در نظر بگيريد:
اين کلاس در اولين سطح از کلاس ButtonBase ارث بري مي کند و به ترتيب از کلاس هاي زير ارث بري کرده تا نهايتا به کلاس DispatcherObject برسد.

DispatcherObject
.
.
DependencyObject
.
.
Visual
.
.
UIElement
.
.
FrameWorkElement
.
.
Control
.
.
ContentControl
.
.
ButtonBase
.
.
Button
 

ترتيب ارث بري ها از پايين به بالا مي باشد.
بسياري از اين کلاس ها را در بخش هاي آتي شرح خواهم داد. اما مي توانيد جهت اطلاعات بيشتر به کتاب Prof WPF in C# 2008 نوشته Matthew macDonald ، صفحه 50 مراجعه کنيد.

منبع

لينک | شنبه 25 مهر1388 | موضوع : مقالات آموزشی | نویسنده :مجتبی جعفری (Romper) |

 
تبلیغات خلاقانه ترک سیگار

17 Creative Anti-Smoking Ads

ادامه مطلب

لينک | دوشنبه 20 مهر1388 | موضوع : عکس | نویسنده :مجتبی جعفری (Romper) |

 
شناخت و کاربرد سامانه های رباتیک شماره زنی خودرو

از آنجا که حک شماره بدنه خودرو (VIN) یکی از الزامات سامانه کیفی جدید و رایج دنیا می باشد و استفاده از این شماره امکان ردیابی خودرو را در مراحل مختلف تولید و همچنان پس از آن به راحتی فراهم می نماید. آشنایی با این مقوله و همچنین شناخت انواع روش های مرسوم آن در ترکیب با سامانه رباتیک یا نیمه خودکار می تواند کمک موثری برای کارشناسان و مهندسان خودرو باشد.
در این مقاله سعی بر این است تا ضمن آنایی خوانندگان محترم با انواع روش های موجود، تجارب بکارگیری این سامانه در صنایع خودروسازی به کارشناسان علاقمند منتقل شود. از آنجا که مناسب ترین روش در حک شماره (VIN) در صنعت خودرو، روش حک فشاری می باشد، در این مقاله تلاش بر این است که نحوه انتخاب قطعات استاندارد مورد استفاده در سامانه علامت گذاری مذکور، مشخصات VIN و چگونگی اندازه گیری آن مورد بررسی قرار گیرد.
این مقاله می تواند برای کلیه طراحان انواع کاربرد علامت گذاری در صنعت خودروسازی و سایر صنایع مفید واقع شود.

برای دانلود روی این کلیک کنید



واژه های کلیدی :
VIN
Vehicle Identification Number
حک نقطه ای
حک فشاری
انتخاب تجهیزات سامانه علامتگذاری

لينک | دوشنبه 20 مهر1388 | موضوع : eBook | نویسنده :مجتبی جعفری (Romper) |

 
اوریگامی گل رز


برای دیدن دیاگرام و انیمیشن نحوه ساخت گل، به ادامه مطلب مراجعه کنید


ادامه مطلب

لينک | سه شنبه 31 شهریور1388 | موضوع : Origami | نویسنده :مجتبی جعفری (Romper) |

 
10 تخته برش جدید آشپزخونه

10 Cool Modern Cutting Boards


همواره برای خانم های خونه دار استفاده از لوازم جدید آشپزخونه لذت بخش بوده، خوب حق هم دارن چون باعث می شه توو کاراشون سرعت و دقت زیاد شه.

از همه مهمتر، می تونن جلو دوستاشون هم کلاس بذارن !!

اگه روی ادامه مطلب کلیک کنید می تونین 10 تا از جدیدترین تخته برشهای آشپزخونه رو ببینین و لذت ببرین.(شایدم حسرت بخورین) !!!!!


ادامه مطلب

لينک | سه شنبه 31 شهریور1388 | موضوع : اخبار تکنولوژی های جدید | نویسنده :مجتبی جعفری (Romper) |

 
پایگاه اطلاع رسانی ادیان و فرق

امروزه با توجه به پیدایش ادیان و فرق مختلف، سوالات زیادی برای همه پیش میاد که معمولا برای جواب گرفتن، به کسی که اطلاعات جامع و کاملی در این زمینه داشته باشه دسترسی نداریم.

اگه شما هم جزء کسانی هستین که سوالات بی پاسخ زیادی توو کله تون هست و داره قلقلکتون می ده می تونین به پایگاه اطلاع رسانی ادیان و فرق به آدرس http://www.adyan.net مراجعه کنین.

این پایگاه متشکل شده است از :

مسیحیت پژوهی

وهابیت پژوهی

یهود پژوهی

تصوف پژوهی

بهائیت پژوهی

جریان های معنویت گرا


شما می تونین برای تحقیق به قسمت های فوق و برای پرسیدن سوالاتتون هم می تونین به فروم این وب سایت  به آدرس http://www.adyan.net/froum مراجعه کنین.

به امید روزی که همه گمراه ها به راه راست هدایت شن و بتونن حق و از باطل تشخیص بدن.

لينک | چهارشنبه 25 شهریور1388 | موضوع : اطلاعات عمومی | نویسنده :مجتبی جعفری (Romper) |

 
تعقیب حرکات چشم انسان

تعقیب حرکات چشم انسان با استفاده از نگاشت خود سازمانده تطبیقی و مدیریت تغییرات


این مقاله در یازدهمین کنفرانس کامپیوتر ایران در سال 84 ارائه شد.

در این مقاله روش جدیدی برای تعقیب حرکات چشم انسان در دنباله ای از تصاویر طرح و مورد بررسی قرار گرفت.

در روش پیشنهادی از الگوریتم تقریب مرز اشیاء مبتنی بر نگاشت خودسازمانده تطبیقی جهت استخراج ویژگی های مرزی اجرای چشم استفاده شده، نورنهای شبکه پیشنهادی در خلال فریمهای متوالی تعقیب می شوند.

برای تعقیب این نورنها نیز روش مدیریت تغییرات پیشنهاد و مورد استفاده قرار گرفت.

نتایج پیاده سازی الگوریتم مطلوب بوده، نشان از عملکرد خوب روش دارد....


محققان : محمد حسین خسروی و رضا صفا بخش

برای دانلود مقاله روی این کلیک کنید


کلمات کلیدی : نگاشت خودسازمانده تطبیقی، کانتور فعال، تشخیص چشم، تعقیب حرکات چشم

لينک | چهارشنبه 25 شهریور1388 | موضوع : eBook | نویسنده :مجتبی جعفری (Romper) |

 
آخرالعلوم در طبابت

امروز داشتم مثل همیشه وبگردی می کردم که با مطلب جالبی برخوردم. بعضی از آدما در نهایت خونسردی و با اعتماد بنفس کامل کارای اشتباهی رو انجام می دن و برای شعور دیگران احترام قائل نمی شن. جالبه که بعضی از این بعضی ها هم به مقصودشون می رسن و بعضی دیگه هم بد تابلو می شن!!

مطلبش رو براتون میذارم تا خودتون قضاوت کنین.



تاریخ طب در ایران و جهان شاهد افراد متقلب زیادی بوده که خود را بعنوان پزشک ، دندانپزشک، داروساز و حتی اساتید دانشگاه معرفی کرده بودند و بعضی از آنها مدتی هم به کار طبابت و حتی تدریس در دانشگاه مشغول بودند. اما تاکنون تاریخ پزشکی ایران شاهد فردی نبوده است که در اکثر علوم طب (پزشکی، دامپزشکی، دندانپزشکی ،جراحی، زنان و زایمان ،اعصاب و روان، چشم پزشکی،اطفال ، داخلی،نازایی و  ……. مهارت داشته باشد.

در تاریخ ۲۷/۷ /۸۵ (پنجشنبه ) در پی اطلاع خبرنگاران سایت پزشکان بدون مرز در شهر گرمسار در استان سمنان ، از تهیه تابلویی جهت افتتاح یک مطب  ، خبرنگاران ما به محل مراجعه و تصویر زیر را از تابلویی که قرار بود در طی روزهای آینده در این شهر نصب گردد ،  نهیه کردند ، لازم به ذکراست ، سازمان نظام پزشکی شهرستان گرمسار پیگیر مسئله فوق بوده و بازرس این سازمان نیز در زمان تهیه گزارش خبرنگاران ما در محل حضور داشته است .از نکات جالب این تابلو آن است که نوشتن و نصب چنین تابلویی در سردر مطب مانند جعل اسکناس سه هزارتومانی است .که هر کودکی به تقلبی بودن آن پی میبرد . دکتر تقلبی ما حتی اطلاع از رشته های پزشکی ، و نوع ادامه تحصیل در رشته پزشکی و دامپزشکی و دندانپزشکی و … ندارد.

 ما (خبرنگاران سایت پزشکان بدون مرز در گرمسار) هرچه در کتب مرجع پزشکی گشتیم کلمه و یا مفهومی با مشخصات “حق تس ” که در تابلو ذکر شده پیدا نکردیم ؛ اما با مشورت با اساتید فن رمالی و فالگیری دریافتیم “حق تس ” کلمات تخصصی در رشته فالگیری و رمالی است  .

برای دیدن عکس به ادامه مطلب مراجعه کنید.


ادامه مطلب

لينک | سه شنبه 24 شهریور1388 | موضوع : اطلاعات عمومی | نویسنده :مجتبی جعفری (Romper) |

 


سفارش انواع پروژه
برنامه نویسی، پروژه های سخت افزاری و نرم افزاری، پایان نامه ها، اخبار تکنولوژی های جدید و ....
EBook هایی در زمینه های مختلف

anewproject.blogfa@gmail.com

eBook
برنامه نویسی
اخبار تکنولوژی های جدید
مقالات آموزشی
پروژه ها
اطلاعات عمومی
اطلاعیه ها
عکس
موفقیت
Origami

 

:: عينک مترجم به بازار مي‌آيد
:: نحوه تشخیص ماشین مجازی - Virtual Machine Detection
:: نکاتی در مورد پلتفرم دات نت - Dot Net
:: را‌ه‌اندازي شبکه بي‌سيم در 15 دقيقه
:: هاورکرافت شخصی داشته باشین
:: 10 توصیه برای مدیریت زندگی
:: عکس از بهترین استخرها
:: مقدمه ای بر تکنولوژی WPF یا Windows Presentation Foundation
:: تبلیغات خلاقانه ترک سیگار
:: شناخت و کاربرد سامانه های رباتیک شماره زنی خودرو
:: اوریگامی گل رز
:: 10 تخته برش جدید آشپزخونه
:: پایگاه اطلاع رسانی ادیان و فرق
:: تعقیب حرکات چشم انسان
:: آخرالعلوم در طبابت
:: در ناسا موش ها پرواز می کنند !!
:: Thermal Compound و تاثير آن بر انتقال حرارت
:: الهم عجل الولیک الفرج
:: تلفن همراه براي يافتن سرويس بهداشتي
:: نسل جدید پریزهای برق
:: SMS about friendship
:: مدرن ترین دوش های حمام
:: وقتی سیستم هنگ می کند
:: کیفهای لپ تاپ - خلاقانه و جدید !!
:: ارسال و دريافت فكس در XP
:: ساعت های مدرن و زیبا
:: طرح گوشی های مفهومی
:: برنامه نويسي تحت شبكه محلي در VB.NET
:: بالش های جالب و جذاب
:: کفشهای عجیب و غریب !!

 

 

 

 









  RSS