تبليغاتX
امیر صادقی
10 زبان برنامه نویسی که باید آموخت پنجشنبه 21 شهریور1387 21:11
  سایت eWeek با یکی از برنامه نویسان باسابقه با نام Wayne Duqaine که هم اکنون بخش توسعه نرم افزار کمپانی Grandview Systems در ایالت کالیفرنیا است گفتوگویی انجام داده , او در این گفتگو توصیه می کند که برنامه نویسان نباید خود را منحصر به یادگیری و کار در یک زبان خاص بکنند وی که بیش از 30 سال تجربه برنامه نویسی دارد 10 زبان را برای یادگیری برای برنامه نویسان همراه با دلیل توصیه می کند.
(آمار قسمت شغل های موجود برای یک زبان با توجه به آمار سایت Dice.com می باشد)

ادامه مطلب
نوشته شده توسط امیر صادقی  | لینک ثابت |

برنامه نویسی تحت شبکه شنبه 22 تیر1387 0:54
  اصول برنامه نویسی تحت شبکه.
به همراه مثال های نمونه.

برای مشاهده به ادامه مطلب مراجعه نمایید

ادامه مطلب
نوشته شده توسط امیر صادقی  | لینک ثابت |

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

  1. فرض کنین توی زندان صد تا زندانی داریم که به زندان های طولانی محکوم شده اند.
  2. این زندانی ها توی سلول های انفرادی نگهداری میشن و هیچ امکان برقراری ارتباط با همدیگر رو ندارند.
  3. یه اتاق بازجویی توی این زندان هست که هیچی توش نیست الا یه لامپ و یه کلید برای روشن و خاموش کردن لامپ.
  4. در ابتدا این لامپ خاموشه.
  5. زندانی ها از سلول خودشون نمیتونن این لامپ رو ببینن.
  6. زندان بان هر روز یکی از زندانی ها رو به صورت تصادفی (با احتمال یکسان برای همه) انتخاب میکنه و میاره به اتاق
  7. این زندانی میتونه کلید چراغ رو تغییر بده (اگه روشنه خاموش کنه یا اگه خاموشه روشن کنه) یا اینکه اون رو دست نزنه و همونطور که هست نگه داره.
  8. مضافا این زندانی میتونه ادعا کنه که تمام صد زندانی حداقل یک بار به این اتاق آورده شده اند.
    • اگر این ادعا درست باشه هر صد تا زندانی با هم آزاد میشن.
    • اگر ادعاش غلط باشه هر صد تا با هم اعدام میشن.
  9. زندانی ها اجازه دارند یک شب با هم تو حیاط زندان ملاقات کنند و بر سر یک نقشه برای حل این مساله توافق کنند. از فردای این شب، بازی آغاز خواهد شد و زندانی ها بعد از این همدیگر را نخواهند دید مگر موقع آزادی یا اعدام!
حالا پیدا کنید این زندانی ها چه کار باید کنند؟
جواب توی ادامه مطلب

ادامه مطلب
نوشته شده توسط امیر صادقی  | لینک ثابت |

تشخیص فشرده شدن کليدهای کيبرد پنجشنبه 29 فروردین1387 14:46
سئالی که در ذهن بعضی از دوستان هست اینه که چگونه می توان کلیدهای کیبرد را حتی وقتی فوکوس روی برنامه ما نیست تشخیص داد مانند دیکشنری ها که مثلاً با CTRL+F12 فعال می شوند و یا Keylogger ها که کلیدهای فشرده شده را ثبت می کنند .
دو روش برای اینکار وجود دارد :

۱ - استفاده از یک تابع کتابخانه ای به اسم  GetAsyncKeyState موجود در کتابخانه user32.dll . این تابع ، فشرده شدن یا رها شدن یک کلید را تشخیص می دهد . نحوه declare کردن این تابع بصورت زیر است :

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

حال در برنامه تان یک timer قرار داده و در event آن کد زیر را قرار دهید :

    For i = 1 To 255
        results = 0
        results = GetAsyncKeyState(i)
        If results <> 0 Then
           Msgbox(Chr(i))
        End If
    Next

۲ - استفاده از قلاب یا Hook : قلاب ، یک ابزار در مکانیزم مدیریت پیغام سیستم ویندوز است که توسط آن برنامه ها می توانند یک روتین را برای مدیریت و پردازش پیغامهای خاصی قبل از اینکه آن پیغامها به برنامه مقصد برسند نصب نمایند . قلابها باعث کندی سیستم می شوند زیرا حجم پردازشی سیستم روی هر پیغام را افزایش می دهند بنابراین بایستی زمانیکه واقعاً به قلاب نیاز دارید آنرا نصب نموده و هر چه زودتر آنرا حذف نمایید . سیستم ویندوز از انواع زیادی از قلابها پشتیبانی می کند که هر کدام امکان دستیابی به پیغامهای خاصی را مهیا می نمایند برای مثال یک برنامه کاربردی می تواند با استفاده از قلاب کیبرد برای مدیریت و پردازش پیغامهای مربوط به آن ( مثل فشرده شدن یک کلید خاص یا رها شدن آن ) استفاده کند .
برای نصب یک قلاب در برنامه از یک تابع کتابخانه ای به اسم SetWindowsHookEx استفاده می شود . این تابع یک قلاب را به زنجیره قلابهای سیستم اضافه می کند . نحوه declare کردن این تابع بصورت زیر است :

Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long

همچنین برای آزاد کردن یک قلاب و حذف آن از زنجیره قلابها از تابع کتابخانه ای UnhookWindowsHookEx استفاده می گردد . نحوه declare کردن این تابع بصورت زیر است :

Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long

برای ایجاد قلاب کیبرد همچنین نیاز به تعریف یک ثابت است که شماره قلاب کیبرد در آن قرار دارد :

Public Const WH_KEYBOARD = 2

حال بایستی یک تابع پس زمینه یا Callback Function نوشت که به ازای فشرده شدن کیبرد اجرا شود و آدرس آنرا ( با استفاده از کلمه کلیدی Address Of ) بهمراه ثابت فوق به تابع SetWindowsHookEx فرستاد .

نوشته شده توسط امیر صادقی  | لینک ثابت |