FaQ of Programming
Open in Telegram
در این کانال پیشنهادات افراد باتجربه در حوزه برنامه نویسی رو قرار میدهیم! مطالب تخصصی تر را در این گروه قرار میدهیم : @ProgrammingForEveryHumans
Show more1 168
Subscribers
No data24 hours
No data7 days
No data30 days
Posts Archive
1 168
Repost from DevTwitter | توییت برنامه نویسی
خدمت دوستان عزیزی که از من درباره «معرفی کردن یک منبع آموزشی خوب برای X » سوال میکنید:
مستندات رسمی سایت هر زبان یا ابزار، یکی از بهترین قدمها برای شروع هست. اگر ابزاری مستندات رسمی خوبی نداشت، به احتمال زیاد ارزش یاد گرفتن نداره. در قدم بعد هم میتونید از یوتوب استفاده کنید.
@DevTwitter | <Alireza Gh/>
1 168
Repost from | کانال توسعهدهندگان پایتون |
💠 داندرمتد ها
💠 بخش دوم (موارد مرتبط با عملگرهای تخصیص و بیتی)
🌀 برای درک بهتر موارد مرتبط با این قسمت، پیشنهاد میشود پست مربوط به عملگرها را مطالعه کنید.
🔰 از magic methodهای مرتبط با عملگرهای بیتی در پایتون برای تعریف رفتاری خاص برای عملگرهای بیتی مانند &، | و ... استفاده میشود.
🔸 با استفاده از این داندرمتدها، میتوانید عملگرهای مرتبط را به شکلی سفارشی شده در کلاس خود استفاده کنید. این قابلیت به شما کمک میکند تا در برنامههای پایتونی که با دادههای بیتی سروکار دارند، عملگرهای بیتی را با رفتار خاصی تعریف کنید.
🔹 داندرمتدهای مرتبط به این بخش عبارتند از:
1. __and__(self, other) : &
2. __or__(self, other) : |
3. __invert__(self) : ~
4. __xor__(self, other) : ^
5. __rshift__(self, other) : >>
6. __lshift__(self, other) : <<
🔘 فرض کنید قصد دارید دو رشته را با یکدیگر مقایسه کنید و تمامی حروف مشترک آنها را به صورت یک رشته خروجی دهید، به طوری که عملکرد آن مشابه عملکرد استاندارد برای اشتراک در set و dict باشد. در این صورت، شما میتوانید برای عملگر "&"، متد مربوطه را تعریف کنید که با فراخوانی آن، تمامی حروف مشترک بین دو رشته(یا Iterable) ورودی را درقالب str برگردانید. یعنی:
class Str(str):
def __and__(self, __value: object) -> str:
if isinstance(__value, (Iterable, str)):
return "".join(
letter
for letter in self
if letter in __value
)
raise TypeError(
f"value must be Iterable or str, not {type(__value).__name__}")
Str("Developix") & "Dpx" # "Dpx"
🔰 عملگرهای تخصیص مانند +=، -=، *= و ...، برای انجام عملیاتهای ریاضی، بیتی و ... بر روی یک متغیر استفاده میشوند.
🔸 این داندرمتدها، هنگامی که از عملگرهای تخصیص استفاده میشود، به صورت خودکار فراخوانی میشوند و نتیجه عملیات را در همان شیء ذخیره میکنند. به عنوان مثال، اگر a یک شیء از یک کلاس باشد، عملگر += با استفاده از متد __iadd__، مقدار a را با یک مقدار دیگر جمع کرده و نتیجه را در همان a ذخیره میکند.
🔹 داندرمتدهای مرتبط به این بخش عبارتند از:
1. __iadd__(self, other) : +=
2. __isub__(self, other) : -=
3. __itruediv__(self, other) : /=
4. __imul__(self, other) : *=
5. __ifloordiv__(self, other) : //=
6. __imod__(self, other) : %=
7. __ipow__(self, other) : **=
8. __iand__(self, other) : &=
9. __ior__(self, other) : |=
10. __ixor__(self, other) : ^=
11. __irshift__(self, other) : >>=
12. __ilshift__(self, other) : <<=
13. __radd__(self, other) : +=
14. __rmul__(self, other) : *=
15. __rfloordiv__(self, other) : //=
16. __rmod__(self, other) : %=
17. __rpow__(self, other) : **=
18. __rand__(self, other) : &=
19. __ror__(self, other) : |=
20. __rxor__(self, other) : ^=
21. __rrshift__(self, other) : >>=
22. __rlshift__(self, other) : <<=
23. __rsub__(self, other) : -=
24. __rtruediv__(self, other) : /=
🔘 بر اساس مثالی که برای عملگر "-" ارائه دادیم، میتوانیم کد مشابهی برای عملگر "-=" نوشته و از آن استفاده کنیم. در اینجا، فقط با یک تغییر، در صورتی که ورودی نوع int باشد، ابتدا آن را به str تبدیل میکنیم و سپس بررسی میکنیم که آیا این رشته با ورودی به پایان میرسد یا خیر. یعنی:
class Str(str):
def __isub__(self, __value: object) -> bool:
if isinstance(__value, str):
return self.__sub__(__value)
if isinstance(__value, int):
__value = __value.__str__()
elif not isinstance(__value, str):
raise TypeError(f"value must be str, not {type(__value).__name__}")
if self.endswith(__value):
return self.removesuffix(__value)
raise ValueError(f'"{self}" does not end with "{__value}"')
var = Str("123")
var -= 3 # var = "12"
#MagicMethod #DunderMethod #Operator
#داندرمتدها #عملگرها
✍🏻 *ژنرال*
💎 Channel: @DevelopixPython1 168
Repost from CodeNaline | کدنالین
https://youtu.be/OJ5DdqomXcc
نسخه تصویری پادکست کدنالین، اپیزود چهارم، جادی =)
🧠 @CodeNaline
💬 @TorhamDevCH
1 168
https://t.me/AI_Pythonic/50
مایکروسافت روی گیتهاب یک مجموعه آموزش رایگان برای توسعهدهندگان وب تازهکار داره.
https://microsoft.github.io/Web-Dev-For-Beginners/#/
🔸 مطالب بیشتر 👇👇
✅ @ai_pythonic
#web
1 168
https://t.me/graycubeteam/104
💢what is Ethical hacking
💢هک اخلاقی چیست ؟
داخل این ویس درباره موضوعات هک اخلاقی،هکر اخلاقی، اهمیت این دو موضوع و دانش هایی که باید یک هکر اخلاقی داشته باشد صحبت میکنیم
👤 گوینده : علیرضا الهیاریان
🔻 لطفا با انتشار این ویس برای دوستانتان به بزرگ تر شدن خانواده مکعب خاکستری کمک کنید
و حتما نظر های خودتون رو زیر این پست داخل
بخش کامنت ها بگید و در بهتر شدن محتوا ها به ما کمک کنید
🔥♾«@graycubeteam»♾🔥
#hack
1 168
Repost from AI DeepMind
مایکروسافت روی گیتهاب یک مجموعه آموزش رایگان برای توسعهدهندگان وب تازهکار داره.
https://microsoft.github.io/Web-Dev-For-Beginners/#/
#مبتدی #برنامه_نویسی #منابع
🔸 مطالب بیشتر 👇👇
✅ @ai_pythonic
1 168
Repost from AI DeepMind
اینم برای کسایی که قصد دارند از پایه خلاصه و مفید نکات زبان Rust یاد بگیرند.
https://github.com/plabayo/learn-rust-101
#مبتدی #برنامه_نویسی
🔸 مطالب بیشتر 👇👇
✅ @ai_pythonic
1 168
Repost from | کانال توسعهدهندگان پایتون |
💠 داندرمتد ها
💠 بخش اول (موارد مرتبط با عملگرهای ریاضی و مقایسه)
🌀 برای درک بهتر موارد مرتبط با این قسمت، پیشنهاد میشود پست مربوط به عملگرها را مطالعه کنید.
🔰 از magic methodهای مرتبط با عملگرهای ریاضی در پایتون برای تعریف عملگرهای ریاضی برای کلاسهای سفارشی استفاده میشود.
🔸 به عنوان مثال، شما میتوانید با تعریف متد
__add__ برای یک کلاس، عملگر جمع + را برای اشیاء این کلاس تعریف کنید. به همین ترتیب، با تعریف دیگر متدهای مربوط به سایر عملگرهای ریاضی، میتوانید رفتار خاصی را برای این عملگرها در کلاسهای خود تعریف کنید.
🔸 در کل، استفاده از این magic methodها به شما امکان میدهد که به کلاس خود عملکردی مشابه کلاسهای دیگر در پایتون بدهید و با تعریف رفتارهای خاص برای عملگرهای ریاضی، این عملکرد را بهبود بخشید.
🔹 داندرمتدهای مرتبط به این بخش عبارتند از:
1. __add__(self, other) : +
2. __sub__(self, other) : -
3. __truediv__(self, other) : /
4. __mul__(self, other) : *
5. __floordiv__(self, other) : //
6. __mod__(self, other) : %
7. __pow__(self, other) : **
🔘 برای مثال، میدانیم که در یک رشته، عملگر "-" بهصورت استاندارد پشتیبانی نمیشود زیرا تعریف نشده است. با این حال، با ارثبری از کلاس str و اضافه کردن این متد به آن میتوانیم از آن استفاده کنیم. برای ورودی های غیرقابلقبول هم ارورهایی درنظر میگیریم. یعنی:
class Str(str):
def __sub__(self, __value: str) -> str:
if not isinstance(__value, str):
raise TypeError(f"value must be str, not {type(__value).__name__}")
elif self.endswith(__value):
return self.removesuffix(__value)
else:
raise ValueError(f'"{self}" does not end with "{__value}"')
Str("DevelopixPython") - "Python" # "Developix"
🔰 از داندرمتدهای مرتبط با عملگرهای مقایسه در پایتون برای تعریف رفتار خاصی برای عملگرهای مقایسهای مانند >, <, >=, <=, == و != استفاده میشود. با تعریف این متدها، میتوانید رفتار خاصی را برای مقایسه دو شیء با هم تعریف کنید و در نتیجه از این مقایسه ها به شکلی خاصی استفاده کنید.
🔸 به عنوان مثال، شما میتوانید با تعریف متد __eq__ دو شیء را برای برابری باهم مقایسه کنید. همچنین، با تعریف دیگر متدها مانند __gt__ و __lt__، میتوانید دو شیء را برای مقایسه بزرگتری یا کوچکتری با هم مقایسه کنید.
🔸 در کل، استفاده از magic method های مرتبط با عملگرهای مقایسه در پایتون به شما امکان میدهد که رفتار خاصی برای مقایسه دو شیء با هم تعریف کنید.
🔹 داندرمتدهای مرتبط به این بخش عبارتند از:
1. __lt__(self, other) : <
2. __le__(self, other) : <=
3. __gt__(self, other) : >
4. __ge__(self, other) : >=
5. __eq__(self, other) : ==
6. __ne__(self, other) : !=
🔘 فرض کنید میخواهید دو مقدار را که تنها در نوع داده با هم تفاوت دارند با یکدیگر مقایسه کنید (برای مثال 123 و "123"). در حالت معمول، اگر از عملگر "==" برای مقایسه این دو داده استفاده کنید، مقدار False برگردانده میشود. با این حال، میتوانیم این متد را override کنیم تا اگر ورودی یک عدد صحیح و مقدار آنها برابر بود، اول داده را تبدیل به str کرده و بعد آن را به متد والد بدهد.
یعنی:
class Str(str):
def __eq__(self, __value: object) -> bool:
if isinstance(__value, int):
return super().__eq__(__value.__str__())
return super().__eq__(__value)
Str("123") == 123 # True
#MagicMethod #DunderMethod #Operator
#داندرمتدها #عملگرها
✍🏻 *ژنرال*
💎 Channel: @DevelopixPython1 168
Repost from | کانال توسعهدهندگان پایتون |
💠 متدهای خاص در کلاس ها
🔸 در پایتون، Magic methodها یا همان Dunder methodها متدهای خاصی هستند که با استفاده از نامهای خاصی که با __ شروع و بهپایان میرسند، به کلاسها رفتارهای پیش فرضی میدهند. این نوع متدها به شما این امکان را میدهند که کلاسهای خود را بهتر و با عملکرد بالاتر بنویسید.
🔹 داندرمتدها میتوانند برای پیادهسازی اعمال ریاضی، مقایسه، شیوه ترکیب و تعریف عملکردهای دیگر برای کلاسها استفاده شوند. برای مثال با تعریف متد
__add__ میتوانیم عمل جمع را برای دو شیء در کلاس تعریف شده، به صورت خودکار انجام دهیم. همچنین با تعریف متد __str__ میتوانیم رشتهای را که نشان دهنده نحوه نمایش یک شیء است، تعریف کنیم.
🔸 در کل، Magic method ها در پایتون به کاربران اجازه میدهند که رفتار و عملکرد کلاسهای خود را به شکلی سفارشی و مشخصی تعریف کنند و این باعث افزایش انعطاف پذیری و خوانایی کد میشود.
🌀 در ادامه، به معرفی بخش به بخش این نوع از متدها خواهیم پردازیم.
#MagicMethod #DunderMethod #Operator
#داندرمتدها #عملگرها
✍🏻 *ژنرال*
💎 Channel: @DevelopixPython1 168
02:42 - شروع
03:01 - معرفی
04:48 - چیشد جادی، جادی شد؟
08:26 - چجوری خودتو پر انگیزه نگه داشتی؟
11:07 - یه گیک چرا باید از سرویسای گوگل استفاده کنه اصلا؟
13:54 - دانشگاه رفتن منطقیه؟
17:45 - آموزشِ آموزش دادنو، آموزش نمیدی؟
18:59 - نظرت درباره شبکه جهانی پایتون؟
21:36 - خیلیا میخوان جادی بشن ولی سخته
23:51 - ((ایلیان ماسک))
24:06 - چجوری کارمند شادی باشیم
27:44 - تعادل بین برنامه نویسی و استراحت
31:31 - سوئیج کردن بین استک های شغلی
34:53 - وابسته بودن به یه فریمورک و ابزار خوبه؟
37:38 - بیکار شدن بقیه به خاطر هوش مصنوعی من، عذاب وجدان میخواد؟
39:06 - اگه برنامه نویس نبودی چیکاره میشدی؟
40:20 - خودت سوالی نداری که خودت جواب بدی؟
41:05 - خدافظی
42:13 - برکه از شماعی زاده
@newpacks
1 168
کدنالین، قسمت چهارم، فصل دوم، جادی 🧠.
این قسمت رو با جادی میرمیرانی، برنامهنویس، بلاگر، پادکستر، یوتیوبر، لینوکسی و ... پیش میبریم =).
جادی : @jadivarlog
🧠 @CodeNaline
💬 @TorhamDevCH
1 168
Repost from God Code
"هر احمقی میتواند کدی بنویسد که ماشین بفهمد. برنامهنویسان خوب، کدی مینویسند که انسانها بفهمند."
- مارتین فاولر-
"بهترین کد هیچ کدی نیست." - جف آتوود
🔹23 فروردین 1402🔹
🔥♾«@graycubeteam»♾🔥
1 168
Repost from lab
با الگوریتم فشرده سازی Zstd آشنا هستید؟
زداستیدی یک الگوریتم فشرده سازی داده بدون تلفات است که داده ها را با یافتن و حذف اطلاعات اضافی درون داده ها فشرده می کند. برای فشرده سازی انواع مختلف داده ها از جمله متن، تصویر، فایل های صوتی و تصویری استفاده می شود و به گونه ای طراحی شده است که نسبت تراکم بالایی را در عین حفظ سرعت رفع فشرده سازی سریع فراهم می کند و برای استفاده در طیف گسترده ای از برنامه ها از جمله ذخیره سازی و انتقال داده ها مناسب است.
این الگوریتم انقدر خوبه که احتمالا در آیندهی نزدیک هیچ رقیبی نخواهد داشت!
- #SlashZanyar | Join us
1 168
Repost from tiivik️
✅کانال ها و منابع تخصصی اوسینت جهت بررسی پژوهشگران
@osintkanal
@freedomf0x
@artemov_security
@alarm_vali
@dukera_ch
@cybersecurity_for_all
@osintfp
@nwnotes
@osint_club_channel
@SOCool
@pandora_intelligence
@xbshsuwiow83
@infobase999
@osint_ru_events
@cybdetective
@books_osint
@UniversalSearchNews
@HowToFind
@OSINT_Library
@osintby
@business_cons
@forensictools
@mycroftintel
@CyberScoutszametki
@osint_san_framework
@osint_box
@tmgroupsecurity
@Schwarz_Osint
@osint_rus_channel
@osint_data
@CheshireCatandWhiteRabbitLair
@human_hacking
@ci_newsblock
@dataleak
@data1eaks
@tomhunter
🆔@tiivik
1 168
تو این قسمت از پادکست ابرها، در مورد زندگی حرفهای ریچارد استالمن، برنامهنویس بزرگ آمریکایی، صحبت کردیم و از روند رسیدن استالمن به جنبش نرمافزار آزاد گفتیم.
🎧پادکست ابرها
🔹قسمت پنجم: بنیانگذار جنبش نرمافزار آزاد🔹
🔈 برای اینکه پادکستهای بعدی ما رو بشنوید، تو کانال تلگرام ابرها عضو بشید.
@abrhacom
@abrhacom
#پادکست
1 168
Repost from DevTwitter | توییت برنامه نویسی
اگر میخواید برنامه نویس وب بشید، نیازی به خرج کردن میلیون ها تومن برای دوره های مختلف نیست
از سایت ها و ابزار های زیر استفاده کنید :)
سایت های آموزش وب دولوپمنت
1. W3schools.
2. Freecodecamp
3. TheOdinProject
4. Scrimba
5. Tutorialspoint
6. Geeks for Geeks.
7. Studytonight
8. Solo Learn
9. Guru99
چنل های یوتیوب برای وب دولوپر ها
1. Code with harry
2. Taversy media
3. Freecodecamp
4. Clever programmer
5. The new boston
6. Telusko
7. Yahoobaba
نرم افزار های آموزشی
1. Solo learn
2. W3schools
3. Mimo
4. Grasshopper
5. Programminghub
تمرین کد زدن
1. Icodethis
2. Frontend Mentor
3. Hacker Rank
4. Top coder
5. Codechef
6. Hacker Earth
7. Coder byte
@DevTwitter
1 168
Repost from DevTwitter | توییت برنامه نویسی
عزیزان، دو نکته:
۱. اگر تازه در حال یادگیری برنامهنویسی هستید و تمرکزتون روی یک زبان یا تکنولوژی خاصی هست، لازم نیست روند یادگیری رو متوقف کنید که یک زبان برنامه نویسی دیگه رو یاد بگیرید. همون مسیر خودتون رو ادامه بدید و جایی که احساس کردید به هدفتون از یادگیری رسیدید، میتونید در ادامهی مسیر یادگیری زبانهای دیگه رو امتحان کنید.
۲. محبوبیت Rust در سه سال اخیر به شدت افزایش پیدا کرده و پیشنهادم به برنامهنویسها و تسترهای سیستمی اینه که حتی به صورت تفریحی هم که شده این زبان رو یاد بگیرند.
@DevTwitter | <Kasra M./>
1 168
Repost from DevTwitter | توییت برنامه نویسی
عزیزان، Rust یاد بگیرید. مدتهاست دارم اینو میگم.
اصلا لازم نیست ازش خوشتون بیاد
یا حتی ازش استفاده کنید. حتی در حد یک خط
چُسِ خوشبویی هم نیست...
ولی یاد بگیرینش!
دلیل اینکه چنین حرفی میزنم، همون دلیلی هست که میگم همه باید C بلد باشن. یک شیفت در نرم افزار داره اتفاق میفته!
@DevTwitter | <Amirreza Gh/>
1 168
چندتا ترفند یاد بگیری بد نیست :
پشت string هایی که مینویسی
$@
قرار بده تا خیلی از کدهات خلاصه بشه ( دقیقا به همین ترتیب، جا به جا بنویسی ارور میده )!! مثال :
string test = $@"";
خب اول بگم $ چیکار میکنه؟! میتونی متغیر رو خیلی خواناتر توی string خودت قرار بدی! مثلا :
string name = Console.ReadLine();
string test = $"hello { name}";
داخل curly bracket هرچقدر فاصله بزاری تاثیری نداره، ولی بیرون curly bracket داخل string قطعا تاثیر گذاره!!!
امیدوارم سرت درد نیومده باشه
خب حالا میرسیم به @ که خیلی کاربردی تر از قبلیه!! حالا میگم چرا:)
دوتا از فایده های @ که میدونم رو میگم :
اول که باعث میشه توی absolute path های فایل ویندوز به مشکل نخوری!! مثلا ببین :
string test = $@"C:\windows\system";
اگر توی کد بالا @ رو برداری خطا میده و این به خاطر اینه که \ رو به عنوان کاراکتر کنترلی میشناسه و بعدش باید یه کاراکتر های خاص بیاد ولی وقتی @ میزاری این خطا رفع میشه!!
خب هنوز دومی مونده، صبر کن و یه اسپرین بنداز بالا تا سردردت بهتر بشه:)
دومین فایده @ پشت string اینه که میتونی یک string رو تقسیم کنی و توی چندین خط بنویسی، در حالی که string واحد داری ( اصلی ترین جا توی نوشتن sql query بدردت میخوره!!) مثلا :
string test = $@"select * from [table]
where [column] = {someData}";
قبلا برنامه نویسا باید کلی
""+
""+
.
.
.
مینوشتن، ولی خب @ اومد و کار برنامه نویسا رو راحت تر کرد:)))
مورد سومی که میخوام بگم تقریبا همه جا کاربردی هست، و شاید در نگاه اول تاثیرگذار نباشه ولی به خودت میای و میفهمی داری نصف وقتت رو ازش استفاده میکنی:)
برای اینکه به اول یه کلمه یا اخر کلمه بری میتونی دکمه Ctrl رو نگه داری! اره، میدونم خیلی ساده هست ولی کاربردی تر از اونیه که فکرش رو بکنی ( چمیدونم مثلا داری نام متغیر یا فایل رو تغییر میدی و یا توی مرورگرت یه کلمه رو اشتباه نوشتی و...)
مورد چهارم خلاصه بگم :
میتونی توی سی شارپ توابع تک خطی داشته باشی، حالا چه بدردت میخوره، خب معلومه! کدت رو خواناتر میکنه!!! مثلا :
if(data != null)
{
//codes
}
خواناتر هست یا
private bool CheckNotNull(data) => data != null;
.
.
if(CheckNotNull())
{
//codes
}
یادت باشه مهم تر از این که کد قابل اجرا بنویسی، باید کد maintainable یا قابل توسعه و خوانا بنویسی!! یعنی بعد یه ماه برگشتی سر کدت چشمت از حدقه نزنه بیرون :))
یه نام درست و حسابی برای متغیر، توابع، کلاس ها، اینترفیس ها و... انتخاب کن، شاید الان متوجه نشی ولی قطعا بعدا متوجه اهمیتش میشی!!
به جای اینکه زیر کدت یه کامنت برای توضیح کدت قرار بدی، کدت رو خواناتر کن و کامنت رو پاک کن
چمیدونم، یه خرده معماری و design pattern بخون، کدهات رو بیشتر دسته بندی کن، کار با Version Control System و یا docker رو یاد بگیر، سمت لینوکس برو
خلاصه اینکه یکجا نشین! یه عمر اشتباه کردن بهتر از نشستن و هیچ کاری نکردن هست!!
میدونم، شاید به حرفام بخندی، اما خب به وقتش میفهمی چقدر مهم هستن!
همیشه یادت باشه :
" اشک هایی که به خاطر باگ امروز ریختی، عرق هایی هستن که برای نوشتن کد تمیز نریختی "
#advice
