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

بعد از تاسیس موسسه‌ی کورسرا توسط خانم دفنی کولر و همکارش اندرو ان‌جی و تدتاکش توی سال ۲۰۱۲، بحث آموزش آنلاین در سطح گسترده و آزاد یا همون MOOC ها بسیار داغ شد. هرچند که از مدت‌ها قبل بهترین دانشگاه‌های دنیا، مثل MIT از کلاس‌هاشون فیلم‌برداری می‌کردن و به صورت آنلاین و غالبا رایگان و ناسودبر در اختیار همه قرار می‌دادن، ولی توی سال‌های اخیر ایده‌ای جدید که مطرح شده، و اون هم این که دانش بشری باید در به صورت آزاد و رایگان در دسترس همه باشه و خب چه بستری بهتر از اینترنت، و خب ایده‌ی درآمد زایی این موسسه‌ها، نه از طریق فروش محتوای ارائه شده بلکه به صورت ارائه‌ی مدرک و دریافت هزینه در قبال مدرک‌های ارائه شده هست.

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

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

همون جوری که عباس گفت دانشگاه واقعا جایی نیست که فقط توش درس ارائه بشه، یا بهتر بگم نباید این طوری باشه. دانشگاه باید محل بحث و گفت‌گو و پژوهش و تحقیق باشه، اگه به تعریف لغوی university هم نگاه کنیم، به community of teachers and scholars میرسیم، که تقریبا میشه جامعه‌ای از معلمان و عالمان، نه محلی که شما صرفا برای گرفتن یه مدرک به اونجا می‌رین. ولی اگه فکر می‌کنین که درس‌ها پاس میشه و تموم میشه، شاید اره، وقت تلف کردنه.

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

دروس پایه

نام درس ارائه کننده
ریاضی عمومی ۱

Coursera , MIT OCW , مکتب‌‌خونه

ریاضی عمومی ۲ و ۳*

  Coursera , MIT OCW , مکتب‌‌خونه، Khan Academy

معادلات دیفرانسیل

MIT (1) , MIT (2), edX, مکتب‌‌خونه , دانشگاه تهرانKhan AcademyUCLA, Saylor

مبانی کامپیوتر

Python,مکتب‌خونهPerimeter, Stanford, Udacity, Coursera, Edx

مبانی اقتصاد مکتب‌خونه، Khan Academy (Micro), (Macro), Coursera (Micro), (Macro)

 دروس هسته

نام درس ارائه کننده
مبانی علوم ریاضی Coursera
مبانی ماتریس‌ها و جبر خطی Saylor, Coursera, Edx, مکتب‌خونه
مبانی آنالیز عددی Saylor, MIT
مبانی آنالیز ریاضی
مبانی احتمال Edx
مبانی جبر Edx, Udacity, Saylor
مبانی آنالیز ترکیبیاتی Coursera
ساختمان داده‌ها و الگوریتم Khan Academy, Coursera, Udacity
اصول سیستم‌عامل‌ها Saylor
اصول سیستم‌های کامپیوتری Coursera, MIT
نظریه‌ی محاسبه (اتوماتا) Coursera

دروس انتخابی

نام درس ارائه کننده
بهینه‌سازی خطی Coursera (1), Coursera (2)
کامپایلر Coursera, Saylor
پایگاه داده‌ها Coursera
زبان‌های برنامه‌سازی Coursera
شبکه‌های کامپیوتری Coursera, MIT
گرافیک کامپیوتری Edx, Coursera
هوش مصنوعی و سیستم‌های خبره MIT, Udacity, Edx, Saylor
ریزپردازنده‌ها و معماری کامپیوتر Coursera
رمزنگاری Coursera (1), Coursera (2)
منطق Coursera

اضافه*

نام درس ارائه کننده
Machine Learning یادگیری ماشین Coursera
Game Thoery نظریه‌ی بازی‌ها Coursera
Probabilistic Graphical Models مدل گرافی احتمالی Coursera
Gamification بازی سازی Coursera
Big Data Science دانش ابر داده‌ها Coursera

* این لیست آخری توی چارت درسی ما نیست کلا ولی درس‌هایی مثل نظریه‌ی بازی‌ها توی بعضی از دانشگاه‌ها ارائه میشه و بعضی از این درس‌ها توی رشته‌های ارشد تدریس میشه (مثل PGM) ولی دوره‌های خیلی خوبی هستند که توصیه‌شون میکنم!

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

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

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

«سیاست ضد آزار و اذیت» یا «بستن دستمال به سری که درد نمی‌کنه»

هفته‌ی گذشته من برای شرکت توی همایش PYCON 2015 به تهران رفتم و آخر هفته رو در خدمت بچه‌های دانشگاه علم و صنعت بودم. با اینکه همایش خیلی خوبی بود و به خوبی برگزار شد ولی زیاد به درد من نخورد، که احتمالا من مخاطب مستقیم این همایش نبودم. اما حسابی خوش گذشت و با کلی از دوستای قدیمی دیدار کردم و با بر و بچه‌های جدیدی دوست شدم، اما چیزی که من رو آزار میداده این «سیاست ضد آزار و اذیت» هست.

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

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

اما در مورد همایش PYCON امسال، یک «سیاست ضد آزار و اذیت» به این همایش اضافه شده که به گفته‌ی برگزارکننده‌های همایش، گرفته شده از Google Anti-Harassment Policy که گوگل برای برگزاری رویداد‌هاش استفاده می‌کنه. اما چرا این «سیاست ضد آزار و اذیت» خودش باعث آزار من و عده‌ای دیگه شده؟ خیلی ساده هست. اگه خط اول همون سیاست گوگل رو بخونین، می‌خواد به همین سوال پاسخ بده.

چرا گوگل برای خودش سیاست ضد آزار و اذیت داره؟ چون که این مورد توی رویدادهاش معمول بوده.

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

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

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

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

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

پا نوشت: این مطلب، صرفا جنبه‌ی عمومی داره و چیزی از زحمت‌های زیادی که تک تک برگزارکننده‌های PYCON کشیدن کم نمی‌کنه.

پا نوشت ۲: این سیاست رو می‌تونین از اینجا مطالعه کنین.

همایش آموزش آنلاین – تجربه کار گروهی دانشگاهی

توی هفته‌ای که گذشت، بلاخره بعد از یک ماه دوندگی همایش آموزش آنلاین رو برگزار کردیم، توی این همایش روش‌های یادگیری آنلاین از طریق MOOC ها و سرویس‌های دیگه مثل codecademy و brilliant رو معرفی کردیم. این همایش چون فقط برای دانشجوهای دانشگاه شیخ‌بهایی اصفهان برگزار شده بود، فراخوان عمومی نداشت ولی اگر شما توی دانشگاه شیخ‌بهایی درس می‌خونید حتما از همایش «آموزش آنلاین» خبر دارین.

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

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

پس یک قرار با بچه‌های انجمن علمی علوم کامپیوتر گذاشتم و پرسیدم که چه مشکلاتی ممکن هست وجود داشته باشه، مسئله‌ی مالی، سخنران‌ها، مخاطب‌ها و …، من سعی می‌کنم مشکل رو توضیح بدم و بگم چه طوری باهاشون کنار اومدم.

آموزش آنلاین
همایش آموزش آنلاین

مسئله‌ی مالی

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

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

شما قرار نیست از اسپانسر چند میلیون پول بگیرین، چون قرار نیست که چند میلیون پول هزینه کنین… این جوری هر شرکت کوچکی هم می‌تونه اسپانسر برنامه‌ی شما بشه. توی همایش آموزش آنلاین «مجتمع فرهنگی دیجیتال فرشچیان استان اصفهان» اسپانسر برنامه‌ی ما شدند.

سخنران‌ها

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

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

مخاطب

راستش اول از این مورد خیلی می‌ترسیدم، این که فقط ۱۰ درصد سالن ۲۵۰ نفری پر بشه واقعا ترسناکه. واسه همین خیلی صحبت کردم. اولین پیشنهاد و بدترین پیشنهاد، گرفتن هزینه بابت ضمانت حضور بود. این جوری چون که بابت حضور قبلا پول دادن بچه‌ها حتما حضور پیدا می‌کردن. از طرفی منطقی بود ولی از طرفی «غیر انتفاعی بودن» کار زیر سوال می‌رفت. ما این هزینه‌ای که قرار هست از بچه‌ها بگیرم رو صرف چه کاری می‌کنیم؟ مگه دانشگاه و اسپانسر مسئله‌ی مالی رو از دوش ما باز نکردن؟ پس من کاملا مخالف این قضیه بودم. حتی اگه فقط ۱۰ درصد سالن پر بشه.

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

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

نکته‌ی جالبی که بود واقعا توی همایشی که برگزار شد و از نظر مخاطبین و برگزارکننده‌ها، خیلی خوب برگزار شد. این مشکل‌هایی که اول ازش می‌ترسیدیم وجود نداشت. بلکه مشکلاتی وجود داشت که اول از نبودنشون مطمئن بودیم!

نبود مسئول سالن

یکی از اصلی ترین دلایلی که من ارائه‌ام رو لغو کردم همین نبود مسئول سالن بود! مگه امکان پذیره که سالنی که از یک ماه قبل رزرو شده، مسئول صدا و تصویر نداشته باشه؟ و خب اینجا ایرانه … صبح روزی که من رفتم سالن رو تحویل بگیرم، گفتند که مسئول سالن یک هفته هست که از دانشگاه رفته و سالن مسئول نداره!

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

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

عدم مسئولیت پذیری بچه‌ها

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

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

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

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

البته، باید بگم که انتظامات دانشگاه هم کم سنگ توی راهمون ننداخت، هرچند که خودمون باید زودتر این بوروکراسی اداری رو انجام می‌دادیم که به مشکلی بر نخوریم ولی خب، انتظار داشتم که بیشتر باهامون همکاری کنن.

همایش آموزش آنلاین
همایش آموزش آنلاین

می‌خوام تشکر کنم از همه‌ی بچه‌هایی که کمک کردن تا این فعالیت دانشجویی رو انجام بدیم! حالا امیدوارم فردا، بچه‌ها گروه‌های درسی آنلاین تشکیل بدن و با هم دیگه کورس‌های بهترین‌های دنیا رو دنبال کنن و فعالیت‌های دانشجویی بیشتری رو انجام بدن!

پی‌نوشت: اطلاعات و عکس‌ها و ویدئو‌های همایش رو توی سایت همایش می‌تونین پیدا کنین، http://shbu.bersam.org

چگونه در لینوکس یک تصویر متحرک درست کنیم؟ (قسمت دوم)

خب، توی قسمت اول توضیح دادیم که چه شکلی با ابزارهای مختلفی مثل ImageMagick، ffmpeg و GIMP میشه تصویر متحرک با فرمت gif درست کرد.

اما gif بهترین انتخاب نیست. فرمت gif بسیار قدیمی هست و رنگ‌های زیادی رو پشتیبانی نمی‌کنه، بسیار سنگین هست و پروسه می‌گیره و از همه بدتر، حجم بسیار زیادی می‌گیره.

گیف قبلی که ۲ ثانیه و ۲۵ صدم ثانیه بود و تقریبا ۵۰ فرم شده بود، در بهترین حالت با کم‌ترین حجم نزدیک به ۱.۵ مگابایت شده بود. این عدد هرچند زیاد نیست ولی خب بهتر از این هم میشه.

اینجاست که می‌خوایم از فرمت webm به جای gif استفاده کنیم. سرعت بیشتر، محاسبه‌ی کمتر و از همه مهم‌تر، حجم بسیار کمتر از مزیت‌های این فرمت نسبت به gif هست. اما این که چرا هنوز همه از webm استفاده نمی‌کنن به خاطر پشتیبانی نشدنش توی مرورگرهای قدیمی و IE هست.

خب من اینجا خروجی gif قبلیم رو سعی می‌کنم به webm تبدیل کنم تا تفاوت رو ببینین، باز هم از ابزار ffmpeg استفاده می‌کنیم:

ffmpeg -i in.gif out.webm

که out.gif ورودی هست و نتیجه توی out.webm ذخیره میشه.  ۱.۵ مگابایت حجم تبدیل شد به ۸۰ کیلوبایت، بیش از ۱۸ برابر کاهش حجم. البته کیفیت عالی نیست.

حالا با چند تا آپشن این خروجی رو بهتر می‌کنیم.

ffmpeg -i in.gif -b:v 600K -qmin 0 -qmax 50 -crf 5 out.webm

-b:v با این آپشن bitrate تصویرمون رو تعیین می‌کنیم.  600K به نظر کیفیت قابل قبولی رو برای ما برمی‌گردونه.

-qmin و -qmax هم بازه‌ی VBR رو تعیین میکنن. که من ایده‌ی خاصی ندارم چیه راستش!

-crf که Constant Rate Factor هست و معمولا بین بازه ۰ تا ۵۰ ست و هر چی کمتر باشه کیفیت بیشتره.

خروجی ۲۰۰ کیلوبایت شد که باز هم خیلی از ۱.۵ مگابایت بهتره، ffmpeg یه ابزار خیلی قدرتمنده که چندین صفحه man داره. مطمئنن بهتر از این هم میشه خروجی گرفت:

همچنین قسمت اول این پست رو در «چگونه در لینوکس یک تصویر متحرک درست کنیم؟» بخونید.

چگونه در لینوکس یک تصویر متحرک درست کنیم؟

خب اولین ایده‌ای که به ذهن می‌رسه، gif هست. برای درست کردن گیف روش‌های مختلفی هست.

راه حل گرافیکی

برای راه حل گرافیکی از نرم‌افزار GIMP استفاده می‌کنیم. بدون هیچ احتیاج به پلاگین خاصی فقط کافیه که توی فایلی که درست کردیم به ازای هر فریم یک لایه بزاریم و انتهای اسم اون لایه به صورت “Layer (250ms)” مدت زمان نمایش لایه رو تعیین کنیم. برای پیش‌نمایش این گیف میتونین از Filters > Animation > Playback گیف رو نمایش بدین.

حالا کافیه موقع ذخیره‌سازی به صورت gif ذخیره کنیم.

خروجی به صورت gif
خروجی به صورت gif

تنها نکته‌ای که هست اینه که حتما تیک گزینه‌ی as animation رو بزنین.

Loop forever: اگه این گزینه رو زده باشین گیف متوقف نمیشه.

راه حل خط فرمان

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

convert -delay 50 frame1.jpg -delay 100 frame2.jpg -delay 150 frame3.jpg -loop 0 -pause 200 animated.gif

delay: قبل از هر عکس می‌تونیم از این آپشن استفاده کنیم تا وقفه ایجاد کنیم. عددها به میلی‌ثانیه هستن.

loop: بعد که همه‌ی فریم‌ها رو گذاشتیم، با آپشن loop میگیم که چند بار تکرار بشه. 0 به معنی بی‌نهایت هست.

pause: این آپشن هم میگه با هر بار چرخش چند میلی‌ثانیه صبر کنه.

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

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

ffmpeg -t 2 -ss 00:02:35 -i video.mp4 animated.gif

که ساختار ساده‌ای داره، این دستور، از زمان ۰۲:۳۵ به مدت دو ثانیه از فایل video.mp4 رو به صورت گیف توی animated.gif ذخیره می‌کنه.

out-small-cover

(روی عکس کلیک کنید تا gif خروجی رو ببنید.)