• Насколько полезен Hibernate? Сильно ли он упрощает работу?

    @svsanek
    Смотри. Что дает Hibernate - мапинг объектов на реляционную базу. И тут сразу куча вопросов - а как отображать ООП на реляционную модель (где нет наследования, инкапсуляции, полиморфизма). Отсюда много сложностей. Еще возникают такие вопросы - ты получил объект из базы, передал его в какой-нибудь UI - там 10 раз поменяли одно и то же поле - так 10 раз делать апдэйт базы или один? Хайбернейт должен догадаться или программист ему подсказать. Отсюда появляются всякие циклы жизни сущности, кэши и куча всякой дополнительной головной боли. Это если не касаться наследования, отношений один к одному, многие ко многим.
    Мой вердикт - хайбернейт несет много дополнительной нагрузки - не зря по нему столько книг написано.
    Но у него есть и плюсы

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

    Итак плюсы
    1. Ты продолжаешь работать с объектной моделью и забываешь про все эти 100000+ строк sql запросов.
    2. Тебе легко добавлять новые сущности, рулить транзакциями, про оптимизацию думают за тебя (кэши)
    3. Ты вообще забыл что такое джойны и по каким полям. Ты начинаешь верить в волжебство. Квэри билдеры просто сумасшедшие. А на груви код в одну строку просто сводит с ума!
    4. У тебя реально много таблиц (сущностей)
    5. Ты познал хайбернейт и оформил код конвеншн на проекте и вообще забыл, что такое проблемы

    Минусы
    1. Если у тебя 2 таблицы - нафига тащить тонну сложностей в свой проект. Посмотри книги по хайбернейту. Книга только по одной технологии джава. Целая книга!!!
    2. Ты должен четко понимать цикл жизни сущности. Когда она в сессии, когда нет, как она попадает в сессию, что с кэшем, а если у сущности релейшеншипы, а если лэйзи лоадинг. Просто тонна всего.
    3. Ты понимаешь, что ты перестаешь рулить запросами - и что-то оптимизировать нереально сложно. Что в sql правиться одной строчкой - используя хайбернейт неудивительно если ты перепишешь всю иерархию наследования с попутным рефакторингом контроллеров, юйа и т.д.
    4. В один момент ты можешь понять, что пропустил тему с лэйзи лоадингом и начал класть на лопатки оракл. А знающие люди подскажут сколько стоит это поправить.
    5. И да. Если тебе нужен перформанс - пиши запросы сам. ORM тут явно не подойдет.

    По-этому - просто составь табличку плюсов и минусов и реши.
    Хайбернейт крут, только когда он обоснован
    Ответ написан
    Комментировать
  • Что значит двойное двоеточие в java?

    @cthulhudx
    Указатель на метод.

    Пример использования:
    List<String> list = ... 
    list.stream()
    .filter(YourPredicates::somePredicate)
    .forEach(System.out::println);
    Ответ написан
    1 комментарий
  • Почему github, а не gitlab?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Если уж сравнивать разные сервисы, то стоит расставить их в порядке популярности:

    1. GitHub
    2. BitBucket
    3. GitLab

    Немного подробнее:

    1. GitHub

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

    - в бесплатном акке нет приватных репо
    - аккаунт организации создается из аккаунта юзера, не совсем удобное управление

    Обновление от мая 2020: бесплатные приватные репозитории давно есть, управление командами/организациями сильно улучшилось + появился еще целый вагон фич.

    2. BitBucket

    + неограниченное количество приватных репо бесплатно
    + аккаунт компании - виртуальный, легче и удобнее управлять
    + куча сторонних интеграций тоже, но меньше чем GitHub

    + / - интеграция с продуктами Atlassian (например, Jira) - кому-то огромный плюс, кому-то минус. Битбакет популярен на западе у энтерпрайзов

    3. GitLab

    + бесплатные приватные репо
    + self-hosted версия (но это уже из другой оперы)

    - самый молодой, совсем юный, есть баги, функциональность еще бедная и не выпилена
    - мало внешних интеграций

    Обновление от мая 2020: Функциональность GitLab давно уже нельзя назвать бедной - в некоторых аспектах они и GitHub превзошли.
    Ответ написан
    2 комментария
  • Как найти и удалить все комментарии, записи, фотографии и видео в вк?

    littleguga
    @littleguga
    Не стыдно не знать, а стыдно не интересоваться.
    VK api.

    Комментарии - можно получить так.
    Сначала проходим этим методом -> получаем записи, где оставили комментарии -> в зависимости от типа ответа проходим по этой записи getComments(в теме/записи/видео/фото) - дальше записываем id наших комментов, например в отдельный файл, и в итоге прогоняем delet'ом.

    Раньше vkbot этим занимался, но автор его забросил. Вам придется написать софт самому.
    Можете посмотреть еще в сторону vkOpt, там вполне может быть похожий функционал.
    Ответ написан
    7 комментариев
  • Как запустить сайт на своем компьютере?

    XNoNAME
    @XNoNAME
    Эникейщик
    Также можно отредактировать файлик hosts
    -windows: C:\Windows\System32\drivers\etc\hosts
    -linux: /etc/hosts

    Добавить такую запись:
    127.0.0.1 mydomain.com

    и ваш локальный сайт будет доступен по адресу http://mydomain.com
    Ответ написан
    Комментировать
  • Как правильно прочитать ввод строки с пробелами в консоле?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Как уже заметил SilentFl правильно использовать bufio.
    bufio.NewReader(os.Stdin) если вам нужен Reader или
    bufio.NewScanner(os.Stdin) если нужен Scanner

    myscanner := bufio.NewScanner(os.Stdin)
    myscanner.Scan()
    line := myscanner.Text()
    Ответ написан
    2 комментария
  • Как сделать выравнивание формы по центру?

    aliencash
    @aliencash
    Партизан
    Если известен размеры формы авторизации, например width: 400px; height: 200px;

    .form {
    position: absolute;
    top: 50%;
    left: 50%;
    margin: -100px 0 0 -200px; /* отступы равны половинным размера формы */
    z-index: 9999; /* чтобы форма была поверх всех элементов страницы */
    }
    Ответ написан
    2 комментария
  • Rust или Go(golang)?

    Lerg
    @Lerg
    Defold, Corona, Lua, GameDev
    Оба перспективны и оба будут успешны в будущем, Go уже сейчас, а Rust чуть попозже, так как ещё в активной разработке. Их применение отличается и у каждого есть значительные отличия. Каждый может выбрать язык для своих целей и своих предпочтений.
    Ответ написан
    Комментировать
  • C# to Java или Чего стоит выучить новый язык, зная прежний?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Требование совершенно справедливое, т.к. зная один единственный язык стать хорошим (тем более, пригодным для должности ведущего) программистом просто невозможно. Как абсолютный минимум нужно знать:
    - ассемблер и устройство процессоров,
    - минимум один "взрослый" язык (C/C++/Pascal)
    - минимум один VM-ориентированный язык (C#/Java)

    Зная C#, выучить синтаксис Java - вопрос одного-двух дней, но научиться правильно писать на нем программы - это как минимум один-два серьезных проекта, т.е. годик-другой. Однако, не расстраивайтесь - после третьего языка "изучение" последующих уже практически не напрягает. А потом наступает состояние, когда "новых" языков не остается - есть лишь языки, которые еще не использовал... но если нужно - просто берешь и используешь, "изучая" их, практически, по ходу дела. Вот именно оно и есть признак пригодности для должности ведущего программиста.
    Ответ написан
    1 комментарий
  • Что лучше учить новичку Java или Python?

    Плюсану джаву. Популярнее, так что после базового изучения будет проще устроиться куда-то джуном и там уже набираться опыта на реальных проектах. Статическая типизация дисциплинирует, на начальном этапе это важнее, чем возможность писать более лаконичный код. В мире джавы более заморочены на архитектуре и паттернах, быстрее придёт понимание этих вещей, а это пригодится в дальнейшем независимо от того, на чём будете писать. Шире выбор направлений развития: веб, десктоп, андроид, бигдаты всякие. Ну и тупо средняя температура по больнице зарплата выше :)
    Ответ написан
    Комментировать
  • Как связать Java и C++ в экстремальных условиях?

    kicum
    @kicum Автор вопроса
    Вот в такой ситуации у меня получилось следующее, по шагам:
    1. Берем target.dll и декомпилируем ее, в результате получаем target.h — файл.
    2. Берем target.so для Linux и так же декомпилируем ее, в результате получаем target-linux.h — файл.
    3. Сравниваем их(мне повезло и они одинаковые более менее по сигнатурам функций и константам).
    4. Скармливаем вот этой утилите — JNAerator, она нам выдает Java-код для вызова с помощью фреймворка JNA
    5. Рефакторим сконструированный Java — код и работаем с ним(у меня получилось что функции в сгенерированном коде чуть отличаются по названиям)
    6. Пишем декоратор для предыдущей реализации.

    Ну вот и все!
    Ответ написан
    2 комментария
  • Java developer: знание классических алгоритмов — о чем это?

    @1nd1go
    Хе-хе. В 99% случаях, буду спрашивать о том как работает хэшмэп, какая скорость доступа к элементам ArrayList vs LinkedList, HashMap.

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

    Собеседующие с ЧСВ over 9000, могут спросить какой алгоритм используется в TreeMap и что он из себя представляют.

    Книги, советуемые выше, бесспорно правильные, но давайте трезво смотреть на жизнь java программиста, их собеседования, людей, которые собеседуют и какие задачи в общем-то будут стоять перед кандидатами, когда они приступят.
    Ответ написан
    Комментировать
  • Защита программы от декомпиляции Java, C++, С#

    @xredor
    C++
    И поручить разработку плохому архитектору, он запутает код лучше любого обфускатора.
    Можно подумать заодно о собственном упаковщике, кое-кого остановит.
    Ответ написан
    1 комментарий