بایگانی ماهیانه: ژانویه 2015

راست به چپ کردن فیلدهای فارسی در ترلو

پیام برامون نوشته:

اگر از Trello برای مدیریت کارها استفاده می‌کنید، می‌توانید با استفاده از این اسکریپت نمایش فارسی / انگلیسی را که بصورت پیش فرض در Trello به درستی مدیریت نمی‌شود را اصلاح کنید:

همانطور که در انتهای صفحه آمده، برای نصب اسکریپت احتیاج به نصب cjs extension در Chrome یا TamperMonkey (کروم و سافاری) هستید.

من از TamperMonkey استفاده کردم. لینکش اینجاست: http://tampermonkey.net

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

و یادمونه که تلفظ صحیح ترللو، ترللو است.

لینک های شاد دوشنبه آخر دی ماه

batman

سرویس ها

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

وبلاگ ها و سایت ها

برنامه‌ها

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

بازار کار

  • موسسه ۳گام به دنبال توسعه دهنده وب اپلیکیشن و مدیر پروژه وب است. یک نفر تمام وقت و یک نفر پاره وقت. ارسال رزومه به admin@3gaam.com

در صورتی که شما هم علاقمند به معرفی شدن در برنامه دوشنبه ها هستین، با من تماس بگیرین (:

اسپم به سبک دکتر کامران شریفی

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

با سلام

اینجانب تمایل به استفاده از خدمات شما را داشته و ارائه توضیحات تکمیلی در پاسخ به این ایمیل، مزید امتنان است.

با تقدیم احترامات
دکتر کامران شریفی

دوستی که این رو برام فرستاده گفته چون از طریق ایمیل شرکتی دریافتش کرده بودن بهش جواب دادن و از فردا کلی اسپم به سمتشون سرازیر شده و هر بار هم سعی می کردن دگمه Report Spam رو بزنن، با این سوال مواجه می شدن که «این که جزو دوستاتونه؟! واقعا اسپمه؟»

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

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

کپی اثر انگشت وزیر دفاع آلمان از راه دور

fingerprint

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

هکری به اسم استارباگ در کنفرانس سالانه کی‌آس (آشوب) نشون داه که چطوری تونسته اثر انگشت وزیر دفاع آلمان خانم اورسلا فون در لین رو کپی کنه. استارباگ حتی به شیوه کلاسیک یک لیوان یا عکس هم دست وزیردفاع نداده بلکه فقط با چند دوربین عالی از فاصله دور و زوایای مختلف از دست وزیردفاع عکس گرفته و از نرم افزار VeriFinger برای تولید اثر انگشت کمک گرفته. این هکر در سال ۲۰۰۸ هم کار مشابهی با وزیراقتصاد فنلاند کرده بود و الان با عزت و احترام به عنوان یک آدم با سواد در دانشگاه برلین تحقیق می کنه.

کلوپ کامپیوتر کی آس (آشوب) یا همون CCC یکی از معتبرترین سازمان های هک در اروپا است.

چرا گنو/لینوکس رو دوست دارم: اضافه کردن اسم فایل به تبلچرهای گیتار

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

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

بله! لینوکس که ترکیبی از ابزارهای قدرتمند است، راه حلی عالی داره. اما یک برنامه نویس خوب همیشه اول مسائل رو در ساده ترین حالت حل می کنه و بعد مساله رو پیچیده می کنه. فرض کنیم اصولا فقط یک عکس داریم که می خوایم روش بنویسیم My Happy Text. اسم فایل هم هست Bijan Mortazavi 006. اگر بتونیم این مساله رو حل کنیم، یک قدم جلو افتادیم. در اصل من دارم مساله رو به سه بخش تقسیم می کنم:

1- اضافه کردن یک متن دلخواه به یک عکس
2- در آوردن اسم یک فایل
3- ترکیب کردن دو قدم قبلی برای هر چند تا فایل که داشتیم

قدم اول: نوشتن روی فایل

ساده است. بسته Image Magick ابزاری داره به اسم convert که می تونه تقریبا هر کاری با یک تصویر بکنه! مثلا این تصویر:

Ebi 005

با دستور

$ convert Ebi\ 005.JPG -pointsize 43 -background Khaki label:'My Happy Text' +swap -gravity Center -append out.jpg

تبدیل می شه به:

out

جذاب نیست؟ بخصوص که روی تصویر چیزی ننوشتیم بلکه بالاش کمی تصویر اضافه کردیم! حالا می ریم سراغ قدم دوم.

قدم دوم: درآوردن فهرست فایلها

من احتیاج دارم اسم فایل ها رو بگیرم. اولش که ساده است؛ به لینوکس می گم همه فایل هایی که تهشون JPG هست رو بهم بده:

$ find . -name "*JPG" 
./Bijan Mortazavi 005.JPG
./Ebi 015.JPG
./Ebi 018.JPG
./Ebi 016.JPG
./Darush 007.JPG

بعد کافیه بگم اون /. اول رو حذف کنه:

a$ find . -name "*JPG" | sed "s/\.\///"
Bijan Mortazavi 005.JPG
Ebi 015.JPG
Ebi 018.JPG
Ebi 016.JPG
Darush 007.JPG

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

$ find . -name "*JPG" | sed "s/\.\///" | sed "s/\.JPG//"
Bijan Mortazavi 005
Ebi 015
Ebi 018
Ebi 016
Darush 007

و قدم دوم هم تموم می شه!

قدم سوم: چسبوندن قدم های قبلی

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

$ find . -name "*JPG" | sed "s/\.\///" | sed "s/\.JPG//" \
    | xargs -L1 -I THIS echo my command will work on \"THIS\" happily 
my command will work on Bijan Mortazavi 005 happily
my command will work on Ebi 015 happily
my command will work on Ebi 018 happily
my command will work on Ebi 016 happily
my command will work on Darush 007 happily

عالی! ما قهرمانیم. الان ورودی قدم دوم رو خط به خط دادیم به دستور اکو. (سوییچ I می گه این خط ورودی باید کجای دستور قرار بگیره). بذارین یک ضرب سعی کنیم اصل برنامه رو اجرا کنیم و خروجی رو بریزیم توی دایرکتوری out و البته قبلش طبق همون اصل اول برنامه نویسی جادی، با گذاشتن یک echo جلوی دستوری که ساختیم یک تست هم می گیریم:

$ find . -name "*JPG" | sed "s/\.\///" | sed "s/\.JPG//" | xargs -L1 -I THIS echo convert \"THIS.JPG\" -pointsize 43 -background Khaki label:\'THIS\' +swap -gravity Center -append \"out/THIS.jpg\"
convert "Bijan Mortazavi 005.JPG" -pointsize 43 -background Khaki label:'Bijan Mortazavi 005' +swap -gravity Center -append "out/Bijan Mortazavi 005.jpg"
convert "Ebi 015.JPG" -pointsize 43 -background Khaki label:'Ebi 015' +swap -gravity Center -append "out/Ebi 015.jpg"
convert "Ebi 018.JPG" -pointsize 43 -background Khaki label:'Ebi 018' +swap -gravity Center -append "out/Ebi 018.jpg"
convert "Ebi 016.JPG" -pointsize 43 -background Khaki label:'Ebi 016' +swap -gravity Center -append "out/Ebi 016.jpg"
convert "Darush 007.JPG" -pointsize 43 -background Khaki label:'Darush 007' +swap -gravity Center -append "out/Darush 007.jpg"

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

$ find . -name "*JPG" | sed "s/\.\///" | sed "s/\.JPG//" | xargs -L1 -I THIS echo convert \"THIS.JPG\" -pointsize 43 -background Khaki label:\'THIS\' +swap -gravity Center -append \"out/THIS.jpg\" > commands.sh
$ sh commands.sh 
$ ls out/
Bijan Mortazavi 001.jpg  Bijan Mortazavi 005.jpg  Darush 003.jpg  Darush 007.jpg  Darush 011.jpg   Delkash 003.jpg  Ebi 004.jpg  Ebi 008.jpg  Ebi 012.jpg  Ebi 016.jpg
Bijan Mortazavi 002.jpg  Bijan Mortazavi 006.jpg  Darush 004.jpg  Darush 008.jpg  Darush 012.jpg   Ebi 001.jpg      Ebi 005.jpg  Ebi 009.jpg  Ebi 013.jpg  Ebi 017.jpg
Bijan Mortazavi 003.jpg  Darush 001.jpg           Darush 005.jpg  Darush 009.jpg  Delkash 001.jpg  Ebi 002.jpg      Ebi 006.jpg  Ebi 010.jpg  Ebi 014.jpg  Ebi 018.jpg
Bijan Mortazavi 004.jpg  Darush 002.jpg           Darush 006.jpg  Darush 010.jpg  Delkash 002.jpg  Ebi 003.jpg      Ebi 007.jpg  Ebi 011.jpg  Ebi 015.jpg  Ebi 019.jpg

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

www.guitarestan.com

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

رادیو گیک شماره ۴۸ – ریشه های بی ریشه قسمت دوم

ذن مکتبی از بودیسمه که توش تاکید می شه به تفکر لحظه به لحظه و نگاهی عمیق تر به ماهیت جهان. اونهم از طریق تجربه مستقیم. در ذن کوان هایی وجود دارن که مثل داستان های کوتاه هستن. این داستان ها موضوعی برای تفکر به شما می دن و تلنگری می شن برای رسیدن به روشنایی.

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

مشترک رادیو گیک بشین


آر اس اس رادیو گیک

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

رادیو گیک در آیتونز

رادیو گیک در ساوند کلاود

سوال جواب: توسعه چند پلتفرمی

مسعود پرسیده:

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

پس من یک زبان می خوام که نیازی به نصب برنامه اضافی توسط کاربرا نداشته باشه مثل جاوا ! امکان خروجی گرفتن برای ویندوز ، ویندوز فون ، iOS ، اندروید رو داشته باشه و بشه باهاش یک سایت راه انداخت! که منبع اطلاعات همگی از یک سرور باشه! نظر خود من روی پایتونه با فریموورک های Kivy و Django ه! ولی فریموورک های معروف دیگه ای رو هم شنیدم مثل phonegap یا Haxe که به نظر میاد خوب باشن مخصوصا haxe که خودش یه زبان مجزاش و شما یه برنامه باهاش مینوسی و چند تا خروجی متفاوت برای پلتفرم های مختلف بهت میده!

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

آیا کمپین هواپیمایی قطر واقعی است؟ چند تجربه

qatar

اگر در اینترنت ایران باشین به احتمال ده درصد، با کمپین هواپیمایی قطر برخورد کردین که از شما می خواد با ثبت نام یک فرم ساده سه بلیت بیزنس کلس به مقصد دلخواه با این هواپیمایی برنده بشین و شانس من رو هم زیاد کنین ([یا از اینجا برین و شانس منو اضافه نکنین (: [(http://winwithqatarairways.com)… و فراموش نشه که هواپیمایی قطر سال ها است که رتبه اول در رنکینگ بهترین هواییمایی های جهان رو داره.

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

مشکلات هویتی

مثل هر کار موفق و مثل هر کار مشکوک، تعداد زیادی آدم دارن تذکر می دن که آیا این کمپین واقعا مال هواپیمایی قطر است؟ اگر واقعا مال اون هواپیمایی است پس چرا اسم دامین به اسم کس دیگه ای ثبت شده بود؟ چرا از سایت رسمی هواپیمایی قطر هیچ لینکی به این کمپین داده نشده و …

درس: هویت رو تصدیق کنید

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

jadi@funlife:~> whois winwithqatarairways.com

Whois Server Version 2.0
Domain Status: ok
Domain Status: clientTransferProhibited
Registry Registrant ID: 
Registrant Name: Azin Ebrahimian
Registrant Organization: Qatar Airways
Registrant Street: Sayeh Tower , Valiasr Ave
Registrant City: Tehran
Registrant State/Province: Tehran
Registrant Postal Code: 1967713639
Registrant Country: IR
Registrant Email: aebrahimian@ir.qatarairways.com

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

آپدیت: هواپیمایی قطر از سایت رسمی اش به کمپین لینک داد.

مشکلات فنی

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

درس: برای حداکثر برنامه ریزی کنید و تست بار بگیرید

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

تجربه کاربری

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

درس: تجربه کاربری یک تخصص است

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

جمع بندی

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