Dev Perfects
40 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from Geek Alerts
گوشی و دستگاه‌های جولیا هم ضبط شده بود و نمیتونست به حساب‌هاش توی تلگرام و اینستاگرام دسترسی داشته باشه.
همین سکوت هم باعث شده شایعه وب‌لاگ‌نویس‌ها بیشتر بشه و جولیا مورد آزار و اذیت سایبری قرار بگیره.
جولیا قوی موند ولی برخلاف من به این روند‌ها عادت نداشت، دو روز پیش پیش دکتر بارداریش رفت و فهمیدیم که قلب بچمون دیگه نمیزنه.
https://t.iss.one/julivavilovaa/304
@geekalerts
Forwarded from a pessimistic researcher (Kc)
هزار و یک باگ
شب دوم - قسمت اول
—————————————————

یک شب دیگه، یک برنامه‌ی دیگه و یک باگ دیگه. نمی‌دونم چرا ولی همیشه یک سری کارا خیلی ساده به نظر میان. مثلا فرد چندتا رمان روسی میخونه، موزیک‌های نئوکلاسیک فانک راک گوش میده، کمی تئوری لرنینگ میخونه، از SVM عبور می‌کنه و سعی میکنه ماهیت استوکستیک LLM ها رو درک کنه و بعدش به خودش میگه که من تونستم جفت پوچ بودن دستای هستی رو رو کنم، منتهی با گذر زمان میفهمه که انقدر هم اینکار ساده نیست و حتی نمیتونه یک random walk رو توجیه کنه. میفهمه که خیلی عقب وایساده و قرار نیست فیزیک و شیمی مدرن نظری جلوش زانو بزنن. مثلا شخص اثبات کرده که مسئله‌ی ارضاء پذیری ساختارهای محدود در منطق مرتبه‌ی اول، تصمیم ناپذیره، و فرد میگه که کی همچین زری زده :) من میرم براش یک الگوریتم P مینویسم، منتهی باید کلی روحش سوهان بخوره تا بفهمه راحت که هیچ، شدنی نیست.
این مقدمه شاید لازم بود تا برسیم به مسئله‌ی مورد بحث که بسیار ساده است. محاسبه‌ی ب.م.م دو عدد با روش اقلیدسی. اگر تا حالا اسم این الگوریتم رو نشنیدید اصلا چیز مهمی نیست. من بهتون توضیح میدم. تصور کنید که شما یک تابع دارید که دو عدد صحیح a و b رو به عنوان ورودی میگیره. این دو عدد بین دوتا Thread به اشتراک گذاشته میشن. ترد اول چنین کدی رو اجرا میکنه
Thread I
while ( a != b ) {
if ( a > b ) {
a := a - b
}
}

ترد دوم هم به قرینه‌ی ترد اول همین کار رو تقلید میکنه. یعنی چنین کدی رو اجرا میکنه :
Thread II
while ( a != b ) {
if ( b > a ) {
b := b - a
}
}

بیاید برای درک بهتر الگوریتم یک مثال رو اجرا کنیم. تصور کنید مقدار a و b به ترتیب 10 و 4 باشه. ترد اول بعد یک بار اجرا مقادیر جدید a و b رو به شکل 6 و 4 در میاره. توجه داشته باشید که در طول اجرا ترد دوم فقط میتونه به شکل idle در حلقه بمونه. سپس ترد اول یک بار دیگه اجرا میشه و مقادیر a و b به 2 و 4 تغییر میکنن. حالا ترد اول فقط میتونه به شکل idle لوپ بخوره و ترد دوم بدنه‌ی if رو اجرا کنه. پس از یک بار چرخش، ترد دوم مقادیر a و b رو به 2 و 2 تغییر میده. حالا هر دو تا ترد میتونن با یک بار اجرای حلقه، از while خارج بشن و حاصل ب.م.م. دو عدد هم همونطور که ملاحظه می‌کنید در a و b قرار داره که 2 می‌باشد.

همه چیز ساده است. منطق برنامه و رفتار ترد ها. حالا نوبت پرسشه. یک پرسش ساده. آیا این برنامه به ازای هر مقادیر بزرگتر از صفری برای a و b درست کار میکند یا خیر. برای اینکه بتونیم این برنامه رو وریفای کنیم باید یک تعداد assumption و assertion به کدمون اضافه کنیم. این گزاره‌ها لازمه برای انجام وریفیکیشن چرا که مثلا میخوایم این فرض رو داشته باشیم که مقدار ورودی a و b بزرگتر از صفره. حال با اضافه کردن این گزاره‌ها برنامه‌ی ما بدین شکل خواهد شد.
fun foo() {
int a = nondet()
int b = nondet()
assume ( a > 0 && b > 0 )

a := a_in
b := b_in

ThreadI ( a_in, b_in ) -> start
ThreadII ( a_in, b_in ) -> start

ThreadI -> join
ThreadII -> join

int guessed_gcd = nondet()
assume ( guessed_gcd > 1 )
assume ( a_in % guessed_gcd == 0 )
assume ( b_in % guessed_gcd == 0 )

// Properties
assert( a_in % a == 0 )
assert( b_in % a == 0 )

assert( a >= guessed_gcd )
}

حالا پرسش ساده‌ای که مطرح کردم و فرمال می‌کنم.

۱. آیا می‌تونید خودتون با استنتاج روی این کد اثبات کنید که برنامه این Properties رو ارضاء میکنه یا نه. اگر آره استنتاج‌تون رو شرح بدید.

۲. آیا می‌تونید یک برنامه‌ا‌ی بنویسید که به عنوان ورودی این برنامه رو از شما بگیره و اگر حالتی درش وجود داره که منجر به نقض شدن شرط‌های assert میشه رو پیدا کنه و به عنوان یک مثال نقض بهمون یک trace از اجرای برنامه برگردونه؟ اگر چنین برنامه‌ای نوشتید، آیا decision procedure که برای پیدا کردن این trace به کار بردید، sound و complete و optimal هست؟ لطفا اثبات کنید.
Forwarded from a pessimistic researcher (Kc)
هزار و یک باگ
شب دوم - قسمت دوم
—————————————————

این بار می‌خوام برخلاف هزار و یک باگ‌های قبلی کمی مسئله‌ رو پیش ببرم تا نشون بدم یک مسئله‌ی به این سادگی تا چه اندازه میتونه پیچیده بشه. فرض کنید برای وریفای کردن این برنامه ما میتونیم متغیرهای a و b رو به شکل symbolic در نظر بگیریم. یعنی هیچ مقدار مشخص ندارن. حالا فرض کنید که ما یک oracle یا پیشگو داریم (در حقیقتا یک SMT Solver) که در هر لحظه از اجرای برنامه می‌تونیم بهش یک فرمول منطقی بدیم و ازش بپرسیم آیا این فرمول ارضاء پذیر هست یا نه. حال با داشتن این دو یاور شروع کنیم به درستی‌یابی برنامه. در ابتدای اجرا می‌دونیم که :

a > 0 && b > 0

به قول معروف، without loss of generality فرض کنید که ترد اول اجرا میشه و به اولین فرمول سیمبولیک بر میخوره یعنی a != b حالا نوبت استفاده از اوراکله. ازش می‌پرسیم آیا ممکنه این فرمول ارضاء پذیر باشه ؟

a > 0 && b > 0 && a != b

اوراکل میگه بله و مشکلی نیست برو جلو. فرمول بعدی a > b هستش و دوباره اوراکل رو صدا می‌کنیم :

a > 0 && b > 0 && a != b && a > b

اوراکل میگه بله اگر مقدار a برابر با b + 1 باشه این فرمول ها ارضا پذیرن. بعد از اجرای دستور a:= a-b و رسیدن به شروط حلقه و if دوباره باید اوراکل رو صدا بزنیم :

a > 0 && b > 0 && a != b && a > b && a-b ! = b && a-b > b


اوراکل میگه بله ارضاء پذیره. کافیه مقدار a برابر باشه با 2b+1. دوباره ترد یک ادامه میده و حلقه رو یک بار دیگه پیمایش میکنه و میرسیم به این پرسش از اوراکل :

a > 0 && b > 0 && a != b && a > b && a-b ! = b && a-b > b && a-2b != b && a-2b > b


اوراکل میگه بله ارضاء پذیره چرا که مقدار a میتونه برابر با 3b+1 باشه. بعد از n بار اجرای حلقه، پرسش از اوراکل میشه :

a > 0 && b > 0 && a != b && a > b && a-b ! = b && a-b > b && a-2b != b && a-2b > b && ... && a - nb != b && a - nb > b


و اوراکل میگه چون مقدار a میتونه برابر با :

(n+1) b + 1


باشه این فرمول ارضا پذیره. همونطور که ملاحظه می‌کنید پورسه‌ی وریفیکیشن یک برنامه‌ای که میشه اثبات کرد halt میکنه، تصمیم ناپذیر شده و تا بینهات ادامه میده و هیچ وقت converge نمی‌کنه! و یک مسئله‌ی به این سادگی اونقدرا هم که فکر میکنیم ساده حل نمیشه.
Forwarded from Geek Alerts
نسخه جدید چت‌بات مایکروسافت Copilot اومده و برای دسترسی بهش کافیه کشور رو روی آمریکا تنظیم کنید.
قبل از این کار باید به حساب خودتون لاگین کرده باشید.
https://copilot.microsoft.com
@geekalerts
Forwarded from a pessimistic researcher (Kc)
بحث سافتور وریفیکیشن که گفتم توی این پست در مورد همین مطالبی هستش که توی پست‌های "هزار و یک باگ" بهشون می‌پردازیم. برای آشنایی با این فیلد میتونید ۳ پستی که با عنوان هزار و یک باگ گذاشتم رو بخونید.

در ضمن دلیل اینکه گفتم بهم پیام بدید و یکمم از خودتون بگید این بود که منم با شماها بتونم آشنا بشم و همه چیز صرفا unicast نباشه.
Forwarded from Code Module | کد ماژول (𔓙)
وقتی اینترنت نمیتونه مشکلت رو حل کنه 😂

#fun
@CodeModule
Forwarded from Python BackendHub (Mani)
This media is not supported in your browser
VIEW IN TELEGRAM
حق 👌
درواقع این همین <توهم بدن شناگر> هست. این باور جا افتاده که شناگر ها بدشون عالیه، چون شناگر هستن. درصورتی که این باور توهمه، و اگه کسی مثل شناگر ها ورزش کنه لزوما نمیتونه بدنش عالی باشه.
درواقع ریشه این مشکل اینجاست:
Correlation is not causation
که نمیتونم خوب ترجمش کنم

@PyBackendHub
Forwarded from Meysam
😕
Forwarded from Linuxor ?
یه منبع غنی آموزش دانشگاهی کامپیوتر از دانشگاه های هاروارد، پرینستون، MIT و ...

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

https://github.com/ossu/computer-science

🐧 @Linuxor
This media is not supported in your browser
VIEW IN TELEGRAM
موزیک ویدیو برنامه نویسی 🙂😂

برا بچه هایی که ایسنتا ندارن گذاشتم اینجا، دوست داشتید از اینستامون ببینید 🔻

🌐https://www.instagram.com/coolycode


شیر و ری‌اکشن یادتون نره 😂❤️

#️⃣ #fun #programming

🚀 @coolycode
میخوایی بدونی پس قضیه جاواسکریپت چی میگذره و توی مصاحبه ها هم ازش استفاده کنی ؟

من یه مجموعه مقالاتی به اسم اندراحوالات جاواسکریپت توی سایت ویرگول نوشتم که جواب سوال بالا رو بهت میده:
تا جایی که تونستم هر موضوعی رو به ساده ترین نوع ممکن توضیح و پوشش دادم

اندر احوالات جاوا‌اسکریپت قسمت اول
در مورد نحوه کار js و javascript Engine
https://vrgl.ir/fH7sf

اندر احوالات جاوا‌اسکریپت قسمت دوم
در مورد Execution Context, Call Stack و زیر و بم اش
https://vrgl.ir/REWoF

اندر احوالات جاوا‌اسکریپت قسمت سوم
هر آنچه که باید درمورد Scope و مخلفاتش بدونی
https://vrgl.ir/Zr7QI

اندر احوالات جاوا‌اسکریپت قسمت چهارم
در مورد Hoisting
https://vrgl.ir/A3CVT

اندر احوالات جاوا‌اسکریپت قسمت پنجم (آخر)
در مورد مفهوم this و کاربردش، arrow function و bind
https://vrgl.ir/JpJXp

نبرد async و sync
در مورد مفهوم asynchronous و synchronous - میکروتسک چیه؟نحوه کار کرد؟
https://vrgl.ir/96eJP

@DevTwitter | <Mohammad Bohluli/>
Forwarded from CleverDevs (Mammad)
🏰 اولین بازی استراتژی آنلاین در تلگرام! 🏰

قدرت در انتظار شماست...

بنا کنید، توسعه دهید، سربازان خود را آموزش دهید، با دیگر بازیکنان متحد شوید، به دشمنانتان حمله ور شوید و سرزمین هایشان را نابود کنید.

شما، برترین پادشاه خواهید شد. 👑

🎮 @CastelGame_bot @CastelGame_bot
🎮 @CastelGame_bot @CastelGame_bot
Forwarded from Linuxor ?
This media is not supported in your browser
VIEW IN TELEGRAM
اگه سردرد گیت داری و بعضی از مواقع اصلا نمیدونی چه کامندی از گیتو بزنی، این برنامه سبک یه GUI ترمینالی برای گیته


https://github.com/jesseduffield/lazygit


توصیه میکنم اینو توی خفا استفاده کنید به هیچ وجه کسی اطرافتون نبینه نصبش کردید.


🐧 @Linuxor
برای عزیزانی که متوجه نشدن
این موزیک ویدیو اهنگ فندک کو هستش ما بومی سازیش کردیم مخصوص برنامه نویسا😂
Forwarded from Meitix
#Go. Part III.pdf
241.6 KB
یادداشت های go
در تمام دنیا VPN ابزار افزایش امنیت کاربره؛ هرکی به‌غیر از این گفت بدونید یا نادانه، یا بر اساس منافع خاصی داره واقعیت رو وارونه جلوه میده!
کسی که به فکر امنیت کاربره نه پروتکل‌های امن رو مختل/مسدود میکنه، نه مارکت‌های امن و معتبر رو میبنده و نه سرویس‌ها رو ⁧ #ایران_اکسس⁩ میکنه.

© vahidfarid

🔍 ircf.space
@ircfspace‏⁧
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
📌جستجو متن دلخواه در درون محتوای فایلها و فهرست📌

🔸اگر شما یک توسعه‌دهنده، برنامه‌نویس وب، یا فردی هستید که با تعداد زیادی فایل کار می‌کند و به دنبال پیدا کردن یک قطعه متن هستید، یادگیری و به خاطر سپردن یک فرمان خاص برای شما سخت است. به عنوان مثال، فرض کنید یک دایرکتوری دارید که شامل 30 پوشه و 20,000 فایل است. مهم نیست که پسوند فایل‌ها چه باشد؛ آن‌ها می‌توانند .txt، .php، .css، .js و غیره باشند.
شما نیاز دارید که به سرعت یک متن یا چند کلمه را در این فایل‌ها پیدا کنید. چه کار باید بکنید؟ قطعاً بررسی هر فایل به صورت جداگانه غیرممکن است، بنابراین فرمان grep در لینوکس به کمک شما می‌آید.

فرمان grep یکی از قدرتمندترین و چندمنظوره‌ترین فرمان‌های لینوکس است. هدف اصلی آن جستجوی الگوها در هر فایل است و از قوانین پیچیده نیز پشتیبانی می‌کند.

grep -rnwi '/path' -e 'your_text'



🔸اگر گزینه w رو بگذارید دقیقا همان کلمه مدنظر برمیگردد مثلا cat
🔸اگر گزینه w رو نگذارید کلمه های دارای حروف cat باشند برمیگرداند.
🔸گزینه n شماره خطی که متن پیدا شده برمیگرداند.
🔸گزینه r هم درون فهرست های تودرتو جستجو انجام میدهد.

🔸گزینه i به معنی ignore که به بزرگ یاکوچک بودن حروف حساس نمیشود.

نویسنده: حسین سیلانی
منبع : کانال لینوکسی: لینوکس تی ان تی
@linuxtnt

حمایت از کانال-donate
https://zarinp.al/learninghive.ir
Forwarded from Pishro App
📂| SQL Injection

حمله SQL Injection یا همان تزریق کد SQL نوعی حمله است که در آن فرد یا گروه مهاجم سعی دارند با ارسال کدهای مختلف برای پایگاه داده راهی را برای نفوذ و یا بدست آوردن اطلاعات و یا حتی تخریب اطلاعاتی که نمی‌دانند چیست و در کجا قرار دارد، انجام دهند. این نوع از حملات یک نوع خطرناک به‌شمار می‌آید و از خانواده‌ی حملات Code Injection هستند که همان تزریق کد می‌باشد. عموما URLهایی که کوئری‌های مختلفی را درون خود دارند، صفحه‌های وارد کردن اطلاعات به فرم‌ها و همین‌طور صفحه‌های لاگین از مواردی هستند که می‌توانند اهداف مناسبی برای اجرای حمله SQL Injection باشد.

اجرای حمله SQL Injection به این صورت است که یک فهرست از دستورات و کوئری‌های مختلف برای پایگاه داده تهیه شده و از روزنه‌ای که تشخیص داده شده است و هکرها فکر می‌کنند که ممکن است کدهایی که از آنجا وارد می‌شود روی پایگاه داده پردازش شوند به سایت تزریق می‌شود.

👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Yasha
Forwarded from فیبونای چی؟ (ساره‍ْ)