داده هایت را مراقبت کن، به شخص سوم نسپار(هر خطای ممکن رخ خواهد داد)

1 هفته پیش | 901 مشاهده شده
داده هایت را مراقبت کن

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

شروع یک تراژدی

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

Due to U.S. trade controls law restrictions, your GitHub account has been restricted. This means we have suspended access to private repository services and paid services for your account. For free individual accounts, you still have access to free GitHub public repository services (such as public repositories for open source projects and associated GitHub Pages and Gists). If you believe your account has been flagged in error, and you are not located in or resident in a sanctioned region, please file an appeal. Please read about GitHub and Trade Controls for more information.

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

تلاش برای رقم زدن یک پایان خوب

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

و اما کلام آخر

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

به گفتهٔ تیم برنرزلی، وب هم مانند بیشتر انسان‌ها پس از ۲۰ سالگی به مرحله اصلی شکوفایی خود رسیده‌است. او به روزنامه استاندارد چاپ اتریش گفته‌است که ما هنوز در سطح باقی مانده‌ایم و از تمام توانایی‌های وب استفاده نمی‌کنیم. خالق وب همزمان همگان را فرا خوانده تا از توانایی‌ها، خلاقیت و دانش خود برای گسترش امکانات اینترنت استفاده کنند.

اما کلام آخر چه ربطی به نوشته هایم دارد. متاسفانه ما با گذر زمان به جای نزدیک شدن به اینترنت آزاد و رعایت حقوق کاربران و حفظ کردن همین سطح از مفید بودن اینترنت دچار عقب گرد شده ایم(هر چند کاربران ایرانی از هر دو طرف مورد کم لطفی قرار گرفته اند). شرایط استفاده از خدمات (Terms of Service) اینترنتی کاملا انحصار طلبانه و حالت ارباب برده (Master/Slave) پیدا کرده است. داستان هنگامی غم انگیز تر می شود که سرویس های وفادار و مستقل یکی بعد از دیگری در حال فروپاشی هستند. پس با شرایط استفاده از خدمات بی چون و چرای سرویس های اینترنتی توصیه می کنم به هیچ سرویسی شخص سومی (داخلی و خارجی) اعتماد نکنید. خلاصه کلام داده هایت را مراقبت کن. چیزی که برای آن ها مهم نیست حقوق کاربران است. شاید اینترنت دوران سال های 2000 و قبل از آن و اوج یاهو و یاهو مسنجر و غیره بهترین دوران اینترنت( بخوانید زیباترین دوران) برای من بود. اینترنت آینده برای من دیگر دوست داشتنی نیست، بلکه رعب آور است.

لینک مطلب داده هایت را مراقبت کن ، به شخص سوم نسپار(هر خطای ممکن رخ خواهد داد) در ویرگول



کدام برای یادگیری بهتر است: تماشای دوره های آموزش آنلاین یا خواندن کتاب

2 هفته پیش | 287 مشاهده شده
یادگیری بهتر با کتاب

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

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

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

چرا کتاب هنوز برای من ارزش بیشتری دارد

تنظیم سرعت خواندن

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

فهم عمیق تر

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

جامع بودن در کنار ایجاز

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

جستجوی راحت

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

سند بودن

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

واقع گرایی

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

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

منظورت این است که از کتاب ها استفاده کنیم از ویدیو ها استفاده نکنیم؟

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



تفاوت میکروکنترلرها و DSPها

3 ماه پیش | 834 مشاهده شده
دی اس پی

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

میکروکنترلر و میکروپروسسورهای معمولی

اغلب دستگاه‌های الکترونیکی مدرن شامل یک یا چند میکروکنترلر هستند. در حقیقت، میکروکنترلرها ها همه جا حاضر هستند: آن‌ها در تلفن‌های همراه، لپ تاپ ها، تلویزیون ، یخچال ها و بیشتر وسایل خانگی هستند. آن‌ها چراغ‌های چشمک‌زن در اسباب‌بازی‌های کودکان را کنترل می‌کنند. کاری که میکروکنترلرها و میکروپروسسورها در این وسایل انجام می دهند دقیقا چیست؟ پاسخ ساده است میکروکنترلرها ورودی‌ها را از دکمه‌ها، سوییچ‌ها، حسگرها و اجزای مشابه دریافت می‌کند؛ و مدار جانبی مانند موتورها و البته خروجی ها مانند نمایشگرها مطابق با یک برنامه از پیش تنظیم‌شده را کنترل می‌کند که به آن‌ها می‌گوید چه کار کنیم و چگونه واکنش نشان دهیم. از جمله میکروکنترلرهای معروف در ایران PIC،AVR،ST و NXP می توان نام برد.

میکروکنترلرها

شکل 1: شمای کلی از واحدهای میکروکنترلرها

ادامه خواندن



اپن سی وی و سیستم های امبدد

3 ماه پیش | 189 مشاهده شده
پردازش تصویر

OpenCV یک کتابخانه از توابع برنامه نویسی است که عمدتا جهت پیاده سازی بینایی کامپیوتر در زمانی بلادرنگ طراحی شده است. در ابتدا توسط اینتل توسعه داده شد، بعدا توسط Willow Garage و سپس Iteez پشتیبانی شد. این کتابخانه چندسکویی است و برای استفاده( تحت مجوز BSD) به صورت اپن سورس عرضه گشته است. سیستم امبدد یک کنترل‌کننده با یک کاربرد اختصاصی در سیستم های مکانیکی یا الکتریکی بزرگ‌تر(اغلب با محدودیت‌های زمانی و سرعت ) است. این دستگاه به عنوان بخشی از یک دستگاه کامل، شامل سخت‌افزار و قطعات مکانیکی و غیره می باشد. امروزه از سیستم های امبدد در بسیاری از وسایل متداول زندگی روزمره استفاده می شود. در سال های اخیر بر روی ساخت سیستم های امبدد  با قابلیت بینایی ماشین کار شده است، علی رغم تلاش های زیادی که انجام شده، پردازش بلادرنگ تصویر در سیستم های امبدد هنوز مسئله نو و حل نشده (از نظر کاهش قیمت و سادگی کار) است. در این پست راهکارهایی که در سال های اخیر ارائه شده است مرور خواهیم کرد.

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

ادامه خواندن



دانلود اپلیکشن وبلاگ

3 ماه پیش | 98 مشاهده شده
اپلیکشن اندروید استک دیزاین

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

 

ادامه خواندن



مهاجرت به اندروید ایکس

3 ماه پیش | 76 مشاهده شده

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

تا قبل از معرفی اندروید ایکس و تغییر نیم اسپیس مخازن maven گوگل برای فراخوانی لایببرری های گوگل در فایل گریدل از سینتکس com.android.support:libraryname-v1.1 استفاده می کردیم.

com.android.support:cardview-v7

com.android.support:appcompat-v7

اما با انتقال لایببرری هایی از گوگل به جت پک نامگذاری آن ها در گریدل به صورت زیر تغییر پیدا کرده است. یعنی باید به ابتدای آن ها androidx اضافه گرد. برای جزییات بیشتر بهاین لینک مراجعه شود.

androidx.cardview:cardview:1.0.0

androidx.appcompat:appcompat:1.0.0

ادامه خواندن



ESR چیست

3 ماه پیش | 78 مشاهده شده

ESR مخفف مقاومت سری معادل است. ESR یکی از ویژگی‌هایی است که عملکرد یک خازن الکترولیتی را تعریف می‌کند. مقدار کم ESR در خازن های الکترولیتی بسیار مطلوب است چون عبور هر جریان موج (ریپل شدن ولتاژ ) دردرون خازن به علت وجود تلفات (مقاومت سری شده با خازن) به حرارت تبدیل شود. این گرمای ایجاد شده، با خشک کردن مایع الکترولیت با نرخ رو به افزایشی مرگ خازن را تسریع می دهد. در طول عمر یک خازن، این که کیمت ESR آن با فاکتور ۱۰ تا ۳۰ بار افزایش و یا حتی به یک مدار باز تبدیل شود، روندی غیرمعمول نیست. حدود عمر خازن های الکترولیت ۲۰۰۰ تا ۱۵۰۰۰ ساعت است و بسیار وابسته به درجه‌حرارت عملیات محیطی هستند. با افزایش ESR عملیات فیلتر خازن دچار اختلال می‌شود و سرانجام مدار به درستی عمل نمی‌کند.

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

ادامه خواندن



کنترلر درایور ال سی دی چیست؟

3 ماه پیش | 90 مشاهده شده

ال سی دی های گرافیکی با توجه به تراشه پردازنده خود، که به آنها راه انداز یا درایور می گویند معرفی می شوند. اکثر تکنولوژی ها شامل TFT, OLED, Character, Graphical, UWVD و FSC ها  ای سی راه انداز آنها درون خود ال سی دی  و یا همراه  آن تعبیه می شود. راه انداز های LCD گرافیکی معمولا یا از نوع تراشه های T6963 ساخت شرکت توشیبا و یا KS0108 ساخت شرکت سامسونگ هستند. از طرفی پنج سال اخیر ال سی دی های چینی که از نظر قیمت بسیار ارزان تر هستند با کنترلرهای ST7920  وارد بازار شده است  درایورهای SSD1289 هم مطرح هستند. به زودی تصمیم دارم مثال های از ال سی دی ها با کنترلر سامسونگ و توشبیا در پروژهای LPC سری 2000 ارائه کنم. در این پست  به کنترلر درایور ال سی دی ها خواهم پرداخت.

آی سی کنترلر ال سی دی چیست؟

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

آی سی کنترلر ال سی دی کجا تعبیه شده است؟

معمولا خود ال سی دی به یک برد حاوی COB متصل است، که همین COB (به شکل لکه سیاه رنگ) آی سی کنترلر ال سی دی است، بسته به نوع ال سی دی می تواند چند تا از آن ها بر روی برد تعبیه شده باشد.

آی سی کنترلر ال سی دی
شکل 1: تصویر COB بر روی یک نوع ال سی دی

ادامه خواندن



اشتراک سورس پروژه های آرم LPC210x

3 ماه پیش | 119 مشاهده شده

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

ادامه خواندن



متریال دیزاین در اندروید

3 ماه پیش | 121 مشاهده شده

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

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

داشتن طراحی کمپونت های آماده برای سه پلتفرم وب، اندروید، ای او اس

داشتن آموزش و راه اندازی آسان آن

داشتن ویو زیبا و شیک

لیست فریم ورک های دیگر متریال دیزاین

 

Material Design Lite
Materialize
Material-UI
MUI CSS
Polymer
Ionic Material
Material Foundation
Surface
Essence
LumX
Paper
Material Design for Bootstrap
Angular Material
Material
Phonon
Framework7



وبلاگ چیت شیت

1 سال پیش | 145 مشاهده شده

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

ادامه خواندن



مفهوم اف اسکیت در اندروید

1 سال پیش | 77 مشاهده شده

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

معکوس مهندسی برنامه های آندروید

ماهیت جاوا (زبان برنامه نویسی غالب برای برنامه های آندروید، به استثنای کد بومی) این است که کد به کد ماشین کامپایل نمی شود؛ آن را به یک فرمت متوسط که آماده است بر روی انواع سیستم عامل های سخت افزاری اجرا شود. در حالی که این اجازه می دهد تا قابل حمل  برای روی سخت افزارهای مختلف باشد،  در حال حاضر در APK این امکان برای استخراج فایل ها و بررسی فایل ها شامل xml و dex فایل ها و منابع مورد استفاده  برنامه های اندرویدی را میدهد.

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

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



نحوه توصیف الگوهای طراحی

1 سال پیش | 87 مشاهده شده

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

اطلاعات در اسناد الگوی طراحی به شرح زیر خواهد بود:

نام و طبقه بندی الگو:

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

قصد:

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

همچنین به عنوان نام دیگر شناخته شده برای الگو، اگر وجود داشته باشد.

انگیزه:

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

کاربرد:

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

ساختار:

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

شركت كنندگان:

کلاس ها و / یا اشیاء شرکت کننده در الگوی و مسئولیت های آنها.

همکاری:

چگونه طبقات و اشیاء همکاری می کنند تا مسئولیت های خود را انجام دهند.

عواقب:

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

پیاده سازی:

مشخص می کند چه تکنیک هایی باید در هنگام اجرای الگوریتم از آن آگاه باشیم و همچنین در مورد مسائل خاص زبان صحبت می کند.

کد نمونه:

قطعه کد که ما را به چگونگی اجرای الگوی در جاوا یا زبانهای دیگر می دهد.

استفاده های شناخته شده:

مثال استفاده از الگوها در دنیای واقعی

الگوهای مرتبط:

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

 



دسته بندی الگوهای طراحی

1 سال پیش | 75 مشاهده شده

در مهندسی نرم‌افزار، الگوی طراحی (به انگلیسی: Design Pattern) یک راه‌حل عمومی قابل تکرار برای مشکلات متداول در زمینه طراحی نرم‌افزار است. الگوی طراحی، یک طراحی تمام‌شده نیست که به صورت مستقیم بتواند تبدیل به کد منبع یا ماشین شود؛ بلکه، یک توضیح یا قالب برای حل یک مسئله در شرایط مختلف است.

الگوها در واقع بهترین روش ممکن هستند که یک برنامه‌نویس می‌تواند در هنگام طراحی یک برنامه برای حل مشکلاتش از آن‌ها استفاده کند. الگوهای طراحی شیءگرا نوعاً نشان‌دهندۀ روابط و تعامل‌ها بین کلاس‌ها و شیء‌ها هستند، بدون این‌که کلاس‌ها یا اشیا نهایی برنامه را مشخص کند.

بحث Design Pattern برای اولین بار در دنیای نرم‌افزار توسط GoF صورت گرفت. یک گروه چهار نفره شامل: Erich Gamma ،Richard Helm ،Ralph Johnson و John Vlissides ملقب به Gang of Four یا GoF هستند.

این گروه در ۲۱ اکتبر سال ۱۹۹۴ کتابی را تحت عنوان Design Patterns: Elements of Reusable Object-Oriented Software منتشر کردند. (این کتاب تا تاریخ آوریل ۲۰۰۷، سی و ۶ بار تجدید چاپ شده است)

آنها در این کتاب ۲۳ الگوی طراحی کلاسیک را با زبان‌های شی گرا مطرح در آن زمان (++C و Smalltalk) برای اولین بار مورد بحث قرار دادند

برای یادگیری الگوهای طراحی یکی از بهترین کتاب ها برای شروع همین کتاب GoF است، که بنده هم این کتاب را مطالعه کرده ام. الگوهای طراحی در این کتاب از دو نظر دسته بندی شده است.بیشتر الگوهای طراحی را با استفاده از دو معیار طبقه بندی کنید:  هدف(purpose) و دامنه(Scope). هدف منعکس‌کننده آنچه یک الگو انجام می دهداست. دامنه مشخص می کند الگوهای کلاس با رابطه بین کلاس ها و زیر کلاس های آنها ارتباط دارد. روابط از طریق ارث بری آغاز می شود. هدف الگوهای طراحی را به دسته های زیر تقسیم بندی می کند.

ادامه خواندن



تکه تکه (گرانولی) در شی گرایی

1 سال پیش | 87 مشاهده شده

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

اشیا تکه تکه  (Granularity) یا  اشیا گرانولی بودن  در طراحی شی گرا به معنی این است که  اشیایی   که معمولا تکه تکه و تعداد آنها زیاد است. اشیاء این طراحی  گرانولی، آنهایی هستند که جزئیات کمتری در برنامه شما دارند. در نظر گرفتن:

درختان در چشم انداز بازی
شخصیت ها در سند
صندلی در سینما
نقاط قدرت در برنامه CAD

معمولا شما در برنامه کاربردی بسیاری از اشیاء گرانولی دارید. اگر شما یک شی جداگانه برای هر درخت / کاراکتر / صندلی / CAD ایجاد کنید، این امر می تواند بسیار حافظه مصرف کند. این مشکل است که توسط الگوی  Flyweight حل  شده است.



Expected a string but was BEGIN_OBJECT?

1 سال پیش | 79 مشاهده شده

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

java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT

برای رفع مشکل چون به ای پی ای رست وردپرس قابل تغییر نیست برای برنامه اندروید خود باید یک کلاس Adapter بنویسم که در این کلاس باید از کلاس List  در اندروید استفاده کنم. کلام آخر اینکه نباید از کلاس String  استفاده کرد.

[java]
if (key.equals(“id”)) { // Check if desired key
// Fetch the value as a String
String value = jsonReader.nextString();
Log.d(TAG, value);
// break; // Break out of the loop
}

[/java]

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

[java]
jsonReader.beginObject();
while( jsonReader.hasNext() ) {
key = jsonReader.nextName(); // Fetch the next key

if (key.equals(“rendered”)) { // Check if desired key
// Fetch the value as a String
String value = jsonReader.nextString();
Log.d(TAG, value);
}
else{ jsonReader.skipValue(); // Skip values of other keys
}
}
jsonReader.endObject();
[/java]



تفاوت throw و throws در جاوا

1 سال پیش | 90 مشاهده شده

در این پست به تفاوت throw  و throws در جاوا خواهم پرداخت. قبل از خواندن این آموزش، به آموزش قبلی در مورد مدیریت استثنا در جاوا مراجعه کنید.

 کلمات کلیدی throw و throws مورد استفاده در اداره استثنا است. کلمه کلیدی throw برای انتقال نمونه ای از استثنا ایجاد شده توسط برنامه نویس به JVM به صورت دستی استفاده می شود. کلمه کلیدی throws برای انتقال مسئولیت پاسخ  استثنا در متد به روش فراخوانی انجام می شود. تفاوت اصلی بین throw و throws این است که کلمه کلیدی throw از شیء استثنای استفاده کرده  در حالی که کلمه کلیدی throws از نام کلاس های استثنایی استفاده می کند.