Как стать автором
Поиск
Написать публикацию
Обновить
1150.39

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Как я сделал свой трекер мечты и понял цену времени

Время на прочтение4 мин
Количество просмотров22K

Основной посыл этого поста - рассказать о развитии своей старой идеи, которая переделывалась несколько раз, и прошла путь от простой кривой WinForm до полноценного кросс-платформенного приложения на Electron'e.

У меня нет цели прорекламировать программу (хоть она бесплатная, без подписок и рекламы), поэтому я не буду оставлять ссылки на скачивание, просмотр, но если это разрешено - отвечу на подобные вопросы в комментариях.

Читать далее

PHP 8: observability из коробки. Наблюдаемость среды выполнения

Время на прочтение9 мин
Количество просмотров5.9K

За последние два десятилетия виртуальная машина Zend Engine, лежащая в основе PHP, претерпела определенные улучшения. Значительный скачок производительности произошел с выходом версии PHP 7, в которой ощутимо выросла производительность WordPress и других традиционных веб-приложений. В версии PHP 8, в свою очередь, появился JIT-компилятор, значительно ускоривший выполнение ресурсоемких алгоритмов.

Однако основная ловушка наблюдения, используемая трассировщиками, профилировщиками и отладчиками для наблюдения за поведением вызова функций PHP, не развивалась параллельно улучшениям Zend Engine и все сильнее замедляла работу наблюдаемых PHP-приложений. Например, трассировщик Datadog PHP просто не мог развиваться с учетом нововведений PHP 8 без изменения ловушки наблюдения.

Выпуск PHP 8 включает в себя изменения, которые привносят в среду выполнения PHP современный уровень наблюдения. Наша команда совместно с сообществом разработчиков движка PHP разработала и выпустила новый API наблюдателя. Перед выпуском этого API мы, как и другие PHP-разработчики, столкнулись со множеством проблем.

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

Читать далее

Эксперимент для сотрудника с нарушением слуха, ч. 1

Время на прочтение10 мин
Количество просмотров3.9K

Привет, c вами Cloud4Y!

Есть замечательная статья 'Experimenting On My Hearing Loss' by paddlesteamer, которая сама по себе достойна перевода. Но инженер компании Дмитрий Михайлов вместе с Андреем Огурчиковым пошли дальше, испытав методику на себе. Материала получилось много, с обилием кода и аудиограмм. Поэтому мы разбили его на две части. В первой расскажем, зачем нам понадобилось "играться" со звуком и опубликуем перевод статьи, ставшей основной для последующей доработки напильником. Вторая часть будет посвящена нашему решению. Если у вас есть сотрудники с нарушениями слуха, рекомендуем к прочтению.

Читать далее

Бесплатные мероприятия по Microsoft Azure в июле

Время на прочтение3 мин
Количество просмотров1.9K

Привет, Хабр! Сегодня по традиции делимся с вами подборкой наших бесплатных вебинаров по Azure в июле. В этот раз у нас 3 мероприятия, 2 из которых с субтитрами на русском, а одно - полностью на русском. Ну и без бесплатных экзаменов не обошлось. Подробности под катом!

Читать далее

Разработка REST-серверов на Go. Часть 5: Middleware

Время на прочтение10 мин
Количество просмотров40K
Это — пятый материал из серии статей, посвящённой разработке REST-серверов на Go. Здесь мы поговорим о middleware. У меня есть материал, посвящённый жизненному циклу HTTP-запросов в серверах, написанных на Go. Для того чтобы разобраться в том, о чём пойдёт речь ниже, вам нужно ориентироваться в этой теме.



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

JavaScript: изучаем регулярные выражения на практике

Время на прочтение18 мин
Количество просмотров71K

image


Регулярное выражение (далее также — регулярка) — это последовательность специальных символов, формирующих паттерн или шаблон (pattern), который сопоставляется со строкой.


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


В данной статье мы сосредоточимся на валидации.


Что конкретно мы будем делать? Мы возьмем несколько регулярок из validator.js (наиболее популярной библиотеки для валидации данных с помощью регулярных выражений) и произведем их подробный разбор. Также мы рассмотрим несколько дополнительных регулярок и один алгоритм.


Как результат, мы реализуем несколько полезных функций, которые вы впоследствии сможете использовать в своих проектах.

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

Учимся читать код, изучая стандартную библиотеку Python

Время на прочтение5 мин
Количество просмотров42K


Итак, вы уже продвинутый новичок — вы изучили основы Python и способны решать реальные задачи.

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

Наверно, вы слышали, что нужно нарабатывать понимание чтением и написанием больших объёмов кода. Это правда.

Но какой же код нужно читать?

«Просто читай то, что нравится». А если вы не знаете, что вам нравится? А если вам не нравится что-то правильное?

Или хуже того — если вам нравится что-то неправильное и из-за этого у вас выработаются вредные привычки?

В конечном итоге, для этого ведь необходимо понимание… Но именно его мы и стремимся обрести.

«На GitHub куча проектов — выберите понравившийся и изучайте, как его реализовали разработчики». Однако самые успешные проекты довольно объёмны — с чего начинать?

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

Да, вы видите код своими глазами, но он не говорит вам о том, почему разработчики написали его так, чего они не делали и как они рассуждали о проекте в целом.

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

В этой статье мы рассмотрим некоторые модули стандартной библиотеки Python.
Читать дальше →

Заменят ли верстальщиков нейросети и конструкторы для создания сайтов?

Время на прочтение6 мин
Количество просмотров24K

Разговоры о том, останутся ли верстальщики без работы, длятся годами. Как только появляется новая программа или плагин для автоматизации вёрстки, специалистам начинают тут же пророчить бессрочный отпуск. Но стоит ли всерьёз относиться к таким разговорам?

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

Читать далее

Незаслуженно забытый ZooKeeper

Время на прочтение7 мин
Количество просмотров39K

В наш век распределенных микросервисов постоянно возникают распределенные проблемы. Это самые обычные computer science проблемы, но они распределены по разным серверам или даже разным датацентрам. Для их решения часто выдумывают много разного. Не делайте так, просто возьмите ZooKeeper. Он, несмотря на то что придуман бумерами, просто работает. Он решит немалую часть ваших проблем с распределенными системами.

Читать далее

Нейросети в исследовании процессов

Время на прочтение8 мин
Количество просмотров6.4K

Нейронные сети – это статистические вычислительные модели, применяемые к множеству практических задач, в том числе обработка изображений, машинный перевод и поиск шаблонов. При обучении с учителем, нейросеть тренируется на примере уже известных объектов, то есть для всех исходных данных у нас есть предопределенный правильный ответ. Главная идея обучения нейросети – это настроить такую конфигурацию, при которой ответы модели будут максимально приближены к корректным. Что же до рекуррентных нейросетей, то они не только обучаются на исходных объектах, но и предоставляют контекст для каждого следующего предсказания. Это помогает нейросети сохранять состояние, в котором было принято решение. В этой статье мы обсудим применение рекуррентных нейросетей (РНС) в проблеме исследования процесса в process mining.

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

Для прояснения подхода возьмём лог событий L = [(a, b, c, d, e), (a, b, d)] в качестве примера. Внутренние вычисления нейросети требуют предобработку последовательностей событий следующим образом.

Читать далее

Программа в 50 строк на Java/Scala, которая сэкономит вам 50 тыс. р. при подаче декларации 3-НДФЛ

Время на прочтение5 мин
Количество просмотров8.9K

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

Но если брокер такой как у меня - Interactive Brokers (организация, третьего дня запрещенная на территории РФ), декларацию вам придется делать и подавать самому. Делать это всем, конечно же лень, и неплохо бы отдать подготовку на аутсорс...

Читать далее

Погрузиться в поиск музыкальной информации [MIR] — книги, которые помогут сделать это

Время на прочтение3 мин
Количество просмотров3.2K

Специалисты, занимающиеся поиском музыкальной информации [music information retrieval, MIR], разрабатывают алгоритмы машинного обучения для выявления паттернов и зависимостей в композициях. Лучшие практики этого направления сегодня используют стриминговые платформы для классификации музыки — например, распознают плагиат. Однако MIR — достаточно новое направление, и оно лишь начинает закрепляться в виде полноценной научной дисциплины.

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

Читать далее

Торговля на Московской Бирже с мобильным клиентом 1С

Время на прочтение3 мин
Количество просмотров2.6K
В современном мире все основные операции над своим бизнесом занятые люди хотят иметь возможность совершать со своего мобильного. Понятно, что много готовых законченных решений, которые написаны серьезными крупными компаниями. Но, как и в любом бизнесе, всегда найдется место для индивидуального заказного решения, которое бизнесмен захочет подстроить под себя. И тут нам на помощь приходит мобильный клиент 1С. При этом приложение не стремится потеснить приложения известных и солидных производителей. Просто любой заказчик должен иметь возможность подстроить под себя используемый им инструмент. Кому-то нравится использовать типовую удочку, а кто-то любит самодельную.

Рис 0

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

Ближайшие события

Kq: продолжаем обрабатывать JSON

Время на прочтение4 мин
Количество просмотров3.2K

...на Kotlin разумеется. В комментариях к предыдущей статье было задано несколько вопросов, как сделать конвертацию в tsv, почему утилита собрана в Docker образ и предложение использовать нативный образ GraalVM.

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

Читать далее

Кто и как поломал Землю, или откуда возникли планетарные горные хребты и разломы

Время на прочтение7 мин
Количество просмотров16K

В предыдущей статье Пространственные спектры и фрактальность рельефа, силы тяжести и снимков мы уже рассмотрели фрактальность рельефа и поля силы тяжести и показали, как она возникает в относительно тонкой и хрупкой земной коре толщиной от 5 км под океанами и до 100-150 км под материками. Также мы вычислили, что под корой находится слой упругий, так что верхний масштаб фрактальности ограничен примерно 200 км. При этом, мы наблюдаем разломы и горные хребты планетарного масштаба, пересекающие моря и океаны. Очевидно, что планетарные структуры масштаба десятков тысяч километров никак не могут быть объяснены явлениями в земной коре масштаба десятков-сотен километров, хотя все эти структуры самоподобны, то есть фрактальны. Таким образом, именно планетарные структуры являются первичными и воспроизводятся на меньших масштабах при тектонических процессах за счет хрупкости земной коры. Сегодня мы поговорим о том, откуда возникли эти первичные структуры, или кто и как «поломал» Землю.



Слева направо приведены следующие изображения Земли: магнитное поле (EMAG2), гравитационное (Sandwell & Smith), рельеф ( GEBCO 2020 Bathymetry). Смотрите HOWTO: Visualization on The Globe

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

Как я учил студентов Северной Кореи разрабатывать ПО с открытым исходным кодом

Время на прочтение6 мин
Количество просмотров19K
В 2016 году я отправился в Северную Корею, чтобы учить студентов магистратуры тому, как участвовать в разработке ПО с открытым исходным кодом. Вот фотография с одной из моих лекций:


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

Вилкой в глаз, или ForkJoinPool в Java

Время на прочтение8 мин
Количество просмотров71K

Всем привет. Сегодня я хотел бы поговорить о многопоточности. Вернее, не о многопоточности вообще, а о таком её механизме как ForkJoinPool. Нельзя сказать, что данная технология является новой (она появилась ещё в Java 7), или что в сети нельзя найти материалы по данной теме. Информации хватает. Например, для глубокого погружения могу порекомендовать лекцию блистательного Алексея Шипилёва, которую можно без труда найти на YouTube. Но лично мне большинство этих материалов показались либо слишком сложными, либо наоборот – поверхностными. Так же некоторые из них содержат явные ошибки, что вносит ещё большую неразбериху в данную тему. Судя по тому, что в комментариях под одной из этих статей я нашёл вот такую картинку, подобные проблемы были не только у меня.

Читать далее

Проектирование программного обеспечения: что такое Acceptance Criteria и зачем они нужны?

Время на прочтение4 мин
Количество просмотров37K

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

Вот что вам нужно:

Читать далее

Лучшие навыки Алисы и советы от их разработчиков

Время на прочтение8 мин
Количество просмотров55K

Я уже довольно давно разрабатываю навыки для Яндекс.Алисы, но пока не создал ни одного популярного. Недавно мне стало интересно: а какие навыки становятся самыми популярными, и кто те люди, которые их создают? Чтобы ответить на этот вопрос, я проанализировал каталог Алисы и опросил 20 разработчиков, чьи навыки набрали наибольшее количество оценок "пять". Похоже, что к их советам стоит прислушаться.

Читать далее

Программирование под ZX-Spectrum: 3D графика

Время на прочтение5 мин
Количество просмотров17K
image

ZX-Spectrum был моим первым компьютером еще в те времена, когда я себя не очень хорошо помню. Однако в памяти остались бесконечно долгие экраны загрузки игр с магнитофона и невероятной радости, когда (и если) эта загрузка состоялась. Чуть позже помню первые написанные списанные программы на бейсике из книги «ZX-Spectrum 48 программ для изучающих Basic». Я почти ничего не понимал из того, что я набирал, и для детского мозга работа программиста представлялась как умение быстро находить в книжке нужную программу и перепечатывать ее без ошибок (привет StackOverflow!).

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

Вклад авторов