آیا روشن کردن بهینهسازی کامپایلر ممکنه باعث باگ بشه؟
بله! چرا که نه.
البته معمولا اگه ازشون اگاه باشیم قابل پیشگیری هستند. اما خب باگه دیگه. کلا باگ رو اگر از قبل اگاه باشی پیشبینیش میکنی و باگ نیست.
جاهایی که پیش میاد ایناست:
+ وقتی که زبان undefined behavior داره. توی حالت دیباگ یه جور رفتار میکنه و شما روش حساب میکنین اما توی حالت بهینه شده یه جور دیگه کار میکنه.
+ کلا کارهای عجیب غریب کردن مثل حساب کردن روی اورفلو شدن یه متغیر کامپایلر رو گیج میکنه.
https://stackoverflow.com/a/2722330/10999348
بله! چرا که نه.
البته معمولا اگه ازشون اگاه باشیم قابل پیشگیری هستند. اما خب باگه دیگه. کلا باگ رو اگر از قبل اگاه باشی پیشبینیش میکنی و باگ نیست.
جاهایی که پیش میاد ایناست:
+ وقتی که زبان undefined behavior داره. توی حالت دیباگ یه جور رفتار میکنه و شما روش حساب میکنین اما توی حالت بهینه شده یه جور دیگه کار میکنه.
+ کلا کارهای عجیب غریب کردن مثل حساب کردن روی اورفلو شدن یه متغیر کامپایلر رو گیج میکنه.
https://stackoverflow.com/a/2722330/10999348
Stack Overflow
Can compiler optimization introduce bugs?
Today I had a discussion with a friend of mine and we debated for a couple of hours about "compiler optimization".
I defended the point that sometimes, a compiler optimization might introduce bugs...
I defended the point that sometimes, a compiler optimization might introduce bugs...
مشکلات امنیتیای که ممکنه به خاطر بهینهسازیهای کامپایلر به وجود بیان (حتی در کرنل لینوکس)
https://www.redhat.com/en/blog/security-flaws-caused-compiler-optimizations
https://www.redhat.com/en/blog/security-flaws-caused-compiler-optimizations
Redhat
Security flaws caused by compiler optimizations
An optimizing compiler is one that tries to maximize some attribute(s) of an executable program at the expense of other attribute(s). Usually the goal is to improve performance or code size at the expense of compiler time and the possibility to debug the…
دیتابیسها (DBMSها) چطوری اطلاعات رو روی دیسک ذخیره میکنند؟
واقعیت اینه که وقتی حجم اطلاعاتمون زیاده و نیاز به پایداری داریم، نگهداریشون توی Ram امکانپذیر نیست و مجبوریم توی دیسک بنویسیم.
اما این DMBSها چطوری اطلاعات رو توی دیسک مینویسن که حداکثر کارایی رو داشته باشه؟
چیزی که خوندم (لینک هاش در پایین) اینطوریه که اطلاعات رو در یکسری بلوک ۴ کیلوبایتی نگهداری میکنن. این ۴کیلوبایت احتمالا یه ضریبی از بلوک های هارد دیسکه، در نتیجه هربار که یه بلوک رو بخواد، هارد دیسک هم همونقدر میخونه نه بیشتر (که باعث هدر رفتنه) نه کمتر (که باعث میشه دو یا چند بار دیسک بلوک بخونه)
علاوه بر این دیتابیس بلوک های خونده شده رو توی رم نگه میداره (تا جایی که سیستم عامل اون دیتا رو باز نبره توی هارد و page fault بشه). حتی اگه یه پیج تغییر کردی هم توی مموری می نویسه ولی یادش هست اون پیج dirty شده و بعدا دوباره مینویسه توی هارد.
منابع:
https://stackoverflow.com/questions/7901581/how-does-a-typical-rdbms-store-and-locate-blocks
و
https://www.quora.com/How-does-a-relational-DBMS-internally-store-its-data-In-what-type-of-data-structure-How-does-it-offer-the-rapid-retrieval-without-loading-the-entire-database-into-the-main-memory-I-have-heard-many-DBMS-use-B-trees
واقعیت اینه که وقتی حجم اطلاعاتمون زیاده و نیاز به پایداری داریم، نگهداریشون توی Ram امکانپذیر نیست و مجبوریم توی دیسک بنویسیم.
اما این DMBSها چطوری اطلاعات رو توی دیسک مینویسن که حداکثر کارایی رو داشته باشه؟
چیزی که خوندم (لینک هاش در پایین) اینطوریه که اطلاعات رو در یکسری بلوک ۴ کیلوبایتی نگهداری میکنن. این ۴کیلوبایت احتمالا یه ضریبی از بلوک های هارد دیسکه، در نتیجه هربار که یه بلوک رو بخواد، هارد دیسک هم همونقدر میخونه نه بیشتر (که باعث هدر رفتنه) نه کمتر (که باعث میشه دو یا چند بار دیسک بلوک بخونه)
علاوه بر این دیتابیس بلوک های خونده شده رو توی رم نگه میداره (تا جایی که سیستم عامل اون دیتا رو باز نبره توی هارد و page fault بشه). حتی اگه یه پیج تغییر کردی هم توی مموری می نویسه ولی یادش هست اون پیج dirty شده و بعدا دوباره مینویسه توی هارد.
منابع:
https://stackoverflow.com/questions/7901581/how-does-a-typical-rdbms-store-and-locate-blocks
و
https://www.quora.com/How-does-a-relational-DBMS-internally-store-its-data-In-what-type-of-data-structure-How-does-it-offer-the-rapid-retrieval-without-loading-the-entire-database-into-the-main-memory-I-have-heard-many-DBMS-use-B-trees
Stack Overflow
How does a typical RDBMS store and locate blocks?
I understand that the block is the fundamental physical element of an FS and DBMS. How does a relational database management system, like MySQL or Oracle, store its block data and later load it into
دوست دارید دوستاتون از طریق دیسکورد بدونن شما مشغول ادیت فایل با ویم هستین؟
این افزونه برای شماست.
https://github.com/vimsence/vimsence
این افزونه برای شماست.
https://github.com/vimsence/vimsence
GitHub
GitHub - vimsence/vimsence: Discord Rich Presence plugin for Vim
Discord Rich Presence plugin for Vim. Contribute to vimsence/vimsence development by creating an account on GitHub.
همونطور که میدونین، همروندی در گو به کمک چنل هاست.
این مدل رو میگن csp یا
communicating sequential processes
در موردش بیشتر بخونین:
https://en.wikipedia.org/wiki/Communicating_sequential_processes
این مدل رو میگن csp یا
communicating sequential processes
در موردش بیشتر بخونین:
https://en.wikipedia.org/wiki/Communicating_sequential_processes
Wikipedia
Communicating sequential processes
formal language for concurrent systems
به نظرم دوستانهترین و واضح ترین مطلبی بود که در مورد چرا لینوکس خونده بودم.
اگر خودمم میخواستم بنویسم همین رو مینوشتم، فقط مثال هام با arch بود.
https://vrgl.ir/zpgFH
اگر خودمم میخواستم بنویسم همین رو مینوشتم، فقط مثال هام با arch بود.
https://vrgl.ir/zpgFH
ویرگول
چرا از لینوکس استفاده میکنم؟
دلایل فنی و علمی و سلیقه ای
کامپتیبل بودن باگ ها! برای اطمینان از backward compatibility
https://en.wikipedia.org/wiki/Bug_compatibility
https://en.wikipedia.org/wiki/Bug_compatibility
Wikipedia
Bug compatibility
exact compatibility between computer systems, replicating even undesirable behavior
سامانه هوشمند قطعی برق رو یکی وصل کنه حالا
https://shahab.tbtb.ir/public/map/index
https://shahab.tbtb.ir/public/map/index
به نظرم سورس کد yay به عنوان یه پروژه قشنگ Go بخونید.
اونقدرم پیچیده نیست ولی زیباست.
https://github.com/Jguer/yay
اونقدرم پیچیده نیست ولی زیباست.
https://github.com/Jguer/yay
GitHub
GitHub - Jguer/yay: Yet another Yogurt - An AUR Helper written in Go
Yet another Yogurt - An AUR Helper written in Go. Contribute to Jguer/yay development by creating an account on GitHub.
اشتباهات برنامه نویسات مبتدی
https://jscomplete.com/learn/pro-programmer/beginner-programmers-mistakes
https://jscomplete.com/learn/pro-programmer/beginner-programmers-mistakes
jsComplete.com
Beginner Programmers' Mistakes :: The Professional Programmer
The mistakes beginner programmers usually make. Learn to identify these situations and avoid them. :: My tips and advice on your journey from a beginner programmer into a professional one
شاید براتون پیش اومده باشه که چطوری خود gitignore رو از git ایگنور کنیم؟
برای اینکار دو تا ایده هست.
اولی
https://luisdalmolin.dev/blog/ignoring-files-in-git-without-gitignore/
دومی هم igtignore سراسری
https://stackoverflow.com/questions/7335420/global-git-ignore
برای اینکار دو تا ایده هست.
اولی
.git/info/exclude
https://luisdalmolin.dev/blog/ignoring-files-in-git-without-gitignore/
دومی هم igtignore سراسری
https://stackoverflow.com/questions/7335420/global-git-ignore
Stack Overflow
Global Git ignore
I want to set up Git to globally ignore certain files.
I have added a .gitignore file to my home directory (/Users/me/) and I have added the following line to it:
*.tmproj
But it is not ignoring ...
I have added a .gitignore file to my home directory (/Users/me/) and I have added the following line to it:
*.tmproj
But it is not ignoring ...
👍2