Search
Write a publication
Pull to refresh
-2
0.1
Send message

Как программисту снизить когнитивную нагрузку: три способа

Reading time6 min
Views22K

Предотвращение когнитивной перегрузки программиста — это ключ к недопущению ошибок и ускорению разработки.

Среди подкастов, которые я обычно слушаю, один называется «Никаких дурацких вопросов». В минувший понедельник я с большим интересом прослушал выпуск «Когда простота становится избыточной?». В нем авторы бросили вызов пресловутой «бритве Оккама» и продемонстрировали предвзятое отношение людей к простейшему объяснению по сравнению с более сложным. Несмотря на то, что в физике зачастую самое простое объяснение оказывается единственно верным, в других науках, таких как экономика или психология, ситуация может измениться. Почему пала Римская империя, или отчего преступность в последние десятилетия пошла на спад — причин тому не одна, а несколько. Авторы подкаста ясно показали, что, несмотря на любые факты, люди предпочитают иметь дело только с одним, а не с несколькими объяснениями случившегося. Это поразило меня.

Читать далее

Как рождается, живет и умирает машинное обучение внутри компании?

Reading time5 min
Views3.5K

Всем привет! 

Меня зовут Родион, я занимаюсь улучшением бизнес-процессов компаний с помощью данных. Сегодня хочу поделиться опытом внедрения машинного обучения: как компании работают с бизнес-метриками и данными, где в иерархии потребностей компании находится ML и как довести проект до реальной бизнес-пользы. 

Читать далее

Federated Pruning для Federated Learning

Reading time7 min
Views1.1K

Эта публикация является компиляцией изученных материалов по теме и писалась с целью в материале разобраться и упорядочить собственные знания – такой аналог реферата/курсовой. Т.к. исходный материал в основном на английском, возможно, данная статья кому-то также будет полезна.

Вместо пролога

Federated Learning – подход к решению задач машинного обучения, который позволяет анализировать данные непосредственно в их источниках, не объединяя их на каком-то центральном ресурсе, а объединяя уже результаты таким способом, чтобы итог обучения был не хуже, чем в традиционных подходах.

Есть две «легенды» появления FL. Первая рассказывает о данных столь больших, что обучение на них занимает недели и даже месяцы. Данные стали разбивать на части. Затем части отдавать отдельным вычислительным узлам. Затем данные перестали собирать и стали обрабатывать прямо в источниках.
Вторая «легенда» – о конфиденциальности тренировочных данных. Трудности обезличивания данных (как ни хэшируй, а информацию с конкретным объектом можно сопоставить, особенно если количество наблюдений в источнике невелико) привели к мысли передавать не сами данные, а результаты обучения на них.

(«Легенды» – потому что у всякой версии есть примеры обратного: медицинские данные не велики, а наоборот, малы и трудно собрать их в одном месте – какое уж тут разбиение, тут проблема в том, что для глубокого обучения такие малые выборки не дадут хорошей эффективности, нужно не данные обрабатывать, а развивать методы машинного обучения на малых данных.)

Читать далее

Работаем с XML как с массивом, версия 2

Reading time9 min
Views6.4K

Всем привет.

Хочу поделиться с вами опытом в парсинге XML файлов размером до четырёх гигабайт. Что бы это происходило быстро, мы читаем файл последовательно, частями, парсим только нужные нам элементы.

В двух словах для быстрого парсинга файлов надо пользоваться XMLReader в связке с yield.

О моей реализации этой связки читайте ниже.

Читать далее

CLI инструменты, которые облегчат времяпровождение в терминале и сделают его приятнее

Reading time6 min
Views58K

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

В этом посте описан мой топ-25 обязательных инструментов CLI, на которые я привык полагаться. Если тут нет вашего любимого - дайте мне знать в комментариях :)

Читать далее

Единственный способ полноценного контроля скорости на горных лыжах и сноуборде. Физика

Reading time5 min
Views40K

В арсенале горнолыжника и сноубордиста есть всего два способа контроля скорости - удлинение траектории и проскальзывание.

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

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

Единственный способ полноценного контроля

Go 1.20 и арена памяти

Reading time3 min
Views19K

Одной из революционных особенностей Go в сравнении с другими компилируемыми языками стало автоматическое управление освобождением памяти от неиспользуемых объектов (сборка мусора). В то же время она может привести к потере производительности при передаче контроля процессу управления памятью, но альтернативного механизма в Go представлено не было. Начиная с Go 1.20 появляется поддержка экспериментального решения для управления памятью, которое позволяет совместить безопасное выделение динамической памяти и уменьшить влияние интегрированного в скомпилированный код управления памятью на производительность приложения. В этой статье мы рассмотрим основные аспекты использования Memory Arena в Go 1.20.

Читать далее

Горе от совершенства: как избавиться от дурного перфекционизма. Личный опыт и лайфхаки

Reading time8 min
Views23K

За каждым шедевром, каждым крутым продуктом стоит перфекционист, который не отступился, не изменил своим требованиям и дотянул результат до совершенства. Кажется, что всему прекрасному в этом мире мы обязаны перфекционистам.

И одновременно перфекционист — это ругательство. Это человек, который устроит истерику, пока логотип на сайте не передвинут на 1 пиксель. Как человек, страдавший от перфекционизма, расскажу, когда он несет благо, а когда зло, и как превратить дурной перфекционизм в полезный.

Читать далее

Как собрать базу организаций за час

Reading time2 min
Views12K

Всем привет, меня зовут Александр Калыргин, сейчас я активно занимаюсь сферой получения и анализа данных. Захотелось показать, как можно без особых проблем получить базы организаций, зарегистрированных в нужном вам регионе.

Читать далее

Как писать код на Go? Подход Google. Часть первая

Reading time11 min
Views7K

Рекомендации по стилю для проектов из Google с открытым исходным кодом


Руководство по стилю Go


Принципы стиля


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


  1. Ясность: Назначение и обоснованность кода должны быть понятны читателю.
  2. Простота: Код должен выполнять свою задачу самым простым способом.
  3. Лаконичность: Код должен содержать как можно меньше воды.
  4. Сопровождаемость: Код должен быть написан так, чтобы его легко было поддерживать.
  5. Согласованность: Код должен согласоваться с более масштабной кодовой базой Google.

Подробности — к старту курса по Backend-разработке на Go.

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

Как можно ускорить Python сегодня

Reading time10 min
Views24K

Python не перестаёт удивлять многих своей гибкостью и эффективностью. Лично я являюсь приверженцем С и Fortran, а также серьёзно увлекаюсь C++, поскольку эти языки позволяют добиться высокого быстродействия. Python тоже предлагает такие возможности, но дополнительно выделяется удобством, за что я его и люблю.

Этот инструмент способен обеспечивать хорошее быстродействие, поскольку имеет в арсенале ключевые оптимизированные библиотеки, а также возможность динамической компиляции основного кода, который предварительно не компилировался. Однако скорость Python значительно падает, когда дело доходит до обработки крупных датасетов или более сложных алгоритмов. В текущей статье мы разберём:

  1. Почему столь важно думать о «будущем разнородных вычислений».
  2. Две ключевых сложности, которые необходимо преодолеть в открытом решении.
  3. Параллельное выполнение задач для более эффективного задействования CPU.
  4. Использование ускорителя для дополнительного повышения быстродействия.

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

Как я засунул Stable Diffusion в IPhone

Reading time7 min
Views7K

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

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

В последний раз такое происходило с глубокими нейронными сетями, а до этого — с 3D-графикой. Наверно, сейчас настал третий раз. На самом деле, я настолько в этом уверен, что создал приложение, чтобы подтвердить свою точку зрения.
Читать дальше →

Использование ChatGPT для автоматизации тестирования

Reading time4 min
Views13K

ChatGPT побил все Интернет-рекорды, став вирусным в первую неделю после запуска. Миллион пользователей за 5 дней — это беспрецедентно. Система искусственного интеллекта – виртуальный собеседник, который может отвечать на вопросы на естественном языке и создавать стихи, писать сценарии фильмов, посты в социальных сетях, сочинения и делать массу удивительных вещей. Наша первая мысль, когда мы получили доступ к платформе, заключалась в том, как использовать эту замечательную платформу, чтобы облегчить жизнь тестировщикам веб-приложений и мобильных приложений. И самое главное, как можно использовать ChatGPT для автоматизированного тестирования.

 Чему мы научились, когда создавали автоматизированные тесты с помощью ChatGPT

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

 Плюсы ChatGPT для автоматизации тестирования

Читать далее

Методы обеспечения безопасности контейнеров Docker

Reading time5 min
Views18K

Сегодня Docker является одним из самых популярных инструментов в области контейнеризации. В основе Docker заложена концепция использования контейнеров. С технической точки зрения контейнер — это процесс, наподобие тех, которые запускаются в операционных системах. Как и любой другой продукт, Docker подвержен различным атакам и уязвимостям.

В этой статье будут рассмотрены методы, которые помогут повысить уровень безопасности контейнеров Docker.

Читать далее

Как написать UI-автотесты, если не умеешь программировать?

Reading time19 min
Views23K

О чем эта статья и чем она полезна.

Всем привет! В этой статье пойдет речь о том, как написать простые UI-тесты на языке Java. Это будет интересно тем, кто давно хотел попробовать себя в автоматизации или добавить новенького в свой текущий проект.

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

Основная часть статьи будет посвящена практическому разбору теста и нюансам их написания.

Собирайте с собой друзей, хорошее настроение и поехали!

Что такое UI-тесты? Плюсы и минусы.

UI-тестирование – это тестирование пользовательского интерфейса программы/сайта/приложения и др.

Звучит легко, а чем такие автотесты полезны?

1)    Такие тесты используются, чтобы автоматизировать рутинные задачи и однотипные действия, например, проверку товаров в каталогах.

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

3)     Чтобы снять часть работы с сотрудников, если их мало на проекте, часть проверок можно перенести на автотесты.

Читать далее

Как устроен внутри Github Copilot

Reading time12 min
Views12K

Github Copilot оказался для меня невероятно полезным. Часто он может волшебным образом читать мои мысли и давать полезные рекомендации. Больше всего меня удивила его способность верно «угадывать» функции/переменные по соседнему коду, в том числе и из других файлов. Это может происходить только в том случае, если расширение copilot отправляет ценную информацию из соседнего кода в модель Codex. Мне стало любопытно, как это работает, поэтому я решил изучить исходный код.

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

Генерация конвейеров обработки данных в Dataflow

Reading time13 min
Views2.9K

Эта статья посвящена всем практикующим специалистам по данным, заинтересованным в освоении запуска, стандартизации и автоматизации пакетных конвейеров данных в Netflix.

О Dataflow мы писали в статье под названием Data pipeline asset management with Dataflow. Та статья представляла подробное знакомство с одним из наиболее технических аспектов Dataflow, но сам этот инструмент толком не описывала. На сей раз мы оправдаем заявленное вступление, после чего сосредоточимся на одной из основных возможностей Dataflow — образцах рабочих потоков. Для начала же мы коротко разберём Dataflow в общем.
Читать дальше →

Information

Rating
5,737-th
Registered
Activity