loading...

وبلاگ تخصصی مباحث آموزش شبکه ، لینوکس ، هک و امنیت و برنامه نویسی

بازدید : 25
سه شنبه 12 فروردين 1404 زمان : 1:08

اکتیو دایرکتوری (Active Directory) یک سرویس مدیریت متمرکز از مایکروسافت است که برای احراز هویت، مجوزدهی و مدیریت منابع شبکه استفاده می‌شود. مهم‌ترین اصطلاحات آن شامل دومین کنترلر (DC) برای مدیریت کاربران، جنگل (Forest) که شامل چندین دومین است، دومین (Domain) که محیط مدیریتی اصلی را تشکیل می‌دهد، واحد سازمانی (OU) برای دسته‌بندی کاربران و گروه پالیسی (GPO) جهت اعمال سیاست‌های امنیتی است. اکتیو دایرکتوری به سازمان‌ها کمک می‌کند تا دسترسی‌ها را کنترل کرده و امنیت شبکه را بهبود بخشند.

در این مقاله میخوایم ساختار اکتیو دایرکتوری رو بررسی کنیم و بگیم چه اجزائی داره.

نکته : یک سری از مفاهیمی که بررسی میکنیم مربوط به بحث Windows Internals هستن و اگر سطح بالا به نظر امدن باید برای درک بیشترشون کتاب Windows Internals رو مطالعه بکنید ، من هرچقد بتونم ازش میگم که شما نیاز نداشته باشید 🤝😁

نکته2 : اکثر این مفاهیم بصورت منطقی باید گفته بشه و فرض بشه و چون مثال فیزیکالی براش نیست یکم درکش سخته و به مرور با کار عملی میتونید درکشون کنید پس اولش تو درک زیاد سخت نگیرید

نکته3: این مقاله با دید امنیتی و مختص بچه های امنیت شبکه نوشته شده ، ولی دید کاملی از اکتیو دایرکتوری بهتون میده

نکته4: اکثر این مواردو شما فقط باید بفهمید و نیاز نیست حتما درک کنید

نکته5 : هرچیزی که براتون مبهم بود حتما بپرسید 😉

مفاهیم مقدماتی :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

Forest :

منظور از forest یه قضاییه که ما توش بقیه چیز ها مثل دامین و ... رو قرار میدیم ، forest درواقع یک مرز امنیتی هست که یه فضای منطقی یا همون Logical هست برای دامین ها و بقیه اشیا در شبکه، مثلا ما در شکل بالا یه forest داریم که سه تا دامین داره ، دامین اول که اسمش هست apple.com ، دامین دوم که اسمش هست sub1.apple.com و دامین سوم که اسمش هست sub2.apple.com

Domain :

دامین هم یک فضایی هست که ما اشیا خودمون رو توش قرار میدیم ، همون forest ولی کوچیک تر ، ما داخل forest یک یا چندین domain داریم که داخل اون ها ما اشیا مون رو داریم

ما مفهوم parent-child یا والد و فرزندی هم داریم ، به apple.com میگن والد یا HQ(Head Quarters) و به sub1 و sub2 میگن فرزند ، پس ما سه تا مرض و گروه جدا داخل شبکه بالا داریم یا سه تا دامین

توی هر دامین هم ما سخت افزار ها و دارایی های سازمان مثل همون پرینتر و یوزر ها و فایل هارو داریم (سمت راست کادر نارنجی)

Objects :

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

Domain Controller(DC) :

به سروری گفته میشه که اشیا داخلش باشن ، این سرور تنظیمات active directory رو داره و گردن کلفت محسوب میشه 😅 و سطوح دسترسی رو هم توش تعریف میکنن

Trusts :

اگر هرچیزی داخل دامین ها بخوان باهم ارتباط برقرار بکنن باید بینشون trust برقرار باشه ، همون اتصال خودمونه و یک لینک ارتباطی امنیتیه که امکان و سطح دسترسی رو تعیین میکنه (لینکای مشکی که خط خطین و بین دامین ها وصلن)

Organizational Units (OUs) :

یه فضاییه برای مدیریت بیشتر :))) همش که شد فضا !! جلوتر که بریم بیشتر درک میکنید !! ولی همینقدر بدونید که به هرچیزی که یه فضاییه برای دسته بندی کردن و گروه کردن چیزهایی که داخل دامین داریم مثلا در داخل دامین ما چه واحد هایی داریم ؟ DC - Users - Groups و...

Sites :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

سایت به معنای مکان هست ، تا حالا هرچیزی گفتیم مفهوم Logical و منطقی داشت ولی این مفهوم Physical هست ، مثلا فکر کنید دامین والد توی انگلیس هست و دو دامنه فرزندمون در امریکا ، ما دوتا سایت داریم ، یکیه برای انگلیس که حاوی یک دامینه و یکی هم برای امریکا که حاوی دو دامینه (سایت های برای مدیریت و نظم بیشتر هستن)

نکته : یک site میتونه حاوی چندین domain باشه ولی یک domain نمیتونه به بیشتر از یک site تعلق داشته باشه ( برای درک بیشتر شما site رو کشور فرض کن و domain رو آدم ، یک کشور میتونه چند تا ادم داشته باشه ولی یک ادم نمیتونه متعلق به چند کشور باشه)

برای اینکه ی این مواردی که گفته شد رو بیشتر درک کنید این ساختار رو نگاه کنید :

Apple.com
│   └───GPO
├───sub1.apple.com
│   ├───OU
│   ├───Employees
│       ├───Computers
│       └───Users 
├───sub2.apple.com
...

کمی درمورد Forest :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

در ادامه ما میاییم و میگیم که ما دوتا forest داریم ، یک مقدار مباحث جدید ما داریم :

در بحث شبکه این متداوله که ما چند تا Domain و یا Forest داشته باشیم که با trust به هم وصل شده باشن ولی این ها جهت دارن که در شکل بعد خلاصه توضیح میدم ولی شکل بالا رو اوردم که دیدی از forest داشته باشید

کمی درمورد trust :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

در اینجا به صورت خلاصه مبحث trust رو باز میکنیم و جلوتر کامل و جامع بررسیش میکنیم :

نکته : در این شکل کادرهایی که رنگ کرم دارن forest هست و ایکون های سرور نماد دامین هستن

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

ارتباطات trust و دامین ها یکم پیچیدس و جلوتر بررسی میکنم ولی عکس بالا به صورت مقدماتی اینو داره میگه :

ارتباطی که بین دوتا forest شرکت dell و apple هست به صورت دو طرفه هست(به فلش دقت کنید) یعنی دامین والد dell و apple جفتی به منابع هم دسترسی دارن ، ولــــــی فرزنداشون اینطوری نیستن

فرزند ها به اطلاعات دامین والد خودشون یا فرزند های دیگر در forest خودشون دسترسی ندارن

و فرزندان هیچ forest ای به فرزندان forest دیگر دسترسی ندارن

مثال : واحد فروش شرکت apple به هیچ یک از واحد های دیگه شرکت apple دسترسی نداره و هیچ واحدیم بهش دسترسی نداره ( نه در forest خودش نه در forest شرکت dell)

واحد مالی شرکت dellهم به هیچ واحد دیگه ای دسترسی نداره و برعکس ، نه تو forest خودش نه تو forest شرکت apple

ولی والد ها به اطلاعات فرزندانشون دسترسی دارن ، والد apple به کل اطلاعات والد و فرزند های شرکت dell و والد dell هم به کل اطلاعات خود والد و فرزندان شرکت apple دسترسی داره

منطقیم هست ، هر کسی اطلاعاتی بخواد از والد یا فرزند دیگه باید به والدش اطلاع بده تا براش trust ساخته بشه

این مبحث در اخر مقاله موشکافانه تر بررسی میشه

مفاهیم پیشرفته تر :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

Attributes :

هر object در اکتیو دایرکتوری قصه ما یک سری مشخصات و ویژگی ها داره ، با استفاده از این ها میشه اون شئی رو پیدا کرد و طبقه بندی کرد ، مثلا شئی computer ویژگی هاش اینان : hostname ، DNS name و..

همه این attribute ها هم یک نام مترادف در LDAP دارن واسه اینکه اگر ما query زدیم به LDAP بتونیم با استفاده از این نام ها اطلاعات بدست بیاریم مثلا شما نام کاملتو میدی و با displayName مچ میشه در یه entry و سرچ میشه یا نامتو میدی و با give name مچ میشه و قابل جستجو هست

ValueEntry

Full NamedisplayName

First Namegiven name

GPO :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

ما یه چیزی داریم به اسم Group Policy که میاییم و توش خط مشی و قوانین تعریف میکنیم ، و به صورت شئی ذخیره میکنه (این شئی که گفتم با شئی ای که توی اکتیو دایرکتوری در موردش صحبت میکنیم متفاوته)

Schema :

هرجا اینو شنیدید میشه یه نقشه کلی از شبکه AD ای که داریم ، یه شکل کلی که همه چی توش معلوم باشه

در این نقشه نوع اشیا مشخص شده و attribute های مربوط به هر شئی در اون موجوده و برای هر شئی کلاس خاصی در نظر گرفته میشه طبق اون چیزی که اون شئی در اکتیو دایرکتوری هست مثلا :

AD ObjectCorresponding Class in schema

usersuser

computer computer

instantiation و instance of that class :

یک مفهوم خیلی مهمه که اگر اینو یاد نگیرید بعدا به مشکل میخورید :

  • وقتی یک شئی از روی کلاس سخته بشه بهش میگن instantiation
  • اگر شئی از روی یک کلاس خاص ساخته بشه بهش میگن نمونه کلاس یا instance of that class

برای مثال اگر ما بگیم "computer RDS01" این object اکتیو دایرکتوری یک instance هست از کلاس Computer که توی schema بود چون از روی class خاص computer ساخته شده

Container vs Leaf Objects :

ما در کل دو نوع شئی داریم در اکتیو دایرکتوری ، یکی اشئایی که خالین و چیزی نمیتونه داخلشون بره ، یکی اشیایی که داخلشون چیزی هست

  • container درواقع اشئایی هستن که داخلشون اشیاء دیگه ای میتونه قرار بگیره ، خاطرتون هست بالاتر گفتم OU ؟ این اشیاء همه چی داخلشون قرار میگیره ! مثلا
  • leaf این ها اشیائی هستن که چیز دیگری توشون نمیتونه قرار بگیره ، مثلا پرینتر ، شئ پرینتر فقط پرینتره و هیچی دیگه نمیتونه توش قرار بگیره

نکته : فرق بین OU و Container چیه ؟ جفتشون کانتینر هستن ولی GPO فقط به OU اعمال میشه سر همینه که اکثرا از OU استفاده میشه

مثال : فرض کنید شما مدیر دومین asia.mycorp.com هستید و 500 تا کاربر و 500 تا کامپیوتر در شبکه (دامین) دارید ، شبکه شما رفت و امد زیاد دارد ، یعنی افراد زیادی روزانه ثبت نام میکنن و روزانه اخراج میشوند ، حالا میخواید این شبکه رو بدست یه سنیور بدید تا مدیریت بکنه ، امکان ساخت دومین جدیدی هم نیست !! شما میایید و تو همون دامین که دارید یک Organizational Unit میسازید به اسم دلخواه مثلا Manufacturing OU ، و به اون سنیور دسترسی و مجوز ادیت GPO رو میدید ، و در اینجا دسترسی ای که اون فرد سنیور داره روی Manufacturing OU هست نه روی کل شاخه و خود asia.mycorp.com

Tree :

صحبت از درخت شد ، یه اصطلاح داریم به اسم درخت که به صورت شاخه وار میگه چه چیزی زیر مجموعه چه چیزی هست ، بالاتر شکلشو کشیدم و یه یبار

├───Root Domain
│   ├───child Domain
│   │   ├───Computers
│   │   └───Users  
│   └───child Domain
├───Root Domain
│   ├───child Domain

نکته : این نکته مهمه و قبلش حتما Global Catalog رو بخونید تا این نکته رو بفهمید ، تمامی دامین ها که در tree هستن یک standard global catalog مشترک رو به اشتراک میگذارند که تمامی اطلاعات object های مربوط بهtree رو داخلش داره

Global Catalog(GC) :

Domain Controller که اول گفتم رو خاطرتون هست ؟ اگر نیست یه بار دیگه بخونیدش ، GC یه نوع DC هست که اطلاعات تمام object های یک forest رو ذخیره میکنه و ازشون کپی میگیره ، به این صورت هم کپی میگیره که از دامین متعلق به خودش یه کپی کامل (Full Copy) و از دامین های دیگه تو forest یک کپی ناقص (Partial Copy) میگیره

نکته : GC محتوا فقط خواندنی داره و مستقیما آپدیت نمیشه !

نکته : فرق بین DC و GC چیست ؟ DC فقط محتوا اشئا داخل دامین خودشو داره ولی GC علاوه بر محتوا دامینی که توشه محتوا دامین های دیگه رو هم داره

کاربر ها و برنامه ها با استفاده از کوئری زدن به GC میتونن اطلاعات هر شئی رو در هر کدوم از دامین ها بدست بیارن (داخل Forest)

GC دوتا کار میکنه :

  • Authentication : برای تمامی گروه هایی که کاربری توشون هست Authentication و Authorization فراهم میکنن ، که معمولا بعد گرفتن Access Token توسط یوزر انجام میشه
  • Object search : امکان سرچ یک object بر اساس attribute مد نظر رو به وسعت کل دامین های یک forest فراهم میکنن

Global Unique Identifier (GUID) :

یک رکن بسیار مهم هست ، GUID یک مقدار 128 بیتی منحصر بفرد و تکرار نشدنیه برای هر شئی که ساخته میشه ، تکرار میکنم هر شیئی تو شبکه که توسط اکتیو دایرکتوری ساخته میشه این شناسه رو میگیره و مثل MAC Address یکتا و منحصر بفرده ، این مقدار توی attribute ای ذخیره میشه به نام ObjectGUID

ما میتونیم توسط پاورشل کوئری بزنیم و ObjectGUID رو سرچ کنیم و شئی مورد نظر رو پیدا کنیم ،

سرچ توسط GUID دقیق ترین روشه مخصوصا که اگر ما کوئری زده باشیم به GC و چند مورد مشابه ببینیم و ندونیم کدوم مد نظرمونه و این مقدار تو تست نفوذ و فاز Enumerate بسیار بدردمون میخوره

نکته : تا وقتی شئی مد نظر ما در اکتیو دایرکتوری هست این مقدار ObjectGUID یا همون GUID شئی عوض نمیشه و به شئی دیگری تخصیص نمیگیره تا وقتی که اون شئی از اکتیو دایرکتوری ما خارج بشه !

برای سرچ کردن در اکتیو دایرکتوری ما گزینه های متفاوتی داریم از قبیل SID-GUID-SAM Account name-DN که جلوتر بهش میپردازیم

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

Distinguished Name (DN) :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

به مسیر کامل یه object میگن DN در اکتیور دایرکتوری ، مثلا تو مثال کامپیوتر خودم الان یه یوزر هست به نام محمد حسن پزشکیان که توی دامینیه به اسم mamad.com

قبل دیپ شدن یه مثال بزنم : فرض کنید میگن ادرستون کجاست ؟ میگید شهر اراک ، خیابون ملک ، کوچه فریدی ، ساختمان اجر سه سانتی ، پلاک 2 ، محمد حسن پزشکیان

هر کدوم از این بلاک ها با یه attribute مشخص میشن، مثلا DC="خیابان ملک" و... پس اینطوری یه object در AD پیدا میشه !

ما سه نوع Attribute داریم برای نام گذاری :

  • O - OU : اولی organizationName یا organizationalUnitName هست و معمولا بیانگر دامین root-level هست و میگه این شئی کجا قرار داره
  • DC : این مورد organizationalUnitName هست و برای دامین و DNS هست و اگر مثلا دامین ما یه DNS داشته باشه به این صورت " rebeladmin.com " ما این نوع ادرس دهی رو داریم : DC=rebeladmin,DC=com
  • CN : این هم commonName هست و بیانگر شئی و container یا همون فضای دربرگیرنده object های ماست

معمولا اکثرا از CN استفاده میشه ولی فورم درستش به این صورته :

CN=bill gates,CN=Users,DC=microsoft,DC=com

اینجا microsoft.com دامین ما هست که با DC نمایش داده شده و users ابجکت یوزر ماست که با CN نمایش داده شده و درواقع users واسه این با CN امده چون یه Container object هست (بالاتر توضیح دادم) و توش کلی اسم ذخیره میشه و جناب بیل گیتسم که اسم کامل فرد هست و نام ابجکت ماست

نکته : اگر شئی از یک DC منتقل بشه به DC دیگه DN اش عوض میشه

Relative Distinguished Name :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

این مفهوم خیلی کلکیه ! خوب و با دقت بخونید :

RDN یک جزء از DN هست که اون object رو منحصر به فرد میکنه

فرض کنید شما توی یه OU دوتا کاربر دارید به اسم محمد (عکس سمت چپ) و این دوتا دقیقا DN یکسانی دارن ! یعنی مسیرشون همینطوری زیر شاخه خورده تا رسیدن به OU منابع انسانی ، حالا ما که نمیتونیم دوتا محمد یکسان داشته باشیم ! فقط یک محمد

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

نکته : اگر اسم و فامیلی جفتشون یکی بود چی ؟ یکیشون باید یک مشخصه داشته باشه که اون یکی نداره ، مثلا یکیشون سنش 27 عه و دیگری 31 ، خب فقط کافیه یه cn=34 اضافه کنیم به یکیشون و اونوقت این یکی یه RDN متفاوت داره پس توی یه OU میتونه کنار اون یکی باشه !

نکته : RDN میتونه اسم باشه ، یا OU باشه یا سن باشه یا قد باشه یا جنسیت باشه یا یه شماره خاص باشه یا .. فقط یه وجه تمایز باید باشه

نکته : هر جزئی از DN یک RDN هست ، یا به عبارتی چندین RDN کنار هم یک DN تشکیل میدهند

کلید : حداقل یکی از RDN ها در یک OU یا همون Container باید منحصر به فرد باشند ، یعنی تکراری نباشد ، اگر همشون تکراری بودند باید در Container های مختلف باشند(در Cotainer مختلف یعنی در مکان های مختلف ، یعنی DN مختلف) !

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

یک مثال اینجا اوردم ، ما یک شئی داریم در users به نام استیو جابز که دامینشم apple.com هست ، اینجا ما تو خط دوم یه کاربر دیگه با اسم steve jobs میاریم و اکتیو دایرکتوری این اجازرو به ما نمیده ! پس دوتا کار میتونیم بکنیم ، توی همون مسیر یه RDN دیگه تعریف کنیم ، مثلا سومی براش یه مشخصات تعریف کردیم که عدد 27 هست و سنشه ! یا میتونیم مثل گزینه اول مسیرشو عوض کنیم و یدونه RDN بهش اضافه کنیم که ما بردیمش تو sales و اینطوری DN عوض شد (نسبت به اصلی)

Access Tokens & SID :

قبل پرداخت به کانسپت های امنیتی یکم با مبحث Access Token و SID اشنا بشیم

Access Token یک شئی داخل کرنله که به Porcess یا Thread تعلق میگیره و سطح دسترسی و گروه و... های دیگشو تعیین میکنه ، این موارد امنیتین ، یک توکن خالی که به process یا thread خاصی تعلق نداره ارزشی نداره !

thread ها هم معمولا از process شون به ارث میبرن token و دسترسی هارو !

یک نمونه توکن :

ffffc4097ba54060

SID (Security IDentifiers)

درواقع یک شناسس برای شناسایی یوزر ، گروه و یا دامین و سطح دسترسیش ، درواقع از دیدگاه امنیتی به هر کدوم یه عدد اختصاصی داده میشه که بشه تشخیص دادشون

در اکتیو دایرکتوری DC این شناسه رو تولید میکنه برای هر شئی و اونو تو دیتابیس خودش ذخیره میکنه

هر SID فقط یکبار حق استفاده داره و بعد دلیت کردن Security principals هم حتی اون SID حق استفاده شدن نداره

نکته : چه زمانی مقدار SID یه شئی میتونه عوض بشه ؟ زمانی که منتقل بشه به یک DC دیگه !

نکته : تغییر مقادیر در هر object هیچ موقع SID شو عوض نمیکنه

نکته : اگر یک object توی یک دامین یک مقدار SID داشته باشه این مقدار SID در دامین دیگه برای همین object مورد قبول نیست

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

sIDHistory :

مقدار SID یک object که توی یک دامین بوده و منتقل شده به یه دامین جدید میره توی sIDHistory و به اون object یه SID جدید توی دامین جدیدی که امده توسط DC تعلق میگیره

نکته : از دیدگاه امنیتی این قسمت اگر درست کانفیگ نشده باشه میتونه مورد سوء استفاده قرار بگیره و یک object جدید ایجاد بشه و SID قدیمی اون object ای رو بگیره که منتقل شده به یه دامین دیگه ! و این خطرناکه ، برای جلوگیری از این حمله باید SID Filtering فعال باشه

یک مقدارم درمورد اجزا سطح دسترسی :

Authorization and access control components :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

در عکس بالا subject رو بگیرید یک برنامه که یه کاربر اجرا کرده و این برنامه سعی داره یک object (این object مال ویندوزه و با اونی که توی اکتیو دایرکتوری تا الان گفتیم یکی نیست !) مثلا Share folder رو بخونه و بهش دسترسی بگیره

اینجا اون شئی یه سری سطح دسترسی ویندوز براش تعریف کرده که هرکسی میخواد بهش دسترسی داشته باشه باید اون حد از دسترسی رو حداقل داشته باشه ، و اینجا یوزری که میخواد به این object دسترسی داشته باشه هم یه سطوح دسترسی ای داره (همون access token ای که گفتم) و حالا اینجا ویندوز میاد این دوتارو باهم مقایسه میکنه ، اگر سطوح دسترسی برنامه در حد اون object بود میتونه ازش استفاده کنه

یکم فنی تر توضیح بدم میشه اینکه اون object یه سری لیست دسترسی داره که بهش میگن ACE که تک تک اون ها با Access Token فرد تطابق داده میشن تا یک مورد Match پیدا بشه

مثال : فرض کنید شما میخواید وارد سینما بشید وسینما یه لیست داره از افرادی که میتونن وارد بشن ، وقتی شما میرید اونجا از باجه دم در یه بلیط یا Access Token میخرید ، روی اون بلیط شماره صندلی شمارو هم نوشته که مثلا 52 (مثلا ما فرض میکنیم اینطوریه) و وقتی شما میخواید از در رد بشید کارمند اونجا اول تو ذهنش میگه خب چه کسی حق داره از اینجا رد بشه ؟ یه لیست داره :

افرادی که حق عبور دارند :

مدیر سینما

مسئول فنی

فروشنده بلیط مستقر در باجه

نظافتچی و سایر کارکنان

مشتری دارای بلیط

و وقتی شمارو میبینه میگه خب شما گزینه اخر هستی ، یعنی 4 گزینه اول رو رد میکنه و وقتی به اخر میرسه میبینه سطح دسترسی شما با اون اخری Match شده و اصطلاحا اجازه عبور شمارو میده

این مکانیزم دقیقا تو ویندوز هست ، و اسم اون لیست در ذهن فرد دم در همون ACE هست که پایین میخوایم بهش بپردازیم :

Security principals :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

هر چیزیه که سیستم عامل بتونه احراز بکنه ، شامل یوزر ها ، اکانت ها ، گروه ها یا حتی Process ها و Thread ها که در چارچوب یوزر اجرا میشن ! مثلا اگر ما Tomcat رو داشته باشیم و اجرا بشه حتی Security principals اونم احراز میکنه !

در اکتیو دایرکتوری ها این Security principals ها object هایی هستن که متعلق به دامین هستن و سطح دسترسی کاربرا و .. رو به منابع تعیین میکنن ، ما ارکان دیگه ای هم برای تعیین سطح دسترسی مثل local user accounts و یا security groups داریم که توسط SAM مدیریت میشن و سطح دسترسی رو کنترل میکنن

نکته : کنترل سطح دسترسی کلا مقوله ایه که به چندین عامل وابستس ، مثلا شما وقتی گوشیتونو به ضبط ماشین وصل میکنید که آهنگ پخش کنید ، اگر صدا ضبط تا ته زیاد باشه و صدای گوشیتون خیلی خیلی کم باشه ، اهنگ صداش کمه و برعکس ، پس به همه عوامل بستگی داره ، مثال واقعی تر بخوام بزنم مثل NTFS Permission و Share Permission هست ، اگر هر هرکدوم مجوز ندن و اون یکی بده ، تا زمانی که یکیشون مجوز کم تعیین بکنه همون مجوز کم اعمال میشه !

Access Control List (ACL) :

یک لیستی هست از سطح دسترسی هایی که به یه Object اعمال میشن

وقتی یک object به دامین دیگری منتقل میشه ACL از روی SID اون object که تو لیستش داشته دسترسی بهش میداده و وقتی اون object توی sIDHistory نیاد ثبت کنه که من منتقل شدم و SID قدیمیش اونجا ثبت نباشه ، ACL مجوز بهش نمیده ! چون SID جدیدش جایی ثبت نشده ، ولی وقتی بیاد و SID قدیمیشو تو sIDHistory ثبت کنه و بره SID جدید بگیره ACL رهگیریش میکنه و مجوز های SID قبلی اون شئی رو روی SID جدیدش ست میکنه !

Access Control Entries (ACEs) :

یک Entry و مقداریه و مجوزی که به هر Object توی دامین چه دسترسی ای میشه داشت برای Trustee ها (Trustee همون اکانتای یوزر هاست ، یا گروه ها )

Discretionary Access Control List (DACL) :

تعریف میکنه که چه اصول امنیتی و قوانینی روی یک object اعمال و تعریف میشه

System Access Control Lists (SACL) :

لاگ برداری خودمونه ، که چه زمان چه یوزری سعی کرده به چه Object ای دسترسی بگیره

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

برای درک این موارد یکبار عکس نارنجی و ابی ای که بالا گذاشتم رو ببینید !

Foreign Security Principals :

این هم همینجا بگم ، وقتی یک شئی ای در اکتیو دایرکتوری ایجاد میشه برای بحث security principal منتها مروبط به forest دیگه ای هست (external forest یعنی forest خارجی)

فرض کنید از یک forest دیگه یک شئی مثلا یک کامپیوتر اضافه شده به دامین ما توی forest ما ، بلافاصله باید براش FSP تهیه بشه ، در این FSP یک چیز مهم یعنی SID اون شئی که تو forest خارجی بود هم ذخیره میشه و اگر ویندوز بخواد این شئی رو از طریق SID اش پیداش بکنه از طریق trust میره و از forest مبدا شئی میپرسه

این FSP ها در کانتیر خاصی قرار میگیرن "ForeignSecurityPrincipals" و RN شونم اینطوریه :

cn=ForeignSecurityPrincipals,dc=mamad,dc=com.

sAMAccountName :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

این درواقع اسمیه که کاربر باهاش وارد میشه و logon میکنه ، این اسم باید منحصر بفرد و یکتا باشه و کمتر از 20 کاراکتر باشه

(فلش صورتی)

userPrincipalName :

اینم یه روش دیگس برای اینکه کاربرا رو بشه پیدا کرد ، یک attribute که یک پیشوند داره که همون اسم یوزره و پسوند که دامینه

(تو عکس بالا با فلش بنفش مشخصه)

Service Principal Name (SPN) :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

ساده بگم کاربرا در اکتیودایرکتوری با استفاده از SPN میتونن سرویس هارو تو اکتیو دایرکتوری پیدا کنن ، اگر واسه یه سرویسی SPN نباشه نه کاربرا میتونن پیداش کنن نه Kerberos

SPN درواقع یک Instance از سرویس هست ، SPN ها توسط Kerberos استفاده میشن که یک logon account رو به Service Instance تخصیص بده ؛ یعنی به یه اپلیکیشن (Client Side Application) ، اجازه میده که به یه سرویس درخواست بزنه که احراز بشه بدون اینکه نیاز باشه اسم اکانت رو بدونه

(این مفهوم الان یکم براتون شاید گنگ باشه ، وقتی Kerberos و توضیح دادم اونجا کامل درکش میکنید)

(این مفهوم تو بحث Persist و Priv Esc در اکتیو دایرکتوری خیلی بدردتون میخوره !)

لینک مقاله Kerberos

Replication :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

Replication یا تکرار زمانی اتفاق میفته در اکتیو دایرکتوری قصه ما که اشیاء ما Update میشن و و از یه DC به DC دیگه منتقل میشن

وقتی به AD ما یه DC اضافه میشه ، بین DC ای که از قبل بوده و DC جدید یه لینک ارتباطی صورت میگیره که بهش میگن "connection objects" و کل اشیاء از DC قبلی کپی میشن میرن DC جدید

در هر DC در اکتیو دایرکتوری یه سرویسی هست به نام Knowledge Consistency Checker (KCC) که یه برنامس به زبان ساده و مسئولیتش همین Replication هست و این لینک ارتباطی که خط بالا گفتم "connection objects" رو اون ایجاد میکنه و مسئول انتقال Object هاست

دلیل وجود replication اینه که اول مطمئن بشیم دیتا ها به صورت منظم و کامل در کل DC ها وجود داره و همه یه نسخه از اون دیتا رو دارند و درواقع اگر یه DC به مشکل خورد ما بکاپ داشته باشیم

نکته : Replication فقط بین DC های یک Forest صورت میگیره

SYSVOL :

sysvol یک پوشس (folder) یا میتونه (share) هم باشه ، که فایل های public روی توی دامین رو ذخیره میکنه و کپی میگیره ازشون ، مثل system policies - Group Policy settings - logon/logoff scripts و..

همچنین شامل تمامی اسکریپت هایی میشه که تو AD اجرا شدن تا task خاصی رو انجام بدن

دیتاهای sysvol هم برای سایر DC های دیگه Replicate میشه ولی توسط یه چیز دیگه به اسم "File Replication Services (FRS)"

Sysvol
|____
| |____Policies
| |____Scripts
| |____ DO_NOT_REMOVE_NtFrs_PreInstall_Directory
| |____ NtFrs_PreExisting___See EventLog
|
|____Enterprise
| |____Policies
| |____Scripts
|
|____Staging
| |____Domain
| |____Enterprise
|
|____Staging Areas
| |____Enterprise (junction> = SysvolStagingEnterprise)
| |____Your Domain Name (junction> = SysvolStagingDomain)
|
|____Sysvol
| |____Enterprise (junction> = SysvolEnterprise)
| |____Your Domain Name (junction> = SysvolDomain)

Read-Only Domain Controller (RODC) :

یک نوع خاص از DC هست که اطلاعاتش فقط خواندیه و database اش در حالت read-only هست، هیچگونه پسورد هیچ حسابی در AD در RODC نمیمونه (Cache نمیشه) { البته بجز پسورد خود اکانت RODC و پسورد های RODC KRBTGT}

هیچ تغییراتی روی این RODC صورت نمیگیره ، روی نمیشه AD database یا SYSVOL یاحتی DNS سرورشو تغییر داد چون Read only هست ! و تغییرات sysvol از به بقیه DC ها منتقل نمیشه !

نکته : برخلاف اکانت های AD ، ما نمیتونیم به صورت مستقیم و تعاملی به اکانت krbtgt لاگین کنیم و باهاش تعامل داشته باشیم ، چون یه اکانت Built-in هستش و نام krbtgt هم نمیشه عوض کرد !

نکته : به رخش نگاه نکنید که خیلی امنه ، میزنیم میترکونیمش :)

نکته : این مفاهیم اگر براتون گنگه باید حتما Kerboros و ساختارشو یادبگیرید تا اینا براتون جا بیفته !

FSMO Roles :

خب خب ، بشینید میخوام براتون قصه بگم :

یکی بود یکی نبود ، توی AD کبود ، مشکلی بود بین DC ها بر سر مدیریت و فرمان دهی ، لوس بازی بسه

در اوایل شکل گیری AD یه مشکلی بود بر سر اینکه کدوم DC تصمیم بگیره و تغییراتو اعمال کنه ، مایکروسافت امد و یه حرکتی زد ، گفت قانون "last writer wins" رو بیام بنویسم که میگه هرکی اخر همه نوشت اون اعمال بشه ، که خب مشکلش این بود که اگر اخری تغییرات اشتباهی میخواست بده چی؟ سازمان باید به فنا میرفت ؟

مایکروسافت امد گفت خب اولین DC دامینتون که root level هم هست (والد همه هست) بیاد تصمیم بگیره ، درواقع حالت master - slave ایش کرد و خب مشکلی که داشت این بود که اگر اون DC از دسترس خارج میشد کل سازمان به مشکل میخورد ! و مشکل SPF (Single Point of Failure) رو داشت

مایکروسافت امد گفت ، خـب حالا ما بیاییم وظایف رو بین DC ها تقسیم کنیم و امد Flexible Single Master Operation (FSMO) رو ساخت

این قوانین به DC ها اجازه میده که بدون تداخل باهم دیگه کاربران رو احراز بکنن

این 5 قانون به این صورتن :

Schema Master and Domain Naming Master (یدونه برای کل forest), Relative ID (RID) Master (یدونه برای هر دامین), Primary Domain Controller (PDC) Emulator (یدونه برای هر دامین), and Infrastructure Master (یدونه برای هر دامین)

تمامی قوانین به اولین DC توی forest ما اعمال میشه و اگر دامین جدیدی به forest ما اضافه بشه ، به DC اش فقط سه تا قانون اضافه میشه : RID Master، PDC Emulator و Infrastructure Master

این قوانین به کار کردن صحیح و روان شبکه کمک میکنن ، ترافیک replication رو هم کنترل میکنن و...

  • Schema Master :

این قانون کل عملیات های read / write و copy رو در اکتیو دایرکتوری مشخص میکنه ، یعنی میشه تمامی attribute هایی که اعمال میشه به یه object در AD

Domain Naming Master : مدیریت نام دامنه ها رو انجام میده و مطمئن میشه که توی یک forest دوتا دامین با نام یکسان نداریم

  • Relative ID (RID) Master :

قبل اینکه اینو بگم بزارید RID رو بگم :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

درواقع rid قسمتی از sid هست که باعث منحصر به فرد شدنش میشه

حالا RID Master چیکار میکنه ؟ یه مشت از این RID ها میده به DC که هر شئی امد تو شبکه بهش اختصاص بده و کار اصلی RID ام منحصر به فرد کردنه یعنی اگر Domain identifier چند شئی یکی شد از لحاظ RID متفاوت باید باشن

  • PDC Emulator :

این دوست عزیز وظیفش چیه ؟

اگر هاستی یا همون کامپیوتری این قانون بهش اعمال بشه توی دامین ، یک DC معتبر میشه و میتونه احراز هویت ها و اعمال مربوط به امنیت مثل تعویض پسورد ، احراز هویت ، GPO و... رو انجام بده

(زمان هم دست این دوست عزیزمونه)

  • Infrastructure Master :

این قانونم وظیفه تقسیم GUID - SUID - DN رو دامین ها داره (توی یک forest) و نشونه خرابی این قانونم وقتیه که ACL بجای اینکه نام کامل یک شیئو نشون بده SID شو نشون بده ! اونوقته که باید این Infrastructure Master درست بشه

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

AD Recycle Bin :

نوبتیم که باشه نوبت سطح آشغاله :)

اما کاربردش چیه ؟ اگر در AD قصه ما Recycle Bin فعال باشه و ما شئی را پاک کنیم میره توش و اگر بخوایم برش گردونیم نیاز به بکاپ نیست ، برای مدت خاصیم اون شئی رو نگه میداره تو خودش و بعدش کامل پاکش میکنه

زمانش دست خودتونه و اگر ست نکنید پیشفرض 60 روز نگه میدار

Tombstone :

این هم یک مکانیه در اکتیو دایرکتوری قصه ما که اشیاء حذف شده رو نگه میداره

وقتی شئی پاک میشه اگر Recycle bin فعال نباشه میاد اینجا و تمام فلگ هاش پاک میشه و فلگ isDeleted مقدارش True میشه و مثل recycle bin مدت زمان داره که بهش میگن Tombstone Lifetime که اگر بگذره دیگه فایلو کامل پاک میکنه

نکته : فرق بین Recycle Bin و Timbstone چیه ؟ اگر شئی بره توی Recycle bin تمام attribute هاش حفظ میشه ولی اگر بره تو Tombstone تمام attribute هاش پاک میشه

Fully Qualified Domain Name (FQDN) :

به نام کامل میگن FQDNو ساختارش اینطوریه :

[host name].[domain name].[tld]

و برای این بکار میره که مکان یه شئی رو در DNS پیدا کنیم ، کاربرد FQDN اینه که بدون دونستن آیپی یک شئی اون رو در AD پیدا کنیم ، دقیقا مثل google.com که شما ایپیشو نمیدونید ولی نامشو میزنید و سایت میاد

سمپلشم اینطوریه :

Ali01.mamad.com

و ali01 نام hostname هستش ، برای کاربر علی ! حالا 01 میتونه هرچی باشه عدد سن باشه هرچی!

Active Directory Users and Computers (ADUC) :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

برنامه گرافیکی ADUC برای مدیریت AD ، البته با پاورشل هم میشه باهاش ارتباط گرفت

ADSI Edit :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

یه برنامه گرافیکی برای مدیریت اشیاء در AD ، تفاوتش با ADUC اینه که میشه attribute هارو مدیریت کرد و روی تک تک اشیاء کنترل کامل داشت

AdminSDHolder :

این داداشمون یک شیء هست که برای مدیریت ACLs های اعضا داخل گروه ( built-in groups in AD ) که سطح دسترسی بالاییم دارن در AD وجود داره

درواقع مثل مفاهیم دیگه یه فضایی هست که سطح امنیتی اعضایی که جزو گروه محافظت شده ( protected groups ) هستن رو چک میکنه

خب ما یه پردازش هم داریم به اسم SDProp (SD Propagator) که روی نظم (هر یک ساعت یکبار) اجرا میشه و میاد سطوح دسترسی داخل شئی AdminSDHolder رو با سطوح دسترسی داخل روی یکی از قوانین RODC ای که بالاتر معرفی کردم (PDC Emulator Domain Controller)

فک کنید یه مهاجم رفته و یک ACL entry آلوده ایجاد کرده که مجوز های دسترسی یک یوزر خاص رو بگیره ، که این یوزر صد در صد چون سطح دسترسیش بالاعه جزو Domain Admins group هست

اگر تنظیمات دیگه ای در AD رو هم عوض نکنه و فقط به این بسنده کنه ، وقتی SDProp process قصه ما اجرا بشه و سطح دسترسی هارو چک کنه ، پرتــــش میکنه بیرون

(ما با این دوست عزیز تو تست نفوذ اکتیو دایکتوری خیلی کار داریم)

dsHeuristics :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

dsHeuristics در واقع یک رشتس (string) که روی service object ها اعمال میشه و تنظیمات و Configuration رو تعیین میکنه در کل یک forest

اگر AdminSDHolder بالا رو خونده باشید شاید یکم گیج بشید که چرا گفتی built-in groups بعد گفتی protected groups ، جریان چیه ؟

یکی از این تنظیمات اینه که بیاد و built-in groups رو از Protected Groups جدا کنه (exclude) ، خاطرتون هست که گفتم گروه های Protected توسط شئی AdminSDHolder و پردازش SDProp محافظت میشن و بعد یه مدت خاص هر تغییری که توی protected groups انجام توسط SDProp برمیگرده به حالت اولش؟ حالا اگر ما بیاییم یک گروه رو جدا کنیم از Protected Groups ، یعنی بهش یک dsHeuristics attribute بزنیم دیگه SDProp به اون گروه کاری نداره و هر تغییری که اعمال شه داخل اون گروه دیگه SDProp برش نمیگردونه به حالت قبل و اولش !

adminCount :

یک attribute داریم در AD به نام adminCount که میاد میگه آیا SDProp process از یه user محافظت میکنه یا ن

اگر مقدار این attribute عدد 0 بود یا مشخص نشده بود "not specified" پس یعنی SDProp process از اون کاربر محافظت نمیکنه

اگر مقدارش value بود یعنی محافظت میکنه

الان شاید براتون سوال بشه که مقدار "1" چی پس ؟ اگر مقدار 1 بود یعنی اون اکانت سطح دسترسی خیلی بالایی داره

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

NTDS.DIT :

مهم ترین فایل توی اکتیو دایرکتوری این فایله ، توی هر DC ما این فایلو داریم در مسیر

C:WindowsNTDS

و درواقع همون دیتابیسه ما هست که کل کل اشیاء و عضویت ها و.. همه چیو تو خودش ذخیره میکنه

و مهم تر از همه پسورد های هش شده کل کاربران اون دامین 🤩

و دیگه میدونید که میتونید کرک کنید یا pass-the-hash بزنید ، و درضمن اینم بگم که اگر توی تنظیمات "Store password with reversible encryption" فعال باشه پسورد cleartext هم ذخیره میشه توش که بعیده (یعنی اون شبکه احرازش مبتنی بر kerberos نباشه و مبتنی بر پسورد cleartext باشه (😑 مگه میشه ؟)

بررسی دقیق Trust :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

در اکتیو دایرکتوری ما سه نوع trust داریم :

  1. two-way trust
  2. one-way incoming trust
  3. one-way outgoing trust

در اولی خب معلومه هر دو سر rtust ما بهم متصلن و ارتباط دارن

در دومی که ورودی یک طرفه هست ، در عکس بالا قسمت پایینش میبینید یک لینک ارتباط وارد شده به لنوو از ایسوز ، به این حالت میگن one-way incoming trust از ایسوز پس کاربران لنوو میتونن توی شرکت ایسوز احراز بشن (اینو پایین تر توضیح میدم)در سومی باز همون لینکه ولی اینبار از دید ایسوز اگر نگاه کنیم داره one-way outgoing trust میزنه به لنوو و یعنی کاربران لنوو میتونن احراز بشن در ایسوز

دقت کنید اگر incoming trust باشه مجوز دسترسی میشه outgoing access (لنوو داره trust از سمت ایسوز میگیره ولی به ایسوز دسترسی گرفته) و اگر outgoing trust باشه هم دسترسی incoming trust میشه ( ایسوز داره به سمت لنوو trust میفرسته ولی این لنوو عه که دسترسی میگیره به ایسوز)نکته : trust هارو معمولا خوب تنظیم امنیتی نمیکنن سر همین ممکنه مشکل ساز بشه حملا و بهش حمله بشه و چون دسترسی هارو به دامین های دیگه باز میکنه خیلی خطرناک و گوگولیه :)

در مثال با لا به asus میگن trusting که داره دسترسی رو باز میکنه و اجازه میده که لنوو وارد بشه و به لنوو که دسترسی داره به ایسوز میگه trusted یا مورد اطمینان واقع شدهفرق بین transitive و non-transitive :

در اکتیو دایرکتوری ما forest داریم که چندین دامین توش داره که این دامین ها به صورت پیشفرض بهم trust دارن

فرض کنید مثال بالا ما apple داریم و dell که dell فقط یدونه root domain هست ولی apple رو با دوتاتا child پایینش یعنی sales و tech در نظر بگیرید ، وقتی بین apple و dell یه trust داریم از نوع forest (مثلا فرض کنید چون توی عکس اینطوری نیست) ، dell نه تنها به خود اون apple دسترسی داره بلکه به child هاشم دسترسی داره ، به این میگن transitive trusts یعنی سطح دسترسی تا child ها و اشئیاشون ادامه داره ! و این یه ویژگیه برای هر trust و Non-transitive trusts فقط بین خود اون دوتا دامین یا هرچیزیه و مجوز دسترسی به child ها داده نمیشه !انواع trust

  • Parent-child :

بین دامنه های درون یک forest هست و بین child ها و parent هست ، رابطه دو طرفه و transitive هست (معنیشو پایین تر میگم)

  • Cross-link :

بین child هاست ، معمولا برای افزایش سرعت احراز هویته

  • External :

بین دو دامین مختلف در forest های مختلفو جدا که قبلا توسط forest trust بهم وصل نشدن ، این نوع از فیلتر SID استفاده میکند و این ارتباط non-transitive هست

  • Tree-root :

یک ارتباط دو طرفه transitive هست بین root domain یک forest و یک tree root domain جدیدو وقتی یک tree میسازیم این ارتباط شکل میگیره

  • Forest :

یک ارتباط transitive بین دوتا forest root domain

بهتون حتما توصیه میکنم یکباره دیگم این مقاله رو بخونید تا کامل جا بیفته ، با یکبار خوندن کامل نمیفهمیدش !

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

تقریبا تمـامـی عکس های این مقاله رو خودم درست کردم و کپی فقـط با ذکر منبع جایزه !

رفرنس اکثر مطالب این مقاله کتاب Active Directory, 3rd Edition و کتاب Mastering Active Directory,3rd Edition و داکیومنت های خود مایکروسافت هست

بازدید : 16
سه شنبه 12 فروردين 1404 زمان : 0:54

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

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

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

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

1. بهترین روش های طراحی وب سایت

هدف خود را بشناسید شناسایی مخاطبان خود به شما کمک می کند تا برند سایت را تنظیم کنید و طراحی آن را مطابق با آن سفارشی کنید. در اینجا چندین روش برای کمک به درک مخاطبان وجود دارد:

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

بهترین روش های طراحی وب

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

2. ایجاد پالت رنگی برای بازدید بیشتر وب سایت

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

بیشتر بدانید : آموزش راه اندازی وب سایت بدون برنامه نویسی

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

از قانون 60/30/10 پیروی کنید. یک رنگ اصلی را انتخاب کنید که 60٪ از سایت شما را تشکیل می دهد و یک رنگ ثانویه برای 30٪ . 10% نهایی باید از رنگ برجسته ای استفاده کند که یا متضاد یا مکمل رنگ اصلی باشد. رنگ های مکمل را اجرا کنید. در یک سایت پیمایش طولانی، استفاده از رنگ های مکمل مانند زرد و بنفش را برای تشخیص بخش ها در نظر بگیرید.به عنوان مثال، پالت رنگ در وب سایت Trevor Blount Pilates از سه رنگ اصلی تشکیل شده است ، کرم به عنوان اصلی، سیاه به عنوان رنگ ثانویه و قرمز به عنوان رنگ برجسته. این ترکیب یک طرح رنگی ساده و در عین حال هماهنگ ایجاد می کند و تمرکز را روی عنوان وب سایت و تصویر برجسته قرار می دهد. سایت Trevor Blount Pilates عنوان و تصویر قهرمان را در مرکز نمایش می دهد.

بهترین روش های طراحی وب

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

بیشتر بدانید : اموزش ساخت فروشگاه و سایت پیشرفته

3. تایپوگرافی مناسب برای بازدید بیشتر وب سایت

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

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

بهترین روش های طراحی وب

اندازه متن متناسب را تنظیم کنید یک قانون خوب این است که متن وب سایت خود را روی حداقل اندازه 16 پیکسل یا 12 POINT تنظیم کنید. برای آزمایش اندازه متن و پیش نمایش نحوه نمایش آنها در سایت، از ابزارهای آنلاین مانند Gridlover استفاده کنید. از 50 تا 75 کاراکتر در هر خط استفاده کنید. برای جلوگیری از خستگی و خستگی چشم، کاراکترهای بیشتری اضافه نکنید.

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

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

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

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

  • ترکیب : ترکیب به سازماندهی عناصر وب سایت برای دادن ساختار منسجم به سایت شما اشاره دارد. یک چارچوب پرکاربرد قانون یک سوم است. این روش با استفاده از شبکه‌ای از 9 کادر، یک طرح یا عکس را به یک سوم تقسیم می‌کند و دستورالعمل‌هایی را برای تراز کردن متن، تنظیم اشیا و به طور کلی چیدمان عناصر ارائه می‌کند. نمونه ای از این قانون در عمل صفحه فرود هاستینگر است که در آن عناصر به سه شبکه عمودی تقسیم می شوند. صفحه فرود هاستینگر، با نمایش متن "Hosting + Free Domain" در مرکز

بهترین روش های طراحی وب

  • مقیاس : در طول فرآیند طراحی وب سایت، می توانید از مقیاس برای جلب توجه به جزئیات مهم استفاده کنید. در اینجا برخی از بهترین شیوه های طراحی وب برای استفاده از تفاوت اندازه به نفع خود آورده شده است: چوب با سه اندازه در حداکثر. اندازه های کوچک، متوسط و بزرگ کافی است تا در عین داشتن سلسله مراتب وب سایت، تنوع را به شما بدهد. به طور کلی، اندازه ها از 14 پیکسل تا 16 پیکسل برای کپی متن، 18 پیکسل تا 22 پیکسل برای عنوان های فرعی و حداکثر تا 32 پیکسل برای عنوان ها متغیر است. عناصر مهم را بزرگ کنید حداکثر دو عنصر کلیدی را برای بزرگ‌ نمایی انتخاب کنید تا برجسته شوند. به عنوان مثال، وب سایت FluxAcademy با استفاده از یک فونت بزرگ بر روی کپی تأکید می کند. سایت فلوکس آکادمی متن بزرگی را در مرکز نمایش می دهد که می گوید "هنر و تجارت طراحی وب را بیاموزید"

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

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

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

بیشتر بدانید : دوره ها و اموزش های لازم برای ساخت وبسایت

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

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

بهترین روش های طراحی وب

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

در بخش‌های بعدی، بهترین شیوه‌های طراحی وب برای عناصر ناوبری را مورد بحث قرار خواهیم داد.

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

بیشتر بدانید : هاست چیست؟

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

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

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

2. CTA ها و دکمه ها را به صورت استراتژیک قرار دهید عملکرد اصلی یک فراخوان برای اقدام (CTA) این است که بازدید کنندگان را به انجام اقدامات و صرف زمان بیشتری در وب سایت شما سوق دهد. خواه یک متن، تصویر یا دکمه باشد، باید آن را در جایی قرار دهید که به راحتی برای بازدیدکنندگان قابل مشاهده باشد. نکته تخصصی برای ایجاد یک CTA متقاعد کننده، از کلمات ساده، قابل درک و کاربردی استفاده کنید، مانند «شروع به کار»، «بیشتر بدانید» و «افزودن به سبد خرید».

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

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

بیشتر بدانید : تفاوت هاست و دومین در چیست؟

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

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

بهترین روش های طراحی وب

  • 1. سئو را تقویت کنید: بهینه سازی موتورهای جستجو (SEO) در هر استراتژی بازاریابی دیجیتال بسیار مهم است. این به بهبود رتبه سایت شما در نتایج موتورهای جستجو، جذب بازدیدکنندگان بیشتر و افزایش تبدیل کمک می کند. شما می توانید سئوی سایت خود را با رعایت نکات آزمایش شده و آزمایش شده سئو وردپرس افزایش دهید. به خاطر داشته باشید که بیشتر توصیه‌ها برای سایت‌های غیر وردپرس نیز قابل اجرا هستند، مانند : توضیحات متا با کیفیت بنویسید. یک توضیح جذاب، بازدیدکنندگان را تشویق می کند تا روی آن کلیک کنند و ترافیک ارگانیک بیشتری را به سایت شما بیاورند. متن های جایگزین را اضافه کنید توصیف تصاویرتان با متن جایگزین، دسترسی افرادی را که از صفحه‌خوان‌ها استفاده می‌کنند، بهبود می‌بخشد و به موتورهای جستجو مانند Google کمک می‌کند محتوای شما را درک کنند.ساختار URL را بهینه کنید. برای کمک به موتورهای جستجو در یافتن و درک بهتر محتوای سایت شما، کلمه کلیدی تمرکز را در URL خود قرار دهید. علاوه بر این، اجرای استانداردهای کدنویسی زیر سئوی سایت شما را نیز بهبود می بخشد.

  • 2. از یک رویکرد موبایل اول استفاده کنید : 50 درصد از ترافیک ارگانیک از دستگاه های تلفن همراه می آید، بنابراین مطمئن شوید که سایت شما برای موبایل مناسب است. با رویکرد اول موبایل، طراحان سایت موبایل را قبل از رفتن به نسخه دسکتاپ ایجاد می کنند. در حالی که یکپارچه سازی یک طراحی واکنش گرا گزینه خوبی است، استفاده از این رویکرد به شما مزیتی می دهد. شروع با تلفن همراه و رفتن به صفحه نمایش های بزرگتر بسیار ساده تر خواهد بود، زیرا نیازی به حذف عناصر یا بازسازی کل طرح برای جا دادن صفحه نمایش های کوچکتر نخواهد بود. در اینجا چندین بهترین روش طراحی وب برای طراحی یک وب سایت سازگار با موبایل آورده شده است: اول محتوا را قرار دهید قبل از افزودن عناصر دیگر، محتوای مهم را اولویت بندی کنید تا بازدیدکنندگان بتوانند به راحتی آنچه را که به دنبال آن هستند پیدا کنند. ناوبری را بصری کنید. از یک منوی بصری مانند دکمه همبرگر استفاده کنید زیرا بازدیدکنندگان به طور کلی با آن آشنا هستند و فضای زیادی را اشغال نمی کند. همچنین، یک نوار جستجو اضافه کنید تا یافتن مطالب دیگر آسان شود. پاپ آپ های مخرب را کاهش دهید. در تلفن همراه، بازدیدکنندگان ممکن است به طور تصادفی روی یک پنجره بازشو کلیک کنند و در هنگام تلاش برای بستن آن، تجربه کاربری ناخوشایندی ایجاد کند. سایت خود را تست کنید برای بررسی اینکه آیا سایت شما برای موبایل مناسب است یا خیر، از تست دوستدار موبایل گوگل یا ابزارهای دیگر استفاده کنید.وب سایت پاسخگوی تلفن همراه HubSpot یک نمونه عالی از این رویکرد است، با متنی آسان برای خواندن، منوی همبرگر، و نوار جستجو برای اطمینان از ناوبری روان.

بیشتر بدانید : استفاده از هاست یا سرور ؟

  • 3. سایت را ایمن نگه دارید : ایمن سازی وب سایت شما برای ایجاد اعتبار و جلوگیری از ضررهای مالی و داده ها ضروری است. حتی اگر از یک پلت فرم امن مانند وردپرس استفاده می کنید، اجرای اقدامات امنیتی اضافی وب سایت به جلوگیری از تهدیدات سایبری کمک می کند. گواهی SSL دریافت کنید. با گواهی SSL، انتقال داده ها بین سایت و بازدیدکنندگان آن رمزگذاری می شود تا از دسترسی کاربران غیرمجاز جلوگیری شود. این به محافظت از داده‌های بازدیدکنندگان کمک می‌کند، به‌ ویژه اگر سایت شما از آن‌ها بخواهد اطلاعات حساسی را ارسال کنند. از اعتبار ورود خود محافظت کنید. رمزهای عبور قوی ایجاد کنید و مرتباً آنها را به روز کنید. با استفاده از مدیریت رمز عبور مانند Password و فعال کردن احراز هویت دو مرحله ای، اعتبار خود را ایمن نگه دارید. نرم افزار ضد بدافزار نصب کنید. به طور منظم کل سایت خود را برای بدافزار اسکن کنید.یک میزبان وب امن انتخاب کنید. انتخاب یک پلتفرم میزبانی قابل اعتماد مانند هاستینگر، امنیت سایت شما را با گواهینامه های رایگان SSL و ویژگی های امنیتی سرور تقویت می کند.

  • 4. بهینه سازی عملکرد سایت : اگر فرآیند بارگذاری بیش از 3 ثانیه طول بکشد، 40 درصد از بازدیدکنندگان سایت را ترک خواهند کرد. از این رو، بهینه سازی عملکرد سایت شما باید در اولویت باشد. برای شروع، سرعت سایت خود را با ابزارهایی مانند GTmetrix بررسی کنید تا مشکلات را شناسایی کرده و پیشنهاداتی برای رفع آنها دریافت کنید. وب سایت شما چقدر سریع بارگذاری می شود؟ با GTmetrix آشنا شوید. همچنین هنگام بهینه سازی وب سایت به این نکات توجه کنید: فعال کردن کش مرورگر ، کش کردن محتوا را در حافظه محلی ذخیره می کند، بنابراین مرورگرها نیازی به بازیابی فایل های سایت شما از سرور ندارند و سرعت بارگذاری را بهبود می بخشد. کد خود را کوچک کنید کاراکترها و خطوط غیر ضروری را از فایل های HTML، CSS و جاوا اسکریپت خود حذف کنید. یک شبکه تحویل محتوا (CDN) راه اندازی کنید. انتخاب یک برنامه میزبانی وب با CDN یک راه مناسب برای بهبود سرعت سایت است، زیرا محتوای ثابت را از نزدیکترین سرور به بازدیدکنندگان سایت ارائه می دهد.

  • 5. طراحی برای دسترسی : دسترسی به وب یکی دیگر از جنبه های مهم طراحی وب است که به افراد دارای معلولیت کمک می کند تا به راحتی به محتوای شما دسترسی داشته باشند. هنگام طراحی برای دسترسی به وب، از استانداردهای دسترسی W3C مانند اضافه کردن متن های جایگزین و توجه به کنتراست رنگ سایت خود پیروی کنید. برای پیمایش بهتر، پیوندهای قابل دسترسی با صفحه کلید ایجاد کنید. در نهایت، از ابزارهای تست تایید شده توسط Web Accessibility Initiative استفاده کنید تا بررسی کنید که آیا وب سایت شما با استانداردهای دسترسی W3C مطابقت دارد یا خیر. پیاده‌ سازی ویژگی‌های دسترس‌ پذیری تجربه کاربر را بهبود می‌بخشد، ترافیک ارگانیک بیشتری را به ارمغان می‌ آورد و سئوی سایت شما را افزایش می‌دهد. نکته تخصصی در آخرین مرحله از فرآیند طراحی وب سایت خود، خوب است که طراحی وب خود را ارزیابی کنید. در نظر بگیرید که آیا هدف خود را برآورده می کند و آیا بازدیدکنندگان می توانند به راحتی محتوا را اسکن و پیمایش کنند. برای انجام این کار، می توانید از یک نقشه حرارتی آنلاین مانند نقشه حرارتی هوش مصنوعی Zyro یا یک ابزار تست قابلیت استفاده سریع مانند Maze استفاده کنید.نتیجه طراحی وب سایت مستلزم آزمون و خطای زیادی است.

با این حال، دانستن بهترین روش‌های طراحی وب به شما یک پایه محکم در هنگام تصمیم‌گیری در مورد طراحی می‌دهد. در این مقاله، تمام آنچه را که باید در مورد طراحی یک وب سایت جذاب بر اساس استانداردهای طراحی وب و اصول UI/UX بدانید، پوشش داده ایم. به خاطر داشته باشید که هیچ راه درستی برای طراحی یک وب سایت وجود ندارد – چیزی که برای یک سایت مناسب است ممکن است برای سایت دیگر کارایی نداشته باشد. جنبه کلیدی که باید به خاطر بسپارید اولویت بندی ثبات، دسترسی و تجربه کاربر است. امیدواریم این مقاله برای شما مفید بوده باشد.

بازدید : 17
سه شنبه 12 فروردين 1404 زمان : 0:50

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

مشخص کردن حداقل سطح API

در اندروید بیشتر سطح API برای برنامه نویسان مهم است. برای مثال اندروید API سطح 25 همان اندروید 7.1 می باشد. حال می توان داخل پروژه اندروید مشخص کرد که حداقل نسخه ای که برنامه ما باید پشتیبانی کند چه نسخه ای و چه سطح API می باشد. برای این کار در داخل فایل androidmanifest.xml باید کد های زیر را بیاوریم. قسمت minsdk مشخص می کند که حداقل سطح api که باید پشتیبانی کنیم کدام سطح است و سطح API که می خواهیم برای آن برنامه بنویسیم کدام است

 

در این کد می گوییم که حداقل نسخه ای که پشتیبانی می شود نسخه 17 یا همان اندروید نسخه 4.2 می باشد ولی این برنامه برای اندروید 7 نوشته می شود. یعنی اگر یک دستگاه که نسخه 4 هست نمی تواند برنامه ما را نصب کند. حال ما نسخه هدف یا targetversion را برابر آخرین نسخه قرار می دهیم در این حالت می توانیم از قابلیت هایی که در نسخه های آخر اضافه شده است در دستگاه هایی که نسخه آخر را دارند استفاده کنیم.

مشخص کردن نسخه اندروید در زمان اجرا

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

if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP_MR1){
    //android 5 or higer
}

کد بالا بررسی می کند که نسخه اندروید بالاتر از 5 می باشد یا خیر.

دقت داشته باشید که اگر در داخل فایل های xml شما از قابلیت های اندروید بالا تر استفاده کنید و برنامه را بر روی دستگاه با اندروید نسخه پایین تر نصب کنید اندروید آن قابلیت هایی را که شناسایی نمی کند نادیده می گیرد.

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

بازدید : 13
پنجشنبه 14 فروردين 1404 زمان : 3:43

چگونه مشکل Gradle در اندروید استودیو را حل کنیم؟ دوستانی که می خواهند برنامه نویسی اندروید را با استفاده از اندروید استودیو شروع کنند ممکن است در ابتدای کار به یک مشکل برخورد کنند. یعنی هنگامی که شما برای بار اول یک پروژه در اندروید استودیو می سازید ممکن است که پروژه شما BUILD نشود. حالا دلیل آن چیست؟ پیام می دهد که gradle نتوانست فلان پکیج را بگیرد و build کند. حالا برای این چه کاری باید انجام داد؟ در این مطلب این مشکل را توضیح می دهیم. این مشکل از آنجایی مهم است که شما ویدیو های آموزشی زبان خارجی را هم اگر ببینید این مشکل در آنها وجود ندارد و فقط این مشکل برای ما به وجود می آید. عکس زیر یک پیام از همین نوع خطاها به ما نشان داده می شود.

تعریف gradle

برای توضیح این مشکل اول باید ببینیم که gradle که این همه با آن در اندروید استودیو درگیر هستیم چیه. Gradle یک سیستم build manager و یک dependency manger می باشد. حالا اینا که گفتم یعنی چی. ببینید در زبان های جدید مثل جاوا و سی شارپ ما در پروژه های خودمون از پکیج ها و کتابخانه های مختلفی استفاده می کنیم.اگر ما خودمون فایل های jar برای جاوا و یا فایل های dll برای سی شارپ را دانلود کنیم و به برنامه اضافه کنیم به مشکلات زیادی برخورد می کنیم. چرا که مکان فیزیکی فایل ها را برای ادرس دهی مد نظر قرار می دهیم و اگر پروژه را جابه جا کنیم و یا فایل کتابخانه مورد نظر را جابه جا کنیم برنامه خطا میدهد و کلی دردسر برای شما پیش خواهد آمد.

برای حل این مشکل در زبان های مختلف و تکنولوژی های مختلف سیستم هایی قرار داده شده است که برنامه وابستگی های خود را از آنها تامین می کند و کتابخانه هایی را که می خواهیم اضافه کنیم را مدیریت می کند. حالا اگر بخواهیم کتابخانه را آپدیت کنیم از این سیستم استفاده می کنیم. اگر بخواهیم کتابخانه دیگری اضافه کنیم از این سیستم استفاده می کنیم. اگر بخواهیم برنامه را به جای دیگری ببریم می توانیم کتابخانه ها را با استفاده از این سیستم دانلود کنیم.به این نوع سیستم ها build manager یا dependency manager گفته می شود. از سیستم های مدیریت وابستگی می توان nugget را در تکنولوزی دات نت نام برد. در زبان جاوا می توان سیستم های maven , gradle را نام برد. اندروید استودیو برای مدیریت وابستگی ها از gradle استفاده می کند.

حل مشکل خطای gradle

برای حل خطای این مشکل که گفتیم باید سیستم gradle بتواند کتابخانه های خود را از اینترنت دانلود کند. اکثر کتابخانه هایی که در اندروید استفاده می شود در سایت گوگل وجود دارد. دسترسی به قسمت اندروید سایت گوگل برای کاربران ایرانی مسدود می باشد و کاربران ایرانی نمی توانند از این سایت کتابخانه ای دانلود کنند.

الان متوجه می شویم که دلیل این که در فیلم های آموزشی خارجی این مشکل وجود ندارد چیست. برای این که این مشکل حل شود باید کتابخانه مورد نظر دانلود شود تا برنامه gradle اجازه دهد پروژه build شود. برای این که این فرایند به خوبی طی شود شما باید با IP غیر ایرانی به اینترنت متصل شوید تا گوگل با سیستم شما مشکلی نداشته باشد و اجازه دانلود کتابخانه مورد نظر را به شما بدهد.

مطالعه بیشتر 5 دلیل کمبود حافظه در اندروید و نحوه مدیریت آن

بعد از این که پروژه شما برای اولین بار build شد دیگر نیازی نیست که با IP کشور دیگری به اینترنت متصل شوید و یا حتی به اینترنت متصل شوید. ولی برای اولین بار باید این راه را بروید. اگر شما بخواهید یک کتابخانه جدید را به پروژه خودتان اضافه کنید باید این راه را دوباره بروید. یعنی با IP یک کشور دیگر به اینترنت متصل شوید و بعد از این که یک بار پروژه شما بیلد شد دیگر راحت باشید. امیدوارم روزی برسد که ما نیز با خیال راحت به سرویس هایی که برای سایر مردم دنیا رایگان و باز است دسترسی داشته باشیم.

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

بازدید : 19
سه شنبه 12 فروردين 1404 زمان : 1:16

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

در آموزش برنامه‌نویسی اندروید، برای مدیریت تغییرات در Fragment ها از انواع مختلف commit استفاده می‌شود. commit() تغییرات را به صورت غیر همزمان اعمال می‌کند، در حالی که commitNow() به طور همزمان تغییرات را اجرا می‌کند. همچنین، برای جلوگیری از از دست دادن وضعیت، می‌توان از commitAllowingStateLoss() یا commitNowAllowingStateLoss() استفاده کرد. انتخاب مناسب این commit ها می‌تواند به بهبود عملکرد و جلوگیری از مشکلات در برنامه‌نویسی اندروید کمک کند.

سرفصل های این مطلب
  1. 1- Commit
  2. 2- CommitAllowingStateLoss
  3. یک مثال برای درک مطلب
  4. 3- CommitNow

1- Commit

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

2- CommitAllowingStateLoss

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

خطای commit

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

یک مثال برای درک مطلب

  1. اکتیویتی شما در حال حاضر فرگمنت A را نمایش می‌دهد.
  2. شما اکتیویتی را به پس زمینه می‌فرستید (یا برنامه دیگری اجرا می‌کنید و یا اتفاقی می‌افتد که onStop برای اکتیویتی شما اجرا می شود).
  3. رویدادی رخ می‌دهد و در پاسخ به رویداد مورد نظر برنامه شما فرگمنت A را با فرگمنت B جایگزین می‌کند و متد CommitAllowingStateLoss را صدا می زند.

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

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

پس دیدیم که تفاوت این دو متد در زمان فراخوانی است. اگر فراخوانی متد commit بعد از فراخوانی onSaveInstanceState مربوط به اکتیویتی باشد خطا می‌دهد. ولی در همین حالت به جای فراخوانی commit متد CommitAllowingStateLoss را صدا بزنیم خطا نمی‌دهد ولی ممکن است که تغییرات مورد نظر اتفاق نیفتاده باشد. همچنین اگر شما در گوشی خود در بخش تنظیمات گزینه Dont Keep Activities را( که در بخش developer options است و به صورت پیش‌فرض غیر فعال است) فعال کرده باشید حالت اول پیش می‌آید. دقت داشته باشید که استفاده از هر دو متد با توجه به محل استفاده ممکن است مفید باشد ولی باید دقت کنیم که به صورت نادرست استفاده نکنیم.

3- CommitNow

شما وقتی که تغییرات یک فرگمنت را commit می‌کنید در همان لحظه و به سرعت ممکن است تغییرات شما انجام نشود. این مسأله به thread اصلی برنامه مربوط می‌شود. وقتی عمل commit انجام می‌شود. دستورات لازم برای thread اصلی برنامه در قالب یک صف اجرا ارسال می‌شود. حال هر بار thread اصلی هر وقت که بیکار شد دستورات را از صف برداشته و اجرا می‌کند. حال اگر به جای commit از commitNow استفاده شود عمل کامیت کردن فرگمنت بلافاصله و به صورت realtime انجام می‌شود. مشکلی که متد commitNow دارد این است که نمی‌توان با آن از backstack استفاده کرد. دلیل آن هم این است که کامیت هایی که در صف اجرا هستند ممکن است هنوز در پشته backstack درج نشده باشند و در صورت اجرای commitNow و اعمال آن بر روی پشته یک ناسازگاری در ترتیب درج در پشته صورت بگیرد. به همین خاطر نباید از backstack با این متد استفاده نمود. برای اینکه یک یا چند کامیت را در یک زمان مشخص به برنامه اعمال کنیم می‌توانیم از متد executePendingTransactions استفاده کنیم این باعث می‌شود که برنامه همه کامیت هایی را که در صف هستند را اجرا کند. در این صورت می‌توان بدون مشکل از پشته backstack نیز استفاده کرد.

مطالعه بیشتر نسخه های مختلف اندروید و برنامه نویسی برای نسخه های مختلف

ویدیوی آموزش فرگمنت ها

ویدیوی آموزش فرگمنت ها

با وب سایت tosinso همراه باشید.

بازدید : 20
پنجشنبه 14 فروردين 1404 زمان : 3:22

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

  1. آینده و بازار کار برنامه نویسی اندروید چگونه است؟

اندروید چیست؟

اولین سؤال که پیش می‌آید این اندروید چیست که همه جا از آن صحبت می کنند؟ در پاسخ باید گفت که اندروید (Android) یک سیستم عامل است که بر روی دستگاه‌های مختلف مانند نصب می‌شود و آن دستگاه را مدیریت می‌کند. کلمه اندروید به معنی ربات انسان نما است. توسعه‌دهنده این سیستم عامل شرکت گوگل است که آن را به صورت متن باز (open source) ارائه کرده است. متن باز بودن به این معنی است که سورس کد این سیستم عامل در اختیار عموم قرار گرفته است و این باعث می‌شود که برای استفاده از نیاز به هزینه خرید لایسنس نیست و هر کسی می‌تواند آزادانه از آن استفاده کند. همچنین متن باز بودن باعث می‌شود که توسعه دهندگان و برنامه نویسان از کل دنیا این سیستم عامل را بررسی کنند و در صورت وجود مشکل و یا باگ آن را برطرف کنند و آن را ارتقا بدهند.
با توجه به اینکه این اندروید متن باز است از آن می‌توان هم در دستگاه‌های مختلفی استفاده کرد و هم می‌توان برای آن برنامه‌های مختلف کاربردی زیادی نوشت که امروزه می‌بینیم برای دستگاه‌های اندرویدی برنامه‌های کاربردی بیشماری وجود دارد.

سیستم عامل چیست؟

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

سیستم عامل اندروید چیست؟

امروزه دو سیستم عامل اصلی برای گوشی ها و تبلت های هوشمند سیستم عامل های اندروید از شرکت گوگل و سیستم عامل iOS از شرکت اپل هستند. البته سیستم عامل های دیگری هم برای دستگاه‌های هوشمند وجود دارند مانند ویندوز ولی کمتر مورد استفاده هستند. سیستم عامل اندروید بیش از 15 سال است که به عنوان یکی از اصلی‌ترین سیستم عامل های دستگاه‌های هوشمند وجود دارد.
سیستم عامل اندروید به صورت پیش‌فرض بر روی دستگاه‌های موبایل و تبلت های اندرویدی وجود دارد و آن‌ها را مدیریت می کند. البته به خاطر اینکه اندروید یک سیستم عامل متن باز است فقط به گوشی ها و تبلت های هوشمند محدود نیست و در دستگاه‌های هوشمند بسیاری از آن استفاده می‌شود دستگاه‌هایی مثل یخچال ها و تلویزیون‌های هوشمند و ساعت‌های هوشمند و دستگاه‌های کارت زنی و دستگاه‌های رزرو غذا و بسیاری از دستگاه‌های هوشمند دیگر.
هسته اندروید سیستم عامل لینوکس است که یک سیستم عامل قوی و قابل اعتماد است. همچنین عملیات پیچیده مانند ارتباط نرم افزارهای مختلف با سخت‌افزار و تطابق با سخت‌افزار و مدیریت پردازش ها و مدیریت حافظه و مدیریت فایل‌ها و … توسط هسته لینوکس انجام می‌شود. مطالعه بیشتر 5 دلیل کمبود حافظه در اندروید و نحوه مدیریت آن
با قابلیت‌هایی که سیستم عامل اندروید دارد باعث می‌شود که این سیستم عامل بسایر انعطاف پذیر باشد و با استفاده از این قابلیت‌ها برنامه نویسان و توسعه دهندگان می‌توانند برنامه‌های متنوعی تولید کنند که بتواند به راحتی از تمام ویژگی‌های یک دستگاه هوشمند مانن موبایل استفاده کنند. همین امر باعث شده که تعداد برنامه نویسان برای اندروید بسیار زیاد شود و شرکت های زیادی مشغول تولید برنامه برای این سیستم عامل باشند و همچنین فروشگاه های مختلفی برای ارائه برنامه‌های اندرویدی مانند play store ارائه شود تا بتوان به راحتی به یک دنیای وسیع از برنامه‌های اندرویدی دسترسی پیدا کرد.

امکانات اندروید چیست؟

سیستم عامل اندروید دنیایی از امکانات دارد که برای کاربران امروزه بسیار جذاب است که چند تا از مهمترین آن‌ها به شرح زیر است:

  1. چون متن باز است می‌توان آن را برای نیاز های سازمان و یا شخص تغییر داد.
  2. پشتیبانی از تکنولوژی های ارتباطی مثل بلوتوث و wifi, CDMA , GSM و سایر تکنولوژی های انتقال داده و مکالمه تلفنی.
  3. دارا بودن Api های متفاوت برای کار با GPS و تکنولوژی های مکان یابی و کار با سنسور های مختلف
  4. مدیریت فایل بسیار خوب و پشتیبانی کامل از سخت‌افزار هایی مانند دوربین و میکروفون.
  5. پشتیبانی بسیار خوب از چند رسانه ای و انواع فرمت فایل‌های ویدیویی و صدا و عکس مثل mp4, mkv, jpg, gif , png mp3, …
  6. چند وظیفگی (multi-tasking) و اجرای همزمان چندین برنامه
  7. پشتیبانی از گرافیک دوبعدی و سه بعدی و تکنولوژي واقعیت مجازی.

چرا اندروید در این حد محبوب است؟

سیستم عامل اندروید به خاطر داشتن ویژگی‌های فوق‌العاده جذاب برای کاربران محبوب شده است که این ویژگی‌ها را در ادامه آورده ایم:

  1. رابط کاربری ساده و زیبا که باعث می‌شود از امکانات مختلف این سیستم عامل به سادگی استفاده شود.
  2. اتصال: این سیستم عامل انواع تکنولوژی های ارتباطی را در خود قرار داده است تکنولوژي هایی مانند. NFC, LTE, Wi-Fi, UMTS, EV-DO, CDMA, WCDMA, IDEN, GSM/EDGE, Bluetooth, Wimax
  3. ذخیره سازی: برای ذخیره سازی محلی این سیستم عامل پایگاه داده SQLite را در اختیار برنامه‌ها و برنامه نویسان قرار داده است.
  4. پشتیبانی از قابلیت‌ها و فرمت های چند رسانه ای مانند MIDI, mp3, AAC, HE-AAC, AAC5.1, AMR, AMR-WB, mp4, h.264 ,h263 , BMP, GIF, JPEG, Wav, Ogg
  5. پشتیبانی از پیام رسانی در قالب SMS, MMS
  6. پشتیبانی از جدیدترین قابلیت‌های صفحات وب و html5 , css3
  7. به صورت داخلی از قابلیت چند لمسی استفاده می کند.
  8. سیستم عامل چند کاره که می‌توان همزمان چند برنامه را باز کرد و از بین یک برنامه به برنامه دیگر پرش کرد.
  9. در اندروید ابزارک (Widget) هایی وجود دارند که قابل تنظیم هم هستند تا در فضای کوچک بتوانند محتوا های بیشتر و مناسب تری را نمایش دهند و میانبر های مناسبی در برنامه‌ها باشند.
  10. اندروید چند زبانه است و حتی می‌تواند متن های چند زبانه و دوجهتی را به خوبی نمایش دهد.

تاریخچه اندروید چیست؟

در سال 2005 گوگل شرکت کوچکی به نام اندروید را خریداری کرد. این شرکت توسط شخصی به نام اندی رابین Andrew E. Rubin تاسیس شده بود و هدف آن ساخت و توسعه برنامه‌های موبایلی بود. گوگل اندروید را در سال 2007 به صورت رسمی معرفی کرد اما در سال 2008 گوگل اولین نسخه سیستم عامل اندروید را ارائه کرد. اولین گوشی همراهی که از این نسخه سیستم عامل استفاده می‌کرد HTC Dream بود. این نسخه از اندروید بسیار ساده بود بسیاری از امکانات که گوشی های امروزی دارند را نداشت.
در سال 2009 گوگل تصمیم گرفت که تحت یک برنامه فشرده اندروید را بروزرسانی کرده و ارتقا دهد. گوگل اوایل برای هر نسخه یک نام که معمولاً نام شیرینی بود انتخاب می کرد. در این سال ۴ نسخه آپدیت برای اندروید ارائه شد.آخرین نسخه ارائه شده در سال 2009 نسخه Eclair (شیرینی خامه ای) نام گذاری شده بود. در طی سال‌های 2010 تا 2013 آپدیت های دیگری از این سیستم عامل ارائه شد که عبارت بودند از Froyo و Gingerbread و Honeycomb و Ice Cream Sandwich و Jelly Beanو KitKat
در طی این آپدیت ها و نسخه های جدید امکانات بسیار زیادی به این سیستم عامل اضافه شد. این امکانات برای بهتر کردن عمل‌کرد دستگاه و استفاده بهینه از منابع و پشتیبانی از قابلیت چند لمسی و موقعیت یابی و مسیریابی زنده وNFC و بسیاری از قابلیت‌های جدید بود.
بعد از اینکه نسخه 4 اندروید یعنی kitkat ارائه شد گوگل تصمیم گرفت که هر سال فقط یک نسخه منتشر کند و در طی یک سال به افزودن قابلیت‌ها و رفع مشکلات بپردازند. در نسخه 5 گوگل پا را از گوشی ها و تبلت ها فراتر گذاشت و این سیستم عامل را در تلویزیون‌های هوشمند و گجت های هوشمند هم استفاده کرد و تقریباً به یک سیستم عامل همه منظوره تبدیل شد. همچنین در این نسخه از رابط کاربری جدیدی به نام material design رو نمایی شد که بسیار مورد توجه واقع شد. به همین ترتیب قابلیت‌های مختلفی در هر نسخه ارائه شده است که لیست آن‌ها را از ابتدا آورده ایم:
۱. اندروید 1.0 (2008) این اولین نسخه بود و قابلیت‌های اولیه گوشی های هوشمند مانند مرورگر وب و ایمیل و پیام رسانی و دوربین را داشت. در این نسخه نقشه گوگل هم وجود داشت که خیلی طرفدار داشت.
۲. اندروید 1.5 (cupcake)(2009) در این نسخه قابلیت‌هایی مانند کیبورد لمسی، امکان فیلم‌برداری و ویجت ها ارائه شد.
3. اندروید 1.6 (Donut)(2009) امکانات این نسخه بهبود استفاده از دوربین و قابلیت‌های آن و همچنین پشتیبانی از صفحه نمایش با اندازه های مختلف و جستجوی متنی و صوتی را می‌توان نام برد.
4. اندروید 2.0 (Eclair)(2009) امکانات این نسخه بهبود قابلیت‌های دوربین و بهبود مرورگر وب و چند کاربره بودن بود.
5. اندروید 2.2 (Froyo) (2010) قابلیت‌هایی که در این نسخه اضافه شد Wi-Fi hotspot و پشتیبانی از فایل‌های flash و بهبود عملکرد سیستم عامل بین ۲ تا 5 برابر نسخه قبل بود.
6. اندروید2.3 (Gingerbread) (2010) افزودن قابلیت NFC و بهبود رابط کاربری و بهبود قابلیت copy/paste از امکانات این نسخه بود.
7. اندروید 3 و 3.1 و 3.2 بهینه سازی های این نسخه بیشتر برای کار با تبلت ها و خواندن کتاب بود و همچنین اضافه کردن امکان otg برای اتصال دستگاه جانبی به دستگاه بود.
8.اندروید 4.0 (Ice cream sandwitch) (2011)در این نسخه رابط کاربری تغییر کرد و بهبود داده شد. همچنین قابلیت تشخیص چهره در این نسخه اضافه شد و چند برنامگی و چند وظیفه‌ای بودن بهبود داده شد.
9. اندروید 4.1 (Jelly bean) (2012) در این نسخه قابلیت تشخیص صدا بهتر شد و قابلیت‌های دوربین گسترش داده شد و قابلیت google now هم به سیستم عامل اضافه شد. (google now) برنامه‌ای بود که گوگل اطلاعاتی را که کاربران نیاز داشتند را به آن‌ها پیشنهاد می داد.
10. اندروید 4.4(kitkat) (2013) در این نسخه کارایی سیستم عامل و سرعت آن افزایش یافت و قابلیت‌هایی مانند مد تمام صفحه (full screen) , چاپ بیسیم (wireless printing) به سیستم عامل اضافه شد.
11. اندروید 5.0(Lollipop) (2014) واسط کاربری material design در این نسخه معرفی شد و اعلان ها یا نوتیفیکیشن ها بهتر شدند و از این نسخه سیستم عامل از پردازنده های 64 بیتی پشتیبانی کرد.
12. اندروید 6.0 (Marshmallow)(2015) در این نسخه استفاده از باتری بهتر شد سیستم مجوز و دسترسی ها تغییر کرد و سیستم عامل شروع به پشتیبانی از پورت USB Type-c را شروع کرد.
13.اندروید 7.0 (Nougat)(2016) تکنولوژی واقعیت مجازی (virtual reality) در این نسخه به اندروید اضافه شد و نوتیفیکیشن ها بهتر شدند و قابلیت اینکه صفحه نمایش بین دو تا برناهم تقسیم شود و چند برنامه در یک صفحه نمایش داده شوند در این نسخه اضافه شد.
14. اندروید 8.0 (Oreo)(2017) حالت تصویر در تصویر در این نسخه اضافه شد و همچنین استفاده از باتری بهتر شد و پشتیبانی از پروژه Treble که باعث می‌شود آپدیت اندروید راحت‌تر انجام بگیرد از این نسخه اضافه شد.
15. اندروید 9.0 (Pie) (2018). در این نسخه قابلیت ژست‌های حرکتی (gesture navigation) اضافه شد که با استفاده از آن می‌توانید با کشیدن انگشت در صفحه بین برنامه‌ها جا به جا شوید و یا برنامه را ببندید و یا بین برنامه‌ها حرکت کنید. از دیگر قابلیت‌های این نسخه digital wellbeing یا سلامت دیجیتال است که سیستم عامل کنترل می‌کند که شما چقدر از دستگاه استفاده کرده‌اید و چقدر زمان صرف هرکدام از برنامه‌ها کرده‌اید و به شما اعلان می کند. این قابلیت به شما این امکان را می‌دهد که مقدار استفاده از برنامه‌ها را کنترل کنید و یا تمرکز خود را روی برنامه خاصی قرار دهید. همچنین قابلیت adaptive battery در این نسخه اضافه شده است که با استفاده از هوشمندی می‌تواند مقدار استفاده از باتری را بهتر کند و برنامه‌های بلا استفاده را ببندد و سرویس های آن‌ها را مسدود کند.
16. اندروید 10 (2019) در این نسخه تم تیره اضافه شد. همچنین قابلیت live caption (زیرنویس سریع برای فیلم ها) نیز در این نسخه اضافه شده است. در این نسخه کنترل های محرمانگی نیز بهتر شده اند.
17. اندروید 11 (2020) در این نسخه کنترل های چند رسانه ای ضبط صفحه نمایش بهتر شدند و قابلیت chat bubbles نیز به اندروید اضافه شده است. Chat bubbles قابلیتی است که وقتی در حال استفاده از یک برنامه دیگر هستید و نوتیفیکیشن یک پیام جدید را دریافت می‌کنید یک صفحه کوچک باز می‌شود و می‌توانید به آن پیام پاسخ دهید و یا لیست صحبت‌ها را مشاهده کنید. بدون اینکه بخواهید از برنامه خارج شوید.
18. اندروید 12 (2021) قابلیت‌های مهم این نسخه به اشتراک گذاری wifi و اضافه شدن رابط کاربری Material you و قابلیت کار یک دستی (کار کردن با یک دست) است. همچنین وقتی برنامه‌ای در حال یکی از دستگاه‌های مهم مانند میکروفون یا دوربین باشد درگوشه دستگاه به شما اعلان خواهد شد.
19. اندروید 13 (2022) تعداد برنامه‌های درحال اجرا در بخش اعلان ها به شما نشان داده می‌شوند و برنامه‌ها قبل از اینکه بتوانند اعلان بفرستند باید ازکاربر مجوز این کار را دریافت کنند.

مطالعه بیشتر نسخه های مختلف اندروید و برنامه نویسی برای نسخه های مختلف

برنامه نویسی اندروید چیست؟

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

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

چرا برای اندروید برنامه می نویسیم؟

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

چرا باید برنامه نویسی اندروید را یادگرفت؟

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

مشاغل چگونه از برنامه نویسی اندروید سود می برند؟

معمولاً هر شرکتی برای حل یک یا چند مشکل از مشتریان و افزایش اعتبار برند خود فعالیت می کند. شرکت ها با تولید برنامه‌های موبایل به صورت سفارشی می‌توانند از برنامه نویسی اندروید به عنوان یک ابزار برای رسیدن به هدف خود استفاده کنند. اما برنامه نویسی اندروید چه ویژگی‌هایی دارد که می‌تواند به شرکت ها برای رسیدن به اهداف خود کمک کند؟ در اینجا به چند مورد اشاره می کنیم.
۱. هزینه کم و بازده زیاد
کسب و کارها می‌توانند با کمی سرمایه‌گذاری روی برنامه نویسی اندروید برنامه مخصوص به خود را تولید کنند. حال این برنامه تولید شده تعامل با کاربران و مشتریان را آسان می‌کند و همین امر باعث می‌شود که بازده کسب و کار و رضایتمندی مشتریان بالا تر برود و در نتیجه سود شرکت بیشتر شود.
۲. انعطاف پذیری بالا و استقرار راحت‌تر
برنامه‌های اندروید انعطاف بالایی دارند و با تکنولوژی های جدید مثل اینترنت اشیاء (IOT) و واقعیت افزوده (AR) و واقعیت مجازی (VR) به راحتی ادغام می‌شوند و می‌توان در اندروید از آن‌ها استفاده کرد. همین امر کمک می‌کند که کسب و کارها بتوانند چالش های به وجود آمده را راحت‌تر حل کنند. از طرفی با توجه به فروشگاه های متنوع و مختلف و پشتیبانی از نسخه های مختلف سیستم عامل و دستگاه‌های مختلف می‌توان به راحتی برنامه توسعه داده شده را بر روی سیستم‌های مشتریان و کاربران مستقر نمود.
۳. امنیت بالا
یکی از دلایل انتخاب اندروید توسط کسب و کارها بالا بودن امنیت آن و قابلیت اطمینان آن است. اندروید فاکتورهای امنیتی بسیاری دارد و گوگل سعی می‌کند هر روز این سیستم عامل را امن تر و مطمئن تر کند. مثلاً در اندروید 9 قابلیت‌های امنیتی به اندروید اضافه شده است که از آن در مقابل بدافزارهای مختلف محافظت می کند.
4. سفارشی سازی
رابط کاربری ساده و کاربردی همیشه اولویت گوگل بوده است و این مسأله را می‌توانید از سایر محصولات گوگل هم متوجه شوید. در رابطه با اندروید هم این اصل پابرجاست و گوگل سعی می‌کند که امکانات زیادی برای تولید رابط کاربری زیبا و کاربردی به برنامه نویسان ارائه دهد تا بتوانند برنامه‌های خود را با توجه به کاربرد و هدف آن بهینه کنند و برنامه سفارشی غنی برای کاربران خود تولید کنند که برای شرکت های مختلف این امری ضروری و حیاتی است. زیرا که گروه هدف کاربران اندروید بسیار وسیع است و اندروید باید توانایی این را داشته باشد که کاربران با مهارت های مختلف و توانایی‌های مختلف بتوانند از این سیستم عامل به راحتی استفاده کنند و نیاز های خود را با آن برطرف نمایند.

با اندروید برای چه دستگاه‌هایی می‌توان برنامه نوشت؟

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

برنامه نویسی اندروید صنعتی چیست؟

از سیستم عامل اندروید در صنایع مختلفی استفاده می‌شود که ما به آن‌ها به عنوان برنامه نویسی اندروید صنعتی اشاره کرده ایم. تاکنون به صورت ضمنی به بعضی از آن‌ها اشاره کرده‌ایم اما در این بخش به صورت خاص استفاده از این سیستم عامل را در صنایع مختلف بررسی می کنیم.
استفاده از اندروید در صنعت گردشگری
صنایع مرتبط با گردشگری شدیداً به موبایل و اپلیکیشن های موبایل وابسته هستند. زیرا با این کار راحت‌تر به مشتریان خود دسترسی دارند و مشتریان نیز به شرکت های موجود در این صنعت راحت‌تر دسترسی خواهند داشت. از مواردی که از برنامه‌های موبایلی و همچنین برنامه‌های اندرویدی در صنعت گردشگری و مسافرت استفاده شده است می‌توان به برنامه‌های رزرو هتل ها و برنامه‌های واقعیت افزوده و واقعیت مجازی برای اماکن مختلف و همچنین برنامه‌های اتاق هوشمند نام برد به علاوه اینکه مشتریان می‌توانند با استفاده از برنامه‌های مختلف در صنعت گردشگری داده‌ها و نظرات مختلفی را برای مقصد گردشگری خود ببینند و در مورد مزایا و معایب آن مطالعه کنند و هوشمندانه تر تصمیم بگیرند و مقصد خود را آگاهانه تر انتخاب نمایند. همچنین شرکت های موجود در این صنعت با استفاده از برنامه‌های موبایلی می‌توانند بازخورد مشتریان را راحت‌تر دریافت کرده و خدمات خود را بهتر کنند.
صنایع مرتبط با بهداشت و سلامت
یکی از بهترین نمونه‌ها در صنعت پزشکی و سلامت که از اندروید در آن استفاده شده است ابزارهای اینترنت اشیای پزشکی هستند که دستگاه‌هایی هستند که به اینترنت متصل می‌شوند و وضعیت سلامت و پزشکی را ثبت و مدیریت می‌کنند. علاوه بر آن امروزه برنامه‌های مختلفی برای مشاوره های پزشکی و روان پزشکی وجود دارد که می‌توانید از طریق آن‌ها با پزشکان و روان پزشکان در مکان های و شهرهای مختلف ارتباط برقرار کنید و راهنمایی بگیرید. همچنین برنامه‌هایی وجود دارد برای رزرو نوبت با پزشکان مختلف و دریافت نوبت در بیمارستان ها که بیماران می‌توانند از آن استفاده کنند. نسخه‌های الکترونیکی نیز نمونه‌ای از استفاده از برنامه‌های موبایلی در صنعت پزشکی و سلامت هستند.
صنایع بانکداری و مالی
برنامه‌ها و ابزارهایی که به کمک بانکداری و انجام تراکنش ها می‌روند را فین تک یا financial technologies(فناوری های مالی) می نامیم. برنامه‌های اندرویدی بسیاری در صنایع فین تک ارائه شده اند. امروزه هر بانک برای خود یک برنامه اندرویدی ارائه می‌کند که بسیاری از کارها را می‌توان بدون مراجعه به بانک انجام داد. همچنین برنامه‌های متنوعی برای انجام تراکنش های روزانه و واریز و انتقال وجه و پرداخت قبوض مختلف وجود دارند که کار را برای کاربران بسیار آسان کرده است. از نمونه برنامه‌های صنایع فین تک می‌توان به برنامه‌های مدیریت مالی و حسابداری اشاره کرد.
صنایع ورزش و تیم های ورزشی
صنعت ورزش در حال حاضر صنعتی بسیار محبوب است که سود بسیاری دارد برای مثال همه می‌دانیم که ورزش فوتبال در کشور ما چه محبوبیتی دارد و چقدر مخاطب دارد. در این صنعت کانال‌های ورزشی می‌توانند با تولید برنامه‌های ورزشی سود بسیاری را عاید خود کنند. از برنامه‌های ورزشی که می‌توان از آن‌ها در این صنعت نام برد برنامه‌های خبری ورزشی و اینترنت اشیاء و ربات های گفتگو هستند.
صنعت تجارت الکترونیک
شکی نیست که امروزه تجارت الکترونیک یک صنعت بسیار پر پول است. بخش زیادی از کاربران امروزه اینترنت حتی با استفاده از رسانه اجتماعی مانند اینستاگرام در حال خرید و فروش اجناس مختلف هستند. حال برنامه‌های اندرویدی مختلفی امروزه پیاده‌سازی شده‌اند که انواع مدل های تجارت الکترونیکی(مانند B2C (خرید و فروش از کسب و کار به مصرف کننده) و C2C (خرید و فروش مصرف کننده با مصرف کننده)) را در خود پیاده‌سازی کرده‌اند و کاربران می‌توانند به سرعت و به سادگی کالا یا خدمات خود را در قالب این برنامه‌ها عرضه کرده و نظر حجم عظیمی از مشتریان را به خود جلب کنند.
صنعت حمل و نقل
امروزه همه با تاکسی های اینترنتی و پیک های اینترنتی و وانت اینترنتی و … آشنا هستیم. با استفاده از برنامه‌های اندرویدی خدمات حمل و نقل را به راحتی با هم مقایسه می‌کنیم و از آن‌ها استفاده می‌کنیم.

چالش های برنامه نویسی اندروید چیست؟

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

روش‌های کسب درآمد از برنامه نویسی اندروید چیست؟

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

سفارش طراحی اپ (فریلنسری)

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

پیاده‌سازی یک ایده نرم افزاری

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

تبلیغات درون برنامه‌ای

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

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

اگر فروشگاه ها را بررسی کرده باشید برخی برنامه‌های سودمند و بازی‌ها وجود دارند که دارای دو بخش هستند. بخش رایگان و بخش Premium (اشتراک ویژه). این برنامه‌ها یک سری امکانات و خدمات را در بخش رایگان در اختیار کاربران قرار می‌دهند ولی برای اینکه کاربران بتوانند به یک سری دیگر از امکانات و خدمات دسترسی داشته باشند نیاز است که اشتراک آن برنامه را خریداری کنند. این هم یک روش برای کسب درآمد از برنامه نویسی اندروید است. البته باید دقت داشته باشید که اولاً برنامه شما جذابیت کافی را داشته باشد تا کاربر راغب باشد آن را دانلود و نصب کند و همچنین بخش اشتراک ویژه شما هم باید جذابیت داشته باشد تا کاربر مایل باشد برای آن پول پرداخت کند. البته این روش ایرادی که دارد این است که درصدی از هزینه اشتراک را باید به فروشگاهی که برنامه شما بر روی آن قرار دارد بدهید.

کارمندی

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

برنامه‌های رایگان اندروید چگونه درآمد دارند؟

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

سودآور ترین برنامه‌های اندرویدی کدامند؟

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

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

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

  • گوگل یک ساختار مشخص را برای برنامه نویسی اندروید ارائه کرده است تا برنامه نویسی اندروید ساده‌تر باشد.
  • منابع زیادی برای یادگیری برنامه نویسی اندروید وجود دارد.
  • ابزار ها و شبیه ساز های متنوعی برای برنامه نویسی اندروید وجود دارد.
  • انتشار برنامه‌های اندرویدی در فروشگاه Google play در مقایسه با سایر پلتفرم ها آسان‌تر است.
  • اندروید قابلیت سفارشی سازی بسیاری دارد و کاربران می‌توانند برنامه‌های متنوع و سفارشی سازی شده بسیاری پیاده‌سازی کنند و ایده‌های خود را به صورتی که مایل هستند پیاده‌سازی نمایند.
  • اندروید به صورت گسترده در همه جا استفاده می شود.

آیا شروع برنامه نویسی اندروید سخت است؟

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

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

برای اینکه برنامه نویسی اندروید را شروع کنیم مانند هر کار دیگری نیازمند یک سری ابزار ها هستیم. برای یادگیری برنامه نویسی اندروید هم به ابزارهای زیر نیاز داریم.

۱. کامپیوتر

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

۲. منبع آموزشی

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

۳. محیط توسعه اندروید

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

افزایش سرعت اندروید استودیو و رفع خطاهای اندروید استودیو و رفع خطای gradle در اندروید استودیو ساخت فایل نصبی با اندروید استودیو

4. Android SDK

برای برنامه نویسی اندروید نیاز است که به کتابخانه‌ها و ابزارهایی که برای برنامه نویسی اندروید استفاده می‌شود دسترسی داشته باشیم. گوگل این کتابخانه‌ها و ابزارها را در یک بسته به نام کیت توسعه نرم‌افزار برای اندروید یا همان Android SDK ارائه کرده است که می‌توانید نسخه های مختلف آن را از سایت رسمی اندروید دانلود کرده استفاده کنید.

۵. شبیه ساز اندروید

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

6.زبان برنامه نویسی

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

برای یادگیری برنامه نویسی اندروید از کجا شروع کنم؟

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

بهترین منبع یادگیری برنامه نویسی اندروید چیست؟

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

چه زبان‌های برنامه نویسی برای اندروید مناسب هستند؟

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

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

Kotlin

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

C++/C

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

سی شارپ (#C)

این زبان محبوب‌ترین زبان شرکت مایکروسافت است که به همراه پلتفرم دات نت ارائه شده است و قابلیت‌های متعددی دارد که در این مقاله می‌توانید با آن آشنا شوید. برای برنامه نویسی اندروید با استفاده از سی شارپ گزینه های متفاوتی وجود دارد برای مثال می‌توانید برای توسعه بازی از موتورهایی مانند unity استفاده کنید و یا برای تولید برنامه از فریمورک هایی مانند Xamarin و یا Maui استفاده کنید. برای مطالعه بیشتر مقاله سی شارپ چیست را مطالعه کنید.

Basic

این زبان به طور رسمی توسط اندروید پشتیبانی نمی‌شود ولی می‌توان با استفاده از فریمورک B4A (Basic for Android) برای اندروید به زبان بیسیک برنامه نویسی کنید. البته معمولاً این زبان گزینه اول برنامه نویسان اندروید نیست.

Python

زبان پایتون یکی از محبوب‌ترین زبان‌های حال حاضر است. این زبان فریمورکی به نام kivy دارد که توسط آن می‌توان برای دستگاه‌های موبایل برنامه نویسی کرد.

آیا یادگیری xml در اندروید لازم است؟

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

چه کتابخانه‌هایی در برنامه نویسی اندروید استفاده می شود؟

کتابخانه‌ها کدهای آماده‌ای هستند که برای انجام هدف خاصی نوشته شده و در اختیار عموم قرار می گیرند. در اندروید تعداد کتابخانه‌های موجود بسیار زیاد است ولی از مهم‌ترین آن‌ها می‌توان به کتابخانه‌های زیر اشاره کرد.
Retrofit کتابخانه ای برای ارسال درخواست های http و کار با api های وب و تحت شبکه که به صورت امن درخواست های http را می‌توانید با آن ارسال کنید.
Glide: کتابخانه ای بسیار سریع برای نمایش و لود کردن و کش کردن تصاویر از آدرس‌های راه دور و یا محلی است که می‌توانید برای نمایش عکس‌ها از آن استفاده کنید.
Room: برای کار با دیتابیس SQLite محلی اندروید استفاده می‌شود و کارهای دیتابیسی را با آن می‌توان انجام داد و به نوعی ORM محسوب می شود.
Dagger: کتابخانه ای برای کم کردن وابستگی بین کلاس‌های مختلف پروژه های اندرویدی است که با قابلیت Dependency injection وابستگی کلاس‌ها به یکدیگر را مدیریت می کند.
RxJava: کتابخانه ای برای ساده‌تر کردن عملیات async و event-based است تا بتوان برنامه را واکنش گراتر نمود.
Gson: کتابخانه ای برای کار با داده‌های json و تبدیل داده‌های به json و برعکس است.

یادگیری برنامه نویسی اندروید چقدر طول می کشد؟

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

آینده و بازار کار برنامه نویسی اندروید چگونه است؟

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

بازدید : 22
سه شنبه 12 فروردين 1404 زمان : 2:28

لینوکس توزیع CentOS یکی از محبوب ترین توزیع های لینوکس امروزی است ، CentOS مخفف کلمه های Community ENTerprise Operating System است. هسته اصلی لینوکس CentOS از سیستم عامل Red Hat Enterprise Linux یا RHEL گرفته شده است و به همین دلیل این سیستم عامل کاملا با RHEL سازگاری دارد. طبیعتا با توجه به اینکه در مقاله قبلی در انجمن تخصصی فناوری اطلاعات ایران در خصوص توزیع RHEL و اینکه از Fedora گرفته شده است ، می توان نتیجه گرفت که در نهایت CentOS نیز از Fedora گرفته شده است.

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

سالها به عنوان یک پروژه و یک سیستم عامل مستقل معرفی می شد تا اینکه در سال 2014 پروژه CentOS رسما به شرکت Red Hat پیوست. نسخه هایی که از CentOS به بازار ارائه می شوند در واقع نسخه Mirror از نسخه هایی است که در Red Hat Enterprise Linux معرفی می شوند. یعنی هر بار که نسخه جدیدی از Red Hat Enterprise Linux منتشر شود ، مدتی بعد نسخه ای مشابه آن به عنوان CentOS معرفی می شود.

معمولا بعد از معرفی شدن هر نسخه از RHEL بعد از حدود چند هفته یا حداکثر چند ماه نسخه جدید CentOS نیز معرفی می شود. این مدت زمان به دلیل این است که گروه CentOS باید زمان بگذارند و ساختار برندینگ Red Hat را از روی RHEL حذف کنند و تقریبا همه چیز را از روی سورس کدهای RHEL مجددا بسازند. با ترکیب شدن یک تیم پشتیبانی خوب و غنی در Community های CentOS و همچنین مستندات کامل این سیستم عامل ، CentOS تبدیل به یک محصول عالی برای استفاده در تجارت ها ، سازمان ها ، مدارس و دانشگاه ها و سایر مواردی می باشد که نیازمند یک لینوکس قابل اتکا برای سرورها و دسکتاپ های خود هستند. با انتخاب کردن CentOS دیگر نیازی به پرداخت هزینه های زیاد برای خرید محصولات Enterprise نخواهد بود.

اما بیشتر سازمان هایی که از CentOS استفاده می کنند ، از این سیستم عامل در کنار سیستم عامل Red Hat Enterprise Linux استفاده می کنند و با توجه به پشتیبانی که از شرکت Red Hat دریافت می کنند می توانند در صورت بروز مشکل سیستم عامل های CentOS خودشان را نیز رفع اشکال کنند.در چنین سازمان هایی از RHEL به عنوان سرور اصلی در سازمان استفاده می شود و از CentOS به عنوان سیستم عاملی برای سرورهای نه چندان حساس استفاده می شود ، یا از CentOS به عنوان یک سرور Redundant و Backup استفاده می کنند. این موضوع باعث می شود که دیگر سازمان ها نیازی به استخدام چندین مدیر سیستم نداشته باشند و با استخدام یک مدیر سیستم مسلط به RHEL کار مدیریت CentOS های سازمان را هم به یکباره انجام می دهند و این از نظر هزینه های مالی کاملا به سود سازمان است .

لینوکس CentOS چیست

در خصوص لینوکس توزیع Debian هم قبلا در انجمن تخصصی فناوری اطلاعات ایران صحبت کرده ایم ، همانطور که می دانید توزیع Debian محبوب ترین توزیع در میان لینوکس های دنیا است ، جالب اینجاست بدانید که در جولای سال 2010 برای اولین بار توزیع CentOS به عنوان محبوب ترین توزیع در میان توزیع های مورد استفاده به عنوان Web Server انتخاب شد که در آن زمان بیش از 30 درصد وب سرورهای دنیا از این سیستم عامل استفاده می کردند ، هر چند که در ژانویه 2012 این عنوان و جایگاه مجددا به توزیع Debian اختصاص یافت اما در نوع خودش جالب بود.

CentOS یکی از محبوب ترین توزیع های لینوکس برای استفاده در سرویس های هاستینگ وب اینترنتی است. با توجه به هماهنگ بودن و سازگاری کامل CentOS و RHEL این سیستم عامل با اکثر نرم افزارهای دنیا سازگاری کامل دارد ، بیشتر کنترل پنل های هاستینگ امروزی از سیستم عامل CentOS به عنوان توزیع لینوکس شماره یک خودشان استفاده می کنند.

از لحاظ معماری فنی توزیع CentOS لینوکس از معماری های x86 ، x64 و i386 پشتیبانی می کند ، امروزه حتی از CentOS از PowerPC نیز پشتیبانی می کند. قبل از اینکه اسم CentOS بر روی این محصول گذاشته شود آن را به عنوان cAos Linux می شناختیم . در ژوئن 2006 شخصی به نام David Parsley که برنامه نویس اصلی سیستم عامل Tao Linux که یکی از Clone های اصلی RHEL بود اعلام کرد که Tao Linux دیگر بازنشسته شده است و شروع به توسعه و برنامه نویسی سیستم عامل CentOS کرد.

کاربران Tao Linux براحتی بعد از ارائه شدن نسخه CentOS با استفاده از بروز رسانی YUM خود را به CentOS بروز رسانی کردند. جالب اینجاست بدانید که دامین اینترنتی CentOS.org که بزرگترین Community این سیستم عامل است توسط فردی به نام Lance Davis قبلا ثبت شده بود و بعدها طی یک قرارداد ، تیم مدیریتی CentOS ای دامین را از Davis خریداری کردند. CentOS از دسکتاپ های KDE و GNOME پشتیبانی می کند و از این سیستم عامل هم به عنوان سرور و هم به عنوان Workstation می توان استفاده کرد.

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

بازدید : 24
سه شنبه 12 فروردين 1404 زمان : 2:44

لینوکس چیست؟ به زبان ساده : اولین نکته در آموزش لینوکس این هست که شما بدونید اصلا لینوکس چی هست؟ لینوکس یک سیستم عامل است که از هسته اصلی یا Kernel سیستم عامل دیگری به نام UNIX برداشت شده است . این سیستم عامل اولین بار توسط شخصی به نام لینوس توروالدس ( Linus Torvalds ) در زمانی که وی دانشجوی دانشگاه هلسینکی ( Helsinki ) بود ایجاد شد. اما خوب معمولا مشکل اشخاصی که به تازگی با لینوکس آشنا می شوند این است که واقعا لینوکس چیست ؟

تعریف سیستم عامل لینوکس (Linux) چیست؟

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

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

خوب ما سیستم عامل های زیادی مثل ویندوز ، Mac OS ، MS-DOS ، Sun Solaris و غیره را داریم و اگر بگوییم لینوکس هم مثل آنهاست تا حدی بی انصافی کرده ایم. لینوکس نه یک برنامه تکی مثل Microsoft Word است و نه یک مجموعه برنامه مثل Microsoft Office ، لینوکس یک رابط بین سخت افزارهای کامپیوتر و برنامه هایی است که بر روی آن اجرا می شوند است .

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

لینوکس چیست

تاریخچه لینوکس چیست؟

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

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

لینوکس چیست

فلسفه وجود لینوکس چیست؟

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

این شخص پیشگام مفهومی به نام نرم افزار آزاد یا Free Software در دنیا بود البته در این مفهوم منظور از آزاد یا Free را رایگان بودن برداشت نکنید ، منظور در اینجا هزینه صفر نیست بلکه منظور آزادی نرم افزار است. برای چنین شخصی با چنین ایده ای طبیعی بود که مشکلات زیادی هم در میان بود و ادامه کار را برای وی سخت می کرد ، اما ریچارد دست از کار بر نمی داشت تا اینکه در سال 1984 از دانشگاه MIT بیرون آمد و ایده ای به نام GNU را ارائه کرد.

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

لینوکس چیست

هسته یا Kernel لینوکس چیست؟

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

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

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

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

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

لینوکس چیست

نظرات سازندگان لینوکس در مورد لینوکس چیست؟

خوب مفهوم نان باگت و فلافل را به خاطر دارید ؟ در سال 1991 اتفاق جالبی رخ داد ، لینوس توروالدس نان باگت داشت اما فلافل نداشت ! از طرفی دیگر ریچارد استالمن فلافل داشت اما نان باگت نداشت ! بله ، با همین مثال ساده شما حتما متوجه شدید که منظور چیست ، در سال 1991 لینوس توروالدس Kernel خود را نوشته بود اما برای آن نرم افزاری ننوشته بود که بتواند با آن کار کند و از طرفی دیگر ریچارد استالمن و پروژه GNU تا دلتان بخواهد نرم افزار و برنامه داشتند اما Kernel برای آنها نداشتند. بهتر است این شرایط را از زبان هر یک از این دو نفر بخوانیم :

  • لینوس توروالدس : متاسفانه وجود Kernel به تنهایی راه به جایی نخواهد برد ، برای اینکه یک سیستم بتواند کار کند نیاز به shell ، Compiler ، Library و خیلی چیزهای دیگر داریم.
  • ریچارد استالمن : قلب GNU هنوز برای استفاده های تجاری و تولیدی آماده نیست. خوشبختانه یک Kernel دیگر وجود دارد که به آن لینوکس می گویند . بنابراین با ترکیب کردن نرم افزارهای ضروری که توسط GNU در کمبریج و ماساچوست تولید می شوند و یک Kernel که توسط لینوس توروالدس از هلسینکی نوشته شده است لینوکس متولد شد. به دلیل فاصله مکانی که بین Kernel ای که توسط لینوس نوشته شده بود و برنامه های GNU ، راهکار اتصال اینها صرفا بستر اینترنت بود ، ما می توانیم بگوییم که سیستم عامل لینوکس در اینترنت زندگی پیدا کرد و به وجود آمد. اینترنت بستری را فراهم می کند که تمامی برنامه نویس های دنیا بتوانند بر روی این پروژه کار کنند و همین باعث شده است که لینوکس به شکل امروزی خود در بیاید.

لینوکس و گنو (GNU) چگونه ترکیب شدند یا گنو لینوکس چیست؟

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

لینوکس چیست

لینوس در سال 1991 این حرف را زد : ببینید چه پروژه جالبی است ؟ تصور کنید که سیستم عاملی دارید که خودتان می توانید بر اساس نیازهایتان آن را تغییر دهید ! این حرف می تواند برای شمایی که در حال خواندن این متن هستید هم گفته شود.مردمی از سراسر دنیا تصمیم گرفتند وی را در پروژه ای که ایجاد کرده بود کمک کنند. البته در آن زمان صرفا کسانی که برنامه نویس های قدرتمند کامپیوتر بودند و دانش بسیاری در این زمینه داشتند می توانستند برای نسخه اولیه لینوکس برنامه نویسی کنند. این عده شروع کردند به ارائه کردن کمک هایی که لینوس نیاز داشت.

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

دلیل محبوبیت زیاد لینوکس چیست؟

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

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

بعد ها ، شرکت های متعدد از نسخه Red Hat لینوکس خوششان آمد و متوجه شدند که می توانند از لینوکس به عنوان یک سیستم عامل مانند سایر سیستم عامل های موجود در بازار استفاده کنند. آنها کاری کردند که با استفاده از یک سری دستورهای خاص و بر اساس یک سری راهنماهای ساده کاربران بتوانند Red Hat را براحتی مثل سایر سیستم عامل ها بر روی سیستم نصب کنند و در این کار موفق شدند.لینوکس هیچوقت نتوانست یک GURU کامل شود و این به دلیل ماهیت اصلی آن بود ، کاربر باید بتواند سیستم عامل را براحتی مورد تغییر قرار دهد.

جایگاه امروزی لینوکس چیست؟

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

اما بر خلاف سرویس های مایکروسافتی که با انجام هر تغییری شما بایستی یک بار سیستم عامل را Reboot کنید بعضا وب سرورهای لینوکسی وجود دارند که سالها بدون نیاز به انجام کوچکترین تغییری می توانند بدون وقفه فعالیت کنند و فقط در زمان هایی که نیاز به انجام برخی تعمیرات روزمره می باشد کمی Downtime داشته باشند.

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

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

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

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

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

لینوکس چیست

در یک سیستم GNU//Linux در واقع Linux سیستم عامل ما و در نقش هسته یا Kernel فعالیت می کند. اما باقی اجزای این سیستم شامل برنامه های متنوعی می باشد که اکثر آنها تحت لیسانس یا تابع قوانین GNU هستند که ما از این به بعد آن را با عنوان پروژه GNU می شناسیم . اما چرا ما همیشه با عنوان GNU//Linux این پروژه را نام می بریم ؟ دلیل این موضوع این است که سیستم عامل لینوکس بدون داشتن نرم افزارهایی که توسط پروژه GNU ایجاد شده اند تقریبا هیچ کار خاصی نمی تواند انجام دهد بنابراین ما همیشه Linux را در کنار پروژه GNU قرار می دهیم تا با همدیگر یک مجموعه کامل را تشکیل دهند.

به نظر من و خیلی از دوستان دیگر بهتر است وقتی اسم لینوکس را می بریم آن را به شکل گنو لینوکس عنوان کنیم. فرض کنید سیستم عامل ویندوز را نصب کرده اید و هیچ نرم افزار جانبی بر روی آن نصب نشده است ، حتی مجموعه Notepad ، Paint ، Media Player و ... را در این سیستم عامل ندارید ! این دقیقا شرایطی است که شما زمانیکه لینوکس را بصورت خام نصب می کنید برای شما به وجود می آید اما GNU یعنی اضافه شدن Office ، Photoshop ، Outlook و ... به سیستم عامل خام ... البته مثال را با لینوکس جلو ببریم بهتر است و فقط برای مثال ویندوز را گفتیم که تصویر بهتری از موضوع داشته باشید.

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

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

لینوکس چیست

منظور از توزیع در لینوکس چیست؟

نسخه های متعدد و متفاوتی از لینوکس وجود داردهمانطور که قبلا هم اشاره شد هسته این سیستم عامل را می توان به دلخواه تغییر داد و دستکاری کرد و به همین دلیل هر کس یا هر شرکتی می تواند نسخه لینوکس مخصوص به خود را توزیع و روانه بازار کند به هر یک از از این نسخه های متفاوت یک توزیع یا Distribution از لینوکس گفته می شود.

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

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

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

که می توان آنها را بر روی یک سیستم عامل دیگر مثل ویندوز نصب کرد و کاربران ویندوز می توانند بصورت همزمان از لینوکس و ویندوز استفاده کنند.در این میان نسخه هایی از لینوکس نیز وجود دارد که بر روی کامپیوترهای Macintosh نصب می شوند. همچنین یکی دیگر از محل هایی که لینوکس بسیار به چشم می آید در Device ها یا تجهیزات شبکه است . برای مثال در Router ها ، Switch ها ، سیستم های تلفن ، گوشی های هوشمند، سیستم های GPS و چیزهایی شبیه به آن ، این لینوکس است که هسته اصلی تمامی آنها را ایجاد کرده است.

حتی نامگذاری هایی که برای انواع توزیع های لینوکس وجود دارند نیز بسیار متنوع و در برخی اوقات بامزه هستند مثلا نسخه لینوکسی به نام SAMURAI وجود دارد. توزیع هایی از لینوکس نیز وجود دارند که بصورت ویژه برای استفاده در PC ها طراحی شده اند و مورد استفاده قرار می گیرند.

محبوب ترین و پرکاربردترین توزیع لینوکس چیست؟

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

  1. آیا پایه و اساس کد توزیع مورد نظر قابل اتکا و اعتماد است ؟
  2. آیا مرتبا مورد تغییر واقع می شود؟
  3. آیا بروزرسانی بسته های نرم افزاری آن راحت است ؟ ( مثلا قابلیت های apt-get در Debian و Yum در Red Hat)
  4. آیا بروز رسانی آن از یک نسخه به نسخه بالاتر راحت است ؟
  5. آیا برنامه نویس های زیادی برای آن نرم افزار تولید کرده اند ؟

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

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

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

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

  1. لینوکس فدورا چیست؟ محبوبیت در حوزه دسکتاپ لینوکس
  2. لینوکس اوبونتو چیست؟ محبوبیت در زمینه دسکتاپ
  3. لینوکس مینت چیست؟ محبوبیت بیشتر در زمینه دسکتاپ
  4. لینوکس ردهت چیست؟ محبوبیت بیشتر در زمینه سرور
  5. لینوکس دبین چیست؟ محبوبیت بیشتر در زمینه سرور
  6. لینوکس اوپن سوزه چیست؟ محبوبیت بیشتر در زمینه سرور
  7. لینوکس اسلک ویر چیست؟ محبوبیت بیشتر در زمینه سرور
  8. لینوکس سنت اوس چیست؟ محبوبیت بیشتر در زمینه سرور
  9. توزیع VMWare ( محبوبیت بیشتر در زمینه مجازی سازی )
  10. لینوکس Xen چیست؟ محبوبیت در زمینه سرور و مجازی سازی

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

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

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

  1. آریوس لینوکس یا Arios : آریوس از دو کلمه آریو و OS تشکیل شده‌است و آریوس را می‌توان سیستم عامل آریایی و یا سیستم‌ عاملی از ایران ترجمه کرد. آریوس یک بسته‌بندی مجدد (remix) از توزیع اوبونتو است. برنامه‌های اضافی، تقویم خورشیدی، قلمهای پارسی و اشعار شاعران ایرانی از جمله امکاناتی است که به آریوس اضافه می‌شود. آریوس تلاش می‌کند برنامه‌های نوشته شده به دست برنامه‌نویسان ایرانی را ترویج نماید. ( به نقل از ویکیپدیا فارسی )

  2. پارسیدورا Parsidora : پارسیدورا یک سیستم عامل بر پایه گنو/لینوکس است که شامل مجموعه ای از آخرین نرم افزارهای آزاد و منبع باز می باشد. پارسیدورا نسخه ترکیبی و منبعث شده از فدورا است. این توزیع کاملا سازگار با فدورا است. در این توزیع سعی شده است که نیاز های کاربران فارسی زبان و ایرانیان به طور مناسبی پاسخ داده شود. پارسیدورا همیشه برای هر کسی برای هر استفاده, ویرایش و پخش آزاد است. ( به نقل از وب سایت پارسیدورا)

  3. پارسیکس Parsix : نام یک توزیع زنده از گنولینوکس است که برگرفته از گنولینوکس کانوتیکس و مبتنی بر دبیان می‌باشد و از میزکار کامل گنوم به عنوان میزکار پیش‌گزیده استفاده شده‌است و کلیه بسته‌های نرم‌افزاری لازم برای یک توزیع مخصوص میزکار را داراست.علاوه بر زبان‌های متعدد، پارسیکس به‌طور پیش‌گزیده از صفحه کلید فارسی پشتیبانی کرده و می‌توانید در آن فارسی تایپ نمایید.پارسیکس را می‌توانید بر روی دیسک سخت خود نصب کرده و از آن به عنوان سیستم‌عامل کامپیوتر خود استفاده کنید. پارسیکس گنو/لینوکس ابتدا برای کاربران فارسی زبان طراحی شده‌بود ولی در حال حاضر دارای جامعه کاربری فعال از سرتاسر جهان می‌باشد. ( به نقل از ویکیپدیا فارسی)

  4. لینوکس شریف : نام توزیعی دو زبانه (فارسیانگلیسی) از لینوکس است که بر پایهٔ گنولینوکس بنا شده‌است. این توزیع که در شرکت فارسی‌وب شریف با توجه به نیازهای بومی کاربران ایرانی و فارسی‌زبان تهیه شده، پس از طی مراحل آزمون نسخه‌های آزمایشی، در ۷ خرداد ۱۳۸۵ به طور رسمی در دانشگاه صنعتی شریف معرفی شد. نسخهٔ ۲ این توزیع بر پایهٔ فدورا کر ۴ بنا شده است که بنا به استانداردهای امروزین، نسخه‌ای بسیار قدیمی به حساب می‌آید. استفاده از ابزارهای قدیمی چون فایرفاکس ۱، کرنل ۲.۶.۱۶ و اپن آفیس دو ، آن را برای استفاده امروزی غیرکارامد می‌سازد.در این توزیع از محیط رومیزی گنوم که ۷۶٫۴۸ درصد آن به فارسی ترجمه شده، استفاده می‌شود. ( به نقل از ویکیپدیا فارسی )

  5. سیستم عامل گیکس : سیستم عامل گیکس (Gix OS) توسط تعدادی از کاربران گیلانی و بر پایه سیستم عامل دبیان و با متد لینوکس از پایه ساخته شده است. گیکس از ترکیب سه واژه انگلیسی linux,Guilan و Geek تشکیل شده است.در تاریخ 13 مهر 1391 نسخه 9 سیستم عامل گیکس از سوی گروه کاربران گنولینوکس گیلان به طور رسمی جهت تست و استفاده گسترش دهندگان با اسم رمز وارش (به معنای: باران)در همایش اولین انتشار این سیستم عامل، در شهر رشت منتشر شد. همزمان با انتشار این سیستم عامل وبگاه آن به نشانی GixOs.ir جهت معرفی، رفع باگ، پشتیبانی و ... در دسترس کاربران قرار گرفت.سیستم عامل گیکس با ویژگی های همچون نصاب فارسی، مستندات آموزشی فارسی چند رسانه ای، استفاده از برنامه های کاربردی گنولینوکس، قلم های فارسی، تقویم فارسی، لغت نامه و ... منتشر شده است که در بین خیل عظیم نسخه های موجود برخی از ویژگی های معرفی شده، منحصر به فرد می باشد. ( به نقل از ویکیپدیا فارسی )

  6. جبیر او اس Jabir OS : سیستم عامل جبیر یا جبیر او اس گنو/لینوکس یک توزیع ساده و کارامد مبتنی بر اوبونتو بوده و توسط تیمی از نوجوانان توسعه می یابد. ( به نقل از ویکیپدیا)

  7. زمین Xamin : زمین، یک سیستم عامل خاص کارساز برپایه توزیع بالادست دبیان است که با توجه به نیازهای بومی و یا خاص مراکز مختلف، بومی سازی شده است. این سیستم عامل کاملا آزاد و متن باز است و به شکل آزاد و متن باز توسعه داده خواهدشد. ( به نقل از وب سایت زمین ) شما می توانید لیستی از کلیه توزیع های عمومی لینوکس را از طریق وب سایت www.distrowatch.com مشاهده کنید.

منظور از FSF و GNU در لینوکس چیست؟

اما چیزی که ما امروزه به عنوان پروژه GNU می شناسیم از سال 1983 توسط شخصی به نام ریچارد استالمن با معرفی یک سیستم عامل رایگان به نام GNU شروع شد که یک سیستم عامل شبیه به Unix بود. بعدها چیزی که امروزه ما به عنوان GNU//Linux می شناسیم در سال 1984 معرفی شد و تقریبا یکسال بعد از معرفی GNU بود که این دو چیز با هم یکپارچه شدند.

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

لینوکس چیست

در حال حاضر برنامه نویس ها ، شرکت ها و حتی ارگان های زیادی بر روی پروژه لینوکس کار می کنند اما در حال حاضر فقط یک محل است که بر روی پروژه GNU بصورت متمرکز کار می کند و ما آن را به عنوان Free Software Foundation یا FSF می شناسیم ، این بنیاد بیشتری ابزارهای موجود در لینوکسی که در حال حاضر استفاده می کنیم را تولید و پشتیبانی می کند ، فراموش نکنید که لینوکسی که استفاده می کنیم بدون FSF به مشکلات زیادی می خورد و به همین دلیل است که FSF باعث پیشرفت و گسترش لینوکس شده است و فلسفه لینوکس که سیستم عامل سورس باز در کنار نرم افزار سورس باز است با این بنیاد کامل می شود.

اولین هسته لینوکس در سال 1991 توسط یک فارق التحصیل دانشگاهی رشته کامپیوتر به نام لینوس توروالدز ایجاد شد و فقط یک هسته سیستم عامل بدون نرم افزار بود ، هدف اصلی لینوس توروالدز ارائه کردن یک سیستم عامل رایگان و قابل تغییر بود اما برای این سیستم عامل نرم افزار نیز لازم بود و در آن زمان نرم افزار رایگان چندان عمومیت نداشت و در همین موقع بود که او با ریچارد استالمن همکار شد ، این شروع پروژه GNU//Linux بود ، یعنی سیستم عامل رایگان در کنار نرم افزار رایگان قرار گرفت.

بنیاد نرم افزارهای رایگان یا همان Free Software Foundation در سال 1985 شروع به کار کرد. FSF به کاربران این اجازه را می داد که بتوانند نرم افزارهای کامپیوتری را بصورت رایگان استفاده کنند ، کپی کنند ، تغییر دهند و در نهایت توزیع کنند. FSF به شدت باعث ترویج داده شدن فرهنگ تولید و توسعه نرم افزارهای رایگان و آزاد متن که در اصطلاح Open Source گفته می شوند شد و امروزه شاهد این هستیم که بیشتر نرم افزارهایی که برای لینوکس نوشته می شوند از طریق این بنیاد و تحت پروژه GNU//Linux معرفی می شوند. برای کسب اطلاعات بیشتر در خصوص FSF و GNU می توانید به وب سایت های www.gnu.org و www.fsf.org مراجعه کنید.

واژه Free یا آزاد در Free Software یا نرم افزار آزاد در حقیقت به معنی اختیار است نه قیمت ، شاید اگر بخواهیم واژه آزاد متن را استفاده کنیم بهترین مثال برای درک آن سخنرانی آزاد است که شما اختیار دارید راجع به هر چیزی که دوست دارید صحبت کنید. Free در واژه Free Software در واقع به این معنی است که شما در اجرا کردن ، کپی کردن ، توزیع کردن ، تغییر دادن و توسعه دادن یک نرم افزار اختیار کامل دارید. البته بد نیست نگاهی به مقاله خودم به نام تفاوت بین Freeware و Open Source بیندازید تا تفاوت این دو مفهوم را نیز بهتر درک کنید ، در هر صورت آزادی نرم افزار یا Free Software به چهار نوع آزادی و اختیار در حوزه تولید نرم افزار اشاره می کند که به ترتیب زیر هستند :

  • آزادی شماره 0 : آزادی و اختیار کامل در اجرای نرم افزار با هر هدفی ( حتی اهداف مخرب )
  • آزادی شماره 1 : آزادی و اختیار کامل در خصوص مطالعه در خصوص نحوه اجرای یک نرم افزار و تغییر دادن آن بر اساس نیاز خود ، طبیعی است که برای داشتن آزادی شماره 1 در این بنیاد دسترسی به سورس کدهای نرم افزار یک پیش شرط است.
  • آزادی شماره 2 : آزادی و اختیار کامل برای توزیع کپی های نرم افزار برای دیگران
  • آزادی شماره 3 : آزادی و اختیار کامل برای توسعه نرم افزار و ارائه کردن نسخه تغییر یافته نرم افزار برای عموم ، طبیعی است برای این موضوع نیز داشتن دسترسی کامل به سورس کدهای نرم افزار یک پیش شرط است

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

بازدید : 32
پنجشنبه 14 فروردين 1404 زمان : 3:38

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

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

حتما نوت برداری کنید

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

  • کاربرد لایه ها : لایه چهار : انتقال داده و پروتکل های انتقال : TCP و UDP

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

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

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

  • حواست باشه ما سویچ لایه چهار تخصصی نداریم ، در واقع یه نوع سویچ لایه سه با قابلیت های خاص در لایه چهار هست که باعث میشه بتونید مدیریت Session داشته باشید

به دیگران آموزش بدهید

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

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

به سوالات دیگران پاسخ بدهید

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

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

در مصاحبه ها شرکت کنید

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

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

لابراتوار برای هر کاری طراحی کنید

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

خرابکاری و ریسک کنید

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

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

بازدید : 20
پنجشنبه 14 فروردين 1404 زمان : 3:15

پاپت (Puppet) یک ابزار خودکارسازی پیکربندی سیستم‌ها و مدیریت زیرساخت است که به مدیران شبکه این امکان را می‌دهد که به راحتی نرم‌افزارها، پیکربندی‌ها و منابع سیستم‌ها را در مقیاس بزرگ مدیریت کنند. این ابزار به‌ویژه در محیط‌های بزرگ و پیچیده مفید است و با استفاده از زبان DSL خاص خود، پیکربندی‌ها را به صورت متمرکز مدیریت می‌کند. با استفاده از Puppet می‌توان نظم و امنیت را در شبکه‌ها حفظ کرد و از پیکربندی‌های دستی اجتناب کرد. در آموزش شبکه، آشنایی با ابزارهای خودکارسازی مانند Puppet برای مدیریت مؤثر شبکه‌ها و سرورها بسیار حیاتی است. این ابزارها به کاهش خطاها و افزایش بهره‌وری کمک می‌کنند.

در این بخش از دوره آموزشیمان قصد داریم بپردازیم به انواع حالت های اسقرار سازی در حوزه Configuration Management

نرم افزار Puppet چیست؟ آموزش نرم افزار Puppet ا Network Automation چیست؟ Configuration Management چیست؟ چگونه فرآیند های کاریمان را در سازمان اتوماتیک سازی کنیم؟ امروزه با افزایش تعداد سیستم ها و تجهیزات و گسترش پیدا کردن شبکه های کامپیوتری و زیرساخت ما اصولا معضلاتی نیز به وجود آمده است که یکی از آن ها پیکربندی سریع و آنی میباشد که با وجود چندین دیوایس متعدد اصولا نمیتوانیم پیکربندی را به شکلی به صورت سریع انجام بدهیم به همین سبب شما در نظر بگیرید که مهندس شبکه و یا Network Administrator در یک شبکه بزرگ در این موقعیت از شما درخواست میشود

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

Network Automation چیست؟

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

  • برای یادگیری Network Automation با زبان Python به لینک مقابل مراجعه کنید( Link )

نرم افزار Puppet چیست؟

درواقع Puppet یک نرم افزار قدرتمند در حوزه Configuration Management میباشد که به سبب آن ما توانایی پیکربندی و راه اندازی تجهیزات خود را به صورت کاملا سریع و Automated شده را داریم بدین شکل که در مدیریت دیوایس ها و پیکربندی های اون‌ها این نرم افزار بسیار قدرتمند است و جزوه یکی از بهترین نرم افزار های حوزه Network Automation در کنار دیگر نرم افزار های قدرتمند مانند Ansible قرار گرفته است‌. نرم افزار Puppet به سبب یک زبان کد نویسی منحصر به فرد خود با نام DSL که تشکل شده از کلمات Domain Specific Language میباشد توانایی بررسی و پیاده سازی پیکربندی های متعدد را بر روی سیستم ها دارد.

نرم افزار Puppet رایگان است؟

  • نرم افزار Puppet در دو نسخه ارائه میشود:
    نسخه Puppet Enterprise: در این نسخه ما قابلیت های بسیار زیادی را در Puppet میتوانیم داشته باشیم از جمله دسترسی GUI و دسترسی Cli، امکان استفاده از API های متنوع، توانایی گزارش گیری بالا و ویژگی های مختلف درون این نسخه تجاری وجود دارد.
    نسخه Puppet Open Source: این نسخه به صورت رایگان و Open Source ارائه شده است که میتوانیم از آن برای فرآیند های متنوع Configuration Management استفاده کنیم که البته ویژگی های متعددی که در نسخه Enterprise وجود دارد در این نسخه کمی کم رنگ میباشند.

چرا از Puppet استفاده کنیم؟

توجه کنید این سوال را میتوان به شکل دیگری هم پرسید برای مثال چرا از Configuration Management و Automation استفاده کنیم ؟! جواب ساده ایی داره چون شما درنظر بگیرید که در یک شرکت بسیار بزرگ Large Enterprise کار میکنید و قرار است بر روی 100 سرور یک پیکربندی مشابه یه یک مشکل را رفع کنید کنید برای مثال قصد دارید یک سیستم عامل جدید نصب کنید و یا یک تنظیمات خاص را ارائه کنید خب شما به عنوان یک ادمین شبکه اینکار براتون بسیار سخت و خسته کننده هست اما امروزه با پیشرفت تکنولوژی ما دیگه نیازی به انجام اینکارها نداریم !

پاپت ( Puppet ) چیست؟ معرفی نرم افزار Network Automation

امروزه وقتی ابزار های مختلف و قدرتمندی مثله Python و Puppet وجود دارند ما به راحتی میتوانیم این پیکربندی را درعرض چند ساعت و یا کمتر به انجام برسانیم(بستگی به پیکربندی دارد اما خیلی خیلی مقدار زمان نسبت به پیکربندی دستی کاهش پیدا میکند برای مثال اگر 100 ساعت این موضوع طول بکشد در فرآیند Automation فقط 1 تا 2 ساعت ممکن است زمان ببرد.) به سبب این موضوع Puppet میتواند به شما در اعمال یک پیکربندی مشابه و مدیریت آنها کمک بسیار زیادی کند.

پاپت ( Puppet ) چیست؟ معرفی نرم افزار Network Automation

نگاهی بر الگو های برنامه نویسی (Paradigm)

درواقع قبل از شروع کار با DSL که زبان Puppet میباشد میبایست یک نگاه به الگو های برنامه نویسی بیندازیم. در ابتدا میبایست بدانیم که Paradigm یک سبک از نحوه ایجاد یک نرم افزار رایانه است که توسعه دهندگان از آن برای ایجاد نرم افزار مورد نظر استفاده میکنند؛ ما چهار نوع Paradigm متنوع برای برنامه نویسی داریم که به شرح زیر هستند:

  • Imperative
  • Declarative
  • Functional
  • Object-oriented

در این مقاله تمرکز ما بر روی Imperative و Declarative میباشد.

بررسی Imperative Paradigm

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

بررسی Declarative Paradigm

در این حالت دقیقا ما بر عکس Imperative عمل میکنیم بدین شکل که در این الگو ما منطق محاسباتی را بدون بیان نحوه انجام آن پیش میبریم‌ ، برای مثال ما برای اینکه به محل کارمان بریم یک تاکسی میگیریم و مستقیما عنوان میکنیم که به آدرس مورد نظر برود.

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

نرم افزار Puppet از Declarative Paradigm استفاده میکند برای کد نویسی و ایجاد فایل های مورد نظر به همین سبب میتوانیم به مثال زیر توجه کنیم و تفاوت Puppet را با Bash در کد نویسی ببینیم: زبان Bash از الگوریتم Imperative استفاده میکند به همین سبب از طریق کد Bash زیر ما یک User را در سیستم مورد نظرمان ایجاد میکنیم
پاپت ( Puppet ) چیست؟ معرفی نرم افزار Network Automation
حال از طریق زبان DSL این فرآیند را انجام میدهیم
پاپت ( Puppet ) چیست؟ معرفی نرم افزار Network Automation
میبینیم که تفاوت بین کد نویسی Imperative و Declarative در سادگی چقدر زیاد میباشد.

Deployment Mode انواع حالت های اجرایی در پاپت

استقرار سازی چیست؟

مفهوم استقرار سازی یا Deployment به این معنا میباشد که من بتوانم مقدار ها و پیکربندی های خاصی که نیاز دارم رو بر روی چندین دیوایس خود Deployed یا استقرار سازی کنیم. که البته توضیح این موضوع به این شکل بیشتر در دید حوزه Configuration Management میباشد در حوزه های دیگر و موقعیت های دیگر نیز همین معنا را میدهد اما با کمی تغییر

حالت های استقرار سازی در Configuration Management به چه شکل است؟

حالت های استقرار سازی در Configuration Management به دو دسته متفاوت تقسیم بندی میشوند که عبارتند از:
Push-Based: در این روش از طریق Master Node‌ پیکربندی انجام میشود.
Pull-Based: در این روش استقرار سازی توسط Agent انجام میشود.

حالت استقرار سازی Push-Based

در این حالت Matser Node ما به عنوان یک سرور مرکزی عمل میکند و در این خود و دیوایس های مورد نظر یک ارتباط امن و مطمئن را ایجاد میکند، پس از ایجاد ارتباط شروع به پیکربندی و ارسال دستورات میکند مانند نرم افزار های Salt Stack و Ansible

حالت استقرار سازی Pull-Based

در این حالت دیوایس ها به سرور مورد نظر متصل میشوند ارتباط امن و مطمئن را ایجاد میکنند و از برقراری صحیح ارتباط اطمینان حاصل میکنند و پس از آن پیکربندی را از سمت سرور دانلود میکنند و بر روی خود استقرار سازی میکنند مانند Chef و Puppet

نحوه کار Puppet در استقرار سازی به چه شکل است؟

نحوه کار Puppet بر پایه Pull یا همان Pull Based Deployment میباشد و از این بابت دیوایس ها و تجهیزات مورد نظر ما در هر 1800ثانیه به سمت Puppet یک ارتباط را ایجاد میکنند و بررسی میکنند که آیا در Puppet پیکربندی جدیدی برایشان قرار گرفته است یا که خیر، درصورتی که پیکربندی خاصی در Puppet قرار گفته باشد کد های مورد نظر را دانلود میکنند و بر روی خود استقرار میسازند.

مثال عملی از نحوه کار Puppet

سناریو ما در Configuration Management از دو بخش Master و Agent تشکیل شده است که به شرح زیر هستند:
بخش Master - در این بخش Puppet بر روی یک سیستم لینوکسی اجرا سازی میشود و قرار است که به سرور ها و تجهیزات مورد نظر پیکربندی مورد نظرشان را ارائه کند.‌

نکته: Puppet فقط روی سیستم های لینوکسی اجرا سازی میشود به طور معمول

بخش Agent - این بخش را تجهیزات و دیوایس ها ما تشکیل داده اند که هیچ محدودیتی در سیستم عاملشان وجود ندارد و میتوانند طیف گسترده ایی از سیستم های مختلف از جمله خانواده Microsoft سیستم های هسته لینوکس سیستم های خانواده BSD و سیستم عامل های متعدد دیگری مانند Solaris و Mac OS

در ابتدا در بین Matser و Agent یک ارتباط امن ایجاد میشود.

پاپت ( Puppet ) چیست؟ معرفی نرم افزار Network Automation

نکته: ارتباطات بین Master و Agent از طریق Certificate امن سازی میشود.

مرحله اول - ابتدایی ترین کاری که پس از ایجاد شدن ارتباط صورت میگیرد این است که از سمت Agent های ما اطلاعاتی در رابطه خودشان به سمت Master ارسال میشود که از جمله این اطلاعات عبارتند از:

  • IP Address
  • HostName
  • Kernel Details
  • And ...

پاپت ( Puppet ) چیست؟ معرفی نرم افزار Network Automation

مرحله دوم - در این شرایط پس از دریافت اطلاعات توسط Puppet یک فایل توسط Puppet ایجاد میشود که اطلاعات تکمیلی Agent ها به همراه پیکربندی های مورد نیازشان در آن قرار میگیرد که آن را با عنوان Configuration List میشناسم و تمامی اطلاعات در کنار در فایلی به نام Catalog قرار میگیرد. از جمله پیکربندی های که میتوان توی Configuration List: نصب، حذف و بروزرسانی بسته نرم افزار خاصی، ایجاد User و حذف User، راه اندازی مجدد و Restart کردن سیستم، پیکربندی و تغییر تنظیمات IP و...

پاپت ( Puppet ) چیست؟ معرفی نرم افزار Network Automation
مرحله 3 - در این مرحله فایل قسمت Configuration List در فایل Catalog به سمت Agent ها ارسال میشود و آنها پس از دریافت پیکربندی ها آنهارا بر روی خودشان اعمال میکنند.
نکته: درصورتی که Configuration List خالی باشد هیچ پیکربندی بر روی Agent ها انجام نمیشود.

پاپت ( Puppet ) چیست؟ معرفی نرم افزار Network Automation

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

معرفی امکانات پاپت | Puppet Feature

مباحث متنوعی را در رابطه با Puppet یادگرفتیم حالا بیاید بررسی کنیم که Puppet دارای چه ویژگی هایی میباشد به نوع دیگر قرار است توی این بخش به Feature های متعدد Puppet بپردازیم

ویژگی Idempotency در Puppet چیست؟

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

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

ویژگی‌ RAL در Puppet چیست؟

اگر یادتان باشد در قسمت قبل ما عنوان کردیم که در Puppet محدودیتی وجود ندارد که سیستم های Agent چه سیستم عاملی را داشته باشند اما چطور؟! از کجا Puppet میتونه متوجه این بشه که برای سیستم مورد نظر از چه پیکربندی استفاده کند و از چه دستوری برای پیکربندی های مورد نظر استفاده کند؟ دقیقا اینجاست که ویژگی تحت عنوان RAL یا همان Resource Application Layer پا به میدان میگذارد و این نگرانی هارا برطرف میکند.

تعداد صفحات : 17

درباره ما
موضوعات
آمار سایت
  • کل مطالب : 177
  • کل نظرات : 0
  • افراد آنلاین :
  • تعداد اعضا : 0
  • بازدید امروز :
  • بازدید کننده امروز : 1
  • باردید دیروز :
  • بازدید کننده دیروز : 0
  • گوگل امروز :
  • گوگل دیروز :
  • بازدید هفته :
  • بازدید ماه :
  • بازدید سال :
  • بازدید کلی :
  • <
    آرشیو
    اطلاعات کاربری
    نام کاربری :
    رمز عبور :
  • فراموشی رمز عبور؟
  • خبر نامه


    معرفی وبلاگ به یک دوست


    ایمیل شما :

    ایمیل دوست شما :



    لینک های ویژه