نوشته‌های ترمینالی
2.76K subscribers
425 photos
12 videos
32 files
2.29K links
Download Telegram
درمورد زبان zig هم بدونیم.
یک تلاش دیگه (مثل rust شاید یشه گفت) برای حل کردن مشکلات C
https://ziglang.org/learn/overview/
چطور در java کد javascript اجرا کنیم؟ (به همین عجیبی)!

ایده از این سوال stackoverflow شروع شد.
https://stackoverflow.com/questions/2605032/is-there-an-eval-function-in-java
که چطور در جاوا تابع eval داشته باشیم.
البته java زبانیه که کامپایل میشه و داشتن eval توش یکم عجیبه. در حالی که توی پایتون وjavascript چیز شناخته شده‌ایه (هرچند استفاده ازش خطرناکه)
حالا فرض کنیم که بتونیم توی ران‌تایم به کامپایلر نصب شده روی سیستم دسترسی پیدا کنیم و اون رو فراخوانی کنیم، میتونیم کدمون رو توی main یه کلاسی بذاریم و اون رو کامپایل کنیم و بعد با class loader اجرا کنیم. اما شاید اصلا جایی که کد جاوا رو اجرا میکنیم jdk نصب نشده باشه (فقط java runtime داشته باشه نه کامپایلر)
حالا توی جاواهای جدید، پکیج jdk و jre اصلا یکی شدن و جای نگرانی نیست. اما این کار هم مصیبت های خودشو داره.
تو این مطلب پارسا در مورد اینکه چطوری توی ران‌تایم به کامپایلر جاوا دسترسی داشته باشیم برامون نوشته:
https://javacup.ir/java-runtime-compiler/
همچنین از جاوای ۹ به بعد، یه کامپایلر هم داخل jshell پیاده‌سازی کردن که اون هم از ران‌تایم قابل دسترسیه، هرچند اونم با قواعد و قوانین خودش.

اما من که اول مطلب گفتم جاوا اسکریپت، پس چی شد. تا اینجا هرچی که گفتم برای اجرای کدی بود که به زبون جاوا نوشته شده، اما java امکان اجرای کد به زبان js در ران‌تایم با موتور nashron رو داره. این امکان البته که deprecate شده (کی جاوااسکریپت رو دوست داره که برداره بیارتش تو جاوا)
اما به هر حال وجود داره.
مکانیسم هم تقریبا اینطوریه که شما engine رو لود می‌کنید، بعد بهش string میدین و نتیجه رو در قالب کلاس های جاوا بهتون میده. حالا کلاس های Number مثل Double وInteger یا کلاس های دیگه.
نکته اینه که شما محدود به پرینت کردن یه چیز ساده نیستید، توی موتور js می‌تونین تابع تعریف کنید و بعدا صداش کنید و از خروجی تابع استفاده کنید و احیانا کارهای دیگه که به ذهن من نرسیده.

این کد پایین یک عبارت میگیره که متغیر x رو داره، بعدش x رو بهش میدین و توی عبارت میذاره و نتیجه رو میده.
البته روی جاوا ۱۷ کار نکرد ولی ۱۱ اوکیه.
این واقعا چیز عجیبیه =)
میاد هر دو تا صفحه‌ی ویکیپدیا رو با حداکثر ۶ تا لینک به هم متصل میکنه.
مثلا صفحه linus خودش به bash لینک نداره اما با این راه ها میشه به bash رسید.

https://www.sixdegreesofwikipedia.com/

البته که تو این مثال من، دو تا چیز نزدیک بودن، چیزهای غیرمرتبط رو سرچ کنید تا واقعا تعجب کنید.
👍1
آموزش نصب و راه اندازی redis
https://redis.io/topics/quickstart
نوشته‌های ترمینالی
آموزش نصب و راه اندازی redis https://redis.io/topics/quickstart
آموزش دیتاتایپ های ردیس
که به نظرم در کنار‌ آموزش درک خوبی از امکاناتش میده:
https://redis.io/topics/data-types-intro
امتحان کردن redis-client در مرورگر
https://try.redis.io/
👍1
خلاصه که چقدر redis خفنه. یه جوری توضیحش میدن از دور انگار یه مپ key-value ئه، اما خب نه. کلی datastructure داره، کلی کاربرد مختلف میتونه داشته باشه. به شکل دیتابیس ضعیف نگاهش نکنید به نظرم.


https://djaytechdiary.com/thinking-in-redis-a-quick-introduction
👍1
این faster than li رو واقعا دوست دارم.
خیلی علاقه داره به اینکه چیزها چطوری کار میکنن.
این ویدیوش هم خیلی خوب بود:
چرا برنامه های ما از الکترون استفاده میکنن و چرا ارزشش رو داره.
https://youtu.be/hnaGZHe8wws
linux users be like:
خب توزیعم خیلی خوب کار میکنه، برنامه های مورد نیازمم نصبه، عمر باتری هم خوبه، ظاهرشم خوبه.
بذار عوضش کنم.
😁15👍1
نوشته‌های ترمینالی
linux users be like: خب توزیعم خیلی خوب کار میکنه، برنامه های مورد نیازمم نصبه، عمر باتری هم خوبه، ظاهرشم خوبه. بذار عوضش کنم.
خب بالاخره garuda نصب و پایدار شد. توزیع بدی نیست. فقط خیلی روی fish تمرکز داره. =) بابا fish هم شد shell اخه؟
میتینگ دولوپرهای نرم‌افزار آزاد و متن باز اروپا یا FOSDEM، رویدادی است که هر ساله در بروکسل برگزار می‌شود. بدون شک FOSDEM یکی از بزرگترین و شاخص‌ترین گردهم‌آیی‌ها برای افراد علاقمند است که توسط افراد داوطلب برگزار می‌شود. در چند سال گذشته بیش از ۵۰۰۰ نفر در آن شرکت می‌کردند. امسال نیز همانند پارسال، به خاطر همه‌گیری کرونا، این رویداد به شکل مجازی برگزار خواهد شد.
دبیان، openSUSE، بنیاد Eclipse، فدورا، Free Software Foundation Europe (بنیادی مستقل از FSF آمریکا)، eeBSD، GNOME، گوگل، KDE, LibreOffice, MariaDB, ماتریس، NextCloud، PostgreSQL، اوبونتو، بنیاد آپاچی و چندین پروژه و شرکت دیگر در آن استند و جایگاه مجازی دارند. امکان چت و گپ زدن آنلاین وجود دارد.
رویداد FOSDEM 2022 امروز و فردا در جریان خواهد بود. ۶۵۵ نفر در آن ۷۳۳ ارائه خواهند داد. که در ۱۰۳ خط زمانی موازی انجام خواهد شد و به شکل آنلاین در دسترس خواهد بود. زبان بیشتر ارائه‌ها انگلیسی است. از پایتون، Golang، جاوااسکریپت، Virtualization و کانتینرها گرفته تا FPGA و Free Software Radio و موارد بسیار زیاد دیگر. خوشبختانه همه این ارائه‌ها به شکل ویدیویی در دسترس همگان قرار دارد و فرصت عالی برای افرادی است که علاقمند به یادگیری هستند. FOSDEM از پشتیبانی مالی شرکت‌های گوگل، سیسکو، هوآوی، ردهت و چندین اسپانسر دیگر برای برگزاری این رویداد بزرگ برخوردار است.
اختلاف بین time of check و time of use می‌تونه باعث باگ های عجیبی بشه.
فرض کنید یه فایل رو میخواید باز کنید، بعد میگین اوکی من اول چکش میکنم، بعد اگه وجود داشت بازش می‌کنم. حالا تست هم میکنید برنامه رو و همه چی خوبه.
اما یه حالت ممکنه پیش بیاد که دقیقا بین اینکه شما چک کردید فایل وجود داره و بازش کنید، یه برنامه/ترد دیگه دستور بده که این فایل پاک بشه.
خب در این صورت چی میشه؟ شما چک کردن اولیه تون موفق بوده، اما باز کردن فایل ناموفقه،
حالا اینجا صرفا یه اکسپشنه که احتمالا هندلش نکردید چون فکر می‌کردید unreachable باشه اما ممکنه اتفاق های عجیب تری هم بیفته.

حالا دو تا چیز رو بررسی کنیم، اول اینکه چرا چنین چیزی پیش اومد؟ برای اینکه ما فرض میکنیم برنامه ما تنها برنامه موجود تو سیستمه، که خب اکثر موارد فرض صحیحی نیست، اما کجا خودش رو نشون میده؟ وقتی به منابع مشترک با برنامه های دیگه (IO و فایل ها و ...) نیاز پیدا کنیم. اینها چیزهایی هستید که در اختیار موجودات دیگر سیستم هم هستند.
حالا چطوری حل کنیم مشکل رو؟ دقت کنیم که تو یه محیط concurrent داریم کار میکنیم. حتی وقتی برنامه ما ترد نداره، چون برنامه های دیگری در حال اجرا هستند. و به عنوان راه حل، چون عملا استفاده از یه قفل سخت میشه، بیایم از عملیات هایی استفاده کنیم که اتمیک باشن. یکم حرفم نادقیق شد اما خلاصه که چرا اول چک کنیم بعد باز کنیم؟ یه بار اقدام می‌کنیم که باز بشه، اگه شد که عالیه اگه نه هم می‌فهمیم چرا باز نشده دیگه. در این صورت همش تو یه مرحله بوده (و اگه سیستم عامل خوبی باشه) همه چی مطابق انتظار پیش رفته و ریس کاندیشن توسط سیستم عامل هندل شده.
در نهایت هم یه قاعده هست که میگه عذرخواهی کردن راحت تر از اجازه گرفتنه. خلاصه که اشکال نداره اول چک نکنیم و یهو کارمون رو انجام بدیم.
نهایتش به اکسپشن پرت میشه که حلش میکنیم (عذرخواهی)
چک کردن قبل کار: اجازه گرفتن
"It is easier to ask for forgiveness than permission"

https://en.wikipedia.org/wiki/Time-of-check_to_time-of-use
👍8