Search
Write a publication
Pull to refresh
12
7
Alexander Kardapolov @akardapolov

User

Send message

Заставляем компьютер выводить общие законы физики из наблюдений

Reading time5 min
Views7.2K

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

Вдохновением для этих занятий послужила замечательная статья из Science, которая убедила меня и многих других в том, что к таким задачам в принципе можно подступиться. Как и у авторов статьи, наш пример будет немного игрушечным, хоть и для совсем другой физической системы. Более того, мы ещё сильнее ограничим пространство поиска (до 2^{64} формул, что тоже немало), зато обойдёмся без 32 процессорных ядер и без GPU, а решение получим меньше чем за минуту против десятков минут или даже пары дней, как в статье. Для всего этого нам понадобится лишь 300 строк кода на C — и никаких фреймворков.

Читать далее

Обезболиваем RegEx

Reading time5 min
Views11K

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

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

Читать далее

Property-based тестирование с QuickCheck

Reading time10 min
Views6K

Автор статьи: klntsky



Что такое Property-Based Testing?


Property-based testing (PBT) — подход к тестированию ПО, подразумевающий автоматическую проверку свойств функций (предикатов), специфицируемых программистом-тестировщиком. Для проверки, т.е. поиска контрпримеров, используются автоматически сгенерированные входные данные. PBT позвляет разработчикам значительно увеличить тестовое покрытие и эффективно расходовать своё время, не придумывая входные данные для тестов самостоятельно. В общем случае данные, генерируемые во время property-based тестирования, ничем не ограничены, поэтому проверка может быть произведена на тех значениях, про которые разработчик мог забыть или для которых не счёл нужным написать юнит-тесты (действительно, не перебирать же все значения входных параметров вручную).


PBT-подход был популяризован библиотекой QuickCheck, написанной на Haskell, и в этой статье будет показано, как пользоваться этим инструментом эффективно.

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

Как развитие алгоритмов сжатия остановилось 20 лет назад, или о новом конкурсе на 200 тысяч евро

Reading time18 min
Views74K

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

Пост набрал 206 «плюсов», вышел на 2 место топа недели и вызвал оживленную дискуссию, в которой мне больше всего понравился комментарий: «Коммерческого интереса эффективность по сжатию алгоритмов сжатия без потерь сегодня не представляет, в силу отсутствия принципиально более эффективных алгоритмов. Деньги сегодня — в сжатии аудио-видео. И там и алгоритмы другие. Тема сжатия без потерь удобна именно лёгкостью верификации алгоритма, и не слегка устарела. Лет на 20.» 

Поскольку я сам уже 20 лет в области сжатия видео, с ее бурным развитием мне спорить сложно. А вот что сжатие без потерь развиваться перестало… Хотя логика тут понятна каждому. Я до сих пор пользуюсь ZIP, все мои друзья пользуются ZIP с 1989 года — значит, ничего нового не появляется. Так ведь? Похоже рассуждают сторонники плоской земли. ))) Я не видел, знакомые не видели, и даже некоторые авторитеты утверждают, значит, это так! 

О том, как Intel просили меня не прекращать читать курс по сжатию, ибо людей нет новые алгоритмы делать, я в прошлый раз писал. Но тут и Huawei в ту же дуду дует! Вместо того, чтобы раздать призы и должности победителям, а затем успокоиться, поскольку развитие давно встало, эти эксцентричные люди посчитали конкурс крайне успешным и запустили новый с призовым фондом 200 тысяч EUR.

Развивались ли алгоритмы сжатия без потерь в последние 20 лет? Чем закончился прошлый конкурс и на сколько опередили baseline? Сколько денег получили русские таланты, а сколько зарубежные? И есть ли вообще жизнь на Марсе в сжатии без потерь? 

Кому интересно — добро пожаловать под кат! 
Читать дальше →

10 приниципов разработки на Java

Reading time7 min
Views11K

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

Читать далее про принципы разработки

Немного про современные технологии Greybox-фаззинга

Reading time20 min
Views9K


Автор: Иннокентий Сенновский


Как найти баги, о которых вы и не догадывались, или что такое фаззинг


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


Чтобы справиться с этой проблемой, придумали фаззеры — инструменты тестирования, которые сами пытаются найти баги в программе. В этой статье я рассмотрю, какие они вообще бывают (для C/C++, потому что баги в таких программах особенно болезненны), но сделаю упор на Greybox-фаззеры (почему, расскажу в статье).

Обожаю статьи, где много букв

Что такое функциональное программирование?

Reading time7 min
Views92K

Эта статья является переводом материала «What is functional programming?».

В этой статье Владимир Хориков попытается ответить на вопрос: что такое функциональное программирование?

Итак, что такое функциональное программирование? Этот термин возникает довольно часто, и каждый автор, пишущий о нем, дает собственное объяснение. На взгляд автора оригинала, самым простым и в то же время точным определением является следующее: функциональное программирование - это программирование с математическими функциями.

Математические функции не являются методами в программном смысле. Хотя мы иногда используем слова «метод» и «функция» как синонимы, с точки зрения функционального программирования это разные понятия. Математическую функцию лучше всего рассматривать как канал (pipe), преобразующий любое значение, которое мы передаем, в другое значение

Читать далее

Fill factor

Reading time7 min
Views12K

От переводчика

Публикация составлена по материалам BrentOzar.com (Brent Ozar)

5 Things About Fillfactor (Kendra Little)

Существует несколько статей на близкие темы.

Does low fill factor affect SELECT performance? (Tara Kizer)

Does index fill factor affect fragmentation? (Erik Darling)

Good Reasons to Rebuild or Reorganize Indexes (Erik Darling)

Читать далее

Джоэл Спольски — блогер, предприниматель, программист

Reading time18 min
Views9.1K

Джоэл Спольски, пожалуй, один из самых известных айтишных блогеров. Переводов статей из его блога Joel on Software на Хабре было множество, и наверняка кто-то из вас читал его книги «Джоэл о программировании», «Лучшие примеры разработки ПО» и «Руководство по UI дизайну для программистов».

Может, вы что-то слышали про дырявые абстракции, тест Джоэла и алгоритм маляра. А если нет, то сайт Stack Overflow уж точно знаете — так вот, это дело рук Джоэла Спольски, так же, как и канбан-инструмент Trello и… отчасти MS Excel. Да, Джоэл поработал и над ним. В общем, настоящий человек-оркестр, который поучаствовал во многих проектах, и останавливаться не собирается.

IT-сообщество должно знать своих героев, поэтому предлагаем вам окунуться в лихие 2000-е и почитать захватывающую биографию мистера Спольски. А еще в 2020 году Джоэл выступал на нашей конференции JPoint и поведал нам кое-что интересное, о чем расскажем в посте. 

Читать далее

Реализация сервера авторизации OAuth с помощью сервера авторизации Spring

Reading time7 min
Views16K

Сервер авторизации в OAuth предназначен для выдачи маркера доступа, который позволяет клиентскому приложению использовать этот маркер доступа для запроса ресурса, который ему нужно получить. Сервер ресурсов будет подтверждать этот маркер доступа с помощью сервера авторизации каждый раз, когда клиентское приложение запрашивает ресурс, чтобы определить, следует ли разрешить клиентскому приложению доступ к этому ресурсу. Вы можете использовать множество различных открытых источников, таких как Keycloak, Spring Security OAuth (устаревший), или же новый проект Spring под названием Spring Authorization Server для реализации этого сервера авторизации. В этом руководстве я покажу вам, как использовать сервер авторизации Spring (Spring Authorization Server) для реализации сервера авторизации OAuth (OAuth Authorization Server)!

Сначала я создам новый проект Spring Boot с Web Starter, Security Starter:

Читать далее

Как устроен открытый инструмент для сравнительного анализа метагеномных данных MetaFast

Reading time5 min
Views1.8K

Ранее мы поговорили о двух открытых библиотеках — для обучения байесовских сетей и идентификации структуры данных, плюс — рассказали о фреймворке для AutoML и библиотеке алгоритмов выбора признаков. Сегодня обсуждаем еще один инструмент, над которым работают представители Университета ИТМО.

Как вы уже поняли по заголовку, это — MetaFast. Его развитием занимаются в МНЦ «Компьютерные технологии». Отметим ключевые задачи и целевую аудиторию этого программного средства, коротко пройдем по основным компонентам, поделимся опытом практического использования и планами по улучшению.

Читать далее

Мифы о вакцинации

Reading time26 min
Views68K

Вакцинация - одно из самых важных достижений медицины, а недоверие к вакцинации включено ВОЗ в список десяти основных проблем здравоохранения. После прочтения очередных комментариев о вакцинации от covid-2019 в соцсетях вспоминается история вакцинации от оспы в Москве 1959-1960 гг и кажется, что люди 21 века, перепрыгнув 20 век, вернулись во времена Екатерины II.

Ученые пытаются понять причины отрицательного отношения к вакцинации. 16 июля в Nature Medicine вышла статья об отношении к вакцинации в разных странах и Россия оказалась абсолютным лидером антипрививочных настроений. В нашей стране к вакцинации положительно относятся только 30%, а в конспирологические теории верит 21% населения (считают, что вирус не существует или что эпидемия - это заговор фармкомпаний или политиков). 29% опрошенных считают, что вакцины не защищают от болезни и 14% боятся заразиться от вакцины. В России, в стране с одним из самых высоких процентов людей с высшим образованием, показатели оказались в несколько раз хуже, чем в США, Индии, Пакистане, Сьерра-Леоне и Уганде.

Побочные эффекты вакцинации

GraphQL запрос на GitHub

Reading time3 min
Views4.4K

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

Поехали!

Шпаргалка по метрикам производительности cURL: как измерить задержку сервера

Reading time8 min
Views25K


Эту шпаргалку я написал в первую очередь, потому что был несколько озадачен, когда в течение более, чем 10 минут пытался найти в Google значение time_pretransfer. Попробуйте сами, я подожду. Это настоящая загадка!
Читать дальше →

Уход сотрудников на удалёнку снёс крышу менеджерам

Reading time5 min
Views71K

Пустая парковка у офиса Facebook в Менло-Парк, 14 апреля 2020 года. Фото: Jeff Chiu/Associated Press

Если бы этой пандемии не случилось, её нужно было придумать. Огромное количество людей наконец-то поняли, насколько удобнее и эффективнее работать дома, насколько меньше времени уходит на бессмысленные поездки, стояние в пробках, переговоры в шумном офисе. Теперь до 42% сотрудников не хотят возвращаться, что вполне логично. Люди нащупали баланс между работой и личной жизнью, ощутили вкус свободы. Они готовы отказаться от серьёзной прибавки в зарплате, лишь бы остаться на удалёнке.

Но самая трагическая история произошла с менеджерами. Их судьба повисла на волоске. Профессиональные переговорщики всю жизнь оттачивали навыки презентаций, личных собеседований, психологического давления, плетения интриг. Они буквально лишились почвы под ногами — разработчики массово ушли из-под контроля, и что самое зловещее, они продолжают спокойно работать на удалёнке, разбирают таски и решают задачи, будто менеджеры и не нужны вовсе! Конечно, такая ситуация совершенно недопустима (по мнению менеджеров).
Читать дальше →

Почему Scrum не сработал, или Уверены ли вы, что точно знаете, что такое фреймворк?

Reading time9 min
Views6.4K


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

Предлагаю рассмотреть на практике одну из самых известных Agile практик Scrum, чтобы понять, где они действительно не работают и почему это происходит. Уверена, это может помочь не допустить множество ошибок в начале пути и выстроить либо эффективный процесс, либо отказаться от идеи внедрения фреймворка Scrum. Задайте себе контрольные вопросы в начале каждого блока, чтобы понять, в каком направлении вы двигаетесь. Приступим!
Читать дальше →

Создание инцидента через бота MS Teams

Reading time4 min
Views4.3K

Повышение осведомленности работников в области информационной безопасности и поиск способов оперативного сбора информации об инцидентах (или иных подозрительных событиях) прямо от работников может завести безопасника к созданию бота.

Бота можно сделать для Telegram, Whatsapp, написать свой сайтик, написать приложение для VK, написать приложение для иного часто используемого приложения работниками. В данном примере рассмотрим бота созданного через Microsoft Power virtual agents для Microsoft Teams.

Интересно? Поехали

Как сделать ссылки на методы дружелюбными для отладки

Reading time5 min
Views7.3K

В Java 8 появилось два вида функциональных выражений — лямбда-выражения вида s -> System.out.println(s) и ссылки на методы вида System.out::println. Поначалу ссылки на методы вызывали больше энтузиазма: они часто компактнее, вам не требуется придумывать имя для переменной, а ещё старожилы говорят, что они несколько оптимальнее, чем лямбда-выражения. Однако со временем энтузиазм ослаб. Одна из проблем со ссылками на методы — затруднённая отладка ошибок.

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

Как создать динамический профиль на GitHub с помощью GitHub Actions и PHP

Reading time4 min
Views4.8K

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

Читать далее

Как преобразовать любой тип Java Bean с помощью BULL

Reading time14 min
Views2.2K

BULL расшифровывается как Bean Utils Light Library, преобразователь, рекурсивно копирующий данные из одного объекта в другой. Он универсальный, гибкий, многоразовый, настраиваемый и невероятно быстрый.

Это единственная библиотека, способная преобразовывать изменяемые, неизменяемые и смешанные bean-компоненты без какой-либо пользовательской конфигурации.

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

Читать далее

Information

Rating
1,468-th
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity