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

۳ مطلب با کلمه‌ی کلیدی «برنامه نویسی» ثبت شده است

ایده هاتو بگو : آرایش

حتما شما هم اپلیکیشن های تغییر چهره رو یادتونه . اپ هایی که شما رو پیر میکردن یا براتون سبیل میزاشتن و یا حتی کچلتون میکردن . الانم یه اپ به نام FaceApp ترند شده که میتونید انواع فیلتر روی تصویر صورت اجرا کنید و با توجه به هوش مصنوعی استفاده شده در این اپ تصاویر جالبی بدست بیارید . ایده اصلی اپلیکیشن " آرایش " هم از همین اپ ها الهام میگیره .

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

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

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

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

۱ نظر موافقین ۰ مخالفین ۰
مرتضی درزی

تغییر فونت فارسی در پروژه های اندروید

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

انتخاب فونت 

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

افزودن فایل به پروژه 

روی پوشه res راست کلیک کرده و New و مثل شکل زیر یه پوشه با نام font ایجاد کنید . 

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

فونت ها اصولا از اندروید 26 به بالا میتونن استفاده بشه و برای اینکه بشه تا اندروید 16 هم از فونت استفاده کرد باید این روش رو بکار بگیرید و گرنه فونت اعمال نمیشه 

یه فایل xml با نام مثلا shabnam_font ایجاد کنید و کد زیر رو توش بنویسید :

<?xml version="1.0" encoding="utf-8"?>

<font-family

    xmlns:app="http://schemas.android.com/apk/res-auto">

    <font

        app:fontStyle="normal"

        app:fontWeight="400"

        app:font="@font/shabnam" />

</font-family>

app:font="@font/shabnam" همون آدرس فایل فونت ( ttf ) هست که قبلا اضافه کردیم . حالا فایل style در پوشه Values رو باز کنید و کد زیر رو بهش اضافه کنید :

<style name="textViewFont">
    <item name="android:fontFamily">@font/shabnam_font</item>
</style>
دیگه کار تمومه و میتونید از فونت جدید در جایی که خواستید استفاده کنید :
<TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     style="@style/textViewFont" />
اگر هم بخواهید از این فونت مثلا در تمام TextView های برنامه استفاه کنید کافیه کد زیر رو به theme برنامتون اضافه کنید تا هر جا TextView داریم با این فونت تغییر کنه :
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
     <!-- Customize your theme here. -->
     <item name="colorPrimary">@color/colorPrimary</item>
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
     <item name="colorAccent">@color/colorAccent</item>
     <item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
     <item name="android:textViewStyle">@style/creditCardText</item>
</style>
موفق باشید 
۰ نظر موافقین ۰ مخالفین ۰
مرتضی درزی

Learnable Programming - برنامه نویسی قابل یادگیری - قسمت اول

با ترجمه و اقتباس از مقاله آقای برت ویکتور - Learnable Programming

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

موضوعات مطرح شده در این سری از مطالب ، در محیط آنلاین آموزشی آکادمی خان و براساس زبان برنامه نویسی جاوا اسکریپت ( js ) و Processing نوشته شده که دارای ویژگی مثل live coding می باشد که به محض نوشته شدن کد ، خروجی آن قابل مشاهده میباشد .

برنامه نویسی

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

دیدن نتایج

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

تشویق و ترغیب یادگیرنده در استفاده از روش های قدرتمند فکر کردن

ایجاد امکان دیدن و فهمیدن جزئیات برنامه به یک یادگیرنده

آلن پرلیز ( Alan Perlis ) میگوید : " برای اینکه یک برنامه را بفهمید باید خود را جای انسان و ماشین قرار دهید و مثل انها فکر کنید "

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


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

هر سیستم برنامه نویسی دو بخش دارد . یک بخش آن محیط برنامه نویسی است که روی کامپیوتر نصب میشود و محیطی را برای کار کردن برنامه نویس ایجاد میکند و یک بخش نیز زبان برنامه نویسی است که روی مغز برنامه نویس نصب میشود . و با استفاده از ان با کامپیوتر ارتباط برقرار می کند . باید هر دو بخش سیستم برنامه نویسی براساس اصولی طراحی شود که قابلیت یادگیری داشته باشد . یعنی همان شعار Learnable-Programming که سیستمی را برای برنامه نویسی ترسیم خواهد کرد که ، یادگیرنده در جایگاه خود به عنوان یک انسان و از دیدگاه خود برنامه را تحلیل کرده و بسازد .
یک محیط برنامه نویسی قابل یادگیری باید به یادگیرنده اجاز دهد :
  1. کلمات را بخواند ( read the vocabulary ) - کلمات چه معنایی میدهند ؟
  2. جریان داده را دنبال کند ( follow the flow ) - چه اتفاقی چه موقع می افتد ؟
  3. وضعیت ها را مشاهده کند ( see the state ) - کامپیوتر چطور فکر میکند ؟
  4. با واکنش نشان داد بسازد ( create by reacting ) - از نقطه ای شروع کرده و بسازد 
  5. بصورت مفهومی بسازد ( create by abstracting ) - ابتدا پیاده سازی کرده و سپس تعمیم دهد
یک زبان برنامه نویسی نیز باید شامل موارد زیر باشد :
  1. هویت و استعاره ( identity and metaphor ) - چطور باید جهان کامپیوتر را با جهان خودمان ارتباط دهیم ؟
  2. تجزیه ( decomposition ) - چطور باید ایده های خود را به تکه های قابل فهم تجزیه کنم ؟
  3. ترکیب دوباره ( recomposition  ) - چطور باید تکه های ذهنی را بهم بچسبانم ؟
  4. قابلیت خوانایی ( readability ) - این کلمات چه معنایی میدهند ؟
سعی خواهم کرد در سری های بعدی مطالب هر بخش از ویژگی های محیط و زبان برنامه نویسی را که در بالا لیست شده بصورت مجزا توضیح دهم 

 

۱ نظر موافقین ۰ مخالفین ۰
مرتضی درزی