دات نت کارها: وردپرس کارهای دنیای برنامهنویسی
وقتی صحبت از دنیای برنامهنویسی میشود، هر زبان و فریمورکی جایگاه خاص خودش را دارد. اما دات نت کارها در این میان جایگاهی دارند که شاید خیلیها به آن توجه نکرده باشند: وردپرس کارهای دنیای برنامهنویسی!
ورود به دنیای دات نت
ورود به دنیای دات نت مثل ورود به یک فروشگاه بزرگ است که همه چیز در آن وجود دارد. از ابزارهای مدیریتی گرفته تا کتابخانههای مختلف و فریمورکهای پیشرفته. دات نت کارها با افتخار از ابزارهای مایکروسافت استفاده میکنند و همیشه آمادهاند تا با آپدیتهای جدید ویژوال استودیو بهروز شوند. درست مثل وردپرس کارها که همیشه منتظر آپدیت افزونهها و قالبهای جدید هستند!
سفارشیسازی آسان
دات نت کارها بهراحتی میتوانند پروژههای خود را سفارشیسازی کنند. ابزارهای ساده و در عین حال قدرتمند، به آنها اجازه میدهد تا با چند کلیک ساده، ویژگیهای جدیدی به پروژههایشان اضافه کنند. وردپرس کارها هم با چند کلیک ساده میتوانند سایتهای خود را به یک شاهکار تبدیل کنند!
جامعهی خاص
جامعهی دات نت کارها مثل یک کافهی شلوغ است که همه در حال بحث دربارهی چیزهای شت هستند. دات نت کارها همیشه در حال بحث دربارهی جدیدترین آپدیتهای مایکروسافت هستند، درست مثل وردپرس کارها که دربارهی بهترین افزونههای سئو صحبت میکنند.
(داداش آپدیت جدیدو دیدی عجب خفنه کلی فیچر اضافه کرده!)
پیمان وفاداری
دات نت کارها قسم خورده اند در هرشرایط و هرکجا حتی به شوخی نسبت به دات نت چیزی گفته شود، از دات نت دفاع کنند.
معمولا چند ساعت از روز را برای بحث و دفاع از دات نت کنار میگذارند.
#fun
@Syntax_fa
وقتی صحبت از دنیای برنامهنویسی میشود، هر زبان و فریمورکی جایگاه خاص خودش را دارد. اما دات نت کارها در این میان جایگاهی دارند که شاید خیلیها به آن توجه نکرده باشند: وردپرس کارهای دنیای برنامهنویسی!
ورود به دنیای دات نت
ورود به دنیای دات نت مثل ورود به یک فروشگاه بزرگ است که همه چیز در آن وجود دارد. از ابزارهای مدیریتی گرفته تا کتابخانههای مختلف و فریمورکهای پیشرفته. دات نت کارها با افتخار از ابزارهای مایکروسافت استفاده میکنند و همیشه آمادهاند تا با آپدیتهای جدید ویژوال استودیو بهروز شوند. درست مثل وردپرس کارها که همیشه منتظر آپدیت افزونهها و قالبهای جدید هستند!
سفارشیسازی آسان
دات نت کارها بهراحتی میتوانند پروژههای خود را سفارشیسازی کنند. ابزارهای ساده و در عین حال قدرتمند، به آنها اجازه میدهد تا با چند کلیک ساده، ویژگیهای جدیدی به پروژههایشان اضافه کنند. وردپرس کارها هم با چند کلیک ساده میتوانند سایتهای خود را به یک شاهکار تبدیل کنند!
جامعهی خاص
جامعهی دات نت کارها مثل یک کافهی شلوغ است که همه در حال بحث دربارهی چیزهای شت هستند. دات نت کارها همیشه در حال بحث دربارهی جدیدترین آپدیتهای مایکروسافت هستند، درست مثل وردپرس کارها که دربارهی بهترین افزونههای سئو صحبت میکنند.
(داداش آپدیت جدیدو دیدی عجب خفنه کلی فیچر اضافه کرده!)
پیمان وفاداری
دات نت کارها قسم خورده اند در هرشرایط و هرکجا حتی به شوخی نسبت به دات نت چیزی گفته شود، از دات نت دفاع کنند.
معمولا چند ساعت از روز را برای بحث و دفاع از دات نت کنار میگذارند.
#fun
@Syntax_fa
🤣28👍4👎3👌2💋2
فیگما یا Figma یکی از خفنترین ابزارها برای طراحی رابط کاربری است که محبوبیت زیادی دارد. در فیگما میتوانید حتی کاور پستهای خودتون رو به سادهترین روش ممکن طراحی کنید و یا انیمیشن بسازید!
فیگما دارای پلنهای مختلف کاربری است؛ متاسفانه فعالسازی آن به دلیل تحریم و مشکلات اقتصادی چالش برانگیز است. اما خبر خوب این است که میتوانید به صورت رایگان نیز امکانات پیشرفته هر چند با محدودیت فعال کنید!
چجوری اکانتمون رو ارتقا بدیم؟
برای اینکار کافی است که از طریق لینک درج شده در انتهای پست، به فیگما درخواست فعالسازی اکانت education ارسال کنید.
⚠️ هشدار
توجه داشته باشید که با فعالسازی اکانت به این روش، شما حق استفاده از فیگما برای بیزنسهای خودتون رو نخواهید داشت! لذا در صورت استفاده بیزنسی احتمال مسدود شدن اکانتتان وجود دارد و به دلیل تحریم هم امکان درخواست فعالسازی مجدد اکانت وجود ندارد.
چه اطلاعاتی نیاز هست؟
شما باید به عنوان دانشآموز، دانشجو یا مدرس درخواست را ارسال کنید. اما به دلیل تحریم ایران ممکن است اکانت شما به طور کل مسدود شود(تحریم دانشگاههای ایرانی). بنابراین در یودمی یا کورسرا دوره ui/ux یا آموزش فیگما که رایگان باشد را ببینید و بعد در صفحه درخواست گواهی پایان دوره رو ارسال کنید.
📎 Link: https://www.figma.com/education/
#Figma
@Syntax_fa
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3❤🔥2
ساخت یک Dockerfile مناسب برای پروژه های پایتونی:
خیلی خوب توضیح داده.
https://luis-sena.medium.com/creating-the-perfect-python-dockerfile-51bdec41f1c8
#python #Dockerfile
@Syntax_fa
خیلی خوب توضیح داده.
https://luis-sena.medium.com/creating-the-perfect-python-dockerfile-51bdec41f1c8
#python #Dockerfile
@Syntax_fa
Medium
Creating the Perfect Python Dockerfile
Increase your python code performance and security without changing the project source code.
💋7🔥1👌1🎃1
حق:
من این مشکل رو زیاد دیدم؛ بیش از حداقل 20% پروژههای خدماتی که دوستان روش کار میکنن. میبینم که
شاید به روی خودتون نیارید ولی خیلی از شما هم ازین پروژهها دیدید دیگه.
خواستم هم اهمیت
هم بگم پروژههایی مثل
مثال:
کاری به درست و غلط بودن دیزاین و ... ندارم و بحثم فقط همین مورد
یک کدی رو دیدم؛ طرف یک سیستم
این دیتابیس خیلی اهمیت زیادی نداره؛ هر کد قراره نهایتا
چرا میخواید شر درست کنید برای تیم
خیلی ها مشکلشون این هست که اطلاعات ندارند (هیچوقت هم جرات تجربه کردن نداشتند)؛ خود
بیش از 500 هزار
روی
اضافه کنم :
اینم rqlite اگر حتی خواستید
Source
من این مشکل رو زیاد دیدم؛ بیش از حداقل 20% پروژههای خدماتی که دوستان روش کار میکنن. میبینم که
Postgresql به معنای واقعی کلمه OverKill هست. مخصوصا وقتی Sqlite کار رو در میاره.شاید به روی خودتون نیارید ولی خیلی از شما هم ازین پروژهها دیدید دیگه.
خواستم هم اهمیت
SQLite رو یادآوری کنمهم بگم پروژههایی مثل
rqlite هم وجود دارههامثال:
کاری به درست و غلط بودن دیزاین و ... ندارم و بحثم فقط همین مورد
Sqlite هست.یک کدی رو دیدم؛ طرف یک سیستم
verification جدا براش طراحی کرده بود و تمام پروژههاشون ازین سرویس استفاده میکرد. فکر کنم این سرویس یا .net بود یا golang بعد بحث اصلی سر این بود که Postgres بذارند یا MsSql من درجا پیشنهاد SQlite رو دادم.این دیتابیس خیلی اهمیت زیادی نداره؛ هر کد قراره نهایتا
۱۰ دقیقه valid باشه. در صورت پاک شدن هم طرف یکبار دیگه درخواست میده (که من تاحالا پاک شدن خود به خود توش ندیدم).چرا میخواید شر درست کنید برای تیم
devops, server, database, ...خیلی ها مشکلشون این هست که اطلاعات ندارند (هیچوقت هم جرات تجربه کردن نداشتند)؛ خود
SQLite روی SSD طبق بنچمارکها.بیش از 500 هزار
insert در ثانیه رو پشتیبانی میکنه و برای read هم این مورد به بیش از 1 میلیون میرسه و این مورد بدون config های پرفورمنسی هست که توی داکیومنت خودش ارائه شده.روی
NVMe هم چندسال قبل تست کردیم؛ اعداد بهتر هم میشه.اضافه کنم :
اینم rqlite اگر حتی خواستید
SQlite رو بصورت distributed داشته باشید (قبلا توی اون کی کانال راجبش صحبت کردم با K8s )Source
👍11❤🔥2❤1👎1🔥1🥰1👌1💋1
چند نکته درباره وب سوکت و توضیح ساده برای درک بهتر
فرآیند ارتباط وبسوکت
1. شروع با HTTP/HTTPS:
- کلاینت ابتدا یک درخواست HTTP به سرور میفرستد. این درخواست شامل هدرهای خاصی است که نشاندهنده تمایل به ارتقاء ارتباط به وبسوکت است. این هدرها شامل موارد زیر هستند:
-
-
2. ارتقاء به وبسوکت:
- سرور درخواست را دریافت کرده و بررسی میکند. اگر شرایط درست باشد، با یک پاسخ خاص به کلاینت، ارتباط را به وبسوکت ارتقاء میدهد. این پاسخ شامل وضعیت 101 Switching Protocols است.
3. استفاده از ws:// و wss://:
- پس از ارتقاء، ارتباط بهصورت دائمی و دوطرفه برقرار میشود.
-
نشاندهنده استفاده از پروتکل وبسوکت بر روی HTTP است.
-
نشاندهنده استفاده از پروتکل وبسوکت بر روی HTTPS است (که رمزنگاری شده است).
چرا ws:// استفاده میشود؟
-
- این URL نشان میدهد که ارتباط نهایی بهصورت وبسوکت انجام میشود.
نکته:
در HTTP/2، مکانیزم آپگرید به وبسوکت از طریق هدرهای HTTP/1.1 استفاده نمیشود. HTTP/2 به صورت ذاتی از این روش پشتیبانی نمیکند. برای ارتباط وبسوکت در HTTP/2، معمولاً از HTTP/1.1 برای ایجاد و ارتقاء ارتباط استفاده میشود یا از روشهای دیگری برای مدیریت ارتباطات بلادرنگ بهره میگیرند.
روشهای دیگه برای مدیریت ارتباطات بلادرنگ:
1. Server-Sent Events (SSE):
- یک ارتباط یکطرفه است که سرور میتواند بهطور پیوسته دادهها را به کلاینت ارسال کند.
- مناسب برای برنامههایی که نیاز به ارسال دادههای بلادرنگ از سرور به کلاینت دارند.
2. Long Polling:
- کلاینت یک درخواست HTTP ارسال میکند و سرور تا زمانی که دادهای برای ارسال وجود ندارد، پاسخ را معلق نگه میدارد(یک تایم اوت مشخص هم دارد مثلا 20 ثانیه)
- پس از ارسال داده، کلاینت بلافاصله یک درخواست جدید ارسال میکند.
3. HTTP/2 Streams:
- استفاده از قابلیت چندپخشی و استریمهای همزمان در HTTP/2 برای ارسال و دریافت دادههای بلادرنگ.
4. gRPC:
- یک فریمورک RPC بر پایه HTTP/2 که از ارتباطات بلادرنگ و استریمینگ پشتیبانی میکند.
چرا نیاز به درخواست HTTP اولیه است؟
وبسوکتها بهعنوان یک پروتکل ارتقاء بر روی HTTP طراحی شدهاند تا با زیرساختهای موجود وب سازگار باشند. این امر به کلاینتها و سرورها اجازه میدهد تا از همان پورتها و مکانیزمهای امنیتی استفاده کنند.
مثال در گولنگ:
#websocket
@Syntax_fa
فرآیند ارتباط وبسوکت
1. شروع با HTTP/HTTPS:
- کلاینت ابتدا یک درخواست HTTP به سرور میفرستد. این درخواست شامل هدرهای خاصی است که نشاندهنده تمایل به ارتقاء ارتباط به وبسوکت است. این هدرها شامل موارد زیر هستند:
-
Upgrade: websocket-
Connection: Upgrade2. ارتقاء به وبسوکت:
- سرور درخواست را دریافت کرده و بررسی میکند. اگر شرایط درست باشد، با یک پاسخ خاص به کلاینت، ارتباط را به وبسوکت ارتقاء میدهد. این پاسخ شامل وضعیت 101 Switching Protocols است.
3. استفاده از ws:// و wss://:
- پس از ارتقاء، ارتباط بهصورت دائمی و دوطرفه برقرار میشود.
-
ws://نشاندهنده استفاده از پروتکل وبسوکت بر روی HTTP است.
-
wss://نشاندهنده استفاده از پروتکل وبسوکت بر روی HTTPS است (که رمزنگاری شده است).
چرا ws:// استفاده میشود؟
-
ws://localhost:8080- این URL نشان میدهد که ارتباط نهایی بهصورت وبسوکت انجام میشود.
نکته:
در HTTP/2، مکانیزم آپگرید به وبسوکت از طریق هدرهای HTTP/1.1 استفاده نمیشود. HTTP/2 به صورت ذاتی از این روش پشتیبانی نمیکند. برای ارتباط وبسوکت در HTTP/2، معمولاً از HTTP/1.1 برای ایجاد و ارتقاء ارتباط استفاده میشود یا از روشهای دیگری برای مدیریت ارتباطات بلادرنگ بهره میگیرند.
روشهای دیگه برای مدیریت ارتباطات بلادرنگ:
1. Server-Sent Events (SSE):
- یک ارتباط یکطرفه است که سرور میتواند بهطور پیوسته دادهها را به کلاینت ارسال کند.
- مناسب برای برنامههایی که نیاز به ارسال دادههای بلادرنگ از سرور به کلاینت دارند.
2. Long Polling:
- کلاینت یک درخواست HTTP ارسال میکند و سرور تا زمانی که دادهای برای ارسال وجود ندارد، پاسخ را معلق نگه میدارد(یک تایم اوت مشخص هم دارد مثلا 20 ثانیه)
- پس از ارسال داده، کلاینت بلافاصله یک درخواست جدید ارسال میکند.
3. HTTP/2 Streams:
- استفاده از قابلیت چندپخشی و استریمهای همزمان در HTTP/2 برای ارسال و دریافت دادههای بلادرنگ.
4. gRPC:
- یک فریمورک RPC بر پایه HTTP/2 که از ارتباطات بلادرنگ و استریمینگ پشتیبانی میکند.
چرا نیاز به درخواست HTTP اولیه است؟
وبسوکتها بهعنوان یک پروتکل ارتقاء بر روی HTTP طراحی شدهاند تا با زیرساختهای موجود وب سازگار باشند. این امر به کلاینتها و سرورها اجازه میدهد تا از همان پورتها و مکانیزمهای امنیتی استفاده کنند.
مثال در گولنگ:
package main
import (
"fmt"
"net/http"
"github.com/gorilla/websocket"
)
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
// checking conditions
return true
},
}
func handleConnections(w http.ResponseWriter, r *http.Request) {
// upgrade http request to websocket
ws, err := upgrader.Upgrade(w, r, nil)
if err != nil {
fmt.Println(err)
return
}
defer ws.Close()
// messages
for {
messageType, msg, err := ws.ReadMessage()
if err != nil {
fmt.Println(err)
break
}
fmt.Printf("Received: %s\n", msg)
err = ws.WriteMessage(messageType, msg)
if err != nil {
fmt.Println(err)
break
}
}
}
func main() {
http.HandleFunc("/", handleConnections)
fmt.Println("Server started on :8080")
err := http.ListenAndServe(":8080", nil)
if err != nil {
fmt.Println("Error starting server:", err)
}
}
#websocket
@Syntax_fa
👍7💋6👌2❤1
استخدام شدن برنامه نویسا تو سال 2020:
تسلط به روشن و خاموش کردن سیستم. بقیه چیزا مهم نیست خودمون بهت یاد میدیم🎉
استخدام شدن برنامه نویسا تو سال 2024:
😥 😳
#fun
@Syntax_fa
تسلط به روشن و خاموش کردن سیستم. بقیه چیزا مهم نیست خودمون بهت یاد میدیم
استخدام شدن برنامه نویسا تو سال 2024:
#fun
@Syntax_fa
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣27👍3😁2😱2
نحوه احراز هویت با OAuth
OAuth
یک پروتکل احراز هویت و مجوز است که به کاربران اجازه میدهد بدون نیاز به اشتراکگذاری اطلاعات ورود خود، به وبسایتها و اپلیکیشنهای مختلف دسترسی پیدا کنند. این پروتکل معمولاً در سه مرحله اصلی کار میکند:
1. درخواست مجوز: کاربر به اپلیکیشن شما اجازه میدهد به حساب کاربریاش در سرویسدهنده (مثل گوگل) دسترسی پیدا کند.
2. دریافت توکن دسترسی: پس از تأیید مجوز کاربر، اپلیکیشن شما یک توکن دسترسی (Access Token) دریافت میکند.
3. دسترسی به منابع: با استفاده از توکن دسترسی، اپلیکیشن شما میتواند به منابع کاربر دسترسی پیدا کند.
مراحل لاگین با اکانت گوگل
1. ثبتنام اپلیکیشن در کنسول گوگل
ابتدا باید اپلیکیشن خود را در https://console.cloud.google.com/. در اینجا ثبت کنید:
- یک پروژه جدید ایجاد کنید.
- OAuth 2.0 client ID ایجاد کنید.
- URL کال بک (Redirect URI) را مشخص کنید.
پس از این مراحل، یک
2. درخواست مجوز
هنگامی که کاربر روی دکمه "ورود با گوگل" کلیک میکند، شما باید او را به URL زیر هدایت کنید:
در اینجا:
-
-
-
3. دریافت کد تأیید
پس از اینکه کاربر مجوز را تأیید کرد، گوگل کاربر را به URL کال بک شما باز میگرداند و یک پارامتر
4. تبادل کد برای توکن دسترسی
شما باید یک درخواست POST به URL زیر ارسال کنید تا کد را برای توکن دسترسی مبادله کنید:
بدنه درخواست باید شامل موارد زیر باشد:
5. دریافت توکن دسترسی
اگر درخواست موفق باشد، شما یک پاسخ JSON دریافت میکنید که شامل
6. احراز هویت و دسترسی به اطلاعات کاربر
با استفاده از `access_token`، میتوانید اطلاعات کاربر را از API گوگل دریافت کنید. برای مثال:
7. وریفای توکن
برای اطمینان از صحت توکن، میتوانید توکن را به یکی از انتهای API گوگل ارسال کنید تا اطلاعات مربوط به توکن و اعتبار آن را دریافت کنید.
#oauth
@Syntax_fa
OAuth
یک پروتکل احراز هویت و مجوز است که به کاربران اجازه میدهد بدون نیاز به اشتراکگذاری اطلاعات ورود خود، به وبسایتها و اپلیکیشنهای مختلف دسترسی پیدا کنند. این پروتکل معمولاً در سه مرحله اصلی کار میکند:
1. درخواست مجوز: کاربر به اپلیکیشن شما اجازه میدهد به حساب کاربریاش در سرویسدهنده (مثل گوگل) دسترسی پیدا کند.
2. دریافت توکن دسترسی: پس از تأیید مجوز کاربر، اپلیکیشن شما یک توکن دسترسی (Access Token) دریافت میکند.
3. دسترسی به منابع: با استفاده از توکن دسترسی، اپلیکیشن شما میتواند به منابع کاربر دسترسی پیدا کند.
مراحل لاگین با اکانت گوگل
1. ثبتنام اپلیکیشن در کنسول گوگل
ابتدا باید اپلیکیشن خود را در https://console.cloud.google.com/. در اینجا ثبت کنید:
- یک پروژه جدید ایجاد کنید.
- OAuth 2.0 client ID ایجاد کنید.
- URL کال بک (Redirect URI) را مشخص کنید.
پس از این مراحل، یک
Client ID و Client Secret دریافت خواهید کرد.2. درخواست مجوز
هنگامی که کاربر روی دکمه "ورود با گوگل" کلیک میکند، شما باید او را به URL زیر هدایت کنید:
https://accounts.google.com/o/oauth2/v2/auth?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code&scope=email%20profile
در اینجا:
-
YOUR_CLIENT_ID: شناسه کلاینت شما-
YOUR_REDIRECT_URI: URL کال بک شما-
scope: اطلاعاتی که میخواهید از کاربر بگیرید (مثل ایمیل و پروفایل)3. دریافت کد تأیید
پس از اینکه کاربر مجوز را تأیید کرد، گوگل کاربر را به URL کال بک شما باز میگرداند و یک پارامتر
code به همراه خواهد داشت.4. تبادل کد برای توکن دسترسی
شما باید یک درخواست POST به URL زیر ارسال کنید تا کد را برای توکن دسترسی مبادله کنید:
POST https://oauth2.googleapis.com/token
بدنه درخواست باید شامل موارد زیر باشد:
{
"code": "CODE_RECEIVED_FROM_GOOGLE",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"redirect_uri": "YOUR_REDIRECT_URI",
"grant_type": "authorization_code"
}5. دریافت توکن دسترسی
اگر درخواست موفق باشد، شما یک پاسخ JSON دریافت میکنید که شامل
access_token و اطلاعات دیگر است.6. احراز هویت و دسترسی به اطلاعات کاربر
با استفاده از `access_token`، میتوانید اطلاعات کاربر را از API گوگل دریافت کنید. برای مثال:
GET https://www.googleapis.com/oauth2/v2/userinfo
Authorization: Bearer ACCESS_TOKEN
7. وریفای توکن
برای اطمینان از صحت توکن، میتوانید توکن را به یکی از انتهای API گوگل ارسال کنید تا اطلاعات مربوط به توکن و اعتبار آن را دریافت کنید.
#oauth
@Syntax_fa
👍13🔥3💋3
برنامهنویسهای ادایی: قهرمانان سلفیگیر! 🤓
برنامهنویسهای ادایی، آن دسته از افراد در دنیای فناوری هستند که بیشتر از اینکه به کدنویسی بپردازند، به گرفتن سلفیهای خفن با لپتاپ و قهوهشان مشغولاند. بیایید نگاهی به دنیای رنگارنگ آنها بندازیم!
سلفیهای جذاب با لپتاپ
اولین نشانهی برنامهنویس ادایی، سلفیهای بینظیرش است. این افراد بهطور مداوم در حال گرفتن عکس از خود در کنار لپتاپ و کتابهای مهندسی نرمافزار هستند. شاید فکر کنید که آنها در حال کدنویسی هستند، اما واقعیت این است که در حال تنظیم نور و زاویه دوربین برای گرفتن عکس بعدیشان هستند!
"نگاه کن من دارم کد میزنم"
در واقع، آنها فقط در حال چک کردن فید اینستاگرامشان هستند!
بحث درباره clean architecture همه جا!
همیشه همراه خود کتاب های برنامه نویسی خفن را حمل میکنند حتی در کافه و مهمانی ها!
تا بحث درباره برنامه نویسی شود، کتاب های که درباره clean architecture و ddd و ... خوانده اند صحبت میکنند اما هنوز نمیتوانند یک پروژه todo را با ساختار مناسب پیاده سازی کنند!
میز کار به سبک هنری😀
میز کار این برنامهنویسها مثل یک گالری هنری است؛ قهوهساز، کتابهای مهندسی نرمافزار، و چندین ماگ با نوشتههای خندهدار. آنها با افتخار به شما نشان میدهند که "این کتاب رو تازه خریدم!" در حالی که هیچوقت حتی یک صفحه از آن را نخواندهاند. گویی که داشتن کتابهای مهندسی نرمافزار بهعنوان یک اکسسوری مهم است!
پوششهای خاص با تیشرتهای برنامهنویسی😀
این افراد معمولاً تیشرتهای با طرحهای مرتبط با برنامهنویسی میپوشند، مثل "Code is my cardio" یا "I'm silently correcting your code". گویی لباسشان بهترین بیانیهی حرفهای آنهاست!
رویدادهای کافهای☕️
برنامهنویسهای ادایی معمولاً در کافهها جمع میشوند تا نمیدونم واقعا چیکار کنن☹️
بحثهای پرشور درباره buzzword ها
وقتی دو برنامهنویس ادایی با هم ملاقات میکنند، یک بحث پرشور درباره جدیدترین فریمورکها یا زبانهای برنامهنویسی شروع میشود. در واقع، این بحثها بیشتر شبیه به مسابقهی خودستایی است تا تبادل دانش واقعی!
اوه از همه بدتر وقتی با یه برنامه نویس ادایی صحبت میکنید کلمات و اصطلاحاتی رو بکار میبره که خداهم تاحالا نشنیده!
بازورد چیه؟ #buzzword
مبادا مثل آدم کد بزنی!
کد های یک برنامه نویس ادایی رو فقط یک برنامه نویس ادایی دیگه میفهمه!
تا جای ممکن سعی میکنن کدی بنویسن که پیچیده و غیرقابل فهم باشه.
چیزی که فکر میکنن:
پشمام چه کدی زدی😱
ولی واقعیت موضوع:
این چه کدشریه دیگه😒
#fun
@Syntax_fa
برنامهنویسهای ادایی، آن دسته از افراد در دنیای فناوری هستند که بیشتر از اینکه به کدنویسی بپردازند، به گرفتن سلفیهای خفن با لپتاپ و قهوهشان مشغولاند. بیایید نگاهی به دنیای رنگارنگ آنها بندازیم!
سلفیهای جذاب با لپتاپ
اولین نشانهی برنامهنویس ادایی، سلفیهای بینظیرش است. این افراد بهطور مداوم در حال گرفتن عکس از خود در کنار لپتاپ و کتابهای مهندسی نرمافزار هستند. شاید فکر کنید که آنها در حال کدنویسی هستند، اما واقعیت این است که در حال تنظیم نور و زاویه دوربین برای گرفتن عکس بعدیشان هستند!
"نگاه کن من دارم کد میزنم"
در واقع، آنها فقط در حال چک کردن فید اینستاگرامشان هستند!
بحث درباره clean architecture همه جا!
همیشه همراه خود کتاب های برنامه نویسی خفن را حمل میکنند حتی در کافه و مهمانی ها!
تا بحث درباره برنامه نویسی شود، کتاب های که درباره clean architecture و ddd و ... خوانده اند صحبت میکنند اما هنوز نمیتوانند یک پروژه todo را با ساختار مناسب پیاده سازی کنند!
میز کار به سبک هنری
میز کار این برنامهنویسها مثل یک گالری هنری است؛ قهوهساز، کتابهای مهندسی نرمافزار، و چندین ماگ با نوشتههای خندهدار. آنها با افتخار به شما نشان میدهند که "این کتاب رو تازه خریدم!" در حالی که هیچوقت حتی یک صفحه از آن را نخواندهاند. گویی که داشتن کتابهای مهندسی نرمافزار بهعنوان یک اکسسوری مهم است!
پوششهای خاص با تیشرتهای برنامهنویسی
این افراد معمولاً تیشرتهای با طرحهای مرتبط با برنامهنویسی میپوشند، مثل "Code is my cardio" یا "I'm silently correcting your code". گویی لباسشان بهترین بیانیهی حرفهای آنهاست!
رویدادهای کافهای
برنامهنویسهای ادایی معمولاً در کافهها جمع میشوند تا نمیدونم واقعا چیکار کنن
بحثهای پرشور درباره buzzword ها
وقتی دو برنامهنویس ادایی با هم ملاقات میکنند، یک بحث پرشور درباره جدیدترین فریمورکها یا زبانهای برنامهنویسی شروع میشود. در واقع، این بحثها بیشتر شبیه به مسابقهی خودستایی است تا تبادل دانش واقعی!
اوه از همه بدتر وقتی با یه برنامه نویس ادایی صحبت میکنید کلمات و اصطلاحاتی رو بکار میبره که خداهم تاحالا نشنیده!
بازورد چیه؟ #buzzword
مبادا مثل آدم کد بزنی!
کد های یک برنامه نویس ادایی رو فقط یک برنامه نویس ادایی دیگه میفهمه!
تا جای ممکن سعی میکنن کدی بنویسن که پیچیده و غیرقابل فهم باشه.
چیزی که فکر میکنن:
پشمام چه کدی زدی
ولی واقعیت موضوع:
این چه کدشریه دیگه
#fun
@Syntax_fa
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣25👍5😁1💋1
یک مقاله درباره تفاوت بین stateless و stateful بودن
https://medium.com/@saeidlaalkaei/stateful-and-stateless-sets-across-different-technologies-5ad1d06caf98
اهمیت Stateless در برنامههای Cloud Native
یکی از استانداردهای اصلی در طراحی برنامههای کلاد نیتیو Stateless بودن آنها است. دلایل این موضوع به شرح زیر است:
1. مقیاسپذیری آسان: برنامههای Stateless به راحتی میتوانند در محیطهای ابری مقیاسپذیر شوند. به دلیل عدم وابستگی به وضعیت، میتوان به سادگی تعداد نمونههای برنامه را افزایش یا کاهش داد.
مثلا فرض کنید ما اومدیم یدونه لیمیت بر اساس ip address کاربر درست کردیم که توی یک مپ داخل برناممون ذخیرش کردیم. خب در این شرایط وقتی instance برناممون رو بیشتر کنیم چه اتفاقی برای لیمیتی که نوشتیم میوفته؟ stateless بودن این دغدغه هارو حذف میکنه.
2. مدیریت بهتر منابع: در برنامههای Stateless، منابع به راحتی میتوانند بین نمونههای مختلف توزیع شوند، زیرا هر نمونه هیچگونه وابستگی به دیگر نمونهها ندارد.
3. قابلیت تحمل خطا: اگر یک نمونه از برنامه به هر دلیلی دچار مشکل شود، میتوان به سرعت آن را جایگزین کرد بدون اینکه تأثیری بر روی وضعیت کاربران دیگر داشته باشد.
4. استقرار سریعتر: در محیطهای ابری، زمان استقرار بسیار مهم است. برنامههای Stateless به دلیل سادگی و عدم نیاز به ذخیره وضعیت، سریعتر میتوانند مستقر شوند.
#stateless #stateful
@Syntax_fa
https://medium.com/@saeidlaalkaei/stateful-and-stateless-sets-across-different-technologies-5ad1d06caf98
اهمیت Stateless در برنامههای Cloud Native
یکی از استانداردهای اصلی در طراحی برنامههای کلاد نیتیو Stateless بودن آنها است. دلایل این موضوع به شرح زیر است:
1. مقیاسپذیری آسان: برنامههای Stateless به راحتی میتوانند در محیطهای ابری مقیاسپذیر شوند. به دلیل عدم وابستگی به وضعیت، میتوان به سادگی تعداد نمونههای برنامه را افزایش یا کاهش داد.
مثلا فرض کنید ما اومدیم یدونه لیمیت بر اساس ip address کاربر درست کردیم که توی یک مپ داخل برناممون ذخیرش کردیم. خب در این شرایط وقتی instance برناممون رو بیشتر کنیم چه اتفاقی برای لیمیتی که نوشتیم میوفته؟ stateless بودن این دغدغه هارو حذف میکنه.
2. مدیریت بهتر منابع: در برنامههای Stateless، منابع به راحتی میتوانند بین نمونههای مختلف توزیع شوند، زیرا هر نمونه هیچگونه وابستگی به دیگر نمونهها ندارد.
3. قابلیت تحمل خطا: اگر یک نمونه از برنامه به هر دلیلی دچار مشکل شود، میتوان به سرعت آن را جایگزین کرد بدون اینکه تأثیری بر روی وضعیت کاربران دیگر داشته باشد.
4. استقرار سریعتر: در محیطهای ابری، زمان استقرار بسیار مهم است. برنامههای Stateless به دلیل سادگی و عدم نیاز به ذخیره وضعیت، سریعتر میتوانند مستقر شوند.
#stateless #stateful
@Syntax_fa
Medium
Stateful and Stateless Sets across different Technologies
Database Management Systems (DBMS):
👍6🥰2🔥1👌1
Syntax | سینتکس
ساخت یک Dockerfile مناسب برای پروژه های پایتونی: خیلی خوب توضیح داده. https://luis-sena.medium.com/creating-the-perfect-python-dockerfile-51bdec41f1c8 #python #Dockerfile @Syntax_fa
و اما Docekrfile که من از توضیحات ایشون رسیدم بهش:
نظر بدید
#python #dockerfile
@Syntax_fa
FROM python:3.11-slim as builder
# avoid stuck build due to user prompt
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y --no-install-recommends ...
# create and activate virtual environment
RUN python -m venv /home/myuser/venv
ENV PATH="/home/myuser/venv/bin:$PATH"
# install requirements
COPY ./requirements .
RUN pip3 install --upgrade --no-cache-dir pip
RUN pip3 install --no-cache-dir wheel
RUN pip3 install --no-cache-dir -r production.txt
FROM python:3.11-slim
RUN useradd --create-home myuser
COPY --from=builder /home/myuser/venv /home/myuser/venv
USER myuser
RUN mkdir /home/myuser/code
WORKDIR /home/myuser/code
COPY . /home/myuser/code
EXPOSE $DJANGO_PORT
# make sure all messages always reach console
ENV PYTHONUNBUFFERED=1
# activate virtual environment
ENV VIRTUAL_ENV=/home/myuser/venv
ENV PATH="/home/myuser/venv/bin:$PATH"
# /dev/shm is mapped to shared memory and should be used for gunicorn heartbeat
# this will improve performance and avoid random freezes
# CMD ["gunicorn","-b", "0.0.0.0:8000", "-w", "4", "-k", "gevent", "--worker-tmp-dir", "/dev/shm", "--chdir", "config config.wsgi:application"]
نظر بدید
#python #dockerfile
@Syntax_fa
🔥6👍1🤣1🤨1
ما تو فکر چی هستیم، بقیه تو فکر چی هستن 🙂
تا حالا به این فکر کردی که response time سیستم ت در حد میکروثانیه باشه؟ مثلا به میلی ثانیه و اینا نرسه اصلا؟
احتمالا تو نسل بعدی دیتاسنترها بیشتر میشنویم ازشون
https://x.com/petereliaskraft/status/1830294745563951329?t=LxJ9z3qlt7uREui7hUCAyg&s=35
Shenango: Achieving High CPU Efficiency for Latency-sensitive Datacenter Workloads
https://www.usenix.org/conference/nsdi19/presentation/ousterhout
Source
@Syntax_fa
تا حالا به این فکر کردی که response time سیستم ت در حد میکروثانیه باشه؟ مثلا به میلی ثانیه و اینا نرسه اصلا؟
احتمالا تو نسل بعدی دیتاسنترها بیشتر میشنویم ازشون
https://x.com/petereliaskraft/status/1830294745563951329?t=LxJ9z3qlt7uREui7hUCAyg&s=35
Shenango: Achieving High CPU Efficiency for Latency-sensitive Datacenter Workloads
https://www.usenix.org/conference/nsdi19/presentation/ousterhout
Source
@Syntax_fa
👍8😱3👀2
Syntax | سینتکس
ما تو فکر چی هستیم، بقیه تو فکر چی هستن 🙂 تا حالا به این فکر کردی که response time سیستم ت در حد میکروثانیه باشه؟ مثلا به میلی ثانیه و اینا نرسه اصلا؟ احتمالا تو نسل بعدی دیتاسنترها بیشتر میشنویم ازشون https://x.com/petereliaskraft/status/183029474556395…
سرور های قدرتمند ایران:
۱. با latency زیر ده ثانیه
۲. پهنای باند باور نکردنیه پنجاه مگابایت
۴. دسترسی به اینترنت داخلی
۵. اینترنت نامحدود با طرح مصرف منصفانه
۶. قیمت ها کاملا اقتصادی
و کلی ویژگی دیگر
۱. با latency زیر ده ثانیه
۲. پهنای باند باور نکردنیه پنجاه مگابایت
۴. دسترسی به اینترنت داخلی
۵. اینترنت نامحدود با طرح مصرف منصفانه
۶. قیمت ها کاملا اقتصادی
و کلی ویژگی دیگر
🤣21🔥1😁1
This media is not supported in your browser
VIEW IN TELEGRAM
یاد این افتادم😂
معرفیه اولین گوشی هوشمند ایرانی
معرفیه اولین گوشی هوشمند ایرانی
🤣16😁1
آشنایی با GitHub Codespaces
تو دنیای مدرن توسعه نرم افزار امروزی، سهولت و سرعت تو راهاندازی محیطهای توسعه اهمیت زیادی داره. GitHub Codespaces یکی از ابزارهای نوآورانهای هستش که به برنامهنویسا اجازه میده تا بتونن همه جا به راحتی به پروژه هاشون دسترسی داشته باشن، اجراشون کنن و به راحتی تو یه محیط ابری کدهاشون رو تغییر بدن.
همچنین codespaces بطور کامل روی GitHub ادغام شده که همین یکی از مزیت های بزرگشه.
چند تا از ویژگی هاش:
۱. از ویرایشگرهای مختلف از جمله Visual Studio Code و فکر کنم Jetbarins پشتیبانی میکنه.
۲. مثل یک محیط توسعه که روی سیستم خودتون نصبه، میتونید سفارش سازی کنید
۳. به تیمها این امکانو میده که به راحتی با همدیگه همکاری کنن.
۴.از اونجا که codespaces یک محیط ابری در اختیار شما قرار میده، میتونید از هر نقطه بهش دسترسی داشته باشید.
فرض کنید به سیستمون دسترسی ندارید و حالا نیازه یه سری باگ هارو رفع کنید. کافیه وارد محیط codespaces بشید، تغییرات رو بدید بعد کدتون رو تو codespaces ران و تست کنید.
این قابلیت هاشو من خیلی دوست داشتم:
۱. بهتون پلن رایگان میده که برای استفاده شخصی فکر میکنم کافیه
2 بهتون چیزی شبیه به یه سرور مجازی میده که منابع کمی هم نداره تو پلن رایگانش میتونید تا 4 هسته و 16 گیگ رم استفاده کنید.
3. از داکر و یا چیز های مختلف دیگه ای که نیاز دارید هم میتونید استفاده کنید.
4. میتونید پروژتون رو روی یه پورتی اجرا کنید و دسترسی پرایوت یا پابلیک بدید تا از طریق اینترنت بهش دسترسی داشته باشید. برای ران کردن نمونه کارا خوبه.
و ...
هنوز زیاد ازش استفاده نکردم. نحوه اجرا کردنش خیلی سادس ولی اگه خواستید توضیح میدم
#github #codespaces
@Syntax_fa
تو دنیای مدرن توسعه نرم افزار امروزی، سهولت و سرعت تو راهاندازی محیطهای توسعه اهمیت زیادی داره. GitHub Codespaces یکی از ابزارهای نوآورانهای هستش که به برنامهنویسا اجازه میده تا بتونن همه جا به راحتی به پروژه هاشون دسترسی داشته باشن، اجراشون کنن و به راحتی تو یه محیط ابری کدهاشون رو تغییر بدن.
همچنین codespaces بطور کامل روی GitHub ادغام شده که همین یکی از مزیت های بزرگشه.
چند تا از ویژگی هاش:
۱. از ویرایشگرهای مختلف از جمله Visual Studio Code و فکر کنم Jetbarins پشتیبانی میکنه.
۲. مثل یک محیط توسعه که روی سیستم خودتون نصبه، میتونید سفارش سازی کنید
۳. به تیمها این امکانو میده که به راحتی با همدیگه همکاری کنن.
۴.از اونجا که codespaces یک محیط ابری در اختیار شما قرار میده، میتونید از هر نقطه بهش دسترسی داشته باشید.
فرض کنید به سیستمون دسترسی ندارید و حالا نیازه یه سری باگ هارو رفع کنید. کافیه وارد محیط codespaces بشید، تغییرات رو بدید بعد کدتون رو تو codespaces ران و تست کنید.
این قابلیت هاشو من خیلی دوست داشتم:
۱. بهتون پلن رایگان میده که برای استفاده شخصی فکر میکنم کافیه
2 بهتون چیزی شبیه به یه سرور مجازی میده که منابع کمی هم نداره تو پلن رایگانش میتونید تا 4 هسته و 16 گیگ رم استفاده کنید.
3. از داکر و یا چیز های مختلف دیگه ای که نیاز دارید هم میتونید استفاده کنید.
4. میتونید پروژتون رو روی یه پورتی اجرا کنید و دسترسی پرایوت یا پابلیک بدید تا از طریق اینترنت بهش دسترسی داشته باشید. برای ران کردن نمونه کارا خوبه.
و ...
هنوز زیاد ازش استفاده نکردم. نحوه اجرا کردنش خیلی سادس ولی اگه خواستید توضیح میدم
#github #codespaces
@Syntax_fa
👍8💋4🔥2❤1
Syntax | سینتکس
آشنایی با GitHub Codespaces تو دنیای مدرن توسعه نرم افزار امروزی، سهولت و سرعت تو راهاندازی محیطهای توسعه اهمیت زیادی داره. GitHub Codespaces یکی از ابزارهای نوآورانهای هستش که به برنامهنویسا اجازه میده تا بتونن همه جا به راحتی به پروژه هاشون دسترسی داشته…
نحوه راه اندازی یه GitHub codespaces:
خب خیلی سادس:
۱. رو codespaces کلیک میکنید
۲. بعد روی new codespaces
۳. تو این بخش مشخص میکنید میخواید برای کدوم ریپوزیتوری codespace رو بسازید و ریجن سرورش چی باشه و منابع چقدر داشته باشه. یه نکته رو دقت کنید. بصورت ماهانه تو پلن رایگان فقط پونزده گیگ میتونید فایل و ... رو تو codespace هاتون استفاده کنید. همچنین 120 ساعت در ماه از cpu تو پلن رایگان میتونید استفاده کنید که این رو درست متوجه نشدم. فکر کنم منظورش اکتیو بودن codespace هستش.
۴. بعد اینکه روی create codespace کلیک کردید یکم طول میکشه ساخته شه. بهتره از شکنی چیزی استفاده کنید در غیر اینصورت ممکنه درست اجرا نشه.
۵. بعد اینکه وارد محیط codespace شدید میتونید به راحتی با داکر سرویس هاتونو بالا بیارید و پروژتون رو پشت یه پورتی اجرا کنید. Codespace به شما اجازه میده که یه tpc connection رو باز کنید و بهش از طریق اینترنت دسترسی داشته باشید.
همچنین اگه پروژه پرایوت هستش میتونید بصورت پرایوت دسترسی بدید تا هرکی به پروژه دسترسی دارن بتونن ببینن یا اینکه بصورت public اجازه بدید تا همه بتونن دسترسی داشته باشن.
#github #codespace
@Syntax_fa
خب خیلی سادس:
۱. رو codespaces کلیک میکنید
۲. بعد روی new codespaces
۳. تو این بخش مشخص میکنید میخواید برای کدوم ریپوزیتوری codespace رو بسازید و ریجن سرورش چی باشه و منابع چقدر داشته باشه. یه نکته رو دقت کنید. بصورت ماهانه تو پلن رایگان فقط پونزده گیگ میتونید فایل و ... رو تو codespace هاتون استفاده کنید. همچنین 120 ساعت در ماه از cpu تو پلن رایگان میتونید استفاده کنید که این رو درست متوجه نشدم. فکر کنم منظورش اکتیو بودن codespace هستش.
۴. بعد اینکه روی create codespace کلیک کردید یکم طول میکشه ساخته شه. بهتره از شکنی چیزی استفاده کنید در غیر اینصورت ممکنه درست اجرا نشه.
۵. بعد اینکه وارد محیط codespace شدید میتونید به راحتی با داکر سرویس هاتونو بالا بیارید و پروژتون رو پشت یه پورتی اجرا کنید. Codespace به شما اجازه میده که یه tpc connection رو باز کنید و بهش از طریق اینترنت دسترسی داشته باشید.
همچنین اگه پروژه پرایوت هستش میتونید بصورت پرایوت دسترسی بدید تا هرکی به پروژه دسترسی دارن بتونن ببینن یا اینکه بصورت public اجازه بدید تا همه بتونن دسترسی داشته باشن.
#github #codespace
@Syntax_fa
❤7👍6🔥1
برنامه نویسا تو تایم بیکاریشون چیکار میکنن:
داشتم تو وب سایت شهوانی دنبال یه سری داستان های آموزنده میگشتم و پیدا نمیکردم، تصمیم گرفتم بیام یه کراولر بنویسم و داستانارو توی الستیک ایندکس کنم تا بتونم با یه سرچ پیشرفته، هر داستانی که میخوامو به راحتی پیداش کنم.
(از زبون دوست عزیزمون که اینو نوشته گفتم)
#fun
@Syntax_fa
داشتم تو وب سایت شهوانی دنبال یه سری داستان های آموزنده میگشتم و پیدا نمیکردم، تصمیم گرفتم بیام یه کراولر بنویسم و داستانارو توی الستیک ایندکس کنم تا بتونم با یه سرچ پیشرفته، هر داستانی که میخوامو به راحتی پیداش کنم.
(از زبون دوست عزیزمون که اینو نوشته گفتم)
#fun
@Syntax_fa
🤣35👍3👏3❤🔥1👎1🔥1👀1
Consumer data platform
بیاید یه سناریو رو بریم جلو:
تو مرورگرتون درباره لپتاپ سرچ میکنید.
قصد دارید بخرید پس بیشتر سرچ میکنید و مدل های مختلف رو باهمدیگه بررسی میکنید.
بعد حالا بر اساس قیمت سرچ میکنید تا یچیز اقصادی پیدا کنید.
چند وقت بعد میبینید یه ایمیل با این موضوع دریافت کردید:
لیست بهترین لپتاپ ها با قیمت مناسب در دیجیکالا
همه اینا با استفاده از Customer data platform(CDP) انجام میشه.
تو این وب سایت میتونید دربارش اطلاعات بیشتری بدست بیارید:
https://revium.com.au/blog/what-is-segment-cdp
#CDP
@Syntax_fa
بیاید یه سناریو رو بریم جلو:
تو مرورگرتون درباره لپتاپ سرچ میکنید.
قصد دارید بخرید پس بیشتر سرچ میکنید و مدل های مختلف رو باهمدیگه بررسی میکنید.
بعد حالا بر اساس قیمت سرچ میکنید تا یچیز اقصادی پیدا کنید.
چند وقت بعد میبینید یه ایمیل با این موضوع دریافت کردید:
لیست بهترین لپتاپ ها با قیمت مناسب در دیجیکالا
همه اینا با استفاده از Customer data platform(CDP) انجام میشه.
تو این وب سایت میتونید دربارش اطلاعات بیشتری بدست بیارید:
https://revium.com.au/blog/what-is-segment-cdp
#CDP
@Syntax_fa
revium.com.au
What Is Segment? | Segment.io CDP | Revium | Revium
What is Segment CDP & how does it help organisations get better control over their disparate data sources in a way that improves decision making and marketing.
👍11😱6🔥2