بایگانی دسته‌بندی‌ها: برنامه‌نویسی

تفاوت کامپایلرها و پنهان ماندن یک باگ!

دو روز پیش وقتی در حال آزمایش «ساغر» روی لینوکس بودم به یک باگ برخوردم، گاهی برگه جدید که باز می‌کردم کاملا خالی بود یا بهتره بگم نامریی ;) چون با کلیک کردن می‌تونستم بین مطالب جابجا شوم، البته نکته جالب اینکه اصلا در ویندوز این مشکل پیش نمی‌آمد! از آنجا که تو ابونتو هنوز IDE نصب نکردم، رفتم سراغ qDebug()‎ و خروجی Console و شروع کردم به دباگ کردن!

در اینجا بود که متوجه شدم که یادم رفته یکی از متغیرها از نوع «int» رو مقداردهی اولیه کنم!! بعد از کشف باگ کنجکاو شدم ببینم چرا تو ویندوز این مشکل پیش نمی‌آمد وقتی تو Visual Studio رفتم سراغ دباگ کردن معلوم شد کامپایلر مایکروسافت عدد منفی بسیار بزرگی (از لحاظ قدرمطلق)  به این متغیر تخصیص می‌دهد و چون در ادامه برنامه بین این متغیر و متغیر مثبت دیگری ماکزیمم گرفته می‌شود عملا مشکلی پیش نمی‌آید اما در کامپایلر گنو یعنی همون «GCC» به این متغیر عدد مثبت بسیار بزرگی تخصیص داده می‌شود که باعث می‌شود همین عدد بسیار بزرگ از ماکزیمم گیری بیرون آید و خرابکاری کند!

یک گدجت ساده، NetworkDisEnabler v1.0

چندی پیش که ADSL دار شده بودیم،  با مشکلی مواجه شدم، چون بیشتر از یک کامپیوتر به مودم وصل بود اطلاعات ارتباطی را در تنظیمات داخلی مودم ذخیره کرده بودم، هربار که می‌خواستم به هر دلیلی کامپیوتر را از اینترنت قطع کنم  یا باید مودم را خاموش می‌کردم، یا کابل شبکه را جدا می‌کردم و یا راه غیر سرراست و وقت‌گیر «غیرفعال» کردن کارت شبکه از داخل صفحه تنظیمات Network Connections را طی می‌کردم، البته آن زمان ویستا داشتم که رسیدن به صفحه تنظیمات چندین کلیک لازم داشت، حتی از XP بدتر شده بود، خوشبختانه در ویندوز ۷ خیلی سرراست‌تر شده است.

خوب در اینجا بود که درست کردن gadgetی ساده که این کار را برایم راحت کند به ذهنم رسید، دست به کار شدم و با نگاه به پوشه یک gadget ساده ایده کار را گرفتم و با یکی دو جستجوی اینترنتی چند API لازم را هم پیدا کردم و گدجتی که در این پست ادامه‌ی خواندن

از بلاگر: گرفتن خروجی Console در نرم‌افزارهای با رابط گرافیکی در ویندوز

انتقال از بلاگر، ارسال در جمعه ۱۷ سپتامبر ۲۰۱۰ ساعت ۱:۱۱
چند روز پیش متوجه شدم کدی شبیه به:

printf(“Hello!”);

یا:

std::cout<< “Hello!”;

که در نرم‌افزاری با رابط گرافیکی «Gui Application» به کار رفته بود خروجی مورد انتظار را وقتی نرم‌افزار در خط فرمان اجرا می‌شود ایجاد نمی‌کند، خیلی عجیب بود! از آنجا که قبلا این نرم‌افزار را در لینوکس استفاده کرده بودم و چنین اشکالی را در آنجا ندیده بودم کاملا مطمئن بودم هر چه هست مربوط به ویندوز است، از آنجا که این نرم‌افزار بر روی سکوی Qt نوشته شده بود رفتم به دنبال راه‌حلی در دنیای Qt و بعد از کمی جستجو به سرعت ادامه‌ی خواندن