یعنی باید بشینی پشت سیستم و طبق دستورالعملهای فارکستر یه Mini-App طراحی کنی.
نیازمندیهاش چی هست و چه تخصصهایی لازم داره؟
۱) خلاق و بخش منطق مغزت باید خوب باشه.
۲) تخصص کافی و لازم در حوزهٔ نرمافزار داشته باشی، باید بدونی یک نرمافزار در سطوح و لایههای مختلف چطوری کار میکنه.
۳) برنامهنویس خوبی باشی و به حداقل زبانهای برنامهنویسی JavaScript یا TypeScript تسلط کافی داشته باشی تا بتونی نقشهٔ ذهنیت رو باهاش بکشی! مثل مداد یا خودکار بهش نیاز داری.
۴) اگر همچین خاصیتهایی داشتی بعدش میتونی طبق این دستورالعمل در فارکستر شروع کنی برای توسعه و یا ساخت و ساز.
از نظر من سادست؟ نه! امید واهی نمیدم که همه میتونن چون واقعاً تخصص لازم داره! من هم اگه میسازم بر مبنای سالها تجربه و تخصصی هست که تو حوزهٔ مهندسی کامپیوتر و نرمافزار دارم.
اما از بیخ هم نمیگم نمیشه! اگه من تونستم خب شما هم میتونید، ولی باید توجه کنی که باید یک طراح و مهندس نرمافزار باشی. :)
نیازمندیهاش چی هست و چه تخصصهایی لازم داره؟
۱) خلاق و بخش منطق مغزت باید خوب باشه.
۲) تخصص کافی و لازم در حوزهٔ نرمافزار داشته باشی، باید بدونی یک نرمافزار در سطوح و لایههای مختلف چطوری کار میکنه.
۳) برنامهنویس خوبی باشی و به حداقل زبانهای برنامهنویسی JavaScript یا TypeScript تسلط کافی داشته باشی تا بتونی نقشهٔ ذهنیت رو باهاش بکشی! مثل مداد یا خودکار بهش نیاز داری.
۴) اگر همچین خاصیتهایی داشتی بعدش میتونی طبق این دستورالعمل در فارکستر شروع کنی برای توسعه و یا ساخت و ساز.
از نظر من سادست؟ نه! امید واهی نمیدم که همه میتونن چون واقعاً تخصص لازم داره! من هم اگه میسازم بر مبنای سالها تجربه و تخصصی هست که تو حوزهٔ مهندسی کامپیوتر و نرمافزار دارم.
اما از بیخ هم نمیگم نمیشه! اگه من تونستم خب شما هم میتونید، ولی باید توجه کنی که باید یک طراح و مهندس نرمافزار باشی. :)
👍2
COMPΞZ 🧬
یعنی باید بشینی پشت سیستم و طبق دستورالعملهای فارکستر یه Mini-App طراحی کنی. نیازمندیهاش چی هست و چه تخصصهایی لازم داره؟ ۱) خلاق و بخش منطق مغزت باید خوب باشه. ۲) تخصص کافی و لازم در حوزهٔ نرمافزار داشته باشی، باید بدونی یک نرمافزار در سطوح و لایههای…
سر نخهای پیشنهادی چیه؟
چطور میشه خیلی سریع به موضوعات مهم تخصص نرمافزار دسترسی داشت؟
قبلاً در این خصوص یه مقاله نوشته بودم مسائل خیلی بیشتری از اینها میتونه بهش اضافه بشه.
خلاصهای از ملزومات و نقشهٔ راه ساخت و ساز محصول نرمافزاری
چطور میشه خیلی سریع به موضوعات مهم تخصص نرمافزار دسترسی داشت؟
قبلاً در این خصوص یه مقاله نوشته بودم مسائل خیلی بیشتری از اینها میتونه بهش اضافه بشه.
خلاصهای از ملزومات و نقشهٔ راه ساخت و ساز محصول نرمافزاری
مرجع رسمی سیپلاسپلاس ایران
خلاصهای از ملزومات و نقشهٔ راه ساخت و ساز محصول نرمافزاری - علم و دانش - مرجع رسمی سیپلاسپلاس ایران
سلام و درود، این اواخر راجع به مشورت و راهنماییها خیلی ساده به قضیه نگاه میشه، همه فکر کردن کشکه و فقط با دونستن JS یا QML میشه محصول ساخت. البته این مثال JS و QML یک مثال هست و این مسئله در همهٔ ابزارها و حول محور حوزهٔ کامپیوتر و نرمافزار به چشم میخوره،…
COMPΞZ 🧬
سر نخهای پیشنهادی چیه؟ چطور میشه خیلی سریع به موضوعات مهم تخصص نرمافزار دسترسی داشت؟ قبلاً در این خصوص یه مقاله نوشته بودم مسائل خیلی بیشتری از اینها میتونه بهش اضافه بشه. خلاصهای از ملزومات و نقشهٔ راه ساخت و ساز محصول نرمافزاری
از نظر من حداقل مواردی که (به طور خیلی خیلی خلاصه و محدود) نیاز هست تا یک متخصص بتونه پاسخگوی تصمیمگیری نقشهٔ توسعهٔ یک محصول برای مشتری در ابعاد مختلف و سطوح متفاوت از حوزههای موجود در قالب اصولی باشه به صورت زیر هستند:
۱- آشنا مبانی کامپیوتر که امر طبیعیه (شامل درک و فهم مسائل و نحوهٔ حلشون متناسب با پلتفرم اجرایی محصول)
۲- آشنا به ساختار نوع محصول استاندارد در یک حوزه مثل: وب، آیاواس، اندروید یا دسکتاپهای مختلف مثل لینوکس، مک و ویندوز، اینترنت اشیاء و دیگر موارد.
۳- آشنا به فلسفهٔ بکاند و فرانتاند یا ترکیبی از این دو به همراه ابزارهای مناسب.
۴- آشنا به اصول طراحی UI/UX به عنوان یک نیاز و یک فاکتور مهم در ساخت محصولی که وابسته به عملکرد کاربر داره و در حوزهٔ فرانتاند مهم و کاربردی هست.
۵- آشنا به اصول SOLID و امثالش مهم هستند.
۶- آشنا اصول برنامهریزی ساخت بانک اطلاعاتی، اینکه از چه بانک اطلاعاتیای استفاده کنی و چرا؟
۷- آشنا به ارتباطات دادهای، جداول و ارتباط بین فیلدها، جدوال و روشهای درست تبادل اطلاعات مابینی دادهها.
۸- آشنا و تسلط کافی به یک محیط توسعه و ادغام ابزارها و محیط طراحی برای هدف.
۹- آشنا به معماری ساختار و رابطهای برنامهنویسی (Api)
۱۰- آشنا به استانداردهای Http، درک و مدیریت درخواست، پاسخها و ...
۱۱- آشنا به الگوهای طراحی برنامهنویسی (DP)
۱۲- آشنا به روشهای نگهداری و آزمایش نرمافزار و کدها به خصوص درک مبحث Fault tolerance.
۱۳- آشنا به روشهای اطمینانسازی و ایمنسازی پردازشهای داخلی نرمافزار برای جلوگیری یا دشوار سازی نفوز و خرابکاری
۱۴- آشنا به روشها و معماریهای احراز هویت و نحوهٔ ادغامش با نرمافزار مثل:JWT, OAuth, AWS و غیره...
۱۵- آشنا به نوع پارادایمهای زبان برنامهنویسی، در قالبهای (دستوری) Imperative و (اعلانی) Declarative مثل OOP، functional و دیگر موارد.
۱۶- آشنا به سبک معماری نرمافزاری (Microservice یا مثلاً Monolith) مزایا و معایبشون.
۱۷- آشنا به سبک معماری طراحی مانند MVC در طراحی بدنهٔ محصول.
۱۸- آشنا به سبک و الگوهای طراحی ساختاری در بکاند مانند Builder، Abstract، Factory و غیره.
۱۹- آشنا به ساختار یک زبان (در صورتی که میخواین جوابگوی مسائلِ پیش آمده باشید) کالبدشکافی زیرپوستی و عمیق یک زبان مهمه.
۲۰- آشنا و درک کامپایلرها و مفسرها، تفاوتها و شیوههای عملکردیشون نسبت به کدهای بهینه شده و عادی.
۲۱- آشنا و درک مدلهای مختلفی از سیستمهای توزیع شده مثل IaaS، PaaS، SaaS یا FaaS.
۲۲- آشنا به ابزارهای ساخت و فرآیند کاری اونها مثل CMake، NMake، QMake و غیره.
۲۳- آشنا به روشهای مدیریت وابستگیهای نرمافزار و ابزارهای لازم برای بستهبندی بهتر خروجی.
۲۴- آشنا به روشهای کدنویسی قابل آزمایش (Unit Test) و استفاده از ابزارهایی مثل CTest, GTest, Catch2 و غیره.
۲۵- آشنا به توسعهٔ آزمون محور (Test Driven- Development)
۲۶- آشنا به گامها و شرایط نسخهنگاری و مراحل توسعهٔ نرمافزار (SDP)
۲۷- آشنا به روشهای امنیت در کد و توسعه به شیوههای بررسی از طریق Fuzz-Test، Sanitizer، آنالیزرهای پویا و ایستا و غیره...
۲۸-آشنا به قوائد طراحی بر پایهٔ خدمات مبتدی بر معماری ابری برای خدمات پیامی، وبسرویسها، پردازش و غیره.
۲۹- در سطوح وب آشنا به مکانیزم شاخص بندی، فاکتورهای SEO و شیوههای درست بهبود صفحات وب.
۳۰- آشنا به روشهای به کار گیری و پیادهسازی ثبت کنندهٔ وقایع در دل محصول و روشهای بازخورد برای توسعهٔ بهتر به همراه مانیتورینگ، نظارت و تریسینگ.
۳۱- در شرایط لزوم آشنا به نحوهٔ به کار گیری و دلیل استفاده از فناوریهایی مثل Redis، Memcached و غیره.
۳۲- آشنا و درک صحیح از مفاهیم همزمانی (Concurrency) و روشهای به کار گیری آن نسبت به زبان برنامهنویسی و شرایط مناسب استفاده.
۳۳- آشنا به سبک و قوائد و ساختار زبانهای برنامهنویسی و فرآیند ساخت و ترجمه.
۳۴- و تا صدها گزینهٔ دیگه میتونم لیست کنم اینجا که اگه انتخابتون زبانهای نزدیک به سیستم باشه این داستان در ادامهٔ این توضیحات سر به فلک میکشه نمونش کامپایلرها خودشون شونصد جور مباحث دارند، پلتفرمها ومعماریهای پردازندهای هم در این زبانها مهمن و شما حتی تا عمق سیستمعامل و رابطهای اونها و نحوهٔ رفتارشون باید اطلاعات کافی داشته باشید که هر کدوم به نوبهٔ خودشون هزاران صفحه میشه راجع بهشون کتاب معرفی کرد.
این لیست چیزی بود که به زبان بسیار بسیار ساده شده و خیلی خلاصه به ذهنم رسید تا بدانید همچین هم الکی نیست ای عزیزانی که فتواهای صد من یه غاز میدین و این مسائل رو حل شده میدونید!
۱- آشنا مبانی کامپیوتر که امر طبیعیه (شامل درک و فهم مسائل و نحوهٔ حلشون متناسب با پلتفرم اجرایی محصول)
۲- آشنا به ساختار نوع محصول استاندارد در یک حوزه مثل: وب، آیاواس، اندروید یا دسکتاپهای مختلف مثل لینوکس، مک و ویندوز، اینترنت اشیاء و دیگر موارد.
۳- آشنا به فلسفهٔ بکاند و فرانتاند یا ترکیبی از این دو به همراه ابزارهای مناسب.
۴- آشنا به اصول طراحی UI/UX به عنوان یک نیاز و یک فاکتور مهم در ساخت محصولی که وابسته به عملکرد کاربر داره و در حوزهٔ فرانتاند مهم و کاربردی هست.
۵- آشنا به اصول SOLID و امثالش مهم هستند.
۶- آشنا اصول برنامهریزی ساخت بانک اطلاعاتی، اینکه از چه بانک اطلاعاتیای استفاده کنی و چرا؟
۷- آشنا به ارتباطات دادهای، جداول و ارتباط بین فیلدها، جدوال و روشهای درست تبادل اطلاعات مابینی دادهها.
۸- آشنا و تسلط کافی به یک محیط توسعه و ادغام ابزارها و محیط طراحی برای هدف.
۹- آشنا به معماری ساختار و رابطهای برنامهنویسی (Api)
۱۰- آشنا به استانداردهای Http، درک و مدیریت درخواست، پاسخها و ...
۱۱- آشنا به الگوهای طراحی برنامهنویسی (DP)
۱۲- آشنا به روشهای نگهداری و آزمایش نرمافزار و کدها به خصوص درک مبحث Fault tolerance.
۱۳- آشنا به روشهای اطمینانسازی و ایمنسازی پردازشهای داخلی نرمافزار برای جلوگیری یا دشوار سازی نفوز و خرابکاری
۱۴- آشنا به روشها و معماریهای احراز هویت و نحوهٔ ادغامش با نرمافزار مثل:JWT, OAuth, AWS و غیره...
۱۵- آشنا به نوع پارادایمهای زبان برنامهنویسی، در قالبهای (دستوری) Imperative و (اعلانی) Declarative مثل OOP، functional و دیگر موارد.
۱۶- آشنا به سبک معماری نرمافزاری (Microservice یا مثلاً Monolith) مزایا و معایبشون.
۱۷- آشنا به سبک معماری طراحی مانند MVC در طراحی بدنهٔ محصول.
۱۸- آشنا به سبک و الگوهای طراحی ساختاری در بکاند مانند Builder، Abstract، Factory و غیره.
۱۹- آشنا به ساختار یک زبان (در صورتی که میخواین جوابگوی مسائلِ پیش آمده باشید) کالبدشکافی زیرپوستی و عمیق یک زبان مهمه.
۲۰- آشنا و درک کامپایلرها و مفسرها، تفاوتها و شیوههای عملکردیشون نسبت به کدهای بهینه شده و عادی.
۲۱- آشنا و درک مدلهای مختلفی از سیستمهای توزیع شده مثل IaaS، PaaS، SaaS یا FaaS.
۲۲- آشنا به ابزارهای ساخت و فرآیند کاری اونها مثل CMake، NMake، QMake و غیره.
۲۳- آشنا به روشهای مدیریت وابستگیهای نرمافزار و ابزارهای لازم برای بستهبندی بهتر خروجی.
۲۴- آشنا به روشهای کدنویسی قابل آزمایش (Unit Test) و استفاده از ابزارهایی مثل CTest, GTest, Catch2 و غیره.
۲۵- آشنا به توسعهٔ آزمون محور (Test Driven- Development)
۲۶- آشنا به گامها و شرایط نسخهنگاری و مراحل توسعهٔ نرمافزار (SDP)
۲۷- آشنا به روشهای امنیت در کد و توسعه به شیوههای بررسی از طریق Fuzz-Test، Sanitizer، آنالیزرهای پویا و ایستا و غیره...
۲۸-آشنا به قوائد طراحی بر پایهٔ خدمات مبتدی بر معماری ابری برای خدمات پیامی، وبسرویسها، پردازش و غیره.
۲۹- در سطوح وب آشنا به مکانیزم شاخص بندی، فاکتورهای SEO و شیوههای درست بهبود صفحات وب.
۳۰- آشنا به روشهای به کار گیری و پیادهسازی ثبت کنندهٔ وقایع در دل محصول و روشهای بازخورد برای توسعهٔ بهتر به همراه مانیتورینگ، نظارت و تریسینگ.
۳۱- در شرایط لزوم آشنا به نحوهٔ به کار گیری و دلیل استفاده از فناوریهایی مثل Redis، Memcached و غیره.
۳۲- آشنا و درک صحیح از مفاهیم همزمانی (Concurrency) و روشهای به کار گیری آن نسبت به زبان برنامهنویسی و شرایط مناسب استفاده.
۳۳- آشنا به سبک و قوائد و ساختار زبانهای برنامهنویسی و فرآیند ساخت و ترجمه.
۳۴- و تا صدها گزینهٔ دیگه میتونم لیست کنم اینجا که اگه انتخابتون زبانهای نزدیک به سیستم باشه این داستان در ادامهٔ این توضیحات سر به فلک میکشه نمونش کامپایلرها خودشون شونصد جور مباحث دارند، پلتفرمها ومعماریهای پردازندهای هم در این زبانها مهمن و شما حتی تا عمق سیستمعامل و رابطهای اونها و نحوهٔ رفتارشون باید اطلاعات کافی داشته باشید که هر کدوم به نوبهٔ خودشون هزاران صفحه میشه راجع بهشون کتاب معرفی کرد.
این لیست چیزی بود که به زبان بسیار بسیار ساده شده و خیلی خلاصه به ذهنم رسید تا بدانید همچین هم الکی نیست ای عزیزانی که فتواهای صد من یه غاز میدین و این مسائل رو حل شده میدونید!
👍1🙏1
COMPΞZ 🧬
سر نخهای پیشنهادی چیه؟ چطور میشه خیلی سریع به موضوعات مهم تخصص نرمافزار دسترسی داشت؟ قبلاً در این خصوص یه مقاله نوشته بودم مسائل خیلی بیشتری از اینها میتونه بهش اضافه بشه. خلاصهای از ملزومات و نقشهٔ راه ساخت و ساز محصول نرمافزاری
در ادامه اصل ماجرا خیلی فراتر از اینها هم هست که بخوای حساب کتاب کنی میبینی باید هفت خان رستم رو فتح کنی تا در تمامی سطوح پاسخگو باشی، این امر شدنی هست اما زمانی که شما محدود به یک موضوع باشید قطعاً درک همهٔ مسائل محدود و ناتوان در اجرای آن خواهید شد.
👍1
COMPΞZ 🧬
در ادامه اصل ماجرا خیلی فراتر از اینها هم هست که بخوای حساب کتاب کنی میبینی باید هفت خان رستم رو فتح کنی تا در تمامی سطوح پاسخگو باشی، این امر شدنی هست اما زمانی که شما محدود به یک موضوع باشید قطعاً درک همهٔ مسائل محدود و ناتوان در اجرای آن خواهید شد.
- وقتی میگم آشنا قطعاً در حد حروف الفبا کافی نیست، باید در حد نیاز تسلط و درک کافی ازشون وجود داشته باشه.
- همهٔ اینها رو باید در کمترین زمان ممکن نسبت به یک مشتری، محصول و نیاز تشخیص بدین و انتخاب کنید، به این کار میگن ارزیابی محصول بر اساس دانستههای فنی که تماماً متکی بر دانش و تجربهٔ شماست. (کارشناسی پروژه دقیقاً همین موضوع است).
- برای بهتر شدن و حرفهای تر شدن هم باید فراتر از اینها پیش برید و در قالب «مثلث دانش» بهبودش بدهید.
- محصولات معتبر جهانی حاصلِ چنین نقشههای پیشبردی هستند و اصول تخصصی و مهندسی رو رعایت میکنن تا به یک درجهٔ کیفی موفق و زبان زد میرسند. شاید این مسائل از نظر یک برنامهنویس ساده و نه چندان با تجربه مهم نباشه، اما در سطح کیفی یک محصول نرمافزاری همهٔ این مسائل مهم تلقی میشوند.
- همهٔ اینها رو باید در کمترین زمان ممکن نسبت به یک مشتری، محصول و نیاز تشخیص بدین و انتخاب کنید، به این کار میگن ارزیابی محصول بر اساس دانستههای فنی که تماماً متکی بر دانش و تجربهٔ شماست. (کارشناسی پروژه دقیقاً همین موضوع است).
- برای بهتر شدن و حرفهای تر شدن هم باید فراتر از اینها پیش برید و در قالب «مثلث دانش» بهبودش بدهید.
- محصولات معتبر جهانی حاصلِ چنین نقشههای پیشبردی هستند و اصول تخصصی و مهندسی رو رعایت میکنن تا به یک درجهٔ کیفی موفق و زبان زد میرسند. شاید این مسائل از نظر یک برنامهنویس ساده و نه چندان با تجربه مهم نباشه، اما در سطح کیفی یک محصول نرمافزاری همهٔ این مسائل مهم تلقی میشوند.
👍1
COMPΞZ 🧬
به این تصویر دقت کن.
حالا اینو با دقت بخون...
دانستن این که وسعت و عمق دانشِ ما چقدر است بسیار مهمه، ما طبق همین اصول یک هرم نمایش از سطح دانش و نیازهای تکنیکی بر اساس «اصول معماری نرمافزار» (Software Architecture Fundamentals) داریم که به سه حالت ساده خلاصه میشه:
۱- چیزهایی که میدانیم.
۲- چیزهایی که میدانیم وجود دارند و در موردشان شنیدهایم، اما دانش عمیقی راجع به آنها نداریم.
۳- چیزهایی که نمیدانیم که هستند و در موردشان چیزی نمیدانیم!
به طور خلاصه مواردی که در گزینهٔ اول هستند، شامل ابزارها، زبانهای برنامهنویسی، فریمورکها، کتابخانههای تحت فناوری هست که شما با اونها آشنا هستید و در انجام کارهای روزمره ازشون هم استفاده میکنید خیلی از افراد غیر متخصص همینطور هستند و گروههای تلگرامی و افراد بسیاری وجود داره که با ادعای گزینهٔ اول اصلاً در جریان گزینههای دوم و سوم قرار نمیگیرند و در همین تاریکی خودشون رو کامل میبینند و حتی صاحب نظر هم میدونن.
در گزینهٔ دوم، مواردی هستند که شما صرفاً در موردشون شنیدهاید و تجربهای به صورت واقعی و عملی باهاشون ندارید. برای مثال، یک برنامهنویس سی++ درسته که با هسته، نحو و کتابخانهٔ پیشفرض و شاید با کتابخانههای دیگر اون زبان کار میکنه، اما احتمال این که در بحث پردازش تصویر کار نکرده باشه وجود داره، اما با این حال در موردشون شنیده و میدونه چیزهایی هستند که در موردشون چیزی نمیدونه.
گزینهٔ سوم بیشترین دانش مورد نیازی هست که در وسیعترین بخش از «مثلث دانش» مطرح میشه که خودش زیر ساختهای مربوط به همین زبانها، ابزارها، فریمورک، سیستمعامل، سختافزار و غیره هست که داشتن اطلاعات و دانش کافی در این باره به شما اجازه میده تا راه حلهای بهتری برای حل مسئله پیدا کنید. چون در این سطح شما به بیشترین دانش دسترسی دارید و میتونید مسئله رو ارزیابی، راه حلها رو پیشنهاد و اون رو به نتیجه برسونید. اما خب همه در این حد نیستند و حتی نمیدونن که همچین سطحی وجود داره و به خیال خودش مهم نیستند یا لازم نیستند.
بهتره بدونید یک توسعهدهنده برای اینکه بتونه تخصص، شغل و مهارتش رو حفظ کنه باید در مورد احتمالات، پیشبینیها و بهروز رسانیهای لازم رو داشته باشه؛ به طور خلاصه اطلاعات و دانش قدیمی در صورتی که بهروز رسانی نشوند برای نظرات قطعی و کافی بودن در به کار گیری یک شیوهٔ جدید ملاک نیستند و یک توسعهدهنده باید سعی کنه در بالاترین سطح از «مثلث دانش» خودش رو بهروز نگهداره که گفتم شامل ابزارها، زبانها، شیوهها و غیره هستند.
دانستن این که وسعت و عمق دانشِ ما چقدر است بسیار مهمه، ما طبق همین اصول یک هرم نمایش از سطح دانش و نیازهای تکنیکی بر اساس «اصول معماری نرمافزار» (Software Architecture Fundamentals) داریم که به سه حالت ساده خلاصه میشه:
۱- چیزهایی که میدانیم.
۲- چیزهایی که میدانیم وجود دارند و در موردشان شنیدهایم، اما دانش عمیقی راجع به آنها نداریم.
۳- چیزهایی که نمیدانیم که هستند و در موردشان چیزی نمیدانیم!
به طور خلاصه مواردی که در گزینهٔ اول هستند، شامل ابزارها، زبانهای برنامهنویسی، فریمورکها، کتابخانههای تحت فناوری هست که شما با اونها آشنا هستید و در انجام کارهای روزمره ازشون هم استفاده میکنید خیلی از افراد غیر متخصص همینطور هستند و گروههای تلگرامی و افراد بسیاری وجود داره که با ادعای گزینهٔ اول اصلاً در جریان گزینههای دوم و سوم قرار نمیگیرند و در همین تاریکی خودشون رو کامل میبینند و حتی صاحب نظر هم میدونن.
در گزینهٔ دوم، مواردی هستند که شما صرفاً در موردشون شنیدهاید و تجربهای به صورت واقعی و عملی باهاشون ندارید. برای مثال، یک برنامهنویس سی++ درسته که با هسته، نحو و کتابخانهٔ پیشفرض و شاید با کتابخانههای دیگر اون زبان کار میکنه، اما احتمال این که در بحث پردازش تصویر کار نکرده باشه وجود داره، اما با این حال در موردشون شنیده و میدونه چیزهایی هستند که در موردشون چیزی نمیدونه.
گزینهٔ سوم بیشترین دانش مورد نیازی هست که در وسیعترین بخش از «مثلث دانش» مطرح میشه که خودش زیر ساختهای مربوط به همین زبانها، ابزارها، فریمورک، سیستمعامل، سختافزار و غیره هست که داشتن اطلاعات و دانش کافی در این باره به شما اجازه میده تا راه حلهای بهتری برای حل مسئله پیدا کنید. چون در این سطح شما به بیشترین دانش دسترسی دارید و میتونید مسئله رو ارزیابی، راه حلها رو پیشنهاد و اون رو به نتیجه برسونید. اما خب همه در این حد نیستند و حتی نمیدونن که همچین سطحی وجود داره و به خیال خودش مهم نیستند یا لازم نیستند.
بهتره بدونید یک توسعهدهنده برای اینکه بتونه تخصص، شغل و مهارتش رو حفظ کنه باید در مورد احتمالات، پیشبینیها و بهروز رسانیهای لازم رو داشته باشه؛ به طور خلاصه اطلاعات و دانش قدیمی در صورتی که بهروز رسانی نشوند برای نظرات قطعی و کافی بودن در به کار گیری یک شیوهٔ جدید ملاک نیستند و یک توسعهدهنده باید سعی کنه در بالاترین سطح از «مثلث دانش» خودش رو بهروز نگهداره که گفتم شامل ابزارها، زبانها، شیوهها و غیره هستند.
👍1
ویژگی
قبل از هر چیز بهتر است بدانیم که در برنامه نویسی کامپیوتری، کدِ غیرقابل دسترسی، بخشی از کد منبع یک برنامه است که هرگز نمیتواند اجرا شود، زیرا هیچ مسیر کنترلی برای جریان کد از بقیه برنامه وجود ندارد. در سیپلاسپلاس نیز بعضاً در صورت نقض برخی از قوانین زبان، کل برنامه در مورد آن بخش بیمعنی میشود. بنابراین ابزار
هدف از به کارگیری این ویژگی:
- نشان دادن به کامپایلر که مسیر کد فعلی در شرایط عادی اجرای برنامه غیرقابل دسترس است.
- فعال کردن کامپایلر برای انجام بهینهسازیها بر اساس این دانش (به عنوان مثال، حذف کد غیرقابل دسترس در ساختهای Release).
- ممکن است برای ابزارهای تحلیل ایستا (Static Analyzer) برای تشخیص خطاهای احتمالی یا کد مرده استفاده شود.
- مزیت این ویژگی برای استفاده در بهبود مدیریت خطا، دستورات سوئیچ و یا حلقههاست.
فرض کنید تابعی داریم که یک عدد صحیح را به عنوان ورودی میگیرد و باید آن را بین ۰ و ۱۲۸ بررسی کند. اگر عدد خارج از این محدوده باشد، تابع باید یک خطا را به کاربر گزارش دهد.
- وضوح کد، به وضوح نشان میدهد که کد بعد از std::unreachable غیرقابل دسترس است.
- بهینهسازی، به کامپایلر اجازه میدهد تا کد غیرقابل دسترس را حذف کند.
- تشخیص خطا، در صورت رسیدن به کد بعد از std::unreachable، نشاندهنده یک خطای منطقی در برنامه است.
#cpp20 #cpp23 #ub #unreachable #چالش #سیروزه #روز_دوازدهم
std::unreachable به عنوان یک ابزار پشتیبانیقبل از هر چیز بهتر است بدانیم که در برنامه نویسی کامپیوتری، کدِ غیرقابل دسترسی، بخشی از کد منبع یک برنامه است که هرگز نمیتواند اجرا شود، زیرا هیچ مسیر کنترلی برای جریان کد از بقیه برنامه وجود ندارد. در سیپلاسپلاس نیز بعضاً در صورت نقض برخی از قوانین زبان، کل برنامه در مورد آن بخش بیمعنی میشود. بنابراین ابزار
std::unreachable که به عنوان گزینهای در سرآیند (هدر) <utility> معرفی شده است وضعیت نامشخص را فرا میخواند.هدف از به کارگیری این ویژگی:
- نشان دادن به کامپایلر که مسیر کد فعلی در شرایط عادی اجرای برنامه غیرقابل دسترس است.
- فعال کردن کامپایلر برای انجام بهینهسازیها بر اساس این دانش (به عنوان مثال، حذف کد غیرقابل دسترس در ساختهای Release).
- ممکن است برای ابزارهای تحلیل ایستا (Static Analyzer) برای تشخیص خطاهای احتمالی یا کد مرده استفاده شود.
- مزیت این ویژگی برای استفاده در بهبود مدیریت خطا، دستورات سوئیچ و یا حلقههاست.
فرض کنید تابعی داریم که یک عدد صحیح را به عنوان ورودی میگیرد و باید آن را بین ۰ و ۱۲۸ بررسی کند. اگر عدد خارج از این محدوده باشد، تابع باید یک خطا را به کاربر گزارش دهد.
import std;
void validateInput(int value)
{
if (value < 0 || value > 128)
{
std::cerr << "Error: Value must be between 0 and 128.\n";
std::unreachable();
}
}
auto main() -> int {
validateInput(128);
validateInput(-128);
}
- وضوح کد، به وضوح نشان میدهد که کد بعد از std::unreachable غیرقابل دسترس است.
- بهینهسازی، به کامپایلر اجازه میدهد تا کد غیرقابل دسترس را حذف کند.
- تشخیص خطا، در صورت رسیدن به کد بعد از std::unreachable، نشاندهنده یک خطای منطقی در برنامه است.
#cpp20 #cpp23 #ub #unreachable #چالش #سیروزه #روز_دوازدهم
❤2
COMPΞZ 🧬
ویژگی std::unreachable به عنوان یک ابزار پشتیبانی قبل از هر چیز بهتر است بدانیم که در برنامه نویسی کامپیوتری، کدِ غیرقابل دسترسی، بخشی از کد منبع یک برنامه است که هرگز نمیتواند اجرا شود، زیرا هیچ مسیر کنترلی برای جریان کد از بقیه برنامه وجود ندارد. در سیپلاسپلاس…
بخش تخصصی دوم (بهروز رسانی Solidity) |ساختار (Struct)
در Solidity راهی برای تعریف انواع جدید در قالب ساختار ارائه میشود؛ یک ساختار یک نوع سفارشی تعریف شده است که به شما امکان میدهد گروهی از متغیرها را تحت یک نام واحد کپسوله کنید. این شبیه به ساختار در زبان های برنامه نویسی دیگر مانند C یا ++C است.
انواع ساختاری میتوانند در داخل نگاشتها (mappings) و آرایهها استفاده شوند و خود ممکن است شامل نگاشتها و آرایههایی باشند.
ممکن نیست یک ساختار حاوی یک عضو از نوع خودش باشد، با این حال خود ساختار میتواند نوع مقدار عضوی از یک عضو نگاشت باشد یا ممکن است شامل یک آرایه با اندازه پویا از نوع خودش باشد. این محدودیت ضروری است، زیرا اندازهٔ ساختار باید محدود باشد. همچنین در تمام توابع، یک نوع ساختاری به یک متغیر محلی با مکانیت داده ذخیره میشود. این کار کپی کردن ساختار را انجام نمیدهد بلکه فقط یک مرجع را ذخیره میکند، به طوری که نسبت به اعضای متغیر محلی واقعی به وضوح نوشته شود.
البته، میتوانید نیز به طور مستقیم به اعضای ساختار دسترسی داشته باشید بدون این که آن را به یک متغیر محلی اختصاص دهید، مانند
#solidity #web3 #update #ether #اتریوم
در Solidity راهی برای تعریف انواع جدید در قالب ساختار ارائه میشود؛ یک ساختار یک نوع سفارشی تعریف شده است که به شما امکان میدهد گروهی از متغیرها را تحت یک نام واحد کپسوله کنید. این شبیه به ساختار در زبان های برنامه نویسی دیگر مانند C یا ++C است.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.6.0 <0.9.0;
// Defines a new type with two fields.
// Declaring a struct outside of a contract allows
// it to be shared by multiple contracts.
// Here, this is not really needed.
struct Funder {
address addr;
uint amount;
}
contract CrowdFunding {
// Structs can also be defined inside contracts, which makes them
// visible only there and in derived contracts.
struct Campaign {
address payable beneficiary;
uint fundingGoal;
uint numFunders;
uint amount;
mapping(uint => Funder) funders;
}
uint numCampaigns;
mapping(uint => Campaign) campaigns;
function newCampaign(address payable beneficiary, uint goal) public returns (uint campaignID) {
campaignID = numCampaigns++; // campaignID is return variable
// We cannot use "campaigns[campaignID] = Campaign(beneficiary, goal, 0, 0)"
// because the right hand side creates a memory-struct "Campaign" that contains a mapping.
Campaign storage c = campaigns[campaignID];
c.beneficiary = beneficiary;
c.fundingGoal = goal;
}
function contribute(uint campaignID) public payable {
Campaign storage c = campaigns[campaignID];
// Creates a new temporary memory struct, initialised with the given values
// and copies it over to storage.
// Note that you can also use Funder(msg.sender, msg.value) to initialise.
c.funders[c.numFunders++] = Funder({addr: msg.sender, amount: msg.value});
c.amount += msg.value;
}
function checkGoalReached(uint campaignID) public returns (bool reached) {
Campaign storage c = campaigns[campaignID];
if (c.amount < c.fundingGoal)
return false;
uint amount = c.amount;
c.amount = 0;
c.beneficiary.transfer(amount);
return true;
}
}
انواع ساختاری میتوانند در داخل نگاشتها (mappings) و آرایهها استفاده شوند و خود ممکن است شامل نگاشتها و آرایههایی باشند.
ممکن نیست یک ساختار حاوی یک عضو از نوع خودش باشد، با این حال خود ساختار میتواند نوع مقدار عضوی از یک عضو نگاشت باشد یا ممکن است شامل یک آرایه با اندازه پویا از نوع خودش باشد. این محدودیت ضروری است، زیرا اندازهٔ ساختار باید محدود باشد. همچنین در تمام توابع، یک نوع ساختاری به یک متغیر محلی با مکانیت داده ذخیره میشود. این کار کپی کردن ساختار را انجام نمیدهد بلکه فقط یک مرجع را ذخیره میکند، به طوری که نسبت به اعضای متغیر محلی واقعی به وضوح نوشته شود.
البته، میتوانید نیز به طور مستقیم به اعضای ساختار دسترسی داشته باشید بدون این که آن را به یک متغیر محلی اختصاص دهید، مانند
campaigns[campaignID].amount = 0#solidity #web3 #update #ether #اتریوم
❤1
COMPΞZ 🧬
ویژگی std::unreachable به عنوان یک ابزار پشتیبانی قبل از هر چیز بهتر است بدانیم که در برنامه نویسی کامپیوتری، کدِ غیرقابل دسترسی، بخشی از کد منبع یک برنامه است که هرگز نمیتواند اجرا شود، زیرا هیچ مسیر کنترلی برای جریان کد از بقیه برنامه وجود ندارد. در سیپلاسپلاس…
ابزار کمکی std::to_underlying در C++23
در استاندارد ۲۳، تابع std::to_underlying برای تبدیل مقادیر شمارشی به نوع پایه ای آنها معرفی شده است. این تابع میتواند برای تبدیل انواع شمارشی مانند enum و enum class به نوع پایهای آنها مانند int یا unsigned int استفاده شود.
برای مثال، فرض کنید میخواهیم مقدار Color::Green در شمارنده را به عنوان یک عدد صحیح ۸ بیتی ذخیره کنیم. در این صورت میتوانیم از تابع std::to_underlying برای تبدیل Color::Green به نوع std::uint8_t استفاده کنیم:
از مزایای این ویژگی میتواند به افزایش خوانایی کد، جلوگیری از خطاهای تبدیل و افزایش کارآیی کد اشاره کرد.
#cpp20 #cpp23 #to_underlying #چالش #سیروزه #روز_سیزدهم
در استاندارد ۲۳، تابع std::to_underlying برای تبدیل مقادیر شمارشی به نوع پایه ای آنها معرفی شده است. این تابع میتواند برای تبدیل انواع شمارشی مانند enum و enum class به نوع پایهای آنها مانند int یا unsigned int استفاده شود.
برای مثال، فرض کنید میخواهیم مقدار Color::Green در شمارنده را به عنوان یک عدد صحیح ۸ بیتی ذخیره کنیم. در این صورت میتوانیم از تابع std::to_underlying برای تبدیل Color::Green به نوع std::uint8_t استفاده کنیم:
import std;
enum class Color : std::uint8_t {
Red = 0,
Green = 1,
Blue = 2
};
auto main() -> int {
std::uint8_t colorIndex = std::to_underlying(Color::Green);
std::println("Color Index:{}", colorIndex);
}
از مزایای این ویژگی میتواند به افزایش خوانایی کد، جلوگیری از خطاهای تبدیل و افزایش کارآیی کد اشاره کرد.
#cpp20 #cpp23 #to_underlying #چالش #سیروزه #روز_سیزدهم
❤1🔥1
COMPΞZ 🧬
بخش تخصصی دوم (بهروز رسانی Solidity) |ساختار (Struct) در Solidity راهی برای تعریف انواع جدید در قالب ساختار ارائه میشود؛ یک ساختار یک نوع سفارشی تعریف شده است که به شما امکان میدهد گروهی از متغیرها را تحت یک نام واحد کپسوله کنید. این شبیه به ساختار در…
بخش تخصصی دوم (بهروز رسانی Solidity) |انواع نگاشتها (Mapping)
در Solidity، از نوع دادههای Mapping برای ایجاد یک نوع داده کلید-مقدار استفاده میشود. این نوع دادهها با نحو دستوری زیر تعریف میشوند:
و متغیرهای از این نوع با دستور زیر اعلام میشوند:
سایر انواع تعریف شده یا پیچیده توسط کاربر، مانند نگاشت (mapping)، ساختارها یا انواع آرایه مجاز نیستند. ValueType میتواند هر نوعی باشد، از جمله نگاشت، آرایه و ساختار. KeyName و ValueName اختیاری هستند (بنابراین نگاشت (KeyType => ValueType) نیز کار میکند) و میتواند هر شناسه معتبری باشد که یک نوع نیست.
میتوانید نگاشتها را بهعنوان جداول هش در نظر بگیرید، که تقریباً به گونهای مقداردهی اولیه میشوند که هر کلید ممکن وجود داشته باشد و به مقداری نگاشت میشود که نمایش بایت آن صفر است، مقدار پیشفرض یک نوع. شباهت به همین جا ختم می شود، دادههای کلیدی در یک نگاشت ذخیره نمی شوند، فقط هش keccak256 آن برای جستجوی مقدار استفاده میشود.
نگاشتها فقط میتوانند مکان ذخیره دادهای داشته باشند و بنابراین برای متغیرهای حالت، به عنوان انواع مرجع ذخیرهسازی در توابع، یا به عنوان پارامترهایی برای توابع کتابخانه مجاز هستند. آنها را نمیتوان به عنوان پارامتر یا پارامترهای بازگشتی توابع قراردادی که به صورت عمومی قابل مشاهده است استفاده کرد. این محدودیتها برای آرایهها و ساختارهایی که حاوی نگاشت هستند نیز صادق است.
در مثال زیر، قرارداد MappingExample یک نگاشت balances عمومی را با نوع کلید یک address، و نوع مقدار یک uint، نگاشت یک آدرس اتریوم به یک مقدار صحیح بدون علامت تعریف میکند. از آنجایی که uint یک نوع مقدار است، دریافتکننده مقداری را برمیگرداند که با نوع مطابقت دارد، که میتوانید آن را در قرارداد MappingUser مشاهده کنید که مقدار را در آدرس مشخص شده برمیگرداند.
مثال زیر یک نسخه ساده شده از توکن ERC20 است. allowances_ نمونهای از یک نوع نگاشت در داخل یک نوع نقشه برداری دیگر است. در آن KeyName و ValueName اختیاری برای نگاشت ارائه شده است. این بر هیچ عملکرد قرارداد یا بایت کد تأثیر نمیگذارد، فقط فیلد نام ورودی و خروجی را در ABI برای دریافت کننده نقشه تعیین میکند.
مثال زیر از allowancesـ برای ثبت مبلغی استفاده میکند که شخص دیگری مجاز است از حساب شما برداشت کند.
#solidity #web3 #update #ether #اتریوم
در Solidity، از نوع دادههای Mapping برای ایجاد یک نوع داده کلید-مقدار استفاده میشود. این نوع دادهها با نحو دستوری زیر تعریف میشوند:
mapping(KeyType KeyName? => ValueType ValueName?)
و متغیرهای از این نوع با دستور زیر اعلام میشوند:
mapping(KeyType KeyName? => ValueType ValueName?) VariableName
سایر انواع تعریف شده یا پیچیده توسط کاربر، مانند نگاشت (mapping)، ساختارها یا انواع آرایه مجاز نیستند. ValueType میتواند هر نوعی باشد، از جمله نگاشت، آرایه و ساختار. KeyName و ValueName اختیاری هستند (بنابراین نگاشت (KeyType => ValueType) نیز کار میکند) و میتواند هر شناسه معتبری باشد که یک نوع نیست.
میتوانید نگاشتها را بهعنوان جداول هش در نظر بگیرید، که تقریباً به گونهای مقداردهی اولیه میشوند که هر کلید ممکن وجود داشته باشد و به مقداری نگاشت میشود که نمایش بایت آن صفر است، مقدار پیشفرض یک نوع. شباهت به همین جا ختم می شود، دادههای کلیدی در یک نگاشت ذخیره نمی شوند، فقط هش keccak256 آن برای جستجوی مقدار استفاده میشود.
نگاشتها فقط میتوانند مکان ذخیره دادهای داشته باشند و بنابراین برای متغیرهای حالت، به عنوان انواع مرجع ذخیرهسازی در توابع، یا به عنوان پارامترهایی برای توابع کتابخانه مجاز هستند. آنها را نمیتوان به عنوان پارامتر یا پارامترهای بازگشتی توابع قراردادی که به صورت عمومی قابل مشاهده است استفاده کرد. این محدودیتها برای آرایهها و ساختارهایی که حاوی نگاشت هستند نیز صادق است.
در مثال زیر، قرارداد MappingExample یک نگاشت balances عمومی را با نوع کلید یک address، و نوع مقدار یک uint، نگاشت یک آدرس اتریوم به یک مقدار صحیح بدون علامت تعریف میکند. از آنجایی که uint یک نوع مقدار است، دریافتکننده مقداری را برمیگرداند که با نوع مطابقت دارد، که میتوانید آن را در قرارداد MappingUser مشاهده کنید که مقدار را در آدرس مشخص شده برمیگرداند.
contract MappingExample {
mapping(address => uint) public balances;
function update(uint newBalance) public {
balances[msg.sender] = newBalance;
}
}
contract MappingUser {
function f() public returns (uint) {
MappingExample m = new MappingExample();
m.update(100);
return m.balances(address(this));
}
}
مثال زیر یک نسخه ساده شده از توکن ERC20 است. allowances_ نمونهای از یک نوع نگاشت در داخل یک نوع نقشه برداری دیگر است. در آن KeyName و ValueName اختیاری برای نگاشت ارائه شده است. این بر هیچ عملکرد قرارداد یا بایت کد تأثیر نمیگذارد، فقط فیلد نام ورودی و خروجی را در ABI برای دریافت کننده نقشه تعیین میکند.
مثال زیر از allowancesـ برای ثبت مبلغی استفاده میکند که شخص دیگری مجاز است از حساب شما برداشت کند.
contract MappingExample {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function allowance(address owner, address spender) public view returns (uint256) {
return _allowances[owner][spender];
}
function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
require(_allowances[sender][msg.sender] >= amount, "ERC20: Allowance not high enough.");
_allowances[sender][msg.sender] -= amount;
_transfer(sender, recipient, amount);
return true;
}
function approve(address spender, uint256 amount) public returns (bool) {
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function _transfer(address sender, address recipient, uint256 amount) internal {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
require(_balances[sender] >= amount, "ERC20: Not enough funds.");
_balances[sender] -= amount;
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
}
}#solidity #web3 #update #ether #اتریوم
❤1
آدمها وقتی نا امید میشوند؛
به خیلی کمتر از آنچه لیاقتش را دارند راضی میشوند.
شب شیک 🚀🌹🌘
به خیلی کمتر از آنچه لیاقتش را دارند راضی میشوند.
شب شیک 🚀🌹🌘
❤8👍3
خب، دیروز من سه تا جلسه داشتم که یکیش مربوط به موضوع Base و همراهی جامعش بود؛ بنابراین از طرف من هم ورود به دنیای base و فعالیت به صورت جدی در اون بخش از امروز شروع میشه. 😎🚀👊🏼
https://warpcast.com/compez.eth/0x510c7bde
https://warpcast.com/compez.eth/0x510c7bde
Warpcast
C O M P Ξ Z on Warpcast
BM ~ The evolution process of "Base" genetics mutation.
I’m just getting started — time to light it up!
From today, I want to dedicate part of my time to helping grow the @base community. It’s one of the most powerful and promising networks out there —…
I’m just getting started — time to light it up!
From today, I want to dedicate part of my time to helping grow the @base community. It’s one of the most powerful and promising networks out there —…
🔥4❤1
COMPΞZ 🧬
خب همینجا بمونه تا اینو ۱ رقمیش کنم. 😉
وقتی میگم بیس، یعنی چیزی حدود ۶.۲ برابر بزرگتر از جامعهٔ سوپر ریر در شاخهٔ فارکستر!
یعنی همون وقتی که من روی ریر گذاشتم رو بیارم روی بیس تا ۶ برابر پتانسیل رشد بیشتری در اون میبینم. 🔥
حالا به چی نیاز داریم؟
۱) بستر سازی و گسترش صنعت بیس
۲) آموزش و گسترش محتوا در مورد بیس
۳) ساخت و توسعه بر مبنای شبکهٔ بیس برای رسیدن به ۱ میلیارد تراکنش به عنوان هدف جامعه
تابستون قبلی حرکتهایی زده شد اما این تابستون مطمئنم یه چیز دیگهای در انتظار هست.
ما شروع میکنیم، شماهم سعی کنید در خصوص بیس جدی باشید.
یعنی همون وقتی که من روی ریر گذاشتم رو بیارم روی بیس تا ۶ برابر پتانسیل رشد بیشتری در اون میبینم. 🔥
حالا به چی نیاز داریم؟
۱) بستر سازی و گسترش صنعت بیس
۲) آموزش و گسترش محتوا در مورد بیس
۳) ساخت و توسعه بر مبنای شبکهٔ بیس برای رسیدن به ۱ میلیارد تراکنش به عنوان هدف جامعه
تابستون قبلی حرکتهایی زده شد اما این تابستون مطمئنم یه چیز دیگهای در انتظار هست.
ما شروع میکنیم، شماهم سعی کنید در خصوص بیس جدی باشید.
👍6❤🔥1
این رو هم الآن به چشمم خورد که روی شبکهٔ بیس تشویق میکنه برای تراکنش ایجاد کردن در قالب چالشها؛ ممکنه در آینده امتیازات خوبی براتون بده.
برنامهٔ Blockscout Merits یک سیستم پاداشدهی است که به کاربران برای تعامل و کاوش در بلاکچین از طریق پلتفرم Blockscout امتیازاتی به نام "Merits" اعطا میکند. این امتیازات نشاندهندهٔ مهارت و مشارکت کاربران در استفاده از کاوشگر بلاکچین هستند و میتوانند در آینده برای دسترسی به ویژگیهای انحصاری، کالاها، تخفیفها و فرصتهای ویژه مورد استفاده قرار گیرند.
نحوهٔ کسب Merits:
ثبتنام در برنامه Merits: با ثبتنام در برنامه، ۱۰۰ Merits دریافت میکنید. استفاده از کد معرف در هنگام ثبتنام، ۱۰۰ Merits اضافی به همراه دارد.
دریافت پاداش روزانه: هر روز با مراجعه به داشبورد Merits و کلیک بر روی دکمهٔ مربوطه، میتوانید ۱۰ Merits دریافت کنید.
شرکت در کمپینها و مأموریتها: با انجام وظایف مشخصشده در کمپینها و مأموریتهای اعلامشده، Merits بیشتری کسب کنید.
استفاده از Swapscout: با استفاده از Swapscout برای تبادل یا پلزدن داراییها، بهصورت خودکار Merits دریافت خواهید کرد.
معرفی دوستان: با اشتراکگذاری کد معرف خود و دعوت از دوستان، ۱۰٪ از Merits کسبشده توسط آنها را بهعنوان پاداش دریافت میکنید.
https://eth.blockscout.com?ref=WXQ0WT
خودم شاید فرصت انجامش رو هم نداشته باشم! صرفاً جهت اطلاع بود.
برنامهٔ Blockscout Merits یک سیستم پاداشدهی است که به کاربران برای تعامل و کاوش در بلاکچین از طریق پلتفرم Blockscout امتیازاتی به نام "Merits" اعطا میکند. این امتیازات نشاندهندهٔ مهارت و مشارکت کاربران در استفاده از کاوشگر بلاکچین هستند و میتوانند در آینده برای دسترسی به ویژگیهای انحصاری، کالاها، تخفیفها و فرصتهای ویژه مورد استفاده قرار گیرند.
نحوهٔ کسب Merits:
ثبتنام در برنامه Merits: با ثبتنام در برنامه، ۱۰۰ Merits دریافت میکنید. استفاده از کد معرف در هنگام ثبتنام، ۱۰۰ Merits اضافی به همراه دارد.
دریافت پاداش روزانه: هر روز با مراجعه به داشبورد Merits و کلیک بر روی دکمهٔ مربوطه، میتوانید ۱۰ Merits دریافت کنید.
شرکت در کمپینها و مأموریتها: با انجام وظایف مشخصشده در کمپینها و مأموریتهای اعلامشده، Merits بیشتری کسب کنید.
استفاده از Swapscout: با استفاده از Swapscout برای تبادل یا پلزدن داراییها، بهصورت خودکار Merits دریافت خواهید کرد.
معرفی دوستان: با اشتراکگذاری کد معرف خود و دعوت از دوستان، ۱۰٪ از Merits کسبشده توسط آنها را بهعنوان پاداش دریافت میکنید.
https://eth.blockscout.com?ref=WXQ0WT
خودم شاید فرصت انجامش رو هم نداشته باشم! صرفاً جهت اطلاع بود.
Blockscout
Ethereum blockchain explorer - View Ethereum stats | Blockscout
Explore Ethereum blockchain data. Search and scan transactions, addresses, tokens, blocks, and more.
👍2🙏1
COMPΞZ 🧬
وقتی میگم بیس، یعنی چیزی حدود ۶.۲ برابر بزرگتر از جامعهٔ سوپر ریر در شاخهٔ فارکستر! یعنی همون وقتی که من روی ریر گذاشتم رو بیارم روی بیس تا ۶ برابر پتانسیل رشد بیشتری در اون میبینم. 🔥 حالا به چی نیاز داریم؟ ۱) بستر سازی و گسترش صنعت بیس ۲) آموزش و گسترش…
باهوش باشی، میتونی حدس بزنی که چه اتفاقی خواهد افتاد. 👇🏼👇🏼👇🏼
در ژانویه ۲۰۲۵، تیم Base مأموریت، چشمانداز و استراتژی خود را برای سال ۲۰۲۵ اعلام کرد. هدف آنها ساخت یک اقتصاد جهانی بر بستر بلاکچین است که نوآوری، خلاقیت و آزادی را افزایش دهد—اینترنتی جدید که توسط مردم و برای مردم ساخته میشود.
اهداف بزرگ و چالشبرانگیز برای سال ۲۰۲۵:
۱) ۲۵ میلیون کاربر
۲) ۲۵ هزار توسعهدهنده
۳) ظرفیت بلوک ۲۵۰ مگاگس در ثانیه
۴) ۱۰۰ میلیارد دلار دارایی در پلتفرم
۵) ۱ میلیارد تراکنش در ماه اکتبر
پنج رکن استراتژیک برای دستیابی به این اهداف:
شبکهٔ Base برای توسعهدهندگان: ارائه ابزارهای قدرتمند و باز برای ساخت برنامههای برتر بر بستر بلاکچین.
شبکهٔ Base برای برنامهها: حمایت از اکوسیستم متنوعی از برنامههای متصل و باز برای جذب کاربران بیشتر.
شبکهٔ Base برای مالکیت: ایجاد حسابهای کاربری قدرتمند با تأمین مالی، هویت و مدیریت یکپارچه.
شبکهٔ Base برای بازارها: تبدیل Base به مرکز اقتصاد بلاکچین با بازارهای سرمایه جهانی و همیشه فعال.
شبکهٔ Base برای همه: تمرکز بر تمرکززدایی، مقیاسپذیری و تسریع Base برای دسترسی همگان به بلاکچین.
این استراتژیها نشاندهنده تعهد Base به ساخت یک اقتصاد جهانی و باز بر بستر بلاکچین است که برای همه قابل دسترسی باشد.
در ژانویه ۲۰۲۵، تیم Base مأموریت، چشمانداز و استراتژی خود را برای سال ۲۰۲۵ اعلام کرد. هدف آنها ساخت یک اقتصاد جهانی بر بستر بلاکچین است که نوآوری، خلاقیت و آزادی را افزایش دهد—اینترنتی جدید که توسط مردم و برای مردم ساخته میشود.
اهداف بزرگ و چالشبرانگیز برای سال ۲۰۲۵:
۱) ۲۵ میلیون کاربر
۲) ۲۵ هزار توسعهدهنده
۳) ظرفیت بلوک ۲۵۰ مگاگس در ثانیه
۴) ۱۰۰ میلیارد دلار دارایی در پلتفرم
۵) ۱ میلیارد تراکنش در ماه اکتبر
پنج رکن استراتژیک برای دستیابی به این اهداف:
شبکهٔ Base برای توسعهدهندگان: ارائه ابزارهای قدرتمند و باز برای ساخت برنامههای برتر بر بستر بلاکچین.
شبکهٔ Base برای برنامهها: حمایت از اکوسیستم متنوعی از برنامههای متصل و باز برای جذب کاربران بیشتر.
شبکهٔ Base برای مالکیت: ایجاد حسابهای کاربری قدرتمند با تأمین مالی، هویت و مدیریت یکپارچه.
شبکهٔ Base برای بازارها: تبدیل Base به مرکز اقتصاد بلاکچین با بازارهای سرمایه جهانی و همیشه فعال.
شبکهٔ Base برای همه: تمرکز بر تمرکززدایی، مقیاسپذیری و تسریع Base برای دسترسی همگان به بلاکچین.
این استراتژیها نشاندهنده تعهد Base به ساخت یک اقتصاد جهانی و باز بر بستر بلاکچین است که برای همه قابل دسترسی باشد.
❤2🔥1