پرداخت هزینه هر شش ماه یک بار فیلیمو همیشه هم برام عذاب آور بوده و هم مفید. عذابش اون قسمت هست که همون فیلمهایی که من همیشه از تورنت دانبود میکردم و با پایین آوردن کیفیت صدا و تصویر و سانسور قراره بهم تحویل بده و مفید از این لحاظ که براحتی همون فیلمها در دسترسی هست. و البته تجربه دیگران در دیدن اون فیلم. معمولا زیر هر فیلمی وقتی ۳۰ نفر کامنت گذاشتن و بالای ۲۰ نفر گفتن خوب هست، اون فیلم خوب بوده.
عاشق فیلمهای اکشن، معمایی، جنایی و بعضا ترسناک هستم. البته به جز فیلمهای عاشقانه همه ژانرهای دیگه رو هم نگاه میکنم
فیلم شکسته به کارگردانی برد-اندرسون که تخصصش فیلمهای مهیج و ترسناک هست. این بار فیلمی که در اون روابط عاطفی، خشم، حالات روانی لحظه ای، رویا، ترس و ... با هم ادغام شده. از مواردی که خیلی فیلم رو جذاب کرده:
۱. پدری که بسیار نگران خانوادش هست، از اونها نگهداری میکنه. حتی در حین رانندگی برای دخترش شعر میخونه، سعی میکنه مشکلات خانوادگی رو مدیریت کنه. ولی یکدفعه هر دو رو به دست خودش کشته.
۲. حالات روانی لحظه ای و تصمیم گیری بدون اختیار. مانند هل دادن زنش که منجر به مرگش میشه
۳. توهم از این که زن و فرزندش رو رسونده بیمارستان
۴. در ادامه توهم فکر میکنه در زیر زمین بیمارستان کار صلاخی و جداسازی اعضا رو انجام میدن، میره به داخل اتاق عمل و بیمار دیگری رو در حال عمل میزاره روی ویلچر و از بیمارستان خارج میکنه
۵. در مسیر برگشت دوباره داره برای خانوادش شعر میخونه، در حالی که مریض دیگری پشت صندلی نشسته
برعکس فیلمهای دیگری که این چند وقت دیدم، به دور از واقعیت و خیلی هم تخیلی، این فیلم بسیار هم واقعی هست.
تمام لحظه های فیلم غیر قابل پیش بینی هست، حتی تا لحظه آخر که داره بیمار دیگری رو از اتاق عمل خارج میکنه، شما با شخصیت اول داستان هم نظر هستید و بهش میگید مرحبا که داره خانوادش رو نجات میده و همه آدمهای دیگه فیلم دارن دروغ میگن.
ولی این همه داستان نیست. بیننده به چرایی این موضوع میخواد پی ببره، چرا از ابتدای فیلم همه دارن برخلاف گفته های اون عمل میکنن. تا این که دکتر روانشناس برای پیدا شده حقیقت وارد داستان میشه. داره مواردی رو به یادش میاره. که دخترش کجا رفته؟ زنش چی شده؟ این بلایی که خودش به سر اونها آورده. در توهم خودش فکر کرده که داره به دخترش کمک میکنه ولی در عمل باعث مرگش شده.
در اخر فیلم با روشن شدن حقایق و ادامه رانندگی مرد تموم میشه.
vagrant یه ابزار کمکی برای راه اندازی vm هست. معمولا از virtualbox به عنوان container پیشفرض استفاده میشه. در مورد این که vagrant چی هست و container چه کاری رو انجام میده، میتونید سری به ویکی vagrant بزنید.
بعد از راه اندازی vm یکی از امکانات خیلی خوبش sync folder هست. بین Host و Guest یه فولدر مشترک اسجاد میکنه و شما براحتی بر روی یه فولدر توی سیستم خودتون فایل میرید و بدون هیچ دستوری همون فایل رو بر روی vm خواهید داشت. مثلا فولدر بر روی سیستم Host در مسیر
/home/mehrdad/vm/server/www
مثلا در این فولدر کدهای برنامه نویسی وب هست و قراره بر روی vm توسط apache و php اجرا بشه. درون vm فولدر زیر جهت sync
/vagrant/www
قبل از این کار باید vboxsf رو بر روی Guest نصب کنید. همراه container ها یه فایل addition هست جهت نصب ابزارهای کمکی. همراه Virtualbox هم یه iso به اسم VBoxGuestAdditions برای دانلود هست. البته کاربران ایرانی تحریم هست و باید از راه های دیگه دانلود و نصب کنید. توجه کنید مناسب با ورژن virtualbox باید نسخه iso رو دانلود کنید. مثلا virtualbox من در منوی about نسخه 4.3.36 رو نشون میده. برای دانلود iso لز لینک زیر استفاده کنید
http://download.virtualbox.org/virtualbox/
البته همین iso رو از طریق منوهای virtualbox میتونید دانلود کنید که به علت تحریمها و سرعت پایین نت شاید نتونید موفق به این کار بشید و دانلود مستقیم iso بهتر هست.
بعد از دانلود باید اون رو به عنوان یه cd به vm خودتون mount کنید
mkdir /mnt/cd
mount /dev/cdrom /media/cd
اگر هم مثل من از mount کردم مستقیم iso دانلود شده رو بیشتر میپسندید میتونید iso دانلود شده رو به vm منتقل کنید و با دستور
mount /home/VBoxGuestAdditions_4.3.36.iso /mnt/cd
این کار رو انجام بدید. برای نصب guest addition نیاز به gcc make و kernel headers هست. دلیلش هم کامپایل ماژول vboxsf برای کرنل لینوکس هست. یعنی یه سورس ماژول که باید روی vm شما بر اساس نسخه kernel کامپایل و در زمان اجرا insmod بشه. برای نصب نیازمندیها دستور زیر رو اجرا کنید
sudo apt-get install make gcc linux-headers-$(uname -r)
برید به پوشه /mnt/cd و دستور زیر رو اجرا کنید
./VBoxLinuxAdditions.run
با این کار شروع به کامپایل و نصب میکنه
root@S:/mnt/cd# ./VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.3.36 Guest Additions for Linux............
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox non-DKMS kernel modules ...done.
Building the VirtualBox Guest Additions kernel modules
The headers for the current running kernel were not found. If the following
module compilation fails then this could be the reason.
Building the main Guest Additions module
...done.
Building the shared folder support module ...done.
Building the OpenGL support module ...done.
Doing non-kernel setup of the Guest Additions ...done.
Starting the VirtualBox Guest Additions ...done.
Installing the Window System drivers
Could not find the X.Org or XFree86 Window System, skipping.
بعد از این کار سمت client همه چیز آماده هست و باید باید فایل Vagrant رو طوری کانفیگ کنیم تا این دو تا فولدر رو sync کنه
config.vm.synced_folder "./", "/vagrant" ,id: "vagrant-root",owner: "vagrant", group: "www-data",mount_options: ["dmode=775,fmode=664"]
درون پوشه اصلی یه پوشه به اسم www بسازید. در vm قرار هست apache رو بر روی این فولدر تنظیم کنیم.همیشه در پروژهها یکی از دغدغههای من تحویل کار با کیفیت مطلوب و راضی شدن مشتری هست. بخشی از این داشتن کیفیت به استفاده از فناوریهای مناسب هست. در این پست میخوام کمی از تجارب و لزوم یادگیری روزانه در برنامهنویسی رو یادآوری کنم.
تحقیق در کاری که قراره انجام بشه خیلی مهم هست. به چند دلیل در هر پروژهای ما از تحقیق و جستجو تمام روشها سرفنظر میکنیم:
با توجه بر موارد بالا، برنامهنویس تصمیم میگیره که روشهای قدیمی خودش رو در پروژه استفاده کنه. حالا به چند مورد از روشهای جدید در مقابل قدیم و مزایا و معایب رو ذکر میکنم
من چند مورد که خیلی نسبت به قدیم به چشم میخوره لیست کردم و قطعا دوستان دیگری میتونن تجارب بیشتری بهش اضافه کنن.
اما راه حل رو بازم لیست میکنم:
با توجه به موارد بالا و تجاربی که خودم داشتم، همیشه مطالعه داشته باشید و تمام فناوریهای رو در حد مطالعه و یا نصب و راهاندازی اولیه انجام بدید. این دید بزرگی به شما میده و در انجام پروژهها با اعتماد به نفس و تسلط بیشتری کار رو انجام میدید
آرزوی موفقیت و پیشرفتهای بیشتر برای تمام برنامهنویسان عزیز.
از عنوان پست برمیاد که قصد معرفی و بیان تجربیات چه چیزی رو دارم. رشتهای که در ایران محجور مانده و خیلی هم بهش ظلم شده، رشتهای که بیشترین دانشجو رو داره و نسبت به فارقالتحصیلان کمترین شاغل و ....
در ابتدا لازم میدونم سابقه تحصیلی خودم رو از ابتدا تا اینجا رو توضیح بدم:
۱- دیپلم کامپیوتر - فنی و حرفهای در سال ۸۴
۲- کاردانی فناوری اطلاعات و ارتباطات(ICT) - در سال ۹۰
۳- کارشناسی مهندسی نرم افزار - در سال ۹۲
پس همونطور که میبینید از هموم ابتدا علاقه شدید به این رشته داشتم، و خوب به اون موفقیتهایی که دوست داشتم رسیدم، و الان هم هنوز مثل روزهایی اولی که با کامپیوتر روزی ۱۸ تا ۲۰ ساعت کار میکردم، کار میکنم.
بعد از اون میرسیم به هدف از تحصیل در این رشته و زیر و بندهایی که وجود داره.
با تمام حاشیههایی که این رشته داره و تمام ایرادهایی که دیگران بهش میگیرن ولی اگر کمی علاقه داشته باشین و تلاش کنید، چنان غرق این رشته میشین که رهایی از اون غیر ممکن هست. مثلا یه روز با یکی از همکاران که ۱۵ سال از من بیشتر تجربه داشت، در مورد این که اگر روزی دکتر بگه شما دیگه نباید با کامپیوتر کار کنید چه حالی دارید؟ اولین جوابی که گفتن: میمیرم.
برای ورود به این رشته و موفقیت در اون به موارد زیر توجه کنید:
۱. این رشته خیلی زود و به سرعت نور بروز رسانی میشه
هنوزم خوب یادمه. وقتی بچه بودیم میرفتیم دکتر یه آمپی سیلین، شربت اکسپکتورانت کدئین، قرص استامینوفن و اگر هم خیلی شدید بود آمپول آمپیسیلین. خوب من تقریبا ۶ ماه پیش یه سرماخردگی شدید گرفتم رفتم دکتر دقیقا همون داروهای ۲۰ سال پیش رو داد. پس تو علم پزشکی عمومی چه تغییر کرده؟ و اون آقای دکتر با ۵۰ سال سن و تجربیات ۲۰ سال پیش هنوزم میتونه تو این جامعه کار کنه و تازه بهش میگن دکتر حرفهای و با تجربه. ولی نه عزیزان رشته کامپیوتر و تمام شاخههاش این طور نیست. بلکه به سرعت نور تغییر میکنه. امروز چیزی رو یادگرفتی قطعا تا ۱ یا دوسال آینده تغییراتی درش حاصل شده و شما برای یادگیری موارد جدید باید مطالعه داشته باشین.
اگر روحیه یادگیری همیشگی رو دارین و علاقه دارین مدام چیزهای جدید یاد بگیرین این رشته بسیار کاربردی و موفق هست. ولی شاید الان بدنتون داغ باشه و بگین آره دوست دارم یاد بگیرم ولی داریم افرادی با ۳۵ تا ۴۵ سال سن که اصلا حوصله خوندن یک صفحه مطلب انگلیسی رو ندارن و میخوان روی همون تجربیات گذشته پایبند باشند. خب این دوستان بخت و اقبال اونها روز به روز کم میشه و چه بسا روزی یک جوان ۲۰ ساله بخاطر تجربیات جدید و بقول ما update ، مسئول بالادست این شخص بشه. در کل هر روز باید بین ۴۰ تا ۹۰ دقیقه برای یادگیری فناوریهای جدید صرف کنید. مثلا تا همین ۵ سال پیش هر کسی که میخواست طراحی ui سایت انجام بده، براحتی با table ساختار سایت رو میچید و اصلا حرفی از responsive بودن و اجر بر روی تبلت و موبایل نبود. ولی الان باید این فناوریها رو برای طراحی سایت بلد باشید و اصلا اون تجربیات قدیمی دیگه کاربردی نداره. پس اون شخص طراح باید بشینه و با داشتن تمام اون تجربیات، html5و css3 و حتی فریمورکهای ui مثل bootstrap رو یاد بگیره. الان اون فناوری قبلی که بلد بود شاید در فرم لاگین بتونه از ش استفاده کنه که اونم بازم با فناوریهای جدید زیباتر در میاد.
۲. درس خوندن در این رشته و بعدش هم کار
اگر فکر میکنید صرفا با درس خوندن در اینرشته، مثلا هر روز صبح کیف و کتاب رو بردارین و برین دانشگاه و برگردین برای شما بعد از فارقالتحصلی کار هست، باید بگم سخت در اشتباه هستید. البته شاید بتونید کاری دولتی گیر بیارین که اونم درصدش خیلی کمه. پس باید تلاش کنید و در همون سالهای تحصیل تجربه کافی رو کسب کنید. لازم هم نیست حتما از شهر و دیار خودتون دور بشید و برای کار در شرکتها برین شهرهای دیگه، بلکه با تهیه منابع آموزشی خودآموزی کنید و حتی پروژههای رایگان و ارزان انجام بدید. در بازار کار هم که وارد بشین همون پروژهها به کمک شما میان. البته کار در شهرهای بزرگ و ورود به شرکتهای کوچک هم میتونه خیلی مفید باشه. مثلا در شهرهایی مثل شیراز، اصفهان و تهران که میتونید بهترین شرکتها رو پیدا کنید. خب البته برای این کار مجبورید نقل مکان کنید به این شهرها. با توجه بر این که دوستان مجرد هستن، پس اگر خوابگاه دانشجویی شامل حال شما نشد میتونید با پانسیون هم زندگی رو سر کنید. در کل بستگی به خودتون کدوم رو انتخاب میکنید ولی چیزی رو که باید توجه کنید اصلا به پول درآوردن در این دوره چندان پایبند نباشین و تا اون جا که میتونید تجربه کسب کنید. بعد از پایان درس و رفتن سر کار و استفاده از اون تجربیات، حتی میتونید دستمزد بیشتری هم بگیرید. وحتی بالاتر تا اون جا تجربه و اعتبار کسب کنی که خودتون با چند نفر از دوستان یه شرکت رو تاسیس کنید.
۳. چیزی به اسم نظام مهندسی و خلاصه مسئول درستحسابی نداره
اگر مورد اول رو خوب مطالعه کرده باشین به این پی بردین که چرا این رشته با رشتههای دیگه تفاوت داره. حالا با این اوصاف چرا در رشتههای مثل عمران( که اون هم مثل دکترها علم استاتیک دارن) نظام مهندسی دارن ولی در رشتهای مثل نرمافزار ما چنین چیزی نداریم. در بازار کار بسیار زیادن شرکتهایی که دارن کارهای در سطح ملی انجام میدن و با کمک بند پ چه پروژههایی رو که نمیگیرن ولی از سطح سوادشون بپرسین از من میگم ۱۰۰- و حتی اوضاع وخیمتر از این هم هست. بنده تجربه جلسه با چند تا از این عزیزان رو داشتم. در جلسهای که طرف مسئول شرکت بود و خلاصه خودش رو ۲۰ سال تجربه در این حرفه میدونست، فرق IDE رو با Compiler نمیدونست و توی جلسه برگشت به من گفت: ما توی #C میریم و روی صفحه دکمه میزاریم، حالا شما توی GCC چطوری دکمه میزارین. برگشتم بهش گفتم توی زبان #C چیزی به ایم گذاشته دکمه تعریف نشد بلکه این امکانات IDE هست که شما امکان دکمه گذاشتن دارید و معمولا زبان #C رو هم با IDE معروف اون یعنی Visual Studioمیشناسن. خلاصه با وجود نطام صنفی رایانهای چیزی به اسم درو پیکر برای این رشته نیست. هر چقدر شما متخصص و تجربه داشته باشید، معمولا پروژههای top به بند پ میرسه(که شامل حال ما نمیشه). هر چند بارها مشاهده شده که همون شرکتهای بیتجربه کار رو خراب میکنن بعدش ناچار مسئولان دست به دامن شرکتهای و افراد با تجربه میشن برای جمع کردن خرابکاری اون دوستان. پس دارید وارد این رشته میشید از الان مسیر خودتون رو باید خوب بشناسید و بدونید که خودتون هستید و خودتون نه حامی هست و نه مسئولی.
۴. این رشته فقط برنامهنویسی نیست
نمیدونم چرا همه رشته کامپیوتر رو با برنامهنویسی میشناسن. در صورتی که یک باور بسیار غلط هست. این رشته تنوع بسیار بالایی داره و در چند سال اخیر هم شاخههای مختلفی از این رشته بوجود اومده مثل:
برای شروع برنامه نویسی تحت وب ابتدا باید محکم و قاطع مسیرتون رو خوب مشخص کنید.
طراح یا برنامه نویس سمت سرور؟ در کشور ما طراح وب یک شاخه هست اونم photoshop و css.html,js ولی در کشورهای دیگه photoshop با بقیه جداست.
برای طراحی ui و سمت کاربر شما باید ابتدا ذوق و سلیقه طراحی، روانشناسی رنگها، ux designer و خلاصه فناوریهایی که برای طراحی گرافیکی نیاز هست رو بلد باشین. جدیدا responsive هم به این مورد اضافه شده که به کمک bootstrap یا دیگر ابزارها این کار هم راحت شده. ساختارش روی html هست و استایل صفحه با css و نهایتا با javascript کتابخونه دوست داشتنی اون jquery هم باید کار کنید.
و اما سمت سرور که میخواید تحت .net کار کنید یا تحت php؟ این دو هدفشون یکی هست ولی دو دنیای متفاوت هستن. هر کدوم چالشها و جذابیتهای خاص خودشون رو دارن. ابتدا توضیحی کوتاه از کدوم
دات نت یک فریم ورک قدرتمند و از محصولات مایکروسافت هست. کاملا رایگان و مجانی هست(توی ایران) . دات نت برای تحت وب ASP.net رو داره. معمولا asp.net رو با #C مینویسن. شما در دات نت محیط توسعه visual studio رو دارید که روز به روز هم داره پیشرفت میکنه. بعد از توسعه یک سایت برای publish هم سرورهای زیادی در اینترنت هست که میتونید هاست asp.net تهیه کنید ولی اغلب هزینش از لینوکس بالاتر هست. دات نت ساختار MVC منسجمی داره.
php یک زبان برنامه نویسی اوپن سورس هست. این که میگم اوپن سورس واقعا سورسش بازه و چیزی به اسم کامپایل درش وجود نداره(هر چند تکنیکهایی هست). زبانی بسیار شیرین و راحت. مخصوص کسانی که میخوان به دل هر چیزی نفود کنن. مثلا حتی برن سورس php رو دستکاری کنن(اگر نیاز بود) یا برنامه رو هر طور که خودشون خواست بنویسن یا هر فریمورکی دلشون خواست استفاده کنن. خلاصه آزادی عمل توی این زبان حرف اول رو میزنه. فعلا هم آمارش از net. بیشتر هست.
با توجه به هدفتون باید برید دنبال منابع درست و شروع یادگیری. در این پست به مبحث سمت سرور و php میپردازم
روشهای یادگیری زیاد هست
بعضی وقتها این وسواس بین تمام ما هست. مثلا برنامهنویسی php رو دنبال میکینم ولی برای این که از غافله عقب نباشیم و یا مثلا توی آگهی روزنامهها استخدام برنامه نویس #c رو هم دیدم، میایم و در کنار تمام مشغلههای کاری برنامهنویسی php، زبان دیگری رو هم درگیرش میشیم. این یکی از بدترین وسواسها هست که شخص بصورت همزمان از این شاخه به اون شاخه میپره و آخرش هیچ کدام کارها رو بصورت حرفهای یاد نمیگیرن. این نوشته زیر از رولف دوبلی بسیار زیبا هست:
مدیران عاملی که همه گزینههای ممکن را پیش روی خود نگاه میدارند معمولا هیچکدام را اجرا نخواهند کرد. بنگاههایی که همه قسمتهای بازار را هدف میگیرند معمولا دستآخر به هیچکدام دست نمییابند. فروشندهای که همه معاملهها را تعقیب میکند در انتها هیچ معاملهای را جوش نخواهد داد.
ما گرفتار یک اجبار وسواسی برای برداشتن هر تعداد هندوانه ممکن با یک دست هستیم و سوار هیچ کاری نیستیم؛ ولی گزینهها را پیش رویمان باز نگه می داریم. این موضوع بهراحتی میتواند بهقیمت موفقیتمان تمام شود. باید یاد بگیریم که درها را ببندیم.
یک استراتژی کسبوکار در درجه اول بیانیهای است برای چیزهایی که نباید مشغولشان شویم. یک استراتژی مشابه برای زندگیتان قرار دهید: چیزهایی را که نباید در زندگی دنبال کنید، روی کاغذ بیاورید. به عبارت دیگر به یک تصمیم حسابشده برای آزادکردن برخی امکانات برسید و هر وقت گزینهای مطرح شد آن را با فهرست آنچه که نباید سراغشان بروید و درگیرشان شوید بسنجید. این کار نهتنها شما را از به دردسر افتادن حفظ میکند، بلکه کلی از زمانتان را برای اندیشیدن آزاد خواهد کرد. یک بار این فکر سخت را به سرانجام برسانید و بعد بهجای آنکه هر بار که دری گشودهشد بنشینید و ذهنتان را مشغول کنید، فقط به این لیست مراجعه کنید.
بسیاری از دروازهها ارزش وارد شدن را ندارند حتی وقتی که دستگیرههای درشان بهراحتی بچرخد و باز شود.