<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های [ Taha. Dostifam ]</title>
        <link>https://virgool.io/feed/@mr.tahadostifam</link>
        <description>Full-stack web developer</description>
        <language>fa</language>
        <pubDate>2026-06-10 13:14:32</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1197181/avatar/LopmVl.jpg?height=120&amp;width=120</url>
            <title>[ Taha. Dostifam ]</title>
            <link>https://virgool.io/@mr.tahadostifam</link>
        </image>

                    <item>
                <title>Power of RubyOnRails!</title>
                <link>https://virgool.io/@mr.tahadostifam/power-of-rubyonrails-td6vzkxjwwgg</link>
                <description>تو این پست میخوام درباره فریمورک روبی آن ریلز که برای توسعه WebApplication ساخته شده حرف بزنم و اینکه چرا نسبت به دیگر فریمورک ها ترجیحش میدم.?روبی آن ریلز چیه؟ از کجا اومد؟روبی آن ریلز توسط David Heinemeier Hansson (DHH) در سال 2004 بوجود اومد.وقتی شیخ دیوید داشت روی یک اپلیکیشن وب به اسم Basecamp کار میکرد متوجه شد که فریمورک های موجود چرا اینقد سنگینن؟ ینی کمتر قابل حمل هستن... و برای توسعه یک وب اپلیکیشن خیلی زمان بر هستن. پس با خودش دو دو تا چهارتا کرد گفت چرا فریمورک خودم رو ننویسم؟پس بعد از فقط ۴ سال که روبی ساخته شده بود... ریلز هم شروع به خلق شدن کرد. سپس روبی آن ریلز release شد و بین دولوپر ها بشدت محبوبیت پیدا کرد و حتی الان هم که الانه جامعه بزرگی داره و میتونه جوابگوی همه نوع وب اپلیکیشن از کوچیکش (Startup) گرفته تا بزرگش (large-scale enterprise) باشه.ویژگی های کلی RoR : سرعت عمل در توسعه (Rapid Development) ⚡️ریلز با توانایی سهولت بخشیدن به روند توسعه معروف شد. بطوری که سیستم CoC و Dry-Code ش به دولوپر هاش این امکان رو میده که اپلیکشن های موثر تر و قدرتمند تری رو بسازند. با ریلز دولوپر ها قادرند در چندین روز یا حتی در چند ساعت وب اپلیکیشن هایی خلق کنند که ساختن اون ها با فریمورک های دیگه ممکنه تا هفته ها طول بکشه.بهره وری بالا (High Productivity) ?ریلز با ابزار ها و کتابخونه های built-in ای که خودش ارائه میده خیلی راحت دولوپر میتونه bussines-logic ش رو تعریف کنه و خیلی راحت تبدیلش کنه به یک Api یا یک WebApplication. این باعث میشه که دولوپر بیشتر روی bussines-logic متمرکز بشه تا کار های پیش و پا افتاده و تکراری ای مثل database-management یا routing یا حتی authentication!انعطاف پذیری (Flexibility)?ریلز Flexibility بسیار بسیار بالایی داره و به زبون دیگه Highly-Customizable هست!!!شیء گرایی سطح بالای روبی و دنیای اوپن سورس محیطی رو برای ریلز فراهم کرده که دولوپر خیلی راحت میتونه به توسعه کتابخونه ها و یا کاستومایز کردن اون ها بپردازه. و البته شاید کلید اصلی در شیوه شیء گرایی روبی باشه. همه چیز module هست. پس اگه نیازش نداشتید یا میخواستید تغییری توش ایجاد بکنید... بهش بگید... همین کفایت میکنه تا کار شما با بالاترین کیفیت راه بیوفته.یک اصطلاحی در جامعه برنامه نویسان روبی آن ریلز هستکه میگه : &#x60;Everything is like tools on a kitchen&#x60;درواقع این منظور داره که همه چیز... از چاقو و قوری و قابلمه و هرچیز شبیهی که بخواید همیشه همون جایی هست که باید باشه. هیچوقت قرار نیست برای پیدا کردنش اعصابتون رو بهم بریزید یا زمان زیادی روش صرف بکنید.مقیاس پذیری (Scalability) ?همچنین ریلز برعکس انتظار سایر دولوپر ها بسیار Scalability بالایی داره! چرا که ریلز قادر به هندل کردن مقدار زیادی از data و traffic هست. همچنین ریلز ابزار هایی بسیار قدرتمند برای اینکار داره مثل Caching یا load-balancing یا database-sharding که باعث میشه با بالا رفتن Scale پروژه data و traffic تحت کنترل باشه.امنیت (Security) ✅تا جایی که ساختار ریلز خیلی ساده و قابل درک هست پس منطقا ایجاد امنیت نباید کار دشواری باشه.ریلز ساخته شده که تا در مقابل بسیاری از آسیب پذیری ها در امان باشه بدون اینکه دولوپر رو درگیرش بکنه. و آسیب پذیری هایی مانند XSS و CSRF و SQL Injection و غیره.همچنین ریلز ابزار هایی برای ساختن Authentication های قدرتمند داره که احتمالا خودتون میدونید اگر آدنتیکیشن توسط یک کتابخونه اوپن سورس هندل بشه حتمی از قبل خیلی عالی دیباگ شده و احتمالا کمترین آسیب پذیری ممکن رو داره.ریلز بعنوان یک فریمورک Full-Stack!درواقع روبی آن ریلز ابزار های واقعا ویژه ای رو برای سریعتر هندل کردن فرانت اند ارائه میده :بهینه سازی ?ریلز با توجه به AssetPipeline قدرتمندی که داره هر لحظه آماده ست که asset های شما رو در محیط پروداکشن Minify و Compress کرده باشه و این یعنی سرعت لود سایت بیشتر و پرفرمنس بهتر.تمپلیت های ERB✨روبی قالب خاصی برای نوشتن view ها داره که باعث میشه دولوپر بتونه داخل فایل Html کد روبی بنویسه و قالب فرانت رو از سمت بک اند کنترل کنه. احتمالا این یه مورد خیلی به چشم نمیاد اما فقط دولوپر های ریلز میدونن ERB Template چقدر قدرتمنده??.ادغام با فریمورک های JavaScript ?ریلز تقریبا با بیشتر فریمورک های فرانت اند میتونه ادغام باشه مثل (Angular, React, Vue, Svelte, etc).دولوپر ها میتونن به توسعه اپلیکیشن های بسیار پیچیده بپردازن درحالی که ریلز قدرتمند در سمت بک اند در حال اعمال نفوذ به فرانته.توربولینک! (یکی از مهم ترین فیچر های ریلز) ?اگر شما فرانت کار باشید متوجه هستید که یک فریمورک فرانت مثل ریکت اگر بخشی از سایت تغییر کند runtime این وظیفه رو به عهده داره که تنها و تنها اون بخش از Element-Tree رو دوباره رندر بکنه درحالی که به دیگر بخش ها هیچ اتفاقی نیوفته. بنظرتون ممکنه یک فریمورک بک اند همچین چیزی فراهم کنه؟جواب :‌ نمیدانم!!این قابلیت در Rails-v7 اضافه شد که تقریبا بیشتر طرفداران ریلز از جمله خودم مات مبهوت در حال نگریستن به این فیچر عظیم بودیم... کتابخونه Turbolink این قابلیت رو ارائه میده که با استفاده AJAX تنها یک بخش کوچیکی از سایت آپدیت بشه و سایت همچنان ریلود نشده باقی بمونه! درواقع عینا و کاملا مثل یک SPA یا single-page application عمل میکنه!? بدون نیاز به فریمورک های واقعا پیچیده فرانت اند... و احتمالا متوجه شدید که بیشتر سایت های امروزی همچین قابلیتی رو ندارن و کاربر مجبوره لحظات دشوار زیادی رو صبر کنه تا سایت دوباره از نو بالا بیاد...?چه شرکت هایی از Rails استفاده میکنن؟چندتا از بزرگترین شرکت هایی که میشناسید دارن ریلز استفاده میکنن.اگر خودم انتخاب کنم دوس دارم اول Github رو بگم?. پاتوق اکثر طرفداران دنیای اوپن سورس! که با ریلز توسعه یافته که میتونید وقتی تو گیت هاب میچرخید به فیچر هاش فکر بکنید که چطور با روبی آن ریلز هندل شدن و چرا گیت هاب مثل یک WebApplication واقعا سریع عمل میکنه.همینطور شرکت بزرگ Airbnb که یک شرکت بازار آنلاین و اقامت و گردشگری هست هم سال های زیادی هست که کاربر روبی آن ریلز هستن و همچنان ازش استفاده میکنند و راضی اند.شرکت های Basecamp و Hulu و SoundCloud و Twitch و Square و Zendesk هم کاربران ریلز هستن.سخن پایانی?با همه خوبی هایی که ریلز داره متاسفانه در ایران آنچنان بهش توجه نشده و جامعه آنچنان بزرگی نداره.اما خوشبختانه در سال های اخیر شرکت های ایرانی زیادی در حال استخدام کردن روبی آن ریلز کار هستن. پس امیدواریم که روبی آن ریلز در ایران هم طرفدار های بیشتری پیدا کنه چرا که واقعا مستحق این توجه هست به لطف فیچر های قدرتمندی که درباره شون بهتون گفتم...لایک و کامنت فراموش نشه!❤️✨</description>
                <category>[ Taha. Dostifam ]</category>
                <author>[ Taha. Dostifam ]</author>
                <pubDate>Tue, 18 Jul 2023 03:33:28 +0330</pubDate>
            </item>
                    <item>
                <title>زبان های مفسری vs زبان های کامپایلری</title>
                <link>https://virgool.io/@mr.tahadostifam/%D8%B2%D8%A8%D8%A7%D9%86-%D9%87%D8%A7%DB%8C-%D9%85%D9%81%D8%B3%D8%B1%DB%8C-vs-%D8%B2%D8%A8%D8%A7%D9%86-%D9%87%D8%A7%DB%8C-%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84%D8%B1%DB%8C-lvz0vidddigc</link>
                <description>زبان های برنامه نویسی زیادی هستند که شما اسم اون هارو خیلی شنیدید مثل CPP یا Fortran یا Cobol یا  حتی Basic که زبان های کامپایلری هستند... زبان های کامپایلری کد شما رو به کد اسمبلی تبدیل میکند. و بعد برنامه ای تحت عنوان Assembler اون رو تبدیل به binary-code میکنه و بعد سیستم عامل میتونه اون رو ران بکنه و در نهایت پروگرم شما میتونه روی اون سیستم کار بکنه. دلیل اینکه میگوییم فقط روی اون سیستم دارای علت خاصی است‌ :) چرا که کد اسمبلی که توسط اسمبلر تولید شده برای هر cpu-architecture متفاوته و برنامه کامپایل شده فقط و فقط میتونه روی اون arch کار بکنه. برای مثال کد اسمبلی که برای x86-64 تولید شده قرار نیست روی AArch64 کار بکنه و این برای اسمبلی کار ها میتونه یک دردسر جدی باشه! اصلا برای همینه که زبان های برنامه نویسی High-Level توسعه داده شدن تا برنامه نویس درگیر مسائل مربوط به machine نشه!نوشتن یک برنامه کامپایلری مراحلی داره که احتمالا باهاش آشنا هستید...معمولا برنامه نویس از یک ابزار توسعه ای مثل vsc یا vscode یا Xcode یا حتی یک نوت پد ساده استفاده میکنه و سورس کد رو مینویسه و یا اگر برنامه پیچیدگی خاصی پیدا کرد اون رو تقسیم بندی میکنه بین فایل های مختلف. بعد برنامه نویس module هارو link (متصل) میکنه و در نهایت همه اون سورس کد تبدیل میشن با زبان قابل فهم کامپیوتری.اما زبان های دیگه ای هم هستن که بطور مستقیم کد رو تبدیل به کد ماشین نمیکنن و فقط وقتی برنامه اجرا میشود تبدیل به کد ماشین میشن که این زبان هارو اغلب بعنوان script میشناسن. یعنی همه برنامه ما خلاصه میشه در همون سورس کد! هیچ چیز دیگه ای قرار نیست در برنامه ما دخیل باشه... بعضی زبان های اسکریپتی مانند Unix-shells (sh, csh, ksh, etc.) سورس رو میخونن و بلافاصله هر خط از سورس کد رو اجرا میکنند... زبون هایی مثل Perl هم وجود دارن که قبل از اجرا کردن سورس کد کل اسکریپت رو آنالیز میکنند.ویژگی مهم زبان های اینترپرتری اینه که بسیار Portable عمل میکنند. بیشتر مسائل توسط اینترپرتر (مفسر) هندل میشن برای مثال برنامه شما cross-platform خواهد بود و قادر است در هر مکان و هر زمان توسط هر کامپیوتری اجرا بشه. یعنی هر کامپیوتری که Interpreter را نصب داشته باشه میتونه کما و بیش بی هیچ تغییری برنامه رو  اجرا کنید. خیلی راحت... بی هیچ مشکلی. اما مشکلاتی نیز وجود دارد. برای مثال برنامه هرگز قابل executive (اجرا) نخواهد بود اگر interpreter در دسترس نباشد!در حقیقت زبان هاس مفسری کند تر از زبان های کامپایلری هستند اما دیباگ و اصلاح آنها ساده است و میتونن راحت جابجا بشن. Python و Javascript مثال های دیگه ای ازین زبون ها هستن!</description>
                <category>[ Taha. Dostifam ]</category>
                <author>[ Taha. Dostifam ]</author>
                <pubDate>Mon, 03 Jul 2023 00:03:12 +0330</pubDate>
            </item>
                    <item>
                <title>بالاخره رقیب ts-node پیدا شد! SWC.rs!</title>
                <link>https://virgool.io/@mr.tahadostifam/%D8%A8%D8%A7%D9%84%D8%A7%D8%AE%D8%B1%D9%87-%D8%B1%D9%82%DB%8C%D8%A8-ts-node-%D9%BE%DB%8C%D8%AF%D8%A7-%D8%B4%D8%AF-swcrs-i4cjzr4vu9w6</link>
                <description>SWC.rsتو پروژه هایی که با تایپ اسکریپت هستند احتمالا متوجه کمبود سرعت کامپایل رو کاملا احساس کردید و احتمالا مثل من دیوونه میشید تا سورس کامپایل بشه!کامپایلر جدیدی که اسمش SWC.rs هست یک کامپایلر بسیار Fast و Powerful هست که با زبان Rust نوشته شده و کمپانی های معروف زیادی دارن ازین کامپایلر استفاده میکنن مثل Vercel, ByteDance, Tencent, Shopify!یکی از بهترین ویژگی های این کامپایلر رو که من انتخاب کردم احساس راحتی با اونه بطوری که اگه تا دیروز شما پروژه تون رو با ts-node کامپایل میکردید امروز خیلی راحت میتونید رو SWC سویچ کنید بدون اینکه به اررور خاصی برخورید یا مجبور بشید Structure تون رو تغییر بدید.فیچر های فعلی SWC :CompilationBundling (swcpack, under development)MinificationTransforming with WebAssemblyUsage inside webpack (wc-loader)Improving Jest performance (@swc/jest)Custom Pluginsیک مثال ساده با SWC و TypeScript : pnpm i -D @swc/cli @swc/core
# Or 
npm i -D @swc/cli @swc/coremain.ts :console.log(&amp;quotHello SWC.js!&amp;quot);package.json : &amp;quottype&amp;quot: &amp;quotmodule&amp;quot,
&amp;quotscripts&amp;quot: {        &amp;quotbuild&amp;quot: &amp;quotswc main.ts --out-dir dist&amp;quot,        &amp;quotstart&amp;quot: &amp;quotnpm run build; node dist/main.js&amp;quot}و در نهایت به سادگی میتونید پروسه کامپایل رو انجام بدید :pnpm start
# Or 
npm startنتیجه :Resultمیبینید که در 7ms کامپایل شده! واقعا مقدار قابل توجهی هست!خب امیدوار بتونید نهایت استفاده رو ازین پکیج فوق العاده زیبا و قدرتمند بکنید و کارتون رو بندازید لایک و کامنت یادتون نره :) ?✨</description>
                <category>[ Taha. Dostifam ]</category>
                <author>[ Taha. Dostifam ]</author>
                <pubDate>Fri, 21 Apr 2023 23:50:24 +0330</pubDate>
            </item>
                    <item>
                <title>چه فریمورکی برای فرانت اند یاد بگیرم؟</title>
                <link>https://virgool.io/@mr.tahadostifam/%DA%86%D9%87-%D9%81%D8%B1%DB%8C%D9%85%D9%88%D8%B1%DA%A9%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%81%D8%B1%D8%A7%D9%86%D8%AA-%D8%A7%D9%86%D8%AF-%DB%8C%D8%A7%D8%AF-%D8%A8%DA%AF%DB%8C%D8%B1%D9%85-a93cyjgruepy</link>
                <description>فریمورک چیه؟در برنامه نویسی فریمورک ها یک سری کد های از پیش نوشته شده هستند که دارای یک سری کتابخانه و ابزار و سیستم استاندارد سازی شده و یک استراکچر آماده و خوب هست که به شما اجازه میده که پروژه تون رو به سادگی پیش ببرید و حجم کد هاتون پایین و کیفیت کد بالا باشه!خوبی ها و فواید استفاده از فریمورک ? :Consistency وقتی تغییرات استراکچر شما به حداقل ترین حالت ممکن میرسه که قطعا مشارکت و همکاری در پروژه برای دیگر دولوپر ها آسان تر خواهد شد.Cross-browser compatibilityهدف دیگر فریمورک ها اینه که با بیشتر مرورگر ها سازگار باشن و اغلب کاربران بتونن از اپلیکیشن شما استفاده کنن.Responsive designفریمورک های وب این امکان را به شما میدن تا بتوانید صفحات ریسپانسیو رو به سادگی طراحی بکنید.Better performanceفریمورک ها برای عملکرد هرچه بهتر طراحی شدن! در Scale بزرگتر مخصوصا پروژه های سازمانی این مسعله تقریبا مهم ترین چیز برای فرانت اند دولوپر های اون سازمان هست که متاسفانه آماتور ها توجه کمتری به این موضوع دارند. فریمورک ها با فراهم کردن فیچر هایی مثل Lazy Loading و Code Splitting و Caching کمک میکنند تا سرعت اپلیکیشن تون رو بالا ببرید و مشتری رو راضی نگه دارید.جاوا اسکریپت و جنگ بین فریمورک های فرانت اند!معمولا دیده شده که شما تو هر گروهی میری یه بحثی بین اینکه کدوم فریمورک خوبه وجود داره!??اما این فریمورک ها برای چه هدفی و چه کار کردی ساخته شدن؟!برای انتخاب یک فریمورک مناسب پروژه شما عوامل زیادی رو باید در نظر بگیرید مانند پیچیدگی پروژه تون (Complexity) و تیم دولوپ تون (Development Team) و...! ویژگی های چندتا از فریمورک های محبوب :Reactمیشه گفت که ریکت محبوب ترین فریمورک بین دولوپر های فرانت محسوب میشه و دلیل اون انعطاف و Reusable بودن کامپوننت ها هست که اون رو برای تقریبا هر نوع پروژه ای مناسب میکنه! البته به پرفرمنس خوب ریکت هم باید اشاره کرد که مناسب اپلیکیشن های بزرگه!Vueویو جی اس هم یکی دیگه از فریمورک های محبوبه که خیلی سبکه (lightweight) و یادگیریش به مراتب آسون تر از دیگر فریمورک ها هست. ویو جی اس رو با سادگیش و انعطاف ش میشناسن که یه انتخاب فوق العاده برای اپلیکیشن های با Scale متوسط و کوچیکه!Angularانگیولار! هیولای فرانت اند! یک فریمورک جامع که برای اپلیکیشن با Scale بزرگ و پیچیده استفاده میشه. انگیولار استراکچر خاصی داره که ممکنه کمی برای آماتور ها اذیت کننده باشه مخصوصا اینکه TypeScript محور هست باعث میشه حجم کد ها هم زیاد باشه. انگیولار رو با فیچر های قدرتمند ش مثل Data binding و Dependency Injection و component-based architecture میشناسن! یک فریمورک خاص و قدرتمند! و البته با اندکی سنگینی سورس کد?? ^-^ .حجم سورس کد ها :React: around 43KB for version 17.0.2Angular: around 134KB for version 12.0.4Vue.js: around 29KB for version 3.2.22در نتیجه همه این فریمورک ها توسط بهترین برنامه نویس ها از سراسر جهان نوشته شدن!پس فقط کافیه دور نمای لازم از هدف برنامه نویس شدنتون و علاقه تون رو پیدا کنید تا بتونید درست انتخاب کنید که کدوم فریمورک رو یاد بگیرید?.</description>
                <category>[ Taha. Dostifam ]</category>
                <author>[ Taha. Dostifam ]</author>
                <pubDate>Thu, 20 Apr 2023 00:08:19 +0330</pubDate>
            </item>
                    <item>
                <title>نصب درایور wifi روی لینوکس debian 11 و ubuntu</title>
                <link>https://virgool.io/@mr.tahadostifam/%D9%86%D8%B5%D8%A8-%D8%AF%D8%B1%D8%A7%DB%8C%D9%88%D8%B1-wifi-%D8%B1%D9%88%DB%8C-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-debian-11-%D9%88-ubuntu-ufvaudm9j57y</link>
                <description>شاید شما هم موقع نصب debian-11 یا دیگر توزیع های لینوکسی با ارروری مواجه شده باشید که نتونید به wifi خودتون وصل بشید و بعدا وقتی دسکتاپ تون بالا میاد کلا دیگه دسترسی بهش ندارید و مجبورید برید کابل LAN بیارید :)اول مطمن بشید که ریپوزیتوری دبیان رو توی سورس هاتون داشته باشید :# nano /etc/apt/sources.list# deb http://deb.debian.org/debian/ bullseye main contrib non-free# sudo apt-get updateبعد کافیه با کابل گوشی تون یا کابل LAN به هر طریقی که میتونید به اینترنت وصل بشید و پکیج زیر رو نصب کنید :sudo apt install firmware-iwlwifiبعدش سیستم تون رو ری استارت بکنید و بعد میبینید که وای فای تون بالا میاد?</description>
                <category>[ Taha. Dostifam ]</category>
                <author>[ Taha. Dostifam ]</author>
                <pubDate>Sat, 01 Apr 2023 01:29:12 +0330</pubDate>
            </item>
            </channel>
</rss>