بایگانی ماهیانه: مارس 2017

تغییر فرمت کلی عکس با کامند لاین

دوستی پرسیده چطور می تونه ده تا عکس با فرمت jpg رو از طریق کامند لاین به png تبدیل کنه. بذارین با هم پیش بریم. اول یک دایرکتوری می سازم که بتونیم توش کار کنیم:

➜  /mkdir /tmp/jpg2png
➜  /cd /tmp/jpg2png 
➜  jpg2png

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

find ~/Pictures -iname '*jpg'

کافیه کل خروجی ها رو به شکل رندم مرتب کنیم:

find ~/Pictures -iname '*jpg' | sort --random-sort

که البته چون روی مک هستیم که توش یکی تصمیم گرفته sort استاندارد گنو رو بیخیال بشه و یک سورت ناقص تحویلمون بده، باید از سورت گنو که با برو نصب شده استفاده کنم، یعنی:

find ~/Pictures -iname '*jpg' | gsort --random-sort

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

find ~/Pictures -iname '*jpg' | gsort --random-sort | head -10 | xargs -I files cp files .

و البته مک یک انگولک مسخره هم به xargs کرده ولی به هرحال کار می کنه. در واقع ظاهرا دیفالتش یک -L 1 داره! حالا ما ده تا فایل اتفاقی جی پگ داریم:

➜  jpg2png ls
33_ibm7291.jpg
IMG_0104.jpg
IMG_20140910_090542.jpg
IMG_20150101_144039.jpg
IMG_20150607_084842.jpg
IMG_20150617_210638.jpg
IMG_20150721_214643.jpg
JungfrauClimbers_EN-US11631578069_1366x768.jpg
MaracanaFireworks_EN-US9834580695_1366x768.jpg
dual_grass.jpg

حالا کافیه با استفاده از برنامه imagemagick که همیشه نصب داریمش (توی اوبونتو با apt install و در مک با brew install) بریم سراغ درست کردن یک دایرکتوری برای پی ان جی ها، و ساختن خروجی ها با یک حلقه فور که روی هر فایل یک دستور convert اجرا می‌کنه:

➜  mkdir pngs
➜  for file in *.jpg; do convert $file pngs/$file.png  ; done

و همه چیز مرتب شده:

➜  tree
zsh: command not found: tree
➜  brew install tree
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> New Formulae
exa             httpflow        jvm-mon         libetpan        terraform-docs
==> Updated Formulae
amazon-ecs-cli  g3log           lynis           paket           terraform
ats2-postiats   geoip           macvim          ponyc           todolist
aws-sdk-cpp     git-lfs         media-info      roswell         urh
awscli          github-release  mediaconch      rtv             uwsgi
clutter-gst     jenkins-lts     metabase        ruby@2.3        vim
convox          jfrog-cli-go    node ✔          scw             vnu
crystax-ndk     jmxtrans        opensc          sqlite ✔
fdroidserver    khal            osmfilter       swiftformat
fluent-bit      kobalt          osrm-backend    sysdig
==> Deleted Formulae
dwarf-fortress             fb-adb                     multirust

==> Downloading https://homebrew.bintray.com/bottles/tree-1.7.0.sierra.bottle.1.

curl: (7) Failed to connect to homebrew.bintray.com port 443: Operation timed out
Error: Failed to download resource "tree"
Download failed: https://homebrew.bintray.com/bottles/tree-1.7.0.sierra.bottle.1.tar.gz
Warning: Bottle installation failed: building from source.
==> Using the sandbox
==> Downloading http://mama.indstate.edu/users/ice/tree/src/tree-1.7.0.tgz
######################################################################## 100.0%
==> make prefix=/usr/local/Cellar/tree/1.7.0 MANDIR=/usr/local/Cellar/tree/1.7.0
🍺  /usr/local/Cellar/tree/1.7.0: 8 files, 114.3KB, built in 5 seconds
➜  tree
.
├── 33_ibm7291.jpg
├── IMG_0104.jpg
├── IMG_20140910_090542.jpg
├── IMG_20150101_144039.jpg
├── IMG_20150607_084842.jpg
├── IMG_20150617_210638.jpg
├── IMG_20150721_214643.jpg
├── JungfrauClimbers_EN-US11631578069_1366x768.jpg
├── MaracanaFireworks_EN-US9834580695_1366x768.jpg
├── dual_grass.jpg
└── pngs
    ├── 33_ibm7291.jpg.png
    ├── IMG_0104.jpg.png
    ├── IMG_20140910_090542.jpg.png
    ├── IMG_20150101_144039.jpg.png
    ├── IMG_20150607_084842.jpg.png
    ├── IMG_20150617_210638.jpg.png
    ├── IMG_20150721_214643.jpg.png
    ├── JungfrauClimbers_EN-US11631578069_1366x768.jpg.png
    ├── MaracanaFireworks_EN-US9834580695_1366x768.jpg.png
    └── dual_grass.jpg.png

1 directory, 20 files

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

تاکسی خطی و الماس؛ پیشنهاد به تاکسی رانی برای کپی از ایده لیفت که از خودمون کپی کرده

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

اما ماجرا فقط یک طرف نیست. امروز لیفت اعلام کرد که سرویس لیفت لاین رو راه می ندازه؛ یک سیستم شاتل باس (همون ون خودمون)‌ که در ساعات مشخص در مسیرهای مشخص می ره و محل های مشخص سوار و پیاده شدن داره. تا حد زیادی همون چیزی که تاکسی خطی های ما هستن. این سرویس فقط توی ساعت های کاری یعنی از ۶:۳۰ صبح تا ۱۰ صبح و ۴ تا ۸ عصر فعالیت داره و مسیر و قیمتش ثابته.

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

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

اون چیزی که ما بهش می گیم «الماس» در واقع در عربی «ماس»‌  نامیده می شه که معرفه اش می شه «الماس». بامزه کجاست؟ حالا بعضی جاها در عربی این لغت رو دوباره از ما شنیدن و حالا بهش می گن «الالماس» (: ماجرای تاکسی خطی هم همینه. ما داشتیم، اینا از ما گرفتن و حالا وقتشه ما یه بار دیگه ازشون بگیریم. تاکسی رانی جان، حق ایده فراموش نشه.

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

حالا آی اس پی‌های آمریکا اجازه دارن اطلاعات کاربران رو به تبلیغات‌چی‌ها بفروشن

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

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

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

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

تقریبا می شه گفت احمقانه ترین قانون که شاید فقط تصویب شده تا قدرت‌نمایی CRA و جمهوری خواه‌ها در مقابل FCC و دموکرات‌هایی باشه که حالا دارن فکر می کنن «حالا چی می شه!».

تفاوت اینترنت چیزها، اینترنت اشیا و اینترنت همه چیز

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

اما این وسط چون ما ایرانی ها خیلی مودب هستم و به «بازی کردن» می گیم «بازی رو انجام دادن»، تصمیم گرفته ایم به اینترنت چیزها هم بگیم اینترنت اشیاء که اشتباه بزرگ ولی مصطلحی در بخصوص آدم‌های آکادمیک است – چون می دونین که، آدم های آکادمیک باید قشنگ حرف بزنن، حتی اگر اشتباه باشه. «چیز» در انگلیسی برابر Thing است و می تونه به سگ و گربه و گلدون و خط تولید و .. گفته بشه در حالی که کسانی که دارن می گن «اینترنت اشیاء»‌ در واقع دارن می گن «Internet of objects» که بسیار محدودتر است و مثلا سگ یک آبجکت نیست.

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

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

آخرین بتای اوبونتوی ۱۷.۰۴ یا همون زستی زاپوس آماده دانلود؛ تا حد زیادی بدون باگ

آخرین بتای زستی زاپوس یا همون اوبونتوی ۱۷.۰۴ آماده دانلود شده. معلومه که معمولا برای سیستم های خیلی حساس اپگرید کردن به بتا توصیه نمی شه ولی در در حد لپ تاپ شاید بشه به ادعای کنونیکال در این مورد که این نسخه تقریبا بدون باگ [جدی] است اعتماد کرد.

متن انتشار می گه مفتخریم انتشار بتای آخر اوبونتوی ۱۷.۰۴ دسکتاپ، سرور و کلاود رو اعلام کنیم. اسم رمز زستی زاپوس یا همان اوبونتوی ۱۷.۰۴ ادامه رسم اوبونتو برای در اختیار قراردادن جدیدترین و بهترین تکنولوژی های آزاد در یک لینوکس سهل الاستفاده است.

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

آیا ما حق آزادی پسورد داریم؟

آوا سوال بانمکی پرسیده:

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

دیدگاه بانمکی است. البته اگر فضا رو پیچیده نکنیم داریم می پرسیم «آیا گوگل که یک سرویس ساخته حق داره به من بگه شکل خاصی ازش استفاده کنم؟». جواب بدون شک «بله» است. این همون مغلطه ای است که اتفاقا دوستان مخاف آزادی بیان هی سراغش می رن و می گن «اگر آزادی بیان هست چرا فلان جا حرف منو پخش نکرد؟». خب آزادی بیان یعنی شما حق دارین آزادی بیان داشته باشین، وبلاگ بزنین، تلویزیون داشته باشین و به شکل کلی تر عقیده ای داشته باشین و اون رو تبلیغ کنین .. ولی معنی اش این نیست که می تونین هر چیزی رو در رسانه هر کس دیگه منتشر کنین؛ اونطوری بود که خب همه می خواستن در سر مقاله فلان روزنامه مطلب بنویسن یا تو سی ان ان سخنرانی داشته باشن (:

در اینجا هم ما با یک شرکت طرفیم که یک سرویس ساخته و هر کس بخواد ازش استفاده کنه در محدوده ای معقول باید پذیرای قوانین اون سرویس باشه. شاید من بگم «توی تودوئر فقط از ساعت ۱۰ صبح تا ۱۰ شب می شه کار اضافه کرد». آیا حقی از شما ضایع شده؟ اگر این رو بپذیرین و بیاین تو نه. می تونین از سرویس دیگه استفاده کنین یا مال خودتون رو بنویسین. وقتی حقی از شما ضایع می شه که من بگم «تنها تودولیست مجاز من هستم و قانون اینه و هر کس هم اعتراض کنه دستگیر می شه» (:

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

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

جواب نهایی؟ بله گوگل حق داره بگه در شرکت من و رو سرویس های من اینطوری رفتار کنین‌ ولی اینکه بگیم فلان پسورد غیرامن است پس هر کس استفاده کرد مجرم است، فعلا غیرقانونیه. البته ممکنه روزی به همین شکل که بستن کمربند ایمنی یا داشتن بیمه شخص ثالث اجباری است، اونم اجباری بشه؛‌ هرچند که اگر در چنان جامعه ای باشیم و کسی بتونه کشف کنه که پسورد فعلی شما ۱۲۳۴۵۶ است، اول باید اون سرویس رو به خاطر امن نبودن، تعطیل کنن.

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