*** چرخی که برای ما نچرخد باید دوباره اختراع شود ***

انجمنی برای برنامه نویسان اندروید به زبان دلفی (Delphi-Android)

*** چرخی که برای ما نچرخد باید دوباره اختراع شود ***

انجمنی برای برنامه نویسان اندروید به زبان دلفی (Delphi-Android)

*** چرخی که برای ما نچرخد باید دوباره اختراع شود ***
در این انجمن انشاءالله در مورد دیدگاههای خود راجع به برنامه نویسی، امنیت شبکه، دلفی و اصول برنامه نویسی و برنامه نویسی برای اندروید توسط دلفی مطالبی ارائه خواهم کرد. از شما خوانندگان محترم و فرهیخته تقاضا دارم با ارسال نظر، نقد و پیشنهاد به تقویت این وبلاگ کمک نمایید. با سپاس فراوان از همکاری شما.
پیام های کوتاه
طبقه بندی موضوعی
آخرین نظرات
  • ۱۹ فروردين ۹۷، ۰۲:۵۸ - قالب رضا
    :)
  • ۱۰ خرداد ۹۴، ۲۲:۰۲ - lpln
    mamnoon

مطلب زیر ترجمه یک مقاله از وب سایت Joel Spolsky است که بخاطر اهمیت مسئله برای برنامه نویسان کشور عزیزمان در اینجا ارائه می شود:

یکی از بدترین اشتباهات یک برنامه نویس  ، یک تیم نرم افزاری و یا شرکت نرم افزاری بزرگ در کسب و کارش این است که تصمیم بگیرد که کد را از پایه بازنویسی کند

NetScape ، Microsoft ، Borland نمونه هایی از شرکت های بزرگی هستند که در مقطعی این اشتباه را مرتکب شدند و به شدت ضربه خورده و سهم خود در بازار را کاملا یا به طور نسبی به رقیبان واگذار کردند .

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

 یک دلیل ظریف وجود دارد که برنامه نویسان همیشه دوست دارند کدهای موجود را دور بریزند و از اول شروع کنند . دلیلش این است که آنها فکر می کنند کد قدیمی افتضاح است .و جالب اینجاست که آنها در بیشتر مواقع اشتباه می کنند . اینکه آنها فکر می کنند کد قدیمی یک افتضاح است ، ناشی از یک قانون اصلی  برنامه نویسی است :

خواندن کد از نوشتن آن سخت تر است .

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

دلیل این افتضاح بودن چیست ؟

آنها می گویند " خوب ، به این تابع نگاه کن . دو صفحه است . هیچکدام از این کدها جایشان اینجا نیست . من نمی دونم نصف این فراخوانی API ها برای چیست " 

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

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

شما دارید پیشرو بودن تان در بازار را دور می ریزید . شما دارید دو یا سه سال را به رقبایتان هدیه می کنید و باور کنید در دنیای برنامه نویسی این زمان طولانی است .

با ادامه دادن استفاده از یک نسخه قدیمی از کد برای چندین سال ( در زمان کار بر روی نسخه ی کاملاً جدید ) ، شما خود را در موقعیت خطرناکی قرار می دهید و قادر به هیچگونه تغییر استراتژیک یا واکنش به تقاضای امکانات جدید از طرف بازار نخواهید بود چون کد قابل توسعه ای ندارید . شاید کسب و کارتان را در این مدت تعطیل کنید

با نوشتن کدی که وجود دارد ؛ شما مقدار زیادی پول و سرمایه را هدر می دهید .

آیا گزینه ی دیگری وجوددارد ؟ به نظر می رسد که اتفاق نظر بر این است که کد قدیمی Netscape خیلی بد بود . خوب ؛ شاید بد بوده است اما می دانید ؟ بر روی تعداد خیلی زیادی از کامپیوترها در دنیا به خوبی کار می کرد .
وقتی یک برنامه نویس می گوید که کدش افتضاح است ( که همیشه هم  می گوید ) سه چیز باعث آن است :
اول ، وجود مشکلات معماری . کد به خوبی نوشته نشده است .این مشکلات را می توان  یکی یکی با جابجا کردن محتاطانه کدها ، refactor کردن ، تغییر interface ها و ... حل کرد .می توان این تغییرات را توسط یک برنامه نویس انجام داد . حتی تغییرات نسبتا بزرگ در معماری را می توان بدون دور ریختن کد قدیمی انجام داد . جابجا کردن و  تمیزکاری کدها ، ساختن کلاسهای پایه درست و با معنی ، ساختن interfaceهای دقیق بین ماژول ها  همراه با احتیاط و بدون ایجاد کردن باگ های جدید .

دلیل دوم این است که کد ناکارآمد است . شایع بود که کد مربوط به رندر کردن در netscape کند است . اما این تنها بخش کوچکی از پروژه را تحت تاثیر قرار می داد. که می توان آن را بهبود داد یا بازنویسی کرد.لازم نیست که تمام پروژه را بازنویسی کنید .

دلیل سوم زشت بودن کد قدیمی است . برای مثال پروژه با این قرارداد شروع شده که متغیرها با زیرخط شروع شوند اما بعدا قرارداد به m_ تغییر کرده . که کد را زشت می کند . این مشکلات را می شود به راحتی با یک ماکرو حل کرد ونیازی به بازنویسی پروژه نیست .

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

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

------------

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

ضمنا توصیه می کنم حتما  اینجا  و اینجا و اینجا را هم مطالعه فرمایید.

۰ نظر موافقین ۱ مخالفین ۰ ۲۷ اسفند ۹۳ ، ۰۰:۴۴

یاحسین

سلام

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

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

البته هر عاقلی می داند که اختراع مجدد چرخ معقول نیست اما این موضوع بشرط آنست که کنترل چرخ اختراع شده کامل در اختیار ما باشد و اغیار نتوانند با این اختراع به ما ضربه بزنند.

اکنون می بینیم که رایانه و نرم افزار به شکل امروزی اختراع ما نیست. کنترل آن در دست ما نیست. در حالی که انبوهی از مهندسان را در حوضه نرم افزار و رایانه داریم اما هر آن سایه تهدید "بمب اتمی سایبری" احساس می شود.

ما اولین ملت در تاریخ هستیم که اولین "موشک سایبری" علیه آن بکار رفت (استاکسنت Stuxnet) و هیچ بعید نیست که اولین "بمب اتمی سایبری" نیز برای ما استفاده شود. (مانند ژاپن که اولین بمب اتمی علیه آنها بکار رفت)

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

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

ما باید سیستم عامل بومی طراحی کنیم. ما باید رایانه بومی طراحی کنیم. ما باید نرم افزارهای مورد نیاز خود را خود بنویسیم.

ره دراز است اما امید ما به خداست. برکت تلاش و کوشش ما توسط خدا تضمین می شود.

این حرکت می تواند دولتی باشد اما حرکت دولتی کیفیت حرکت مردمی را ندارد پس از فکر حمایتهای دولتی بیرون بیایید. حمایت فقط از طرف خداست پس توکل بر خدا و توسل به ائمه معصومین (ع) تنها راه است. پیروزی حتمی است.

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

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

بستر همکاری چه باشد؟ جواب: اینترنت، وبلاگ، وب سایت و سایتهای مدیریت و کنترل پروژه (و ردیابی باگ مانند آنچه در این سایت معرفی شده اند)... باور کنید 25 سال پیش غربی ها این امکانات ارتباطی امروز ما را نداشتند و اگر می داشتند خیلی بیش از این پیشرفت می کردند.

پس با توکل برخدا همه برخیزیم و با این شعار حرکت کنیم:

"چرخی که برای ما نچرخد باید دوباره اختراع شود"

۴ نظر موافقین ۳ مخالفین ۰ ۰۹ آبان ۹۳ ، ۱۲:۲۷

به نام خدا

سلام

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

البته این موضوع ممکن است عجیب و نامعقول بنظر برسد اما می توان با استدلال زیر آنرا اثبات کرد:

  • اولا آیا شرکت مایکروسافت نسبت به خدمات پس از فروش و پشتیبانی ویندوز های کرک شده و یا دزدی تعهدی دارد؟ پاسخ مطمئنا خیر است. هم از نظر حقوقی و هم از نظر کلیه اصول عقلی این شرکت دلیلی برای پشتیبانی از ویندوز های دزدی و غیرقانونی ندارد. بنابراین اگر Update مایکروسافت بر روی رایانه دزدی اجرا نشود و یا درست و کامل اجرا نشود کسی نمی تواند مایکروسافت را مقصر بداند. حال تصور کنید که مایکروسافت در نرم افزارهای Update خود (موسوم به KB updates و یا سرویس پک ها مانند SP1 و یا SP2) به شکلی برسی نماید که آیا ویندوز مورد بروزرسانی معتبر (Ginuine) است یا نه .  همچنین بررسی نماید که آیا این اعتبار سنجی خود واقعی است یا کرک شده و اینکه این ویندوز در چه منطقه ای نصب شده (از راه های مختلف این امر قابل کنترل است). سپس در صورت کشف غیرقانونی بودن سیستم عامل بدون آنکه علامت و اخطاری به کاربر بدهد، کار بروزرسانی را ادامه داده و در هنگام بروزرسانی فقط برخی پرونده های سیستم عامل را بروز نکند و یا بشکلی بروز کند که مثلا بعضی از حفره های امنیتی آن کاملا بسته نشوند. با این شرایط بنظر شما می توان مایکروسافت را محکوم نمود؟ (بنظر بنده اینکار خیلی سخت خواهد بود) بد نیست در این مورد این پیوند را مطالعه کنید: http://en.wikipedia.org/wiki/Windows_Genuine_Advantage
  • ثانیا تصور کنید سازمان های جاسوسی و امنیتی آمریکا تصمیم بگیرند عملیاتی را در سیستمهای ایران انجام دهند در حالیکه می دانند سیستمهای مورد نظر ایشان از نظر امنیتی دارای بهترین و محکم ترین تمهیدات قرار داشته و از شبکه اینترنت هم قطع است. اما سیستم عامل آن معلوم است و البته این سیستم عامل یکی از نسخه های کرک شده ویندوز است. به نظر شما چه راهی بهتر از Windows Updates می تواند وجود داشته باشد؟ شگفت آور آنکه مسئولین و کارشناسان امنیت شبکه در ایران (در هر سازمان اعم از نظامی و غیر نظامی) طبق قانون و دستور العمل های موجود موظف به اخذ نسخه اصلی و دست نخورده Windows Updates از شبکه اینترنت و سایت Microsoft هستند و باید آنرا بر اساس زمانبندی هایی روی تمام سیستمهای تحت اختیار نصب کنند یا بطور خودکار نصب شود. فکرش را بکنید که دشمن Trojan یا همان اسب تروای خود را چه آسان به محرمانه ترین بخش های کشور ما منتقل می کند! حجم این Trojan می تواند ده ها مگابایت باشد! کسی معترض نمی شود. کمترین کاری که این Updateها می توانند انجام دهند آنست که کاری انجام ندهند! یعنی بطور انتخابی برخی از حفره های امنیتی را نبندند و آنرا برای نفوذ موشک های سایبری باز بگذارند و البته پیغام تکمیل فعالیت بطور موفقیت آمیز را هم نمایش دهند!

حال فکر کنم کمی به عمق فاجعه پی بردید، این طور نیست؟ بد نیست گزارش اخیر شرکت  Kaspersky در نشانی زیر را مطالعه فرمایید: "The echo of Stuxnet" و متن کامل آن:

https://securelist.com/files/2014/08/Kaspersky_Lab_KSN_report_windows_usage_eng.pdf

بطور خلاصه این مقاله تحت عنوان The echo of Stuxnet یا "انعکاس استاکسنت" نشان می دهد که بر خلاف آنکه مایکروسافت حفره های امنیتی مربوط به استاکسنت را مدتهاست توسط Update های خود بسته است اما همچنان برخی از این حفره ها در کشورهایی که ویندوز کرک شده دارند بشدت مورد استفاده هکرها بوده و عملا باز هستند!

 

این موضوع بطور غیر مستقیم اشاره به بی اثر بودن Update های ویندوز است.

 


اگر بخواهید برنامه نوشته شده توسط خودتان را بفروشید و مثلاً من مشتری آن باشم، چقدر قیمت روی آن میگذارید؟  

بگذارید ابتدا من یک روش قیمت گذاری اعلام کنم آن وقت شما قیمت برنامه خود را اعلام نمایید. 

فرض کنید من به ازای هر خط برنامه شما مبلغ ثابتی پرداخت کنم. منظور من از یک خط برنامه یک خط حاوی فقط یک دستور ساده مانند قرار دادن یک عدد در یک متغیر است.

 

اگر با این شرایط خطی یک دلار بدهم برنامه خود را می فروشید؟ نه؟ خطی 2 دلار چی؟ خطی 5 دلار چطور؟  اصلا خطی 10 دلار خوبه؟ 

 

شاید بعضی از شما با خود بگویید نویسنده این متن چندان عقل درست و حسابی ندارد چون 10 دلار (دلاری 3000 تومان) بابت یک خط ساده برنامه ای که حتی ندیده و نمیداند چیست پرداخت می کند!!  شاید حق با شما باشد اما واقعیت چیز دیگری است.

دوست عزیزی که فکر می کند برنامه او با قیمت هر خط زیر 25 تا 30 دلار ارزش دارد باید بداند که برنامه بی ارزشی را دارد و اگر هارددیسک خود را از وجود چنین برنامه ای پاک کند کار درستی کرده است!!!  

تعجب کردید؟

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

 

اگر هر خط بین 25 تا 50 دلار باشد تازه کیفیت نرم‌افزار تجاری در حد مثلا ویندوز یا word خواهد بود. 

اگر هر خط 100 دلار باشد کیفیت در حد نرم‌افزار های نظامی متداول در وزارت دفاع آمریکا خواهد بود.  

اگر هر خط 1000 دلار باشد کیفیت آن مناسب برای نصب بروی تجهیزات فضایی ناسا خواهد بود. 

 

مرجع: کتاب  The Art of Designing Embedded Systems

 

http://books.google.com/books/about/The_Art_of_Designing_Embedded_Systems.html?id=V-bCD_j1gT8C

 

http://books.google.com/books?id=MMfCP3KTNZoC&pg=PA217&lpg=PA217&dq=cost+per+line+of+code+The+Art+of+Designing+Embedded+Systems&source=bl&ots=ls529vKqWj&sig=NNzWPQgQ-NJ3_yd6YsHRSrzM2dI&hl=en&sa=X&ei=BaAUVJ3CC9HraOiwguAK&ved=0CB8Q6AEwAQ#v=onepage&q=cost%20per%20line%20of%20code%20The%20Art%20of%20Designing%20Embedded%20Systems&f=false

 

 

 

 

 

 

 

 

 

۰ نظر موافقین ۲ مخالفین ۰ ۱۹ شهریور ۹۳ ، ۰۰:۱۲

بنام خدا

 

  امروز میخواهم درباره ردیابی باگ و مفهوم آن کمی صحبت کنم. هر برنامه نویسی میداند که برنامه رایانه ای بدون باگ وجود ندارد! البته کسی ممکن است ادعا کند یک برنامه کوچک چند خطی می توان نوشت که باگ نداشته باشد اما پاسخ من به چنین ادعایی آن است که برنامه مورد نظر برای چه کسی و چه هدفی طراحی و نوشته شده است؟  اگر برنامه ای بدون متقاضی و بدون هدف باشد مطمئناً مورد بحث ما نیست. منظور از متقاضی و هدف در حقیقت مشتری است. مشتری در تعامل با نرم‌افزار همیشه نکات و مواردی را که به کارایی و منافع او مربوط است متذکر و یا نیاز دارد. این نکات و موارد معمولا یا بصورت باگ و یا درخواست ویژگی و یا درخواست خدمات و پشتیبانی خود را نشان میدهند.   خب تا اینجا ظاهرا چیز جدیدی نگفتیم و شاید بگویید این ها بدیهیات است اما اصل موضوع که برنامه بدون باگ نداریم را اثبات میکند!  البته لازم است در اینجا کلمه باگ تعریف شود.  از نظر تاریخی کلمه باگ (Bug) به معنی حشره یا مگس از زمانی برای نرم‌افزار باب شد که در اولین رایانه های ساخته شده از لامپ های الکترونی استفاده میشد. در آن زمان مدارات رایانه دارای حجم انبوهی از سیمها و اتصالات بصورت لحیم کاری شده بود. مثلا حجم رایانه ای که تنها محاسبه برد گلوله توپ را بر اساس زاویه آتش و سایر پارامتر ها انجام میداد حدود یک ساختمان دو یا سه طبقه بود! در مواردی حشره ها در لابلای مدارات این رایانه خانه میکردند و چون ولتاژ بین اتصالات لامپی (که در واقع کار ترانزیستور ها و فلیپ فلاپ را بر عهده داشتند) بسیار بالا بود (از مرتبه چند ده ولت) لذا امپدانس یا مقاومت بین اتصالات تغییر کرده و در عملکرد یا دقت محاسبات رایانه مزبور تاثیر فراوانی می گذاشتند.  به همین دلیل فرد یا افرادی باید با سم پاشی و جاروبک هایی هر از گاهی به تمیز کردن مدارات پرداخته و مشکلات رایانه را حل می کردند! به این افراد دیباگر (Debugger) می گفتند.  از آن زمان تاکنون این نام (باگ) برای هر  ایراد نرم‌افزاری بکار می‌رود. تقریبا می توان گفت هر چیزی که باعث رفتار و یا عملکرد نادرست و یا ناخواسته یک برنامه رایانه‌ای شود، بنحوی که آن رفتار و عملکرد نه در طراحی اولیه و اصلی نرم‌افزار و نه در مجموعه درخواست های مشتری نرم‌افزار باشد را باگ می گوییم.  البته در مواردی هنگام تحویل اولین نسخه نرم‌افزار به مشتری خود یا مشتری متوجه می شود که باید چیزها و قابلیت ها جدیدی به نرم‌افزار افزوده شود، در این موارد نیز باز هم می‌توان گفت نرم‌افزار از نظر مشتری دارای نقص بوده و آنرا باید باگ محسوب کرد اما چون این موضوع در طراحی یا نیازمندی اولیه نبوده، لذا آنرا به ویژگی جدید می شناسیم.  خب تا اینجا با مفهوم کلی کلمه باگ آشنا و متوجه یک دسته بندی اولیه هم شدیم: باگ و ویژگی جدید. ویژگی جدید هم یک باگ در نتیجه تعامل خواسته های مشتری با نرم‌افزار است.   اگر تاکنون برنامه نویسی کرده باشید با هر دو این موارد برخورد کرده اید و احتمالا متوجه حجم تصاعدی آنها با حجم و پیچیدگی برنامه خود شده اید.  تقریبا میتوان گفت 80 درصد یک نرم‌افزار در 20 درصد زمان مقرر آماده میشود اما 80 درصد زمان پروژه برای حل مشکلات آن یعنی باگها صرف میشود.   این موضوع از نظر زمان و هزینه تمام شده نرم‌افزار بسیار مهم است و نیاز به بررسی و تحلیل دارد. اگر روند رسیدگی به باگها دارای نظم نباشد مدت پروژه و در نتیجه هزینه تمام شده افزایش چشمگیری یافته و برنامه نویس یا برنامه نویسان و مشتری را به سوی یاس خواهد کشاند. این موضوع ممکن است  تا جایی پیش برود که برنامه نویسان احساس کنند اگر سبزی فروشی باز می کردند وضع شان بهتر بود!!  راه حل استفاده از ردیاب باگ یا همان Bug Tracker است.

۱ نظر موافقین ۱ مخالفین ۰ ۱۴ شهریور ۹۳ ، ۱۷:۴۷
برای کار با انواع پایگاه داده در دلفی اندروید کافیست از firedac استفاده کنید. همه چیز مثل همیشه در دلفی اسان و بی دردسر خواهد بود.
۱ نظر موافقین ۱ مخالفین ۰ ۲۷ تیر ۹۳ ، ۲۰:۱۰

مشکل INSTALL_FAILED_INSUFFICIENT_STORAGE هنگام کمپایل و نصب با اضافه کردن خط زیر در "AndroidManifest.template.xml" حل می شود:
 

         <?xml version="1.0" encoding="utf-8"?>
         <!-- BEGIN_INCLUDE(manifest) -->
         <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                                   package="%package%"
                                   android:versionCode="%versionCode%"
                                   android:versionName="%versionName%"
Add this line:==>          android:installLocation="%installLocation%>
....
...

لازم به ذکر است که قبلا این مورد را به Embarcadero اعلام نموده ام و کافیست با کلیک روی لینک زیر به آن رای دهید تا رفع آن در اولویت کاری Embarcadero قرار گیرد: http://qc.embarcadero.com/wc/qcmain.aspx?v=126216 همچنین برای رای دادن جهت افزودن فارسی به اندروید در دلفی می توانید لینک زیر را کلیک کنید: http://qc.embarcadero.com/wc/qcmain.aspx?v=121012

۳ نظر موافقین ۱ مخالفین ۰ ۲۷ تیر ۹۳ ، ۱۷:۳۹