تولید کننده آموزش و محصولات مبتنی بر برنامه نویسی مدرن

۲۴ مطلب با موضوع «مقاله» ثبت شده است

علم دور ریز

برای نوشتن پروژه راه‌های اصولی هست مثل این که اول تمام نیاز‌های پروژه رو بدونیم و تمام نیازها و راه‌های رسیدن بهش رو بررسی کنیم معماری رو مشخص کنیم و بعد شروع به کد زدن کنیم.

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

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

ادامه مطلب...
۲۳ دی ۹۷ ، ۰۰:۲۱ ۰ نظر موافقین ۱ مخالفین ۰
بهنام صباغی

استارتاپ یا استارت آب ؟

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

یادداشت: چرا یک ضد استارت آپ هستم؟

و اما این پست قسمتی از حرف‌های دل من رو زد و داغم رو تازه کرد و دستم رو روی کیبورد برد.

خب کلیت پست بالا اینه که میگه این استارتاپ‌هایی که توی ایران باب شده به درد دنیا و آخرت کسی نمیخوره و بعد از یک بازه یکساله استارتاپنما شکست میخوره و از حباب در میاد.

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

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

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

منتظر نظرات شما دوستان هم هستم با تشکر

۱۰ دی ۹۷ ، ۱۹:۰۸ ۱ نظر موافقین ۰ مخالفین ۰
بهنام صباغی

تا توانی کدی به دست آور *** که کد نوشتن هنر نمی‌باشد

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

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

ولی برای علمی تر شدن بحث اجازه بدید چند قدم بریم عقب و از دید کلی تری به قضیه نگاه کنیم :

ادامه مطلب...
۱۷ آذر ۹۷ ، ۲۳:۱۹ ۴ نظر موافقین ۰ مخالفین ۰
بهنام صباغی

دانشگاه یا دانشکاه

با سلام خدمت دوستان میخوام یه مبحثی که از ته ذهنم گذر میکنه رو باز کنم.

من با ساختار درس و دانشگاه فعلی مشکل دارم البته من توی یک دانشگاه دولتی به مدت 4 سال درس قرار بود بخونم. میگم قرار بود چون نخوندم و ترم 8 انصراف نامه رو تقدیم دانشگاه کردم و باز اسم نوشتم دانشگاه البته اینبار دانشگاه پیام‌نور که کمتر اساتید عزیز به دست و پام بپیچند برای حضور و غیاب و البته از این نمیشه گذشت که دلیل اصلیم برای ثبت نام دوباره این بود که سربازیم رو عقب بندازم چون الان توی دوره‌ای هستم که دارم با سرعت پیش میره و دو سال نگهبانی افتابه دادن به شدت منو از زندگیم عقب میندازه و چرخ‌های پیشرفتم رو که الان تازه دارند درست درمون راه میرند رو در هم می‌کشنه.

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

ادامه مطلب...
۰۹ آذر ۹۷ ، ۲۲:۲۷ ۳ نظر موافقین ۰ مخالفین ۰
بهنام صباغی

معرفی منابع آموزشی boost.asio

با سلام خدمت دوستان عزیز

در این پست تصمیم دارم چندین منبع آموزشی برای boost.asio را برای شما معرفی کنم :

منابع رسمی boost.asio برای فراگیری

  1. Overview
  2. Using Boost.Asio
  3. Tutorial
  4. C++11 Examples
  5. Networking TS compatibility

سه کتاب موجود برای یادگیری boost.asio

  1. Boost.Asio C++ Network Programming
  2. Boost.Asio C++ Network Programming - Second Edition
  3. Boost.Asio C++ Network Programming Cookbook

دوره ویدئویی آشنایی با boost

دوستان دقت داشته باشید یاد گرفتن boost دیگه تقریبا برای همه واجبه چون کم کم داره قسمت‌های مختلفش با تغییرات کمی به اصل سی پلاس پلاس اضافه میشه و بهتره قبل از این که تمامش به سی پلاس پلاس اضافه بشه شما اون رو یاد گرفته باشید تا بعد از اضافه شدنش مشکلی با کار کردن باهاش نداشته باشید مثلا filesystem توی استاندارد 2017 به سی پلاس پلاس اضافه شد و همینطور any و optional و خیلی چیزای دیگه تا جایی که میدونم توی استاندارد 2020 قراره بخش شبکه (Network) هم اضافه بشه .

موفق و پیروز باشید.

۰۲ آذر ۹۷ ، ۱۱:۵۸ ۱ نظر موافقین ۰ مخالفین ۰
بهنام صباغی

انواع معماری اتصالات سیگنال و اسلات در کیوت بین c++ و qml

با سلام خدمت دوستان عزیز چندی پیش در پی مسائلی که برام پیش اومد نیاز شد توی یک برنامه که هسته سی پلاس پلاس داره و کاملا با سی پلاس پلاس هست از کیو ام ال استفاده کنم ولی جالب بود دو روشی که قبلا میشناختم برای این کار جوابگوی نیازم نبود اما اجازه بدید اول روش های قبلی رو با مثال توضیح بدم برای دوستانی که اون رو روش رو بلد نیستند :

 

ادامه مطلب...
۰۶ آبان ۹۷ ، ۰۱:۰۶ ۱ نظر موافقین ۱ مخالفین ۰
بهنام صباغی

هزار و یک نکته در سی پلاس پلاس نکته چهارم ( چرا نباید از Singleton استفاده کنیم ؟)

در سری پست‌های الگوی طراحی الگوی Singleton را به شما معرفی کردم ولی در این پست قصد دارم دلایلی برای استفاده نکردن از این الگوی طراحی را توضیح دهم .

  1. آنها معمولا به عنوان شی گلوبال در نظر گرفته می‌شوند. بدی انها این است که وابستگی‌های کد را بجای افشا کردن در اینترفیس در کد مخفی می‌کنند. گلوبال کردن یک شی برای ارسال نکردن آن به اطراف یک بوی بد کد است .
  2. آن‌ها اصل مسئولیت واحد را زیر پا می‌گذارند. چون علاوه بر کار اصلی خود ساخت خود و مدیریت چرخه حیاط خود را نیز در دست دارند.
  3. آنها به شدت Coupling را بالا می‌برند و این باعث سختی تست آنها می‌شود.
  4. آنها طول عمر نرم‌افزار را در اختیار دارند و این برای یونیت تست که باید یک وضعیت به طور کامل خاتمه پیدا کند یک مشکل اساسی است چون باید هر واحد تست کاملا جدا از واحد‌های دیگر باشد. به همین دلیل برای یونیت تست به هیچ وجه نباید از سینگلتون استفاده کرد.

نظر شما در این مورد چیست ؟

۱۸ شهریور ۹۷ ، ۰۰:۰۰ ۱ نظر موافقین ۱ مخالفین ۰
بهنام صباغی

هزار و یک نکته در سی پلاس پلاس نکته سوم (کلمه کلیدی noreturn)

کلمه کلیدی noreturn برای مشخص کردن این نکته که تابع مقداری به صدا زننده باز نمیگرداند استفاده می‌شود. دقت کنید باز نگرداندن مقدار با برگرداندن مقدار void تفاوت دارد. این کلمه کلیدی برای توابعی که هیچ مقداری به صدا زننده فراخوانی نمی‌کنند استفاده می‌شود. ( مانند توابعی که برنامه را می‌بندند یا توابعی که حاوی حلقه بینهایت هستند یا توابعی که throw exceptions می‌کنند.

استفاده از این کلمه کلیدی به کامپایلر کمک می‌کند تا بهینه‌سازی هایی را انجام دهد و همینطور هشدارهای بهتری تولید کند.برای مثال اگر تابع f مقداری بازگشت ندهد و از کلمه کلیدی noreturn استفاده کنید کامپایلر میتواند در کد

f();

g();

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

مثال استفاده :

 

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

بررسی پرفورمنس ایتم سفارشی برای QML

با سلام در این پست قصد دارم توضیحی در مورد QtQuick Custom Item Performance بدم و بعد نقدی بر روش استفاده از ساخت ایتم از سی پلاس پلاس برای کیو ام ال داشته باشم .

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

  1. کشیدن با استفاده از اوپن جی ال و QQuickItem ( یا استفاده از یک ایتم داخلی )

  2. کشیدن با استفاده از QPainter و QQuickPaintedItem

  3. کشیدن با canvas

ادامه مطلب...
۰۱ شهریور ۹۷ ، ۰۱:۳۳ ۲ نظر موافقین ۱ مخالفین ۰
بهنام صباغی

استفاده از Qt یا برنامه نویسی نیتیو برای موبایل

با سلام

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

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

حالا که یک توضیح کلی از فریمورک کیوت داریم بهتره بررسی کنیم که آیا برنامه نویسی برای موبایل با کیوت بهتر هست یا برنامه نویسی با زبان نیتیو برای این منظور باید چندین فاکتور رو در نظر بگیریم

  • حجم خروجی که اگر در اندروید بررسی کنیم حجم خروجی یک اپ کیوت کمترین حجمش از 8 و خورده ای مگ شروع میشه که نسبت به اپ نیتیو یک مقدار بالاتر هست که البته با این حجم از اینترنت که این روزها توی ایران مصرف میشه این حجم دیگه بالا نیست .
  • از مشکلات دیگه ای که میتونه سر راه باشه برای برنامه نویسی با کیوت زبان سی پلاس پلاس هست که شاید توی کارهای خیلی سبک به مشکلی باهاش نخورید و لی در واقع توی سطح حرفه ای کار هر کسی نیست کار کردن با این زبان و باید توان و انرژی زیادی برای یاد گیری این زبان به صورت حرفه ای بگذارید وگرنه خروجی که میدید ممکنه براتون مشکلاتی ایجاد کنه که کمترینش میتونه نشت حافظه باشه البته اگر برنامه نویس زبان هایی بغیر سی و سی پلاس پلاس باشید احتمالا آشنایی زیادی باهاش ندارید کوتاه میتونم براتون بگم نشت حافظه یعنی مقداری از فضای رم گرفته میشه ولی آزاد نمیشه و این در طول زمان میتونه مشکل ساز باشه و این در صورتی پیش میاد که شما برنامه نویسی سی پلاس پلاس رو درست بلد نباشید و با سطح مبتدی یا متوسط برنامه نویسی کرده باشید که البته اشاره گر های هوشمند این مشکل رو تا حد خیلی خوبی حل کردند که البته استفاده از خود اونها هم نیاز به دانش سطح حرفه ای توی سی پلاس پلاس داره وگرنه ممکنه با اشاره گر های هوشمند هم باز نشت حافظه داشته باشید.
  • نکته دیگه ای که لازم هست بدونید این هست که برای استفاده از یک سری سرویس های اندروید مثل نوتیکیشن و ... نیاز هست کد جاوا توی پروژه سی پلاس پلاستون بزنید و با استفاده از JNI از اون استفاده کنید یعنی نیاز هست یک مقدار آشنایی با جاوا برای هندل کردن این قسمت داشته باشید .

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

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

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

و البته خوبی های دیگه ای که شاید الان من حضور ذهن ندارم بهشون اشاره کنم .

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

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

توسعه اپ هایی مثل انتی ویروس و ... که پردازش و کار با فایل زیاد دارند یا اکثر بازی ها که پردازش سه بعدی و گرافیکی دارند و همینطور اپ های هوض مصنوعی دار و ... همیشه بهتر هست با سی پلاس پلاس انجام بشه .

این نظرات شخصی و البه با توجه به تجربه بنده هست ممنون میشم بقیه دوستان هم نظراتشون رو منتشر کنند .

علی یارتون

۱۲ تیر ۹۷ ، ۱۵:۱۹ ۲ نظر موافقین ۰ مخالفین ۰
بهنام صباغی