Go-cus بعد از GopherConEU 2023
زیرا اگر وجود داشته است رفت، می تواند یک Go-cus (یا تمرکز روی Go) وجود داشته باشد.
مدتی از GopherConEU 2023 که در 27 تا 29 ژوئن برگزار شد میگذرد، و من میخواهم از این فرصت استفاده کنم و تجربهام از این روزهای شگفتانگیز و افکارم را در مورد مناطقی که Go نشان داده است تمرکز بیشتری با استفاده از محتوای آنچه دارد، با شما به اشتراک بگذارم. در گفتگوهای مختلف و گفتگو با گوفرهای مختلف به اشتراک گذاشته شد.
TL; DR: GopherConEU یکی از بهترین مکانها برای داشتن ایده از آنچه درباره Go میگذرد است، بهویژه مراجعه حضوری، زیرا این باعث میشود نه تنها از محتوای کنفرانس، بلکه از ملاقات و صحبت با Gopherهای اطرافتان نیز یاد بگیرید.
یک مرور کلی
برای کسانی که هنوز نمی دانند GopherConEU چیست، این کنفرانس اروپایی برای همه موضوعات مرتبط با Go است.
هر نسخه از GopherConEU، که این ششمین نسخه است، در مکان دیگری سازماندهی شده است، اما از سال گذشته در برلین در Festsaal Kreuzberg محلی شده است.
برای GopherConEU 2023 من توانستم در کارگاه و گفتگوهای دو روزه شرکت کنم. من نتوانستم به موقع برای شرکت در رویدادهای اجتماعی در ابتدای سخنرانی حاضر شوم، اما این مانع از ملاقات من با افراد بسیار خوب در روزهای کنفرانس نشد. من مطمئناً فضای دوستانه ای را که در طول کنفرانس پیرامون جامعه Go را احاطه کرده بود احساس کردم و همه مشتاق دیدار و تبادل نظر نه تنها در مورد Go بلکه همچنین علایق و علایق خود بودند.
برای به اشتراک گذاشتن تجربه و ایدهام در مورد آنچه در GopherConEU امسال برجسته بود، بر روی برخی موضوعات خاص تمرکز میکنم:
- تمرکز بر جامعه Go
- رفتن به سطح بعدی
- اهمیت امنیت
تمرکز بر جامعه Go
Go در درجه اول توسط تیم Go ساخته شده است. در طول این تحقیق GopherConEU چندین گفتگو از اعضای تیم Go و سایر مهندسان نرم افزار Google انجام شد که نکات برجسته ای را در مورد چند ویژگی و ابزار جدید مانند صحبت های جاناتان آمستردام در مورد جدید شلختگی بسته در حال ورود به نسخه 1.21، موردی که در مورد بافنده خدمات، ساخته شده توسط رابرت گراندل، چارچوبی که اخیراً توسط Google منتشر شده است تا بتواند یک Go باینری را به خدماتی که به راحتی می توان به عنوان میکروسرویس مستقر کرد و صحبت های رعد و برق از رابرت برک که من را برای دریافت نسخه go نسخه 1.21 و آزمایش به روز رسانی های عمومی هیجان زده کرد.
اما چیزی که بیش از همه در این سه روز به چشم آمد این واقعیت بود که خود جامعه روز به روز در حال رشد است، Go to آزمایش و ایجاد انواع برنامه ها و بسته ها و مهمتر از همه، به اشتراک گذاشتن تجربیات خود با بقیه افراد جامعه. .
این موضوع نه تنها با سخنرانی کامرون بالاهان، سرپرست محصول Go، در مورد وضعیت Go، بلکه در نمونه های عینی برخی از صحبت های ارائه شده در کنفرانس نیز برجسته شد.
به عنوان مثال صحبت در مورد نکاتی را در نظر بگیرید کاهش مصرف حافظه برو برو یسکا لوی سیلاس جایی که او تجربه خود را در مورد تخصیص حافظه و بهره برداری از این دانش برای انتخاب درست و کاهش ردپای حافظه برنامه های شما به اشتراک گذاشت. در مثالی دیگر می توانید صحبت را از آن بگیرید درشتی جین جایی که او توضیح داد که کدام کتابخانه ها و مفاهیم را باید بدانیم یک بازی دو بعدی را در Go توسعه دهید، که اتفاقاً من با او موافقم که یک راه سرگرم کننده برای یادگیری Go است. در واقع، من خیلی وقت پیش یک والراش بازی کنسولی بسیار کوچک را به بهانه تمرین Go با یک پروژه سرگرم کننده شروع کردم.
چیزهای بسیار دیگری وجود دارد که می توانم به آن اشاره کنم، اما این می تواند بسیار طولانی شود، بنابراین ما به موضوع بعدی می رویم، اما نه قبل از اشاره سریع به موضوع TinyGlobo 2 راه اندازی.
رفتن به سطح بعدی
این موضوع پیچیدهترین موضوع برای توصیف است، اما من تمام تلاش خود را میکنم تا آنچه را که از این موضوع برداشت کردم با این دو مثال بیان کنم.
اولی مربوط به کارگاه است بیل کندی در باره خدمات نهایی در Kubernetes در آنجا او چندین نکته و ترفند را به اشتراک گذاشت تا هم یک برنامه ایجاد کند و آن را در Kubernetes استقرار کند و هم مفاهیم شناخته شده Go را در نظر بگیرد و آنها را به سطح بعدی برساند.
برخی از این ایده ها به شرح زیر است:
- یک ذهنیت Deploy-first داشته باشید: استقرار خود را با تمام تنظیمات مورد نیاز و حداقل کد برای پشتیبانی از آن آماده کنید. هنگامی که حداقل برنامه شما در خوشه مستقر شد، می توانید روی منطق کسب و کار تمرکز کنید
- بسته را به عنوان یک API در نظر بگیرید، که فایروالهایی را بین بخشهای کد ایجاد میکند، زیرا فقط از طریق نمادهای صادراتی آن قابل دسترسی است. همچنین اگر یک بسته یک API باشد، با ارائه قابلیتها عمل میکند، نه با دربرداشتن آنها، که تمایز بسیار مهمی بین یک بسته کاربردی و بستهای است که فقط به عنوان یک سطل حاوی چیزهایی است که ممکن است فراموش کنیم.
- با پذیرش داده ها برای آنچه که هستند شروع کنید و سپس کشف کنید که چه کاری انجام می دهد (نوع بتن در مقابل رابط).
- در نظر بگیرید که خطاها زمانی مدیریت می شوند که به نحوی تصدیق یا درمان شوند، مثلاً با ثبت آنها. پس از رسیدگی، خطا نباید بیشتر منتشر شود.
- ترجیح می دهید با خطاهای داخل یک سروکار نداشته باشید
http.Handler
اما مطمئن شوید که یک Handler با تابعی ایجاد می کنید که یک خطا را برمی گرداند تا بتوان آن را در هر موقعیتی مدیریت کرد، به عنوان مثال با تعریف یکtype Handler func(ctx context.Context, w http.ResponseWriter, r *http.Request) error
اینها فقط چند نمونه از مواردی هستند که متوجه شدم چیزی در سرم کلیک می کند، من واقعاً سعی کردم از طریق مثال های ارائه شده در کارگاه ببینم و متقاعد شده ام که باید خودم تلاش کنم تا آن را بهتر درک کنم و این مفاهیم را نیز جذب کنم.
مثال دوم، من فکر می کنم، صحبت های انجام شده توسط جولین کرتل در مورد نحوه ایجاد و استفاده گزینه های کاربردی در طول ایجاد ارزش ها از یک ساختار. این ایده جدید نیست زیرا از مفهوم Go of استفاده زیادی می کند به عنوان شهروندان درجه یک عمل می کند، اما قرار دادن آن نیز آسان نیست زیرا به درک نحوه استفاده از توابع برای پیکربندی مقادیر یک فیلد نیاز دارد. واقعیت رفتن از func New(/* parameters with values to assign to MyStruct fields*/) *MyStruct
به func New(opts ...func(*MyStruct)) *MyStruct
فقط اولین قدم برای کمک به ایجاد مقادیر به روشی تمیزتر است که فراتر از “عملکردهای سازنده” یا “ساختارهای پیکربندی” ساده است. با این حال جولین در سخنرانی خود نه تنها نحوه ایجاد گزینههای کاربردی را توضیح داد، بلکه زمان و نحوه استفاده از آنها را نیز توضیح داد تا مطمئن شویم که میتوانیم بهترین عملکرد را داشته باشیم.
اهمیت امنیت
امنیت یکی از ستونهای تمرکز امروزی هنگام توسعه یک برنامه کاربردی است، زیرا اغلب حملات آسیبپذیریهایی را که بر آن یا کتابخانههایی که به آن وابسته است را آشکار میکنند.
Go تلاشهای امنیتی را کم ارزش نمیداند و این در هر دو سخنرانی اصلی برجسته شد: مورد فوق توسط کامرون بالاهان در مورد حالت برو و تمرکز بر روی مدیریت آسیب پذیری در برو جولی کیو.
اگر ابتدا روی سخنرانی جولی کیو، مدیر تیم امنیتی Go تمرکز کنیم، مهم است که در مورد معنای آسیبپذیری و نحوه تأثیرگذاری آنها بر زنجیره تأمین (در واقع با استفاده از یک تشبیه کیک بسیار خوشمزه) بشنویم. . برای رفع این مشکل، تیم go روی چندین لایه کار کرد:
- ابزار سازی
- داده ها
- مستندات
را ابزار سازی معرفی شده را دیده است vulncheck
فرمان، فقط به تازگی منتشر شده، که به شناسایی مسائل امنیتی در داخل وابستگی های یک ماژول Go با تلاش برای کاهش نویز و انتقال تنها اطلاعات مهم به منظور رفع فوری ترین مشکل امنیتی کمک می کند. ابزار vulncheck همچنین به لطف Github Action مناسب که برای گنجاندن آن در یک ساخت CI برای یک برنامه Go پیاده سازی شده است، اولین ادغام آن در CI است.
را داده ها به لطف پایگاه داده آسیبپذیری، که منبع جامعی از اطلاعات درباره آسیبپذیریهای شناخته شده در ماژولهای Go عمومی را ارائه میکند، که به نوبه خود در مستندات اگر آسیبپذیری در صفحه بسته شناسایی شده باشد، علامتی را نشان میدهد.
این اطلاعات از داستان وضعیت Go پشتیبانی می کند که نه تنها زبانی است که با گذشت زمان در حال رشد است، بلکه یک اکوسیستم کامل تثبیت کننده است که به عنوان یک پلتفرم مولد و آماده برای تولید طراحی شده است. به همین دلیل، نه تنها یادگیری آسان برای ورود به Go مهم است، بلکه ابزارهای مخصوص به خود را برای انجام بسیاری از عملیات، مانند تست، معیارها، مدیریت ماژول، fuzzing و بررسی آسیبپذیری (به نام چند مورد) مهم است. که پایه ای برای ایجاد برنامه های کاربردی پایدار، ایمن، قابل اعتماد و کارآمد با Go است.
یک یادداشت شخصی
GopherConEU 2023 فقط برای من جایی نبود که در آن صحبت ها و موضوعات جالبی درباره زبان برنامه نویسی مورد علاقه ام شنیدم.
مطمئناً این فرصتی بود تا با بسیاری از Gophers خوب، قدیمی و جدید آشنا شویم، با آنها چت کنیم و تجربیات خود را به اشتراک بگذاریم. چه با تیم Go و چه با سایر Gophers، خیلی خوب بود که پروژههایم مانند wallrush و کارگاه Go را که در RivieraDEV ارائه کردم یا تجربهام برای کمک به سازمان RivieraDEV و در عین حال شنیدن در مورد دیگران و دیدن آنها هم در بخش حرفه ای و هم در زمان آزاد کار می کردند.
صحبت از پروژه های شخصی یکی در طول کنفرانس برجسته بود و آن gopherconeu23img بود. چرا اینقدر خاص بود؟ دلیلش این است که یک CLI است که کاملاً در Go نوشته شده است و GIFهایی را در هنر ASCII از یک متن ورودی ایجاد می کند و مهمتر از همه، از آن برای ایجاد برخی از GIFهایی که در اسلایدهای نسخه امسال GopherConEU گنجانده شده اند استفاده شده است. 😍
در اینجا چند نمونه آورده شده است:
نکته دیگری که می خواهم به آن اشاره کنم این است جوزف اسکاراموزینو‘s صحبت برق آسا راه اندازی برنامه توسعه دسکتاپ با Go and Fyne که بسیار عالی، آموزنده و مورد استقبال مخاطبین قرار گرفت. من افتخار می کنم که او برای اجرای سخنرانی خود انتخاب شد و نقش کوچکی در تصمیم او برای ارائه این سخنرانی داشت. کارت عالی بود! 😎
افکار فراق
ایده این مقاله این نبود که دقیقاً گزارشی از مذاکرات GopherConEU 2023 باشد، زیرا گزارش های خوبی وجود دارد که محتوای مذاکرات را به خوبی برجسته می کند. ایده این بود که پس از ملاقات حضوری با همه Gophers و شنیدن محتوای گفتگوهای پیشنهادی در کنفرانس، برخی از افکار در مورد وضعیت Go و جامعه آن برجسته شود.
حیف است که امسال نتوانم در نسخه های دیگر GopherCon شرکت کنم (کودکی 👶 در راه است، بنابراین اگر صحبت نکنم ترجیح می دهم در صورت امکان از راه دور شرکت کنم) اما امیدوارم که این افکار به نتیجه برسند. تایید شود و برخی موارد جدید مورد توجه قرار خواهند گرفت.
GopherCon EU فقط فرصتی برای اشتراک گذاری و یادگیری نبود، بلکه یک لحظه پرتنش و سرگرمی نیز بود، من به خصوص به میکسر اجتماعی بعد از اولین روز کنفرانس و قسمت زنده پادکست Go Time با جلسه ای از بازی مسابقه “Gopher Say”. اگر فرصت شرکت در آن را نداشته اید، گفتگوها در YouTube در دسترس قرار خواهند گرفت، بنابراین در برخی مواقع می توانید به محتوا نیز دسترسی داشته باشید.
من دوباره با تشکر از همه کسانی که این نسخه GopherConEU را ساخته اند و تعدادی عکس دیگر از این ماراتن دو روزه را به اشتراک می گذارم، پایان می دهم.
میتوانید من را در لینکدین، گیتهاب و توییتر پیدا کنید @goMicheleCaci یا اینجا در dev.to @mcaci و من مشتاقانه منتظر شنیدن نظرات شما هستم.
این میشل بود و ممنون که خواندید!