<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های سحر قاسمی</title>
        <link>https://virgool.io/feed/@sahar.ghasemi74</link>
        <description>دانشجوی رشته ی مهندسی کامپیوتر - نرم افزار</description>
        <language>fa</language>
        <pubDate>2026-06-10 13:09:09</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/103731/avatar/mLU48Z.png?height=120&amp;width=120</url>
            <title>سحر قاسمی</title>
            <link>https://virgool.io/@sahar.ghasemi74</link>
        </image>

                    <item>
                <title>پایگاه داده با کاتلین برای برنامه نویسی اندروید</title>
                <link>https://virgool.io/@sahar.ghasemi74/%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%D8%A8%D8%A7-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-mjbueskqodsl</link>
                <description>شاید شما هم مثل من درگیر کار با پایگاه داده در اپ های اندرویدی باشید . اولش خیلی سخته معمولا توی اموزش ها فایل های زیادی درست میکنن و آدم سردرگم میشهحقیقت این هست کدها برای اتصال و مدیریت جدول های دیتابیس با زبان کاتلین در محیط اندروید استودیو خیلی پیچیده و زیاد به نظر میرسه ولی اینطور نیست.خب بیایید یکی یکی شروع کنیم ...آموزش کار با پایگاه داده ( دیتابیس )‌  sqlite در زبان کاتلین در محیط اندروید استودیوچه کلاس هایی برای اتصال به دیتابیس با زبان kotlin در برنامه نویسی اندروید نیازه ؟یه سری کلاس ها بعنوان کمک کننده حتما باید بسازید که من اونا رو اینجا مینویسم شاید به دردتون بخورهاین کلاس ها در ابتدا باید نوشته بشه تا اتصال و مدیریت دیتابیس با کاتلین بصورت استاندارد انجام بشهکلاس ها :‌کلاس برای هندل کردن دیتابیس به اسم DbHandlerکلاسی برای ساختن مدلی از هر موجودیت در پایگاه داده Modelsکلاسی برای آداپتور ( چیزی که اطلاعات رو ست میکنه روی دیتابیس )‌MyAdapterهر کدام از کلاس های بالا باید تعریف بشن و اصولی انجام بگیرند تا روند اتصال به دیتابیس در اپ اندرویدی کامل انجام بگیره دیتابیس مورد نظر هم Sqlite هست که یه دیتابیس سبک و راحت برای اپ های اندرویدی هست.و اما اگر بخوام یه توضیح کوچیک درباره ی کلاس های بالا بدم اینطوری میگمکلاس DBHandler همون کمک کننده ی اصلی یا هلپر ما هست که تو بعضی اموزش ها اسمش را DBHelper هم میزارن و این کلاس از کلاس SQLiteOpenHelper ارث بری میکنه و تمام متود های لازم برای عملیات CRUD یعنی CREATE READ UPDATE و DELETE اینجا نوشته میشه.فایل Models میتونه در بردارنده ی مدل کلاس های زیادی باشه مدل ها همون موجودیت های جداول هست یعنی خوبه به ازای هر موجودیت که همون جدول هست یه مدل درست کنید مثلا اگر در دیتابیس جدول books دارید که فیلد های book_name و book_id داره این رو بعنوان یک کلاس تعریف کنید به این شکل : class Model(){var bookID : Int = 0var bookName : String = &quot;&quot;}کلاس Adapter وظیفه ی این رو داره که اطلاعات رو در view ها پر بکنه و برای هر یک از آیتم هایی که از جداول لود کردیم یک view جدا با ویژگی های جدا بسازه تا بتونیم روی هر view عملیات انجام بدیم مثلا دکمه اضافه کن با قابلیت کلیک شدن که بشه هر یک از ایتم ها را دیلیت کرد :)) اینم از یه کلاسی ارث بری میکنه بستگی به این داره که چه چیزی رو برای نمایش انتخاب کردید معمولا recyclerview انتخاب میکنند که در این صورت این کلاس از RecyclerView.Adapter ارث بری خواهد کرد.اینا مفاهیم کلی هست که من خودم خیلی باهاشون درگیر بودم در ابتدا دنبال یه نوشته ای بود که بصورت کلی نشون بده قراره من چیکار کنم و بعد برم تو دل کدنویسی و یاد بگیرم . البته اموزش های خوب زیادی هست که من دیدم و اگر اول کار پیداشون میکردم این همه مشکلات نمیکشیدم نمونش دوره ی پروژه محور کاتلین استاد نیکزاد هست که بینظیر بود برای یادگیری این موارد :  اینجا میتونین ببینینبرای نمایش داده ها شما بهتره از یه لیست منعطف مثل RecyclerView استفاده کنید چون در این صورت یه لیست عادی و ساده ندارید شما میتونید روی هر یک از آیتم هایی که لود شده عملیات انجام بدید و همچنین هر نوع view را اضافه کنید.مثلا تصویر زیر دو نوع مختلف نمایش در recyclerview هست :‌آموزش کار با دیتابیس در sqlite کاتلینروی هر آیتم دکمه ی ویرایش یا حذف میتونید قرار بدید تصویر میتونید به هر شیوه ای لود کنید و ....اما بعد از ساختن سه کلاس اصلی بالا که اتصال شما به دیتابیس با کاتلین را فراهم میکند باید چیکار کنین ؟‌برای عملیات CRUD دیتابیس باید متودهایی را درون DbHandler یا همون DbHelper بنویسید.دیگه بقیه کار یعنی نامگذاری متود و کدنویسی درون اونها کار ساده ای هست که بر اساس سلیقه ی برنامه نویس انجام میگیره مثلا داخل DbHanlder میتونید یه متودی برای اضافه کردن دانش آموزان به دیتابیس به این شکل بنویسید:fun addStudent(cTx: Context, student: Student) {
    val values = ContentValues()
    values.put(COLUMN_STUDENT_NAME,student.studentName)
    values.put(COLUMN_STUDENT_PHONE,student.studentPhone)
    values.put(COLUMN_STUDENT_MARK,student.studentMark)
    val db = this.writableDatabase
    try {
        db.insert(STUDENT_TABLE_NAME,null,values)
        Toast.makeText(cTx,&amp;quotstudent added successfully&amp;quot,Toast.LENGTH_SHORT).show()
    }catch (e:Exception){
        Toast.makeText(cTx,&amp;quotError : ${e.message}&amp;quot,Toast.LENGTH_SHORT).show()
    }

}این ویدیو رایگان هم فارسی هست پیدا کردم برای یادگیری کار با دیتایس در اندروید عالیه که پیشنهاد میکنم ببینید :‌ https://www.aparat.com/v/t9kho/ بازم اگر سوالی بود درباره ی کاتلین یا برنامه نویسی پایگاه داده با کاتلین در کامنت ها بپرسید جواب میدم</description>
                <category>سحر قاسمی</category>
                <author>سحر قاسمی</author>
                <pubDate>Mon, 06 Sep 2021 14:11:36 +0430</pubDate>
            </item>
                    <item>
                <title>یادگیری کاتلین آسان است یا سخت ؟‌ چطور کاتلین را خوب یاد بگیریم</title>
                <link>https://virgool.io/@sahar.ghasemi74/%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A2%D8%B3%D8%A7%D9%86-%D8%A7%D8%B3%D8%AA-%DB%8C%D8%A7-%D8%B3%D8%AE%D8%AA-%DA%86%D8%B7%D9%88%D8%B1-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%B1%D8%A7-%D8%AE%D9%88%D8%A8-%DB%8C%D8%A7%D8%AF-%D8%A8%DA%AF%DB%8C%D8%B1%DB%8C%D9%85-mkymt6jhazwz</link>
                <description>تقریبا یکسالی میشه که کاتلین را شروع کردم و خیلی خوب پیش رفتم اوایل یادگیری زبان کاتلین برای من مشکل داشت ولی این مشکل به معنی سخت بودن زبان کاتلین نبود در ادامه خواهم گفت که چطور زبان کاتلین را سریع یاد بگیرید . البته همه ی این مقاله بر حسب تجربیات شخصی و سلیقه های من هست و اگر دیدید برای شما مناسب نیست خب بهش عمل نکنید :)آموزش راحت و سریع زبان برنامه نویسی کاتلیندر ادامه برخی سوالات شایع که ممکن است در ذهن شما هم باشد پاسخ میدم و مطمئنا مفید خواهد بود چون یکسال مقاله خوندم تا این تجربیات و ذهنیت را کسب کنم . آیا یادگیری زبان کاتلین سخت است ؟‌جواب این سوال در بررسی اهداف زبان برنامه نویسی کاتلین مشخص میشود یکی از اصلی ترین دلایل خلقت زبان کاتلین توسط شرکت جت برینز سادگی و آسانی در یادگیری بوده است .به احتمال زیاد کاتلین با این هدف قصد دارد جامعه ی بزرگی که از سختی های جاوا رنج میکشند را به سمت خود بکشد که تا الان موفق هم بوده کافیست تعداد خطوط کاتلین در گیتهاب را فقط در یک سال گذشته مقایسه کنید و میبینید که چه رشد چشم گیری داشته است . نمودار زیر تا سال ۲۰۱۷ است حالا برای سال های ۲۰۱۸ و ۲۰۱۹ آمار مناسب پیدا نکردم ولی مطمئنم با جستجو پیدا میکنید هرچند نمودار زیر گویایی رشد زیاد است رشد زبان برنامه نویسی کاتلین در یک سالاما یادگیری کاتلین واقعا آسان است دلیل اینکه در ابتدا سخت به نظر میرسد این است که ما به سینتکس زبان های برنامه نویسی که قبلا کار کردیم عادت کردیم . باید سینتکس کاتلین را دوباره از نو خوب یاد بگیریم خط به خط باید دوباره یاد بگیریم در این صورت خواهید دید که یادگیری ، کدنویسی ،‌ خطایابی و درک کدهای کاتلین چقدر ساده تر از زبانی مثل جاوا است ...البته من برای یادگیری زبان کاتلین از دوره ی استاد نیک زاد که در ۹۹ جلسه برگزار کرده استفاده کردم . تا پنجاه جلسه ی اول این دوره فقط سینتکس زبان کاتلین را تدریس میکنند که بسیار عالی است و خیلی از مشکلات پایه ای من در کاتلین را به سادگی و با چند مثال حل کردن دوره ی آموزش کاتلین استاد نیک زاد واقعا عالی و محشر بود جدا از اینکه دوره های فارسی معمولا بی کیفیت هستند ولی این فرق میکرد و من هر لحظه که دوره را میدیدم چیزهای جدیدی یاد میگرفتم اینجام تشکر میکنم از ایشون . از اینجا میتونید ببینید.خب پس مشکل اصلی در زبان برنامه نویسی کاتلین این است که ما به این زبان در ابتدا از زاویه ای اشتباه نگاه میکنیم وگرنه سختی در این زبان وجود ندارد بلکه راحت تر هم هست . چقدر طول میکشه تا کاتلین را یاد بگیریم ؟‌مدت زمان مورد نیاز برای یادگیری زبان برنامه نویسی کاتلین من خودم یک ماه طول کشید تا قواعد دستوری پایه ای زبان کاتلین را بصورت خوب یاد بگیرم یک ماه دیگر هم طول کشید آن را در برنامه نویسی اندروید در محیط اندروید استودیو استفاده کنم . بعد هم کم کم در طول زمان تسلطم بیشتر شد . و مدت زمان برای افراد مختلف در شرایطی که قرار دارند متفاوته برای افرادی که اصلا برنامه نویسی کار نکرده اند دو ماه حداقل زمان میخاد برای افرادی که قبلا حداقل یک زبان برنامه نویسی را یاد گرفته و باهاش کار کردن حداقل یک ماه زمان نیازه تا سینتکس اصلی زبان برنامه نویسی کاتلین را یاد بگیرند . در شروع یادگیری کاتلین مسئله دو تا میشود :‌یادگیری خود زبان کاتلینیادگیری استفاده از کاتلین در Android Studioالبته هر دوی این موارد را من در دوره ی استاد نیک زاد در سایت اواسام آموزش دیدم .بازار کار و آینده ی زبان برنامه نویسی کاتلین چطور است ؟‌آینده و درآمد زبان برنامه نویسی کاتلینمن اگر در مورد بازار کار نتونم نظر قطعی بدم در مورد آینده ی زبان کاتلین میتونم قطعا و صد در صد نظر بدم آینده ی برنامه نویسی اندروید با کاتلین است همین الانش من هر آگهی که درباره ی استخدام برنامه نویس اندروید میبینم نوشته مسلط به کاتلین ...البته استارتاپ های بزرگ از جمله فروشگاه اینترنتی دیجیکالا اپلیکیشن خودش را به کاتلین تغییر داده کافیه فایل APK ش را دیکامپایل کنید و کدهایی که توش هست رو ببینید که از کاتلین استفاده شده . حالا اینی که من گفتم درباره ی بازار کار و وضعیت زبان کاتلین در کشور ایران بود و اگر شخصی به فکر شغلی جهانی هست که صد در صد درآمد کاتلین خیلیه اگه به این سایت سر بزنید میبینید که متوسط حقوق برنامه نویس کاتلین در سال ۹۵۰۰۰ دلار است و فکر نکنم این مبلغ کمی برای یک برنامه نویس باشد . البته در برخی سایت های دیگر تا ۱۲۰ هزار دلار در سال حقوق کاتلین را نوشته است . کاتلین به دلیل این که یک زبان جدید و نوپا است ولی توسط افراد زیادی مورد استفاده قرار گرفته است و همچنین توسط شرکت بزرگ گوگل حمایت شده و بعنوان دومین زبان رسمی توسعه ی اپلیکیشن های اندرویدی بعد از جاوا انتخاب و معرفی شده است صد در صد آیند ه ی درخشانی در انتظار کاتلین است  . آیا فیوشا ارتباطی با کاتلین دارد ؟‌سیستم عامل فیوشا و زبان کاتلینآینده ی فیوشا مشخص نیست یک سیستم عامل بی برنامه و نا منظم از گوگل .... که نه مشخص است هدفش چیست کی منتشر خواهد شد  و ...ولی قبلتر یک نسخه از این سیستم عامل منتشر شده است . هر چه هست صحبت های تیم اندروید در مراسم گوگل IO گویای این بود که فیوشا هرگز جایگزین اندروید نخواهد بود اندروید در حال توسعه و بروزرسانی است و تصمیمی از طرف گوگل برای حذف یا جایگزینی اندروید گرفته نشده است  . و مطمئنا اینده ی اپلیکیشن های اندروید هم با زبان کاتلین است . </description>
                <category>سحر قاسمی</category>
                <author>سحر قاسمی</author>
                <pubDate>Thu, 19 Dec 2019 04:19:32 +0330</pubDate>
            </item>
                    <item>
                <title>زبان php با طعم MVC و چندتا چیز دیگه</title>
                <link>https://virgool.io/@sahar.ghasemi74/%D8%B2%D8%A8%D8%A7%D9%86-php-%D8%A8%D8%A7-%D8%B7%D8%B9%D9%85-mvc-%D9%88-%DA%86%D9%86%D8%AF%D8%AA%D8%A7-%DA%86%DB%8C%D8%B2-%D8%AF%DB%8C%DA%AF%D9%87-ng5m3ocmr8qj</link>
                <description>چرا با mvc کار کردم ؟ الگوی طراحی MVC چیستمدتی میشه که سعی میکنم کدنویسی php را در قالب mvc انجام بدم اینطوری خیلی سرعت برنامه نویسی پروژه هام زیاد میشه و خیالم از نظر امنیت هم بیشتر میشه .اوایل فکر میکردم mvc مختص یه زبان خاص مثلا برای asp mvc یا همچین چیزایی هست در حالیکه بعد از مطالعه و تحقیق درباره ی mvc فهمیدم که mvc به هیچ زبان یا تکنولوژی خاصی وابسته نیست و مستقل عمل میکنه .خب اگر شما یه نگاه کوتاهی به فریمورک های حاضر و آماده ی PHP بیاندازید میبینید که همگی بدون استثنا از MVC استفاده میکنند .ام وی سی نه تنها سرعت توسعه را میبره بالا بلکه بخاطر جداسازی کدهای بخش دیتابیس از کدهای مرکزی و کدهای رابط کاربری باعث افزایش چشم گیر امنیت میشهباگ گیری پروژه ها راحت تر میشه چون هر بخش جداست و داره کار خودش رو میکنه بهتر و راحت تر میتونید فایل های php تان را مدیریت کنید .چطور MVC را وارد پروژه ی PHP کنیم ؟‌خیلی از دوستام میپرسن چطور mvc را در پروژه ی PHP وارد کنیم خب یه طوری میپرسن انگار MVC یک فایل افزودنی هست که دانلود کنیم و بعد با ترفند هایی به PHP اضافش کنیم نه اینطوری نیست .باید بدانید که mvc یک شیوه است یک الگوی طراحی است که باید از قوانینش تبعیت کنید .یعنی قرار نیست عملا چیزی به پروژه اضافه کنیم یا کسر کنیم قراره پروژه را سازماندهی کنیم و کدها را مرتب کنیم و هر کدام را جای خودش بنویسیم این کاریه که MVC میکنهولی پیش نیازهای کار با mvc  چیه ؟‌قبل از اینکه بخواهید با php الگوی mvc را پیاده سازی کنید قطعا باید ابتدا خود زبان برنامه نویسی php را بلد باشید .خب پس آشنایی و بلد بودن خود php اولین پیش نیاز شماستولی از آنجایی که دائما با کلاس ها و متد ها و بحث هایی مثل وراثت و ... سر و کار خواهید داشت شی گرایی دومین پیش نیاز برای شروع و کار با php mvc است .چه کارهایی میتونم با PHP MVC انجام بدم ؟‌اگه از من بپرسید میگم هر کاری که در زمینه ی وب بخواد انجام بگیره ... از فروشگاه اینترنتی گرفته تا یک سایت خبری و ...من خودم برای یادگیری PHP MVC از دوره ی آموزشی استاد نیک زاد استفاده کردم که در قالب یک دوره ی آموزشی ساخت یک فریمورک برای php ( بله ! یک فریمورک ) بصورت mvc را تدریس میکنند که واقعا فوق العاده بود و شما هم میتونید باهاش شروع کنید. میتونید جزئیات دوره را اینجا ببینید.برای تهیه این دوره عکس دوره را براتون میزارم به همراه لینک تا هم حمایتی باشه هم اگر نیاز داشتید استفادش کنیددوره ی آموزش PHP MVC استاد نیک زاداما یک مشکل اساسی دیگر که باید بدونیداین mvc یک معماری سه لایه نیستسالهاست که در دانشگاه ها و آموزش ها میگن معماری سه لایه mvc ... :(‌ حتی من سر این موضوع با خیلی ها بحث کردم و حتی یه استاد بخاطر همین موضوع کلی مسخرم کردبرای روشن شدن موضوع بریم سراغ تعریف معماری سه لایه یه چند لایه در مهندسی نرم افزارخب برای روشن شدن موضوع من منبع اصلی انگلیسی میدم بخونید .درباره ی معماری سه لایه اینجا کلیک کنید و درباره ی mvc اینجا کلیک کنید .خب با مطالعه ی منابع بالا شاید متوجه شده باشید که تفاوت اصلی معماری سه لایه یا چند لایه با mvc در اصل اینه که در mvc اصلا بحث لایه بندی پروژه و سیستم نیست و سیستم در همون یک لایه فعالیت خودش را انجام میده در حالیکه معماری سه لایه ، سه سیستم از یک سیستم بصورت مجاز میسازد که هر کدام درون خودش فعالیتشان را میکنند و نتیجه ی خروجی را بهم ارسال میکنند .پس هرگز mvc معماری سه لایه نبوده و نیست . ممکنه خود mvc در یکی از لایه های معماری سه لایه قرار بگیره ولی خودش معماری نیست بلکه یک الگوی طراحی سادست .تصویر زیر هم خیلی کمک میکنه تا مسئله ی تفاوت بین MVC و معماری سه لایه را درک کنیدتفاوت معماری سه لایه با MVCهمانطور که در تصویر بالا میبینید mvc یا همان بخش های model view controller درون بالاترین لایه ی یک سیستم معماری سه لایه قرار گرفته یعنی لایه ی presentation ...و این نشون میده که این دو مفهوم جدایی هستندپایان</description>
                <category>سحر قاسمی</category>
                <author>سحر قاسمی</author>
                <pubDate>Tue, 10 Dec 2019 06:07:44 +0330</pubDate>
            </item>
            </channel>
</rss>