Дараа нь дараах бичлэг нь Developer Writing: Blogs That Get Read, Piotr Sarna болон Cynthia Dunlop-ийн 8-р хувилбар нь хуваалцсан. Эдгээр бичлэг нь 7 алдартай инженерийн блог бичлэгийн загварыг үздэг: Зохиогчийн эрх © 2018 Зохиогчийн эрх хуулиар хамгаалагдсан. Буг Hunt We rewrote it in X Бид үүнийг үүсгэсэн Lessons learned тэндэлгээний талаарх санаа Немаркетинг бүтээгдэхүүний үзүүлэлт Benchmarks болон тест үр дүн "Bug Hunt" блог бичлэгийн загвар нь програмчлалын дэлхий даяар детектийн түүхтэй юм. Энэ нь бүтэцтэй, гол хуваалцтай, бодит хуваалцтай, голчлагч (ямар ч та), антагонисттай (одоогоор та хоёр долоо хоногийн өмнө буцаж авсан). Энэ нь гайхалтай байдаг, уншигчдад харахын тулд хязгаарлагдмал бөгөөд тогтвортой хуваалцтай, эсвэл тактик cliffhanger-тэй дуусгах болно. 8.1 Загвар Writing a bug hunting article serves a few purposes, depending on the success of the hunt, where the fault ultimately fell, and a few other factors. Let's tackle the potential purposes one by one. 8.1.1 Судалгааны тоног төхөөрөмж Үнэндээ богино гарч ирдэг бөгөөд энэ нь тохирсон байсан нь найдвартай юм. Гэхдээ илүү чухал зүйл нь энэ нь шинэчлэхэд боломжийг багасгах бөгөөд энэ нь юу хийх ёстой гэдгийг мэднэ үү. Богино хайж буй үед та дараах зүйлсийг мэдэгдэж байна: A few dead ends Өндөр итгэмжлэгдсэн Red Herring Энэ хэрэгсэл нь эхлээд тусалдаг боловч байнгын холбоотой байсан Another tool that proved immensely useful Some blog post from 2014 that led you to discover the root cause Эдгээр үйл явдлын бүх үйл явдлууд нь өөр өөр хэлбэрийн асуултуудын дараагийн debugger-ийн хувьд гайхамшигтай байдаг (тавтай морилно уу, хоёр долоо хоногийн одоогоор). Өнгөрсөн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо хоногийн долоо 8.1.2 Глобал буудлын мэдлэг Энэ нь Community-д шинэчлэх цаг юм! Шансууд нь, та боловсруулсан алдаа нь таны төслийн хувьд нэгтгэсэн биш юм. Үүнээс гадна, энэ нь таны сонгосон хэл, библиотекүүдийн нэг, эсвэл тусгай тоног төхөөрөмж дээр хязгаарлагдмал хатуу үр нөлөөтэй байсан юм. Таны нийтлэл нь "Хух, бид тавтай морилно уу гэж бодож байна ..." Энэ нь энэ технологийг харахын тулд өөрсдийн туслахын тулд арга замыг хайж чадна. As a result, writing a story about how you fixed an interesting bug may cause a few other bugs of the same category to be fixed worldwide. It's a superpower! This purpose is especially important if the bug is related to: Bloeding Edge програм хангамж Харьцуулагч Шинэ Open-Source Community Эдгээр нь динамик хөгжилтэй, салбарт стандарттай харьцуулахад маш бага туршилтын хавтгайтай байдаг, зүгээр л энэ нь критик багц төсөл дээр гүйцэтгэхийн тулд ихэвчлэн алдартай байдаг. Та энэ зорилго нь өмнөх тайлбарласан "зөвлөгөөний буцаан" - энэ нь мэдлэг буцаан юм та бүх хүмүүст, зүгээр л танай болон таны багт зориулсан биш. 8.1.3 Үнэлгээ Set aside the negative connotation of the “bragging” word. Tech world bragging – at the right dosage – is good for you and your peers. Bragging about doing something interesting, like hunting and resolving a bug, helps you as well as your readers: It's educational. Your audience can presumably learn something by reading how you achieved your goal. It broadens your professional network. People intrigued by similar technologies and challenges will likely reach out to you as we outlined in Chapter 1. It feels good. There’s no shame in acknowledging that attention is one of the benefits of telling the world that you did something. It yields free criticism – hopefully constructive criticism, but valuable either way. The (often illusory) sense of anonymity on the Internet makes it easy to criticize others, so you can count on lots of comments and nitpicks after your article goes public. But after filtering out the vitriol, you can often learn something new, or even revisit your whole approach to the problem. 8.2 Зохиогчийн эрх Буг хайлш нь техникийн асуудал юм, буг хайлш блог бичлэгүүд нь үзэсгэлэн нь байнгын техникийн адил юм. Үзүүлэгчдэд зориулсан ангилал нь: People with a similar background (which means they are potentially susceptible to introducing or suffering from similar bugs in their systems) Бүтээгдэхүүний буудлыг олж, сайжруулдаг хүмүүст Тавтай морилно уу, Тавтай морилно уу Эдгээр төрөл бүрийн буудлын туршилтаас урьдчилан сэргийлэх боломжийг олгодог хүмүүст (буудлын туршилтын технологи, эсвэл буудлын урьдчилан сэргийлэх хэрэгсэл дээр ажилладаг хүмүүст) Detective Fiction Үзүүлэгчид Your colleagues Professional Internet critics specialized in unsolicited advice Энэ нь тавтай морилно уу тавтай морилно уу: Түүнээс дээш техникийн хэлбэрийн хэлбэрийн талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи мэдээлэл If not, is willing to look them up and learn Хэрэв та биш бол, зүгээр л тэд үүнийг мэддэг гэж хэлэх нь маш сайн юм Therefore, it's fine to treat a bug hunting blog post as one addressed to "intermediate level" (or above) readers and not "newcomers." Advanced technical terms are fine because you're not trying to make the article accessible to the wider public. Just expand any arcane acronyms as you see fit and provide hyperlinks as needed. 8.3 Examples Бугуй нь ямар ч газруудаас байж болох юм, гэхдээ энэ нь бугуй хайлтын блог бичлэгүүд байж болно. Зөвхөн, та бугуй хайлтын бичлэгүүд нь янз бүрийн блогүүд дээр хуваалцаж болно: Big Tech, Unique, Startup, болон хувийн блогүүд. Ерөнхийдөө, бугуй хайлтын бичлэгүүд нь том алдартай компаниуд хуваалцажгүй бага байдаг (ийг илүү бодож байна) эх үүсвэрүүд, тусгай тусламжчид open-source хуваалцаж, урт хугацааны төслүүд тухай бичдэг. Дараа нь "Bug Hunt" загварыг ашиглах блог бичлэгүүд нь Piotr-ийн санал болгож байна. 8.3.1 NUMA Performance Bug-ийг хайж Михал Chojnowski Author: Байрлал жуулчлалын блог ( ) Source: https://www.scylladb.com/2021/09/28/hunting-a-numa-performance-bug/ Summary Эдүүлбэр нь NUMA (Non-Uniform Memory Access) загвартай орчин үеийн тоног төхөөрөмж дээр үйл явдлын регрессийг тайлбарладаг. Регрессийн үйл явдлын хооронд хязгаарлагдмал байдаг гэж үзсэн бөгөөд энэ нь тодорхойлох нь маш их хязгаарлагдмал болгон байна. Эдүүлбэр нь асуудал нь диагноз хийхэд хэд хэдэн хязгаарлагдмал (аь хэзээ ч чанарын, гайхамшигтай) туршид хуваалцсан. Дараа нь үзүүлэлтүүдээс нэг нь шууданг, код шуудангаар хэмжигдсэн жишээ нь хязгаарлагдмал тохиргооны үр дүнтэй юм. Commentary This is the pinnacle of bug hunting blog posts. It’s deeply technical, but at the same time simple to follow. The less experienced readers can skip some of the nitty-gritty details and still learn a lot. All of the failed attempts to diagnose the issue are educational, and surely usable in future debugging. The casual expertise that the author shows while editing executable binaries directly as if they were text files makes the blog post an extremely enjoyable read. The solution to the problem is also very satisfactory, especially to a programmer’s mind: just one seemingly innocent line of code changed, and all the performance regressions are eliminated. 8.3.2 Яагаад Миний Rust Тавтай морилно уу? Амос Wenger Author: fasterthanlime Blog ( Source: https://fasterthanli.me/articles/why-is-my-rust-build-so-slow) Summary Энэ уян хатан блог бичлэг Rust төслийн компиляцийн цаг хугацааны асуудал судлах. Энэ нь компиляторын самбар хийх, компиляцийн үйл явцыг хяналтын хэсэгт хуваалцах, ямар ч нэг хэсэгт цаг хугацаатай, ямар ч хэзээ ч хэзээ ч цаг хугацаатай. Энэ нь зураг, кодыг хуваалцсан, ашиглаж болно бетон хэрэгслүүдийн тодорхойлолттэй байдаг. Статьяны сүүлийн бичлэг нь үнэхээр ямар ч нэг хязгаарлалт биш, Хэрэв та Rust-ийн компиляцийн цаг хугацаатай хэзээ ч хязгаарлалттай бол дээрх бүх хязгаарлалттай техникийг хэрэглэхэд итгэлтэй зөвлөмжүүд юм. Commentary Өнгөрсөн техникийн блог бичлэгийн харьцуулахад энэ нь хавтгайтай хэлбэлэг юм! Энэ нь чанарын унших нь хялбар ч цаг хугацаатай байх болно, энэ нь 3 эсвэл 4 хэсэгт харьцуулахад сайн санаа юм, дэлгэцээс хялбар байхын тулд зүрх, диплопииг урьдчилан сэргийлэх. Энэ нь өгөгдлийн онцлог юм. Олон технологийн өгөгдлийг 4 нь 6 минутын унтраах хамгийн их өгөгдлийг харахыг хүсч байна. Тэгээд энэ нь харьцуулахад, гар утас дээр анхаарах хүндийн дундаж анхаарах хугацаатай, цаг хугацаатай карикатуудын тусламжтай цаг хугацаатай цаг хугацаатай цаг хугацаатай цаг хугацаатай цаг хугацаатай цаг хугацаатай цаг хугацаатай цаг хугацаатай цаг хугацаатай цаг хугацаатай цаг хугацаатай цаг хугацаатай цаг хугацаатай цаг хугацаатай цаг хугацаатай цаг хугацаатай цаг хугацаатай байдаг. Гэсэн хэдий ч, урт өгөгдлийг нэг удаа ном унтраах боломжийг олгодог. Энэ нийтлэл нь зохиогчдийн альтэр эго, Cool Bear-ийг онцгой загвартай бөгөөд энэ нь байнгын урт хувцас санал болгож байна - уншигч нь (хөнгөн) унших үйл явцыг байлгах. Өнгөрсөн Энэ төрлийн богиноны блог бичлэг нь Rust компиляторуудын бооцооны техникийн энципропийг үйл ажиллагаа явуулдаг. Би үүнийг bookmarked байна, зүгээр л миний төсөлд холболтын цаг хугацааг сайжруулдаг талаархи мэдлэгийг шинэчлэх хэрэгтэй тохиолдолд. Үзүүлэлт нь ч байтугай хязгаарлагдмал юм: насанд хүрэгчдэд тавтай морилно уу, эцэст шийдлийг санал болгож буй гэх мэт, энэ нь зүгээр л мэдрэмжтэй хуваалцтай. 8.3.3 How a Single Line of Code Made a 24-core Server Slower Than a Laptop Питер Колацковски Author: Зохиогчийн эрх © 2018 Шивээсний зургийн санаанууд ) Source: https://pkolaczk.github.io/server-slower-than-a-laptop/ Summary The blog post describes how local benchmarks detected a bottleneck on machines with lots of CPU cores. The author shares a performance analysis, performs some profiling, then offers a few explanations of how modern CPUs work under the hood and how the processor caches manage memory. The suggested fix is a natural consequence of the conclusions reached earlier in the article: minimizing the amount of state shared between processor units eliminates the bottleneck. Commentary Энэ нь буудлын блог бичлэгийн бусад зүрхний жишээ юм. Түүний нэр нь жижиг clickbaity юм, гэхдээ одоо ч байтугай нийтлэг зар сурталчилгааны суулгах програм хангамжийн хязгаарлагдмал байх нь хялбар байдаг. Техникийн тодорхойлолт нь Chojnowski-ийн NUMA блог бичлэгийн харьцуулахад ихэнх ихэнх ихэнх ихэнх мэдэгдэж байна. Энэ нийтлэл нь тавтай морилно уу, "Интел Xeon дээр L3 цахим хангамжийн хангамжийн хангамж нь дундаж хэрэглэдэг." Тавтай морилно уу. Энэ нийтлэл нь эдгээр тодорхойлолтүүд нь уншигчдад мэдэгдэхгүйгээр уншиж байна. Хэрэв та мэдэж байгаа бол - магадгүй нэг өдөр энэ нь бусад төсөлд гүйцэтгэлийн богиног сэргийлэхэд туслах болно. Үүнээс гадна, нийтлэл нь уншигчдад үр дүнгтэй, CPU архитектур, гүйцэтгэлийн чиглэлээр жижиг нь ухаалаг байх болно. 8.3.4 Tricky Direct Memory Leak Debugging-аас суралцаж Sanchay Javeria Author: Pinterest Engineering Blog ( ) Source: https://medium.com/pinterest-engineering/lessons-from-debugging-a-tricky-direct-memory-leak-f638c722d9f2 Summary Pinterest-ийн хөгжүүлэгчдийн баг нь дистрибьюторын системд cascading хязгаарлалыг үүсгэдэг кодыг боловсруулах хэв маяг харахын тулд тэдний туршлагатай. Энэ нь Java-ийн байгаль орчинд debugging техникийг харах, дараа нь хамгийн сүүлийн үеийн хязгаарлалыг үүсгэдэг апп-кодын хязгаарлалыг харуулж байна. Commentary Энэ нь алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай алдартай. Энэ контекстд, үр дүн нь үнэхээр ертөнцийг амархан хүрээлэн биш юм, гэхдээ энэ нь ялангуяа уншигчдын хүсэлтийг хангадаг. Би уншигчдын ихэнх нь "Ах, би эхлээд энэ мэдэж байна" -ийг суралцаж дараа. 8.3.5 ZFS Мистериоз нь миний CPU-ийг эвдэж байна Брэндан Грег Author: Эмэгтэйчүүдийн Блог ( ) Source: https://www.brendangregg.com/blog/2021-09-06/zfs-is-mysteriously-eating-my-cpu.html Summary Блог бичлэгийн бичлэгийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар дэлгэрэнгүй хэлбэрийн талаар Commentary Зохиогчийн эрх хуулиар хамгаалагдсан. Зохиогчийн эрх хуулиар хамгаалагдсан. Зохиогчийн эрх хуулиар хамгаалагдсан. Зохиогчийн эрх хуулиар хамгаалагдсан. Зохиогчийн эрх хуулиар хамгаалагдсан. Зохиогчийн эрх хуулиар хамгаалагдсан. Греггийн мэргэшлийн талаарх талаарх талаарх талаарх талаарх талаарх талаарх талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи Дэлгэрэнгүй "Bug Hunt" блог бичлэгүүд дээр writethat.blog Хамгийн сүүлийн үеийн "Bug Hunt" блог бичлэг үзнэ үү on writethat.blog on writethat.blog 8.4 Характер Bug Hunt blog posts can vary as wildly as the actual bug hunts – but they tend to share the following characteristics: They recount the story chronologically, from the moment the evil bug manifested itself, to when it was pronounced dead They focus primarily on the thrill (and pain) of the hunt They freely share the evidence collected along the hunt so readers can put on their detective hats and play along They’re largely geared to experienced developers who know the technologies being discussed (or are ready to learn as they go) They offer technical nuggets that could be interesting now, lifesaving later Let’s examine each in turn. 8.4.1 Хронологийг үүсгэсэн Bug hunting blog posts often follow a specific structure since they are the technological equivalent of detective stories. (If you want an intro or refresher on the structure of a detective story, generative AI does a decent job here). The introduction paragraph does not reveal too many details and certainly does not provide a spoiler on the solution. Often, they just elaborate on the (properly mysterious) title with a few more words. Once the problem is defined, the hunt begins, usually with a few failed (but educational) attempts. The tension builds until the author reaches their aha moment, which is followed by the fix description (and that section is customarily titled "The Fix"). After the solution is revealed, the blog post concludes by describing preventive measures to stop this bug from recurring – and often a concise apology to any affected users. 8.4.2 Heavy on the hunt The meatiest part of the article is the path towards identifying the issue. Spending around 80% of the post explaining the investigation process is a good rule of thumb. For example, here’s how much time each of the example blog posts above spent on the investigation (based on word count): 85% hunt Chojnowski: 83% hunt Wenger: 83% hunt Kołaczkowski: 82% hunt Javeria: 93% hunt Gregg: 8.4.3 Evidence everywhere Bug Hunt блог бичлэгүүд нь харьцуулахад суралцажтай мэдлэгтэй байдаг. Үзүүлэгч нь хөнгөн график, тоо, график, скрипт, код дээж үзэхыг хүсч байна. Энэ нь тэдний детектийн бооцоо руу дагаж, том илгээх өмнө хавтгайлуулахыг хүсч байна. For example, here’s some of the evidence shown in the example blog posts: Chojnowski: Базейн хяналт график (shard-д бичлэг), сүлжээний болон диск гүйцэтгэлийн график, CPU статистик, хөнгөн график, инструкцийн түвшин хавтгай, CPU-ийн гүйцэтгэлийн хэмжих мониторинг нэгж (PMU) үйл явц, өөр өөр өөр код тохиргооны туршид Wenger: Cargo үүсгэх цаг хугацаа, компиляцийн нэгжийн цаг хугацаа, CPU хэрэглээ, харьцангуй график, debug мэдээлэл, хөнгөн график, Chromium болон Perfetto-ийн дамжуулалт, туршилтын код фиксаци, хатуу график Kołaczkowski: Бенчмаркинг хэрэгсэл загвар, дамжуулалт үр дүнд харьцуулахад (4-core laptop vs. 24-core server), хөнгөн график Javeria: Хэмжээний алдааны тодорхойлолт, backpressure туршилт, хэмжээний хяналт руу хэд хэдэн forays Flame graphs (of course!), ZFS mount details, arcstats, and all the source code, via a GitHub link Gregg: Flame график нь bug hunting блог бичлэгүүд дээр маш их байдаг. Тэд таны debugging болон гүйцэтгэлийн профилийг визуалчлах маш сайн арга санал болгож байна. Тэгээд тэд интерактив байдаг - хэрэглэгчид сонирхолтой хэсэгт зуух болно, тусгай тохиромжтой харьцуулахад үйл явдлыг шүүлтүүр, гэх мэт. Flame график нь Linux-ийн perf profile эсвэл Rust-ийн cargo flame graph command гэх мэт алдартай хэрэгсэлээс үүсгэх болно. 8.4.4 Ажлын туршлагатай Bug hunting articles tend to be expert friendly. The author usually assumes that the audience is proficient (or at least familiar) with the technological stack used in the article. Code samples and scripts shared in the article are typically targeted to readers who are familiar with the programming languages used. These types of posts aren’t conducive to basic explanations of core language concepts; if the reader doesn’t “get it,” they might need to soldier through it or just move on. This is distinctly different than in other blog post patterns, such as “We Rewrote It in X” (discussed in Chapter 9). Blog posts in that pattern are more appropriate for those just getting started with the given technology and often include an “Introduction to the New Language” section. 8.4.5 Educational Blog posts following this pattern can be quite educational for developers beyond the impacted team. The meaty part, bug identification, is abundant in details about how to inspect similar issues. Even more importantly, these sections are abundant in reproducible details: ones that are likely to be useful for solving all kinds of similar problems that readers might face in the future. The blog post serves its purpose if it leaves the reader equipped with a few more tricks they can apply, just in case they ever encounter a similar bug at some point in their life. For example, here’s a high-level view of what readers could learn from each of our example blog posts: The kinds of issues you might encounter with complex memory architecture (NUMA), especially with ARM processors Chojnowski: Ways to improve your Rust build times Wenger: How modern CPUs work under the hood and how the processor caches manage memory Kołaczkowski: Java is evil Javeria: How to apply analysis tools like an absolute expert Gregg: 8.5 Dos болон Don'ts The best blog posts are born from the most torturous bug hunts. Driven by the glorious feeling of finally solving the mystery, strike while the iron is hot. Write your impressions before the high of the hunt wears off and help your peers solve their next case faster. Here are some tips for writing your own Bug Hunt blog post. 8.5.1 Тавтай морилно уу ямар ч хүмүүс (тавтай морилно уу, тавтай морилно уу, таны босоо захирал) тавтай морилно уу This is especially important if you hunted a bug that had a notable impact on users – or if the disclosure of this bug could negatively impact your company’s reputation and/or the all-important stock price. Open-source or source-available projects usually don’t impose any legal considerations (except maybe trying to avoid getting your code infected with one of the GPL licenses and its "copyleft" terms). Not all code is open-source though. Хэрэв та кодыг хуваалцах бол, таны босоо нь аюулгүй байдалтэй холбоотой байсан бол, эсвэл өгөгдлийн хязгааргүй цуглуулгыг дууссан бол таны босоо нь зарим мэдээллийг албан ёсны болгон хуваалцах болно. Эдгээр ширхэг нь ашиглана уу: Эхлээд хүсч, дараа нь бичнэ үү. 8.5.2 Техникийн гүн дугуй хийх Техникийн тодорхойлолт нь ямар ч байх ёстой, энд, блог бичлэг. Хэрэв таны нийтлэл нь кодны дээж, хэрэглэгдсэн томоохон технологийн тодорхойлолт, үйл явц, гэх мэт тодорхойлолт гэх мэт тодорхойлолттай бол олон уншигч нь тавтай морилно уу. Үүнээс хуваалцсан ч, тэд таны нарийвчлалтай байдалтай асуултад байж болох юм. Хэрэв та бүтээгдэхүүнийг илүү сайн харахын тулд мэдэгдэж буй хязгаарлалттай жишээг хуваалцсан байж болох уу? Хэрэв та маш их техникийн тодорхойлолт нэмж болохыг харахын тулд, илүү их хэлбэрийн алдаатай байх болно. уншигчид тэднийг хэзээ ч харахгүй бол тэднийг хуваалцах боломжтой. Техникийн Bug hunting blog posts are especially expected to be loaded with tips, tricks, code, benchmark results, as well as links to open-source repositories and documentation. Otherwise, you rob readers of the fun opportunity to draw their own conclusions from the copious evidence. As noted earlier, it's fine to be expert-friendly here. You can assume that the audience is either already familiar with the technology described, or willing to catch up (with the help of your blog post). 8.5.3 Be brutally honest about all your failures Your failures and misery provide readers with the cathartic effect that brought them to your blog post in the first place! They also give rise to the most educational aspect of bug hunting articles. After all, it's great to learn from mistakes, but it's even better to learn from somebody else's mistakes first. Буг хайлтын блог бичлэгүүд нь ихэвчлэн эх үүсвэрийг мэдэгдсэн, бугуй тохирсон дараа бичдэг. Эхний хэсэгт харьцуулагдсан бол, тун, тун илүү сайн харуулж байна. Хамгийн сүүлийн үеийн үр дүнг харьцуулахад харьцуулахад харьцуулахад харьцуулахад харьцуулахад интернетийн талаархи тодорхойлолт хайж болно. Иймээс "хавдсан", "хавдсан" эсвэл "FUBAR" -ийг онлайн олж авах нь хялбар болгодог. Don't try to convey a perfect, pristine bug hunt. Dead ends and failed attempts bring in tons of educational value. Programmers (which is of course a synonym for “great minds”) think alike. That means some readers could get stuck in the same dead ends – unless they read your cautionary tale first. 8.5.4 Include numbers, benchmarks, metrics, and flame graphs Бенчмарк үр дүнг, метрик, бүх төрлийн тоо нь детектив киноны дэлхий даяар нарийвчлал, баталгаатай. Блог бичлэгүүд тавтай морилно уу хэрэглэдэг бол "Наш систем нь одоо маш хурдан байна." Бүтээгдэхүүний үр дүнтэй, дараа нь та тэднийг хуваалцах болно ..." Таны метрикийн дэлгэц (аж түүнээс дээш, огноо график гэх мэт интерактив хэлбэрүүд) уншигчдын харахын тулд нийтлэл нь илүү итгэмжлэгдсэн, унших илүү дуртай болгодог. Үнэгүй 8.5.5 Don't give away too much, too soon – keep the tension building For most blog posts, we recommend sharing the TL;DR early on so readers can quickly decide if they want to continue. Not here! With bug hunt blog posts, avoid spoilers at all costs! The tension should be patiently built until the aha moment occurs, and the fix is revealed. This is key for allowing readers (those not in a hurry, at least) to vicariously experience the thrill of the hunt, with all its twists and turns. They probably already suspect that the article concludes with a happy ending, because otherwise it wouldn't be published. But aren't most detective stories like that anyway? 8.5.6 Don’t make overeager readers hunt too hard for the fix That being said, some readers will get impatient. Maybe they drew their own conclusion after just a few paragraphs and want the immediate gratification of confirming that they got it right, right away, unlike silly old you. Maybe this is the twelfth Java bug hunting blog post they’ve come across this month and they want to see if this is yet another one where the garbage collector is ultimately to blame. Be kind and mark “the fix” with a nice prominent heading so they can skip ahead to the smoking gun. Үнэндээ бонус гэж, ялангуяа тэмдэглэгдсэн тохиргоо нь таны блог бичлэгийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараагийн дараа 8.5.7 Add breaking points wherever necessary Bug hunt articles can get long, especially if you’re covering every little twist and turn (as you absolutely should!) If you end up writing a blog post that will take over 20 minutes or so to read, consider adding a few clear breaking points for readers, in case they opt to consume your article in more than one sitting. For example, you could provide a short recap of the progress of the investigation so far. You might add an explicit note that the steps described above led to a dead end, leading to a new thesis. Or you could simply use subheadings like “Phase 3,” subliminally suggesting to the reader that it's fine to take a short coffee break here without losing context. 8.5.8 Don't suck the life out of it Readers aren't here to read an official failure report. The captivating bits are the personal story, the struggle, and the final joy of figuring out what was wrong. The best bug hunting blog posts use an informal conversational tone, and anecdotes are very much welcome. Энэ нь таны хувийн үзэсгэлэнт хэлбэрээр хэлэх. Мистерийн шийдэл болгон таны зүрхний хооронд хийж байгаа зүйлийг хуваалцахын тулд хязгааргүй байх. Мөн, хязгаарлалт нь хязгаарлалттай, хүсэлттэй байдаг - ялангуяа амархан тусламжтай. Өнгөрсөн ч, ихэнх хүмүүс бусад хүмүүсийн хязгаарлалт талаар уншихыг тавтай морилно уу, энэ нь тэднийг (түүнээс гадна) болж чаджээ гэж мэддэг. The “building tension” and “providing full access to clues” approaches detailed above are two fundamental ways to keep readers engaged (yes, they Үнэлгээний детектийн түүхээс сүнслэгдсэн). Үүнээс гадна, та хүсэж байгаа бол: Бүртгүүлэх Write in an extremely casual tone, sacrificing “proper” grammar as needed to keep it conversational Create a faux dialog with the reader: ask them questions so they’re encouraged to step back and form their own hypotheses (which you will proceed to confirm or disprove) Write as if you’re in the thick of the hunt (e.g., “Let’s see if …” vs. “Then we checked if…’’) Share exactly what popped into your head (no matter how silly it seems in retrospect) as you encountered each new piece of information Explicitly call out critical moments like “plot twist,” “dead end,” and “the aha moment” to ensure readers are in the right mindset at every point 8.5.9 Don't forget to thank those who helped along the hunt Хэрэв та өөрийн үйлчлүүлэгчдэд найдвартай байхыг хүсч байгаа бол энэ нь тавтай морилно уу. Хэрэв та өөрийн үйлчлүүлэгчдэд найдвартай байхыг хүсч байгаа бол энэ нь тавтай морилно уу. Хэрэв та өөрийн үйлчлүүлэгчдэд найдвартай байхыг хүсч байгаа бол энэ нь тавтай морилно уу. Хэрэв та өөрийн үйлчлүүлэгчдэд найдвартай байхыг хүсч байгаа бол энэ нь тавтай морилно уу. Хэрэв та өөрийн үйлчлүүлэгчдэд найдвартай байхыг хүсч байгаа бол энэ нь тавтай морилно уу. 8.5.10 Экстраполат Feel free to extrapolate from specific errors (e.g., "Our Rust code had a bug") into more general issues (e.g., "Rust standard library makes it easy to deadlock in this particular use case.") Bug hunting blog posts are also opportunities to shine some light on pain points you have with a particular technology. You’ve managed to attract a captive audience, interested in what you have to say. Why not take advantage of that? If you noted something particularly problematic with the language or library you used, bite the bullet and suggest that something should be fixed upstream. Programming language and library maintainers appreciate constructive criticism that helps improve their projects. 8.6 Summary Writing a bug hunting article serves to share knowledge, raise awareness about bugs you encountered, and showcase your achievements A bug hunting blog post targets a technical audience, from experts to enthusiasts, usually assuming (at least) intermediate knowledge of the terminology Блог бичлэгүүд нь ихэвчлэн судалгааны тодорхойлолттай байдаг, тоо, бенчмарк, үр дүнг, график хэлбэрээр техникийн харуулсан. Top tips: Check for transparency issues Do a technical deep dive Be brutally honest Include numbers and benchmarks Avoid spoilers Clearly mark “the fix” Make it personal Thank your collaborators * Үнэгүй Та дэлгэрэнгүй мэдээллийг үзнэ үү (don’t miss the and ). Please note that the words get scrambled at some seemingly arbitrary point beyond our control. Sorry! ¯\ / on the Manning site foreword by Bryan Cantrill afterword by Scott Hanselman (ツ) Өнгөрсөн