<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های یاسر کریمی</title>
        <link>https://virgool.io/feed/@karimiblog</link>
        <description>علاقه مند به کامپیوتر و برنامه نویسی و نوشتن و خواندن تجربیات دیگران در حوزه های مختلف به ویيه کامپیوتر هستم.</description>
        <language>fa</language>
        <pubDate>2026-06-16 16:48:27</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/9778/avatar/QSE2ib.png?height=120&amp;width=120</url>
            <title>یاسر کریمی</title>
            <link>https://virgool.io/@karimiblog</link>
        </image>

                    <item>
                <title>قسمت سوم- طراحی نرم افزار Enterprise</title>
                <link>https://virgool.io/@karimiblog/%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-enterprise-sumic7t0x6za</link>
                <description>تصمیم گرفتم از این به بعد نسخه فارسی مطالبی که در مدیومم می نویسم را هم منتشر و این سری اول فارسی نوشته شده است.مطالب قبلی در فرصتی مناسب ترجمه خواهم کرد و قرار خواهم داد یکی از روش های مرسوم و بسیار پر طرفداری و کاربردی لایه بندی کردن نرم افزار بدین ترتیب مانع از بهریختگی و اشفتگی نرم افزار خواهیم شد.در طراحی چند لایه باید به اینکه توجه کرد: لایه ها برای ارتباط با یکدیگر از رابط های مخصوصی استفاده می کنند و این رابط ها همیشه ثابت هستند یکی از دلایل طراحی چند لایه امکان عوض کردن یک لایه بدون نیاز به تغییر لایه قبل و بعد استدر طراحی چند لایه هر لایه با بعدی و قبلی ( بالایی و پایینی) خود ارتباط داردهیچ لایه نمی تواند یک لایه را دور زده (bypass) و مستقیم به لایه بعدی وصل شودبعد از لایه بندی کردن سیستم شما باید تصمیم بگیرید که هر لایه را کجا اجرا کنیم برای مثال ما سه لایه داریم لایه نمایش دولایه پردازش منطق تجارتی لایه سوم ذخیره سازی این روز ها چیزی که  وب سرور ها مرسوم است بدین صورت که معمولاً هر تمامی لایه ها بر روی یک ماشین فیزیکال قرار می گیرد اما در نرم افزار ها و سیستم های تجاری بزرگ نیازمند این هستیم که این لایه ها را در ماشین های مختلف اجرا کنیم و گاهی اوقات نیامند این هستیم برای مدیریت زمان قطع بودن کاربر لایه نمایش را به طور کامل در ماشین کاربر ذخیره یا اجرا کنیم.ما برای این ماقع باید از نرم افزار مقیم استفاده کنیم ( Client side ) مثلا می توانیم از نرم افزار موبایلی یا دسکتاپی یا حتی نرم افزاری اجرایی مقیم مرورگر (  برخیone page application یا PWA ها )  استفاده کنیم. که با قطع ارتباط بین سرور و کاربر کاربر بتواند عملیات های خاصی را انجام دهد.در این نوع نرم افزار ها 2 نکته بسیار مهم وجود دارد:اپلیکیشین باید پردازش ها و عملیات های کاربر را در زمان قطع بودن اپلیکیشن از اینترنت یا اتصال به سرور ذخیره کرده و بعد از برقراری دوباره اتصال دیتابیس به موجود را با دیتابیس سرور هماهنگ شود( این موضوع روش ها و مطالب زیادی که در اینده به ان اشاره خواهیم کرد)دیگر موضوع در اینجا نرم افزارها به روز رسانی نرم افزاراست.  معمولاً به روزرسانی نرم افزارهایی که تماماً بر روی یک سرور قرار گرفتند بسیار آسان تر است ولی نرم افزار هایی که بخشی از آنها به صورت اپلیکیشن بر روی سیستم های کاربر اجرا میشوند معمولاً پیچیدگی هایی دارند به همین دلیل باید عملیات های انجام شده در اپلیکیشن کاربر باید کم ترین حالت های ممکن باشند و منطق تجاری یا بیزینس لاجیک باید  تا حد بیشینه کوچک شده باشد علاوه بر این باید مکانیزم های دیباگ جمع آوری لاگ و به روزرسانی اجباری و مکانیزم اطلاع رسانی برای بروز رسانی از قبل فراهم شده باشد. برای اینکه پیچیدگی این موضوع را بهتر درک کنید فکر کنید ماکروسافت قصد دارد ویندوز را اپدیت کند و این کار می خواهد به صورت اجباری انجام دهد به چالش های داشتن کاربر میلیونی و حجم زیاد بسته بروز رسانی فکر کنید و خوش حال می شوم در بخش نظرات با هم صحبت کنیمیکی از کارهایی که می توان انجام داد این است که بیزینس لاجیک مربوطه را نحوه پیاده سازی کرد که بتوان آن را به عنوان یک ماژول در سرور و کلاینت استفاده کرد به این ترتیب می‌توان به روزرسانی سرور و اپلیکیشین را سریعتر و آسانتر کرد.در طراحی لایه لایه باید توجه کنید که نود های پردازشی شما همگی باید بر روی یک سرور یا یک کلاس اجرا شود و سعی نکنید که کدهای یک نود پردازشی را جدا کنید چون که این کار بی فایده است و باعث کاهش پرفورمنس خواهد شد مگر اینکه در موارد خاص و پیچیده شما نیاز دارید به اضافه remote facades وdata transfer object که در مطالب بعدی در مورد آن صحبت خواهیم کرد.</description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Thu, 04 Aug 2022 13:49:17 +0430</pubDate>
            </item>
                    <item>
                <title>نرم افزار های  Enterprise - بخش دوم -Performance</title>
                <link>https://virgool.io/@karimiblog/%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D9%87%D8%A7%DB%8C-enterprise-%D8%A8%D8%AE%D8%B4-%D8%AF%D9%88%D9%85-performance-pppidznyhnbk</link>
                <description>امروز دومین سری از مقالات مربوط به سراحی نرم افزار های صنعتی نوشتم میتوانید این مقاله از لینک زیر مشاهده کنید خوش حال می شم نظرتون بگید https://medium.com/@karimi.yasser/enterprise-application-part-2-performance-d35a05fb30c6</description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Sat, 07 May 2022 00:18:21 +0430</pubDate>
            </item>
                    <item>
                <title>الگو های طراحی نرم افزار صنعتی - اولین مقاله انگلیسی من</title>
                <link>https://virgool.io/@karimiblog/%D8%A7%D9%84%DA%AF%D9%88-%D9%87%D8%A7%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%B5%D9%86%D8%B9%D8%AA%DB%8C-%D8%A7%D9%88%D9%84%DB%8C%D9%86-%D9%85%D9%82%D8%A7%D9%84%D9%87-%D8%A7%D9%86%DA%AF%D9%84%DB%8C%D8%B3%DB%8C-%D9%85%D9%86-pcwemvhae3pu</link>
                <description>بعد از مدت ها دوباره شروع کردم به نوشتن ولی اینبار سعی کردم انگلیسی بنویسم تا مخاطبینم بیشتر بشه و جایی هم که برای نوشتن انتخاب کردم سایت مدیوم هست .فعلا قصدم دارم همون انگلیسی مطالب منتشر کنم اما اگر با استفبال روبه رو بشه سعی می کنم ان ها به فارسی هم منتشر کنم. اولین پست مدیوم من هم چیز خواصی نیست صرفا یک پیشگفتار ساده و کوتاه هست ولی در مقالات بعدی شروع می کنم به معرفی الگو ها و  بعد بقیه موارد لازم برای طراحی نرم افزار های صنعتی.لینک مدیوم:https://medium.com/@karimi.yasser/enterprise-application-architect-part-1-141213f10fc6</description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Fri, 08 Apr 2022 16:44:05 +0430</pubDate>
            </item>
                    <item>
                <title>SLA vs SLI vs SLO</title>
                <link>https://virgool.io/@karimiblog/sla-vs-sli-vs-slo-gzvzoz3zzn58</link>
                <description>داخل لینکدین با شخصی سر موضوع هک اروان بحثم شد چیزی که متوجه شدم این بود که افراد معمولا اصلا نگاهی به قرداد بین خودشان و سازمانی که قرار است از آن سرویس بگیرند نمی اندازند و یا اصلا نمی دانند این قرار دادها در مورد چه چیزی صحبت می کنند!!برای همین سعی کردم طبق روال گذشته در یک مطلب کوتاه خیلی سریع سه نکته مهم مرور کنم.در قرارداد ها معمولا سه موضوع باید مد نظر قرار بگیرید:SLA: Service Level AgreementsSLO: Service Level ObjectivesSLI: Service Level Indicatorتوافق نامه سطح خدمات SLA- Service Level Agreementsدر این توافق نامه طرفین قرارداد یک سری سطوح قابل اندازگیری مشخص می کنند. مثل آپ تایم(uptime)معمولا مشکلی که در این بخش هست این است که این موارد توسط افراد غیر تخصصی مشخص می شوند و یک سری موارد داخلش دیده نمی شود مثلا در SLA گفته می شود تهیه کنند نرم افزار باید مشکلات نرم افزاری را در مدت 24 ساعت بر طرف کند اما معمولا در مورد نحوه پاسخ گویی مستری چیزی گفته نمی شود و این مورد ممکن است باعث طولانی شدن  فرآیند رفع مشکل شود.اهداف سطح خدمات SLO- Service Level Objectivesبعد از توافق موارد قابل اندازه گیری باید سطوحی برای این موارد مشخص شوند مثلا برای آپتایم روی عدد 99.95 توافق صورتی می گیرد.نکته بسیار مهم این هست که این موارد قابل اندازه گیری دقیق مشخص کنید و سطوح هم بدون ابهام مشخص کنید.سطح اندازه گیری خدمت SLI: Service Level Indicatorبعد از مشخص کردن موارد قابل اندازه گیری و سطوح آن باید آن شاخص اندازه گیری کنیم مثلا طی سال گذشته اپتایم سیستمی 99.96 و سطح تعهد 99.95 پس تعهد نقض نشده.جبران خسارتبعد از مشخص شدن سه پارمتر گذشته باید مشخص کرد اگر پارامتری نقض شد چگونه جبران خسارت خواهد شد. معمولا این کار از بعد مالی صورت می گیرد مثلا گفته می شود 2 برابر هزینه سرویس جبران خسارت صورت می گیرد. نکته مهم در این مبحث این است که جون سطوح و پارامتر ها مشخص شده اندو قابل ادازه گیری هستند. خسارت هم بر همین اساس پرداخت خواهد شد. این که شما بیاید بگوید ارزش من 100 میلیارد است پس خسارت وارده به من هم همین قدر است معیار کار نیست.همانطور که در پست زیر توضیح دادم خود شما مسول حفاظت از داده هایتان هستید میزبان شما حداکثر می توانند چند برابر هزینه سرویس خریداری شده  توسط شما را پس بدهد همین تازه این عدد هم از قبل توافق شده! https://vrgl.ir/6bkHG </description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Fri, 16 Apr 2021 15:24:57 +0430</pubDate>
            </item>
                    <item>
                <title>مقاله کوتاه-لینوکس-دستورNM</title>
                <link>https://virgool.io/@karimiblog/%D9%85%D9%82%D8%A7%D9%84%D9%87-%DA%A9%D9%88%D8%AA%D8%A7%D9%87-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1nm-ma49uykyrlop</link>
                <description>مدتی هست به این موضوع فکر می کنم برخی از دستورات مفید و کمتر شناخته شده لینوکس در مقاله های کوتاهی معرفی کنم هدف اصلی من هم مختصر و مفید بودن هست دوست ندارم مخاطبم خیلی درگیر کنم مگر اینکه ابتدا در یک مقاله کوتاه موضوع اصلی را توضیح بدهم و بعد در مقالات بعد آن موضوع مفصل تر بسط بدهم.یکی از دستوران مفید در لینوکس دستور nm است.با استفاده از این دستور می توانلیست توابع داخل یک کتاب خانه کامپایل شده را دید (فایل SOدر لینوکس یاdll در ویندوز)برای مثال در تصویر بالا در حال مشاهده اسم توابع و متغییر های فایل کامپایل شده apl هستیداین ابزار سویچ های جلبی دارد مثلا با استفاده -n می توان لیست تمام Symbols  موجود در فایل را دید( پیش فرض فقط Symbols  نوشته شده توسط کاربر به نمایش در می آیند و Symbols های حالت دیباگ و اضافه شده توسط کامپایلر خودکار حذف می شوند.)چه زمانی از این ابزار استفاده کنیم؟گاهی اوقات در زمان کامپایل اسم توابع تغییر می کند(مثلا کامپیالر c++ گاهی اوقات این کار می کندالبته به تنظیمات بستگی دارد)یا گاهی اوقات دقیقا با متغییر های دیباگ کار داری پس قاعدتا باید اسم متغییر ها بدانیم.(در اینده یک مقاله کوتاه هم درباره نحوه اتصال کتاب خانه های نوشته شده به زبان های مختلف در پایتون یا هر زبان دیگری خواهم نوشت و از این ابزار در آن زمان به وفور استفاده خواهیم کرد)اگر در مورد این ابزار نیاز دارید بیشتر بدانید توصیه می کنم از سویچ -h استفاده کنید و help این ابزار را بخوانید.اگر مایلید توضیحات مفصل تری بدهم (لبته در یک مقاله دیگر) در بخض نظرات برای من بنویسید.</description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Sat, 10 Apr 2021 00:58:42 +0430</pubDate>
            </item>
                    <item>
                <title>کلود نیاز به بکاپ دارد!</title>
                <link>https://virgool.io/@karimiblog/%DA%A9%D9%84%D9%88%D8%AF-%D9%86%DB%8C%D8%A7%D8%B2-%D8%A8%D9%87-%D8%A8%DA%A9%D8%A7%D9%BE-%D8%AF%D8%A7%D8%B1%D8%AF-%DB%8C%D8%A7-%D9%86%D8%AF%D8%A7%D8%B1%D8%AF-v6tkuicvatz4</link>
                <description>اواخر سال 1399 ابرآروان دچار مشکل شد و دیتاسنتر آسیاتک ابرآروان هک شد و دیتاهای این دیتابیس پاک شد.این اتفاق مصادف شد با بحث این که آروان ابر نیست هاست هست چون اگر ابر بود نباید اطلاعاتش حذف می شد یا حتی یک بیت داده از بین می رفت!واقعا نمی دونم کجای گفته شده اگر از ابر استفاده کنید داده های شما 100 درصد تضمین می شود؟!اصلا تمام این ها بزاریم کنار و فرض بر این موضوع بگیریم که ابر آروان واقعا ابر نیست. گوگل و ماکروسافت و یا آمازون قاعدتا باید سرویس دهنده ابری باشند ( اگر این ها هم به عنوان سرویس دهنده ابری قبول ندارید لطفا دلیلتان هم بگوید)لطفا در قوانین استفاده این سرویس دهندگان هر جایی گفته شده این سرویس دهندگان تضمین 100%( نه 99.9 %)  لطفا شماره اون بند قرارداد اینجا داخل کامنتها بنویسد.اما اگر سرویس ابری نیاز به بکاپ ندارد چرا باید شرکت هایی مثل باراکودا و نورتون سرویس بکاپ ابر به ابر ارایه بدهند ان هم از ابر ماکروسافت به ابر خودشان!!!https://www.barracuda.com/products/cloudtocloudbackupبه نظرم همین که شرکت های بزرگی مثل باراکودا چنین سرویس ارایه می دهند لزوم بکاپ حتی در سرویس ابری برای ما نمایان می کنداما از همه این موارد بگذریم بحث این که شما دقیقا چه سرویسی از اروان یا هر provider دیگری تهیه کردید در نحوه برخورد با حوادث و تهیه کردن بکاپ توسط سرویس دهنده بسیار مهم هست.برای مثال شما فضای ذخیره سازی(cloud storage) ابری تهیه می کنید تهیه این محصول به شما تضمین بکاپ نمی دهد مگر این که داخل قرارداد گفته شده باشد مثلا من 3 نسخه بکاپ تهیه می کنم و بکاپ گیری به صورت هفتگی می باشد. همین بند ساده برای سرویس دهنده بسیار هزینه بر هست برای مثال شما فکر کنید یک سرویس 1 ترابایتی تهیه کردید اما سرویس دهنده باید 3+1 ترابایت فضا در اختیار اطلاعات شما قرار بدهد به علاوه اینکه ساختار این سیستمی که بتواند پیوسته از اطلاعات بسیار حجیمی بکاپ تهیه کند خودش یک چالش فنی هست جابه جایی و تهیه بکاپ هایی با حجم یک ترابایت اصلا ساده نیست و قاعدتا این نوع اطلاعات نباید روی یک هارد دیگر روی همان سرور ذخیره شوند( اگر سرور اصلی به هر دلیل مثل اتش سوزی یا اسیب فیزیکی خراب شد داده ها نباید از بین بروند)تمام این حرف ها زدم که به اینجا برسم که تهیه و ساخت این نوع زیر ساخت ها برای همه سرویس دهنده ها هزینه های سنگینی دارد پس دلیل ندارد این نوع سرویس های خاص به صورت پایه در اختیار همه مشتری ها قرار بدهند و برعکس باید این نوع سرویس ها از سرویس دهنده به صورت ویژه خریداری کنید( و این جا همان جایست که باراکودا و... احساس می کنند می توانند سرویس بکاپ ارزان تر و بهتری نسبت به ماکروسافت ارایه دهند در نتیجه می توانند محصولشان در بازار بفروشند)به تصویر زیر نگاه کنیدمواردی که قرمز شدن مواردی هستند که سرویس دهنده برای شما مدیریت می کند و موارد ابی رنگ مواردی هستند که شما باید خودتان مدیریت کنید.به لایه data توجه کنید لایه دیتا لایه ای هست که در IaaS و PaaS مدیریتش با خود شماست و دقیقا این همان جایی هست که شما باید بکاپ بگیرید خلاصه این که اگر شما از اروان ابرک (VPS) تهیه کردید (ساخت ابرک زیر مجموعه IaaS است) دیتا متعلق به شماست و شما خودتان باید ان را مدیریت کنید در نتیجه شما خودتان باید از ان بکاپ تهیه کنید.فقط در محصولات SaaS هست که دیتای شما دست سرویس دهنده هست ولی باز هم سرویس دهنده ملزم به گرفتن بکاپ نیست (بکاپ شرط عقل است اما ممکن سرویس دهنده شما عاقل نباشد یا تحت یک شرایطی بکاپ نگیرد)اما با وجود تمام این موضوعات هیچ یک از این ساختار ها تضمین کنند حفاظت از اطلاعات شما در برابر حملات هکر ها یا حتی اسیب دیدگی فیزیکی اطلاعات نیست.پس اگر از SaaS هم استفاده می کنید بهتر است باز هم از اطلاعات مهم خودتان بکاپ بگیرید.چرا؟!چون ممکن سرویس دهنده تصمیم بگیرد به شما سرویس ندهد یا به خاطر ضعف فنی درست بکاپ تهیه نکرده باشند، مثل OVH سرور هایشان بسوزد و نابود شود و هزاران مشکل دیگر...نکته اخر این که:سرویس دهندگان حداکثر مطابق SLA به شما خسارت می دهند چرا که از شما بر اساس اهمیت داده هایتان هزینه دریافت نمی کنند که در مواقع بروز مشکل بر اساس اهمیت داده هایتان به شما خسارت پرداخت کنند. این میزان قطعا برای شما کافی نخواهد بود پس شرط عقل هست که برای این مواقع نیز امادگی کامل داشته باشید و از اطلاعاتتان بکاپ تهیه کرده باشید.</description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Fri, 02 Apr 2021 16:39:34 +0430</pubDate>
            </item>
                    <item>
                <title>زیر سیستم لینوکس در ویندور WSL</title>
                <link>https://virgool.io/@karimiblog/%D8%B2%DB%8C%D8%B1-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-%D8%AF%D8%B1-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B1-wsl-ypplcigwsbza</link>
                <description>چند روز پیش یک مطلبی در مورد WSL  دیدم و متجه شدم انگار این ویژگی ناب ویندوز ناشناخته هست برای همین فکر کردم بد نباشه این ویژگی جالب ویندوز به صورت کوتاه معرفی کنم برای تازه کار هاواقعیت این هست که لینوکس سیستم عامل بسیار خوبی برای برنامه نویسان و توسعه دهندگان هست و در مقایسه باز ویندوز ابزار ها و امکانات بسیار بهتری دارد و ماکروسافت یک مشکل داشتچگونه می شود ابزار ها و پکیج های لینوکسی را در ویندوز اجرا کرد؟!مهندسان ماکروسافت برای جواب به این سوال یک مکانیزمی طراحی کردند که به ان Windows Subsystem for Linux  یا به اختصار WSL  گفته می شود.با این ابزار شما می توانید تقریبا تمام نرم افزار و پکیج های لینوکسی متناسب با توزیعی که دوست دارید روی ویندوز اجرا کنید.معماری من در این نوشته خیلی نمی خوام به جزییات بپردازم جزییات داخل مستندات ماکروسافت به صورت کامل هست.اما به صورت کلی می خوام بیانش کنم.برای این کار ماکروسافت از مجازی سازی با Hyper-V  استفاده می کند تا کنون دو نسخه WSL  ارایه شده و نسخه دوم تقریبا یک نسخه از توزیع لینوکسی مد نظر شما با تمام جزییات روی سیستم شما اجرا می کند.به این ترتیب می تونید تقریبا از تمام امکانات لینوکس استفاده کنید.نصب  و استفاده حتما از اخرین نسخه ویندوز 10 استفاده کنیدابتدا پاور شل با دسترسی Administrator باز کنید و دستور زیر را در ان تایپ کنیدdism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartقدم بعد با استفاده از دستور زیر مجازی ساز فعال کنید dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartآخرین نسخه WSL از لینک زیر دانلود کنیدWSL2 Linux kernel update package for x64 machinesبا استفاده از دستور زیر ورژن WSL روی نسخه دو قرار بدیدwsl --set-default-version 2به فروشگاه ماکروسافت برید و توزیع لینوکس مد نظر خود را دانلود کنیدhttps://aka.ms/wslstoreبعد احتمالا یک مدت زمان زیادی که دانلود فایل طی شد می توانید ازWSL خود استفاده کنیدچرا VM نه؟!احتمالا خیلی ها این سوال بپرسند مجازی سازی هزینه زیادی از نظر مصرف رم و پردازنده دارد و شما با WSL هزینه بسیار کمتری پرداخت می کنید و تقریبا به تمام امکانات مورد نیازتان دسترسی خواهید داشت. به همین سادگی</description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Thu, 28 Jan 2021 16:03:23 +0330</pubDate>
            </item>
                    <item>
                <title>مهندسی کامپیوتر- مقایسه ابزار ها GO,Rust,Java</title>
                <link>https://virgool.io/CodeLovers/%D9%85%D9%87%D9%86%D8%AF%D8%B3%DB%8C-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-%D9%85%D9%82%D8%A7%DB%8C%D8%B3%D9%87-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1-%D9%87%D8%A7-gorustjava-znromntgq0od</link>
                <description>یکی از مضوعاتی که همیشه روی آن تاکید دارم این هست که مهندس کامپیوتر  با برنامه نویس فرق می کنددر این جا قصد دارم یک مثال عینی از این موضوع با  شما دوستان مرور کنمقبل از خواندن این مطلب بد نیست یکبار این مطلب را هم بخوانید https://coderlife.ir/%D9%85%D9%87%D9%86%D8%AF%D8%B3-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D9%81%D8%B1%D9%82-%D8%AF%D8%A7%D8%B1%D8%AF-wbdzimxgkn12 اما موضوع چیست؟چندی پیش من برای موضوعی مجبور شدم یک نرم افزاری از ابتدا طراحی کنم.ما دو نیاز اصلی داشتیمتبادل اطلاعات بر روی سوکتپشتیبانی از موبایل و ویندوززبان های برنامه نویسی ابزار کار یک مهندس کامپیوتر هستند مثل خیلی از ابزارهای دیگر یک مهندس خوب باید ابزار خوبی هم برای کارش انتخاب کندبعد از بحث و توافق سر نیازمندی ها و ساختار کلی سیستم ابتدا نیاز بود  نیازمندی اول حل کنیم و به توافقی سر نحوه اجرای سوکت برسیم برای این کار  من زبان برنامه نویسی پایتون انتخاب کردم چرا؟مجموعه ای بی نظیر از کتابخانه ها را داردبه دلیل بزرگی جامعه اش احتمالا یکی سوالات من را جواب داده استدرگیر پیچیدگی های زبان برنامه نویسی نخواهم شدبا استفاده از پایتون یک نرم افزار سرور ساده مشابه نیازمندی مان داخل  پروژه ساختم همراه با یک کلاینت مشابه نیازمدی مان. بعد شروع به تبادل  اطلاعات کردم تا با چالش های Socket programming  آشنا بشم بعد از این که  به این نتیجه رسیدم که هیچ یک از نیازمندی ها بی پاسخ نمانده است. حالا  نیاز است به بحث پیاده سازی اصلی برسیم برای این که چهار ابزار داشتیمJavaGolang++CRustابتدای کار ++C  به دلایل زیر کنار گذاشتیمبا دیدن چند بچمارک به این نتیجه رسیده بودیم که Rust  ابزار بهتری هستدر مقایسه با Rust  برنامه نویسی ست تری داردعلاقه مند به یادگیری Rust بودیمپس فقط سه ابزار ماندRust شبیه ++C و سازه دست موزیلا، با هدف پروفورمنس و فرار از باگ هایی مثل Null Pointer و یک زبان شی گراJava/Kotlin  که احتمالا نیازی به معرفی ندارد ( کاتلین در عملکرد با جاوا تفاوتی ندارد)Golang که هدفش سادگی، پرتابل بودن است اما شی گرا نیست ( البته برای ما هم مهم نیست)به همین دلیل دنبال مقایسه مختلفی گشتم و از قضا به یکباره این مقاله دیدم که دقیقا همین سه تا ابزار با همه مقایسه کرده بود!! https://medium.com/@dexterdarwich/comparison-between-java-go-and-rust-fdb21bd5fb7c خلاصه این مقاله در یک پست دیگر می نویسم و قاعدتا اگر براتون جزییات مهم هست باید به خود مقاله رجوع کنید</description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Mon, 18 Jan 2021 00:40:44 +0330</pubDate>
            </item>
                    <item>
                <title>امنیت در محصولات ماکروسافت یک شوخی مسخره!</title>
                <link>https://virgool.io/@karimiblog/%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%AF%D8%B1-%D9%85%D8%AD%D8%B5%D9%88%D9%84%D8%A7%D8%AA-%D9%85%D8%A7%DA%A9%D8%B1%D9%88%D8%B3%D8%A7%D9%81%D8%AA-%DB%8C%DA%A9-%D8%B4%D9%88%D8%AE%DB%8C-%D9%85%D8%B3%D8%AE%D8%B1%D9%87-my1ungzpuy8k</link>
                <description>به دلایلی مدتی هست به وارد فضای موضوعات امنیت سایبری شدم و اولین چیزی که به شدت نظر من جلب کرده امنیت پایین محصولات ماکروسافت هست به حدی که می شه حدس زد این موارد اسیب پذیری نیستند و چه بسا در پشتی(backdoor)باشند !دو مثال در این باره می خوام بیان کنم1- چندی پیش به یک سری از زیر ساخت های ایران حمله شد این حمله توسط یک باج افزار صورت گرفته بود ( چگونگی ورود این باج افزار به داخل شبکه خودش بحث دیگری هست) این باج افزار با آسیب پذیری به نام ZeroLogon توانسته بود دسترسی Administrator  دریافت کند و بدین وسیله در تمام شبکه هدف خودش را پخش کند و بعد فایل های مشخص شده را رمز نگاری کرده و در خواست باج کند.2- اسیب پذیری CVE-2020-0688  است که روی نرم افزار  Exchange یافت شده. با استفاده از این اسیب پذیری مهاجم می تواند هر فایلی را با دسترسی administrator در سرور ایجاد کند و عملا دسترسی کاملی به مکاتبات و چه بسا شبکه هدف داشته باشد!مثال دوم از نظر من یک درب پشتی به تمام معناست!اما بدون شک نمی توان وابستگی سازمان ها را یک شب از محصولات ماکروسافت قطع کرد پس راه حل چیست؟استفاده از محصولات اوپن سورس به عنوان محافظ!یک مثال می زنم تا بهتر متوجه بشوید:فرض کنید سازمانی قصد دادن دور کاری به کارمندانش را دارد. بهترین راه حل استفاده از openvpn یا wireguard هست با استفاده از این دو نرم افزار می توانید یک شبکه ایمن درست کنید اما آیا همین ار کافیست!؟قطعا خیر باید محدودیتی هایی ایجاد کنید مثلا هر کاربر با استفاده ار vpn  فقط بتواند به کامپیوتر خود در شرکت وصل شود ( یعنی فقط یک ای پی) اما باز هم کافیست!؟ قطعا خیر باید باز هم کاربر را محدود کنید که بتواند فقط از یک نرم افزار خاص برای اتصال به کامپیوتر خود استفاده کند(فقط یک پورت خاص از ای پی متعلق به کامپیوتر کاربر در سازمان). مثلا برای ویندوز فقط RDP استفاده کند به این صورت اگر سیستم کارمند شما در منزل الوده هم باشد احتمال بروز مشکل برای سازمان شما حداقل خواهد بود ( قطعا صفر نخواهد شد)اما یک نکته ریز ولی مهم خیلی از مشکلات سازمان ها به دلیل این است که کاربران نیاز دارند به هر دلیلی به یک وب سایتی متصل شوند که یا فیلتر هست یا تحریم کننده ما به همین دلیل از هر پروکسی یا vpn  برای رسیدن به این هدف استفاده می کنند و صد البته VPN  مورد استفاده هم بهره های خودش از سازمان و سیستم کاربر خواهد برد، بهتر است یک vpn  ایمن خود سازمان تهیه کند و در اختیاز ادمین شبکه قرار دهد برای سهولت دسترسی به این نوع محتوا  </description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Thu, 10 Dec 2020 21:36:28 +0330</pubDate>
            </item>
                    <item>
                <title>یک دیباگر جالب در پایتون</title>
                <link>https://virgool.io/coderlife/%DB%8C%DA%A9-%D8%AF%DB%8C%D8%A8%D8%A7%DA%AF%D8%B1-%D8%AC%D8%A7%D9%84%D8%A8-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-ahcreb1qqnrh</link>
                <description>یکی از ویژگی های مهم یک زبان برنامه نویسی خوب جامعه استفاده کننده از  آن است. هر چه این جامعه بزرگتر قاعدتا ابزار های بسیار کاربردی و جالب تری  در آن تولید می شود.پایتون هم یک جامعه بسیار بزرگ دارد و یکی از این ابزار های جالب که  جدیدا با آن آشنا شدم PySnooper  که یک کتاب خانه جالب پایتونی برای دیباگ  است و شما از گذاشتن Print در جا های مختلف برنامه بی نیاز می کند!کشف بقیه چیز ها با خودتان!https://pypi.org/project/PySnooper/</description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Tue, 21 Jul 2020 01:10:31 +0430</pubDate>
            </item>
                    <item>
                <title>NTLM Protocol چیست</title>
                <link>https://virgool.io/@karimiblog/ntlm-protocol-%DA%86%DB%8C%D8%B3%D8%AA-vo9gr8laamn1</link>
                <description>یک پروتکل احراز هویت Single sign-on (ورود تک مرحله ای) است که توسط ماکروسافت ایجاد شده است. در نوشتار به صورت خلاصه به ساختار و نحوه عملکرد این پروتکل اشاره خواهد شد اما جزییات این پروتکل را می توانید در این ادرس ها مطالعه کنید.https://en.wikipedia.org/wiki/NT_LAN_Managerhttps://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-nlmp/b38c36ed-2804-4868-a9ff-8dd3182128e4احراز هویت تک مرحله ای چیست؟در این روش معمولاً با طرح یک سوال که پاسخی از پیش معین دارد به هویت کاربر پی می بریم.برای مثال پرسش یک نام کاربری( پرسش) و رمز عبور(پاسخ) - که روش معمولی در احراز هویت هاست - یک نمونه از این نوع احراز هویت است.عیب احراز هویت تک مرحله ای چیست؟مهمترین مشکل این روش لو رفتن پرسش و پاسخ است ( لو رفتن نام کاربری و رمز عبور) که مهاجم می تواند از طریق شنود شبکه (sniff) یا ترفند مرد میانی (middle-man) یا جعل هویت (phishing ) اقدام به بدست اوردن این اطلاعات کند. طبیعی است برای مقابله با هر یک از این حمله ها باید روش های مختلفی را در بکار برد.اما مهمترین ایراد این روش ثابت بودن پرسش و پاسخ است.راه حل چیست؟باید در هر بار پرسش سوال کاربر پاسخ ها متفاوتی را بدهد و هر پاسخ فقط یکبار قابل استفاده باید ( این روش را با ورود دو مرحله اشتباه نگیریددر این روش کاربر به ابزار دیگه برای دریافت پاسخ پویا دسترسی ندارد)راه حل ماکروسافت چیست؟پروتکل NTLM راه کار ماکروسافت برای این مشکل است.نحوه عملکرد پروتکل چگونه است؟در این روش سرور پیامی ( که به ان چالش challenge می گویم ) برای کاربر ارسال می کند.کاربر چالش را با پاسخ خودش حل می کند.( در این جا همین رمز عبور است) پاسخ به سرور ارسال می شود.سرور خودش صحت پاسخ را بررسی می کند یا پاسخ و چالش را به یک سرور کنترلی (domain control) ارسال می کند.سرور کنترلی در صورت احراز درست بودن پاسخ با بله خیر به سرور پاسخ می دهد سرور اجازه (یا منع) دسترسی به منابع را به کاربر می دهد.به این نمودار توجه کنید:NTLM2 Session
  Client&lt;-Server:  SC
  Client-&gt;Server:  H(P,H&#039;(SC,CC)), CC
  Server-&gt;DomCntl: H(P,H&#039;(SC,CC)), H&#039;(SC,CC)
  Server&lt;-DomCntl: yes or noآسیب پذیری این پروتکل چیست؟برای توضیحات کامل درباره این موضوع به لینک زیر مراجعه کنید.https://en.wikipedia.org/wiki/Pass_the_hash</description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Mon, 03 Feb 2020 08:53:24 +0330</pubDate>
            </item>
                    <item>
                <title>چند پکیج خوب لینوکسی</title>
                <link>https://virgool.io/@karimiblog/%DA%86%D9%86%D8%AF-%D9%BE%DA%A9%DB%8C%D8%AC-%D8%AE%D9%88%D8%A8-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3%DB%8C-micbtnc7f7dp</link>
                <description>چند وقتی هست که مجبور شدم با لینوکس کار کنم و وب سرورهایم را خودم کانفیگ کنم برای همین مجبور شدم دنبال پکیج های مفیدی بگردم که به نظرم باید روی هر سرور لینوکسی ران بشودnload نمایش نموداری ترافیکی ورودی و خروجی از سرورvnstat گزارش استفاده از سرور به تفکیک روز، ماه، سال، هفته، ساعت ( البته یه کانفیگ کوچک هم نیاز داره و باید داخل فایل تنظیماتش نام اینترفیس پیش فرضتان را وارد کنید سخت نیست نگران نباشید )python-minimal python3 python python-pip python3-pip خانواده پایتون حتما اپدیت کنید خیلی مفید ( البته پایپ را باید جداگانه بروز کند )openvpn از اسمش معلوم است یه ایرانی باید همیشه ابزار اتصال به وی پی انش آماده باشدiftop به شما می گوید هر اتصال (IP/PORT) در حال دانلود با چه سرعتی هست و یک سری اطلاعات دیگهapache2 لازم به توضیحات خاصی نیست یک وب سرویس معروف استspeedtest-cli برای تست سرعت روی لینکوس واقعا مفید، همه جای دینا سرور دارد و می توانید بفهمید واقعا سرعتتان کم شده یا سرعت ارتباط با ایران که کم شده. (sysadmin منظورم درک می کنند)nethogs نشان می دهد کدام پروسس با چه سرعتی در حال تبادل اطلاعات است.من تمام این پکیج ها با یک دستور نصب می کنم به نظرم بد نیست شما هم این خط داشته باشید ( من از اوبونتو استفاده می کنم خودتان این دستور را با پکیج منیجر محبوبتان سازگار کنید)sudo apt-get install git curl htop nload vnstat python-minimal python3 python python-pip python3-pip openvpn iftop apache2 speedtest-cli build-essential libssl-dev zlib1g-dev  nethogshttps://karimiblog.ir/blog/</description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Wed, 23 Oct 2019 13:51:49 +0330</pubDate>
            </item>
                    <item>
                <title>نصب داکر بر روی سرور های  ایرانی لینکوس و ویندوز بدون  vpn</title>
                <link>https://virgool.io/@karimiblog/%D9%86%D8%B5%D8%A8-%D8%AF%D8%A7%DA%A9%D8%B1-%D8%A8%D8%B1-%D8%B1%D9%88%DB%8C-%D8%B3%D8%B1%D9%88%D8%B1-%D9%87%D8%A7%DB%8C-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-%D9%84%DB%8C%D9%86%DA%A9%D9%88%D8%B3-%D9%88-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-%D8%A8%D8%AF%D9%88%D9%86-vpn-hqtjvurhy8tq</link>
                <description>داکر هم یکی دیگر از شرکت هایی است که ایرانیان را تحریم کرده و اجازه دسترسی مستقیم به ای پی های ایرانی را نمی دهد.معمولا این مشکل را  با وی پی ان به سادگی می توان حل کرد اما ایجاد ارتباط وی پی ان روی سرور به سادگی کامپیوتر نیست و کمی پیچیدگی بیشتری دارد. ( به دلیل ایجاد روتینگ جدید روی سرور)می خواهم به شما راه حلی بسیار ساده تر از ایجاد ارتباط وی پی ان نشان دهم.راه حل استفاده از dns های شکن است، شما با استفاده از این سرویس و سرور های پروکسی اش می توانید تحریم ها دور بزنید توجه کنید فقط تحریم ها نه بیشتر پس سایت هایی که فیلتر شدن، این سرویس باز نمی کند.اما مراحل کار به چه صورت است:ابتدا از لینوکس شروع می کنمابتدا باید به فایل مربوط به اینترفیس ها  بروید ادرس اینترفیس ها در ابونتو به صورت زیر است:  /etc/network/interfacesداخل این فایل می توانید اینترفیس های مربوط به ماشین را پیدا کنید  کافیه که بر روی اینترفیس اصلی تان dns ست کنید فایل اینترفیس باید چیزی شبیه متن زیر باشه:# The loopback network interface  
auto lo  
iface lo inet loopback  


# The primary network interface  
auto eth0 
iface eth0 inet static  
address 192.168.X.X
netmask 255.255.255.0
gateway 192.168.X.X
dns-nameservers X.X.X.Xکافیه که در خط آخر که نوشته شده dns-nameservers ای پی سرور های شکن قرار بدید:dns-nameservers 185.51.200.2 178.22.122.100حالا اینترفیس یکبار ریست کنید تا کار تمام شود.sudo ifdown eth0 &amp;&amp; sudo ifup eth0فقط به اسم های اینترفیس ها توجه کنید اسم اینترفیس من eth0 است شما باید اسمش را احتمالا عوض کنید.سرور های ویندوزیزیادی ساده است.باید به بخش  Network and Sharing Center  بریدسمت چپ پنجره باز شده بر روی  Change adapter settings  کلیک کنیداینترفیستان را انتخاب کنیدبه  Properties   اینترفیس برویدبر روی پروتکل ای پی تان کلیک کنید و dns های سرور به ادرس های زیر تغییر بدید.178.22.122.100 و 185.51.200.2</description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Mon, 26 Aug 2019 12:22:15 +0430</pubDate>
            </item>
                    <item>
                <title>visual studio code و اتصال به SSH</title>
                <link>https://virgool.io/coderlife/visual-studio-code-%D9%88-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A8%D9%87-ssh-n4u6jvka28mk</link>
                <description>وقتی که به سرور متصل می شوم یکی از مواردی که من را اذیت می کند نبود ویرایشگرهایی است که به آنها عادت کردم! مثل ویژوال استادیوکد.نمی خوام دوست داران nano و vim آزده خاطر کنم اما این ویرایشگرها با تمام قابلیت هایشان در برابر ویژوال استادیوکد حرفی برای گفتن ندارند!حالا فکر کنید می خواهیم از این ویرایشگر قدرتمند در ارتباطات SSH استفاده کنیم!! جذابه مگه نه؟!اولین کاری که باید بکنید نصب افزونه SSH FS بعد از نصب کافیست از کلید های ترکیبی ctrl + shift +p بگیرید تا کنسول خط فرمان باز شود.در کنسول خط فرمان بنویسید(چند حرف اول را بنویسید بقیه خطوط را خود به خود به شما نمایش می دهد):SSH FS: Create a SSH FS configurationدکمه add بزنید تا به بخش تنظیمات بروید.بعد با صفحه زیر روبه رومی شوید حالا کافیست خیلی راحت تنظیمات مربوط به اتصال SSH را در این صفحه انجام بدهیدیکی از ویژگی های خوبی که منم دوست داشتم قابلیت استفاده از پراکسی در این افزونه بود ( نمی دانم عوامل فیلترینگ در حال انجام چه کاری هستند که اکثر پروتکل های امنیتی دچار مشکل شده اند یا موقتی دچار مشکل می شوند به همین دلیل با استفاده از پراکسی می توانید ارتباط راحت تر و بدون دردسرتری داشته باشید)بعد از پرکردن فرم بالا با دستور زیر می توانید به سرورتان وصل بشوید. بعد از اتصال به سرور در سمت چپ میتوانید لیست فایل های موجود در سرور خود را ببنید و آن ها با ویژوال استادیوکد باز کنید و ویرایش کنید. نکته پایانیدر اتصال به سرور همیشه ما نیاز به ویرایش فایل نداریم گاهی وقت ها نیاز به اجرای یک سری دستورات هم داریم.در ویژوال استادیو کد با زدن دکمه های ترکیبی ctrl+&#x60; به ترمینال دسترسی پیدا کنید و با دستور زیر به سرور خودتان متصل شوید:ssh username@hsot [port default 21]example: root@1.1.1.1 https://karimiblog.ir/blog/529/1398/02/04/visual-studio-code-و-اتصال-به-ssh/ </description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Wed, 24 Apr 2019 17:13:25 +0430</pubDate>
            </item>
                    <item>
                <title>تغییر رشته بدم برنامه نویس بشم؟!</title>
                <link>https://virgool.io/enline/%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%B1%D8%B4%D8%AA%D9%87-%D8%A8%D8%AF%D9%85-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%A8%D8%B4%D9%85-430-dzuvbbjuezie</link>
                <description>امروز صبح داشتم ویرگول چک می کردم که به یک مطلبی بر خوردم:شاید پایتون منو نجات داد!در این پست نظر دوستان را خوندم و متاسفانه برخی از دوستان طرز نگاه نادرستی به برنامه نویسی ( و مهندسی کامپیوتر ) دارند.این طور نیست که هر کسی آمده، برنامه نویسی یاد گرفته، پولدار شده یا جاده موفقیت براش سنگ فرش شده گفتن بفرما این جاده موفقیت برو جلو!هر رشته و فنی، نیازمندی ها و مهارت های خودش داره برای برنامه نویس شدن و داشتن یک حداقل دستمزد شما نیاز دارید حداقل یک کتاب بخرید و بخوانید و کمی تمرین کنیداما برای مهندس کامپیوتر شدن (و داشتن حقوقی مناسب ) داستان خیلی متفاوته! به این سادگی نیست.تشخیص ابن دوتا از هم خیلی سخت نیست یک مصاحبه گر خوب به سادگی می فهمد شما در کدام سطح هستیداما سراب این دوتا استارت آپ! همه فکر می کنن برن برنامه نویسی یادبگیرند بعدش اسنپ یا زود فود دوم بزنند و حالا باید پول پارو کنند!یک شب پولدار شدن از برامه نویسی سرابی بیش نیست! چون حتی یک مهندس کامپیوتر هم نمی تواند اسنپ یا زود فود دوم بسازد چه برسد به یک برنامه نویس!مهندس کامپیوتر فقط می تواند بخش فنی این سیستم ها بسازد در حالی که یک سیستم فقط بخش فنی نیست و خیلی چیز های دیگر هم دخیل است. بعضی ها فقط آگهی های استخدام می بینند و فکر می کنند کار در رشته کامپیوتر و برنامه نویسی زیاد هست در حالی که برعکس است، اصلا این طور نیست چون تعداد کسانی که از رشته های غیر تخصصی وارد دنیای کامپیوتر شدن زیاد شدن و برنامه نویسی خوب یاد نگرفتن و اصول مهندسی نرم افزار بلد نیستن مدت زمان کمی می توانند در یک شرکت کار کنند و مرتب جایگاه خود را در یک شرکت ترک می کنند و شرکت برای یک جایگاه تکراری پشت سر هم اگهی می زند!!والبته بسیاری از این شرکت ها، شرکت هایی تازه تاسیس و کوچک هستند خواندن این مطلب که در آن یک آگهی استخدام را بررسی کردم خالی از لطف نیست:مفت کار نکنید!! بررسی یک آگهی استخدامی – بخش اولدر کل توصیه می کنم قبل از دانشگاه رشته و علاقه تون یکی کنید!اگر وارد رشته ای شدید سعی کنید در همان رشته به اوج برسید مطمئن باشید مهندسین کامپیوتر آن قدری فضول هستند که برای رشته شما نرم افزار های خوبی تولید کرده باشند که نیاز شما را پاسخگو باشد( وحتی حس کنجکاویتان را ارضا کند) از آن نرم افزار ها به حد کمال استفاده کنید.اگر باز هم خواستید رشته خودتان عوض کنید کم کم شروع کنید به مطالعه یک زبان برنامه نویسی ( برای کسایی که رشته های دیگه می خوان برنامه نویسی یاد بگیرند) روبی ، پایتون یا PHP گزینه های خوبی هستند بقیه زبان ها کمی سخت گیری بیشتر نسبت به این زبان ها دارند که یادگیری و کار با آنها سخت می شود و مطمئن باشید خیلی ها در این راه نظرشان را عوض می کنند.اگر هم خواستید بدانید تفاوت یک مهندس کامپیوتر با یک برنامه نویس چیست این مطلب را بخوانید:مهندس کامپیوتر با برنامه نویس فرق دارد!!</description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Tue, 02 Apr 2019 11:13:58 +0430</pubDate>
            </item>
                    <item>
                <title>کدام زبان های برنامه نویسی برق کمتری مصرفی می کنند؟</title>
                <link>https://virgool.io/cheyab-blog/%DA%A9%D8%AF%D8%A7%D9%85-%D8%B2%D8%A8%D8%A7%D9%86-%D9%87%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%A8%D8%B1%D9%82-%DA%A9%D9%85%D8%AA%D8%B1%DB%8C-%D9%85%D8%B5%D8%B1%D9%81%DB%8C-%D9%85%DB%8C-%DA%A9%D9%86%D9%86%D8%AF-s2lbturqdhp9</link>
                <description> یکی از بحث های برنامه نویس های تازه کار این است که کدام زبان برنامه نویسی بهتر است !؟در کل به نظر من این سوال بسیار سوال مسخره ای است. زبان های برنامه نویسی صرفا ابزار هستن و یک برنامه نویس خوب باید بتواند با ابزار های مختلف کار کند اما بر حب نیاز یا شرایط وی ممکن است به یک ابزار تسلط بیشتری داشته باشد. در این حالت می گوییم وی برنامه نویس مثلا جاواست! اما به چه معیارهایی در انتخاب ابزار ( زبان برنامه نویسی )مناسب توجه شود؟سرعت اجرا (زمان اجرا برنامه )فضای مصرفیزمان مورد نیاز برای برنامه نویسیابزار های موجود برای کمک به برنامه نویسجامعه فعال آن زبانکتابخانه های موجود برای آن زبان برنامه نویسیو چندین معیار دیگراما در این تحقیق یک معیار دیگر هم معرفی شده : برق مصرفیمعمولا سه مورد اول لیست بالا جزوه مهترین معیار ها هستنداما برگردیم به بحث خودمان:اگر بخواهیم حرف آخر این مقاله اول بزنیمیک زبان سریع تر همیشه در مصرف انرژی بهتر نیستبه جدول زیر نگاه کنید:حرف c به معنی کامپایلری، حرف v یعنی ماشین مجازی و حرف i یعنی مفسری که منظور نحوه اجرای هر یک زبان های فوق است.مقایسه ستون های جدول فوق می توانیم متوجه بشویم که زبان های کامپایلری به صورت متوسط حاظه کمتری مصرف می کنند، سرعت اجرای بیشتری دارند و معمولا برق کمتری مصرف می کنند اما جایگاه پنجم مصرف بهینه برق متعلق به جاواست یک زبان با اجرای بر روی ماشین مجازیست.درسته زبان سی در مصرف برق و سرعت اجرا خوب بوده اما در مصرف حافظه پاسکال بهتر عمل کردهزبان های مفسری معمولا بدتر از زبان های ماشین مجازی و کامپایلری بودن اما در زبان های مفسری PHP بهترین مصرف حافظه داشته و بعد از ان پایتون بهترین مصرف حافظه داشته.اما در مصرف انرژی و زمان اجرا پایتون جایگاه مناسبی ندارد و در پایین جدول حضور داردمصرف حافظه زبان ها چگونه است؟بخش جالب دیگر این تحقیق این است که می گوید به صورت متوسط یک زبان کامپایلری برای اجرای این تست به ۱۲۵ MB حافظه، زبان های نیازمند ماشین مجازی ۲۸۵MB حافظه و زبان های مفسری ۴۲۶MB حافظه نیاز دارندزبان های مفسری بیش از ۳.۵ برابر حافظه بیشتر نیاز دارند!متن کامل مقاله: https://karimiblog.ir/blog/?p=411 </description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Mon, 01 Apr 2019 20:48:50 +0430</pubDate>
            </item>
                    <item>
                <title>Learning how to learn</title>
                <link>https://virgool.io/@karimiblog/learning-how-to-learn-j6umyrqcarux</link>
                <description>یاد بگرید چگونه یاد بگیرید! ( توصیه می کنم حتما بخوانید)۱.وقتی یه کاری که دوس نداریم انجامش بدیم یا به هر دلیلی سخته برامون، یه حس ناراحتی‌ عصبی‌ای (مثل درد فیزیکی) بهمون دست میده. اما محققان فهمیدن با شروع کار اون حس کم‌کم از بین میره. پس برای غلبه بر به تعویق انداختن کارها، فقط کافیه از اون مرحله اولیه دردناک عبور کنیم.۲. خواب برای یادگیری خیلی مهمه. خوابیدن کمک میکنه مسائلی که باهاشون به مشکل خوردیم رو حل کنیم یا چیزهای جدید رو راحتتر یاد بگیریم. وقتی میخوابیم سلول‌های مغز جمع میشن و اجازه میدن مواد مضری که در طول بیداری انباشته شده پاکسازی بشن.۳. مغز دو حالت داره: متمرکز و آزاد (یا همون دیفیوزد). در حالت متمرکز مغز از ساختارهایی که قبلا یاد گرفته برای حل کرده مسائل نسبتا آشنا استفاده میکنه. تو این حالت میتونید یه روش رو قدم به قدم دنبال کنید. در حالت آزاد مغز، مثل وقتی که وسط کار حواستون پرت میشه شروع به رویاپردازی میکنین، مغز دیگه روی یک موضوع مشخص تمرکز نداره. این حالت وقتیه که مغز شما فرصت پیدا میکنه چیزای جدیدی که یاد گرفته رو پروسس کنه. تو این حالته که ارتباطات جدید نورونی ایجاد میشه، ایده‌های جدید به ذهنمون میرسه و مسائلی که توشون گیر کرده بودیم رو حل میکنیم! پس اگه تو پیدا کردن راه حل یه مشکل گیر کردین شاید راهش این باشه که ذهنتون رو آزاد بزارین. مثلا برین ورزش کنین یا دوش بگیرین یا ظرف بشورین!۴. برای اینکه چیزی رو به خاطر بسپرین، به جای تکرار مداوم اون در یک زمان کوتاه، اون رو در بازه‌های زمانی بلندتری مثلا چند روز یا چند هفته تکرار کنید. وقتی چیزی رو یاد میگیرین ارتباطات نورونی ایجاد شده ضعیف هستن و بعد مدتی اگر از اون ارتباط استفاده نشه، از بین میره تمرین و تکرار یادگیری رو ماندگار میکنن. همچنین خوابیدن بین جلسات یادگیری، توانایی یادگیری رو بالا میبره.۵. اثر آینستلو: وقتی یه شیوه یا مسیر رو یاد گرفتیم و به استفاده کردن ازش عادت کردیم، این عادت مانع خلاقیت ما و پیدا کردن راه‌های جدید میشه. مثلا فرض کنید همیشه تو زندگی از پله استفاده کرده باشین و هیچوقت آسانسور ندیده باشین، میرسین به یه ساختمونی و عجله دارین و باید برین طبقه بیستم. شما پله‌ها رو میبینین و با تمام توان شروع به بالا رفتن میکنید ولی شاید اگر صبر میکردین و یکم به اطرافتون توجه میکردین متوجه پدیده آسانسور میشدین که راحتتر و سریعتر شما رو به مقصد میرسوند. راه اجتناب از افتادن به دام آینستلو، باز نگه داشتن فکر روی ایده‌های جدید، مطالعه و تجربه کردنه.۶. دو نوع شیوه تمرین کردن برای یادگیری هست. یکیش متوالی (Blocking) که شما روی یک موضوع یا یه فصل از یه کتاب تمرکز میکنید و تمام جزئیات و مسائل اون رو یاد میگیرین و بعد میرین سراغ موضوع بعدی. شیوه دوم تمرین متناوب (Interleaving) هست که شما یادگیری موضوعات مختلف رو با هم ترکیب می کنید. مثلا بعد خوندن یه بخش از فصل اول و حل چند تا مسئله میرید سراغ فصل دوم که موضوع متفاوتی داره. این شیوه تمرین با وجود اینکه دشوارتر به نظر میرسه، اما موثرتره و باعث یادگیری عمیق‌تر میشه. این شیوه برای موضوعاتی مثل ریاضیات و ورزش کارآمدتر هست.۷. دو تا کار که کمک میکنن نورون‌هاتون رشد کنن و از بین نرن: فعالیت بدنی و تجربیات جدید. ورزش کردن بهتر از هر دارویی به شما کمک میکنه بهتر یاد بگیرید. نورون‌های جدید پیوسته تو هیپوکمپس در حالت ایجاد هستند ولی اگر به صورت درست ازشون استفاده نشه، ازی بین میرن. ورزش جلوی مرگ این نورون‌ها رو میگیره. همچنین قرار گرفتن در معرض تجربیات جدید، ایده‌ها و محیط‌های جدید به رشد و بقای نورون‌های مغز کمک میکنه. حتی استفاده کردن از یه مسیر جدید برای رسیدن به محل کارتون میتونه یه تجربه جدید برای مغزتون باشه.۸. یه عنصر اساسی تو یادگیری تِسته. به جای چند بار خوندن یه موضوع یا خلاصه‌نویسی یا بازنویسی به زبان خودتون با رسم شکل و غیره، بهتره یه بار از خودتون تست بگیرین.منبع این نوشته این رشته توییت است: https://twitter.com/EbiEbrahimian/status/1109547875313336331  https://karimiblog.ir/blog/?p=366 </description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Wed, 27 Mar 2019 10:43:35 +0430</pubDate>
            </item>
                    <item>
                <title>آمار بازدید مطالب من در سال ۹۷</title>
                <link>https://virgool.io/@karimiblog/%D8%A2%D9%85%D8%A7%D8%B1-%D8%A8%D8%A7%D8%B2%D8%AF%DB%8C%D8%AF-%D9%85%D8%B7%D8%A7%D9%84%D8%A8-%D9%85%D9%86-%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84-%DB%B9%DB%B7-jijp9afbcxnm</link>
                <description>من در سال گذشته، در مجموع ۱۵ مقاله در ویرگول منتشر کردم. در طول این سال مقالات من ۱۵۷ مرتبه لایک شدند و ۷۸ نظر نیز بر روی آن‌ها ارسال شد. با مطالعه این مقالات، ۳۵ نفر تصمیم گرفتند تا من را در ویرگول دنبال کنند تا از مقالات بعدی من باخبر شوند.مخاطبیندر طول این سال، مقالات من توسط ۵,۰۹۷ نفر در ویرگول مطالعه شده است. مدت زمانی که این افراد در حال مطالعه‌ی آن‌ها بوده‌اند برابر با ۲۲۳,۳۵۹ ثانیه است. اگر فرض کنیم در حال حاضر جمعیت ایران ۸۰ میلیون نفر است، این یعنی من توانسته‌ام سرانه مطالعه کشورم ایران را ۰/۰۰۲۷۹۲ ثانیه افزایش دهم. شاید بتوانیم این عدد را به «اثر پروانه‌ای» تشبیه کنیم؛ چرا که هر کدام از نویسندگان در ویرگول توانسته‌ایم عددی کوچک را به سرانه مطالعه کشور اضافه کنیم اما مجموعِ تک تکِ این اعداد، یک عدد بزرگ شده است. من در کنار سایر کاربرانِ ویرگول توانستیم در سال ۹۷، سرانه مطالعه ایران را ۴/۱۲۲۳۴۳ ثانیه افزایش دهیم.می‌توانیم برای سال ۹۸، اتفاقات بزرگتری را رقم بزنیم.ویدیوی آمار مخاطبین من را ببینید: https://cdn.virgool.io/annual-report-97/cbrmth3wawqy-f27y.mp4 </description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Tue, 26 Mar 2019 23:24:44 +0430</pubDate>
            </item>
                    <item>
                <title>مقایسه هزینه زندگی در دیگر کشور ها</title>
                <link>https://virgool.io/@karimiblog/%D9%85%D9%82%D8%A7%DB%8C%D8%B3%D9%87-%D9%87%D8%B2%DB%8C%D9%86%D9%87-%D8%B2%D9%86%D8%AF%DA%AF%DB%8C-%D8%AF%D8%B1-%D8%AF%DB%8C%DA%AF%D8%B1-%DA%A9%D8%B4%D9%88%D8%B1-%D9%87%D8%A7-yunwv8aadnx6</link>
                <description> نمی دونم تا حالا شما هم به سرتان زده از این کشور برید یا نه؟ من شخصا اگر بشه وبتوانم حتما برای امتحان هم شده می رم که حداقل یک تجربه جدید و متفاوت داشته باشم. اما برای همین موضوع داشتم داخل اینترنت سرچمی کردم به یک سایت برخوردم سایتی که هزینه زندگی در شهر ها و کشور های مختلف با هم مقایسه می کنه!  ادرس سایت https://www.numbeo.com/cost-of-livingاولین چیزی که نظر من جلب کرد هزینه زندگی در ایران بود!با این وضعیت گرانی و تورم هزینه زندگی در ایران در مقایسه با کشور های اروپایی پایین تر است.اما نکته ای که هست اینه که شاید این اطلاعات با شرایط جدید بروز نشده باشند و البته برخی از هزینه هایمان مثل کرایه تاکسی از دیگر کشور ها ارزان تر است مثلا قیمت گوشت ۵ دلاره اما واقعیت قیمت گوشت ۱۰ دلاره در ایراناگر مایل بودید می توانید مطالب بیشتری را در وبلاگ من بخوانید و یا بدون نیاز به ثبت نام در وبلاگم نظر بدهید: http://karimiblog.ir/blog/ </description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Sat, 23 Mar 2019 13:31:01 +0430</pubDate>
            </item>
                    <item>
                <title>کار با گیت - معرفی سایت</title>
                <link>https://virgool.io/@karimiblog/%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%DA%AF%DB%8C%D8%AA-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D8%B3%D8%A7%DB%8C%D8%AA-va7bl3xhqqfy</link>
                <description> اگر شما هم مثل من بعضی اوقات دستورات گیت یادتون میره میتوانید از این سایت عالی استفاده کنیددر این سایت می توانید لیستی از دستورات گیت پیدا کنید و توضیحات و نحوه استفاده از این دستوران به زبانی ساده و گویا بیان شده علاوه بر این ها هیچ پارامتری در دستورات از قلم ننداخته و توضیحات کاملی در این باره داده شده .در کل به نظرم سایتی که خوب اسم بدانیم به درد  می خوره. https://gitexplorer.com </description>
                <category>یاسر کریمی</category>
                <author>یاسر کریمی</author>
                <pubDate>Sat, 16 Mar 2019 17:50:50 +0330</pubDate>
            </item>
            </channel>
</rss>