CleverDevs – Telegram
CleverDevs
8.46K subscribers
734 photos
283 videos
27 files
436 links
به کانال کلوردوز خوش اومدین

سعی میکنیم چیزایی که بنظر کاربردی هستن رو باهاتون به اشتراک بزاریم


🔥لینوکس
🔥برنامه نویسی فرانت‌اند
🔥برنامه نویسی بک‌اند
🔥اخبار تکنولوژی و...

CleverDevs are better than other Devs
💢~> @mmdrsdev
Download Telegram
List Slicing و عملگر سوشی توی پایتون

توی پایتون شما میتونید شما میتونید با عملگر سوشی لیست هاتون رو با حالت های مختلف برش بزنید

>>> lst = [1, 2, 3, 4, 5]
>>> lst
[1, 2, 3, 4, 5]
# lst[start:end:step]
>>> lst[1:3:1]
[2, 3]


همونطور که توی کد میبینید عملگر سوشی سه تا پارامتر داره

اولیش start یا جایی برش ازش شروع میشه که دیفالتش 0 هستش

دومین پارامتر end هستش که جایی رو نشون میده که برش تموم میشه و دیفالتش طول لیسته (فقط حواستون باشه که توی لیست جدید خود ایندکس end وجود نداره و اخرین عضو لیست ایندکس قبل end هستش)

و آخرین پارامتر هم step میشه که دیفالتش 1 هست و نشون دهنده گام های انتخاب عضوه یعنی چی ؟ مثلا اگه 1 بشه قدم هاش یدونه یدونس و همه اعضای موجود تو بازه ای که انتخاب کردید رو انتخاب میکنه یا مثلا اگه پارامتر step برابر با 2 باشه میاد و یکی در میون اعضا رو از اون بازه مورد نظر انتخاب میکنه


اما بریم سراغ مثال که کامل تر جا بیوفته موضوع

فک کنید ما یه لیست داریم اعداد 0 تا 9 و میخوایم از بین اعداد 3 تا 7 یکی در میون انتخاب کنیم برا این کار باید پارامتر start رو برابر با 3 بزاریم که شروع بازه هستش و پارامتر end رو برابر با 8 میزاریم که ایندکسش یکی بعد از ایندکس اخرین عضو لیستمونه و step رو 2 میزاریم تا گام هاش دوتا دوتا باشه و یکی در میون انتخاب کنه

>>> CleverList = [0,1,2,3,4,5,6,7,8,9]
>>> CleverList[3:8:2]
# Output : [3,5,7]


یا میتونید لیستتون رو برعکس کنید به کد زیر نگا کنید

>>> CleverList = [0,1,2,3,4,5,6,7,8,9]
>>> CleverList[::-1]
# Output : [9,8,7,6,5,4,3,2,1,0]


اومدیم و start و end رو همون مقدار دیفالتشون گذاشتیم و مقدار step رو برابر با منفی 1 گذاشتیم تا لیست رو از اخر به اول بخونه

البته میتونید جای اینکار از list.reverse() استفاده کنید

همینطور با استفاده از عملگر سوشی میتونید محتوای لیست رو خالی کنید که میتونید سرچ کنید و دربارش بخونید حتما

فقط اینکه حواستون باشه ممکنه خوانایی کدتون رو پایین بیاره و سعی کنید بیش از حد ازش استفاده نکنید

#python
@CleverDevs - @CleverDevsGp
👍14🔥4🆒3💯21👌1
صدرا یکی از برنامه نویس های خفن ایرانی یک دستیار هوش مصنوعی خفن بر پایه ترمینال به اسم hey نوشته که میتونه سرعت کار رو براتون بیشتر کنه

توضیحات اضافه و نحوه نصب و استفادش رو میتونید از گیت هابش ببینید

https://github.com/lnxpy/hey

#openSource #Ai
@CleverDevs - @CleverDevsGp
🔥32👍116👎2💔1
توی پایتون چندین کتابخانه وجود دارند که به شما اجازه میدن کد جاوا اسکریپت را اجرا کنید💻
یکی از محبوب‌ ترینشون PyExecJS هست این کتابخانه یک اینترفیس ساده برای اجرا کردن کد جاوا اسکریپت با استفاده از موتورهای مختلف جاوا اسکریپت ارائه میده

مثال با استفاده از PyExecJS
نصب PyExecJS:
برای نصبش میتونید از pip استفاده کنید:
pip install PyExecJS

نمونه کد:
اینجا یه مثال ساده میزنم براتون:

 import execjs
# جاوا اسکریپت ساده که یک تابع تعریف می‌کند و اون رو اجرا میکنه
js_code = """
function hello(name) {
return "Hello, " + name + "!";
}
"""

# کامپایل و اجرا کد جاوا اسکریپت
ctx = execjs.compile(js_code)
result = ctx.call("hello", "World")

print(result) # باید "Hello, World!"رو پرینت کنه

سایر کتابخانه‌ها
بغیر از PyExecJS، کتابخانه‌های دیگه ای هم هستند که می‌شه ازشون برای اجرا کردن کد جاوا اسکریپت توی پایتون استفاده کرد، مثل Node.js با استفاده از ماژول subprocess پایتون. در این روش، شما میتونید یک اسکریپت جاوا اسکریپت رو اجرا کنید.

مثال با استفاده از subprocess
نمونه کد:
اینجا یه مثال ساده دیگه میزنم:
 import subprocess
# جاوا اسکریپت ساده که یک تابع تعریف می‌کند و اون رو اجرا میکنه
js_code = """
console.log("Hello, World!");
"""

# ذخیره کد جاوا اسکریپت در یک فایل
with open("noscript.js", "w") as file:
file.write(js_code)

# اجرا کردن فایل جاوا اسکریپت با استفاده از Node.js
result = subprocess.run(["node", "noscript.js"], capture_output=True, text=True)

print(result.stdout) # باید "Hello, World!" را پرینت کند

این روش انعطاف‌پذیری بیشتری میده چون شما میتونید از تمامی قابلیت‌های Node.js استفاده کنید.

#python #javanoscript
@CleverDevs - @CleverDevsGp
🔥9👍5🆒32👌21💯1
تلگرام و اپل جفتش آپدیت هاشون آدمو شگفت زده میکنه

تلگرام وقتی آپدیت میده میگی برگام چه قابلیت کاربردی ای که تا حالا به ذهن کسی نرسیده بود
اپل اپدیت میده میگی برگام یعنی تا الان همچین قابلیتی که همه دارن رو نداشته ؟

پ.ن آیپد بعد 14 سال اپ ماشین حساب رو به صورت پیشرفرض آورده
#fun
@CleverDevs - @CleverDevsGp
🤣80👍6😁4
#چالش
چالش این سریمون یه نوستالژی خفنه، فک نمیکنم کسی باشه که این بازیو نکرده باشه
چالش اینه این گیمو با هر زبانی که میتونید بنویسید✔️
زیاد درگیر ظاهر قضیه نشید و صرفا درحدی که بشه پلی داد بسازیدش 🐍

کداتونو زیر پست کامنت کنید با بازی کردنش نوستالژیمون زنده شه😁

سورس اینیکیو تو چنل اپلود میکنم 🤝
هرکیم ریکشن ندرو مار بخوره🐍

@CleverDevs
@CleverDevsGp
👍23🔥134💯3😁2🆒21👌1
این روزا بحث ایردارپ های تلگرامی خیلی داغ شده برای #بحث_امشب نظرتون رو درباره این ایردراپ ها بگید

پ.ن ۱ هرکس نظر شخصی خودشو میگه پس اگه نظرش خلاف نظر شما بود توهین نکنید برخورد میشه

پ.ن ۲ رفرال لینک بفرستید پاک میشه

@CleverDevs - @CleverDevsGp
👍123👌2🆒2🔥1
یه گجت کاربردی خفن داریم
سلکتور گجت (SelectorGadget) یه افزونه کرومه که کمک می‌کنه به راحتی بخش‌های مختلف یه صفحه وب رو انتخاب کنی. مثلاً اگه می‌خوای اطلاعات خاصی رو از یه سایت استخراج کنی، با این ابزار می‌تونی خیلی سریع و آسون کد مربوط به اون بخش رو پیدا کنی. کافیه روش نصب کنی، بعدش روی بخش‌های مورد نظرت کلیک کنی تا کد CSSش رو بهت نشون بده. برای صرفه‌جویی تو وقت و راحتی کار با وب خیلی خوبه.

@CleverDevs
@CleverDevsGp
👍15👌5🔥32🆒21
-اصل Good Comments در کلین کد

این اصل چنتا زیر مجموعه داره و کامنت های مفیدی که میتونید بزارید رو گفته تو این پست سعی میکنم به طور خلاصه همشون رو بگم

‏1 - Legal Comments
گاها نیازه که تو اول هر فایل سورس یه سری کامنت در باره ارزش های حقوقی پروژه بزارید مثل این کامنت توی FitNesse
// Copyright (C) 2003,2004,2005 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the GNU General Public License version 2 or later.


‏2 - Informative Comments
خوبه که بعضی مواقع یه سریع توضیحات دقیق و مختصر رو کامنت کنیم . البته بهتره تا جایی که میشه اسم تابع این اطلاعات رو بهمون بده ولی اگه نشد یه کامنت بزارید مثلا :
// Returns an instance of the Responder being tested.
protected abstract Responder responderInstance()


‏3 - Explanation of Intent
بعضی مواقع خوبه که قصدی که از نوشتن اون تیکه کد رو داشتید کامنت کنید (با این که در اکثر مواقع نیازی به کامنت نیست)

‏4 - Clarification
گاها خوبه که اون تیکه از کدمون که یه مقدار مبهمه به صورت ساده شده یه کامنت در بارش بزاریم مثلا
assertTrue(a.compareTo(a) == 0); // a == a
assertTrue(a.compareTo(b) != 0); // a != b


‏5 - Warning of Consequences
ممکنه یه تیکه کدی داشته باشید که ران کردنش یه عواقبی داشته باشه حالا چه کم چه زیاد
بهتر براش تو کامنتا هشدار بنویسید که برنامه نویس های دیگه حواسشون باشه

‏6 - TODO Comments
بعضی وقتا قصد دارید که بعدا یک قسمتی رو بهبود بدید یا اضافه کنید اینطور مواقع میتونید TODO بزارید که با TODO // شروع میشه معمولا

#CleanCode
@CleverDevs - @CleverDevsGp
👍12🔥10💯4🆒311👌1
شاید براتون سوال باشه که اپلیکیشن‌های ویندوزی چطوری کرک می‌شدن. قبلا، مثلاً وقتی Visual Studio را دانلود می‌کردید، کنارش یک فایل پچ یا Keygen وجود داشت که به وسیله آن می‌تونستین اپلیکیشن رو فعال کنید.

این فرآیند با استفاده از علمی به نام مهندسی معکوس انجام می‌شه. مهندسی معکوس به بررسی و تحلیل سیستم‌ها، نرم‌افزارها و سخت‌افزارها برای فهمیدن ساختار داخلی و نحوه کارکرد آن‌ها می‌پردازه. خود این علم به شاخه‌های مختلفی تقسیم می‌شه که در دنیای کامپیوتر به این شکله:

- مهندسی معکوس نرم‌افزار
- کرک کردن اپلیکیشن‌ها: فرآیندی که طی اون محدودیت‌های نرم‌افزاری حذف یا تغییر داده می‌شه تا بشه از آن به صورت رایگان یا بدون محدودیت استفاده کرد.
- هک کردن بازی‌ها: شامل تغییر کدهای بازی‌ها برای دسترسی به ویژگی‌های مخفی، تقلب یا بهبود تجربه بازی.
- مهندسی معکوس پروتکل‌ها: تجزیه و تحلیل پروتکل‌های ارتباطی برای فهمیدن نحوه عملکرد و احتمالا ایجاد نسخه‌های سازگار یا بهره‌برداری از نقاط ضعف. (مثلا TeamSpeak رو ریورس کردن تا بتونن پروتکلش که یک پروتکل proprietary عه رو بفهمن)
- ...
- مهندسی معکوس سخت‌افزار
- تجزیه و تحلیل مدارهای الکترونیکی و قطعات سخت‌افزاری برای فهمیدن نحوه کارکرد و ساختار آن‌ها.

مهندسی معکوس کاربردهای مختلفی داره، مثل بررسی امنیت نرم‌افزارها، بازیابی اطلاعات از نرم‌افزارهای قدیمی، و حتی ساخت نسخه‌های بهینه‌تر و سازگارتر از نرم‌افزارها و سخت‌افزارهای موجود.

من سعی می‌کنم تو زمان‌های آزاد، درباره مبانی این حوزه پست‌های بیشتری بذارم تا شاید کسی به این حوزه علاقه‌مند بشه. علاوه بر این، در آینده احتمالا چالش‌هایی در این زمینه برگزار کنیم !

@CleverDevs - @CleverDevsGp
👍42🔥8👌3
#داکر یا #Docker چیه؟

یه پلتفرم نرم‌افزاری که به شما امکان میده برنامه‌ها و سرویس‌ها رو توی محیطای ایزوله‌ به اسم "کانتینر" اجرا کنید
به زبان ساده‌تر، داکر به شما کمک میکنه تا برنامه‌ هاتونو رو با همه نیازمندیا و وابستگیاش (مثل کتابخانه‌ها و تنظیمات) توی یه بسته کوچک بزارید📦

این بسته‌ها میتونن به راحتی بین کامپیوترها جابجا شده و اجراشن بدون اینکه نیازی به نصب جداگانه اونا باشه
این کار باعث می‌شود برنامه‌ها توی محیطی (مثل کامپیوتر شخصی، سرور یا فضای ابری) به یک شکل عمل کنند و مشکلات ناسازگاری محیطی کمترشه👾

بعنوان مثال فرض کنید شما یه برنامه وب نوشتین که از زبان برنامه‌نویسی پایتون استفاده میکنه و به یه پایگاه داده MySQL نیاز داره، برای اجرای این برنامه روی سیستم خودتون باید پایتون و MySQL را نصب و تنظیمات لازم رو انجام بدید و اگه بخاید این برنامه رو روی یه سرور دیگه اجرا کنید باید دوباره تمام این مراحلو تکرار کنید🥴

با داکر شما میاید یه کانتینر ایجاد میکنید که شامل همه چیزهاییه که برنامه شما نیاز داره: پایتون، MySQL، کتابخانه‌هایی که نیاز دارید و حتی کدهای خود برنامه.
بعدشم خیلی راحت کانتینر و به سرور  منتقل کنید و حالشو ببرید 🤤
این باعث میشه توسعه و انتقال برنامه‌ها ساده‌تر و مطمئن‌تر باشه


@CleverDevs
@CleverDevsGp
👍45🔥7💯3🆒2
اگه تازه به لینوکس مهاجرت کردید و سر در گمید و نمیدونید چیکار کنید
میتونید پلی لیست مهاجرت به لینوکس از گویبان رو ببینید آموزش های جالبی داره برای کسایی که تو لینوکس تازه کارن

فقط از اونجایی که الان این پلی لیست تازه شروع شده تکمیل نیست و ویدیو هاش به صورت هفتگی میاد
https://www.youtube.com/playlist?list=PLpl25_8ecATgtyo2pJwurI53-ol-CTdkp

اگه منبع دیگه های هم میشناسید که میتونه به افراد تازه کار توی گنو/لینوکس کمک کنه میتونید تو کامنتا بفرستید

#GNU #Linux
@CleverDevs - @CleverDevsGp
🔥20👍1043😁3
چیه؟ DLL (Dynamic Link Library) Injection

به‌طور کلی یه تکنیکه که بیشتر توی سیستم‌عامل‌های ویندوز رایجه و بهتون اجازه میده تا کدهای دلخواه خودتونو توی یه فرآیند (Process) دیگه اجرا کنین که چنتا از کاربرداشو پایین براتون میگم👇

دیباگینگ و مهندسی معکوس:
میشه از DLL Injection برای دیباگ کردن برنامه‌های خود یا برنامه های دیگه استفاده کرد. این تکنیک اجازه میده تا کدهای خاصی رو در زمان اجرا تزریق کرده و رفتار برنامه رو مشاهده کنن

افزودن قابلیت‌های جدید به نرم‌افزارها:
با DLL injection میشه قابلیت‌های جدیدی به نرم‌افزارها اضافه کرد. مثلا میتونین ویژگی‌های سفارشی رو به برنامه‌ها اضافه کنین

automation:
میشه از DLL Injection برای automation برنامه‌های دیگه استفاده کنند مثل پر کردن خودکار فرم‌ها یا انجام عملیات تکراری.

کاربردهای مخربی هم داره از جمله:
نصب بدافزارها، سرقت اطلاعات، دور زدن مکانیزم‌های امنیتی، اجرای کدهای مخرب، تغییر رفتار نرم‌افزارها و....

#DLLinjection
@CleverDevs
@CleverDevsGp
👍11🔥3🆒21💯1
🦸🏼‍♂ | Puppeteer

پاپیتیر یک کتابخانه بسیار قدرتمند که توسط توسعه دهندگان تیم گوگل ساخته شده، مناسب Web Scraping و Page Manipulation و Browser Automation هستش و کلی قابلیت های معرکه دیگه داره که میشه به تمام قابلیت های مرورگر دسترسی داشت و چیزهای خفنی باهاش توسعه داد.

🔥 چند نمونه از استفاده های پرکاربرد:

- دریافت اطلاعات از سایت‌ها بدون نیاز به API.


- انواع حملات و سو استفاده از وبسایت.


- اتومیشن کردن سناریو های مختلف.


- تست کردن وبسایت، گرفتن خروجی بصورت پی دی اف و یا اسکرینشات.


#puppeteer | #tools
@CleverDevs - @CleverDevsGp
👍23👌4🔥2
درود دوستان امروز با یه مبحثی اومدم که تقریبا 99 درصد شرکت های ایرانی در صورتی که خیلی پر اهمیت هست ولی اهمیتی بهش ندادن.

در برنامه‌نویسی شبکه‌ای و وب سرورها یه مبحثی هست با نام "graceful shutdown" یعنی kill کردن یا بستن بهینه سرویس ها با حداق تلفات در درخواست ها، میتونه در شرکت های بزرگ انقدر بهینه پیاده سازی بشه تا به هیچ عنوان درخواست یا دیتایی از دست نره.

خب حالا بیاین یه مثال ساده ازش بزنیم، برای مثال ما یه سرویسی داریم که کلی ریکوست از سمت کلاینت داره و میخوایم بنا به دلایلی چند لحظه down کنیمش اینجاس که پای "graceful shutdown" به ماجرا باز میشه، ما باید یه سیستمی پیاده کنیم تا دو مورد زیر رو تکمیل کنه و سپس process رو kill کنه.

تکمیل درخواست‌های جاری: زمانی که سرور خاموش میشه، درخواست‌هایی که در حال پردازش هستن باید به درستی تکمیل بشن.
آزادسازی منابع: منابعی مثل پایگاه داده‌ها و فایل‌ها باید به درستی بسته بشن تا از نشت یا ذخیره ناقص منابع جلوگیری بشه.

یه مثال با golang اینجا میارم، به علت اینکه کد طولانی شد میزارمش تو یه فایل تکست پایین

break;

حالا اجازه بدین به زبون خودمونی توضیح بدم که چرا استفاده از Graceful Shutdown (خاموشی تمیز) مهمه و چطوری توی این کد \پایین اجرا شده.

فرض کن یه مغازه‌داری. وقتی می‌خوای مغازه‌ات رو ببندی، قبلش مطمئن میشی که همه مشتری‌ها کارشون تموم شده، حساب کتاباشون رو کردن و دارن میرن بیرون. نمیای وسط کار مشتری‌ها، کرکره رو بکشی پایین و در رو قفل کنی. اینجوری هم خودت ضرر می‌کنی، هم مشتری‌ها ناراضی میشن.

حالا همینو بیاریم توی برنامه‌نویسی سرور:

تموم کردن کارهای در حال اجرا: وقتی سرور رو یهویی خاموش نکنی، به درخواست‌هایی که در حال پردازش هستن فرصت میدی کارشون رو تموم کنن. مثلا وقتی کسی داره اطلاعاتی رو از سرور می‌گیره، اگه وسطش سرور خاموش بشه، اون شخص به اطلاعاتش نمیرسه. با Graceful Shutdown، سرور منتظر می‌مونه تا این درخواست‌ها تموم بشن.

جلوگیری از از دست رفتن داده‌ها: اگه سرور وسط نوشتن اطلاعات به پایگاه داده خاموش بشه، ممکنه داده‌ها خراب بشن یا ناقص ذخیره بشن. خاموشی تمیز باعث میشه همه کارها به درستی و تا آخر انجام بشن و بعد سرور خاموش بشه.

مدیریت بهتر منابع: وقتی سرور رو تمیز خاموش می‌کنی، منابعی مثل حافظه و اتصالات شبکه به درستی آزاد میشن. اینجوری وقتی دوباره سرور رو روشن می‌کنی، با مشکلات کمتری مواجه میشی.

حالا توی کد پایین، اینطوری این کار انجام شده:

تعریف یک کانال برای دریافت سیگنال‌ها:
go
Copy code
stop := make(chan os.Signal, 1)
signal.Notify(stop, os.Interrupt, syscall.SIGTERM, syscall.SIGINT)

این قسمت میگه که وقتی سیگنال‌های مشخصی (مثل Ctrl+C زدن توی ترمینال) دریافت شد، بره سراغ خاموشی تمیز.

گوش دادن به سیگنال‌ها و شروع فرآیند خاموشی:
go
Copy code
<-stop
log.Println("Server is shutting down...")
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
if err := srv.Shutdown(ctx); err != nil {
log.Fatalf("Server Shutdown Failed:%+v", err)
}

اینجا وقتی سیگنال رو دریافت کرد، پیام "سرور داره خاموش میشه" رو لاگ می‌کنه. بعد با استفاده از یه کانتکست 30 ثانیه‌ای سرور رو خاموش می‌کنه. یعنی سرور تا 30 ثانیه فرصت داره کارهای در حال اجرا رو تموم کنه و بعدش خاموش بشه.

صبر کردن تا تموم شدن همه کارها:
go
Copy code
wg.Wait()
log.Println("Server exited properly")


اینجا منتظر می‌مونه تا همه کارها (که با استفاده از wg.Add(1) و wg.Done() کنترل میشه) تموم بشن. وقتی همه کارها تموم شد، پیام "سرور به درستی خاموش شد" رو لاگ می‌کنه.

به طور خلاصه، استفاده از Graceful Shutdown کمک می‌کنه سرور به درستی و بدون ایجاد مشکل خاموش بشه، کارهای در حال اجرا تموم بشن و داده‌ها به درستی ذخیره بشن. این باعث میشه که سرور همیشه به صورت مطمئن و پایدار کار کنه و تجربه بهتری برای کاربرها فراهم کنه، و از خیلی چیزای دیگه مثل ذخیره شدن ناقص اطلاعت یا بسته نشدن procss ها که باعث میشن منابع الکی هدر بره جلوگیره کنه.

#Graceful_Shutdown
@CleverDevs - @CleverDevsGp
🔥19👍9🆒3👎1
دوستان ما یه تصمیمی گرفتیم که اگه بیشتر از یه تعدادی از بچه ها پایه باشید شروعش کنیم 👨‍💻

کارمون از این قراره که ما اومدیم یه اکانت گیت هاب زدیم و میخوایم تیم های مختلفی تشکیل بدیم و باهم دیگه پروژه های اوپن سورس بزنیم
اما مزیت این کار اینه که میتونید تو کار تیمی پیشرفت کنید از طرفی در زمینه اوپن سورس هم بعد ها میشه حرفی برای گفتن داشت 🔥

اگه تعداد افرادی که مشارکت کنن تو این کار به حد مناسبی برسه میایم و بچه هارو بر اساس استک های مختلف دسته بندی میکنیم و  تیم هایی میسازیم مثلا تیم ریکت کار ها یا تیم لاراول کار ها و ...
هرکدوم از این تیم ها میان توی ارگان CleverDevs  برای خودشون پروژه های کاربردی مختلفی میسازن و میتونن با تیم های دیگه هم کاری هم کنن 👌

برای هر تیم هم بر اساس رزومه و مهارت یک نفر رو به عنوان لیدر انتخاب میکنیم که تیم رو مدیریت کنه

این فعلا یه ایده اولیه از کاره و میتونید پیشنهاد هایی که دارید رو تو کامنت ها بگید و شرکت یا عدم شرکت خودتون توی این برنامه رو تو نظرسنجی پایین انتخاب کنید

@CleverDevs - @CleverDevsGp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍68🔥11🆒3👎2