Forwarded from PhiloLearn | فیلولرن
This media is not supported in your browser
VIEW IN TELEGRAM
میدونم قول داده بودم دیگه پست با #fun نذارم ولی خب اگر بخوایم منطقی نگاه کنیم این حتی فان هم نیست
این غم انگیزه
رائفی پور در مورد گنو حرف میزنه؟؟؟
😳😳 @PhiloLearn 😳😳
این غم انگیزه
رائفی پور در مورد گنو حرف میزنه؟؟؟
هفتاد درصد سیستم عامل های سرور های مایکروسافت که ویندوزه، لینوکسه
😳😳 @PhiloLearn 😳😳
Forwarded from Gopher Academy
🔵 عنوان مقاله
More Powerful Go Execution Traces
🟢 خلاصه مقاله:
مقالهای که مورد بررسی قرار گرفته به تلاشهای تیم برنامهنویسی زبان برنامهنویسی Go در دو نسخه اخیر اشاره دارد، که در آنها به بهبود و تعمیر سیستم اجرایی tracing پرداخته شده است. این بهبودها منجر به کاهش ده برابری در بار اضافی سیستم و افزایش قابلیتهای مقیاسپذیری در traceها شدهاست. از نتایج این پیشرفتها، دو ویژگی آزمایشی جدید معرفی شدهاند. نخست، توانایی ضبط مداوم اجرا که بهعنوان 'flight recording' شناخته میشود و دوم، API مخصوص خواندن traceها. هر دو ویژگی جدید، افقهای تازهای را برای توسعهدهندگان و محققان در زمینه تحلیل کارایی و عیبیابی برنامهها فراهم میآورند و قدمهای مهمی در جهت افزایش کارایی و تحلیلپذیری برنامهها در Go بهشمار میروند.
🟣لینک مقاله:
https://go.dev/blog/execution-traces-2024
➖➖➖➖➖➖➖➖
👑 @gopher_academy
More Powerful Go Execution Traces
🟢 خلاصه مقاله:
مقالهای که مورد بررسی قرار گرفته به تلاشهای تیم برنامهنویسی زبان برنامهنویسی Go در دو نسخه اخیر اشاره دارد، که در آنها به بهبود و تعمیر سیستم اجرایی tracing پرداخته شده است. این بهبودها منجر به کاهش ده برابری در بار اضافی سیستم و افزایش قابلیتهای مقیاسپذیری در traceها شدهاست. از نتایج این پیشرفتها، دو ویژگی آزمایشی جدید معرفی شدهاند. نخست، توانایی ضبط مداوم اجرا که بهعنوان 'flight recording' شناخته میشود و دوم، API مخصوص خواندن traceها. هر دو ویژگی جدید، افقهای تازهای را برای توسعهدهندگان و محققان در زمینه تحلیل کارایی و عیبیابی برنامهها فراهم میآورند و قدمهای مهمی در جهت افزایش کارایی و تحلیلپذیری برنامهها در Go بهشمار میروند.
🟣لینک مقاله:
https://go.dev/blog/execution-traces-2024
➖➖➖➖➖➖➖➖
👑 @gopher_academy
go.dev
More powerful Go execution traces - The Go Programming Language
New features and improvements to execution traces from the last year.
Forwarded from کداکسپلور | CodeExplore (𝙰𝚖𝚒𝚗)
تنها صنفی که از ویروس کرونا آسیب ندید مهندسین نرم افزار و برنامه نویسی ها بودن
چون by default قرنطینه هستند!!!😂
#fun
☕️ @CodeExplore
چون by default قرنطینه هستند!!!
#fun
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
مانی توی این پستش یک کد زده توی چند خط، کل کلادفلر رو به مسخره گرفته
https://news.1rj.ru/str/PyBackEndHub/1096
✅ @SEYED_BAX
https://news.1rj.ru/str/PyBackEndHub/1096
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from PhiloLearn | فیلولرن
من مدت خیلی زیادیه که با qt بازی میکنم
یعنی خب واقعا نمیشه گفت که کار کردم باهاش، اکثر تجربه هام با qt از راه پایتون صرفا در حد بازی کردن و مثل بچه ها ذوق کردن بوده و هست و احتمالا هم همین خواهد ماند
اگ
یعنی خب واقعا نمیشه گفت که کار کردم باهاش، اکثر تجربه هام با qt از راه پایتون صرفا در حد بازی کردن و مثل بچه ها ذوق کردن بوده و هست و احتمالا هم همین خواهد ماند
اگ
Forwarded from PhiloLearn | فیلولرن
من مدت خیلی زیادیه که با qt بازی میکنم
یعنی خب واقعا نمیشه گفت که کار کردم باهاش، اکثر تجربه هام با qt از راه پایتون صرفا در حد بازی کردن و مثل بچه ها ذوق کردن بوده و هست و احتمالا هم همین خواهد ماند
اگر نمیدونید qt چیه که باید خیلی خلاصه بگم یه فریمورک Cpp برای ساختن gui و یه سری فریمورک برای پایتون وجود داره که بهتون اجازه میده از qt استفاده کنید مثل pyqt و pyside
حالا چی شد یادی از qt کردم؟ هیچی داشتم میگشتم توی داکیومنتاش (رسما گشت و گذار داشتم میکردم از بیخوابی) که رسیدم به یه مفهوم جدید برای خودم و این طوری بودم که چرا من این رو تاحالا ندیده بود؟؟؟
و اون هم چیزی نبود جز QtWebEngine و خب یه چیز باحالی هم که ازش دیدم و گفتم با شما هم به اشتراک بذارم این بود که میتونید با کمک QWebEngineView یک صفحه ی وب رو توی پنجرتون لود کنید
چطوری؟
الان اگر شما اول pyside6 رو نصب کنید و بعد این کد رو اجرا کنید، یه پنجره براتون باشه میشه که توش سایت پارچ لینوکس رو لود میکنه
شاید برای شما چیز عجیبی نباشه ولی برای من واقعا تجربه ی جالب و جذابی گفتم باهاتون به اشتراک بذارمش 😁
#تجربه #python #qt #pyside6 #pyqt
————————————————————————
میتونید برای حمایت از فعالیت این کانال، انتقادات و پیشنهادات خودتون رو کامنت کنید.
————————————————————————
💙💙 @PhiloLearn 💙💙
یعنی خب واقعا نمیشه گفت که کار کردم باهاش، اکثر تجربه هام با qt از راه پایتون صرفا در حد بازی کردن و مثل بچه ها ذوق کردن بوده و هست و احتمالا هم همین خواهد ماند
اگر نمیدونید qt چیه که باید خیلی خلاصه بگم یه فریمورک Cpp برای ساختن gui و یه سری فریمورک برای پایتون وجود داره که بهتون اجازه میده از qt استفاده کنید مثل pyqt و pyside
حالا چی شد یادی از qt کردم؟ هیچی داشتم میگشتم توی داکیومنتاش (رسما گشت و گذار داشتم میکردم از بیخوابی) که رسیدم به یه مفهوم جدید برای خودم و این طوری بودم که چرا من این رو تاحالا ندیده بود؟؟؟
و اون هم چیزی نبود جز QtWebEngine و خب یه چیز باحالی هم که ازش دیدم و گفتم با شما هم به اشتراک بذارم این بود که میتونید با کمک QWebEngineView یک صفحه ی وب رو توی پنجرتون لود کنید
چطوری؟
import sys
from PySide6.QtCore import QUrl
from PySide6.QtWebEngineWidgets import QWebEngineView
if __name__ == "__main__":
app = QtWidgets.QApplication([])
view = QWebEngineView()
view.load(QUrl("https://parchlinux.com"))
view.resize(1024, 750)
view.show()
sys.exit(app.exec())
الان اگر شما اول pyside6 رو نصب کنید و بعد این کد رو اجرا کنید، یه پنجره براتون باشه میشه که توش سایت پارچ لینوکس رو لود میکنه
شاید برای شما چیز عجیبی نباشه ولی برای من واقعا تجربه ی جالب و جذابی گفتم باهاتون به اشتراک بذارمش 😁
#تجربه #python #qt #pyside6 #pyqt
————————————————————————
میتونید برای حمایت از فعالیت این کانال، انتقادات و پیشنهادات خودتون رو کامنت کنید.
————————————————————————
💙💙 @PhiloLearn 💙💙
Forwarded from Go Casts 🚀
تو جلسه تیمسازی بکند، بچه ها قرار شد unit test و end to end test بنویسن، برای اینکه بشه تست integration یا end to end درستی داشت باید وابستگی ها درست راه اندازی بشه راه ها مختلفی وجود داره، مثلا اینکه از قبل وابستگی ها بالا باشن، یا از وابستگی های جایگزین و راحت تر و in-memory استفاده کرد، یا اینکه از testcontainer استفاده کرد، که بچه ها از test container استفاده کرده بودن.
این مقاله توضیحات خوبی میده در این مورد
Emulating real dependencies in Integration Tests using Testcontainers
A hands-on guide on Integration Tests in Go using Testcontainers.
https://packagemain.tech/p/integration-tests-using-testcontainers
توضیحات «دوره + تیمسازی بکند Go Casts» و تخفیف ۵۰ درصدی رو در این پست میتونید بخونید 👇
https://news.1rj.ru/str/gocasts/491
@gocasts
#golang
#test
#گولنگ
این مقاله توضیحات خوبی میده در این مورد
Emulating real dependencies in Integration Tests using Testcontainers
A hands-on guide on Integration Tests in Go using Testcontainers.
https://packagemain.tech/p/integration-tests-using-testcontainers
توضیحات «دوره + تیمسازی بکند Go Casts» و تخفیف ۵۰ درصدی رو در این پست میتونید بخونید 👇
https://news.1rj.ru/str/gocasts/491
@gocasts
#golang
#test
#گولنگ
Forwarded from 🎄 یک برنامه نویس تنبل
Forwarded from محتوای آزاد سهراب
از کجا متوجه شدید که کنکور فنی حرفهای داشتم؟
+ سیشارپ را روی کاغذ مینویسد
با آرزوی موفقیت برای کنکوریها (البته با تاخیر)
@SohrabContents
+ سیشارپ را روی کاغذ مینویسد
با آرزوی موفقیت برای کنکوریها (البته با تاخیر)
@SohrabContents
Forwarded from Gopher Academy
در زبان Go،
در Go، چندین نوع
🟢 1. Open-Coded Defer
ا
ویژگیها:
- از تخصیص حافظه اضافی جلوگیری میکند.
- سریعتر اجرا میشود.
- مستقیم در کد قرار میگیرد و از پیچیدگیهای معمول
🟢 2. Heap-Allocated Defer
ا
ویژگیها:
- برای مدیریت
- کندتر از
- در تابعهایی که تعداد زیادی
🟢 3. Stack-Allocated Defer
ا
🔵ویژگیها:
- روی stack تخصیص داده میشود.
- از
- به دلایلی نمیتواند
🔴 جمعبندی
- `Open-coded defer`: بهینهترین نوع، زمانی که
- `Heap-allocated defer`: کمینه کارایی دارد زیرا نیاز به تخصیص حافظه روی heap دارد.
- `Stack-allocated defer`: از stack استفاده میکند و بین کارایی و پیچیدگی قرار میگیرد.
این تمایزها به دلیل نحوه مدیریت منابع و بهینهسازیهای مختلف در کامپایلر Go است و درک آنها میتواند به نوشتن کدهای کاراتر کمک کند.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
defer یک مکانیزم است که به شما اجازه میدهد یک تابع را در انتهای اسکوپ (scope) اجرا کنید، معمولاً برای پاکسازی منابع یا اجرای کدهای نهایی مثل بستن فایلها، قفلها، یا کانکشنها. در Go، چندین نوع
defer وجود دارد که بر اساس نحوه پیادهسازی و تخصیص منابع، رفتارهای مختلفی دارند:🟢 1. Open-Coded Defer
ا
Open-coded defer نوعی از defer است که بهینهسازی شده و مستقیماً در کد قرار داده میشود. این نوع defer زمانی اتفاق میافتد که Go تشخیص دهد که فراخوانی defer نیازی به پیچیدگیهای اضافهی معمول (مثل تخصیص حافظه روی heap) ندارد. معمولاً این بهینهسازی زمانی انجام میشود که تعداد کمی defer در تابع وجود دارد و آنها ساده هستند.ویژگیها:
- از تخصیص حافظه اضافی جلوگیری میکند.
- سریعتر اجرا میشود.
- مستقیم در کد قرار میگیرد و از پیچیدگیهای معمول
defer اجتناب میکند.🟢 2. Heap-Allocated Defer
ا
Heap-allocated defer زمانی ایجاد میشود که defer به دلایل خاصی نیاز به تخصیص حافظه روی heap دارد. این اتفاق معمولاً در مواقعی رخ میدهد که تابع دارای چندین defer پیچیده باشد، یا زمانی که defer در یک تابع ناشناس یا گوروتین استفاده شود.ویژگیها:
- برای مدیریت
defer باید از heap استفاده کند.- کندتر از
open-coded defer است زیرا نیاز به تخصیص حافظه و مدیریت اضافی دارد.- در تابعهایی که تعداد زیادی
defer دارند یا defer در گوروتینها استفاده شده، این نوع دیده میشود.🟢 3. Stack-Allocated Defer
ا
Stack-allocated defer نوعی از defer است که در stack تخصیص داده میشود. این نوع معمولاً در مواقعی استفاده میشود که defer از لحاظ تخصیص منابع ساده است و نیازی به استفاده از heap ندارد، اما همچنان نمیتواند open-coded باشد. این نوع به نوعی میان open-coded و heap-allocated قرار میگیرد.🔵ویژگیها:
- روی stack تخصیص داده میشود.
- از
heap استفاده نمیکند، بنابراین بهینهتر از heap-allocated defer است.- به دلایلی نمیتواند
open-coded باشد (مثل پیچیدگی بیشتر یا وجود چندین defer).🔴 جمعبندی
- `Open-coded defer`: بهینهترین نوع، زمانی که
defer ساده و کم تعداد باشد.- `Heap-allocated defer`: کمینه کارایی دارد زیرا نیاز به تخصیص حافظه روی heap دارد.
- `Stack-allocated defer`: از stack استفاده میکند و بین کارایی و پیچیدگی قرار میگیرد.
این تمایزها به دلیل نحوه مدیریت منابع و بهینهسازیهای مختلف در کامپایلر Go است و درک آنها میتواند به نوشتن کدهای کاراتر کمک کند.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from Python BackendHub (Mani)
This media is not supported in your browser
VIEW IN TELEGRAM
:)))
@PyBackendHub
@PyBackendHub
Forwarded from Python BackendHub (Mani)
یک شفاف سازی: منظوراز سرور تو این schema سرور خوده ربات ناشناسه.
این بهترین نسخه ای هست که میشه با تلگرام اپ نوشت، هویت شما با هرپیام تغییر میکنه بنابراین ناشناسه.
ولی هنوز e2e نیست چون سکرت کی ها همه تو کلاد استوریج تلگرام ذخیره میشن.
نکته دیگه هم اینه که من فرض رو براین گذاشتم که دیتایی که یک اپلیکیشن رو کلاد تلگرام ذخیره میکنه، قابل دریافت مجدد نیست توسط خوده اپلیکیشن. اگه این فرضیه درست نباشه، کلا این قضیه شدنی نیست رو تلگرام.
@PyBackendHub
این بهترین نسخه ای هست که میشه با تلگرام اپ نوشت، هویت شما با هرپیام تغییر میکنه بنابراین ناشناسه.
ولی هنوز e2e نیست چون سکرت کی ها همه تو کلاد استوریج تلگرام ذخیره میشن.
نکته دیگه هم اینه که من فرض رو براین گذاشتم که دیتایی که یک اپلیکیشن رو کلاد تلگرام ذخیره میکنه، قابل دریافت مجدد نیست توسط خوده اپلیکیشن. اگه این فرضیه درست نباشه، کلا این قضیه شدنی نیست رو تلگرام.
@PyBackendHub
Forwarded from کداکسپلور | CodeExplore (Aqa Reza)
#site #icon
Please open Telegram to view this post
VIEW IN TELEGRAM
Pictogrammers
Material Design Icons - Icon Library - Pictogrammers
The original. Following Google's Material Design guidelines for system icons, MDI is our largest library, touting over 7200 unique icons!
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
Please open Telegram to view this post
VIEW IN TELEGRAM
Analyzing E2E bot
Twitter Space
بررسی ربات ناشناس E2E
توی این اسپیس توییتر همراه آقای جرجندی و یاشار شاهینزاده با سایر اشخاص صاحبنظر امنیت سایبری ربات ناشناس رمزنگاری E2E رو بررسی کردیم.
@Yasha
توی این اسپیس توییتر همراه آقای جرجندی و یاشار شاهینزاده با سایر اشخاص صاحبنظر امنیت سایبری ربات ناشناس رمزنگاری E2E رو بررسی کردیم.
@Yasha
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
⭐️برنامه LibreOffice 24.8: ویژگیهای جدید و بهبودها
برنامه LibreOffice 24.8 با بهبودهای قابل توجهی ارائه شده است. این نسخه جدید شامل یک ویژگی حریم خصوصی، بهبودهای ویرایشگر، بهبودهای محاسباتی، بهبودهای ارائه، و سایر تغییرات و بهبودها است.
🔹حریم خصوصی: امکان حذف اطلاعات شخصی مانند نام نویسنده، زمانبندی، نام چاپگر، مدت ویرایش و تنظیمات هنگام ذخیره پیشنویس.
🔹ویرایشگر: یک "پنل جستجو" جدید در نوار کناری برای مشاهده آسان جستجوهای سریع، رندر بهتر متن در سیستمهای نوشتاری CJK با جایگزین فونت ، رفع یک مشکل در موقعیتیابی شکل در وارداکردن فایل DOCX برای پاراگرافهای RTL.
🔹محاسبات: پشتیبانی جدید برای وارد کردن/صادر کردن قالب جدول OOXML، محلیسازی بهتر نوار وضعیت، امکان حذف نظرات با استفاده از منوی کلیک راست، توابع جدید مانند LET، XLOOKUP و XMATCH، عملکرد محاسبه بهتر با ترد و گزینههای انعطافپذیرتر برای عملگرهای مقایسه.
🔹ارائه: یک "پنل یادداشتها" جدید برای یادداشتها، که هنگام فعال شدن، یک پنل قابل جمع شدن درست زیر اسلاید نمایش میدهد. باز کردن فایلهای PPTX با شکلهای سنگین سفارشی اکنون سریعتر است.
🔹انواع نمودار جدید: "Pie-of-Pie" و "Bar-of-Pie".
🔹یک بسته رسمی برای رایانههای ویندوز مبتنی بر ARM.
🔹پشتیبانی برای اضافه کردن الگوهای تایلینگ در فایلهای PDF وارد شده در Draw.
🔹معرفی رمزگذاری ODF مبتنی بر رمز عبور با کارایی بالا.
🔹انتخاب کلمات چینی و ژاپنی در Math اکنون بر اساس قوانین ICU است.
🔹پایداری و عملکرد: نسخه 24.8 بر روی افزایش پایداری و بهبود عملکرد کلی برنامه تمرکز کرده است. بسیاری از باگها برطرف شدهاند و سرعت پاسخگویی برنامه افزایش یافته است.
🔹سازگاری: سازگاری با فرمتهای مختلف فایل، به ویژه فرمتهای مایکروسافت آفیس، بهبود یافته است. این بدان معناست که شما میتوانید به راحتی فایلهای خود را بین LibreOffice و سایر برنامههای آفیس مبادله کنید.
🔹دسترسیپذیری: LibreOffice 24.8 به بهبود دسترسی برای کاربران دارای معلولیت کمک کرده است. این شامل بهبودهای در رابط کاربری، پشتیبانی از فناوریهای کمکی و تطبیق با استانداردهای دسترسی است.
🔹بومیسازی: جامعه گسترده LibreOffice به ترجمه و بومیسازی برنامه کمک کرده است. در نتیجه، LibreOffice 24.8 در بسیاری از زبانها در دسترس است و تجربه کاربری را برای کاربران در سراسر جهان بهبود میبخشد.
🔹پشتیبانی از سیستمهای عامل: LibreOffice 24.8 از طیف گستردهای از سیستم عاملها، از جمله ویندوز، لینوکس و macOS پشتیبانی میکند.
نویسنده: حسین سیلانی
منبع : کانال لینوکسی: لینوکس تی ان تی
linuxtnt
http://seilany.ir
——————————————————
⭐️حمایت از کانال
https://zarinp.al/learninghive.ir
https://daramet.com/hossein_seilani
برنامه LibreOffice 24.8 با بهبودهای قابل توجهی ارائه شده است. این نسخه جدید شامل یک ویژگی حریم خصوصی، بهبودهای ویرایشگر، بهبودهای محاسباتی، بهبودهای ارائه، و سایر تغییرات و بهبودها است.
🔹حریم خصوصی: امکان حذف اطلاعات شخصی مانند نام نویسنده، زمانبندی، نام چاپگر، مدت ویرایش و تنظیمات هنگام ذخیره پیشنویس.
🔹ویرایشگر: یک "پنل جستجو" جدید در نوار کناری برای مشاهده آسان جستجوهای سریع، رندر بهتر متن در سیستمهای نوشتاری CJK با جایگزین فونت ، رفع یک مشکل در موقعیتیابی شکل در وارداکردن فایل DOCX برای پاراگرافهای RTL.
🔹محاسبات: پشتیبانی جدید برای وارد کردن/صادر کردن قالب جدول OOXML، محلیسازی بهتر نوار وضعیت، امکان حذف نظرات با استفاده از منوی کلیک راست، توابع جدید مانند LET، XLOOKUP و XMATCH، عملکرد محاسبه بهتر با ترد و گزینههای انعطافپذیرتر برای عملگرهای مقایسه.
🔹ارائه: یک "پنل یادداشتها" جدید برای یادداشتها، که هنگام فعال شدن، یک پنل قابل جمع شدن درست زیر اسلاید نمایش میدهد. باز کردن فایلهای PPTX با شکلهای سنگین سفارشی اکنون سریعتر است.
🔹انواع نمودار جدید: "Pie-of-Pie" و "Bar-of-Pie".
🔹یک بسته رسمی برای رایانههای ویندوز مبتنی بر ARM.
🔹پشتیبانی برای اضافه کردن الگوهای تایلینگ در فایلهای PDF وارد شده در Draw.
🔹معرفی رمزگذاری ODF مبتنی بر رمز عبور با کارایی بالا.
🔹انتخاب کلمات چینی و ژاپنی در Math اکنون بر اساس قوانین ICU است.
🔹پایداری و عملکرد: نسخه 24.8 بر روی افزایش پایداری و بهبود عملکرد کلی برنامه تمرکز کرده است. بسیاری از باگها برطرف شدهاند و سرعت پاسخگویی برنامه افزایش یافته است.
🔹سازگاری: سازگاری با فرمتهای مختلف فایل، به ویژه فرمتهای مایکروسافت آفیس، بهبود یافته است. این بدان معناست که شما میتوانید به راحتی فایلهای خود را بین LibreOffice و سایر برنامههای آفیس مبادله کنید.
🔹دسترسیپذیری: LibreOffice 24.8 به بهبود دسترسی برای کاربران دارای معلولیت کمک کرده است. این شامل بهبودهای در رابط کاربری، پشتیبانی از فناوریهای کمکی و تطبیق با استانداردهای دسترسی است.
🔹بومیسازی: جامعه گسترده LibreOffice به ترجمه و بومیسازی برنامه کمک کرده است. در نتیجه، LibreOffice 24.8 در بسیاری از زبانها در دسترس است و تجربه کاربری را برای کاربران در سراسر جهان بهبود میبخشد.
🔹پشتیبانی از سیستمهای عامل: LibreOffice 24.8 از طیف گستردهای از سیستم عاملها، از جمله ویندوز، لینوکس و macOS پشتیبانی میکند.
نویسنده: حسین سیلانی
منبع : کانال لینوکسی: لینوکس تی ان تی
linuxtnt
http://seilany.ir
——————————————————
⭐️حمایت از کانال
https://zarinp.al/learninghive.ir
https://daramet.com/hossein_seilani
seilany.ir
حسین سیلانی - وب سایت شخصی
این وب سایت شخصی حسین سیلانی است.فعال در زمینه لینوکس و متن باز.بسیاری از آموزشهای شامل:کتابها،فیلم ها،پست های آموزشی، همچنین توزیع های لینوکسی ایجاد شده را در این وب سایت قرار داده ام، تا دسترسی سریع به همه موارد را داشته باشید
Forwarded from Code Module | کد ماژول (genix)
Array indexing چیست؟🚀
Array indexing تکنیکیه که برای دسترسی به المنت ها در یک آرایه بر اساس موقعیت یا ایندکس اونها استفاده میشه. همونطور که میدونید هر المنت در یک آرایه با ایندکس خود مشخص میشه که نشون دهنده موقعیت اون نسبت به المنت اول هست. ایندکسینگ امکان دسترسی موثر و مستقیم به هر المنت در آرایه رو فراهم میکنه که برای کارهای محاسباتی مختلف ضروری هست. به عنوان مثال یک آرایه یک بعدی رو در نظر بگیرید:
در این آرایه 5 عنصر وجود داره که در مکان های حافظه به هم پیوسته ذخیره میشن. ایندکس المنت اول 0، المنت دوم 1 و... هست. و همونطور که میدونید برای دسترسی مثلا به المنت سوم آرایه باید اینکار رو انجام بدیم:
از اونجا که ایندکسینگ از صفر شروع میشه در واقع ایندکس دوم به المنت سوم اشاره داره. اما میدونستید میشه هر کدوم از این هارو محاسبه کرد؟
موقعیت هر المنت در یک آرایه یک بعدی رو میشه با استفاده از یک فرمول ساده محاسبه کرد. این فرمول آدرس پایه آرایه، ایندکس المنت و اندازه هر المنت در حافظه رو محاسبه میکنه( توجه داشته باشید فقط برای آرایه های یک بعدی جوابه)
به عنوان مثال، اگر آدرس پایه آرایهA هزار باشه و هر عدد صحیح 4 بایت حافظه اشغال کنه، آدرس المنت در ایندکس دوم میشه:
بنابراین، المنت در ایندکس 2 در حافظه به آدرس 1008 ذخیره میشه.
محاسبه آدرس المنت چند بعدی⬇️
اما این ها برای آرایه های یک بعدی بود و برای آرایه های چند بعدی مساعل پیچیده تر میشه، چون باید چندین ایندکس رو در نظر بگیرید. با این حال، فرآیند رو میشه به صورت انتراعی توضیح داد. به عنوان مثال فرمول کلی ما در آرایه های یک بعدی اینه: ( فرمول بالایی هم هست اما این جامع تره)
به صورت خلاصه معنی این فرمول یعنی این:
- B: آدرس پایه آرایه است.
- W: اندازه هر المنت در بایت.
- i: ایندکس المنت.
- L_B(lower bound): به کوچکترین یا مقدار ایندکس اولیه ای که المنت آرایه از اون ایندکس شروع میشه اشاره داره. ( به صورت دیفالت 0 هست که در نظر گرفته نمیشه)
#array
@CodeModule
Array indexing تکنیکیه که برای دسترسی به المنت ها در یک آرایه بر اساس موقعیت یا ایندکس اونها استفاده میشه. همونطور که میدونید هر المنت در یک آرایه با ایندکس خود مشخص میشه که نشون دهنده موقعیت اون نسبت به المنت اول هست. ایندکسینگ امکان دسترسی موثر و مستقیم به هر المنت در آرایه رو فراهم میکنه که برای کارهای محاسباتی مختلف ضروری هست. به عنوان مثال یک آرایه یک بعدی رو در نظر بگیرید:
int A[5] ={10, 20, 30, 40, 50}در این آرایه 5 عنصر وجود داره که در مکان های حافظه به هم پیوسته ذخیره میشن. ایندکس المنت اول 0، المنت دوم 1 و... هست. و همونطور که میدونید برای دسترسی مثلا به المنت سوم آرایه باید اینکار رو انجام بدیم:
A[2] = 30;
از اونجا که ایندکسینگ از صفر شروع میشه در واقع ایندکس دوم به المنت سوم اشاره داره. اما میدونستید میشه هر کدوم از این هارو محاسبه کرد؟
موقعیت هر المنت در یک آرایه یک بعدی رو میشه با استفاده از یک فرمول ساده محاسبه کرد. این فرمول آدرس پایه آرایه، ایندکس المنت و اندازه هر المنت در حافظه رو محاسبه میکنه( توجه داشته باشید فقط برای آرایه های یک بعدی جوابه)
Address of A[i] = Base Address + (i * Size of each element)
به عنوان مثال، اگر آدرس پایه آرایهA هزار باشه و هر عدد صحیح 4 بایت حافظه اشغال کنه، آدرس المنت در ایندکس دوم میشه:
Address of A[2] = 1000 + (2 * 4) = 1008
بنابراین، المنت در ایندکس 2 در حافظه به آدرس 1008 ذخیره میشه.
محاسبه آدرس المنت چند بعدی
اما این ها برای آرایه های یک بعدی بود و برای آرایه های چند بعدی مساعل پیچیده تر میشه، چون باید چندین ایندکس رو در نظر بگیرید. با این حال، فرآیند رو میشه به صورت انتراعی توضیح داد. به عنوان مثال فرمول کلی ما در آرایه های یک بعدی اینه: ( فرمول بالایی هم هست اما این جامع تره)
Address of A[i] = B + W * (i - L_B)
به صورت خلاصه معنی این فرمول یعنی این:
- B: آدرس پایه آرایه است.
- W: اندازه هر المنت در بایت.
- i: ایندکس المنت.
- L_B(lower bound): به کوچکترین یا مقدار ایندکس اولیه ای که المنت آرایه از اون ایندکس شروع میشه اشاره داره. ( به صورت دیفالت 0 هست که در نظر گرفته نمیشه)
برای اینکه پست زیادی طولانی نشه، ادامه مطالب رو در تلگراف برای شما عزیزان آماده کردیم🙂
#array
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Sudoer (Morteza Bashsiz)
درود بر همه شما دوستان عزیز
ویدیو آشنایی با NipoVPN رو رکورد کردم گذاشتم یوتیوب
توش یه توضیح مختصری از کاری که میکنه دادم و همینطور یه تستی ازش گرفتم و اینکه مشکلاتی که داره رو هم توضیح دادم
دیگه همراهی کنید کمک کنید تا مشارکت انجام بشه و کاملتر بشه
سپاس از همراهی شما
https://youtu.be/slAaPVnckE0
ویدیو آشنایی با NipoVPN رو رکورد کردم گذاشتم یوتیوب
توش یه توضیح مختصری از کاری که میکنه دادم و همینطور یه تستی ازش گرفتم و اینکه مشکلاتی که داره رو هم توضیح دادم
دیگه همراهی کنید کمک کنید تا مشارکت انجام بشه و کاملتر بشه
سپاس از همراهی شما
https://youtu.be/slAaPVnckE0
YouTube
آشنایی با برنامه
توی این ویدیو تلاش کردم که یک توضیحات کلی در مورد کارکرد این برنامه بدم که چطوری کار میکنه و چالشهایی که داشتم رو توضیح دادم
آدرس ریپوزیتوری
https://github.com/MortezaBashsiz/nipovpn
آدرس ریپوزیتوری
https://github.com/MortezaBashsiz/nipovpn
Forwarded from Gopher Academy
🔵 عنوان مقاله
Valgo 0.3: An Expressive Validator Library
🟢 خلاصه مقاله:
مقالهای که مورد بررسی قرار گرفته به معرفی کتابخانهای جدید برای اعتبارسنجی دادهها به نام "Valgo" پرداخته است. تمرکز اصلی این کتابخانه بر تایپسیف (امنیت نوع) و قابلیت توسعه با استفاده از جنریکها است. این کتابخانه با سایر کتابخانههای اعتبارسنجی تفاوتهای چشمگیری دارد، به ویژه در نحوه اعمال قوانین اعتبارسنجی. در "Valgo"، قوانین به جای استفاده از تگهای ساختار، به صورت توابع نوشته میشوند که این امر امکان سازگاری و انعطافپذیری بیشتری در چگونگی و مکان اعتبارسنجی دادهها را فراهم میآورد. این تغییر نه تنها افزایش کنترل بر روی پروسه اعتبارسنجی را به دنبال دارد بلکه امکان سفارشیسازی بیشتری را برای توسعهدهندگان ایجاد میکند تا بتوانند با توجه به نیازهای خاص پروژه خود، بهترین استفاده را از این کتابخانه ببرند.
🟣لینک مقاله:
https://github.com/cohesivestack/valgo
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Valgo 0.3: An Expressive Validator Library
🟢 خلاصه مقاله:
مقالهای که مورد بررسی قرار گرفته به معرفی کتابخانهای جدید برای اعتبارسنجی دادهها به نام "Valgo" پرداخته است. تمرکز اصلی این کتابخانه بر تایپسیف (امنیت نوع) و قابلیت توسعه با استفاده از جنریکها است. این کتابخانه با سایر کتابخانههای اعتبارسنجی تفاوتهای چشمگیری دارد، به ویژه در نحوه اعمال قوانین اعتبارسنجی. در "Valgo"، قوانین به جای استفاده از تگهای ساختار، به صورت توابع نوشته میشوند که این امر امکان سازگاری و انعطافپذیری بیشتری در چگونگی و مکان اعتبارسنجی دادهها را فراهم میآورد. این تغییر نه تنها افزایش کنترل بر روی پروسه اعتبارسنجی را به دنبال دارد بلکه امکان سفارشیسازی بیشتری را برای توسعهدهندگان ایجاد میکند تا بتوانند با توجه به نیازهای خاص پروژه خود، بهترین استفاده را از این کتابخانه ببرند.
🟣لینک مقاله:
https://github.com/cohesivestack/valgo
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - cohesivestack/valgo: Valgo is a type-safe, expressive, and extensible validator library for Golang. Supports localization…
Valgo is a type-safe, expressive, and extensible validator library for Golang. Supports localization and is built with generics. - cohesivestack/valgo
Forwarded from Syntax | سینتکس (Daimon)
تو چند دقیقه نحوه کار با Redis Pub/Sub رو تو پایتون یاد بگیر
Pub/Sub
(انتشار/اشتراک) یک الگوی معماری است که به برنامهها اجازه میدهد تا به صورت غیرمستقیم با یکدیگر ارتباط برقرار کنند. در این الگو، تولیدکنندگان اطلاعات (Publisher) پیامها را منتشر میکنند و مصرفکنندگان (Subscriber) به موضوعات (Topics) خاصی که به آنها علاقهمند هستند، اشتراک میگذارند. این سیستم اجازه میدهد تا بدون نیاز به وابستگی مستقیم با یکدیگر، اطلاعات را تبادل کنند.
مزایای Pub/Sub
- کاهش وابستگیها: تولیدکنندگان و مصرفکنندگان نیازی به شناخت یکدیگر ندارند.
- مقیاسپذیری: میتوان به سادگی مصرفکنندگان و تولیدکنندگان جدیدی اضافه کرد.
- توزیعپذیری: میتوان سیستمها را به صورت توزیعشده پیادهسازی کرد.
مثال ساده با Redis Pub/Sub
در این مثال، از Redis به عنوان سیستم Pub/Sub استفاده خواهیم کرد. ابتدا باید Redis را نصب و راهاندازی کنید.
نصب Redis
تو ریپازیتوری ای که لینکشو آخر پست میذارم، سرویس ردیس رو توی docker-compose.yml مشخص کردم و روی داکر اجراش میکنیم.
همچنین داخل فایل .env تنظیمات ردیس رو میتونید مشخص کنید.
پیادهسازی در پایتون
برای این کار به کتابخانه
در این مثال، یک Publisher و یک Subscriber خواهیم داشت.
Publisher (server.py):
در قدم اول کانکشن با ردیس رو می سازیم.
با متد ping میتونیم چک کنیم وضعیت کانگشنمون اوکی هست یا نه(جنبه آموزشی نوشتمش)
بعد مشخص کردیم که topic ما اسمش چیه.
دیتایی که قراره داخل payload مسیج قرار بدیم رو مشخص کردیم که بصورت دیکشنری هستش و بعدش اومدیم به json تبدیلش کردیم و مسیح رو پابلیش کردیم.
Subscriber (client.py):
در قدم اول یک کانکشن ردیس گرفتیم. بعد تاپیکی که subscribe میکنیمش رو مشخص کردیم(میتونیم چندین تا تاپیک رو سابسکرایب کنیم)
در قدم بعدی داخل یک long running میایم به مسیج های جدیدی که میاد گوش میدیم و یک switch case زدیم و براساس تاپیک ها میتونیم کارهای خاص خودش رو انجام بدیم.
نحوه اجرا
1. در یک ترمینال،
2. در یک ترمینال دیگه server.py رو اجرا کنید که با هربار اجرا یک مسیج رو پابلیش میکنه.
سورس کد:
https://github.com/alireza-fa/redis-pub-sub-example
#redis_pub_sub #pub_sub #event_driven #python
@Syntax_fa
Pub/Sub
(انتشار/اشتراک) یک الگوی معماری است که به برنامهها اجازه میدهد تا به صورت غیرمستقیم با یکدیگر ارتباط برقرار کنند. در این الگو، تولیدکنندگان اطلاعات (Publisher) پیامها را منتشر میکنند و مصرفکنندگان (Subscriber) به موضوعات (Topics) خاصی که به آنها علاقهمند هستند، اشتراک میگذارند. این سیستم اجازه میدهد تا بدون نیاز به وابستگی مستقیم با یکدیگر، اطلاعات را تبادل کنند.
مزایای Pub/Sub
- کاهش وابستگیها: تولیدکنندگان و مصرفکنندگان نیازی به شناخت یکدیگر ندارند.
- مقیاسپذیری: میتوان به سادگی مصرفکنندگان و تولیدکنندگان جدیدی اضافه کرد.
- توزیعپذیری: میتوان سیستمها را به صورت توزیعشده پیادهسازی کرد.
مثال ساده با Redis Pub/Sub
در این مثال، از Redis به عنوان سیستم Pub/Sub استفاده خواهیم کرد. ابتدا باید Redis را نصب و راهاندازی کنید.
نصب Redis
تو ریپازیتوری ای که لینکشو آخر پست میذارم، سرویس ردیس رو توی docker-compose.yml مشخص کردم و روی داکر اجراش میکنیم.
همچنین داخل فایل .env تنظیمات ردیس رو میتونید مشخص کنید.
docker-compose up -d
پیادهسازی در پایتون
برای این کار به کتابخانه
redis نیاز داریم. میتوانید آن را با pip نصب کنید:pip install redis
در این مثال، یک Publisher و یک Subscriber خواهیم داشت.
Publisher (server.py):
import json
from redis import StrictRedis
server = StrictRedis(host="localhost", port=6399, password="redis_password", db=0)
# redis ping
print(server.ping())
topic = "example_topic"
data = {
"name": "alireza",
"age": 22,
}
server.publish(channel=topic, message=json.dumps(data))
در قدم اول کانکشن با ردیس رو می سازیم.
با متد ping میتونیم چک کنیم وضعیت کانگشنمون اوکی هست یا نه(جنبه آموزشی نوشتمش)
بعد مشخص کردیم که topic ما اسمش چیه.
دیتایی که قراره داخل payload مسیج قرار بدیم رو مشخص کردیم که بصورت دیکشنری هستش و بعدش اومدیم به json تبدیلش کردیم و مسیح رو پابلیش کردیم.
Subscriber (client.py):
import json
from redis import StrictRedis
client = StrictRedis(host="localhost", port=6399, password="redis_password", db=0)
topic = "example_topic"
pubsub = client.pubsub()
pubsub.subscribe(topic)
print("waiting for message...")
while True:
for message in pubsub.listen():
if message["data"] == 1:
continue
match message["type"]:
case topic:
# TODO - change serialization. json is not good
data = json.loads(message["data"])
print("received message", data["name"], data["age"])
در قدم اول یک کانکشن ردیس گرفتیم. بعد تاپیکی که subscribe میکنیمش رو مشخص کردیم(میتونیم چندین تا تاپیک رو سابسکرایب کنیم)
در قدم بعدی داخل یک long running میایم به مسیج های جدیدی که میاد گوش میدیم و یک switch case زدیم و براساس تاپیک ها میتونیم کارهای خاص خودش رو انجام بدیم.
نحوه اجرا
1. در یک ترمینال،
client.py را اجرا کنید2. در یک ترمینال دیگه server.py رو اجرا کنید که با هربار اجرا یک مسیج رو پابلیش میکنه.
سورس کد:
https://github.com/alireza-fa/redis-pub-sub-example
#redis_pub_sub #pub_sub #event_driven #python
@Syntax_fa
Forwarded from LearnPOV | لرن پی او وی (Mohammad hossein)
میدونین Headless Cms چیه و چیکار میکنه ؟؟؟