بعضی وقتا توی زندگی،
احساس میکنیم که رسیدیم به بن بست،
احساس میکنیم راه و گذشتهای که ما رو تا اینجا آورده اشتباه بوده،
غـافل از اینکه خوشبختی، همیشه پشت بلندترین دیوار انتظار مارو میکشه.
پرواز کنید. پَـر باز کنید، رد شید و عبور کنید از تمام محالها و نشدنیهای زندگیتون.
احساس میکنیم که رسیدیم به بن بست،
احساس میکنیم راه و گذشتهای که ما رو تا اینجا آورده اشتباه بوده،
غـافل از اینکه خوشبختی، همیشه پشت بلندترین دیوار انتظار مارو میکشه.
پرواز کنید. پَـر باز کنید، رد شید و عبور کنید از تمام محالها و نشدنیهای زندگیتون.
👍13❤3👏2😢1
COMPΞZ 🧬
درود 👊🏼 روز بخیر! https://warpcast.com/compez.eth/0x2eab67ad
سوألی بود که با چه نرمافراری این طرحها رو ساختی! راستش اینا اصلاً نرمافزاری نیست، هوش مصنوعی هم نیست! همشون کدنویسی خالص و انتزاعی هستن که از ذهنم بیرون اومده. من گفتم کارهای سخت رو دوست دارم! حتی یادمه زمانی که این فارمرهای کله نخودی در مورد این کارها نقد میکردن و میگفتن چهارتا خط کشیده با هوش مصنوعی فکر کرده کیه... یا به اون دایرههارو از مجموعهٔ Spectral Tapestry رو مسخره میکردن... خب من هیچوقت در مورد نحوهٔ ساخت اینا صحبت نکردم چون کسی که هنرمند یا کالکتور باشه یکم به منطق ساخت این چیزا اهمیت میده.
سبک این طرح هست Generative Art، هنر مولد بهش میگیم. به هنری که نه با قلم هست و نه با هوش مصنوعی، کاملاً با کدنویسی شکل میگیره. مثل نسخههای Fidenza و یا حتی خود پیکسلآرتهای معروف Punk.
این سری مجموع بردهای دیجیتالی Superboard نام داره و انحصاراً روی پلتفرم سوپرریر مینت شدن که توی ۵ نسخه هستن. روشن، تاریک، آبی، قرمز و سبز.
دو نسخهٔ روشن با ۶۴ قطعه و نسخهٔ تاریک با ۱۲۸ قطعه روی سوپرریر هم رونمایی شدن.
چطور ساختمشون؟
ساختن الگوریتم این طرحها رو من پارسال شروع کرده بودم، وقتی که توی توئیتر بودم نه فارکستر! چیزی حدود ۲ ماه وقتم رو گرفته بود هر روز چند ساعت روی ایدش که تنوع و حالتهاش چطور باشه فکر کردم، آزمایش کردم از سادهترین تا پیچیدهترین حالتهای ممکنش رو بررسی کردم. حتی اوایل انقدر خطا داشت که نا امید میشدم... یکی از مهمترین خاصیتهای این مجموعه اینه که هیچوقت دو خط هم دیگه رو قطع نمیکنن.
خلاصه الگوریتم کاملاً خودکار هست و وقتی هر بار تولید میشه یک طرح منحصربفرد ایجاد میکنه.
با چه زبانی برنامهنویسیش کردم؟ الگوریتم اولیه رو روی ++C محک زدم اما به خاطر پیچیدگیش روی وب از JavaScript برای تولید نسخهٔ نهایی استفاده کردم، چون قرار بود کاملاً on-chain باشه.
در واقع کتابخانهٔ p5js که مختص هنرهای برنامهنویسی هست.
با این مجموعه من خیلی کارها دارم که قراره انجام بدم، تمام کسانی که اینارو خریدن روی پروژههای بعدی حتی توکنهای احتمالی امتیاز ویژه بهشون خواهم داد به عنوان حمایت از مجموعهداران خودم.
نسخههای آبی، قرمز و سبز رو هم منتشر خواهم کرد اما در زمان مناسب، چون اصلاً فصلِ NFT نیست الآن.
سبک این طرح هست Generative Art، هنر مولد بهش میگیم. به هنری که نه با قلم هست و نه با هوش مصنوعی، کاملاً با کدنویسی شکل میگیره. مثل نسخههای Fidenza و یا حتی خود پیکسلآرتهای معروف Punk.
این سری مجموع بردهای دیجیتالی Superboard نام داره و انحصاراً روی پلتفرم سوپرریر مینت شدن که توی ۵ نسخه هستن. روشن، تاریک، آبی، قرمز و سبز.
دو نسخهٔ روشن با ۶۴ قطعه و نسخهٔ تاریک با ۱۲۸ قطعه روی سوپرریر هم رونمایی شدن.
چطور ساختمشون؟
ساختن الگوریتم این طرحها رو من پارسال شروع کرده بودم، وقتی که توی توئیتر بودم نه فارکستر! چیزی حدود ۲ ماه وقتم رو گرفته بود هر روز چند ساعت روی ایدش که تنوع و حالتهاش چطور باشه فکر کردم، آزمایش کردم از سادهترین تا پیچیدهترین حالتهای ممکنش رو بررسی کردم. حتی اوایل انقدر خطا داشت که نا امید میشدم... یکی از مهمترین خاصیتهای این مجموعه اینه که هیچوقت دو خط هم دیگه رو قطع نمیکنن.
خلاصه الگوریتم کاملاً خودکار هست و وقتی هر بار تولید میشه یک طرح منحصربفرد ایجاد میکنه.
با چه زبانی برنامهنویسیش کردم؟ الگوریتم اولیه رو روی ++C محک زدم اما به خاطر پیچیدگیش روی وب از JavaScript برای تولید نسخهٔ نهایی استفاده کردم، چون قرار بود کاملاً on-chain باشه.
در واقع کتابخانهٔ p5js که مختص هنرهای برنامهنویسی هست.
با این مجموعه من خیلی کارها دارم که قراره انجام بدم، تمام کسانی که اینارو خریدن روی پروژههای بعدی حتی توکنهای احتمالی امتیاز ویژه بهشون خواهم داد به عنوان حمایت از مجموعهداران خودم.
نسخههای آبی، قرمز و سبز رو هم منتشر خواهم کرد اما در زمان مناسب، چون اصلاً فصلِ NFT نیست الآن.
❤3🔥3
COMPΞZ 🧬
سوألی بود که با چه نرمافراری این طرحها رو ساختی! راستش اینا اصلاً نرمافزاری نیست، هوش مصنوعی هم نیست! همشون کدنویسی خالص و انتزاعی هستن که از ذهنم بیرون اومده. من گفتم کارهای سخت رو دوست دارم! حتی یادمه زمانی که این فارمرهای کله نخودی در مورد این کارها…
قبل از مجموعهٔ بردها، من یه قطعه اختصاصی داشتم به نام پردازندهٔ ۳۶۸۶۴ که پانک ۶۵۲۹ اون رو در سال ۲۰۲۱ خریداری کرد.
چون اون قطعه دقیقاً بر مبنای یک پردازنده طراحی شده بود، این بردها رو هم برای تکمیل اون قطعه و معنا دهی بیشتر براش طراحی کردم.
که نتیجش میشه یه چیزی مثل همین تصویر که به وقتش اینارو مینت میکنم.
چون اون قطعه دقیقاً بر مبنای یک پردازنده طراحی شده بود، این بردها رو هم برای تکمیل اون قطعه و معنا دهی بیشتر براش طراحی کردم.
که نتیجش میشه یه چیزی مثل همین تصویر که به وقتش اینارو مینت میکنم.
🔥2
توی هر شبکهای که هستید، نسبت Following باید نسبت به Followers خیلی پایینتر باشه.
اگه برعکس هست، بشین حسابتو پاکسازی کن هر چی نخاله هست رو بریز دور.
اگه برعکس هست، بشین حسابتو پاکسازی کن هر چی نخاله هست رو بریز دور.
👍8
وسط پروژه برق میره، اینترنت قطع میشه! من با جفت دستام تا آستین توی کد دارم با ۰ و ۱ ور میرم و بعد یهو ضد حال! 😐
حالا تا برق بیاد سیستم روشن کنم ببینم تو کدوم خط داشتم چه غلطی میکردم باید بشینم همش مرور کنم که فلان خطا و فلان خط فلان موضوع رو چطوری داشتم بررسی میکردم!
دیروز هم اینطور بود امروز هم اصلا هر روز همینه!
مملکت همه چیزش عذابآوره! اینارو توی فارکستر بگم که تو چه شرایطی داریم تلاش میکنیم، شاخ در میارن کلی تیپ میدن بهم! 🤣😬
این وضعیت تنها مزیتی که داره اینه که باعث میشه کتاب بیشتری بخونم.👊🏼 اینطوری میشه عصبی نشد و فحش نداد حداقل 🤣
حالا تا برق بیاد سیستم روشن کنم ببینم تو کدوم خط داشتم چه غلطی میکردم باید بشینم همش مرور کنم که فلان خطا و فلان خط فلان موضوع رو چطوری داشتم بررسی میکردم!
دیروز هم اینطور بود امروز هم اصلا هر روز همینه!
مملکت همه چیزش عذابآوره! اینارو توی فارکستر بگم که تو چه شرایطی داریم تلاش میکنیم، شاخ در میارن کلی تیپ میدن بهم! 🤣😬
این وضعیت تنها مزیتی که داره اینه که باعث میشه کتاب بیشتری بخونم.👊🏼 اینطوری میشه عصبی نشد و فحش نداد حداقل 🤣
😁5😢2
وقتی گزینهٔ خوبی وجود نداشته باشه، بدترین گزینه بهترین گزینه به نظر میرسه.
گزینهٔ دیجن هم همینطوره.🙃
گزینهٔ دیجن هم همینطوره.🙃
👍7
یکم دیگه ساختوساز کنم ۱۰۰ رو زدم!
چک کنید ببینید مال شما چنده.
https://www.onchainscore.xyz
https://warpcast.com/compez.eth/0xd162fa77
چک کنید ببینید مال شما چنده.
https://www.onchainscore.xyz
https://warpcast.com/compez.eth/0xd162fa77
🔥4
خب!
درود بر برنامهنویس عالم!
چالش سی روزه رو آغاز میکنم 🫵🏼✍🏼 اما هدف آموزش نحوهٔ کدنویسی با C++23 و Solidity.
شما هم میتونید نکته برداری کنید، منم هدفم اینه هرچی به روز رسانی کردم رو یادداشت کنم تا دوباره برای خودم مرور بشه.
هیچ سخت نیست، تنهایی پیش برو یا با من پیش بیا، مهم اینه عمل کنی.✌🏼اگر هم برنامهنویس نیستی فقط به مفهومی که یک قرارداد میتونه ارائه بده دقت کن.
چرا باید اینارو یاد بگیری؟ چون اینارو اگه بلد باشی بهتر میتونی در مورد پروژهها تصمیمگیری کنی که روی چی سرمایهگذاری کنی، یا حتی چی بسازی!
جزئیات از برداشتم رو در طول روز منتشر خواهم کرد.👇🏼
یک فهرست هم برای این موضوع مرحله به مرحله اضافه میکنم که دسترسی به مباحث پین شده سادهتر بشه.
هدف من از تولید این فهرست در طول ۱ ماه، به اشتراکگذاری ویژگیهای جدید سیپلاسپلاس ۲۳ و همچنین بررسی ساختار و نحو زبان برنامهنویسی سالیدیتی است.
این فهرست برای کسانی که میخواهند با کمترین زمان ممکن سرنخهای مربوط به بهروز رسانیهای C++23 و یادگیری Solidity را در اختیار داشته باشند مناسب خواهد بود. امیدوارم به عنوان بخشی از جعبهابزار خودم و دیگران مفید واقع شود.
📘 بهروز رسانیها برای استاندارد C++23
۱) بررسی و کار با جریانهای std::print و ترکیبی از خاصیتهای std::format
۲) کلمهٔ کلیدی constinit
۳) جزئیات constinit و مقایسه با constexpr، const و consteval
۴) پیش پردازندههای elifdef# و elifndef# و warning#
۵) بررسی عبارت شرطی جدید if consteval / if not consteval
۶) صفت (assume)
۷) پسوند تحتالفظی (لیترالها) برای std::size_t
۸) کلاس std::mdspan و زیر عضو extents
۹) پارامتر شیء صریح this
۱۰) الگوریتمهای std::shift_left و std::shift_right
۱۱) عملگر []static
۱۲) ابزار کمکی std::unreachable
۱۳) ابزار کمکی std::to_underlying
۱۴) اعلان مستعار (alias)
۱۵) ویژگی std::move_only_function
۱۶) تابع std::forward_like
۱۷) ابزار کمکی std::invoke_r
۱۸) تابع کمکی std::bind_back
۱۹) تابع std::byteswap
۲۰) عضو std::contains
۲۱) عضو std::is_scoped_enum
۲۲) عضو std::views::zip
۲۳) عضو std::views::adjacent
۲۴) مدیریت خطا با std::expected
۲۵) ویژگی std::basic_stacktrace
۲۶)مخازن تخت std::flat_map
۲۷) تابع std::ranges::starts_with
۲۸) تابع std::ranges::end_with
۲۹) تابع std::ranges::find_last
📗 مباحث بررسی از زبان برنامهنویسی Solidity
۱) پیشتعریف و ساختاری از قرارداد
۲) انواع داده
۳) اعضای آدرس (address)
۴) الفاظ یونیکد، هگزادسیمال و شمارندهها (Enum)
۵) انواع تابع
۶) انواع مرجع (Reference Types)
۷) توابع bytes.concat و string.concat
۸) الفاظ آرایهای
۹) تخصیص آرایههای حافظه
۱۰) ارجاعات معلق به عناصر آرایه ذخیرهسازی
۱۱) برشهای آرایه (Array Slices)
۱۲) ساختار (Struct)
۱۳) انواع نگاشتها (Mapping)
۱۴) کلمهٔ کلیدی delete
۱۵) نگاشتهای تکرار پذیر (Iterable Mappings)
۱۶) تبدیل ضمنی (Implicit Conversions)
۱۷) تبدیل صریح (Explicit Conversions)
۱۸) دید کلی توابع (Function Visibility)
۱۹) توابع گیرنده (توایع گیرنده | Getter Function)
۲۰) متغیرهای حالت ثابت و تغییرناپذیر (Constant/Immutable)
۲۱) متغیرهای بازگشتی
۲۲) توابع خالص (Pure)
۲۳) دریافت اتر در سالیدیتی (دریافت تابع)
۲۴) تابع بازگشتی (Fallback)
۲۵) سربارگذاری توابع (Function Overloading)
۲۶) حل توابع اضافه بار (Overloaded Functions) و تطبیق آرگومان
۲۷) جایگزینسازی (بازنویسی) توابع
۲۸) ارثبری چندگانه
۲۹) بلاک اسمبلی درون خطی (Inline Assembly)
⚡️ این پست به صورت مداوم بهروز رسانی خواهد شد. ✅
#چالش #سیروزه #رمضان
درود بر برنامهنویس عالم!
چالش سی روزه رو آغاز میکنم 🫵🏼✍🏼 اما هدف آموزش نحوهٔ کدنویسی با C++23 و Solidity.
شما هم میتونید نکته برداری کنید، منم هدفم اینه هرچی به روز رسانی کردم رو یادداشت کنم تا دوباره برای خودم مرور بشه.
هیچ سخت نیست، تنهایی پیش برو یا با من پیش بیا، مهم اینه عمل کنی.✌🏼اگر هم برنامهنویس نیستی فقط به مفهومی که یک قرارداد میتونه ارائه بده دقت کن.
چرا باید اینارو یاد بگیری؟ چون اینارو اگه بلد باشی بهتر میتونی در مورد پروژهها تصمیمگیری کنی که روی چی سرمایهگذاری کنی، یا حتی چی بسازی!
جزئیات از برداشتم رو در طول روز منتشر خواهم کرد.👇🏼
یک فهرست هم برای این موضوع مرحله به مرحله اضافه میکنم که دسترسی به مباحث پین شده سادهتر بشه.
هدف من از تولید این فهرست در طول ۱ ماه، به اشتراکگذاری ویژگیهای جدید سیپلاسپلاس ۲۳ و همچنین بررسی ساختار و نحو زبان برنامهنویسی سالیدیتی است.
این فهرست برای کسانی که میخواهند با کمترین زمان ممکن سرنخهای مربوط به بهروز رسانیهای C++23 و یادگیری Solidity را در اختیار داشته باشند مناسب خواهد بود. امیدوارم به عنوان بخشی از جعبهابزار خودم و دیگران مفید واقع شود.
📘 بهروز رسانیها برای استاندارد C++23
۱) بررسی و کار با جریانهای std::print و ترکیبی از خاصیتهای std::format
۲) کلمهٔ کلیدی constinit
۳) جزئیات constinit و مقایسه با constexpr، const و consteval
۴) پیش پردازندههای elifdef# و elifndef# و warning#
۵) بررسی عبارت شرطی جدید if consteval / if not consteval
۶) صفت (assume)
۷) پسوند تحتالفظی (لیترالها) برای std::size_t
۸) کلاس std::mdspan و زیر عضو extents
۹) پارامتر شیء صریح this
۱۰) الگوریتمهای std::shift_left و std::shift_right
۱۱) عملگر []static
۱۲) ابزار کمکی std::unreachable
۱۳) ابزار کمکی std::to_underlying
۱۴) اعلان مستعار (alias)
۱۵) ویژگی std::move_only_function
۱۶) تابع std::forward_like
۱۷) ابزار کمکی std::invoke_r
۱۸) تابع کمکی std::bind_back
۱۹) تابع std::byteswap
۲۰) عضو std::contains
۲۱) عضو std::is_scoped_enum
۲۲) عضو std::views::zip
۲۳) عضو std::views::adjacent
۲۴) مدیریت خطا با std::expected
۲۵) ویژگی std::basic_stacktrace
۲۶)مخازن تخت std::flat_map
۲۷) تابع std::ranges::starts_with
۲۸) تابع std::ranges::end_with
۲۹) تابع std::ranges::find_last
📗 مباحث بررسی از زبان برنامهنویسی Solidity
۱) پیشتعریف و ساختاری از قرارداد
۲) انواع داده
۳) اعضای آدرس (address)
۴) الفاظ یونیکد، هگزادسیمال و شمارندهها (Enum)
۵) انواع تابع
۶) انواع مرجع (Reference Types)
۷) توابع bytes.concat و string.concat
۸) الفاظ آرایهای
۹) تخصیص آرایههای حافظه
۱۰) ارجاعات معلق به عناصر آرایه ذخیرهسازی
۱۱) برشهای آرایه (Array Slices)
۱۲) ساختار (Struct)
۱۳) انواع نگاشتها (Mapping)
۱۴) کلمهٔ کلیدی delete
۱۵) نگاشتهای تکرار پذیر (Iterable Mappings)
۱۶) تبدیل ضمنی (Implicit Conversions)
۱۷) تبدیل صریح (Explicit Conversions)
۱۸) دید کلی توابع (Function Visibility)
۱۹) توابع گیرنده (توایع گیرنده | Getter Function)
۲۰) متغیرهای حالت ثابت و تغییرناپذیر (Constant/Immutable)
۲۱) متغیرهای بازگشتی
۲۲) توابع خالص (Pure)
۲۳) دریافت اتر در سالیدیتی (دریافت تابع)
۲۴) تابع بازگشتی (Fallback)
۲۵) سربارگذاری توابع (Function Overloading)
۲۶) حل توابع اضافه بار (Overloaded Functions) و تطبیق آرگومان
۲۷) جایگزینسازی (بازنویسی) توابع
۲۸) ارثبری چندگانه
۲۹) بلاک اسمبلی درون خطی (Inline Assembly)
⚡️ این پست به صورت مداوم بهروز رسانی خواهد شد. ✅
#چالش #سیروزه #رمضان
Telegram
Compez's World
بخش تخصصی اول (بهروز رسانی سیپلاسپلاس ۲۳)
بررسی و کار با جریانهای std::print و ترکیبی از خاصیتهای std::format و کنار گذاری std::cout برای همیشه!
ویژگی std::print یک تابع جدید در سی++ ۲۳ است که برای چاپ مقادیر مختلف به طور قالببندیشده به کنسول یا…
بررسی و کار با جریانهای std::print و ترکیبی از خاصیتهای std::format و کنار گذاری std::cout برای همیشه!
ویژگی std::print یک تابع جدید در سی++ ۲۳ است که برای چاپ مقادیر مختلف به طور قالببندیشده به کنسول یا…
👍6🔥1🙏1
COMPΞZ 🧬
خب! درود بر برنامهنویس عالم! چالش سی روزه رو آغاز میکنم 🫵🏼✍🏼 اما هدف آموزش نحوهٔ کدنویسی با C++23 و Solidity. شما هم میتونید نکته برداری کنید، منم هدفم اینه هرچی به روز رسانی کردم رو یادداشت کنم تا دوباره برای خودم مرور بشه. هیچ سخت نیست، تنهایی پیش…
بخش تخصصی اول (بهروز رسانی سیپلاسپلاس ۲۳)
بررسی و کار با جریانهای
ویژگی
همچنین
### مزایای
- قالبها به طور خودکار استنباط میشوند، بنابراین نیازی به نوشتن قالبهای دستی نیست.
- تابع
- به طور کارآمد اجرا میشود.
- از حافظه به طور بهینه استفاده میکند.
- امنتر است، زیرا از خطرات امنیتی مانند سرریز بافر جلوگیری میکند.
- خواناتر است، زیرا از قالبهای واضحتر استفاده میکند.
- تابع
### موارد استفاده:
- چاپ مقادیر به طور جداگانه در خطوط جدید
- چاپ اطلاعات اشکالزدایی
- چاپ گزارشها
### مزایا:
- استفاده آسان
- قالببندی قدرتمند
- کارآمد
- قابل استفاده با انواع مختلف خروجی
### معایب:
- پیچیدگی بیشتر نسبت به توابع
- نیاز به یادگیری قالبها
### چند مثال به شکل و انواع مختلف
#### سادهترین حالت، پیشفرض بدون کدبندی قالب:
در این حالت یک رشته و یک عدد صحیح داریم و بدون قالببندی خاص توسط تابع
#### در حالت اولویتبندی هم به این شکل آکولادها رو با شمارهگذاری تعیین موقعیت کنید:
این روش در کارهای چند زبانه و کار با رشتههای پیچیده به شدت کاربردیه!
#### یک مثال تبدیلی بر مبنای قالببندی:
خروجی:
#### یک مثال دیگه شرطی
#### و یا مثالی با قالببندی مشخص اعشاری!
این هم یک مثال از سفارشیسازی بیشتر از قالببندی که در کد فوق ۳ کاراکتر از فضای خالی رو قبل از مقدار عددی اعمال کردیم:
یعنی خروجی عملاً به این صورت خواهد بود:
قبل از
#### یکم بیشتر از خصوصیات
خروجی همچین چیزی خواهد بود:
#### یا تعیین بر مبنای کاراکتر هم با استفاده از
خروجی با استاندارد جدید، ایمن و شیک بر مبنای ویژگیهای ۲۰ به بعد به این صورت میتونه باشه:
بررسی و کار با جریانهای
std::print و ترکیبی از خاصیتهای std::format و کنار گذاری std::cout برای همیشه!ویژگی
std::print یک تابع جدید در سی++ ۲۳ است که برای چاپ مقادیر مختلف به طور قالببندیشده به کنسول یا هر خروجی دیگری استفاده میشود. این تابع از انواع قالبهای مختلف برای کنترل نحوه نمایش مقادیر استفاده میکند.همچنین
std::println مشابه std::print است، اما با این تفاوت که یک کاراکتر خط جدید n\ به انتهای خروجی اضافه میکند. این تابع برای چاپ مقادیر به طور جداگانه در خطوط جدید مفید است.### مزایای
std::print:- قالبها به طور خودکار استنباط میشوند، بنابراین نیازی به نوشتن قالبهای دستی نیست.
- تابع
std::print از انواع قالبهای مختلف برای کنترل نحوهٔ نمایش مقادیر استفاده میکند.- به طور کارآمد اجرا میشود.
- از حافظه به طور بهینه استفاده میکند.
- امنتر است، زیرا از خطرات امنیتی مانند سرریز بافر جلوگیری میکند.
- خواناتر است، زیرا از قالبهای واضحتر استفاده میکند.
- تابع
std::print قابل انعطافپذیرتر است، زیرا از انواع مختلف قالبها و خروجیها پشتیبانی میکند.### موارد استفاده:
- چاپ مقادیر به طور جداگانه در خطوط جدید
- چاپ اطلاعات اشکالزدایی
- چاپ گزارشها
### مزایا:
- استفاده آسان
- قالببندی قدرتمند
- کارآمد
- قابل استفاده با انواع مختلف خروجی
### معایب:
- پیچیدگی بیشتر نسبت به توابع
printf سنتی- نیاز به یادگیری قالبها
### چند مثال به شکل و انواع مختلف
#### سادهترین حالت، پیشفرض بدون کدبندی قالب:
const std::string_view name {"Kambiz"};
const unsigned int age {34};
std::print("Hello, {}! You are {} years old.\n", name, age);در این حالت یک رشته و یک عدد صحیح داریم و بدون قالببندی خاص توسط تابع
std::print چاپش میکنیم. در اینجا قالببندی بر مبنای اولویت اعمال میشه، یعنی name در اولین آکولاد و دومین گزینه از اون یعنی age رو دریافت میکنه! یعنی اگه شما ترتیب دو متغیر رو به عنوان پارامترها تغییر بدین، نتیجه متفاوت خواهد شد!#### در حالت اولویتبندی هم به این شکل آکولادها رو با شمارهگذاری تعیین موقعیت کنید:
const std::string_view name {"Kambiz"};
const unsigned int age {34};
std::print("Hello, {1}! You are {0} years old.\n", age, name);این روش در کارهای چند زبانه و کار با رشتههای پیچیده به شدت کاربردیه!
#### یک مثال تبدیلی بر مبنای قالببندی:
const unsigned int year{2024};
std::println("default:{:}" , year);
std::println("decimal:{:d}" , year);
std::println("binary:{:b}" , year);
std::println("octal:{:o}" , year);
std::println("hexadecimal:{:x}" , year);خروجی:
default:2024
decimal:2024
binary:11111101000
octal:3750
hexadecimal:7e8
#### یک مثال دیگه شرطی
#include <print>
auto main() -> int {
bool is_admin = true;
std::string role = is_admin ? "Admin" : "Regular User";
std::println("User Role: {}", role);
}
#### و یا مثالی با قالببندی مشخص اعشاری!
#include <iostream>
#include <print>
auto main() -> int {
const double pi = 3.14159;
std::cout << std::format("Pi is approximately {:.2f}.", pi) << std::endl;
// OR
std::println("Pi is approximately {:.2f}.", pi);
}
این هم یک مثال از سفارشیسازی بیشتر از قالببندی که در کد فوق ۳ کاراکتر از فضای خالی رو قبل از مقدار عددی اعمال کردیم:
const unsigned int temperature = 20;
std::println("Current temperature: {:+3d} degrees Celsius.", temperature);
یعنی خروجی عملاً به این صورت خواهد بود:
Current temperature: +20 degrees Celsius.
قبل از
20+ سه کاراکتر فاصله بعد از : اعمال شده.#### یکم بیشتر از خصوصیات
std::format در چاپ بخوای استفاده کنی به این شکل هم ممکن هست که در ترازبندی رشتهها به کار میره:std::println( "{:<20}", "left");
std::println( "{:^20}", "centered");
std::println( "{:>20}", "right");خروجی همچین چیزی خواهد بود:
left
centered
right
#### یا تعیین بر مبنای کاراکتر هم با استفاده از
{:>تعداد کاراکتر}`، یا {:<تعداد کاراکتر}`ممکن هست.خروجی با استاندارد جدید، ایمن و شیک بر مبنای ویژگیهای ۲۰ به بعد به این صورت میتونه باشه:
import std;
auto main() -> int {
bool is_admin {true};
std::string_view name { is_admin ? "Compez" : "Kambiz"};
std::println("Hello,{:>7}!", name);
}
👍3🔥1
COMPΞZ 🧬
خب! درود بر برنامهنویس عالم! چالش سی روزه رو آغاز میکنم 🫵🏼✍🏼 اما هدف آموزش نحوهٔ کدنویسی با C++23 و Solidity. شما هم میتونید نکته برداری کنید، منم هدفم اینه هرچی به روز رسانی کردم رو یادداشت کنم تا دوباره برای خودم مرور بشه. هیچ سخت نیست، تنهایی پیش…
کد فوق کاملاً مدرنیزه هست، نه خبری از روشهای کلاسیک IO مثل `std::cout` داریم، نه خبری از سرآیند (هدر)های سنتی.
#cpp23 #update #جلسه_یکم
#cpp23 #update #جلسه_یکم
🔥2
COMPΞZ 🧬
بخش تخصصی اول (بهروز رسانی سیپلاسپلاس ۲۳) بررسی و کار با جریانهای std::print و ترکیبی از خاصیتهای std::format و کنار گذاری std::cout برای همیشه! ویژگی std::print یک تابع جدید در سی++ ۲۳ است که برای چاپ مقادیر مختلف به طور قالببندیشده به کنسول یا هر…
🔥 بخش دوم: یادگیری زبان برنامهنویسی Solidity
البته من از ۱ سال قبل شروعش کردم و این پست بازیابی شدست، ولی اینجا بهروزرسانی میدم.
## سالیدیتی چیه؟
سالیدیتی یک زبان برنامهنویسی سطح بالا، شیءگرا و کامپایلشده است که برای نوشتن قراردادهای هوشمند در بلاکچین اتریوم استفاده میشه.
این زبان شباهتهای زیادی به زبانهای برنامهنویسی محبوب مثل ++C، جاوا و جاوا اسکریپت داره، و ساختارش خیلی شبیه ++C هست. ذاتاً هم با ++C ساخته شده و قدرتش رو ازش به ارث برده.
✅ ویژگیهای Solidity:
🔹 زبان سطح بالا مخصوص بلاکچین
🔹 شیءگرای کامل
🔹 مختص نوشتن قراردادهای هوشمند
## سالیدیتی کجا کاربرد داره؟
همونطور که قبلاً در مورد بلاکچین و وب۳ گفته بودم، قراردادهای هوشمند به یک زبان ایمن و اختصاصی نیاز دارن که فقط متمرکز روی این موضوع باشه.
📌 قراردادهای هوشمند چیه؟
برنامههایی که روی بلاکچین بهطور خودکار اجرا میشن و هیچکس نمیتونه اونها رو تغییر بده.
📌 عنوان DApps (برنامههای غیرمتمرکز)
برنامههایی که روی بلاکچین اجرا میشن و توسط هیچ فرد یا سازمانی کنترل نمیشن. یعنی اگه برنامهای رو روی بلاکچین اجرا کنی، دیگه قابل تغییر نیست!
📌 نوشتن توکنهای هوشمند
توکنهای دیجیتالی که روی بلاکچین اجرا میشن و بهعنوان دارایی دیجیتال استفاده میشن.
## مزایای Solidity
✅ امن و قابل اعتماد
✅ کامپایلری و سریع
✅ دارای جامعه توسعهدهندگان فعال
## معایب Solidity
❌ پیچیدگی بالا و نیاز به دانش تخصصی بلاکچین
❌ زبان نسبتاً جدید و در حال توسعه
## نمونه کد ساده در Solidity
📌 توضیحات کد:
🔹 خط اول مشخص میکنه که کد تحت لایسنس GPL نسخه ۳.۰ منتشر شده.
🔹این قسمت
🔹این قسمت
📌 مقایسه با ++C
در C++ اگه
یعنی
🔥 نتیجهگیری:
این زبان فوقالعاده مهمه، مخصوصاً برای قراردادهای هوشمند و پروژههای Web3. به نظرم برنامهنویس یا حتی سرمایهگذارهای حرفهای باید بتونن کدهای Solidity رو بخونن، چون بررسی قراردادها توی پروژههای توکنی، ایردراپها و... خیلی مهمه. 😌
⏳ این فقط یه شروع بود، توی یک ماه آینده باید این مبحث رو ببندم و برم سراغ کارهای مهمتر.
#Solidity #Web3 #Update
البته من از ۱ سال قبل شروعش کردم و این پست بازیابی شدست، ولی اینجا بهروزرسانی میدم.
## سالیدیتی چیه؟
سالیدیتی یک زبان برنامهنویسی سطح بالا، شیءگرا و کامپایلشده است که برای نوشتن قراردادهای هوشمند در بلاکچین اتریوم استفاده میشه.
این زبان شباهتهای زیادی به زبانهای برنامهنویسی محبوب مثل ++C، جاوا و جاوا اسکریپت داره، و ساختارش خیلی شبیه ++C هست. ذاتاً هم با ++C ساخته شده و قدرتش رو ازش به ارث برده.
✅ ویژگیهای Solidity:
🔹 زبان سطح بالا مخصوص بلاکچین
🔹 شیءگرای کامل
🔹 مختص نوشتن قراردادهای هوشمند
## سالیدیتی کجا کاربرد داره؟
همونطور که قبلاً در مورد بلاکچین و وب۳ گفته بودم، قراردادهای هوشمند به یک زبان ایمن و اختصاصی نیاز دارن که فقط متمرکز روی این موضوع باشه.
📌 قراردادهای هوشمند چیه؟
برنامههایی که روی بلاکچین بهطور خودکار اجرا میشن و هیچکس نمیتونه اونها رو تغییر بده.
📌 عنوان DApps (برنامههای غیرمتمرکز)
برنامههایی که روی بلاکچین اجرا میشن و توسط هیچ فرد یا سازمانی کنترل نمیشن. یعنی اگه برنامهای رو روی بلاکچین اجرا کنی، دیگه قابل تغییر نیست!
📌 نوشتن توکنهای هوشمند
توکنهای دیجیتالی که روی بلاکچین اجرا میشن و بهعنوان دارایی دیجیتال استفاده میشن.
## مزایای Solidity
✅ امن و قابل اعتماد
✅ کامپایلری و سریع
✅ دارای جامعه توسعهدهندگان فعال
## معایب Solidity
❌ پیچیدگی بالا و نیاز به دانش تخصصی بلاکچین
❌ زبان نسبتاً جدید و در حال توسعه
## نمونه کد ساده در Solidity
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16 <0.9.0;
contract SimpleStorage {
uint storedData;
function set(uint x) public {
storedData = x;
}
function get() public view returns (uint) {
return storedData;
}
}
📌 توضیحات کد:
🔹 خط اول مشخص میکنه که کد تحت لایسنس GPL نسخه ۳.۰ منتشر شده.
🔹این قسمت
pragma solidity >=0.4.16 <0.9.0; یعنی این کد فقط روی نسخههای خاصی از Solidity اجرا میشه. 🔹این قسمت
SimpleStorage یک قرارداد هوشمند است که مقدار storedData رو ذخیره و بازیابی میکنه. 📌 مقایسه با ++C
در C++ اگه
get() رو به سبک Solidity بنویسی، به این شکل میشه: uint get() const {
return storedData;
}یعنی
const برای مشخص کردن تابع فقط خواندنی مشابه view در Solidity استفاده شده. 🔥 نتیجهگیری:
این زبان فوقالعاده مهمه، مخصوصاً برای قراردادهای هوشمند و پروژههای Web3. به نظرم برنامهنویس یا حتی سرمایهگذارهای حرفهای باید بتونن کدهای Solidity رو بخونن، چون بررسی قراردادها توی پروژههای توکنی، ایردراپها و... خیلی مهمه. 😌
⏳ این فقط یه شروع بود، توی یک ماه آینده باید این مبحث رو ببندم و برم سراغ کارهای مهمتر.
#Solidity #Web3 #Update
🔥2