ɪɴ ᴍʏ ʜᴇᴀᴅ
706 subscribers
33 photos
16 videos
11 files
18 links
ᴡᴇʟᴄᴏᴍᴇ ᴛᴏ ᴍʏ ʜᴇᴀᴅ
Download Telegram
ما اصطلاحی داریم به نام universal logic gates ، نمیدونم چطوری معنیش کنم چون یکم به فارسی مسخره میشه معنیش ولی خب درکل منظور اینه که با این گیت های منطقی میتونیم کار بقیه گیت های منطقی رو بکنیم...
مثلا NAND یکی از این universal هاست که میتونیم باهاش کار گیت های AND , OR , NOT رو بکنیم ، یعنی شما اگه توی طراحی مداراتون گیت NAND اضافه اوردید واسه استفاده بهینه از منابع میتونید بجای استفاده کردن از AND و OR و... از NAND استفاده کنید
اگه نمیدونید NAND چیه ، فرض کنید ترکیب همون AND و NOT هستش :

i0 | i1 | y
0 | 0 | 1
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0

ی همچین چیزیه...
اگه بخوام با پایتون مثال بزنم :
x = 0
y = 1
print(not (x&y))


حالا چطوری میتونیم با NAND ی NOT بسازیم؟
خیلی راحته ، فقط کافیه چیزیو که میخواید NOT کنید رو بدید به دوتا پایه ورودی NAND :)
یعنی فرض کنید ما میخوایم 0 رو NOT کنیم ، بر اساس جدول بالا وقتی دوتا ورودیمون 0 باشه ، خروجی میشه 1
یا فرض کنید میخوایم 1 رو NOT کنیم ، دوباره بر اساس جدول بالا که از NAND داریم اگه دوتا ورودیمون 1 باشه خروجی میشه 0
این یعنی تونستیم با NAND یدونه گیت NOT بسازیم :)

کدش با پایتون :
x = 1
print(not (x&x))


حالا اگه بخوایم AND بسازیم چی؟
اینجا باید یدونه NAND ساده بزاریم و خروجیشو NOT کنیم ، حالا یا با گیت NOT یا دوباره با NAND خودمون NOT رو بسازیم و این کار رو انجام بدیم
فرض کنید دوتا ورودی داریم که یکیش 0 هستش و بعدی 1
وقتی با جدول بالا NAND میشه ، نتیجه میشه 1 و وقتی NOT بشه خروجی میشه 0
این یعنی ما تونستیم ی گیت AND بسازیم ، گیت AND دقیقا برعکس NAND هستش... کلا NAND مخفف NOT AND هستش یعنی ی گیت AND که NOT شده ، پس وقتی ما نتیجه NAND رو NOT کنیم در اصل ی گیت AND ساختیم...
کدش با پایتون :
x = 1
y = 0
print(not (not (x&y)))


حالا چطوری OR بسازیم؟
میایم اول ورودی هارو NOT میکنیم و بعد خروجی حاصل این NOT هارو NAND میکنیم
یعنی چی؟
فرض کنید ورودی داریم 0 و 1
0 رو NOT میکنیم میشه 1 و 1 رو NOT میکنیم میشه 0
حالا 0 و 1 رو ورودی میدیم به NAND و همونطور که طبق جدول بالا میبینید ما 1 رو خروجی میگیریم :)
اگه بخوام کدشو با پایتون بزنم :
x = 0
y = 1
print(not ((not x)&(not y)))


جدول OR و AND هم به شکل زیر هستن میتونید با روش هایی که گفتم تمام حالات رو چک کنید... (میدونم که اکثرتون بلدید ولی خب...)

AND :
i0 | i1 | y
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1

OR :
i0 | i1 | y
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1
❤5
ɪɴ ᴍʏ ʜᴇᴀᴅ
و بالاخره ، بعد از این همه مدت ، QuantoScript ریلیز شد 🚀 ی زبان برنامه نویسی کوچیک ، ساده و قابل فهم که از صفر ساخته شد و حالا نسخه 1.0.0 اش منتشر شده. ازتون دعوت میکنم برید داکیومنتش رو بخونید ، باهاش کد بزنید و امتحانش کنید . اگر جایی به باگ یا مشکلی برخوردید…
نسخه جدید کوانتو اسکریپت منتشر شد
تغییراتی که ایجاد شده و قابلیت هایی که اضافه شده رو میتونید از اینجا بخونید :
https://github.com/PySudo/QuantoScript/blob/main/CHANGELOG.md

کاری به مسائل معماری زبان که مثلا IR اضافه شده و... ندارم ، ی سری فانکشن های داخلی اضافه شدن مثل morph که باهاش میتونید تایپ ها رو به همدیگه تبدیل کنید مثلا string to integer یا float to integer یا...
داکیومنتش خیلی کامل تر و بهتر شده و قدم به قدم میتونید از توی خود داکیومنت سینتکس زبان رو یاد بگیرید
و کلی باگ از زبان دیباگ شده توی نسخه جدید
زبان خیلی بهتر و قابل استفاده تر شده ، من خودم باهاش سر کلاس ی بات تلگرامی طوطی نوشتم😂

from "stdlib/http.qs" import get
from "stdlib/url.qs" import url_encode
from "stdlib/json.qs" import parse
from "stdlib/time.qs" import sleep

TOKEN = 'BOT_TOKEN'

func getUpdates(offset){
url = f'https://api.telegram.org/bot{TOKEN}/getupdates'
if offset != 0 {
url = url + '?offset=' + offset
}
response = get(url)
if len(response['body']) == 0 {
return []
}
updates = []
try {
data = parse(response['body'])
if data['ok'] == true {
updates = data['result']
}
} oops {
updates = []
}
return updates
}

func sendMessage(chat_id, text){
return get(f'https://api.telegram.org/bot{TOKEN}/sendmessage?chat_id={chat_id}&text={url_encode(text)}')
}

offset = 0
startup = getUpdates(-1)
if len(startup) > 0 {
offset = startup[-1]['update_id'] + 1
}

while true {
updates = getUpdates(offset)
if len(updates) == 0 {
sleep(1000)
}
repeat u -> updates {
offset = u['update_id'] + 1
if u.has("message") {
message = u["message"]
if message.has("text") {
sendMessage(message["chat"]["id"], message["text"])
}
}
}
}
❤1
دقیقا اعداد توی کامپیوتر های ما توسط ALU (بخشی از CPU) با همچین الگوریتمی دارن عملیات جمع دو عدد باینری رو انجام میدن :

def HalfAdder(A, B):
return (A^B), (A&B)

def FullAdder(A, B, Cin=0):
Sum1, carry1 = HalfAdder(A, B)
Sum2, carry2 = HalfAdder(Sum1, Cin)
return Sum2, (carry1|carry2)

def RippleAdder(A, B):
result = list()
Cout = int()
for a, b in zip(map(int, reversed(A)), map(int, reversed(B))):
Sum, Cout = FullAdder(a, b, Cout)
result.append(Sum)
return ''.join(map(str, reversed(result))), Cout

Number_1 = '1101'
Number_2 = '1010'
Sum, Cout = RippleAdder(Number_1, Number_2)
print(str(Cout)+Sum)


توسط Half adder میتونیم Full adder رو بسازیم و توسط Full adder میتونیم ی Ripple carry adder بسازیم که بتونه عملیات جمع کردن یک عدد چند بیتی رو انجام بده ، ما اینجا داریم دوتا عدد 4 بیتی رو باهم جمع میکنیم ، عدد 1101 و 1010 یا همون عدد 13 و 10 بر مبنای 10
خروجی این کد میشه 10111 که برابر عدد 23 دهدهی هستش :)

همش هم با عملگر های بیتی انجام شده که داره با استفاده از عملگر های xor و and و or بیتی عملیات جمع کردن رو انجام میده که ما دقیقا همین الگوریتم رو با قطعات الکتریکی میبندیم ، با logic gate...
حالا logic gates چیه؟
خب همون علمگر های منطقی هستن که برای ما میتونن عملیات xor و and و or و nand و nor و و و.... رو انجام بدن ;)
❤‍🔥3
هک کردن کامپیوتر با صدای فن

بله ، شاید در نگاه اول مسخره بنظر برسه ولی واقعاً با صدای فن سیستمتون ، میشه اونو هک کرد💀

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

از این روش برای امنیتی ترین کامپیوتر ها استفاده میشده ، کامپیوتر هایی که حتی به شبکه ای متصل نمیشدن و هیچ پورت ورودی و خروجی‌ای نداشتن! یا به اصطلاح همون Air-gapped computers

به گفته خودشون که میتونن حتی با گرمای ساطع شده توسط کامپیوتر هم دیتا ازش استخراج کنن!
با این روش میتونن بیشتر از 1200 بیت در ساعت ، از سیستم اطلاعات استخراج کنن🫠
و میگن که دارن روی روش هایی کار میکنن که این استخراج داده ها رو بهبود ببخشه و سریع ترش کنه
🔥6❤2❤‍🔥1
ɪɴ ᴍʏ ʜᴇᴀᴅ
هک کردن کامپیوتر با صدای فن بله ، شاید در نگاه اول مسخره بنظر برسه ولی واقعاً با صدای فن سیستمتون ، میشه اونو هک کرد💀 طی چندسال گذشته ی گروه اسرائیلی که روی همین داستان سرقت اطلاعات و... تحقیق میکردن ، ی روشی رو پیدا کردن که میشه از طریق اون فقط با شنود…
دنیای جاسوسی خیلی گستردس ، روش های خیلی زیادی واسه جاسوسی کردن ابداع شدن تو این چندین ساله
مثلاً جدیداً با دید زدن لامپای اتاقتون از راه دور میتونن بفهمن تو اون اتاق دارید چه حرفایی میزنید😂
چطوری ممکنه؟ تُن صداتون روی سیمای لامپ لرزش کوچیکی ایجاد میکنه که به واسطه همون لرزش ها میتونن حدس بزنن دارید چی میگید
فرض کنید چند نفرو گذاشتن توی ی اتاق و لامپشو دید زدن
همه حرفایی که زده شده با الگوی لرزش سیم ها رو ضبط کردن و باهاش ی مدل train کردن ( ی مدل هوش مصنوعی باهاش تمرین دادن )
حالا ما ی هوش مصنوعی داریم که وقتی بهش الگوی لرزش سیم لامپارو بدیم ، بهمون تا حدودی حرفایی که توی اون اتاق داره زده میشه رو میده
اینا داستانای تخیلی توی فیلم نیستن و واقعاً پیاده سازیشون کردن :)
دیگه ببینید چه روش هایی دارن که هنوز لو ندادن که همچین چیزی هست
البته این روشا واسه جاسوسی کردن از افراد عادی استفاده نمیشه پس نیازی نیست نگران باشید...
❤7❤‍🔥1
ɪɴ ᴍʏ ʜᴇᴀᴅ
نسخه جدید کوانتو اسکریپت منتشر شد تغییراتی که ایجاد شده و قابلیت هایی که اضافه شده رو میتونید از اینجا بخونید : https://github.com/PySudo/QuantoScript/blob/main/CHANGELOG.md کاری به مسائل معماری زبان که مثلا IR اضافه شده و... ندارم ، ی سری فانکشن های داخلی…
🚀 نسخه 2.0.0 QuantoScript منتشر شد!
توی این نسخه ، بک اند Native C کامل شده و حالا از تمام سینتکس زبان پشتیبانی میکنه!
یعنی میتونید تمام کدهای QuantoScript رو مستقیماً به کد C تبدیل و کامپایل کنید تا برنامتون با سرعت خیلی بیشتری اجرا بشه
همونطور که توی این ویدیو میتونید ببینید ، عملکرد این بک اند فوق العادست⚡️
🔥1
قبلا ی کد اسمبلی زده بودم که مثلا عدد n رو میگرفت و ی مربع n*n چاپ میکرد با ستاره
ولی خب مشکلش این بود که عدد تک رقمی میگرفت یعنی n شما نمیتونست بیشتر از 9 باشه ، همینکه میزدی روی عدد ، مقدارش سیو میشد و سریع ستاره ها رو چاپ میکرد
اومدم تغییرش دادم گفتم تا زمانی که Enter فشرده نشده همینطوری هی عدد بگیر push کن توی stack
یعنی مثلا میزدی 12 توی اولین خونه استک 0001 ذخیره میشد و توی خونه دوم 0002
بعدش دیگه برای اینکه عدد چند رقمیو از رقمایی که توی استک ذخیره کرده بودم بسازم از ارزش مکانی استفاده کردم مثلا وقتی ورودی 12 بود رقم 1 و 2 جداگونه ذخیره میشدن و تعداد رقما هم توی CX بود بعد برای ساختن عدد نهایی هر رقمو به نسبت جایگاهش حساب کردم مثلا 1 توی جایگاه دهگان ارزشش 10 هست و 2 توی جایگاه یکان ارزشش همون 2 هستش ، پس میشه 10+2=12

فرمول کلیشم اینه که هر رقمو توی 10 به توان جایگاهش ضرب کنیم و حاصلا رو با هم جمع کنیم... چون رقما موقع pop برعکس خارج میشدن باید ترتیبشونو هم توی محاسبه در نظر میگرفتم تا عدد نهایی درست ساخته بشه و داخل ax قرار بگیره...

همین کارای کوچیک 1 ساعت و نیم زمان بردن😂
بریم بخوابیم دیگه
🔥3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
من خیلی رندوم و جدی ساعت 2 صبح درحال اسمبلی کد زدن برای گرفتن همچین خروجی ای درحالی که ساعت 8 باید دانشگاه باشم :
🔥8❤6💯1
کوانتو اسکریپت رسما وارد دنیای وب شد :)

یکی دو روز دیگه ی ویدیو ازش میگیرم و کامل توضیح میدم این قابلیت چیه و چه کاربردهایی داره
🔥6🎉3💯1
اینو ی چک بکنید ، توش ثبت نام بکنید و یکم باهاش کار کنید (دادم AI زده فرانتشو ، خودم بلد نبودم)
خلاصه چک کنید میخوام ی چیز جالب بگم بهتون :
https://fff6-85-203-39-218.ngrok-free.app/
ادیت : down شد
❤2
یکم دیگه کار داره بعدش پوش میکنم روی گیتهاب
خدا شده
❤5