<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های جواد رجب زاده</title>
        <link>https://virgool.io/feed/@Ja7ad</link>
        <description>I have over 7 years of experience in software development. A wide range of IT disciplines expert, with a focus on System Analysis, Design, Development, and Implementation of various applications</description>
        <language>fa</language>
        <pubDate>2026-06-25 16:39:00</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1083384/avatar/nANV57.jpeg?height=120&amp;width=120</url>
            <title>جواد رجب زاده</title>
            <link>https://virgool.io/@Ja7ad</link>
        </image>

                    <item>
                <title>کتاب زبان برنامه‌ نویسی Go فارسی</title>
                <link>https://virgool.io/@Ja7ad/%DA%A9%D8%AA%D8%A7%D8%A8-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-go-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-pavwzokhheuu</link>
                <description>کتاب  آنلاین  زبان  گو  فارسیکتاب زبان گو فارسی آموزش زبان گو را به بطور عمیق از مفاهیم پایه تا مفاهیم کاملا پیشرفته و تکنیکی مانند: سینتکس, پارادایم ها, همزمانی (پایه تا پیشرفته) و همچنین ساختار داده و الگوهای طراحی (Design Patterns) و ... می پردازد تا گوفرها درک عمیق و کامل از زبان گو داشته باشند.این کتاب برای کسانی که تازه میخواهند زبان گو را یادبگیرند یا اینکه افراد با تجربه در زبان گو هستند مناسب می باشد و همچنین اگر قصد دارید زبان گو را به عنوان استک جدید شروع کنید این کتاب یه راهنمای کلی برای یادگیری زبان گو خواهد بود.این کتاب بصورت متن باز منتشر شده و شما می توانید به جمع مشارکت کنندگان بپیوندید تا تجارب خود را در این کتاب به اشتراک بذارید.هدف کلی ما از این کتاب افزایش جامعه برنامه نویسان زبان گو می باشد.صفحه اصلی کتاب :https://book.gofarsi.irمخزن کتاب جهت مشارکت :https://github.com/GoFarsi/book</description>
                <category>جواد رجب زاده</category>
                <author>جواد رجب زاده</author>
                <pubDate>Thu, 01 Dec 2022 18:11:23 +0330</pubDate>
            </item>
                    <item>
                <title>چه زمانی باید از Generics در زبان گو استفاده کنیم؟</title>
                <link>https://virgool.io/Rocket/when-use-generics-in-go-ovgqbipmxdfm</link>
                <description>امسال (۲۰۲۲) یکی از مهمترین فیچر هایی که برای زبان گو منتشر شد بحث پشتیبانی از Generics است, که شما می توانید برای Function, Struct, Interface تایپ پارامتر تعریف کنید.اما مهمترین سوالی که برای گوفرها پیش می آید از جنریک چه زمانی باید استفاده کنیم؟یکی از برنامه نویس های زبان گو آقای یان تیلور بطور مختصر گفته:اگر شما بخش هایی از کد خود را دیدید بارها تکرار شده و تنها فرقی که پیش آمده نوع تایپ بوده بدانید شما می توانید برای از بین بردن تکرار و کدهای کپی شده از تایپ پارامتر (جنریک) استفاده کنید.در زیر یک نمونه از استفاده از جنریک برای CRUD مونگو هستش که از جنریک و Type Constraints استفاده شده است:خب دوستان امیدوارم تجربه جدیدی را کسب کرده باشید و همیشه در افزایش سطح دانش خود موفق باشید, اگر سوالی چیزی داشتید می توانید داخل گروه تلگرامی GolangEngineers بپرسید. https://github.com/Ja7ad/Library/blob/main/server/internal/models/repository.go </description>
                <category>جواد رجب زاده</category>
                <author>جواد رجب زاده</author>
                <pubDate>Sat, 27 Aug 2022 21:21:19 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش استفاده از option در متدهای GRPC</title>
                <link>https://virgool.io/@Ja7ad/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-option-%D8%AF%D8%B1-%D9%85%D8%AA%D8%AF%D9%87%D8%A7%DB%8C-grpc-qr7u6nkewhjs</link>
                <description>شاید اکثر ما با ساختار Protocol Buffer و بستر ارتباطی GRPC آشنا باشیم و همواره در پروژه ها با این موارد کار کرده باشیم.اما پروتکل بافر به چندتا متد RPC و مسیج ختم نمی شود و امکانات دیگری وجود دارد تا بتوانید یکسری سربارهای کدنویسی در پروژه کاهش دهید و یکسری سناریوها را با این امکانات موجود پیاده سازی کنید.یکی از این امکانات بحث option ها هستش که شما می توانید برای Method, Message و Message Fields پیاده سازی و استفاده کنید.در این آموزش قصدم دارم به مقوله option برای متدها بپردازم و یک سناریو در خصوص بحث Permission برای متدها توضیح بدم که بتوانید برای متدهاتون یکسری Permission کد تعریف کنید و با توجه به Payload داخل JWT بیاید دسترسی ها را داخل Middleware بررسی کنید.در ابتدا شما باید از فایل های پروتو پروژه googleapis برای ایمپورت در داخل فایل پروتو سرورتان استفاده کنید.سپس پروتو descriptor را داخل فایل پروتو خود ایمپورت کنید.import &amp;quotgoogle/protobuf/descriptor.proto&amp;quot۳. پس از ایمپورت option مربوط به دسترسی ها را تعریف کنید.۴. پس از تعریف option آن را برای متد های rpc خود تعریف کنید و مقدار permission را تنظیم کنید که این متد چه دسترسی هایی می تواند داشته باشد.۵. حال که permission ها را تعریف کردید فایل پروتکل بافر را جنریت کنید به زبان گو.protoc --proto_path=proto --proto_path=proto/include/googleapis --proto_path=proto/include/grpc-gateway --go-grpc_out=proto/protoModel --go_out=proto/protoModel --grpc-gateway_out=logtostderr=true:proto/protoModel --openapiv2_out=logtostderr=true:api/swagger proto/server/*.proto۶. اکنون قبل از هرکاری پکیج protoreflect را به ماژول های پروژه تان اضافه کنید.go get -u github.com/jhump/protoreflect۷. پس از افزودن ماژول یک middleware با نام methodDescriptors تعریف کنید و توجه کنید middleware هاتون از نوع UnaryServerInterceptor تعریف کنید و پارامتر ورودی از نوع map[string]*desc.MethodDescriptor تعریف کنید و به عنوان کلید map آدرس متد RPC را بدهید و در نهایت به context خروجی append کنید.۸. در تابع Initiate GRPC قبل از ایجاد تابع سازنده grpc.NewServer یک متغیر map[string]*desc.MethodDescriptor تعریف می کنیم سپس این متغیر را به middleware methodDescriptors می دهیم و خود middleware را به NewServer پاس می دهیم.۹. پس ایجاد تابع سازنده grpc.NewServer متغیر srv را به تابع LoadServiceDescriptors می دهیم تا بتوانیم به آبجکت descriptor دسترسی داشته باشیم و پس از دسترسی این آبجکت را داخل یک حلقه قرار داده تا بتوانیم لیست متدها را بگیریم و پس از آن لیست متدها را داخل یک حلقه قرار داده و نام متد را به عنوان کلید map[string]*desc.MethodDescriptor می دهیم و مقدار کلید را آبجکت method descriptor را می دهیم.۱۰. اکنون زمانیکه سرویس initiate می شود MethodDescriptor ها داخل Context های خروجی قرار میگیرد که داخل سایر Middleware ها و خود Method پیاده سازی شده از طریق context قابل دسترس است.۱۱. حال قصد داریم به permission هایی که برای متد GetBooks تعریف کردیم دسترسی پیدا کنیم و برای اینکار کافی است داخل jwtMiddleware بیاید مقدار کلید desc را از context بگیرید و آن را به desc.MethodDescriptor* کست کنید, پس از اینکه MethodDescriptor را گرفتید تابع GetMethodOptions را به همراه Extension Fields که داخل پروتو جنریت شده هست به تابع GetExtension بدهید تا به شما یک اینترفیس بدهد و در نهایت باید شما اینترفیس را به ساختار مسیج Permission که تعریف کردید کست کنید تا بتوانید به فیلد permission_codes دسترسی پیدا کنید.خب دوستان به پایان این آموزش رسیدیم امیدوارم تجربه جدیدی را کسب کرده باشید و همیشه در افزایش سطح دانش خود موفق باشید, اگر سوالی چیزی داشتید می توانید داخل گروه تلگرامی GolangEngineers بپرسید.در ضمن نمونه پروژه Library داخل گیتهاب دارم توسعه می دم و سعی میکنم امکانات و سناریوهایی خوبی را در این پروژه تعریف کنم. https://github.com/Ja7ad/Library </description>
                <category>جواد رجب زاده</category>
                <author>جواد رجب زاده</author>
                <pubDate>Sun, 21 Aug 2022 21:47:21 +0430</pubDate>
            </item>
            </channel>
</rss>