اگه شما هم مثل من برای اینکه ببینید درخواست curlتون چقدر طول میکشه، از time curl استفاده میکنید، این پست رو ببینید.
این پست آموزش میده که ما با کمک curl، برای هر قسمت از مراحل رسیدن درخواستمون از ما به سرور، تایمشو بزنیم و بتونیم درک خیلی بهتری داشته باشیم.
اینجا آموزش و توضیحات خیلی خوبی اومده
https://blog.josephscott.org/2011/10/14/timing-details-with-curl/
اگرم میخواید در قالب اسکریپت به سیستمتون اضافه کنید این پاسخ هم جالبه:
https://stackoverflow.com/a/22625150/10999348
این پست آموزش میده که ما با کمک curl، برای هر قسمت از مراحل رسیدن درخواستمون از ما به سرور، تایمشو بزنیم و بتونیم درک خیلی بهتری داشته باشیم.
اینجا آموزش و توضیحات خیلی خوبی اومده
https://blog.josephscott.org/2011/10/14/timing-details-with-curl/
اگرم میخواید در قالب اسکریپت به سیستمتون اضافه کنید این پاسخ هم جالبه:
https://stackoverflow.com/a/22625150/10999348
blog.josephscott.org
Timing Details With cURL
Jon's recent Find the Time to First Byte Using Curl post reminded me about the additional timing details that cURL can provide.cURL supports formatted output for the details of the request ( see t
نوشتههای ترمینالی
سوال نیمه شبانه:
یه endpoint http میخوایم طراحی کنیم برای logout که از سمت یوزر هیچ دیتایی قرار نیست برن به سرور و فقط توکنش توی هدر بره کافیه.
برای این اندپوینت چه متدی انتخاب کنیم؟
یه endpoint http میخوایم طراحی کنیم برای logout که از سمت یوزر هیچ دیتایی قرار نیست برن به سرور و فقط توکنش توی هدر بره کافیه.
برای این اندپوینت چه متدی انتخاب کنیم؟
پاسخ هایی که به این سوال داده شد به نظرم خیلی زیبا بود و با توجه به سلیقهای بودن من سعی میکنم جمع بندی نکنم تا نظرم رو تحمیل نکرده باشم، خودتون کامنت ها رو بخونید اگر دوست داشتید.
به نظرم تنها نکتهای که در جمع بندی باید گفت و همگی موافق بودن اینه که نباید از get استفاده بشه، چون یک متد safe محسوب میشه، یعنی فراخوانیش نباید استیت سرور رو تغییری بده.
به نظرم تنها نکتهای که در جمع بندی باید گفت و همگی موافق بودن اینه که نباید از get استفاده بشه، چون یک متد safe محسوب میشه، یعنی فراخوانیش نباید استیت سرور رو تغییری بده.
نوشتههای ترمینالی
پاسخ هایی که به این سوال داده شد به نظرم خیلی زیبا بود و با توجه به سلیقهای بودن من سعی میکنم جمع بندی نکنم تا نظرم رو تحمیل نکرده باشم، خودتون کامنت ها رو بخونید اگر دوست داشتید. به نظرم تنها نکتهای که در جمع بندی باید گفت و همگی موافق بودن اینه که نباید…
پیشنهاد میکنم ترجمه مطلب best practice های طراحی rest api رو بخونید.
https://javacup.ir/rest-api-best-pratice/
https://javacup.ir/rest-api-best-pratice/
اگه به عنوان دولوپر در مورد امنیت وبسایت هیچ اطلاعی ندارید این ویدیوی ۹ دقیقهای میتونه شروع خوبی به این بحث باشه و نکات خیلی خوبی رو گفته.
https://www.youtube.com/watch?v=4YOpILi9Oxs&list=PL0vfts4VzfNg9sTDAPew0MT0isOeCCkjR&index=3
https://www.youtube.com/watch?v=4YOpILi9Oxs&list=PL0vfts4VzfNg9sTDAPew0MT0isOeCCkjR&index=3
YouTube
7 Security Risks and Hacking Stories for Web Developers
Top 7 security concepts 🛡️ and hacking stories 🎭 that every JavaScript developer should know about. Master these concepts in the Enterprise Security course: https://bit.ly/2wrUqAB (use FIRESHIP50 at checkout).
Full Security Article https://fireship.io/lessons/7…
Full Security Article https://fireship.io/lessons/7…
Forwarded from LinkPlace (hossein dindar)
howhttps.works
How HTTPS Works
🙀 A cat explains how HTTPS works...in a comic! 😻
دوست دارید curl رو از پایین تا بالا یاد بگیرید؟
این کتاب آنلاین و رایگان برای شماست
https://everything.curl.dev/
این کتاب آنلاین و رایگان برای شماست
https://everything.curl.dev/
everything.curl.dev
Everything curl - everything curl
everything there is to know about curl, libcurl and the cURL project
نوشتههای ترمینالی
دوست دارید curl رو از پایین تا بالا یاد بگیرید؟ این کتاب آنلاین و رایگان برای شماست https://everything.curl.dev/
بحث شد تو گروه که اصلا چرا لازمه curl رو یاد بگیریم؟
میتونیم از جایگزینهای خیلی سادهتر استفاده کنیم.
اول اینکه بله میتونیم، من خودم httpie رو توی گزینه های cli دوست دارم و postman و insomnia هم گزینه های مطرح GUIی هستند، همشونم قابلیتهای خوبی دارن، اتفاقا با اینا هم خوبه بلد باشیم کار کنیم و کارمون سادهتر و سریعتر میشه خیلی وقت ها. پس کسی نگفت یکیشو فقط بلد باشید.
دوم اینکه خیلی جاها فقط curl نصبه و باید یه حداقلی بلد باشیم که با کمی سرچ بتونیم مشکلمون رو حل کنیم.
سوم و از همه مهمتر اینه که curl خیلی اوقات به شکل یک زبون استاندارد برای ارسال درخواست http وجود داره، مثل زبان انگلیسی بین زبونها. حالا شاید شما با دوستت به زبون دیگری هم صحبت کنی ولی اکثر آدما با انگلیسی منظور شما رو متوجه میشن. مثلا چی؟ مثلا همون postman یا دوستان میتونن به شما درخواست curl بدن. یا مرورگر امکان اینو میده درخواستت رو به عنوان یه اجرای curl کپی کنی (البته چند تا گزینهی دیگه هم داره معمولا) یا مثلا تو شرکت میخوان بگن چطوری درخواست بزنم، میگن curlشو بهم بده. و خب حالا شاید شما مجبور نباشید از اول اون curl رو بنویسید ولی خوندن و فهمیدنش و گاهی عوض کردنش به نظر من مهارت واجبیه.
میتونیم از جایگزینهای خیلی سادهتر استفاده کنیم.
اول اینکه بله میتونیم، من خودم httpie رو توی گزینه های cli دوست دارم و postman و insomnia هم گزینه های مطرح GUIی هستند، همشونم قابلیتهای خوبی دارن، اتفاقا با اینا هم خوبه بلد باشیم کار کنیم و کارمون سادهتر و سریعتر میشه خیلی وقت ها. پس کسی نگفت یکیشو فقط بلد باشید.
دوم اینکه خیلی جاها فقط curl نصبه و باید یه حداقلی بلد باشیم که با کمی سرچ بتونیم مشکلمون رو حل کنیم.
سوم و از همه مهمتر اینه که curl خیلی اوقات به شکل یک زبون استاندارد برای ارسال درخواست http وجود داره، مثل زبان انگلیسی بین زبونها. حالا شاید شما با دوستت به زبون دیگری هم صحبت کنی ولی اکثر آدما با انگلیسی منظور شما رو متوجه میشن. مثلا چی؟ مثلا همون postman یا دوستان میتونن به شما درخواست curl بدن. یا مرورگر امکان اینو میده درخواستت رو به عنوان یه اجرای curl کپی کنی (البته چند تا گزینهی دیگه هم داره معمولا) یا مثلا تو شرکت میخوان بگن چطوری درخواست بزنم، میگن curlشو بهم بده. و خب حالا شاید شما مجبور نباشید از اول اون curl رو بنویسید ولی خوندن و فهمیدنش و گاهی عوض کردنش به نظر من مهارت واجبیه.
چطوری از vendor lock-in جلوگیری کنیم؟
یعنی چطوری مواظب باشیم که سازمانمون درگیر یه شرکت خارجی بشه که نتونه دیگه قراردادشو تمدید نکنه و اون شرکت رو با شرکت دیگری جایگزین کرد؟
https://vrgl.ir/I9iMn
یعنی چطوری مواظب باشیم که سازمانمون درگیر یه شرکت خارجی بشه که نتونه دیگه قراردادشو تمدید نکنه و اون شرکت رو با شرکت دیگری جایگزین کرد؟
https://vrgl.ir/I9iMn
Thank you for supporting us. 💥 💥 💥 💥 💥 💥
1️⃣ 🔠
Please open Telegram to view this post
VIEW IN TELEGRAM
خطا داریم؟ همینه که هست!
یه مثال دیدم که میگفت شما وقتی ماشینتون پنچر میشه صبر میکنید تا تعمیرکار بیاد درستش کنه، یا با همون چرخ های پنجر با سرعت کم ادامه میدین تا به مقصد برسید؟
به نظرم همین توی برنامهنویسی هم مصداق داره، وقتی برنامهمون به ارور میخوره چطوری مدیریتش میکنیم؟ حالا این ارور خیلی وقت ها exceptionه توی زبون های برنامه نویسی، ولی یکم سطح بالاتر ببینیم،
مثلا به یه سرویس خارجی درخواست دادیم و نیست، خب چیکار کنیم؟
یه فایل کانفیگ رو میخوایم لود کنیم ولی نیست.
دیتایی که از سمت کاربر اومده معتبر نیست.
در یک برنامه معمولی جوابِ (احتمالا) درست به خیلی از این سوالا اینه که خب کارکرد برنامه رو متوقف کن و بگو نمیتونم. برنامه کار نکنه تا دوباره با برطرف شدن مشکلات یکی از اول اجراش کنه،
ولی اگر برنامه ما قراره توی یکسری از محیطها اجرا بشه دیگه خبری از «من کار نمیکنم تا شرایط درست بشه» نیست. چه محیطهایی؟ محیطهایی که availability بالا مهمه مثلا سیستم های امبدد یا بکاند.
مثلا قراره ما مسیریابی یک هواپیما رو انجام بدیم و سیگنال GPS دریافت نمیکنیم، خب به هواپیما بگیم فعلا من کار نمیکنم؟! یعنی چی که کار نمیکنم، با سرعت زیاد داره میره :)))
یا مثلاً توی کلود اگر ارور بدیم و برنامه کرش کنه کنیم چی میشه؟ کوبرنتیز دوباره برنامه رو اجرا میکنه و دوباره با مشکل درگیریم!
پس در این شرایط نمیشه ارور داد و بیخیال شد، بلکه باید با همون چرخ پنچر ادامه داد، برای هر روش هم با خلاقیت خودمون یا با کمک روش های پیشنهاد شده باید یه پلن بی داشته باشیم،
پیاده سازی و تست خود برنامه در کنار اینکه هر قسمتی ممکنه کار نکنه و سناریوهای مختلفش، کار سختیه ولی هزینهی داشتن یه نرم افزار قابل اعتماده.
مثلا چه مشکلاتی؟
مثلاً اگه قراره کانفیگ فایل رو از بیرون لود کنیم, آمادگی نبودنش رو هم داشته باشیم، مثلا یه کانفیگ پیشفرض داشته باشیم (البته کانفیگ چون موقع اولین اجرای برنامه خودش رو نشون میده شاید نیازی هم نباشه)
مثلا اگر داده gps به ما نرسید، با کمک داده های قبلی که ذخیره کردیم و یا ترکیبش با سرعت و شتاب و ... مشکل رو موقتا و حتی نادقیق حل کنیم
یا مثلاً اگر به سرور خارجی درخواست میزنیم و نیست، آمادگی نبودنش رو داشته باشیم، اینجا یکسری پترن که تو صنعت استفاده میشه داریم
مثلا چه پترنهایی؟
+ دوباره درخواست بده: retry pattern
+ به یکی دیگه درخواست بده: fallback
+ اگر خرابه تا یه مدت بهش درخواست نده تا ارور الکی نگیری: circuit breaker
+ اگه سرور خارجی کنده، خیلی صبر نکن تا response time خودت هم بالا نره
+ اگر سرور خارجی دیتا قراره بهت بده، دیتای قبلی رو کش کن.
اینها در سطح کد بودن، در سطح معماری هم میشه از قبل روشهایی رو تدارک دید مثلاً خود دیتابیس رو چطوری High available کنیم، یا روشهایی که بیشتر تو سیستم های امبدد استفاده میشه مثل اینکه یه برنامه رو با چند تا پیاده سازی همزمان اجرا کنیم تا اگر یکیش خراب شد اون یکیها باشن!
منابع:
https://opensource.com/article/19/9/transient-faults-devops
https://www.jrebel.com/blog/microservices-resilience-patterns
https://learn.microsoft.com/en-us/azure/architecture/best-practices/transient-faults
https://learn.microsoft.com/en-us/dotnet/architecture/cloud-native/application-resiliency-patterns
@terminal_stuff
یه مثال دیدم که میگفت شما وقتی ماشینتون پنچر میشه صبر میکنید تا تعمیرکار بیاد درستش کنه، یا با همون چرخ های پنجر با سرعت کم ادامه میدین تا به مقصد برسید؟
به نظرم همین توی برنامهنویسی هم مصداق داره، وقتی برنامهمون به ارور میخوره چطوری مدیریتش میکنیم؟ حالا این ارور خیلی وقت ها exceptionه توی زبون های برنامه نویسی، ولی یکم سطح بالاتر ببینیم،
مثلا به یه سرویس خارجی درخواست دادیم و نیست، خب چیکار کنیم؟
یه فایل کانفیگ رو میخوایم لود کنیم ولی نیست.
دیتایی که از سمت کاربر اومده معتبر نیست.
در یک برنامه معمولی جوابِ (احتمالا) درست به خیلی از این سوالا اینه که خب کارکرد برنامه رو متوقف کن و بگو نمیتونم. برنامه کار نکنه تا دوباره با برطرف شدن مشکلات یکی از اول اجراش کنه،
ولی اگر برنامه ما قراره توی یکسری از محیطها اجرا بشه دیگه خبری از «من کار نمیکنم تا شرایط درست بشه» نیست. چه محیطهایی؟ محیطهایی که availability بالا مهمه مثلا سیستم های امبدد یا بکاند.
مثلا قراره ما مسیریابی یک هواپیما رو انجام بدیم و سیگنال GPS دریافت نمیکنیم، خب به هواپیما بگیم فعلا من کار نمیکنم؟! یعنی چی که کار نمیکنم، با سرعت زیاد داره میره :)))
یا مثلاً توی کلود اگر ارور بدیم و برنامه کرش کنه کنیم چی میشه؟ کوبرنتیز دوباره برنامه رو اجرا میکنه و دوباره با مشکل درگیریم!
پس در این شرایط نمیشه ارور داد و بیخیال شد، بلکه باید با همون چرخ پنچر ادامه داد، برای هر روش هم با خلاقیت خودمون یا با کمک روش های پیشنهاد شده باید یه پلن بی داشته باشیم،
پیاده سازی و تست خود برنامه در کنار اینکه هر قسمتی ممکنه کار نکنه و سناریوهای مختلفش، کار سختیه ولی هزینهی داشتن یه نرم افزار قابل اعتماده.
مثلا چه مشکلاتی؟
مثلاً اگه قراره کانفیگ فایل رو از بیرون لود کنیم, آمادگی نبودنش رو هم داشته باشیم، مثلا یه کانفیگ پیشفرض داشته باشیم (البته کانفیگ چون موقع اولین اجرای برنامه خودش رو نشون میده شاید نیازی هم نباشه)
مثلا اگر داده gps به ما نرسید، با کمک داده های قبلی که ذخیره کردیم و یا ترکیبش با سرعت و شتاب و ... مشکل رو موقتا و حتی نادقیق حل کنیم
یا مثلاً اگر به سرور خارجی درخواست میزنیم و نیست، آمادگی نبودنش رو داشته باشیم، اینجا یکسری پترن که تو صنعت استفاده میشه داریم
مثلا چه پترنهایی؟
+ دوباره درخواست بده: retry pattern
+ به یکی دیگه درخواست بده: fallback
+ اگر خرابه تا یه مدت بهش درخواست نده تا ارور الکی نگیری: circuit breaker
+ اگه سرور خارجی کنده، خیلی صبر نکن تا response time خودت هم بالا نره
+ اگر سرور خارجی دیتا قراره بهت بده، دیتای قبلی رو کش کن.
اینها در سطح کد بودن، در سطح معماری هم میشه از قبل روشهایی رو تدارک دید مثلاً خود دیتابیس رو چطوری High available کنیم، یا روشهایی که بیشتر تو سیستم های امبدد استفاده میشه مثل اینکه یه برنامه رو با چند تا پیاده سازی همزمان اجرا کنیم تا اگر یکیش خراب شد اون یکیها باشن!
منابع:
https://opensource.com/article/19/9/transient-faults-devops
https://www.jrebel.com/blog/microservices-resilience-patterns
https://learn.microsoft.com/en-us/azure/architecture/best-practices/transient-faults
https://learn.microsoft.com/en-us/dotnet/architecture/cloud-native/application-resiliency-patterns
@terminal_stuff
Opensource.com
3 ways to handle transient faults for DevOps
In electrical engineering, a transient fault is defined as an error condition that vanishes after the power is disconnected and restored.
Forwarded from a pessimistic researcher (Kc)
یه لینکی همینطوری پیدا کردم، یه بنده خدایی اومده سعی کرده SAT رو با پیادهسازی یه SAT solver ساده به زبان پایتون توضیح بده. من خودم پایتون هیچی بلد نیستم ولی متنش رو که میخوندم خیلی خوب و روون بود. خلاصه میذاریم اینجا بمونه.
https://sahandsaba.com/understanding-sat-by-implementing-a-simple-sat-solver-in-python.html
https://sahandsaba.com/understanding-sat-by-implementing-a-simple-sat-solver-in-python.html
Sahandsaba
Understanding SAT by Implementing a Simple SAT Solver in Python
SAT is often described as the "mother of all NP-complete problems." This post goes over what SAT is and why it is considered to be so important. A simple SAT solver is implemented using Python in the process. Coding, mathematics, and problem solving by Sahand…
نوشتههای ترمینالی pinned «خطا داریم؟ همینه که هست! یه مثال دیدم که میگفت شما وقتی ماشینتون پنچر میشه صبر میکنید تا تعمیرکار بیاد درستش کنه، یا با همون چرخ های پنجر با سرعت کم ادامه میدین تا به مقصد برسید؟ به نظرم همین توی برنامهنویسی هم مصداق داره، وقتی برنامهمون به ارور میخوره…»
Forwarded from Bit Orbit 🪐 (Arya Shabane)
تا حالا گول این کامند رو توی فروم ها خوردین؟
https://www.wiregeek.ir/p/%D9%81%D9%88%D8%B1%DA%A9-%D8%A8%D9%85%D8%A8-%DA%86%DB%8C%D8%B3%D8%AA-%D9%88-%DA%86%D8%B7%D9%88%D8%B1-%DA%A9%D8%A7%D8%B1-%D9%85%DB%8C%DA%A9%D9%86%D8%AF/
:(){ :|:& };:خب راستش یه تایمی من چون دوست داشتم لینوکس یاد بگیرم و هیچی نمیدونستم ازش، هر کامندی توی اینترنت پیدا میکردم رو اجرا میکردم که بفهمم چه کار میکنه. این کامند هم یکی از اون ها بود. فورک بمب اینقدر خودش رو اجرا میکنه که بعد یک دقیقه مجبور میشین سیستم رو ریبوت کنید. بیایید باهم تا عمق این کامند برسی کنیم که این کامند چیه و چطوری کار میکنه.
https://www.wiregeek.ir/p/%D9%81%D9%88%D8%B1%DA%A9-%D8%A8%D9%85%D8%A8-%DA%86%DB%8C%D8%B3%D8%AA-%D9%88-%DA%86%D8%B7%D9%88%D8%B1-%DA%A9%D8%A7%D8%B1-%D9%85%DB%8C%DA%A9%D9%86%D8%AF/
bit-orbit
فورک بمب چیست و چطور کار می\u200cکند؟
اوایل که لینوکس نصب کرده بودم کامند هایی که توی فروم های مختلف می\u200cدیدم و برای من جدید بود را دوست داشتم یاد بگیرم و بدانم کار آنها چی هست، برای همین هر کامندی را که می\u200cدیدم در اولین فرصت داخل سیستم خودم اجرا می\u200cکردم. که خب کور کورانه اجرای…
Forwarded from a pessimistic researcher (Kc)
"آن چاقوی سوئیسی دیگر نمیبُرَد"
با احترام، تقدیم به خدای باستانِ زبانهای برنامهنویسی، مرحوم Niklaus Wirth
————————————————————
تنها سه روز از سال نوی میلادی جدید سپری شده و هنوز برای قضاوت خوش یا بد یُمن بودن آن زود است، اما یکم ژانویهی ۲۰۲۴، یقینا یکی از سیاهترین روزهای تاریخ جامعهی آکادمیک مهندسی نرمافزار خواهد بود. امروز حدود ۳ ساعت پیش، آقای Bertrand Meyer در یک توئیت اعلام کردند که یکی از ستارگان زبانهای برنامهنویسی، متدولوژی برنامهنویسی، مهندسی نرمافزار و طراحی سختافزار افول کرد. آقای Niklaus Wirth، با کوهی از افتخارات، برندهی جایزهی تورینگ اوارد، در سن ۸۹ سالی به تاریخ یکم ژانویهی ۲۰۲۴ چشم از جهان فرو بستند.
آقای Wirth در شهر Winterthur سوئیس بدنیا آمد و تحصیلات آکادمیک خود را در ETH زوریخ آغاز کرد. برای آغاز تحصیلات تکمیلی به دانشگاه Laval در کانادا رفت و بعد از آن رسالهی دکتری خود را در دانشگاه برکلی کالیفرنیا، به سرپرستی Harry Huskey، از پیشرویان پیدایش کامپیوتر، با عنوان A Generalization of ALGOL به سرانجام رساند. سپس به عضویت هیئت علمی دانشگاه استنفورد درآمد و بعد از آن به ETH بازگشت و در آنجا تا بازنشستگی خود به کارش ادامه داد.
از جمله دستآوردهای مهم ایشان طراحی زبانهای برنامهنویسی Pascal و ALGOL بود. علاقهی آقای Wirth به زبان ALGOL آنقدر زیاد بود که زبانهای متعددی مانند Euler و Modula و Oberon را بر پایهی آن طراحی کردند. ایشان در طراحی و پیادهسازی سیستمعاملهای Medos-2 و Oberon System نقش کلیدی داشتند. در حوزهی معماری کامپیوتر، یک زبان HDL به نام Lola را طراحی و پیادهسازی کردند. سال ۱۹۸۴ به پاس دستآوردهای کلیدی و مهم ایشان در حوزهی زبانهای برنامهنویسی، برندهی جایزه Turing Award شدند.
علاوه بر پژوهشهای پیشرو، دانشمندان بهنامی مانند Martin Odersky، خالق زبان Scala و Generics در Java و Michael Franz، مبدع Just-in-time Compilation and Optimization را تربیت کردند. ایشان کتابهای مهم و تأثیرگذاری در طی فعالیت خود به چاپ رساندند که میتوان از میان آنها کتابهای مهمی چون Algorithms + Data Structures = Programs و Systematic Programming: An Introduction و Compiler construction را نام برد. کتاب اول را یکی از تأثیرگذارترین کتابهای نوشته شده در حوزهی CS در طول تاریخ قلمداد میکنند. کتاب دوم مختص ریاضیدانانی نوشته شده بود که تمایل به درک ماهیت برنامهنویسی و یادگیری نوشتن الگوریتم دارند. کتاب سوم با دید کاربردی نوشته شده که در آن زمان که تمام کتابهای حوزهی کامپایلر با دید تئوری نوشته میشدند، کاری منحصر به فرد محسوب میشد.
در علم کامپیوتر یک ضربالمثلی وجود دارد که منسوب به آقای Wirth است و آن این است که :
"Software is getting slower more rapidly than hardware becomes faster"
از این روی به این عبارت Wirth's law گفته میشود.
گرچه ممکن است نام هیچ یک از کارهای آقای Wirth برای یک دانشجوی CS آشنا نباشد، اما گفتنیست که امروزه اکثر زبانهای برنامهنویسی، کامپایلرها، متدولوژیهای تولید نرمافزار و حتی سیستمعاملها، بیش از آنچه که فکر کنید وامدار پژوهشها و دستآوردهای آقای Wirth میباشند.
با احترام، تقدیم به خدای باستانِ زبانهای برنامهنویسی، مرحوم Niklaus Wirth
————————————————————
تنها سه روز از سال نوی میلادی جدید سپری شده و هنوز برای قضاوت خوش یا بد یُمن بودن آن زود است، اما یکم ژانویهی ۲۰۲۴، یقینا یکی از سیاهترین روزهای تاریخ جامعهی آکادمیک مهندسی نرمافزار خواهد بود. امروز حدود ۳ ساعت پیش، آقای Bertrand Meyer در یک توئیت اعلام کردند که یکی از ستارگان زبانهای برنامهنویسی، متدولوژی برنامهنویسی، مهندسی نرمافزار و طراحی سختافزار افول کرد. آقای Niklaus Wirth، با کوهی از افتخارات، برندهی جایزهی تورینگ اوارد، در سن ۸۹ سالی به تاریخ یکم ژانویهی ۲۰۲۴ چشم از جهان فرو بستند.
آقای Wirth در شهر Winterthur سوئیس بدنیا آمد و تحصیلات آکادمیک خود را در ETH زوریخ آغاز کرد. برای آغاز تحصیلات تکمیلی به دانشگاه Laval در کانادا رفت و بعد از آن رسالهی دکتری خود را در دانشگاه برکلی کالیفرنیا، به سرپرستی Harry Huskey، از پیشرویان پیدایش کامپیوتر، با عنوان A Generalization of ALGOL به سرانجام رساند. سپس به عضویت هیئت علمی دانشگاه استنفورد درآمد و بعد از آن به ETH بازگشت و در آنجا تا بازنشستگی خود به کارش ادامه داد.
از جمله دستآوردهای مهم ایشان طراحی زبانهای برنامهنویسی Pascal و ALGOL بود. علاقهی آقای Wirth به زبان ALGOL آنقدر زیاد بود که زبانهای متعددی مانند Euler و Modula و Oberon را بر پایهی آن طراحی کردند. ایشان در طراحی و پیادهسازی سیستمعاملهای Medos-2 و Oberon System نقش کلیدی داشتند. در حوزهی معماری کامپیوتر، یک زبان HDL به نام Lola را طراحی و پیادهسازی کردند. سال ۱۹۸۴ به پاس دستآوردهای کلیدی و مهم ایشان در حوزهی زبانهای برنامهنویسی، برندهی جایزه Turing Award شدند.
علاوه بر پژوهشهای پیشرو، دانشمندان بهنامی مانند Martin Odersky، خالق زبان Scala و Generics در Java و Michael Franz، مبدع Just-in-time Compilation and Optimization را تربیت کردند. ایشان کتابهای مهم و تأثیرگذاری در طی فعالیت خود به چاپ رساندند که میتوان از میان آنها کتابهای مهمی چون Algorithms + Data Structures = Programs و Systematic Programming: An Introduction و Compiler construction را نام برد. کتاب اول را یکی از تأثیرگذارترین کتابهای نوشته شده در حوزهی CS در طول تاریخ قلمداد میکنند. کتاب دوم مختص ریاضیدانانی نوشته شده بود که تمایل به درک ماهیت برنامهنویسی و یادگیری نوشتن الگوریتم دارند. کتاب سوم با دید کاربردی نوشته شده که در آن زمان که تمام کتابهای حوزهی کامپایلر با دید تئوری نوشته میشدند، کاری منحصر به فرد محسوب میشد.
در علم کامپیوتر یک ضربالمثلی وجود دارد که منسوب به آقای Wirth است و آن این است که :
"Software is getting slower more rapidly than hardware becomes faster"
از این روی به این عبارت Wirth's law گفته میشود.
گرچه ممکن است نام هیچ یک از کارهای آقای Wirth برای یک دانشجوی CS آشنا نباشد، اما گفتنیست که امروزه اکثر زبانهای برنامهنویسی، کامپایلرها، متدولوژیهای تولید نرمافزار و حتی سیستمعاملها، بیش از آنچه که فکر کنید وامدار پژوهشها و دستآوردهای آقای Wirth میباشند.
Forwarded from بهترین های لینوکس سابق
یه سوال خیلی جالب بود برام توی یکی از مصاحبه ها ( تاحالا ازم نپرسیده بودن )
اگر به باگ بربخورید چطوری رفعش میکنید؟
این سوال رو بنظرم نیاز روزی هزار بار از خودمون بپرسیم
چون نه تنها تو زندگی مون توی همه جا بدردمون میخوره
زندگی تون بی باگ و اوقات تون زیبا
اگر به باگ بربخورید چطوری رفعش میکنید؟
این سوال رو بنظرم نیاز روزی هزار بار از خودمون بپرسیم
چون نه تنها تو زندگی مون توی همه جا بدردمون میخوره
زندگی تون بی باگ و اوقات تون زیبا
نوشتههای ترمینالی
یه سوال خیلی جالب بود برام توی یکی از مصاحبه ها ( تاحالا ازم نپرسیده بودن ) اگر به باگ بربخورید چطوری رفعش میکنید؟ این سوال رو بنظرم نیاز روزی هزار بار از خودمون بپرسیم چون نه تنها تو زندگی مون توی همه جا بدردمون میخوره زندگی تون بی باگ و اوقات تون زیبا
شما نظرتون چیه؟ چطوری شروع میکنید فکر کردن و سر نخ پیدا کردن؟
نوشتههای ترمینالی
شما نظرتون چیه؟ چطوری شروع میکنید فکر کردن و سر نخ پیدا کردن؟
https://jvns.ca/blog/2022/12/08/a-debugging-manifesto/
اینجا یه سری راهکار و راهنمایی برای دیباگ آورده شده،
مثل بقیه کامیک های این سایت، قشنگ و روون توضیح داده و حتما توصیه میشه.
اینجا یه سری راهکار و راهنمایی برای دیباگ آورده شده،
مثل بقیه کامیک های این سایت، قشنگ و روون توضیح داده و حتما توصیه میشه.
Julia Evans
A debugging manifesto
Hello! I’ve been working on a zine about debugging for the last 6 months with my friend Marie, and one of the problems we ran into was figuring out how to explain the right attitude to take when debugging.
امروز یاد گرفتم که استفاده از قابلیتهای خفنتر تاچپد توی لینوکس هم ممکنه. یعنی میتونید تنظیم کنید هر gestureی که با تاچپد انجام میدید میتونه یه کامند اجرا بشه. جالا میتونه مستقیم کامند شل باشه میتونه هم با کمک ابزارهایی مثل xdotool وارد شدن کلیدهای دیگه رو شبیهسازی کنید.
نوشتههای ترمینالی
امروز یاد گرفتم که استفاده از قابلیتهای خفنتر تاچپد توی لینوکس هم ممکنه. یعنی میتونید تنظیم کنید هر gestureی که با تاچپد انجام میدید میتونه یه کامند اجرا بشه. جالا میتونه مستقیم کامند شل باشه میتونه هم با کمک ابزارهایی مثل xdotool وارد شدن کلیدهای…
با کمک ابزار fusuma با یه yaml ساده کانفیگها انجام میشه. این ویدیوی آموزشی رو توصیه میکنم:
https://www.youtube.com/watch?v=bn11Iwvf29I
و لینک ریپوزیتوریشون:
https://github.com/iberianpig/fusuma
https://www.youtube.com/watch?v=bn11Iwvf29I
و لینک ریپوزیتوریشون:
https://github.com/iberianpig/fusuma
YouTube
Multitouch Touchpad Gestures in Linux with Fusuma
This is a follow-up video to one I made a while ago about using libinput-gestures for multitouch gestures in Linux. That option still works but, since then, I have been using a different option that I wanted to share. Fusuma is a multitouch gesture recognizer.…
سیستم لینوکسی چطوری بوت میشه؟
یه ویدیوی کوتاه با عمق خوب
https://www.youtube.com/watch?v=XpFsMB6FoOs
یه ویدیوی کوتاه با عمق خوب
https://www.youtube.com/watch?v=XpFsMB6FoOs
YouTube
How Does Linux Boot Process Work?
Get a Free System Design PDF with 158 pages by subscribing to our weekly newsletter: https://bytebytego.ck.page/subscribe
Animation tools: Adobe Illustrator and After Effects.
Checkout our bestselling System Design Interview books:
Volume 1: https://amzn.to/3Ou7gkd…
Animation tools: Adobe Illustrator and After Effects.
Checkout our bestselling System Design Interview books:
Volume 1: https://amzn.to/3Ou7gkd…