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

۱۲۳ مطلب با موضوع «اموزش» ثبت شده است

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

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

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

f();

g();

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

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

 

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

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

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

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

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

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

  3. کشیدن با canvas

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

دیپلوی گرافیکی وابستگی‌های برنامه Qt Quick

QLD یک ابزار گرفیکی برای تهیه موارد مورد نیاز برای خروجی برنامه‌های QtQuick بر روی پلتفرم لینوکس است برنامه مشابه برای ویندوز و البته به صورت کنسولی که توسط خود کیوت توسعه یافته Windeployqt می‌باشد.

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

این ابزار توسط شهریار رزقی توسعه یافته است .

لینک گیتهاب ابزار QLD

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

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

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

با سلام

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

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

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

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

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

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

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

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

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

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

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

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

علی یارتون

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

بهترین توسعه دهنده

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

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

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

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

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

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

ولی واقعیت امر از نظر من این هست که اینها ممکنه توی مسیر تبدیل شدن به یک توسعه‌دهنده بهتر به ما مکم کنه اما هیچ کدوم دلیل نمیشه ما بهترین توسعه‌دهنده دنبا باشیم .

 

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

بهترین زبان دنیا

بعضی وقتا دوستان عنوان می‌کنند زبان پی اچ پی بهترین زبان دنیاست یا هر زبان دیگه‌ای رو عنوان میکنند بهترین زبان دنیاست .

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

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

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

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

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

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


۱ - آیا بهتره هرکس توی کار بره سراغ قسمتی که بیشتر بهش علاقه داره ؟

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

اشتراک یک تجربه قسمت چهارم : شرایط کاری خوب یا بهتر یا عالی یا عالی تر ؟

با سلام

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

تا اونجا گفتم که یزد مشغول به کار بودم و داشتم با اتریش هم همکاری میکردم ولی بیشتر درگیر کار یزد بودم چون به شدت گیر افتاده بودیم و نیاز بود بیشتر وقت بگذاریم یکروز سر کار توی شرکت یزد توی تلگرام یکی بهم پیام داد و گفت

- سلام خوبی آقای صباغی؟

من - سلام بفرمایید ممنون خوبم شکر خدا شما هم  انشالله خوب باشید

- ممنون شما ساکن تهران هستید ؟

من - خیر چطور ؟

- یه پیشنهاد کاری داشتم براتون دوست ندارید ساکن تهران بشید ؟

من - بفرمایید میشنوم

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

من - پیشنهاد از کارهای فعلیم بهتر باشه چرا که نه

 

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

اشتراک یک تجربه : قسمت سوم اولین پروژه و شروع کار جدی

بنام خدا

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

ـ یه پروژه هست میتونی بزنی ؟

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

- سلام جناب صباغی راستش ما یه پروژه داریم

من شک کردم حتما همونه ولی به روی خودم نیاوردم( با عرض معذرت از مدیر شرکتی که توش کار میکردم برای همین پروژه معدن در واقع ایشون بهم پیام دادند )

گفتم ـ خب بفرمایید چی هست پروژتون و چقدر زمان داره

مدیر ـ والا ما برای فاز اولش دو ماه زمان در نظر گرفتیم و از شما میخوایم مشاور ما باشید توی این پروژه ما خودمون یک شرکت نرم افزاری هستیم که تجربه کمی توی این زمینه داریم میخواستیم اگر امکانش هست شما به تیممون آموزش بدید و انشاء الله کار رو پیش ببریم البته پروژه احتمالا تا عید ادامه داره ولی برای فاز اول زمانی که داریم محدوده

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

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

بهش گفتم اگر امکانش هست یه مهلتی بدید بررسی کنم خبر میدم

رفتم توی مثال های کیوت (Qt) دیدم همچین مثالی رو اصلا خودش داره که یه مدل سه بعدی نشون داده و با کلیک روش یه ناحیه انتخاب میشه اومدم بهش گفتم

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

از مثال کیوت هم براش فیلم فرستادم به شدت شگفت زده شد و گفت

- این دقیقا همون چیزی هست که ما میخوایم فقط با یکم تغییر پس میتونیم همکاری داشته باشیم ؟

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

- اگر لازم باشه برای مدت مثلا یک هفته بیاید یزد برای آموزش تیم که مشکلی ندارید ؟

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

مدیر - بی زحمت نمونه کارهاتون رو برام بفرستید بررسی کنم

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

مدیر - پس من بهتون خبر میدم

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

انتشار پروژه جدید مثال‌های QML در گیتهاب

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

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

اینم یک فیلم کوتاه ازش :

 

 

لینک پروژه در Github

موفق باشید .

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