Forwarded from code2 - تکنولوژی و فناوری (Mahdi Taleghani)
⚡️ Files.io
#منابع_رایگان
معرفی سرویس Filess.io
📌 سرویس رایگان ساخت و مدیریت دیتابیس
📌مناسب برای برنامهنویسان و توسعهدهندگان که نیاز به دیتابیس رایگان برای پروژه های کوچیک یا mvp دارند.
📌انواع دیتابیس:
✅ MySQL
✅ MongoDB
✅ PostgreSQL
✅ MariaDB
توی این ویدیو این وبسایت رو معرفی کردم و نحوه ساخت یک دیتابیس رو در اون توضیح دادم. همین طور با استفاده از expressjs و postgresql یک پروژه خیلی ساده نوشتیم تا دیتا رو در دیتابیس ذخیره کنیم.
ویدیو رو از اینجا تماشا کنید:
https://youtu.be/t1xMmKPNQ8w
اگر این ویدیو براتون مفید بود، دکمه لایک رو بزنید و برای ویدیوهای بیشتر کانال رو سابسکرایب کنید!
در این مجموعه ویدیوها به معرفی منابع رایگان میپردازیم که برنامهنویسان میتوانند به راحتی از آنها استفاده کنند.
کانال کد۲
@code2_ir
#منابع_رایگان
معرفی سرویس Filess.io
📌 سرویس رایگان ساخت و مدیریت دیتابیس
📌مناسب برای برنامهنویسان و توسعهدهندگان که نیاز به دیتابیس رایگان برای پروژه های کوچیک یا mvp دارند.
📌انواع دیتابیس:
✅ MySQL
✅ MongoDB
✅ PostgreSQL
✅ MariaDB
توی این ویدیو این وبسایت رو معرفی کردم و نحوه ساخت یک دیتابیس رو در اون توضیح دادم. همین طور با استفاده از expressjs و postgresql یک پروژه خیلی ساده نوشتیم تا دیتا رو در دیتابیس ذخیره کنیم.
ویدیو رو از اینجا تماشا کنید:
https://youtu.be/t1xMmKPNQ8w
اگر این ویدیو براتون مفید بود، دکمه لایک رو بزنید و برای ویدیوهای بیشتر کانال رو سابسکرایب کنید!
در این مجموعه ویدیوها به معرفی منابع رایگان میپردازیم که برنامهنویسان میتوانند به راحتی از آنها استفاده کنند.
کانال کد۲
@code2_ir
Forwarded from Linuxor ?
This media is not supported in your browser
VIEW IN TELEGRAM
این گجت یه کامپیوتر کوچیکه که روش کالی لینوکس نصبه و به گوشیتون وصل میشه
از طریق usb tethring یا hotspot گوشیتون با یه SSID و رمز از قبل مشخص شده به شبکه گوشیتون وصل میشه و یه ssh و vnc سرور بالا میاره و از طریق گوشی میتونید بهش کانکت بشین و کنترلش کنید در واقع یه کامپیوتره که روش کالی لینوکس نصب شده.
🐧 @Linuxor
از طریق usb tethring یا hotspot گوشیتون با یه SSID و رمز از قبل مشخص شده به شبکه گوشیتون وصل میشه و یه ssh و vnc سرور بالا میاره و از طریق گوشی میتونید بهش کانکت بشین و کنترلش کنید در واقع یه کامپیوتره که روش کالی لینوکس نصب شده.
🐧 @Linuxor
Forwarded from Gopher Academy
🔵 عنوان مقاله
Maelstrom: A Fast, Contained Test Runner for Multiple Languages
🟢 خلاصه مقاله:
مجموعهای از ابزارها که برای زبانهای برنامهنویسی Go، Rust و Python پشتیبانی میکند، این ابزارها توانایی اجرای تستها در میکرو-کانتینرهای ایزوله را دارند و ادعا میکند که بهراحتی با تستهای موجود شما کار میکنند. این تستها میتوانند هم بر روی ماشین محلی شما و هم در سراسر خوشهای از سرورها اجرا شوند. اطلاعات بیشتر و دسترسی به کد این ابزارها از طریق مخزن GitHub قابل دسترس است. این امکان اطمینان میدهد که تستها در محیطهای کنترلشده و جدا شده به خوبی عمل کنند و به توسعهدهندگان این قدرت را میدهد که بتوانند بدون نگرانی از تداخلهای محتمل، تستهای خود را بهطور مؤثری اجرا کنند.
🟣لینک مقاله:
https://golangweekly.com/link/159870/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Maelstrom: A Fast, Contained Test Runner for Multiple Languages
🟢 خلاصه مقاله:
مجموعهای از ابزارها که برای زبانهای برنامهنویسی Go، Rust و Python پشتیبانی میکند، این ابزارها توانایی اجرای تستها در میکرو-کانتینرهای ایزوله را دارند و ادعا میکند که بهراحتی با تستهای موجود شما کار میکنند. این تستها میتوانند هم بر روی ماشین محلی شما و هم در سراسر خوشهای از سرورها اجرا شوند. اطلاعات بیشتر و دسترسی به کد این ابزارها از طریق مخزن GitHub قابل دسترس است. این امکان اطمینان میدهد که تستها در محیطهای کنترلشده و جدا شده به خوبی عمل کنند و به توسعهدهندگان این قدرت را میدهد که بتوانند بدون نگرانی از تداخلهای محتمل، تستهای خود را بهطور مؤثری اجرا کنند.
🟣لینک مقاله:
https://golangweekly.com/link/159870/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from Yasha
با کد تخفیف
🔗 @bestrealitybot
ظرفیت: ۳۰ نفر
Yasha میتونید از ربات زیر یه کانفیگ vpn یک ماهه ۳۰ گیگی رایگان بگیرید:🔗 @bestrealitybot
ظرفیت: ۳۰ نفر
Forwarded from Yasha
چون زود تموم شد ۵۰ نفر ۲۰ گیگی هم شارژ کردن :))
کد هدیه:
کد هدیه:
Yasha40Forwarded from A M I N
Forwarded from یک برنامه نویس تنبل (The Lazy Raymond)
🔶 سلام دوستان
دنبال اسمی برای این قالب وبلاگ وردپرس می گردم و چون رایگان منتشر میشه و اوپن سورسه...
ممنون میشم اسم خوب پیشنهاد بدید.
#موقت
@TheRaymondDev
دنبال اسمی برای این قالب وبلاگ وردپرس می گردم و چون رایگان منتشر میشه و اوپن سورسه...
ممنون میشم اسم خوب پیشنهاد بدید.
#موقت
@TheRaymondDev
Forwarded from Laravel News
The Inertia.js v2 Beta is Here https://laravel-news.com/inertiajs-v2-beta-is-here
Laravel News
The Inertia.js v2 Beta is Here - Laravel News
The first beta version of Inertia.js v2 was released this week. The core library has been rewritten to support asynchronous requests; unlocking some impressive features, you can now get your hands on!
Forwarded from Laravel News
Mastering Laravel, No Compromises, and SourceDive with Joel Clermont https://laravel-news.com/mastering-laravel-no-compromises-and-sourcedive-with-joel-clermont
Laravel News
Mastering Laravel, No Compromises, and SourceDive with Joel Clermont - Laravel News
In this conversation, Joel Clermont shares insights into his work within the Laravel ecosystem, including his educational initiatives through Mastering Laravel, the impact of daily tips, and the community he has built.
Forwarded from CleverDevs (CleverDevs Ads)
🌐 یک زبان برنامهنویسی همهکاره و پردرآمد:
💻 از ساخت اپلیکشن تا برنامهنویسی بک-اند وبسایتها، از اینترنت اشیاء تا وب اپها همه با Asp.Net ممکنه!
🟣 در دومین بوتکمپ Asp.Net دانشکار اصولی این زبان رو یادبگیر و استخدام شو.
ثبتنام
👇👇
🔗 https://dnkr.ir/kKzxN
💻 از ساخت اپلیکشن تا برنامهنویسی بک-اند وبسایتها، از اینترنت اشیاء تا وب اپها همه با Asp.Net ممکنه!
🟣 در دومین بوتکمپ Asp.Net دانشکار اصولی این زبان رو یادبگیر و استخدام شو.
ثبتنام
👇👇
🔗 https://dnkr.ir/kKzxN
Forwarded from DevTwitter | توییت برنامه نویسی
بتونم امروز تو وقت خالیم بخش اول این پروژه شخصی رو تموم کنم. هدف اینه که فایل .torrent بگیره و دانلودش کنه. بعد magnet link رو هم بهش اضافه میکنم. یوزر دیتابیس رو با diesel هندل میکنم و در نهایت با tauri یه اپ دسکتاپ برای دانلود تورنت باید بشه ازش در آورد.
https://github.com/Soroushsrd/Torrs
@DevTwitter | <Soroush Sardashti/>
https://github.com/Soroushsrd/Torrs
@DevTwitter | <Soroush Sardashti/>
Forwarded from DevTwitter | توییت برنامه نویسی
▪️ فروش ویژه اکانت GitHub Copilot
💸 فقط با پرداخت ۹۹ هزار تومان
🌟مزایای اکانت GitHub Copilot:
✅ کدنویسی سریعتر و هوشمندانهتر
✅ پیشنهادات خودکار و دقیق برای کدها
✅ کاهش زمان دیباگ و افزایش بهرهوری
✅ یادگیری و الهامگیری از هوش مصنوعی
فرصت طلایی برای برنامهنویسان خلاق!🚀
همین حالا خرید کنید و تجربه کدنویسی حرفهای را به دست آورید. 😀
نکته : این پلن روی اکانت هایی قابل فعال هست که تا به حال این اکانت تریال را فعال نکردند
⭐️ جهت خرید به ایدی زیر پیام بدید
🆔 @GeekGroveSupport
✉️ کانال تلگرام ما
🆔 @geek_grove
💸 فقط با پرداخت ۹۹ هزار تومان
🌟مزایای اکانت GitHub Copilot:
✅ کدنویسی سریعتر و هوشمندانهتر
✅ پیشنهادات خودکار و دقیق برای کدها
✅ کاهش زمان دیباگ و افزایش بهرهوری
✅ یادگیری و الهامگیری از هوش مصنوعی
فرصت طلایی برای برنامهنویسان خلاق!🚀
همین حالا خرید کنید و تجربه کدنویسی حرفهای را به دست آورید. 😀
نکته : این پلن روی اکانت هایی قابل فعال هست که تا به حال این اکانت تریال را فعال نکردند
⭐️ جهت خرید به ایدی زیر پیام بدید
🆔 @GeekGroveSupport
✉️ کانال تلگرام ما
🆔 @geek_grove
Forwarded from DevTwitter | توییت برنامه نویسی
بچه ها من با react و express یدونه برنامه تبدیل عکس به PDF نوشتم برای فان، کلا UI و پرفورمنسش باحال شده ، خودکار هم بعد 30 ثانیه لینک دانلود expire میشه و فایل ها پاک میشن ، اگه دوست داشتید توی github بهش استار بدید و خودتونم استفاده کنید ،چیز کاربردیه
https://github.com/Mehranlip/XImage-to-PDF
@DevTwitter | <Mehran/>
https://github.com/Mehranlip/XImage-to-PDF
@DevTwitter | <Mehran/>
Forwarded from Rust for Python developers
امروز آخرین مصاحبه درخواست همکاریم توی سری اول شرکتهایی که براشون رزومه فرستاده بودم به عنوان
گفتم شاید بد نباشه که تجربیات این ۲-۳ هفته رو در اختیار دوستان بذارم، توجه کنید که هیچکدوم از موقعیتها ایران نبود.
اولین موضوع مشترک توی همه مصاحبهها این بود که بسیار مصاحبههام مفهومی بود، بخش اول مصاحبهها واقعاً تئوری و نحوه عملکرد بخشهای مختلف توی Rust بود
دقیقاً این دوتا مورد ازم سوال شد (دوتا شرکت مختلف) :
https://t.iss.one/pyrust/77
https://t.iss.one/pyrust/82
بعد با توجه به پوزیشن شغلی وارد مفاهیم، سیستم یا بکند یا ... میشدیم که خب اینها خیلی وابسته به زبانبرنامهنویسی نبود.
ولی خیلی جالب بود، هیچکدوم سوال الگوریتم و ساختمان داده نپرسیدند (منظورم توی بخش کد زدن هست.)
تمام موارد چون بعنوان
اما توی کد زدن، با اینکه کار رو در میاوردم ولی دستم کند بود وقتی از
چیزی که من متوجه شدم این بود که حداقل برای پوزیشن جونیور و شاید حتی میدلول باید لیست
برای مثال امروز از من توسعه یک ابزار خواستند که ۷-۸ تا آرگومان توی حالات مختلف میگرفت و یک سری لاگ رو بررسی میکرد چه بصورت
تمام منطقی که بهم داده بودند رو پیادهسازی کردم تقریباً هم سریع بودم ولی وقتی رسیدم به استفاده از
چندروز قبل متوجه این قضیه شدم و بعد از اون دیگه قرار مصاحبهای رو قبول نکردم و به سمت
ها رفتم تا نقطه ضعفهام رو تقویت کنم.
دلیل مصاحبه رفتنم هم همین بود، نقاط ضعف خودم رو پیدا کنم.
راستی
Rust developer/software engineer بود.گفتم شاید بد نباشه که تجربیات این ۲-۳ هفته رو در اختیار دوستان بذارم، توجه کنید که هیچکدوم از موقعیتها ایران نبود.
اولین موضوع مشترک توی همه مصاحبهها این بود که بسیار مصاحبههام مفهومی بود، بخش اول مصاحبهها واقعاً تئوری و نحوه عملکرد بخشهای مختلف توی Rust بود
دقیقاً این دوتا مورد ازم سوال شد (دوتا شرکت مختلف) :
https://t.iss.one/pyrust/77
https://t.iss.one/pyrust/82
بعد با توجه به پوزیشن شغلی وارد مفاهیم، سیستم یا بکند یا ... میشدیم که خب اینها خیلی وابسته به زبانبرنامهنویسی نبود.
ولی خیلی جالب بود، هیچکدوم سوال الگوریتم و ساختمان داده نپرسیدند (منظورم توی بخش کد زدن هست.)
تمام موارد چون بعنوان
junior rust درخواست پر کرده بودم؛ کسی رو میخواستند که بتونه کد بزنه، من توی بخشی که اونها نیازی نداشتند عملکرد خوبی داشتم System design, Software Architecture, ...اما توی کد زدن، با اینکه کار رو در میاوردم ولی دستم کند بود وقتی از
crate ها قرار بود استفاده کنم.چیزی که من متوجه شدم این بود که حداقل برای پوزیشن جونیور و شاید حتی میدلول باید لیست
crate های مهم رو بلد باشی، چون دقیقاً توی مرحله توسعه کد مصاحبه ازت همچین چیزی میخوان.برای مثال امروز از من توسعه یک ابزار خواستند که ۷-۸ تا آرگومان توی حالات مختلف میگرفت و یک سری لاگ رو بررسی میکرد چه بصورت
file و چه بصورت stdin.تمام منطقی که بهم داده بودند رو پیادهسازی کردم تقریباً هم سریع بودم ولی وقتی رسیدم به استفاده از
clap بسیار سرعتم کند شد چون تا امروز از این crate استفاده نکرده بودم و برای args از خود std استفاده میکردم.چندروز قبل متوجه این قضیه شدم و بعد از اون دیگه قرار مصاحبهای رو قبول نکردم و به سمت
Blessed crate ها رفتم تا نقطه ضعفهام رو تقویت کنم.
دلیل مصاحبه رفتنم هم همین بود، نقاط ضعف خودم رو پیدا کنم.
راستی
clap رو هم کامل خوندم و به اندازه کافی یادگرفتم.Telegram
Rust for Python developers
توی گروهی بحث دیدم راجب تفاوت های :
.iter(), .iter_mut(), .into_iter().
و دیدم انگار خیلی از اعضا تفاوت هاش رو درک نکردن برای همین closure های داخل متدهایی که با iterator میاد رو متوجه نمیشدند.
گفتم بزنم به ریشه و چون کانال خودمم مقدمات هست اینجا هم مطلب…
.iter(), .iter_mut(), .into_iter().
و دیدم انگار خیلی از اعضا تفاوت هاش رو درک نکردن برای همین closure های داخل متدهایی که با iterator میاد رو متوجه نمیشدند.
گفتم بزنم به ریشه و چون کانال خودمم مقدمات هست اینجا هم مطلب…
Forwarded from Code Module | کد ماژول (genix)
الگوریتم انتخاب چیست؟ 👽
در علوم کامپیوتر، الگوریتم انتخاب یک الگوریتم برای پیدا کردن کوچکترین (یا بزرگترین) مقدار kth در مجموعه ای از داده های سازمان نیافته هست. این داده ها میتونن لیستی از اعداد، کاراکترها یا حتی اشیا باشن و مقداری رو که پیدا میکنه، kامین مرتبه آمار نامیده میشه. الگوریتم های انتخاب شامل یافتن عنصر حداقل، میانه و حداکثر در مجموعه به عنوان موارد خاص هست. یک الگوریتم انتخاب به طور موثر k امین کوچکترین (یا بزرگترین) عنصر رو از مجموعه ای از داده های نامرتب بازیابی میکنه. این به ویژه برای یافتن مقادیر خاصی مانند حداقل، حداکثر یا میانه مفید هست.
این الگوریتم چطور کار میکنه؟ 🦠
الگوریتمهای انتخاب بهطور مؤثر kامین کوچکترین (یا بزرگترین) عنصر رو در مجموعهای از دادههای نامرتب پیدا میکنه. برخلاف الگوریتمهای مرتبسازی که کل مجموعه رو مرتب میکنه، الگوریتمهای انتخاب بر یافتن یک عنصر خاص تمرکز میکنه. به عنوان مثال لیستی رو در نظر بگیرید که میخوایم با استفاده از الگوریتم انتخاب کوچیکترین(بزرگترین) مقدارش رو پیدا کنیم. این الگوریتم به این صورت کار میکنه:
1. Initialization: با انتخاب یک عنصر اولیه از داده ها شروع می کنیم. این عنصر میتونه هر عنصری در مجموعه باشه.
2. حلقه مقایسه: حلقه ای رو وارد می کنیم که از طریق داده های باقی مانده تکرار میشه. در هر تکرار، عنصر فعلی رو با عنصر اولیه (یا نامزد فعلی برای kامین کوچکترین/بزرگترین) مقایسه میکنه.
3. به روزرسانی کاندید: * اگه عنصر فعلی کوچکتر (برای کوچکترین) یا بزرگتر (برای بزرگترین) از عنصر کاندید باشه، نامزد رو به روز می کنیم. به این معنا که عنصر فعلی کاندیدای بهتری برای kامین کوچکترین/بزرگترین موقعیت میشه.
* اگه عنصر فعلی برابر با نامزد باشه، رفتار خاص به الگوریتم انتخاب بستگی داره. برخی از الگوریتمها ممکن هست با اونها به طور مساوی رفتار کنن، در حالی که برخی دیگر ممکن است مکانیزمی برای قطع رابطه داشته باشن.
4. تکرار: مراحل 2 و 3 تکرار میشه تا زمانی که تمام عناصر مجموعه با نامزد مقایسه بشن.
5. نتیجه: پس از بررسی همه عناصر، عنصر نامزد نهایی به kامین کوچکترین (یا بزرگترین) مقدار در مجموعه تبدیل میشه.
برای درک بهتر، این گیف به بهترین شکل نحوه کار کرد رو نشون میده.
به صورت کلی الگوریتم های انتخاب یک رویکرد هدفمند برای استخراج عناصر خاص از داده های مرتب نشده ارائه میدن. قدرت اونها در بازیابی kامین کوچکترین/بزرگترین عنصر بدون مرتب سازی کل مجموعه نهفته هست. این باعث میشه اون ها رو برای کارهایی مثل یافتن مقادیر حداقل، حداکثر یا میانه در مجموعه داده های مرتب نشده کارآمد باشن.
برای کسب اطلاعات بیشتر مقالات زیر رو بخونید 👇🏻
- Article
- Article
- Article
نحوه پیاده سازی این الگوریتم در js
#algorithm
@CodeModule
در علوم کامپیوتر، الگوریتم انتخاب یک الگوریتم برای پیدا کردن کوچکترین (یا بزرگترین) مقدار kth در مجموعه ای از داده های سازمان نیافته هست. این داده ها میتونن لیستی از اعداد، کاراکترها یا حتی اشیا باشن و مقداری رو که پیدا میکنه، kامین مرتبه آمار نامیده میشه. الگوریتم های انتخاب شامل یافتن عنصر حداقل، میانه و حداکثر در مجموعه به عنوان موارد خاص هست. یک الگوریتم انتخاب به طور موثر k امین کوچکترین (یا بزرگترین) عنصر رو از مجموعه ای از داده های نامرتب بازیابی میکنه. این به ویژه برای یافتن مقادیر خاصی مانند حداقل، حداکثر یا میانه مفید هست.
این الگوریتم چطور کار میکنه؟ 🦠
الگوریتمهای انتخاب بهطور مؤثر kامین کوچکترین (یا بزرگترین) عنصر رو در مجموعهای از دادههای نامرتب پیدا میکنه. برخلاف الگوریتمهای مرتبسازی که کل مجموعه رو مرتب میکنه، الگوریتمهای انتخاب بر یافتن یک عنصر خاص تمرکز میکنه. به عنوان مثال لیستی رو در نظر بگیرید که میخوایم با استفاده از الگوریتم انتخاب کوچیکترین(بزرگترین) مقدارش رو پیدا کنیم. این الگوریتم به این صورت کار میکنه:
1. Initialization: با انتخاب یک عنصر اولیه از داده ها شروع می کنیم. این عنصر میتونه هر عنصری در مجموعه باشه.
2. حلقه مقایسه: حلقه ای رو وارد می کنیم که از طریق داده های باقی مانده تکرار میشه. در هر تکرار، عنصر فعلی رو با عنصر اولیه (یا نامزد فعلی برای kامین کوچکترین/بزرگترین) مقایسه میکنه.
3. به روزرسانی کاندید: * اگه عنصر فعلی کوچکتر (برای کوچکترین) یا بزرگتر (برای بزرگترین) از عنصر کاندید باشه، نامزد رو به روز می کنیم. به این معنا که عنصر فعلی کاندیدای بهتری برای kامین کوچکترین/بزرگترین موقعیت میشه.
* اگه عنصر فعلی برابر با نامزد باشه، رفتار خاص به الگوریتم انتخاب بستگی داره. برخی از الگوریتمها ممکن هست با اونها به طور مساوی رفتار کنن، در حالی که برخی دیگر ممکن است مکانیزمی برای قطع رابطه داشته باشن.
4. تکرار: مراحل 2 و 3 تکرار میشه تا زمانی که تمام عناصر مجموعه با نامزد مقایسه بشن.
5. نتیجه: پس از بررسی همه عناصر، عنصر نامزد نهایی به kامین کوچکترین (یا بزرگترین) مقدار در مجموعه تبدیل میشه.
برای درک بهتر، این گیف به بهترین شکل نحوه کار کرد رو نشون میده.
به صورت کلی الگوریتم های انتخاب یک رویکرد هدفمند برای استخراج عناصر خاص از داده های مرتب نشده ارائه میدن. قدرت اونها در بازیابی kامین کوچکترین/بزرگترین عنصر بدون مرتب سازی کل مجموعه نهفته هست. این باعث میشه اون ها رو برای کارهایی مثل یافتن مقادیر حداقل، حداکثر یا میانه در مجموعه داده های مرتب نشده کارآمد باشن.
برای کسب اطلاعات بیشتر مقالات زیر رو بخونید 👇🏻
- Article
- Article
- Article
نحوه پیاده سازی این الگوریتم در js
#algorithm
@CodeModule
Forwarded from Gopher Academy
برای ایجاد یک نمونه ساده از چگونگی کار با Nginx و Golang، میتوانید یک سرور وب ساده در Golang راهاندازی کنید و سپس Nginx را به عنوان یک پروکسی معکوس (reverse proxy) برای این سرور پیکربندی کنید.
### 1. ایجاد سرور وب ساده در Golang
ابتدا یک سرور وب ساده با استفاده از Golang ایجاد کنید. این سرور یک پیام خوشامدگویی را در پاسخ به درخواستهای HTTP ارسال میکند.
فایل بالا را به نام
این سرور اکنون در حال اجرا بر روی پورت 8080 است و به هر درخواستی پاسخ میدهد.
### 2. پیکربندی Nginx به عنوان پروکسی معکوس
حال باید Nginx را به گونهای پیکربندی کنید که به عنوان یک پروکسی معکوس عمل کند و درخواستها را به سرور Golang ارسال کند.
ابتدا مطمئن شوید که Nginx نصب شده است. اگر نصب نشده، میتوانید آن را با استفاده از دستورات زیر نصب کنید:
سپس فایل پیکربندی Nginx را ویرایش کنید. فایل پیکربندی معمولاً در مسیر
در این پیکربندی:
-
باعث میشود Nginx به درخواستهای HTTP روی پورت 80 گوش دهد.
-
باعث میشود Nginx به درخواستهای دامنه اصلی و تمامی سابدامینها پاسخ دهد.
-
درخواستها را به سرور Golang که روی پورت 8080 اجرا میشود، هدایت میکند.
-
هدرهای HTTP مورد نیاز را تنظیم میکند.
### 3. راهاندازی و تست
بعد از ویرایش پیکربندی، Nginx را راهاندازی یا مجدداً راهاندازی کنید تا تنظیمات جدید اعمال شوند:
اکنون Nginx به عنوان پروکسی معکوس عمل میکند و درخواستها را به سرور Golang شما ارسال میکند. با ورود به دامنه
### نتیجهگیری
با این پیکربندی، شما یک سرور Golang ساده دارید که توسط Nginx به عنوان پروکسی معکوس پشتیبانی میشود. Nginx درخواستها را به سرور Golang ارسال میکند و پاسخها را به کاربر بازمیگرداند. این تنظیمات به شما اجازه میدهد تا سابدامینهای داینامیک را به راحتی مدیریت کنید و سرور Golang خود را به طور موثرتری به کاربران ارائه دهید.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
### 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
Forwarded from DevTwitter | توییت برنامه نویسی
خیلی وسوسه انگیزه ولی چرا نباید از فیلدهای جیسون در پایگاههای داده رابطهای مانند 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/>
به دلایل زیر:
١) کاهش کارایی جستجو و عملکرد:
جستجو و فیلتر کردن دادهها در یک فیلد 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/>