HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <ul><li><a>Методы формализации требований: Use Case vs User Story</a></li>
1 <ul><li><a>Методы формализации требований: Use Case vs User Story</a></li>
2 <li><a>Всё что нужно знать про области видимости в Python</a></li>
2 <li><a>Всё что нужно знать про области видимости в Python</a></li>
3 <li><a>Правда ли, что разработчики не могут быть хорошими тестировщиками?</a></li>
3 <li><a>Правда ли, что разработчики не могут быть хорошими тестировщиками?</a></li>
4 <li><a>Обнаружение объектов на изображении с помощью моделей YOLOv5 и YOLOv8</a></li>
4 <li><a>Обнаружение объектов на изображении с помощью моделей YOLOv5 и YOLOv8</a></li>
5 <li><a>10 лучших инструментов управления тестированием в 2024 году</a></li>
5 <li><a>10 лучших инструментов управления тестированием в 2024 году</a></li>
6 <li><a>Актуальны ли 14 принципов управления из книги Эдвардса Деминга "Выход из кризиса" 1982 года?</a></li>
6 <li><a>Актуальны ли 14 принципов управления из книги Эдвардса Деминга "Выход из кризиса" 1982 года?</a></li>
7 <li><a>Стартер пак в C: 3 полезные библиотеки для начинающих. Часть 1</a></li>
7 <li><a>Стартер пак в C: 3 полезные библиотеки для начинающих. Часть 1</a></li>
8 <li><a>Создание простейшего back-end на Node.js с использованием PostgreSQL</a></li>
8 <li><a>Создание простейшего back-end на Node.js с использованием PostgreSQL</a></li>
9 <li><a>Каноничный TDD</a></li>
9 <li><a>Каноничный TDD</a></li>
10 <li><a>Мой ТОП-5 лучших CSS-in-JS решений</a></li>
10 <li><a>Мой ТОП-5 лучших CSS-in-JS решений</a></li>
11 <li><a>Как работают изоляты в Dart?</a></li>
11 <li><a>Как работают изоляты в Dart?</a></li>
12 <li><a>Автоматизируем тестирование с помощью Lettuce</a></li>
12 <li><a>Автоматизируем тестирование с помощью Lettuce</a></li>
13 <li><a>Реверсинг приложений под Android. Ищем уязвимости</a></li>
13 <li><a>Реверсинг приложений под Android. Ищем уязвимости</a></li>
14 <li><a>TypeScript + React: путь к идеально типизированному коду</a></li>
14 <li><a>TypeScript + React: путь к идеально типизированному коду</a></li>
15 <li><a>Кратко про сетевые протоколы в Golang: TCP, QUIC и UDP</a></li>
15 <li><a>Кратко про сетевые протоколы в Golang: TCP, QUIC и UDP</a></li>
16 <li><a>Как синхронизировать потоки в Java</a></li>
16 <li><a>Как синхронизировать потоки в Java</a></li>
17 <li><a>Разгоняем C++ с кастомными аллокаторами</a></li>
17 <li><a>Разгоняем C++ с кастомными аллокаторами</a></li>
18 </ul><h2>Методы формализации требований: Use Case vs User Story</h2>
18 </ul><h2>Методы формализации требований: Use Case vs User Story</h2>
19 <p>Статья посвящена методам формализации требований: <strong>Use Case</strong> и <strong>User Story.</strong> Мы рассмотрим оба метода, сравним их преимущества и недостатки. А также рассмотрим, когда и при каких ситуациях использовать каждый из них.</p>
19 <p>Статья посвящена методам формализации требований: <strong>Use Case</strong> и <strong>User Story.</strong> Мы рассмотрим оба метода, сравним их преимущества и недостатки. А также рассмотрим, когда и при каких ситуациях использовать каждый из них.</p>
20 <p><a><strong>Читать далее</strong></a></p>
20 <p><a><strong>Читать далее</strong></a></p>
21 <h2>Всё что нужно знать про области видимости в Python</h2>
21 <h2>Всё что нужно знать про области видимости в Python</h2>
22 <p>Область видимости - это часть программы, в которой можно обращаться к определённой переменной или функции. В Python области видимости определяют, где и как можно использовать переменные.</p>
22 <p>Область видимости - это часть программы, в которой можно обращаться к определённой переменной или функции. В Python области видимости определяют, где и как можно использовать переменные.</p>
23 <p>Понимание областей видимости помогает избежать очень серьезных проблем. Например, случайное переопределение глобальных переменных внутри функций или использование переменных до их объявления могут привести к трудноуловимым багам.</p>
23 <p>Понимание областей видимости помогает избежать очень серьезных проблем. Например, случайное переопределение глобальных переменных внутри функций или использование переменных до их объявления могут привести к трудноуловимым багам.</p>
24 <p>Для определения последовательности, в которой Python ищет значение переменной, используется правило <strong>LEGB</strong>. Это правило представляет собой порядок поиска переменных в следующих областях видимости: <strong>Local</strong> (локальная), <strong>Enclosing</strong> (вложенная), <strong>Global</strong> (глобальная) и <strong>Built-in</strong> (встроенная).</p>
24 <p>Для определения последовательности, в которой Python ищет значение переменной, используется правило <strong>LEGB</strong>. Это правило представляет собой порядок поиска переменных в следующих областях видимости: <strong>Local</strong> (локальная), <strong>Enclosing</strong> (вложенная), <strong>Global</strong> (глобальная) и <strong>Built-in</strong> (встроенная).</p>
25 <p><a><strong>Читать далее</strong></a></p>
25 <p><a><strong>Читать далее</strong></a></p>
26 <h2>Правда ли, что разработчики не могут быть хорошими тестировщиками?</h2>
26 <h2>Правда ли, что разработчики не могут быть хорошими тестировщиками?</h2>
27 <p>Тестирование - это процесс оценки программного приложения, а тестировщики - это профессионалы, которые участвуют в этом процессе. Они решают множество задач: пишут тест-кейсы, сообщают о найденных багах, настраивают среду, работают с требованиями и так далее. По данным исследования, рынок тестирования программного обеспечения уже превысил 40 миллиардов долларов США и, как ожидается, к 2027 году вырастет ещё на 7%. Тестировщики должны знать языки программирования, инструменты управления тестированием, инструменты автоматизации тестирования, обладать навыками управления проектами и многими другими навыками. </p>
27 <p>Тестирование - это процесс оценки программного приложения, а тестировщики - это профессионалы, которые участвуют в этом процессе. Они решают множество задач: пишут тест-кейсы, сообщают о найденных багах, настраивают среду, работают с требованиями и так далее. По данным исследования, рынок тестирования программного обеспечения уже превысил 40 миллиардов долларов США и, как ожидается, к 2027 году вырастет ещё на 7%. Тестировщики должны знать языки программирования, инструменты управления тестированием, инструменты автоматизации тестирования, обладать навыками управления проектами и многими другими навыками. </p>
28 <p>Теперь давайте обсудим, почему тестировщики нужны? Почему разработчики не могут сами тестировать свой код? Ответ на этот вопрос аналогичен тому, почему студенты не проверяют и не оценивают свои ответы на экзаменах самостоятельно. В этом случае вопроса "почему" не возникает, ведь студенты не смогут самостоятельно оценить свои ошибки. Точно так же и разработчики не могут найти ошибки и просчёты, которые они могли допустить. В этой статье поговорим на эту тему более подробно. </p>
28 <p>Теперь давайте обсудим, почему тестировщики нужны? Почему разработчики не могут сами тестировать свой код? Ответ на этот вопрос аналогичен тому, почему студенты не проверяют и не оценивают свои ответы на экзаменах самостоятельно. В этом случае вопроса "почему" не возникает, ведь студенты не смогут самостоятельно оценить свои ошибки. Точно так же и разработчики не могут найти ошибки и просчёты, которые они могли допустить. В этой статье поговорим на эту тему более подробно. </p>
29 <p><a><strong>Читать далее</strong></a></p>
29 <p><a><strong>Читать далее</strong></a></p>
30 <h2>Обнаружение объектов на изображении с помощью моделей YOLOv5 и YOLOv8</h2>
30 <h2>Обнаружение объектов на изображении с помощью моделей YOLOv5 и YOLOv8</h2>
31 <p>Обнаружение объектов является достаточно популярной задачей компьютерного зрения, которая включает в себя идентификацию и обнаружение объектов на изображениях или видео. Данная задача является частью многих приложений, например, таких как беспилотные автомобили, робототехника, видеонаблюдение и т. д. За прошедшие годы разработано множество алгоритмов и методов для поиска объектов на изображениях и их положениях. Наилучшее качество выполнения таких задач достигается при использовании сверточных нейронных сетей.</p>
31 <p>Обнаружение объектов является достаточно популярной задачей компьютерного зрения, которая включает в себя идентификацию и обнаружение объектов на изображениях или видео. Данная задача является частью многих приложений, например, таких как беспилотные автомобили, робототехника, видеонаблюдение и т. д. За прошедшие годы разработано множество алгоритмов и методов для поиска объектов на изображениях и их положениях. Наилучшее качество выполнения таких задач достигается при использовании сверточных нейронных сетей.</p>
32 <p>Одной из самых популярных архитектур нейронных сетей для таких задач, является YOLO (you only look once), созданная в 2015 году. С тех пор появилось довольно много версий данных алгоритмов. Последние выпуски сети предназначены для таких задач как распознавание, обнаружение и сегментация изображений. </p>
32 <p>Одной из самых популярных архитектур нейронных сетей для таких задач, является YOLO (you only look once), созданная в 2015 году. С тех пор появилось довольно много версий данных алгоритмов. Последние выпуски сети предназначены для таких задач как распознавание, обнаружение и сегментация изображений. </p>
33 <p>Мы будем рассматривать архитектуру YOLO только для задачи обнаружения объектов на изображении. В данном случае цель алгоритма - предсказать класс объекта и нарисовать ограничивающую рамку, которая определяет местоположение объекта на входном изображении.</p>
33 <p>Мы будем рассматривать архитектуру YOLO только для задачи обнаружения объектов на изображении. В данном случае цель алгоритма - предсказать класс объекта и нарисовать ограничивающую рамку, которая определяет местоположение объекта на входном изображении.</p>
34 <p><a><strong>Читать далее</strong></a></p>
34 <p><a><strong>Читать далее</strong></a></p>
35 <h2>10 лучших инструментов управления тестированием в 2024 году</h2>
35 <h2>10 лучших инструментов управления тестированием в 2024 году</h2>
36 <p>Инструментов управления тестированием существует большое множество, и понять, какой из них подходит для конкретного проекта, бывает довольно сложно. Будучи руководителем QA-отдела, я протестировал, проанализировал и оценил самые популярные инструменты управления тестированием и составил спиок лучших из них:</p>
36 <p>Инструментов управления тестированием существует большое множество, и понять, какой из них подходит для конкретного проекта, бывает довольно сложно. Будучи руководителем QA-отдела, я протестировал, проанализировал и оценил самые популярные инструменты управления тестированием и составил спиок лучших из них:</p>
37 <ul><li>PractiTest</li>
37 <ul><li>PractiTest</li>
38 <li>Tuskr</li>
38 <li>Tuskr</li>
39 <li>TestRail</li>
39 <li>TestRail</li>
40 <li>Tricentis qTest</li>
40 <li>Tricentis qTest</li>
41 <li>Tricentis Test Management</li>
41 <li>Tricentis Test Management</li>
42 <li>Xray</li>
42 <li>Xray</li>
43 <li>Kualitee</li>
43 <li>Kualitee</li>
44 <li>TestMonitor</li>
44 <li>TestMonitor</li>
45 <li>Testiny</li>
45 <li>Testiny</li>
46 <li>aqua ALM</li>
46 <li>aqua ALM</li>
47 </ul><p>Подробнее о каждом из инструментов читайте в статье.</p>
47 </ul><p>Подробнее о каждом из инструментов читайте в статье.</p>
48 <p><a><strong>Перейти к подборке</strong></a></p>
48 <p><a><strong>Перейти к подборке</strong></a></p>
49 <h2>Актуальны ли 14 принципов управления из книги Эдвардса Деминга "Выход из кризиса" 1982 года?</h2>
49 <h2>Актуальны ли 14 принципов управления из книги Эдвардса Деминга "Выход из кризиса" 1982 года?</h2>
50 <p>Думаю, что актуальны. Они отражают главные составляющие успешной системы управления, которую отстаивал Эдвардс Деминг (всемирно известный ученый, автор многочисленных работ в области менеджмента, управления качеством и эффективностью). Вот эти 14 принципов, позволяющих заметно повысить эффективность любой организации:</p>
50 <p>Думаю, что актуальны. Они отражают главные составляющие успешной системы управления, которую отстаивал Эдвардс Деминг (всемирно известный ученый, автор многочисленных работ в области менеджмента, управления качеством и эффективностью). Вот эти 14 принципов, позволяющих заметно повысить эффективность любой организации:</p>
51 <ol><li>Создавайте постоянную цель по улучшению продуктов и услуг, чтобы оставаться конкурентоспособными и обеспечить рабочие места.</li>
51 <ol><li>Создавайте постоянную цель по улучшению продуктов и услуг, чтобы оставаться конкурентоспособными и обеспечить рабочие места.</li>
52 <li>Усваивайте новую философию.</li>
52 <li>Усваивайте новую философию.</li>
53 <li>Избавляйтесь от зависимости от проверок для достижения качества. Устраните необходимость в массовых проверках, изначально заложив качество в продукт.</li>
53 <li>Избавляйтесь от зависимости от проверок для достижения качества. Устраните необходимость в массовых проверках, изначально заложив качество в продукт.</li>
54 <li>Прекратите практику заключения контрактов исключительно на основе стоимости</li>
54 <li>Прекратите практику заключения контрактов исключительно на основе стоимости</li>
55 <li>Постоянно и непрерывно совершенствуйте систему производства и обслуживания, чтобы повысить качество и производительность, а значит, постоянно снижать затраты.</li>
55 <li>Постоянно и непрерывно совершенствуйте систему производства и обслуживания, чтобы повысить качество и производительность, а значит, постоянно снижать затраты.</li>
56 <li>Стройте систему обучения без отрыва от выполнения рабочих задач.</li>
56 <li>Стройте систему обучения без отрыва от выполнения рабочих задач.</li>
57 <li>Развивайте лидерство.</li>
57 <li>Развивайте лидерство.</li>
58 <li>Исключите страх, чтобы каждый мог эффективно работать на благо компании.</li>
58 <li>Исключите страх, чтобы каждый мог эффективно работать на благо компании.</li>
59 <li>Устраняйте барьеры между отделами.</li>
59 <li>Устраняйте барьеры между отделами.</li>
60 <li>Откажитесь от слоганов, призывов и целей для сотрудников, требующих сведения к нулю ошибок и нового уровня производительности.</li>
60 <li>Откажитесь от слоганов, призывов и целей для сотрудников, требующих сведения к нулю ошибок и нового уровня производительности.</li>
61 <li>(часть A) Отмените производственные стандарты (квоты) на рабочих местах. Замените их лидерством. (часть B) Откажитесь от управления по целям. Откажитесь от управления по цифрам, числовым целям. Замените лидерством.</li>
61 <li>(часть A) Отмените производственные стандарты (квоты) на рабочих местах. Замените их лидерством. (часть B) Откажитесь от управления по целям. Откажитесь от управления по цифрам, числовым целям. Замените лидерством.</li>
62 <li>(часть А) Устраните барьеры, которые лишают работника с почасовой оплатой труда права на гордость за качество своей работы. (часть B) Устраните барьеры, лишающие людей, занимающих руководящие и инженерные должности, права на гордость за качество работы.</li>
62 <li>(часть А) Устраните барьеры, которые лишают работника с почасовой оплатой труда права на гордость за качество своей работы. (часть B) Устраните барьеры, лишающие людей, занимающих руководящие и инженерные должности, права на гордость за качество работы.</li>
63 <li>Разработайте активную программу обучения и самосовершенствования.</li>
63 <li>Разработайте активную программу обучения и самосовершенствования.</li>
64 <li>Привлекайте всех сотрудников компании к работе по проведению преобразований. Трансформация - это работа каждого.</li>
64 <li>Привлекайте всех сотрудников компании к работе по проведению преобразований. Трансформация - это работа каждого.</li>
65 </ol><p>В статье рассмотрим каждый из этих принципов подробнее.</p>
65 </ol><p>В статье рассмотрим каждый из этих принципов подробнее.</p>
66 <p><a><strong>Читать далее</strong></a></p>
66 <p><a><strong>Читать далее</strong></a></p>
67 <h2>Стартер пак в C: 3 полезные библиотеки для начинающих. Часть 1</h2>
67 <h2>Стартер пак в C: 3 полезные библиотеки для начинающих. Часть 1</h2>
68 <p>Если вы только начинаете свой путь в C, то наверняка уже знаете о том, насколько важны библиотеки. Они облегчают жизнь и позволяют сосредоточиться на решении задач, а не на создании всего с нуля. В статье расскажем о трех полезных библиотек на C, которые станут отличными прикладными помощниками:</p>
68 <p>Если вы только начинаете свой путь в C, то наверняка уже знаете о том, насколько важны библиотеки. Они облегчают жизнь и позволяют сосредоточиться на решении задач, а не на создании всего с нуля. В статье расскажем о трех полезных библиотек на C, которые станут отличными прикладными помощниками:</p>
69 <ul><li>GNU Scientific Library (GSL)</li>
69 <ul><li>GNU Scientific Library (GSL)</li>
70 <li>SQLite</li>
70 <li>SQLite</li>
71 <li>SDL</li>
71 <li>SDL</li>
72 </ul><p><a><strong>Перейти к статье</strong></a></p>
72 </ul><p><a><strong>Перейти к статье</strong></a></p>
73 <h2>Создание простейшего back-end на Node.js с использованием PostgreSQL</h2>
73 <h2>Создание простейшего back-end на Node.js с использованием PostgreSQL</h2>
74 <p>В этой статье мы продемонстрируем как создавать back-end приложения на Node.js c PostqreSQL. В качестве примера создадим простейший back-end на Node.js с использованием PostgreSQL.</p>
74 <p>В этой статье мы продемонстрируем как создавать back-end приложения на Node.js c PostqreSQL. В качестве примера создадим простейший back-end на Node.js с использованием PostgreSQL.</p>
75 <p>Почему именно Node.js и PostgreSQL? Node.js имеет хорошую скорость и асинхронность, а PostgreSQL, в свою очередь, является мощной и надежной СУБД. Вместе они создают идеальный тандем для создания качественных приложений.</p>
75 <p>Почему именно Node.js и PostgreSQL? Node.js имеет хорошую скорость и асинхронность, а PostgreSQL, в свою очередь, является мощной и надежной СУБД. Вместе они создают идеальный тандем для создания качественных приложений.</p>
76 <p><a><strong>Читать далее</strong></a></p>
76 <p><a><strong>Читать далее</strong></a></p>
77 <h2>Каноничный TDD</h2>
77 <h2>Каноничный TDD</h2>
78 <p>В этой статье я привожу вредные советы относительно того, как нужно делать TDD. Берите ответственность за качество своей работы на себя так, как вам удобно, если только вы действительно берёте на себя эту ответственность.<a></a></p>
78 <p>В этой статье я привожу вредные советы относительно того, как нужно делать TDD. Берите ответственность за качество своей работы на себя так, как вам удобно, если только вы действительно берёте на себя эту ответственность.<a></a></p>
79 <p>Этот текст - мой ответ на комментарии в духе "TDD - лажа, потому что &lt;что-то, что не TDD&gt;", частый пример: "… потому что я ненавижу писать все тесты до того, как напишу код". Если вы что-то критикуете - критикуйте по делу.</p>
79 <p>Этот текст - мой ответ на комментарии в духе "TDD - лажа, потому что &lt;что-то, что не TDD&gt;", частый пример: "… потому что я ненавижу писать все тесты до того, как напишу код". Если вы что-то критикуете - критикуйте по делу.</p>
80 <ol><li>Напишите список тестовых сценариев, которые вы хотите покрыть.</li>
80 <ol><li>Напишите список тестовых сценариев, которые вы хотите покрыть.</li>
81 <li>Превратите ровно один пункт из списка в реальный, конкретный, выполнимый тест.</li>
81 <li>Превратите ровно один пункт из списка в реальный, конкретный, выполнимый тест.</li>
82 <li>Измените код так, чтобы тест (и все предыдущие тесты) прошёл (добавляя пункты в список по мере их обнаружения).</li>
82 <li>Измените код так, чтобы тест (и все предыдущие тесты) прошёл (добавляя пункты в список по мере их обнаружения).</li>
83 <li>По желанию проводите рефакторинг, чтобы улучшить план реализации.</li>
83 <li>По желанию проводите рефакторинг, чтобы улучшить план реализации.</li>
84 <li>Возвращайтесь к пункту #2, пока список не закончится.</li>
84 <li>Возвращайтесь к пункту #2, пока список не закончится.</li>
85 </ol><p><a><strong>Читать продолжение</strong></a></p>
85 </ol><p><a><strong>Читать продолжение</strong></a></p>
86 <h2>Мой ТОП-5 лучших CSS-in-JS решений</h2>
86 <h2>Мой ТОП-5 лучших CSS-in-JS решений</h2>
87 <p>В одном из проектов мне нужно было создать сложную админку для крупного клиента. Интерфейс требовал большо количества интерактивностей, а также поддержку различных тем и динамических стилей. Именно тогда я решил обратить свой взгляд на CSS‑in‑JS библиотеки, и это для меня стало большим открытием.</p>
87 <p>В одном из проектов мне нужно было создать сложную админку для крупного клиента. Интерфейс требовал большо количества интерактивностей, а также поддержку различных тем и динамических стилей. Именно тогда я решил обратить свой взгляд на CSS‑in‑JS библиотеки, и это для меня стало большим открытием.</p>
88 <p>Ведь стилизация компонентов - основа для создания интуитивно понятных и эстетически приятных интерфейсов. И иногда традиционные методы стилизации, такие как CSS‑файлы или препроцессоры, имеют свои ограничения и могут усложнять сам процесс разработки, чего мы точно не хотим.</p>
88 <p>Ведь стилизация компонентов - основа для создания интуитивно понятных и эстетически приятных интерфейсов. И иногда традиционные методы стилизации, такие как CSS‑файлы или препроцессоры, имеют свои ограничения и могут усложнять сам процесс разработки, чего мы точно не хотим.</p>
89 <p>Здесь вот и приходят на помощь решения CSS‑in‑JS, объединяющие фичи JS и CSS. CSS‑in‑JS - это подход к стилизации, который позволяет писать стили прямо в JavaScript‑коде. Преимущества такого подхода:Linaria</p>
89 <p>Здесь вот и приходят на помощь решения CSS‑in‑JS, объединяющие фичи JS и CSS. CSS‑in‑JS - это подход к стилизации, который позволяет писать стили прямо в JavaScript‑коде. Преимущества такого подхода:Linaria</p>
90 <ol><li>Изоляция стилей: компоненты получают свои собственные стили.</li>
90 <ol><li>Изоляция стилей: компоненты получают свои собственные стили.</li>
91 <li>Динамические стили: легко применять стили в зависимости от состояния компонента или пропсов.</li>
91 <li>Динамические стили: легко применять стили в зависимости от состояния компонента или пропсов.</li>
92 <li>Поддержка тем: удобное управление темами и их переключение на лету.</li>
92 <li>Поддержка тем: удобное управление темами и их переключение на лету.</li>
93 <li>Интеграция с JavaScript.</li>
93 <li>Интеграция с JavaScript.</li>
94 </ol><p>В этой статье я хотел бы представить свой ТОП-5 лучших решений CSS‑in‑JS, которые я использовал:</p>
94 </ol><p>В этой статье я хотел бы представить свой ТОП-5 лучших решений CSS‑in‑JS, которые я использовал:</p>
95 <ul><li>Styled Components</li>
95 <ul><li>Styled Components</li>
96 <li>Linaria</li>
96 <li>Linaria</li>
97 <li>Emotion</li>
97 <li>Emotion</li>
98 <li>Stitches</li>
98 <li>Stitches</li>
99 <li>Vanilla-Extract</li>
99 <li>Vanilla-Extract</li>
100 </ul><p><a><strong>Узнать подробнее</strong></a></p>
100 </ul><p><a><strong>Узнать подробнее</strong></a></p>
101 <h2>Как работают изоляты в Dart?</h2>
101 <h2>Как работают изоляты в Dart?</h2>
102 <p>При разработке Dart изначально была заложена идея полной независимости динамической памяти (objectstore / heap), снимка кода и event loop между изолятами. Одним из сценариев использования такой изоляции является разделение сервисного процесса виртуальной машины (vm-service, используется в том числе в DevTools) и основного кода, но также API для изолятов позволяет создавать собственные независимые процессы для выполнения кода с автономной памятью.</p>
102 <p>При разработке Dart изначально была заложена идея полной независимости динамической памяти (objectstore / heap), снимка кода и event loop между изолятами. Одним из сценариев использования такой изоляции является разделение сервисного процесса виртуальной машины (vm-service, используется в том числе в DevTools) и основного кода, но также API для изолятов позволяет создавать собственные независимые процессы для выполнения кода с автономной памятью.</p>
103 <p>Но как на самом деле работают изоляты сейчас, и почему порты на самом деле существуют в модели "плоского мира"? Попробуем разобраться в этой статье.</p>
103 <p>Но как на самом деле работают изоляты сейчас, и почему порты на самом деле существуют в модели "плоского мира"? Попробуем разобраться в этой статье.</p>
104 <p><a><strong>Перейти к статье</strong></a></p>
104 <p><a><strong>Перейти к статье</strong></a></p>
105 <h2>Автоматизируем тестирование с помощью Lettuce</h2>
105 <h2>Автоматизируем тестирование с помощью Lettuce</h2>
106 <p>Для автоматизации проведения тестов QA существует множество различных инструментов, они предлагают разный функционал и обладают различными возможностями.</p>
106 <p>Для автоматизации проведения тестов QA существует множество различных инструментов, они предлагают разный функционал и обладают различными возможностями.</p>
107 <p>Lettuce - это инструмент тестирования на Python, который предоставляет высокоуровневый API для написания тестов. Он предоставляет понятный и простой интерфейс API для тестирования с такими функциями, как автоматическое редактирование, шаблоны тестов и многое другое. Lettuce также построен на базе платформы Behavior Driven Development (BDD), которая помогает упростить разработку тестов, предоставляя клиентам общие утверждения BDD, такие как @given или @when.</p>
107 <p>Lettuce - это инструмент тестирования на Python, который предоставляет высокоуровневый API для написания тестов. Он предоставляет понятный и простой интерфейс API для тестирования с такими функциями, как автоматическое редактирование, шаблоны тестов и многое другое. Lettuce также построен на базе платформы Behavior Driven Development (BDD), которая помогает упростить разработку тестов, предоставляя клиентам общие утверждения BDD, такие как @given или @when.</p>
108 <p><a><strong>Читать далее</strong></a></p>
108 <p><a><strong>Читать далее</strong></a></p>
109 <h2>Реверсинг приложений под Android. Ищем уязвимости</h2>
109 <h2>Реверсинг приложений под Android. Ищем уязвимости</h2>
110 <p>В этой мы продолжим изучать тему реверсинга приложений для Android. В предыдущих статьях мы рассмотрели основные инструменты, которые нам понадобятся и поговорили о том, как можно анализировать APK файлы на подозрительную активность. Сегодня мы посмотрим, как можно найти уязвимости в приложении для Android.</p>
110 <p>В этой мы продолжим изучать тему реверсинга приложений для Android. В предыдущих статьях мы рассмотрели основные инструменты, которые нам понадобятся и поговорили о том, как можно анализировать APK файлы на подозрительную активность. Сегодня мы посмотрим, как можно найти уязвимости в приложении для Android.</p>
111 <p><a><strong>Читать далее</strong></a></p>
111 <p><a><strong>Читать далее</strong></a></p>
112 <h2>TypeScript + React: путь к идеально типизированному коду</h2>
112 <h2>TypeScript + React: путь к идеально типизированному коду</h2>
113 <p>Многие частенько сталкиваются с проблемой поддержания типовой безопасности в React-проекте. Код разрастается, и управление типами становится всё сложнее. Ошибки, вызванные неправильной типизацией, приводят к крашам и длительным отладкам. Тогда приходит время внедрения TypeScript!</p>
113 <p>Многие частенько сталкиваются с проблемой поддержания типовой безопасности в React-проекте. Код разрастается, и управление типами становится всё сложнее. Ошибки, вызванные неправильной типизацией, приводят к крашам и длительным отладкам. Тогда приходит время внедрения TypeScript!</p>
114 <p>В статье рассмотрим как TypeScript может помочь решить проблемы с типизацией и сделать React-код идеально типизированным.</p>
114 <p>В статье рассмотрим как TypeScript может помочь решить проблемы с типизацией и сделать React-код идеально типизированным.</p>
115 <p><a><strong>Читать далее</strong></a></p>
115 <p><a><strong>Читать далее</strong></a></p>
116 <h2>Кратко про сетевые протоколы в Golang: TCP, QUIC и UDP</h2>
116 <h2>Кратко про сетевые протоколы в Golang: TCP, QUIC и UDP</h2>
117 <p>В этой статье мы кратко рассмотрим то, как реализовать такие протколы, как TCP, UDP и QUIC в Golang.</p>
117 <p>В этой статье мы кратко рассмотрим то, как реализовать такие протколы, как TCP, UDP и QUIC в Golang.</p>
118 <p><strong>TCP</strong>- это очень надежный, ориентированный на соединение протокол. Он обеспечивает упорядоченную передачу данных, автоматом исправляя ошибки. Основные черты:</p>
118 <p><strong>TCP</strong>- это очень надежный, ориентированный на соединение протокол. Он обеспечивает упорядоченную передачу данных, автоматом исправляя ошибки. Основные черты:</p>
119 <ul><li>Надежность: подтверждения и повторная отправка потерянных пакетов.</li>
119 <ul><li>Надежность: подтверждения и повторная отправка потерянных пакетов.</li>
120 <li>Упорядоченность: передача данных в том порядке, в котором они были отправлены.</li>
120 <li>Упорядоченность: передача данных в том порядке, в котором они были отправлены.</li>
121 <li>Контроль перегрузки: предотвращение коллапса сети за счет контроля скорости передачи данных.</li>
121 <li>Контроль перегрузки: предотвращение коллапса сети за счет контроля скорости передачи данных.</li>
122 </ul><p><strong>UDP</strong>- это простой протокол без установления соединения, который не гарантирует доставку, порядок или интегральность данных. Но зато, он дает минимум задержки. Основные черты:</p>
122 </ul><p><strong>UDP</strong>- это простой протокол без установления соединения, который не гарантирует доставку, порядок или интегральность данных. Но зато, он дает минимум задержки. Основные черты:</p>
123 <ul><li>Отсутствие процесса установления соединения уменьшает задержку.</li>
123 <ul><li>Отсутствие процесса установления соединения уменьшает задержку.</li>
124 <li>Меньше накладных расходов, больше производительности.</li>
124 <li>Меньше накладных расходов, больше производительности.</li>
125 </ul><p><strong>QUIC</strong>- это уже современный протокол, разработанный Google и стандартизированный IETF, который стремится улучшить производительность соединений, предоставляемых TCP, с добавлением функций безопасности, аналогичных TLS/SSL. QUIC работает поверх UDP и предназначен для снижения задержек соединения, поддерживает мультиплексирование потоков без взаимного блокирования и управляет потерей пакетов более лучше, чем TCP. Основные черты:</p>
125 </ul><p><strong>QUIC</strong>- это уже современный протокол, разработанный Google и стандартизированный IETF, который стремится улучшить производительность соединений, предоставляемых TCP, с добавлением функций безопасности, аналогичных TLS/SSL. QUIC работает поверх UDP и предназначен для снижения задержек соединения, поддерживает мультиплексирование потоков без взаимного блокирования и управляет потерей пакетов более лучше, чем TCP. Основные черты:</p>
126 <ul><li>Уменьшение задержек:уменьшает задержку соединения за счет использования 0-RTT и 1-RTT рукопожатий.</li>
126 <ul><li>Уменьшение задержек:уменьшает задержку соединения за счет использования 0-RTT и 1-RTT рукопожатий.</li>
127 <li>Безопасность: включает встроенное шифрование на уровне соединений.</li>
127 <li>Безопасность: включает встроенное шифрование на уровне соединений.</li>
128 <li>Мультиплексирование: позволяет нескольким потокам данных обмениваться данными в рамках одного соединения без взаимной блокировки.</li>
128 <li>Мультиплексирование: позволяет нескольким потокам данных обмениваться данными в рамках одного соединения без взаимной блокировки.</li>
129 </ul><p><a><strong>Читать подробнее</strong></a></p>
129 </ul><p><a><strong>Читать подробнее</strong></a></p>
130 <h2>Как синхронизировать потоки в Java</h2>
130 <h2>Как синхронизировать потоки в Java</h2>
131 <p>Многопоточность - это не просто возможность приложения выполнять несколько задач одновременно, это его способность делать это эффективно и безопасно. В Java многопоточность неотделима от синхронизации, ведь именно она помогает управлять состоянием разделяемых ресурсов между потоками.</p>
131 <p>Многопоточность - это не просто возможность приложения выполнять несколько задач одновременно, это его способность делать это эффективно и безопасно. В Java многопоточность неотделима от синхронизации, ведь именно она помогает управлять состоянием разделяемых ресурсов между потоками.</p>
132 <p>Всё начинается с потребности в быстродействии и масштабируемости. C несколькими потоками можно обрабатывать больше операций одновременно.</p>
132 <p>Всё начинается с потребности в быстродействии и масштабируемости. C несколькими потоками можно обрабатывать больше операций одновременно.</p>
133 <p>В этой статье мы рассмотрим, как синхронизировать потоки в Java.</p>
133 <p>В этой статье мы рассмотрим, как синхронизировать потоки в Java.</p>
134 <p><a><strong>Читать далее</strong></a></p>
134 <p><a><strong>Читать далее</strong></a></p>
135 <h2>Разгоняем C++ с кастомными аллокаторами</h2>
135 <h2>Разгоняем C++ с кастомными аллокаторами</h2>
136 <p>В этой статье мы обратим свой взор на производительность в C++, и как ни странно, нашими главными героями станут не библиотеки или сложные алгоритмы, а казалось бы, простые аллокаторы. Но не просто аллокаторы, а кастомные, которые могут заметно ускорить работу приложений.</p>
136 <p>В этой статье мы обратим свой взор на производительность в C++, и как ни странно, нашими главными героями станут не библиотеки или сложные алгоритмы, а казалось бы, простые аллокаторы. Но не просто аллокаторы, а кастомные, которые могут заметно ускорить работу приложений.</p>
137 <p><a><strong>Читать далее</strong></a></p>
137 <p><a><strong>Читать далее</strong></a></p>
138 <a></a><p><em>Чтобы не пропускать свежие статьи в блоге OTUS на Хабр,<a><strong>подписывайтесь на страницу блога.</strong></a></em></p>
138 <a></a><p><em>Чтобы не пропускать свежие статьи в блоге OTUS на Хабр,<a><strong>подписывайтесь на страницу блога.</strong></a></em></p>
139  
139