10327
برای موفق شدن 🌱 با این عبارت خداحافظی کن: "باشه فردا"🍃 💻 برای دسترسی راحت تر به مطالب به "لیست پین شده" برو🙃 👩💻 Support: @narges_madhi 🪧 ads: @teachifyads 💁♀️ instagram : instagram.com/teachify_ir
✔️ این عالی بود :)))
#fun
✅ @Teachify | برنامه نویسی
‼️ هر دانشجو و مهندس کامپیوتری به همچین فولدری احتیاج داره
🗂 یه فولدر تخصصی از کانالهای هوشمصنوعی، دروس مهندسی کامپیوتر، شبکه و امنیت ، طراحی سایت و آموزش نرم افزارهای مهندسی و زبانهای برنامه نویسی در تلگرامتون دارید
📌 به روز ترین آموزشها را یکجا دارید
📌 هیچ دوره ، رویداد ، آموزش و فرصت شغلی رو از دست نمی دید
📥 با زدن دکمه Add این فولدر به تلگرام شما اضافه میشود.
👇👇👇👇
/channel/addlist/nAHIgno7M4kwNzc0
❌ 6 ماهه یک تخصص پردرآمد رو یاد بگیر!
بوتکمپ Data Science & Machine Learning
📌 همراه با منتورینگ تخصصی و پروژه عملی
📌 ارائه مدرک پایان دوره
📌 کمک به استخدام و معرفی به شرکتهای معتبر
الان ثبتنام کن؛ 6 ماه دیگه استخدام شو👇
https://dnkr.ir/kgXa8
https://dnkr.ir/kgXa8
📢بوتکمپ مهندسی داده رهنماکالج با توجه به نیاز روز بازار کار دنیای داده طراحی شده است.
چرا که با افزایش حجم دادهها و اهمیت روزافزون تحلیل دادهها در تصمیمگیریهای استراتژیک، مهندسی داده به یکی از نیازهای اساسی بازار کار تبدیل شده است.
📌این دوره مناسب افرادی است که:
🔸تجربه حداقل ۶ ماه تا ۱ سال کار در حوزه مهندس نرمافزار یا یادگیری ماشین دارند
🔸یا به عنوان برنامهنویس با یکی از زبانهای Java یا Python کد نویسی کردهاند
🔸یا تجربه کار با یک پایگاه داده در محیط عملیاتی را دارند.
🔴در این بوتکمپ یاد میگیریم چگونه در لایههای متفاوت یک کسب و کار امکان جمعآوری، ذخیرهسازی و دسترسپذیری انواع دادههای متنوع در شرکت ها را فراهم کنیم.
با دانلود چالش اولین قدم برای ثبتنام رو بردارید، ارزیابی و مصاحبه بر اساس اولویت زمان ارسال چالش است، بهتر است اگر قصد شرکت در این دوره را دارید، هر چه زودتر ثبتنامتان را کامل کنید.
📎اطلاعات کامل بوتکمپ مهندسی داده رهنماکالج
مشتاق دیدنتون در جمع حرفهایهای رهنما کالج هستیم.
🆔 @Rahnemacollege
✔️ نحوه نمایش اعداد در مبناهای مختلف و تبدیل آن:
مبنای 2 (دودویی یا باینری): پیشوند 0b یا 0B
ارقام معتبر: فقط 0 و 1
مثال: 0b11111111 معادل 255 در دهدهی است.
مبنای 8 (هشتهشتی یا اوکتال): پیشوند 0o یا 0O
ارقام معتبر: از 0 تا 7
مثال: 0o377 معادل 255 در دهدهی است.
مبنای 16 (شانزدههشتی یا هگزادسیمال): پیشوند 0x یا 0X
ارقام معتبر: از 0 تا 9 و حروف a-f یا A-F
مثال: 0xff معادل 255 در دهدهی است.
برای نمایش این اعداد در مبناهای مختلف:
x = 255
print(bin(x)) # '0b11111111'
print(oct(x)) # '0o377'
print(hex(x)) # '0xff'
✔️ آشنایی با Walrus Operator در پایتون (به معنی شیرآبی)
در نسخه ۳.۸ پایتون، اپراتوری به نام Walrus Operator (با نماد :=) معرفی شد که هدف آن سادهتر کردن کدنویسی در شرایط خاص است. این اپراتور به شما اجازه میدهد همزمان یک مقدار را به یک متغیر اختصاص دهید و از آن استفاده کنید.
فرض کنید میخواهیم طول کلماتی از یک لیست را بررسی کنیم و فقط کلماتی که طولشان بیش از ۳ کاراکتر است را چاپ کنیم.
➖ بدون Walrus Operator:
words = ["apple", "pie", "banana", "kiwi"]
for word in words:
if len(word) > 3:
print(word)
words = ["apple", "pie", "banana", "kiwi"]
for word in words:
if (length := len(word)) > 3:
print(f"{word} (length: {length})")
length) محاسبه شده و همزمان در شرط و چاپ استفاده میشود، بدون نیاز به محاسبه مجدد.while (user_input := input("Enter something: ")) != "exit":
print(f"You entered: {user_input}")with open("data.txt") as file:
while (line := file.readline().strip()):
print(line)
✔️ درسته ما کارمون با پایتونه ولی میدونید چرا PHP نسخه 6 نداره؟ 🤔
بعد از نسخه 5.6، نسخه 7 منتشر شد، اما نسخه 6 چی شد؟ کجا رفت؟
نسخه 6 قرار بود منتشر بشه، اما به دلیل مشکلاتی، هیچوقت به نتیجه نرسید و بهطور کامل کنار گذاشته شد.
ایده اصلی نسخه 6، اضافه کردن پشتیبانی از یونیکد به هسته PHP بود. هدف این بود که PHP بتونه تمام زبانهای دنیا و کاراکترهاشون رو پشتیبانی کنه. حتی مثلاً میشد از ایموجیها به عنوان اسم متغیر یا تابع استفاده کرد!
اما چرا این پروژه شکست خورد؟
1. تغییرات سنگین: برای این قابلیت باید کلی ساختار زبان تغییر میکرد، که اجرای اون واقعاً سخت و پیچیده بود.
2. مشکلات عملکردی: اضافه کردن یونیکد باعث افت شدید پرفورمنس PHP میشد، که برای اکثر برنامهنویسا غیرقابلقبول بود.
در نهایت، پروژه نسخه 6 کنار گذاشته شد و قابلیتهایی که قابل پیادهسازی بودن، در نسخه 7 ارائه شدن.
✅ @Teachify | Rasoul Esmaeili
✔️ Python List Methods
#Python
✅ @Teachify | برنامه نویسی
ترتیب سوالات خاطرم نیست ولی سعی میکنم عنوان ها رو بنویسم:
Design Patterns
OOP
Decorators
Generators
Signals
Database Transactions
Pure Python (این قسمت زیاد بود سوالاتش)
Built-in Functions (map)
Lambda Functions
Panda
Numpy
Python Libraries (Poetry, Decouple, PyDict, Flake8, Black)
Python Threading
Python / Processing
مصاحبه کننده یک شخص واقعا عالی بود و آدم از معاشرت باهاش لذت میبرد.
به هیچ عنوان خودش رو نمیگرفت و مثل یک دوست با هم حرف زدیم.
هر جا لازم میشد خودش برام بیشتر توضیح میداد.
جواب های منم تحسین میکرد و برای بعضی سوالات میگفت انتظار نداشتم بتونی جواب بدی :))
✅ @Teachify | برنامه نویسی
یکی از جنبه های اصلی ORM که معمولا نادیده گرفته میشه!
این جنبه اینه که ORM میتونه رفتار خاص هر پایگاه داده رو مدیریت کنه و توسعهدهنده رو از این پیچیدگیها بینیاز کنه.
از اونجایی که دیتابیسها اصول و رفتارهای خاص خودشون رو دارن، مثلاً:
گویشهای SQL یا SQL Dialect:
هر پایگاه داده (مثل MySQL، PostgreSQL یا Oracle) نسخه خاص خودش از SQL رو داره که ممکنه در جزئیات مثل نحوه نوشتن کوئری، نوع دادهها یا عملیات پیشرفته تفاوت داشته باشه. ORM این تفاوتها رو پنهان میکنه و شما میتونید با یک زبان واحد (مثل کدهای پایتون در SQLAlchemy یا Django ORM) کار کنید.
بهینهسازی عملکرد:
از اونجایی که ORM میدونه هر دیتابیس در چه چیزی قویتره (مثلاً PostgreSQL برای Queryهای پیچیده عالیه، ولی SQLite برای عملیاتهای سبک مناسبتره) و سعی میکنه بهینهترین کوئریها رو برای اون دیتابیس تولید کنه.
محدودیتهای خاص دیتابیسها:
مثلاً برخی دیتابیسها از ویژگیهای خاصی مثل Partial Indexes، Full Text Search یا JSON Fields پشتیبانی میکنن. ORMها اغلب این قابلیتها رو شناسایی کرده و ازشون استفاده میکنن.
مدیریت اتصال و تنظیمات خاص:
با استفاده از ORMها تنظیمات خاص دیتابیس مثل زمانبندی اتصالات، مدیریت تراکنشها و تنظیمات سطح دسترسی رو به طور خودکار انجام میشن.
در نتیجه با استفاده از ORM، نیازی نیست که توسعهدهنده خودش با پیچیدگیهای دیتابیس خاصی درگیر بشه. ORM این نقش رو بر عهده میگیره و به سیستم کمک میکنه که بفهمه دقیقاً با چه دیتابیسی سروکار داره و چطور باید باهاش رفتار کنه.
این یعنی، ORM فراتر از یک ابزار برای تبدیل اشیا به جداول عمل میکنه؛ بلکه یه مدیر هوشمند بین دیتابیس و برنامه است که باعث میشه توسعه نرمافزار راحتتر، سریعتر و سازگارتر با انواع دیتابیسها باشه.
✅ @Teachify | برنامه نویسی
✔️ مقایسه زبانهای برنامهنویسی!!!
یک تحلیل جذاب از عملکرد زبانهای مختلف برنامهنویسی:
نکات مهم:
- زبان های Java و Kotlin عملکرد بسیار سریعی دارند؛ احتمالاً به دلیل تمرکز ویژه گوگل روی بهینهسازی این زبانها.
- زبان JavaScript در بین زبانهای تفسیری و JIT، از نظر سرعت عملکردی فوقالعاده دارد.
- زبان Python، در مقایسه با سایر زبانها، بدون استفاده از ابزارهایی مثل PyPy نسبتاً کندتر است.
📂 کدهای مربوط به این بررسی را میتوانید در مخزن زیر ببینید:
https://github.com/bddicken/languages
#برنامهنویسی
✅ @Teachify | برنامه نویسی
توی این مصاحبه سوالات زیاد بود به خصوص pure python.
حتما سرفرصت براتون تا جایی که یادم میاد مینویسم
ترب یه آگهی استخدام گذاشته و تکنولوژی های مورد استفاده اش رو گفته:
یکم خودتون رو محک بزنید :))
زبان برنامهنویسی: پایتون، جاوا اسکریپت.
فریمورک به ترتیب اهمیت: Django, React, Starlette, FastAPI, Flask.
ذخیره و بازیابی اطلاعات به ترتیب اهمیت: postgresql, elasticsearch, redis, mongo, MinIO, ClickHouse, Influx, Prometheus,
داشبورد: grafana, kibana, metabase, amplitude.
زیرساخت: docker, kubernetes.
کنترلپروژه: gitlab.
تست و دیپلوی: gitlab-ci.
لینک جابینجا
✅ @Teachify | برنامه نویسی
دوستان این پروژه رو میتونید توی لینک زیر ببینید:
https://github.com/yousefvafaei/Django-Upload-Manager
حتما اگه وقتش رو داشتین تست کنین و نظراتتون رو برام بگین.
اگه کدهاش رو دیدین و براتون مفید بود ممنون میشم اگه star بدین.
✔️ پورتهای پیشفرض برخی از پایگاه دادههای مهم
دیتابیس SQLite بدون پورت (فایلمحور است).
دیتابیس PostgreSQL با پورت 5432
دیتابیس MySQL/MariaDB با پورت 3306
دیتابیس Oracle با پورت 1521
دیتابیس SQL Server با پورت 1433
دیتابیس MongoDB با پورت 27017
✅ @Teachify | برنامه نویسی
🔻 فولدر تخصصی هوشمصنوعی
اگه به هوشمصنوعی و ChatGPT علاقه دارید یا میخواهید پایتون رو اصولی و حرفه ای یاد بگیرید ، این پکیج برای شماست
👇👇
/channel/addlist/nAHIgno7M4kwNzc0
✔️ ترفند جالب پایتون: Context Manager با with
عبارت Context Manager یکی از مفاهیم مهم و کاربردی در زبان پایتون است که برای مدیریت منابعی که نیاز به باز و بسته شدن دارند (مثل فایلها، کانکشنها به دیتابیس، یا قفلها) استفاده میشود.
یک Context Manager به شما این امکان را میدهد که بخشی از کد را در یک "بلوک مدیریتی" اجرا کنید، و در شروع و پایان آن بلوک، اقدامات خاصی انجام شود. این کار معمولاً با استفاده از دستور with انجام میشود.
به کمک دستور with میتوانید مدیریت منابع مثل فایلها یا دیتابیس را سادهتر کنید. این دستور بهطور خودکار وظایف شروع و پایان را انجام میدهد.
with open("example.txt", "r") as file:
data = file.read()
# The file is automatically closed here.
from contextlib import contextmanager
@contextmanager
def my_context():
print("🔹 Start...")
yield "Some data"
print("🔸 End...")
with my_context() as data:
print(data)
✔️ به نظر من که درست میگه :)))
نظر شما چیه؟
#fun
✅ @Teachify | برنامه نویسی
✔️ برنامهنویسها درونگرای برونگرا هستند!!
برنامهنویسها معمولاً درونگرا به نظر میرسن؛ عاشق کار در سکوت و غرق شدن در دنیای کدها هستند. اما کافیه یکی مثل خودشون رو ببینن! اون وقت انگار یه جرقه روشن میشه و برونگراییشون فوران میکنه!
شاید این به خاطر این باشه که کنار همفکرهاشون، حرف زدن راحتتره، چون نیاز نیست چیزی رو توضیح بدن؛ اونا حرف های همو میفهمن.
حالا تو چطور؟ وقتی با یه برنامهنویس دیگه حرف میزنی، برونگرا میشی؟
#برنامهنویسی #درونگرایی #برونگرایی
✅ @Teachify | برنامه نویسی
✔️ انواع ساختار داده در برنامه نویسی
در دنیای برنامهنویسی و علوم کامپیوتر، ساختارهای داده (Data Structures) ابزارهایی هستند که نحوه سازماندهی و مدیریت دادهها را تعیین میکنند. این ساختارها مستقیماً بر کارایی و سرعت الگوریتمها تأثیر میگذارند. هر برنامهنویس باید با انواع ساختار داده در برنامه نویسی آشنا باشد، چراکه استفاده صحیح از ساختار داده مناسب میتواند زمان اجرا را کاهش داده و مصرف حافظه را بهینه کند و همچنین مشکلات پیچیدهای مثل جستجو، مرتبسازی، یا مدیریت دادههای بزرگ را سادهتر کند.
در کالی بویز بخوانید: انواع ساختار داده در برنامه نویسی
✅ @kaliboys | کالی بویز
دعوت به مصاحبه HR شدم 🥹
✅ @Teachify | برنامه نویسی
✔️ مفهوم match-case در پایتون (نسخه 3.10 به بعد)
اگر تا حالا با شرایط پیچیده در پایتون سروکله زدید، match-case کار شما رو راحتتر میکنه! این ویژگی مثل switch-case در زبانهای دیگه عمل میکنه، اما با قدرتی فراتر برای مدیریت الگوهای پیچیده.
فرض کنید میخواهید دادههای مختلفی رو پردازش کنید، مثل ایجاد، حذف یا بهروزرسانی یک آیتم. به کمک این قابلیت، این کار سادهتر و مرتبتر میشه:
def process_data(data):
match data:
case {"action": "create", "id": id, "content": content}:
print(f"Creating a new item with ID: {id} and content: {content}")
case {"action": "delete", "id": id}:
print(f"Deleting the item with ID: {id}")
case {"action": "update", "id": id, "content": content}:
print(f"Updating the item {id} with content: {content}")
case _:
print("Invalid data")
# Test the function
process_data({"action": "create", "id": 1, "content": "Hello"})
process_data({"action": "delete", "id": 2})
process_data({"action": "update", "id": 3, "content": "Updated content"})
if-else های تو در تو
✔️ نکاتی که باید به هنگام استفاده از هوش مصنوعی برای کدزنی یا دیباگ در نظر بگیرید!
ورودی دقیق بدهید: سوالات و توضیحات خود را بهصورت واضح و جزئی مطرح کنید تا پاسخهای مرتبطتری دریافت کنید.
از کد یاد بگیرید: کدی که هوش مصنوعی تولید میکند را بررسی کنید و با مطالعه آن مهارتهای خود را ارتقا دهید.
سادهسازی کد: اگر کد تولید شده بیش از حد پیچیده است، آن را بازنویسی کنید تا خواناتر و بهینهتر شود.
سازگاری با تیم: کد تولید شده را مطابق با استانداردها و سبک کدنویسی تیم خود تنظیم کنید.
پایداری و امنیت: همیشه کد را از نظر امنیت و کارایی بررسی کنید؛ ممکن است آسیبپذیریهایی در کد وجود داشته باشد.
✅ @Teachify | برنامه نویسی
✔️چگونه اطلاعات اضافی را در رابطههای ManyToMany جنگو ذخیره کنیم؟
در جنگو، روابط چند به چند بهصورت پیشفرض ساده هستند و تنها رابطه بین دو مدل را نگهداری میکنند. اما وقتی نیاز به ذخیره اطلاعات اضافی درباره این رابطه دارید (مثل تاریخ، وضعیت، یا توضیحات)، باید از ویژگی قدرتمند through استفاده کنید. بیایید با جزئیات این مفهوم را بررسی کنیم:
اگر بهصورت ساده از ManyToManyField استفاده کنید، جنگو خودش یک جدول واسط (Intermediate Table) برای مدیریت رابطه بین دو مدل ایجاد میکند که در تصویر مدل BookAuthor میباشد.
در این حالت جنگو خودکار جدولی ایجاد میکند که تنها دو ستون دارد و شما نمیتوانید اطلاعات اضافه (مثل تاریخ انتشار یا نقش نویسنده) را ذخیره کنید.
| book_id | author_id |
وقتی نیاز دارید اطلاعات بیشتری در مورد رابطه ذخیره کنید، through به شما امکان میدهد یک مدل سفارشی برای جدول واسط بسازید. این مدل میتواند علاوه بر کلیدهای خارجی، فیلدهای اضافی هم داشته باشد.
فرض کنید میخواهید رابطه بین کتاب و نویسنده را ذخیره کنید و علاوه بر آن، تاریخ انتشار همکاری را نیز نگهدارید، کد شما به صورت تصویر پیوست شده خواهد بود.
ایجاد نویسنده و کتاب:
author = Author.objects.create(name="John Doe")
book = Book.objects.create(title="Python for Beginners")
BookAuthor.objects.create(book=book, author=author, publication_date="2024-01-01")
relations = BookAuthor.objects.all()
for relation in relations:
print(f"{relation.author.name} wrote '{relation.book.title}' on {relation.publication_date}")
✔️ تفاوت copy و deepcopy در پایتون!
کپی ساده (Shallow Copy):
وقتی یک کپی ساده از یک شیء میگیرید، فقط ارجاع به عناصر اصلی درون شیء ساخته میشه.
import copy
original_list = [1, 2, [3, 4]]
shallow_copy = copy.copy(original_list)
# تغییر در لیست اصلی
original_list[0] = 100
print("Original:", original_list) # [100, 2, [3, 4]]
print("Shallow Copy:", shallow_copy) # [1, 2, [3, 4]]
# تغییر در یک عنصر تو در تو
original_list[2][0] = 300
print("Original:", original_list) # [100, 2, [300, 4]]
print("Shallow Copy:", shallow_copy) # [1, 2, [300, 4]]
deep_copy = copy.deepcopy(original_list)
# تغییر در عنصر تو در تو
original_list[2][0] = 500
print("Original:", original_list) # [100, 2, [500, 4]]
print("Deep Copy:", deep_copy) # [1, 2, [300, 4]]
✔️ تفاوت 3 نوع دیتاتایپ لیست، تاپل و ست در پایتون چیست؟
1. لیست (List)
تغییرپذیر (Mutable): میتوانید عناصر را اضافه، حذف یا تغییر دهید.
مرتب (Ordered): ترتیب عناصر همانطور که اضافه شدهاند حفظ میشود.
اجازه مقادیر تکراری: میتوانید مقادیر تکراری داشته باشید.
از براکت ([]) برای تعریف استفاده میشود.
my_list = [1, 2, 3, 3, 4]
my_list.append(5) # اضافه کردن عنصر
my_list[0] = 10 # تغییر مقدار
print(my_list) # خروجی: [10, 2, 3, 3, 4, 5]
my_tuple = (1, 2, 3, 3, 4)
# my_tuple[0] = 10 # خطا: تغییرناپذیری
print(my_tuple[1]) # دسترسی به عنصر دوم: 2
my_set = {1, 2, 3, 3, 4}
my_set.add(5) # اضافه کردن عنصر
print(my_set) # خروجی: {1, 2, 3, 4, 5} (بدون تکرار و ترتیب مشخص)
مسیر برگشت از مصاحبه 🥲
مصاحبه کننده در یک کلام عالی بود❤️
✅ @Teachify | برنامه نویسی
کی امروز از اینجا رد شده؟
✅ @Teachify | برنامه نویسی
فردا مصاحبه دارم
پس فردا مصاحبه دارم
یه مصاحبه برای پریروز بود که کنسل کردن و تایمش رو گفتن اعلام میکنن که ممکنه اونم همین 2-3 روز دیگه باشه :))
پ.ن: هنوز قسمت نشده از فریلنسری دربیام بیرون :|
سوالاتی که ازم پرسیده میشه رو حتما براتون میذارم.
✅ @Teachify | برنامه نویسی
✔️ اضافه کردن و حذف عناصر از هر دو طرف لیست
اگر میخواهید عناصری را از هر دو طرف یک لیست اضافه یا حذف کنید، میتوانید از deque (صف دوطرفه) استفاده کنید. برخلاف لیستهای معمولی که فقط امکان اضافه یا حذف عناصر از یک طرف را میدهند، deque این امکان را فراهم میکند که از هر دو طرف لیست (چپ و راست) عناصر را مدیریت کنید.
این ویژگی زمانی که با دادههای بزرگ یا ساختارهایی مثل پشته و صف کار میکنید بسیار کاربردی است. برای استفاده از deque باید ماژول collections را وارد کنید. مثال زیر نشان میدهد که چطور میتوانید از این قابلیت بهره ببرید:
from collections import deque
# Create a deque
queue = deque()
# Add elements to both ends
queue.append(10) # Add to the right end
queue.appendleft(5) # Add to the left end
# Remove elements from both ends
right = queue.pop() # Remove from the right end
left = queue.popleft() # Remove from the left end
print(f"Right end: {right}, Left end: {left}")
Right end: 10, Left end: 5