Сообщество - Лига программистов

Лига программистов

1 728 постов 11 639 подписчиков

Популярные теги в сообществе:

Теперь terrafirmacraft требует forge

Всем привет, это снова я. Перекодировал я TFC ,но теперь проблема видимо mcreator (у меня 1.18.2. (40.1.0))

Теперь terrafirmacraft требует forge Программирование, Баг, Java, Minecraft

Подскажите пожалуйста как исправить эту ошибку?

И нет, варианты по типу добавить папку versions и добавить forge в моды я уже перепробывал.А и с плагинов только классика .

log, моя версия мода и мой mcreator на github:https://github.com/MCreator/MCreator/issues/3600

updt: я знаю , что нужна более новая версия майна, но не знаю как на неё перевести mcreator

Стек

Бля, есть прям котоламповая история, ей лет 10 точно. Одна компания имела у себя очень странный стек, на который очень долго искала разработчика. Так долго искала, что уже спокойно три-четыре раза любого мидла с другого языка переучила бы. Но нет, руководителю нужен был человек с опытом именно на таком стеке. Деньги предлагали хорошие в целом, люди приходили, но всем чего-то не хватало.
И вот один человек узнав про такое от знакомого из данной компании, за месяц с хвостиком освоил стек на таком уровне, чтобы как минимум отвечать на все вопросы на собесе и заливать спокойно про свой многолетний опыт.
И пошла моча по трубам. Он торговался две недели, получив почти +45% от стартовой суммы.
Вышел на работу и в своем режиме спокойно работал, попутно изучая стек.
Конечно, история не про умного и хитрого разраба, а про долбоеба руководителя

#comment_265890797

Почему тяжело выбрать задачу для новичка в программировании

Всем привет, я работаю java разработчиком с 2014 года, и некоторое время занимался обучением программированию. Хотел бы кратко описать основную проблему новичков, касающуюся выбора задач.

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

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

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

Даже работая 8+ лет разработчиком на фултайм, я не могу сказать что изучил все особенности java, хотя с повседневным использованием проблем нет. Думаю, попытка сдачи на сертификат выявила бы много пробелов. В основном обучение происходит на практике, путем работы над задачами проекта. Иногда читаю книги по конкретным технологиям, но только после того как поработал с ними в реальном проекте.

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

Показать полностью

Карьера в IT. Системный аналитик, часть 3, диаграммы. UML

Всем привет.

Сегодня поговорим о таком прикладном инструменте системного аналитика, как UML.

Зачастую у многих возникает вопрос - а зачем вообще рисовать любые диаграммы и схемы? Мы все такие замечательные, уже научились писать требования, оформлять разными способами (даже красивыми) - в общем-то, по этим требованиям же и так всё понятно?

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

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

UML

UML – унифицированный язык моделирования (Unified Modeling Language) – это система обозначений, которую можно применять для объектно-ориентированного анализа и проектирования. Его можно использовать для визуализации, спецификации, конструирования и документирования систем.

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

Основные цели дизайна UML:

  • Предоставить пользователям готовый, выразительный язык визуального моделирования, чтобы они могли разрабатывать и обмениваться осмысленными моделями;

  • Быть независимым от конкретных языков программирования и процессов разработки (важно);

  • Обеспечить формальную основу для понимания языка моделирования;

  • Поддержка высокоуровневых концепций разработки, таких как совместная работа, структуры, шаблоны и компоненты.

Преимущества и недостатки проектирования диаграмм:

Начнем с недостатков:

  • Дополнительная трата времени, которого может и не быть;

  • Необходимость знать и понимать различные нотации.

Преимущества:

  • Возможность посмотреть на задачу с разных точек зрения;

  • Другим членам команды (включая заказчиков) легче понять суть задачи и способ ее реализации;

  • Диаграммы сравнительно просты для чтения после достаточно быстрого ознакомления с их синтаксисом.

В UML диаграммы подразделяют на два типа — это структурные диаграммы и диаграммы поведения.

Карьера в IT. Системный аналитик, часть 3, диаграммы. UML Пост, Карьера, IT, Системный анализ, Обучение, Профессия, Поиск работы, Текст, Длиннопост, Системные требования, Техническое задание, Удаленная работа

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

  • Диаграмма составной структуры

  • Диаграмма развертывания

  • Диаграмма пакетов

  • Диаграмма профилей

  • Диаграмма классов

  • Диаграмма объектов

  • Диаграмма компонентов

Диаграммы поведения показывают динамическое поведение объектов в системе, которое можно описать, как серию изменений в системе с течением времени. А к диаграммам поведения относятся:

  • Диаграмма деятельности

  • Диаграмма прецедентов

  • Диаграмма состояний

  • Диаграмма последовательности

  • Диаграмма коммуникаций

  • Диаграмма обзора взаимодействия

  • Временная диаграмма

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

Диаграмма классов

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

Три наиболее важных типа отношений в диаграммах классов (на самом деле их больше), это:

  • Ассоциация - представляет отношения между экземплярами типов. Например, человек работает на компанию, у компании есть несколько  офисов;

  • Зависимость — это форма отношения использования, при которой изменение в одном классе - влечёт за собой изменение другого, причём обратное не обязательно.

  • Агрегация - это ассоциация типа «целое-часть». При этом обе части могут жить отдельно друг от друга (машина - колесо).

  • Композиция – это такая агрегация, где объекты-части не могут существовать сами по себе (дом - комната).

Карьера в IT. Системный аналитик, часть 3, диаграммы. UML Пост, Карьера, IT, Системный анализ, Обучение, Профессия, Поиск работы, Текст, Длиннопост, Системные требования, Техническое задание, Удаленная работа

Пример:

Карьера в IT. Системный аналитик, часть 3, диаграммы. UML Пост, Карьера, IT, Системный анализ, Обучение, Профессия, Поиск работы, Текст, Длиннопост, Системные требования, Техническое задание, Удаленная работа

Стоит еще рассказать про такую вещь как "Кратность". По сути между объектами может быть всего 3 типа кратности, которые уже могут варьироваться:

  • 1 к 1. Это значит, что ровно одному объекту соответствует ровно один объект. Например - у одного человека может быть только один паспорт (не берем загранник);

  • 1 ко многим. Одному объекту может соответствовать множество объектов (множество это может быть и 0). Например - один автор написал много книг;

  • Многие ко многим. Множеству объектов может соответствовать множество других объектов. Например - много поставщиков поставляют много товаров (в том числе пересекающихся).

При этом могут быть частные варианты, такие как, как 1 : 0..* (1 объекту соответствует множество объектов или ни одного. Например, у одного покупателя может быть множество заказов, но их может и не быть совсем). Или 1 : 3..*, т.е. одному объекту соответствует минимум три других и в целом любые возможные комбинации.

Диаграмма прецедентов

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

Сущности, с которыми система должна взаимодействовать, называются actor’ами (эктор, актер), при этом каждый из них ожидает, что система будет вести себя строго определенным образом.

Актер - если упростить, то это какой-то конкретный пользователь или роль, или другая система, подсистема или класс.

Карьера в IT. Системный аналитик, часть 3, диаграммы. UML Пост, Карьера, IT, Системный анализ, Обучение, Профессия, Поиск работы, Текст, Длиннопост, Системные требования, Техническое задание, Удаленная работа

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

Карьера в IT. Системный аналитик, часть 3, диаграммы. UML Пост, Карьера, IT, Системный анализ, Обучение, Профессия, Поиск работы, Текст, Длиннопост, Системные требования, Техническое задание, Удаленная работа

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

Пример диаграммы:

Карьера в IT. Системный аналитик, часть 3, диаграммы. UML Пост, Карьера, IT, Системный анализ, Обучение, Профессия, Поиск работы, Текст, Длиннопост, Системные требования, Техническое задание, Удаленная работа

В языке UML несколько стандартизированных видов отношений между актерами и вариантами использования:

Карьера в IT. Системный аналитик, часть 3, диаграммы. UML Пост, Карьера, IT, Системный анализ, Обучение, Профессия, Поиск работы, Текст, Длиннопост, Системные требования, Техническое задание, Удаленная работа

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

Отношения обобщения - показывает, что определенный актёр или вариант использования может быть обобщён до другого актёра или варианта использования. Как на примере выше - UC "открытие счета ФЛ" и "открытие счета ФЛ" обобщены в UC "Открыть счет".

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

Карьера в IT. Системный аналитик, часть 3, диаграммы. UML Пост, Карьера, IT, Системный анализ, Обучение, Профессия, Поиск работы, Текст, Длиннопост, Системные требования, Техническое задание, Удаленная работа

Например, при предоставлении кредита в банке всегда происходит проверка платежеспособности клиента.

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

Карьера в IT. Системный аналитик, часть 3, диаграммы. UML Пост, Карьера, IT, Системный анализ, Обучение, Профессия, Поиск работы, Текст, Длиннопост, Системные требования, Техническое задание, Удаленная работа

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

Диаграмма состояний

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

Другими словами - такая диаграмма показывает то, как сущность переходит из одного состояния в другое.

Карьера в IT. Системный аналитик, часть 3, диаграммы. UML Пост, Карьера, IT, Системный анализ, Обучение, Профессия, Поиск работы, Текст, Длиннопост, Системные требования, Техническое задание, Удаленная работа

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

Если рассматривать схему из примера, то это работает примерно так:

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

Система находится в этом состоянии, до тех пор пока снова не срабатывает определенный триггер, например - получение сигнала от датчика температуры о том, что она вернулась в норму. В этом случае вентиляторы останавливаются и система снова переходит в статус = "Бездействие".

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

Послесловие.

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

Плюс, многие разработчики очень просят, чтобы диаграммы добавлялись в ТЗ, потому что им так намного проще осознавать что нужно сделать и что за чем идет (особенно актуально для интеграций). Да и в целом большинство людей визуалы.

P.S. Про UML это еще не всё, но пост получается очень большим, поэтому разобью на две части и добью остаток про UML в следующей. Заодно там же начну рассказывать про BPMN.

P.P.S: Завтра (25.02.2023 в 12.00 московского времени) у меня в телеграмме пройдет эфир где я буду отвечать на разные вопросы про карьеру/профессию/перспективы/развитие и т.д. В общем на все вопросы, которые мне будут задавать участники эфира.

Ничего продавать не буду, поэтому если хотите поболтать\послушать или даже есть какие-то вопросы на указанные темы - приходите, буду рад всем. Ссылка на телеграмм в моем профиле.

Показать полностью 10

Прошу ChatGPT объяснить как работает выражение меняющее местами два элемента массива:

Прошу ChatGPT объяснить как работает выражение меняющее местами два элемента массива: ChatGPT, Искусственный интеллект, PHP, Программирование, Длиннопост

Особенно понравилось про опечатку...

Показать полностью 1

В IT

Здравствуйте!
Хотела бы послушать мысли / советы

Я девушка, работаю в ИТ сист. аналитиком, мне 31 и... на каких бы позициях в ИТ я бы ни была, мне сложно вникать во все технически сложное - в RestAPI, в разработку, в Кафку еле-еле и то в основы, опеншифт вообще не поняла. Суммарно в ИТ 3 года, зп 200+, ит-вышка в молодости с устаревшими знаниями. Выезжаю только на развитых софт-скиллах: при обсуждении доработок ловлю удачные идеи и записываю их или делаю по аналогии, сложные технические митинги записываю на диктофон и переслушиваю, переписывая нужное; активно составляю документации и схемы по проекту - чтобы без понимания открыла и вспомнила что там и как; со мной комфортно работать - я обязательна, открыта к корректировкам и обратной связи, избегаю/не создаю конфликтов и пишу исчерпывающую документацию, умею общаться с разрабами и с бизнесом.
Ит-вышку закончила таким же макаром - оптимизацией и фиксацией конспектов + шпорами на экзаменах.
Собесы так же, на конспектах (ну и тупо смелости хотеть такую зп, что уж). Чтобы устроиться на последнее место мне пришлось пройти 20+ собесов и в итоге 1 оффер и еще 2 ждать не стала.
Единственное, что уложилось в мозг - что-то простое, вроде sql-запросов, json, xml, bpmn, uml и понятие асинхрон/синхрон. Но и тут все на конспектах держится.
Все конспекты веду в понятном каталоге и нахождение+открытие занимает секунд 5.
И... я иногда думаю: что я делаю в ИТ? Но удаленка + зп - я такое ни в одной сфере не найду (вебкам/эскорт не предлагать). Куда развиваться - хз, знания просто отказываются ложиться в мозг.

Отрицательная ширина/высота у HTML элемента

Читаю учебник по JS, натолкнулся на строки:

отрицательные значения width/height означают, что прямоугольник «растет» влево-вверх из правого угла.

Вот прямоугольник с отрицательными width и height (например, width=-200, height=-100):

https://learn.javascript.ru/coordinates#koordinaty-otnositel...

Размышляю, как осознанно создать html элемент с отрицательной шириной? В css отрицательное значение не поместишь(да и зачем?). Через transform его можно перевернуть, но значение ширины от этого не поменяется.

Тем ни менее, чувствую автор не врет и ошибки иногда возвращают отрицательную ширину.

Каждый год зимой происходят странности

Например, что-то пропадает. У одних важные вещи, у других новогоднее настроение. В этот раз — потерялись помощники Деда Мороза. Но есть хорошая новость: вы можете их найти! Вернее, помочь им найтись…

Посоветуйте литературу

Здравствуйте, буду краток, решил изучать Linux. Большая просьба кто в теме, посоветуйте что почитать( конкретные названия книг или методичек). Есть электронная книга скачаю и буду читать в свободное время. Интересует администрирование линукса, основы, принципы работы и прочее. Прошу воздержаться от идиотских комментариев. Без рейтинга.

Отличная работа, все прочитано!