ʜᴇʀᴏ ᴇxᴘᴇʀᴛ | کارشناس قهرمان – Telegram
ʜᴇʀᴏ ᴇxᴘᴇʀᴛ | کارشناس قهرمان
8.52K subscribers
229 photos
6 videos
7 files
237 links
🏅تبلیغات 👈🏻 @ExpertsAds
Download Telegram
VsCode-Keyboard-Shortcuts.pdf
741.7 KB
👨‍💻 کلید های میانبر VsCode

📄 کاربرد : کد نویسی سریعتر

◽️ فرمت فایل : PDF

🌎 زبان : فارسی

😀 @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩 ماژول در برنامه نویسی چیست ؟

ماژول {Module} یک واحد مجزا نسبت به نرم افزار و سخت افزار به حساب می‌آید که بخشی از برنامه است. یک برنامه در سطح سازمانی امکان دارد چندین ماژول مختلف داشته باشد و هر ماژول عملیات منحصر به فرد و مجزایی را انجام دهد. ماژول‌ها وظیفه برنامه نویسان را ساده می‌کنند و به برنامه نویس این امکان را می‌دهند تا فقط روی یک بخش از برنامه و عملیات آن تمرکز داشته باشند. آن‌ها می‌توانند دارای متدها و توابع مرتبط با یکدیگر باشند. ماژول‌ها معمولاً به وسیله رابط‌ها در برنامه‌های نرم افزاری مورد استفاده قرار می‌گیرند. برای مثال سیستم‌ها، اپلیکیشن‌ها و یا یک نرم افزار برنامه‌ ریزی منابع انسانی از چندین ماژول بزرگ برای وظایفی از جمله امور مالی، زنجیره تامین، حقوق و سایر موارد استفاده می‌کنند که ممکن است همراه با شخصی سازی یا بدون آن پیاده‌سازی شوند.

❤️ @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻 زبان کاتلین (Kotlin) چیست ؟

کاتلین یک زبان برنامه‌نویسی متن باز و رشد سریع است که بر روی ماشین مجازی جاوا اجرا می‌شود. این زبان به عنوان یک جایگزین مدرن برای جاوا (Java) مطرح شده و برای توسعه برنامه‌های اندروید و همچنین برنامه‌نویسی در پلتفرم جاوا از آن استفاده می‌شود. کاتلین برای قابلیت‌هایی مانند کد کوتاه‌تر، کد تمیزتر، امکاناتی برای جلوگیری از خطاهای متداول، و پشتیبانی از برنامه‌نویسی مبتنی بر توابع (Functional) معروف است.

مزایا کاتلین (Kotlin)

🗣کمترین خطا و امنیت بالا
🗣کد کوتاه و خوانا
🗣تعامل با جاوا

😀 معایب کاتلین (Kotlin)

🗣پیچیدگی‌های ابزارها و اکوسیستم
🗣سرعت کمتر کامپایلر
🗣وابستگی به جاوا
🗣سرعت کم

🌐 @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩 پروتکل تی سی پی (TCP) چیست؟

پروتکل (Transmission Control Protocol) یک استانداردی در حوزه اینترنت می‌باشد که باعث برقراری ارتباط و حفظ آن اتصال میشود ،این پروتکل تا زمانی که یک اتصال بین مبدا و مقصد ایجاد شده و بسته رد و بدل میشود آنها را نگهداری میکند. برای مثال وقتی ما در دنیای اینترنت یک درخواست به سرور ارسال میکنیم مانند سرچ کردن، وب سرور برای پاسخ به درخواست ما از پروتکل HTTP استفاده میکند و اتصال برقرار میشود و صفحه مورد نظر ما برای ما ارسال میشود. نحوه کارکرد این پروتکل به این شکل است که اول درخواست مارا به تکه ها و بسته های کوچکتر تقسیم میکند و سپس طبق اولویت های خود، هر کدام از بسته ها را به لایه IP ارسال میکند. در این میان ممکن است بسته های تکه تکه شده دارای آدرس مبدا و مقصد یکسان باشند اما با مسیریابی مختلف به مقصد ارسال شوند. لایه TCP منتظر دریافت تمام و کمال بسته ها میماند و آنها را تایید میکند و در این صورت اگر بسته ای در این وسط ارسال نشده باشد دوباره از سمت فرستنده دریافت میشود. این پروتکل از نظر امنیت اطلاعات ارسالی هرچند تامین میشود و نگرانی در مورد گم شدن بسته وجود ندارد اما سرعت ارسال و دریافت را کاهش میدهد.

@HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
⚫️ زبان برنامه نویسی Golang چیست ؟
🎲🎲🎲🎲🎲🎲🎲🎲🎲🎲🎲
گولنگ یا Go یک زبان برنامه‌نویسی متن باز و کامپایلر شده است که توسط گوگل توسعه داده شده است. این زبان برنامه‌نویسی به عنوان یک زبان ساختاری با قابلیت‌ های مدیریت حافظه و هم‌چنین همزمانی بهبود می‌بخشد و معمولاً برای ساخت سرویس‌ های وب، سیستم‌ های توزیع‌شده و برنامه‌ های شبکه استفاده می‌شود. از ویژگی‌های آن می‌توان به سادگی و خوانایی کد، سرعت اجرا و پشتیبانی از همزمانی اشاره کرد.

🔼 مزایا Go

🎲سادگی
🎲عملکرد بالا
🎲خوانا بودن کد
🎲کتابخانه های استاندارد و قوی

🔽 معایب Go

🎲 کمبود الگو های برنامه نویسی
🎲 کمبود برخی از ویژگی های پیشرفته
🎲 محدودیت های بالا در زمینه توسعه وب
🎲🎲🎲🎲🎲🎲🎲🎲🎲🎲🎲
✈️ @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 تکه کد تست سرعت برای ربات تلگرام
⚠️ توجه کنید ک این تکه کد برای ربات هایی که با زبان 🎲 توسعه داده شده‌اند مناسب میباشد.
elseif ($text == "تست سرعت"){
bot('sendMessage',[
'chat_id'=>$chat_id,
'text'=>"⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️0%",
]);
sleep(1);
bot('editMessageText',[
'chat_id'=>$chat_id, 'message_id'=>$message_id, 'text'=>"⬛️⬜️⬜️⬜️⬜️⬜️⬜️⬜️10%",
]);
sleep(1);
bot('editMessageText',[
'chat_id'=>$chat_id, 'message_id'=>$message_id + 1, 'text'=>"⬛️⬛️⬜️⬜️⬜️⬜️⬜️⬜️20%",
]);
sleep(1);
bot('editMessageText',[
'chat_id'=>$chat_id, 'message_id'=>$message_id + 1, 'text'=>"⬛️⬛️⬛️⬜️⬜️⬜️⬜️⬜️30%",
]);
sleep(1);
bot('editMessageText',[
'chat_id'=>$chat_id, 'message_id'=>$message_id + 1, 'text'=>"⬛️⬛️⬛️🔳⬜️⬜️⬜️⬜️40%",
]);
sleep(1);
bot('editMessageText',[
'chat_id'=>$chat_id, 'message_id'=>$message_id + 1, 'text'=>"⬛️⬛️⬛️⬛️⬜️⬜️⬜️⬜️50%",
]);
sleep(1);
bot('editMessageText',[
'chat_id'=>$chat_id, 'message_id'=>$message_id + 1, 'text'=>"⬛️⬛️⬛️⬛️⬛️⬜️⬜️⬜️60%",
]);
sleep(1);
bot('editMessageText',[
'chat_id'=>$chat_id, 'message_id'=>$message_id + 1, 'text'=>"⬛️⬛️⬛️⬛️⬛️▪️⬜️⬜️70%",
]);
sleep(1);
bot('editMessageText',[
'chat_id'=>$chat_id, 'message_id'=>$message_id + 1, 'text'=>"⬛️⬛️⬛️⬛️⬛️⬛️⬜️⬜️80%",
]);
sleep(1);
bot('editMessageText',[
'chat_id'=>$chat_id, 'message_id'=>$message_id + 1, 'text'=>"⬛️⬛️⬛️⬛️⬛️⬛️⬛️⬜️90%",
]);
sleep(1);
bot('editMessageText',[
'chat_id'=>$chat_id, 'message_id'=>$message_id + 1, 'text'=>"⬛️⬛️⬛️⬛️⬛️⬛️⬛️⬛️100%",
]);
sleep(1);
bot('editMessageText',[
'chat_id'=>$chat_id, 'message_id'=>$message_id + 1,
'text'=>"اینم تست سرعت ما",
]);
}

🌐 @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩پروتکل یو دی پی (UDP) چیست؟

پروتکل (User datagram protocol) در لایه 4 انتقال اطلاعات مورد بررسی قرار میگیرد. این لایه وظیفه دریافت اطلاعات از لایه کاربر مبدا و ارسال و همچنین تحویل آن به لایه کاربر مقصد را برعهده دارد. این پروتکل با شماره پورت 17 با پروتکل آیپی ارتباط برقرار کرده و بسته هارا از این پورت انتقال میدهد. این پروتکل یک مدل بسیار ساده از انتقال است که بدون ایجاد ارتباط (TCP) عمل میکند و این کار باعث میشود برنامه در معرض خطر هایی قرار بگیرد. در پروتکل یو دی پی از دست رفتن اطلاعات ارسالی از سمت فرستنده برای ما اهمیت چندانی ندارد و فقط ارسال شدن و زمانبندی تحویل بسته مهم است. این پروتکل نیازی به تصحیح خطاهای بسته های ارسالی ندارد اما از طرفی برای افزایش امنیت اطلاعات ارسالی، از سیستم رمزنگاری چک سآم (CheckSum) برای بررسی بدون خطا بودن شماره پورت ها و همچنین داده ها استفاده میکند. این پروتکل هرچند از نظر امنیت اطلاعات ممکن است در معرض خطر باشد اما از نظر زمانبندی ارسال و دریافت بسته ها مناسب می‌باشد.

✈️ @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩 جیسون JSON چیست ؟
〽️〽️〽️〽️〽️〽️〽️〽️〽️〽️〽️
کلمه JSON به معنای نمادگذاری اشیاء در جاوا‌اسکریپت است که امروزه در دنیای کامپیوتر بیشتر مورد استفاده قرار میگیرد. جیسون فرمتی برای ذخیره کردن اطلاعات و همچنین اشتراک گذاری آنها است. داده ها در جیسون به صورت کلید و مقدار ذخیره میشوند که از این نظر خوانایی بسیار بالایی برای ما دارد. به این صورت که در ساختار جیسون، ما با استفاده از دو نقطه آنها را از هم جدا میکنیم و کلید و مقدار را داخل دابل کوتیشن[ " ] قرار میدهیم. کلید در سمت چپ قرار گرفته و مقدار آن در سمت راست قرار میگیرد. مقادیر میتواند به شکل رشته، آرایه، شماره، اشیا، بولین و خالی باشد. در سطح های بالاتر، مقادیر میتوانند به صورت داده های آرایه ای تودرتو و اشیای تودرتو ساخته شوند. این ساختار پیچیده تری دارد که در آنها میتوان به یک کلید، مقدار آرایه ای از داده ها یا شیء ای از داده ها را در خود جا دهد. قبل از اینکه جیسون به وجود بیاید از XML استفاده میشد اما به دلیل ساختار آسان جیسون و همچنین کم حجم بودن آن، استفاده بیشتری از آن شد و میتوان گفت جایگزین XML شد.
یک مثال ساده جیسون [Json]🔤
{
"FirstName" : "Hero",
"LastName" : "Expert",
"Age" : "10",
}

〽️〽️〽️〽️〽️〽️〽️〽️〽️〽️〽️
💬 @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩 ایکس ام ال XML چیست ؟
🔄🔄🔄🔄🔄🔄🔄🔄🔄🔄🔄
واژه XML به معنی زبان نشانه‌گذاری گسترش‌پذیر است. ایکس ام ال یک زبان نشانه گذاری است که همانند جیسون فرمتی برای ذخیره کردن اطلاعات و همچنین اشتراک گذاری آنها است. این زبان بدون قالب بندی خاصی اطلاعات را در خود ذخیره میکند و این باعث میشود تا در هر سیستمی قابل حمل باشد. ساختار این زبان همانند زبان نشانه گذاری HTML، مقادیر در بین دو تگ قرار میگیرند که تگ ها نیز به عنوان کلید آن مقدار به کار میروند. بر خلاف اچ تی ام ال که از تگ های آماده استفاده میکند، در این زبان خود توصیف‌گر هستند و یک قالب و فُرمت آزاد به حساب می‌آیند.
یک مثال ساده ایکس ام ال [XML]🔤
<?xml version = "1.0"?>
<user>
<name>Ali</name>
<age>28</age>
<city>Tehran</city>
</user>

🔄🔄🔄🔄🔄🔄🔄🔄🔄🔄🔄
✉️ @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 تکه کد بررسی قدرت و کیفیت رمزعبور
⚠️ این تکه کد به زبان 🎲 نوشته شده است.

function passStrength($passWord){
$hero = 0;
$size = strlen($passWord);
foreach(count_chars($passWord,1) as $v){
$p = $v / $size;
$hero -= $p * log($p) / log(2);
}
$strength = ($hero / 3.2) * 100;
if($strength > 100){
$strength = 100;
}
if (strlen($passWord) < 8) {
return "رمزعبور حداقل باید 8 کاراکتر باشد";
}
if (!preg_match("#[0-9]+#", $passWord)){
return "حداقل باید یک عدد داخل رمزعبور باشد";
}
if (!preg_match("#[A-Z]+#", $passWord)) {
return "حداقل باید یک حرف انگلیسی بزرگ داخل رمزعبور باشد";
}
if(!preg_match("/[\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\>\=\?\@\[\]\{\}\^\_\\~\]\+\$]/i", $passWord)){
return "حداقل باید یک کاراکتر خاص داخل رمزعبور باشد";
}
return number_format($strength) . " : قدرت رمزعبور";
}
echo passStrength('[es51tP}a*s1');
# 100 : قدرت رمزعبور
echo passStrength('pas_Test0');
# 92 : قدرت رمزعبور

💙 @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩 پایگاه داده Oracle چیست؟

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

🔼مزایای اوراکل [ Oracle ]

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

🔽معایب اوراکل [ Oracle ]

هزینه بالا
پیچیدگی بالا
مدیریت سخت


✈️ @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩 فریم ورک Cake PHP چیست؟
〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️
کیک پی اچ پی یکی از فریم‌ورک های PHP است. این فریمورک قابلیت گسترش سريع برنامه را دارد که بر پایه و بیس معماری MVC ایجاد شده است. یکی از ویژگی های این فریمورک این است که نیاز به استفاده از دستورات پیچیده برنامه نویسی مانند آرایه ها و توابع وکلاسها نیست. این فریم‌ورک برای پیاده سازی برنامه های تحت وب فقط به یک پایگاه داده نیاز دارد که همه صفحات و روابط و کنترل کننده ها بر اساس سوالاتی که توسط این فریم ورک از کاربر پرسیده میشود، به راحتی و بدون دخالت کاربر ساخته میشود.

⬆️مزایای کیک پی اچ پی [ CakePHP ]

سرعت توسعه بالا
انعطاف پذیری بالا
رایگان و متن باز بودن
پشتیبانی از معماری MVC

⬇️معایب کیک پی اچ پی [ CakePHP ]

🔹سرعت کار کم
🔹پیچیدگی برای شروع
🔹استفاده از کدهای تکراری

〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️
🔮 @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩پایگاه داده MongoDB چیست؟

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

⬆️مزایای مونگو [ Mongo ]

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

⬇️معایب مونگو [ Mongo ]

🔹عدم استفاده از رابطه‌ها
🔹عدم ارتباط با پایگاه های داده دیگر
🔹عدم سازگاری با تراکنش‌های ACID


@HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
💻کامپوننت [Component] چیست؟

همزمان با پیشرفت چشمگیر برنامه نویسی کلمه کامپوننت را زیاد شنیده ایم. کامپوننت به معنای جزعی کوچک از یک شی بزرگ است. در برنامه نویسی نیز یعنی قسمت کوچکی از کل یک پروژه، کامپوننت شامل تابعی خاص یا گروهی از توابع که با یکدیگر در ارتباط اند، تشکیل میشود. این قابلیت به برنامه نویس کمک میکند تا در صورت بروز مشکل در یک بخش از پروژه آن بخش از کد های خود را مرور کرده و نسبت به رفع خطای آن بخش اقدام می کند.
علاوه بر آن ممکن است یک قابلیت جدید بخواهد به بخشی از کد های خود که نوشته است اضافه کند، در این صورت دوباره کامپوننت مورد نظر را پیدا کرده و آن را تغییر می دهد. کامپوننت‌ها معمولاً به گونه‌ای طراحی می‌شوند که کمترین وابستگی را با کامپوننت‌های دیگر داشته باشند و به صورت مستقل به فعالیت خود ادامه می‌دهند.

ویژگی کامپوننت [ Component ]

🔊سازماندهی بالا
🔊افزایش قابلیت تست
🔊قابلیت استفاده مجدد
🔊افزایش سرعت توسعه


🔮 @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩زبان برنامه نویسی پرل [Perl] چیست؟

پرل یک زبان برنامه‌نویسی قدرتمند، چندمنظوره و سطح بالا است که به عنوان "زبان خوش‌خط" شناخته می‌شود. این زبان، با قدرت پردازش رشته‌ها و عبارات منظم، برای بسیاری از برنامه‌نویسان یک انتخاب محبوب است.یکی از ویژگی‌های این زبان، انعطاف‌پذیری آن است که قابلیت پشتیبانی از ساختارهای مختلف برنامه‌نویسی را دارد، از برنامه‌نویسی شی گرا تا برنامه‌نویسی روی رشته‌ها، همچنین برای کاربردهای مختلفی مانند نوشتن اسکریپت‌های سیستمی، پردازش داده و توسعه وب مورد استفاده قرار می‌گیرد.

🔼 مزایای پرل [ Perl ]

انعطاف‌پذیری بالا
پشتیبانی از ماژول‌ها
پردازش قوی رشته‌ها

🔽 معایب پرل [ Perl ]

پیچیدگی نحوه نوشتن کد
کمبود منابع و آموزش‌های به‌روز
عدم پشتیبانی کامل از شی گرایی


⚡️ @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
📨 پروتکل SMTP چیست؟

پروتکل Similar Mail Transfer Protocol یا همان پروتکل انتقال نامه ساده که از پروتکل های لایه کاربرد پروتکل TCP/IP است. این پروتکل وظیفه ی مسیریابی بین ایمیل سرور ها را بر عهده دارد، برای این کار نیاز دارد تا سرور هارا به همدیگر متصل کند تا نامه شما به مقصد برسد. این پروتکل از ایمیل سرور و کاربر تشکیل میشود که ایمیل سرور یک کامپیوتر با سیستم عامل مخصوص به خود که توانایی ارسال و دریافت و مسیریابی را دارد. کاربر نیز درخواست ارسال و دریافت را به سرور میفرستد.این پروتکل برای ارسال ایمیل ها از کامپیوتر مبدا به سرور فرستنده و بعد از آن به سرور گیرنده، آنها را تقسیم به بلوک کرده و سپس تبدیل به کاراکتر هایی دارای کلمات رمزی میکند که از هم جدا شوند. سپس نرم افزار با توجه این کلمات رمزی میفهمد که چه عملکردی نسبت به آنها داشته باشد. این پروتکل برای جلوگیری از حمله و و تهدیدات از دو پروتکل TLS و SSL استفاده میکند.

🔥 @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 فرانت‌اند [ FrontEnd ] چیست؟

فرانت‌ اند به بخشی از یک وبسایت یا وب اپلیکیشن گفته می‌شود که کاربران با آن در ارتباط هستند. این بخش شامل طراحی ظاهر، و تعاملات کاربری است که کاربران با آن در ارتباط هستند. فرانت‌اند نقش بسیار مهمی در جلب توجه کاربران، افزایش تجربه کاربری و افزایش رضایت کاربران دارد. یک فرانت‌اند جذاب و کاربر پسند می‌تواند تاثیر چشمگیری بر موفقیت یک وبسایت یا وب اپلیکیشن داشته باشد. برای طراحی و توسعه فرانت‌اند، از زبان‌ها مانند Html ، Css و JavaScript همچنین از فریم‌ورک‌ هایی مانند React ، Angular یا Vue.js استفاده می‌شود. این ابزارها به برنامه‌نویسان امکان می‌دهند تا وبسایت‌ها و وب اپلیکیشن‌هایی با ظاهر زیبا و جذاب ایجاد کنند.

نکات کلیدی طراحی و توسعه فرانت‌اند

⭐️به‌روزرسانی مداوم
⭐️رعایت استاندارد ها
⭐️طراحی ریسپانسیو و واکنشگرا
⭐️بهینه‌سازی برای سرعت بارگذاری
⭐️توجه به جزئیات ظاهری و تجربه کاربری


🔵 @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM