این روزا چطور می‌گذره؟

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

هفته قبل با بچه‌ها رفتیم جای جدید شرکتو دیدیم که تا آماده بشه و همه وسایل زندگی شرکتی توش محیا بشه یه هفته‌ای طول خواهد کشید و این یه هفته رو توی خونه یکی از بچه‌ها جمع می‌شیم تا کارا بیفته رو غلطک. کارهایی که داریم انجام می‌دیم حداقل 5-6 ماه طول می‌کشه تا به‌طور کامل به نتیجه برسه و چون پروژه‌ها رو فازبندی کردیم، اولین خروجی کارهامون از یک ماه بعد بیرون درمیاد.
نمی‌دونم اسمشو میشه استارتاپ گذاشت یا نه، چون پروژه‌ها هم عام‌المنفعه‌س و هم ذی‌نفع خاص داره.
تو سه روز گذشته کارم شده بود شرکت توی تحلیل نیازمندی‌ها و از یه طرف هم راه‌اندازی کامپیوترا و بسترهای توسعه و خوبیش این بود که تو این مدت 2 نفرو مهاجرت دادم به گنو/لینوکس.  آموزش این تازه مهاجرها هم زمان خاص خودشو ازم گرفت و هم انرژی زیاد. خداروشکر از مهاجرت رضایت کامل دارن و لبخند رضایتو میشه رو لباشون حس کرد. سرور داخلیو راه انداختم و روش php, mysql, apache, redis, git,ssh, راه انداختم که تو روند توسعه پروژه‌ها بهمون کمک کنه. این اوبین باره که از git می‌خوام به صورت تیمی استفاده کنم البته به غیر استفاده‌های معمول توی github که در کل تفاوتی نداره ولی خب این اولین تجربه به این شکلشه برام.
هفته قبل یه کتابم خوندم تا یه خورده ذهنمو منحرف کنم و بهش استراحت بدم که عنوانش بود «آس و پاس‌های پاریس و لندن» نوشته نویسنده معروف جورج اورول که فکر می‌کنم اکثر کتاب‌خونها حداقل کتاب «قلعه حیوانات» یا «1984»شو خونده باشن. در کل کتاب خوبی بود و فضای داستانش همون فضای داستان‌های دیگه جورج اورول بود و موضوع این کتابشم سرگذشت خود نویسنده‌س از یه برهه‌ای از زندگیش توی پاریس و لندن به همراه دوستانش و در اوج فقر و بدبختی (البته فکر نمی‌کنم واژه «اوج» برای فقر و بدختی انتخاب درستی باشه).
این کتابو به همراه «دختر کشیش» و «همه جا پای پول در میان است»  از جورج اورول از نمایشگاه کتاب پارسال خریده بودم که تا اینجا تونستم 2 کتاب اولو بخونم و امیدوارم تا یه ماه آینده اون کتاب آخرو هم بتونم بخونم.

دردسرهای گرفتن بک‌آپ از سیستم‌عامل

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

 

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

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

بعد از این کار، فایل ایمیجی که برنامه systemback تولید کرده بود رو روی یه فلش ۸ گیگ رایت کردم و رفتم برای شروع عملیات اصلی. سیستمو ری‌استارت کردم و با فلش سیستمو بوت کردم و خیلی قشنگ از رو فلش بالا اومد و از سالم بودن فایل‌هام اطمینان پیدا کردم. رفتم با Gparted تمام هاردو از اول پارتیشن بندی کردم و بعدش با همون systemback ابونتوی خودمو رو پارتیشن‌های جدید نصب کردم و پارتیشن‌ /home رو هم جدا کردم و بعدش ری‌استارت کردم سیستمو. اینم پارتیشن بندی جدید هارم:

Gparted

فاجعه وقتی رخ داد که بعد ری‌استارت دیگه هیچ چیز بالا نمیومد و bios قادر به شناسایی سیستم عامل روی هارد نبود. رفتم یه خورده جستجو کردم و چند تا راه رو امتحان کردم برای تعمیر گراب که فکر می‌کردم مشکل از اون باشه. با نرم‌افزار boot-repairو به وسیله terminal هر کاری کردم گراب درست نشد که نشد. دیگه ناامید شده بودم و تنها راه پیش روم نصب دوباره اوبونتو بود، CD اوبونتو لایو رو هم گذاشتم رفتم برای نصب دوباره اوبونتو. اعصابم خورد شده بود حتی فکر اینکه دوباره بخوام این همه تنظیمات و دانلود و نصب پکیج‌ها رو از اول اعمال کنم، دیوونه‌م می‌کرد.

در اوج ناامیدی یه بار دیگه سعی کردم گرابو درست کنم و دوباره مجبور شدم تو همین حالت لایو boot-repair رو دانلود کردم و دوباره تست کردم و سیستمو ری‌استارت کردم و بازم در اوج ناامیدی گراب درست شده بود و سیستم بالا اومد. انگار خون تازه‌ای تو رگ‌هام جریان پیدا کرده بود.

نتیجه اخلاقی: اگر ۴ بار یه راهو رفتید و به نتیجه نرسیدید، دوباره همون راهو برید، شاید اشتباه رفتار می کردید که به نتیجه نرسیدید.

آموزش کار با Emmet یا Zen Conding

سلام

امروز می‌خوام یه ابزارو معرفی کنم که حتما بعضی‌ها می‌شناسنش و باهاش کار می کنن و مطمئنن بعد از یه مدت کار با اون می فهمن که بدون اون کار کردن سخت میشه. اون ابزار چیزی نیست جز  Emmet یا Zen Coding. این دو تا اسم جفتشون یکیه و فکر کنم الان اسم رسمیش همون Emmetه.

خب بیایید ببینیم این ابزار به چه دردی میخوره؟ تو یه جمله باید بگم که نوشتن کد Html, CSS, Xsl رو خیلی آسون می کنه. بزارید با یه مثال توضیحش بدم. فرض کنیم ما میخواهیم یه جدول بسازیم با ۵ تا ردیف و ۵ تا ستون. خب حجم کد نسبتن بالایی داره:

 

خب حالا با zen coding تو سه سوت کد بالا رو می‌نویسیم، اینطوری:

 

بعدش دکمه Tab رو می زنیم و به صورت خودکار کد بالا تولید میشه. پس همونطور که متوجه شدید، Emmet کارش تسریع کار و خلاصه‌نویسی کد هستش.

حالا بیایین یه چند تا مثال دیگه بزنیم:

 

که خروجیش میشه:

 

مثال زیر فکر می کنم بهترین و قشنگ‌ترین مثال Emmetعه. فرض کنیم می‌خواهید یه صفحه HTML از صفر درست کنید. خب نیاز دارید تا یه سری تگ مثل نوع سند و یا متاتگ‌ها را تعریف کنید ولی با Emmet اینطوری عمل می‌کنیم:

 

بله، فقط ! و بعدش Tab رو می‌زنیم، اینم خروجیش:

 

خب تا اینجا مثال‌هایی از HTML زدیم، حالا می‌خوام چند تا مثالم از کاربردش توی CSS بزنم:

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

 

که خروجیش میشه این:

 

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

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

بعضی جاها اسمش Emmet و بعضی جاها Zen Coning عه.

اینم لینک دانلودش + برگه تقلب (Cheat Sheet)

+ اینم راهنمای خوبیه

آموزش برنامه‌نویسی Ruby – بخش اول

همونطور که توی پست قبلیم گفتم، دارم برنامه‌نویسی Ruby یاد می‌گیرم فقط از روی کنجکاوی و قدرت انجام مقایسه درست بین زبان‌های برنامه‌نوسی مختلف.

خب برای شروع می ریم ببینیم ویکی‌پدیا در موردش چی گفته:

  • روبی یک زبان برنامه‌نویسی انعطاف‌پذیر، پویا و شی‌گرا است. (درست مثل PHP و Python)
  • روبی شیوه‌های نگارشی پرل و اسمال‌تاک را با هم در خود دارد.(خب با هیچ کدوم از اینا کار نکردم)
  • زبان روبی در سال‌های میانی دهه ۱۹۹۰ توسط یوکیهیرو ماتسوموتو در ژاپن اختراع شد
  • از برنامه‌نوسی تابعی و شی‌گرا پشتیبانی می‌کند. (مثل همون دوتایی که بالا گفتم)
  • روبی یک زبان برنامه‌نوسی تفسیری‌ است. (یعنی کامپایل نمی‌شه و در هنگام اجرا توسط مفسر تفسیر میشه
خب توضیحات خوبی بود و آدم می‌دونه که با چی سر و کار داره. حالا می‌ریم سراغ اولیت تکه کد که معمولا مثال Hello World بهترین گزینه‌ست.
یا
خب بیاییم همین دو خط بالا رو تفسیر کنیم:
– برای چاپ رشته و یا هرچیزی در خروجی می‌تونیم از توابع print یا puts استفاده کنیم. هر جفتشون کارشون یکیه ولی تنها فرقشون اینه که puts مقدارش رو توی یم خط جدید چاپ می‌کنه.
– همونطور که مشاهده‌ کردید، مانند python، برای پایان خط لازم نیست ما semicolon بذاریم.
– رشته را در میان دو ” ” قرار میدیم که این مورد تو اکثر زبان‌های برنامه‌نویسی مشترکه.
انواع داده‌ای در Ruby، مثل بقیه زبان‌های برنامه‌نویسیه و تفاوت خاصی نداره با بقیه و از همه چی پشتیبانی می‌کنه.
تعریف متغیرها توی روبی قوانین خاصی داره مثلا متغیرها باید به صورت lowercase تعریف بشن و اگه نام متغیر بیشتر از یه بخش بود با _ از همه جدا بشن بخش‌ها. یعنی نام متغیر باید snake_case باشه. همچنین نوع متغیر به صورت داینامیک بسته به مقدارش تغییر می‌کنه. مثال زیر را ببینید:

 

همونطور که توی کد دیدید، متغیر my_variable ابتدا دارای مقدار ۱۰۰ بود که نوعش میشه عدد صحیح و بعدش همون متغیر نوعش به string تغییر پیدا کرد. انواه آرایه هم به صورت زیر تعریف میشه:
برای کامنت‌گذاری در کد به صورت یک‌خطی از # استفاده می‌کنیم. (تو کد بالا نمونه‌ش هست) و برای کامنت‌گذاری چندخطی به روش زیر عمل می‌کنیم:

 

برای چاپ مقدار یک متغیر داخل یک رشته به این روش عمل می‌کنیم:

 

فقط کافیه که نام متغیر را بین #{} قرار بدیم و تمام.
فکر می‌کنم تا همینجا بسه واسه مقدماتش. تو پست‌های بعدی در مورد ساختارهای کنترلی و شرطی صحبت خواهم کرد.

شروع یادگیری چیزایی که بلد نیستم مثل Ruby

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

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