مجله فراتز

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

ویژگی HTML Style

تنظیم سبک یک عنصر HTML می تواند با ویژگی Style انجام شود.
ویژگی HTML Style دارای نحو زیر است:

<tagname style="property:value;">

خاصیت یک ویژگی CSS است. مقدار یک مقدار CSS است.

مثال
رنگ پس زمینه یک صفحه را روی blueblue تنظیم کنید:

<body style="background-color:powderblue;">

<h1>This is a heading</h1>
<p>This is a paragraph.</p>

</body>

مثال
رنگ زمینه را برای دو عنصر مختلف تنظیم کنید:

<body>

<h1 style="background-color:powderblue;">This is a heading</h1>
<p style="background-color:tomato;">This is a paragraph.</p>

</body>

درس بعدی درس قبلی

یک Activity نشان دهنده یک صفحه منفرد با رابط کاربری است ، دقیقاً مانند پنجره یا قاب جاوا. فعالیت اندروید زیر کلاس کلاس ContextThemeWrapper است.
اگر با زبان برنامه نویسی C ، C ++ یا Java کار کرده باشید ، حتماً دیده اید که برنامه شما از تابع اصلی () شروع می شود. روشی کاملاً مشابه ، سیستم Android برنامه خود را با فعالیتی آغاز می کند که با فراخوانی روش پاسخگویی onCreate () شروع می شود. دنباله ای از روشهای پاسخ به تماس وجود دارد که یک فعالیت را راه اندازی می کند و دنباله ای از روشهای برگشت تماس که فعالیتی را از بین می برد همانطور که در نمودار چرخه حیات فعالیت زیر نشان داده شده است:

نمودار چرخه عمر اکتیویتی

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

() onCreate
این اولین رویداد است و هنگام ایجاد فعالیت برای اولین بار فراخوانی می شود.
() onStart
این رویداد زمانی فراخوانی می شود که فعالیت برای کاربر قابل مشاهده شود.
() onResume
وقتی که کاربر شروع به تعامل با برنامه می کند.
() onPause
اکتیویتی Pause ورودی کاربر را دریافت نمی کند و نمی تواند هیچ کدی را اجرا کند و هنگامی که اکتیویتی فعلی در حالت Pause است و اکتیویتی قبلی از سر گرفته می شود فراخوانی می شود.
() onStop
زمانی فراخوانی می شود که اکتیویتی دیگر قابل مشاهده نباشد.
() onDestroy
این رویداد قبل از اینکه اکتیویتی توسط سیستم از بین برود فراخوانی می شود.
() onRestart
این رویداد با زمانی انجام می گیرد که اکتیویتی پس از متوقف شدن مجدداً شروع شود.

مثال
این مثال برای نشان دادن چرخه فعالیت فعالیت برنامه Android ، مراحل ساده ای را به شما ارائه می دهد. مراحل زیر را دنبال کنید تا برنامه Android را که در فصل Hello World mînak ایجاد کرده ایم اصلاح کنید:

۱-شما از Android studio برای ایجاد یک برنامه Android استفاده خواهید کرد و آن را به عنوان HelloWorld تحت یک بسته com.example.helloworld همانطور که در مثال سلام دنیا توضیح داده شده است ، نامگذاری کنید.

۲-همانطور که در زیر توضیح داده شده ، فایل اصلی فعالیت MainActivity.java را تغییر دهید. بقیه پرونده ها را بدون تغییر نگه دارید.

۳-برنامه را اجرا کنید تا شبیه ساز Android را راه اندازی کنید و نتیجه تغییرات انجام شده در برنامه را تأیید کنید.

در زیر محتوای پرونده فعالیت اصلی تغییر یافته src / com.example.helloworld / MainActivity.java است. این پرونده شامل هر یک از روشهای اساسی چرخه زندگی است. از روش Log.d () برای تولید پیام های ورود به سیستم استفاده شده است.

package com.example.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;

public class MainActivity extends Activity {
   String msg = "Android : ";
   
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      Log.d(msg, "The onCreate() event");
   }

   /** Called when the activity is about to become visible. */
   @Override
   protected void onStart() {
      super.onStart();
      Log.d(msg, "The onStart() event");
   }

   /** Called when the activity has become visible. */
   @Override
   protected void onResume() {
      super.onResume();
      Log.d(msg, "The onResume() event");
   }

   /** Called when another activity is taking focus. */
   @Override
   protected void onPause() {
      super.onPause();
      Log.d(msg, "The onPause() event");
   }

   /** Called when the activity is no longer visible. */
   @Override
   protected void onStop() {
      super.onStop();
      Log.d(msg, "The onStop() event");
   }

   /** Called just before the activity is destroyed. */
   @Override
   public void onDestroy() {
      super.onDestroy();
      Log.d(msg, "The onDestroy() event");
   }
}

یک کلاس اکتیویتی با استفاده از فایل XML موجود در پوشه res / layout پروژه ، تمام م Uلفه UI را بارگیری می کند. عبارت زیر اجزای UI را از پرونده res / layout / activity_main.xml بارگیری می کند:

setContentView(R.layout.activity_main);

یک برنامه کاربردی می تواند یک یا چند فعالیت بدون هیچ محدودیتی داشته باشد. هر فعالیتی که برای برنامه خود تعریف می کنید باید در پرونده AndroidManifest.xml شما اعلام شود و فعالیت اصلی برنامه شما باید در مانیفست با که شامل MAIN action و LAUNCHER است به شرح زیر اعلام شود:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tutorialspoint7.myapplication">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

اگر یکی از Activity اصلی یا LAUNCHER برای یکی از فعالیتهای شما اعلام نشده باشد ، نماد برنامه شما در لیست برنامه های صفحه اصلی ظاهر نمی شود.
بیایید سعی کنیم Hello World اصلاح شده خود را اجرا کنیم! برنامه ما فقط اصلاح شده است. من تصور می کنم شما AVD خود را هنگام راه اندازی محیط ایجاد کرده اید. برای اجرای برنامه از Android studio ، یکی از پرونده های فعالیت پروژه خود را باز کرده و از نوار ابزار روی Run icon کلیک کنید. Android studio برنامه را روی AVD شما نصب کرده و شروع به کار می کند و اگر با راه اندازی و برنامه همه چیز خوب است ، پنجره Emulator نمایش داده می شود و باید پیام های ورود به سیستم زیر را در پنجره LogCat در Android studio مشاهده کنید.

08-23 10:32:07.682 4480-4480/com.example.helloworld D/Android :: The onCreate() event
08-23 10:32:07.683 4480-4480/com.example.helloworld D/Android :: The onStart() event
08-23 10:32:07.685 4480-4480/com.example.helloworld D/Android :: The onResume() event
پنجره لاگ کت (Log CAT)

بیایید سعی کنیم دکمه قفل صفحه را روی شبیه ساز Android کلیک کنیم و پیام های زیر را در پنجره LogCat در android studio ایجاد می کند:

08-23 10:32:53.230 4480-4480/com.example.helloworld D/Android :: The onPause() event
08-23 10:32:53.294 4480-4480/com.example.helloworld D/Android :: The onStop() event

بیایید دوباره سعی کنیم قفل صفحه شما را روی شبیه ساز Android باز کنیم و پیام های زیر را در پنجره LogCat در Android studio ایجاد می کند:

08-23 10:34:41.390 4480-4480/com.example.helloworld D/Android :: The onStart() event
08-23 10:34:41.392 4480-4480/com.example.helloworld D/Android :: The onResume() event

در مرحله بعدی ، اجازه دهید دوباره سعی کنیم روی دکمه برگشت روی شبیه ساز Android کلیک کنیم و پیام های زیر را در پنجره LogCat در Android studio ایجاد می کند و این چرخه فعالیت Activity را برای یک برنامه Android تکمیل می کند.

08-23 10:37:24.806 4480-4480/com.example.helloworld D/Android :: The onPause() event
08-23 10:37:25.668 4480-4480/com.example.helloworld D/Android :: The onStop() event
08-23 10:37:25.669 4480-4480/com.example.helloworld D/Android :: The onDestroy() event

جلسه قبل جلسه بعد

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

سازماندهی منابع در Android Studio

MyProject/
   app/
      manifest/
         AndroidManifest.xml
   java/
      MyActivity.java  
      res/
         drawable/  
            icon.png  
         layout/  
            activity_main.xml
            info.xml
         values/  
            strings.xml 

1 anim/
پرونده های XML که انیمیشن های خاصیت را تعریف می کنند. آنها در پوشه res / anim / ذخیره می شوند و از کلاس R.anim به آنها دسترسی پیدا می شود.
2 color /
فایلهای XML که لیستی از رنگها را تعریف می کنند. آنها با رز / رنگ / ذخیره می شوند و از کلاس R.color قابل دسترسی هستند.
3 drawable/
پرونده های تصویری مانند .png ، .jpg ، .gif یا فایل های XML که در نقشه های بیت ، لیست های حالت ، اشکال ، انیمیشن قابل طراحی وارد می شوند آنها در res / drawable ذخیره می شوند و از کلاس R.drawable قابل دسترسی هستند.
4 layout /
پرونده های XML که طرح واسط کاربری را تعریف می کنند. آنها در res / layout ذخیره می شوند و از کلاس R.layout قابل دسترسی هستند.
5 menu/
پرونده های XML که منوهای برنامه را تعریف می کنند ، مانند منوی گزینه ها ، منوی زمینه یا زیر منو. آنها در res / menu / ذخیره می شوند و از کلاس R.menu قابل دسترسی هستند.
6 raw/
پرونده های خودسرانه برای ذخیره در فرم خام خود. برای باز کردن چنین پرونده های خام ، باید Resource.openRawResource () را با شناسه منبع که R.raw.filename است تماس بگیرید.
7 value /
پرونده های XML که حاوی مقادیر ساده ای مانند رشته ها ، اعداد صحیح و رنگ ها هستند. به عنوان مثال ، در اینجا برخی از قراردادهای نام فایل برای منابعی که می توانید در این فهرست ایجاد کنید وجود دارد –
• arrays.xml برای آرایه های منابع ، و از کلاس R.array قابل دسترسی است.
integers.xml برای اعداد صحیح منابع ، و از کلاس R.integer قابل دسترسی است.
• bools.xml برای منبع boolean و از کلاس R.bool قابل دسترسی است.
• colors.xml برای مقادیر رنگ ، و از کلاس R.color قابل دسترسی است.
• dimens.xml برای مقادیر ابعاد ، و از کلاس R.dimen قابل دسترسی است.
• strings.xml برای مقادیر رشته ، و از کلاس R.string قابل دسترسی است.
• styles.xml برای سبک ها ، و از کلاس R.style قابل دسترسی است.
8 xml /
پرونده های XML خودسرانه ای که در زمان اجرا با تماس با ()Resources.getXML قابل خواندن هستند. می توانید فایل های مختلف پیکربندی را که در زمان اجرا استفاده می شوند ، در اینجا ذخیره کنید.

منابع جایگزین

برنامه شما باید منابع جایگزینی را برای پشتیبانی از تنظیمات خاص دستگاه فراهم کند. به عنوان مثال ، شما باید منابع قابل جایگزینی قابل ترسیم (به عنوان مثال تصاویر) برای وضوح صفحه نمایش مختلف و منابع رشته ای جایگزین برای زبانهای مختلف داشته باشید. هنگام اجرا ، Android پیکربندی دستگاه فعلی را شناسایی کرده و منابع مناسب برنامه شما را بارگیری می کند.
برای تعیین گزینه های خاص پیکربندی برای مجموعه ای از منابع ، مراحل زیر را دنبال کنید –
• یک دایرکتوری جدید در res / به نام – ایجاد کنید. در اینجا منابع_ نام یکی از منابع ذکر شده در جدول فوق است ، مانند طرح بندی ، قابل ترسیم و غیره. مقدماتی یک پیکربندی منفرد را تعیین می کند که این منابع برای آن استفاده می شود. می توانید اسناد رسمی را برای لیست کاملی از واجد شرایط برای انواع مختلف منابع بررسی کنید.
• منابع جایگزین مربوطه را در این فهرست جدید ذخیره کنید. پرونده های منبع باید دقیقاً مانند پرونده های منبع پیش فرض همانطور که در مثال زیر نشان داده شده است ، نامگذاری شوند ، اما این پرونده ها محتوای خاص جایگزین دارند. به عنوان مثال اگرچه نام فایل تصویر یکسان خواهد بود اما برای صفحه نمایش با وضوح بالا ، وضوح آن زیاد خواهد بود.

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

MyProject/
   app/
      manifest/
         AndroidManifest.xml
   java/
      MyActivity.java   
      res/
         drawable/  
            icon.png
            background.png
         drawable-hdpi/  
            icon.png
            background.png  
         layout/  
            activity_main.xml
            info.xml
         values/  
            strings.xml 

در زیر نمونه دیگری وجود دارد که طرح بندی را برای یک زبان پیش فرض و طرح جایگزین را برای زبان عربی مشخص می کند.

MyProject/
   app/
      manifest/
         AndroidManifest.xml
   java/
      MyActivity.java   
      res/
         drawable/  
            icon.png
            background.png
         drawable-hdpi/  
            icon.png
            background.png  
         layout/  
            activity_main.xml
            info.xml
         layout-ar/
            main.xml
         values/  
            strings.xml 

دسترسی به منابع
در طول توسعه برنامه شما باید به منابع تعریف شده یا در کد خود ، یا در فایلهای XML طرح خود دسترسی پیدا کنید. بخش زیر نحوه دستیابی به منابع خود را در هر دو سناریو توضیح می دهد –
دسترسی به منابع در کد
هنگامی که برنامه Android شما کامپایل می شود ، یک کلاس R تولید می شود که شامل شناسه منابع برای تمام منابع موجود در فهرست / فهرست شما است. با استفاده از زیر شاخه و نام منبع یا به طور مستقیم شناسه منبع می توانید از کلاس R برای دسترسی به این منبع استفاده کنید.
مثال
برای دسترسی به res / drawable / myimage.png و تنظیم ImageView از کد زیر استفاده خواهید کرد –

ImageView imageView = (ImageView) findViewById(R.id.myimageview);
imageView.setImageResource(R.drawable.myimage);

در اینجا خط اول کد از R.id.myimageview استفاده می کند تا ImageView را با id myimageview در یک فایل Layout تعریف کند. خط دوم کد از R.drawable.myimage استفاده می کند تا تصویری با نام myimage در زیر شاخه قابل طراحی تحت / res دریافت کند.

مثال
مثال بعدی را در نظر بگیرید که در آن res / values / strings.xml تعریف زیر را دارد:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string  name="hello">Hello, World!</string>
</resources>

اکنون می توانید متن را بر روی یک شی TextView با ID msg با استفاده از ID منبع به شرح زیر تنظیم کنید

TextView msgTextView = (TextView) findViewById(R.id.msg);
msgTextView.setText(R.string.hello);

مثال:

res / layout / activity_main.xml را با تعریف زیر در نظر بگیرید –

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent" 
   android:orientation="vertical" >
   
   <TextView android:id="@+id/text"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Hello, I am a TextView" />

   <Button android:id="@+id/button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Hello, I am a Button" />
      
</LinearLayout>

این کد برنامه این طرح را برای یک Activity بارگذاری می کند ، در روش onCreate () به شرح زیر است:

public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
}

دسترسی به منابع در XML
فایل XML res / values / strings.xml منبع زیر را در نظر بگیرید که شامل یک منبع رنگی و یک منبع رشته ای است:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <string name="hello">Hello!</string>
</resources>

اکنون می توانید از این منابع در پرونده طرح زیر استفاده کنید تا رنگ متن و رشته متن را به صورت زیر تنظیم کنید:

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:textColor="@color/opaque_red"
   android:text="@string/hello" />

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

جلسه بعد

اجازه دهید برنامه نویسی واقعی را با Android Framework شروع کنیم. قبل از شروع به نوشتن اولین مثال خود با استفاده از Android SDK ، باید مطمئن شوید که محیط توسعه Android خود را به درستی تنظیم کرده اید ، . من همچنین تصور می کنم که شما کمی دانش کار با Android studio دارید.

بنابراین اجازه دهید ما برای نوشتن یک برنامه ساده آندروید که چاپ “Hello World”

برنامه Android ایجاد کنید.

اولین قدم ایجاد یک برنامه ساده آندروید با استفاده از Android studio است. وقتی روی نماد Android studio کلیک می کنید ، همانطور که در زیر نشان داده شده است ، صفحه نمایش داده می شود

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

با فراخوانی شروع یک پروژه جدید android studio می توانید توسعه برنامه خود را شروع کنید. در یک چارچوب نصب جدید ، باید از نام برنامه ، اطلاعات بسته و مکان پروژه وارد شود.

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

پس از وارد کردن نام برنامه ، به آن فراخوانی می شود که فاکتورهای مورد نظر در برنامه شما را انتخاب کنید ، در اینجا باید حداقل SDK را مشخص کنید ، در آموزش ما ، من به عنوان API23 اعلام کردم: Android 6.0 (Mashmallow) –

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

سطح بعدی نصب باید شامل انتخاب فعالیت برای تلفن همراه باشد ، این طرح پیش فرض برنامه ها را مشخص می کند.

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

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

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

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

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

JAVA 1
این شامل پرونده های منبع .java برای پروژه شما است. به طور پیش فرض ، این یک فایل منبع MainActivity.java با کلاس فعالیت است که هنگام راه اندازی برنامه شما با استفاده از نماد برنامه اجرا می شود.

res/drawable-hdpi 2
این یک فهرست برای اشیا draw قابل نقاشی است که برای صفحات با چگالی بالا طراحی شده اند.
res/layout 3
این یک فهرست برای پرونده هایی است که رابط کاربری برنامه شما را تعریف می کنند.
res/values 4
این یک فهرست برای سایر پرونده های مختلف XML است که شامل مجموعه ای از منابع ، مانند تعریف رشته ها و رنگ ها است.
5 AndroidManifest.xml
این پرونده آشکار است که خصوصیات اساسی برنامه را توصیف می کند و هر یک از اجزای آن را تعریف می کند.
Build.gradle 6
این یک فایل ایجاد شده خودکار است که شامل compileSdkVersion، buildToolsVersion، applicationId، minSdkVersion، targetSdkVersion، versionCode و versionName

بخش زیر به طور خلاصه پرونده های مهم برنامه را شرح می دهد.

کد فایل Main Activity

کد main activity یک فایل جاوا MainActivity.java است. این پرونده اصلی پرونده است که در نهایت به یک نسخه قابل اجرا Dalvik تبدیل می شود و برنامه شما را اجرا می کند. در زیر کد پیش فرض تولید شده توسط جادوگر برنامه برای Hello World وجود دارد! برنامه

package com.example.helloworld;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
   }
}

در اینجا ، R.layout.activity_main به پرونده activity_main.xml واقع در پوشه res / layout اشاره دارد. روش onCreate () یکی از روشهایی است که هنگام بارگذاری یک فعالیت مشخص می شود.

فایل Manifest

هر جز component را به عنوان بخشی از برنامه خود توسعه دهید ، باید تمام اجزای آن را در یک manifest.xml که در ریشه دایرکتوری پروژه برنامه قرار دارد ، اعلام کنید. این فایل به عنوان یک رابط بین سیستم عامل Android و برنامه شما کار می کند ، بنابراین اگر جز component خود را در این پرونده اعلام نکنید ، توسط سیستم عامل مورد توجه قرار نمی گیرد. به عنوان مثال ، یک فایل مانیفست پیش فرض مانند فایل زیر خواهد بود.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tutorialspoint7.myapplication">

   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      
      <activity android:name=".MainActivity">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

در اینجا برچسب <application>…</application> اجزای مربوط به برنامه را در بر می گیرد. ویژگی android:icon به نماد برنامه موجود در res / drawable-hdpi اشاره خواهد کرد. برنامه از تصویری به نام ic_launcher.png که در پوشه های قابل ترسیم قرار دارد استفاده می کند
از برچسب برای تعیین یک فعالیت استفاده می شود و ویژگی android: name نام کلاس کاملاً واجد شرایط زیر کلاس Activity را مشخص می کند و ویژگی های label android: رشته ای را برای استفاده به عنوان برچسب فعالیت مشخص می کند. با استفاده از برچسب می توانید چندین فعالیت را تعیین کنید.
اقدام برای فیلتر intent android.intent.action.MAIN نامگذاری شده است تا نشان دهد این فعالیت به عنوان نقطه ورود به برنامه عمل می کند. این دسته برای فیلتر intent android.intent.category.LAUNCHER نامگذاری شده است تا نشان دهد که برنامه را می توان از نماد راه انداز دستگاه راه اندازی کرد.
string به فایل strings.xml در زیر توضیح داده شده است. از این رو ، @ string / app_name به رشته app_name تعریف شده در فایل strings.xml ، که “HelloWorld” است ، اشاره دارد. به همین ترتیب ، رشته های دیگر در برنامه جمع می شوند.
در زیر لیستی از برچسب ها آورده شده است که برای تعیین م .لفه های مختلف برنامه Android از آنها در پرونده مانیفست خود استفاده خواهید کرد

  • <activity>elements for activities
  • <service> elements for services
  • <receiver> elements for broadcast receivers
  • <provider> elements for content providers

فایل Strings.xml

فایل strings.xml در پوشه res / values قرار دارد و حاوی تمام متنی است که برنامه شما از آن استفاده می کند. به عنوان مثال ، نام دکمه ها ، برچسب ها ، متن پیش فرض و انواع مشابه رشته ها در این پرونده قرار می گیرند. این پرونده مسئول محتوای متنی آنها است. به عنوان مثال ، یک فایل رشته ای پیش فرض مانند فایل زیر خواهد بود.

<resources>
   <string name="app_name">HelloWorld</string>
   <string name="hello_world">Hello world!</string>
   <string name="menu_settings">Settings</string>
   <string name="title_activity_main">MainActivity</string>
</resources>

فایل Layout

activity_main.xml یک فایل طرح بندی موجود در دایرکتوری res / layout است که هنگام ساخت رابط کاربری شما به آن ارجاع می شود. شما برای تغییر چیدمان برنامه خود خیلی مرتباً این فایل را تغییر می دهید. برای “سلام جهان!” برنامه ، این پرونده دارای محتوای زیر است که مربوط به طرح پیش فرض است.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent" >
   
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerHorizontal="true"
      android:layout_centerVertical="true"
      android:padding="@dimen/padding_medium"
      android:text="@string/hello_world"
      tools:context=".MainActivity" />
      
</RelativeLayout>

این نمونه ای از RelativeLayout ساده است که در یک فصل جداگانه مطالعه خواهیم کرد. TextView یک کنترل Android است که برای ساخت رابط کاربری گرافیکی مورد استفاده قرار می گیرد و دارای ویژگی های مختلفی مانند android است: layout_width ، android: layout_height و غیره که برای تنظیم عرض و ارتفاع آن استفاده می شود و غیره.string به فایل رشته های پوشه res / values. از این رو ، @ string / hello_world به رشته سلامی تعریف شده در فایل strings.xml ، که “سلام به جهان!” اشاره دارد.

اجرای برنامه

بیایید سعی کنیم Hello World خود را اجرا کنیم! برنامه ای که ما فقط ایجاد کردیم. من تصور می کنم شما AVD خود را هنگام راه اندازی محیط ایجاد کرده اید. برای اجرای برنامه از Android studio ، یکی از پرونده های فعالیت پروژه خود را باز کنید و از نوار ابزار روی نماد اجرا کلیک کنید. Android studio برنامه را روی AVD شما نصب کرده و شروع به کار می کند و اگر با تنظیمات و برنامه هایتان همه چیز خوب باشد ، زیر پنجره شبیه ساز نمایش داده می شود.

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

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

روش تحلیل سلسله مراتبی

همچنین مطلب زیر را مطالعه کنید:

وزن دهی با روش AHP

تفاوت AHP , ANP

در AHP یکی از این سوالات را پاسخ می دهد: “معیار 1 نسبت به معیار 2 از نظر هدف چقدر مهم است؟” گاهی اوقات سوالی بیش از حد انتزاعی برای پاسخ دادن است.
در ANP معیارها با پرسیدن اهمیت آنها در گزینه های در نظر گرفته شده اولویت بندی می شوند. هنگام جستجوی گزینه های واقعی که دارای خصوصیات مورد نظر هستند ، معمولاً می توان به س easierال ساده تری پاسخ داد.

آیا نتایج AHP و ANP با یکدیگر متفاوت هستند؟

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

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

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


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

کشف دانش در داده کاوی
کشف دانش در داده کاوی

مسئله پیشگویی، شامل طبقه بندی داده می­باشد. یکسری گروه(طبقه) از قبل تعیین شده موجود است و باید به نمونه ی جدید یک یا چند گروه را نسبت داده شود. جهت پیشگویی نیاز به مجموعه­ ی داده­ای است که شامل تعدادی سطر و تعدادی ستون باشد و در یک ماتریس(صفحه گسترده) نمایش داده می­ شود. در کلاسبندی، یک ستون اضافه بنام کلاس به ماتریس اضافه می­شود که شامل کلاس­ های صحیحی است که هر  نمونه ­ی آموزشی[1] در مجموعه داده دارد. برچسب ها می­توانند از نوع صحیح/غلط و یا 0/1 و یا نام طبقه(گروه) باشند.

همچنین مطالب زیر را بخوانید:

سمینار کارشناسی ارشد| هدایت شبکه خودرویی با رویکرد ترکیبی داده کاوی به منظور کنترل ترافیک

گزارش کارشناسی ارشد مهندسی نرم افزار و داده کاوی|پیش‌بینی خطاپذیری ماژول‌های نرم‌افزاری با استفاده از الگوریتم‌های یادگیری ماشین

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

گزارش کارشناسی ارشد مهندسی کامپیوتر, داده کاوی, سمینار کارشناسی ارشد, بررسی خوشه بندی داده های متنی براساس منطق فازی

کارشناسی ارشد| فایل لاتکس| بررسی تشخیص بیماری به کمک ترکیب الگوریتم­های تکاملی و تکنیک­های داده کاو


[1] Training Set

الگوریتم ژنتیکGA[1]، یک روش اماری و تکنیک جستجو در علم رایانه به منظور یافتن راه‌حل تقریبی برای بهینه‌سازی و مسایل جستجو است، الگوریتم ژنتیک نوع خاصی از الگوریتم­های تکاملی است که از تکنیک­های زیست‌شناسی مانند وراثت و جهش استفاده می‌کند. ویژگی­های خاص این الگوریتم باعث می­شود. الگوریتم‌های ژنتیک اغلب گزینه خوبی برای تکنیک‌های پیش‌بینی هستند. مختصرا گفته می‌شود که الگوریتم ژنتیک یک تکنیک برنامه‌نویسی است که از تکامل ژنتیکی به عنوان یک الگوی حل مساله استفاده می‌کند. مساله‌ای که باید حل شود ورودی است و راه‌حل­ها طبق یک الگو کدگذاری می‌شوند و توسط تابعی که تابع fitness نام دارد، سنجیده می­شود و این تابع هر راه حل کاندید را ارزیابی می‌کند که اکثر ان­ها به صورت تصادفی انتخاب می‌شوند. به طور کلی، این الگوریتم‌ها از بخش­های زیر تشکیل می‌شوند : تابع برازش – نمایش – انتخاب – تغییر.

همچنین مطالب زیر را مطالعه کنید:

سمینار کارشناسی ارشد| رایانش ابری| فایل لاتک|بررسی رتبه‌بندی سرویس­های ابری با اعمال رویکردی برای حل مسائل چندهدفه

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

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

هدف اصلی روش‌های هوشمند به کار گرفته شده در هوش مصنوعی، یافتن پاسخ بهینه مسایل مهندسی است. حال اگر از روش‌های بهینه‌سازی ریاضی استفاده کنیم مجبوریم تا در یک بازه بسیار کوچک، مقدار ماکزیمم تابع را بیابیم. مثلا از نقطه 1 شروع کنیم و تابع را ماکزیمم کنیم. بدیهی است اگر از نقطه 1 شروع کنیم تنها به مقدار ماکزیمم محلی دست خواهیم یافت و الگوریتم ما پس از ان متوقف خواهد شد. اما در روش‌های هوشمند مخصوصا الگوریتم ژنتیک، به دلیل خصلت تصادفی ان­ها، حتی اگر هم از نقطه 1 شروع کنیم باز ممکن است در میان راه، نقطه Aبه صورت تصادفی انتخاب شود که در این صورت ما شانس دست‌یابی به نقطه بهینه کلی[2]را خواهیم داشت]21[. برای شناخت الگوریتم ژنتیک، لازم است تعاریف زیر انجام شود:

  • شخص:[3]یک جواب کاندید برای مساله که معمولا به صورت رشته بیتی نمایش داده می­شود.
  • ژن[4]: هر بیت در شخص است و واحدپایه ژنتیک است.
  • فرم[5]: حالت­های مختلف هر ژن را می­گویند، اگر رشته بیتی باشد دارای مقادیر 0یا 1می­باشد.
  • لوکاس[6]: موقعیت هر ژن بر روی کروموزوم را گویند.
  • جمعیت[7]: مجموعه­ای از اشخاص که سایز ان معمولا ثابت است.
  • کروموزوم[8]: به گروهی از ژن­ها اطلاق می­شود.

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

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

ترکیب، دو کروموزوم را با انتخاب تصادفی موقعیتی مانند P ترکیب می­کند که  Pمقداری کمتر یا مساوی طول کروموزوم­ها است. اگر تعداد (طول) ژن­ها در کروموزوم­ها Nباشد، از دو کروموزوم والد، دو فرزند به صورت زیر به وجود می­اید. یک فرزند با کپی کردن ژن­های 1,…,(P-1)از کروموزوم والد اول و ژن­های P,…,Nاز کروموزوم والد دوم ساخته می­شود. فرزند دیگر به طور مشابه، این بار با کپی کردن ژن­های 1,…,(P-1)از کروموزوم والد دوم و ژن­های P,…,Nاز کروموزوم والد اول به وجود می­اید. در این ترکیب از دو والد، دو فرزند به وجود می­اید.

جهش نیز عملگر دیگری است که جواب­های ممکن دیگری را متولد می­کند. در الگوریتم ژنتیک بعد از این که یک عضو در جمعیت جدید به وجود امد، هر ژن ان با احتمال جهش، جهش می­یابد. در جهش ممکن است ژنی از مجموعه ژن­های جمعیت حذف شود یا ژنی که تا به حال در جمعیت وجود نداشته است، به ان اضافه شود. جهش یک ژن به معنای تغییر ان ژن است و بسته به نوع کدگذاری، روش­های متفاوت جهش استفاده می­شود. می­توان استنباط کرد که مهم­ترین وظیفه جهش، اجتناب از همگرایی به بهینه محلی است. در الگوریتم ژنتیک با کدگذاری باینری، این عمل با تولید تصادفی یکی از اعداد 0یا 1و جایگزینی ان به جای بیت موردنظر صورت می­گیرد. اما در برخی کاربردهای ژننتیک، عمل جهش دودویی در یک بیت با متمم ساختن ان بیت انجام می­گیرد که این روش مناسب­تر است. رمزگشایی، عکس عمل Encoding(رمزگذاری) است. در این مرحله بعد از این که الگوریتم بهترین جواب را برای مساله ارایه کرد، لازم است عکس عمل رمزگذاری روی جواب­ها اعمال شود.

عملیات الگوریتم ژنتیک
GA
Genetic Algorithm
عملیات الگوریتم ژنتیک

[1] Genetic Algorithm

[2] Global Optimal

[3] Individual

[4] Gene

[5] allele

[6] Locus

[7] Population

[8] chromosome

[9] Encoding

[10] Evaluation

[11] Crossover

[12] Mutation

[13] Decoding

يك دليل مهم براي بكارگيري روش­هاي داده کاوي در مجموعه مستندات متني سازمان دادن آنها است. يك ساختار مي ­تواند به طور چشم­گيري دسترسي به مجموعه مستندات را براي كاربر ساده كند. مشهورترين دسترسي به ساختارها كاتالوگ­ هاي كتابخانه يا اندیس­ هاي كتاب هستند. یکی از مشکلاتی که در طراحي دستي ايندكس­ ها در کتابخانه ­ها، زماني است كه براي نگهداري آنها لازم است. در نتيجه آنها هميشه به روز نيستند و اطلاعاتي كه اخيرا به اشتراك گذاشته شده را در بر ندارند يا اينكه بارها اطلاعات آنها تغيير مي­كند مانند اطلاعات وب. روش­هايي كه براي سازمان دهی مجموعه­ ها وجود دارند تلاش مي كنند تا مستندات را بر اساس كلمات كليدي آن­ها کلاس بندي کنند، يا به طورخودكار مجموعه مستندات را بر اساس مستندهاي مشابه سازماندهی[1] کنند.

اساس دسته ­بندي متون انتصاب كلاس ­هاي پيش تعريف شده  به مستندات متني است. يعني بتوان با توجه به کلاس­هاي از قبل تعيين شده، کلاس سند مورد نظر را تشخيص داد. به عنوان مثال برچسب زدن خودكار خبرهاي رسيده با موضوعاتي از قبيل ورزش، هنر و …. . متد کلاس بندي در داده کاوي كار خود را با يك مجموعه آموزشي D={d1,d2,..,dn} از مستنداتي كه قبلا کلاس­بندي شده ­اند آغاز مي­كنند. از اين مجموعه آموزشي در تعيين کلاس سند هاي جديد استفاده مي شود. عبارت بالا سند جديد d  از دامنه را  به كلاس مناسب انتصاب مي دهد.

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

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

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

براي سنجش كارايي مدل طراحي شده براي دسته بندي مي توان از مستنداتي براي تست مدل استفاده کرد . نکته قابل توجه اين است که سندي که براي تست مدل ساخته شده استفاده مي شود نبايد در مستندات مجموعه آموزشي قرار داشته باشد. ما مستندات اين مجموعه آزمايشي را دسته­بندي مي­كنيم و کلاس­هاي نتيجه را با کلاس­هاي صحيح مقايسه كنيم. ميزان درستي کلاس مستندات نسبت به تعداد كل مستندات، دقت[3] ناميده مي­شود و نخستين سنجش كارايي است.

بعد از آماده سازی مجموعه داده، کلاسبندی متن را انجام می­دهیم. بطور کلی در داده کاوی برچسب تابعی از بردارهای موجود در مجموعه داده است و می­توان آن را بصورت f:wàL نمایش داد که w برداری از صفات است و L نشان دهنده­ی برچسب است. در متن کاوی صفات، کلمات و نشانه­ها هستند و تعیین برچسب­ها هدف اصلی در کلاسبندی متن می­باشد که با لغات استخراج شده در ارتباط است.

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

روند کلاسبندی یک سند متنی

[1] Clustering

[2] Ontology

[3] Accuracy

متن کاوي فرآيندي است که شامل فيلدهاي تکنولوژيکي فراواني است. بازيابي اطلاعات[1]، داده کاوي[2]، هوش مصنوعي[3] و زبان­شناسي محاسباتي[4]، همگی فيلدهايي هستند که در اين زمينه، نقشي را دارا هستند. اما به طور کلي دو فاز اصلي در فرآيند متن کاوي وجود دارد.

همچنین مطالب زیر را مطالعه کنید:

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

اولين فاز، پيش پردازش مستندات[5] است. خروجي نخستين فاز مي تواند دو قالب مختلف داشته باشد که شامل مبتني بر سند و مبتني بر مفهوم می­ باشد. در اولين قالب نمايش، آنچه اهمیت دارد، نمايش بهتري براي مستندات است که مي­تواند شامل تبدیل مستندات متنی به يك فرمت مياني و نيمه ساخت­يافته باشد يا بكار بردن اندیس يا هر نوع نمايش ديگري كه كار كردن با مستند را كاراتر مي كند. در اين صورت هر موجوديت در اين نمايش، در نهايت باز هم يك مستند خواهد بود. در نوع دوم بهبود بخشي به نمايش مستند، مفاهيم و معاني موجود در سند و نيز ارتباط ميان آنها و هر نوع اطلاعات مفهومي ديگري كه  قابل استخراج است، از متن استخراج مي شود. در اين نوع نمايش ديگر با مستندات به عنوان يك موجوديت مواجه نيستيم بلكه با مفاهيمي روبرو هستیم كه از اين مستندات استخراج شده ­اند.

قدم بعدي استخراج دانش از فرم­هاي مياني نمايش مستندات است. بسته به نحوه­ي نمايش يك مستند، روال استخراج دانش براي يك مستند متفاوت است. نمايش مبتني بر سند، براي گروه بندي، طبقه بندي، تصويرگري و نظاير آن استفاده مي شود، در حاليكه نمايش مبتني بر مفهوم براي يافتن روابط ميان مفاهيم، آنتولوژي[1] و نظاير آن بكار  مي­رود.

[1] Ontology


[1] Information Retrieval

[2] Data Mining

[3] Artificial Intelligence

[4] Computational Linguistic

[5] Document Preprocessing

سرویسهای ابری
پردازش ابری با آمدن خود تحولاتی در همه ی زمینه ها ایجاد نمود، یا بهتر است بگوییم بازار کاری پر رونقی با خود به همراه آورده است. شرکتها و سازمانهای معروف با سرویسهای این فنّاوری، جایگاه خود را محکمتر کردند و آن‌هایی که نامی نداشتند، با چنگ زدن به پردازش ابری نام و جایگاهی برای خود فراهم کردند.
سه سرویس فراهم‌شده از معماری رایانش ابری بر پایه نیاز مشتریان IT به‌صورت زیر است:
• نرم‌افزار به ‌عنوان سرویس (SaaS) مدل توزیع برنامه های کاربردی، که در آن فروشنده یا ارائه‌دهنده، خدمات میزبانی و در دسترس را به مشتریان بر روی یک شبکه، ارائه میدهد (ارائه نرم‌افزار مبتنی بر اینترنت). در واقع میتوان آن را چنین تعریف کرد، تمامی نرم-افزارهایی که تاکنون از مغازه ها تهیه میکردیم اکنون با استفاده از اینترنت و یک واسط در سراسر دنیا به آنها دسترسی داشته باشیم. برای مثال، استفاده از Gmail از شرکت گوگل یک SaaS است.
• پلتفرم به‌عنوان سرویس (PaaS)، الگوی ارائه سیستم‌عامل و خدمات مرتبط بر روی اینترنت، بدون دریافت و یا نصب و راهاندازی است. این لایه در بالای لایه زیرساخت قرار دارد. به لایه نرم‌افزاری در ابر که امکان ساخت لایه های بالایی را فراهم میکند، سکوی ابری میگویند. این سرویس یک‌لایه‌ی نرم‌افزاری را به‌صورت بسته ارائه می‌دهد که می‌توان از آن برای تولید سرویس‌های سطح بالاتر استفاده نمود. لایه PaaS امکاناتی جهت ساخت برنامه را برای ما فراهم می‌کند که این برنامه قابل ‌اجرا بر روی لایه SaaSاست. یک مثال خوب میتواند موتور Google Apps، تولید نرم افزار توسط زیرساخت گوگل باشد که امکان اجرای برنامه های کاربردی را فراهم میکند.
• زیرساخت به عنوان سرویس (IaaS) شامل برون‌سپاری تجهیزات مورد استفاده، برای حمایت از عملیاتی ازجمله ذخیره‌سازی، سخت‌افزار، سرویس دهنده ها و اجزای شبکه است. کاربران به ‌جای خرید سخت‌افزار، نر مافزار، فضای مرکز داده و یا تجهیزات شبکه، همه این زیرساختها را به‌صورت یک سرویس کاملاً برون‌سپاری شده خریداری می‌کنند. درواقع این سرویس مدلی از پردازش ابری است که بر اساس آن سخت افزارها در ابر مجازی میشوند و بدون لایه زیرساخت لایه های بالایی قادر به ارائه سرویس نخواهند بود.
صورتحساب سرویس معمولاً براساس مدل رایانش همگانی و میزان منابع مصرف‌شده صادر میشود. بنابراین هزینه منعکس‌کننده میزان فعالیت است. توافقنامه سطح سرویس (SLA) قرارداد تضمین و تأمین میزانی معین از کیفیت سرویس از شرکت سرویس‌دهنده برای شرکت سرویس‌گیرنده یا کاربر است. قرارداد خدمات متضمن عرضه خدمات است و بسیاری از تأمین‌کنندگان خدمات در صورت عدم اجرای تعهدات ذکرشده خسارت می‌دهند درحالی‌که این نوع پیشنهاد‌ها در ظاهر جذاب هستند، همیشه خدمات باکیفیت برابری نمیکنند.
همان‌طور که مشخص است هر سرویس دارای قیمت، ویژگیها و کارایی خاص خود است. هر ارائه‌دهنده‌ی سرویس بر اساس قیمت، ویژگیها و کارایی سرویسهای متنوعی را برای مشتریان ارائه میکند. مثلاً یک سرویس با محاسبات گران و ذخیره‌سازی ارزان و غیره. با رشد درخواستهای ابری از طرف مشتریان انتخاب بهترین فراهم‌کننده سرویس از بین سرویسهای مشابه بر اساس نیازمندیهای مشتری ازنظر کارایی و هزینه به امری پیچیده تبدیل‌شده است.

همچنین مطالب زیر را مطالعه کنید:
سمینار کارشناسی ارشد| رایانش ابری| فایل لاتک|بررسی رتبه‌بندی سرویس­های ابری با اعمال رویکردی برای حل مسائل چندهدفه

مجموعه داده QWS جهت مقایسه وب سرویس ها

نظارت بر سیستم های بر پایه سرویس بر طبق توافقنامه سطح سرویس

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

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

کیفیت سرویس
به طوری کلی جهت بررسی کیفیت وب سرویسها باید صفات آنها از طریق معیارهای کیفی مورد ارزیابی قرار بگیرد. معیارهای کیفی به دو دسته عملیاتی و غیرعمیلیاتی تقسیم میشوند. معیارهای عملیاتی دارای صفاتی است که قابلیت کمی سازی دارد. اما معیارهای غیرعملیاتی قابلیت کمی سازی را ندارد. همچنین تمامی صفات کیفی در سرویسهای ابری قابل استفاده نیستند برای نمونه صفت قابلیت نصب که یک صفت کیفی غیرعملیاتی است، در وب سرویسها کاربردی ندارد زیرا وب سرویس نیازی به نصب شدن در سیستم کاربر ندارد. برخی از صفات کیفی که در وب سرویسها قابل استفاده است به صورت زیر است (۱).
۱ زمان پاسخ سرویس
بهره وری در دسترس بودن یک سرویس می تواند از لحاظ زمان پاسخ اندازه گیری شود، به عنوان مثال در مورد IaaS منظور این است که سرویس با چه سرعتی می‌تواند برای استفاده فراهم شود. زمان پاسخ سرویس به زیرفاکتورهای گوناگونی نظیر میانگین زمان پاسخ، حداکثر زمان پاسخ که توسط ارائه‌دهنده سرویس وعده داده شده و درصدی از‌زمانی که سیستم پاسخ نمی‌دهد بستگی دارد. میانگین زمان پاسخ از طریق فرمول به دست می‌آید که Ti فاصله ‌زمانی بین درخواست مشتری i برای یک سرویس است که واقعا سرویس در دسترس قرار می‌گیرد. N تعداد کل درخواست ها است. حداکثر زمان پاسخ، ماکزیمم زمان وعده داده شده توسط ارائه دهنده ابر برای سرویس مورد نظر است. زمان عدم پاسخ درصدی از موارد است که زمان پاسخ بیشتر از حداکثر ‌زمان پاسخی هست که توسط ارائه دهنده وعده داده شده است. زمان عدم پاسخ از رابطه بدست می‌آید که n’ تعداد مواردی است که ارائه دهنده سرویس نمی‌‌‌تواند به وعده اش عمل کند (۱).

۲ شایستگی
شایستگی به صورت درجهای که نیازمندی‌های مشتری توسط ارائه دهنده برآورده می‌شود تعریف می‌گردد. قبل از اینکه شایستگی را تعریف کنیم دو مورد وجود دارد. اول اینکه، اگر بعد از فیلتر کردن ارائه دهندگان، بیشتر از یک ارائه هنده وجود داشته باشد که تمامی نیازمندی های ضروری و غیر ضروری مشتری را برآورده کند، بنابراین همه آنها شایسته هستند. درغیر اینصورت، اگر فیلترینگ یک لیست خالی از ارائه دهندگان ابر ایجاد کند آن ارائه دهندگانی که نیازمندی های ضروری را برآورده میکنند انتخاب می‌شوند. در این موارد، شایستگی درجهای خواهد بود که ویژگی های سرویس به نیازمندیهای کاربر نزدیکتر شود.
۳ دقت
دقت عملکرد سرویس، درجه نزدیکی مقادیر واقعی کاربر در مقایسه با مقادیر مورد انتظار است. برای منابع محاسباتی مانند ماشین های مجازی، اولین شاخص دقت تعداد دفعاتی هست که ارائه دهنده از محدوده قرارداد سطح سرویس خارج می‌شود که به عنوان فرکانس شکست در عملی کردن قرارداد سطح سرویس وعده داده شده به لحاظ واحدهای محاسباتی، شبکه و ذخیره سازی تعریف میشود. اگر fi تعداد دفعات شکست ارائه دهنده در برآوردن مقادیر وعده داده شده به کاربرi در مدت زمان سرویس T باشد، فرکانس دقت به صورت تعریف می شود که n تعداد کاربران قبلی است. شاخص دیگر دقت، مقدار دقت است که با رابطه تعریف می شود که می تواند واحد محاسباتی، شبکه یا ذخیره سازی باشد و Tiزمان سرویسT برای کاربر i می باشد.
۴ در دسترس بودن
درصدی از زمان است که مشتری می‌تواند از سرویس استفاده کند. فرمول 2.1 میزان در دسترس پذیری در یک ماه را نشان میدهد.

محاسبه در دسترس پذیری سروس

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

که numfailure تعداد کاربرانی است که خطایی را در بازه زمانی کمتر از مقدار قرارداد شده توسط ارائه دهنده تجربه کردهاند، n تعداد کاربران است و pmttf میانگین زمان قرارداد شده برای خطا است. بنابراین حاصل‌ضرب احتمال بروز خطا که جزئی از تجربه کاربر خبره است در میانگین زمان خطا قابلیت اطمینان را نشان می‌دهد. قابلیت اطمینان یک دستگاه ذخیره سازی را می توان از لحاظ دوام و پایداری، که شانس خرابی یه دستگاه ذخیره‌سازی را نشان می‌دهد تعریف کرد (۱).

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

متغیر α می‌تواند یک واحد محاسباتی، شبکه یا واحد ذخیره سازی منبع باشد، میانگین عملکرد مشاهده شده توسط کاربر iهست که سرویس ابر را اجاره کرده است، مقدار موردنظر در توافقنامه سطح سرویس است، T زمان سرویس و n تعداد کاربران است (۱).

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

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

۹ قابلیت استفاده
سادگی استفاده از سرویس ابر را قابلیت استفاده می‌نامیم. مؤلفه‌هایی مانند قابلیت اجرا، قابلیت یادگیری، قابلیت نصب، قابل فهم بودن می‌توانند به عنوان زمان متوسط تجربه شده توسط کاربران قبلی سرویس ابر برای کارکردن، یادگیری، نصب و فهمیدن آن به ترتیب بیان شوند(۱).
۱۰ توان عملیاتی و کارایی
توان عملیاتی و کارایی مهم ترین اندازه گیری‌ها برای تخمین عملکرد سرویس های زیرساخت فراهم شده توسط ابر است. توان عملیاتی تعداد کارهای تکمیل شده توسط سرویس ابر در واحد زمان است. توان عملیاتی کمی با زمان پاسخ سرویس که با چه سرعتی سرویس فراهم می شود را اندازه گیری می کند متفاوت است. توان عملیاتی به چندین فاکتور بستگی دارد که می تواند بر اجرای یک کار تاثیر بگذارد. فرض کنید برنامه کاربردی کاربر n کار دارد و آنها برای اجرا بر روی m ماشین ارائه دهنده ارسال می شوند. فرض Te(n,m) زمان اجرای n کار بر روی m ماشین باشد. Toسربار زمانی به علت فاکتورهای گوناگون مانند تاخیر شروع زیرساخت و تاخیر ارتباط بین کار می‌باشد. بنابراین توان عملیاتی کل یک سرویس ابری به صورت زیر محاسبه می‌شود:
محاسبه کارایی سرویس ابری یا performane

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

فایل اصلی مقاله را در این لینک می توانید دانلود کنید