مطالبی که با هشتگ #توصیهها منتشر شده بود رو جمعبندی کردم و در قالب یک مطلب ویرگولی منتظر کردم.
اگه دوست داشتید یه مروری کنید یا منتشر کنید میتونه گزینهی خوبی باشه.
https://vrgl.ir/v8sZi
اگه دوست داشتید یه مروری کنید یا منتشر کنید میتونه گزینهی خوبی باشه.
https://vrgl.ir/v8sZi
ویرگول
چند توصیه برای دوستان برنامهنویس جوانترم! - ویرگول
در این مطلب چند تا توصیه به شما که برنامهنویسی میکنی یا برنامهنویسی رو دوست داری کردم، امیدوارم برات مفید باشه و به پیشرفتت کمک کنه
❤10👍2
اگه برنامهنویسی بکاند (حداقل کمی) بلد هستین و میخواین با پکیج net/http خود گولنگ هم دوست بشید این آموزش از داکیومنتهای خودشون تا حد خوبی گویاست و توصیه میشه:
https://go.dev/doc/articles/wiki/
https://go.dev/doc/articles/wiki/
go.dev
Writing Web Applications - The Go Programming Language
❤6👎1🔥1
یک visualization خیلی زیبا روی گیتهاب
به این شکل که اومده بر اساس star مشترک آدما، فاصله برای پروژه ها تعریف کرده و به همین ترتیب خوشه بندی کرده.
مثلا این قسمت که من بهش علاقه دارم خوشهی ترمیناله، داخلش از vim و nvim و shell های مختلف و dotfiles ... به چشم میخوره.
https://anvaka.github.io/map-of-github/#4.8/-19.28/-9.98
جالبه که قسمت مربوط به هوش و قسمت فرانت (احتمالا پکیج های node) خیلی بزرگن
به این شکل که اومده بر اساس star مشترک آدما، فاصله برای پروژه ها تعریف کرده و به همین ترتیب خوشه بندی کرده.
مثلا این قسمت که من بهش علاقه دارم خوشهی ترمیناله، داخلش از vim و nvim و shell های مختلف و dotfiles ... به چشم میخوره.
https://anvaka.github.io/map-of-github/#4.8/-19.28/-9.98
جالبه که قسمت مربوط به هوش و قسمت فرانت (احتمالا پکیج های node) خیلی بزرگن
anvaka.github.io
Map of GitHub
This website shows a map of GitHub. Each dot is a project. Two dots within the same cluster are usually close to each other if multiple users frequently gave stars to both projects
👍4🤩1
Forwarded from Woland's Linux Journal (Woland)
⚠️خبر:
قرار آرچ لینوکس زیرساخت خودش رو از آپاچی SVN به گیت تغییر بده.
در پی این مهاجرت اسم برخی از مخازن هم تغییر خواهد کرد.
🔴مخزن community با extra تلفیق میشن و فقط extra باقی میمونه.
🟡مخزن testing به دوشاخهی core-testing و extra-testing تقسیم میشه.
🔵مخزن staging هم به core-staging و extra-staging تقسیم میشه.
این پروسه جمعه شروع میشه و تا یکشنبه ادامه داره که در طی این مدت هیچ آپدیتی منتشر نمیشه و اتصال rsync و HTTP به مخازن قطع میشه.
اگه همهچیز درست پیش بره از سایت آرچ یک خبر جدید به همراه مراحل ضروری از سمت کاربر اعلام خواهد شد.
قرار آرچ لینوکس زیرساخت خودش رو از آپاچی SVN به گیت تغییر بده.
در پی این مهاجرت اسم برخی از مخازن هم تغییر خواهد کرد.
🔴مخزن community با extra تلفیق میشن و فقط extra باقی میمونه.
🟡مخزن testing به دوشاخهی core-testing و extra-testing تقسیم میشه.
🔵مخزن staging هم به core-staging و extra-staging تقسیم میشه.
این پروسه جمعه شروع میشه و تا یکشنبه ادامه داره که در طی این مدت هیچ آپدیتی منتشر نمیشه و اتصال rsync و HTTP به مخازن قطع میشه.
اگه همهچیز درست پیش بره از سایت آرچ یک خبر جدید به همراه مراحل ضروری از سمت کاربر اعلام خواهد شد.
👍9🔥1
Forwarded from Woland's Linux Journal (Woland)
میدونستین با دستور زیر میتونید به آخرین پوشهای که داخلش بودید برگردین؟
مخصوصا وقتی کاربرد داره که یه cd به یه جای دور کردین و میخواید برگردین.
cd -
مخصوصا وقتی کاربرد داره که یه cd به یه جای دور کردین و میخواید برگردین.
👍26🔥6😁1
Woland's Linux Journal
⚠️خبر: قرار آرچ لینوکس زیرساخت خودش رو از آپاچی SVN به گیت تغییر بده. در پی این مهاجرت اسم برخی از مخازن هم تغییر خواهد کرد. 🔴مخزن community با extra تلفیق میشن و فقط extra باقی میمونه. 🟡مخزن testing به دوشاخهی core-testing و extra-testing تقسیم میشه.…
آپدیت: الان تموم شده عملیات!
https://archlinux.org/news/git-migration-completed/
https://archlinux.org/news/git-migration-completed/
🔥6
این لینک دونیت به منه، اگه مطالب این چنل یا وبلاگم توی ویرگول رو دوست داشتین، میتونید با دونیت خوشحالم کنید و البته از ادامه فعالیت حمایت کنید. 🙂
https://zarinp.al/rsharifnasab
https://zarinp.al/rsharifnasab
zarinp.al
درگاه پرداخت اینترنتی زرینپال
گذرگاه تراکنشهای مالی امن
👍16🔥5👎3🕊3❤1
یه هدری توی http هست که مرورگرها ارسال میکنن به اسم user agent که قرار بوده برای سرور مشخص کنه چه مرورگری/کلاینتی داره درخواست اون محتوا رو میده
مثلا شکلش چنین چیزیه:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.1.
و خب خیلی نمیشه فهمید الان این مال چه مرورگریه (این مال اجه)
به قول دوستمون:
No wonder it's hard to do browser detection, they're all pretending to be one another!
اما داستان چیه؟
خلاصهشو اینجا بخونید:
https://stackoverflow.com/questions/1114254/why-do-all-browsers-user-agents-start-with-mozilla
مثلا شکلش چنین چیزیه:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.1.
و خب خیلی نمیشه فهمید الان این مال چه مرورگریه (این مال اجه)
به قول دوستمون:
No wonder it's hard to do browser detection, they're all pretending to be one another!
اما داستان چیه؟
خلاصهشو اینجا بخونید:
https://stackoverflow.com/questions/1114254/why-do-all-browsers-user-agents-start-with-mozilla
Stack Overflow
Why do all browsers' user agents start with "Mozilla/"?
All popular browsers' user agent strings, even Internet Explorer's, start with Mozilla/. Why is this the case?
👍11❤2😁1
نوشتههای ترمینالی
این لینک دونیت به منه، اگه مطالب این چنل یا وبلاگم توی ویرگول رو دوست داشتین، میتونید با دونیت خوشحالم کنید و البته از ادامه فعالیت حمایت کنید. 🙂 https://zarinp.al/rsharifnasab
با تشکر از حمایتتون و توضیحات قشنگی که برام نوشتین ❤️
❤5
نوشتههای ترمینالی
یه آموزش متنی خوب برای tmux برای کسایی که هنوز شروع به استفاده نکردن: https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/
با tmux خیلی هامون آشنا هستیم. یه terminal multiplexer قدیمی و خفن.
ولی متاسفانه کار باهاش یه مقداری سخته و راه دست نیست.
یه جایگزین خوب براش با rust نوشتن که البته هنوز در حالت بتا است ولی مشکل خاصی نداره.
اسمش zellijئه.
سایتش:
https://zellij.dev/
صفحه گیتهابش:
https://github.com/zellij-org/zellij
و صفحه معرفیش:
https://www.linuxuprising.com/2021/04/zellij-is-new-terminal-multiplexer.html
البته توی این معرفی هنوز تازه اومده و بتا است. الان بالغ تر شده.
ولی متاسفانه کار باهاش یه مقداری سخته و راه دست نیست.
یه جایگزین خوب براش با rust نوشتن که البته هنوز در حالت بتا است ولی مشکل خاصی نداره.
اسمش zellijئه.
سایتش:
https://zellij.dev/
صفحه گیتهابش:
https://github.com/zellij-org/zellij
و صفحه معرفیش:
https://www.linuxuprising.com/2021/04/zellij-is-new-terminal-multiplexer.html
البته توی این معرفی هنوز تازه اومده و بتا است. الان بالغ تر شده.
zellij.dev
A terminal workspace with batteries included
🔥8👍2❤1👎1
دوست دارید توی ترمینال اسکرینسیور زیبا داشته باشید؟
میتونید از pipes.sh استفاده کنید.
https://github.com/pipeseroni/pipes.sh
نتیجه میشه یه چنین چیزی که همیشه هم پویاست و داره شکلهای قشنگ جدید تولید میکنه!
میتونید از pipes.sh استفاده کنید.
https://github.com/pipeseroni/pipes.sh
نتیجه میشه یه چنین چیزی که همیشه هم پویاست و داره شکلهای قشنگ جدید تولید میکنه!
🔥6😍1😐1
اگر میخواهید یه پروژه رو کلون کنید و حجمش زیاده، میتونید برای بهینه سازی، دو تا کار کنید:
۱- فقط کامیت آخر رو دانلود کنید، مثلا اگر میخواهیم فقط برنامه رو از سورس دانلود کنید و با تاریخچهاش کاری نداریم منطقیه.
۲- فقط برنچ اصلی (master یا main) رو دانلود کنید چون احتمالا با باقی برنچها کاری نداریم.
دستورش چی میشه؟
git clone --branch master --depth 1 https://github.com/neovim/neovim.git
۱- فقط کامیت آخر رو دانلود کنید، مثلا اگر میخواهیم فقط برنامه رو از سورس دانلود کنید و با تاریخچهاش کاری نداریم منطقیه.
۲- فقط برنچ اصلی (master یا main) رو دانلود کنید چون احتمالا با باقی برنچها کاری نداریم.
دستورش چی میشه؟
git clone --branch master --depth 1 https://github.com/neovim/neovim.git
GitHub
GitHub - neovim/neovim: Vim-fork focused on extensibility and usability
Vim-fork focused on extensibility and usability. Contribute to neovim/neovim development by creating an account on GitHub.
👍22
Forwarded from Semicolon (Ali Moeinian)
GitHub Licenses.pdf
1.2 MB
با حمایت کردن، خیلی خیلی برای ادامهی کار بهم انرژی میدید :
https://www.coffeete.ir/alimoeinian
مرسی از همگی ❤️
https://www.coffeete.ir/alimoeinian
مرسی از همگی ❤️
❤5👍1👏1
نوشتههای ترمینالی
در مورد llvm بیشتر بدانیم. https://www.infoworld.com/article/3247799/what-is-llvm-the-power-behind-swift-rust-clang-and-more.html
خیلی از زبونها رو میشنویم که از llvm استفاده میکنن؟
این چی بود اصلا که همه کامپایلرها رو گرفت؟
ماجرا از اینجا شروع میشه که کامپایلرها باید برای کامپایل کردن یک فایل از زبون مبدا (مثلا راسط) به زبان ماشین، این عملیات رو انجام بدن:
۱- خوندن کیلدواژه به کلیدواژهی سورسکد مبدا
۲- پارس کردن ساختارهای مختلف با کمک کلیدواژهها (parsing خیلی مفصله ماجراش و الگوریتمهای متنوعی داره که باشه برای بعد)
۳- بررسی اینکه این کدی که نوشته شده چیه، مثلا تایپهاش درست هستن؟ معنی میده اصلا؟ بهینهسازیای نیاز نداره و اینا.
۴- تبدیل کد ماشین
حالا این تبدیل کد ماشین رو ما خیلی ساده میگیم ماشین اما کدوم ماشین؟ x86؟ arm؟ پس فردا risc-v و mips چی؟ بعد هر کدوم از اینا نسخه دارن و instruction مختلفی بهشون اضافه میشه. اینکه فقط بخوایم یه کدی تولید کنیم شاید خیلی سخت نباشه ولی بهینه کردنش و اطمینان از اینکه درست کار میکنه و پشتیبانی از معماری پردازندههای مختلف واقعا کار سختیه. این کار سخت رو مثلا کامپایلر GCC خودش انجام میده.
اما همهی کامپایلرها اینطور کار نمیکنن. مثلا جاوا یک رویکرد تقریبا منحصر به فرد پیش گرفت. گفت من کامپایلرم نمیتونه کد به هر پلتفرم مقصدی تولید کنه، بلکه میام یه «کد میانی» تولید میکنم به اسم byte code. یعنی چی؟ یعنی این کد میانی یه جور کد ماشینیه که واقعا هیچ ماشینی بلد نیست اجراش کنه، یه اسمبلیه برای یک پردازندهی فرضی. مزیتش برای کامپایلر اینه که فقط لازمه دغدغهش این باشه که همین رو تولید کنه و همین رو بهینه کنه.
اما در مرحلهی بعد چه کسی اینو اجرا کنه؟ مجبوریم یه VM (به اسم JVM یا java virtual machine) دااشته باشیم که اون بایتکد رو میگیره و ترجمه میکنه به زبان ماشین و همونجا هم اجراش میکنه. مثلا JVM برای پردازندهی x86 و الی آخر.
جای تعجب نداره که جاوا اونقدر نمیتونه سریع باشه چون این JVM به هر حال سربار داره، هرچقدر هم بهینهش کنن چون به هر حال داره ترجمهای رو انجام میده.
اما حالا فرض کنید که کامپایلر ما همون کار راحت تولید یه bytecode رو انجام میداد، اما به جای اینکه خود byte code رو بدیم به ملت و اونجا مجبور باشن VM نصب کنن، این bytecode رو یکی تبدیل میکرد به کد ماشین و بهینهش هم میکرد. خب llvm همینجا وارد میشه!
یعنی چی؟ یعنی به کامپایلر راسط میگه شما لازم نیست خودت کد اسمبلی/زبان ماشین تولید کنی، بلکه بیا LLVM IR یا LLVM intermediate representation تولید کن. من اینو تبدیل میکنم به کد ماشین بهینه!
و اینجا یه مفهوم front-end و back-endی هم شکل میگیره. فرانتاند به قسمتی که سورسکد رو میخونه و پارس میکنه و ... تا IR تولید بشه میگن و بک اند میشه قسمتی که IR رو میخونه و پردازش میکنه و کد ماشین تولید میکنه. LLVM برای ما نقش یک بکاند رو داره.
حالا سینتکس LLVM IR چه شکلیه؟ خیلی برامون مهم نیست ولی میتونیم ببینیمش. مثلا به clang بگیم که به جای تولید کد ماشین نهایی، برامون LLVM IR رو خروجی بده. میتونه این کارو بکنه. حتما حدس میزنید که clang یه کامپایلر بر پایهی llvmئه که این قابلیت رو داره.
با کمک این دستور میتونید IR رو مشاهده کنید و حتی میتونید با کمک llvm اجراش کنید. با دستور lli یا llvm interpreter میتونید به شکل تفسیری اجراش کنید یا با llc کامپایلش کنید.
اما llvm باز هم کار ما رو سادهتر میکنه، به جای اینکه از فرانتاند بخواد که یکجا بهش IR رو تحویل بده، میاد از visitor design pattern استفاده میکنه. خلاصهش اینطوریه که به جای اینکه نهایتا خروجی IR رو ازمون بگیره، در روال ساختش هم مشارکت میکنه. مثلا میگه تو میدونی که یه تابع داری ولی محتواش رو هنوز نخوندی؟ عیب نداره تا همینجا به من بگو من برات میسازم. خب یه if توش داری؟ من داخل تابع اضافهش میکنم. و الی آخر. برای اینکه از این قابلیت استفاده کنیم لازم داریم که توابعی که llvm داره مثلا برای ساخت تابع، داخل فرانتاندمون صدا کنیم. اینجا یه مشکلی که داریم اینه که به شکل پیشفرض کتابخونهش فقط برای cpp وجود داره، که البته چون خیلی از کامپایلرها با cpp هستن برامون کافیه. ولی همچنین یکسری binding (غیررسمی) برای باقی زبونها هم وجود داره مثلا کامپایلر haskell و rust از همین binding ها استفاده میکنن چون کامپایلرشون به ترتیب با haskell و rust نوشته شده.
این چی بود اصلا که همه کامپایلرها رو گرفت؟
ماجرا از اینجا شروع میشه که کامپایلرها باید برای کامپایل کردن یک فایل از زبون مبدا (مثلا راسط) به زبان ماشین، این عملیات رو انجام بدن:
۱- خوندن کیلدواژه به کلیدواژهی سورسکد مبدا
۲- پارس کردن ساختارهای مختلف با کمک کلیدواژهها (parsing خیلی مفصله ماجراش و الگوریتمهای متنوعی داره که باشه برای بعد)
۳- بررسی اینکه این کدی که نوشته شده چیه، مثلا تایپهاش درست هستن؟ معنی میده اصلا؟ بهینهسازیای نیاز نداره و اینا.
۴- تبدیل کد ماشین
حالا این تبدیل کد ماشین رو ما خیلی ساده میگیم ماشین اما کدوم ماشین؟ x86؟ arm؟ پس فردا risc-v و mips چی؟ بعد هر کدوم از اینا نسخه دارن و instruction مختلفی بهشون اضافه میشه. اینکه فقط بخوایم یه کدی تولید کنیم شاید خیلی سخت نباشه ولی بهینه کردنش و اطمینان از اینکه درست کار میکنه و پشتیبانی از معماری پردازندههای مختلف واقعا کار سختیه. این کار سخت رو مثلا کامپایلر GCC خودش انجام میده.
اما همهی کامپایلرها اینطور کار نمیکنن. مثلا جاوا یک رویکرد تقریبا منحصر به فرد پیش گرفت. گفت من کامپایلرم نمیتونه کد به هر پلتفرم مقصدی تولید کنه، بلکه میام یه «کد میانی» تولید میکنم به اسم byte code. یعنی چی؟ یعنی این کد میانی یه جور کد ماشینیه که واقعا هیچ ماشینی بلد نیست اجراش کنه، یه اسمبلیه برای یک پردازندهی فرضی. مزیتش برای کامپایلر اینه که فقط لازمه دغدغهش این باشه که همین رو تولید کنه و همین رو بهینه کنه.
اما در مرحلهی بعد چه کسی اینو اجرا کنه؟ مجبوریم یه VM (به اسم JVM یا java virtual machine) دااشته باشیم که اون بایتکد رو میگیره و ترجمه میکنه به زبان ماشین و همونجا هم اجراش میکنه. مثلا JVM برای پردازندهی x86 و الی آخر.
جای تعجب نداره که جاوا اونقدر نمیتونه سریع باشه چون این JVM به هر حال سربار داره، هرچقدر هم بهینهش کنن چون به هر حال داره ترجمهای رو انجام میده.
اما حالا فرض کنید که کامپایلر ما همون کار راحت تولید یه bytecode رو انجام میداد، اما به جای اینکه خود byte code رو بدیم به ملت و اونجا مجبور باشن VM نصب کنن، این bytecode رو یکی تبدیل میکرد به کد ماشین و بهینهش هم میکرد. خب llvm همینجا وارد میشه!
یعنی چی؟ یعنی به کامپایلر راسط میگه شما لازم نیست خودت کد اسمبلی/زبان ماشین تولید کنی، بلکه بیا LLVM IR یا LLVM intermediate representation تولید کن. من اینو تبدیل میکنم به کد ماشین بهینه!
و اینجا یه مفهوم front-end و back-endی هم شکل میگیره. فرانتاند به قسمتی که سورسکد رو میخونه و پارس میکنه و ... تا IR تولید بشه میگن و بک اند میشه قسمتی که IR رو میخونه و پردازش میکنه و کد ماشین تولید میکنه. LLVM برای ما نقش یک بکاند رو داره.
حالا سینتکس LLVM IR چه شکلیه؟ خیلی برامون مهم نیست ولی میتونیم ببینیمش. مثلا به clang بگیم که به جای تولید کد ماشین نهایی، برامون LLVM IR رو خروجی بده. میتونه این کارو بکنه. حتما حدس میزنید که clang یه کامپایلر بر پایهی llvmئه که این قابلیت رو داره.
clang -S -emit-llvm foo.c
با کمک این دستور میتونید IR رو مشاهده کنید و حتی میتونید با کمک llvm اجراش کنید. با دستور lli یا llvm interpreter میتونید به شکل تفسیری اجراش کنید یا با llc کامپایلش کنید.
اما llvm باز هم کار ما رو سادهتر میکنه، به جای اینکه از فرانتاند بخواد که یکجا بهش IR رو تحویل بده، میاد از visitor design pattern استفاده میکنه. خلاصهش اینطوریه که به جای اینکه نهایتا خروجی IR رو ازمون بگیره، در روال ساختش هم مشارکت میکنه. مثلا میگه تو میدونی که یه تابع داری ولی محتواش رو هنوز نخوندی؟ عیب نداره تا همینجا به من بگو من برات میسازم. خب یه if توش داری؟ من داخل تابع اضافهش میکنم. و الی آخر. برای اینکه از این قابلیت استفاده کنیم لازم داریم که توابعی که llvm داره مثلا برای ساخت تابع، داخل فرانتاندمون صدا کنیم. اینجا یه مشکلی که داریم اینه که به شکل پیشفرض کتابخونهش فقط برای cpp وجود داره، که البته چون خیلی از کامپایلرها با cpp هستن برامون کافیه. ولی همچنین یکسری binding (غیررسمی) برای باقی زبونها هم وجود داره مثلا کامپایلر haskell و rust از همین binding ها استفاده میکنن چون کامپایلرشون به ترتیب با haskell و rust نوشته شده.
👍10❤🔥3
نوشتههای ترمینالی
در مورد llvm بیشتر بدانیم. https://www.infoworld.com/article/3247799/what-is-llvm-the-power-behind-swift-rust-clang-and-more.html
پس به عنوان جمعبندی: حالا که rust و هسکل به عنوان بکاند از llvm استفاده میکنن چه مزایایی داره براشون؟
+ اگه پردازندهی جدیدی بیاد و بخوان ساپورتش کنن، کافیه صبر کنن تا llvm اون رو ساپورت کنه و بعدش دیگه خیلی کاری ندارن.
+ اگر امکان بهینهسازی جدیدی توی یک پردازنده یا به شکل عمومی ابداع بشه، کافیه که توی llvm پیادهسازی بشه و بعدش دیگه نیاز نیست فرانتاند تغییر خاصی بکنه.
+ اگر میخوان به زبونشون قابلیت جدید اضافه کنن لازم نیست نگران این باشن که چطوری کد اسمبلیش توی پلتفرمهای مختلف چطوری میشه، بلکه فقط کافیه بتونن کد LLVM IR معادلشو بسازن که چون خیلی چیزها رو خودش پشتیبانی میکنه کار خیلی سادهتریه.
شاید بپرسید که کامپایلر هسکل که قدیمیتر از این حرفاس، چطوری خودش بکاند نداشت و منتظر llvm بود. اتفاقا خودش هم بکاند داشت و هنوزم امکان code generation داره ولی امکان تولید کد با llvm هم اضافه شده و برنامهنویس میتونه کدی که براش بهینهتره رو انتخاب کنه.
در کنار اینجا llvm قابلیت پیادهسازی بهینهسازی متنوعی هم میده مثل JIT یا transform passes که من خیلی بلد نیستم!
+ اگه پردازندهی جدیدی بیاد و بخوان ساپورتش کنن، کافیه صبر کنن تا llvm اون رو ساپورت کنه و بعدش دیگه خیلی کاری ندارن.
+ اگر امکان بهینهسازی جدیدی توی یک پردازنده یا به شکل عمومی ابداع بشه، کافیه که توی llvm پیادهسازی بشه و بعدش دیگه نیاز نیست فرانتاند تغییر خاصی بکنه.
+ اگر میخوان به زبونشون قابلیت جدید اضافه کنن لازم نیست نگران این باشن که چطوری کد اسمبلیش توی پلتفرمهای مختلف چطوری میشه، بلکه فقط کافیه بتونن کد LLVM IR معادلشو بسازن که چون خیلی چیزها رو خودش پشتیبانی میکنه کار خیلی سادهتریه.
شاید بپرسید که کامپایلر هسکل که قدیمیتر از این حرفاس، چطوری خودش بکاند نداشت و منتظر llvm بود. اتفاقا خودش هم بکاند داشت و هنوزم امکان code generation داره ولی امکان تولید کد با llvm هم اضافه شده و برنامهنویس میتونه کدی که براش بهینهتره رو انتخاب کنه.
در کنار اینجا llvm قابلیت پیادهسازی بهینهسازی متنوعی هم میده مثل JIT یا transform passes که من خیلی بلد نیستم!
🔥7👍5❤🔥1
نوشتههای ترمینالی
خیلی از زبونها رو میشنویم که از llvm استفاده میکنن؟ این چی بود اصلا که همه کامپایلرها رو گرفت؟ ماجرا از اینجا شروع میشه که کامپایلرها باید برای کامپایل کردن یک فایل از زبون مبدا (مثلا راسط) به زبان ماشین، این عملیات رو انجام بدن: ۱- خوندن کیلدواژه به…
اگر دوست داشتید با ساختار LLVM IR بیشتر آشنا بشید این اسلایدهای خیلی جالب رو بهتون توصیه میکنم.
https://llvm.org/devmtg/2019-04/slides/Tutorial-Bridgers-LLVM_IR_tutorial.pdf
https://llvm.org/devmtg/2019-04/slides/Tutorial-Bridgers-LLVM_IR_tutorial.pdf
اگر به LLVM علاقهمند شدید این کورس کوتاه میتونه براتون جذاب باشه. البته خودش تبلیغ میکنه که دورههای دیگرش مثل parsing هم ببینید ولی به نظرم نیازی نیست و خود همین ویدیوها زیبا و جذاب و گویان.
https://www.youtube.com/watch?v=Lvc8qx8ukOI
https://www.youtube.com/watch?v=Lvc8qx8ukOI
YouTube
Programming Language with LLVM [1/20] Introduction to LLVM IR and tools
⭐️ Enroll: https://dmitrysoshnikov.com/courses/programming-language-with-llvm/
📚 Udemy: https://www.udemy.com/course/programming-language-with-llvm/?referralCode=518B2E26C835654F8939
👉 DS Education: https://www.dmitrysoshnikov.education/p/programming-language…
📚 Udemy: https://www.udemy.com/course/programming-language-with-llvm/?referralCode=518B2E26C835654F8939
👉 DS Education: https://www.dmitrysoshnikov.education/p/programming-language…
❤2
اکه با کامپیوتر زیاد کار کنید، احتمالا درد جاهای مختلف بدن مثل مچ رو احساس کردید.
این ویدیو یکسری حرکت ساده و یکسری حرکت با چوب بهتون یاد میده که باعث میشه مچتون روغن کاری بشه و حس بهتری داشته باشه.
https://www.youtube.com/watch?v=j2a3vJJBN6A
راهنمایی: اگر تو خونه چوب صاف ندارید، با لوله ی جاروبرقی، دستهی تی یا دستهی جارو دستی اگر قابل جدا شدن از سرش باشن میتونید انجام بدید.
این ویدیو یکسری حرکت ساده و یکسری حرکت با چوب بهتون یاد میده که باعث میشه مچتون روغن کاری بشه و حس بهتری داشته باشه.
https://www.youtube.com/watch?v=j2a3vJJBN6A
راهنمایی: اگر تو خونه چوب صاف ندارید، با لوله ی جاروبرقی، دستهی تی یا دستهی جارو دستی اگر قابل جدا شدن از سرش باشن میتونید انجام بدید.
YouTube
Best Wrist Pain Relief Exercises for Programmers & PC Gamers
if you spend a lot of time on the computer and you experience wrist pain because of this. I will share with you exercises that I learn to help reduce pain from carpal tunnel. and to help avoid getting other wrist injuries. I will wait you 2 stretching and…
👍7
یکی از سایت هایی که تجربههای کاری و مصاحبه رو از شرکتها قرار میده «تجربه ویکی»ئه.
سایت خوبیه و دیتابیس نسبتا خوبی هم از شرکت ها داره ولی UX بد متاسفانه.
اگه به فکر انتخاب شرکت هستید چک کنید به نظرم.
https://tajrobe.wiki/
سایت خوبیه و دیتابیس نسبتا خوبی هم از شرکت ها داره ولی UX بد متاسفانه.
اگه به فکر انتخاب شرکت هستید چک کنید به نظرم.
https://tajrobe.wiki/
ویکیتجربه
بهترین های ایران
بهترین کافه، بهترین رستورانهای تهران، بهترین دکتر، بهترین آزمایشگاه، بهترین صرافی ارز دیجیتال، بهترین هتل (پلتفرمی برای به اشتراک گذاری تجربه کاری، تجربه خرید)
❤7👍1