loading...

مرجع تخصصی بروزترین مقالات طراحی اپلیکیشن

بازدید : 56
شنبه 16 فروردين 1404 زمان : 10:18


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

یک اعلان کلاس Kotlin مشابه به Java Programmig میباشد که از یک هدر کلاس و یک بادی کلاس تسلط گردیده به وسیله پرانتزها ساخته شده میباشد.

class ClassName { // Class Header

//
// Variables or data members
// Member functions or Methods
//
...
...
COPY
به‌طور پیش‌فرض، کلاس‌های کاتلین public میباشند و خواهیم توانست با استعمال از modifiers مختلفی که در Visibility Modifiers خاطر میگیریم، رویت کرد اعضای کلاس را در اختیار گرفتن کنیم.

آبجکت ها در کاتلین
شی ها یا این که به عبارتی آبجکت ها از کلاس Kotlin ساخت‌و‌ساز میگردند و مختصات و رفتارهای مشترک تعریف‌و‌تمجید گردیده به وسیله یک کلاس را به ترتیب در پوسته data members (properties) و توابع عضو (behaviours) به اشتراک می‌گذارند.

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

var varName = ClassName()
COPY
ما میتوانیم به خصوصیت‌ها و متدهای یک کلاس با استعمال از عملگر نقطه . بر اساس شرایط پایین اشاره کنیم :

var varName = ClassName()
varName.property =
varName.functionName()
COPY
در ذیل مثالی وجود داراست که در آن یک کلاس Kotlin و شیء آن ساخت می‌کنیم که از روش آن به data members متعدد آن کلاس دسترسی خوا‌هیم داشت.

class myClass {
// Property (data member)
private var name: String = "manataz.com"

// Member function
fun printMe() {
print("The best Learning website - " + name)
}
}
fun main(args: Array) {
val obj = myClass() // Create object obj of myClass class
obj.printMe() // Call a member function using object
}
COPY
قطعه کد بالا خروجی ذیل را در مرورگر به دست میدهد، جایی که ما اسلوب printMe() myClass را با یاری شیء خاص خویش obj فراخوانی می‌کنیم.

The best Learning website – manataz.com

کلاس های تو در تو در کاتلین (nested class)
طبق تعریف‌و‌تمجید، وقتی که یک کلاس در درون کلاس دیگری ساخته شده است، آن را تحت عنوان یک کلاس داخل هم (nested class) می نامند.

کلاس تودرتوی Kotlin به صورت پیش فرض اثبات میباشد.
البته با امداد عملگر نقطه . در به عبارتی مجال ما نمی توانیم به اعضای کلاس فرنگی در درون یک کلاس تودر تو دسترسی داشته باشیم.

در ذیل امر بی آلایش برای ساخت یک کلاس داخل هم آمده میباشد:

class OuterClass{
// Members of Outer Class
class NestedClass{
// Members of Nested Class
}
}
COPY
در حال حاضر می‌توانیم یک شی از کلاس تودر تو به طور تحت ساخت‌و‌ساز کنیم:

val object = OuterClass.NestedClass()
COPY
در ذیل مثالی اورده شده میباشد تا علامت دهد کاتلین به چه شکل یک کلاس تو درتو را تعبیر و تفسیر می نماید.

fun main(args: Array) {
val obj = Outer.Nested()

print(obj.foo())
}
class Outer {
class Nested {
fun foo() = "Welcome to The manataz.com"
}
}

بازدید : 103
پنجشنبه 14 فروردين 1404 زمان : 19:50


نرم افزار نیتیو (Native Apps) یا این که همان نرم افزار های مستقر
این گروه از نرم افزار ها به طور حرفه‌ای اپلیکیشن نویسی میگردند و اکثر اپ های تلفن همراه برنده و پر اسم و رسم از این نوع نرم‌افزار نویسی سود کرده اند. نرم افزار هایی از قبیل: اسنپ ، تپسی، دیجی مال و … .

اپلیکیشن گوشی مستقر یک نرم‌افزار میباشد که در یک گویش اپ نویسی خاص مانند Objective C برای iOS و Java برای سیستم استدلال های اندروید کد نویسی گردیده‌است. اپ مستقر برای استعمال در یک پلت هیبت یا این که دستگاه خاص پیاده سازی شد‌ه‌است. این نرم‌افزار های ساکن گوشی، تلاش سریع و قابلیت و امکان یقین بالا را ارائه می‌دهند. آنان همینطور به دستگاه های گوناگون تلفن مانند دوربین و دفتر کار نشانی دسترسی دارا هستند. همینطور، یوزرها می‌توانند از بعضی اپلیکیشن ها سوای اتصال به وب به کارگیری نمایند. با این هم اکنون، این نوع نرم افزار برای بسط مستلزم هزینه میباشد، چون مختص یک سیستم دلیل پیاده سازی میگردد، و کمپانی را ناچار می نماید تا ورژن های تکراری را که در سیستم ادله های دیگر شغل می نمایند، بسازد. اکثر بازی های ویدئویی نرم افزار های مستقر گوشی می‌باشند. یک نرم افزار مستقر فقط می‌تواند روی یک نوع سیستم برهان گوشی اعمال گردد: iOS، Android، Blackberry، Symbian، Windows Phone، WebOS، و… . در‌صورتی‌که میخواهید تجربیات نرم‌افزار خویش را برای یوزرها Android یا این که Blackberry نیز در دسترس یوزرها قرار دهید، نیاز به بسط و محافظت یک طراحی اپلیکیشن در مشهد ورژن غیروابسته از برنامه دارید.

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


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

بازدید : 63
سه شنبه 12 فروردين 1404 زمان : 15:14


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

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

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

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

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

بازدید : 27
يکشنبه 10 فروردين 1404 زمان : 11:24


معرفی اشکال پیاده سازی نرم افزار گوشی
اشکال پیاده سازی نرم افزار گوشی

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

نرم افزار نیتیو (Native Apps) یا این که همان نرم افزار های مستقر
این مجموعه از نرم افزار ها به طور حرفه‌ای نرم‌افزار نویسی می‌شوند و اکثر اپلیکیشن های گوشی چیره و پر اسم و رسم از این نوع اپ نویسی سود کرده اند. نرم افزار هایی از قبیل: اسنپ ، تپسی، دیجی متاع و … .

اپلیکیشن گوشی ساکن یک برنامه میباشد که در یک لهجه اپ نویسی خاص مانند Objective C برای iOS و Java برای سیستم استدلال های اندروید کد نویسی گردیده‌است. نرم‌افزار ساکن برای به کارگیری در یک پلت هیبت یا این که دستگاه خاص پیاده سازی گردیده‌است. این نرم‌افزار های ساکن گوشی، کارایی سریع و قابلیت و امکان یقین بالا را ارائه می‌دهند. آنان همینطور به دستگاه های متعدد تلفن مانند دوربین و محل کار نشانی دسترسی دارا هستند. همینطور، یوزرها می‌توانند از بعضا اپلیکیشن ها سوای اتصال به وب استعمال نمایند. با این اکنون، این نوع اپ برای بسط مستلزم هزینه میباشد، چون مختص یک سیستم برهان پیاده سازی میشود، و کمپانی را بدون چاره می نماید تا ورژن های تکراری را که در سیستم استدلال های دیگر فعالیت می نمایند، بسازد. اکثر بازی های ویدئویی نرم‌افزار های مستقر گوشی می‌باشند. یک اپلیکیشن ساکن فقط میتواند روی یک نوع سیستم ادله گوشی اعمال خواهد شد: iOS، Android، Blackberry، Symbian، Windows Phone، WebOS، و… . در‌حالتی که میخواهید تجربیات نرم افزار خویش را برای یوزرها Android یا این که Blackberry نیز در دسترس یوزرها قرار دهید، نیاز به پیشرفت و مراقبت یک ورژن مستقل از برنامه دارید.

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


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

بازدید : 68
شنبه 9 فروردين 1404 زمان : 11:20


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

یک پلتفرم یا این که کانال ی تبلیغاتی چه‌طور عمل می نماید ؟
هر توشه که یک مخاطب ، تبلیغی را می‌بیند، یک روند غامض در پشت صحنه حادثه می‌ افتد و این مراحل بغرنج چیزی مشابه به‌این میباشد :

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

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

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

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

بازدید : 65
پنجشنبه 7 فروردين 1404 زمان : 10:47


نصب و فعال سازی جنگو
برای شناخت با کتابخانه ی جنگو ، ابتداعابه وب سایت قانونی جنگو (https://www.djangoproject.com) رجوع کنید و با کلیک بر روی بخش دانلود، جنگو را دانلود فرمایید.
در اینجا آیتم های مختلفی را برای دانلود The Django طراحی اپلیکیشن در مشهد شاهد آن هستیم.

جنگو برای استارت نصب به پیپ نیاز داراست.
Pip یک سیستم رئیس بسته میباشد که برای نصب و رئیس پکیج های مندرج در پایتون استعمال میشود.
برای پایتون 3.4 و ورژن های فراتر از pip3 برای رئیس بسته ها به کار گیری می‌شود.
هم اکنون در پی با ما یار باشید تا قدم به قدم نصب جنگو را پیش ببریم.

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

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

در ویندوز در صورتی‌که که پوشه دانلود گردیده از کتابخانه جنگو، در فایل‌ای به نشانی c:\\Django-x.xx ذخیره گردیده باشد ، کافی میباشد با به کار گیری از فرمان ذیل ، آغاز به محتویات پوشه دانلود گردیده دسترسی ساخت خواهد شد:



c:\\>cd c:\\Django-x.xx
COPY
بعد، با اجرای فرمان پایین ، کتابخانه جنگو روی سیستم برهان ویندوز نصب گردد
(قابل ذکر میباشد برای نصب جنگو در سیستم ادله ویندوز، به سطح دسترسی administrative privileges نیاز میباشد):


c:\\Django-x.xx>python setup.py install
COPY
برای اینکه مطمئن شویم جنگو به صحت نصب گردیده‌است ، CMD را گشوده و یکی‌از گروه اوامر پایین را اعمال فرمایید:

c:\\>python -c "import django; print(django.get_version())"

بازدید : 57
چهارشنبه 6 فروردين 1404 زمان : 12:47


ActivityIndicator
درین نصیب به شما علامت خوا هیم اعطا کرد که چه طور از ActivityIndicator در React Native طراحی اپلیکیشن در مشهد استعمال نمایید.

مرحله ۱ : App

کامپوننت App برای وارد کردن و نماد دادن ActivityIndicator ما استعمال گردد.

App.js

import React from \'react\'
import ActivityIndicatorExample from \'./activity_indicator_example.js\'

const Home = () => {
return (

)
}
export default Home
COPY
مرحله ۲ : ActivityIndicatorExample

خصوصیت Animating یک Boolean میباشد که برای نشانه دادن ActivityIndicator به کارگیری می گردد.
دومین شش ثانیه بعداز نصب قطعه بسته میگردد.
این عمل با به کارگیری از تابع ()closeActivityIndicator ایفا می‌شود.

activity_indicator_example.js

import React, { Component } from \'react\';
import { ActivityIndicator, View, Text, TouchableOpacity, StyleSheet } from \'react-native\';

class ActivityIndicatorExample extends Component {
state = { animating: true }

closeActivityIndicator = () => setTimeout(() => this.setState({
animating: false }), 60000)

componentDidMount = () => this.closeActivityIndicator()
render() {
const animating = this.state.animating
return (

animating = {animating}
color = \'#bc2b78\'
size = "large"
style = {styles.activityIndicator}/>

)
}
}
export default ActivityIndicatorExample

const styles = StyleSheet.create ({
container: {
flex: 1,
justifyContent: \'center\',
alignItems: \'center\',
marginTop: 70
},
activityIndicator: {
flex: 1,
justifyContent: \'center\',
alignItems: \'center\',
height: 80
}
})
COPY
زمانی app را ایفا میکنیم ، لودر را روی برگه میبینیم.
بعداز شش ثانیه ناپدید می‌شود.


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

مرحله ۱ : ساخت و ساز پوشه
در اینجا، فایل App.js تحت عنوان یک کامپوننت نمایشی به کارگیری شود.

App.js

import React from \'react\'
import PickerExample from \'./PickerExample.js\'

const App = () => {
return (

)
}
export default App
COPY
مرحله ۲ : Logic

this.state.user برای picker control به کارگیری میگردد.

تابع updateUser با تعیین استفاده کننده فعال میشود.

PickerExample.js

خروجی :


در حالتی‌که روی name کلیک نمائید، هر سه آیتم را به طور − از شما میخواهد


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


Status Bar
درین قسمت ، طرز در اختیار گرفتن status bar appearance در React Native را به شما علامت خوا هیم بخشید.
به کار گیری از status bar سهل و آسان میباشد و فقط کاری که بایستی اجرا دهید این میباشد که مشخصات را برای تغییر و تحول آن تهیه و تنظیم نمائید.
از خصوصیت hidden می اقتدار برای نهفته کردن status bar بهره مند شد.
در نمونه تحت status bar ما روی false تهیه و تنظیم گردیده‌است.
این مقدار پیش فرض میباشد.
barStyle میتواند سه مقدار داشته باشد :

dark-content
light-content
default
این کامپوننت دارنده یک‌سری خصوصیت دیگر میباشد که می اقتدار از آنان استفاده نمود.
بعضی از آن ها مختص اندروید یا این که IOS می‌باشند.
می‌توانید آن را در official documentation تحقیق نمایید.

App.js

import React, { Component } from \'react\';
import { StatusBar } from \'react-native\'

const App = () => {
return (

بازدید : 31
سه شنبه 5 فروردين 1404 زمان : 14:41


Swift - Optionals
سوئیفت 4 همینطور Optionals type را معرفی می نماید که خلا یک مقدار را در دست طراحی اپلیکیشن در مشهد گرفتن می نماید.
مورد های از روی اختیار میگویند “یک مقدار وجود دارااست و موازی با x میباشد” یا این که “به هیچ عنوان پاره ای نیست”.
Optional به تنهایی یک type میباشد و در واقع یکی جدیدترین آیتم های سوئیفت 4 میباشد.
این دارنده دو مقدار ممکن میباشد، None و Some(T)، که در آن T یک مقدار مرتبط از type داده درست مو جود در سوئیفت 4 میباشد.

var perhapsInt: Int?
COPY
در اینجا یک اعلان فن ازروی اختیار میباشد :

var perhapsStr: String?
COPY
اعلان بالا مساوی مقداردهی اول آن به nil میباشد که به معنای خلا مقدار میباشد.

var perhapsStr: String? = nil
COPY
بیایید نمونه پایین را در لحاظ بگیریم تا بفهمیم که چه‌گونه آیتم‌های از روی اراده در Swift 4 عمل می‌نمایند

var myString:String? = nil

if myString != nil {
print(myString)
} else {
print("myString has nil value")
}
COPY
خروجی :

myString has nil value
COPY
مورد‌های ازروی اختیار شبیه به کار گیری از nil با اشاره‌گرها در Objective-C می باشند،
ولی برای هر type ، خیر تنها کلاس‌ها، شغل می‌نمایند.

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

نمونه :

var myString:String?

myString = "Hello, Swift 4!"

if myString != nil {
print(myString)
} else {
print("myString has nil value")
}
COPY
خروجی :

Optional("Hello, Swift 4!")
COPY
اکنون اذن دهید unwrapping را جاری ساختن کنیم تا مقدار درست متغیر را بدست آوریم

var myString:String?

myString = "Hello, Swift 4!"

if myString != nil {
print( myString! )
} else {
print("myString has nil value")
}
COPY
خروجی :

Hello, Swift 4!
COPY
Automatic Unwrapping
می‌توانید متغیرهای ازروی میل را با به کار گیری از نشان تعجب به مکان نشان پرسش اعلام فرمائید.
اینگونه متغیرهای ازروی اراده به صورت اتومات گشوده می‌شوند و برای اخذ مقدار تخصیص داده گردیده نیازی به استعمال از نشان تعجب دیگری در انتهای متغیر ندارید.

var myString:String!
myString = "Hello, Swift 4!"

if myString != nil {
print(myString)
} else {
print("myString has nil value")
}
COPY
خروجی :

Hello, Swift 4!
COPY
Optional Binding
از binding برای یافت کردن اینکه آیا یک valueاختیاری دربردارنده value میباشد یا این که نه، به کار گیری فرمایید، و در صورتی‌که اینگونه میباشد، آن value را تحت عنوان یک constant یا این که variable موقت در دسترس قرار دهید.
یک optional binding برای امر if به طور پایین میباشد :

if let constantName = someOptional {
statements
}
COPY
Tuple ها
سوئیفت 4 Tuples type را نیز معرفی می نماید که برای دسته بندی چند مقدار در یک مقدار ترکیبی واحد به کار گیری می گردد.

مقادیر مو جود در یک تاپل می‌توانند از هر نوع باشند و نیازی به یک نوع بودن ندارند.
از جمله، (“Tutorials Point”، 123) یک تاپل با دو مقدار میباشد ، یکی‌از نوع فن و دیگری از نوع عدد درست میباشد.

شما می‌توانید تاپل ها را از هر مقدار که می‌خواهید و از هر تعداد نوع داده متعدد ساخت و ساز نمایید.

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

var TupleName = (Value1, value2,… any number of values)
COPY
با به کارگیری از اعداد شاخصی که از 0 آغاز می‌شوند میتوانید به مقادیر تاپل دسترسی پیدا نمایید.
در اینجا مثال ای از دسترسی به مقادیر tuple ، آمده میباشد.

print(“The code is\\(error501.0)”)
print(“The definition of error is\\(error501.1)”)
COPY
میتوانید متغیرهای یک تاپل را در زمان اعلان اسم‌گذاری نمائید و میتوانید با به کار گیری از اسم آنان را فراخوانی نمایید.

var error501 = (errorCode: 501, description: “Not Implemented”)
print(error501.errorCode) // prints 501.
COPY
تاپل ها در برگرداندن یکسری مقدار از یک تابع اثر گذار میباشند.
مانند، یک اپلیکیشن اینترنت ممکن میباشد یک‌سری نوع (“String”، Int) را برای نشانه دادن توفیق یا این که عدم توفیق بارگیری برگرداند.
با برگرداندن مقادیر متفاوت در یک تاپل ، میتوانیم بسته به اشکال گوناگون تاپل تصمیم گیری کنیم.
نکته ی قابل ذکر این میباشد که تاپل ها برای مقادیر موقت اثر گذار میباشند و برای داده های بغرنج مطلوب نیستند.

Constant ها
اثبات ها (Constants ) به مقادیر ثابتی اطلاق می‌شوند که ممکن میباشد نرم افزار در زمان اجرای خویش تغییر‌و تحول ندهد.
اثبات‌ها میتوانند از هریک از اشکال داده‌های اساسی مانند اثبات عدد درست، اثبات floating ، اثبات کاراکتر یا این که یک فن حقیقی وواقعی باشند ؛ همینطور اثبات های شمارش نیز وجود دارااست.
اثبات ها دقیقاً مانند متغیرهای بی آلایش خلق میشوند به جز این حقیقت که مقادیر آن ها بعداز تعریف و تمجید آنان قابل تغییر تحول نیستند.

پیش از اینکه از اثبات ها استعمال نمایید، می بایست آن ها را با استعمال از واژه و کلمه کلیدی let به طور تحت اعلام نمایید :

let constantName =
COPY
نمونه :

let constA = 42
print(constA)
COPY
خروجی :

42
COPY
Literal
همانگونه که گفته شد ، Literal اکران سورس کد مقدار یکی درست ، عدد floating-point یا این که string type میباشد.


42 // Integer literal
3.14159 // Floating-point literal
"Hello, world!" // String literal
COPY
Integer Literals
یکی درست میتواند یک اثبات اعشاری، باینری، اکتال یا این که هگزادسیمال باشد.
literal دودویی با 0b آغاز می شود ، صحبت اکتال با 0o و literal هگزا دسیمال با 0x و هیچ برای اعشار شروع میشود.
در اینجا یکسری مثال از literal اعداد درست آمده میباشد :

let decimalInteger = 17 // 17 in decimal notation
let binaryInteger = 0b10001 // 17 in binary notation
let octalInteger = 0o21 // 17 in octal notation
let hexadecimalInteger = 0x11 // 17 in hexadecimal notation
COPY
Floating-point Literals
یک floating-point literal دارنده یک بخش درست، یک نقطه اعشاری ، یک بخش کسری و یک بخش اقتدار میباشد.
شما می‌توانید literal های ممیز شناور را به طور اعشاری یا این که هگزادسیمال نشانه دهید.
حروف ممیز شناور اعشاری متشکل از دنباله ای از ارقام اعشاری میباشد که به‌دنبال آن یک کسر اعشاری، یک قدرت اعشاری یا این که هر دو قرار میگیرد.
literal ممیز شناور هگزا دسیمال از یک پیشوند 0x درست شده میباشد، درپی آن یک کسری هگزادسیمال از روی اراده و به‌دنبال آن یک قدرت هگزا دسیمال.

در اینجا یک سری مثال از لفظ ممیز شناور آمده میباشد :

let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0xC.3p0

بازدید : 72
دوشنبه 4 فروردين 1404 زمان : 21:53

اشکال کادر ورک ها
قاب ورک ها را می شود با استعمال از دو میزان متفاوت تقسیم‌بندی کرد: یا این که طراحی اپلیکیشن در مشهد بر این پایه که برای گسترش‌ی کدام قسمت تارنما یا این که نرم افزار کاربرد دارا‌هستند یا این که فریمورک کدام لهجه اپلیکیشن‌نویسی می باشند. با درنظرگرفتن واحد سنجش نخستین، فریمورک‌ها به دو مجموعه front-end و back-end تقسیم می گردند. قاب‌ورک front-end چارچوبی برای ایجاد کرد و اجرای کلاینت ساید (سمت مخاطب ) میباشد و برای اجرای ظواهر پروژه به کارگیری می گردد. پیشرفت سمت مخاطب با استعمال از قاب ورک‌ها معمولا مشتمل بر ساختن و پیشرفت مفاد مختلفی ازجمله مفاد تحت می گردد:

ساختار پرونده‌‌ها (به‌تیتر‌نمونه، ازطریق اجزای تولیدکننده یا این که پیش‌پردازنده CSS)،
تولید درخواست‌های AJAX و
مدل‌دادن به اجزا و مرتبط‌کردن داده‌ها با موادسازنده DOM.
React JS ،Angular JS ،j Query،Ember.js قاب‌ورک‌های سمت استفاده کننده میباشند.

کادر ورک‌های back-end برای کدنویسی سمت سرور به توسعه و گسترش‌دهنده امداد می‌نمایند. CakePHP،Laravel، Django، Ruby on Rails، Flask Phoenix ،Express ،Spring Boot ازجمله مهمترین کادر‌ورک های بسط سمت سرور محسوب می شوند.

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

کادر ورک‌های لهجه اپ‌نویسی PHP برای پیاده سازی سایت مشمول Laravel ،Phalcon، Symphony، Yii، Codelgniter،CakePHP ،Kohana، FuelPHP میشود.
Spring، Hibernate ،Java EE ،Struts، GWT از قاب ورک‌های گویش اپ‌نویسی جاوا محسوب می شوند.
کادر ورک‌های لهجه نرم‌افزار‌نویسی جاوااسکریپت عبارت‌اند از: Angular.js، React.js ،Ember.js ،Backbone.js ،VueJS، Aurelia.js ، Polymer.js.
کادر ورک‌های گویش نرم افزار‌نویسی روبی Ruby on Rails، Lotus،padrino،cuba،rack، sinatra، sorched، Grape میباشند.
Django، Flask، TurboGears Web2py، Pyramid،Bottle ازجمله کادر ورک‌های لهجه نرم افزار‌نویسی پایتون میباشند.
گزینش فریمورک برای پیشرفت هر قابل انعطاف‌افزاری به دست اندرکاران متفاوت بستگی دارااست. از مهم ترین چیزهایی که قادر است به گسترش‌دهنده و نرم افزار‌نویس در‌این گزینش یاری دهد،‌ پی بردن دوست داستنی‌ترین قاب ورک‌های فرانت اند و بک اند درمیان گسترش‌دهندگان دنیا میباشد.

بازدید : 39
جمعه 1 فروردين 1404 زمان : 16:16


تعریف و تمجید یک Structure
مثلا ، فرض فرمایید بایستی به رکورد علم‌آموزان دربرگیرنده نمره‌های سه مسئله دسترسی داشته باشیم و تمام سه مورد را دریابیم.
در اینجا markStruct برای مقداردهی نخستین یک ساختار با سه نماد تحت عنوان نوع داده “Int” طراحی اپلیکیشن در مشهد به کارگیری میگردد.

struct MarkStruct {
var mark1: Int
var mark2: Int
var mark3: Int
}
COPY
دسترسی به ساختار و خصوصیت های آن

اعضای ساختار با اسم structure آن قابل دسترسی می باشند.
مثال های structure با واژه و کلمه کلیدی “let” مقداردهی نخستین میگردند.

struct studentMarks {
var mark1 = 100
var mark2 = 200
var mark3 = 300
}

let marks = studentMarks()
print("Mark1 is \\(marks.mark1)")
print("Mark2 is \\(marks.mark2)")
print("Mark3 is \\(marks.mark3)")
COPY
خروجی :

Mark1 is 100
Mark2 is 200
Mark3 is 300
COPY
علامت های علم آموزان با اسم ساختار “studentMarks” قابل دسترسی میباشد.
اعضای ساختار به طور mark1، mark2، mark3 با مقادیر نوع درست مقداردهی نخستین می گردند.
بعد از آن ساختار () studentMarks با واژه و کلمه کلیدی “let” به نشانه ها انتقال می یابد.
آرم‌های آتی دربردارنده مقادیر اعضای structure خواهند بود.
اینک مقادیر با دسترسی به مقادیر اعضای structure بوسیله ‘.’ چاپ میشوند.

struct MarksStruct {
var mark: Int

init(mark: Int) {
self.mark = mark
}
}

var aStruct = MarksStruct(mark: 98)
var bStruct = aStruct // aStruct and bStruct are two structs with the same value!
bStruct.mark = 97

print(aStruct.mark) // 98
print(bStruct.mark) // 97
COPY
خروجی :

enum Climate {
case India
case America
case Africa
case Australia
}

var season = Climate.America
season = .America
switch season {
case .India:
print("Climate is Hot")
case .America:
print("Climate is Cold")
case .Africa:
print("Climate is Moderate")
case .Australia:
print("Climate is Rainy")

}
COPY
خروجی :

98
97
COPY
شایسته ترین طرق به کارگیری از Structure ها
گویش سوئیفت 4 عملکردی را برای تعریف‌و‌تمجید ساختارها تحت عنوان گونه های داده های سفارشی برای تشکیل داد بلوک های تابع مهیا می نماید.
مثال های ساختار با مقدار آن به بلوک های تعریف‌و‌تمجید گردیده برای بازنویسی های بیشتر منتقل میگردند.

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

برای نسخه برداری کردن داده‌های encapsulate گردیده و خصوصیت‌های مربوط به آن با «values» به مکان «references».

ساختار “اسکن” و “references“.

ساختارها در سوئیفت 4 به مکان رفرنس ها ، مقادیر خویش را به اعضای خویش منتقل می نمایند.

struct markStruct {
var mark1: Int
var mark2: Int
var mark3: Int

init(mark1: Int, mark2: Int, mark3: Int) {
self.mark1 = mark1
self.mark2 = mark2
self.mark3 = mark3
}
}

var marks = markStruct(mark1: 98, mark2: 96, mark3:100)
print(marks.mark1)
print(marks.mark2)
print(marks.mark3)
COPY
خروجی :

98
96
100
COPY
نمونه دیگر :

struct markStruct {
var mark1: Int
var mark2: Int
var mark3: Int

init(mark1: Int, mark2: Int, mark3: Int) {
self.mark1 = mark1
self.mark2 = mark2
self.mark3 = mark3
}
}

var fail = markStruct(mark1: 34, mark2: 42, mark3: 13)

print(fail.mark1)
print(fail.mark2)
print(fail.mark3)
COPY
خروجی :

34
42
13
COPY
ساختار “markStruct” آغاز با اعضای آن mark1، mark2 و mark3 تعریف‌و‌تمجید می‌گردد.
فعلا متغیرهای کلاس های عضو برای محافظت مقادیر درست مقداردهی اول می‌شوند.
بعد نسخه برداری اعضای structure با کلمه و واژه کلیدی ‘self’ ساخت‌و‌ساز می گردد.
وقتی که نسخه برداری اعضای structure تولید می گردد، بلوک structure با علائم پارامتر آن به متغیر ‘marks‘ انتقال می یابد که اینک علائم علم آموزان را نگه میدارد.
بعد آرم‌ها به طور 98، 96، 100 چاپ میگردند.
مرحله آتی برای اعضای structure یکسان، مثال دیگری به اسم «fail» به کارگیری می‌گردد تا به اعضای ساختار شبیه با نشانه‌های گوناگون اشاره گردد.
آن گاه نتیجه ها فعلا به طور 34، 42، 13 چاپ میشوند.
این به وضوح توضیح میدهد که structure ها یک اسکن از متغیرهای عضو خواهند داشت و آنگاه اعضاوجوارح را به بلوک‌های تابع آتی خویش منتقل می‌نمایند.

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

مزایای کلاس ها
وراثت خصوصیت های یک کلاس را به کلاس دیگر میدهد
نوع ریخته گری استفاده کننده را کارکشته می سازد تا نوع کلاس را در حین ایفا تحقیق کند
Deinitializers از آزادسازی منابع یاد محافظت می نمایند
شمارش رفرنس به مثال کلاس اذن میدهد تا بیشتراز یک رفرنس داشته باشد
خصوصیت های مشترک کلاس ها و ساختارها :

Propertie ها برای ذخیره مقادیر تعریف‌و‌تمجید می گردند
Subscript ها برای دسترسی به مقادیر تعریف‌و‌تمجید گردیده اند
مشی ها برای افزایش عملکرد مقداردهی نخستین می گردند
Initial state بوسیله مقداردهی نخستین تعریف‌و‌تمجید میشود
همت بالاتر از مقادیر پیش فرض پیشرفت یافته میباشد
پذیرش استانداردهای همت پروتکل
Class classname {
Definition 1
Definition 2
---
Definition N
}
COPY
تعریف و تمجید یک کلاس
class student {
var studname: String
var mark: Int
var mark2: Int
}
COPY
خروجی :

let studrecord = student()
COPY
نمونه :

class MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}

class studentMarks {
var mark = 300
}

let marks = studentMarks()
print("Mark is \\(marks.mark)")
COPY
خروجی :

Mark is 300
COPY
دسترسی به پراپرتی های کلاس تحت عنوان گونه های مرجع

خصوصیت های کلاس را می اقتدار با ‘.’ در دسترس قرار اعطا کرد.
سینتکس Property با یک “.” از هم غیروابسته گردیده‌است.
بعداز اسم instance :

class MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}

class studentMarks {
var mark1 = 300
var mark2 = 400
var mark3 = 900
}

let marks = studentMarks()
print("Mark1 is \\(marks.mark1)")
print("Mark2 is \\(marks.mark2)")
print("Mark3 is \\(marks.mark3)")
COPY
خروجی :

Mark1 is 300
Mark2 is 400
Mark3 is 900
COPY
Class Identity Operators
کلاس‌ها در سوئیفت 4 به یک سری اثبات و متغیر اشاره می‌نمایند که به یک مثال واحد اشاره می‌نمایند.
برای استحضار از اثبات ها و متغیرهایی که به یک مثال کلاس خاص اشاره می نمایند از عملگرهای نام و نشان استعمال می‌گردد.
مثال های کلاس مدام با مرجع ارسال می گردند.
در کلاس‌های NSString، NSArray و مثال‌های NSDictionary مدام به‌مکان یک اسکن، به‌تیتر ارجاع به یک مثال جان دار اختصاص داده میشوند و منتقل می گردند.

Identical to Operators Not Identical to Operators
Operator used is (===) Operator used is (!==)
وقتی که دو اثبات یا این که متغیر به یک مثال اشاره می نمایند، مقدار true را برمی گرداند. وقتی که دو اثبات یا این که متغیر به یک مثال مختلف اشاره می نمایند، مقدار true را برمی گرداند.

class SampleClass: Equatable {
let myProperty: String
init(s: String) {
myProperty = s
}
}

func ==(lhs: SampleClass, rhs: SampleClass) -> Bool {
return lhs.myProperty == rhs.myProperty
}

let spClass1 = SampleClass(s: "Hello")
let spClass2 = SampleClass(s: "Hello")

spClass1 === spClass2 // false
print("\\(spClass1)")

spClass1 !== spClass2 // true
print("\\(spClass2)")
COPY
خروجی :

main.SampleClass
main.SampleClass
COPY
Properties
گویش سوئیفت 4 خصوصیت هایی را برای کلاس ، شمارش یا این که structure برای مرتبط کردن مقادیر آماده می نماید.
مشخصات را می اقتدار بیشتر به properties ذخیره گردیده و properties به حساب آوردن گردیده طبقه بندی کرد.
تفاوت در بین properties ذخیره گردیده و properties به حساب آوردن گردیده به تفصیل ذیل میباشد :

Stored Property Computed Property
مقادیر اثبات و متغیر را تحت عنوان مثال ذخیره فرمائید به مکان احتکار کردن مقدار ، یک مقدار را به حساب آوردن نمایید
ارائه گردیده به وسیله کلاس ها و structures ارائه گردیده بوسیله کلاس ها ، enumerations و structures
هر دو خصوصیت ذخیره گردیده و احتساب گردیده با نوع مثال مرتبط می باشند.
وقتی که مشخصات با مقادیر نوع آن مرتبط می گردند ، تحت عنوان “Type Properties” تعریف و تمجید میشود.
خاصیت ذخیره گردیده و به حساب آوردن گردیده معمولاً با مثال هایی از یک نوع خاص مرتبط میباشند.
با این هم اکنون، مشخصات را می اقتدار با خویش نوع نیز مرتبط کرد.
اینگونه خصوصیت هایی تحت عنوان مختصات نوع شناخته می گردند.
از ناظران اموال نیز به کارگیری می گردد

Stored Properties
سوئیفت معنی Stored Property را برای ذخیره مثال های اثبات و متغیر معرفی می نماید.
خصوصیت های ذخیره گردیده اثبات ها با کلمه و واژه کلیدی “let” و خصوصیت های ذخیره گردیده متغیرها با کلمه و واژه کلیدی “var” تمجید میگردند.

در زمان تعریف و تمجید، خصوصیت Stored “مقدار پیش فرض” را ارائه میدهد.
در طی Initialization، مخاطب میتواند مقادیر اول را مقداردهی نخستین کرده و تغییر تحول دهد.

struct Number {
var digits: Int
let pi = 3.1415
}

var n = Number(digits: 12345)
n.digits = 67

print("\\(n.digits)")
print("\\(n.pi)")
COPY
خروجی :

67
3.1415
COPY
خط ذیل را در کد بالا در حیث بگیرید :

let pi = 3.1415
COPY
در اینجا، متغیر pi تحت عنوان یک مقدار property ذخیره گردیده با مثال pi = 3.1415 مقداردهی اول میگردد.
به این ترتیب، هر مجال که مثال ارجاع خواهد شد ، مقدار 3.1415 را به تنهایی مراقبت می نماید.
شیوه دیگر برای ذخیره property ، داشتن constant structures میباشد.
به این ترتیب تمام مثال structures تحت عنوان “Stored Properties of Constants” در لحاظ گرفته میشود.

struct Number {
var digits: Int
let numbers = 3.1415
}

var n = Number(digits: 12345)
n.digits = 67

print("\\(n.digits)")
print("\\(n.numbers)")
n.numbers = 8.7
COPY
آرایه initial که بایستی برای icecream تروتمیز خواهد شد تحت عنوان “Swift 4” و “great” داده شد‌ه‌است.
تابع سازمان دهی آرایه تحت عنوان نوع داده فن ای و نوع برگشتی آن تحت عنوان Boolean بیان می‌گردد.
هر دو حرفه با هم مقایسه و به ترتیب رو به بالا تروتمیز گردیده و در یک آرایه تازه ذخیره می‌شوند.
در صورتی تروتمیز‌سازی با توفیق صورت پذیرد ، تابع مقدار حقیقی را برمی‌گرداند در غیر این شکل false را برمی‌گرداند.

سینتکس Closure expression از مفاد ذیل ، به کارگیری می نماید :

پارامترهای اثبات
پارامترهای متغیر
پارامترهای inout

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

درباره ما
موضوعات
آمار سایت
  • کل مطالب : 795
  • کل نظرات : 0
  • افراد آنلاین : 1
  • تعداد اعضا : 0
  • بازدید امروز : 10
  • بازدید کننده امروز : 1
  • باردید دیروز : 158
  • بازدید کننده دیروز : 0
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 1651
  • بازدید ماه : 1930
  • بازدید سال : 6609
  • بازدید کلی : 40175
  • <
    پیوندهای روزانه
    اطلاعات کاربری
    نام کاربری :
    رمز عبور :
  • فراموشی رمز عبور؟
  • خبر نامه


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


    ایمیل شما :

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



    کدهای اختصاصی