Two books from google:
🌠 Site Reliability Engineering
🌠 The Site Reliability Workbook
https://landing.google.com/sre/books/
🌠 Site Reliability Engineering
🌠 The Site Reliability Workbook
https://landing.google.com/sre/books/
LinkPlace
https://twitter.com/mathias/status/1057611461999112192
من یه چیزی رو همیشه میگم، بازم میگم، و فکر میکنم باید خیلی بگم. وقتی من برنامه نویسای وب یا مثلا اپ موبایل و اینارو میبینم خیلی از این مدل پست ها و حرف ها بینشون زیاده.
یه مثال مشابه مثلا، یادمه یه گروهی بود که توش برنامه نویسای iOS بودن، یکی اومد یه اسنیپت گذاشت برای این که چطوری اعداد اینگیلیسی رو فارسی بکنیم، بعد اونجا یه تابعی بود که اسمش یادم نیست (برای همین بذارین بهش بگیم قلام)، قلام میومد تو یه استرینگ یه عدد رو میگرفت و لوکالایزش میکرد به فارسی. چیزی که این آدم تهش نوشته بود اینطوری بود:
این جور چیزا باید واضح ترین چیزای روز اول دانشگاه باشن و هنوز توی JS چیزایی رو دربارشون حرف زده میشه که یکم زیادی بده برای یه برنامه نویس که دربارش حرف بزنه. چند وقت پیش یه پست معروف تو مدیوم پخش شده بود که یکی اومده بود برسی کرده بود که اگه شما به جای آرگومان یه آبجکت رو به عنوان آپشن توی جی اس استفاده بکنین پرفورمنسش کمتره
اینا چیزای بینهایت واضحین، همشون رو همه تو تو چند هفته اول برنامه نویسی مقدماتی دانشگاه باید بخونن، این خیلی واضحه که وقتی شما دارین یه آبجکت رو پاس به عنوان آرگومان استفاده میکنین به جای این که یه مقدار رو رفرنسش رو بفرستین دارین رفرنس یه هش تیبل رو میفرستین که خودش باید مقدار استرینگی بگیریه و باز بکنه و مموری چک بکنه و تهش یه رفرنس دیگه بده. واضحه که اولی سریع تره.
این که چرا کسی اینارو نمیدونه، به طور واضح فک میکنم اینکه کسی درسایی مثل الگوریتم رو جدی نمیگیره و برنامه نویسای وب و موبایل برنامه نویسی کمی انجام میدن و بیشتر خودشون رو وصل کردن به API ها. من همیشه بهتون گفتم که بشینین خودتون کد بنویسین، اینقدر فریمورک استفاده نکنین، برنامه های سطح پایین تر بنویسین، بازی های فکری الگوریتیم بکنین، یکم پراجک اویلر حل بکنین. بازم میگم، تو یه زبونی که کامپایل نمیشه کامپایلری نیست که بیاد از یه آرایه ای که اصلا آرایه نیست لینک لیسته به طور پیش بینی رفرنس خونه بگیره که دیستراکشن رو بدون ایتریشن هندل بکنه، معلومه که باید آرایه رو ایتریت بکنه که رفرنس دربیاره، این خیلی بده که برنامه نویسای جی اس اصلا به این چیزای پرفورمنسی فک نمیکنن.
از اون بدتر اینکه تو جایی مثل فیسبوک و اینا، خیلیاشون دانشگاه نرفتن، تیم react یک نفر آدمی که دانشگاه رفته داره، برای همین خیلی جاها از معماریشون بیخوده و بازم همه دنیا دارن استفاده میکنن ازش بدون این که خیلی به این چیزاش نگاه بکنن. نمیگم که برین خودتون رو خفه بکنین با الگوریتم، ولی اینطوری هم نباشه که مشکلات یه کامیونیتی این چیزا باشه.
یه مثال مشابه مثلا، یادمه یه گروهی بود که توش برنامه نویسای iOS بودن، یکی اومد یه اسنیپت گذاشت برای این که چطوری اعداد اینگیلیسی رو فارسی بکنیم، بعد اونجا یه تابعی بود که اسمش یادم نیست (برای همین بذارین بهش بگیم قلام)، قلام میومد تو یه استرینگ یه عدد رو میگرفت و لوکالایزش میکرد به فارسی. چیزی که این آدم تهش نوشته بود اینطوری بود:
for 0 to 9 doکه خوب هر برنامه نویسی میدیدش درجا میگفت که این داره ده بار روی استرینگ میچرخه (چون برای هر عدد یه بار میچرخه) و در نتیجه باید اینطوری نوشته میشد:
text = gholam( 1, ۱, text )
text = gholam( 2, ۲, text )
...
text = gholam( 9, ۹, text )
end
return text
newText = string in size of textکه خوب اینطوری خیلی راحت عددش کم میشد به یه دور استرینگ رو نویگیت کردن. و وقتی من اینو بهشون گفتم اولا که تعجب کردن بعد تقریبا چند نفرشون رفتن جفتش رو نوشتن بنچمارک کردن که ببینن واقعا این درسته و وقتی دیدن تقریبا ۸ برابر سریع تره دیدن عاره درسته.
for letter, index in text do
newLetter = case of letter
"۱" -> "1"
"۲" -> "2"
...
"۹" -> "9"
x -> x
nextText[index] = newLetter
end
return newText
این جور چیزا باید واضح ترین چیزای روز اول دانشگاه باشن و هنوز توی JS چیزایی رو دربارشون حرف زده میشه که یکم زیادی بده برای یه برنامه نویس که دربارش حرف بزنه. چند وقت پیش یه پست معروف تو مدیوم پخش شده بود که یکی اومده بود برسی کرده بود که اگه شما به جای آرگومان یه آبجکت رو به عنوان آپشن توی جی اس استفاده بکنین پرفورمنسش کمتره
func( a, b, c ) vs func({ a: ..., b: ..., c: ... })
که خوب به بیلیون ها دلیل یه برنامه نویس باید از بیلیون سنگی دیدن این قضیه اینو بفهمه، ولی تعجب کسی که نوشته بودتش و این که تو وب اونقدر پخش شد نشون میداد نه هیشکی همچین چیزی رو نمیدونه.اینا چیزای بینهایت واضحین، همشون رو همه تو تو چند هفته اول برنامه نویسی مقدماتی دانشگاه باید بخونن، این خیلی واضحه که وقتی شما دارین یه آبجکت رو پاس به عنوان آرگومان استفاده میکنین به جای این که یه مقدار رو رفرنسش رو بفرستین دارین رفرنس یه هش تیبل رو میفرستین که خودش باید مقدار استرینگی بگیریه و باز بکنه و مموری چک بکنه و تهش یه رفرنس دیگه بده. واضحه که اولی سریع تره.
این که چرا کسی اینارو نمیدونه، به طور واضح فک میکنم اینکه کسی درسایی مثل الگوریتم رو جدی نمیگیره و برنامه نویسای وب و موبایل برنامه نویسی کمی انجام میدن و بیشتر خودشون رو وصل کردن به API ها. من همیشه بهتون گفتم که بشینین خودتون کد بنویسین، اینقدر فریمورک استفاده نکنین، برنامه های سطح پایین تر بنویسین، بازی های فکری الگوریتیم بکنین، یکم پراجک اویلر حل بکنین. بازم میگم، تو یه زبونی که کامپایل نمیشه کامپایلری نیست که بیاد از یه آرایه ای که اصلا آرایه نیست لینک لیسته به طور پیش بینی رفرنس خونه بگیره که دیستراکشن رو بدون ایتریشن هندل بکنه، معلومه که باید آرایه رو ایتریت بکنه که رفرنس دربیاره، این خیلی بده که برنامه نویسای جی اس اصلا به این چیزای پرفورمنسی فک نمیکنن.
از اون بدتر اینکه تو جایی مثل فیسبوک و اینا، خیلیاشون دانشگاه نرفتن، تیم react یک نفر آدمی که دانشگاه رفته داره، برای همین خیلی جاها از معماریشون بیخوده و بازم همه دنیا دارن استفاده میکنن ازش بدون این که خیلی به این چیزاش نگاه بکنن. نمیگم که برین خودتون رو خفه بکنین با الگوریتم، ولی اینطوری هم نباشه که مشکلات یه کامیونیتی این چیزا باشه.
LinkPlace
من یه چیزی رو همیشه میگم، بازم میگم، و فکر میکنم باید خیلی بگم. وقتی من برنامه نویسای وب یا مثلا اپ موبایل و اینارو میبینم خیلی از این مدل پست ها و حرف ها بینشون زیاده. یه مثال مشابه مثلا، یادمه یه گروهی بود که توش برنامه نویسای iOS بودن، یکی اومد یه…
اخه مشکلی که پاس دادن آبجکت به عنوان آرگومان به یه فانکشن داره اینه که شما باید ترتیب رو اونجا رعایت بکنی وگرنه بهت undefined برمیگردونه
ولی اگه بریزیشون تو آبجکت بعد بفرستی دیگه نیاز نیست ترتیب رو رعایت کنی
میگی از اینی که پاس دادی من مثلا a رو میخوام
میره واست میارتش
ولی اگه بریزیشون تو آبجکت بعد بفرستی دیگه نیاز نیست ترتیب رو رعایت کنی
میگی از اینی که پاس دادی من مثلا a رو میخوام
میره واست میارتش
LinkPlace
اخه مشکلی که پاس دادن آبجکت به عنوان آرگومان به یه فانکشن داره اینه که شما باید ترتیب رو اونجا رعایت بکنی وگرنه بهت undefined برمیگردونه ولی اگه بریزیشون تو آبجکت بعد بفرستی دیگه نیاز نیست ترتیب رو رعایت کنی میگی از اینی که پاس دادی من مثلا a رو میخوام میره…
عاره و میتونی آپشن تعریف بکنی. من منظورم اینکه چرا برنامه نویس های جیاس نباید بدونن که این کار پرفورمنس خوره؛ واقعا چیز پیچیده ای نیست. ولی جیاسیا خیلی تمبل شدن و زیادی بی اهمیت کد میزنن. نتیجش میشه این که چیزای ساده رو جامعش یادش رفته و این خیلی بده.
این یک تکه کد واقعی کاتلین هست! بدون استفاده از سیستم ماکرو یا کلا هر نوع پردازش متنی.
https://gist.github.com/amrza/2f3edb30677b87593bb9a9227df43a34
https://gist.github.com/amrza/2f3edb30677b87593bb9a9227df43a34
Gist
fun with infix funs in kotlin
fun with infix funs in kotlin. GitHub Gist: instantly share code, notes, and snippets.
سیستم xv6 یه سیستم عامل عین یونیکس ۶ئه که MIT برای یاد دادن سیستم عامل ساخته. فرقش اینکه با C استاندارد نوشته شده و مالتی پراسسوره و یه کتاب داره که اگه دوست دارین یاد بگیرین میتونین برین بخونین و حال کنین
https://pdos.csail.mit.edu/6.828/2018/xv6.html
https://pdos.csail.mit.edu/6.828/2018/xv6.html