کاهش حجم ویدیو (برای برنامه شاد)

یکی از مشکلاتی که این روزها معلمها با آن درگیر هستند موضوع ارسال فایل های ویدیویی در برنامه شاد است. حجم فایل های ویدیویی که نوعا توسط دوربین های گوشی تهیه می شود خیلی زیاد بوده و معمولاً یک ویدیوی ۵ دقیقه ای حجمی حدود ۱۵۰ مگابایت یا بیشتر تولید می کند. حجم این ویدیوها که باید در شبکه شاد آپلود شوند، یک چالش بزرگ است که اکثر معلمها و البته دانش آموزان با آن درگیر هستند. در نظر بگیرید اگر معلمی روزانه تنها ۶۰ دقیقه ویدیو تهیه کند بیش از ۱.۵ گیگابایت باید آپلود کند! خود نرم افزار شاد (که خیلی شبیه روییکا است!) در واقع باید این قابلیت را داشته باشد و البته یک چیزهایی هم دارد ولی خیلی بد عمل می کند.

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

نرم افزارهای متعددی برای کاهش حجم ویدیو وجود دارد. یکی از ساده ترین و کاربردی ترین نرم افزارها برای اندروید نرم افزار Video Transcoder است. در این نرم افزار با انجام تنظیمات ساده ای مثل تنظیم نرخ فریم، تنظیم کیفیت تصویر و صدا، می توانید حجم ویدیو را تا یک ششم یا بیشتر کاهش دهید.

برای نمایش ویدیوی کاهش حجم ویدیو در آپارات روی لینک زیر کلیک کنید:
کاهش حجم فیلم اندروید

Share

ریست شدن مداوم کامپیوتر محاسباتی (راه حل)

اواسط اسفند بود که یک کامپیوتر محاسباتی برای شرکت شهاب خریدم. مهمترین مشخصه این کامپیوتر، کارت گرافیک MSI GeForce RTX 2080 Gaming Trio بود که با داشتن ۲۹۴۴ هسته پردازشی برای کاربردهای یادگیری عمیق و آموزش شبکه های کانولوشنی خیلی مناسب بود. در کنار آن ۳۲ گیگابایت حافظه ی RAM با فرکانس ۳۲۰۰ مگاهرتز و پردازنده Core i7 9700K که تا فرکانس ۴۹۰۰مگاهرتز را پشتیبانی می کند، نیازمندیهای محاسباتی ما را تامین می کردند. دو هارد SSD و یک هارد HDD هم کار ذخیره سازی اطلاعات و داده ها را بر عهده داشتند.

کامپیوتر محاسباتی با گرافیک RTX 2080

مشکل ریست شدن مداوم هنگام استفاده از کارت گرافیک ۲۰۸۰

یکی دو روز اول که مشغول نصب ویندوز و برنامه های مورد نیاز بودم و سیستم به خوبی کار می کرد تا اینکه خواستم اولین شبکه عمیق را آموزش دهم. بعد از مدت کوتاهی سیستم بازنشانی (ریستارت یا ریست!) شد. گفتم ان شاءالله گربه بوده! دوباره آموزش را با پایتون روی GPUی گران قیمت سیستم با حدود ۳۰۰۰ هسته ی کودا (CUDA Core) شروع کردم و باز بعد از مدتی سیستم خاموش شد. این کار بارها تکرار شد. با شرکت فروشنده سیستم تماس گرفتم و گفتم چنین مشکلی دارم، و آنها که بیش از یک هفته سیستم را برای تست نگه داشته بودند و ۵۰۰ هزار تومان هزینه تست پایداری سیستم گرفته بودند گفتند درایورت را عوض کن و درایور قدیمی تر نصب کن. ما اینجا کلی تست گرفتیم مشکلی نداشته! الحمدلله مسئول پشتیبانی شرکت، خوش برخورد بود ولی فرایند دو هفته ای فروش و دردسرهای پس از فروش واقعا خسته کننده بود و بعید است دوباره از این شرکت خرید کنم. به هر حال مشکل اساسی تر از این حرفها بود و به نظر می رسید در تستهایی که گرفته اند GPU زیر بار ۱۰۰% نرفته چرا که با اجرای یک benchmark کوچک که گرافیک را برای لحظاتی زیر بار سنگین می برد، باز هم سیستم خاموش می شد.

بگذریم. بعد از مدتی تماس و پاسخ، متوجه شدم که به آنها امیدی نیست. لذا تستهای متعددی را شروع کردم که از نیمه اسفند ۹۸ تا ۳۰ فروردین ۹۹ (به طور گسسته) طول کشید. البته بخشی از این زمان را به دلیل شیوع کرونا، دسترسی مستقیم به کامپیوتر نداشتم و از راه دور با ریموت دسکتاپ تست می گرفتم. اما بالاخره ریشه مشکل پیدا شد و الان بیش از ۳۶ ساعت است که کامیپوتر زیر بیشترین بار محاسباتی (CPU و GPU نزدیک ۱۰۰%، حافظه گرافیک حدود ۹۰% و حافظه ی رم حدود ۷۰%) و در حالت OverClock گرافیک و CPU و RAM، خاموش نشده است. لذا حیفم آمد تجربیاتی که کسب شد را به اشتراک نگذارم:

۱. اولین کار این بود که ببینم منشاء مشکل از کجاست. و البته چون فقط زمانی خاموش می شد که از کارت گرافیک کار زیادی می کشیدم حدسم این بود که مشکل از کارت گرافیک است. این کار را با تحت فشار گذاشتن پردازنده و حافظه رم در حالیکه گرافیک بیکار بود تست کردم و تقریبا مطمئن شدم که مشکل از کارت گرافیک است.

۲. دومین کار این بود که درایور کارت گرافیک را عوض کنم. چندین نسخه را تست کردم (از نسخه ۳۹۱.۳۵ تا آخرین نسخه که ۴۴۵.۸۷ بود). برخی نسخه ها مثل ۴۱۸.۹۱ و ۴۲۵.۳۱ پایداری بیشتری داشتند طوری که مثلا نسخه ۴۱۸ یک بار نزدیک ۲۴ ساعت (در مد Silent که کمترین فشار روی پردازنده ها هست) کار کرد ولی متاسفانه بعد از آن دوباره ریست شدن ها شروع شد.

۳. سومین حدس من این بود که شاید مشکل از سیستم عامل باشد، لذا در کنار سیستم عامل فعلی که ویندوز سرور ۲۰۱۹ بود، یک ویندوز ۱۰ ۶۴ بیتی هم نصب کردم و تستها را روی آن شروع کردم. تقریبا هیچ تفاوتی حاصل نشد و همان اتفاقات تکرار شد.

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

۵. حدس پنجم این بود که مشکل از نوسان ولتاژ برق باشد. چون جایی که بنده کار می کنم سابقه نوسانات شدید تا ۲۷۰ ولت و بیشتر را داشته و الان هم در شرایط عادی ولتاژ آن به جای ۲۲۰، حدود ۲۳۵ ولت است. لذا کلا کیس را به منزل منتقل کردم. این بار هم نزدیک به ۲۴ ساعت کامپیوتر در شرایط Silent کار کرد ولی صبح روز بعد، باز دیدم که سیستم ریست شده است.

۶. یک حدس دیگر به منبع تغذیه برمی گشت و اینکه ممکن است جریان کافی را نتواند تامین کند. برای اطمینان از میزان جریانی که کامپیوتر می کشد، یک آمپرمتر اثر هال از یکی از همکاران امانت گرفتم و دیدم در بدترین شرایطِ آورکلاک، جریانی کمتر از ۲ آمپر می کشد. با توجه به اینکه منبع تغذیه گرین ۸۵۰ وات روی سیستم نصب است، قاعدتا به راحتی تا ۴ آمپر را جواب می دهد. لذا مشکل از جریان دهی منبع تغذیه هم نبود.

۷. همچنان روی مشکلات جریان متمرکز بودم که به این نتیجه رسیدم کلا آورکلاک گرافیک را غیرفعال کنم (ضمن اینکه چند روزی بود که کلا آورکلاک پردازنده و رم را از طریق بایاس غیرفعال کرده بودم.) لذا با کمک نرم افزار MSI Afterburner فرکانس پردازنده گرافیکی و حافظه ی گرافیک را ۵۰۰ هرتز کمتر از مقدار استاندارد کردم (یعنی نه تنها آورکلاک را غیرفعال کردم بلکه کاهش دادم!). با این کار پایداری سیستم خیلی افزایش یافت و به راحتی تا حدود ۲۰ ساعت کار می کرد ولی باز هم بالاخره خاموش می شد در حالیکه برای کار ما گاهی باید هفته ها روشن بماند. ضمن اینکه نمی خواهیم از مزایای آورکلاک سیستم محروم شویم!

غیر از موارد فوق تستهای دیگری هم گرفتم مثلا چون حافظه های رم از دو شرکت متفاوت بودند دو ماژول متمایز را برداشتم که شاید به دلیل ناسازگاری با یکدیگر، سیستم را دچار مشکل می کنند ولی ربطی به این موضوع هم نداشت. و اما راه حل:

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

ضرورت اتصال دو کابل مستقل به کارت گرافیک RTX 2080

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

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

Share

راه حل خطای Failed to find Build Tools revision 27.0.3 در اندروید استودیو

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

Failed to find Build Tools revision 27.0.3

Install Build Tools 27.0.3 and sync project

برای رفع مشکل، پیشنهاد خود اندروید استودیو و خیلی از فرومها این است که نسخه ابزار-کامپایل ۲۷٫۰٫۳ را دانلود کرده و در پوشه مناسب (که نوعا در مسیر C:\Users\Hossein\AppData\Local\Android\sdk\build-tools است) Extract کنید. اما معمولا شما یک نسخه دیگر از build tools را دارید و کارتان را هم راه می اندازد! مثلا من نسخه ۲۶٫۰٫۲ و ۲۸٫۰٫۱ را دارم، دلیلی برای دانلود ندارم!

در این حالت برای رفع مشکل به صورت زیر عمل کنید:

راه حل خطای build tools revision

فایل build.gradle (از ماژول app) را باز کنید و عبارت زیر را در بخش android اضافه کنید یا اگر هست، نسخه آن را اصلاح کنید:

android {
buildToolsVersion “28.0.1”
}

دقت کنید که به جای ۲۸٫۰٫۱ همان نسخه ای را باید بگذارید که موجود دارید. و نکته دیگری اینکه عبارتهای compileSdkVersion، targetSdkVersion و minSdkVersion هم حتما باید کمتر مساوی نسخه build-tools باشند (اینها در همین گردل هستند و ممکن است در جاهای دیگر هم باشند که باید جستجو و جایگزین کنید). مثلا در حالت فوق که من نسخه ۲۸٫۰٫۱ را استفاده می کنم، حداکثر ورژنی که می توانم برای این سه دسته انتخاب کنم، ۲۸ است که البته معقول نیست چون خیلی از موبایلها هنوز با APIهای خیلی قدیمی تر مثل ۲۰ دارند کار می کنند لذا minSdkVersion را روی عددی مثل ۲۰ یا کمتر بگذارید.

Share

سی پلاس پلاس ++C یا پایتون Python

مقایسه ++C و پایتون

داشتم پروژه های نمونه Opnecv (شامل image stitching و image stitching detailed) برای تولید تصاویر پانوراما را تحلیل می کردم که به عنوان مثال درس بینایی ماشین در کلاس توضیح دهم. برای درک بیشتر، به دنبال مثالهایی با توضیحات کاملتر در وب بودم که در حین جستجو به پروژه ای رسیدم که با پایتون نوشته شده بود و خیلی خوب تمام بخشهایش توضیح داده شده بود. این شد که پایتون را به ویژوال استودیو اضافه کرده و پروژه مذکور را را کامپایل و اجرا کردم. دیدم با وجود اینکه این برنامه از نسخه باینری کتابخانه OpenCV استفاده می کند، زمان اجرا خیلی کند است. بررسی کردم دیدم مشکل سر یک تابعی هست که دو حلقه for تو در تو دارد. برای مقایسه با ++C تصمیم گرفتم کد را به ++C بنویسم و این شد که پایتون را یاد گرفتم و طی چند ساعتی، کد را به ++C تبدیل کردم.

مقایسه زمان اجرای برنامه در پایتون و ++C

نتیجه مقایسه جالب بود. غیر از حلقه for بقیه بخشها از نظر زمانی تقریبا یکسان بود چرا که هر دو از کتابخانه OpenCV استفاده می کردند که اصالتا کد ++C است. اما در حلقه for کد ++C نزدیک به ۱۰ برابر سریعتر از پایتون اجرا می شود. زمانها را ببینید:
مقایسه سی پلاس پلاس و پایتون

​زمان اجرای کد سی پلاس پلاس ۱٫۲۵ ثانیه و زمان اجرای کد پایتون ۱۰٫۴۷ ثانیه بود.
از این زمانها در پایتون حدود ۱٫۵ ثانیه مربوط به توابع داخلی OpenCV بوده و ۹ ثانیه مربوط به حلقه for تو در تو است که روی کل تصویر جاروب می شود.

در C++ کل زمان تقریبا مربوط به توابع داخلی OpenCV بوده و حلقه for تودرتو تنها ۰٫۰۰۲ ثانیه زمان برد.

لذا در کل برنامه، ++C حدود ۱۰ برابر سریعتر بوده و در حلقه for تفاوت سرعت وحشتناک است: ۹ ثانیه به ۰٫۰۰۲ ثانیه می شود ۴۵۰۰ برابر سرعت بهتر ++C نسبت به زبان اسکریپتی پایتون.

نتیجه مقایسه ++C و پایتون

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

لذا برای کاربردهایی که پردازشهای سنگین و حلقه های زیاد ندارید استفاده از پایتون خوب است. برای کارهای پردازشی یا باید سراغ ++C بروید یا اینکه اگر اصرار به استفاده از پایتون دارید، بخشهای پردازشی کد را حتما از نسخه های باینری کتابخانه های ثالث استفاده کنید.

 

Share

هدف زندگی – ۲

در ادامه پست قبلی در مورد هدف زندگی نظرسنجی دیگری گذاشتم مبنی بر اینکه فکر می کنید، هدف از خلقت انسان چیست؟ و ۹۳ نفر در آن شرکت کردند که نتیجه آن به شرح زیر است:
هدف از زندگیدر این مجال، این تحلیل مختصری بر این نظرسنجی ارائه می کنم:
✅در مورد هدف زندگی ابتدا باید مشخص کنیم که آیا #خدا هست یا نیست. البته این موضوع بحث مفصلی است و فرض ما بر این است که همه شما به حضور خدا اعتقاد دارید.
استیون هاوکینگ، فیزیکدان مشهور، در سالهای گذشته اعلام کرده بود که خدا نیست و جهان هستی بر اثر پدیده #انفجار بزرگ یا بیگ بنگ به وجود آمده است و قانون #جاذبه، جهان را اداره می کند. البته ایشان نیفزودند که خود این پدیده انفجار بزرگ را چه کسی به وجود آورد؟ اگر بپذیریم که بیگ بنگ سبب تشکیل جهان هستی شده است، باید از #مسبب آن هم بپرسیم که باز به خدا می‌رسیم (سوره انبیاء آیه ۳۰).
جالب اینکه امسال خود جناب استیون هاوکینگ هم نظرش عوض شده و وجود خدا را پذیرفته است.
از طرفی در زمان فعلی تقریباً هیچ دین بزرگ و متوسطی نداریم که به حضور خدا اعتقاد نداشته باشد و به ادعای ویکی پدیا، تنها ۷% جمعیت جهان به خدا اعتقاد ندارند که حدود نصف آنها هم چینی اند!
لذا فرض را بر این می گیریم که همه شما قبول دارید خدا هست.
✅ اما در مورد هدف زندگی، سه نفر از دوستان پاسخ دادند که زندگی پوچ است و بعد از مرگ #نابود می شویم. خوب این فلسفه، با حکمت خداوند ناسازگار است چرا که شخص حکیم کار بیهوده نمی‌کند. با عدل خدا هم ناسازگار است چراکه انسان ها در طول ۶۰-۷۰ سالی که در زمین زندگی میکنند، به پاداش و سزای کردار نیک و بد خود نمی‌رسند…
از اینها که بگذریم، آیا برای شما پیش نیامده است که #مرده را به #خواب ببینید؟ خوب اگر انسان با مرگ نابود می‌شود چگونه پس از مرگ در خواب دیگران ظاهر می شود و به او القائاتی می‌کند و گاهی او را از برخی اخبار #غیب آگاه می‌کند؟
چطور انسان با مرگ نابود می شود حال آنکه اخبار زنده کردن مردگان توسط حضرت #عیسی به تواتر رسیده است!
چطور انسان با مرگ نابود می شود حال آنکه اخبار متعددی از #شفای مریض ها توسط امامان در زمان خودمان دیده و شنیده ایم؟ امامانی که صدها سال قبل شهید شده اند…
اگر دوستانی هستند که تمایل به گفتگو در این مورد دارند می توانند به حاج آقای حسینی دفتر نهاد مراجعه کنند. من هم به اندازه بضاعتم در خدمت هستم.
پنج نفر از دوستان اعلام کردند که هدف از زندگی رسیدن به #لذّت بیشتر است. این هدف، به چند دلیل نمی‌تواند مورد نظر خدا باشد:

? اگر هدف خلقت #انسان، رسیدن به بهره مندی های بیشتر بود، حضور حیوانات کفایت می کرد و نیازی به خلقت انسان با این خصوصیات نبود. در واقع تنها #تمایز انسان با #حیوان در جنبه های غیر مادی است: قدرت #تفکر، #تعقل و #رشد در جنبه های معنوی
?نکته دیگر اینکه، رسیدن به برخی لذّت ها، مستلزم #نقض لذّت دیگران است؛ مثلاً فردی از سیگار کشیدن لذت می‌برد در حالیکه فرد کنار او از این کار اذیت می‌شود. یا فردی از گوش دادن به #موسیقی بلند لذت می‌برد در حالی که این کار باعث آزار همسایه‌اش در آپارتمان می‌شود. به عبارتی نمی‌شود همه از لذت حداکثری بهره‌مند شوند.
?نکته آخر اینکه هیچ لذتی در این دنیا #مطلق نیست! تقریباً هر لذتی را نگاه کنید همراه با نوعی درد و اذیت شدن است؛ مثلاً لذتِ خوردن با اذیتِ رفتن به دستشویی همراه است! یا لذتِ خواب با رنجِ بیدار شدن همراه است، لذتِ سُر خوردن از سرسره، با زحمت بالا رفتن از پله ها همراه است… پس رسیدن به این هدف در این دنیا مقدور نیست

✅سه دسته از دوستان که خوشبختانه ۹۱% افراد شرکت کننده در نظرسنجی هستند یکی از سه هدف (رسیدن به کمال عقلی و معرفتی، شناخت خدا و بندگی او، رسیدن به شهود باطنی) را انتخاب کرده اند که اینها می توانند با هم جمع شوند؛ یعنی در حالت ایده آل ما می خواهیم که عقل و معرفتمان زیاد شود به تبع آن خدا را بهتر خواهیم شناخت و آنکس که خدا را بشناسد او را عبادت خواهد کرد و تا آنجا می رود که به #یقین برسد و یقین همان #شهود باطنی است که کمترین چیزی است که در بین مردم تقسیم شده است.
برای این دسته از دوستان و نیز آن دو دسته‌ی اول، پیشنهاد می کنم ۲۵ صفحه اول کتاب زیر از استاد مطهری را مطالعه کنند: این کتاب از سخنرانیهای ایشان در جمع ۱۰ تن از شاگردان خودشان در سال ۱۳۵۱ تهیه شده است:

https://t.me/khosravi_h/637

Share