۱۰ روز گذشته برام روزای پرکاری بودن، از یه طرف مشغول آمادهسازی تیم و خودم برای راهاندازی شرکت جدید و از یه طرفم همزمان کار کردن روی بخشهای فنی و تحلیل چند تا پروژه که واقعن به مغزم خیلی فشار اومده ولی لذت بخش بودنش این فشارو جبران می کنه. لذت یه شروع دوباره با تیمی که همه همدلن و یه هدفو دنبال میکنن و هر کسی به درستی از وظایفش آگاهه و سعی به انجام رسوندن اون وظایف و حتی فراتر از اونارو داره.
ماه: سپتامبر 2014
دردسرهای گرفتن بکآپ از سیستمعامل
یه شیش ماهی میشه که به صورت کامل مهاجرت کردم به اوبونتو و تو این مدت حتی برای یک هم کاری پیش نیومده بود که برم سروقت ویندوز. از یه طرف هم پارتیشنبندی هاردم درست نبود و سرجمع ۴۰ گیگ به اوبونتو اختصاص داده بودم و بخش اعظمی از هاردم بیکار مونده بود و فایلهام تو یه پارتیشن ntfs دیگه بودن که خب دسترسی و جستجو بهشون یه خورده کند شده بود. این وضعیت هاردم قبل از شروع عملیاته:
تصمیم داشتم از اوبونتوم به طور کامل بکآپ بگیرم و دوباره پارتیشنبندی کنم هاردمو و برای /home هم یه پارتیشن مجزا درنظر بگیرم که اگر در آینده خواستم از یه توزیع دیگه استفاده کنم به مشکل نخورم. تو توییتر مشکلمو مطرح کردم و یکی از بچهها گفت از remastersys استفاده کن. رفتم دانلودش کنم دیدم دیگه تیم توسعهدهندهش پشتیبانی نمی کنن ازش. خب یه خورده تو گوگل جستجو کردم و به نتایجی رسیدم.
یه برنامه پیدا کردم به نام Systemback که از screenshotهاش فهمیدم گزینه گرفتن ایمیج از کل سیستمو داره و منم دنبال همین بودم. برای همین برنامه رو دانلود کردم و به راحتی یه ایمیج از کل سیستم گرفتم ولی یه خورده طول کشید این قضیه. بعد برای جلوگیری از رخدادن مشکلات ناخواسته، تمام فایلهام که چیزی در حدود ۴۰۰ گیگ بود به از طریق شبکه یه سیستم خونه منتقل کردم که این مورد یه شب تا صبح طول کشید.
بعد از این کار، فایل ایمیجی که برنامه systemback تولید کرده بود رو روی یه فلش ۸ گیگ رایت کردم و رفتم برای شروع عملیات اصلی. سیستمو ریاستارت کردم و با فلش سیستمو بوت کردم و خیلی قشنگ از رو فلش بالا اومد و از سالم بودن فایلهام اطمینان پیدا کردم. رفتم با Gparted تمام هاردو از اول پارتیشن بندی کردم و بعدش با همون systemback ابونتوی خودمو رو پارتیشنهای جدید نصب کردم و پارتیشن /home رو هم جدا کردم و بعدش ریاستارت کردم سیستمو. اینم پارتیشن بندی جدید هارم:
فاجعه وقتی رخ داد که بعد ریاستارت دیگه هیچ چیز بالا نمیومد و bios قادر به شناسایی سیستم عامل روی هارد نبود. رفتم یه خورده جستجو کردم و چند تا راه رو امتحان کردم برای تعمیر گراب که فکر میکردم مشکل از اون باشه. با نرمافزار boot-repairو به وسیله terminal هر کاری کردم گراب درست نشد که نشد. دیگه ناامید شده بودم و تنها راه پیش روم نصب دوباره اوبونتو بود، CD اوبونتو لایو رو هم گذاشتم رفتم برای نصب دوباره اوبونتو. اعصابم خورد شده بود حتی فکر اینکه دوباره بخوام این همه تنظیمات و دانلود و نصب پکیجها رو از اول اعمال کنم، دیوونهم میکرد.
در اوج ناامیدی یه بار دیگه سعی کردم گرابو درست کنم و دوباره مجبور شدم تو همین حالت لایو boot-repair رو دانلود کردم و دوباره تست کردم و سیستمو ریاستارت کردم و بازم در اوج ناامیدی گراب درست شده بود و سیستم بالا اومد. انگار خون تازهای تو رگهام جریان پیدا کرده بود.
نتیجه اخلاقی: اگر ۴ بار یه راهو رفتید و به نتیجه نرسیدید، دوباره همون راهو برید، شاید اشتباه رفتار می کردید که به نتیجه نرسیدید.
آموزش کار با Emmet یا Zen Conding
سلام
امروز میخوام یه ابزارو معرفی کنم که حتما بعضیها میشناسنش و باهاش کار می کنن و مطمئنن بعد از یه مدت کار با اون می فهمن که بدون اون کار کردن سخت میشه. اون ابزار چیزی نیست جز Emmet یا Zen Coding. این دو تا اسم جفتشون یکیه و فکر کنم الان اسم رسمیش همون Emmetه.
خب بیایید ببینیم این ابزار به چه دردی میخوره؟ تو یه جمله باید بگم که نوشتن کد Html, CSS, Xsl رو خیلی آسون می کنه. بزارید با یه مثال توضیحش بدم. فرض کنیم ما میخواهیم یه جدول بسازیم با ۵ تا ردیف و ۵ تا ستون. خب حجم کد نسبتن بالایی داره:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
<table> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> </table> |
خب حالا با zen coding تو سه سوت کد بالا رو مینویسیم، اینطوری:
1 |
table>tr*5>td*5 |
بعدش دکمه Tab رو می زنیم و به صورت خودکار کد بالا تولید میشه. پس همونطور که متوجه شدید، Emmet کارش تسریع کار و خلاصهنویسی کد هستش.
حالا بیایین یه چند تا مثال دیگه بزنیم:
1 |
h$[title=item$]{Header $}*3 |
که خروجیش میشه:
1 2 3 |
<h1 title="item1">Header 1</h1> <h2 title="item2">Header 2</h2> <h3 title="item3">Header 3</h3> |
مثال زیر فکر می کنم بهترین و قشنگترین مثال Emmetعه. فرض کنیم میخواهید یه صفحه HTML از صفر درست کنید. خب نیاز دارید تا یه سری تگ مثل نوع سند و یا متاتگها را تعریف کنید ولی با Emmet اینطوری عمل میکنیم:
1 |
! |
بله، فقط ! و بعدش Tab رو میزنیم، اینم خروجیش:
1 2 3 4 5 6 7 8 9 10 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> </body> </html> |
خب تا اینجا مثالهایی از HTML زدیم، حالا میخوام چند تا مثالم از کاربردش توی CSS بزنم:
فرض کنیم می خواهیم یک وبفونت جدید با فرمتهای مختلف به فایل CSSمون اضافه کنیم:
1 |
@f+ |
که خروجیش میشه این:
1 2 3 4 5 6 7 8 9 10 |
@font-face { font-family: 'FontName'; src: url('FileName.eot'); src: url('FileName.eot?#iefix') format('embedded-opentype'), url('FileName.woff') format('woff'), url('FileName.ttf') format('truetype'), url('FileName.svg#FontName') format('svg'); font-style: normal; font-weight: normal; } |
خب فکر میکنم تا همینجا بسه، چون مثالهای بسیار زیاد و پایانناپیذیری میشه زد که نه تو حوصله منه و نه حوصله شما خواننده گرامی.
خب حالا می خواهید بدونید که از کجا این ابزارو دانلود کنیدو چهجوری نصبش کنید. خب این ابزار به صورت یک پلاگین برای IDE های مختلف موجوده و تقریبا طرز نصبش توی هر IDE فرق میکنه ولی اگر برای IDE که دارید استفاده میکنید تا حالا پلاگین نصب کردید، باید بدونید که اینم مثل بقیهست.
بعضی جاها اسمش Emmet و بعضی جاها Zen Coning عه.
آموزش برنامهنویسی Ruby – بخش اول
همونطور که توی پست قبلیم گفتم، دارم برنامهنویسی Ruby یاد میگیرم فقط از روی کنجکاوی و قدرت انجام مقایسه درست بین زبانهای برنامهنوسی مختلف.
خب برای شروع می ریم ببینیم ویکیپدیا در موردش چی گفته:
- روبی یک زبان برنامهنویسی انعطافپذیر، پویا و شیگرا است. (درست مثل PHP و Python)
- روبی شیوههای نگارشی پرل و اسمالتاک را با هم در خود دارد.(خب با هیچ کدوم از اینا کار نکردم)
- زبان روبی در سالهای میانی دهه ۱۹۹۰ توسط یوکیهیرو ماتسوموتو در ژاپن اختراع شد
- از برنامهنوسی تابعی و شیگرا پشتیبانی میکند. (مثل همون دوتایی که بالا گفتم)
- روبی یک زبان برنامهنوسی تفسیری است. (یعنی کامپایل نمیشه و در هنگام اجرا توسط مفسر تفسیر میشه
1 |
print "hello world" |
1 |
puts "hello world" |
1 2 3 |
my_variable = 100 #int my_variable = "morteza" #string user_name = "morilog" #string |
1 2 3 |
my_array = [1, 2 ,3 4 ,5] #آرایه یک بعدی از اعداد my_array = [["morteza", "parvini", 24], ["php", "python", "ruby"]] #آرایه چندبعدی |
1 2 3 4 5 |
=begin اینجا یه سری کامنت قرار میگیره تو این خط هم شاید یه چیزایی نوشته بشه همینطور تو این خط =end |
1 2 |
my_name = "morteza" puts "my name is #{myname}" #خروجی: my name is morteza |
شروع یادگیری چیزایی که بلد نیستم مثل Ruby
۲-۳ روز پیش تصمیم گرفتم روزانه حداقل ۲-۳ ساعت صرف یادگیری چیزایی که بلد نیستم بکنم. خب برای همینم یه لیست ازشون تهیه کردم که به شکل زیره:
- روبی + فریمورک RubyOnRails
- پایتون + فریمورک جنگو یا flask
- scala
- ایجاد اپلیکیشن اندروید با جاوا یا هر چیز دیگه
- یه فریمورک جاوااسکریپت مثل AngularJs یا BackboneJs