Gopher Academy
3.33K subscribers
923 photos
40 videos
280 files
2.07K links
🕸 Gopher Academy

🔷interview golang
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
CORS یا Cross-Origin Resource Sharing

یک مکانیزم امنیتی است که توسط مرورگرهای وب پیاده‌سازی می‌شود. این مکانیزم به صفحات وب امکان می‌دهد تا منابعی مانند فونت‌ها، تصاویر یا درخواست‌های AJAX را از دامنه‌های دیگر درخواست کنند. به صورت پیش‌فرض، به دلایل امنیتی، مرورگرها اجازه نمی‌دهند که درخواست‌های AJAX به دامنه‌های دیگر ارسال شود (سیاست‌های مبدأ مشترک یا Same-Origin Policy). CORS به شما امکان می‌دهد تا این محدودیت را تحت شرایط خاصی دور بزنید.

### نحوه کار CORS
وقتی که یک درخواست AJAX به یک دامنه دیگر ارسال می‌شود، مرورگر قبل از ارسال درخواست اصلی، یک درخواست پیش‌فلایت (preflight) به سرور مقصد ارسال می‌کند. این درخواست پیش‌فلایت یک درخواست HTTP است که از متد OPTIONS استفاده می‌کند تا ببیند آیا سرور مقصد اجازه دسترسی را می‌دهد یا خیر.

### هدرهای CORS
CORS از طریق هدرهای HTTP کنترل می‌شود. برخی از این هدرها عبارتند از:

- Access-Control-Allow-Origin:
مشخص می‌کند که چه دامنه‌هایی اجازه دارند به منابع دسترسی داشته باشند.

- Access-Control-Allow-Methods:
مشخص می‌کند که چه نوع درخواست‌هایی (GET, POST, PUT, DELETE, ...) مجاز هستند.

- Access-Control-Allow-Headers:
مشخص می‌کند که چه هدرهای سفارشی‌ای مجاز هستند.

- Access-Control-Allow-Credentials:
مشخص می‌کند که آیا کوکی‌ها و اطلاعات احراز هویت نیز می‌توانند ارسال شوند یا خیر.


### نکات مهم
- امنیت:
باید دقت کنید که هدر Access-Control-Allow-Origin را به صورت * تنظیم نکنید مگر اینکه واقعاً قصد داشته باشید منابع شما از هر دامنه‌ای قابل دسترسی باشند
.
- درخواست‌های پیش‌فلایت:
برخی از درخواست‌ها (مانند درخواست‌های با متدهای PUT یا DELETE) نیاز به درخواست پیش‌فلایت دارند. این درخواست‌ها ممکن است بر عملکرد تأثیر بگذارند.

با استفاده صحیح از CORS، می‌توانید به راحتی منابع خود را در اختیار کلاینت‌های مختلف قرار دهید در حالی که همچنان کنترل کاملی بر روی امنیت دسترسی به منابع دارید.


👑 @gopher_academy | 💸 Donate | 💋 Boost
👍82🔥1🍾1💋1
درخواست‌های پیش‌فلایت یکی از قسمت‌های کلیدی مکانیزم CORS هستند. این درخواست‌ها قبل از ارسال درخواست اصلی، به سرور ارسال می‌شوند تا بررسی شود آیا سرور مقصد اجازه می‌دهد که درخواست اصلی از دامنه دیگری ارسال شود یا خیر. درخواست‌های پیش‌فلایت با استفاده از متد HTTP OPTIONS ارسال می‌شوند.

### چرا درخواست‌های پیش‌فلایت لازم هستند؟
درخواست‌های پیش‌فلایت برای اطمینان از امنیت بیشتر و جلوگیری از حملات CSRF (Cross-Site Request Forgery) و سایر تهدیدات امنیتی طراحی شده‌اند. این درخواست‌ها قبل از ارسال درخواست‌های حساس یا پیچیده به سرور ارسال می‌شوند تا سرور تصمیم بگیرد که آیا این درخواست باید مجاز باشد یا نه.

### مواردی که باعث می‌شوند درخواست‌های پیش‌فلایت ارسال شوند:
- متدهای غیر استاندارد: اگر درخواست اصلی از متدهایی غیر از GET, POST یا HEAD استفاده کند (مانند PUT, DELETE).
- هدرهای غیر استاندارد: اگر درخواست اصلی شامل هدرهای سفارشی‌ای باشد که به صورت پیش‌فرض در درخواست‌های ساده ارسال نمی‌شوند.
- ارسال داده‌های JSON: درخواست‌های POST که بدنه آنها شامل JSON است.


#### درخواست پیش‌فلایت
قبل از ارسال درخواست DELETE`، مرورگر یک درخواست `OPTIONS به سرور ارسال می‌کند:

OPTIONS /resource/1 HTTP/1.1
Host: api.example.com
Origin: http://client.example.com
Access-Control-Request-Method: DELETE
Access-Control-Request-Headers: Authorization


#### پاسخ سرور به درخواست پیش‌فلایت
اگر سرور اجازه دهد، پاسخ به این درخواست به شکل زیر خواهد بود:

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: http://client.example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Authorization
Access-Control-Allow-Credentials: true


اگر سرور اجازه ندهد، درخواست اصلی ارسال نخواهد شد و مرورگر درخواست DELETE را مسدود می‌کند.


👑 @gopher_academy | 💸 Donate | 💋 Boost
👍4🎉1💋1
📌 Senior Backend Engineer (all genders) - Golang

📝 Type: Visa Sponsorship
🌍 Relocation Package:

🏢 Company: urban sports club

📍 Location: SPAIN

⌨️ Category: #Programming

🔗 Tags: #golang #gcp #c #saas #aws #cloud


👑 @gopher_academy
🔥3🎉2
ادیتور zed
ادیتور خفن و سریعی هست توی عکس هم معلومه
پیشنهاد میدم حتما تستش کنید
سرعتش واقعا خوبه

اونایی که گولنگ کار می کنن از کانفیگ زیر استفاده کنن
کافیه که توی ادیتور لاگین کنن و بعد برن قسمت تنظیمات اونجا همین فایل پایین رو کپی پیست کننید داخلش


👇👇👇👇👇

👑 @gopher_academy
🔥2🎉1🍾1
Gopher Academy
ادیتور zed ادیتور خفن و سریعی هست توی عکس هم معلومه پیشنهاد میدم حتما تستش کنید سرعتش واقعا خوبه اونایی که گولنگ کار می کنن از کانفیگ زیر استفاده کنن کافیه که توی ادیتور لاگین کنن و بعد برن قسمت تنظیمات اونجا همین فایل پایین رو کپی پیست کننید داخلش 👇👇👇👇👇
کانفیگ مخصوص گولنگ و سایر ابزارهاش
{
"auto_update_extensions": {
"sql": true,
"docker-compose": true,
"dockerfile": true,
"make": true
},
"vim_mode": false,
"ui_font_size": 16,
"buffer_font_size": 16,
"theme": {
"mode": "system",
"light": "One Light",
"dark": "One Dark"
},
"copy_on_select": true,
"autosave": {
"after_delay": {
"milliseconds": 100
}
},
"scrollbar": {
"show": "auto",
"cursors": true,
"git_diff": true,
"search_results": true,
"selected_symbol": true,
"diagnostics": true
},
"hints": {
"assignVariableTypes": true,
"compositeLiteralFields": true,
"compositeLiteralTypes": true,
"constantValues": true,
"functionTypeParameters": true,
"parameterNames": true,
"rangeVariableTypes": true
}
}
‍‍



👑 @gopher_academy
8👍1🎉1💋1
در اینجا یک مثال از نحوه پیاده‌سازی درخواست‌های پیش‌فلایت CORS در یک سرور Go با استفاده از بسته net/http آمده است:

package main

import (
"net/http"
)

func main() {
http.HandleFunc("/", handleRequest)

// اجرای سرور HTTP در پورت 8080
http.ListenAndServe(":8080", nil)
}

func handleRequest(w http.ResponseWriter, r *http.Request) {
// تنظیم هدرهای CORS
w.Header().Set("Access-Control-Allow-Origin", "http://client.example.com")
w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization")
w.Header().Set("Access-Control-Allow-Credentials", "true")

// پاسخ به درخواست‌های پیش‌فلایت
if r.Method == http.MethodOptions {
w.WriteHeader(http.StatusNoContent)
return
}

// منطق درخواست اصلی
if r.Method == http.MethodDelete {
// منطق حذف منابع
w.WriteHeader(http.StatusOK)
w.Write([]byte(`{"message": "Resource deleted"}`))
return
}

// مدیریت سایر درخواست‌ها
w.WriteHeader(http.StatusMethodNotAllowed)
}


این کد یک سرور HTTP ساده را پیاده‌سازی می‌کند که درخواست‌های پیش‌فلایت CORS را مدیریت می‌کند و در صورت دریافت درخواست‌های `DELETE`، یک پاسخ مناسب برمی‌گرداند. برای درخواست‌های پیش‌فلایت، سرور با یک وضعیت 204 (بدون محتوا) پاسخ می‌دهد و هدرهای CORS مورد نیاز را تنظیم می‌کند.


👑 @gopher_academy | 💸 Donate | 💋 Boost
👍6🔥1🕊1
کنت بک (Kent Beck)
کنت بک خالق برنامه‌سازی مفرط و یکی از 17 بنیان‌گذار توسعه نرم‌افزاری چابک است. او درباره برنامه نویسی می‌گوید:
کدی بنویسید که کار کند، درست و اصولی باشد و سریع اجرا شود.


خوش‌بینی، یک آفت شغلی در برنامه‌ نویسی است. بازخورد گرفتن از کاربران نیز درمان آن است.

من یک برنامه نویس عالی نیستم. من فقط یک برنامه نویس خوب با عادات عالی هستم.


👑 @gopher_academy
👍13🍾1
✍️Rouzbeh SabzeheiRouzbeh Sabzehei

این یه مقاله خیلی جالب از Quickwit هست

که نشون میده چجوری بایننس ۲۱ میلیون خط معادل ۱۸ گیگ لاگ در ثانیه رو تونسته با Quickwit ذخیره و اسکیل کنه

و در مقایسه با Elasticsearch که قبلا استفاده میکردن توسنته ۵ برابر هزینه های پردازشی و ۲۰ برابر هزینه های ذخیره سازی رو کمتر کنه.

نرم افزار Quickwit یک search engine بسیار بهینه نوشته شده با زبان Rust هست

❇️ https://quickwit.io/blog/quickwit-binance-story


👑 @gopher_academy
👍5🔥4🍾3
آسیب پذیری افشای اطلاعات مسافران بروی پروتکل MQTT

https://vrgl.ir/LfP5x

👑 @gopher_academy
👍10🕊1🍓1
جان جانسون (John Johnson)
جان جانسون مدرس سیستم های اطلاعات کامپیوتری برای گروه بازرگانی درباره برنامه نویسی نقل قولی دارد که می‌گوید:
اول مشکل را حل کنید. سپس، کدش را بنویسید.



👑 @gopher_academy
👍92💯1🍾1💅1
🎃🚬

👑 @gopher_academy
💊12🎃4🕊2🍾2💯1💋1💅1
کریستین هایلمن (Christian Heilmann)
کریستین هایلمن مدیر برنامه اصلی در مایکروسافت، 20 سال آخر عمر خود را وقف کارکرد و پیشرفت وب کرد. او نویسنده چندین کتاب در زمینه جاوا اسکریپت و کتاب راهنمای توسعه‌دهندگان است. او می‌گوید:

شباهت Java با JavaScript مانند شباهت Car با Carpet است.


👑 @gopher_academy
👍114🍾2🔥1🎃1
📌 Software Engineer (all genders) Golang for Retail Operations

📝 Type: Visa Sponsorship
🌍 Relocation Package:

🏢 Company: zalando

📍 Location: GERMANY

⌨️ Category: #Programming

🔗 Tags: #react #golang #kubernetes #aws #microservices #cloud #sql


👑 @gopher_academy
💋3👍2
📢درود به همگی 📢

🚦دوستانی که دنبال تبادل و یا تبلیغ هستن با چنل ما

🔹 به ای دی زیر می تونن پیام بدن👇

📉 @gopher_ads


👑 @gopher_academy
💋5🍾2👍1
دن سالومون (Dan Salomon)
گاهی‌ اوقات بهتر است در روز تعطیل، در رختخواب خوابید تا اینکه تمام هفته‌ی بعد را مجبور به دیباگ کردن کدهای آن روز، تعطیل کرد.




👑 @gopher_academy
👍10🔥1🍓1🎃1💅1
📌 Principal Backend Engineer (Java/Golang) - infrastructure

📝 Type: Visa Sponsorship
🌍 Relocation Package:

🏢 Company: bybit

📍 Location: TAIWAN

⌨️ Category: #Programming

🔗 Tags: #java #golang #grpc #cryptocurrency #storage #linux


📌 Team Lead

📝 Type: Visa Sponsorship
🌍 Relocation Package:

🏢 Company: exness

📍 Location: CYPRUS

⌨️ Category: #Programming

🔗 Tags: #python #react #typescript #golang #kubernetes #paas #scrum


👑 @gopher_academy
👍2💋21🎃1💊1
نیکیتا پوپوف (Nikita Popov)
نیکیتا پوپوف در حال حاضر مهندس ارشد نرم‌افزار در شرکت RedHat است. قبل از RedHat، او در شرکت JetBrains به عنوان یک توسعه‌دهنده اصلی برای پروژه PHP کار می‌کرد. او می‌گوید:

اRuby آشغال است. PHP فوق‌العاده است



👑 @gopher_academy
👍11🎃8🏆2🍓1🍾1💋1💅1💊1
برای یادگیری زبان برنامه‌نویسی Go (Golang)، مجموعه‌ای از بهترین کتاب‌ها را می‌توان معرفی کرد که توسط توسعه‌دهندگان برجسته و شناخته شده نوشته شده‌اند. این کتاب‌ها می‌توانند به شما کمک کنند تا از سطح مبتدی تا پیشرفته، مهارت‌های خود را در Golang ارتقا دهید.

در زیر لیستی از بهترین کتاب‌ها در زمینه Golang آورده شده است:

🔻بهترین کتاب‌ها برای یادگیری Golang

1. The Go Programming Language
   - نویسندگان:
Alan A. A. Donovan و Brian W. Kernighan
   - سطح: مبتدی تا متوسط
   - خلاصه: این کتاب یکی از جامع‌ترین و پرطرفدارترین منابع برای یادگیری Go است. با استفاده از مثال‌های عملی و توضیحات دقیق، به خوانندگان کمک می‌کند تا به خوبی با اصول و مفاهیم Go آشنا شوند.

2. Go in Action
   - نویسندگان:
William Kennedy, Brian Ketelsen, Erik St. Martin
   - سطح: مبتدی تا متوسط
   - خلاصه: این کتاب به خوانندگان کمک می‌کند تا به سرعت مفاهیم پایه‌ای Golang را یاد بگیرند و آن‌ها را در پروژه‌های واقعی به کار بگیرند. نویسندگان با تجربه خود، نکات عملی و مفید را به اشتراک می‌گذارند.

3. Learning Go
   - نویسنده:
Jon Bodner
   - سطح: مبتدی
   - خلاصه: این کتاب برای افرادی که تازه با Golang آشنا می‌شوند مناسب است و با زبانی ساده و روان، مفاهیم اصلی را به خوانندگان آموزش می‌دهد.

4. Head First Go
   - نویسنده:
Jay McGavren
   - سطح: مبتدی تا متوسط
   - خلاصه: این کتاب از سری کتاب‌های "Head First" است که با رویکردی تعاملی و تصویری به آموزش مفاهیم می‌پردازد. این رویکرد کمک می‌کند تا یادگیری تعاملی و مؤثرتری داشته باشید.

5. Introducing Go
   - نویسنده:
Caleb Doxsey
   - سطح: مبتدی
   - خلاصه: این کتاب یک راهنمای فشرده و سریع برای آشنایی با مفاهیم پایه‌ای Go است. برای کسانی که می‌خواهند به سرعت با اصول Go آشنا شوند، مناسب است.

6. Go Programming Blueprints
   - نویسنده:
Mat Ryer
   - سطح: متوسط تا پیشرفته
   - خلاصه: این کتاب بیشتر بر روی پروژه‌های کاربردی و مثال‌های عملی تمرکز دارد و به خوانندگان کمک می‌کند تا با استفاده از Go، برنامه‌های کاربردی واقعی بنویسند.

7. Concurrency in Go
   - نویسنده:
Katherine Cox-Buday
   - سطح: متوسط تا پیشرفته
   - خلاصه: این کتاب به طور خاص بر روی مفاهیم همزمانی (Concurrency) در Go تمرکز دارد. برای کسانی که می‌خواهند به عمق مباحث پیشرفته همزمانی در Go پی ببرند، مناسب است.

8. Go Web Programming
   - نویسنده:
Sau Sheong Chang
   - سطح: متوسط
   - خلاصه: این کتاب به خوانندگان کمک می‌کند تا نحوه ساخت برنامه‌های وب با استفاده از Golang را یاد بگیرند. شامل مثال‌های عملی و کاربردی برای توسعه‌دهندگان وب است.

9. Mastering Go
   - نویسنده:
Mihalis Tsoukalos
   - سطح: پیشرفته
   - خلاصه: این کتاب برای توسعه‌دهندگانی که می‌خواهند به سطح بالاتری از مهارت در Golang برسند، مناسب است. شامل مباحث پیشرفته و نکات کاربردی برای حرفه‌ای‌ها است.

10. Go Design Patterns
    - نویسندگان:
Mario Castro Contreras, Andrey Breslav
    - سطح: متوسط تا پیشرفته
    - خلاصه: این کتاب به خوانندگان کمک می‌کند تا با الگوهای طراحی در Golang آشنا شوند و از آن‌ها در پروژه‌های خود استفاده کنند.

🔻 نتیجه‌گیری
این لیست از کتاب‌ها می‌تواند به شما کمک کند تا به صورت جامع و مرحله به مرحله زبان برنامه‌نویسی Golang را یاد بگیرید و مهارت‌های خود را به سطح بالاتری ارتقا دهید. بسته به سطح دانش و نیازهای خود، می‌توانید یکی یا چند مورد از این کتاب‌ها را انتخاب کرده و مطالعه کنید.


👑 @gopher_academy
👍14🔥2🍾2
📌 BackEnd (Golang) Engineer

📝 Type: Visa Sponsorship
🌍 Relocation Package:

🏢 Company: moon active

📍 Location: POLAND

⌨️ Category: #Programming

🔗 Tags: #python #golang #redis #rabbitmq #gcp #grpc #sqs #c #server #kubernetes #aws #docker #devops #cloud #scrum #sql


👑 @gopher_academy
👍2🍾2💯1
کوری هاوس (Cory House)
کوری هاوس متخصص React و JavaScript است. کوری مشاور اصلی در reactjsconsulting.com است. او می‌گوید:

سورس‌کد مثل یک جوک (لطیفه) است؛ اگه مجبور به توضیح آن شدید، بدانید که اصلاً خوب نوشته نشده است.



👑 @gopher_academy
👍12
چقدر از chat gpt استفاده می کنید
Final Results
92%
اگر نیازم بشه
10%
اطمینانی ندارم بهش
🎃1