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 - лажа, потому что <что-то, что не TDD>", частый пример: "… потому что я ненавижу писать все тесты до того, как напишу код". Если вы что-то критикуете - критикуйте по делу.</p>
79
<p>Этот текст - мой ответ на комментарии в духе "TDD - лажа, потому что <что-то, что не TDD>", частый пример: "… потому что я ненавижу писать все тесты до того, как напишу код". Если вы что-то критикуете - критикуйте по делу.</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