Как стать автором
Обновить
1
0
Дмитрий Емельяненко @proxi516Em

Программист

Отправить сообщение

Microsoft Project delenda est

Время на прочтение21 мин
Количество просмотров26K
В жизни многих обитателей софтверной индустрии иногда настаёт момент, когда им приходится нарисовать план проекта. Люди, что-то слышавшие об управлении проектами, читавшие книжки на эту тему (особенно книжки, не описывающие конкретную индустрию), а также учившиеся управлению проектами где-либо (в ВУЗе, на курсах и т.п.) чаще всего автоматически выбирают для создания этого плана Microsoft Project. Иногда использование MS Project навязывается руководством, клиентом, процессными стандартами в компании и т.п.

Для софтверных проектов выбор MS Project обычно крайне неудачен и ниже мы объясним почему, но сначала напомним несколько простых фактов о том, как устроены софтверные проекты, особенно в контексте заказной разработки.
Читать дальше →
Всего голосов 29: ↑21 и ↓8+13
Комментарии31

Навигатор для проекта: MS Project + формулы + индикаторы

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

План – это не идеальная картина, а навигация по проекту


Почему когда вы едете на машине и попадаете в только что возникшую пробку, то ваш навигатор пересчитывает маршрут и время движения по нему, а управляя проектом, вы отказываетесь от такого полезного инструмента?
Когда реальная картина на проекте складывается не так, как было запланировано, то его руководитель начинает выстраивать в голове другие маршруты и перестает ориентироваться на первоначальный план.
Уверен также, что вам знакомо следующее мнение. План – это идеальный сценарий, в действительности все бывает по-другому, поэтому ориентироваться на план невозможно. Авторы подобных тезисов под словосочетанием «план проекта» подразумевают только первоначальный план (Базовый план). Но замечу, что проект должен также иметь другой план — Рабочий план, который будет учитывать все изменения в проекте и являться вашим навигатором по проекту. Такой инструмент будет показывать вам:
  • Ак туальное расписание всех задач
  • Узкие места
  • Прогноз завершения проекта (этапа)

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

Настройка статусов задач


Вам один раз нужно настроить программу (MS Project), используя формулы, приведенные в конце статьи, и графические индикаторы.
После чего вы сможете регулярно использовать простой и эффективный инструмент.
Итак, рассмотрим статусы задач, которые нам предстоит настроить.
image
Читать дальше →
Всего голосов 5: ↑3 и ↓2+1
Комментарии0

Планируем проект внедрения и доработки информационной системы в MS Project — быстро и красиво

Время на прочтение15 мин
Количество просмотров66K
В последнее время мне приходится много работать как с менеджерами проектов так и с заказчиками, и я все больше убеждаюсь, что основой хорошего проекта внедрения и доработки информационной системы служит план проекта, разработанный в MS Project. Его можно показать заказчику, для того что бы наглядно продемонстрировать сроки и скоуп проекта, его можно включить в договор в качестве графика работ, его можно использовать для планирования ресурсов на проекте, с помощью него можно аргументировать те или иные сроки проекта, а так же можно считать внутреннюю и внешнюю стоимость, оценивая ресурсы на специальном представлении.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии11

Spring @Transactional — ошибки, которые совершали все

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

Вероятно, одной из наиболее часто используемых аннотаций Spring является @Transactional. Несмотря на ее популярность, иногда она используется неправильно, в результате чего получается не совсем то, что задумал инженер-программист.

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

1. Вызовы в пределах одного класса

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

Аннотация не работает в методе registerAccount:

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии7

Россия 2022: как не потерять все (или хотя бы попытаться)

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


Peace, Хабр!


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


Сегодня пошел 8-ой день, как от этой уверенности почти ничего не осталось.


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

Читать дальше →
Всего голосов 191: ↑158 и ↓33+163
Комментарии712

Грабли, спрятанные в Kotlin

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

Kotlin создавался, чтобы избежать некоторых проблем Java. Но как и в любом языке, есть в нем свои особенности. Разрабатывая собственный проект, мы наткнулись на несколько таких моментов. Часть стреляет вам в колено на продакшене, только если вы ими злоупотребляете. Другая отражается на производительности высоконагруженных систем. Все эти моменты сложно заметить, поскольку их не подсвечивают специально плагины для IDE, да и в целом на первый взгляд код похож на валидный.

В этой статье мы поговорим о том, на что нужно обратить внимание.

Читать далее
Всего голосов 19: ↑16 и ↓3+16
Комментарии5

Послевкусие от Kotlin, часть 1

Время на прочтение5 мин
Количество просмотров33K
Написано довольно много статей о Kotlin, но об его использовании в реальных проектах – единицы. В особенности, Kotlin часто хвалят, поэтому я буду говорить о проблемах.

Сразу оговорюсь: я ничуть не жалею об использовании Kotlin и всем его рекомендую. Однако хочется предупредить о некоторых подводных камнях.


Читать дальше →
Всего голосов 49: ↑47 и ↓2+45
Комментарии28

Из Java в Kotlin: туда и обратно

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

В статье рассмотрены проблемы и решения, которые возникли при добавлении Kotlin в небольшой существующий микросервис на Spring Boot, написанный на Java. В рамках статьи не будут рассматриваться плюсы и минусы того или иного языка - здесь и так сломано много копий. В рамках проекта мы хотели протестировать, как будет работать Kotlin в нашем обычном стеке. Рассматривается стандартный стек Spring WebMVC (не реактивный)

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии24

Назад к микросервисам вместе с Istio. Часть 1

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


Прим. перев.: Service mesh'и определённо стали актуальным решением в современной инфраструктуре для приложений, следующих микросервисной архитектуре. Хотя Istio может быть на слуху у многих DevOps-инженеров, это довольно новый продукт, который, будучи комплексным в смысле предоставляемых возможностей, может потребовать значительного времени для знакомства. Немецкий инженер Rinor Maloku, отвечающий за облачные вычисления для крупных клиентов в телекоммуникационной компании Orange Networks, написал замечательный цикл материалов, что позволяют достаточно быстро и глубоко погрузиться в Istio. Начинает же он свой рассказ с того, что вообще умеет Istio и как на это можно быстро посмотреть собственными глазами.

Istio — Open Source-проект, разработанный при сотрудничестве команд из Google, IBM и Lyft. Он решает сложности, возникающие в приложениях, основанных на микросервисах, например, такие как:
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии7

Ускорение Maven сборки

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

Узнайте, как сделать сборки Maven более быстрыми и эффективными

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

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии7

6 способов выполнения метода при старте Spring Boot приложения

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

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

Рассмотрим различные способы выполнения метода после запускаSpring Boot.

Читать далее
Всего голосов 12: ↑11 и ↓1+13
Комментарии7

Нечёткий поиск в тексте и словаре

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

Введение


Алгоритмы нечеткого поиска (также известного как поиск по сходству или fuzzy string search) являются основой систем проверки орфографии и полноценных поисковых систем вроде Google или Yandex. Например, такие алгоритмы используются для функций наподобие «Возможно вы имели в виду …» в тех же поисковых системах.

В этой обзорной статье я рассмотрю следующие понятия, методы и алгоритмы:
  • Расстояние Левенштейна
  • Расстояние Дамерау-Левенштейна
  • Алгоритм Bitap с модификациями от Wu и Manber
  • Алгоритм расширения выборки
  • Метод N-грамм
  • Хеширование по сигнатуре
  • BK-деревья
А также проведу сравнительное тестирование качества и производительности алгоритмов.
Читать дальше →
Всего голосов 171: ↑170 и ↓1+169
Комментарии33

Kotlin + Hibernate: всё сложно

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

Невозможно представить JPA без сущностей. Однако, их определение в Котлине таит некоторое количество подводных камней. Давайте посмотрим, как избежать распространенных ошибок и использовать возможности Котлина на максимум. Внимание спойлер! Классы данных — не лучший вариант для сущностей.

В этой статье основное внимание будет уделено Hibernate, поскольку он является несомненным лидером среди всех реализаций JPA.

Читать далее
Всего голосов 15: ↑13 и ↓2+14
Комментарии5

Solar InRights: отрицание, гнев, депрессия, торг, переход на Java 16

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

Привет! Большинство разработчиков не спешат обновляться до новых версий Java. Многие опасаются, что все сломается, что появятся скрытые баги, что это займет очень много времени. Сегодня мы поделимся опытом перевода IGA-системы Solar InRights с Java 8 на актуальную Java 16, расскажем, для чего мы это сделали и почему именно сейчас. Подробно опишем, какие проблемы могут возникнуть при обновлении и как их устранить, а главное – поделимся тем, что мы в итоге получили.

Читать далее
Всего голосов 9: ↑8 и ↓1+9
Комментарии8

Можно ли подружить Stream API и JPA?

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

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

Если интересно посмотреть, что может библиотека, то прошу под кат.

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Комментарии7

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

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

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

Читать далее
Всего голосов 9: ↑7 и ↓2+8
Комментарии11

Пишем свой spring-boot-starter

Время на прочтение5 мин
Количество просмотров65K
Большинство java-разработчиков уже познакомились с проектом Spring Boot, позволяющим быстро написать приложение, использующее различные компоненты Spring Framework (Spring MVC, Spring Data и многие другие).

Всё удобство Spring Boot основано на использовании так называемых Starter, которые позволяют получить набор сконфигурированных бинов, готовых к использованию и доступных для конфигурации через properties-файлы. Но что делать, если для нужной технологии еще не написано стартера?
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии0

Первый пуск. Мечте навстречу. «Венера-1»

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

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

К стартовому окну 1961 года СССР подходил в гордом одиночестве. США, отказавшись от попытки создать аппарат в 1959 году (об этой попытке будет рассказано далее), отложили старт на 1962 год. Детальная проработка станций для запуска к Венере и Марсу началась по инициативе С. П. Королёва и М. В. Келдыша ещё в середине 1958 года, в разгар разработки первых «лунников». Слишком интересной была эта задача, и очень хотелось её решить. Самыми совершенными носителями СССР были «лунная» ракета 8К72 и её более мощная модификация – 8К73. Они обе разрабатывались под запуск аппаратов для попадания к Луне и фотографирования её обратной стороны.
Читать дальше →
Всего голосов 19: ↑18 и ↓1+23
Комментарии12

Пара слов про R2DBC и PostgreSQL

Время на прочтение4 мин
Количество просмотров31K
В последнее время я опять вижу, что усилился хайп вокруг реактивного программирования в общем, и реактивной работе с Базами данных — в частности. У меня есть пара фраз, которые я бы хотел сказать по этому поводу.

image
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии8

Как устроен ConcurrentBag в .Net

Время на прочтение6 мин
Количество просмотров38K
Среди concurrent коллекций наибольшей популярностью пользуется ConcurrentDictionary. Также часто исползуются ConcurrentQueue и ConcurrentStack.

Вообще, решение локкирования частей коллекции для thread-safe хеш-таблицы является очень простым, логичным и оттого ещё более красивым.

Структура ConcurrentDictionary даже была описана в статье на хабре Под капотом у Dictionary и ConcurrentDictionary. ConcurrentBag же является не столь популярной, так как используется в основном там, где реализуется паттерн Producer-Consumer. Причем данная структура наиболее оптимально работает тогда, когда один и тот же поток занимается добавлением и изъятием данных из коллекции. Почему так происходит, будет рассказано далее.
Читать дальше →
Всего голосов 39: ↑37 и ↓2+35
Комментарии4
1

Информация

В рейтинге
Не участвует
Откуда
Рязань, Рязанская обл., Россия
Дата рождения
Зарегистрирован
Активность