All streams
Search
Write a publication
Pull to refresh
136
10.2

Редактор

Send message

Виртуальные файловые системы в Linux: зачем они нужны и как они работают? Часть 2

Reading time6 min
Views14K
Всем привет, делимся с вами второй частью публикации «Виртуальные файловые системы в Linux: зачем они нужны и как они работают?» Первую часть можно прочитать тут. Напомним, данная серия публикаций приурочена к запуску нового потока по курсу «Администратор Linux», который стартует уже совсем скоро.

Как наблюдать за VFS с помощью инструментов eBPF и bcc

Самый простой способ понять, как ядро оперирует файлами sysfs – это посмотреть за этим на практике, а самый простой способ понаблюдать за ARM64 – это использовать eBPF. eBPF (сокращение от Berkeley Packet Filter) состоит из виртуальной машины, запущенной в ядре, которую привилегированные пользователи могут запрашивать (query) из командной строки. Исходники ядра сообщают читателю, что может сделать ядро; запуск инструментов eBPF в загруженной системе показывает, что на самом деле делает ядро.

Читать дальше →

Расширение mypy с помощью плагинов

Reading time5 min
Views13K
Добрый день, друзья. А мы продолжаем наращивать интенсивность запуска новых курсов и уже сейчас рады сообщить о том, что в конце апреля стартуют занятия по курсу «Web-разработчик на Python». В связи с этим традиционно делимся переводом полезного материала. Начнём.

Известно, что Python – язык с динамической типизацией. Очень просто писать DSL-подобные фреймворки, которые трудно разобрать инструментами статичной проверки типа. Несмотря на это, с помощью последних функциональных новшеств mypy, таких как protocols и literal types, а также с базовой поддержкой метаклассов и поддержкой дескриптора, мы можем чаще получать точные типы, однако по прежнему трудно избежать ложных срабатываний и других негативных факторов. Чтобы решить эту проблему и избежать необходимости кастомизировать систему типов для каждого фреймворка, mypy поддерживает систему плагинов. Плагины — это модули в Python, которые обеспечивают обратные вызовы (plugin hooks), которые mypy вызовет при проверке типов классов и функций, взаимодействующих с библиотекой или фреймворком. Таким образом можно точнее выделить тип возвращаемой функции, который в противном случае выразить крайне трудно, либо автоматически сгенерировать некоторые методы класса, чтобы отразить эффекты декоратора. Чтобы узнать больше об архитектуре системы плагинов и увидеть полный список возможностей, ознакомьтесь с документацией.

Читать дальше →

Ценны ли данные вашей компании в эпоху ИИ?

Reading time4 min
Views2.3K
И снова здравствуйте! Сегодня мы продолжаем серию публикаций приуроченных к запуску курса «Big Data для менеджеров». Итак, начнем.

“ИИ близко”. Это то, что мы слышим с 2017 года и, скорее всего, продолжим слышать и дальше. Для устоявшихся компаний, которые не являются Google или Facebook, возникает естественный вопрос: что есть у нас, что позволит пережить этот переход?

По нашему опыту, ответ — «данные». Этой точки зрения придерживается и бизнес-пресса. Написаны сотни статей, где утверждается, что «данные — это новая нефть», подразумевая, что это топливо, которое будет стимулировать экономику ИИ.


Читать дальше →

Основы движков JavaScript: общие формы и Inline кэширование. Часть 2

Reading time3 min
Views9.1K
Всем привет! Курс «Безопасность информационных систем» стартует уже через 2 недели, поэтому сегодня мы хотим опубликовать вторую часть статьи, публикация которой приурочена к его запуску. Прочитать первую часть можно тут. Итак, начнем.

Inline Caches (ICs)

Основной идеей, которая стоит за формами, является концепция inline кэшей или ICs. Они являются ключевым компонентом быстрой работы JavaScript! Движки JavaScript используют ICs для запоминания информации о том, где найти свойства объектов, чтобы уменьшить количество затратных поисков.


Читать дальше →

Виртуальные файловые системы в Linux: зачем они нужны и как они работают? Часть 1

Reading time6 min
Views53K
Всем привет! Мы продолжаем запуски новых потоков по уже полюбившимся вам курсам и сейчас спешим сообщить о том, что у нас стартует новый набор по курсу «Администратор Linux», который запустится в конце апреля. К этому событию и будет приурочена новая публикация. С оригиналом материала можно ознакомиться тут.

Виртуальные файловые системы выполняют роль некой волшебной абстракции, которая позволяет философии Linux говорить, что «всё является файлом».



Что такое файловая система? Опираясь на слова одного из первых контрибьюторов и авторов Linux Робера Лава, «Файловая система – это иерархическое хранилище данных, собранное в соответствии с определенной структурой». Как бы то ни было, это определение в равной мере хорошо подходит для VFAT (Virtual File Allocation Table), Git и Cassandra (база данных NoSQL). Так что именно определяет такое понятие, как «файловая система»?
Читать дальше →

Основы движков JavaScript: общие формы и Inline кэширование. Часть 1

Reading time9 min
Views21K
Привет, друзья. В конце апреля мы запускаем новый курс «Безопасность информационных систем». И уже сейчас хотим поделиться с вами переводом статьи, которая непременно будет очень полезной для курса. С оригиналом статьи можно ознакомиться тут.

В статье описаны ключевые основы, они являются общими для всех движков JavaScript, а не только для V8, над которым работают авторы движка (Бенедикт и Матиас). Как JavaScript разработчик могу сказать, что более глубокое понимание того, как работает движок JavaScript поможет разобраться в том, как писать эффективный код.


Читать дальше →

Простой инструмент, чтобы начать использовать ИИ для принятия решений

Reading time7 min
Views4.6K
Всем привет! Начнём месяц с довольно легкого, но полезного материала, публикация которого приурочена к началу запуска курса "Big Data для менеджеров", который стартует уже в середине апреля. Итак, начнём.

Существует огромное количество авторитетных мнений на тему влияния искусственного интеллекта (ИИ) на бизнес ближайшего будущего. Но на тему того, как именно компании могут начать им пользоваться, сказано гораздо меньше. Наше исследование и книга начинаются с разбора ИИ на его простейшие составляющие. Мы предлагаем способ осуществить этот первый шаг.


Читать дальше →

Распределение памяти в JVM

Reading time5 min
Views39K
Всем привет! Перевод сегодняшнего материала мы хотим приурочить к запуску нового потока по курсу «Разработчик Java», который стартует уже завтра. Что ж начнём.

JVM может быть сложным зверем. К счастью, большая часть этой сложности скрыта под капотом, и мы, как разработчики приложений и ответственные за деплой, часто не должны об этом сильно беспокоиться. Хотя из-за роста популярности технологий развертывания приложений в контейнерах, стоит обратить внимание на распределение памяти в JVM.



Два вида памяти

JVM разделяет память на две основные категории: «кучу» (heap) и «не кучу» (non-heap). Куча — это часть памяти JVM, с которой разработчики наиболее знакомы. Здесь хранятся объекты, созданные приложением. Они остаются там до тех пор, пока не будут убраны сборщиком мусора. Как правило, размер кучи, которую использует приложение, изменяется в зависимости от текущей нагрузки.
Читать дальше →

JDK 9/JEP 280: конкатенация строк никогда больше не будет прежней

Reading time9 min
Views14K
И снова здравствуйте. Как мы уже писали, на следующей неделе стартует новая группа обучения по курсу «Разработчик Java», по устоявшейся традиции делимся с вами переводом интересного материала по теме.

Начиная с JDK 9 конкатенация строк претерпела значительные изменения.

JEP 280 («Indify String Concatenation») был реализован в рамках JDK 9 и, в соответствии с разделом «Summary»: «Изменяет статическую последовательность байт-кода конкатенации строк, сгенерированную javac, для использования вызовов invokedynamic к функциям библиотеки JDK». Влияние, которое это оказывает на конкатенацию строк в Java, легче всего заметить, посмотрев на javap-вывод классов, использующих конкатенацию строк, которые скомпилированы в JDK до JDK 9 и после JDK 9.


Читать дальше →

Как система типов улучшает ваш код на JavaScript

Reading time3 min
Views7.5K
Вот так не успеешь обернуться, а месяц уже стремится к своему завершению. Считанные дни остаются до запуска нового потока по курсу «Разработчик JavaScript», по традиции перед запуском курса делимся с вами переводом полезного материала.

Vanilla JavaScript не типизирован по своей натуре. Можно даже назвать его «умным», поскольку он способен вычислить, что является числом, а что строкой.

Это упрощает запуск JavaScript кода в браузере или при работе Node.js. Однако он уязвим для многочисленных ошибок во время исполнения (рантайм), которые могут испортить ваш пользовательский опыт использования.



Если с вами когда-либо случалось то, что будет описано далее, то вы только выиграете, если будете применять систему типов.
Читать дальше →

Лямбды: от C++11 до C++20. Часть 1

Reading time11 min
Views77K
Добрый день, друзья. Сегодня мы подготовили для вас перевод первой части статьи «Лямбды: от C++11 до C++20». Публикация данного материала приурочена к запуску курса «Разработчик C++», который стартует уже завтра.

Лямбда-выражения являются одним из наиболее мощных дополнений в C++11 и продолжают развиваться с каждым новым стандартом языка. В этой статье мы пройдемся по их истории и посмотрим на эволюцию этой важной части современного C++.



Вторая часть доступна по ссылке:
Lambdas: From C++11 to C++20, Part 2
Читать дальше →

Headless тестирование в браузере. Плюсы и минусы

Reading time5 min
Views18K
И снова здравствуйте. Данная публикация приурочена к запуску курса «Автоматизация веб-тестирования», который стартует уже на этой неделе. Приятного прочтения!

Что такое Headless тестирование?

Headless тестирование представляет собой запуск в браузере теста на работоспособность каких-либо составляющих UI без отображения этого самого UI. Такое тестирование запускает скрипты в браузере, но не запускает и не показывает сам по себе UI.



Почему вам может понадобиться использовать Headless-браузеры? У этого подхода есть множество плюсов и минусов. Использование headless браузера может быть не очень полезным для серфинга в сети, но для автоматизации задач и тестирования он незаменим.
Читать дальше →

Знакомство с Тестированием в Python. Ч. 3

Reading time7 min
Views19K
Друзья, у нас для вас отличные новости. Во-первых на улице наконец-то светит солнышко, а это значит, что весна начинает полноправно вступать в свои права. Вторая новость более профильная — уже 20 марта стартует первое занятие в новом потоке по курсу «Разработчик Python», в связи с этим мы публикуем заключительную часть статьи «Знакомство с Тестированием в Python», предыдущие части которой можно прочитать здесь и здесь.

Тестирование в Нескольких Средах

До сих пор вы проводили тесты для одной версии Python с помощью виртуальной среды с определенным набором зависимостей. Но всегда может возникнуть потребность проверить работу приложения на нескольких версиях Python или нескольких версиях пакета. Tox — приложение, автоматизирующее тестирование в нескольких средах.


Читать дальше →

Сравнение фреймворков для глубокого обучения: TensorFlow, PyTorch, Keras, MXNet, Microsoft Cognitive Toolkit, Caffe, etc

Reading time7 min
Views33K
Всем привет. В этот пятничный день делимся с вами первой публикацией посвященной запуску курса «Data Scientist». Приятного прочтения.

Великое множество организаций загорелось идеей использовать в своих решениях искусственный интеллект для расширения масштабов деятельности или развития своего старт-апа, однако нужно понимать одну важную вещь: выбранная технология разработки должна идти вкупе с хорошим фреймворком для глубокого обучения, особенно потому, что каждый фреймворк служит для какой-то своей отдельной цели. Поиск идеального тандема в этом случае – это необходимое условие для плавного и быстрого развития бизнеса и успешного развертывания проектов.



Следующий список фреймворков для глубокого обучения может стать подспорьем в процессе выбора подходящего средства для решения конкретных задач, с которыми вы сталкиваетесь в процессе работы над проектом. Вы сможете сравнить плюсы и минусы различных решений, оценить их пределы возможностей и узнать о лучших вариантах использования для каждого решения!
Читать дальше →

Что такое Strict Aliasing и почему нас должно это волновать? Часть 2

Reading time9 min
Views12K
(ИЛИ каламбур типизации, неопределенное поведение и выравнивание, о мой Бог!)

Друзья, до запуска нового потока по курсу «Разработчик С++», остается совсем немного времени. Пришло время опубликовать перевод второй части материала, в которой рассказывается о том, что такое каламбур типизации.

Что такое каламбур типизации?

Мы дошли до того момента, когда мы можем задаться вопросом, зачем нам вообще могут понадобиться псевдонимы? Обычно для реализации каламбуров типизации, т.к. зачастую используемые методы нарушают правила строгого алиасинга.



Иногда мы хотим обойти систему типов и интерпретировать объект как другой тип. Переинтерпретация сегмента памяти в качестве другого типа называется каламбуром типизации (type punning). Каламбуры типизации полезны для задач, которым требуется доступ к базовому представлению объекта для просмотра, транспортировки или манипулирования предоставленными данными. Типичные области, в которых мы можем встретить использование каламбуров типизации: компиляторы, сериализация, сетевой код и т.д.
Читать дальше →

Паттерны и анти-паттерны CI/CD. Часть 3

Reading time9 min
Views6.5K
И снова здравствуйте. Сегодня хотим поделиться с вами переводом третьей части статьи «Паттерны и анти-паттерны CI/CD», предыдущие части которой можно прочитать здесь и здесь. Напомним, данная серия публикаций приурочена к запуску нового потока по курсу «DevOps практики и инструменты», набор на который закроется уже в ближайшие дни.

1.3.5.1 Недостатки Сквозного Тестирования

“Любое преимущество от общения с настоящей системой затмевается необходимостью искоренять недетерминизм” Мартин Фаулер (Martin Fowler).

Сквозное Тестирование — практика, при которой большое число автоматизированных сквозных и ручных регрессионных тестов используются во время сборки вместе с малым количеством автоматизированных модульных и приемочных тестов. Соотношение тестов в Сквозном Тестировании можно визуализировать в виде Рожка Мороженого.



Сквозное Тестирование часто кажется привлекательным из-за субъективных преимуществ сквозных тестов:

  1. Сквозной тест максимизирует System Under Tests, что предполагает высокую степень покрытия тестами;
  2. Сквозной тест использует саму систему в качестве тестового клиента, что предполагает низкие затраты на тестовую инфраструктуру.
Читать дальше →

Способы тестирования программного обеспечения

Reading time6 min
Views45K
Всем привет! Уже на следующей неделе мы запускаем новый поток по курсу «Автоматизация веб-тестирования». Этому и будет посвящен сегодняшний материал.

В этой статье рассматриваются различные способы тестирования программного обеспечения, такие как модульное тестирование (unit testing), интеграционное тестирование (integration testing), функциональное тестирование (functional testing), приемочное тестирование (acceptance testing) и т.д.



Есть множество разных типов тестов, которые вы можете применить, чтобы убедиться, что изменения в вашем коде работают по сценарию. Не все типы тестирования идентичны, хотя здесь мы рассмотрим, насколько основные практики тестирования отличаются друг от друга.

Тестирование: ручное или автоматизированное?

Сначала надо понять различия между ручными и автоматизированными тестами. Ручное тестирование проводится непосредственно человеком, который нажимает на кнопочки в приложении или взаимодействует с программным обеспечением или API с необходимым инструментарием. Это достаточно затратно, так как это требует от тестировщика установки среды разработки и выполнения тестов вручную. Имеет место вероятность ошибки за счет человеческого фактора, например опечатки или пропуска шагов в тестовом сценарии.
Читать дальше →

Управление памятью в Python

Reading time10 min
Views17K
Всем привет! Вот и закончились длинные мартовские выходные. Первую послепраздничную публикацию мы хотим посвятить полюбившемуся многим курсу — «Разработчик Python», который стартует менее, чем через 2 недели. Поехали.

Содержание

  1. Память – пустая книга
  2. Управление памятью: от оборудования к программному обеспечению
  3. Базовая реализация Python
  4. Концепция глобальной блокировки интерпретатора (Global Interpreter Lock, GIL)
  5. Сборщик мусора
  6. Управление памятью в CPython:
    • Пулы
    • Блоки
    • Арены
  7. Заключение



Вы когда-нибудь задумывались как Python за кулисами обрабатывает ваши данные? Как ваши переменные хранятся в памяти? В какой момент они удаляются?
В этой статье мы углубимся во внутреннее устройство Python, чтобы понять, как происходит управление памятью.

Прочитав эту статью, вы:

  • Узнаете больше о низкоуровневых операциях, особенно касательно памяти.
  • Поймете, как Python абстрагирует низкоуровневые операции.
  • Узнаете об алгоритмах управления памятью в Python.

Знание внутреннего устройства Python даст лучшее понимание о принципах его поведении. Надеюсь, вы сможете взглянуть на Python с новой стороны. За кулисами происходит великое множество логических операций, чтобы ваша программа работала надлежащим образом.
Читать дальше →

Руководство по развертыванию моделей машинного обучения в рабочей среде в качестве API с помощью Flask

Reading time13 min
Views27K
Друзья, в конце марта мы запускаем новый поток по курсу «Data Scientist». И прямо сейчас начинаем делиться с вами полезным материалом по курсу.

Введение

Вспоминая ранний опыт своего увлечения машинным обучением (ML) могу сказать, что много усилий уходило на построение действительно хорошей модели. Я советовался с экспертами в этой области, чтобы понять, как улучшить свою модель, думал о необходимых функциях, пытался убедиться, что все предлагаемые ими советы учтены. Но все же я столкнулся с проблемой.

Как же внедрить модель в реальный проект? Идей на этот счет у меня не было. Вся литература, которую я изучал до этого момента, фокусировалась только на улучшении моделей. Я не видел следующего шага в их развитии.



Именно поэтому я сейчас пишу это руководство. Мне хочется, чтобы вы столкнулись с той проблемой, с которой столкнулся я в свое время, но смогли достаточно быстро ее решить. К концу этой статьи я покажу вам как реализовать модель машинного обучения используя фреймворк Flask на Python.
Читать дальше →

Почему тестирование не ограничивается поиском багов

Reading time4 min
Views7.7K
(из Цикла Историй Тестировщика)

Всем привет. Как вы уже могли заметить, интенсивность запуска курсов в OTUS увеличивается с каждым месяцем, и в марте их особенно много. Сегодняшний материал мы хотим приурочить к запуску курса «Автоматизация веб-тестирования», который стартует уже в середине марта. Приятного прочтения.



Я до сих пор вижу много тестировщиков, которые говорят о количестве найденных багов и уязвимостей, как о мере успеха проведения тестирования. Недавно я увидел другую точку зрения, которая гласила, что суть на самом деле в качестве ошибок, но далеко не в их количестве. Однако и с этой мерой также стоит быть аккуратным. Сейчас мы об этом и поговорим.

Основная идея заключается в том, что способ тестирования определяется типом тех ошибок, которые вам нужно найти.
Читать дальше →

Information

Rating
646-th
Location
Россия
Works in
Registered
Activity