Syntax | سینتکس
Відкрити в Telegram
Focus: Web Lan: Python & Go Website: https://syntaxfa.ir Quick connect: https://quick-connect.syntaxfa.ir Github: https://github.com/syntaxfa Group: https://t.me/Syntax_fa_group
Показати більше3 262
Підписники
+224 години
+77 днів
-330 днів
Архів дописів
3 262
یکی از سوال هایی که تو اکثر مصاحبه ها ازتون پرسیده میشه ☹️
(البته با خوندن این پست قرار نیست سوالات مصاحبه رو بخوبی جواب بدید😒
ولی میتونه بهتون دید بده تا بیشتر در خصوصش بخونید و یاد بگیرید)
درباره SQL و NoSQL بگو
SQL (Structured Query Language)
و
NoSQL (Not Only SQL)
دو نوع اصلی از سیستمهای مدیریت پایگاه داده (DBMS) هستند که هر یک دارای مزایا و معایب خود میباشند. تفاوتهای اصلی بین این دو شامل موارد زیر میشود:
تفاوتهای اصلی SQL و NoSQL
1. ساختار دادهها:
- SQL
: از جداول با ساختار ثابت استفاده میکند که در آنها دادهها به صورت سطرها و ستونها سازماندهی میشوند. این ساختار معمولاً نیازمند طراحی دقیق و پیشفرضی است.
- NoSQL:
انعطافپذیرتر است و میتواند از انواع مختلفی از مدلهای داده شامل سندی، ستونی، گرافی و مبتنی بر کلید-مقدار استفاده کند. این امر به راحتی در برخورد با دادههای غیرساختاریافته و تغییرپذیر کمک میکند.
2. زبان پرس و جو:
- SQL:
از یک زبان پرس و جوی ساختاریافته (SQL) استفاده میکند که استاندارد و ثابت است.
- NoSQL:
زبان پرس و جوی خاصی ندارد و هر سیستم NoSQL ممکن است از روشهای متفاوتی برای دسترسی و مدیریت دادهها استفاده کند.
3. نرمالسازی دادهها:
- SQL:
دادهها به صورت نرمال با روابط تعریفشده بین جداول ذخیره میشوند.
- NoSQL:
نرمالسازی کمتری دارد و دادهها به صورت غیرنرمال و بدون نیاز به روابط پیچیده ذخیره میشوند.
### شرایط استفاده از SQL
1. پیچیدگی و انسجام دادهها:
- زمانی که دادهها دارای روابط پیچیده و متعددی هستند و نیاز به حفظ انسجام دادهها داریم، SQL انتخاب مناسبی است.
2. استانداردهای صنعتی:
- SQL
به دلیل سابقه طولانی و استاندارد بودن در بسیاری از صنایع و برنامهها مورد استفاده قرار میگیرد.
3. پشتیبانی تراکنشهای ACID:
- اگر برنامه نیاز به پشتیبانی از تراکنشهای اتمی، یکپارچه، ایزوله و پایدار (ACID) دارد، SQL بهترین انتخاب است.
### شرایط استفاده از NoSQL
1. حجم بزرگ دادهها:
- در شرایطی که با حجم بزرگی از دادههای غیرساختاریافته یا نیمهساختاریافته روبهرو هستیم، NoSQL عملکرد بهتری دارد.
2. مقیاسپذیری بالا:
- اگر نیاز به مقیاسپذیری افقی و انعطافپذیری بیشتری داریم، NoSQL مناسبتر است.
3. سرعت بالا و تأخیر کم:
- برای برنامههایی که نیاز به سرعت بالا و تأخیر کم در خواندن و نوشتن دادهها دارند، NoSQL گزینه بهتری است.
### دلایل استفاده از SQL
1. پایداری و قابلیت اعتماد:
- سیستمهای SQL به دلیل پایبندی به استانداردهای ACID و ساختار منظم، قابلیت اعتماد بالایی دارند.
2. ابزارهای تحلیلی و گزارشگیری قوی:
- وجود ابزارهای متنوع برای تحلیل و گزارشگیری دادهها SQL را به گزینهای مناسب برای تحلیلگران و مدیران داده تبدیل کرده است.
3. پشتیبانی گسترده و جامعه کاربری:
- به دلیل استفاده وسیع و سابقه طولانی، پشتیبانی و منابع زیادی برای حل مشکلات و یادگیری SQL وجود دارد.
### دلایل استفاده از NoSQL
1. انعطافپذیری در مدل دادهها:
- NoSQL
اجازه میدهد دادهها به روشهای مختلفی ذخیره و مدیریت شوند که این امر برای برنامههای مختلف انعطافپذیری زیادی فراهم میکند.
2. سرعت و کارایی بالا:
- به دلیل ساختار غیرنرمال و مقیاسپذیری افقی، NoSQL میتواند عملیات را با سرعت بیشتری انجام دهد.
3. مدیریت دادههای متنوع:
- NoSQL
مناسب برای مدیریت دادههای متنوع و تغییرپذیر است که به سرعت در حال رشد و تغییر هستند.
به طور خلاصه، انتخاب بین SQL و NoSQL بستگی به نیازها و شرایط خاص هر پروژه دارد. SQL برای مواردی که نیاز به انسجام و یکپارچگی دادهها، تراکنشهای ACID و استانداردهای صنعتی است، مناسبتر است. در مقابل، NoSQL برای برنامههایی که نیاز به مقیاسپذیری بالا، انعطافپذیری در مدل دادهها و سرعت بالا دارند، گزینه بهتری محسوب میشود.
#sql #nosql
@Syntax_fa
3 262
Foreign Function Interface (FFI)
یک مکانیسم است که به ما اجازه می دهد تا از توابع و رویههای نوشته شده در زبانهای دیگه، تو زبان برنامه نویسی دیگه ای استفاده کنیم. این مکانیزم به برنامهنویسا این امکانو میده تا از قابلیتها و کارایی زبانهای دیگه در برنامههای خودمون استفاده کنیم.
استفاده از قدرت زبان راست در پایتون 😏
راست یک زبان برنامهنویسی مدرن است که به دلیل کارایی بالا و ایمنی حافظه محبوبیت زیادی پیدا کرده است. ترکیب پایتون و راست به شما این امکان را میدهد که از مزایای هر دو زبان بهرهمند شوید: سادگی و قدرت کتابخانههای پایتون و کارایی بالای راست.
Pydantic
یک کتابخانه پایتونی برای مدیریت و اعتبارسنجی دادهها است که به دلیل استفاده از تایپها و انوتیشنهای (annotations) تایپینگ پایتون، کارایی و کاربرپسندی بالایی دارد. این کتابخانه با استفاده از راست (Rust) برای بهبود کارایی استفاده میکند.
Pydantic
پایدانتیک به شما اجازه میدهد تا مدلهای داده با تایپهای قوی بسازید و اعتبارسنجی دادهها را به صورت خودکار انجام دهید. این کتابخانه با استفاده از کتابخانه
rust-typed که یک موتور اعتبارسنجی سریع به زبان راست است، کارایی بالایی دارد.
استفاده از راست در پایدانتیک
پایدانتیک با استفاده از کتابخانههای راست مانند
rust-typed
برای اعتبارسنجی سریع دادهها استفاده میکند. این امر به Pydantic اجازه میدهد که با سرعت و کارایی بالا اعتبارسنجی دادهها را انجام دهد. استفاده از راست در Pydantic باعث شده که این کتابخانه بتواند حجم بالایی از دادهها را به سرعت پردازش کند.
پکیجهای دیگر که از راست استفاده میکنند
علاوه بر Pydantic، کتابخانههای دیگری نیز هستند که از راست برای بهبود کارایی استفاده میکنند. برخی از این کتابخانهها عبارتند از:
1. Polars:
یک کتابخانه سریع برای تحلیل دادهها که با استفاده از راست ساخته شده است.
2. PyO3:
یک کتابخانه برای نوشتن افزونههای پایتون با راست.
3. RustPython:
یک مفسر پایتون که به زبان راست نوشته شده است و به منظور اجرای کدهای پایتون با کارایی بالاتر طراحی شده است.
استفاده از راست در پایتون به شما امکان میدهد که از مزایای کارایی و ایمنی حافظه راست در کنار سادگی و قدرت پایتون بهرهبرداری کنید. Pydantic نمونهای عالی از این ترکیب موفق است که به شما اجازه میدهد مدلهای دادهای کارآمد و قابل اعتماد بسازید.
#FFI
@Syntax_fa3 262
پستای این کانال با هشتگ
#domain_driven_design
رو دنبال کنید اگه دنبال آموزش ddd هستید «آقای بهزاد آزادی» در موردش کلی پست گذاشته
@code_crafters
3 262
موقعیت استخدام
فرانتکار میدلول حضوری در تهران
(خودم دوستان فرانت دارم منتها جهت برقراری عدالت میخوام رزومه ببینم و چندنفر دیگه رو هم بشناسم😅😅😅)
اگه خودتون رو سنیور میبینید بازم پیام بدید چند روز در هفته میاید سرکار در قبال تخصصتون(خروجی کار فقط بدید تحویل بهم)
JS
Next js
Tailwind
Typescript
Saas
Responsive design
Restfull (پروژهها میکروسرویسی هستش)
Git
Seo آشنا با مفاهیم
Redux, webpack (مزیت محسوب میشود)
لطفا رزومه بدید و حقوق مدنظر خودتون رو برام بنویسید(اگر هم شرایط خاصی دارید ناامید نباشید گوش شنوا دارم)
در انتها بگم پروژهها سبک هستش و هیچگونه پیچیدگی خاص و نوآوری داخلش نیست که خلق کنید(موارد عمومی هست که همیشه و هرجایی دیدید)
@behzad_azadi
#موقت
Source:
@code_crafters
@Syntax_fa
3 262
چجوری تو لینکدین پستامون ویو خوبی بگیره؟
بعضیا میگن پستای لینکدینم اصلا ویو نمیگیره. هیچکس منو نو لینکدین به انگشتشم نمیگیره یه لحظه رو ری اکشن بزنه.
عنوان شغلی:
نگو کارمند فروش😐 بگو استراتژیست تحول فروش جهانی😍
نگو برنامه نویس 😐 بگو مهندس معماری دیجیتال 😎
نگو گرافیست بگو نقاش رویا های شما
داستان های الهام بخش
یادت نره پست هایی که الهام بخش هستنو بنویس.
مثلا:
روزی که یه خودکار رو پیدا کردم و زندگیم متحول شد!!
این موضوع چرتو هر کی ببینه میگه ببینم چی میگه
گزارش پیشرفت ها و مسیری که رفتید:
این مورد خیلی خوب ویو میخوره
مثلا:
از Hello worl تا روزی که در شرکت دارغوزآباد استخدام شدم
عکس حرفه ای و پرانرژی
نیشتو قشنگ باز کن بعد با یدونه دوربین حرفه ای عکس بگیر بذار پروفایل
تشکر از دیگران
تا جایی که میتونی برای بقیه بم.. یعنی ازشون تشکر کن
حتی یکی بهت فحش داد بگو تشکر میکنم بابت اظهار نظرتون
نقل قول های الهام بخش
برو تو گوگل سرچ کن«سخن بزرگان بعد تو لینکدین پست کن»
ایراد گرفتن از بقیه
تا میتونی پست بذار بگو لینکدین اینستا نیست و لینکدین خیلی برنامه خاصیه فقط آدمای خاص میتونن توش فعالیت کنن
نکته خیلی مهم:
اگه پسرید تمامی این نکاتو بیخیال شید چون جواب نمیده
#fun
@Syntax_fa
3 262
برای اولین بار در لینکدین یکی اخراج شده و بدلایل:
- شروع فصل جدیدی از زندگیه حرفه ای
- کسب تجربیات جدید
- روبرو شدن با چالش های نو
- تصمیم به جدا شدن از شرکت قبلی
و ... دنبال کار نمیگرده.
#fun
@Syntax_fa
3 262
✍️ Massimo Dev
🔵⚪️ نسخهبندی API یا API Versioning میدونی چیه؟
🚨 نسخهبندی API یه راهحلیه برای مدیریت تغییرات API در طول زمان بدون اینکه کاربرهای قدیمی دچار مشکل بشن. وقتی که API تغییر میکنه و ویژگیهای جدیدی بهش اضافه میشه یا مشکلاتی برطرف میشن، نسخهبندی کمک میکنه تا کاربرهایی که از نسخههای قدیمی استفاده میکنن همچنان بدون مشکل به کارشون ادامه بدن و در عین حال نسخههای جدیدتر هم در دسترس باشن.
✳️ بذار یه مثال ساده بزنم:
فرض کن یه API داری که اطلاعات آب و هوا رو میده. اولین نسخهی API (v1) یه اندپوینت داره به اسم
/weather
که اطلاعات سادهای مثل دما و رطوبت رو برمیگردونه.
نسخه 1 (v1):
GET /v1/weather?city=London
Result:
{
"temperature": "15°C",
"humidity": "75%"
}
بعداً تصمیم میگیری اطلاعات بیشتری مثل سرعت باد و پیشبینی هوا رو اضافه کنی. برای اینکه کاربرهای قدیمی دچار مشکل نشن، یه نسخه جدید از API (v2) معرفی میکنی:
نسخه 2 (v2):
GET /v2/weather?city=London
Result:
{
"temperature": "15°C",
"humidity": "75%",
"wind_speed": "10 km/h",
"forecast": [
{"day": "Monday", "temperature": "16°C"},
{"day": "Tuesday", "temperature": "17°C"}
]
}
به این ترتیب، کاربرهایی که از نسخه قدیمی (v1) استفاده میکنن همچنان بدون تغییر به کارشون ادامه میدن و کاربرهای جدید میتونن از ویژگیهای جدید نسخه 2 (v2) استفاده کنن.
✳️ بهترین روشها برای نسخهبندی API
🔹نسخهبندی URL:
- شماره نسخه رو توی مسیر URL قرار بده، مثل
/v1/resource
و
/v2/resource
- مثال:
GET /api/v1/weather،
GET /api/v2/weather.
🔹نسخهبندی با هدرها:
- از هدرهای سفارشی برای مشخص کردن نسخه استفاده کن.
- مثال:
GET /api/weather
با
headers: {"API-Version": "v2"}
🔹نسخهبندی با پارامترهای کوئری:
- شماره نسخه رو به عنوان پارامتر کوئری قرار بده.
- مثال:
GET /api/weather?version=2
🔹استراتژی پایاندهی به نسخههای قدیمی:
- به کاربرها بگو که نسخه قدیمی چه زمانی غیرفعال میشه و راهنمایی برای مهاجرت به نسخههای جدید بده.
- یه بازه زمانی مشخص و راهنمای مهاجرت ارائه کن.
🔹مستندسازی:
- برای هر نسخه از API مستندات واضح و دقیقی فراهم کن.
- مثالها، موارد استفاده و راهنماهای مهاجرت رو توضیح بده.
🔹سازگاری با نسخههای قبلی:
- تا حد ممکن نسخههای جدید رو سازگار با نسخههای قبلی نگه دار تا کاربرها دچار مشکل نشن.
- از نسخهبندی معنایی (مثل major.minor.patch) استفاده کن تا سطح تغییرات رو نشون بدی مثلا نسخه ،29.5.0 شده 29.5.1
🔹سیاست نسخهبندی:
- یه سیاست نسخهبندی تعریف کن که مشخص کنه کی و چطور نسخههای جدید منتشر میشن.
- واضح بگو که چه زمانی تغییرات بزرگ نیاز به یه نسخه جدید دارن.
Source:
@gopher_academy
#api_versioning
@Syntax_fa3 262
پنج تا از مخفف های معروف دنیای برنامه نویسی و معنی اونا:
TDD(tea drinking developers):
به معنی برنامه نویسان چای خور
REST(really exhausted software team):
تیم نرم افزاری پنچر
HTML(how to meet ladies):
چگونه با خانم ها آشنا شویم
CSS(cant style stuff):
وقتی بعد کلی ور رفتن، نتونستید استایل فرانت رو درست کنید میگید سی اس اس یعنی نمیتونم چیز هارو استایل کنم.
SQL(singles have a quite life):
سینگل ها زندگیه آرومی دارن
#fun
@Syntax_fa
3 262
مقایسه مرتب کردن یک آرایه به طول 50 هزار عنصر در چهار الگوریتم مختلف.
(تفاوت n2 با nlogn با زیاد شدن طول، خیلی قابل لمس هستش)
3 262
چند تا نکته کوتاه درباره پیمایش:
iterator:
به معنی پیمایش هستش
iterable:
به معنی قابل پیمایش بودن
تو پیاده سازی ساختمان داده یه نکته ای که باید بهش دقت کنید این هستش که اگه نیازره، براش قابلیت پیمایش شدن رو پیاده سازی کنید.
یک iterable معمولا متد های زیر رو داره:
next()
با این متد به مقدار بعدی رو برمیگردونه
hasNext()
این متد که یک boolean هستش بهمون میگه مقدار بعدی وجود داره یا نه.
remove()
با این متد، عنصری که الان اونجا هستیم رو پاک میکنیم.
نکته:
معمولا iterator ها دربرابر concurrent modification ایمن هستن. یعنی روی یک ساختمان داده دارید پیمایش می کنید، نمیتونید بصورت همزمان مقداری رو بهش اضافه و یا حذف کنید.
@Syntax_fa
3 262
Lambda Expression
توضیح: Lambda expressions، که به عنوان anonymous functions (توابع بینام) نیز شناخته میشوند، توابعی هستند که بدون نام تعریف میشوند و برای عملیاتهای کوچک و ساده مورد استفاده قرار میگیرند. در پایتون، این توابع با استفاده از کلمه کلیدی
lambda تعریف میشوند.
کار با Lambda Expression در پایتون
lambda arguments: expression
- arguments: آرگومانهایی که تابع میپذیرد.
- expression: عبارتی که ارزیابی میشود و نتیجه آن برگردانده میشود.
مثال ساده
در این مثال، یک تابع لامبدا تعریف میکنیم که دو عدد را با هم جمع میکند:
# تعریف یک تابع لامبدا که دو عدد را جمع میکند
add = lambda x, y: x + y
# استفاده از تابع لامبدا
result = add(3, 4)
print(result) # Output: 7
در اینجا، تابع لامبدا دو آرگومان x و y میپذیرد و مقدار x + y را برمیگرداند.
استفاده از Lambda Expressions در توابع higher-order
توابع higher-order توابعی هستند که یک یا چند تابع را به عنوان آرگومان میپذیرند و یا تابعی را برمیگردانند. Lambda expressions معمولاً در توابع higher-order مانند map(), filter(), و reduce() استفاده میشوند.
مثال با `map()`
تابع map() یک تابع را روی هر آیتم از یک iterable اعمال میکند:
تعریف یک لیست از اعداد
numbers = [1, 2, 3, 4, 5]
doubled = map(lambda x: x * 2, numbers)
print(list(doubled)) # Output: [2, 4, 6, 8, 10]
مثال با `filter()`
تابع filter() آیتمهایی را که تابع به عنوان True ارزیابی میکند، فیلتر میکند:
# تعریف یک لیست از اعداد
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
evens = filter(lambda x: x % 2 == 0, numbers)
print(list(evens)) # Output: [2, 4, 6, 8, 10]
مثال با `reduce()`
تابع reduce() از ماژول functools توضیح اینکه دقیقا چطور عمل میکنه رو خواستید بگید تو یه پست دیگه بگم:
from functools import reduce
numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product) # Output: 120
#lambda_expression #filter #map #reduce #python
@Syntax_fa3 262
وقتی بعد از یه عمر
نصب ویندوز کرکی روی کلی سیستم،
کرک برنامه های کاربردی مختلف،
کرک بازی ها از کودکی تا به امروز،
تماشای غیر قانونی فیلم و سریال ها،
استفاده از اکانت های دزدی،
دانلود رایگان کتاب ها از کانال های تلگرامی،
صد ها فقره کپی رایت دیگه
میری اون دنیا.
#fun
@Syntax_fa
3 262
Massimo Dev
📗 اصول مهم کد ریویو یا بررسی کد: YAGNI، KISS و DRY
من خودم موقع کد ریویوها این سه اصل رو خیلی با دقت رعایت میکنم.
🔶 1. YAGNI (You aren't gonna need it):
- این اصل داره میگه از اضافه کردن ویژگیها یا کدی که الان لازم نیست خودداری کن. این کار باعث میشه کدت تمیز و ساده بمونه.
🔹 - مثال: اگه تو داری یه فرم ساده برای ورود اطلاعات مینویسی، لازم نیست از الان برای فیلتر کردن دادهها یا اضافه کردن قابلیتهای پیچیده فکر کنی. اونها رو بعداً وقتی واقعاً نیاز بود اضافه کن.
🔶 2. KISS (Keep it simple & stupid):
- میگه سعی کن کدت ساده باشه. راهحلهای پیچیده معمولاً میشه سادهترشون کرد و این باعث میشه کد راحتتر خوانده و نگهداری بشه.
🔹 - مثال: به جای نوشتن یه تابع پیچیده برای محاسبه تخفیف، یه تابع ساده بنویس که فقط تخفیف رو بر اساس درصد حساب کنه. اگه بعداً نیاز به محاسبات پیچیدهتر بود، اون موقع بهش اضافه کن.
🔶 3. DRY (Don't repeat yourself):
- میگه جایی که میشه، از کدهای موجود استفاده کن و از تکرار کد خودداری کن. این کار باعث میشه نگهداری کد راحتتر باشه و احتمال خطاها کمتر بشه.
🔹- مثال: اگه داری چند بار یه عملیات مشابه مثل محاسبه مالیات رو انجام میدی، اون رو تو یه تابع مجزا بنویس و هر بار از اون تابع استفاده کن.
با رعایت این اصول در کد ریویوها، میتونی کدی بنویسی که هم خواناتر، هم قابل نگهداریتر و هم بهینهتر باشه. همه چیز در مورد نوشتن کد کمتر ولی بهتره.
Source:
@gopher_academy
@Syntax_fa
3 262
اینم یه لیست از کانالای برنامه نویسیه خوب و جذاب
خواستید جوین شید تا از ما حمایت شه
https://t.me/addlist/ofQUtBMkdCsyMTJk
3 262
فامیل و آشنا:
شنیدم برنامه نویسی و طراحی وب سایت بلدی
_ آره بلدم
یه ایده دارم بیا بزنش نصف نصف میلیاردر میشیم
_ فرار
#fun
@Syntax_fa
