Dev Perfects
41 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from Gopher Academy
برای ایجاد یک نمونه ساده از چگونگی کار با Nginx و Golang، می‌توانید یک سرور وب ساده در Golang راه‌اندازی کنید و سپس Nginx را به عنوان یک پروکسی معکوس (reverse proxy) برای این سرور پیکربندی کنید.

### 1. ایجاد سرور وب ساده در Golang

ابتدا یک سرور وب ساده با استفاده از Golang ایجاد کنید. این سرور یک پیام خوشامدگویی را در پاسخ به درخواست‌های HTTP ارسال می‌کند.

// main.go
package main

import (
"fmt"
"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, welcome to your subdomain!")
}

func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}

فایل بالا را به نام main.go ذخیره کنید و سپس با استفاده از دستور زیر سرور را اجرا کنید:

go run main.go

این سرور اکنون در حال اجرا بر روی پورت 8080 است و به هر درخواستی پاسخ می‌دهد.

### 2. پیکربندی Nginx به عنوان پروکسی معکوس

حال باید Nginx را به گونه‌ای پیکربندی کنید که به عنوان یک پروکسی معکوس عمل کند و درخواست‌ها را به سرور Golang ارسال کند.

ابتدا مطمئن شوید که Nginx نصب شده است. اگر نصب نشده، می‌توانید آن را با استفاده از دستورات زیر نصب کنید:

# On Ubuntu/Debian
sudo apt update
sudo apt install nginx

# On CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx

سپس فایل پیکربندی Nginx را ویرایش کنید. فایل پیکربندی معمولاً در مسیر /etc/nginx/nginx.conf یا /etc/nginx/sites-available/default قرار دارد. محتوای فایل پیکربندی می‌تواند به شکل زیر باشد:

server {
listen 80;
server_name yourdomain.com *.yourdomain.com;

location / {
proxy_pass https://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

در این پیکربندی:
- listen 80;
باعث می‌شود Nginx به درخواست‌های HTTP روی پورت 80 گوش دهد.
- server_name yourdomain.com *.yourdomain.com;
باعث می‌شود Nginx به درخواست‌های دامنه اصلی و تمامی ساب‌دامین‌ها پاسخ دهد.
- proxy_pass https://127.0.0.1:8080;
درخواست‌ها را به سرور Golang که روی پورت 8080 اجرا می‌شود، هدایت می‌کند.
-
proxy_set_header
هدرهای HTTP مورد نیاز را تنظیم می‌کند.

### 3. راه‌اندازی و تست

بعد از ویرایش پیکربندی، Nginx را راه‌اندازی یا مجدداً راه‌اندازی کنید تا تنظیمات جدید اعمال شوند:

sudo systemctl restart nginx

اکنون Nginx به عنوان پروکسی معکوس عمل می‌کند و درخواست‌ها را به سرور Golang شما ارسال می‌کند. با ورود به دامنه yourdomain.com یا هر یک از ساب‌دامین‌های آن در مرورگر، باید پیام "Hello, welcome to your subdomain!" را مشاهده کنید.

### نتیجه‌گیری

با این پیکربندی، شما یک سرور Golang ساده دارید که توسط Nginx به عنوان پروکسی معکوس پشتیبانی می‌شود. Nginx درخواست‌ها را به سرور Golang ارسال می‌کند و پاسخ‌ها را به کاربر بازمی‌گرداند. این تنظیمات به شما اجازه می‌دهد تا ساب‌دامین‌های داینامیک را به راحتی مدیریت کنید و سرور Golang خود را به طور موثرتری به کاربران ارائه دهید.

👑 @gopher_academy
خیلی وسوسه انگیزه ولی چرا نباید از فیلدهای جیسون در پایگاه‌های داده رابطه‌ای مانند PostgreSQL و MySQL برای داده‌های تراکنشی استفاده کرد؟

به دلایل زیر:

١) کاهش کارایی جستجو و عملکرد:
جستجو و فیلتر کردن داده‌ها در یک فیلد JSON به طور کلی کندتر از جستجو در جداول ساختاریافته است. برای داده‌های تراکنشی که نیاز به جستجوهای سریع و مکرر دارند، کار با فیلدهای JSON می‌تواند منجر به کاهش کارایی شود. این به دلیل عدم امکان استفاده کامل از ایندکس‌های کارآمد درون فیلدهای JSON است.

۲) فرم ها:
پایگاه داده‌های رابطه‌ای بر اساس طراحی ساختاریافته جداول با کلیدهای اصلی و خارجی استوار هستند تا بتوان روابط بین داده‌ها را بهینه مدیریت کرد. استفاده از فیلدهای JSON می‌تواند به ایجاد داده‌های غیر نرمال (Denormalized) منجر شود، که این امر مدیریت و به‌روزرسانی داده‌ها را پیچیده‌تر می‌کند و می‌تواند منجر به ناسازگاری داده‌ها شود.

۳) مشکل در صحت داده‌ها (Data Integrity):
در جداول ساختاریافته، می‌توان محدودیت‌هایی مانند نوع داده و روابط بین جداول را تعریف کرد که صحت داده‌ها را تضمین کند. در JSON، این نوع کنترل‌ها به طور ذاتی وجود ندارد و داده‌ها به صورت آزاد وارد می‌شوند، که می‌تواند منجر به ورود داده‌های نادرست یا ناسازگار شود.

۴) گزارش گیری:
بسیاری از ابزارهای گزارش‌گیری و تحلیلی به داده‌های ساختاریافته نیاز دارند. داده‌های ذخیره شده به صورت JSON نیاز به تجزیه و تبدیل به قالب‌های ساختاریافته دارند، که این کار اضافه‌ای است و ممکن است بر سرعت و کارایی تحلیل داده‌ها تأثیر منفی بگذارد.

۵) افزایش پیچیدگی مدیریت تراکنش‌ها:
مدیریت تراکنش‌ها و قفل‌گذاری داده‌ها (locking) برای فیلدهای JSON در برخی موارد پیچیده‌تر می‌شود. همچنین اگر بخواهید چندین مقدار درون یک فیلد JSON را همزمان به‌روزرسانی کنید، ممکن است کنترل نسخه‌گذاری و سازگاری داده‌ها دشوارتر شود.

‏۶) مشکل در ایندکس‌گذاری کارآمد:
اگرچه PostgreSQL و MySQL قابلیت ایندکس‌گذاری محدود روی فیلدهای JSON را فراهم می‌کنند، اما این ایندکس‌ها در مقایسه با ایندکس‌های سنتی روی جداول ساختاریافته به اندازه کافی کارآمد نیستند و ممکن است در حجم‌های بزرگ داده باعث کاهش عملکرد شوند.


چکار باید کرد؟

۱- استفاده ترکیبی از فیلدهای رابطه‌ای و فیلد JSON
۲- ایجاد جداول مرتبط برای داده‌های غیرساختاریافته با این شرط که حجم جیسون شما محدوده
۳- ایندکس‌ فیلد JSON (فقط در صورت استفاده)
۴ - طرحی برای تبدیل و مهاجرت تدریجی
۵ - استفاده از NoSQL در کنار پایگاه داده رابطه‌ای


چکار نباید کرد؟

۱- ذخیره کل داده‌های مهم در فیلد JSON
۲- عدم استفاده از ایندکس‌گذاری برای فیلد JSON
۳- استفاده از JSON به جای نرمال‌سازی داده‌ها
۴- نادیده گرفتن نیازهای گزارش‌گیری و تحلیلی
۵- استفاده از JSON برای داده‌هایی که اغلب تغییر می‌کنند
۶- عدم در نظر گرفتن تراکنش‌ها و قفل‌گذاری مناسب
۷- ذخیره‌سازی داده‌های حجیم به صورت JSON
۸- عدم طراحی برای مهاجرت به ساختارهای بهتر
۹- عدم استفاده از ابزارها و توابع مناسب برای کار با JSON

خلاصه:
با توجه به این نکات، برای داده‌های تراکنشی که نیاز به عملکرد سریع، جستجوهای مکرر، و یکپارچگی داده دارند، بهتر است از جداول ساختاریافته با طرح‌های نرمال استفاده شود و JSON را تنها در مواردی به کار برد که نیاز به انعطاف‌پذیری زیاد در ساختار داده‌ها دارید، مانند ذخیره‌سازی داده‌های غیرساختاریافته یا لاگ‌های پیچیده.
درصورت نیاز اجتناب ناپذیر مطمئن باشید که با برنامه این کار رو انجام می‌دهید در غیر اینصورت خبر بدی دارم براتون‏، به زودی مشکل پرفرمنس جدی خواهید داشت و کسب و کارتون با ریسک جدی روبرو خواهد شد. اگر هزینه برای شما مطرح نیست از گزینه هایی مثل Cassandra همینطور Google Bigtable به راحتی رد نشید.

@DevTwitter | <Mohammad Javidan Darugar/>
Forwarded from Meitix
#کتاب یادداشت های sql
Forwarded from Yasha
"پیدا کردن هویت دیگران در ربات ناشناس تلگرام - باگ جدید"
Forwarded from Python BackendHub (Mani)
This media is not supported in your browser
VIEW IN TELEGRAM
یک توصیه خوب برای جونیور ها و کسایی که تازه شروع کردن
@PyBackendHub
Forwarded from  (Amir Hossein "Amiria" Maher)
از این به بعد، کانالم با همراهی یارم اداره می‌شه. ایشون متخصّص شبکه هستن و قراره از این دنیا، برامون بنویسن.
امیدوارم که این تغییر، باعث افزایش مطالب و مفید بودن کانال بشه. ممنونم که همراه ما هستید. ❤️

راستی، اسم کانال رو هم عوض کردم، یه وقت گممون نکنید. :))

#موقت
Forwarded from Yasha
حالا میتونم بفهمم اونی که ۶ ماه پیش هی پیام میداد می‌گفت عکس پاتو بفرست کی بود.
Forwarded from Abolfazl Devs (Abolfazl)
اگه شماهم لینوکس و ویندوز رو کنار هم به صورت بوت چندگانه یا دوال بوت (Doal Boot) داشته باشید و مثل من زیاد بین ویندوز و لینوکس سوییچ کنید احتمالا با این برخورد داشتید که ساعت های یکیشون یا همشون به هم میخوره و هر دفعه باید تنظیم کنید!

راه حل این مشکل دستور پایینه یه بار که این دستور رو تو ترمینال لینوکستون بزنید مشکل حل میشه:
sudo timedatectl set-local-rtc true


@abolfazl_devs
Forwarded from  (ZiZiGuLu)
سلام. سلام بهتون. 🌸
من زینبم .
میخوام براتون کلی مطالب جدید از شبکه ، لینوکس و دنیاهای دیگه بنویسم
قراره اینجا مثل امیریا یه سری مطالب قرار بدم(یه نمونش اینه که به firewall بگم  دیواره ی اتشین😬) .
اگه پیشنهادی دارید در رابطه با مطالب یا میخواهید به طور خاصی ارائه شن حتما مطرح کنید.
Forwarded from Yasha
توی این ویدیو باهمدیگه یاد می‌گیریم ک هویت کسانی که توی ربات‌های ناشناس به ما پیام میدن رو پیدا کنیم. جوری توضیح دادم که کسی که دانش برنامه نویسی نداره هم بتونه انجامش بده. لطفا Share کنید تا بقیه هم حواسشون باشه تا یوقت اتفاق بدی برای کسی خدای‌نکرده رخ نده.

🔗 youtube.com/watch?v=At6hER0616g

@Yasha
آراسته یکی از ابزار های باحال هستش که توسط عرفان خیرالهی عزیز نوشته شده، کارکردش هم خیلی سادست مثل figlet بهش متن میدید و داخل ترمینال براتون به صورت اسکی آرت چاپ می‌کنه.

داخل aur هستش اگه بخواید نصب کنید:

paru -S araste-git


روی توزیع‌های دیگه هم اگه خواستید نصبش کنید از روش داخل مخزن گیتش برید:


🔗 https://github.com/ekm507/araste/

@SohrabContents
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Yasha
بچه‌ها لطفا لایک کنید به بقیه هم یوتیوب ساجستش کنه🥲 تقریبا هر سری ویدیو گذاشتم حمایت کردید واقعا دمتون‌گرم، احتمالا ویدیو گذاشتن توی یوتیوب رو دیگه بیخیال نشم.
Forwarded from یک برنامه نویس تنبل (The Lazy Raymond)
🔶 به گزارش scmp هواوی بالاخره آماده است تا HarmonyOS NEXT را معرفی کند و آن را به گوشی‌های موجود در بازار بیاورد. این اقدام به‌عنوان تلاشی برای کنار گذاشتن کامل اندروید صورت می‌گیرد. سیستم‌عامل جدید از اپلیکیشن‌های اندروید پشتیبانی نخواهد کرد، به‌همین‌دلیل تلاش‌های شرکت برای توسعه‌ی اپلیکیشن‌های مبتنی‌بر این سیستم‌عامل ادامه دارد.

هواوی چند روز دیگر به‌طور رسمی سیستم‌عامل اختصاصی خود را در مقابل اندروید و iOS رونمایی می‌کند.

#خبر

@TheRaymondDev
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
🔸خبر خوب لینوکسی:
🔸انتشار نسخه جدید اوبونتو
24.10.1

🔸این نسخه از امروز قابل دسترسی و دانلود است.
جزئیات کامل تغییرات در نسخه جدید به علت زیاد بودن تغییرات و توضیحات، در پست بعدی در قالب فایل pdf ارسال خواهم کرد.

https://releases.ubuntu.com/oracular/
Media is too big
VIEW IN TELEGRAM
نگاهی گذرا به پیامدهای وضعیت فاجعه‌بار اینترنت ....

© HamedBD

🔍 ircf.space
@ircfspace‏⁧
Media is too big
VIEW IN TELEGRAM
نیبرلینک سیستمی هست که اجازه میده تا افرادی که در شعاع دسترسی یک دستگاه #استارلینک و Extender های اون قرار دارن، حتی در شرایطی که اینترنت داخلی و بین‌المللی کشور به‌طور کامل شات‌داون شده، به اینترنت امن و پرسرعت دسترسی داشته باشن.
این‌سیستم یک OpenWRT OS شخصی‌سازی شده‌س که به ادمین امکان میده تا اینترنت استارلینک رو با کاربران دیگه (مثلا همسایه‌ها) به اشتراک بذاره. #نیبرلینک درحال حاضر امکان مدیریت کاربران، تفکیک مسیر (split tunneling) و ماسک‌کردن آی‌پی با استفاده از وی‌پی‌ان رو فراهم می‌کنه، اما در آینده کاربردهای دیگه از جمله whitelisting, blacklisting و مدیریت ترافیک به اون افزوده میشه ...

💡 github.com/nasnet-community/neighbor-link

🔍 ircf.space
@ircfspace‏⁧
اختلال به‌دلیل قطع برق!

🔍 ircf.space
@ircfspace‏⁧
Forwarded from  (Amir Hossein "Amiria" Maher)
Media is too big
VIEW IN TELEGRAM
یکم غر بزنیم. :))

#موقت
مایکروسافت درجواب به کاربراش که گفتن ویندوز ۱۱ روی سیستممون نصب نمیشه، برگشته گفته برید سیستم جدید بخرید.


متأسفانه این قضیه مثل همون قضیه خب خودت بمال، کار به جایی نمیبره.

اگه ویندوز ۱۰ دارید و نمی‌تونید ویندوز ۱۱ نصب کنید، توصیه می‌کنم یکی از توزیع‌های لینوکسی رو امتحان کنید :)



@SohrabContents