Search
Write a publication
Pull to refresh
-18
0
Send message

Как мы работаем над продуктовыми гипотезами

Reading time7 min
Views12K

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

В сегодняшнем материале UX-проектировщик Андрей Журавлёв расскажет о работе с продуктовыми гипотезами — принципиально важном этапе создания продукта. Мы подготовили компактный фреймворк, который позволит глубже погрузиться в тему и фундаментально подойти к процессу определения приоритетов той функциональности, которую вы будете внедрять.

Читать далее

Как мы ускорили выполнение запросов PostgreSQL в 100 раз

Reading time10 min
Views47K

Существует великое множество статей об оптимизации PostgreSQL — эта «кроличья нора» весьма глубока. Когда несколько лет назад я начал разрабатывать бэкэнд аналитического сервиса, у меня уже был опыт работы с другими СУБД, такими как MySQL и SQL Server. Тем не менее, раньше мне не приходилось так фокусироваться на производительности. В прошлых проектах, над которыми я работал, либо не было жестких требований к времени обработки (DS/ML), либо не требовалось обрабатывать много строк одновременно (обыкновенные веб-приложения). Однако в этот раз мои запросы:

состояли из 3-10 JOIN-ов по коррелирующим запросам;

уielded от 10 до 1,000,000 строк;

должны были выполняться в течение времени, определенного UX-ом;

не могли быть hinted — пока Cloud SQL, управляемый PostgreSQL в Google Cloud, не стал поддерживать pg_hint_plan в конце 2021 года;

запрещали прямой доступ к серверному процессу, чтобы, например, хакнуть некоторые perf — потому что PostgreSQL был managed.

Получение целого миллиона строк в одном API endpoint сигнализирует о проблеме в алгоритме или архитектуре. Конечно, все можно переписать и перепроектировать, но за это нужно платить.

У нас не нашлось «заклинания», которое решило бы все проблемы с производительностью SQL. Тем не менее, я упомяну здесь несколько дельных предложений, которые помогли нам и, надеюсь, смогут помочь читателю. Разумеется, это не какие-то сакральные знания. Но когда мы начинали оптимизацию, я был бы рад их прочитать или услышать.

Читать далее

Как с помощью maven работать с библиотеками, которых в maven нет

Reading time10 min
Views91K

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


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


Эта статья для тех, кто только начинает осваивать java.


image


В моей предыдущей статье было сказано, что maven сам скачает все указанные в pom.xml зависимости. А вот что будет, если он какую-нибудь зависимость не найдёт? В таком случае maven скажет, что зависимость не обнаружена и прервёт процесс сборки с ошибкой. Что делать в этом случае?

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

Вся мощь IntelliJ IDEA на примере одного языка (в картинках)

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

Однако, одна из проблем такого подхода заключается в том, что это значительно удорожает и замедляет сам процесс разработки. Что если всего этого нет? Тогда на помощь приходит IDE, благодаря которой можно изучить текущую логику по “голому” коду.

Когда мы разрабатывали платформу lsFusion со встроенным языком, то у нас было несколько вариантов. Либо изобретать велосипед, и писать с нуля свою собственную IDE, как сделал в свое время 1С, или реализовать плагин к уже существующей. Мы пошли по второму пути, и в этой статье я покажу, что получилось.
Читать дальше →

Так много JDK… Какой использовать и чем это грозит?

Reading time5 min
Views67K

От переводчика: Решение перевести эту статью пришло не само собой — скорее это вынужденная мера :). К нам, как к вендорам фреймворка CUBA, обращаются с этим вопросом с завидной регулярностью. Безусловно, для нас это тоже крайне важная тема, и в ответ на последние изменения мы подняли тестовые стенды как на Oracle JDK, так и на Liberica JDK — эта мера на данный момент ограждает наших пользователей от непредвиденных лицензионных трат. Однако, эта тема еще не закрыта, и мы продолжаем внимательно следить за развитием событий, и, кто знает, возможно нам придется добавлять стенды для еще каких сборок JDK уже в следующем году...


Статья под катом подкупает тем, что она лаконично описывает проблематику и наиболее популярные JDK с их особенностями.

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

Руководство по версиям и возможностям Java

Reading time12 min
Views175K

Здесь есть все, что вам нужно знать о различных версиях и функциях Java.



Java 8, Java 11, Java 13 — какая разница?


Вы можете использовать это руководство, чтобы найти и установить последнюю версию Java, понять различия между дистрибутивами Java (AdoptOpenJdk, OpenJDK, OracleJDK и т.д.), А также получить обзор возможностей языка Java, включая версии Java 8-13.


Примечание переводчика
09 апреля 2020 г. Марко опубликовал новую версию Руководства, в которую добавлено описание Java 14.
Перевод новой версии Руководства предлагается Вашему вниманию.
Читать дальше →

Создание сервлетов для чайников. Пошаговое руководство

Reading time4 min
Views142K
image

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

Итак.

Предположим, что Вы уже где-то скачали пример с применением maven и Вам удалось задеплоить Ваш код на Tomcat (с этого обычно начинается познание сервлетов) любым способом (WAR-архивом или прямо из среды разработки). Вы имеете структуру приложения, в которой присутствует файл web.xml. C него и надо начинать создание страниц.
Читать дальше →

Автономная кроссплатформенная монолитная программа на Java

Reading time21 min
Views63K
Я люблю desktop-приложения. Признаваться в этом нынче, похоже, стыднее, чем в связях с иностранной разведкой, но это так. Нет, это не значит, что я не люблю интернет-технологии. Более того, некоторые я не только уважаю, а даже более-менее знаю. Но, тем не менее, я скучаю по тем временам, когда программа писалась на одном компьютере, потом компилировалась и запускалась на других, разных компьютерах. Тогда везде (почти) была одна система — Windows с одной и той же API, почти не было проблем совместимости на уровне приложений, никто не материл разработчиков браузеров — все берегли нервы на разработчиков WinAPI, которые умудрялись создавать конфликты даже внутри нее одной. Но это я, конечно, иронизирую, а если серьезно — иногда и сейчас хочется написать просто desktop-приложение, да так, чтобы работало оно на всех популярных системах. Трудно? Если подумать и покопать, то не очень.

Еще я люблю языки высокого уровня с аккуратной архитектурой и строгой типизацией. Мои фавориты — Java и C#. Оба они предоставляют разработчику множество преимуществ по сравнению с C++, оба избавляют от ряда забот. Чем приходится платить? Тем, что таскаешь за собой тяжелую колоду, которая называется Oracle JVM, .NET или mono. Все три колоды весят сотни мегабайт и лицензию имеют такую, что каждый пользователь вынужден качать эту штуку сам, не путая при этом разрядность своего компьютера, а главное — программа на Java не может быть совместима со всеми версиями JVM разом, не так ли? И вот — мы приходим к тому, что просто скинуть программку другу (или миллиону друзей) и не заботиться о том, что она у него не запустится, не выходит. Приходится делать хитрые сетапы, вбивать костыли, и это я еще не упомянул .NET — однажды я видел у друга сразу 3 установленных версии, причем все три были нужны разным приложениям…

Стоп! А давайте напишем программу на Java, но так, чтобы она не требовала установки на машину какой-либо JVM, чтобы одним касанием собиралась под Windows, Linux и OS X и чтобы при этом занимала совсем чуть-чуть; так, чтобы никто даже не понял, что она написана, скажем, не на C. Невозможно? Совсем наоборот! (И нет, я имею в виду не gcj, который лишает Java всех ее прелестей. Рефлексия будет работать и даже сторонние jar вы сможете запускать).

Ну и как это сделать?

Что такое сервер приложения

Reading time6 min
Views63K

Когда вы открываете любой сайт — например, google или facebook, вы видите конечный продукт. Но чтобы этот продукт увидеть, и пощупать, нужно:

1. Написать код приложения

2. Собрать проект

3. Поднять его на сервере приложения

Сегодня я расскажу про третий этап: что вообще такое сервер приложения и зачем он нужен.

Читать далее

Что реально происходит в предиктивной аналитике на производствах?

Reading time6 min
Views15K
Примерно 18 лет я занимаюсь автоматизацией производств и, в частности, прогностическими системами. Авария в турбине обходится в среднем в десятки миллионов рублей и, как правило, затрагивает далеко не только турбину. Отрыв рабочих лопаток турбины может нанести прямого урона на миллиарды, а потом ещё остановить генерацию на срок поставки комплектующих.

image
Пример такой турбины для понимания масштаба. Источник.

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

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

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

К этому можно добавить ещё физическую модель взаимодействий на устройстве.
Читать дальше →

Производство в этот кризис: а знаете, всё оказалось лучше, чем в Венесуэле

Reading time7 min
Views87K
image

После прошлого поста на Хабр про то, что нам обрубили почти все поставки сырья для биохимии и вообще непонятно, как жить, случилось многое. Во-первых, оказалось, что пост увидело большое количество людей. Нас завалили письмами про то, как можно вместе что-то сделать, про «мы будем вашей грузинской креветкой для перевалки веществ» и даже от контрабандистов, готовых за скромную комиссию перевозить пробирки с пептидами в укромных местах организма. Спасибо, дорогое сообщество. Это очень трогательно.

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

В-третьих, мы показали удивительное свойство объединяться в кризис. Сейчас у нас появился отраслевой чат производителей косметики(!), где конкуренты обсуждают совместные меры! Да год назад мы бы глотки друг другу повскрывали на второй минуте чаепития, а сейчас принимаем рациональные решения.

В-четвёртых, у нас наконец-то появилось понимание, что делать в дивном новом мире. Мы не очень ему рады, но если сейчас выжить — это будет очень хорошо и для нашей уютной лаборатории, и для отечественной науки, и для российской экономики. Не в ближайшие 3 года, а системно, в перспективе 10 лет. И да, я оптимистка.

Почему? Потому что в 2011 году я жила в Венесуэле при Чавесе год. И видела всё то же самое, только хуже. Так что сейчас я как будто возвращаюсь в ту прекрасную юность.
Читать дальше →

Библиотека Python 3 для подключения к ЕСИА — esia-connector

Reading time5 min
Views16K
Все началось с того, что Минкомсвязи разрешило использовать портал госуслуг для идентификации и аутентификации пользователей на негосударственных веб-узлах. Это реализуется с помощью службы ЕСИА (Единая Система Идентификации и Аутентификации — esia.gosuslugi.ru). Заказчик нашего проекта входил в число первых 5 участников, которые подали заявки на интеграцию с ЕСИА, что выразилось для нас задачей эту интеграцию поддержать.

В свободном доступе мы не нашли открытого бесплатного решения подходящего для своего стека технологий, поэтому после разработки, с благословления заказчика, решили поделиться собственным (BSD license).

Итак, представляем вам проект esia-connector, написан на Python 3, использует утилиту openssl, проверялся в работе только в Debian-based системах.

Пакет: pypi.python.org/pypi/esia-connector
Проект: github.com/eigenmethod/esia-connector
Подробнее про использование, недостатки, планы.

Моя первая нейросеть: распознаем эмоции человека в кадре

Reading time4 min
Views14K

Нейросети и машинное обучение — перспективная отрасль IT, с каждым годом ML-технологии все глубже проникают в разные сферы, включая бизнес, медицину, науку. Понимая все это, я решил выбрать направление машинного обучения в качестве своей профессии. Меня зовут Артем Раздьяконов, я студент курса “Data Scientist PRO” в Skillbox.

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

Читать далее

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

Reading time13 min
Views50K

Утром в среду Герман Понцер надевает помятый лабораторный халат и направляется в свою лабораторию в Университете Дьюка. Его студентка Кристина отдыхает на лабораторном столе, положив голову в прозрачный пластиковый колпак. Понцер приступает к проверенному временем методу повышения кровяного давления: он дает ей устный тест по математике.

«Начните с числа 1022 и вычитайте 13, пока не дойдете до нуля. Если вы сделаете ошибку, мы начнем сначала. Вы готовы?»

Студентка пробует и доходит до 997, пробует снова и доходит уже до 889. Это происходит снова и снова. Затем Понцер просит её вслух умножить 505 на 117. К этому моменту она сжимает пальцы ног в носках.

Еще два помощника следят за частотой её сердцебиения и количеством углекислого газа (CO2), который она выдыхает в вытяжку. Затем Понцер задает ряд вопросов, призванных повысить уровень стресса студентки: Какова работа её мечты, и что именно она собирается делать после окончания университета?

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

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

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

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

Приятного чтения!

Можно ли говорить о возвращении музыкальных CD

Reading time3 min
Views18K

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

Читать далее

Инструменты для SQL запросов к журналам

Reading time10 min
Views6.9K

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

Читать далее

Жизнь после оффера

Reading time6 min
Views13K

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

Читать далее

Запускаем датчик скорости потока жидкости

Reading time4 min
Views19K
Пост посвящен датчику скорости потока Out Of Liquid — термоанемометру для измерения расхода жидких сред. Под катом читатель найдет описание принципа работы датчика, а также видео, на котором этот принцип наглядно демонстрируется.



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

ИТ-сотрудник с Reddit автоматизировал свою работу и получает зарплату ни за что

Reading time3 min
Views107K


Анонимный ИТ-сотрудник стал героем Реддита после того, как автоматизировал всю свою работу и теперь проводит дни, играя в видеоигры. Его пост с названием «Я автоматизировал свою работу больше года назад и никому об этом не сказал» на сабреддите r/antiwork набрал 80 000 апвоутов и больше 5 000 комментариев за один день.

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

Настоящая история (старо)славянского РА

Reading time7 min
Views20K

Автор: Виолетта Хайдарова

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

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

Читать далее

Information

Rating
Does not participate
Registered
Activity