مجموعه اسلایدهای من در اسلایدشیر

در  ۸ سال گذشته تلاش کرده‌ام تا بخشی از اسلایدهای سمینارهایم را در اسلایدشیر بگذارم؛ که بیشترش قابل دانلود هم هست.

تعداد این اسلایدها امروز به ۳۹ عدد رسیدند، و تاکنون بیش از ۲۵۰ هزار بازدید داشته‌اند، پیشنهاد می‌کنم من را در اسلایدشیر دنبال کنید:
https://www.slideshare.net/Ghanemzadeh

کل اسلایدها را اینجا می‌توانید ببینید:
https://www.slideshare.net/Ghanemzadeh/presentations

اسلایدهای همایش روز آزادی نرم‌افزار

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

من هم یکی از ارایه دهندگان بودم. اسلایدهای ارایه من به نام «کسب و کار نرم‌افزارهای آزاد/بازمتن» ببینید:

دیگر اسلایدها را هم می‌توانید اینجا دیده یا بارگیری کنید.

می خواهید بار دیگر که مطلبی نوشته شد، آگاه گردید؟ عضو خوراک (feed) این بلاگ شوید.

همایش روز آزادی نرم افزار ۲۰۱۱

Software Freedom Day

هر ساله در سومین شنبه از ماه سپتامبر (شهریورماه) دوستداران و علاقه‌مندان به نرم‌افزارهای آزاد در سرار جهان  گرد هم می‌آيند تا «روز آزادی نرم‌افزار» را گرامی بدارند. این روز در سال گذشته در بیش از ۱۰۰ کشور و بیش از ۵۰۰ تیم مختلف گرامی داشته شد. در کشور ما نیز امسال همچون سال‌های گذشته اعضای «گروه کاربران لینوکس اصفهان» در همایشی، برای پنجمین بار این روز را گرامی می‌دارند. هدف از این گردهمایی گسترش و ترویج نرم‌افزارهای آزاد/بازمتن است.

امسال این همایش در ۲۴ شهریورماه ۱۳۹۰ در کتابخانه‌ی مرکزی شهرداری اصفهان توسط «گروه کاربران لینوکس اصفهان» با همکاری «سازمان فرهنگی تفریحی استان اصفهان» برگذار می‌شود. شرکت در این همایش برای همگان آزاد و رایگان است.

در این همایش بهراد اسلامی‌فر و سجاد بارودکو به ارائه‌ی «نرم افزار آزاد به روایت تاریخ»، مجید سلامت به ارائه‌ی «لینوکس همیشه، همه جا!»، محمد باقر ادیب بهروز با مقاله‌ی «بومی سازی»، ناصر غانم‌زاده با «کسب و کار نرم‌افزارهای آزاد/بازمتن»، «زبان های برنامه نویسی و محیط های برنامه نویسی» با ارائه‌ی مهرداد عباسی و در آخر ارائه‌ی لینوکس توکار – (embedded linux) توسط هدایت وطن‌خواه اجرا خواهند شد.


جهت اطلاعات بیشتر و ثبت‌نام در این همایش به سایت https://isfahansfd.org مراجعه کنید.

پنج شنبه ۲۴ شهریور ماه ۱۳۹۰ ساعت ۱۴:۳۰

سالن اجتماعات کتابخانه ی مرکزی شهرداری اصفهان
آدرس : اصفهان – خیابان باغ گلدسته – کتابخانه ی مرکزی شهرداری اصفهان

سمینار روز آزادی نرم‌افزار و رایانش ابری

پنجشنبه ۲۵ شهریور ماه همایش روز آزادی نرم‌افزار در اصفهان برگزار شد که من نیز ارایه داشتم.

عنوان سمینار من «کسب و کار نرم‌افزارهای آزاد/بازمتن» بود. اسلایدهای این سمینار را اینجا می‌توانید ببینید.

Foss Business SFD 2010

همچنین روز دوشنبه ۲۲ شهریور نیز سمیناری با نام «درآمدی بر رایانش ابری» داشتم که می‌توانید اسلایدهای آن‌را اینجا ببینید:

لینوکس اینجا، آنجا، همه‌جا

چندین سال است درباره جنبش نرم‌افزارهای آزاد/بازمتن سخن می‌گوییم، بسیاری فکر می‌کنند چون به آن دلبسته‌ایم یا چون نانمان در آن است آنرا ترویج می‌کنیم و باور کنید  که اینگونه نیست چرا که امروزه همه‌جا به  لینوکس و نرم‌افزارهای آزاد/بازمتن به‌عنوان راهکاری جدی می‌نگرند.

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

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

بگذارید ببینیم نقش و جایگاه لینوکس در بازارهای مختلف چگونه هست:

۱. ابر رایانه‌ها (سوپر کامپیوتر): لینوکس فراگیر‌ترین سیستم عامل ابر رایانه‌ها است. بر اساس آخرین آمار منتشر شده ۹۱ درصد از ۵۰۰ ابر رایانه برتر دنیا (۴۵۵ عدد) از لینوکس استفاده می‌کنند.

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

۳. رایانه‌های رومیزی: شاید بتوان گفت وضع لینوکس در این بخش از بازار به خوبی بخش‌های دیگر نیست ولی در چندسال گذشته تلاش‌های بسیاری صورت گرفته تا نسخه‌های رومیزی (Desktop) لینوکس کاربر پسندتر شوند و پیامد این تلاش‌ها پذیرش بیشتری نیز صورت گرفته، گروهی برآنند که لینوکس رومیزی در حال گذر از شکاف است و به‌زودی فراگیرتر نیز خواهد شد. در همین‌‍جا هم اقبال به لینوکس -دست کم از سوی دانشجویان- بسیار بیش از گذشته شده است.
همین چند روز پیش هم گوگل ویندوز را پس زد و استفاده داخلی از آن را – به خاطر نداشتن امنیت کافی- ممنوع کرد. که این کار پذیرش لینوکس را برای سیستم‌عامل رومیزی از سوی دیگران شتاب خوهد بخشید.

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

۵. رایانش ابری: اگر پیگیر خبرها و فناوری‌های مربوط به رایانش ابری (Cloud Computing) باشید می‌دانید که آنجا لینوکس و دیگر نرم‌افزارهای آزاد/بازمتن یکه‌تاز میدان هستند و دیگر شرکت‌ها با اختلاف زیادی از آن‌ها در رده‌های پسین قرار دارند.

۶. دیگر بستر‌ها: تقریباً می‌توان گفت برای هر بستر دیگر هم نسخه‌ای از لینوکس وجود دارد، یا به‌سبب بازمتن بودن می‌توان برای آن نسخه‌ای ساخت. برای نمونه همین دیروز خبری منتشر شد از نسخه‌ای نو از لینوکس بنام Linaro برای بستر ARM که توسط کنسرسیومی از شرکت‌های IBM، سامسونگ، تگزاس اینسترومنتس و دو-‌سه شرکت دیگر حمایت می‌شود.

نتیجه اینکه اینکه لینوکس سیستم عاملی است برای تمام فصول. پس در هر کسب و کاری که هستید به آن جدی بنگرید.

از دید من «لینوکس یک مهارت بایسته» برای امروز است، چرا که لینوکس سیستم عامل فرداست.

اگر می خواهید بار دیگر که  مطلبی نوشته شد، آگاه گردید. عضو خوراک (feed) این بلاگ شوید.

روزمه، رزومه و رزومه

نخست تعریف رزومه یا آنگونه که در ویکی‌پدیای فارسی آمده کارنامک:

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

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

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

گوشزد ۰: بسیار روشن است که این رزومه باید پرگردد، به بیان دیگر باید چیزی داشته باشید که رزومه را با آن پر کنید. اگر تازه دانش‌آموخته شده و یا هنوز دانشجو هستید و به این رسیده‌اید که مهارت‌ها و دانش‌تان اندک است پیشنهاد می‌کنم این دو دیگر نوشته را نیز به‌دقت بخوانید:

گوشزد ۱: روشن است که این یک نمونه است، پس خود می‌توانید بخش‌های را به آن افزوده یا از آن کم کنید.
گوشزد ۲: برای اینکه ببینید چه چیزهایی را خوب است در رزومه بنویسید یا داشته باشید، بهتر است این  نمودار جالب و طنزآلود را نیز ببینید.

پ.ن ۰: پیشنهادهای شما را برای بهبود این قالب نمونه صمیمانه پذیرا هستم.
پ.ن۱: ناصر حاجلو هم در نوشته « راهنمای نگارش رزومه برای برنامه نویسان» چند نکته را برای نوشتن رزومه یادآورد شده است که پیشنهاد می‌کنم آن را نیز بخوانید.

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

تعریف رایانش ابری

درباره «رایانش ابری» یا آنچه گاهی ، به نادرست، «محاسبات ابری» نیز خوانده می‌شود، سخن زیاد گفته می‌شود. که البته همان‌گونه که درباره هر فناوری روز دیگری سخن گفته می‌شود چیزی طبیعی است.

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

رایانش ابری (به انگلیسی: Cloud Computing ) به معنی توسعه و به‌کارگیری فناوری کامپیوتر بر مبنای اینترنت است. این عبارت شیوه‌هایی از محاسبات کامپیوتری در فضایی است که قابلیت‌ھای مرتبط با فناوری اطلاعات به عنوان سرویس یا خدمات برای کاربر عرضه می‌شود و به او امکان می‌دھد به سرویس‌ھای مبتنی بر فناوری در اینترنت دسترسی داشته باشد، بدون آن‌که اطلاعات تخصصی در مورد این فناوری‌ھا داشته باشد و یا بخواھد کنترل زیرساخت‌ھای فناوری که از آنھا پشتیبانی می‌کند را در دست بگیرد. سرویس‌های رایانش ابری برنامه‌های کاربردی را به صورت برخط فراهم می‌کنند که قابل دسترسی با مرورگر وب هستند درحالی‌که نرم‌افزار و داده روی سرورها ذخیره شده‌اند. (بازیابی شده در ۲۱ تیرماه)

همین. که این البته تعریفی کمینه است و شاید کافی نباشد. در اینترنت تعریف‌های مختلفی برای رایانش ابری وجود دارد ولی من یکی از بهترین‌های آن‌ها را تعریف «موسسه ملی استاندارد و فناوری» آمریکا (NIST) دیدم (اینجا)، که تلاش کرده‌ام نسخه ۱.۴ آن را به فارسی برگردانم:

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

گوشزد ۲: صنعت رایانش ابری اکوسیستمی بزرگ از بسیاری مدل‌ها، ارایه‌دهندگان و بازار را ارایه می‌کند. این تعریف تلاش می‌کند که تمام رویکرهای ابری مختلف را در بر بگیرد.

تعریف رایانش ابری:

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

ویژگی‌های اساسی:

سلف‌سرویس درخواستی (بنابه‌سفارش): مشتری می‌تواند یک‌سویه امکانات رایانشی همچون سرور و فضای ذخیره‌سازی در شبکه را همین‌که نیاز بود از هر فراهم‌کننده  به صورت‌خودکار و بدون نیاز به دخالت انسان بدست آورد.

دسترسی فراگیر شبکه: امکانات روی شبکه در دسترس هستند و می‌توان با سازوکارهایی استاندارد به آن‌ها دست یافت، سازوکارهایی که استفاده  شدن برای بسترهایی ناهمگون کلاینت‌های ضعیف و قوی (مثل: گوشی‌های موبایل، لپ‌تاپ‌ها و PDAها) را پشتیبانی می‌کنند.

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

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

سرویس‌های اندازه‌گیری شده: سیستم‌های ابری منابع را خودکار کنترل و بهینه می‌کنند، این کار با بکارگیری توانایی اندازه‌گیری در سطحی از تجرید که مناسب گونه‌ی آن سرویس(مثل: فضای ذخیره‌سازی، توان پردازشی، پهنای باند و شمارِ کاربران فعال) است انجام می‌شود. میزان استفاده از منابع می‌تواند به شکلی شفاف هم برای مشتری و هم برای فراهم‌کننده زیر نظر گرفته، کنترل شده و گزارش داده شود.

گوشزد: نرم‌افزار ابری به خاطر سرویس‌گرا بودن و  با تمرکز بر نابستگی مکانی، وابستگی پایین،پیمانه‌ای بودن و کارکرد معنایی از تمام مزایای مفهوم ابری بهره می‌جوید.

شکل‌های ارایه:

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

بستر ابری به عنوان سرویس (PaaS). مشتری امکان دارد که برنامه‌کاربردی ساخته شده توسط خود را  بر روی  زیرساخت ابری قرار دهد. این برنامه  با استفاده از زبان‌های برنامه‌نویسی و ابزارهایی که توسط فراهم‌کننده پشتیبانی می‌شوند (مثل: جاوا، پایتون، دات‌نت) ساخته شده است. مشتری زیرساخت ابری، شبکه، سرورها یا  فضای ذخیره‌سازی زیرین را مدیریت یا کنترل نمی‌کند اما بر روی برنامه کاربردی قرارداده شده و احتمالا پیکربندی محیط میزبانی (هاست) برنامه کنترل دارد.

زیرساخت ابری به عنوان سرویس (IaaS). امکانی که برای مشتری فراهم آوری شده توان پردازشی، فضای ذخیرسازی، شبکه‌ها و دیگر منابع پایه‌ای رایانشی است به گونه‌ای که مشتری می‌تواند نرم‌افزار دلخواه خود که می‌تواند شامل سیستم‌های عامل و برنامه‌های کاربردی باشد را قرار داده و اجرا کند. مشتری زیرساخت ابری زیرین را مدیریت یا کنترل نمی‌کند ولی بر روی سیستم‌های عامل، فضای ذخیره‌سازی، برنامه‌های قرارداده شده و احتمالا گزینش اجزا شبکه‌بندی (مثل: دیواره‌های آتش، همسنگ(متعادل) کننده بار) کنترل دارد.

شکل‌های آماده‌سازی:

ابر خصوصی (Private cloud). زیرساخت ابری تنها برای یک سازمان کار می‌کند و ممکن است توسط خود سازمان یا شرکتی دیگر مدیریت شود، نیز  می‌تواند درون یا بیرون سازمان جای بگیرد.

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

ابر عمومی (Public cloud). زیرساخت ابری برای عموم یا برای دسته بزرگی از مشتریان در دسترس است و مالک آن سازمانی است که این خدمات ابری را  می‌فروشد.

ابر آمیخته (Hybrid cloud). زیرساخت ابری آمیزه‌ای است از دو یا بیشتر ابر (خصوصی، گروهی یا عمومی) که هر کدام ویژگی‌های یکتای خود را نگه می‌دارند ولی بوسیله‌ی فناوری‌های‌ استاندارد شده یا انحصاری که داده‌ها و برنامه‌های کاربردی را جابجاپذیر (پرتابل) می‌کند به یکدیگر وصل شده‌اند.

توجه: اسلایدهای معرفی رایانش ابری و دیگر اسلایدها را می‌توانید اینجا ببینید.

پ.ن ۰: نسخه ۱۵ این تعریف بیرون آمده که در بخش مقالات سایت شرکت اپاتان رایانش به‌صورت PDF و خواناتر در دسترس است.

پ.ن ۱: کسی می‌داند برگردان مناسب برای Utility Computing چیست؟ مفهوم را می‌دانم برابر خوب نمی‌یابم.

پ.ن۲: یک بنده خدایی بر اسای این تعریف و برای فهم بهتر چارتی طراحی کرده است (اینجا) که من با اجازه وی آن را به فارسی برگردانده‌ام:

چارت رایانش ابری

برای دیدن تصویر بزرگتر بر روی این تصویر کلیک کنید.

می خواهید بار دیگر که مطلبی نوشته شد، آگاه گردید؟ عضو خوراک (feed) این بلاگ شوید. برای دست‌یابی به هم‌افزایی و اشتراک دیدگاه‌ها می‌توانید به صفحه‌ی Facebook بلاگ (اینجا) بروید.

پرسش‌های نابخردانه نپرسیم

تازگی‌ها خیلی غر می‌زنم که نشانه پیری است. ولی باور کنید آدم چیزهایی می‌بیند که گزیری جز گفتن نمی‌بیند.

0- شما نام این نوشته را بخوانید «پرسش‌های احمقانه نپرسیم»

1- پیشگفتار

اریک ریموند مقاله‌ای پرآوازه دارد به نام «چگونه هوشمندانه بپرسیم» (How To Ask Questions The Smart Way) بدبختانه این مقاله بسیار سودمند هنوز به فارسی برگردانده نشده است (به جز خلاصه‌ای بسیار کوتاه). چندی است که در دیدگاه‌های بلاگ‌ها (کامنت) و انجمن‌های اینترنتی (فروم‌ها) پرسش‌هایی می‌بینیم که نه تنها هوشمندانه نیستند، بلکه بسیار هم احمقانه هستند. نمونه این‌ها بسیار است و نمی‌دانم برای آن‌ها چه باید کرد.

بدبختی بزرگ‌تر اینکه – تا آنجا که به ما مربوط است و در فروم‌های کامپیوتری می‌بینیم- بسیاری از این پرسش‌ها را کامپیوتری‌ها (IT را هم بیفزایید) می‌پرسند که زمانی نشانه و نماد بودند برای به‌روز بودن، منطقی بودن و آگاه بودن. (گرچه این بلا گریبانگیر دیگر رشته‌ها نیز هست ولی ما به رشته‌های مرتبط خودمان کار داریم)

جدا از اینکه بسیاری از پرسش‌هایی که پرسیده می‌شود را می‌توان با اندک جستجویی در همان انجمن یا اینترنت بدست آورد، چندی از این پرسش‌ها بسیار نابخردانه هستند. در بخش پسین اندکی از این پرسش‌ها که نمونه خروار آن‌هاست را می‌آورم.

2- درآمد: این چند سناریو را ببینید، این چند سناریوها از انجمن (فروم) های فارسی بدست آمده‌اند. فقط هرچه فکر می‌کنم یادم نمی‌آید یکمی را در کدام فروم دیده‌ام.

سناریو 0 (الگو):

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

سناریو 1:

فرد الف: میخواهم لینوکس سرور نصب کنم که کارهای y،x و z  را انجام دهد.

فرد ب در پاسخ: کارهای 1و 2 و 3 را انجام می‌دهی سپس در ترمینال فلان چیز را می‌نویسی.

الف: ترمینال! ترمینال در لینوکس چیست و چگونه می‌توان به آن دسترسی پیدا کنم.

سناریو 2:

الف: می‌خواهم در  C++ فلان کار را بکنم. «من خیلی C++ بلد نیستم.»

ب: «برای اعداد خیلی بزرگ باید از آرایه استفاده کنی و یه کلاس جدید برای کار با اون بنویسی …. »

الف: «میشه بیشتر توضیح بدید. من چیزی از کلاس نمی دونم . همین طور میشه بگید.»

سناریو 3:

الف: «من میخوام برای یک اداره دولتی سایت طراحی کنم. اما تقریبا اولین کارم در این زمینه هست.
میخواستم بدونم سایتهای ادارات دولتی مثل شهرداریها و وزارت و غیره که میبینیم چطور طراحی میشه و چه امکاناتی داره
آیا بیشترش با CMS های اپن سورس انجام میشه و لطفا بهم معرفی کنید
آیا کسی این سایت ها رو بطور سفارشی و با کدنویسی طراحی میکنه و یا با دریم ویور …»

ب: «دوست عزیز در حال حاضر تقریبا هیج سایتی … نیست که بدون استفاده از سامانه‌های مدیریت محتوی (cms) پیاده‌سازی شده باشد. …»

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

سناریو 4:

الف: خوشحالم که با شما آشنا شدم. من همه‌ی نوشته‌های بلاگ شما را بادقت خوانده‌ام. اما سوالی دارم. چگونه می‌توانم کار X را انجام دهم.

ب: نوشته‌ی Y من را با دقت بخوان.

الف: خوانده‌ام. اما جواب پرسش من در آن نیست.

ب: پاراگراف دوم خط سوم …

الف: آها. راست میگید. حالا چطور می‌تونم کار Z را انجام بدم.

ب: همان نوشته پاراگراف سوم.

الف: آها. یه سوال دیگه….

و این داستان ادامه دارد

————–

چیزی که برای من جالب است این است که بسیاری افرادی که پرسش‌های هوشمندانه ندارند این سه صفت را دارند. (به ویژه دوستان جوان‌تر و دانشجو)

  • کم صبر هستند
  • نوشته‌ها را بادقت، درست و کامل نمی‌خوانند
  • جستجو نمی‌کنند

با کمی کار روی این‌ها می‌توان پرسش‌های هوشمندانه‌تری پرسید. چیزی که نمی‌دانم این است این است که با افرادی که پرسش‌های احمقانه می‌پرسند چه باید کرد. به ویژه برای سناریوهای 2،1 و 3.

اگر می خواهید بار دیگر که  مطلبی نوشته شد، آگاه گردید. عضو خوراک (feed) این بلاگ شوید. همچنین می توانید مرا در تویتر دنبال کنید. «فهرست همه نوشته‌ها»ی من را اینجا ببینید.

اهمیت روش‌مند بودن استخدام برنامه‌ نویس در شرکت‌ نوپا

پیشگفتار: من برنامه‌نویس را به‌جای  Programmer و برنامه‌ساز را برابر Developer بکار می‌برم. برای بیشتر دانستن، نوشته «در شرکتتان برنامه‌ساز نیاز دارید، نه برنامه‌نویس» را بخوانید. اما این نوشته هر دو آن‌ها را در بر می‌گیرد.
اگر دانشجو هستید، بهتر است نوشته دیگر من «پندهایی به دانشجویان کامپیوتر: چشمان خود را باز کنید» را بخوانید.

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

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

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

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

برآن نیستم که این نوشته را به درازا بکشانم. در نوشته‌ای دیگر درباره چگونگی این فرآیند سخن خواهم گفت. اما برای آغاز دو کتاب بسیار خوب را معرفی می‌کنم:

How Would You Move Mount Fuji?

این کتاب چگونگی بکارگیری نیروها در یک شرکت نرم افزاری را بیان می کند البته تمرکز آن روی مایکروسافت است.

Smart and Gets Things Done

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

چند نکته پایانی

  • در آگهی استخدام نکته کلیدی شناخت گروه هدف است که برنامه‌نویس هستند. باید تا آنجا که می‌توانید هدفمندانه آگهی بدهید. آن هم در جاهایی که برنامه‌نویسان ببینند نه مردم عادی. اگر می‌‌ خواهید یک نفر را بکار بگیرید باید دست‌کم ۳۰-۴۰ رزومه دریافت کنید.
  • رزومه‌ها را بخوانید. بدون توجه به اینکه کار شما چیست، برای کسانی که در پروژه‌های آزاد/بازمتن همکاری داشته‌اند امتیاز در نظر بگیرید. کُدهای آن‌ها را بخوانید.
  • در اینجا یک نمودار جالب برای اینکه به چه چیزهایی باید امتیاز داد وجود دارد. گرچه نمودار کمیک است ولی  آگاهی دهنده و سودمند است.
  • فرآیند می‌تواند با یکی-دو آزمون هوش «لو نرفته» آغاز شود.
  • بهتر است پیش از مصاحبه برنامه‌مصاحبه داشته باشید. حدود ۴۵ دقیقه تا یک ساعت را برای مصاحبه در نظر بگیرید.
  • در این مدت ۱۰-۱۲ پرسش از ۳-۴ زمینه بپرسید که حتما دو زمینه از آن «ساختمان داده‌ها» و «طراحی الگوریتم‌ها» باشد. اگر پرسش‌های استخدامی شرکت‌های بزرگ را ببینید در می‌یابید که بیشتر آن‌ را همین دو زمینه در بر گرفته است.
  • در اینترنت به دنبال فرآیندها و پرسش‌ها جستجو کنید (به انگلیسی.)

اگر می خواهید بار دیگر که  مطلبی نوشته شد، آگاه گردید. عضو خوراک (feed) این بلاگ شوید. همچنین می توانید مرا در تویتر دنبال کنید. «فهرست همه نوشته‌ها»ی من را اینجا ببینید.

راهنمای کوچک برنامه‌نویسی با codeblocks

0- درآمد:

اگر شتاب دارید، می‌توانید از این بخش گذر کنید.

در «پندهایی به دانشجویان کامپیوتر: چشمان خود را باز کنید» و چندین جای دیگر بارها گفته‌ام که دانشجویان باید بسیار کُد/برنامه بنویسند. اگر پیگیر بلاگ من باشید می‌دانید که من برنامه‌نویس یا گیک نیستم و رویکردم بیشتر مدیریتی است. آنچه مرا بر آن داشته تا این نوشته را بنویسم مساله‌ای که تازگی بسیار می‌بینم؛ چندی پیش دانشجویی که در پایان ترم 3 و درس برنامه‌سازی پیشرفته بود از من خواست تا به رسم همسایگی پروژه‌های پایان ترم این درس را برایش بنویسم، که البته ننوشتم. تلاش کردم تا این کار را با هم انجام دهیم. پس از آنکه- برای آموزش- برنامه‌ها را بر روی کاغذ نوشتیم، از او خواستم تا آنها را تایپ و اجرا کند. آنها را تایپ کرد ولی پس از آن چیزی گفت که برایم جالب بود: او تا آن روز حتا یک برنامه C/C++ را کامپایل/اجرا نکرده بود. به زودی دانستم که این مشکل بسیاری از دانشجویان است. جالب‌تر آنکه دانستم هنوز بسیاریTurbo C++ را برای این کار بکار می‌گیرند که البته بهتر است بگویم بکار نمی‌گیرند. ایرادی به این برنامه وارد نیست ولی دیگر زمان این برنامه گذشته است و محیطی دلچسب ندارد. ما هم زمان دانشجویی این برنامه را بکار می‌گرفتیم(ده-یازده سال پیش.) امروزه «محیط های یکپارچه برنامه‌سازی» (IDE) بسیار کاربر پسندتر به بازار آمده است. یکی از این محیط‌ها Code::Blocks است که زیبا، ساده، بازمتن و رایگان است. بسیاری از دانشجویان به بهانه محیط بد سراغ برنامه‌نویسی نمی‌روند. دوستانی برآنند که باید برنامه‌نویسی و کامپایل را،دست کم برای مدتی، از خط فرمان انجام داد. من همین همین عقیده را دارم اما برای عاشقان برنامه‌نویسی. امروز می‌گویم مهم لذت از  برنامه‌‌نویسی و ادامه آن است. اگر کسی لذت برنامه‌‌نویسی را حس کند، آنرا پی گرفته و در آن ژرف‌تر می‌شود. دلیل دیگری هم دارد: یکی از دغدغه‌های من به‌عنوان مدیر/مشاور، بکارگیری (استخدام) نیرو است و فکر می‌کنم بارها گفته‌ام که نیروی کاربلد بسیار کم است، این پست را نوشتم شاید تعداد بیشتری علاقه‌مند شده و سراغ برنامه‌نویسی روند.

1- آغاز: بارگیری و نصب

اگر کاربر ویندوز هستید به اینجا بروید. برای ویندوز دو نسخه موجود است که بهتر است شما نسخه همراه با کامپایلر MinGW را بگیرید. حجم این نسخه حدود 20 مگابایت است. پس از بارگیری بر روی آن کلیک کنید. اگر پیشتر کامپایلری روی سیستم شما نباشد، نیازی به هیچ تنظیمی نیست و برنامه به‌سادگی نصب می‌شود. پس از نصب می‌توانید برنامه را از منوی Start  اجرا کنید.

در لینوکس کار کمی آسان‌تر است. به طور کلی لینوکس بهشت برنامه‌نویسان است. بیشتر توزیع‌های لینوکس آن‌را در مخازن رسمی خود دارند. به‌راحتی می‌توانید برنامه را از مخازن نصب کنید. برای نمونه در اوبونتو کافی است در خط فرمان بنویسید:

sudo apt-get install build-essential codeblocks

یادتان باشد که کامپایلر را هم نصب کنید، که من این کار را با نصب build-essential انجام داده‌ام. در اوبونتو برنامه از نشانی زیر اجرا می‌شود.

2- اجرا:

به

File -> New -> Projet…

بروید و  Console application را بزنید. در گام دیگر زبانتان را (C/C++) بگزینید. در گام دیگر به ترتیب نام پروژه، پوشه‌ای که می‌خواهید پروژه در آن ذخیره شده و نام فایل را بنویسید.(البته هنگام نوشتن نام پروژه، خودش نام فایل را می‌گزیند).

درگام دیگر نام کامپایلر را می‌خواهد که به‌صورت پیش فرض GNU GCC Compiler است، اگر نیست آن‌را انتخاب کنید. کار تمام است. پروژه ساخته می‌شود. زیر نام پروژه به زیر sources بروید و روی main.cpp کلیک نمایید. کد برنامه نمایش داده می‌شود. همانگونه که می بینید CodeBlocks خودش یک برنامه ساده برای شما نوشته است.

برای اجرای این برنامه کافی است دو کار انجام دهید. به منوی Build بروید و به ترتیب

Build ->Build

و سپس

Build->Run

را بزنید. یکمی برنامه را کامپایل می‌کند و دومی ،اگر در مرحله پیشین خطایی یافت نشود، برنامه را اجرا می‌کند. من متن را تغییر داده Build و Run را دوباره تکرار کردم. اینک می‌توانید  خروجی را ببینید.

حالا می‌توانید برنامه‌هایی را پیشتر نوشته‌اید یا در کتاب‌ها دیده‌اید را تایپ و اجرا کنید.

3- بیشتر:

تا همین حد برای یادگیری و اجرای برنامه‌ها کافی است. هرچه با این محیط بیشتر کار کنید، بیشتر با آن آشنا شده و ویژگی‌های آن دستتان می‌آید. codeblocks ویژگی‌های بسیار بیشتری دارد که با خواندن راهنمای آن با آن‌ها آشنا می‌شوید. از برنامه نویسی با codeblocks لذت ببرید و تا آنجا که می‌توانید برنامه بنویسید.

تبریک می‌گویم اکنون دیگر برنامه‌نویس شدید، پس وقت آن است که این نوشته را بخوانید.

اگر می خواهید بار دیگر که  مطلبی نوشته شد، آگاه گردید. عضو خوراک (feed) این بلاگ شوید. همچنین می توانید مرا در تویتر دنبال کنید. «فهرست همه نوشته‌ها»ی من را اینجا ببینید.