Forwarded from CleverDevs (Mammad)
دوستان اگر در مورد آیندتون جدی هستید و میخواید موفق بشید، به نظرم این کانال میتونه کمکتون بکنه، از دستش ندید 👇🏻:
@hamidreza01
@hamidreza01
Forwarded from Decrypt
Only 0.4% of Pump.fun Traders Have Made More Than $10,000
Pump.fun has made just 294 millionaires so far, with just 0.4% of wallets profiting $10,000 on meme coins.
Pump.fun has made just 294 millionaires so far, with just 0.4% of wallets profiting $10,000 on meme coins.
Forwarded from محتوای آزاد سهراب
آلفا پنجم از میزکار کازمیک عرضه شد.
https://blog.system76.com/post/cosmic-alpha-5-released
@SohrabContents
https://blog.system76.com/post/cosmic-alpha-5-released
@SohrabContents
Forwarded from Geek Alerts
امروز، ۱۰م ژانویه، سالروز تولد دانلد کَنوت است.
دانلد اروین کنوت(Donald Ervin Knuth) متولد ۱۰ ژانویه ۱۹۳۸(امروز ۸۷ ساله شد)، دانشمند علوم رایانه، برنده جایزه تورینگ و استاد افتخاری در دانشگاه استنفورد آمریکا است. او در سن ۳۶ سالگی برنده جایزه تورینگ شد که اینطور او رو تبدیل به جوانترین شخصی کرد که تا به حال به این جایزه که معادل نوبل در علوم کامپیوتر است، رسیدهست. همچنین او برنده جایزههای دیگری همچون جایزه جان فون نویمان، جایزه کیوتو و نشان ملی علوم است.
شهرت او عمدتا مربوط به نویسندگی مجموعه کتابهای The art of computer programming است که یک سری کتاب محبوب در حوزه علوم کامپیوتر است.
او عملاً پایهگذار رشته آنالیز الگوریتمها است و سهم فراوانی در گسترش مبانی نظری شاخههای گوناگون علوم رایانه داشته است. دانلد همچنین طراح سیستم TeX و سامانه طراحی حروف Metafont نیز هست.
https://en.wikipedia.org/wiki/Donald_Knuth
hadi @geekalerts
دانلد اروین کنوت(Donald Ervin Knuth) متولد ۱۰ ژانویه ۱۹۳۸(امروز ۸۷ ساله شد)، دانشمند علوم رایانه، برنده جایزه تورینگ و استاد افتخاری در دانشگاه استنفورد آمریکا است. او در سن ۳۶ سالگی برنده جایزه تورینگ شد که اینطور او رو تبدیل به جوانترین شخصی کرد که تا به حال به این جایزه که معادل نوبل در علوم کامپیوتر است، رسیدهست. همچنین او برنده جایزههای دیگری همچون جایزه جان فون نویمان، جایزه کیوتو و نشان ملی علوم است.
شهرت او عمدتا مربوط به نویسندگی مجموعه کتابهای The art of computer programming است که یک سری کتاب محبوب در حوزه علوم کامپیوتر است.
او عملاً پایهگذار رشته آنالیز الگوریتمها است و سهم فراوانی در گسترش مبانی نظری شاخههای گوناگون علوم رایانه داشته است. دانلد همچنین طراح سیستم TeX و سامانه طراحی حروف Metafont نیز هست.
https://en.wikipedia.org/wiki/Donald_Knuth
hadi @geekalerts
Forwarded from توسعه دهندگان
cleancode.pdf
11.2 MB
Forwarded from code2 - تکنولوژی و فناوری (Mahdi Taleghani)
Forwarded from Linuxor ?
توی کامپیوتر ما یه trade-off بین زمان و حافظه داریم، یعنی باید یکیش رو بر اون یکی ترجیح بدیم مثلا میتونیم بجای اینکه فایل رو مستقیم روی دیسک ذخیره کنیم اونو فشرده کنیم و ذخیره کنیم که فضای کمتری بگیره اما دسترسی به فایل زمان بر تر میشه.
این trade-off به صورت بیولوژیکی توی حیوانات هم وجود داره مثلا گربه از قبل روی DNA و سیستم عصبیشون برنامه ریزی شده که بتونه سریع واکنش نشون بده و نیازی به محاسبه و تصمیمگیری کردن توی اون لحظه نداشته باشه اما انسان برای رسیدن به عکس العمل سریع باید محاسبه و تجزیه و تحلیل انجام بده.
@Linuxor
این trade-off به صورت بیولوژیکی توی حیوانات هم وجود داره مثلا گربه از قبل روی DNA و سیستم عصبیشون برنامه ریزی شده که بتونه سریع واکنش نشون بده و نیازی به محاسبه و تصمیمگیری کردن توی اون لحظه نداشته باشه اما انسان برای رسیدن به عکس العمل سریع باید محاسبه و تجزیه و تحلیل انجام بده.
@Linuxor
Forwarded from Linuxor ?
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱 Raymond)
🔶 بالاخره صندلی رو خریدم.
https://www.digikala.com/product/dkp-14631665/صندلی-گیمینگ-مدل-g555/
قیمت : ۳.۴۵۰.۰۰۰ تومان
دوستان ممنون از راهنمایی 🙏
#متفرقه
@TheRaymondDev
https://www.digikala.com/product/dkp-14631665/صندلی-گیمینگ-مدل-g555/
قیمت : ۳.۴۵۰.۰۰۰ تومان
دوستان ممنون از راهنمایی 🙏
#متفرقه
@TheRaymondDev
Forwarded from Curious Geek ⚡️
ORPC - Open API RPC
این پروژه با هدف سازگارسازی RPC با استاندارد های Open API اومده ،
همون طور که با MTProto میتونیم به RPC تلگرام وصل بشیم و I/O رو به 20 درصد کاهش بدیم ،
میتونه در پیاده سازی API های باز مفید باشه.
🔗 orpc.unnoq.com
🆔 @Hiradsajde
این پروژه با هدف سازگارسازی RPC با استاندارد های Open API اومده ،
همون طور که با MTProto میتونیم به RPC تلگرام وصل بشیم و I/O رو به 20 درصد کاهش بدیم ،
میتونه در پیاده سازی API های باز مفید باشه.
🔗 orpc.unnoq.com
🆔 @Hiradsajde
Forwarded from Gopher Academy
🔵 عنوان مقاله
betteralign 0.6: Make Your Programs Use Less Memory.. Maybe
🟢 خلاصه مقاله:
مقالهای که مورد بحث قرار گرفته، ابزاری را شرح میدهد که برای شناسایی ساختارهای دادهای (structs) در زبان برنامهنویسی Go طراحی شده است. این ابزار، نسخهای تغییر یافته از ابزار fieldalignment استاندارد Go میباشد. تفاوت اصلی آن در این است که فایلهای تولید شده یا فایلهای آزمایشی را نادیده میگیرد، همچنین از بررسی ساختارهای دادهای که دارای فیلدهای ناشناخته یا بدون نام هستند خودداری میکند. به علاوه، این ابزار نظرات موجود در کد را حذف نکرده و دارای بهبودهایی در تجربه توسعهدهندگان (DX improvements) است. هدف اصلی از این ابزار، کمک به برنامهنویسان برای بازسازی و ترتیب مجدد فیلدهای درون ساختارها به گونهای است که حافظه کمتری مصرف کنند و بهینهسازی مموری را تسهیل کند.
🟣لینک مقاله:
https://golangweekly.com/link/163987/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
betteralign 0.6: Make Your Programs Use Less Memory.. Maybe
🟢 خلاصه مقاله:
مقالهای که مورد بحث قرار گرفته، ابزاری را شرح میدهد که برای شناسایی ساختارهای دادهای (structs) در زبان برنامهنویسی Go طراحی شده است. این ابزار، نسخهای تغییر یافته از ابزار fieldalignment استاندارد Go میباشد. تفاوت اصلی آن در این است که فایلهای تولید شده یا فایلهای آزمایشی را نادیده میگیرد، همچنین از بررسی ساختارهای دادهای که دارای فیلدهای ناشناخته یا بدون نام هستند خودداری میکند. به علاوه، این ابزار نظرات موجود در کد را حذف نکرده و دارای بهبودهایی در تجربه توسعهدهندگان (DX improvements) است. هدف اصلی از این ابزار، کمک به برنامهنویسان برای بازسازی و ترتیب مجدد فیلدهای درون ساختارها به گونهای است که حافظه کمتری مصرف کنند و بهینهسازی مموری را تسهیل کند.
🟣لینک مقاله:
https://golangweekly.com/link/163987/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - dkorunic/betteralign: Make your Go programs use less memory (maybe)
Make your Go programs use less memory (maybe). Contribute to dkorunic/betteralign development by creating an account on GitHub.
Forwarded from Anophel | آنوفل
💢 تا حالا به این فکر کردی چجوری میشه یه کاری رو دقیقاً تا یه لحظه مشخص زمانبندی کرد و مطمئن شد که یا تموم میشه یا لغو؟
تو Go و ابزار context میتونی عملیاتهاتو دقیقاً با یه مهلت مشخص (Deadline) کنترل کنی.
مثلاً فرض کن یه کدی داریم که باید یه تابع به اسم ()work رو اجرا کنه. این تابع قراره 100 میلیثانیه طول بکشه. حالا دو تا سناریو داریم:
1️⃣سناریوی اول: مهلت کافیه (150+ میلیثانیه)
اینجا Deadline رو 150 میلیثانیه تعیین میکنیم، یعنی کد ما زمان کافی داره.
func main() { deadline := time.Now().Add(150 * time.Millisecond)
ctx, cancel := context.WithDeadline(context.Background(), deadline) defer cancel()
res, err := execute(ctx, work)
fmt.Println(res, err) // نتیجه درست برمیگرده
}
✅ خروجی:
کد بدون مشکل اجرا میشه چون زمان کافی داشتیم.
2️⃣ سناریوی دوم: مهلت کافی نیست (50+ میلیثانیه)
حالا Deadline رو 50 میلیثانیه میذاریم، اما ()work حداقل 100 میلیثانیه نیاز داره.
func main() { deadline := time.Now().Add(50 * time.Millisecond)
ctx, cancel := context.WithDeadline(context.Background(), deadline) defer cancel()
res, err := execute(ctx, work)
fmt.Println(res, err) // نتیجه لغو میشه
}
❌خروجی:
عملیات لغو میشه (context.Canceled) چون مهلت کافی وجود نداشت.
💠فرق بین WithTimeout و WithDeadline چیه؟
بله WithTimeout یه مقدار زمان مشخص میگیره (مثلاً 5 ثانیه)، اما WithDeadline دقیقاً یه زمان مشخص (مثلاً 23:00:05).
جالبیش اینه که WithTimeout خودش از WithDeadline استفاده میکنه:
func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {
return WithDeadline(parent, time.Now().Add(timeout))
}
�چچطوری بفهمیم کانتکست Deadline داره؟
با متد Deadline، میتونیم زمان مشخص شده رو ببینیم.
اگه کانتکست با WithTimeout یا WithDeadline ساخته شده باشه، یه زمان مشخص میده.
اما اگه با WithCancel یا Background ساخته شده باشه، میگه نه!
ctx, _ := context.WithCancel(context.Background())
deadline, ok := ctx.Deadline()
fmt.Println(deadline, ok) // نتیجه: false
ctx = context.Background()
deadline, ok = ctx.Deadline()
fmt.Println(deadline, ok) // باز هم false
⭐️اگر تجربه ای ازش داری،تجربههات رو برامون بگو!
#گو #گولنگ #Go #Golang
تو Go و ابزار context میتونی عملیاتهاتو دقیقاً با یه مهلت مشخص (Deadline) کنترل کنی.
مثلاً فرض کن یه کدی داریم که باید یه تابع به اسم ()work رو اجرا کنه. این تابع قراره 100 میلیثانیه طول بکشه. حالا دو تا سناریو داریم:
1️⃣سناریوی اول: مهلت کافیه (150+ میلیثانیه)
اینجا Deadline رو 150 میلیثانیه تعیین میکنیم، یعنی کد ما زمان کافی داره.
func main() { deadline := time.Now().Add(150 * time.Millisecond)
ctx, cancel := context.WithDeadline(context.Background(), deadline) defer cancel()
res, err := execute(ctx, work)
fmt.Println(res, err) // نتیجه درست برمیگرده
}
✅ خروجی:
کد بدون مشکل اجرا میشه چون زمان کافی داشتیم.
2️⃣ سناریوی دوم: مهلت کافی نیست (50+ میلیثانیه)
حالا Deadline رو 50 میلیثانیه میذاریم، اما ()work حداقل 100 میلیثانیه نیاز داره.
func main() { deadline := time.Now().Add(50 * time.Millisecond)
ctx, cancel := context.WithDeadline(context.Background(), deadline) defer cancel()
res, err := execute(ctx, work)
fmt.Println(res, err) // نتیجه لغو میشه
}
❌خروجی:
عملیات لغو میشه (context.Canceled) چون مهلت کافی وجود نداشت.
💠فرق بین WithTimeout و WithDeadline چیه؟
بله WithTimeout یه مقدار زمان مشخص میگیره (مثلاً 5 ثانیه)، اما WithDeadline دقیقاً یه زمان مشخص (مثلاً 23:00:05).
جالبیش اینه که WithTimeout خودش از WithDeadline استفاده میکنه:
func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {
return WithDeadline(parent, time.Now().Add(timeout))
}
�چچطوری بفهمیم کانتکست Deadline داره؟
با متد Deadline، میتونیم زمان مشخص شده رو ببینیم.
اگه کانتکست با WithTimeout یا WithDeadline ساخته شده باشه، یه زمان مشخص میده.
اما اگه با WithCancel یا Background ساخته شده باشه، میگه نه!
ctx, _ := context.WithCancel(context.Background())
deadline, ok := ctx.Deadline()
fmt.Println(deadline, ok) // نتیجه: false
ctx = context.Background()
deadline, ok = ctx.Deadline()
fmt.Println(deadline, ok) // باز هم false
⭐️اگر تجربه ای ازش داری،تجربههات رو برامون بگو!
#گو #گولنگ #Go #Golang
Forwarded from Anophel | آنوفل
مثلاً فرض کن یه کدی داریم که باید یه تابع به اسم ()work رو اجرا کنه. این تابع قراره 100 میلیثانیه طول بکشه. حالا دو تا سناریو داریم:
اینجا Deadline رو 150 میلیثانیه تعیین میکنیم، یعنی کد ما زمان کافی داره.
func main() {
deadline := time.Now().Add(150 * time.Millisecond)
ctx, cancel := context.WithDeadline(context.Background(), deadline)
defer cancel()
res, err := execute(ctx, work)
fmt.Println(res, err) // نتیجه درست برمیگرده
}کد بدون مشکل اجرا میشه چون زمان کافی داشتیم.
حالا Deadline رو 50 میلیثانیه میذاریم، اما ()work حداقل 100 میلیثانیه نیاز داره.
func main() {
deadline := time.Now().Add(50 * time.Millisecond)
ctx, cancel := context.WithDeadline(context.Background(), deadline)
defer cancel()
res, err := execute(ctx, work)
fmt.Println(res, err) // نتیجه لغو میشه
}
عملیات لغو میشه (
context.Canceled) چون مهلت کافی وجود نداشت. ithTimeout و WithDeadline چیه؟بله WithTimeout یه مقدار زمان مشخص میگیره (مثلاً 5 ثانیه)، اماWithDeadline دقیقاً یه زمان مشخص (مثلاً 23:00:05).
جالبیش اینه که WithTimeout خودش از WithDeadline استفاده میکنه:
func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {
return WithDeadline(parent, time.Now().Add(timeout))
}با متد Deadline، میتونیم زمان مشخص شده رو ببینیم.
اگه کانتکست با WithTimeout یا WithDeadline شده باشه، یه زمان مشخص میده.
اما اگه با WithCancel یا Background ساخته شده باشه، میگه نه!
ctx, _ := context.WithCancel(context.Background())
deadline, ok := ctx.Deadline()
fmt.Println(deadline, ok) // نتیجه: false
ctx = context.Background()
deadline, ok = ctx.Deadline()
fmt.Println(deadline, ok) // باز هم false
#گو #گولنگ #Go #Golang
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Syntax | سینتکس (Daimon)
سوال درباره داکر و داکر کمپوز
سوال:
فرض کنید ما چند سرویس داریم که در یک پروژه با استفاده از Docker Compose مدیریت میشوند. این سرویسها نیازی به ارتباط با خارج از شبکه داخلی داکر (مانند شبکه هاست یا اینترنت) ندارند و فقط باید بهصورت داخلی با یکدیگر ارتباط برقرار کنند. حتی اگر به اشتباه پورتهایی برای آنها در فایل Docker Compose تعریف شود (مانند
چگونه میتوانیم چنین محدودیتی اعمال کنیم و اطمینان حاصل کنیم که سرویسها کاملاً ایزوله هستند و فقط در شبکه داخلی داکر قابل دسترسیاند؟
(جواب و راه حلی پیشنهادی پست بعدی گذاشته میشه)
#docker #docker_compose
@Syntax_fa
سوال:
فرض کنید ما چند سرویس داریم که در یک پروژه با استفاده از Docker Compose مدیریت میشوند. این سرویسها نیازی به ارتباط با خارج از شبکه داخلی داکر (مانند شبکه هاست یا اینترنت) ندارند و فقط باید بهصورت داخلی با یکدیگر ارتباط برقرار کنند. حتی اگر به اشتباه پورتهایی برای آنها در فایل Docker Compose تعریف شود (مانند
ports)، نباید این پورتها از بیرون شبکه داکر در دسترس باشند. چگونه میتوانیم چنین محدودیتی اعمال کنیم و اطمینان حاصل کنیم که سرویسها کاملاً ایزوله هستند و فقط در شبکه داخلی داکر قابل دسترسیاند؟
(جواب و راه حلی پیشنهادی پست بعدی گذاشته میشه)
#docker #docker_compose
@Syntax_fa
👍1
Forwarded from Syntax | سینتکس (Daimon)
داکیومنت داکر اینو میگه:
internal
By default, Compose provides external connectivity to networks. internal, when set to true, lets you create an externally isolated network.
برای حل این مسئله، میتوانیم از شبکههای داخلی (internal network) در Docker Compose استفاده کنیم. شبکه داخلی یک شبکهای است که داکر فراهم میکند و ارتباط سرویسها فقط در داخل همان شبکه امکانپذیر است. به این ترتیب، سرویسها کاملاً ایزوله میشوند و هیچ ارتباطی با خارج از شبکه داکر (مانند هاست یا اینترنت) برقرار نمیکنند، حتی اگر به اشتباه پورتهایی در فایل Compose تعریف شود.
1. ایجاد شبکه داخلی در فایل `docker-compose.yml`:
در فایل Docker Compose، میتوانید یک شبکه داخلی تعریف کنید. در این شبکه، سرویسها فقط میتوانند با یکدیگر ارتباط برقرار کنند و هیچ ارتباطی با شبکه هاست یا اینترنت ندارند.
مثال:
توضیحات:
- در بخش
- این شبکه فقط برای ارتباط داخلی بین سرویسهای تعریفشده در Docker Compose در دسترس است.
- هیچ پورت خارجی (حتی اگر در بخش
#docker #docker_compose
@Syntax_fa
internal
By default, Compose provides external connectivity to networks. internal, when set to true, lets you create an externally isolated network.
برای حل این مسئله، میتوانیم از شبکههای داخلی (internal network) در Docker Compose استفاده کنیم. شبکه داخلی یک شبکهای است که داکر فراهم میکند و ارتباط سرویسها فقط در داخل همان شبکه امکانپذیر است. به این ترتیب، سرویسها کاملاً ایزوله میشوند و هیچ ارتباطی با خارج از شبکه داکر (مانند هاست یا اینترنت) برقرار نمیکنند، حتی اگر به اشتباه پورتهایی در فایل Compose تعریف شود.
1. ایجاد شبکه داخلی در فایل `docker-compose.yml`:
در فایل Docker Compose، میتوانید یک شبکه داخلی تعریف کنید. در این شبکه، سرویسها فقط میتوانند با یکدیگر ارتباط برقرار کنند و هیچ ارتباطی با شبکه هاست یا اینترنت ندارند.
مثال:
version: '3.9'
services:
service1:
image: my-image-1
networks:
- internal_network
service2:
image: my-image-2
networks:
- internal_network
networks:
internal_network:
internal: true
توضیحات:
- در بخش
networks`، یک شبکه به نام `internal_network تعریف شده و ویژگی internal: true به آن اضافه شده است.- این شبکه فقط برای ارتباط داخلی بین سرویسهای تعریفشده در Docker Compose در دسترس است.
- هیچ پورت خارجی (حتی اگر در بخش
ports تعریف شده باشد) از خارج شبکه داکر قابل دسترسی نخواهد بود.#docker #docker_compose
@Syntax_fa
Docker Documentation
Networks
Learn how to configure and control networks using the top-level networks element in Docker Compose.
👍1
Forwarded from 🎄 یک برنامه نویس تنبل ( MΞ)
🔸متاسفانه چند روز گذشته، گوگل بدون اخطار قبلی اقدام به بستن اکانت آنالیتیکس (Google Analytics) ایرانیها کرده.
این ایمیل برای منم اومد و دیگه هیچ دسترسی به دیتاهای قبلی ندارم.
ظاهرا به صرف ایرانی بودن مالک اکانت،حتی اگر سرورخارج از ایران و دامنه غیر .ir باشد باز این اتفاق میافته.
@TheRaymondDev
Forwarded from 🎄 DevTwitter | توییت برنامه نویسی
تا حالا شده که بخواین خیلی سریع استایل کدهاتون رو مرتب کنید ؟
اینجاست که Laravel Pint به کمکتون میاد این پکیج از ابتدا توی پروژه لاراول هست و نیازی نیست نصب کنیدش و کانفیگ خاصی هم نمیخواد
میتونید با اجرا کردن یه دستور کار رو در بیارین :
./vendor/bin/pint
دیدن خطاهای استایلی فایل ها بدون هیچ تغییری در کد :
./vendor/bin/pint --test
دیدن خطاهای استایلی فایل ها با جزئیات بیشتر
./vendor/bin/pint --test -v
@DevTwitter | <abolfazl hadipour/>
اینجاست که Laravel Pint به کمکتون میاد این پکیج از ابتدا توی پروژه لاراول هست و نیازی نیست نصب کنیدش و کانفیگ خاصی هم نمیخواد
میتونید با اجرا کردن یه دستور کار رو در بیارین :
./vendor/bin/pint
دیدن خطاهای استایلی فایل ها بدون هیچ تغییری در کد :
./vendor/bin/pint --test
دیدن خطاهای استایلی فایل ها با جزئیات بیشتر
./vendor/bin/pint --test -v
@DevTwitter | <abolfazl hadipour/>
Forwarded from PhiloLearn | فیلولرن
🔐 امضای دیجیتال یکی از مهمترین ابزارهای امنیتی در دنیای تکنولوژی هستش که برای اثبات هویت و تایید اصالت دادهها استفاده میشه. این تکنولوژی از الگوریتمهای رمزنگاری نامتقارن استفاده میکنه و به کمک یک جفت کلید (کلید عمومی و خصوصی) کار میکنه.
📝 وقتی یک فایل یا پیام رو امضا میکنیم، اول یک هش از محتوا ساخته میشه. این هش با کلید خصوصی فرستنده رمز میشه و به عنوان امضای دیجیتال به پیام اصلی اضافه میشه. گیرنده با استفاده از کلید عمومی فرستنده میتونه امضا رو verify کنه و مطمئن بشه که پیام واقعاً توسط فرستنده ارسال شده و در مسیر تغییر نکرده.
🌐 یکی از کاربردهای مهم امضای دیجیتال در SSL/TLS هستش. وقتی به یک وبسایت HTTPS متصل میشیم، سرور گواهینامهای رو ارائه میده که توسط یک Certificate Authority معتبر امضا شده. مرورگر با بررسی این امضا میتونه از هویت سرور مطمئن بشه.
⛓️ در حوزه بلاکچین هم امضای دیجیتال نقش کلیدی داره. هر تراکنش با کلید خصوصی کیف پول امضا میشه تا از هویت فرستنده و تمامیت تراکنش اطمینان حاصل بشه. الگوریتم ECDSA که در بیتکوین استفاده میشه یکی از معروفترین الگوریتمهای امضای دیجیتال هستش.
🛡 از نظر تکنیکی، امضای دیجیتال باید چند ویژگی مهم داشته باشه:
- غیرقابل جعل باشه: فقط دارنده کلید خصوصی بتونه امضا تولید کنه
- غیرقابل انکار باشه: فرستنده نتونه امضای خودش رو انکار کنه
- غیرقابل استفاده مجدد باشه: نشه امضای یک پیام رو برای پیام دیگهای استفاده کرد
- غیرقابل تغییر باشه: کوچکترین تغییر در پیام باعث نامعتبر شدن امضا بشه
🔒 RSA و ECC دو تا از پرکاربردترین الگوریتمهای رمزنگاری برای امضای دیجیتال هستن. RSA از اعداد اول بزرگ استفاده میکنه و امنیتش به سختی فاکتورگیری وابسته هستش. ECC از منحنیهای بیضوی استفاده میکنه و با کلیدهای کوچکتر امنیت مشابهی ایجاد میکنه.
⚡️ در سیستمهای مدرن امضای دیجیتال معمولاً با تابعهای هش مثل SHA-256 یا SHA-3 ترکیب میشه. این کار سرعت امضا رو بالا میبره چون به جای امضای کل پیام، فقط هش اون امضا میشه.
#DigitalSignature #CryptographyTechnology #Blockchain #امنیت_اطلاعات #امضای_دیجیتال
خوشحال میشم اگر مشکلی در متن مشاهده کردید برای من توی کامنت ها بنویسید تا تصحیح کنم.
💙💙 @PhiloLearn 💙💙
📝 وقتی یک فایل یا پیام رو امضا میکنیم، اول یک هش از محتوا ساخته میشه. این هش با کلید خصوصی فرستنده رمز میشه و به عنوان امضای دیجیتال به پیام اصلی اضافه میشه. گیرنده با استفاده از کلید عمومی فرستنده میتونه امضا رو verify کنه و مطمئن بشه که پیام واقعاً توسط فرستنده ارسال شده و در مسیر تغییر نکرده.
🌐 یکی از کاربردهای مهم امضای دیجیتال در SSL/TLS هستش. وقتی به یک وبسایت HTTPS متصل میشیم، سرور گواهینامهای رو ارائه میده که توسط یک Certificate Authority معتبر امضا شده. مرورگر با بررسی این امضا میتونه از هویت سرور مطمئن بشه.
⛓️ در حوزه بلاکچین هم امضای دیجیتال نقش کلیدی داره. هر تراکنش با کلید خصوصی کیف پول امضا میشه تا از هویت فرستنده و تمامیت تراکنش اطمینان حاصل بشه. الگوریتم ECDSA که در بیتکوین استفاده میشه یکی از معروفترین الگوریتمهای امضای دیجیتال هستش.
🛡 از نظر تکنیکی، امضای دیجیتال باید چند ویژگی مهم داشته باشه:
- غیرقابل جعل باشه: فقط دارنده کلید خصوصی بتونه امضا تولید کنه
- غیرقابل انکار باشه: فرستنده نتونه امضای خودش رو انکار کنه
- غیرقابل استفاده مجدد باشه: نشه امضای یک پیام رو برای پیام دیگهای استفاده کرد
- غیرقابل تغییر باشه: کوچکترین تغییر در پیام باعث نامعتبر شدن امضا بشه
🔒 RSA و ECC دو تا از پرکاربردترین الگوریتمهای رمزنگاری برای امضای دیجیتال هستن. RSA از اعداد اول بزرگ استفاده میکنه و امنیتش به سختی فاکتورگیری وابسته هستش. ECC از منحنیهای بیضوی استفاده میکنه و با کلیدهای کوچکتر امنیت مشابهی ایجاد میکنه.
⚡️ در سیستمهای مدرن امضای دیجیتال معمولاً با تابعهای هش مثل SHA-256 یا SHA-3 ترکیب میشه. این کار سرعت امضا رو بالا میبره چون به جای امضای کل پیام، فقط هش اون امضا میشه.
#DigitalSignature #CryptographyTechnology #Blockchain #امنیت_اطلاعات #امضای_دیجیتال
خوشحال میشم اگر مشکلی در متن مشاهده کردید برای من توی کامنت ها بنویسید تا تصحیح کنم.
💙💙 @PhiloLearn 💙💙