هکر ماهیانه – شماره ۱۰

چگونه شرکت جدیدتان را به هکر نیوز برسانید

هکرنیوز مشهورترین سایت خبری هکرها است. هر پروژه‌ای که بتواند به صفحه اول هکرنیوز برسد احتمال موفقیت اش و حداقل دیده شدنش بسیار بالا خواهد بود. لینک

درک رفتار روح‌های پک من

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

چگونه یک برنامه نویس پیمانکار باشیم؟

فرض کنید شغلی دارید که در آن مردمی که نمی شناسید به شما ایمیل می زنند تا بخشی از یک نرم افزار را بنویسید یا بهبود دهید و پیشاپیش پول را هم پرداخت می کنید. البته لازم نیست فرض کنید. این آدم شغلش این است و درباره اش با شما صحبت می کند

امولاتورها چطور نوشته می‌شوند؟

تا به حال در یک امولاتور کمودر ۶۴، بازی‌های قدیمی‌تان را بازی کرده‌اید؟ اگر اهل اینکار نیستید بازهم ممکن است از امولاتور اندروید برای برنامه نویسی استفاده کرده باشید یا از امولاتور یک پروسسور برای کارهای طراحی برق. این مقاله، به خوبی توضیح می‌دهد که امولاتورها چیستند و چطور کار می کنند

کرک کردن برنامه‌های اپل با یک شل

پوف! البته همه برنامه های ما رو که نه ولی این مقاله توضیح می ده که چجوری می شه فقط با یک شل، بخش بزرگی از برنامه های مک رو کرک کرد.

جوری کد بنویسید که انگار تازه برنامه نویسی یاد گرفته‌اید

از اینجا اومده که یک نفر پروژه‌های موفق رو بررسی کرده و به این نتیجه رسیده که اکثر کسانی که تونستن پروژه رو با موفقیت تجاری کنن کسانی بودن که قبلا برنامه نویسی بلد نبودن. اما چطور ممکنه؟.

چگونه یک سیستم عامل ساده بنویسیم

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

هکر مانتلی، نسخه ۱۰، مارس ۲۰۱۱

تقویم‌ها هنوز هم جوانند

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

از سال‌ها پیش اشکان قاسمی با محور قرار دادن برنامه ساده ولی بسیار قوی و خط فرمانی cal، برنامه یا دستور jcal را ساخته بود که تنها ضعف آن – به جز اینکه بعضی‌ها چیزهای گرافیکی را ترجیح می‌دهند – ناتوانی‌اش بود در تبدیل تاریخ‌ها و البته عدم نمایش مناسبت‌ها. در همان دوره که شاید بشود به موج اول ورود لینوکس به ایران نام‌گذاری‌اش کرد، محیط کار کی دی ای به شکل کامل به تقویم فارسی مجهز شد اما مشکل اصلی این بود که برای استفاده از آن باید تقویم کل سیستم را فارسی می‌دیدید. بدون شک مشاهده اینکه در محیط کی.د.ی.ای. جلوی یک فایل نوشته شده باشد «ایجاد شده در ۸ شهریور ۱۳۸۵» برای کاربران ویندوزی مانند معجزه به نظر می‌رسید ولی این دقیقا چیزی نبود که ما لازم داشتیم.

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

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

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

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

محبوبترین زبانهای برنامه نویسی

کلی بحث هست که کدوم زبون برنامه نویسی محبوبیت بیشتری داره یا زنده تر از بقیه است. همچنین کلی بحث هست که مثلا آدم ها می گن زبان مورد علاقه من یعنی پرل مرده یا در حال مرگه.

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

نتیجه چیزی شبیه نمودار زیر شده:

خط آبی نشون دهنده کرولیشن است (نزدیک ۰.۸) و این یعنی هرچقدر یک زبان جامعه بزرگتری داره، پروژه‌های بیشتری هم داره (: پیش بینی عجیبنی نیست ولی همیشه دیدن اعداد و آمار، جذابه.

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

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

ما که بچه بودیم، یک زبان برای کودکان بود به اسم «لوگو». توی این زبون شما می‌تونستین با یکسری دستورات خیلی ساده ، یک لاک پشت رو کنترل کنید. مثلا بهش بگین بیست قدم بره جلو، ده درجه بچرخه به راست و یک مربع بکشه و این کار رو ۱۰۰ بار تکرار کنه تا یک شکل قشنگ به دست بیاد.

اما این روزها، علم پیشرفت کرده و زبان برنامه نویسی لوگو که قدیم‌ها بود هم تبدیل شده به چیز جذابی به اسم اسکرچ. سایتش رو می‌تونین از گوشه بالا، فارسی کنین و با چند حرکت ساده برنامه‌نویسی یک برنامه، بازی، انیمیشن و .. جذاب «بنویسین». اسکرچ درست شده تا به بچه‌های ۸ سال به بالا برنامه‌نویسی قرن ۲۱ رو نشون بده. ساختن یک بازی، پروژه یا انیمیشن با این برنامه، به بچه‌ها نشون می‌ده که ساختارها و بلوک‌های یک برنامه چطور باید کنار هم چیده بشن. این امر جدا از نشون داده مقدمات برنامه‌نویسی، به بچه‌ها یاد می‌ده که چطور یک مساله رو به بخش‌های کوچیکتری تجزیه کنن و چگونه با تفکر ریاضی و استدلالی، قدم به قدم برای رسیدن به هدف پیش برن.

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

نصب و استفاده از فرترن تحت لینوکس

برای نصب فرترن، مثل هر برنامه دیگه کافیه وارد مدیر بسته‌هاتون بشه (توی اوبونتو Add / Remove Software) و فرترن رو جستجو کنین، کنارش تیک بزنین و اوکی کنین (: به همین سادگی. من خط فرمان رو ترجیح می‌دم. فرترن یک پیاده سازی آزاد و گنو داره به اسم gfortran که از جدیدترین تغییرات این زبان هم پشتیبانی می‌کنه. برای نصبش کافیه بزنیم:

sudo aptitude install gfortran

و فرترن نصب شده (: یکبار با خودمون تکرار می‌کنیم که «لینوکس ساده ترین روند نصب نرم‌افزار رو داره» و می‌ریم سراغ نوشتن یک برنامه. برنامه «سلام دنیا» رو می‌نویسیم که ساده‌ترین برنامه دنیا است. بعد کمپایل و اجراش می‌کنیم:

در سال ۲۰۰۸، سی اصلی‌ترین زبان پروژه‌های بازمتن بود

زبان قدیمی و دوست داشتی C ثابت کرد که هنوز اصلی‌ترین زبان برنامه‌نویسی پروژه‌های بازمتن است. شرکت Black Duck که ۱۸۰۰۰۰ پروژه بازمتن روی ۴۰۰۰ سایت را زیر نظر دار، اعلام کرد که در سال ۲۰۰۸، ۴۷٪ پروژه‌های جدید از سی استفاده کرده‌اند. این شرکت اعلام کرده که در سال گذشته ۱۷۰۰۰ پروژه بازمتن تازه شروع به کار کرده‌اند و بعد از سی، جاوا با ۲۸٪ دومین زبان پر استفاده است.

در اسکریپت نویسی هم، ۲۰٪ پروژه‌ها از جاوااسکریپت استفاده کرده‌اند و رتبه بعدی با ۱۸٪ در دست پرل است. PHP فقط ۱۱٪ پروژه‌ها را در اختیار داشته و روبی، ۶٪ را. این اعداد واقعا جذابند. بخصوص برای من که مدت‌ها است به زبان پرل علاقمند هستم دیدن اینکه این زبان هنوز پر استفاده‌ترین زبان برنامه‌نویسی عمومی است، لذت بخش است (:

 به نقل از رجیستر

پادکست اول: چگونه می‌توانیم یک برنامه‌نویس خوب بشویم؟


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

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

 پادکست چگونه می‌توان یک برنامه‌نویس خوب شد (کیفیت متوسط؛ سه و نیم مگابایت)

 پادکست چگونه می‌توان یک برنامه‌نویس خوب شد (کیفیت خوب؛ هفت و نیم مگابایت)

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

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

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

 جلال بنایی : برنامه نویس جاوا و مسوول نصب اس ام اس‌ها

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

 لیلا: همکار من در تعریف جک و نقل قول

 برمک و ترانه که هر دو جاوا کار هستن و برنامه‌نویس حرفه‌ای

و البته

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

دستورالعمل تیپ، مو و لباس برای برنامه‌نویسان

در مطلب قبلی (آیا موفقیت زبان‌های برنامه‌نویسی با ریش و سبیل سازنده نسبت دارد؟) دیدیم که به نظر می‌رسد موفیت زبان‌های برنامه‌نویسی به میزان ریش و سبیل توسعه دهندگان آن بستگی داشته باشد. حالا در ادامه، می‌خواهم بخش دوم مطلب را بنویسم که ترجمه کاملا آزادی است از The Programmer Dress Code.


جان هال با نام مستعار «سگ دیوانه» یا Maddog» نفر اصلی سازمان بین المللی لینوکس است که کارش پیشبرد این هسته در سطح جهان است. هاها.. کار مهم دیگر این آدم نوشتن کتاب Linux for dummies (لینوکس برای احمق‌ها) است.


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


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


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


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


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

البته هنوز آدم‌هایی هستند که در رده «اوه خدای من! چه عینکی!» جای می‌گیرند. مثلا…


دوروتی دینینگ بدون شک یکی از آن عینک خوشگل‌های دهه ۷۰ است. متاسفانه این روزها پیدا کردن همچین عینکی عملا محال است. بلوز بانمک گل گلی و آن انگشتر خاص این تیپ را تکمیل کرده و به هر رهگذری ثابت می‌کند که این خانم یکی از حرفه‌ای‌های دنیای رمزنگاری است. این یکی از آدم‌های تاثیرگذار در امنیت ملی آمریکا است و نویسنده کلی کتاب در این مورد از جمله Information Warfare and Security.


آدا لولاس (Ada Lovelace) معمولا به عنوان اولین برنامه نویس جهان شناخته شده چون توضیح ماشین چارلز بابیج را نوشته و بعد برنامه‌ای نوشته برای محاسبه اعداد برنولی. این خانم اسم خودش را هم به زبان برنامه نویسی آدا داده تا در تاریخ برنامه‌نویسی ماندگار شود. قیافه‌اش عجیب نیست؟ اشتباه می‌کنید! این قیافه یکی از عجیب‌ترین قیافه‌هایی است که ممکن است یک خانم برنامه‌نویس داشته باشد!

البته عکس بالایی، عکس پرنسس لیا است که شباهت عجیبی به آدای واقعی دارد:


حالا که صحبت از داستان‌های تخیلی شد، سری بزنیم به تارزان و میمونش:


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


نمی‌شود به راحتی گفت که کجای لباس دان برکلین (Dan Bricklin) عجیب است اما بدون شک یک نکته‌ای را در خودش مخفی کرده. آهان! کشفش کردم! تی شرت زردی که زیر پیراهنش پوشیده! یک فوق ستاره. از آن‌هایی که یواشکی وارد یک باجه تلفن می‌شوند و در یک درخشش با لباس زرد و به شیوه سوپرمن از باجه بیرون می‌پرند تا با یک ماشین حساب قدیمی به دیگران کمک کنند. چرا ماشین حساب؟ خب این آمد نویسنده visiCalc است که اولین صفحه گسترده‌ای بود که در مقیاس گسترده به فروش رفت و چیزهایی مثل SpreadSheet یا Excel که ما استفاده می‌کنیم نوه‌های این برناه هستند. فراموش نکنیم که برنامه‌هایی مثل visiClac بودند که کامپیوتر را در مقیاس گسترده وارد دفاتر کار کردند و به امثال من اجازه دادند که از محل کارم وبلاگ بنویسم (:


بعله! جان پوستل (Jon Postel) که ویرایشگر اصلی RFC ها بوده. RFCها کامل‌ترین و مرجع‌ترین راهنماهای این روزهای پروتکل‌ها هستند و دقیقا همان نوشته‌هایی که اکثر استاندارهای دنیای اینترنت را تعیین کرده‌اند.

بدون شک کلی آدم دیگر هم در دنیای کامپیوتر هستند که ریش دارند یا بانمکند (: شاید در آینده به بقیه‌شان هم نگاه کردیم.