برای تغییر تاریخ تولد ابتدا از انتهای سایت زبان را انگلیسی کرده ، تاریخ تولد را درست کنید سپس دوباره به فارسی برگردانید.

Welcome to انجمن تیم امنیتی سایبر اسپیریت

برای استفاده از تمامی امکانات سایت لطفا ابتدا ثبت نام کنید.

SeniorSpirit

مدیر کل
  • تعداد ارسال ها

    71
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    2

اعتبار در سایت

23 Excellent

3 دنبال کننده

درباره SeniorSpirit

آخرین بازدید کنندگان نمایه

205 بازدید کننده نمایه
  1. dotProject /includes/config.php Drupal /sites/default/settings.php FAQMasterFlex /faq_config.php Gallery /config.php Geeklog /db-config.php Joomla /configuration.php Magento /app/etc/local.xml
  2. . 4Images Gallery ln -s /home//public_html/config.php . B2 Evolution ln -s /home//public_html/conf/_basic_config.php . Boonex Dolphin ln -s /home//public_html/inc/header.inc.php . Coppermine Photo Gallery ln -s /home//public_html/include/config.inc.php
  3. درود همونطور که می دونید برای سیملینک زدن Symlink در سرور هکینگ Server Hacking و خوندن فایل کانفیگ Config File باید آدرس و مسیر فایل کانفیگ Cms های مختلف رو بدونید که بنده در اینجا قرار دادم اما اگر از دوستان شخصی باشه باشه که ندونه دستور سیملینک و آدرس دهی برای سیملینک در سرور هکینگ چطور آدرس دهی میشه بنده در این تاپیک سعی می کنم آدرسی که برای خوندن فایلهای کانفیگ و همچنین دستور مربوطه رو برای سهولت در سرور هکینگ قرار بدم . از دوستان خواهشمندیم اسپم ندین و اگر براتون سوالی در خصوص سیملینک و سرور هکینگ پیش آمد فقط در این بخش مطرح بفرمایید تا بنده پاسخگو باشم . موفق باشین
  4. دانش و فناوري كامپيوتر، امروزه به يكي از پيچيدهترين و حساسترين مرزهاي گسترهي دانش بشر تبديل شده است و شايد بتوان گفت هر جامعهاي در اين زمينه پيشرو باشد، ميتواند زمينهي گسترش مرزهاي دانش را در ساير علوم فراهم سازد و هر جامعهاي از اين بخش غافل شود، پيشروي كلان در ساير علوم نيز برايش دشوار خواهد شد. بنابراين، يادگيري علوم اين حوزه، در كنار ساير علوم ا ، ز ملزومات پيشرفت محسوب ميشود و هر كس از اين امر غافل شود، صرف نظر از رشتهاي كه به آن علاقه دارد، امكان پيشرفت خود را محدود كرده است . اكنون كه به ياري خداوند د متعال نگارش اين كتاب به پايان رسيده است، بر خود لازم مي انم از زحمات كليهي عزيزاني كه مرا در طي نگارش كتاب ياري كردند، از جمله همسرم، كه كليهي زحمات صفحه بندي بر عهدهي ايشان بود، جناب آقاي فرهاد مقيمي، كه در طراحي جلد و گرافيك بخشهاي مختلف كتاب زحمت زيادي كشيدند و ساير دوستان كه با نظرات خود چراغ راه بودند، تشكر كنم. همچنين جا دارد تشكر ويژهاي از كليه ي دوستان عزيز در مركز ملي پرورش استعدادهاي درخشان و دانش پژوهان جوان ر دكه راه نشر اين كتاب زحمت زيادي كشيدند، بنمايم. اميدوارم پايان اين كار، آغاز راهي براي استعدادهاي كشور و اميدهاي آيندهي اين مرزبوم باشد. سخني با دانش آموز كتابي كه پيش رو داريد از ده فصل تشكيل شده است. هر فصل حاوي مطالب مختلفي است كه در فهرست مطالب ميتوانيد آنها را بهسرعت بيابيد. در كتاب از برخي كادرها استفاده شده كه مهمترين آنها «توجه!» است كه معمولاً توجه شما را به نكتهاي مهم در مورد مطلب مورد بحث جلب ميكند. كادرهاي «لوح» براي مشخص نمودن آدرس يك فايل بر روي لوح فشرده همراه كتاب است و «وب» براي مشخص كردن آدرس يك سايت براي دانلود يك فايل و يا خواندن و دنبال كردن يك مبحث مربوط به درس. كادر «سؤال» كه كمتر آن را در طول كتاب ميبينيد، براي مطرح كردن سؤالاتي است كه به نظر نگارنده، ذهن خواننده بايد به سمت آن معطوف شود. كليهي شكلها و كدها داراي شمارهاي هستند كه با شمارهي فصل شروع ميشود، مثلاً كد 5-3 يعني كد سوم از فصل پنجم و يا شكل 7-2 يعني شكل دوم از فصل هفتم. كليهي كدهاي نوشته شده در كتاب در لوح فشردهي همراه كتاب موجود است. در اولين كد، در بخش «لوح» آدرس آن داده شده است، براي بقيهي كدها نيز آدرسي مشابه وجود دارد كه براي پرهيز از اطناب، در كنار ساير كدها درج نشده است. توصيه ميشود برنامههاي نوشته شده در متن درسي كتاب را خوب خوانده و درك كنيد، سپس به ايجاد تغيير در بخشهاي مختلف آن اقدام كنيد و نترسيد! زيرا همواره يك كپي از برنامهي اصلي در لوح فشردهي كتاب در دسترس شماست! پس در ايجاد تغييرات و رفع اشكالات برنامههاي جديد ايجاد شده شجاع و كوشا باشيد. در برخي فصول، بخشهايي با علامت (*) مشخص شده است كه مفهوم اختياري بودن دارد، يعني دبير درس مختار است اين بخشها را درس بدهد يا خير و اين تصميم وابسته به ارزيابي وي از كلاس است. اين موضوع در مورد فصل 10 نيز صدق ميكند (اين فصل كلاً ستاره دار است). براي هر فصل تماريني در سطوح مختلف در نظر گرفته شده كه در كتاب دبير موجود است و به صلاحديد وي به دانشآموزان به عنوان تمرين يا پروژه ابلاغ خواهد شد. اميد است پس از اتمام اين كتاب، توانايي شما در حل مسايل كامپيوتري افزايش يابد و بتوانيد در برخورد با آنها، يك روال منطقي براي رسيدن به راه حل را طي كنيد. C-programming-tutorial-in-plain-language.pdf
  5. پرل چیست؟ پرل یک زبان برنامه نویسی سطح بالا و همه منظوره میباشد که توسط لری وال نوشته شده است. در هر جایی که بتوان زبان های برنامه نویسی دیگری را بکار برد از پرل نیز میتوان استفاده کرد. پرل سر نام کلمات زیر است: perl: Practical Extraction and Report Language پرل به طور غالب متاثر از زبان برنامه نویسی قدرتمند C میباشد و کمتر از آن متاثر از sed,awk و شل یونیکس میباشد. پرل ایده آل برای کار با فایلهای متنی(ویرایش . تنظیم . مدیریت) و تنظیم و گزارشگیری از وظایف و همچنین کار های شبکه ای و کار با HTML و نمایش صفحات وب میباشد. البته فراموش نکنید که در موارد دیگری مثل system management tasks, database access , Graphical Programming , AI نیز کاربرد دارد. آیا یادگیری پرل سخت است؟ خیر.پرل زبانی آسان برای شروع به یادگیری برنامه نویسی است و اگر شما سابقه برنامه نویسی با C یا sed , awk و یا حتی سابقه کار با BASIC را دارید نیمی از راه را رفته اید. یادگیری پرل مانند اقیانوسی است که عمق کمی دارد که برای یادگیری کار را راحت میکند اما اگر بخواهید یک برنامه واقعی کارا با پرل بنویسید باید کل این اقیانوس را سفر کرده باشید و این مستلزم سالها تلاش فراوان است. چیزی که یادگیری پرل را راحت میکند سابقه کار با سیستم عامل یونیکس است و همچنین تجربه کار با یک زبان برنامه نویسی دیگر . توانایی فهم قوانین دستورات و همچنین توانایی خواندن کد دیگران است. پرل زبانی مستقل از سکو میباشد. بدین معنا که شما میتوانید با اندکی تغییر در ساختار برنامه خود آنها را در سکوهای مختلف اجرا کنید. پرل هم اکنون در سکوهای: یونیکس (لینوکس . سولاریس . Free BSD و ...) . مکینتاش و همچنین ویندوز اجرا میشود. نکته کوچکی که میتوان به آن اشاره کرد این است که نام این زبان برنامه نویسی perl است و همچنین نام مفسر این زبان نیز perl است و به عنوان مثال مانند زبان C که کامپایلر های مختلفی دارد نمیباشد پس این دو را اشتباه نگیرید. چرا برای برنامه نویسی از پرل استفاده میکنیم؟ چرا C نه؟ اولین دلیل این است که از سی خوشمان نمی آید!!! سی نسبت به پرل خیلی دست و پاگیرتر است و حجم کدنویسی آن بیشتر از پرل است. همیشه بیشتر از یک راه برای انجام کاری در پرل است! همیشه منابع آنلاین بزرگ و آماده ای وجود دارد که بتوان با استفاده از راهنمایی آنها کار را پیش برد. همیشه شما کدی برای حل مشکلتان در اینترنت پیدا خواهید کرد. پس چرا باید دوباره چرخ را اختراع کرد؟؟؟!!!! پرل زبانی مفسر دار است و برعکس زبانهای کامپایلر دار وقتی برای کامپایل کردن اون تلف نمیکنید. پرل به معنای واقعی زبانی مستقل از سکو است و برای این که آن را در سکوهای مختلف مورد استفاده قرار دهیم دچار دردسر نمیشویم ولی در سی شما کامپایلر های مختلفی دارید و بازهم باید اندکی تغییرات در ساختار برنامه بدهید. از آنجاییکه پرل نسبت به سی دسترسی مستقیم به حافظه ندارد. بنابراین خطاهای buffer overflow کمتری شاهد هستیم. پرل Open Source است اما C نه. و غیره... این مطلب بیشتر نظرات شخصی خود من هست و اندکی از faq خود پرل استفاده شده است. پس اگر نقصی هست که حتما اینطور است خودتون ببخشید و گوشزد کنید. برای اینکه اطلاعات براستی بیشتر و صحیحتری پیدا کنید پیشنهاد میکنم که FAQ پرل را بخوانید. برا خواندن این لیست به سایت زیر مراجعه کنید. www.perlmonks.com این سایت براستی بهترن سایت در ضمینه پرل است در آن همه چیز پیدا میشود
  6. جعل درخواست بین سایتی (CSRF) اگرچه این مساله نوع خاصی از حمله به حساب نمی آید و بیشتر شبیه به تکنیکی برای گسترش یک کرم شبکه اجتماعی پیچیده است، ولی حملات جعل درخواست بین سایتی، از اعتمادی که یک سایت شبکه اجتماعی به کاربر خود و مرورگر وی دارد سوء استفاده میکند. بنابراین تا زمانی که برنامه شبکه اجتماعی، سرآیند (هدر) فرد مراجعه کننده را بررسی نمیکند، یک فرد مهاجم میتواند به سادگی یک تصویر را در جریان وقایع یک کاربر به اشتراک بگذارد که کاربران دیگر با کلیک بر روی آن، دچار یک حمله شده و یا باعث انتشار آن حمله گردند. به عنوان مثالی از جعل درخواست بین سایتی فرض کنید که کاربر شماره یک، برای یک سایت بانکی کاربری شناخته شده و معتبر است. کاربر شماره دو که فردی خرابکار است، یک تصویر را بر روی سایت شبکه اجتماعی ارسال میکند که آدرس پشت آن، به یک فعالیت کاربر شماره یک در آن سایت بانکی اشاره میکند. اگر وب سایت بانک مورد نظر اطلاعات تایید هویت کاربر شماره یک را در یک کوکی ذخیره کرده باشد و اگر آن کوکی هنوز منقضی نشده باشد، آنگاه تلاش مرورگر کاربر شماره یک برای باز کردن تصویر ارسال شده، باعث میشود که اطلاعات وی از کوکی مذکور بازیابی شده و بدون تایید کاربر شماره یک، یک فعالیت بانکی رخ دهد. در حقیقت در این مثال، کاربر شماره دو درخواستی را به صورت جعلی به جای کاربر شماره یک به وب سایت بانک مذکور ارسال کرده است. به طور خلاصه XSRF, CSRF يا همان ( (Cross Site Reference Forgery به اين معنا است كه شخص مهاجم از اعتماد سايت*ها نسبت به كاربرانشان براي حملات خود سوءاستفاده مي*كند و اعمالي را توسط شما و با سطح دسترسي شما بر روي سايت انجام دهند و اطلاعات مورد نظر خود (محتويات كوكي يا سشن و امثال آن) را استخراج كرده و به هر سايتي كه تمايل دارد ارسال كند. اين*كار عموما با تزريق image tag در HTML يا JavaScript انجام مي شود كه معمولا نفوذگر اين كد ها را در email يا سايتي خاص قرار مي دهد ; كاربري كه اين صفحه را مشاهده مي*كند، متوجه وجود هيچگونه مشكلي نخواهد شد اما با باز شدن email يا لود كردن صفحه سايت كدي با سطح دسترسي شخص بازديد كننده بر روي سايت اجرا خواهد شد. وبه هكرها امكان مي دهند كه ، اطلاعات شخصي كاربري كه در آن زمان وارد سايت شده است را در اختيار گرفته و از آن ها سوءاستفاده كنند. csrf مخفف Cross-Site Request Forgeries است. درخواستی که از طریق یک سایت دیگر می‌آید. می‌تونه حمله مهمی باشه و اثرات مخربی هم بذاره. «فرض کنید» که کاربران سایت google.com با رفتن به صفحه google.com/logout کوکی‌شون پاک میشه و logout میشن. خب مدیر یا یکی از کاربران یک سایت دیگر (مثلا یک کاربر شیطون در یک انجمن و فاروم خیلی شلوغ) ممکنه بیاد و همچین عکسی بذاره توی صفحه سایت خودش: <img src="http://www.google.com/logout/" /> شما و همه کسانی که اون صفحه رو باز کنن، براوزر میره برای لود اون عکس و کوکی شما که توسط دامنه گوگل ایجاد شده هم برای تائی هویت ارسال میشه. اینجوری همه کسانی که اون صفحه رو می‌بینن از اکانت گوگل‌شون بیرون انداخته میشن! خب ممکنه بگید که مهم نیست و خطری نداره. اما بقیه‌اش رو گوش کنید: اگر شما از یه cms یا برنامه‌ای استفاده کنید که مثلا مدیر برای حذف یه مطلب کافی باشه یه آدرسی شبیه اینو ببینه: site.com/admin/delete/74 (کما اینکه در بسیاری از cms ها همینطوره) و اون cms باگ csrf داشته باشه، اونوقت یک کاربر شیطون به راحتی می‌تونه تمام مطالب شما رو پاک کنه!!! مثلا کافیه یه ایمیل به شما بزنه که داخلش مثلا هزارتا عکس با ابعاد 0×0 گذاشته باشه که با لود هر کدوم، یه مطلب شما پاک میشه؛ <img width=0 height=0 border=0 src="http://site.com/admin/delete/1" /> <img width=0 height=0 border=0 src="http://site.com/admin/delete/2" /> <img width=0 height=0 border=0 src="http://site.com/admin/delete/3" /> <img width=0 height=0 border=0 src="http://site.com/admin/delete/4" /> ... همچنین فقط مشکل حذف نیست. با باگ CSRF میشه حتی پسورد ادمین رو هم عوض کرد اگر فرم تعویض، پسورد قبلی رو نخواد! کافیه فریمی مخفی در یک صفحه html کار گذاشته بشه که داخل اون فریم، فرم تعویض پسورد باشه و پس از لود صفحه اون فرم با جاوا اسکریپت ثبت بشه! برای حفاظت در مقابل این حمله هم چندین راهکار هست که میشه همشون رو با هم استفاده کرد. از جمله: استفاده از سشن یا یک کد رندوم دیگر که متغیر با زمان هست و ارسالش همراه آدرس برای logout و حذف مطالب و سایر عملیات‌های کاربر. توجه به http_refferer چون وقتی از یه سایت دیگه این آدرس حساس فراخوانی میشه، refferer ش سایتی غیر از سایت شما خواهد بود. استقاده نکردن از cms های متداولی که طریقه حذف و تغییر در آنها شناخته شده است...
  7. پیش‌ترها وقتی صحبت از وب‌سایت‌ها و اپلیکیشن‌ها می‌شد، توجه بیشتر به کارایی، طراحی، سئو و مارکتینگ بود، اما حالا یکی از مسائل مهم پیش رو توجه به امنیت آن وب‌سایت یا نرم‌افزار است. اهمیت این موضوع فقط برای توسعه دهنده نیست، بلکه کاربری که از وب‌سایت یا نرم‌افزاری استفاده می‌کند هم به امنیت آن اهمیت می‌دهد. حفظ امنیت آنلاین و حریم شخصی یکی از دغدغه‌های اصلی اشخاصی است که به هر طریقی با دنیای دیجیتال در ارتباط هستند. در این مطلب قصد داریم به معرفی ابزارهایی برای اسکن و بررسی امنیتی وب‌سایت‌ها بپردازیم. هرچند توسعه دهندگان و مدیران سیستم با رعایت نکات امنیتی می‌توانند امنیت وب‌سایت یا اپلیکیشن‌ را تا حد زیادی تامین کنند، ولی چک کردن وب‌سایت‌ها با ابزارهای زیر نیز می‌تواند کمک خوبی هم برای تولید کننده و هم استفاده کننده باشد. ۵ ابزار آنلاین برای اسکن امنیت وب‌سایت ۱- Scan My Server ابزار Scan My Server یکی از جامع‌ترین گزارش‌ها را درباره انواع آسیب‌پذیری‌های سایت از جمله Cross Site Scripting، تزریق SQL، تزریق کد PHP و Blind SQL Injection و موارد دیگر می‌دهد. گزارش اسکن همراه با جزئیات به ایمیل شما فرستاده می‌شود. ۲- SUCURI SUCURI یکی از معروفترین ابزارهای رایگان جهت اسکن وب‌سایت برای نرم‌افزارهای مخرب و مسائل امنیتی است. شما می‌توانید به سرعت وب‌سایت‌تان را برای نرم‌افزارها مخرب، لیست سیاه و اسپم اسکن کنید. SUCURI از وب‌سایت شما در برار تهدید‌های آنلاین محافظت می‌کند، و روی انواع CMS‌های رایج مانند wordPress, Joomla, Magento, Drupal و phpPP و … کار می‌کند. ۳- Qualys SSL Labs SSL Labs یکی از پر استفاده ترین ابزارها برای تست امنیتی SSL وب سرورها است. این ابزار خیلی دقیق آدرس https وب‌سایت را آنالیز می‌کند که شامل تاریخ انقضا، نسخه SSL/TLS، شبیه سازی Handshake، جزئیات پروتکل، امتیاز کلی و cipher و موارد دیگر می‌باشد. اگر برای وب‌سایت تان از پروتکل https استفاده می‌کنید، همین الان با ابزار SSL Labs آن را چک کنید. ۴- Quttera Quttera وب سایت را برای نرم‌افزار مخرب و آسیب پذیری اکسپلوید بررسی می‌کند. این ابزار امنیتی وب‌سایت شما را برای پیدا کردن فایل‌های مخرب، فایل‌های مشکوک و … بررسی می‌کند. ۵- Detectify Detectify اسکنر امنیتی وب‌سایت بر پایه SaaS است. این ابزار امنیتی وب‌سایت شما را در برابر نرم‌افزارهای مخرب، فایل‌های مخرب اسکن و بررسی می کند، با استفاده از Detectify می‌توانید بیش از ۱۰۰ تست امنیتی را روی وب‌سایت تان انجام دهید. شما می‌توانید ۲۱ روز به صورت رایگان از این ابزار استفاده کنید، و سپس برای ادامه حفاظت از وب‌سایت‌تان باید ثبت‌نام کنید.
  8. تعریف ساده ای که بخوایم از متاسپلویت بکنیم ابزاریست که با جمع آوری آسیب پذیری ها درون خود و درست کردن امکانات مورد نیاز برای یک امنیت کار به شما اجازه میدهد تا بتونید توی یک بازه زمانی کم به بیشترین ابزار هایی که نیاز دارید دسترسی دسته بنده شده داشته باشید. این برنامه با زبان Ruby نوشته شده است. انواع نسخه های متاسپلویت: متاسپلویت دارای 3 نسخه : Metasploit Pro Metasploit Community Metasploit Framework می باشد که استفاده از هر نسخه بستگی به نیاز شما و سطح کاری که میخواهید انجام بدید بستگی دارد. توی این مطلب ما به بررسی Metasploit Framework میپردازیم. دانلود متاسپلویت تحت 2 Platform لینوکس و ویندوز نوشته و قابل اجرا میباشد. برای دانلود متاسپلویت میتونید از سایت اصلی این نرم افزار را دانلود کنید: http://www.rapid7.com/products/metasploit/download.jsp بررسی انواع رابط کاربری Metasploit بررسی رابط کاربری Msfconsole همان گونه که از اسم این رابط کاربری مشخص میباشد کنسولی به منظور دسترسی به صورت دستوری به متاسپلویت میباشد. یکی از بهترین رابط های کاربری متاسپلویت میباشد که برای افرادی که تازه میخواهند کار با متاسپلویت رو شروع کنند مناسب میباشد. بررسی رابط کاربری Armitage آرمیتیج نسخه گرافیکی متاسپلویت میباشد که بسیاری از امکاناتی که شما در رابط Msfconsole ندارید را داراست میشه گفت رابطیست که طرفدار زیادی دارد و کار را برای افرادی که علاقه به کار با متاسپلویت دارند را فراهم کرده است اما منابع آموزشی زیادی درباره این رابط نیست به همین علت رابط Msfconsole طرفدار نسبتا بهتری نسبت به این رابط دارا میباشد. بررسی رابط کاربری Msfweb این نسخه از رابط کاربری متاسپلویت تحت وب قابل دسترسی می باشد که معمولا روی سرور های ویندوز یا لینوکس نصب گردیده و از راه دور از ابزار های متاسپلویت استفاده میکردند اما در نسخه جدید متاسپلویت این رابط کاربری حذف شده است. بررسی رابط کاربری Msfvenom یکی دیگه از بهترین رابط های کاربری متاسپلویت ؛ رابط کاربری msfvenom میباشد . در این رابط کاربری شما امکان استفاده از 2 امکان دیگر متاسپلویت یعنی msfencode و msfcli را دارا میباشد و بعد از ساختن سرور خروجی امکان encode کردن اون رو نیز دارید.
  9. تصمیم گرفته‌اید برنامه نویسی اندروید یاد بگیرید ؟ پس اول باید از بین این چند زبان برنامه نویسی اندروید یکی را برای شروع کار انتخاب کنید. با مزایا و معایب هر کدام آشنا شوید. یکی از گام‌های مهم در شروع به کار با اندروید، انتخاب بهترین زبان برنامه نویسی اندروید است. همین که تصمیم گرفته‌اید، قطعا اولین گام در این سفر برای تبدیل شدن به یک برنامه نویس اندروید تمام عیار و کامل است. همانطور که می‌دانید، یادگیری کدهای محتلف و کدنویسی می‌تواند گاهی پیچیده و سخت باشد و گاهی اوقات حتی نمی‌دانید که باید از کجا شروع کنید. اما اگر بدانید باید از چه زبان برنامه نویسی برای انروید استفاده کنید، اطلاعات لازم درباره این زبان برنامه نویسی را بدانید و همین طور زمان مناسب برای آغاز کد نویسی را درست حدس بزنید، خیلی از این پیچیدگی‌ها از سر راه شما برداشته می‌شود. در این مقاله لیداوب، قصد داریم یکی از این مشکلات را از سر راه شما برداریم. ما با مرور کردن زبان‌های مختلف برنامه نویسی اندروید و معرفی هر کدام به صورت جداگانه، این فرصت را در اختیار شما قرار می‌دهیم تا بتوانید بهترین و مناسب‌ترین زبان برنامه نویسی را انتخاب کنید. تعیین زبان برنامه نویسی برای شروع، به این بستگی دارد که می‌خواهید چه کاری انجام بدهید و هنگامی که شما زبان برنامه نویسی مورد نظر را یاد گرفتید، می‌توانید IDE و ابزارهایی را که با زبان مورد نظر شما همخوانی دارند را پیدا کنید. انتخاب زبان برنامه نویسی اندروید برای شروع به توسعه یک برنامه اندروید، باید پیش از هر چیز یک زبان برنامه نویسی انتخاب کنید . تفاوت بین زبان‌های برنامه نویسی اندروید می‌تواند مقداری پیچیده و متنوع باشد، اما در آخر همه چیز به خود شما بستگی دارد. این شما هستید که باید ببینید به کدام زبان علاقه دارید و دوست دارید با آن کار کنید. در اینجا به طور مختصر در مورد هر زبان توضیح داده شده است. شما می‌توانید با بررسی هر کدام و انجام تحقیقات بیشتر، هر کدام از زبان‌ها که به نظر شما جالب‌تر بود را انتخاب کنید. برای برنامه نویسی اندروید، زبان‌های مختلفی مورد استفاده قرار می‌گیرند، که در ادامه چند تا از آن‌ها را به شما معرفی می‌کنیم. زبان برنامه نویسی Java هنگامی که صحبت از برنامه نویسی اندروید می‌شود، اولین و محبوب‌ترین گزینه جاوا است. جاوا زبان رسمی برنامه نویسی اندروید است و این یعنی بیشترین پشتیبانی گوگل از این زبان خواهد بود. بیشتر اپلیکیشن‌های اندروید که در حال حاضر در گوگل پلی حضور دارند، با استفاده از زبان جاوا نوشته شده‌اند. اولین قدم در برنامه نویسی اندروید نصب برنامه Android Studio است. این برنامه با اندروید SDK (مجموعه‌ای از ابزارهایی که برای توسعه برنامه‌های اندروید طراحی شده اند) بسته بندی می‌شود و این یعنی همه چیزهایی را که نیاز داریم در یک جا جمع شده است. «آموزش رسمی و اسناد» از گوگل شروع کار را برای ما راحت می‌کن، و بیشترین تعداد زیادی کتابخانه (کد رایگان برای ارتقاء برنامه ها) و آموزش‌هایی که روی این روش تمرکز می‌کنند را در این صفحه گوگل می توان پیدا کرد. جاوا توسط Sun Microsystems در سال ۱۹۹۵ منتشر شد و در قسمت‌های زیادی از برنامه نویسی مورد استفاده قرار گرفت. کدهای جاوا توسط یک ماشین مجازی روی دستگاه‌های اندروید تفسیر و اجرا می‌شوند. متاسفانه، جاوا مقداری پیچیده است و این پیچیدگی بزرگ‌ترین مانع برای بسیاری از افرادی است که می خواهند شروع به برنامه نویسی اندروید کنند. اندروید یک زبان برنامه نویسی شی گرا با موضوعات گیج کننده است، مانند ساختارها، خطاهای اشاره گر و بسیاری از ساختارهای پیچیده دیگر که اگر جاوا SDK را به این‌ها اضافه کنیم، همه چیز پیچیده‌تر می شود. وقتی برای اولین بار سراغ کدنویسی اندروید می‌روید، باید به مبارزه‌ای برای دانستن اینکه جاوا چیست و اندروید چگونه کار می‌کند، بروید. برنامه نویسی با استفاده از جاوا همچنین نیاز به درک پایه‌ای از مفاهیم گریدل ( مانند Manifest Android و XML ) است. البته همه این‌ها به این معنی نیست که جاوا یک زبان برنامه نویسی بد است. برخلاف آن، این اشتباه است که یک زبان را بد بدانیم. همچنین درست است که بسیاری از ناراحتی های جاوا وجود دارد، ولی می‌توان با جاوا یک کد تمیز (Clean Code) را نوشت. به همین دلیل بسیاری از مردم جاوا را دوست دارند و همچنین یکی از گسترده‌ترین زبان‌های برنامه نویسی اندروید در دنیا است که تقریبا همه کاره است. با توجه به جدول PYPL (محبوبیت زبان های برنامه نویسی)، جاوا محبوب‌ترین زبان برنامه نویسی بین برنامه نویسان است. اندروید استودیو در طول چند سال گذشته روز به روز قوی تر شده و ویژگی‌هایی مانند طراح بصری و سیستم پیشنهادات که باعث می‌شود پردازش یکنواخت‌تر و شفاف‌تر باشد به آن اضافه شده است. پس ارزشش را دارد، حتی اگر سختی راه جلوی پیشرفت سریع ما را بگیرد، سراغ زبان برنامه نویسی جاوا برویم و برای توسعه اپلیکیشن اندروید از آن استفاده کنیم. برای کسانی که می خواهند برنامه نویسی اندروید را به طور کامل تجربه کنند، جاوا بهترین زبان برای شروع است. و کسانی که از کدهای پیچیده بیزار هستند، می‌توانند آموزش‌های بیشتری را دنبال کنند. اگر شما یک توسعه دهنده اندروید مبتدی هستید و می‌خواهید برنامه نویسی اندروید را تجربه کنید و یا فقط می‌خواهید به خاطر یادگیری شروع کنید، توصیه می‌کنم با زبان ساده‌تری کار خود را آغاز کنید و بعد از آنکه مقداری یاد گرفتید و تجربه کسب کردید سپس به سراغ جاوا بروید. یک نکته: گفتنی است که امکان استفاده از جاوا در Unity نیز وجود دارد. در رابطه با Unity در بخش سی شارپ توضیح داده شده است . توجه داشته باشید که زبان جاوا شاید مقداری پیچیده باشد ولی راحت تر میتوان به Android Studio انتقال داد. Kotlin کوتلین اخیرا به عنوان یک زبان رسمی دیگر برای اندروید معرفی شده است. بعضی از گمانه زنی‌ها نشان می‌دهد که زبان کوتلین به سرعت در حال پیشرفت است و احتمالا می‌تواند به Swift بعدی تبدیل شود. همانند جاوا، زبان کوتلین هم در ماشین مجازی جاوا اجرا می‌شود. تفاوت کوتلین با جاوا در این است که پیچیدگی‌های جاوا را ندارد و این یعنی که زبانی ساده‌تر برای یادگیری است. همچنین خطاهایی مانند Null point exceptions و Excuses در کوتلین وجود ندارند. به طور خلاصه اگر اولین بار است که می‌خواهید برنامه نویسی اندروید را شروع کنید، این زبان انتخاب مناسبی برای شما است. قطعا کوتلین بهترین نقطه شروع برای مبتدیان است و با کوتلین هم می‌توان از اندروید استودیو استفاده کرد. با این وجود هنوز هم نمی‌توانیم بگوییم زبان‌هایی چون C# یا Unity ساده‌تر هستند و همچنین پشتیبانی از این زبان‌ها نسبی است. با این حال، کوتلین قطعا جز بهترین‌ها است و می‌تواند آسان ترین ورودی برای یادگیری برنامه نویسی اندروید باشد. حتی این احتمال وجود دارد که این زبان برنامه نویسی، روزی به عنوان زبان اول گوگل انتخاب شود. ++C / C عادلانه است اگر بگویم که بهتر است از این زبان برای برنامه نویسی اندروید استفاده نکنید. اندروید استودیو از کدهای سی و سی پلاس پلاس با استفاده از Android NDK پشتیبانی می‌کند. این بدین معنی است که نمی توان کدها را در دستگاه مجازی اندروید اجرا کرد و به صورت اولیه روی دستگاه اجرا می‌شود و این امکان را می‌دهد که روی مواردی مانند حافظه کنترل بیشتری داشت. برای برنامه‌های سنگین همانند بازی‌های 3D این امکان وجود دارد که عملکردهای اضافی را از روی دستگاه برداشت تا یک برنامه بهینه داشته باشیم. همچنین می‌توان از کتابخانه‌های C یا ++C استفاده کرد. با این حال، باز هم استفاده از این زبان بسیار سخت است و اگر قصد تولید یک بازی دارید بهتر است از موتورهای بازی‌سازی استفاده کنید. زبان برنامه نویسی #C سی شارپ یک نسخه ساده تر و شی گرا از C و ++C است که توسط مایکروسافت طراحی شده است. این زبان دارای قدرت ++C و آسان بودن ویژوال بیسیک است و همچنین به عنوان یک نسخه ساده از جاوا نیز نام برده می شود. همانند جاوا، سی شارپ نیز قابلیت بازیافت حافظه (زباله‌روبی ) را دارد و این یعنی نیازی به نگرانی در مواردی مانند کمبود حافظه و آزاد کردن رم وجود ندارد. در عین حال سی شارپ جدید تر از جاوا است. انتخاب بهترین زبان برای برنامه نویسی اندروید معمولا بستگی به سلیقه فرد دارد. اگر میخواهید شروعی آسان و در عین حال قدرتمند داشته باشید پیشنهاد میشود از ترکیب #C و Unity استفاده کنید. یونیتی یک موتور بازی سازی ( یعنی میتواند محاسبات فیزیکی و رندرهای گرافیکی 3D را انجام دهد) و یک IDE همانند اندروید استودیو است. یونیتی یک ابزار رایگان است و به کمک آن میتوان بازی ها را به طرز باورنکردنی به راحتی ایجاد کرد، و فقط با چند خط کد میتوان یک بازی را در کمتر از یک ساعت ایجاد کرد. بدون اغراق یونیتی واقعا قدرتمند است، و ابزار مورد استفاده بسیاری از استودیوهای بازی سازی در گوگل پلی است. و همچنین یونیتی مولتی پتفرمی است. یونیتی برای ایجاد بازی مناسب است ولی اگر می خواهید یک برنامه اندروید که مطابق با استانداردهای گوگل باشد را تولید کنید استفاده از یونیتی غیر استاندارد است و شما را محدود میکند ، ولی اگر قصد توسعه یک بازی را دارید یونیتی کاملا مناسب و حرفه ای است. ولی اگر برای یادگیری یونیتی مشتاق نیستید میتوانید از Unreal و یا GameMaker استفاده کنید. همچنین سی شارپ میتواند با Xamarin در ویژوال استودیو مورد استفاده قرار گیرد. که میتوان از مزیت چند سکویی ( cross platform ) نیز استفاده کرد ( یک پایه کد برای اندروید و iOS ) . برای یک مبتدی این مسیر مقداری دشوار است اما برای یک شرکت کوچک که میخواهد یک برنامه برای اندروید و iOS ایجاد کند مناسب است. BASIC در قسمت سی شارپ گفتیم که سی شارپ داری قدرت C و آسانی Visual Basic است. زبان برنامه نویسی Basicیک نقطه شروع لذت بخش برای یادگیری برنامه نویسی است. اما متاسفانه به طور رسمی توسط اندروید استودیو پشتیبانی نمی‌شود و نمی‌توان از بیسیک در Unity یا Xamarin استفاده کرد. اما خبر خوب این است که یک گزینه کم‌تر شناخته شده در بیسیک به نام B4A وجود دارد. B4A مخفف BASIC 4 Android و همانطور که از اسم آن معلوم است، امکان استفاده از بیسیک در اندروید را ایجاد می‌کند. B4A اولین انتخاب برای برنامه نویسان نیست، اما همیشه بهتر است گزینه‌های بیشتری داشته باشید. B4A به عنوان یک RAD یا Rapid Application Development طراحی شده است. این زبان یک گزینه عالی برای برنامه نویسی است و می توان با آن برنامه‌های قدرتمندی ساخت، ولی این زبان برای بازی سازی مناسب نیست و نکته دیگر این که B4A تنها زبانی است که در فهرست ما وجود دارد و به صورت رایگان در دسترس نیست. Corona برای اندروید کورونا یکی دیگر از گزینه‌های ساده برای برنامه نویسی اندروید است که بسیار قدرتمند است و قدرت کنترل بسیاری ارائه می‌دهد. در LUA می‌توان کد نویسی کرد که این کدنویسی بسیار ساده تر از جاوا است و همچنین توسط Corona SDK (کیت توسعه نرم افزار) همه چیز ساده‌تر هم می‌شود. پشتیبانی از تمام کتابخانه‌های بومی، اجازه می‌دهد تا شما برنامه خود را برای سیستم عامل‌های مختلف منتشر کنید. از کورونا به طور کلی برای تولید بازی استفاده می‌شود اما در موارد مختلفی دیگری هم مورد استفاده قرار می‌گیرد. باید از یک ویرایشگر متن مثل Notepad++ برای وارد کردن کدهای خود استفاده کنید و می‌توانید کدها را در شبیه‌ساز بدون اینکه کامپایل شوند اجرا کنید و به کمک ابزار آنلاین به راحتی می‌توان از برنامه اندروید نوشته شده، خروجی APK گرفت. کورونا نیاز به دانش برنامه نویسی دارد، اما نقطه شروع خوبی برای برنامه نویسی است. در عین حال، مطمئنا محدودیت‌هایی وجود دارد، اما چند پله‌ای شما را به تبدیل شدن به یک برنامه نویس حرفه‌ای نزدیک‌تر می‌کند. این گزینه برای افرادی که می‌خواهند برنامه نسبتا ساده ای ایجاد کنند خوب است، اما برای تبدیل شدن به یک برنامه نویس حرفه‌ای مناسب نیست. PhoneGap در نهایت آخرین گزینه ما برای برنامه نویسی اندروید استفاده از PhoneGap است. PhoneGap توسط Apache Cordova طراحی شده و اجازده می‌دهد تا با استفاده از کدهایی که برای ایجاد یک وب سایت (HTML, CSS and JavaScript) استفاده می‌کنیم یک برنامه اندروید ایجاد کنیم. در واقع همانند نمایش یک صفحه وب عمل می‌کند اما یک برنامه اندروید در خروجی می‌دهد. PhoneGap همانند یک پل عمل می‌کند و به برنامه نویس اجازه دسترسی به برخی ویژگی‌ها مانند دوربین یا شتاب‌سنج را می‌دهد. در واقع این برنامه نویسی اندروید نیست و تنها برنامه نویسی واقعی JavaScript است. برای بسیاری از وظایف این گزینه مناسب است اما اگر می‌خواهید بگویید که یک برنامه نویس اندروید هستید، بهتر است یکی دیگر از گزینه‌های موجود در لیست را انتخاب کنید. نتیجه گیری خب تمام شد امیدوارم که خسته نشده باشید! گزینه‌های ساده دیگری همچون Python هم وجود دارد، اما در غیر این صورت از گزینه‌های مختلفی همچون Java و Kotlin و C و #C و BASIC هم می‌توان استفاده کرد. انتخاب زبان برنامه نویسی بستگی به سلیقه و اهداف شما دارد، اما هر انتخابی که انجام دهید، متوجه خواهید شد که یادگیری کد نویسی یک تجربه فوق العاده با ارزش و لذت بخش است و یادگیری برنامه نویسی با اندروید بهترین نقطه شروع است. اگر هر گونه سوال در رابطه با برنامه نویسی اندروید داشتید در قسمت نظرات با ما درمیان بگذارید.
  10. لینوکس چیست؟ برای افراد مختلف این سوال‌ جواب‌های گوناگونی دارد. شخصی آن را هسته سیستم عامل می‌داند و طرفداران GNU از آن به عنوان بخشی از GNU/Linux یاد می‌کنند و شاید شبیه به کاربران جدید فکر کنید لینوکس در واقع نام دیگری برای اوبونتو است! راستش را بخواهید دیدگاه بسیاری از کاربران درباره لینوکس درست است. به صورت واضح‌تر کلمه "Linux" زمانی که تنها به کار برده شود تنها به هسته سیستم عامل اطلاق می‌شود، در حالی که GNU/Linux در واقع کل سیستم عامل است که شامل هسته لینوکس و ابزار گنو می‌شود. اگر شما مجموعه‌ای از نرم‌افزار‌ها را در کنار برخی از ابزار‌ها قرار دهید که بتوان همه آن‌ها را با یکدیگر مدیریت کرد، اکنون شما یک توزیع مانند اوبونتو دارید. تعداد زیادی اجزاهای نرم‌افزاری مخصوص وجود دارند که می‌توانند در کنار یکدیگر سیستم عاملی مانند لینوکس را بسازند. البته که این اجزاهای نرم‌افزاری مخصوص باید در کنار یکدیگر سازگاری داشته باشند تا نتیجه صحیح و کارآمد بدست آید. سیستم عامل چیست؟ توزیع چیست؟ سیستم عامل را می‌توان به عنوان نرم‌افزاری که می‌تواند امکان اجرای اپلیکیشن‌ها بر روی سخت افزار را فعال کند تعریف کرد. سیستم عامل از چندین لایه مختلف تشکیل شده است. در مرکز این لایه‌ها هسته قرار دارد که با درایور‌های خود می‌تواند در ارتباط مستقیم با سخت افزار قرار گیرد و به دیگر نرم‌افزار‌ها نیز اجازه استفاده از سخت‌افزار را بدهد. در لایه‌های بالایی هسته بخشی وجود دارد که مدیریت دستگاه‌های ورودی (مانند فلش، هارد درایو و...)، شبکه‌ها، صدا و ویدیو‌ها را انجام می‌دهد. احتمالا بسیاری از ما دوست داریم بدانیم که در آن هسته چه اتفاق‌هایی در حال رخ دادن است. اگر کمی به ترکیب دو کلمه «توزیع + لینوکس» توجه کنیم، مشخص است که این نام را در کنار هم به یک نسخه از سیستم عامل برپایه لینوکس با نرم‌افزاری‌های مخصوص به خود اشاره می‌کند. در ابتدا، فقط فایل‌ها و راهی برای نصب و استفاده از آن‌ها روی کامپیوتر نیاز بود. پس از آن توزیع‌های مختلف لینوکس به مدیریت پکیج‌ها، ابزار‌های بروزرسانی و تنظیمات رابط کاربری گرافیکی مجهز شدند. در لایه زیری پوسته هر توزیع همچنان همگی از هسته لینوکس استفاده می‌کنند هسته لینوکس چیست؟ لینوکس هسته یا همان قلب سیستم شما است، اما از چه چیز‌هایی تشکیل شده است؟ هسته رابط نرم‌افزاری برای سخت‌افزار کامپیوتر است. هسته با پردازشگر مرکزی (CPU)، حافظه و دیگر اجزای پشتی نرم‌افزار‌های در حال اجرای کامپیوتر ارتباط برقرار می‌کند. در واقع هسته پایین‌ترین مرحله از اجزای نرم‌افزای سیستم است که البته از اهمیت بسیار بالایی نیز برخوردار است. اهمیت کرنل به قدری بالاست که اگر مشکلی برای آن پیش آید، هر قطعه نرم‌افزاری در حال اجرای روی کامپیوتر نیز دچار مشکل خواهد شد. هسته لینوکس، یک هسته‌ی یک پارچه است که همه سرویس‌های اصلی سیستم عامل را درون خود اجرا می‌کند. مدل جایگزین این هسته، میکروکرنل است که بسیاری از کار‌ها را فرآیند‌های خارجی انجام می‌دهند و هسته تنها کمی بیشتر از هماهنگی‌ها را انجام می‌دهد. در حالی که هسته‌های یکپارچه در روزهای ابتدایی که کاربران برای سخت‌افزار خود هسته را کامپایل می‌کردند، بسیار خوب عمل می‌کردند اما این روزها ترکیب‌های زیادی از سخت‌افزار‌ها وجود دارد که ساخت آن‌ها به درون یک هسته نتیجه‌ای جز ساخت یک فایل عظیم ندارد. ماژول های کرنل، برتری لینوکس کرنل لینوکس ماژولار است، به این صورت که عملکرد‌های اصلی در فایل کرنل هستند، در حالی که درایور‌های اختصاری به صورت ماژول‌های جداگانه در مسیر /lib/modules ساخته می‌شوند. برای مثال، کرنل اوبونتو نسخه ۶۴ بیتی تنها ۵ مگابایت اندازه دارد، در حالی که ۳۷۰۰ ماژول دیگر هستند که می‌توانند بیشتر از ۱۰۰ مگابایت حجم داشته باشند. با توجه به این که تنها بخشی از این ماژول‌ها برای هر دستگاه مورد نیاز است، بنابراین استفاده از همه آن‌ها در کنار کرنل اصلی اشتباه محض است. به جای اینکه کرنل بخواهد از همه ماژول‌های خود استفاده کند، با شناسایی سخت‌افزار می‌تواند در استفاده یا لود کردن ماژول‌های مرتبط تنها بخش‌های مورد نیاز را به درون حافظه کرنل وارد کند. در این شرایط کرنل همچنان می‌تواند با دسترسی به هزاران فایل دیگر از طریق ماژول‌ها یکپارچه باقی بماند. این ویژگی زمانی اهمیت زیادی پیدا می‌کند که سیستم می‌تواند وابسته به تغییرات سخت‌افزاری عکس العمل مناسب و صحیح را نشان دهد. برای مثال حافظه USB خود را به سیستم متصل کنید تا ماژول Usb-Storage در کنار فایل سیستم مورد نیاز برای مونت کردن آن لود شود. به همین شکل، دانگل 3G را به دستگاه وصل کنید تا درایور‌های مودم لود شوند. به همین خاطر است که به ندرت نصب درایور‌های جدید در زمان اضافه شدن سخت‌افزار نیاز می‌شود. در واقع همه ماژول‌ها منتظر شما هستند تا سخت‌افزار یا لوازم جانبی دیگری را خریداری کنید تا زمینه را برای استفاده از آن فراهم کنند. کامپیوتر‌هایی مانند سرور‌ها که با سخت‌افزار‌هایی مخصوص و تغییر ناپذیر کار می‌کنند، معمولا از هسته‌ای با تمام درایور‌های مورد نیاز برخوردارند و لود کردن ماژول‌های مختلف در آن‌ها غیرفعال است. این مورد باعث می‌شود که مقدار کمی به امنیت دستگاه اضافه شود. اگر می‌خواهید کرنل خود را کامپایل کنید، یک نکته لازم و خوب، استفاده از درایور‌هایی است که سخت‌افزار دائما قرار است از آن استفاده کند. برای مثال می‌توان به رابط شبکه و فایل سیستم دیسک سخت و ماژول‌هایی برای موارد دیگر اشاره کرد که در صورت همراه با کرنل و استفاده همیشگی می‌توانند به امنیت دستگاه نیز کمک کنند. بسیاری از ماژول‌ها در واقع درایور‌های سخت‌افزاری هستند و به عنوان یکی از نقاط قوت لینوکس در سال‌های اخیر شناخته می‌شود. با این ماژول‌های کرنل‌ که بسیار زیاد هم هستند، نیازی به دانلود و نصب درایور‌ها از جاهای مختلف نخواهید داشت. البته هنوز سخت‌افزار‌هایی هستند که با ماژول‌های کرنل لینوکس پشتیبانی نمی‌شوند که دلیل آن کد‌های جدید یا مجوز‌های لازم است تا اینکه بتواند به عنوان بخشی از کرنل قرار گیرد. بهترین مثال برای سخت‌افزار‌هایی که هنوز به عنوان ماژول‌ کرنل کار خود را شروع نکرده می‌توان به کارت‌های گرافیکی انویدیا اشاره کرد. کارت‌های گرافیکی که به عنوان ماژول‌های طرف سوم شناخته می‌شوند همچنین در اوبونتو به عنوان «درایور‌های محدود شده» شناخته می‌شوند. ماژول‌های طرف سوم از طریق مدیریت پکیج‌ها در صورتی که توزیع از آن پشتیبانی کند، قابل نصب هستند. در غیر این صورت، فایل‌ها باید از طریق منابع کامپایل شوند و به دلیل اینکه با کاربر ارتباط نزدیکی پیدا می‌کنند، باید هر بار پس از بروزرسانی کرنل دوباره کامپایل شوند. خوشبختانه ابزار‌هایی مانند DKMS یا «پشتیبانی پویا ماژول‌های کرنل» به صورت خودکار تمام ماژول‌های طرف سوم را پس از نصب کرنل جدید دوباره کامپایل می‌کند تا فرآیند ارتقای هسته شبیه به ارتقای یک اپلیکیشن ساده باشد. شاید دو عبارت «فضای کرنل» و «فضای کاربر» را شنیده باشید. فضای کرنل در واقع حافظه‌ای است که تنها کرنل به آن دسترسی دارد و هیچ برنامه‌ای از کاربر نمی‌تواند در اینجا نوشته شود. به همین دلیل است که برنامه‌های کاربران نمی‌تواند عملیات‌ کرنل را دچار مشکل کند. فضای کاربر توسط بسیاری از برنامه‌ها دسترس‌پذیر است. یکی از برتری‌ها یا نقاط متمایز لینوکس نیز به دلیل همین پایداری و امنیتی است که توانسته کرنل را دور از دسترس برنامه‌های مختلف و حتی برنامه‌هایی که می‌توانند به ریشه دسترسی داشته باشند، نگه دارد. اگر کرنل را به عنوان پایین‌ترین مرحله از سیستم در نظر بگیریم، بالاترین مرحله آن را رابط کاربری تشکیل می‌دهد. هر چیز دیگری، از کرنل تا رابط‌های ظاهر سخت‌افزار و درایور‌ها تا قبل از اینکه از کامپیوتر خود استفاده کنید، قابلیت استفاده ندارند. رابط کاربری می‌تواند تعامل با تک تک اجزای مختلف سیستم را امکان پذیر کند و این کار با مدیریت پنجره‌ها در لینوکس انجام می‌شود. در گذشته مدیریت پنجره‌ها، سیستم‌هایی مستقل بودند که البته هنوز تعدادی از آن‌ها مانند OpenBox یا Enlightenment وجود دارند، اما مدیر پنجره‌ها حالا به عنوان بخشی از یک محیط دسکتاپ بزرگ‌تر شناخته می‌شوند. مدیر پنجره مسئول مدیریت پنجره‌های روی دسکتاپ است. وظایف مدیر پنجره شامل باز کردن، بستن، محل قرارگیری و دیگر مواردی که می‌توان روی پنجره‌ها انجام داد. در گذر زمان رابط‌های کاربری رشد کرده‌اند و علاوه بر مدیریت پنجره، ویژگی‌های دیگری مانند نوار وظیفه یا منوی لانچر برنامه‌ها توانسته‌اند محیط دسکتاپ را بسازند. مجموعه‌های نرم‌افزاری محیط دسکتاپ در واقع مجموعه‌ای از ابزار‌هایی است که می‌توانند ویژگی‌های لازم برای اجرای یک دسکتاپ کامل را دربرگیرند. اجرای برنامه‌ها، دستکاری پنجره‌ها، ارتباط با هر برنامه و فعال یا غیرفعال کردن آن‌ها از جمله مواردی است که یک دسکتاپ را تشکیل می‌دهند. قلب تمام ابزار‌هایی که محیط دسکتاپ را می‌سازند، مدیر پنجره قلب تمام تمام ابزارهایی است که محیط دسکتاپ را می‌سازند. برای مثال می‌توان به مدیر پنجره KWin برای KDE و Metacity برای گنوم اشاره کرد. چیزی که می‌تواند محیط دسکتاپ را از مدیر پنجره‌ها جدا کند مرحله ادغام و هماهنگی آن‌ها است. مدیر پنجره محیط KDE بسیار مشهور است، جایی که هر چیزی حول محور یک هسته حرکت می‌کند و برنامه‌ها نه تنها می‌توانند با یکدگیر ارتباط برقرار کنند، بلکه یک برنامه می‌تواند درون یک پنجره دیگر نیز قرار گیرد.
  11. فتوشاپ چیست ؟ فتوشاپ یک نرم افزار ویرایشگر حرفه ای است و توسط Adobe Systems توسعه یافته که برای ساخت و ویرایش عکس ها بکار می رود ، علاوه بر این نرم افزار های After effect ، Premiere ، Illustrator ، In design جزو مهمترین تولیدات نرم افزاری هستند که توسط Adobe System تولید شده اند. همه کسانی که با گرافیک کامپیوتری سرو کار دارند ، به نوعی محتاج این نرم افزار ها هستند. به طور مختصر می‌توان گفت Photoshop ابزاری ست برای همه کسانی که در کامپیوتر با گرافیک ثابت و حتی متحرک سرو کار دارند . طراحان گرافیک ، ناشرین کتب و مجلات ، چاپخانه ها ، شرکت های تبلیغاتی ، طراحان سایت ، عکاس ها ، نقاشان هنری ، طراحان نرم افزارها ، انیمیشن سازها و …. به فتوشاپ احتیاج دارند . این نرم افزار حرفه ای گرافیک در عصر تکنولوژی امروز یک نرم افزار حساب نمی شود بلکه یک صنعت به شمار می آید . نرم افزار Adobe Photoshop محبوب ترین برنامه برای ایجاد و اصلاح تصاویر است و همچنین یکی از محصولات با ارزش شرکت Adobe می باشد . این نرم افزار اجازه می دهد تا کاربران تصویر خود را به راحتی دستکاری ، برش و تغییر اندازه دهند و یک اثر جدید خلق نمایند . این نرم افزاربیشتر در میان عکاسان و طراحان گرافیک حرفه ای محبوب است . اگر چه فتوشاپ برای ویرایش عکس ها و چاپ طراحی شده ، اما به طور فزاینده ای برای تولید عکس مخصوص وب استفاده می شود . Adobe Photoshop همچنین ارتباط قوی با دیگر نرم افزار های Adobe برای ویرایش ، ساخت انیمیشن و CD های آموزشی دارد .فرمت اختصاصی فایل ها در فتوشاپ ( PSD ) است که می تواند به Image Ready ، Illustrator ، Premiere، After Effects و Encore DVD منتقل شود . برای آشنایی بیشتر با ریشه های برنامه فتوشاپ و ساز و کار آن می‌توانید اینفوگرافیک : فتوشاپ ، تاریکخانه دیجیتال را نیز مشاهده نمایید. فتوشاپ می تواند با چندین مد رنگی سر و کار داشته باشد : مد رنگی RGB مخصوص نمایشگر مد رنگی LAB مد رنگی CMYK مخصوص چاپ افست مد رنگی سیاه و سفید مد رنگی Bitmap مد رنگی Duotone فتوشاپ دارای معایب جزئی می باشد ، مثلا”بعد از نصب فضای بسیار زیادی از هارد دیسک را اشغال می کند و در زمان اجرا هم از سرعت سیستم می کاهد که به خاطر گستردگی آن امری طبیعی است مواردی که گفته شد باعث میشود ، افرادی که به طور تخصصی از برنامه فتوشاپ استفاده میکنند با استفاده از سخت افزار های پیشرفته به راحتی بتوانند از این نرم افزار بیشترین بهره را ببرند . اما نگران نباشید همه ی کسانی که سخت افزار های قدرتمند هم ندارند میتوانند از این نرم افزار استفاده کنند به شرطی که از نسخه پرتابل یا نسخه فتوشاپ کم حجم استفاده نمایند . تاریخچه فتوشاپ در سال ۱۹۸۷، توماس نول ، یک دانشجوی دکترا در دانشگاه میشیگان موفق به نشان دادن تصاویر سیاه و سفید در صفحه نمایش ۱ بیتی سیاه و سفید شد .سپس برادرش جان نول ، که مسئول بخش جلوه های ویژه برای سبک صنعتی و سحر و جادو در فیلم جنگ ستارگان یک بود آن را به عنوان یک برنامه ویرایش تصویر کاملا توسعه یافته معرفی کرد . از این رو آن را به نمایش نامگذاری کردند . برادران نول تصمیم به تغییرنام این نرم افزار گرفتند .سپس در سال ۱۹۸۸، برادران نول شروع به فروش عکس و نرم افزار تجاری کردند و برای این منظور آنها نام نرم افزار را به “فتوشاپ” تغییردادند . در سپتامبر سال ۱۹۸۸، یک قرارداد بین برادران نول و Adobe امضا شد . تمام حقوق فتو شاپ به ادوبی فروخته شد . برادران نول کارخود را با فتوشاپ آغاز کردند و اولین نسخه آن ( ۱٫۰ )در سال ۱۹۹۰ منتشر شد . کاربرد های فتوشاپ کاربرد های فتوشاپ بخش عمده ای از محیط اطراف ما رو در بر گرفته ، عکس های پرسنلی ، پوستر های تبلیغاتی ، کارت های ویزیت ، بنر ها ، سربرگها ، رابط گرافیکی نرم افزار ها ، جلد نشریات ، تیتراژ فیلم ها ، محیط گرافیکی سایت ها و….. همگی برای زیباتر شدن و حتی به وجود آمدن ، باید یک بار از زیر دست های هنرمند فتوشاپ عبور کنند.
  12. «شل» (Shell) برنامه‌ای در لینوکس و یونیکس است، که می‌توانید در آن دستوراتی را جهت اجرا توسط سیستم وارد کنید. هنگامی که پنجره ترمینال را در لینوکس باز می‌کنید، در واقع برنامه شل اجرا می‌شود، که یک رابط کاربری را برای وارد کردن دستورات در اختیار شما قرار می‌دهد. این رابط کاربری را معمولا با عنوان «خط فرمان» نیز می‌شناسند. وقتی دستوری را در این خط فرمان وارد می‌کنید، توسط شل اجرا شده و نتیجه در صفحه نمایش داده می‌شود. علاوه بر اینکه می‌توانید دستورات را به صورت تعاملی وارد کرده و اجرا کنید، شل این قابلیت را دارد که دستورات از قبل ذخیره شده در فایل‌ها را اجرا کند. این نوع از اجرا را «اسکریپت‌نویسی شل» می‌نامند و ما در این نوشته قصد داریم مفاهیم پایه آن را توضیح دهیم. تاریخچۀ شل از همان ابتدای شروع پروژه یونیکس در سال ۱۹۷۰، برنامه شل وجود داشت؛ آن را با نام V6 Shell می‌شناختند و توسط شخصی به نام «کن تامسون» (Ken Thomson) نوشته شده بود. در سال ۱۹۷۷، «بورن شل» (Bourne Shell) توسعه این برنامه را ادامه داد و تا امروز که به شل پیش‌فرض برای اکانت‌های root در لینوکس درآمده، این نسخه همچنان به قوت خود باقی است. گفتنی است نسخه‌ی یاد شده از شل قابلیت اسکریپت‌نویسی را محقق کرد که در طول سال‌های زیاد مفید بودن آن غیرقابل انکار بوده است. توسعه‌های بعدی شل در سال ۱۹۸۰ سبب شد که نسخه‌های جانبی خیلی محبوبی از آن منتشر شود. دو نمونه از محبوب‌ترین این نسخه‌ها C-Shell و Korn Shell بودند. هر یک از این شل‌ها سینتکس مختص خود را داشتند که در برخی موارد با شل اصلی تفاوت‌های بنیادی داشت. امروزه یکی از محبوب‌ترین شل‌ها، Bash Shell است. Bash مخفف شدۀ عبارت Bourne-Again-Shell است و یک نسخه بسیار پیشرفته‌تر از شل توسعه داده شده توسط Bourne است. در این مقاله، از این شل برای آموزش استفاده خواهیم کرد. اجرای یک اسکریپت شل اجرای اسکریپت شل بسیار ساده است. تنها کافی است مسیر اسکریپت را به عنوان یک آرگومان به شل بفرستید. یک نمونه شل اسکریپت ساده را در زیر می‌بینید: echo "hello world" به صورت زیر آن را اجرا کنید: $ bash hello.sh # prints hello world در شل نیاز است که برای خاتمه دستورات در انتهای خطوط کاراکترهای (LF (Line-Feed قرار گیرد. اگر اسکریپت شل را در ویندوز بنویسید و بخواهید آن را در سیستم لینوکس اجرا کنید، به احتمال زیاد با خطا مواجه می‌شوید. چون ویندوز از ترکیب کاراکترهای CR-LF برای خاتمه خطوط استفاده می‌کند. برای این کار تنها نیاز است که آن را به به فرمت LF تبدیل کنید. ویرایشگر ویندوز خود را بررسی کنید تا با نحوۀ انجام این کار آشنا شوید. روش دیگری نیز برای اجرای اسکریپت شل به طور مستقیم به عنوان یک دستور وجود دارد. کد زیر را در اولین خط اسکریپت شل خود وارد کنید. #!/bin/bash با تغییری که اعمال کردیم، حال اسکریپت شل بسیار ساده‌ی ما به صورت زیر خواهد بود: #!/bin/bash echo "hello world" اکنون باید فایل اسکریپت خود را «قابل اجرا» (executable) کنید، برای اینکار به شیوه زیر عمل می‌نماییم $ chmod +x hello.sh مزایای استفاده از اسکریپت‌های شل خودکار کردن کارها اولین مزیت استفاده از اسکریپت‌نویسی شل خودکارسازی کارهایی است که مکرراً اجرا می‌شوند. به عنوان مثال، فرض کنید شما یک کار مشخص را هر روز در سیستم خود انجام می‌دهید. اگر برای این کار مجبورید هر روز در لینوکس خود دستورات متعددی را اجرا کنید، می‌توانید به راحتی این دستورات را در یک فایل ذخیره کنید و به عنوان یک اسکریپت شل اجرا نمایید. مثال‌هایی را در ادامه می‌بینید: آرشیو و آپلود کردن یک فایل یا پوشه به صورت روزانه در فضای ذخیره‌سازی ابری مانند S3. فشرده‌سازی فایل‌های log که هر روز در حال گسترش هستند. استخراج قیمت سهام، تجزیه و تحلیل داده‌های استخراج شده و فرستادن ایمیل یا پیامک در صورت رسیدن به یک وضعیت مشخص. ترکیب دستورات چندگانه یکی دیگر از مزایای اسکریپت‌نویسی شل این است که می‌توان مجموعه‌ای به هم پیوسته از دستورات را در یک دستور واحد ترکیب کرد؛ امری که در برخی موارد می‌تواند بسیار کاربردی باشد. بدون شک به خاطر سپردن یک دستور خیلی راحت‌تر از چند دستور است. همچنین نیازی نیست ترتیب اجرای آن‌ها را به یاد داشته باشید. یک مثال خوب برای روشن‌تر شدن موضوع، می‌تواند مجموعه دستورات به هم پیوسته بوت شدن خود سیستم عامل لینوکس باشد. یکی از مراحل بوت شدن این است که سیستم عامل تعدادی دستور را برای اینکه سیستم در یک حالت پایدار قرار گیرد اجرا می‌کند. این دستورات در واقع اسکریپت‌های شل هستند که در پوشه etc قرار دارند. اگر به یکی از این اسکریپت‌ها نگاهی بیاندازید، خواهید دید که برای بالا آمدن یا بوت شدن یک سیستم کدهای خیلی پیچیده‌ای اجرا می‌شوند و بدون استفاده از اسکریپت شل این کار بسیار سخت است. کدی که در ادامه می‌بینید یک نمونه اسکریپت شل است و هنگامی که یک کاربر به سیستم وارد می‌شود، اجرا می‌گردد. تجسم کنید، بخواهید هر بار برای ورود به سیستم این کدها را وارد کنید! # /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...). if [ "$PS1" ]; then if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then # The file bash.bashrc already sets the default PS1. # PS1='\h:\w\$ ' if [ -f /etc/bash.bashrc ]; then . /etc/bash.bashrc fi else if [ "`id -u`" -eq 0 ]; then PS1='# ' else PS1='$ ' fi fi fi # The default umask is now handled by pam_umask. # See pam_umask(8) and /etc/login.defs. if [ -d /etc/profile.d ]; then for i in /etc/profile.d/*.sh; do if [ -r $i ]; then . $i fi done unset i fi سادگی در توسعه تمام کارهایی که با اسکریپت شل انجام می‌شود را با یک برنامه‌ای که با زبان C یا ++C نوشته شده نیز می‌توان انجام داد. اما نوشتن و اشکال‌زدایی یک اسکریپت شل به مراتب ساده‌تر از برنامه‌های C و ++C است. مخصوصا برای امور مدیریتی سیستم مانند اجرای دستورات خارجی، ایجاد و حذف فایل‌ها و پوشه‌ها، مسیردهی به خروجی و … برنامه‌های C و ++C برای عملیات‌های سطح پایین‌تر مانند فراخوانی‌های سیستمی، تغییر ساختار داده‌ها و … مناسب‌تر هستند. خوانایی اسکریپت شل یک اسکریپت شل چون ماهیت یک فایل متنی را دارد، به راحتی قابل مشاهده است و شما می‌توانید با نگاه کردن به کدها‌ی آن بفهمید که دقیقا چه کاری قرار است انجام شود. اما در برنامه‌های نوشته شده با زبان‌هایی مانند C و ++C تنها راهی که برای فهمیدن این موضوع وجود دارد این است که در زمان اجرا راهنماهایی برای آنها وجود داشته باشد یا به کد منبع‌شان دسترسی پیدا کنید. چون معمولا این برنامه‌ها کامپایل شده و به یک فایل اجرایی تبدیل شده‌اند بنابراین شما کد‌های منبع را نمی‌بینید. برای مثال با استفاده از اسکریپت شل می‌توانید ببینید که آیا اجرای این کد فایلی را حذف می‌کند یا نه و در صورت لزوم آن فایل‌ها را در مسیر دیگری کپی کنید. همچنین خطایابی در اسکریپت‌های شل بسیار ساده‌تر است. چون شما کد را می‌توانید ببینید. مثلا ممکن است به خاطر وجود نداشتن یک پوشه خاص کد شما با خطا مواجه شود. بنابراین می‌توانید به راحتی پوشه مورد نظر را در مسیر خواسته شده ایجاد کنید. قابلیت انتقال به سیستم‌های دیگر اسکریپت‌های شل می‌توانند به راحتی به سیستم‌ عامل‌های یونیکس و شبه یونیکس منتقل شده (portable) و اجرا شوند. حتی انتقال اسکریپت‌های شل از معمار‌ی‌های دیگر مانند X86، Spark، MIPS و … بسیار راحت‌تر از برنامه‌های نوشته شده به زبان‌های C و ++C است. تنها راهی که برای انتقال و اجرای برنامه‌های C و ++C وجود دارد، کپی کردن کد منبع، ساخت برنامه (build) و اجرای آن است. حتی ممکن است این برنامه‌ها از معماری خاصی استفاده کنند که باعث اجرا نشدن آن‌ها در سیستم‌های دیگر با معماری‌های متفاوت می‌شود. با وجود مزایای گفته شده برای اسکریپت‌های شل شاید شما هم برای استفاده از آن در پیاده‌سازی اید‌ه‌ها و نوشتن برنامه‌های خود ترغیب شده باشید.
  13. سیگنال آنالوگ یکی از مهمترین سیگنال ها در دنیای الکترونیک است که نامش را زیاد شنیده اید . اما شاید درک درستی از سیگنال Analog نداشته باشید بخصوص اینکه می دانیم سیگنال دیگر به نام سیگنال دیجیتال هم داریم . در این پست خیلی کوتاه در مورد سیگنال آنالوگ توضیح می‌دهدیم . با ما همراه باشید. تعریف سیگنال آنالوگ سیگنال در واقع چیزیِ که حاوی اطلاعات باشد . اطلاعاتی در مورد یک پدیده . این پدیده می تواند رفتار آب و هوا در گذر زمان باشد ، می تواند نوسان برق باشد ، می تواند داغ شدن کتری به مرور زمان باشد و … سیگنال را معمولا با یک دامنه ( مقدار ) در طول زمان نشان می دهند . مثلا فرض کنید نوسان برق داریم ! در یک لحظه برق ۲۲۰ ولت است ، لحظه بعدی برق ۲۲۲ ولت می شود ، سپس برق ۲۳۵ ولت شده، بعد ۲۱۷ ولت می‌شود و … پس این سیگنال برق در طول زمان مرتب دارد تغییر می کند . به این نوع سیگنال که در طول زمان مرتب مقدارش تغییر می کند و یا در طول زمان همیشه یک مقدار دارد ، سیگنال آنالوگ می‌گویند . یعنی همواره و پیوسته مقدار دارد . بهترین مثال برای نشان دادن یک سیگنال آنالوگ ، سیگنال برق شهر یا همان سیگنال سینوسی است . همانطور که در شکل بالا هم می بینید ، سیگنال برق شهر به طور پیوسته مقدار دارد . سیگنال Analog دو مشخصه بارز دارد ، یکی دامنه یا مقدار یکی هم فرکانس و یا دوره تناوب ( فرکانس با دوره تناوب فرق دارد ) . مثلا در سیگنال آنالوگ برق شهر ، مقدار سیگنال در بیشترین مقدار به ۲۲۰ ولت می رسد و در کمترن مقدار هم به ۲۲۰- ولت می رسد . و در یه نقطه زمانی کوتاهی هم مقدارش به صفر می رسد . اما یکی از بارز ترین مشخصه های سیگنال آنالوگ این است که مقدار جزئی هم دارد یعنی در یک زمانی مقدار این سیگنال آنالوگ به مثلا ۲۳٫۴۵ ولت می رسد . مثال هایی از سیگنال آنالوگ سیگنال آنالوگ همیشه به یک وسیله برقی یا الکتریکی اطلاق نمی شود . یعنی فکر نکنید وقتی صحبت از سیگنال Analog می‌شود قطعا یک وسیله برقی را نشان می دهند . صدای انسان ، برق شهر ، فشار روی یک جسم ، دمای یک شهر ، نور و امواج نوری و چیزهایی مثل این همگی نمونه هایی از سیگنال آنالوگ هستند . سیگنالی که در هر لحظه از زمان یه مقداری دارد و در واقع در طول زمان پیوسته تغییر می کند رو میگن سیگنال Analog . سیگنال آنالوگ به طور ناگهانی تغییر نمی کند . ضمنا سیگنال آنالوگ حتما نباید مثل ولتاژ برق شهر یک هماهنگی خاصی داشته باشد ، می تواند شکل عجیب و غریب داشته باشد . مثلا شکل زیر ، سیگنال صوتی را نشون می‌دهد که آنالوگ هم است . توجه کنید که هر سیگنال مربعی ای ، سیگنال دیجیتال نیست . چون خیلی ها فکر می کنند هر چقدر سیگنال به صورت مربعی بود یعنی دیجیتال است . سیگنال دیجیتال را با آنالوگ اشتباه نگیرید . بعنوان مثال سیگنال مربعی ای که مقدار منفی دارد سیگنال آنالوگ است . سیگنال دیجیتال باید در یک زمان مشخصی مقدار داشته باشد و در یک زمان مشخصی هم بی مقدار باشد یعنی صفر باشد نه منفی . البته اینجا منظور سیگنال منطقی است که یک صفر یا یک است . وگرنه موقعی که از یک سیگنال آنالوگ ، نمونه برداری می‌شود و تبدیل به دیجیتال می‌شود ، می تواند مقدار منفی هم داشته باشد که همان هم دیتای مشخصی را نشان می‌دهد . پس منظور من اینجا سیگنال باینری یا منطقی است .
  14. سیگنال دیجیتال در دنیای الکترونیک و کامپیوتر حرف اول و آخر را می زند . الان همه چیز دیجیتالی شده ، اما مفهوم دیجیتال منظور از سیگنال Digital چیست؟ قبلا در مورد سیگنال آنالوگ صحبت کردیم و دیدید که سیگنال آنالوگ یک سیگنال پیوسته در زمان است که می تواند هر مقدار عددی داشته باشد . حالا سیگنال دیجیتال سیگنالی گسسته در زمان است یعنی مقادیر ولتاژ یا جریان در سیگنال دیجیتال به صورت عدد های فاصله دار تعیین می‌شود ( منظور فاصله زمانی است) . مثلا میگوییم در یک لحظه سیگنال ۳ ولت و در یک لحظه دیگر ۵ ولت و در یک لحظه دیگه مثلا ۲ ولت است . بین این اعداد ، عدد دیگری نیست ، در صورتی که در سیگنال آنالوگ ، مفهوم فاصله زمانی نداریم و سیگنال همیشه یک مقداری دارد ( شاید اون مقدار ۲٫۳۴۵ ولت باشد ) . در شکل زیر مفهوم گسسته در زمان رو متوجه میشید . برای اینکه درک بهتری از سیگنال دیجیتال داشته باشید ، یک مثال می زنیم . فرض کنید ما یه جعبه خالی داریم . هر از گاهی چند سیب داخلش می گذاریم. مثلا الان ۲ سیب ، بعد ۳ ساعت ۴ سیب ، بعد ۱ ساعت ۳ سیب و بعد از ۵ ساعت هم ۹ سیب داخل جعبه قرار می دهیم . پس ما به طور گسسته در زمان ( نه پیوسته در زمان ) تعدادی سیب داخل جعبه قرار دادیم . اطلاعات عددی در مورد سیب ها اینطوری می‌شود : ۹ ۳ ۴ ۲ در الکترونیک ، سیگنال دیجیتال می تواند ۳ ولت باشد ، ۳ ثانیه ۳ ولت بماند و بعد ۵ ولت شود و باز ۲ ثانیه بماند و بعد ۰ ولت شده و الی آخر . سیگنال منطقی یا باینری سیگنال منطقی یا Logic Signal ، زیر مجموعه ای از سیگنال دیجیتال می باشد . در سیگنال منطقی یا باینری ، سیگنال یا ۰ است یا ۱ . این صفر و یک در دنیای کامپیوتر که می گویند ، در واقع همین سیگنال باینری یا منطقیست . سیگنال منطقی را با ولتاژ نشان میدهند مثلا ۰ ولت را۰ منطقی و ۵ ولت رو یک منطقی می گویند . پس یک سیگنال باینری یا ۰ ولت است یا ۵ ولت . کلاک پالس که قبلا هم در موردش صحبت کردم نوعی از سیگنال Digital یا همین سیگنال منطقی است که باعث می‌شود مدارات الکترونیکی با همدیگه هماهنگ شوند . مثلا وقتی می خواهند به کامپیوتر صفر و یک ارسال کنندد ، یک سیگنال مثل شکل زیر ارسال می‌کنندد . فرض کنید می خواهیم مقدار ۰۱۱۰۰۱۰۱ رو به یک حافظه کامپیوتری بفرستیم . باید سیگنالی شبیه به عکس زیر بفرستیم . پس تا اینجا فهمیدید که صفر و یک در علم کامپیوتر چطوری درست می‌شود . سیگنال دیجیتال واقعی و ایده آل در علم الکترونیک هیچ چیزی به صورت ایده آل وجود ندارد . یعنی شما نمی توانید یک قطعه را پیدا کنید که مثل تئوری دقیق کار کند چون عوامل زیادی مثل نویز ، دما ، رطوبت و … روی عملکرد سیگنال ها یا قطعات تاثیر می‌گذارند . این چیزی که به عنوان سیگنال دیجیتال نشان می دهند که یک سیگنال مربعی صاف و مرتب است ، در دنیای واقعی دقیقا اینطوری نیست و مقداری تغییر حالت می دهد. در واقع تغییر حالت سیگنال دیجیتال از ۰ به ۱ یک مقدار خیلی کوتاهی زمان می برد و نهایتا شکل موج به این حالت می‌شود : سطح ولتاژ یا سطح منطقی در سیگنال دیجیتال مدارات دیجیتال با سیگنال Digital کار می کنند . مدارات دیجیتال فقط صفر و یک را می فهمند ، به همین دلیل سیگنالی که بهشون ارسال می‌شود باید فقط صفر و یک باشد . اگر چیزی غیر از صفر و یک باشد ، مدار خطا می دهد. برای همین ، قراردادی در مدارات مختلف دیجیتال تنظیم شده است . مثلا میگویند از فلان مقدار تا فلان مقدار یک منطقی و از فلان تا فلان مقدار هم صفر منطقی است . در مورد سیگنال دیجیتال ، معمولا ۰ تا ۲ ولت رو صفر منطقی و ۳ تا ۵ ولت رو یک منطقی می گویند . بین ۲ تا ۳ ولت هم خطا رخ میدهد . البته بعضی از مدارات Digital ، می توانند این خطا ها را اصلاح کنند و به صفر و یک منطقی تبدیل کنند که بحث الان ما نیست . دو تا از معروف ترین تکنولوژی های مورد استفاده در الکترونیک دیجیتال ، تکنولوژی TTL و CMOS هستند . کاری به عملکردشون ندارم فقط می خواهم بگویم که هر کدام از این تکنولوژی ها با سیگنال دیجیتال استاندارد خودشان کار می کنند . مثلا در TTL اینطوریه که از ۰ تا ۰٫۸ ولت رو صفر منطقی حساب می کنند و از ۲ ولت تا منبع تغذیه رو یک منطقی در نظر میگیرند ( منبع تغذیه در TTL معمولا ۵ ولت هست ) و در CMOS از ۰ تا ۱٫۵ ولت صفر منطقی و از ۳٫۵ تا ۵ ولت هم یک منطقی . سیگنال دیجیتال و نویز تاثیر نویز روی سیگنال ها خودش یه کتاب ۱۰۰۰ صفحه ای است و واقعا مبحث پیچیده ای هم هست . اینجا فقط خیلی کوتاه می می گوییم که نویز چطوری می تواند روی سیگنال Digital تاثیر گذاشته و رفتار شکل موج دیجیتال در برابر نویز چیست . توی دنیای دیجیتال ، همونطور که گفتم ، میگن آقا بالاتر از فلان عدد ، یک منطقی و پایین تر از فلان عدد صفر منطقیه . فرض میکنیم یه سیگنال دیجیتال داریم که ۰ تا ۵ ولته . حتی اگه نویز هم روی این سیگنال دیجیتال تاثیر بذاره ، چون بالاتر یا پایین تر از یه حد استانداردیه ، بازم سیگنال دیجیتال به حساب میاد و می تواند کار خوشو بکند . به همین دلیل در بسیاری از مواقع نویز ضعیف نمی تواند روی سیگنال دیجیتال تاثیر بذاره . در بعضی مواقع نویز قوی می تواند سیگنال رو آنقدر تضعیف کند که ارور یا خطا رخ بدهد . یعنی سیگنال Digital را به پایین حد استاندارد می رساند ! خب دوستان امیدوارم که مفهوم سیگنال دیجیتال رو متوجه شده باشید .

درباره ما

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