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

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

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

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

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

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

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

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

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

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

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

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

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

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

خب، توی قسمت اول توضیح دادیم که چه شکلی با ابزارهای مختلفی مثل 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 خروجی رو ببنید.)