در اکثر مواقع استفاده از لینترها در هر زبانی میتونه از جنبههای مختلف کمک زیادی برای بهبود کدها انجام بده اما هنوز هم دولوپرها بخوبی باهاشون آشتی نکردن.
لینترها با هزینه پایین، میتونن کدها رو از جنبههای مختلفی بررسی کنن و خب لینترهای گولنگی هم از این قاعده مستثنی نیستند.
لینترهای گولنگی میتونن بهمون کمک کنن:
1. فیلدهای یک struct طوری بچینیم که با ساختار memory سازگارتر باشه و مموری فوتپرینت رو کمتر کنیم
2. هر زمان که فراموش کردیم یه خطا رو بهدرستی لاگ یا wrap کنیم بهمون اخطار بدن
3. کدهای duplicate رو تشخیص بدن
4. اجازه ندن هر dependency در هرجایی ایمپورت بشه
5. از هاردکدها و مجیک نامبرها جلوگیری میکنن
6. برای ifهای بیش از اندازه توو در توو نمره منفی میذارن
7. حتی میتونیم اجازه ندیم بعضی مواقع اسلایسی بدون ظرفیت مناسب تعریف بشه
لینتر golangci در کامیونیتی گولنگ بسیار محبوب هستش و خیلی در پروژههای گولنگی کمککننده خواهد بود.
https://golangci-lint.run/
اگر کلا با لینترهای گولنگی آشنا نیستین و نمیدونید چطور باید تنظیمات رو انجام بدید، مقاله زیر یک راهنمای کامل برای شماست.
https://rezakhademix.medium.com/what-is-a-golang-linter-and-how-to-use-it-1bffc0bd8062
لینترها با هزینه پایین، میتونن کدها رو از جنبههای مختلفی بررسی کنن و خب لینترهای گولنگی هم از این قاعده مستثنی نیستند.
لینترهای گولنگی میتونن بهمون کمک کنن:
1. فیلدهای یک struct طوری بچینیم که با ساختار memory سازگارتر باشه و مموری فوتپرینت رو کمتر کنیم
2. هر زمان که فراموش کردیم یه خطا رو بهدرستی لاگ یا wrap کنیم بهمون اخطار بدن
3. کدهای duplicate رو تشخیص بدن
4. اجازه ندن هر dependency در هرجایی ایمپورت بشه
5. از هاردکدها و مجیک نامبرها جلوگیری میکنن
6. برای ifهای بیش از اندازه توو در توو نمره منفی میذارن
7. حتی میتونیم اجازه ندیم بعضی مواقع اسلایسی بدون ظرفیت مناسب تعریف بشه
لینتر golangci در کامیونیتی گولنگ بسیار محبوب هستش و خیلی در پروژههای گولنگی کمککننده خواهد بود.
https://golangci-lint.run/
اگر کلا با لینترهای گولنگی آشنا نیستین و نمیدونید چطور باید تنظیمات رو انجام بدید، مقاله زیر یک راهنمای کامل برای شماست.
https://rezakhademix.medium.com/what-is-a-golang-linter-and-how-to-use-it-1bffc0bd8062
مقاله زیر ایجاد یک RAG ساده رو به ما آموزش میده تا علاوه بر اتصال به مدلهای مختلف مثل: Open AI و... بتونیم داکیومنتهای خودمون رو بهش بدیم و ازش در خصوص محتوای ارائه شده، سوال بپرسیم
https://entgo.io/blog/2025/02/12/rag-with-ent-atlas-pgvector/
https://entgo.io/blog/2025/02/12/rag-with-ent-atlas-pgvector/
entgo.io
Building RAG systems in Go with Ent, Atlas, and pgvector | ent
In this blog post, we will explore how to build a RAG
نوشتن middleware برای اجرا مجموعهای پروسهها قبل از رسیدن درخواست به هندلر برای gRPC سرور کار دشواری نیست.
اما خب اگر تمایل دارین پکیجی استفاده کنین که خودش خودکار لاگ بزنه و ردیابی رو با استانداردهای Otel در اختیارتون قرار بده و مواردی
مثل:
Auth,
Metrics (Prometheus),
Logging,
Selector,
Validator,
Ratelimit
و غیره رو خیلی راحتتر داشته باشین، یه نگاهی به پکیج زیر بندازین.
نمونه کد:
https://github.com/grpc-ecosystem/go-grpc-middleware
#package
#golang
اما خب اگر تمایل دارین پکیجی استفاده کنین که خودش خودکار لاگ بزنه و ردیابی رو با استانداردهای Otel در اختیارتون قرار بده و مواردی
مثل:
Auth,
Metrics (Prometheus),
Logging,
Selector,
Validator,
Ratelimit
و غیره رو خیلی راحتتر داشته باشین، یه نگاهی به پکیج زیر بندازین.
نمونه کد:
grpcSrv := grpc.NewServer(
grpc.StatsHandler(otelgrpc.NewServerHandler()),
grpc.ChainUnaryInterceptor(
srvMetrics.UnaryServerInterceptor(grpcprom.WithExemplarFromContext(exemplarFromContext)),
logging.UnaryServerInterceptor(interceptorLogger(rpcLogger), logging.WithFieldsFromContext(logTraceID)),
selector.UnaryServerInterceptor(auth.UnaryServerInterceptor(authFn), selector.MatchFunc(allButHealthZ)),
recovery.UnaryServerInterceptor(recovery.WithRecoveryHandler(grpcPanicRecoveryHandler)),
),
)
https://github.com/grpc-ecosystem/go-grpc-middleware
#package
#golang
👍3🙏1
به نظرتون اینستاگرام یا توییتر چطور به این سرعت تعداد لایکها یا بازدیدهای یک پست رو نمایش میدن؟
آیا در این حجم داده یک کوئری دیتابیسی و cache یا روشهایی مثل distribution کافیه؟
خب Google Analytics چطور میتونه این حجم داده از جنس بازدید یکتا، تعداد کلیک یا... رو محاسبه کنه؟
یک الگوریتم بسیار زیبا وجود داره به اسم
HyperLogLog
که به ما اجازه میده با تقریب بسیار خوبی و فقط با مصرف چند کیلوبایت RAM تعداد المانهای یکتا رو از مجموعه دیتا استخراج کنیم.
این الگوریتم بسیار Memory Efficient هستش و مثلا برای شمردن تعداد لایکهای منحصر به فرد یک پست با ذخیره Hash داده و استفاده از فرمول HyperLogLog در سریعترین زمان ممکن نتیجه رو برای شما محاسبه میکنه.
این موضوع یه چالش سیستم دیزاین جذابه که اگر دوست دارین، بیشتر دربارهاش بدونید، نگاهی به مقاله زیر بندازید.
https://www.geeksforgeeks.org/hyperloglog-algorithm-in-system-design/
- در دوره صفر تا صد گولنگ کلودیگو یک نمونه از این الگوریتم رو پیادهسازی خواهیم کرد.
#tip
#systemdesign
آیا در این حجم داده یک کوئری دیتابیسی و cache یا روشهایی مثل distribution کافیه؟
خب Google Analytics چطور میتونه این حجم داده از جنس بازدید یکتا، تعداد کلیک یا... رو محاسبه کنه؟
یک الگوریتم بسیار زیبا وجود داره به اسم
HyperLogLog
که به ما اجازه میده با تقریب بسیار خوبی و فقط با مصرف چند کیلوبایت RAM تعداد المانهای یکتا رو از مجموعه دیتا استخراج کنیم.
این الگوریتم بسیار Memory Efficient هستش و مثلا برای شمردن تعداد لایکهای منحصر به فرد یک پست با ذخیره Hash داده و استفاده از فرمول HyperLogLog در سریعترین زمان ممکن نتیجه رو برای شما محاسبه میکنه.
این موضوع یه چالش سیستم دیزاین جذابه که اگر دوست دارین، بیشتر دربارهاش بدونید، نگاهی به مقاله زیر بندازید.
https://www.geeksforgeeks.org/hyperloglog-algorithm-in-system-design/
- در دوره صفر تا صد گولنگ کلودیگو یک نمونه از این الگوریتم رو پیادهسازی خواهیم کرد.
#tip
#systemdesign
👍5⚡1🔥1
اگر دوستدارین best practiceها و نکات ریزی که حین استفاده از defer در گولنگ بهش برخورد میکنید رو بدونید و از اشتباهات رایج جلوگیری کنید، مقاله زیر بهتون کمک میکنه.
https://rezakhademix.medium.com/defer-functions-in-golang-common-mistakes-and-best-practices-96eacdb551f0
#tip
#golang
https://rezakhademix.medium.com/defer-functions-in-golang-common-mistakes-and-best-practices-96eacdb551f0
#tip
#golang
Medium
Defer Functions in Golang: Common Mistakes and Best Practices
This story will focus on defer functions in Golang, providing a comprehensive guide to help us understand them better and…
👍4🙏1
مقاله زیر با زبان خیلی ساده به ما میگه که چطور از اشتباهات پیشپا افتاده جلوگیری کنیم و بتونیم اپلیکیشن گولنگی که داریم به برای تعداد رکوئست بالا آماده کنیم.
https://dev.to/rikenshah/scaling-backend-to-1m-requests-with-just-2gb-ram-4m0c
#tip
#golang
https://dev.to/rikenshah/scaling-backend-to-1m-requests-with-just-2gb-ram-4m0c
#tip
#golang
DEV Community
Avoiding Beginner Mistakes Hampering You to Scale Backend⚡️
This blog covers how I unlocked performance that allowed me to scale my backend from 50K requests →...
👍4🔥1
سوال #استخدامی:
اگر فانکشن modify رو به شکل زیر تعریف و سپس تابع main رو با بدنه نوشته اجرا کنیم، در نتیجه کدام یک از گزینهها چاپ خواهد شد؟
1. Compilation Error
2. [100, 200, 300, 4]
3. [1, 2, 3, 4]
4. [100, 200, 300, 0]
در زبان Go، تابع copy(dest, src) عناصر src را در dest کپی میکند، اما اندازه dest را تغییر نمیدهد.
در اینجا، دستور
سه عنصر اول آرایه nums را جایگزین میکند، اما طول اصلی آن را تغییر نمیدهد.
بنابراین، وقتی fmt.Println(nums) را اجرا کنیم، خروجی
خواهد بود. (گزینه دو)
#golang
#qa
اگر فانکشن modify رو به شکل زیر تعریف و سپس تابع main رو با بدنه نوشته اجرا کنیم، در نتیجه کدام یک از گزینهها چاپ خواهد شد؟
1. Compilation Error
2. [100, 200, 300, 4]
3. [1, 2, 3, 4]
4. [100, 200, 300, 0]
func modify(s []int){
copy(s, []int{100, 200, 300})
}
func main(){
nums := []int{1, 2, 3, 4}
modify(nums)
fmt.Println(nums)
}در زبان Go، تابع copy(dest, src) عناصر src را در dest کپی میکند، اما اندازه dest را تغییر نمیدهد.
در اینجا، دستور
copy(nums, []int{100, 200, 300})سه عنصر اول آرایه nums را جایگزین میکند، اما طول اصلی آن را تغییر نمیدهد.
بنابراین، وقتی fmt.Println(nums) را اجرا کنیم، خروجی
[100, 200, 300, 4]
خواهد بود. (گزینه دو)
#golang
#qa
👍7👏2
اگر دوستدارین best practiceها و نکات ریزی که حین استفاده از sliceها در گولنگ بهش برخورد میکنید رو بدونید و از اشتباهات رایج جلوگیری کنید، مقاله زیر بهتون کمک میکنه.
https://rezakhademix.medium.com/slices-in-golang-common-mistakes-and-best-practices-76c30857d4e4
#tip
#golang
https://rezakhademix.medium.com/slices-in-golang-common-mistakes-and-best-practices-76c30857d4e4
#tip
#golang
Medium
Slices in Golang: Common Mistakes and Best Practices
In this story we want to discuss about slices in Golang and see some different scenarios to avoid common mistakes like:…
👍4👨💻1
اگر دوستدارین best practiceها و نکات ریزی که حین استفاده از stringها در گولنگ بهش برخورد میکنید رو بدونید و از اشتباهات رایج جلوگیری کنید، مقاله زیر بهتون کمک میکنه.
https://rezakhademix.medium.com/strings-in-golang-common-mistakes-and-best-practices-1250045051f8
#tip
#golang
https://rezakhademix.medium.com/strings-in-golang-common-mistakes-and-best-practices-1250045051f8
#tip
#golang
Medium
Strings in Golang: Common Mistakes and Best Practices
In this story we want to discuss about strings in Golang and see some different scenarios to avoid common mistakes like:…
❤2👍2
چطور وقتی در اپلیکیشن گولنگی چندین ریکوئست همزمان به یک آدرس داریم از بمباران کردن دیتابیس جلوگیری کنیم؟
https://victoriametrics.com/blog/go-singleflight/
https://victoriametrics.com/blog/go-singleflight/
VictoriaMetrics
Go Singleflight Melts in Your Code, Not in Your DB
What singleflight does is ensure that only one of those goroutines actually runs the operation, like getting the data from the database. It allows only one ‘in-flight’ (ongoing) operation for the same piece of data (known as a ‘key’) at any given moment.
👍7
زمانی که با گولنگ توسعه میدیم باید دقت خوبی در استفاده از گوروتینها، کنترل پوینترها و موضوعات دیگر با هدف جلوگیری از مموریلیک داشته باشیم.
ابزارهای مانیتورینگ و پروفایل کردن برنامه گولنگی مثل: pprof و Prometheus و... هم کمک خوبی برای تشخیص بهتر اشتباهات توسعه و مموریلیک هستند.
اما سورپرایز ویژه اضافه شدن دستور
هستش که قرار هست به گولنگ ۱.۲۵ اضافه شود و با دقت خوبی، مموریلیکهای برنامه رو در هنگام خروج مشخص نماید.
#golang
ابزارهای مانیتورینگ و پروفایل کردن برنامه گولنگی مثل: pprof و Prometheus و... هم کمک خوبی برای تشخیص بهتر اشتباهات توسعه و مموریلیک هستند.
اما سورپرایز ویژه اضافه شدن دستور
go build -asan
هستش که قرار هست به گولنگ ۱.۲۵ اضافه شود و با دقت خوبی، مموریلیکهای برنامه رو در هنگام خروج مشخص نماید.
#golang
👍9🔥3❤1
سلام
در مدتی که گذشت بخاطر تمام روزهای سختی که همه ما تجربه کردیم و مشکلات افزونی که شخصا داشتم، زمان تقریبا زیادی رو از توسعه فاصله گرفتم و فعالیت کانال هم تعلیق شد.
تا همین یک هفته پیش حتی لپتاپم رو هم روشن نکرده بودم.
در این میان، دوستانی بودند که محبت داشتند و بسیار کمک کردند تا مسائل قابل تحملتر باشند.
عمیقا و صمیمانه از همه این عزیزان ممنونم.
یکی از دوستان تعبیر جالبی داشت، که این بود:
«همه کارهایی که ما فعالان حوزه نرمافزار با اشتیاق انجام میدیم مثل روشن کردن شمعی در میان برهوت نرمافزاری ایران است، که شاید بتواند یک نفر را از بیراهه این تاریکی، نجات دهد.»
در مدتی که گذشت بخاطر تمام روزهای سختی که همه ما تجربه کردیم و مشکلات افزونی که شخصا داشتم، زمان تقریبا زیادی رو از توسعه فاصله گرفتم و فعالیت کانال هم تعلیق شد.
تا همین یک هفته پیش حتی لپتاپم رو هم روشن نکرده بودم.
در این میان، دوستانی بودند که محبت داشتند و بسیار کمک کردند تا مسائل قابل تحملتر باشند.
عمیقا و صمیمانه از همه این عزیزان ممنونم.
یکی از دوستان تعبیر جالبی داشت، که این بود:
«همه کارهایی که ما فعالان حوزه نرمافزار با اشتیاق انجام میدیم مثل روشن کردن شمعی در میان برهوت نرمافزاری ایران است، که شاید بتواند یک نفر را از بیراهه این تاریکی، نجات دهد.»
👍7
فعالیت کانال مجددا از سر گرفته شده و رویدادهای جالب و متفاوتی درنظر گرفته شده تا برگزار بشوند.
از همراهی شما ممنونم
خیلی مخلصیم
از همراهی شما ممنونم
خیلی مخلصیم
❤4
در این مدت سعی کردم در بسیاری از بخشهای توسعه و معماری نرمافزار بازنگری کنم.
یکی از موارد جالب حضور AI در توسعه است که بسیار کمککننده و اگر به درستی استفاده بشه میتونه بازدهی رو به طرز شگفتانگیزی افزایش بده!
میتونم بگم توسعه در این فضا بینهایت جذابتر از گذشته و حس و حال مختص به خودش را دارد.
بهزودی پستهای مختلفی برای نحوه استفاده از AI و دیگر بخشهای مرتبط منتشر میکنم.
یکی از موارد جالب حضور AI در توسعه است که بسیار کمککننده و اگر به درستی استفاده بشه میتونه بازدهی رو به طرز شگفتانگیزی افزایش بده!
میتونم بگم توسعه در این فضا بینهایت جذابتر از گذشته و حس و حال مختص به خودش را دارد.
بهزودی پستهای مختلفی برای نحوه استفاده از AI و دیگر بخشهای مرتبط منتشر میکنم.
🔥3⚡1
احتمالا شما هم دیتاهایی دارین یا وبسایتی دارین که اطلاعاتش رو نیاز دارین به یک ساختار LLM Ready تبدیل کنید تا در سادهترین سناریو بهراحتی بتونید براساسش ربات بسازید یا کارهای جالبتری انجام بدین!
ریپازیتوری FireCrawl کل وبسایت مورد نظرتون رو به یک ساختار منظم و آماده برای LLM تبدیل میکنه و حتی فایلهای مدیا در وبسایت رو هم پردازش میکنه تا با روشهای مختلفی دیتای مورد نظر رو استخراج کنید.
https://github.com/mendableai/firecrawl
#llm
#github
ریپازیتوری FireCrawl کل وبسایت مورد نظرتون رو به یک ساختار منظم و آماده برای LLM تبدیل میکنه و حتی فایلهای مدیا در وبسایت رو هم پردازش میکنه تا با روشهای مختلفی دیتای مورد نظر رو استخراج کنید.
https://github.com/mendableai/firecrawl
#llm
#github
GitHub
GitHub - firecrawl/firecrawl: 🔥 The Web Data API for AI - Turn entire websites into LLM-ready markdown or structured data
🔥 The Web Data API for AI - Turn entire websites into LLM-ready markdown or structured data - firecrawl/firecrawl
🔥3👍1
چت با دیتابیس!
یک ابزار متنباز و کاربردی که در خصوص نوشتن کوئریهای پیچیده، بهینه کردن عملکرد دیتابیس و ایجاد گزارشهای کاربردی مثل: کوئریهای کند، ایندکسهای بلااستفاده و ... بهتون کمک میکنه و فقط کافیه باهاش چت کنید.
https://chat2db.ai
#github
یک ابزار متنباز و کاربردی که در خصوص نوشتن کوئریهای پیچیده، بهینه کردن عملکرد دیتابیس و ایجاد گزارشهای کاربردی مثل: کوئریهای کند، ایندکسهای بلااستفاده و ... بهتون کمک میکنه و فقط کافیه باهاش چت کنید.
https://chat2db.ai
#github
chat2db.ai
Chat2DB - AI Text2SQL Tool for Easy Database Management
Chat2DB is an AI-powered SQL client that transforms natural language into SQL queries. Supports MySQL, Redis, MongoDB, and enhances database management with Text2SQL and BI features.
👍3⚡1
بعد از مدتها بالاخره Gorm آپدیتی که اکثر برنامهنویسان گولنگ منتظرش بودند رو در نسخه جدید منتشر کرد.
در کامیونیتی گولنگ Gorm بخاطر عدم Type Safty و پیچیدگیهای مختلف آنچنان محبوب نیست. مدتها بود که Generic ها به زبان گولنگ اضافه شدن اما با وجود درخواستهای زیاد، همچنان در Gorm مورد استفاده قرار نگرفته بودند تا اینکه در ورژن جدید Gorm یعنی V1.30.0 بالاخره این قابلیت به Gorm اضافه شده و میتونه برگ برندهای برای این ORM باشه.
شخصا از Gorm بخاطر عدم بهینه بودن، رفتار عجیب و… استفاده نمیکردم اما این آپدیت آنقدر جدی هست که در صفحه اول داکیومنت Gorm خیلی شفاف به این قابلیت پرداخته و تاکید کرده فقط در ورژنهای V1.30 به بالا قابل استفاده است. شخصا مایلم یک بار دیگه تستش کنم و ببینم تونسته مشکلات متعددی که داشت رو رفع کنه یا خیر!
به نظرم بهزودی این سینتکس جدید، به روش پیشفرض کوئری نوشتن در Gorm تبدیل میشه!
#gorm
#golang
@cloudygo
در کامیونیتی گولنگ Gorm بخاطر عدم Type Safty و پیچیدگیهای مختلف آنچنان محبوب نیست. مدتها بود که Generic ها به زبان گولنگ اضافه شدن اما با وجود درخواستهای زیاد، همچنان در Gorm مورد استفاده قرار نگرفته بودند تا اینکه در ورژن جدید Gorm یعنی V1.30.0 بالاخره این قابلیت به Gorm اضافه شده و میتونه برگ برندهای برای این ORM باشه.
شخصا از Gorm بخاطر عدم بهینه بودن، رفتار عجیب و… استفاده نمیکردم اما این آپدیت آنقدر جدی هست که در صفحه اول داکیومنت Gorm خیلی شفاف به این قابلیت پرداخته و تاکید کرده فقط در ورژنهای V1.30 به بالا قابل استفاده است. شخصا مایلم یک بار دیگه تستش کنم و ببینم تونسته مشکلات متعددی که داشت رو رفع کنه یا خیر!
به نظرم بهزودی این سینتکس جدید، به روش پیشفرض کوئری نوشتن در Gorm تبدیل میشه!
#gorm
#golang
@cloudygo
❤2👍2👏2
فرصتی که هوش مصنوعی در اختیار همه ما قرار داده باورنکردنی و بسیار شگفتانگیزه!
کافیه کمی با MCPها با ایجاد Ruleهای مشخص باهاشون کار کنید، بهشون کانتکست بدین تا یک خروجی عالی رو داشته باشید.
در زمانهایی که تایم آزاد دارین، تا میتونید، روشهای مختلف توسعه با AI رو برای خودتون تست کنید.
لزومی نداره حتما مدلهای پریمیوم رو استفاده کنید و همین تجربه کردن، باعث میشه به راحتی بتونید مهارت استفاده از AI رو در خودتون افزایش بدین و تسکی که در ۲ روز انجام میشد رو در کمتر از نصف
تکمیل کنید.
× مدلهای پریمیوم Sonnet 4 و جمینای ۲.۵ پرو واقعا کاربردی هستند!
دقت کنید ما در مورد شتکد نوشتن با AI صحبت نمیکنیم. اینکه بارها به AI تاکید کنیم Best Practiceهارو رعایت کن، هیچ فایدهای نداره!
1. سعی کنید از agentهایی استفاده کنید که امکان بازگشت به مراحل و رویدادهای قبلی حافظهشون رو دارن
2. بهخوبی کانتکست رو شرح بدین
3. موضوع رو به سابتسکهای کوچک تبدیل کنید
4. شفاف بگین براساس چه معماری و چه پرکتیسی (practice) باید کد نوشته بشه
5. سناریوهای شکست رو براش شرح بدین
7. در هر مرحله ازش بخواین برگرده و با تست مشخص کنه چه چیزهایی تا الان اشتباه بوده
کافیه کمی با MCPها با ایجاد Ruleهای مشخص باهاشون کار کنید، بهشون کانتکست بدین تا یک خروجی عالی رو داشته باشید.
در زمانهایی که تایم آزاد دارین، تا میتونید، روشهای مختلف توسعه با AI رو برای خودتون تست کنید.
لزومی نداره حتما مدلهای پریمیوم رو استفاده کنید و همین تجربه کردن، باعث میشه به راحتی بتونید مهارت استفاده از AI رو در خودتون افزایش بدین و تسکی که در ۲ روز انجام میشد رو در کمتر از نصف
تکمیل کنید.
× مدلهای پریمیوم Sonnet 4 و جمینای ۲.۵ پرو واقعا کاربردی هستند!
دقت کنید ما در مورد شتکد نوشتن با AI صحبت نمیکنیم. اینکه بارها به AI تاکید کنیم Best Practiceهارو رعایت کن، هیچ فایدهای نداره!
1. سعی کنید از agentهایی استفاده کنید که امکان بازگشت به مراحل و رویدادهای قبلی حافظهشون رو دارن
2. بهخوبی کانتکست رو شرح بدین
3. موضوع رو به سابتسکهای کوچک تبدیل کنید
4. شفاف بگین براساس چه معماری و چه پرکتیسی (practice) باید کد نوشته بشه
5. سناریوهای شکست رو براش شرح بدین
7. در هر مرحله ازش بخواین برگرده و با تست مشخص کنه چه چیزهایی تا الان اشتباه بوده
👍3⚡1
گولنگ زبانی هستش که بسیاری از ساختارهای پیشفرض در زبانهای برنامهنویسی قبل از خودش رو زیر سوال میبره اما با نگاهی مثبت!
حتی اگر شما هیچوقت قصد ندارید توسعهدهنده با زبان گولنگ باشید، یادگیری گولنگ تغییرات مثبتی رو در توسعه براتون ایجاد میکنه. یکی از بازرترین تغییرات فکری در توسعه با گولنگ، گذر از پیادهسازی لایههای مختلف بلااستفاده و ایجاد ساختارهایی هست که برای تغییر بسیار آمادهتر هستند.
همه ما همواره تمایل داریم در مرحله اول توسعه، یک بخش کامل و اصطلاحا Bullet Proof رو توسعه بدیم اما باید بدونیم این یک خطای ذهنی است. نوشتن یک سرویس کامل و پاسخگو در مرحله اول توسعه کاملا غیرممکن هست.
اکثر برنامهنویسان سعی دارند با ایجاد لایههای اینترفیس و Generalize کردن از همه اتفاقات آینده مصون بوده و کد توسعهپذیرتری داشته باشند اما همواره باید در ذهن داشته باشیم که کدهای ما باید آماده برای تغییر باشند تا یک چاقوی سوییسی همهکاره!
حتی اگر شما هیچوقت قصد ندارید توسعهدهنده با زبان گولنگ باشید، یادگیری گولنگ تغییرات مثبتی رو در توسعه براتون ایجاد میکنه. یکی از بازرترین تغییرات فکری در توسعه با گولنگ، گذر از پیادهسازی لایههای مختلف بلااستفاده و ایجاد ساختارهایی هست که برای تغییر بسیار آمادهتر هستند.
همه ما همواره تمایل داریم در مرحله اول توسعه، یک بخش کامل و اصطلاحا Bullet Proof رو توسعه بدیم اما باید بدونیم این یک خطای ذهنی است. نوشتن یک سرویس کامل و پاسخگو در مرحله اول توسعه کاملا غیرممکن هست.
اکثر برنامهنویسان سعی دارند با ایجاد لایههای اینترفیس و Generalize کردن از همه اتفاقات آینده مصون بوده و کد توسعهپذیرتری داشته باشند اما همواره باید در ذهن داشته باشیم که کدهای ما باید آماده برای تغییر باشند تا یک چاقوی سوییسی همهکاره!
👍6🐳1