اهای لعنتی هااا من هنوز زنده ام…. #ADA $1 #Cardano

ADA Whale 🇮🇷
27,913 views • 1 year ago
بعد از سپری کردن دوران بسیار سخت بیماری، من... برگشتم و هنوز زنده ام تا نابودی کامل جمهوری اسلامی رو باهم جشن بگیریم. سپاس فراوان از احوالپرسی ها و نگرانی های همه همرزمان و دوستان خوب خودم. شاد باشید.show more

Raymond 🇮🇱🇮🇷
42,453 views • 2 years ago
آهای صهیونیست های حرامزاده ؛ من هنوز زنده ام!!... یک ساختمان مسکونی چند پلاک بعد از ما رو با دو پرتابه زدن! چند نفر مجروح شدن که کشیدیم شون بیرون... علمک های گاز رو با آچار بستیم و صحنه رو ترک کردیم تا نیروهای امدادی به کارشون برسنshow more

مصطفی گرجی ☫
106,270 views • 1 year ago
به سختی زنده موندم و با مصیبت وصل شدم... که فقط تیتر وار یک کم بگم و برم من از اولش بودم و تا آخرش هستم نه از مرگ میترسم نه از درد نه از شکنجه شدن نه از فراموش شدن، فقط تا الان نشده بود که از زنده موندن شرمنده باشم. زیاد نمیام چون هنوز کمی درگیرم رفقاshow more

دراکولای عصبی
34,569 views • 5 months ago
من باورم نمیشه من خیلی تاریخ خوندم ولی باورم... نمیشه مردم ایران در زمان حیات یکنفر فهمیدند طرف کیه و صدسال بعد از مرگش نزدن تو سر خودشون که چه کسی رو از دست دادیم باورم نمیشه زنده ام و پیر نشدم و دارم همچین درایتی از مردم ایران میبینمshow more

Khashayar
127,584 views • 1 year ago
CARDANO WHALES KEEP BUYING THE DIP Cardano (Cardano Community)... whales have steadily accumulated $ADA since December 2023 despite heavy market losses, Santiment data shows. Wallets holding at least 1 million ADA now control 25.09 billion tokens. That represents roughly 67.47% of the total existing ADA supply. The accumulation comes even after ADA lost 71% of its market capitalization over nine months.show more

BSCN
28,307 views • 2 months ago
جنایت علیه بدنم را حق من میدانند،اما انتخاب و... زنده گی انسانی را نه! بلی!کاش در چوک کابل تجاوز ،قتل،برهنه وشکنجه ..اما نه در پشت دروازه های بسته. و حالا تعداد جای سنگسار درک میکردند که فرخنده و رخشانه ها چقدر بی کسی و تنها بودند و هستند. وقتی تولد شدم خواست خودم نبود«دختر»باشم خواستم نبود در افغانستان و در جامعه مسلمان تولد شوم..از مشخصات زنانه وجودم «از پریود،ثدیه هایم »نفرت داشتم.. اما حالا با همه سنگسار ها،زخم ها،باز میخواهم زنی باشم که خودم دوست دارم. زن که حتا پدر و برادرش دیگر دوستش ندارد..زنی که از سایه و صدای پاهای خودش میلرزد، زنی که یکبار دروازه های خانه اش شکستانده شد، اما زخم آن روی سینه و بدن،روح و روانش باقی ماند و هیچ جای دنیا حس امنیت ندارد. و امکان ندارد، شب های که بخوابم و یک بار به دروازه و شکستن آن فکر نکنم.آخرین تخت خواب راحت قبل از زندان طالب بود..و اینجا قشنگ نیست به من چون حس میکنم صد ها هزار کودکم هنوز گیر مانده آنجا در دهن هیولا ها.. قلبم آنجاست که دو سال قبل بودم . اما دیگر نمیخواهم جنایت های مردان مسلمان پشت دروازه های بسته بماند. زندان طالب ،رفتار های ریاکارانه شما تمام سرگذشت زنده گی ام را هر روز مرور میکند ، من کی ام و چی ها کشیدم.. تا زنده ام میمانم باز هم نمیخواهم نقش بازی کنم تا فردا صاحب چوکی باشم، میخواهم یک صفا کار با شرف باشم، اما درد های زنانه ام را با هیچ قیمتی نمی فروشم «سکوت نمیکنم»show more

Zarmina Paryani
108,194 views • 2 years ago
This is why Cardano. One transaction. 248 recipients. Fee:... 0.87 $ADA. Now imagine this kind of efficiency at 1 million transactions per second with Ouroboros Leios.show more

TapTools
53,297 views • 1 year ago
$SNEK jussst hit 1 Billion $ADA ($620 Million) in... volume 🎉🥂 Thisss is the first time ever that a project on #Cardano has hit the Billion mark 🔥show more

Snek
78,813 views • 2 years ago
Are you ready for the biggest #Rave in the... #Cardano space? Any interaction will be considered for 1 ticket to our private party. Only 2,000 Raving Ravens will be made available so stay tuned! Tag your #CNFT squad 🪩🍾 #CNFTCommunity #ADA #CardanoNFTs #NFTshow more

Raving Ravens
22,148 views • 3 years ago
رها (زهرا) بهلولیپور، متولد ۳۰ آذر ۱۳۸۱، دانشجوی زبان... ایتالیایی دانشگاه تهران و ساکن خوابگاه بود. اما از شرایط خوابگاه ناراضی بود، چندی پیش در کانال تلگرامش نوشته بود: «دلم میخواد تا صبح توی خیابون باشم اما به این خوابگاه لعنتی برنگردم.» به گفته نزدیکانش رها فرزند دوم خانوادهای ۴ نفره از ایل قشقایی است. رها ۱۹ دی ۱۴۰۴ به دلیل شلیک گلوله از سوی نیروهای جمهوری اسلامی و اصابت آن به ریهاش جان سپرد. پیکرش در شهر فیروزآباد به خاک سپرده شد. رها در کانال تلگرامش نوشته بود «من خیلی طرفدار زندگی ام» او در آخرین پیغام کانال تلگرامش چند ساعت پیش از کشتهشدنش نوشت:«یک لحظه وصل شدهم و فقط میخوام بنویسم زن، زندگی، آزادی برای همیشه.» رها بهلولیپور، در کانال تلگرامش از روزمرگیهایش مینوشت، ولی این اواخر بیشتر اخبار اعتراضات و بازداشتها را نشر میداد. رها در متنی انتقادی در مورد شرایط دانشگاه نوشته بود: «من متوجه نمیشم این دانشگاه لعنتی با این بودجه چیکار میکنه که بهانهش برای رسیدگینکردن به مشکلات و ایجاد ایمنی —که البته غلط میکنه چنین بهانهای میاره— کمبودشه! اصلا چرا میگم متوجه نمیشم؟! معلومه که دیگه صرف چی میشه! حجاببان، همایشهای مذهبی مزخرف و حراستهایی که کارشون فقط گیردادن به ظاهره و هزاران کار بیهودهی دیگه.» رها اهل مطالعه بندود، عاشق ادبیات و سینما. به فروغ فرخزاد علاقه داشت. جمهوری اسلامی جان این دختر عاشق و پرشور را گرفت و رویاهایش برای زندگی، عاشقی و آزادی، ناتمام ماند. این آدرس کانال تلگرامش است: #رها_بهلولیپور #زهرا_بهلولیپور #جنایت_علیه_بشریت #انقلاب_۱۴۰۴ #digitablackoutiran #iranmassacre #iranrevolution2026 اطلاعات برگرفته از اینستاگرام شیما بابایی و نوشتههای خود رها در کانال تلگرامشshow more

توانا Tavaana
160,543 views • 5 months ago
The physical Cardano Card is here. 💳 This is... Cardano stepping into everyday life, and you can order yours right now. Here's what you need to know: ✅ Spend $ADA and other crypto in-store, anywhere Visa is accepted ✅ Earn up to 8% Cryptoback™ on all purchases ✅ Low FX fees and global ATM access ✅ Compatible with Apple Pay and Google Pay ✅ Manage everything in the Wirex This is what real-world utility looks like. (1/🧵)show more

Cardano Card
12,350 views • 2 months ago
رفتیم تجریش برای سنت هرساله خرید ماهی قرمز و... سبزه و گل. رفتیم که یک کم سر دخترک گرم بشود. که یک کم از زندان خانه بیرون بزنیم. که یک هوایی بخوریم. اما بدتر دلگیر بود برای ما. تجریشی که در شبهای عید سوزن به زمیناش نمیرسید خالی بود و کمفروغ. هیچ خبری از دستفروشها و بلوایِ شادِ همیشگی نبود. همهجا ساکت. همه گذرها و کوچهها خالی از حضور انسان. نمیدانم در میانه این کثافت جنگ چند کاسب برشکست شدهاند، چند سفره خالی مانده، چند آدم ناامید شدهاند. کاش میشد کاری کرد. تجریش در روزهای منتهی به نوروز همیشه برای من قابی بود از تابآوری ما ایرانیها. که هرچقدر شرایط تاریک و هرچقدر شکافهای میان ما عمیق، هنوز هم بهار میآید و شکوفههای میرسند و نوروز، این آیین ملی، ما را کنار هم میآورد. اما انگار سایه این جنگ لعنتی روی همهچیز افتاده. تاریکی به هر گوشهای رسیده. من خیلی دوست دارم باور کنم که نوروز امسال هم مثل هر سال خواهد بود. که این آیین باستانی بالاخره دوباره چراغ خانههای ما را روشن خواهد کرد. که ما جوری (نمیدانم چطور) از انتهای این تونل وحشت بیرون میآییم و غرور ملی ترک خوردهمان را بند میزنیم و ادامه میدهیم. من به این امیدِ (شاید احمقانه) خودم چنگ میزنم. و با همین ادامه میدهم. که نوروز برای ما پیامی دارد. که فردایی هست. که زمستان سر میآید (؟).show more

Hossein Hamdieh | حسین حمدیه
60,855 views • 4 months ago
پنج شنبه بعد ازظهر #تهران پنجشنبه است، آخرین روز... سال. سالی که برای ما خیلی سخت و طولانی گذشت. سالی که جنگ دیدیم، داغ دیدیم، هزاران هموطن و جوان به خاک سپردیم و دوباره #جنگ دیدیم. رفتم تجریش. راستش تجریش سالهاست منو رها نمیکنه. هر وقت دلتنگ میشم، هر وقت میترسم، هر وقت هیجان دارم یا وقتی دنبال چیزی میگردم که میدونم جای دیگه پیدا نمیشه، میرم تجریش. #تجریش همیشه شور زندگی داشت، اما امروز یک چیزی کم بود.. نه اینکه نباشه، نه… فقط مثل قبل نبود. پاساژ قائم با اون همه نور و طلا و زرق و برقش ساکتتر از همیشه بود. طلافروشیها بیشترشون بسته، دو طبقه طلا تقریباً خاموش. مغازهها خلوت، فروشندهها نشسته و منتظر، با نگاههایی که معلوم نبود پر امیدند یا خستگی یا یاس و انتظار اما بیرون، دستفروشها هنوز نفس میکشیدند،و همانها نوروز را زنده نگه داشته بودند. گلها همه جا بودند، سبزه، سنبل، ماهی قرمز، شب بو و بیدمشک.. نوروز پخش شده بود در خیابان. عطر شببو در هوا پیچیده بود، همان بویی که همیشه قبل از سال نو میآید و دل آدم را آرام میکند. کف خیابان مثل همیشه خیس بود، برگهای خیس گل ها زیر پا له میشدند و اگر حواست نبود، یک لحظه میلغزیدی. مثل همیشه… خیسی زمین بخشی از تجریش همیشه زنذه است.. محدوده پر از نیروهای امنیتی بود. امامزاده صالح همانجا، سر جایش بود. مردم میآمدند و میرفتند، نذریفروشها، نمکفروشها، آنهایی که صدا میزدند «بیا چایی بخر»، همه بودند، انگار یک تکه از زمان آنجا هیچوقت تغییر نمیکند. کنار ورودی، ترهبار کوچک پر از ماهی و بوی گندش بود و سبزی پلویی که بوی عید میداد. میوهفروشیها مثل همیشه برق میزدند، ترشیفروشها سر جایشان بودند، مردم ایستاده بودند، باقالی میخریدند، سیر میخریدند، همه جا بوی سیر میآمد و عجیب اینکه امروز این بو آزارم نمیداد، شاید چون همه چیز بوی عید میداد، حتی غمهای این مردم شریف که همیشه برای زندگی شرافتمندانه جنگیدهاند با هر قدمی که برمیداشتم، خاطرهها از جلوی چشمم رد میشدند. سالهای نو، خندهها، شلوغیها، خریدها، هیجانها، همه مثل فیلمی که روی دور تند جلو میرود. رسیدم به آبانارفروشی، همان که با دستگاه قدیمی و همیشه کمی کثیفش آبنار خنک درست میکند. ترش، خوشمزه، پر از حس زندگی. یک جرعه که میخوری، میفهمی هنوز زندگی هست. از کنار آدمها رد میشدم، چشم در چشم میشدیم و لبخندهای کوتاه، خسته اما واقعی رد و بدل میشد. یک جور همدلی خاموش بین همه بود، انگار همه میدانستند سال سختی گذشت اما امید هنوز ایستاده هرچند زخمی و بیمار تجریش امروز همزمان هم زنده بود و هم خسته، هم پر از نوروز و هم پر از ترس، هم امید داشت و هم داغ. و من میان این همه حس متضاد فقط راه میرفتم و فکر میکردم چقدر عجیب است که آدم میتواند همزمان هم دلش بخواهد سال نو شروع شود و هم از آن بترسد. هم دلش کنج امن خانه اش را بخواهد هم هیاهوی خیابان هم امیدوار باشد و هم بترسد… چه سالی را زندگی کردیم..show more

Golshan
31,696 views • 3 months ago
Exactly five years ago Fahim & I launched the... very first version of NMKR. Back then NFTs were completely new, Native Assets on Cardano just became a thing, Cardano had no support for Smart Contracts & the Spacebudz were barely 1 month old. NMKR was still called NFT-MAKER and our primary colour was blue, not green. Fahim designed the page & I built NFT-MAKER v1 in a few days, while writing my final university thesis (about creating a Metaverse on Cardano btw). There was nothing going on in Cardano, no dApps, no users, nothing. ADA price was at less than 10ct (if i remember correctly) and all of Cardano X was just Stake Pool Operators shilling their Stake Pool to other Stake Pool Operators. NFT-MAKER became incredibly popular very quickly, even though you could only mint 1 NFT at a time and the tool was super rudimentary. But people liked it and we minted I believe almost 50,000+ NFTs just with NFT-MAKER v1. Then NMKR Studio launched a few months later and changed everything. Today 5 years later, with many very high highs & low lows I look back and can proudly say: We're still here. And even though the market has changed a lot, the team has changed, cofounders left, we almost ran out of money multiple times + all the other hard things we had to do, we've adapted and have shown resilience. We're still in the game and we'll not stop until we win. Thank you to everyone who has supported us in all these years. It really means a lot. Happy Birthday NMKR 🎉show more

Patrick Tobler
17,004 views • 3 months ago
کارچاق کن های فرقه پهلوی در دادگاه را بشناسیم:... دروغگو، فریب کار و جنایتپوش به همراه مستند ویدیویی از وحشی گری اوباش پهلوی در ساختمان دادگاه 1- پیشتر نوشته بودم که تیم حقوقی و وکیل #رضا_پهلوی، به طور اتفاقی همان تیم و وکیلی است که از طرف نادر گنجی (دست راست جواد لاریجانی برای فریب جامعه جهانی در نشست های حقوق بشری، و مهره رسمی وزارت اطلاعات، شاغل در انجمن نجات) نامه تهدیدآمیز خطاب به من می نوشت و با تهدید، عذرخواهی من از این مزدور را طلب می کرد. 2- همچنین نوشته بودم که مهدی احمدزاده رضوی با همکاری و همراهی دیگر مهره رژیم، آرزو سلطانی، بارها از یک پزشک و افراد دیگر درخواست ماده کشنده کرده است تا بلکه با قتل نگارنده، پهلوی شیاد را از مسوولیت حقوقی برهاند. گفته های افرادی که مستقیما طرف درخواست این دو جنایتکار بوده اند، در دادگاه ثبت و ضبط شده است و یک پرونده جنایی هم نزد پلیس ونکوور علیهشان گشوده شده است. 3- اما در پس تمام این ماجراها، دست یک گروه از وکلای کارچاق کن دیده می شود. خوانندگان این برگه به یاد دارند که چگونه آرزو سلطانی بر این صحه گذاشت که دفاعیه او را را رامین ژوبین نوشته بود (هم در آن پرونده و هم در یک پرونده دیگر، آرزو سلطانی با محکومیت قطعی و چندین حکم پرداخت هزینه و ، از همه مهمتر، قرار مجرمیت به علت سرپیچی از احکام دادگاه رو به رو شده است) جالب است بدانید که با معرفی رامین ژوبین، از سال 2023 (ماه ها پیش از آغاز حمله فرقه پهلوی به نگارنده اما ظااهرا در تدارک حقوقی برای پیامدهای آن حملات ارتش سایبری پهلوی شیاد)، گروه حقوقی آلن-مکمیلان و وکیلی به نام نوژان کاموسی به عنوان وکیل آرزو سلطانی و گروه "بیدادگران" منصوب شد، بی آنکه هنوز شکایتی و موضوع شکایتی وجود داشته باشد! 4- اسناد به دست آمده نشان می دهند که تنها در یک قلم، آرزو سلطانی، که در دادگاه دم از نداری و درماندگی می زند، 11000 دلار به وکلایش پرداخت کرد، بی آنکه حتی حضوری در دادگاه ها داشته باشد. 5- تیم حقوقی آلن اما در پرونده شکایت از پهلوی، از آغاز وکالت دیگر مهره جنایتکار #سطلی_سپاهی سید مهدی احمدزاده رضوی قمی را برعهده گرفتند و در دادگاه حاضر بوده اند 6- همین تیم، تاکنون دستکم چهار شهادتنامه دروغ برای احمدزاده نوشته اند و در دادگاه هم به ثبت رسانده اند. 7- احمدزاده در این شهادت نامه های دروغ، اول به دروغ مدعی شد که تا 9 ماه پس از شکایت من از پهلوی، اصلا خبری از این شکایت نداشته است و بنابراین، اتهام انتقام گیری بابت آن شکاست به او نمی چسبد! تا چندین ماه هم بر این ادعای دروغ پای فشرد. اما آنگاه که با اسناد غیرقابل انکار نشان دادم که احمدزاده دروغ می گوید، یکباره مدعی شد که اشتباه شده است و معنی کلمات مندرج در شهادت نامه خود را نمی دانسته است! 8- در یک شهادت دروغ دیگر، احمدزاده اخیرا، هر گونه همکاری خود در هدایت گروه بیدادگران (که در کنار آرزو سلطانی، رهبری اش را به دست دارد) را نفی کرد. اما این دروغ گویی او مصادف شد با درز کردن اسناد گروه بیدادگران که به وضوع نقش احمدزاده در جعل، دزدی، تهدید به قتل، افترا، . … آن هم با استفاده از ریاست خود و سلطانی بر گروه بیدادگران را به اثبات می رساند. 9-اضافه بر آن، این تبهکاران، نام و نشانی و ایمیل خود را رسما در اسناد دولتی کانادا به ثبت رسانده اند و این اسناد در اختیار من قرار دارند. احمدزاده به رغم شهادت دروغش، شخصا نام و مشخصات خود را به عنوان عضو هیات مدیره بیدادگران در اسناد اداره ثبت بریتیش کلمبیا آورده است! 10- اخیرا احمدزاده در یک شهادت نامه دروغ دیگر، که آن هم در همان بنگاه حقوقی بدسابقه تنظیم شده است، مدعی شده است که دیگران، بدون اطلاع او نامش را در اسناد گروه بیدادگران وارد کرده اند! اما این موجود به غایت دروغگو و احمق، یادش رفته است که خودش درخواست داده بود که برایش ایمیلش را در فرم های دولتی این گروه به روز کنند و متن و سکرین شات پیام او هم موجود است که از تغییر آن ایمیل تشکر هم کرده است (سند مربوز هم نزد نگارنده موجود است) 11- برای اینکه درجه حماقت و رذالت توامان فرقه تروریستی پهلوی را بشناسید، توجهتان می دهم که اکنون به سرنخ هایی دست پیدا کرده ایم که احمدزاده و سلطانی، درسال 2023 در یک شعبه مشخص بانک TD حاضر شده اند و با هم، حساب مشترک بانکی برای گروه بیدادگران باز کرده اند. با پیگیری نگارنده، قرار شده است که اطلاعات این حساب به زودی از سوی TD در اختیار نگارنده و دادگاه قرار بگیرد. 12- نکته اصلی این یادداشت اما اینست که بنا بر محتوای درزکرده از گروه واتساپی بیدادگران، سلطانی و احمدزاده تصمیم می گیرند که برای پیشیرد شیادی خود، اتهام "ضد زن بودن" را متوجه نگارنده کنند. همزمان، تصمیم می گیرند که یک وکیل زن، اما بسیار وحشی و بدرفتار، از طرف احمدزاده در دادگاه ظاهر شود و به هر ترتیب سعی کند در ساختمان دادگاه درگیری فیزیکی با من ایجاد کند. چنین شد که تا مدتی، نوژان کاموسی عقب ایستاد و آزارگری تیم جنایتکار رضا پهلوی در ونکوور، از دریچه وکیلی به نام Mia Stewart در خود دادگاه ادامه یافت. در یک مورد، ستوارت که متوجه بود- در واقع در جریان دادگاه به قاضی اعلام کرده بودم- که باید برای جلسه دیگری دادگاه را زود ترک کنم، پس از پایان جلسه با موبایلی که در وضعیت ضبط تصویر قرار داده بود، به من حمله ور شد. ستوارت با خیال اینکه او تنها کسی ست که دارد فیلم می گیرد، به وضوح مترصد این بود که با خشمگین کردن من، درگیری فیزیکی ایجاد کند و آن بخش را از فیلم جدا و برجسته کند. ستورات با چند بار بردن نام من، سعی در توقف من داشت و نهایتا زمانی که داشتم به آسانسوری وارد می شدم، بدن عظیم خود را در برابر ورودی آسانشور قرار داد تا شاید مشتی یا سیلی ای به صورتش روانه کنم. اما من رویم را به سمت آسانسوری دیگر برگرداندم و این بار ستورات مانند یک گوریل پرنده خودش را جلوی ورودی آن یکی آسانسور هم پرت کرد و یک ریز با کلمات بی ربط قصد تحریک مرا داشت، … القصه، بی درنگ رفتار این وکیل وحشی را به کانون وکلای استان بریتیش کلمیبا گزارش کردم و هم زمان رسما پیگیری کردم که پلیس دادگاه تصاویر دوربین های مداربسته از زمان واقعه را حفظ کند تا دست کانون برای لاپوشانی بسته شود. هر چند کانون برخورد 100% شایسته ای از خود نشان نداد، اما به دنبال ارایه فیلم حادثه، ناچار شد که رفتار ستوارت را محکوم کند، به او هشدار غیر رسمی دهد و اعلام کند که در صورت تکرار، برخورد جدی تری با او خواهد شد. اکنون، احمدزاده به دروغ در دادگاه مدعی شده است که شکایت از این وکیل وحشی بیمبنا بوده است و کانون هم نهایتا هیچ برخوردی با او نکرده است! (با این خیال خام که من در برابر این دروغ گویی سکوت می کنم یا سندی از وحشی گری ستوارت ندارم!) از این رو برای مقابله با این فرقه تبهکار و کارچاق کن هایی که به نام وکیل و بنگاه حقوقی، پروار از پول های آلوده #سطلی_سپاهی ها قصد فریب دادن دادگاه را کرده اند، فیلمی که مستقلا از منابع مطلع به دست آورده ام را با شما به اشتراک می گذارم و بخش های مربوط از نامه های کانون وکلا را هم مستندا در اختیارتان خواهم گذاشت #پهلوی_شیاد #IRGCterrorists #جاوید_ایرانshow more

Masood Masjoody | مسعود مسجودی
34,618 views • 7 months ago
به چهرهی هر پسرکی نگاه میکنم، غصهی #ابوالفضل_وحیدی خفتم... میکند. عکسش با لباس جشن پایان الفبا، صورت خونینش، چشمهای بازش که هر چقدر خواهرش سعی کرد آنها را ببندد، بسته نشدند… ابوالفضل تا کلاس ششم مدرسه رفت اما برای پایه هفتم، هیچ مدرسهای حاضر به ثبت نامش نبود. میگفتند شلوغ و بیقرار است، سر کلاس آرام نمیگیرد. از طرفی پدرش هم برای ثبت نام همراهی نمیکرد. خواهرش هر جا که توانست رفت، حتی برای گرفتن نامه تا دادگاه هم رفت اما وقتی به دادگاه رفتند، نامهای ندادند و گفتند چون پدر زنده است، مادر یا خواهر حق پیگیری ندارند. همین شد که ابوالفضل دیگر به مدرسه برنگشت. از یازده سالگی کار میکرد. اول کارهای سبک، بعد کمکم دستش راه افتاد. امسال، از عید، هم کار میکرد هم حقوق میگرفت. ابوالفضل در محلهی خودشان در یک کفاشی مشغول بود. سال اول کارش با پول خودش گوشی خرید؛ کمی هم بزرگترهای فامیل کمکش کردند. از ابتدای امسال برایش پول جمع کردند تا وقتی هجدهساله شد، ماشین بخرند. خودش بیشتر به موتور فکر میکرد، اما خواهرش میگفت خطرناک است. هرچه در میآورد، کنار میگذاشت تا پسانداز کند برای خرید ماشین. مادرشان را کرونا از آنها گرفت. شبهای اول بعد از فوت مادر، ابوالفضل کنار خودش برای مادرش رخت خواب پهن میکرد و میگفت: «مامان میاد، پیشم میخوابه.» بزرگتر که شد، تازه فهمید که مادرش دیگر نیست و هر روز میپرسید:«واقعاً مامان مرده؟» سر خاک که میرفتند، بغضش میترکید اما اجازه نمیداد کسی اشکهایش را ببیند. سرش را میچرخاند، جایش را عوض میکرد. دو سال آخر، دلتنگیاش شدیدتر شده بود؛ میرفت گوشهای گریه میکرد که کسی نبیند. گاهی سر مزار مادر میگفت: «کاش بمیرم، این دنیا چیه؟» در جواب دیگران که از این حرف شاکی میشدند، جواب میداد: «خب راست میگم. هر وقت من مردم، همینجا کنار مامان خاکم کنید.» چهارشنبه، روزِ قبل از همان پنجشنبهای که همهچیز تمام شد، گفته بود برویم بهشت زهرا؛ حتی گفته بود پول اسنپ را خودش میدهد. گفتند پنجشنبهها شلوغ است، امشب دلتنگی را تحمل کن، شنبه میرویم. گفت باشه، اشکالی ندارد. همان شب عکس مادر را بغل کرده و خوابیده بود، بعد از کلی گریه. آن روز، وقتی صدایش کردند بیاید خانه، گفت پاهایش کثیف است و برمیگردد. شکلات و پرتقال تعارفش کردند، نخواست؛ اصرار که کردند، گفت باشه. در راه میخورم. آخرین دیدار همین بود. برای امسال، بزرگترهایش با حقوقی که از کفاشی گرفته بود برایش دو گرم طلا خریده بودند. خوشحال شده بود، هر روز میپرسید امروز طلا گرمی چند شده؟ الان من چقدر طلا دارم؟ مثل ذوق بچهها از عیدی. ابوالفضل دوست داشت پولدار شود. دلش میخواست زندگی بسازد. ۱۸دیماه… تا نیمهشب هیچ خبری از ابوالفضل نبود. حدسها شروع شد: شاید بازداشت شده، شاید کسی او را برده خانهاش. تا اینکه بالاخره خبر رسید که ابوالفضل ساچمه خورده. اولش کسی جرات نداشت ناگهانی خبر کشته شدنش را به خانواده بگوید. اما از پنجره خانه مادری، جمعیت عزادار دیده میشد. گریهی داییها و پسرعموها. گفته بودند چیزی نشده چون خواهرش طاقت داغ ابوالفضل را نداشت، اما همهچیز معلوم بود. جنازه را در سردخانه پیدا کرده بودند. در کهریزک… گفتند جنازهها زیاد است، باید از روی مانیتور و کد شناسایی شود. از هفت صبح تا چهارونیم عصر، از میان جنازهها پیدایش کردند. کیسهی مشکی، صورت خونی، بدن زرد... هیچکس باورش نمیشد. خانواده همه را خبر کرده بودند، اما در سردخانه جنازه را نگه داشته بودند. میگفتند «شستیم»، «میشوریم»، «میدیم». غریبهها هم میگفتند جنازهها را نمیدهند. خانوادهاش دیگر تاب نیاوردند؛ گفتند میرویم پسرمان را پیدا کنیم؛ ابوالفضل گفته بود:«اگر مردم، منو پیش مامان خاک کنید.» وقتی وارد غسالخانه شدند، دیدند ابوالفضل آنجا نیست. هیچ اثری از او نبود. سریع راه افتادند سمت کهریزک. آنجا بود؛ هنوز همانجا نگهش داشته بودند. خانواده ابوالفضل خودشان جنازه را بلند کردند و گذاشتند داخل آمبولانس. هیچکس جلو نیامد. باید خودت جنازهی عزیزت را برمیداشتی، توی صف میایستادی، تا نوبتت برسد. بردندش غسالخانه. گفتند شب شده، فردا خاکش کنید. قبول نکردند. گفتند بین اینهمه جنازه، جسد بچهی ما گم میشود. نمیگذاریم فردا شود. ساعت شش عصر، همان روز، خاکش کردند؛ همان جایی که دلش میخواست، کنار مادرش…show more

پری
330,056 views • 5 months ago
شرم بر Object oriented programming! خیلی دربارهی بازدهی در... برنامهنویسی صحبت میشه و همیشه دربارهی الگوریتم سریعتر یا ساختماندادهی مناسب بحث میشه. اما نیخوام دربارهی یه مسالهای که کمتر دیدم صحبت بشه موضوعی رو باز کنم. اون هم استفاده از ویژگیهای cpuهای مدرن مثل prefetching یا SIMD ـه! قبل از همه چیز باید بدونیم پردازش مربوط به خوندن و نوشتن اطلاعات از روی RAM و اعمال دستورات روی CPU مربوط میشه. اما سرعت پیشرفت و بازدهی CPUها خیلی بیشتر از RAM بوده. این عکس فاصلهی بازدهی پردازندهها رو با رم نشون میده. یعنی اگر درست کد نزنیم پردازنده زمان زیادی رو منتظر اطلاعات میمونه تا بتونه کارش رو ادامه بده. در این بین خیلی از ویژگیها مثل سطوح مختلف Caching در پردازندهها ایجاد شده مثل L1, L2, L3 و احتمالاً موقع خرید CPU بهش برخورد کردید. کاری که این Caching انجام میده خوندن اطلاعات از رم و آماده نگه داشتن اونا وقتیه که CPU در حال محاسبه ست. (به صورت فیزیکی واقعاً نزدیکتر میشه) از سمت دیگه چندین هستهی CPU و thread استفاده میکنیم تا به صورت موازی پردازشها رو انجام بدیم. اما هرکسی تا حالا کد برای سیستم موازی زده باشه میدونه اصلاً راحت نیست و الزاماً استفاده از دو خط موازی به معنی دوبرابر شدن سرعت نیست! بسته به سناریویی که قرار داریم ممکنه ۳۰ تا ۵۰ درصد افزایش سرعت داشته باشیم (بله سرعت دو برابر هم میرسیم مگر هیچ sync point ایی لازم نباشه اما خیلی محدوده!) اما در پردازندههای مدرن پردازش موازی به هسته یا thread محدود نمیشه. بلکه قابلیت SIMD وجود داره که کارش انجام یک عمل ریاضی روی چندین داده به صورت همزمانه. Single Instruction Multiple Data. همینطور CPUهای امروزی قابلیت خاصی برای پیشبینی شاخه در دستوراتی که اجر میشن دارند. به این صورت که وقت شما از if استفاده میکنید. CPU هر دو حالت true و false رو محاسبه میکنه و هر وقت شرط مشخص شد جواب شاخهی درست رو بر میگردونه! حالا این قضیه در خودش یه سری روش اجرای کد و مشکل امنیتی هم داشته که مورد بحث ما نیست. حالا اگر طوری کد بنویسیم که CPU لازم نباشه مداوم branch بررسی کنه باعث افزایش سرعت پایپلاینهای پردازشی میشیم. (جزییات بیشترش رو در uOps باید صحبت کنیم). حالا اگر تمام موارد بالا رو در نظر بگیریم و میتونیم بهینهترین حالت ممکن کد بزنیم. فکر میکنید این افزایش سرعت تا چه حده؟ بستگی به سناریوی مساله میتونه بین ۱۰ تا ۱۰۰ برابر (حتی بیشتر) سریعتر باشه! اصلاً شوخی نمیکنم. اول مقاله نوشتم شرم بر object-oriented programming. این رو برای جلب توجه ننوشتم. در حقیقت این پارادایم برنامهنویسی حدود سالهای ۸۰ میلادی محبوب شد و هنوز ادامه داره اما با پیشرفت تکنولوژی شاهد تغییر پارادایم نبودیم. در ابتدا که فاصلهی سرعت CPU و RAM به هم نزدیک بود تفاوت چندانی نمیدیدیم و همه چیز با OOP اکی بود. اما به مرور زمان که سختافزار به روز شد نرمافزار وابسته به تفکر قدیمی باقی موند. مثلاً در OOP ما یه سری کلاس میسازیم و اونا رو encapsulate میکنیم و از اونا شی میسازیم و روشون پردازش انجام میدیم. یه چیزی مثل: struct particle { float x, y; float vx, vy; particle(const float x, const float y, const float vx, const float vy) : x(x), y(y), vx(vx), vy(vy) { } virtual ~particle() = default; virtual void update(const float delta_time) =0; }; یه کلاس خیلی ساده ذرات - particle که مختصات محیط دو بعدی x و y داره و به همین منوال سرعت در اون جهت. یه تابع virtual هم داره برای بقیه که ارث ببرند و ویژگیهای متفاوت اضافه کنند. تو particle system یا سیستم ذارت که برای جلوههای ویژه VFX مثل دود، غبار، آب و غیره استفاده میشه ممکنه تا چندین میلیون ذره پردازش بشن (فیلم مومیایی رو یادتونه؟ آفرین همون شنها) حالا من از اون کلاس ارث بردم و این تابع خیلی ساده رو پیاده کردم که فقط در هر فریم سرعت ذره رو حساب میکنه: void update(const float delta_time) override { volatile float x = this->x; volatile float y = this->y; x += vx * delta_time; y += vy * delta_time; this->x = x; this->y = y; } این که چرا volatile استفاده کردم به خاطر اینه که این مثال خیلی ساده ست و کامپایلر این تابع رو بهینه میکنه در اصل کاری که میکنه اجازهی ساختن virtual table رو نمیده و تابع بقیه جاها inline میشه. اما تو پروژهی بزرگ با چند لایه ارثبری همیشه بهره بردن از بهینهسازی کامپایلر ممکن نیست. حالا جلوتر این رو هم بر میدارم که دعوایی نباشه. بعد هم کلاس particle system رو داریم که خیلی ساده هر ذره رو آپدیت میکنه. فقط توجه داشته باشید هر ذره به صورت یک شی در حافظه new میشه. حالا اگر ۱۰۰ میلیون پارتیکل رو یک بار آپدیت کنم حدود ۶۵۳ میلیثانیه طول میکشه. بد نیست ها؟ افتضاحه! تو بازی ویدیویی که ۶۰ فریم بر ثانیه اجرا میشه ما ۱۶ میلی ثانیه وقت داریم تا چند میلیارد محاصبه رو انجام بدیم. (بدون volatile حدود ۵۳۰ میلیثانیه) برای افزایش باذهی من یه کار خیلی ساده میکنم به جای این که تمام این ذرات رو new کنم که باعث میشه هر کدوم یه جای RAM به صورت تصادفی پخش بشن اونا رو پشتسر هم در یک آرایه قرار میدم. یعنی تمام آدرس اونا پشتسر هم قرار میگیره. فقط همین تغییر باعث میشه همین تعداد ۱۱۵ میلیثانیه زمان ببره. حدود ۵ برابر سریعتر! همین تغییر کوچیک! چرا چون زمان پیدا کردن هر آبجکت به صورت پراکنده تبدیل شده به آدرسهای پشتسر هم و CPU سریعتر میتونه اطلاعات رو بخونه! به این شکل: struct particles_chunk { std::vector > x; std::vector > y; std::vector > vx; std::vector > vy; } حالا در مرحلهی بعدی همون کد ساده رو با دستورات SIMD مینویسم. نتیجه میشه ۱۱۸ میلی ثانیه: void update_simd(const float delta_time) { const size_t num_particles = particles_.x.size(); const size_t simd_end = num_particles - (num_particles % 8); const __m256 dt_v = _mm256_set1_ps(delta_time); for (size_t i = 0; i (1, std::thread::hardware_concurrency()); const size_t base_chunk_size = num_particles / num_threads; const size_t aligned_chunk_size = ((base_chunk_size + 7) / 8) * 8; std::vector threads; threads.reserve(num_threads); for (size_t t = 0; t (&particles_.x[i + prefetch_distance]), _MM_HINT_T0); _mm_prefetch(reinterpret_cast (&particles_.vx[i + prefetch_distance]), _MM_HINT_T0); _mm_prefetch(reinterpret_cast (&particles_.y[i + prefetch_distance]), _MM_HINT_T0); _mm_prefetch(reinterpret_cast (&particles_.vy[i + prefetch_distance]), _MM_HINT_T0); } _mm256_store_ps(&particles_.x[i], _mm256_fmadd_ps(_mm256_load_ps(&particles_.vx[i]), dt_v, _mm256_load_ps(&particles_.x[i]))); _mm256_store_ps(&particles_.y[i], _mm256_fmadd_ps(_mm256_load_ps(&particles_.vy[i]), dt_v, _mm256_load_ps(&particles_.y[i]))); } تا اینجا من هیچ کار عجیب و غریبی نکردم. حافظه مرتب، پشتسر هم و با استفاده از SIMD کد نوشتم. نه ساختمانداده مطرحه و نه الگوریتم و بیشتر از ۶ برابر افزایش سرعت رسیدیم! مثال بعدی که branch prediction باشه رو آخر تست یادم اومد و نشد با بقیه مقایسه کنم. اما به هر حال. فقط این مثال ساده رو ببینید: for (size_t i = 0; i < num_particles; ++i) { if (particles_.is_active[i]) { particles_.x[i] += particles_.vx[i] * delta_time; particles_.y[i] += particles_.vy[i] * delta_time; } } کاری که میکنیم با if چک کنیم اگر ذره فعاله سرعتش رو حساب کنیم اگر نیست هیچی. این مثال ساده حدود ۱۴۱ میلی ثانیه طول میکشه. اگر اون if رو حذف کنم و بیام به جاش در محاسبه غیرفعال بودن رو صفر در نظر بگیرم و جلوی branching رو بگیرم: void update_branchless(const float delta_time) { const size_t num_particles = particles_.x.size(); for (size_t i = 0; i < num_particles; ++i) { particles_.x[i] += particles_.vx[i] * delta_time * particles_.is_active[i]; particles_.y[i] += particles_.vy[i] * delta_time * particles_.is_active[i]; } } با این روش ۱۱۹ میلی ثانیه طول میکشه تا کدم اجرا بشه. یعنی با وجود if تقریباُ کد ما ۸۰ درصد اجرا میشه. این در شرایطیه که فعال بودن ذرات تصادفیه و cpu نمیتونه branch perdiction درستی داشته باشه. برای همین کند میشه. حالا شاید بگید که تو گفتی چند میلیون محاسبه زیر ۱۶ میلیثانیه. بله درسته. من اینجا از دو thread استفاده کردم. فقط جنبهی نمایش داشت از warmup و اینا هم اجتناب کردم چون در دنیای واقعی این پردازشها میره روی GPU و Compute shader که معرفی اون خودش یه پست دیگه ست. کدها رو روی CPU قدیمی اجرا کردم: Intel Core i7 6700K @ 4.00GHz Skylake 14nm 16.0GB Dual-Channel DDR4 @ 1069MHz اگر دوست داشتید این محاسبه رو با زبان برنامهنویسی مورد علاقهتون تست کنید و سعی در بهینه کردنش کنید. در ضمن اگر تمام اینا رو کنار هم بذاریم با یه سری مفاهیم شبیه به همینهایی که گفتیم با جزییات بیشتر میشه Data oriented programming که در زبانهای مختلف مثل خانوادهی C، Rust، Zig و غیره براشون کتابخونه و آموزش موجوده. خلاصه بازدهی فقط به الگوریتم و ساختمانداده محدود نمیشه.show more

Mohamad Iraji
22,055 views • 1 year ago