✍️Ali KolahdoozanAli Kolahdoozan
برنامه نویس سنیور هیچ برتری خاصی بر بقیه ندارد
فقط فرقش این است حتی وقتی یک فاجعه درست میشه ، میگه اینم ولش کنید خودم یک خاکی توی سرش میکنم
بیخودی هم استرس نمی گیرد و واقعا بعدا یک خاکی تو سرش میکند
ضمننا تا یک سورس کد از ۱۵ سال پیش دید ، درجا نمیگه باید این را از اول نوشت و دیگه هیچ کاریش نمیشه کرد . همون را ۱۰
سال قابل استفاده میکند تا شرکت با مغز نخورد زمین
➖➖➖➖➖➖➖➖
👑 @gopher_academy
برنامه نویس سنیور هیچ برتری خاصی بر بقیه ندارد
فقط فرقش این است حتی وقتی یک فاجعه درست میشه ، میگه اینم ولش کنید خودم یک خاکی توی سرش میکنم
بیخودی هم استرس نمی گیرد و واقعا بعدا یک خاکی تو سرش میکند
ضمننا تا یک سورس کد از ۱۵ سال پیش دید ، درجا نمیگه باید این را از اول نوشت و دیگه هیچ کاریش نمیشه کرد . همون را ۱۰
سال قابل استفاده میکند تا شرکت با مغز نخورد زمین
➖➖➖➖➖➖➖➖
👑 @gopher_academy
👍20❤3🕊2🎉1🍾1
✍️Mohsen EtemadiMohsen Etemadi
در طراحی ایندکس پایگاه داده، مفهومی به نام Cardinality وجود دارد که بیانگر تعداد حالات مختلف یک ستون پایگاه داده است. به عنوان مثال، در جدولی که اطلاعات هویتی مردم ایران را ذخیره میکند، ستون کد ملی که ایندکس شده باشد بهترین Cardinality را دارد، زیرا Cardinality آن برابر با تعداد مردم ایران است.
با آشنایی با مفهوم Cardinality، در طراحی پایگاههای داده توصیه میشود ستونی برای ایندکس انتخاب شود که بیشترین Cardinality را داشته باشد. ستونهایی با Cardinality پایین برای ایندکسگذاری مناسب نیستند. ابتدا دلیل این موضوع بررسی میشود و سپس شرایطی که این قانون نقض میشود مورد بررسی قرار میگیرد
.
در صورتی که در یک جدول چندین ایندکس وجود داشته باشد و یک جستجو بر روی جدول انجام شود، پایگاه داده MySQL تنها از یک ایندکس برای جستجو استفاده میکند و برای ادامه از روش پیمایش بهره میبرد. MySQL ستونی را که کمترین تعداد ردیف دارای آن مقدار ایندکس را دارد انتخاب میکند.
بنابراین، اگر توزیع دادهها در پایگاه داده کاملاً نرمال باشد، ایندکسی که بیشترین Cardinality را دارد برای جستجو استفاده میشود. منظور از نرمال بودن داده این است که، برای مثال، اگر در پایگاه داده نامهای خانوادگی ذخیره میشود، تعداد افراد با نام خانوادگی "حسینی" و "اعتمادی" برابر باشد. اما در واقعیت این شرایط متفاوت است. حال اگر دادهها نرمال نباشند، Cardinality به صورت امید ریاضی کمک میکند که بفهمیم کدام ستون بیشتر در جستجو استفاده میشود. برای مثال، تفاوت فامیلها در ایران از تفاوت اسمها بیشتر است. به همین دلیل، معمولاً از ستون نام خانوادگی در جستجوی پایگاه داده با استفاده از ایندکس استفاده میشود. اما اگر کسی نام "سامیار حسینی" را جستجو کند، به دلیل کمتر بودن تعداد سامیارها نسبت به حسینیها، از ایندکس نام استفاده میشود. در این شرایط، ستون با Cardinality پایینتر که نام است برای جستجوی ایندکس استفاده شده، زیرا تعداد ردیفهای با این نام کمتر است.
در بحث نقض کردن قانون Cardinality بالا برای ایندکس، فرض کنید یک جدول برای کامنتها طراحی کردهاید که هر کامنت سه وضعیت "تایید"، "رد" و "جدید" دارد. کامنتهای جدید باید توسط پشتیبان بررسی شوند. به دلیل Cardinality پایین ستون وضعیت که برابر با سه است، به نظر میرسد برای ایندکس شدن مناسب نیست، اما این تحلیل اشتباه است. باید به نوع توزیع دادهها و نوع کوئریهایی که زده میشود نیز توجه شود. فرض کنید کوئری به این شکل است که ابتدا کامنتهای جدید، سپس تایید شده و سپس رد شده را نمایش دهد. حال اگر روزانه یک میلیون کامنت دریافت کنید، سالانه حدود 365 میلیون کامنت در
سیستم ثبت میشود. فرض کنید کوئری زیر در سیستم زده شود:
select * from comments where status = 'new' limit 100
این کوئری اگر 100 کامنت جدید وجود نداشته باشد باید همه 365 میلیون کامنت را پیمایش کند. توزیع دادهها نرمال نیست و تعداد محدودی کامنت جدید نسبت به سایر حالات وجود دارد. بنابراین، اگر وضعیت "جدید" اهمیت زیادی در کوئریها دارد، حتماً باید این ستون ایندکس شود. مثلا اگر این ستون ایندکس باشد سرعت جستجو در این حلت بسیار سریع تر می شود در اینجا، قانون Cardinality پایین برای ایندکسگذاری نقض میشود.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
در طراحی ایندکس پایگاه داده، مفهومی به نام Cardinality وجود دارد که بیانگر تعداد حالات مختلف یک ستون پایگاه داده است. به عنوان مثال، در جدولی که اطلاعات هویتی مردم ایران را ذخیره میکند، ستون کد ملی که ایندکس شده باشد بهترین Cardinality را دارد، زیرا Cardinality آن برابر با تعداد مردم ایران است.
با آشنایی با مفهوم Cardinality، در طراحی پایگاههای داده توصیه میشود ستونی برای ایندکس انتخاب شود که بیشترین Cardinality را داشته باشد. ستونهایی با Cardinality پایین برای ایندکسگذاری مناسب نیستند. ابتدا دلیل این موضوع بررسی میشود و سپس شرایطی که این قانون نقض میشود مورد بررسی قرار میگیرد
.
در صورتی که در یک جدول چندین ایندکس وجود داشته باشد و یک جستجو بر روی جدول انجام شود، پایگاه داده MySQL تنها از یک ایندکس برای جستجو استفاده میکند و برای ادامه از روش پیمایش بهره میبرد. MySQL ستونی را که کمترین تعداد ردیف دارای آن مقدار ایندکس را دارد انتخاب میکند.
بنابراین، اگر توزیع دادهها در پایگاه داده کاملاً نرمال باشد، ایندکسی که بیشترین Cardinality را دارد برای جستجو استفاده میشود. منظور از نرمال بودن داده این است که، برای مثال، اگر در پایگاه داده نامهای خانوادگی ذخیره میشود، تعداد افراد با نام خانوادگی "حسینی" و "اعتمادی" برابر باشد. اما در واقعیت این شرایط متفاوت است. حال اگر دادهها نرمال نباشند، Cardinality به صورت امید ریاضی کمک میکند که بفهمیم کدام ستون بیشتر در جستجو استفاده میشود. برای مثال، تفاوت فامیلها در ایران از تفاوت اسمها بیشتر است. به همین دلیل، معمولاً از ستون نام خانوادگی در جستجوی پایگاه داده با استفاده از ایندکس استفاده میشود. اما اگر کسی نام "سامیار حسینی" را جستجو کند، به دلیل کمتر بودن تعداد سامیارها نسبت به حسینیها، از ایندکس نام استفاده میشود. در این شرایط، ستون با Cardinality پایینتر که نام است برای جستجوی ایندکس استفاده شده، زیرا تعداد ردیفهای با این نام کمتر است.
در بحث نقض کردن قانون Cardinality بالا برای ایندکس، فرض کنید یک جدول برای کامنتها طراحی کردهاید که هر کامنت سه وضعیت "تایید"، "رد" و "جدید" دارد. کامنتهای جدید باید توسط پشتیبان بررسی شوند. به دلیل Cardinality پایین ستون وضعیت که برابر با سه است، به نظر میرسد برای ایندکس شدن مناسب نیست، اما این تحلیل اشتباه است. باید به نوع توزیع دادهها و نوع کوئریهایی که زده میشود نیز توجه شود. فرض کنید کوئری به این شکل است که ابتدا کامنتهای جدید، سپس تایید شده و سپس رد شده را نمایش دهد. حال اگر روزانه یک میلیون کامنت دریافت کنید، سالانه حدود 365 میلیون کامنت در
سیستم ثبت میشود. فرض کنید کوئری زیر در سیستم زده شود:
select * from comments where status = 'new' limit 100
این کوئری اگر 100 کامنت جدید وجود نداشته باشد باید همه 365 میلیون کامنت را پیمایش کند. توزیع دادهها نرمال نیست و تعداد محدودی کامنت جدید نسبت به سایر حالات وجود دارد. بنابراین، اگر وضعیت "جدید" اهمیت زیادی در کوئریها دارد، حتماً باید این ستون ایندکس شود. مثلا اگر این ستون ایندکس باشد سرعت جستجو در این حلت بسیار سریع تر می شود در اینجا، قانون Cardinality پایین برای ایندکسگذاری نقض میشود.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
👍6🔥1🍾1
✍️shahriyar bayatshahriyar bayat
پروتکل HTTP3 چیه و چطور کار میکنه؟
پروتکل HTTP/3 یک پروتکل جدید برای انتقال دادهها در وب است که بر اساس پروتکل QUIC ساخته شده. QUIC توسط گوگل توسعه داده شده و ترکیبی از TCP و TLS است که به صورت همزمان برای بهبود عملکرد و امنیت استفاده میشه. قرار هست HTTP/3 جایگزین HTTP/2 بشه و با هدف افزایش سرعت، امنیت و پایداری طراحی شده.
به تازگی ابرآروان هم این قابلیت و توی پنلش فعال کرده و میتونین پروتکل روی QUIC بزارین و سرعت بالاتری رو برای لود سایتتون تجربه کنید.
نسبت به HTTP2 چه مزیت هایی داره؟
سرعت بیشتر: پروتکل HTTP2 مبتنی بر TCP است که ارتباطات را به ترتیب و به صورت پایدار ارسال میکند، اما در صورت از دست رفتن یک بسته، تمام بستهها باید مجدداً ارسال شوند. ولی پروتکل HTTP3 از QUIC استفاده میکنه که مبتنی بر UDP است و به طور موازی چندین جریان داده را ارسال میکنه. به این معنی که از دست رفتن یک بسته داده، سایر بستهها را تحت تأثیر قرار نمیده و ارتباطات سریعتر و پایدارتر هستند.
راه اندازی سریعتر: پروتکل HTTP2 برای راه اندازی اتصال جدید چندین. بار handshake بین کلاینت و سرور انجام میده. ولی توی HTTP3 با استفاده از QUIC تنها یکبار handshake بین کلاینت و سرور انجام میشه که این کار باعث کاهش تاخیر و بهبود سرعت میشه.
امنیت بهتر: پروتکل HTTP2 امنیت و از طریق TLS تامین میکنه که نیاز به مراحل جداگانهای برای رمزگذاری داره. ولی در HTTP3 پروتکل QUIC با استفاده از رمزگذاری داخلی TLS مراحل اضافی رمزنگاری و حذف میکنه و باعث افزایش امنیت میشه.
اما HTTP3 هنوز ضعف هایی هم داره
پشتیبانی محدود: هنوز به اندازه HTTP/2 رایج نشده و همه مرورگرها و سرورها از آن پشتیبانی نمیکنند. این باعث میشه فعلا استفاده گسترده از HTTP/3 ممکن نباشد.
پیچیدگی های پیاده سازی: پیادهسازی و پیکربندی HTTP/3 به دلیل نیاز به استفاده از QUIC و تغییرات پروتکل ممکنه پیچیدهتر باشه. این پیچیدگی میتونه مانع از پذیرش سریعتر این پروتکل بشه.
سازگاری: بعضی از شبکهها و فایروالها ممکنه بستههای UDP را مسدود کنند که این میتونه باعث مشکلاتی در استفاده از HTTP/3 بشه.
پیش نیاز های فعال کردن HTTP3 چیه؟
حداقل نسخه Nginx 1.25 و openssl 1.1.1
➖➖➖➖➖➖➖➖
👑 @gopher_academy
پروتکل HTTP3 چیه و چطور کار میکنه؟
پروتکل HTTP/3 یک پروتکل جدید برای انتقال دادهها در وب است که بر اساس پروتکل QUIC ساخته شده. QUIC توسط گوگل توسعه داده شده و ترکیبی از TCP و TLS است که به صورت همزمان برای بهبود عملکرد و امنیت استفاده میشه. قرار هست HTTP/3 جایگزین HTTP/2 بشه و با هدف افزایش سرعت، امنیت و پایداری طراحی شده.
به تازگی ابرآروان هم این قابلیت و توی پنلش فعال کرده و میتونین پروتکل روی QUIC بزارین و سرعت بالاتری رو برای لود سایتتون تجربه کنید.
نسبت به HTTP2 چه مزیت هایی داره؟
سرعت بیشتر: پروتکل HTTP2 مبتنی بر TCP است که ارتباطات را به ترتیب و به صورت پایدار ارسال میکند، اما در صورت از دست رفتن یک بسته، تمام بستهها باید مجدداً ارسال شوند. ولی پروتکل HTTP3 از QUIC استفاده میکنه که مبتنی بر UDP است و به طور موازی چندین جریان داده را ارسال میکنه. به این معنی که از دست رفتن یک بسته داده، سایر بستهها را تحت تأثیر قرار نمیده و ارتباطات سریعتر و پایدارتر هستند.
راه اندازی سریعتر: پروتکل HTTP2 برای راه اندازی اتصال جدید چندین. بار handshake بین کلاینت و سرور انجام میده. ولی توی HTTP3 با استفاده از QUIC تنها یکبار handshake بین کلاینت و سرور انجام میشه که این کار باعث کاهش تاخیر و بهبود سرعت میشه.
امنیت بهتر: پروتکل HTTP2 امنیت و از طریق TLS تامین میکنه که نیاز به مراحل جداگانهای برای رمزگذاری داره. ولی در HTTP3 پروتکل QUIC با استفاده از رمزگذاری داخلی TLS مراحل اضافی رمزنگاری و حذف میکنه و باعث افزایش امنیت میشه.
اما HTTP3 هنوز ضعف هایی هم داره
پشتیبانی محدود: هنوز به اندازه HTTP/2 رایج نشده و همه مرورگرها و سرورها از آن پشتیبانی نمیکنند. این باعث میشه فعلا استفاده گسترده از HTTP/3 ممکن نباشد.
پیچیدگی های پیاده سازی: پیادهسازی و پیکربندی HTTP/3 به دلیل نیاز به استفاده از QUIC و تغییرات پروتکل ممکنه پیچیدهتر باشه. این پیچیدگی میتونه مانع از پذیرش سریعتر این پروتکل بشه.
سازگاری: بعضی از شبکهها و فایروالها ممکنه بستههای UDP را مسدود کنند که این میتونه باعث مشکلاتی در استفاده از HTTP/3 بشه.
پیش نیاز های فعال کردن HTTP3 چیه؟
حداقل نسخه Nginx 1.25 و openssl 1.1.1
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🍾7👍5❤2
✍️shahriyar bayatshahriyar bayat
آشنایی با ابزار cadvisor برای مانیتورینگ کانیتنر های داکر
ابزار Cadvisor یکی از قدرتمند ترین ابزارهای مانیتورینگ برای کانتینر های داکره اول بریم ببینم چی هست و چه قابلیت هایی رو در اختیارمون میزاره
ابزار cAdvisor (Container Advisor) یه ابزار اپنسورس از گوگل هست که برای جمعآوری، پردازش و نمایش اطلاعات مصرف منابع (CPU، حافظه، شبکه و دیسک) کانتینرها طراحی شده. این ابزار به شما کمک میکنه تا به راحتی عملکرد و سلامت کانتینرهای Docker رو مانیتور کنید.
استفاده ازش چه مزایایی داره؟
cAdvisor به شما اجازه میده تا مصرف منابع کانتینرها رو به صورت لحظهای ببینید و به سرعت مشکلات رو شناسایی کنید.
این ابزار داشبوردهای گرافیکی ساده و user friendly ارائه میده که اطلاعات مصرف منابع رو به صورت تصویری نمایش میده.
ابزار cAdvisor به راحتی با Prometheus ادغام میشه و میتونید دادههای جمعآوری شده رو برای تحلیل و نمایشهای پیشرفتهتر به Prometheus ارسال کنید.
نصب Cadvisor خیلی سادست. cAdvisor به راحتی به عنوان یه کانتینر Docker اجرا میشه و نیاز به کانفیگ پیچیدهای نداره.
اما یه سری محدودیت هم برای Cadvisor وجود داره،
متاسفانه cAdvisor بیشتر برای جمعآوری دادههای پایهای مصرف منابع کاربرد داره و ممکنه برای جمعآوری دادههای پیشرفتهتر محدودیتهایی داشته باشه.
خود cAdvisor هم به عنوان کانتینر در حال اجرا مقداری از منابع سیستم رو مصرف میکنه، بنابراین باید مصرف منابع این ابزار رو هم در نظر بگیرید.
چه جایگزین هایی براش وجود داره؟
یکی از اصلی ترین جایگزین های Cadvisor ترکیب prometheus & Grafana هست این دو ابزار با هم ترکیب میشن تا یه راهحل جامع برای مانیتورینگ و ویژوالیزیشن ارائه بدن. Prometheus برای جمعآوری دادهها و Grafana برای نمایش بصری اونها استفاده میشه.
جایگزین دوم هم میتونه Datadog باشه یه پلتفرم مانیتورینگ و تحلیل که قابلیتهای پیشرفتهتری نسبت به cAdvisor داره و میتونه دادههای مختلفی رو از کانتینرها جمعآوری کنه. بعدا حتما یه پست هم در مورد datadog میزارم.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
آشنایی با ابزار cadvisor برای مانیتورینگ کانیتنر های داکر
ابزار Cadvisor یکی از قدرتمند ترین ابزارهای مانیتورینگ برای کانتینر های داکره اول بریم ببینم چی هست و چه قابلیت هایی رو در اختیارمون میزاره
ابزار cAdvisor (Container Advisor) یه ابزار اپنسورس از گوگل هست که برای جمعآوری، پردازش و نمایش اطلاعات مصرف منابع (CPU، حافظه، شبکه و دیسک) کانتینرها طراحی شده. این ابزار به شما کمک میکنه تا به راحتی عملکرد و سلامت کانتینرهای Docker رو مانیتور کنید.
استفاده ازش چه مزایایی داره؟
cAdvisor به شما اجازه میده تا مصرف منابع کانتینرها رو به صورت لحظهای ببینید و به سرعت مشکلات رو شناسایی کنید.
این ابزار داشبوردهای گرافیکی ساده و user friendly ارائه میده که اطلاعات مصرف منابع رو به صورت تصویری نمایش میده.
ابزار cAdvisor به راحتی با Prometheus ادغام میشه و میتونید دادههای جمعآوری شده رو برای تحلیل و نمایشهای پیشرفتهتر به Prometheus ارسال کنید.
نصب Cadvisor خیلی سادست. cAdvisor به راحتی به عنوان یه کانتینر Docker اجرا میشه و نیاز به کانفیگ پیچیدهای نداره.
اما یه سری محدودیت هم برای Cadvisor وجود داره،
متاسفانه cAdvisor بیشتر برای جمعآوری دادههای پایهای مصرف منابع کاربرد داره و ممکنه برای جمعآوری دادههای پیشرفتهتر محدودیتهایی داشته باشه.
خود cAdvisor هم به عنوان کانتینر در حال اجرا مقداری از منابع سیستم رو مصرف میکنه، بنابراین باید مصرف منابع این ابزار رو هم در نظر بگیرید.
چه جایگزین هایی براش وجود داره؟
یکی از اصلی ترین جایگزین های Cadvisor ترکیب prometheus & Grafana هست این دو ابزار با هم ترکیب میشن تا یه راهحل جامع برای مانیتورینگ و ویژوالیزیشن ارائه بدن. Prometheus برای جمعآوری دادهها و Grafana برای نمایش بصری اونها استفاده میشه.
جایگزین دوم هم میتونه Datadog باشه یه پلتفرم مانیتورینگ و تحلیل که قابلیتهای پیشرفتهتری نسبت به cAdvisor داره و میتونه دادههای مختلفی رو از کانتینرها جمعآوری کنه. بعدا حتما یه پست هم در مورد datadog میزارم.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
❤4👍3
🎯درود دوستان برای تبلیغات توی چنل ما می تونید به ای دی زیر پیام بدید و تعرفه ها رو براتون بفرستیم جهت تبلیغ:
@gopher_ads
@gopher_ads
👍46🎉2
🔴عنوان مقاله👇
🟢Resetting timers in Go
✍️ خلاصه مقاله:
مقاله به بررسی نحوه استفاده صحیح از تابع Timer.Reset() در زبان برنامهنویسی Go و تغییرات مرتبط با آن در نسخههای مختلف میپردازد. در نسخههای قبلی Go (تا 1.22)، استفاده از Timer.Reset() ممکن است به اشتباهات و مشکلاتی منجر شود. مقاله توضیح میدهد که چگونه تغییرات در نحوه مدیریت تایمرها و تنظیم مجدد آنها میتواند به بهبود کارایی و جلوگیری از مشکلات ناشی از کدهای نادرست کمک کند.
نویسنده بر اهمیت استفاده صحیح از Timer.Reset() تأکید میکند و به توسعهدهندگان توصیه میکند که با بهروزرسانی به نسخههای جدیدتر Go و پیروی از بهترین شیوهها، از مشکلات احتمالی جلوگیری کنند. مقاله همچنین نمونههایی از مشکلات متداول و راهحلهای مناسب برای استفاده بهینه از تایمرها ارائه میدهد.
🟣 لینک مقاله👇
🔵 https://antonz.org/timer-reset/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🟢Resetting timers in Go
✍️ خلاصه مقاله:
مقاله به بررسی نحوه استفاده صحیح از تابع Timer.Reset() در زبان برنامهنویسی Go و تغییرات مرتبط با آن در نسخههای مختلف میپردازد. در نسخههای قبلی Go (تا 1.22)، استفاده از Timer.Reset() ممکن است به اشتباهات و مشکلاتی منجر شود. مقاله توضیح میدهد که چگونه تغییرات در نحوه مدیریت تایمرها و تنظیم مجدد آنها میتواند به بهبود کارایی و جلوگیری از مشکلات ناشی از کدهای نادرست کمک کند.
نویسنده بر اهمیت استفاده صحیح از Timer.Reset() تأکید میکند و به توسعهدهندگان توصیه میکند که با بهروزرسانی به نسخههای جدیدتر Go و پیروی از بهترین شیوهها، از مشکلات احتمالی جلوگیری کنند. مقاله همچنین نمونههایی از مشکلات متداول و راهحلهای مناسب برای استفاده بهینه از تایمرها ارائه میدهد.
🟣 لینک مقاله👇
🔵 https://antonz.org/timer-reset/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
antonz.org
Resetting timers in Go
Chances are you are doing it wrong.
👍48❤1🍾1
🔴عنوان مقاله👇
🟢Cogent Core: A New GUI Framework for Go
✍️ خلاصه مقاله:
این Cogent Core یک چارچوب جدید رابط کاربری گرافیکی (GUI) برای زبان برنامهنویسی Go است که با شعار "یک بار کدنویسی کنید و در همهجا اجرا کنید" برای پلتفرمهای متعدد ارائه شده است. این چارچوب به هدف سادگی بیشتر نسبت به Gio و قدرت بیشتر نسبت به Fyne طراحی شده است. نکته جالب این است که وبسایت خود Cogent نیز با استفاده از این چارچوب ساخته شده و به WASM کامپایل شده است تا بر روی وب کار کند. همچنین، یک ویدیوی کوتاه برای معرفی و نمایش قابلیتهای این چارچوب وجود دارد.
Cogent Core با ارائه یک محیط توسعه آسان و انعطافپذیر، به توسعهدهندگان اجازه میدهد تا برنامههای گرافیکی را با کارایی بالا و با حداقل پیچیدگی ایجاد کنند. این چارچوب میتواند به عنوان یک انتخاب مناسب برای کسانی باشد که به دنبال ساخت برنامههای چندپلتفرمی با استفاده از زبان Go هستند.
🟣 لینک مقاله👇
🔵 https://www.cogentcore.org/blog/initial-release
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🟢Cogent Core: A New GUI Framework for Go
✍️ خلاصه مقاله:
این Cogent Core یک چارچوب جدید رابط کاربری گرافیکی (GUI) برای زبان برنامهنویسی Go است که با شعار "یک بار کدنویسی کنید و در همهجا اجرا کنید" برای پلتفرمهای متعدد ارائه شده است. این چارچوب به هدف سادگی بیشتر نسبت به Gio و قدرت بیشتر نسبت به Fyne طراحی شده است. نکته جالب این است که وبسایت خود Cogent نیز با استفاده از این چارچوب ساخته شده و به WASM کامپایل شده است تا بر روی وب کار کند. همچنین، یک ویدیوی کوتاه برای معرفی و نمایش قابلیتهای این چارچوب وجود دارد.
Cogent Core با ارائه یک محیط توسعه آسان و انعطافپذیر، به توسعهدهندگان اجازه میدهد تا برنامههای گرافیکی را با کارایی بالا و با حداقل پیچیدگی ایجاد کنند. این چارچوب میتواند به عنوان یک انتخاب مناسب برای کسانی باشد که به دنبال ساخت برنامههای چندپلتفرمی با استفاده از زبان Go هستند.
🟣 لینک مقاله👇
🔵 https://www.cogentcore.org/blog/initial-release
➖➖➖➖➖➖➖➖
👑 @gopher_academy
👍5
🔴عنوان مقاله👇
🟢Go features by version
✍️ خلاصه مقاله:
به بررسی ویژگیهای اضافه شده به زبان برنامهنویسی Go در نسخههای مختلف آن میپردازد. این لیست جامع، نمایانگر پیشرفتهای پیوسته و نوآوریهای انجام شده در این زبان است و نشان میدهد که توسعه Go همچنان با سرعت قابل توجهی ادامه دارد. مقاله به طور دقیق به جزئیات ویژگیها و بهبودهایی که در هر نسخه جدید ارائه شدهاند، پرداخته است. برای مثال، اگر شما به دنبال آشنایی با ویژگیهای نسخه 1.23 Go هستید، مقاله یادداشتهای کاملی را در این باره ارائه میدهد.
این منبع برای توسعهدهندگان Go مفید است، زیرا به آنها اجازه میدهد تا با ویژگیهای جدید آشنا شده و از آنها در پروژههای خود بهره ببرند. این مقاله تأکید میکند که Go نه تنها بهبود یافته، بلکه با افزودن ویژگیهای جدید و بهروزرسانیهای امنیتی و عملکردی، به یک زبان قدرتمندتر تبدیل شده است.
🟣 لینک مقاله👇
🔵 https://antonz.org/which-go/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🟢Go features by version
✍️ خلاصه مقاله:
به بررسی ویژگیهای اضافه شده به زبان برنامهنویسی Go در نسخههای مختلف آن میپردازد. این لیست جامع، نمایانگر پیشرفتهای پیوسته و نوآوریهای انجام شده در این زبان است و نشان میدهد که توسعه Go همچنان با سرعت قابل توجهی ادامه دارد. مقاله به طور دقیق به جزئیات ویژگیها و بهبودهایی که در هر نسخه جدید ارائه شدهاند، پرداخته است. برای مثال، اگر شما به دنبال آشنایی با ویژگیهای نسخه 1.23 Go هستید، مقاله یادداشتهای کاملی را در این باره ارائه میدهد.
این منبع برای توسعهدهندگان Go مفید است، زیرا به آنها اجازه میدهد تا با ویژگیهای جدید آشنا شده و از آنها در پروژههای خود بهره ببرند. این مقاله تأکید میکند که Go نه تنها بهبود یافته، بلکه با افزودن ویژگیهای جدید و بهروزرسانیهای امنیتی و عملکردی، به یک زبان قدرتمندتر تبدیل شده است.
🟣 لینک مقاله👇
🔵 https://antonz.org/which-go/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
antonz.org
Go features by version
Which major features appeared in which versions of Go.
👍4🕊1
🔴عنوان مقاله👇
🟢Render is Your Fastest Path to Production
✍️ خلاصه مقاله: .
مقاله "Render is Your Fastest Path to Production" به معرفی پلتفرم Render میپردازد که به توسعهدهندگان امکان میدهد به سرعت و با اطمینان برنامههای خود را ایجاد، مستقر و بهروزرسانی کنند و به آسانی آنها را در مقیاس گسترده توسعه دهند. این پلتفرم، که از مجموعههای مختلف فناوری پشتیبانی میکند، از اولین کاربر تا یک میلیارد کاربر را پوشش میدهد.
Render به عنوان یک زیرساخت مدرن برای توسعهدهندگان، فرایندهای پیچیده مرتبط با استقرار و مدیریت برنامهها را سادهسازی کرده و با ارائه ابزارهای کارآمد و پشتیبانی رایگان، به آنها کمک میکند تا تمرکز خود را بر روی توسعه محصول بگذارند. این پلتفرم به کاربران امکان میدهد بدون نیاز به نگرانی در مورد زیرساخت، با اطمینان برنامههای خود را مقیاسپذیر کنند. مقاله همچنین به تأکید بر سرعت و سادگی استفاده از Render اشاره دارد، که آن را به یک انتخاب مناسب برای تیمهای توسعه نرمافزار تبدیل میکند.
🟣 لینک مقاله👇
🔵 https://render.com/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🟢Render is Your Fastest Path to Production
✍️ خلاصه مقاله: .
مقاله "Render is Your Fastest Path to Production" به معرفی پلتفرم Render میپردازد که به توسعهدهندگان امکان میدهد به سرعت و با اطمینان برنامههای خود را ایجاد، مستقر و بهروزرسانی کنند و به آسانی آنها را در مقیاس گسترده توسعه دهند. این پلتفرم، که از مجموعههای مختلف فناوری پشتیبانی میکند، از اولین کاربر تا یک میلیارد کاربر را پوشش میدهد.
Render به عنوان یک زیرساخت مدرن برای توسعهدهندگان، فرایندهای پیچیده مرتبط با استقرار و مدیریت برنامهها را سادهسازی کرده و با ارائه ابزارهای کارآمد و پشتیبانی رایگان، به آنها کمک میکند تا تمرکز خود را بر روی توسعه محصول بگذارند. این پلتفرم به کاربران امکان میدهد بدون نیاز به نگرانی در مورد زیرساخت، با اطمینان برنامههای خود را مقیاسپذیر کنند. مقاله همچنین به تأکید بر سرعت و سادگی استفاده از Render اشاره دارد، که آن را به یک انتخاب مناسب برای تیمهای توسعه نرمافزار تبدیل میکند.
🟣 لینک مقاله👇
🔵 https://render.com/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
❤1👍1🎉1
🔴عنوان مقاله👇
🟢 Learn Go with Tests: A Refactoring Checklist
✍️ خلاصه مقاله: .
🟣 لینک مقاله👇
مقاله "Learn Go with Tests: A Refactoring Checklist" به بررسی تکنیکها و زمانهای مناسب برای refactoring در برنامهنویسی Go میپردازد. این فصل جدید از راهنمای معروف "Learn Go with Tests" به اهمیت refactoring و نکات کلیدی آن میپردازد. نویسنده ابتدا ضرورت refactoring را توضیح میدهد و سپس بر روی زمانهای مناسب برای انجام آن تأکید میکند، مانند زمانی که کد پیچیده یا سخت به نگهداری میشود. مقاله همچنین تکنیکهای اساسی refactoring را معرفی میکند، از جمله تقسیم کد به توابع کوچکتر، حذف کدهای تکراری و بهبود نامگذاری. هدف مقاله کمک به برنامهنویسان Go در شفافسازی و بهبود کیفیت کد است تا کد خواناتر و قابل نگهداریتر شود.
🔵 https://quii.gitbook.io/learn-go-with-tests/testing-fundamentals/refactoring-checklist
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🟢 Learn Go with Tests: A Refactoring Checklist
✍️ خلاصه مقاله: .
🟣 لینک مقاله👇
مقاله "Learn Go with Tests: A Refactoring Checklist" به بررسی تکنیکها و زمانهای مناسب برای refactoring در برنامهنویسی Go میپردازد. این فصل جدید از راهنمای معروف "Learn Go with Tests" به اهمیت refactoring و نکات کلیدی آن میپردازد. نویسنده ابتدا ضرورت refactoring را توضیح میدهد و سپس بر روی زمانهای مناسب برای انجام آن تأکید میکند، مانند زمانی که کد پیچیده یا سخت به نگهداری میشود. مقاله همچنین تکنیکهای اساسی refactoring را معرفی میکند، از جمله تقسیم کد به توابع کوچکتر، حذف کدهای تکراری و بهبود نامگذاری. هدف مقاله کمک به برنامهنویسان Go در شفافسازی و بهبود کیفیت کد است تا کد خواناتر و قابل نگهداریتر شود.
🔵 https://quii.gitbook.io/learn-go-with-tests/testing-fundamentals/refactoring-checklist
➖➖➖➖➖➖➖➖
👑 @gopher_academy
👍3🍾2🔥1
🔴عنوان مقاله👇
🟢Merge Go Code 10x Faster at Quality with AI-Driven Code Reviews
✍️ خلاصه مقاله: .
مقاله "Merge Go Code 10x Faster at Quality with AI-Driven Code Reviews" به بررسی ابزارهای بررسی کد مبتنی بر هوش مصنوعی برای تسریع فرآیند ادغام کد در پروژههای Go میپردازد. این ابزار جدید، با استفاده از بازبینی هوشمند و تحلیل خط به خط، بازخوردی مبتنی بر زمینه ارائه میدهد و به بهبود کیفیت کد کمک میکند. ویژگیهای کلیدی آن شامل ارائه پیشنهادات دقیق برای بهبود کد و امکان گفتگوی هوشمند برای بررسی مسائل پیچیدهتر است. مقاله همچنین به این نکته اشاره دارد که این ابزار یک دوره آزمایشی ۷ روزه رایگان دارد و برای پروژههای متنباز نیز به صورت رایگان قابل استفاده است. هدف اصلی این ابزار، تسریع فرآیند ادغام کد با حفظ کیفیت بالا و کاهش خطاهای انسانی است.
🟣 لینک مقاله👇
🔵 https://coderabbit.ai/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🟢Merge Go Code 10x Faster at Quality with AI-Driven Code Reviews
✍️ خلاصه مقاله: .
مقاله "Merge Go Code 10x Faster at Quality with AI-Driven Code Reviews" به بررسی ابزارهای بررسی کد مبتنی بر هوش مصنوعی برای تسریع فرآیند ادغام کد در پروژههای Go میپردازد. این ابزار جدید، با استفاده از بازبینی هوشمند و تحلیل خط به خط، بازخوردی مبتنی بر زمینه ارائه میدهد و به بهبود کیفیت کد کمک میکند. ویژگیهای کلیدی آن شامل ارائه پیشنهادات دقیق برای بهبود کد و امکان گفتگوی هوشمند برای بررسی مسائل پیچیدهتر است. مقاله همچنین به این نکته اشاره دارد که این ابزار یک دوره آزمایشی ۷ روزه رایگان دارد و برای پروژههای متنباز نیز به صورت رایگان قابل استفاده است. هدف اصلی این ابزار، تسریع فرآیند ادغام کد با حفظ کیفیت بالا و کاهش خطاهای انسانی است.
🟣 لینک مقاله👇
🔵 https://coderabbit.ai/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
❤2🍾2🔥1
🔵 عنوان مقاله
Implementing HTTP/0.9 from Scratch
🟢 خلاصه مقاله:
این مقاله اولین قسمت از سری مقالات "HTTP از پایه" است که به بررسی تاریخچهای از پروتکل HTTP پرداخته که زیربنای وب است. در این مقاله، نویسنده سیر تکاملی HTTP را از زمان پیدایش آن تا به امروز تشریح میکند، از جمله چگونگی تأثیرگذاری تغییرات و تکنولوژیهای جدید بر روی توسعه آن. مقاله به تفصیل به موضوعاتی مانند انواع درخواستها، پاسخها، روشها که برای ارتباط بین مرورگرها و سرورها استفاده میشود و چگونگی کارکرد آنها داخل فضای وب پرداختهاست. تاکید ویژهای بر روی مفاهیم اساسی مانند کدهای وضعیت HTTP و جلسات که نقاط کلیدی در درک چگونگی کارکرد وب هستند، شده است. هدف از این سری مقالات، ارائه درک بهتر و عمیقتری نسبت به HTTP و تأثیر آن بر جهان دیجیتال است.
🟣لینک مقاله:
https://golangweekly.com/link/158454/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Implementing HTTP/0.9 from Scratch
🟢 خلاصه مقاله:
این مقاله اولین قسمت از سری مقالات "HTTP از پایه" است که به بررسی تاریخچهای از پروتکل HTTP پرداخته که زیربنای وب است. در این مقاله، نویسنده سیر تکاملی HTTP را از زمان پیدایش آن تا به امروز تشریح میکند، از جمله چگونگی تأثیرگذاری تغییرات و تکنولوژیهای جدید بر روی توسعه آن. مقاله به تفصیل به موضوعاتی مانند انواع درخواستها، پاسخها، روشها که برای ارتباط بین مرورگرها و سرورها استفاده میشود و چگونگی کارکرد آنها داخل فضای وب پرداختهاست. تاکید ویژهای بر روی مفاهیم اساسی مانند کدهای وضعیت HTTP و جلسات که نقاط کلیدی در درک چگونگی کارکرد وب هستند، شده است. هدف از این سری مقالات، ارائه درک بهتر و عمیقتری نسبت به HTTP و تأثیر آن بر جهان دیجیتال است.
🟣لینک مقاله:
https://golangweekly.com/link/158454/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
kmcd.dev
HTTP/0.9 From Scratch
Building the foundation with HTTP/0.9
👍4🕊1🍾1
🔴 عنوان مقاله
Go! Unlock Your Tech Potential with Ardan Labs Consulting
✍️ خلاصه مقاله:
مقالهای که شما ارجاع دادهاید دربارهی شرکت Ardan Labs است که در زمینه تخصصیسازی در استفاده از زبانهای برنامهنویسی Go و Rust، همچنین فناوریهای Docker و Kubernetes (K8s) فعالیت میکند. این شرکت خدماتی را به منظور تسریع فرایند توسعه نرمافزار، بهینهسازی معماری سیستمها و مدیریت بدهی فناوری ارائه میدهد. Ardan Labs با هدف بهبود عملکرد و افزایش سرعت توسعه در تیمهای فناوری اطلاعات، راهکارهایی را پیشنهاد میدهد که میتواند به شرکتها کمک کند تا با چالشهای مربوط به کمبود مهارتهای فنی و پیچیدگیهای فناوری مقابله کنند. این شرکت با پیشنهاد راهحلهای مؤثر، به شرکتها امکان میدهد تا بر کمبودهای حوزهی فناوری خود غلبه کنند و به رشد و توسعه پایدار دست یابند.
🟣لینک مقاله:
https://golangweekly.com/link/158448/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Go! Unlock Your Tech Potential with Ardan Labs Consulting
✍️ خلاصه مقاله:
مقالهای که شما ارجاع دادهاید دربارهی شرکت Ardan Labs است که در زمینه تخصصیسازی در استفاده از زبانهای برنامهنویسی Go و Rust، همچنین فناوریهای Docker و Kubernetes (K8s) فعالیت میکند. این شرکت خدماتی را به منظور تسریع فرایند توسعه نرمافزار، بهینهسازی معماری سیستمها و مدیریت بدهی فناوری ارائه میدهد. Ardan Labs با هدف بهبود عملکرد و افزایش سرعت توسعه در تیمهای فناوری اطلاعات، راهکارهایی را پیشنهاد میدهد که میتواند به شرکتها کمک کند تا با چالشهای مربوط به کمبود مهارتهای فنی و پیچیدگیهای فناوری مقابله کنند. این شرکت با پیشنهاد راهحلهای مؤثر، به شرکتها امکان میدهد تا بر کمبودهای حوزهی فناوری خود غلبه کنند و به رشد و توسعه پایدار دست یابند.
🟣لینک مقاله:
https://golangweekly.com/link/158448/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Ardanlabs
Ardan Labs Consulting
Our expert consultants will help you maximize your architecture, structure, tech-debt and human capital. We specialise in consulting services by filling skill gaps, speeding up development & creating high performing software with Go, Docker, Kubernetes, Terraform…
👍5
🔴 عنوان مقاله
Broken Pipe in Golang
✍️ خلاصه مقاله: مقاله "Broken Pipe in Golang" به بررسی خطای "Broken Pipe" در زبان برنامهنویسی Go میپردازد. این خطا زمانی رخ میدهد که فرآیند ارسال دادهها به یک اتصال شبکهای بسته شده یا در حال بسته شدن است. در این شرایط، نوشتن به این اتصال منجر به خطای "Broken Pipe" میشود که میتواند باعث کرش برنامه یا بروز مشکلاتی در عملکرد آن شود.
مقاله توضیح میدهد که این خطا معمولاً بهدلیل عدم هماهنگی در مدیریت اتصالها و وضعیتهای غیرمنتظره شبکهای به وجود میآید. همچنین، راهکارهایی برای پیشگیری و مدیریت این خطا ارائه میدهد، از جمله استفاده از تکنیکهای مدیریت اتصال، پیادهسازی روشهای بهتر برای بررسی وضعیت اتصالات قبل از نوشتن دادهها، و برخورد مناسب با خطاهای شبکهای. هدف نهایی این است که برنامهها بهطور مؤثرتر و با خطاهای کمتری در مواجهه با مشکلات شبکه اجرا شوند.
🟣لینک مقاله:
https://gosamples.dev/broken-pipe/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Broken Pipe in Golang
✍️ خلاصه مقاله: مقاله "Broken Pipe in Golang" به بررسی خطای "Broken Pipe" در زبان برنامهنویسی Go میپردازد. این خطا زمانی رخ میدهد که فرآیند ارسال دادهها به یک اتصال شبکهای بسته شده یا در حال بسته شدن است. در این شرایط، نوشتن به این اتصال منجر به خطای "Broken Pipe" میشود که میتواند باعث کرش برنامه یا بروز مشکلاتی در عملکرد آن شود.
مقاله توضیح میدهد که این خطا معمولاً بهدلیل عدم هماهنگی در مدیریت اتصالها و وضعیتهای غیرمنتظره شبکهای به وجود میآید. همچنین، راهکارهایی برای پیشگیری و مدیریت این خطا ارائه میدهد، از جمله استفاده از تکنیکهای مدیریت اتصال، پیادهسازی روشهای بهتر برای بررسی وضعیت اتصالات قبل از نوشتن دادهها، و برخورد مناسب با خطاهای شبکهای. هدف نهایی این است که برنامهها بهطور مؤثرتر و با خطاهای کمتری در مواجهه با مشکلات شبکه اجرا شوند.
🟣لینک مقاله:
https://gosamples.dev/broken-pipe/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🕊2👍1🔥1
🔴 عنوان مقاله
Handle 'connection reset by peer' error in Go
✍️ خلاصه مقاله:
مقاله "Connection Reset by Peer in Golang" به بررسی خطای "Connection Reset by Peer" در برنامههای نوشته شده به زبان Go میپردازد. این خطا زمانی اتفاق میافتد که یک اتصال شبکهای بهطور غیرمنتظره توسط طرف مقابل قطع میشود، بهویژه هنگامی که دادههایی در حال ارسال هستند. این مشکل معمولاً ناشی از مشکلاتی مانند خاموش شدن سرور، قطع اتصال شبکه یا بروز خطا در سمت سرور است.
مقاله توضیح میدهد که این خطا میتواند منجر به بروز مشکلاتی در عملکرد برنامه و ناپایداری اتصالها شود. برای مدیریت این خطا، پیشنهاداتی ارائه میدهد از جمله:
استفاده از مکانیزمهای مدیریت خطا برای شناسایی و واکنش مناسب به این نوع خطاها.
پیادهسازی روشهایی برای بازگرداندن و بازیابی اتصال در صورت بروز مشکل.
بهکارگیری لاگبرداری و تحلیل دقیق برای شناسایی علل بروز خطا و بهبود طراحی شبکه.
مقاله بر اهمیت طراحی مقاوم در برابر خطا و بررسی منظم اتصالها تأکید دارد تا برنامهها پایدارتر و کمتر آسیبپذیر باشند.
🟣لینک مقاله:
https://gosamples.dev/connection-reset-by-peer
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Handle 'connection reset by peer' error in Go
✍️ خلاصه مقاله:
مقاله "Connection Reset by Peer in Golang" به بررسی خطای "Connection Reset by Peer" در برنامههای نوشته شده به زبان Go میپردازد. این خطا زمانی اتفاق میافتد که یک اتصال شبکهای بهطور غیرمنتظره توسط طرف مقابل قطع میشود، بهویژه هنگامی که دادههایی در حال ارسال هستند. این مشکل معمولاً ناشی از مشکلاتی مانند خاموش شدن سرور، قطع اتصال شبکه یا بروز خطا در سمت سرور است.
مقاله توضیح میدهد که این خطا میتواند منجر به بروز مشکلاتی در عملکرد برنامه و ناپایداری اتصالها شود. برای مدیریت این خطا، پیشنهاداتی ارائه میدهد از جمله:
استفاده از مکانیزمهای مدیریت خطا برای شناسایی و واکنش مناسب به این نوع خطاها.
پیادهسازی روشهایی برای بازگرداندن و بازیابی اتصال در صورت بروز مشکل.
بهکارگیری لاگبرداری و تحلیل دقیق برای شناسایی علل بروز خطا و بهبود طراحی شبکه.
مقاله بر اهمیت طراحی مقاوم در برابر خطا و بررسی منظم اتصالها تأکید دارد تا برنامهها پایدارتر و کمتر آسیبپذیر باشند.
🟣لینک مقاله:
https://gosamples.dev/connection-reset-by-peer
➖➖➖➖➖➖➖➖
👑 @gopher_academy
gosamples.dev
Handle 'connection reset by peer' error in Go (Golang) | gosamples.dev
Learn what it means and how to detect the 'connection reset by peer' error
👍6
خلاصهای از اشتباهات رایج در زبان برنامهنویسی Go که از کتابی با همین نام خلاصهبرداری شده.
https://100go.co/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
https://100go.co/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🔥8👍3❤2
🟢Unintended variable shadowing (#1)
🔵Avoiding shadowed variables can help prevent mistakes like referencing the wrong variable or confusing readers.
#tip #go
➖➖➖➖➖➖➖
👑 @gopher_academy
🔵Avoiding shadowed variables can help prevent mistakes like referencing the wrong variable or confusing readers.
#tip #go
➖➖➖➖➖➖➖
👑 @gopher_academy
👍3🎉2
سایت roadmap.sh خوب بود، خوب تر هم شد. اخیرا شروع کرده به تعریف کردن پروژه های مرتبط با هر مسیر به صورت سطح بندی شده.
DevTwitter | <Amir/>
➖➖➖➖➖➖➖➖
👑 @gopher_academy
DevTwitter | <Amir/>
➖➖➖➖➖➖➖➖
👑 @gopher_academy
👍14❤1
🔵Unnecessary nested code (#2)
🟢Avoiding nested levels and keeping the happy path aligned on the left makes building a mental code model easier.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🟢Avoiding nested levels and keeping the happy path aligned on the left makes building a mental code model easier.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
👍5
🔵Misusing init functions (#3)
🟢When initializing variables, remember that init functions have limited error handling and make state handling and testing more complex. In most cases, initializations should be handled as specific functions.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🟢When initializing variables, remember that init functions have limited error handling and make state handling and testing more complex. In most cases, initializations should be handled as specific functions.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🍾3