<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های علی فلاح</title><link>https://virgool.ir/feed/@ali78fallah</link><description>توسعه دهنده</description><language>fa</language><pubDate>2026-11-11 16:07:03</pubDate><image><url>https://files.virgool.ir/upload/users/221327/avatar/qDTsRe.png</url><title>علی فلاح</title><link>https://virgool.ir/@ali78fallah</link></image><item><title>اندروجت: شیوه جدید برای پیاده سازی UI در اندروید</title><link>https://virgool.ir/@ali78fallah/androjet-zo8c9xghwgox</link><description>چرا اکثر اپلیکیشن های ایرانی از UI بد رنج میبرن؟ تا سال گذشته این سوال همیشگی من بود! من خودم یک برنامه نویس اندروید نیستم اما یه داداش دارم که اونم برنامه نویس اندروید نیست (iOS کار میکنه) من توی پیاده سازی UI به کد کاملا بهش ایمان دارم. هر یوآی که تحویل میگیره (معمولا به صورت xd) اپلیکیشن اش رو کاملا شبیه اون طراحی میکنه.یه بار ازش پرسیدم چرا اکثر اپلیکیشن های اندروید ایرانی از نظر ظاهری ضعیف هستن نظرش این بود که چون کد نویسی UI توی اندروید کار سختری از کد نویسی اون توی iOS با سوئیفت هست و بعد شروع کرد به باز کردن اندروید استادیو و ایکس کد و توضیح دادن اینکه اتفاقات ساده مثل سایه دادن توی iOS چطوریه و همین کار ساده توی اندروید چه دردسری داره و برای چندتا کار ساده باید کلی لایبراری اضافه کرد. اصلا برام قابل باور نبود که اندروید با این همه کاربر و این همه برنامه نویس و شرکت گوگل به این بزرگی چنین ابزاری برای توسعه دست برنامه نویس ها داده باشه...!!این موضوع همیشه به عنوان یک ایده توی ذهنم بود و هر چند وقت یکبار بهش فکر میکردم شاید که روزی بتونم ابزاری برای برنامه نویسان مظلوم اندروید ایجاد کنم که کد نویسی UI رو در حد نوشتن CSS ساده کنه...! اینطوری برنامه نویس ها میتونستن بیشتر روی کد اصلی برنامه تمرکز کنن....!سال ها گذشت با زبان های برنامه نویسی مختلفی کار کردم، سورس های مختلفی خوندم و مطالب زیادی درباره معماری کامپیوتر، سیستم عامل و کامپایلر یاد گرفتم.بعد از اینکه استارتاپ خودمون رو راه اندازی کردیم اولین محصول ما که یک محصول سخت افزاری بود با شکست مواجه شد و با وجود پیشرفت ۹۰ درصدی به تولید نرسید. اما ما ناامید نشدیم و به سراغ محصول جدیدی رفتیم اما اینبار یک محصول نرم افزاری چیزی که در ایران (به دلیل نبود قانون کپی رایت) به ندرت پیدا میشه. خوبی محصول نرم افزاری نداشتن گیر و گور های قانونی و اداری و... است. فروش اش هم راحتتره، خط تولید نمیخواد و واردات هم نداره (تازه به قیمت دلار هم بستگی نداره)معرفی: AndroJet ابزاری برای توسعه UI در اندرویدبعد از کلی توسعه نرم افزار و تجربه های فراوون به عنوان اولین ایده نرم افزاری با قابلیت تجاری سازی به سراغ طراحی یک ابزاری رفتیم که باهاش کار برنامه نویس های اندروید رو راحتتر کنیم. اینطوری برنامه نویس های اندروید میتونن برنامه های خوشگل تر و بهتری توسعه بدن که هم به نفع اوناست و هم به نفع کاربری که قراره ازش استفاده کنه. و شاید بزرگترین مزیت اش این باشه که میتونن برنامه ها رو سریع تر توسعه بدن و در نتیجه پروژه های بیشتر و به دنبال اون درآمد بیشتری کسب کنن.الان که دارم این مطلب رو برای شما مینویسم کار توسعه این ابزار تقریبا تموم شده. داکیومنت اش به زبان انگلیسی آماده شده و طی یکی دو هفته آینده تبلیغات اش رو شروع میکنیم و این ابزار رو عرضه میکنیم.اسمش رو گذاشتیم AndroJet و فعلا به صورت CLI هست یعنی محیط گرافیکی نداره و باید با کامندلاین و ترمینال باهاش کار کرد (مثل AdonisJs).مفاهیم جدیدی تعریف کردیم و ویژگی هایی بهش اضافه کردیم که خودمون واقعا از کار باهاش لذت میبریم. یک زبان نشانه گذاری جدید به اسم JML تعریف کردیم که بشه باهاش مثل XML ظاهر برنامه رو توصیف کرد.دیگه سایه دادن به هر کامپوننتی شده آب خوردن. از الان دیگه میتونید با نوشتن یک خط، ImageView خودتون رو گرد کنید (بهش border-radius بدید)تازه نکته خوبش اینجاست که این ابزار علاوه بر ساخت فایل های XML فایل های ساده کاتلین هم تولید میکنه که به راحتی بتونید کار برنامه نویسی رو شروع کنید. همچنین توی لیست ها id کامپوننت ها رو در میاره و توی فایل کاتلین مربوطه به صورت کامنت قرار میده که به راحتی بتونید از آیدی هایی که به کامپوننت ها دادید (و احتمالا در هنگام برنامه نویسی کاتلین یادتون نمیاد چی بودن) استفاده کنید.همه جوره هواتون رو داشتیم که یه وقتی خدایی نکرده سختی نکشید :)ویژگی های دیگه ای که داره توی لیست زیر آوردم:میتونید با یک دستور ساده، مشخص کنید کدوم اکتیوی اول باز بشه. (ما اسمش رو گذاشتیم Hot Activity)میتونید بدون اندروید استادیو پروژه رو کاملا بیلد کنید و فایل apk خروجی بگیرید (البته باید SDK رو نصب داشته باشید)همچنین میتونید به راحتی پروژه رو درون اندروید استادیو import کنید. کاملا سازگارهمیتونید برای هر کامپوننت یه مقدار پیشفرض قرار بدید. (مثلا برای TextView ها یه فونت پیشفرض بزارید که همه از اون استفاده کنن)میتونید Local Library تعریف کنید. یعنی بخشی از کدتون رو یه جا بزارید و هرجا که خواستید صداش بزنید. تاااااااازه، میتونید مثل تابع براش آرگومان بفرستید تا مقادیر متفاوتی داشته باشن. (مثلا یک دکمه خاص طراحی میکنید و هرکجا خواستید صداش میکنید و متن دکمه رو هم براش میفرستید)این تازه اول کاره و ما با حمایت شما یک عالمه ویژگی بهش اضافه میکنیم که برنامه نویسی رو برای شما ساده تر و لذت بخش تر کنیم.قبل از آوردن یه مثال این نکته رو ذکر کنم که متاسفانه در حال حاضر شما نمیتونید Preview کدی که نوشتید رو مشاهده کنید و اگه خواستید اینکار رو انجام بدید باید به کمک اندروید استادیو این کار رو انجام بدید. (که ما اینکار رو توصیه میکنیم) ولی نمایش Preview جزو اولیت های ما برای توسعه اندروجت هست.به عنوان نمونه از داکیومنت اش این بخش رو آوردم که نشون میده با کد زیر میتونید این صفحه رو ایجاد کنید. (نتیجه بیلد کردن این کد ۱. ساخت فایل XML برای این اکتیوی ۲. ساخت فایل XML برای بکگراند ۳. ساخت فایل کاتلین (ساده) و ۴. اضافه کردن اکتیویتی به فایل Manifest هست)activity {&#xA;    name: &#34;Nino&#34;&#xA;    frame {&#xA;        h: mp; w: mp&#xA;        background: #E1E7F1F6&#xA;        text {&#xA;            padding: 40dp&#xA;            text: &#34;Test Background&#34;&#xA;            background: #00dae6&#xA;            border-radius: 50dp&#xA;            border-color: #7AE9FF&#xA;            border-width: 10dp&#xA;            align: c&#xA;        }&#xA;    }&#xA;}کد بالا صفحه زیر رو رسم میکنه:بکگراند گرد یک تکست به همراه استراکمیتونید داکیومنت اش رو به زبان انگلیسی در صفحه زیر بخونید.androjet.readthedocs.ioدوستان توسعه دهنده اندروید که مایل هستن این ابزار رو طی یکی دو هفته آینده تست کنن ایمیل خودشون رو کامنت کنن که فایل برنامه رو تا هفته بعد در اختیارشون قرار بدیم. (یا اگه عضو ویرگول نیستید به ایمیل شخصی من پیام بدید ali78fallah@gmail.com)البته توجه داشته باشید که در هنگام ارایه اولیه احتمالا برنامه قابلیت استفاده ۱۴ روز رایگان رو داشته باشه از اون بابت نگران نباشید.راستی این برنامه قراره برای شما ساخته بشه پس اگه برای هزینه خریدش نظری دارید یا برای فروشش پیشنهادی دارید خوشحال میشیم بهمون بگید.بعد از ارئه اولیه برنامه متن کاملتر و جدی تری در این رابطه در ویرگول میفرستم.ممنون میشیم اگه این صفحه و این موضوع رو به دوستانتون هم اطلاع بدید.شاد و پیروز باشید.</description><category>علی فلاح</category><author>علی فلاح</author><pubDate>Tue, 11 Aug 2020 00:34:14 +0430</pubDate></item><item><title>هش چیست و چقدر امنیت دارد؟ (به زبان ساده)</title><link>https://virgool.ir/@ali78fallah/هش-چیست-و-چقدر-امنیت-دارد-ri0w3woewrbo</link><description>میدونستید که وقتی تو یه سایت ثبت نام میکنید و یه رمز عبور انتخاب میکنید رمز عبور شما HASH میشه؟این یعنی رمز عبور شما درون سرور اون سایت ذخیره نمیشه و باعث میشه اگه یه روزی داده های اون سایت لو بره (و در نتیجه‌ی اون اطلاعات ورود شما لو بره) هکر نتونه رمز عبور شما رو بخونه. شاید بگید خوب وقتی سایت هک بشه دیگه هکر هرکاری میتونه انجام بده بله درسته ولی موضوع اینه که اکثر ما ها درون سایت های مختلف با یک رمز عبور همیشگی ثبت نام میکنیم و در صورتی که هکر به رمز عبور ما دسترسی پیدا کنه (یعنی بتونه رمز رو بخونه) به راحتی میتونه به تمام اکانت های ما توی تمام سایت های دیگه ای که ثبت نام کردیم هم دسترسی داشته باشه ولی این اتفاق نمیوفته چون رمز عبور ما به صورت هش شده ذخیره شده.حالا ببینم به زبان ساده هش چیه:هش یعنی درهم سازی. وقتی یه عبارتی رو هش میکنیم اون به یک عبارت با یک اندازه ثابت در میاد. در هش MD5 که درون سایت ها اکثرا استفاده میشه یه عبارت ۱۲۸ بیتی ساخته میشه یه مزیت مهمی که داره اینه که دیگه همیشه مقدار فیلدی که میخواهیم به رمز تخصیص بدیم ثابته.چجوری هش یک کلمه با هش ۱۰۰ کلمه با هش یک صفحه متن و حتی هش یک فایل همش یه عبارت ۱۲۸ بیتی میشه. (برای اونایی که کامپیوتری نیستن و ۱۲۸ بیت رو درک نمیکنن به صورت اشتباه فرض کنید ۳۲ حرف میشه که شامل ۰ تا ۹ و حروف a تا f هست)مثلا هش عبارت hello world به هگزا دسیمال به صورت زیر میشه:5eb63bbbe01eeed093cb22bb8f5acdc3میتونید عبارت های خودتون رو توی این سایت وارد کنید و مقدار هش شده اش رو ببینید (البته توصیه نمیکنم برای کنجکاوی رمز خودتون رو وارد کنید و ببینید که هش اش چی میشه چون احتمالا این سایت چیزایی که وارد میکنید رو به دیتابیس خودش اضافه میکنه)برگردیم به سوال چجوری همه ورودی ها به یک عبارت با اندازه ثابت تبدیل میشه؟کاری که هش انجام میده از نظر ریاضیات یه عملیات غیر قابل برگشت هست و ساده ترین مثال اش باقی‌مانده است.برای مثال باقی مانده ۱۸ بر ۵ چند میشه؟ ۳حالا آیا میتونید بگید چی عددی هست که باقی مانده اش بر ۵ سه میشه؟ ۱۸؟خیر جواب غلطه. چون عدد ۸ هم باقی مانده اش به پنج ۳ هست و حتی عدد ۱۳ هم باقی مانده اش ۳ هست جالب اینکه بی نهایت عدد وجود داره که باقی مانده اش بر ۵ سه هست.این مفهوم برگشت ناپذیری بود. حالا شاید بهتر درک کنید چرا هش به یک مقدار با طول ثابت تبدیل میشه.البته تابع هش یه تابع بزرگ ریاضیه که خیلی پیچیده تر از باقی مانده است.نکته ای که تابع هش داره اینه که ممکنه به ازای دو تا ورودی متفاوت یک خروجی یکسان تولید کنه و این یعنی ممکنه یکی با یوزر شما و با یه رمز دیگه ای داخل اکانتتون بشه که البته احتمالش خیلی کمه.برخی سایت ها اومدن یه دیتابیس درست کردن و هر عبارت و هش اون عبارت رو ذخیره کردن. این باعث میشه وقتی یه هش داشته باشید با جستجو در این دیتابیس متوجه بشید که چه عبارتی بوده که هش اش این شده.اما بیایید ببینم که برای اینکه همه هش ها رو ذخیره کنیم به چند تا رکورد نیاز داریم.در بالا گفتیم بزرگی عبارت هش شده در هش MD5 برابر ۱۲۸ بیت هست. این یعنی ۲ به توان ۱۲۸ حالت که میشود ۳۴۰ میلیارد میلیارد میلیارد میلیارد این یعنی اگر شما میخواهید تمام زوج های (عبارت،هش) رو ذخیره کنید نیاز به این مقدار فیلد برای ذخیره سازی دارید. یعنی اگر هر عبارتِ داخلِ زوجِ (عبارت،هش) را یک بایت در نظر بگیرید (هرچند که نمیشه یک بایت باشه چون یک بایت نهایتا ۲۵۶ حالت ایجاد میکند اما برای نشان دادن بزرگی این عدد مقدار حداقل آن را بدست میاوریم تا ببینید حداقل به چه فضایی نیاز است) حداقل به ۳۴۰ میلیون میلیارد میلیارد ترابایت فضا نیاز است.و حال فرض کنید ما توانستیم این مقدار داده را پردازش و ذخیره کنیم اگر بخواهیم در آن جستجوی خطی انجام بدهیم اگر فرض کنیم پردازنده ۳ گیگاهرتز و هر مقایسه در یک کلاک انجام شود یعنی در ثانیه ۳ میلیارد مقایسه انجام شود باید ۳۴۰ میلیارد میلیارد میلیارد میلیارد مقایسه صورت پذیرد که با تقسیم این مقدار به ۳ میلیارد مقایسه در ثانیه به عدد ۱۱۰ میلیارد میلیارد میلیارد ثانیه میرسیم و از تقسیم این عدد بر ۶۰ و ۶۰ و ۲۴ و ۳۶۵ به ۳ هزار میلیارد میلیارد سال میرسیم. یعنی برای جستجوی خطی درون این دیتابیس از زوج های‌(عبارت،هش) نیاز به ۳ هزار میلیارد میلیارد سال داریم.این عدد نشون میده ذخیره تمام مقادیر ممکن برای هش از نظر حافظه و از نظر پردازش در دنیای واقعیات یک کار ناممکن است.به عنوان نکته آخر این موضوع رو بیان کنم که هش کردن فقط برای امنیت استفاده نمیشه مثلا در زبان های برنامه نویسی مثل پایتون و جاوا برای افزایش دسترسی به یک کلید در دیکشنری ها از هش کردن کلید به عنوان ایندکس استفاده میشه و این یعنی برای پیدا کردن یک کلید و مقدار در دیکشنری نیازی به جستجو نیست و با هش کردن میتونیم به اون ایندکس که کلید و مقدار درونش دخیره شده مستقیم دسترسی پیدا کنیم. امیدوارم این مقاله در فهم شما درباره موضوع هش، امنیت و کاربردش به شما کمک کرده باشه. </description><category>علی فلاح</category><author>علی فلاح</author><pubDate>Fri, 24 Jul 2020 13:57:06 +0430</pubDate></item><item><title>فیلیموکدی : فیلیمو برای اندروید تی وی</title><link>https://virgool.ir/@ali78fallah/فیلیموکدی-فیلیمو-برای-اندروید-تی-وی-hjsguvbdim4h</link><description>خیلی دوست داشتم که یه برنامه برای فیلیمو بنویسمبه نظرم واقعا خوب نیست که شرکت های بزرگ ما مثل فیلیمو و نماوا هنوز یک برنامه درست و کاربردی برای تلویزیون های هوشمند ندارن....!صفحه اول فیلیموکدیاگه برنامه دیوار رو در نظر میگرفتیم میشد ازش دفاع کرد چون کمتر کسی هست که بخواهد آگهی ها رو توی تلویزیون خونش مرور کنه اما ارایه دهندگان فیلم حتما باید یه فکری به حال این موضوع میکردن چون اصلی ترین ابزار فیلم دیدن اونم به صورت خانوادگی تلویزیون ها هستن...!با این همه خرج برای تولید بعضی از فیلم ها توسط VOD ها و تبلیغات و جایزه هایی که میدن اما من هنوز نمیدونم چرا برای توسعه رابط کاربری شون هیچ اقدامی نمیکنن..!احتمالا نماوا به فیلیمو نگاه میکنه و فیلیمو به نماوا اینجوری میشه که با خودشون میگن فعلا خوبه و تلاشی در جهت بهبود خدماتشون نمیکنن...! :/از وقتی که این فکر به سرم زد شاید یکسال گذشت و بعد از اون من شروع کردم به تحقیق در مورد اینکه چطوری میتونم یه برنامه برای فیلیمو بنویسیم (و البته چطوری میتونم برنامه ای که خواهم نوشت رو به فیلیمو بفروشم) تا اینکه Kodi به عنوان یک برنامه مدیا سنتر قدرتمند و شناخته شده نظر من رو به خودش جلب کرد.صفحه درون فیلم فیلیموکدیتحقیق در مورد Kodi و اینکه چطور میشه براش اسکین (قالب ظاهری یا مثلا UI) طراحی کرد رو شروع کردمهمزمان با اون توسعه چیزی که میخواستم درست کنم رو هم شروع کردم تا اینکه بعد از سه ماه کار تونستم با پایتون و XML (که البته هردوش قسمت هایی مخصوص Kodi داشت) به چیزی که میخواستم برسم...!من یه اسکین طراحی کردم و یه add-on که به سایت فیلیمو متصل بشه و فیلم ها رو از API اون بگیره...! (البته چند تا اسکریپت دیگه هم به اینا اضافه کردم تا برنامه به کارایی بهتری دست پیدا کنه)هرچند میخواستم از اون کسب درآمد کنم اما تصمیم گرفتم به عنوان اولین برنامه و با توجه به اینکه ممکنه باگ هایی داشته باشه اون رو به صورت رایگان عرضه کنم.صفحه جستجو فیلیموکدیشما میتونید محیط اسکین + آموزش نصب اون رو توی سایت filimo-kodi.ir ببینید.اگه توی رفتار برنامه باگ دیدید (که احتمالا میبینید) به من گزارش بدید تا در نسخه های بعدی اون رو اصلاح کنمراستی یه نکته اینکه وقتی فیلیموکدی رو نصب کنید دیگه نمیتونید از دیگر add-on های kodi استفاده کنید چون این اسکین مخصوص فیلیمو طراحی شده و برای اینکه به بهترین کارایی برسه ترجیح دادم اینکار رو بکنم.ممنون بابت وقتی که گذاشتید.اگه دوست داشتید میتونید زیر این پست نظراتتون رو با من به اشتراک بگذارید. یا اگه پیشنهاد دیگه ای برای طراحی اپلیکیشن اندروید تی وی دارید خوشحال میشم بشنوم.http://filimo-kodi.ir/</description><category>علی فلاح</category><author>علی فلاح</author><pubDate>Mon, 29 Jun 2020 21:42:45 +0430</pubDate></item></channel></rss>