زندگی یک گیک

خاطرات مختصری از علایق یک گیک

زندگی یک گیک

خاطرات مختصری از علایق یک گیک

پیوندهای روزانه

۶ مطلب در بهمن ۱۳۹۱ ثبت شده است

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


  • geek

نسخه بندی معنایی v2.0.0-rc.1

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

در سیستم‌هایی با وابستگی بسیار زیاد، انتشار نسخه جدید کم کم تبدیل به یک کابوس می‌شود. اگر وابستگی شما به کتابخانه‌ها بسیار زیاد و پیچیده باشد، شما در معرض خطر قفل شدن انتشار نسخه جدید قرار می‌گیرید (عدم توانایی برای بروزرسانی یک کتابخانه بدون انتشار نسخه جدید کتابخانه‌های وابسته). اگر وابستگی شما به کتابخانه‌ها خیلی بی‌قاعده و کم باشد، شما ناگزیر توسط نسخه‌های بی‌قاعده درگیر می‌شوید. هنگامی که مشکل قفل شدن انتشار نسخه جدید و/یا انتشار نسخه‌های بی‌قاعده شما را از حرکت مناسب و خوب برای تکمیل پروژه‌تان بازمی‌دارد، در واقع شما در “جهنم وابستگی” قرار دارید.

به عنوان یک راه حل برای حل این مشکل، یک مجموعه ی ساده از قوانین و الزامات که چگونگی طراحی شماره های نسخه و افزایش آن را دستور میدهد را پیشنهاد می‌کنیم. برای کار کردن این سیستم، شما ابتدا نیاز به اعلام API عمومی دارید. این خود ممکن است شامل مستندات و یا اجرای کد باشد. علی رغم آن، مهم است که این API روشن و دقیق باشد. هنگامی که API عمومی خود را تعیین کردید، تغییرات برنامه شما بر روی نسخه API عمومی تاثیر خواهد داشت و آنرا افزایش خواهد داد. بر این اساس، این مدل نسخه‌بندی را در نظر بگیرید: X.Y.Z یعنی (Major.Minor.Patch). رفع حفره‌هایی که بر روی API عمومی تاثیر نمی‌گذارند، مقدار Patch را افزایش می‌دهند، تغییرات جدیدی که سازگار با نسخه قبلی است، مقدار Minor را افزایش می‌دهند و تغییرات جدیدی که کاملا بدیع هستند و به نحوی با تغییرات قبلی سازگار نیستند مقدار Major را افزایش می‌دهند.

تعریف‌های نسخه بندی معنایی (SemVer)

واژه‌های “باید”، “نباید”، “الزامی”، “بهتر است”، “توصیه می‌شود”، “می‌تواند” و… در این سند مورد استفاده است و توضیحات کامل آن در RFC2119 داده شده است.

  1. نرم‌افزارهایی که از نسخه بندی معنایی استفاده می‌کنند، باید یک API عمومی داشته باشند. این API می تواند در خود کد یا و یا به طور صریح در مستندات باشد که باید دقیق و جامع باشد.
  2. یک شماره نسخه صحیح باید به‌ شکل X.Y.Z باشد که در آن X،Y و Z اعداد صحیح غیر منفی هستند. X نسخه‌ی Major می‌باشد، Y نسخه‌ی Minor و Z نسخه‌ی Patch می‌باشد. هر عنصر باید یک به یک و بصورت عددی افزایش پیدا کند. به عنوان مثال:
    ۱٫۹٫۰ -> 1.10.0 -> 1.11.0
  3. هنگامی که به یک نسخه‌ی Major یک واحد اضافه می‌شود، نسخه‌ی Minor و Patch باید به حالت ۰ (صفر) تنظیم مجدد گردد. هنگامی که به شماره نسخه‌ی Minor یک واحد اضافه می‌شود، نسخه‌ی Patch‌ باید به حالت ۰ (صفر) تنظیم مجدد شود. به عنوان مثال:
    ۱٫۱٫۳ -> 2.0.0
    2.1.7 -> 2.2.0
  4. هنگامی که یک نسخه از یک کتابخانه منتشر می‌شود، محتوای کتابخانه مورد نظر نباید به هیچ وجه تغییری داشته باشد. هرگونه تغییر جدید باید در قالب یک نسخه جدید انتشار پیدا کند.
  5. نسخه‌ی Major صفر (۰٫Y.Z) برای توسعه‌ی اولیه است. هر چیزی ممکن است در هر زمان تغییر یابد. API عمومی را نباید پایدار در نظر گرفت.
  6. نسخه ۱٫۰٫۰ در حقیقت API عمومی را تعریف می‌کند. چگونگی تغییر و افزایش هر یک از نسخه‌ها بعد از انتشار این نسخه، وابسته به API عمومی و تغییرات آن می‌باشد.
  7. نسخه Patch یا (x.y.Z | x > 0) فقط در صورتی باید افزایش پیدا کند که تغییرات ایجاد شده در حد برطرف کردن حفره‌های نرم‌افزار باشد. برطرف کردن حفره‌های نرم‌افزار شامل اصلاح رفتارهای اشتباه در نرم‌افزار می‌باشد.
  8. نسخه Minor یا (x.Y.z | x > 0) فقط در صورتی افزایش پیدا خواهد کرد که تغییرات جدید و سازگار با نسخه قبلی ایجاد شود. همچنین این نسخه باید افزایش پیدا کند اگر بخشی از فعالیت‌ها و یا رفتارهای قبلی نرم‌افزار به عنوان فعالیت منقرض شده اعلام شود. همچنین این نسخه می‌تواند افزایش پیدا کند اگر تغییرات مهم و حیاتی از طریق کد خصوصی ایجاد و اعمال گردد. تغییرات این نسخه می‌تواند شامل تغییرات نسخه Patch هم باشد. توجه به این نکته ضروری است که در صورت افزایش نسخه Minor، نسخه Patch باید به ۰ (صفر) تغییر پیدا کند.
  9. نسخه Major یا (X.y.z | X > 0) در صورتی افزایش پیدا خواهد کرد که تغییرات جدید و ناهمخوان با نسخه فعلی در نرم‌افزار اعمال شود. تغییرات در این نسخه می‌تواند شامل تغییراتی در سطح نسخه Minor و Patch نیز باشد. باید به این نکته توجه شود که در صورت افزایش نسخه Major، نسخه‌های Minor و Patch باید به ۰ (صفر) تغییر پیدا کنند.
  10. یک نسخه قبل از انتشار می‌تواند توسط یک خط‌تیره (dash)، بعد از نسخه Patch (یعنی در انتهای نسخه) که انواع با نقطه (dot) از هم جدا می‌شوند، نشان داده شود. نشان‌گر نسخه قبل از انتشار باید شامل حروف، اعداد و خط‌تیره باشد [۰-۹A-Za-z-]. باید به این نکته دفت داشت که نسخه‌های قبل از انتشار خود به تنهایی یک انتشار به حساب می‌آیند اما اولویت و اهمیت نسخه‌های عادی را ندارد. برای مثال: ۱٫۰٫۰-alpha
    1.0.0-alpha.1
    1.0.0-0.3.7
    1.0.0-x.7.z.92
  11. یک نسخه Build ‌‌می‌تواند توسط یک علامت مثبت (+)، بعد از نسخه Patch یا نسخه قبل از انتشار (یعنی در انتهای نسخه) که انواع آن با نقطه (dot) از هم جدا می‌شوند، نشان داده شود. نشان‌گر نسخه Build باید شامل حروف، اعداد و خط‌تیره باشد [۰-۹A-Za-z-]. باید به این نکته دقت داشت که نسخه‌های Build خود به تنهایی یک انتشار به حساب می‌آیند و اولویت و اهمیت بیشتری نسبت به نسخه‌های عادی دارند. برای مثال: ۱٫۰٫۰+build.1
    1.3.7+build.11.e0f985a
  12. اولیت‌بندی نسخه‌ها باید توسط جداسازی بخش‌های مختلف یک نسخه به اجزای تشکیل دهنده آن یعنی Minor، Major، Patch، نسخه قبل از انتشار و نسخه Build و ترتیب اولویت بندی آن‌ها صورت گیرد. نسخه‌های Minor، Major و Patch باید بصورت عددی مقایسه شوند. مقایسه نسخه‌های قبل از انتشار و نسخه Build باید توسط بخش‌های مختلف که توسط جداکننده‌ها (نقطه‌های جداکننده) تفکیک شده است، به این شکل سنجیده شود:
    بخش‌هایی که فقط حاوی عدد هستند، بصورت عددی مقایسه می‌شوند و بخش‌هایی که حاری حروف و یا خط‌تیره هستند بصورت الفبایی مقایسه خواهند شد. بخش‌های عددی همواره اولویت پایین‌تری نسبت به بخش‌های غیر عددی دارند. برای مثال:
    ۱٫۰٫۰-alpha < 1.0.0-alpha.1 < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0-rc.1+build.1 < 1.0.0 < 1.0.0+0.3.7 < 1.3.7+build < 1.3.7+build.2.b8f12d7 < 1.3.7+build.11.e0f985a

چرا استفاده از نسخه بندی معنایی؟

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

یک مثال ساده دقیقا می‌تواند بیانگر این موضوع باشد. یک نرم‌افزار به نام “Firetruck” را در نظر بگیرید. این نرم‌افزار نیاز به یک کتابخانه به نام “Ladder” دارد که از نسخه بندی معنایی پیروی می‌کند. وقتی Firetruck ایجاد می‌شود، Ladder در نسخه‌ی ۳٫۱٫۰ است. از آنجایی که Firetruck خواصی که در ابتدا در ۳٫۱٫۰ معرفی شد را استفاده می‌کند، می‌توانید با آرامش خاطر از نسخه‌های بزرگتر از ۳٫۱٫۰ و کمتر از ۴٫۰٫۰ استفاده کنید. حال وقتی Ladder نسخه‌ی ۳٫۱٫۱ و ۳٫۲٫۰ در دسترس باشد، شما می توانید به راحتی آن‌ها را منتشر کنید و بدانید با نرم‌افزارهایی که با آن وابسته هستند سازگاری کامل دارد.

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

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

پرسش و پاسخ (FAQ)

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

بهترین و آسان‌ترین راه برای ایجاد و تعریف نسخه اولیه نرم‌افزارتان این است که با نسخه ۰٫۱٫۰ شروع کنید و سپس در هر گسترش با توجه به قوانین تعریف شده اقدام به افزایش نسخه کنید.

چه زمانی نسخه ۱٫۰٫۰ باید منتشر شود؟

اگر نرم‌افزار شما در مرحله استفاده کاربردی است و بصورت محصول ارائه شده است، احتمالا در نسخه ۱٫۰٫۰ قرار دارید. اگر یک API بی‌عیب و نقص دارید که مشتریانی از آن استفاده می‌کنند و یا به آن وابستگی دارند، شما در نسخه ۱٫۰٫۰ قرار دارید. اگر نسبت به سازگاری نرم‌افزار خود با بسترهای قدیمی حساسیت زیادی دارید، پس احتمالا در وضعیت نسخه ۱٫۰٫۰ قرار دارید.

آیا این گردش‌های سریع و توسعه سریع نرم‌افزار را نکوهش نمی‌کند؟

به این نکته توجه کنید که نسخه Major صفر (۰) دقیقا به توسعه سریع اشاره دارد و با توسعه سریع همراه است. اگر API شما دائما تغییر می‌کند، یا در حال کار بر روی نسخه ۰٫x.x هستید یا اینکه در حال کار بر روی نسخه بعدی نرم‌افزار، در یک شاخه (Branch) توسعه دیگر هستید.

اگر حتی برای کوچک‌ترین تغییر نامطابق با تغییرات گذشته، مقدار نسخه Major را افزایش دهیم، آیا خیلی سریع و ناشیانه به نسخه ۴۲٫۰٫۰ نمی‌رسیم؟

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

مستندسازی کل API عمومی کار بسیار زیاد و سختی است!

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

چه عکس‌العملی باید صورت گیرد اگر یک تغییر ناسازگار ارائه شده باشد اما بجای نسخه Major، نسخه Minor افزایش پیدا کرده باشد؟

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

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

اگر بروز کردن وابستگی‌های نرم‌افزارتان بر روی API عمومی تاثیر گذار نباشد، هنوز می‌توانید بدون تغییر به کارتان ادامه دهید. اینکه بعد از بروز رسانی وابستگی‌های پروژتان، باید چه نسخه‌ای منتشر شود دقیقا مرتبط به این است که شما به چه دلیل وابستگی‌هایتان را بروز کرده‌اید. بروزرسانی برای ایجاد یک امکان جدید در نرم‌افزار انجام شده یا مشکل/حفره‌ای که از قبل وجود داشته را با این کار حل کرده‌اید؟

چگونه فعالیت‌ها/قابلیت‌هایی که در نرم‌افزار منقرض شده‌اند را مدیریت کنم؟

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

  1. بروز رسانی مستندات پروژه به منظور مطلع‌سازی افراد از تغییر ایجاد شده
  2. انتشار یک نسخه Minor به منظور اعلام بخش‌های منقرض شده

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

  • geek

ا توجه به آمارهای سال پیش و تخمین هایی که برای سال جدید ۲۰۱۳ زده شده رشته برنامه نویسی رایانه ای در رتبه قابل قبولی از لحاظ کسب و کار و درآمد زایی قرار گرفته است. که این موقعیت برای علاقه مندان این حرفه می تواند جایگاه بسیار خوبی را رقم بزند. اما اگر بدون اطلاعات و شناخت کافی از رشته ی خود تصمیم به درآمد زایی انبوه از این راه بگیرید مطمئناً رسیدن به موفقیت سخت خواهد بود. به همین دلیل برای شروع هرکسب و کاری قوانینی وجود دارد که باید آنها را رعایت کرد و رعایت این قوانین می تواند کمک بسزایی در مسیر موفقیت به ما کند.

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

بلافاصله پس از یادگیری برنامه نویسی سراغ پروژه های واقعی نروید!

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

وبلاگ بنویسید

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

همیشه در حال یادگیری باشید

در سایت های برنامه نویسی مثل StackOverflow.com عضو شوید و در سئوال پرسیدن و حتی پاسخ دادن به سئوال ها فعال باشید. سعی کنید هر روز زبان انگیلیسی خود را تقویت کنید. کتاب های زبان اصلی مربوط به زبان برنامه نویسی مورد علاقه خود را مطالعه کنید و مشترک فید وبلاگ‌ها و سایت‌های مربوط به برنامه نویسی شوید. همیشه مطالعه کنید، حتی زمانی که حرفه‌ای شدید.

پروژه رایگان انجام دهید

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

در سایت‌های همکاری پروژه‌‌های برنامه نویسی عضو شوید

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

محصول بسازید

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

یک وب سایت راه اندازی کنید

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

ایده‌ای نو ارائه دهید

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

اگر شما هم گزینه هایی برای کسب و کار و درآمد زایی در این زمینه سراغ دارید می توانید آنرا در قسمت نظرات با ما به اشتراک بگذارید.

  • geek

سلام . ۲۰۱۳ میلادی مبارک. امیدوارم سالی پر از مهر و برکت و صلح و آرامش داشته باشید. وقتی که این پست رو داشتم آماده می کردم سال ۲۰۱۲ میلادی به پایان رسیده بود و جاش رو به۲۰۱۳ داده بود. با اینکه ۲۰۱۲ با همه شیرینی و تلخی هاش تموم شد ولی بوی عطرش هنوز مونده. پس “۱۱ نکته برای توسعه دهندگان در سال ۲۰۱۲” ارزش خوندنش رو داره. در اینجا به مواردی اشاره شده که شاید اکثر توسعه دهنده گان از آنها استفاده می کنند و آنها را مورد قبول می دانند. شما هم با تبعیت از این موارد می توانید حرفه ی برنامه نویسی خود رو اندکی به جلو رانده و تحولی در اون ایجاد کنید.

۱- عضویت در توییتر

اگر تا به حال در وبسایت توییتر عضو نشده اید و از یک طرف نیز یک توسعه دهنده نرم افزار هستید ، حتماً باید یک اکانت در توییتر برای خود داشته باشید. من باور دارم توییتر یکی از مهم ترین ابزارهای مهم برای توسعه دهندگان نرم افزار است. چرا؟

  1. در توییتر می تونید با دنبال کردن توسعه دهندگان یا تیم های برنامه نویسی دیگر از جدیدترین اخبار برنامه نویسی مطلع شوید.
  2. #تگ یا Hashtag برای دسته بندی کردن توییت‌ها به کار می‌رود، در مواردی، بسیاری کاربرها در مورد موضوعی خاص توییت ارسال می‌کنند با اضافه کردن تگ به موضوع توییت ارسالی پیدا کردن و یافتن توییت‌هایی در آن مورد به راحتی قابل دسترس می‌باشد، تگ‌ها یکی از مهم‌ترین ابزارهای توییتر هستند که توسط کاربران مورد استفاده قرار می‌گیرد استفاده درست از تگ‌ها یکی از قوانین مهم توییتر به شمار می‌رود و توییت‌های نامرتبط با تگ ارسالی اسپم شمرده می‌شود. (نقل از ویکیپدیا).
    این ویژگی برای نظارت بر موضوعات خیلی کار آمد و مهم است. به عنوان مثال استفاده از آن برای دنیال کردن اخبار مربوط به موضوعات #Win7 و #Silverlight و #Wpf و …
  3. با جستجوی سوالات خود همراه #تگ یا Hashtag در توییتر می توانید مانند انجمن های گفتگو پاسخ سوالتان را بیابید.
  4. در ارتباط بودن با دیگر توسعه دهندگان و زیر نظر گرفتن فعالیت آنان

۲- مطالعه ی روزانه وبسایت StackOverflow

وبسایت StackOverflow  انجمنی با شمار زیادی عضو است که شما می توانید سوالات برنامه نویسی خود را در این وبسایت مطرح کنید. حتی اگر عضو این وبسایت هم نباشید! StackOverflow فقط در حوزه پرسش و پاسخ های برنامه نویسی فعالیت دارد که به شما پیشنهاد می کنم حداقل در روز ۲۰ دقیقه از وقت خود را به گشت و گذار و مطالعه پرسش و پاسخ های کاربران در این وبسایت نصبت دهید .

۳- راه اندازی وبلاگ

من معتقدم هر توسعه دهنده ای باید یک وبلاگ مختص به خودش را داشته باشه. چرا؟
راه اندازی وبلاگ می تواند اهداف و فعالیت های شما را برای دیگر توسعه دهندگان (همانند دنبال کردن شما توسط دیگر افراد در توییتر) روشن سازد.
باعث آشنایی بیشتر طرفداران و در ارتباط بودن آنها با شما می شود.
بازار کار حرفه ای را برای شما میسر می سازد.

۴- احراز وجود خارجی

خارج شدن از پوسته مجازی خود و شروع به گپ و گفت با توسعه دهنده های دیگر در گروه های کاربری محلی/ آشنایی با ups ها/ حضور در کنفرانس ها. اکثر افراد در اوایل این گفتگوها شاید خجالتی باشند. اما به محض گفت و گو با توسعه دهنده ی همتای خود ، دیگر نمی توانند جلوی صحبت کردن خودشان را بگیرند.

۵- داشتن یک گوشی هوشمند لازمه توسعه دهندگان

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

۶- گوشی های هوشمند را در آغوش بگیرید

آیا شما فکر می کنید “گوشی های همراه” آینده ای ندارند؟ خیر. با توجه به جدیدالورود بودن گوشی های هوشمند (Smartphone) و آماری که امروزه این گجت ها ثبت کرده اند ، آینده ای درخشان در انتظار این نسل از همراهان خواهد بود. پس باید از الان به فکر این گجت ها بود. برای سرمایه گذاری روی گوشی های هوشمند باید اطلاعاتی در رابطه با چگونگی توسعه برنامه های کاربردی بر رویآیفون ، ویندوز فون و آندروید بدست آورد.
در این مورد معتقدم هر توسعه دهنده ای در زندگی حرفه ای برنامه نویسی خود باید تفکری برای توسعه نرم افزارهای تحت پلتفرم گوشی های هوشمند داشته باشد. این یکی از مواردی است که یک توسعه دهنده ی مدرن نباید از آن چشم پوشی کند.

۷- یادگیری حداقل یک الگوی طراحی

من قصد ندارم به شما بگویم تنها باید یک الگو را برای طراحی برنامه های خود انتخاب کنید. اما شما حداقل به یک الگو برای اینکار نیازمند هستید. از آنجاکه یک توسعه دهنده WPf/WCF/Silverlight هستم الگوی MVVM را برای خودم ترجیح می دهم. برای انتخاب الگوی خود پیشنهاد می کنم کتاب “کتاب الکترونیکی #Design Patterns in C” را مطالعه کنید.

۸- تعیین اهدافی که در سال جدید انجام خواهید داد

ایجاد لیست کوتاهی از اهدافی که در سال جاری دنبال آنها هستید تا انجامشان دهید. چالش های شما برای رسیدن به هدف هایتان کافی نخواهد بود و باید در این مسیر یه ایجاد یادآوریهای دوره ای (استاندارد سه ماهه) بوسیله ی سرویس های جیمیل/اتولوک برای ارزیابی پیشرفت های خود اقدام کنید.

۹- یادگیری یک زبان برنامه نویسی متفاوت

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

۱۰- تقویت اعتماد به نفس

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

۱۱- خواندن کتب/مجلات/تارنماهای برنامه نویسی

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

  • geek

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

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

19 600x600 اینترنت چطور کار می کند؟

 

18 اینترنت چطور کار می کند؟

دو عکس بالا نشان دهنده عظمت اینترنت هستند. عکس اول ابعاد کامل نقشه اینترنت است و عکس دوم بخشی از این نقشه را بزرگنمایی کرده. واقعا شبکه عظیمی است!

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

این اساسا همان روشی است که اینترنت عمل می کند. شما به کامپیوتر دستور می دهید که به یک مرجع اینترنتی، مثلا d4fteam.com متصل شود. این آدرس در واقع یک نسخه از یک آی پی آدرس است که به صورت d4fteam.com تبدیل شده تا انسان بتواند آن را بخواند و به یاد بسپارد. در واقع شما با وارد کردن این آدرس اینترنتی، یک آی پی آدرس را فراخوانی می کنید که کامپیوتر آن را برای شما به شکل d4fteam.com نشان می دهد.

206 600x412 اینترنت چطور کار می کند؟

به d4fteam.com یک URL یا یابنده جهانی مرجع ( یا همان Universal Resource Locator ) می گویند که چیزی به نام DNS یا سرور نام دامنه ( یا همان Domain Name Server ) با بررسی این URL آی پی آدرس مورد نظر را پیدا می کند. درست مثل این می ماند که شما یک دفترچه تلفن واقعا عظیم داشته باشید. اگر خود را همان DNS فرض کنید، وقتی می خواهید شماره تلفن مربوط به فردی را در آن دفترچه تلفن پیدا کنید، نام آن فرد همان URL خواهد بود و شماره تلفنی که شما پیدا می کنید همان آی پی آدرس صحیح می باشد.

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

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

226 600x337 اینترنت چطور کار می کند؟

اکنون باید بدانید که هر کدام از این بسته ها از یک مسیر مشترک به مقصد نمی رسند. این بسته های اطلاعاتی در ابتدا به وسیله ای به نام روتر فرستاده می شوند و سپس آن روتر، بسته های اطلاعاتی را به نزدیکترین روتر بعدی که به مقصد نزدیک تر است ارسال می کند. مقصد هم بر اساس IP تعیین می شود که موقعیت نهایی را مشخص می کند ( درست مثل شماره تلفن ).

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

نتیجه:

214 600x423 اینترنت چطور کار می کند؟

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




  • geek

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

لینوکس چیست؟

لینوکس درست مثل ویندوز و OSX یک سیستم عامل است. در واقع همان پل ارتباطی شما با کامپیوتر است که به شما اجازه می دهد به وسیله آن، از نرم افزار های مختلف استفاده کنید. به این خاطر که لینوکس اغلب با یک سری ابزار استاندارد ( ابزار GNU ) عرضه می شود که بسیار شبیه به ابزاری هستند که در سیستم های Unix یافت می شوند، به آن GNU/Linux هم گفته می شود. اگر تا به حال از سیستم یونیکس استفاده کرده اید، لینوکس نباید برایتان خیلی پیچیده باشد.

146 600x375 لینوکس چیست،آیا ارزش یکبار امتحان کردن را دارد؟

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

از آنجایی که هر کسی از یک سیستم خوب تعریف خاص خود را دارد، توزیع های فراوانی برای لینوکس وجود دارد که هر کدام ویژگی های مخصوص به خود را دارند. توزیع های مثل Damn Small Linux برای افراد معمولی وجود دارند و توزیع هایی هم مثل Sabayon وجود دارند که مخصوص افراد حرفه ای هستند. برای کسانی که عاشق استفاده از توییک ها هستند هم توزیع هایی مثل Gentoo ساخته شده.

توزیع هایی هم مثل SUSE Linux Enterprise Desktop یا SLED هستند که هدفشان استفاده در شرکت ها همراه با عقد قرارداد پشتیبانی است. از سوی دیگر توزیع Red Hat یک توزیع مناسب برای سرور های شرکتی است. همچنین توزیع های CentOS و OpenSUSE هم درست مثل Red Hat و SLED هستند با این تفاوت که آن قرارداد پشتیبانی که اکثر محیط های اداری به آن احتیاج دارند را ارائه نمی دهند.

توزیع Fedora نیز نسخه دسکتاپ Red Hat می باشد که کاربر های خانگی را هدف قرار داده. توزیع Debianبیشتر به خاطر پایداری اش شناخته می شود که این ویژگی، این توزیع را برای سرورها به گزینه مناسبی تبدیل کرده. اما از آنجایی که این توزیع معمولا شامل نرم افزار های تا حدی قدیمی می شود، بسیاری از کاربران دسکتاپ توزیع Ubuntu را انتخاب می کنند تا همیشه سیستمی به روز داشته باشند. البته توزیع های بسیار زیادی وجود دارند اما آنچه ذکر شد، متداول ترین و معروف ترین توزیعات لینوکس بودند.

152 600x348 لینوکس چیست،آیا ارزش یکبار امتحان کردن را دارد؟

چرا باید از لینوکس استفاده کنیم؟

دلایل زیادی وجود دارد برای اینکه شما هم لینوکس را روی کامپیوترخود امتحان کنید. در ادامه به مهمترین دلایل این موضوع اشاره می کنیم:

کاملا رایگان است: شما برای اینکه از لینوکس استفاده کنید، نیازی به پرداخت پول ندارید و می توانید این کار را کاملا رایگان انجام دهید. البته برای برخی از توزیع ها مثل Red Hat به خاطر قرارداد پشتیبانی باید کمی هزینه کنید. اما اگر حاضر نیستید به خاطر این قرارداد پولی پرداخت کنید، می توانید از توزیع هایی مثل CentOS استفاده کنید که این قرارداد را ارائه نمی کنند.

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

کاملا امن و مطمئن: لینوکس درست مثل یونیکس یک سیستم چند کاربره است. مجوز هایی برای تامین امنیت این سیستم طراحی شده است. همه کاربران نمی توانند به عنوان مدیر سیستم وارد آن شوند، بنابراین هر عملی که سیستم را تحت تاثیر قرار دهد باید اجازه انجام شدن را داشته باشد.

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

161 600x219 لینوکس چیست،آیا ارزش یکبار امتحان کردن را دارد؟

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

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

چطور لینوکس را نصب کنیم؟

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

علامت پنگوئن در کنار لینوکس چیست؟

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

نتیجه:

172 600x337 لینوکس چیست،آیا ارزش یکبار امتحان کردن را دارد؟

امید است سوالات شما در مورد سیستم عامل لینوکس در این مقاله پاسخ داده شده باشد. اگر همچنان سوالاتی در این مورد در ذهن شما باقی مانده یا نظر خاصی در رابطه با لینوکس دارید می توانید آن را در قسمت نظرات با ما در میان بگذارید.



  • geek