اگه میخوای ببینی اون پشت مشتا چه کارا میکنیم، این صفحه از برند ما توی گیتهاب رو میتونی دنبال کنی.
https://github.com/genyleap
https://github.com/genyleap
❤3
COMPΞZ 🧬
حدسم ... ۱) امتیاز روی فریمها اعمال شده! که نباید اینهمه باشه!!! مگه چقدر استفاده داریم؟ هنوز که وارد فصل جدید نشدیم. ۲) تیپ حمایتی دستی ارسال شده برای حمایت از توسعهدهندهها چون روی کیفم نیست روی امتیازاتمه. قضیه چیه... نمیدونم باید از فاندرش بپرسم…
بله تأیید شد!
بر مبنای استفاده و به اشتراک گذاری فریم امتیاز گرفتیم.
درخواست جدید شده، میگن فریمهای سادهتری باید برای نمایش و به اشتراک گذاری دیجن ساخته بشه!
خب ماهم میسازیم! یه چیز سادهتر برای تشویق بیشتر! 👊🏼⚡️
بر مبنای استفاده و به اشتراک گذاری فریم امتیاز گرفتیم.
درخواست جدید شده، میگن فریمهای سادهتری باید برای نمایش و به اشتراک گذاری دیجن ساخته بشه!
خب ماهم میسازیم! یه چیز سادهتر برای تشویق بیشتر! 👊🏼⚡️
👏5❤1
COMPΞZ 🧬
بله تأیید شد! بر مبنای استفاده و به اشتراک گذاری فریم امتیاز گرفتیم. درخواست جدید شده، میگن فریمهای سادهتری باید برای نمایش و به اشتراک گذاری دیجن ساخته بشه! خب ماهم میسازیم! یه چیز سادهتر برای تشویق بیشتر! 👊🏼⚡️
این اولین پیشنهاد من براش توی گروه هست! اگه بپذیره روی سهمیهها به ازای به اشتراکگذاری فریم تأثیر مثبت بذاره، یعنی شمایی که فریم من رو به اشتراک میذاری، روی سهمیت تأثیر مثبت بذاره؛ در این صورت من همون فریم بوستری که برای سوپر ریر ساخته بودم رو باز طراحی میکنم برای جامعهٔ دیجن.
یعنی هنرت رو از طریق فریم به اشتراک میذاری و سهمیه بیشتری میگیری.
نظرتون چیه؟ گزینههای پیشنهاد! پیشنهاد جدیتر رو توی خصوصی باهاش مذکره میکنم.
یعنی هنرت رو از طریق فریم به اشتراک میذاری و سهمیه بیشتری میگیری.
نظرتون چیه؟ گزینههای پیشنهاد! پیشنهاد جدیتر رو توی خصوصی باهاش مذکره میکنم.
👍5💯1
In the face of adversity, be a warrior, not a worrier. Your resilience will define your success.
در مواجهه با ناملایمات، یک جنگجو باشید، نه یک نگران. انعطاف پذیری شما موفقیت شما را مشخص خواهد کرد.
در مواجهه با ناملایمات، یک جنگجو باشید، نه یک نگران. انعطاف پذیری شما موفقیت شما را مشخص خواهد کرد.
👍4💯1
خب، برداشت برای فصل جاری degen.
اینبار از طریق فریم اختصاصی خودش روی وارپکست!!! بررسی کنید ببینید میتونید برداشت بزنید یا نه.
https://warpcast.com/jacek/0xafdf0b5a
همچنین داخل وبسایت لینک مستقیم از اینجا رو بررسی کنید.
مشکلی داشت بگید بررسی کنیم ببینیم چی به چیه.
اینبار از طریق فریم اختصاصی خودش روی وارپکست!!! بررسی کنید ببینید میتونید برداشت بزنید یا نه.
https://warpcast.com/jacek/0xafdf0b5a
همچنین داخل وبسایت لینک مستقیم از اینجا رو بررسی کنید.
مشکلی داشت بگید بررسی کنیم ببینیم چی به چیه.
Farcaster
Jacek.degen.eth 🎩 on Farcaster
GN Degens!
Season 13 airdrop is now live! Use the first official Degen Frame below to claim yours with your Warplet.
Huge shoutout to everyone tipping and keeping the vibes strong! 🔥
Add the frame to your faves on Warpcast—we’ve got updates coming soon…
Season 13 airdrop is now live! Use the first official Degen Frame below to claim yours with your Warplet.
Huge shoutout to everyone tipping and keeping the vibes strong! 🔥
Add the frame to your faves on Warpcast—we’ve got updates coming soon…
👍2
COMPΞZ 🧬
https://warpcast.com/compez.eth/0x047b5e78
Warpcast
C O M P Ξ Z on Warpcast
Conquered Vault #1 for 100 $WDEGEN in Vault Wars: Degen Dominion! Prices double with each claim—dare to seize this treasure on the Degen Chain? Join the galactic fray! https://vault-degen.genyframe.xyz/view/share.php?fid=321969&vaultId=1&t=1741211506128
COMPΞZ 🧬
https://warpcast.com/compez.eth/0x047b5e78
نسخهٔ دسکتاپ تمام است، فردا توضیحات فارسی میدم و بعد نسخهٔ موبایل رو بهروز رسانی میکنم.
فعلاً شب شیک تا ببینیم چه میشود. 😪👊🏼
فعلاً شب شیک تا ببینیم چه میشود. 😪👊🏼
🔥4🙏1
درود!
https://warpcast.com/compez.eth/0x19ea40f9
خب مشکلات مربوط به نسخه موبایل و خطاهایی که دریافت میشد حل شد. ✅
حالا چجوری کار میکنه؟
✅ ساختن یه گنجینه:
یه تصویر آپلود کن تا گنجینهٔ خودت رو بسازی. قیمت اولیهش 100 $WDEGEN هست. نسخهٔ تار یا شطرنجی تصویر برای همه نمایش داده میشه، ولی فقط صاحب گنجینه میتونه نسخهٔ اصلی رو ببینه.
✅ تصاحب یه گنجینه:
میتونی گنجینهٔ یه نفر دیگه رو با پرداخت قیمت فعلیش بگیری. قیمت اولیه برای گرفتن یه گنجینه 100 $WDEGEN هست و هر بار که کسی اون رو تصاحب کنه، قیمتش دو برابر میشه (۲۰۰، ۴۰۰ و همینطور تا سقف ۱ میلیون $WDEGEN).
✅ درآمد کسب کن:
اگه یکی گنجینهٔ تو رو تصاحب کنه، مبلغی که پرداخت کردی بهت برمیگرده و ۶۰٪ سود هم نصیبت میشه! سازندهٔ اولیه هم ۴۰٪ از سود رو میگیره و ۵٪ میره برای توسعهٔ پروژه.
چجوری وارد بازی بشی؟
1️⃣ کیف پولت رو وصل کن: برو تو فریم، روی "Connect Wallet" بزن و کیف پول Degen Chain رو با مقداری $WDEGEN متصل کن.
2️⃣ یه گنجینه بساز: توی بخش آپلود، یه تصویر (JPG، PNG) انتخاب کن و گنجینهتو بساز—شروعش رایگانه!
3️⃣ بگرد و تصاحب کن: گالری رو ببین، یه گنجینهای که برات میتونه هیجانانگیز باشه رو پیدا کن و روی "Claim Vault" بزن. قیمت اولیه 100 $WDEGEN هست و بعد هر تصاحب دو برابر میشه.
4️⃣ به اشتراک بذار: بعد از ساختن یا گرفتن یه گنجینه، روی "Share" بزن تا توی Warpcast منتشر بشه، همراه با اطلاعات شمارهی گنجینه، قیمت و غیره و این روند پیدا میکنه تا به بالاترین قیمت خودش برسه.
https://warpcast.com/compez.eth/0x19ea40f9
خب مشکلات مربوط به نسخه موبایل و خطاهایی که دریافت میشد حل شد. ✅
حالا چجوری کار میکنه؟
✅ ساختن یه گنجینه:
یه تصویر آپلود کن تا گنجینهٔ خودت رو بسازی. قیمت اولیهش 100 $WDEGEN هست. نسخهٔ تار یا شطرنجی تصویر برای همه نمایش داده میشه، ولی فقط صاحب گنجینه میتونه نسخهٔ اصلی رو ببینه.
✅ تصاحب یه گنجینه:
میتونی گنجینهٔ یه نفر دیگه رو با پرداخت قیمت فعلیش بگیری. قیمت اولیه برای گرفتن یه گنجینه 100 $WDEGEN هست و هر بار که کسی اون رو تصاحب کنه، قیمتش دو برابر میشه (۲۰۰، ۴۰۰ و همینطور تا سقف ۱ میلیون $WDEGEN).
✅ درآمد کسب کن:
اگه یکی گنجینهٔ تو رو تصاحب کنه، مبلغی که پرداخت کردی بهت برمیگرده و ۶۰٪ سود هم نصیبت میشه! سازندهٔ اولیه هم ۴۰٪ از سود رو میگیره و ۵٪ میره برای توسعهٔ پروژه.
چجوری وارد بازی بشی؟
1️⃣ کیف پولت رو وصل کن: برو تو فریم، روی "Connect Wallet" بزن و کیف پول Degen Chain رو با مقداری $WDEGEN متصل کن.
2️⃣ یه گنجینه بساز: توی بخش آپلود، یه تصویر (JPG، PNG) انتخاب کن و گنجینهتو بساز—شروعش رایگانه!
3️⃣ بگرد و تصاحب کن: گالری رو ببین، یه گنجینهای که برات میتونه هیجانانگیز باشه رو پیدا کن و روی "Claim Vault" بزن. قیمت اولیه 100 $WDEGEN هست و بعد هر تصاحب دو برابر میشه.
4️⃣ به اشتراک بذار: بعد از ساختن یا گرفتن یه گنجینه، روی "Share" بزن تا توی Warpcast منتشر بشه، همراه با اطلاعات شمارهی گنجینه، قیمت و غیره و این روند پیدا میکنه تا به بالاترین قیمت خودش برسه.
Warpcast
C O M P Ξ Z on Warpcast
GM! Conquered Vault #6 for 100 $WDEGEN in Vault Wars: Degen Dominion! Prices double with each claim—dare to seize this treasure on the Degen Chain? Join the galactic fray! https://vault-degen.genyframe.xyz/view/share.php?fid=321969&vaultId=6&t=1741264983426
❤2
COMPΞZ 🧬
درود! https://warpcast.com/compez.eth/0x19ea40f9 خب مشکلات مربوط به نسخه موبایل و خطاهایی که دریافت میشد حل شد. ✅ حالا چجوری کار میکنه؟ ✅ ساختن یه گنجینه: یه تصویر آپلود کن تا گنجینهٔ خودت رو بسازی. قیمت اولیهش 100 $WDEGEN هست. نسخهٔ تار یا شطرنجی…
خب این ایده رو هم ساختیم، بذار ببینیم مردک کچل حالا قراره چه غلطی کنه.
حواسم هم هست دیروز آموزشها رو نرسیدم تا دیر وقت روی قرارداد کار میکردم و تا الآن تمرکزم روش بود.
کمی بعد پستهای آموزشی ارسال میشه.
این هم قرارداد مربوط به این این Vault Wars روی دیجن هست، میتونید تراکنشهاش رو ببینید.
https://explorer.degen.tips/address/0x79cd095b3F3d4C1D356c86170A82218C5F2bC543
حواسم هم هست دیروز آموزشها رو نرسیدم تا دیر وقت روی قرارداد کار میکردم و تا الآن تمرکزم روش بود.
کمی بعد پستهای آموزشی ارسال میشه.
این هم قرارداد مربوط به این این Vault Wars روی دیجن هست، میتونید تراکنشهاش رو ببینید.
https://explorer.degen.tips/address/0x79cd095b3F3d4C1D356c86170A82218C5F2bC543
explorer.degen.tips
Degen Chain address details for 0x79cd095b3F3d4C1D356c86170A82218C5F2bC543 | Blockscout
View the account balance, transactions, and other data for 0x79cd095b3F3d4C1D356c86170A82218C5F2bC543 on the Degen Chain (Degen Chain) Explorer
❤2
در مورد فریمورک Qt چالشی نمیذارم چون دو تا کتاب در موردش نوشتم و همونها کافیست.
https://iostream.ir
کتاب آموزش مقدماتی ++C همراه Qt (مقدماتی) ۵.۰
کتاب آموزش پیشرفته ++C همراه Qt (پیشرفته) ۱.۳.۸
https://iostream.ir
کتاب آموزش مقدماتی ++C همراه Qt (مقدماتی) ۵.۰
کتاب آموزش پیشرفته ++C همراه Qt (پیشرفته) ۱.۳.۸
COMPΞZ 🧬
بخش تخصصی اول (بهروزرسانی C++23) مثال دیروز در مورد constinit با کمی جزئیات بیشتر و مقایسه با constexpr، const و consteval - کلمهٔ کلیدی const این ویژگی نشان میدهد که یک متغیر یا پارامتر تابع جهانی (global)، محلی یا عضو، پس از مقداردهی نمیتواند تغییر…
روز چهارم، بخش تخصصی اول (بهروز رسانی سیپلاسپلاس ۲۳)
پیش پردازنده یک برنامه جداگانه از کامپایلر ++C است که قبل از شروع کامپایل واقعی روی کد منبع شما کار میکند. خروجی پیش پردازنده یک فایل واحد است که سپس به کامپایلر اصلی فرستاده میشود. رفتار پیش پردازنده توسط دستورات پیش پردازنده کنترل میشود. هر دستور یک خط را اشغال میکند و از قالب ۱) کاراکتر هشتگ # ۲) یک نام دستورالعمل از پیش تعریف شده توسط استاندارد، و یا یک یا چند توکن پیشپردازنده پیروی میکند.
دستور و ساختار موجود شرطی:
دستور و ساختار مکمل جدید برای شرطهای قبلی:
نکته جالبی در مورد منشأ دستورات elifdef# و elifndef# در C++23 وجود دارد. این دستورات توسط گروه کاری WG14، یعنی گروه کاری سازمان بین المللی استاندارد (ISO) که روی زبان برنامه نویسی C فعالیت میکند، ارائه شده است. این دستورات جدید قرار است بخشی از استاندارد C23 باشند و گروه کاری C++ (WG21) برای جلوگیری از ناسازگاری پیش پردازنده با زبان C، تصمیم به پذیرش این تغییرات گرفته است.
در ++C و C برخی از دستورات پیش پردازنده را برای کامپایل شرطی به اشتراک میگذارند (مانند ifdef# و ifndef#). معرفی دستورات elifdef# و elifndef# در C23 در ادامهٔ دو دستور قبلی شرطی گزینههای بیشتری برای کنترل جریان درون این بلوکهای شرطی فراهم میکند. با پذیرش این دستورات جدید، ++C از مشکلات احتمالی ناسازگاری پیش پردازنده هنگام کار با کدی که ممکن است با C تعامل داشته باشد، جلوگیری میکند. این در آینده یک فرآیند سازگاری بسیار عالی با کدهای C را تضمین میکند.
نتیجهٔ این تصمیم در دو کمیتهٔ استانداردسازی WG14 و WG21، اولاً سازگاری بهتر را تضمین میکند، چرا که داشتن دستورات پیش پردازنده یکسان در هر دو زبان C و ++C، کدی که بین این دو زبان تعامل دارد را ساده میکند و دوماً موجب کاهش خطا، با دستورات elifdef# و elifndef# میتوانند منطق کامپایل شرطی را واضحتر کنند، که به طور بالقوه منجر به خطاهای کمتری میشود.
اضافه کردن دو دستور جدید به نامهای elifdef# و elifndef# که دقیقاً عملکردی را که در دستورات موجود ifdef# و ifndef# ارائه شده است، دارند. این باعث افزایش قدرت بیان و پیشبینی زبان میشود، به خصوص برای کاربران جدید. توجه داشته باشید که این دستورات هیچ ترکیب جدید و مشکلآفرینی از دستورات شرطی ورودی اضافه نمیکنند.
به عنوان مثال، کد زیر در حالت جدید مشکلی ندارد:
در همین حالت کد زیر با روش ویشیم هم به صورت مشابه عمل میکند:
دستورات فوق، دستورات موجود قبلی را برای کامپایل شرطی را تکمیل میکنند. دستور warning# که قبلاً یک افزونه خاص کامپایلر بود، اکنون بخشی از استاندارد ۲۳ است. این به شما امکان میدهد تا در طول کامپایل، هشدارهایی را برای نشان دادن مشکلات احتمالی در کد ارسال کنید.
#cpp20 #cpp23 #preprocessor #compiler #macro #چالش #سیروزه #رمضان #روز_چهارم
پیش پردازنده یک برنامه جداگانه از کامپایلر ++C است که قبل از شروع کامپایل واقعی روی کد منبع شما کار میکند. خروجی پیش پردازنده یک فایل واحد است که سپس به کامپایلر اصلی فرستاده میشود. رفتار پیش پردازنده توسط دستورات پیش پردازنده کنترل میشود. هر دستور یک خط را اشغال میکند و از قالب ۱) کاراکتر هشتگ # ۲) یک نام دستورالعمل از پیش تعریف شده توسط استاندارد، و یا یک یا چند توکن پیشپردازنده پیروی میکند.
دستور و ساختار موجود شرطی:
# ifdef identifier new-line groupopt
# ifndef identifier new-line groupopt
دستور و ساختار مکمل جدید برای شرطهای قبلی:
# elifdef identifier new-line groupopt
# elifndef identifier new-line groupopt
نکته جالبی در مورد منشأ دستورات elifdef# و elifndef# در C++23 وجود دارد. این دستورات توسط گروه کاری WG14، یعنی گروه کاری سازمان بین المللی استاندارد (ISO) که روی زبان برنامه نویسی C فعالیت میکند، ارائه شده است. این دستورات جدید قرار است بخشی از استاندارد C23 باشند و گروه کاری C++ (WG21) برای جلوگیری از ناسازگاری پیش پردازنده با زبان C، تصمیم به پذیرش این تغییرات گرفته است.
در ++C و C برخی از دستورات پیش پردازنده را برای کامپایل شرطی به اشتراک میگذارند (مانند ifdef# و ifndef#). معرفی دستورات elifdef# و elifndef# در C23 در ادامهٔ دو دستور قبلی شرطی گزینههای بیشتری برای کنترل جریان درون این بلوکهای شرطی فراهم میکند. با پذیرش این دستورات جدید، ++C از مشکلات احتمالی ناسازگاری پیش پردازنده هنگام کار با کدی که ممکن است با C تعامل داشته باشد، جلوگیری میکند. این در آینده یک فرآیند سازگاری بسیار عالی با کدهای C را تضمین میکند.
نتیجهٔ این تصمیم در دو کمیتهٔ استانداردسازی WG14 و WG21، اولاً سازگاری بهتر را تضمین میکند، چرا که داشتن دستورات پیش پردازنده یکسان در هر دو زبان C و ++C، کدی که بین این دو زبان تعامل دارد را ساده میکند و دوماً موجب کاهش خطا، با دستورات elifdef# و elifndef# میتوانند منطق کامپایل شرطی را واضحتر کنند، که به طور بالقوه منجر به خطاهای کمتری میشود.
اضافه کردن دو دستور جدید به نامهای elifdef# و elifndef# که دقیقاً عملکردی را که در دستورات موجود ifdef# و ifndef# ارائه شده است، دارند. این باعث افزایش قدرت بیان و پیشبینی زبان میشود، به خصوص برای کاربران جدید. توجه داشته باشید که این دستورات هیچ ترکیب جدید و مشکلآفرینی از دستورات شرطی ورودی اضافه نمیکنند.
#ifdef SOME_MACRO
// CODE
#elifdef MACRO_NAME
// CODE
#endif
به عنوان مثال، کد زیر در حالت جدید مشکلی ندارد:
#if ME
// TODO
#elifdef YOU
// TODO
#else
// TODO
#endif
در همین حالت کد زیر با روش ویشیم هم به صورت مشابه عمل میکند:
#ifdef ME
// TODO
#elif YOU
// TODO
#else
// TODO
#endif
دستورات فوق، دستورات موجود قبلی را برای کامپایل شرطی را تکمیل میکنند. دستور warning# که قبلاً یک افزونه خاص کامپایلر بود، اکنون بخشی از استاندارد ۲۳ است. این به شما امکان میدهد تا در طول کامپایل، هشدارهایی را برای نشان دادن مشکلات احتمالی در کد ارسال کنید.
# warning pp-tokensopt new-line
#if __STDC_HOSTED__ != 1
# error "Not a hosted implementation"
#endif
#if __cplusplus >= 202302L
# warning "Using #warning as a standard feature"
#endif
import std;
auto main() -> int
{
std::println("The implementation used is hosted");
}
#cpp20 #cpp23 #preprocessor #compiler #macro #چالش #سیروزه #رمضان #روز_چهارم
COMPΞZ 🧬
بخش تخصصی دوم (بهروز رسانی Solidity) اعضای آدرس (address) همانطور که در جلسهٔ قبل گفتیم، آدرس خودش دارای اعضایی است که بسیار کاربردی هستند. این اعضا به صورت زیر خواهند بود: <address>.balance (uint256) این عضو موجودی یک آدرس را در واحد Wei نمایش میدهد.…
بخش تخصصی دوم (بهروز رسانی Solidity) الفاظ یونیکد، هگزادسیمال و شمارندهها (Enum)
در حالی که حروف الفبای رشتهای معمولی فقط میتوانند حاوی ASCII باشند، حروف الفبای یونیکد – با پیشوند کلمه کلیدی
برای مثال:
در رابطه با هگزادسیمال، یک مثال ساده به این صورت میتواند گویای نحو آن نیز باشد:
کلمهٔ کلیدی
حروف هگزادسیمال از برخی جهات مانند لفظ رشتهای رفتار میکنند اما به طور ضمنی به نوع رشتهای تبدیل نمیشوند.
شمارندهها (Enums)
شمارندهها یکی از راههای ایجاد یک نوع تعریف شده توسط کاربر در Solidity است. آنها به صراحت به همه انواع اعداد صحیح تبدیل میشوند اما تبدیل ضمنی مجاز نیست.
شمارندهها حداقل به یک عضو نیاز دارند و مقدار پیش فرض آن هنگام اعلام اولین عضو است.
یک ویژگی جالب در مورد شمارندهها، با استفاده از
فرض کنید
کدهای فوق صرفاً جنبهٔ تئوری دارند و ما در آینده یک قرارداد بسیار ساده را بر روی بستر بلاکچین اتریوم خواهیم ساخت. بر خلاف زبانهای برنامهنویسی دیگر در سالدیتی شما برای اجرا و چاپ آزمایش کدهای خود نیاز به فراخوانی قرارداد در JS دارید، برای این منظور فریمورکهایی مانند Truffle یا Hardhat مناسبترین گزینه برای آزمایش قراردادهای ما میباشند.
مثال قرارداد ساده:
پیشنیاز فراخوانی قرارداد تحت Truffle در JS:
در حالی که حروف الفبای رشتهای معمولی فقط میتوانند حاوی ASCII باشند، حروف الفبای یونیکد – با پیشوند کلمه کلیدی
unicode میتوانند حاوی هر دنباله معتبر UTF-8 باشند. آنها همچنین از همان توالی فرار مانند لفظ رشتهای معمولی پشتیبانی میکنند.برای مثال:
string greeting a = unicode"Hello 😎";
string public unicodeGreeting = "Hello, \u{1F60A}";
در رابطه با هگزادسیمال، یک مثال ساده به این صورت میتواند گویای نحو آن نیز باشد:
bytes public exampleBytes = hex"123456";
کلمهٔ کلیدی
hex با پذیرش مقادیر هگز در گیومههای تک یا دو تایی اعمال میشوند:hex"001122FF"
یا
hex'001122FF'
حروف هگزادسیمال از برخی جهات مانند لفظ رشتهای رفتار میکنند اما به طور ضمنی به نوع رشتهای تبدیل نمیشوند.
شمارندهها (Enums)
شمارندهها یکی از راههای ایجاد یک نوع تعریف شده توسط کاربر در Solidity است. آنها به صراحت به همه انواع اعداد صحیح تبدیل میشوند اما تبدیل ضمنی مجاز نیست.
enum State { Inactive, Active, Suspended }شمارندهها حداقل به یک عضو نیاز دارند و مقدار پیش فرض آن هنگام اعلام اولین عضو است.
Enums نمیتواند بیش از 256 عضو داشته باشد.یک ویژگی جالب در مورد شمارندهها، با استفاده از
type(NameOfEnum).min و type(NameOfEnum).max میتوانید کوچکترین و بزرگترین مقدار enum داده شده را بدست آورید.فرض کنید
State در قالب تابعی بازگشتی چگونه خواهد بود:function getLargestValue() public pure returns (State) {
return type(State).max;
}
function getSmallestValue() public pure returns (State) {
return type(State).min;
}کدهای فوق صرفاً جنبهٔ تئوری دارند و ما در آینده یک قرارداد بسیار ساده را بر روی بستر بلاکچین اتریوم خواهیم ساخت. بر خلاف زبانهای برنامهنویسی دیگر در سالدیتی شما برای اجرا و چاپ آزمایش کدهای خود نیاز به فراخوانی قرارداد در JS دارید، برای این منظور فریمورکهایی مانند Truffle یا Hardhat مناسبترین گزینه برای آزمایش قراردادهای ما میباشند.
مثال قرارداد ساده:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract MyContract {
uint256 public myNumber;
constructor() {
myNumber = 42;
}
function setNumber(uint256 newNumber) public {
myNumber = newNumber;
}
}
پیشنیاز فراخوانی قرارداد تحت Truffle در JS:
const MyContract = artifacts.require('MyContract');
...
......
COMPΞZ 🧬
روز چهارم، بخش تخصصی اول (بهروز رسانی سیپلاسپلاس ۲۳) پیش پردازنده یک برنامه جداگانه از کامپایلر ++C است که قبل از شروع کامپایل واقعی روی کد منبع شما کار میکند. خروجی پیش پردازنده یک فایل واحد است که سپس به کامپایلر اصلی فرستاده میشود. رفتار پیش پردازنده…
روز پنجم، بخش تخصصی اول (بهروز رسانی سیپلاسپلاس ۲۳)
اگر دقت کرده باشید، میزان دستورات مربوط به
بررسی عبارت شرطی جدید `if consteval` / `if not consteval`
در سیپلاسپلاس ۲۳،
تفاوتهای کلیدی بین `constexpr if` و `consteval if`
۱) در نسخهٔ
- مشروط بر این است که یک عبارت باید ثابت باشد.
- اگر در یک زمینه کاملاً ارزیابی شده ثابت ارزیابی شود، بلوک
مثال:
۲) در نسخهٔ
- یک عبارت میتواند ثابت یا غیر ثابت باشد.
- اگر در یک زمینه کاملاً ارزیابی شده ثابت ارزیابی شود، بلوک
مفهوم `if consteval`
در اصل،
یک اظهار
مثال از C++23 با `if consteval`:
نتیجهگیری
با افزودن ویژگی زبان جدید
#cpp20 #cpp23
#چالش #سیروزه #رمضان #روز_پنجم
اگر دقت کرده باشید، میزان دستورات مربوط به
const* به وضوح در ++C در حال افزایش است. ابتدا const بخشی از زبان اصلی بود و سپس constexpr را در استاندارد ۱۱ دریافت کردیم. سپس در استاندارد ۱۷ عبارت شرطی if constexpr معرفی شد، بعد از آن، C++20 ما را با consteval و constinit آشنا کرد و با C++23 ما قرار است if consteval (معمولاً به آن consteval if اشاره میشود) را داشته باشیم.بررسی عبارت شرطی جدید `if consteval` / `if not consteval`
در سیپلاسپلاس ۲۳،
if consteval یک کلمهٔ کلیدی جدید است که نوع جدیدی از عبارت شرطی به نام consteval if را معرفی میکند. این عبارت به شما امکان میدهد تا بلوکهای کد را به صورت مشروط در زمان کامپایل اجرا کنید، مشابه عبارت constexpr if. با این حال، consteval if انعطافپذیری بیشتری نسبت به constexpr if ارائه میدهد و نیازی به فراخوانی سرآیند (هدر type_traits) ندارد. این عبارت به شما اجازه میدهد تا شرط آن را در زمان اجرا نیز ارزیابی کنید.تفاوتهای کلیدی بین `constexpr if` و `consteval if`
۱) در نسخهٔ
constexpr if- مشروط بر این است که یک عبارت باید ثابت باشد.
- اگر در یک زمینه کاملاً ارزیابی شده ثابت ارزیابی شود، بلوک
statement-true اجرا میشود، در غیر این صورت، بلوک statement-false (در صورت وجود) اجرا میشود.مثال:
#include <type_traits>
constexpr int bar(int i) {
return 2 * i;
}
constexpr int foo(int i) {
if (std::is_constant_evaluated()) {
return bar(i);
}
return 2 * i;
}
auto main() -> int {
[[maybe_unused]] auto a = foo(5);
}
۲) در نسخهٔ
consteval if- یک عبارت میتواند ثابت یا غیر ثابت باشد.
- اگر در یک زمینه کاملاً ارزیابی شده ثابت ارزیابی شود، بلوک
compound-statement اجرا میشود، در غیر این صورت، بلوک statement (در صورت وجود) اجرا میشود.مفهوم `if consteval`
در اصل،
consteval if به شما امکان میدهد کدی را بنویسید که بسته به زمینهٔ وضعیت آن، میتواند در زمان کامپایل یا در زمان اجرا اجرا شود.یک اظهار
if consteval شرطی ندارد. بهتر است بگوییم که خود شرط است. اگر در یک متن، ارزیابی ثابتاندازه به وضوح ارزیابی شود، سپس دستورات مرکب پیگیر اجرا میشود. در غیر این صورت، این امر انجام نمیشود. در صورت حضور یک شاخه `else`، آن به عنوان انتظار شما اجرا میشود.مثال از C++23 با `if consteval`:
#include <type_traits>
consteval int bar(int i) {
return 2 * i;
}
constexpr int foo(int i) {
if consteval {
return bar(i);
} else {
return 2 * i;
}
}
auto main() -> int {
[[maybe_unused]] auto v1 = foo(5); // Run-time evaluated!
[[maybe_unused]] constexpr auto v2 = foo(5); // Compile-time evaluated!
}
نتیجهگیری
با افزودن ویژگی زبان جدید
if consteval در C++23، دیگر میتوان توابع consteval را از داخل توابع constexpr فراخوانی کرد. این تغییر امکان ارزیابی ترکیبی در زمان کامپایل و زمان اجرا را فراهم میکند.#cpp20 #cpp23
#چالش #سیروزه #رمضان #روز_پنجم
COMPΞZ 🧬
بخش تخصصی دوم (بهروز رسانی Solidity) الفاظ یونیکد، هگزادسیمال و شمارندهها (Enum) در حالی که حروف الفبای رشتهای معمولی فقط میتوانند حاوی ASCII باشند، حروف الفبای یونیکد – با پیشوند کلمه کلیدی unicode میتوانند حاوی هر دنباله معتبر UTF-8 باشند. آنها همچنین…
بخش تخصصی دوم (بهروز رسانی Solidity) - انواع تابع
در زبان Solidity، متغیرهایی از نوع تابع میتوانند به توابع اختصاص داده شوند و پارامترهای توابع میتوانند برای انتقال توابع به توابع و بازگرداندن توابع از تماسهای تابع استفاده شوند. انواع توابع به دو نوع داخلی (
نکات مهم در مورد انواع توابع:
- برخلاف انواع پارامترها، انواع بازگشتی نمیتوانند خالی باشند. اگر نوع تابع نباید چیزی را برگرداند، بخش
- به طور پیشفرض، انواع توابع
- قابلیت دید را برای توابع تعریف شده در قراردادها باید به صورت صریح مشخص کرد. توابع
تبدیل انواع توابع:
- توابع
- توابع
- توابع
نمونههایی از انواع توابع در Solidity:
1. تابع داخلی و خالص با هیچ پارامتر و هیچ مقدار بازگشتی:
2. تابع نمایشی با یک پارامتر و یک نوع بازگشتی رشتهای:
3. تابع `payable` با چند پارامتر و نوع بازگشتی بولین:
4. تابع داخلی نمایشی با یک ساختاری از پارامترها، بدون نوع بازگشتی:
نتیجهگیری
در Solidity، انواع توابع بهطور دقیق بر اساس نیازهای قراردادها تعریف میشوند. به یاد داشته باشید که انتخاب نوع تابع به دید و نحوه استفاده از آن بستگی دارد و تبدیل انواع توابع میتواند انعطافپذیری بیشتری در طراحی قراردادها به شما بدهد.
#solidity #web3 #update #ether #اتریوم
در زبان Solidity، متغیرهایی از نوع تابع میتوانند به توابع اختصاص داده شوند و پارامترهای توابع میتوانند برای انتقال توابع به توابع و بازگرداندن توابع از تماسهای تابع استفاده شوند. انواع توابع به دو نوع داخلی (
internal) و خارجی (external) تقسیم میشوند:function (<parameter types>) {internal|external} [pure|view|payable] [returns (<return types>)]نکات مهم در مورد انواع توابع:
- برخلاف انواع پارامترها، انواع بازگشتی نمیتوانند خالی باشند. اگر نوع تابع نباید چیزی را برگرداند، بخش
returns (<return types>) باید حذف شود.- به طور پیشفرض، انواع توابع
internal هستند، بنابراین کلمه کلیدی internal میتواند حذف شود. این تنها برای انواع توابع اعمال میشود.- قابلیت دید را برای توابع تعریف شده در قراردادها باید به صورت صریح مشخص کرد. توابع
internal به طور پیشفرض دیده نمیشوند.تبدیل انواع توابع:
- توابع
pure میتوانند به توابع view و توابع non-payable تبدیل شوند.- توابع
view میتوانند به توابع non-payable تبدیل شوند.- توابع
payable میتوانند به توابع non-payable تبدیل شوند.نمونههایی از انواع توابع در Solidity:
1. تابع داخلی و خالص با هیچ پارامتر و هیچ مقدار بازگشتی:
function myFunction() internal pure {
// Function body
}
2. تابع نمایشی با یک پارامتر و یک نوع بازگشتی رشتهای:
function myFunction(uint _value) external view returns (string memory) {
// Function body
}
3. تابع `payable` با چند پارامتر و نوع بازگشتی بولین:
function myFunction(uint _num1, uint _num2) external payable returns (bool) {
// Function body
}
4. تابع داخلی نمایشی با یک ساختاری از پارامترها، بدون نوع بازگشتی:
struct MyStruct {
uint value;
}
function myFunction(MyStruct memory _struct) internal view {
// Function body
}
نتیجهگیری
در Solidity، انواع توابع بهطور دقیق بر اساس نیازهای قراردادها تعریف میشوند. به یاد داشته باشید که انتخاب نوع تابع به دید و نحوه استفاده از آن بستگی دارد و تبدیل انواع توابع میتواند انعطافپذیری بیشتری در طراحی قراردادها به شما بدهد.
#solidity #web3 #update #ether #اتریوم
COMPΞZ 🧬
خب! درود بر برنامهنویس عالم! چالش سی روزه رو آغاز میکنم 🫵🏼✍🏼 اما هدف آموزش نحوهٔ کدنویسی با C++23 و Solidity. شما هم میتونید نکته برداری کنید، منم هدفم اینه هرچی به روز رسانی کردم رو یادداشت کنم تا دوباره برای خودم مرور بشه. هیچ سخت نیست، تنهایی پیش…
فهرست آموزشی چالش سیروزه بهروز رسانی شد.
هر روز که چیزی رو بهش اضافه کنم، لینکها اعمال میشه.
هر روز که چیزی رو بهش اضافه کنم، لینکها اعمال میشه.
❤1
COMPΞZ 🧬
https://warpcast.com/compez.eth/0x047b5e78
خب خلاصهٔ این ایده NFT از نظر فنی چی شد؟
۱) قرارداد رو با Solidity روی شبکهٔ دیجن در بستر ERC20 نوشتم، تمام قوائد و قوانین رو.
۲) طراحی فریم تحت PHP و JavaScript انجام دادم.
۳) قرارداد رو روی شبکه دیجن Deploy کردم.
۴) اولین تراکنش مربوط به ساختن قرارداد بود، دومین تراکنش مربوط به آپلود تصویر توسط خودم.
۵) توی هر تراکنشی که شکل میگیره، تصاویری که توسط دیگران Claim میشن تقسیم سود انجام میشه. هرچقدر شما بتونید کارهاتون رو باهاش تبلیغ کنید که مشتاق بشن Unlock اش کنن، سود به شما و مالک جدید تعلق میگیره.
و این حلقه ادامه پیدا میکنه تا ببینیم چی میشه!
۱) قرارداد رو با Solidity روی شبکهٔ دیجن در بستر ERC20 نوشتم، تمام قوائد و قوانین رو.
۲) طراحی فریم تحت PHP و JavaScript انجام دادم.
۳) قرارداد رو روی شبکه دیجن Deploy کردم.
۴) اولین تراکنش مربوط به ساختن قرارداد بود، دومین تراکنش مربوط به آپلود تصویر توسط خودم.
۵) توی هر تراکنشی که شکل میگیره، تصاویری که توسط دیگران Claim میشن تقسیم سود انجام میشه. هرچقدر شما بتونید کارهاتون رو باهاش تبلیغ کنید که مشتاق بشن Unlock اش کنن، سود به شما و مالک جدید تعلق میگیره.
و این حلقه ادامه پیدا میکنه تا ببینیم چی میشه!
اشتباهاتم را دوست دارم.
آنها گرانترین تجربههایم هستند، چرا که برایشان هزینه گزافی پرداختم. 👊🏼😎
آنها گرانترین تجربههایم هستند، چرا که برایشان هزینه گزافی پرداختم. 👊🏼😎
❤3
از اونور میگه تحریم کردیم از اینور میگه اگه دریافت نکردین پاسخ بدین! خب به نظرم اگه چیزی دریافت نکردین اما کیف WC براتون فعال هست، بد نیست آزمایش کنید.
https://warpcast.com/v/0x781ab4d5
https://warpcast.com/v/0x781ab4d5
Warpcast
Varun Srinivasan on Warpcast
Warpcast Rewards - if you still haven't received your rewards from Tuesday, please reply to this thread !
فارکستر در اصل یک پروتکل هست، قبلاً هم توضیح دادم تمامی مسائل مربوط به WC خارج از لایهٔ پروتکل ارزیابی میشه.
بنابراین حتی اگه وارپکست گزینهٔ خوبی نباشه، میتونید یک Client برای خودتون بسازید! هرچند دانش اساسی میخواد! شاید یه روزی خودم یکی ساختم.
بنابراین حتی اگه وارپکست گزینهٔ خوبی نباشه، میتونید یک Client برای خودتون بسازید! هرچند دانش اساسی میخواد! شاید یه روزی خودم یکی ساختم.