loading...

مقالات طراحی اپ موبایل

بازدید : 15
شنبه 31 خرداد 1404 زمان : 10:54


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

آغاز به تمجید قانونی اندروید (‌+) راجع‌به دیالوگ‌ها می پردازیم:

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

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

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

فرمائید
درین راهنما از پیکربندی ذیل به کار گیری می کنیم:

اندروید استودیو 3.5.3
کاتلین 1.3
کتابخانه Compat: AndroidX
در حالتی‌که ترجیح می‌دهید به مکان تشکیل داد این پروژه، کد آغازین آن را دانلود فرمائید، میتوانید به‌این نشانی (+) رجوع‌کنید.

شروع پروژه
عمل خویش را با یک پوسته empty activity template استارت می کنیم و پیکربندی پیش‌فرض را به طور تصویر تحت قرار میدهیم:

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

قسمت 1: مبانی اخطارها
در‌این نصیب با مبانی مقدماتی پیاده سازی یک Alert آشنا خوا هیم شد.

کلیک فرمائید
ساخت و ساز یک دکمه برای اکران اخطار
اول کاری که می بایست روی این شیت اعمال دهیم، آن میباشد که متن Hello World را از کاغذ حذف کرده و یک دکمه به مکان آن در اختیار بگذاریم. این دکمه، اخطار به طور کاملً معمولی ما‌را تحریک می‌نماید. به‌این خواسته به فولدر activity_main.xml بروید. این فولدر می بایست در هنگامی که پروژه را تولید کردید، گشوده گردیده باشد، در صورتی‌که به این شکل وجود ندارد در فولدر activity_main.xml درپی آن بگردید. اول توشه که‌این فولدر را گشوده میکنید، در کناره تحت-چپ ورقه دو زبانه به اسم‌های Design و Text خواهید مشاهده کرد که احتمالاً Design تعیین شد‌ه‌است.

با این که‌این ورقه برای دیدن پیش‌اکران بهتر میباشد، ولی نسبتاًً مدام درگیر بازنویسی کد در قسمت Text خواهید بود.

خطوط کدی که متن Hello world را اکران می دهند در تگ در تصویر فوق قرار دارا‌هستند که مشتمل بر خطوط 9 تا 16 کد میباشد. آن کد را با کد ذیل عوض نمائید:

12 android:layout_height="wrap_content"
3 android:text="Show basic dialog!"
4 app:layout_constraintBottom_toBottomOf="parent"
5 app:layout_constraintLeft_toLeftOf="parent"
6 app:layout_constraintRight_toRightOf="parent"
7 app:layout_constraintTop_toTopOf="parent" />

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

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

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

1app > java > your project name > MainActivity.kt

چنان که میبینید این فولدر کد مقداری دارااست:

اسم پکیجی که به آن وابستگی دارااست.
بعضا ایمپورت‌های پیش‌فرض
کلاس اکتیویتی اساسی
تابع ()onCreate که صحیح بعد از تولید شدن ورقه، اعمال می‌گردد. از روش فرمان setContentView(R.layout.activity_main) به نرم افزار اعلام می کنیم که از پوشه activity_main.xml برای لی‌آوت این کد به کار گیری نماید.
در حال حاضر توضیح کافی میباشد و مجدد به کدنویسی می پردازیم.

بازدید : 12
چهارشنبه 28 خرداد 1404 زمان : 17:46


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

مزایا پیاده سازی نرم افزار هیبرید گوشی:
طراحی و فعال سازی راحت
سهولت و هزینه زیر مراقبت (Maintenance)
ارزش ذیل
قابلیت و امکان استعمال هم زمان بر روی اندروید و iOS
معایب پیاده سازی نرم افزار هیبرید تلفن همراه:
نبود امکان استعمال از تجهیزات تلفن همراه
سرعت و بازدهی ضعیف
معرفی تکنولوژی های پیاده سازی نرم افزار در سال 2020
گردباد نرم افزار های تلفن های هم پا در سال های اخیر دنیا را فرا گرفته میباشد. هر ساله میلیاردهای نرم افزار بوسیله اشخاص گوناگون در سراسر عالم دانلود میگردند و نرم افزار های سهم متعددی از معاش رومزه عموم را به خویش تخصیص داده اند. طبق داده های عددی منتشر گردیده پیشبینی می‌شود که تعداد نرم افزار های دانلود گردیده در نقطه پايان سال 2021 میلادی به رقم سرسام آور 352.9 میلیارد نرم افزار باشد. به همین انگیزه استحصال و شغل های متفاوت برای منفعت بردن از این بستر آماده گردیده کلیه به سمت ایجاد کرد نرم افزار اختصاصی خویش می باشند. با این هم اکنون صرفا یک راه و روش و تکنولوژی خاص و مشخصی برای بسط و پیاده سازی نرم افزار گوشی نیست.
طبقه بندی تکنولوژی های تشکیل داد نرم افزار
در شرایطی‌که بخواهیم تکنولوژی های تشکیل داد نرم افزار تلفن همراه را روی هم رفته و جامع تیم بندی کنیم خواهیم توانست به طور ذیل شغل نماییم:

🔹 تکنولوژی ایجاد کرد نرم افزار های نیتیو (Native Applications)

🔹 تکنولوژی تشکیل داد نرم افزار های کراس پلتفرم (Cross-Platform Applications)

🔹 تکنولوژی تشکیل داد نرم افزار های هیبرید(Hybrid Applications)

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

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

گویش های اپ نویسی برای گسترش نرم افزار های نیتیو چیست؟
در کل دو سیستم ادله اندروید و iOS سیستم دلیل های مهم موبایل های همدم به شمار می‌روند. در شرایطی که بخواهید یک نرم افزار ساکن منحصربه‌فرد اندروید پیشرفت دهید بایستی از گویش اپ نویسی جاوا (Java) و کاتلین (Kotlin) یاری بگیرید. در خصوص تلفن همراه های مارک اپل و سیستم ios نیز نیاز میباشد تا از لهجه های نرم افزار نویسی سوییفت(Swift) و Objective-C امداد بگیرید.

بازدید : 10
سه شنبه 27 خرداد 1404 زمان : 17:55


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

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

مزایای این روال تبلیغاتی

یوزرها میتوانند فارغ از نیاز به خرید، تجربیات ای از نرم افزار شما داشته باشند
شما می‌توانید از تبلیغات در ورژن بدون پول نیز درآمدزایی نمائید
نرخ‌گذاري گوناگون ضمانت می نماید که مخاطب تنها برای آنچه نیاز دارااست پرداخت می نماید
معایب این مشی تبلیغاتی

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

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

مزایای این مشی تبلیغاتی

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

شما بایستی روی امنیت مالی سپرده گذاری متعددی فرمائید
کارمز بیشتراز حد میتواند سبب ساز نارضایتی شدید یوزرها گردد
شایسته ترین کانال های تبلیغات موبایلی برای درآمدزایی از نرم افزار
یکی‌از دیگر از مولفه های یک استراتژی درآمدزایی پیروز، پلتفرم تبلیغات موبایلی میباشد.
هنگامی کلام از کانال های تبلیغاتی موبایلی می‌گردد ، مورد های بی شماری برای تعیین وجود داراست.

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

در اینجا یک مرور سریع از بعضا از دوستداشتنی ترین کانال های تبلیغاتی گوشی در حوالی نقل شده میباشد :

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

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

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

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

شاخص های کلیدی سعی برای متدهای تبلیغاتی
غیروابسته از تبلیغات داخل‌اپ‌ای ، درین نصیب بعضا از شاخص‌های کلیدی تلاش (KPI) برای ردیابی بقیه استراتژی‌های درآمدزایی وجود داراست
(ما فرمول‌های آنان را نیز اضافه کرده‌ایم):

معدل درآمد هر مخاطب (ARPU) : (درآمد مادام العمر) / (تعداد یوزرها)

هزینه جذب مشتری (CAC) : (هزینه جذب مشتری تازه) / (تعداد مشتریان تازه)

هزینه هر اکتساب (CPA) : (هزینه) / (تعداد خرید)

فرصت تا اولی خرید : (فرصت او‌لین خرید) – (مجال نام نویسی)

هزینه موءثر در هر میلیون (eCPM) : (هزینه تبلیغات) * (Impressions/1000)

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

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

چه آتی ای برای درآمدزایی و تبلیغ اپلیکیشن ها چشم به راه شماست؟
شکی وجود ندارد که بازار جهانی تلفن همراه در درحال حاضر پرورش میباشد.
طبق پژوهش ها ، انتظار می‌رود این بازار تا سال 2026 بیش تر از 400 میلیارد دلار پرورش نماید.
از این گزارش، می توانیم سه مراحل گران قدر برای درآمدزایی از نرم افزار‌ها را برای سال 2022 و آنگاه شناسایی کنیم:

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

تبدیل اشتراک به یک وضعیت معمولی : نرم‌افزار های Netflix ، Prime Video و بازی با سبک اشتراک و افزایش این مراحل پیشرو میباشند.

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

بازدید : 10
دوشنبه 26 خرداد 1404 زمان : 14:03


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

1class Person {
2 fun callMe() = println("I\'m called.")
3}
4
5fun main(args: Array) {
6 val p1 = Person()
7
8 // calling callMe() method using object p1
9 p1.callMe()
10}

در نمونه فوق یک شیء به اسم p1 از کلاس Pedrson ساخت کردیم تا سیاق ()callMe را فراخوانی کنیم. نحوه عمل شی ها به طور معمول این سیرتکامل میباشد. با این هم اکنون، در کاتلین می‌قدرت اسلوب ()callMe را با استعمال از کلاس اسم نیز فراخوانی کرد که در این باره Person میباشد. به‌این مراد می بایست یک شیء Companion را با به کارگیری از کلیدواژه companion روی اعلان شیء ساخت کنیم.

مثالی از اشیای companion
1class Person {
2 companion object Test {
3 fun callMe() = println("I\'m called.")
4 }
5}
6
7fun main(args: Array) {
8 Person.callMe()
9}

خروجی نرم افزار فوق به طور تحت میباشد:

I\'m called.
در اپلیکیشن فوق، اعلان شیء Test با کلیدواژه companion علامت‌گذاری شد‌ه‌است تا یک شیء companion ساخت گردد. از این رو قابلیت و امکان فراخوانی سیاق ()callMe با استعمال از اسم کلاس به طور ذیل وجود دارااست:

Person.callMe()
اسم شیء companion ازروی اراده میباشد و قادر است نادیده گرفته گردد.

1class Person {
2
3 // name of the companion object is omitted
4 companion object {
5 fun callMe() = println("I\'m called.")
6 }
7}
8
9fun main(args: Array) {
10 Person.callMe()
11}

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

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

برای مثال فرض فرمائید مایحتاج میباشد یک اسلوب تازه در کلاس String داشته باشید که یک حرفه نو را با حذف کاراکترهای اولیه و پایان فن ارائه گردیده رجوع دهد. این اسلوب از پیشین در کلاس String نیست و بایستی از تابع Extension برای اجرای این وظیفه استعمال کنیم.

مثالی از حذف کاراکتر نخستین و انتها از حرفه

1fun String.removeFirstLastChar(): String = this.substring(1, this.length - 1)
2
3fun main(args: Array) {
4 val myString= "Hello Everyone"
5 val result = myString.removeFirstLastChar()
6 println("First character is: $result")
7}

خروجی اپ فوق به طور تحت میباشد:

First character is: ello Everyon
در صورتی نرم‌افزار فوق تابع توسعه و گسترش First character is: ello Everyon به کلاس String اضافه گردیده است. اسم کلاس، نوع دریافتی (در این زمینه String) میباشد. کلیدواژه this باطن تابع توسعه به شیء اخذ‌کننده اشاره داراست.

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

Overload کردن عملگر در کاتلین
در‌این نوشته‌ی علمی به تحقیق شیوه overload کردن عملگر در کاتلین به یاری بعضا نمونه‌ها می پردازیم. هنگامی که از یک عملگر در کاتلین به کارگیری می کنیم، تابع عضو متناظر آن فراخوانی میگردد. برای مثال عبارت a+b در پس‌موضوع به a.plus(b) ترجمه می گردد.

1fun main(args: Array) {
2 val a = 5
3 val b = 10
4
5 print(a.plus(b)) // print(a+b)
6}

خروجی نرم‌افزار فوق به طور تحت میباشد:

15
در واقع تابع ()plus برای شغل با اشکال مقدماتی متعدد کاتلین و String به طور overload درآمده میباشد.

1// + operator for basic types
2operator fun plus(other: Byte): Int
3operator fun plus(other: Short): Int
4operator fun plus(other: Int): Int
5operator fun plus(other: Long): Long
6operator fun plus(other: Float): Float
7operator fun plus(other: Double): Double
8
9// for string concatenation
10operator fun String?.plus(other: Any?): String

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

مثالی از overload کردن عملگر +
1fun main(args: Array) {
2 val p1 = Point(3, -8)
3 val p2 = Point(2, 9)
4
5 var sum = Point()
6 sum = p1 + p2
7
8 println("sum = (${sum.x}, ${sum.y})")
9}
10
11class Point(val x: Int = 0, val y: Int = 10) {
12
13 // overloading plus function
14 operator fun plus(p: Point) : Point {
15 return Point(x + p.x, y + p.y)
16 }
17}
مشاهده بدون نقص کدها
خروجی اپلیکیشن فوق به طور پایین میباشد:

sum = (5, 1)
در اپ فوق تابع ()plus با کلیدواژه operator نشان‌گذاری گردیده‌است تا به کامپایلر اعلام گردد که عملگر + به طور overload گردیده درآمده میباشد. عبارت p1+p2 در پس‌قضیه به طور p1.plus(p2) ترجمه میشود.

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

1fun main(args: Array) {
2 var point = Point(3, -8)
3 --point
4
5 println("point = (${point.x}, ${point.y})")
6}
7
8class Point(var x: Int = 0, var y: Int = 10) {
9 operator fun dec() = Point(--x, --y)
10}

خروجی اپ فوق به طور ذیل میباشد:

point = (2, -9)
به خیال داشته باشید که پاراگراف تحت:

operator fun dec() = Point(--x, --y)
هم اندازه جمله پایین میباشد:

1operator fun dec(): Point {
2 return Point(--x, --y)
3}

تعدادی نکته حائض اهمیت در امر overload کردن عملگرها
هنگامی که عملگرها را overload می کنیم، می بایست غرض مهم عملگر نگهداری گردد. به نمونه تحت اعتنا فرمایید:

1fun main(args: Array) {
2 val p1 = Point(3, -8)
3 val p2 = Point(2, 9)
4
5 var sum = Point()
6 sum = p1 + p2
7
8 println("sum = (${sum.x}, ${sum.y})")
9}
10
11class Point(val x: Int = 0, val y: Int = 10) {
12
13 // overloading plus function
14 operator fun plus(p: Point) = Point(x - p.x, y - p.y)
15}
مشاهده بدون نقص کدها
با این که اپلیکیشن فوق از دید فنی درست میباشد، البته از عملگر + برای تفریق مشخصه‌های متناظر دو شیء مصرف شده میباشد که موجب ساخت سردرگمی در اپلیکیشن می‌گردد. برخلاف گویش‌هایی مانند اسکالا، فقط گروه خاصی از عملگرها در کاتلین می توانند overload شوند.

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

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

بازدید : 9
يکشنبه 25 خرداد 1404 زمان : 16:57


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

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

اپ‌نویسی شی‌ءگرا
در مدل نرم افزار‌نویسی شیء‌گرا (OOP) یک موضوع غامض با ساخت‌و‌ساز شیء‌هایی به گروه‌های خرد‌خیس تقسیم می شود. این شی ءها دو ویژگی دارا هستند:

وضعیت
کردار
به‌دنبال برخی نمونه‌هایی از شی ها را نظارت می کنیم.

چراغ (Lamp) یک شیء میباشد:
این شیء می تواند وضعیت‌های پر‌نور (On) و بی سروصدا (Off) داشته باشد.
این شیء قادر است اخلاق پر‌نور کردن (turn on) و خموشی کردن (turn off) را بگیرد.
دوچرخه (Bicycle) یک شیء میباشد.
این شیء قادر است شرایط‌های «دنده کنونی» (current gear)، «دو چرخ» (two wheels)‌، «تعداد دنده» (number of gear) ‌و بخش اعظمی موقعیت‌های دیگر را داشته باشد.
این شیء می تواند کردار «ترمز کردن» (braking)، «پدال زدن» (changing gears)، «عوض کردن دنده» (changing gears) و اکثری رفتارهای دیگر را داشته باشد.
در نصیب‌های آینده این نوشته‌علمی فراگیری کاتلین در مورد خصوصیت‌های متفاوت اپلیکیشن‌نویسی شیءگرا از قبیل کپسوله‌سازی داده‌ها، وراثت، چندریختی و غیره سخن خوا هیم کرد. درین نصیب فقطً روی مبانی مقدماتی شیءگرایی در کاتلین تمرکز میکنیم.

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

نحوه تمجید کلاس در کاتلین چه‌طور میباشد؟
برای تعریف و تمجید یک کلاس در کاتلین می بایست از کلیدواژه class استعمال کنیم:

1class ClassName {
2 // property
3 // member function
4 ... .. ...
5}

به نمونه تحت دقت فرمایید:

1class Lamp {
2
3 // property (data member)
4 private var isOn: Boolean = false
5
6 // member function
7 fun turnOn() {
8 isOn = true
9 }
10
11 // member function
12 fun turnOff() {
13 isOn = false
14 }
15}
مشاهده بدون نقص کدها
در نمونه فوق یک کلاس با اسم Lamp تعریف‌و‌تمجید کرده‌ایم. این کلاس دارنده یک مشخصه به اسم isOn میباشد که همچون یک متغیر تعریف و تمجید گردیده‌است. همینطور دو تابع عضو به اسم‌های ()turnOn و ()turnOff دارااست.

یک مشخصه در کلاس‌های کاتلین یا این که می بایست مقداردهی خواهد شد و یا این که به طور «مجرد» (abstract) اعلان گردد. در نمونه فوق، مشخصه isOn به طور False مقداردهی گردیده‌است. کلاس‌ها، شی ها، مشخصه‌ها، تابع عضو و غیره، کلیه دارنده مادیفایرهای «نمایانی» (Visibility) میباشند. برای مثال مشخصه isOn محرمانه میباشد. این بدان مفهوم میباشد که مشخصه isOn صرفا از داخل کلاس Lamp می تواند تغییر و تحول یابد.

مادیفایرهای دیگر نمایانی در کاتلین به تفصیل ذیل می باشند:

Private – تنهاً از باطن خویش کلاس قابل مشاهده (دسترسی) میباشد.
Public – در هر کجا نمایان میباشد.
Protected – برای کلاس و زیرکلاس‌های آن نمایان میباشد.
Internal – هر کلاینت داخل ماژول میتواند به آن دسترسی داشته باشد.
در نصیب‌های آجل در امر مادیفایرهای protected و internal بیشتر حرف خوا هیم کرد. در نرم افزار فوق، تابع‌های عضو ()turnOn و ()turnOff به طور همگانی (public) می باشند، در حالی که مشخصه isOn محرمانه (private) میباشد.

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

1class Lamp {
2
3 // property (data member)
4 private var isOn: Boolean = false
5
6 // member function
7 fun turnOn() {
8 isOn = true
9 }
10
11 // member function
12 fun turnOff() {
13 isOn = false
14 }
15}
16
17fun main(args: Array) {
18
19 val l1 = Lamp() // create l1 object of Lamp class
20 val l2 = Lamp() // create l2 object of Lamp class
21}
مشاهده بی نقص کدها
نرم‌افزار فوق دو شیء به اسم‌های l1 و l2 از روی کلاس Lamp تولید می‌نماید. مشخصه isOn برای هر دو چراغ l1 و l2 به طور false میباشد.

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

l1.turnOn()
جمله فوق تابع ()turnOn را روی شیء l1 فرا می خواند. به نمونه پایین نیز اعتنا نمائید:

l2.isOn = true
در اینجا مقدار مشخصه isOn مرتبط با شیء l2 را به طور true تهیه میکنیم. دقت فرمایید که مشخصه isOn به طور سری تعریف‌و‌تمجید شد‌ه‌است و در صورتی همت فرمائید از سوا کلاس به آن دسترسی داشته باشید، یک استثنا ساخت و ساز می‌گردد.

مثالی از کلاس و شیء کاتلین
1class Lamp {
2
3 // property (data member)
4 private var isOn: Boolean = false
5
6 // member function
7 fun turnOn() {
8 isOn = true
9 }
10
11 // member function
12 fun turnOff() {
13 isOn = false
14 }
15
16 fun displayLightStatus(lamp: String) {
17 if (isOn == true)
18 println("$lamp lamp is on.")
19 else
20 println("$lamp lamp is off.")
21 }
22}
23
24fun main(args: Array) {
25
26 val l1 = Lamp() // create l1 object of Lamp class
27 val l2 = Lamp() // create l2 object of Lamp class
28
29 l1.turnOn()
30 l2.turnOff()
31
32 l1.displayLightStatus("l1")
33 l2.displayLightStatus("l2")
34}
مشاهده بی نقص کدها
خروجی نرم افزار فوق به طور تحت میباشد:

l1 Lamp is on.
l2 Lamp is off.
درین قسمت در باب اپ فوق بعضی توضیح‌ها را ارائه میکنیم:

آغاز کلاس Lamp ساخت‌و‌ساز می شود.
این کلاس دارنده مشخصه isOn و سه تابع عضو به طور ()turnOn() ،turnOff و ()displayLightStatus میباشد.
دو شیء l1 و l2 مرتبط با کلاس Lamp در تابع ()main ساخت‌و‌ساز گردیده‌اند.
به دنبال تابع ()turnOn با به کارگیری از شیء l1 به طور ()l1.turnOn فراخوانی می‌گردد. این روال موجب می گردد که متغیر نوبت‌ای isOn مرتبط با شیء l1 به طور true تهیه خواهد شد.
آن‌گاه تابع ()turnOff با به کارگیری از شیء l2 به طور ()l2.turnOff فراخوانی میشود. این مشی نیز موجب میگردد که اسلوب نوبت‌ای isOff مرتبط با شیء l2 به طور false تهیه و تنظیم گردد.
در غایت تابع ()displayLightStatus برای هر دو شیء l1 و l2 فراخوانی می‌گردد و پیام قابل قبولی بسته به‌این که مشخصه isOn مقدار true یا این که false داشته باشد، تهیه می‌نماید.
دقت نمایید که مشخصه isOn باطن کلاس به طور false مقداردهی می شود. وقتی که یک شیء از کلاس ساخت و ساز می‌گردد، مشخصه isOn مرتبط با آن شیء به طور خود کار روی false تهیه می‌گردد. به این ترتیب لزومی به فراخوانی ()turnOff برای تهیه مقدار مشخصه isOn به مقدار false وجود نخواهد داشت.

به نمونه تحت دقت نمایید:

1class Lamp {
2
3 // property (data member)
4 private var isOn: Boolean = false
5
6 // member function
7 fun turnOn() {
8 isOn = true
9 }
10
11 // member function
12 fun turnOff() {
13 isOn = false
14 }
15
16 fun displayLightStatus() {
17 if (isOn == true)
18 println("lamp is on.")
19 else
20 println("lamp is off.")
21 }
22}
23
24fun main(args: Array) {
25
26 val lamp = Lamp()
27 lamp.displayLightStatus()
28}
مشاهده بدون نقص کدها
خروجی اپ فوق اینگونه میباشد:

lamp is off.
براین اساس به انتهای این نصیب از نوشته‌ی علمی فراگیری کاتلین می‌رسیم. در‌این قسمت با مفاهیم مقدماتی اپلیکیشن‌نویسی شیء‌گرا در کاتلین آشنا شدیم.

بازدید : 17
پنجشنبه 22 خرداد 1404 زمان : 12:34


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

عملگر تعریف عبارت تابع متناظر
|| در شکل true بودن هر مورد از اجزا، true خواهد بود. (a>b)||(ab)or(a && در شکل true بودن تمامی عبارت‌ها مقدار true خواهد بود. (a>b)&&(ab)and(a
دقت فرمایید که or و and تابع‌هایی می باشند که از نمادگذاری میانوندی (infix notation) حمایت می‌نمایند. عملگرهای منطقی در گردش در دست گرفتن در عبارت‌هایی مانند if و when و همینطور رینگ‌ها کاربرد دارا‌هستند.

مثالی از عملگرهای منطقی
1fun main(args: Array) {
2
3 val a = 10
4 val b = 9
5 val c = -1
6 val result: Boolean
7
8 // result is true is a is largest
9 result = (a>b) && (a>c) // result = (a>b) and (a>c)
10 println(result)
11}

خروجی اجرای کد فوق به طور ذیل میباشد:

true
عملگر in
عملگر in برای رسیدگی این که یک شیء به یک دسته وابستگی دارااست یا این که خیر، به کار گیری می‌گردد.

عملگر عبارت ترجمه
in a in b b.contains(a)
in! a !in b b.contains(a)!

مثالی از عملگر in
1fun main(args: Array) {
2
3 val numbers = intArrayOf(1, 4, 42, -3)
4
5 if (4 in numbers) {
6 println("numbers array contains 4.")
7 }
8}

فیض اجرای کد فوق به طور پایین میباشد:

numbers array contains 4.
عملگر دسترسی اندیس
درین نصیب بعضی عبارت‌ها که در عملگر دسترسی اندیس استعمال می گردند، به همدم تابع متناظرشان در کاتلین معرفی گردیده‌اند.

عبارت ترجمه
a[i] a.get(i)
a[i, n] a.get(i, n)
a[i1, i2, ..., in] a.get(i1, i2, ..., in)
a[i] = b a.set(i, b)
a[i, n] = b a.set(i, n, b)
a[i1, i2, ..., in] = b a.set(i1, i2, ..., in, b)

مثالی از عملگر دسترسی اندیس
1fun main(args: Array) {
2
3 val a = intArrayOf(1, 2, 3, 4, - 1)
4 println(a[1])
5 a[1]= 12
6 println(a[1])
7}

با اجرای کد فوق سود پایین نتایج می شود:

2

12
عملگر invoke
درین قسمت بعضی عبارت‌ها با به کار گیری از عملگر invoke و تابع‌های متناظر آنها در کاتلین ارائه گردیده‌اند.

عبارت ترجمه
a() a.invoke()
a(i) a.invoke(i)
a(i1, i2, ..., in) a.inkove(i1, i2, ..., in)
a[i] = b a.set(i, b)
a[i, n] = b a.set(i, b)

در کاتلین پرانتزها به فراخوانی تابع عضو invoke ترجمه می گردند.

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

shl - کشیک چپ آرم‌دار
shr - کشیک راست آرم‌دار
ushr - کشیک راست بی‌آرم
and - و بیتی
or - یای بیتی
xor - xor بیتی
Inv - معکوس بیتی
همینطور در کاتلین هیچ عملگر سه‌تایی برخلاف جاوا نیست.

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

1int number1 = 55;
2long number2 = number1;// Valid code

در نمونه فوق، مقدار number1 از نوع int به طور اتومات به نوع long تبدیل می‌گردد و به متغیر number2 انتساب مییابد.

از سوی دیگر در کاتلین به طور ذیل فعالیت می کنیم:

1val number1: Int = 55
2val number2: Long = number1// Error: type mismatch.

حتی با این که اندازه Long والا‌خیس از Int میباشد، کاتلین به طور اتوماتیک Int را به Long تبدیل نمی‌نماید. بلکه می بایست از به طور مصرح از مشی ()toLong استعمال کنیم تا نوع متغیر را به Long تبدیل کنیم. کاتلین از این شغل برای پرهیز از شگفت‌زده کردن مخاطب امتناع می‌نماید.

1val number1: Int = 55

2val number2: Long = number1.toLong()

در‌این نصیب فهرستی از تابع‌های کاتلین را میبینید که برای تبدیل نوع استعمال می گردند:

toByte()
toShort()
toInt()
toLong()
toFloat()
toDouble()
toChar()
دقت فرمایید که تابعی برای تبدیل گونه های Boolean نیست.

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

1fun main(args : Array) {
2 val number1: Int = 545344
3 val number2: Byte = number1.toByte()
4 println("number1 = $number1")
5 println("number2 = $number2")
6}

خروجی اجرای کد فوق به طور ذیل میباشد:

number1 = 545344
number2 = 64
عبارت‌ها، پاراگراف‌ها و بلوک‌های کاتلین
درین نصیب از نوشته‌علمی یادگرفتن کاتلین راجع به عبارت‌ها و جمله‌های کاتلین توضیح میدهیم و تفاوت فی مابین این دو را با هم و با بلوک‌های کاتلین مقایسه میکنیم.

عبارت‌های کاتلین
«عبارت» (Expression‌) دربرگیرنده متغیر، عملگر و هر چیزی میباشد که یک مقدار منفرد را تحلیل می‌نماید. به نمونه ذیل اعتنا فرمائید:

val score: Int
score = 90 + 25
در کد فوق، 90 + 25 یک عبارت میباشد که مقدار int رجوع میدهد. دقت فرمایید که در کاتلین if برخلاف جاوا یک عبارت میباشد. در جاوا if یک پاراگراف به حساب می آید.

1fun main(args: Array) {
2
3 val a = 12
4 val b = 13
5 val max: Int
6
7 max = if (a > b) a else b
8 println("$max")
9}

در نمونه فوق if (a > b) a else b یک عبارت میباشد. مقدار این عبارت به متغیر max انتساب می یابد.

بازدید : 1
چهارشنبه 21 خرداد 1404 زمان : 16:25


شناخت با node.js
در یک کدام از دیگر از مقاله‌ها مرتبط با نرم افزار نویسی برای طرف داران این حوزه اینبار قصد داریم به طراحی اپلیکیشن در مشهد node.js بپردازیم.
node.js یکی پر اسم و رسم ترین و لبریز کاربردترین فریمورک های جاوا اسکریپت است که به معنای حقیقی و واقعی این لهجه را کامل شدن می نماید.
درپی ما به خصوصیت های کلی این لهجه و طرز ی استعمال از آن خوا هیم پرداخت.
با ما همپا باشید.
node.js چیست
همچون بخش اعظمی از فناوری‌ها، Node.js نیز قهرمانان و معارضان خویش را داراست.
البته نمی اقتدار انکار کرد که به صورت پهناور بوسیله بعضا از تارنما های کار کشته مثلا Uber، LinkedIn و PayPal به کارگیری می‌شود ؛ که آن را سوای دقت به اینکه موافق یا این که مخالف آن می باشید، به یک نیروگاه تبدیل می نماید.

Node.js یک single-threaded ، منبع گشوده و کراس پلتفرم برای تشکیل داد نرم‌افزار های کاربردی کانال و سمت سرور سریع و مقیاس پذیر میباشد.
Node.js بر روی موتور runtime جاوا اسکریپت V8 انجام می‌شود و از معماری I/O مطابق event و non-blocking به کارگیری می نماید که آن را کارآمد و برای نرم‌افزار های real-time مطلوب می نماید.

Node.js به گویش های C، C++ و JavaScript درج شده میباشد.

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

بعضی از دوستداشتنی ترین پلتفرم هایی که از Node.js به کارگیری می نمایند عبارتند از :

Twitter
Spotify
eBay
Reddit
LinkedIn
Godaddy
معماری node.js
Node.js از معماری “Single Threaded Event Loop” برای رئیس هم‌زمان یک‌سری کلاینت استعمال می نماید.
برای فهم و شعور تفاوت این مجال با بقیه فرصت‌های ایفا ، بایستی فهم کنیم که چه گونه کلاینت‌های هم‌زمان یک سری فن‌ای در لهجه‌هایی مانند جاوا مدیر می شوند.

در یک سبک request-response تعدادی حرفه ای ، تعدادی کلاینت یک درخواست ارسال می نمایند و سرور پیش از ارسال جواب ، هرمورد را پردازش می نماید.
با این هم اکنون ، یک سری حرفه برای پردازش کال های هم زمان به کارگیری می‌گردد.
این فن ها در یک Thread Pool تعریف‌و‌تمجید می گردند و هر توشه که درخواستی وارد می‌گردد، یک حرفه جدا از هم برای استیناف به آن تخصیص داده می‌گردد.

Node.js متعدد فعالیت می نماید.
بیایید نگاهی به هر مرحله ای که طی می نماید بیاندازیم :

Node.js یک دسته فن محصور را برای ارائه درخواست ها محافظت می نماید.

هر مجال که درخواستی می‌آید ، Node.js آن را در یک صف قرار می‌دهد.

فعلا ، “Event loop” تک حرفه ای ، کامپوننت مهم ، وارد میشود.
این Event loop به صورت نامحدود چشم به راه درخواست ها میباشد.

زمانی که یک درخواست وارد می‌گردد ، رینگ آن را از صف گزینش می نماید و پژوهش می نماید که آیا به عملیات blocking input/output (I/O) نیاز دارااست یا این که نه.
در غیر این شکل ، درخواست را پردازش می نماید و پاسخی را ارسال می نماید.

در‌صورتی‌که درخواست دارنده عملیات blocking برای اعمال باشد ، Event loop یک فن از مخزن نخ داخلی برای پردازش درخواست تخصیص می دهد.

Event loop درخواست‌های blocking را دنبال می‌نماید و بعد از پردازش شغل blocking ، آن ها را در صف قرار میدهد.

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

بازدید : 9
سه شنبه 20 خرداد 1404 زمان : 14:37


ادیتور هوشمند برای قواعد R8
R8 در افزونه 3.4.0 گریدل اندروید معرفی شد‌ه‌است تا کلیه فرآیند desugaring ،shrinking ،obfuscating ،optimizing و dexing را دریک جا جمع نماید و در فیض بهبود عملکردی چشمگیری در مراحل بیلد ارائه دهد. برای یادگیری مورد ها بیشتر در زمینه‌ی R8 این نوشته‌ی علمی (+) را تحقیق نمائید. تا تا قبل از این هیچ جانبداری از یک ادیتور هوشمند وجود نداشت که سفارش اتوماتیک در حین تایپ کردن قواعد R8 داشته باشد. البته در ورژن اندروید استودیو 4.0 یک قابلیت و امکان ادیتور هوشمند ارائه شد‌ه‌است که در طول تایپ کردن قواعد برای code shrinking به عمل میاید. وقتی که پوشه‌های قواعد را برای R8 ساخت‌و‌ساز می کنیم، اندروید استودیو این امکان ادیتور هوشمند را با امکاناتی از قبیل هایلایت کردن سینتکس، کامل شدن کد و پژوهش اشتباه ارائه می‌نماید. این ادیتور با پروژه اندروید نیز ترکیب میشود تا کامل شدن نشان بدون نقص را برای تمامی کلاس‌ها، متدها و فیلدها ارائه نماید و قابلیت ناوبری و نوسازی سریع کد طراحی اپلیکیشن در مشهد را مهیا سازد.

پوسته‌های زنده اندروید کاتلین
پوسته‌های زنده یک قابلیت و امکان راهگشای IntelliJ میباشد که به ما قابلیت و امکان میدهد تا بنا‌های رایج را از روش نوشتن کلیدواژه‌های بی آلایش در کد درج کنیم. اندروید استودیو در حال حاضر پوسته‌های زنده را به طرز خاص اندروید برای کد کاتلین نیز عرضه نموده است. برای مثال با وارد کردن عبارت toast و فشار دادن کلید Tab صفحه کلید میتوانیم سریعاً کد قالبی مرتبط با یک Toast را درج کنیم. برای مشاهده لیست بدون نقص پوسته‌ها به قسمت Editor > Live Templates در دیالوگ Settings یا این که Preferences بروید.

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


شناخت با متریال صفحه آرایی موشن در اندروید – از صفر تا صد
یکی‌از مختصات اصلی «متریال صفحه ارایی» (Material Design)، گذار موادتشکیل دهنده و کامپوننت‌ها برای ذکر ارتباط دربین آنها و خروجی‌ها و جان دار بودن اکشن میباشد. از ورژن 1.2.0-alpha05 به سپس کامپوننت‌های متریال برای کتابخانه اندروید از Transitions و Motion منفعت می گیرند. این‌ها گروه‌ای از کلاس‌ها با استعمال سهل وآسان برای پیاده‌سازی نوع متفاوتی از گذار و برنامه کودک قابل سفارشی‌سازی می‌باشند. درین نوشته ی علمی با کاربردهای متریال طراحی صفحه موشن در اندروید آشنا خوا‌هیم شد.
الگوهای متفاوتی وجود دارا هستند که سیستم موشن متریال صفحه آرایی را برای تولید گذار فی مابین نماهای تک تک شیت تشکیل میدهند. نکته قابل توجه این میباشد که الگوی گذاری با نوع مطلوب را برای هریک گزینش کنیم. این الگوهای گذار به گستردن ذیل میباشند:

تبدیل کانتینر (Container Transform) – این سرمشق در گذارهایی به کار گیری میشود که مشمول عنصری مستمر از قبیل یک لیست، سطح کارت یا این که دکمه باشند.
شالوده مشترک (Shared Axis) – این سر مشق برای گذارهایی میان ارکان UI که ارتباط ها فضایی یا این که ناوبری دارا‌هستند آیتم به کار گیری قرار میگیرد.
محو شدن روی هم (Fade Through) – وقتی که یک ارتباط در میان ارکان اساسی وجود ندارد یا این که نیست گزینه استعمال قرار می گیرد.
محو شدن (Fade) – این سرمشق در مواقعی استعمال میشود که موادسازنده UI می بایست وارد شیت و یا این که از آن بیرون شوند.
implementation(\'com.google.android.material:material:1.2.0-beta01\')
به دنبال هر مورد از مورد ها فوق را به گستردن گستردن می دهیم.

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

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

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

بازه زمانی (Duration)
این مشخصه زمان این گذار را برحسب میلی‌ثانیه انتخاب می‌نماید.

Interpolator (داخل‌یاب)
نوع داخل‌یابی گذار را گزینش می‌نماید. ما خواهیم توانست بعضا اشکال داخل‌یاب از قبیل FastOutSlowIn را گزینش کنیم و یا این که باطن‌یاب های سفارشی را با استعمال از FastOutSlowIn برای یک منحنی بزیه مکعبی آیتم به کارگیری در اختیار بگذاریم.

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

FADE_MODE_IN – محتوای ورودی را فارغ از عوض کردن معیار مات بودن محتوای خروجی محو می‌نماید. این شرایط پیش‌فرض میباشد.
FADE_MODE_OUT – محتوای خروجی را فارغ از عوض کردن معیار مات بودن محتوای ورودی محو می‌نماید.
FADE_MODE_CROSS – محتوای ورودی و خروجی را به طور متقاطع محو می‌نماید.
FADE_MODE_THROUGH - به طور ترتیبی محتوای خروجی را فیدآوت و محتوای ورودی را فیداین می‌نماید.
FitMode
این مشخصه سه آیتم دارااست.

FIT_MODE_HEIGHT - در زمان مقیاس برنامه کودک، محتوای ورودی را با طول محتوای خروجی تطبیق میدهد.
FIT_MODE_WIDTH – در زمان مقیاس کارتن، محتوای ورودی را با پهنا محتوای خروجی تطبیق می دهد.
FIT_MODE_AUTO – به طور خود کار از FIT_MODE_HEIGHT یا این که FIT_MODE_WIDTH استعمال می‌نماید.

بازدید : 12
دوشنبه 19 خرداد 1404 زمان : 17:57


AndroidUtilCode
AndroidUtilCode (+) یک کتابخانه حاذق و با استعمال سهل و آسان برای اندروید میباشد. این کتابخانه تابع‌هایی را که در بسط اندروید به کار گیری میشوند کپسوله‌سازی می‌نماید و دمو و آزمایش‌های یونیت جامعی داراست. با سود‌گیری از API-های کپسوله‌سازی‌گردیده می توانید تلاش را به ترازو متعددی بهبوطراحی اپلیکیشن در مشهد د ببخشید.

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

این کد در ورژن 1.29.0 میباشد و ذیل لایسنس آپاچی 2.0 نشر یافته میباشد.

Hijckr
Hijckr (+) در مرحله ساخت و ساز لی‌آوت اندروید دخالت کرده و عنصرها نام دار را به کلاس‌های دیگر هدایت می‌نماید.

این یک ابزار تماماً جذاب میباشد. برای مثال یک فولدر لی‌آوت که دربرگیرنده TextView میباشد در اندروید به صورت معمول android.widget.TextView لود میگردد، البته با به کارگیری از این کتابخانه قادر خواهیم بود تگ‌های xml را دزدیده و com.myapp.TextView را بار گذاری کنیم. پوشه README بدون نقص میباشد و این قابلیت و امکان را به ما می دهد که سریعاً استارت به فعالیت با این ابزار کنیم که 100% با جاوا مندرج میباشد.

کلیک فرمائید
Roomigrant
Roomigrant (+) یک کتابخانه کمکی میباشد که میگریشن‌های کتابخانه Room اندروید را به طور اتومات با به کارگیری از ساخت و ساز کد فرصت کامپایل تولید می‌نماید این کتابخانه از فولدر‌های اسکیما که از سوی کتابخانه Room ساخت گردیده به کارگیری کرده و میگریشن را بر مبنای تفاوت فی مابین آنان ایجاد می‌نماید. این بدان مفهوم میباشد که ساخت میگریشن اسکیمای Room می بایست در فولدر build.gradle راه‌اندازی گردد که به خیر در README توضیح داده گردیده است. این پروژه زیر لایسنس MIT ورژن 0.1.7 تکثیر یافته میباشد.

RoomExplorer
وقتی که کدبیس خویش را به Room جابجایی میدهیم، میتوانیم این مقر داده را در یک ابزار Viewer نظارت کنیم. RoomExplorer (+) قابلیت و امکان مشاهده کلیه داده‌های جدول را در فرمت جدولی آماده می‌سازد. همینطور قابلیت درج ستون در جدول، به‌روزرسانی، حذف ستون‌ها، حذف و پاک سازی ستون‌ها و غیره وجود دارااست.

این ابزار مستندات خیر داراست و زیر لایسنس آپاچی 2.0 تکثیر یافته میباشد.

android-framer
ابزار android-framer (+) قابلیت و امکان اضافه کردن کادر و تیتر را به اسکرین‌شات‌های گوگل پلی آماده می‌سازد.

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

Dependency Tree Diff
کتابخانه Dependency Tree Diff (+) یک ابزار diff داهیانه برای خروجی وظیفه Gradle میباشد که همواره مسیر تعلق ریشه را اکران می دهد.

قابلیت نصب این ابزار با brew یا این که تنهاً با به کار گیری از فولدر jar وجود دارااست. این کتابخانه ذیل لایسنس آپاچی 2.0 نشر یافته میباشد.

Gradle Doctor
کتابخانه Gradle Doctor (+) یک افزونه بیلد گریدل میباشد که مشتمل بر هشدارهای قابل تنظیمات برای خطاها سریع بیلد میباشد و مجال صرف گردیده در فرایندهای کناره‌نویسی داگر را اندازه‌گیری می‌نماید. این ابزار مطمئن می گردد که JAVA_HOME رقم خورده با مقدار JAVA_HOME در IDE تطبیق پیدا می‌نماید. همینطور قابلیت و امکان کش کردن آزمایش را به آسانی غیر فعال می‌نماید تا‌هنگامیکه دایرکتوری src خالی میباشد بیلد ناموفق باشد، چون دایرکتوری‌های src خالی موجب از دست رفتن کش‌ها و ایرادات بسیار دیگر می گردند.

این ابزار مستندات بهتر داراست و زیر لایسنس آپاچی 2.0 تکثیر یافته میباشد.

GloballyDynamic
GloballyDynamic (+) یک تیم از ابزارها میباشد که قابلیت عرضه سراسری Dynamic Delivery را صرف لحاظ از این که پلتفرم زیرین مغازه/ توزیع نرم افزار چیست ارائه نموده است. همینطور یک API کلاینت اندروید متحد و منفرد و یک تجارب توسعه و گسترش‌دهنده سرراست عرضه می‌نماید.

این کتابخانه اینک از موردها تحت امان می‌نماید:

پلی استور گوگل
آلبوم نرم افزار هواوی
اکثر وقت ها پلتفرم‌های دیگر در مخلوط با GloballyDynamic Server مانند برنامه‌استور آمازون، مغازه گلکسی سامسونگ، توزیع نرم افزار فایربیس یا این که در زمان توسعه و گسترش لوکال.
با استعمال از README این ابزار میتوانید با آن بیشتر آشنا گردید. این کتابخانه ذیل لایسنس آپاچی 2.0 عرضه شد‌ه‌است.

Dagger Browser
Dagger Browser (+) یک ابزار دیگر میباشد که قابلیت و امکان ناوبری سهل و آسان در گراف داگر پروژه را مهیا می‌سازد.

داده‌های گراف از افزونه SPI داگر تأمین می گردند و مرورگر با به کارگیری از اسکریپت و با تایپ اسکریپت تاسیس شده است.

همینطور یک نرم افزار مثال وجود دارااست که نحوه فعالیت این نرم افزار را اکران می دهد. همگی این موردها ذیل لایسنس BSD-3-Clause عرضه گردیده‌اند.

بازدید : 20
يکشنبه 18 خرداد 1404 زمان : 12:39


AndroidUtilCode
AndroidUtilCode (+) یک کتابخانه حاذق و با استعمال سهل و آسان برای اندروید میباشد. این کتابخانه تابع‌هایی را که در بسط اندروید به کار گیری میشوند کپسوله‌سازی می‌نماید و دمو و آزمایش‌های یونیت جامعی داراست. با سود‌گیری از API-های کپسوله‌سازی‌گردیده می توانید تلاش را به ترازو متعددی بهبود طراحی اپلیکیشن در مشهد ببخشید.

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

این کد در ورژن 1.29.0 میباشد و ذیل لایسنس آپاچی 2.0 نشر یافته میباشد.

Hijckr
Hijckr (+) در مرحله ساخت و ساز لی‌آوت اندروید دخالت کرده و عنصرها نام دار را به کلاس‌های دیگر هدایت می‌نماید.

این یک ابزار تماماً جذاب میباشد. برای مثال یک فولدر لی‌آوت که دربرگیرنده TextView میباشد در اندروید به صورت معمول android.widget.TextView لود میگردد، البته با به کارگیری از این کتابخانه قادر خواهیم بود تگ‌های xml را دزدیده و com.myapp.TextView را بار گذاری کنیم. پوشه README بدون نقص میباشد و این قابلیت و امکان را به ما می دهد که سریعاً استارت به فعالیت با این ابزار کنیم که 100% با جاوا مندرج میباشد.

کلیک فرمائید
Roomigrant
Roomigrant (+) یک کتابخانه کمکی میباشد که میگریشن‌های کتابخانه Room اندروید را به طور اتومات با به کارگیری از ساخت و ساز کد فرصت کامپایل تولید می‌نماید این کتابخانه از فولدر‌های اسکیما که از سوی کتابخانه Room ساخت گردیده به کارگیری کرده و میگریشن را بر مبنای تفاوت فی مابین آنان ایجاد می‌نماید. این بدان مفهوم میباشد که ساخت میگریشن اسکیمای Room می بایست در فولدر build.gradle راه‌اندازی گردد که به خیر در README توضیح داده گردیده است. این پروژه زیر لایسنس MIT ورژن 0.1.7 تکثیر یافته میباشد.

RoomExplorer
وقتی که کدبیس خویش را به Room جابجایی میدهیم، میتوانیم این مقر داده را در یک ابزار Viewer نظارت کنیم. RoomExplorer (+) قابلیت و امکان مشاهده کلیه داده‌های جدول را در فرمت جدولی آماده می‌سازد. همینطور قابلیت درج ستون در جدول، به‌روزرسانی، حذف ستون‌ها، حذف و پاک سازی ستون‌ها و غیره وجود دارااست.

این ابزار مستندات خیر داراست و زیر لایسنس آپاچی 2.0 تکثیر یافته میباشد.

android-framer
ابزار android-framer (+) قابلیت و امکان اضافه کردن کادر و تیتر را به اسکرین‌شات‌های گوگل پلی آماده می‌سازد.

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

Dependency Tree Diff
کتابخانه Dependency Tree Diff (+) یک ابزار diff داهیانه برای خروجی وظیفه Gradle میباشد که همواره مسیر تعلق ریشه را اکران می دهد.

قابلیت نصب این ابزار با brew یا این که تنهاً با به کار گیری از فولدر jar وجود دارااست. این کتابخانه ذیل لایسنس آپاچی 2.0 نشر یافته میباشد.

Gradle Doctor
کتابخانه Gradle Doctor (+) یک افزونه بیلد گریدل میباشد که مشتمل بر هشدارهای قابل تنظیمات برای خطاها سریع بیلد میباشد و مجال صرف گردیده در فرایندهای کناره‌نویسی داگر را اندازه‌گیری می‌نماید. این ابزار مطمئن می گردد که JAVA_HOME رقم خورده با مقدار JAVA_HOME در IDE تطبیق پیدا می‌نماید. همینطور قابلیت و امکان کش کردن آزمایش را به آسانی غیر فعال می‌نماید تا‌هنگامیکه دایرکتوری src خالی میباشد بیلد ناموفق باشد، چون دایرکتوری‌های src خالی موجب از دست رفتن کش‌ها و ایرادات بسیار دیگر می گردند.

این ابزار مستندات بهتر داراست و زیر لایسنس آپاچی 2.0 تکثیر یافته میباشد.

GloballyDynamic
GloballyDynamic (+) یک تیم از ابزارها میباشد که قابلیت عرضه سراسری Dynamic Delivery را صرف لحاظ از این که پلتفرم زیرین مغازه/ توزیع نرم افزار چیست ارائه نموده است. همینطور یک API کلاینت اندروید متحد و منفرد و یک تجارب توسعه و گسترش‌دهنده سرراست عرضه می‌نماید.

این کتابخانه اینک از موردها تحت امان می‌نماید:

پلی استور گوگل
آلبوم نرم افزار هواوی
اکثر وقت ها پلتفرم‌های دیگر در مخلوط با GloballyDynamic Server مانند برنامه‌استور آمازون، مغازه گلکسی سامسونگ، توزیع نرم افزار فایربیس یا این که در زمان توسعه و گسترش لوکال.
با استعمال از README این ابزار میتوانید با آن بیشتر آشنا گردید. این کتابخانه ذیل لایسنس آپاچی 2.0 عرضه شد‌ه‌است.

Dagger Browser
Dagger Browser (+) یک ابزار دیگر میباشد که قابلیت و امکان ناوبری سهل و آسان در گراف داگر پروژه را مهیا می‌سازد.

داده‌های گراف از افزونه SPI داگر تأمین می گردند و مرورگر با به کارگیری از اسکریپت و با تایپ اسکریپت تاسیس شده است.

همینطور یک نرم افزار مثال وجود دارااست که نحوه فعالیت این نرم افزار را اکران می دهد. همگی این موردها ذیل لایسنس BSD-3-Clause عرضه گردیده‌اند.

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

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


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


    ایمیل شما :

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



    لینک های ویژه