• Почему в Android Java и PHP HMAC SHA 256 разные результаты?

    neuotq
    @neuotq
    Прокрастинация
    Если верить Стэковерфлоу, разница в обработчике строк на Андроиде в Джаве есть, чтобы работала так же как на декстопе нужно добавить ключ Base64.NO_WRAP
    Base64.encode("foobar".getBytes(), Base64.NO_WRAP);
    Ответ написан
    Комментировать
  • Как загрузить файлы локализации вне classpathа?

    @Hland Автор вопроса
    Проблема была в том, что чтение файла не осуществлялось. Потому, что путь считается относительным.
    В доке спринга при загрузке ресурсов сказано, чтобы использовать абсолютный путь надо использовать префикс "file". В resource bundle (ReloadableResourceBundleMessageSource) при этом файл читается как относительный текущей jar.
    Ответ написан
    Комментировать
  • Как хранить в базе вложенный список объектов у которых нет поля id?

    Ну... Похоже для classes естественный ключ будет (id, name).
    Где id - строки в School.
    name - это поле name в Classes
    :-)
    Ответ написан
    1 комментарий
  • Как оптимизировать алгоритм?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    У вас же в задаче сказано, что A[i] может равняться MAXINT. Естественно, при добавлении i вы выходите за пределы целочисленного типа.
    Но, вам известно, что N не может быть больше 100000. Значит анализировать дальше этой границы смысла не имеет.
    rangeMax[i] = A[i] > 100000 ? 100001 : i + A[i];
    Ответ написан
    Комментировать
  • Ошибка "No identifier specified for entity" как лечится?

    Нужно было сделать составной ключ.

    @Data @Entity @Table
    public class Country {
        @Id
        @Column(columnDefinition = "smallint")
        private int code; // ISO 3166-1 numeric
        @Column(nullable = false, unique = true, length = 64)
        private String locality; // Локальное название страны (на родном языке страны)
        @Column(columnDefinition = "char(2)", unique = true, nullable = false)
        private String codeAlpha2; // ISO 3166-1 alpha-2
        @Column(columnDefinition = "char(3)", unique = true, nullable = false)
        private String codeAlpha3; // ISO 3166-1 alpha-3
        @OneToMany(mappedBy = "countryTranslatePK.country")
        private Set<CountryTranslate> translate = new HashSet<>();
    }
    ...
    @Data @Entity @Table
    public class Language {
        @Id
        @Column(columnDefinition = "CHAR(2)")
        private String code; // Код языка по стандарту ISO 639-1
        @Column(unique = true, nullable = false, length = 24)
        private String laguage; // Локальное название языка
    }
    ...
    @Data @Entity @Table
    public class CountryTranslate {
        @EmbeddedId
        private CountryTranslatePK countryTranslatePK;
        @Column(nullable = false)
        private String translate;
    }
    ...
    @Data @Embeddable
    public class CountryTranslatePK implements Serializable {
        @ManyToOne @JoinColumn(name="language_code")
        private Language language;
        @ManyToOne @JoinColumn(name="country_code")
        private Country country;
    }
    Ответ написан
    2 комментария
  • Что нужно изучить чтобы сделать хотя бы простой java сервер?

    Делать простой java сервер не надо.
    Он уже есть tomcat или jetty.
    Можно воспользоваться Spring-boot, но внутри у него все равно будет tomcat или jetty.
    Насчет spring-boot.
    В нем много "магии".
    Можно в ней не разбираться, в большинстве случаев она просто работает, но иногда нет.
    Поэтому очень рекомендую понять как работает Spring Framework и Spring Boot.
    Ответ написан
    Комментировать
  • Плохо ли если у меня функции (например) некоторые написаны в camelCase, а некоторые under_score? Нужно ли менять название, если разные?

    Вообще-то не очень хорошо.
    Желательно придерживаться одного стиля.
    Ответ написан
    Комментировать
  • Почему bool весит целый байт?

    batChar
    @batChar
    Потому, что архитектура вычислительной системы не способна адресовать БИТ памяти, минимальная единица - байт.
    Ответ написан
    2 комментария
  • Ноль впереди сам удаляется в столбце типа (int) в mysql, как исправить?

    SagePtr
    @SagePtr
    Еда - это святое
    Добавить полю аттрибут zerofill, тогда оно будет с нулями возвращаться.
    Ответ написан
    5 комментариев
  • Мультиязычность сайта и поисковые системы?

    kopcap_va
    @kopcap_va
    SEO Consultant
    Начать стоит с ознакомления со справкой Google - многие моменты хорошо описаны. Также есть видео, где сотрудник Google Андрей Липатцев рассказывает про мультиязычные сайты - вебинар на youtube.

    Если вкратце, то можете выбирать любой удобный для вас вариант (поддомен, каталог, отдельный сайт) - в Google Search Console возможно установить таргетинг на конкретную страну в том числе для конкретного раздела на сайте (например /en/).

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

    Разницы в ранжировании поддоменов/каталогов нет, поэтому смотрите, с каким из вариантов вы сможете наиболее эффективно работать.

    Например, в моей практике была ситуация, когда надо было внедрить hreflang на сайт с 4 языковыми версиями, но из-за того, что URL у каждой версии отличались не только каталогом, но и языком у программистов не сразу получилось настроить это дело корректно из-за особенностей системы. Это вылилось в дополнительные затраты для компании.

    p.s. Яндексом буржуи не пользуются, поэтому ориентируйтесь в первую очередь на Google.
    Ответ написан
    2 комментария
  • Как работать с полем типа jsonb с помощью JPA/Hibernate?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега PostgreSQL
    Седой и строгий
    hibernate-types-52 поддерживает jsonb
    Ответ написан
    2 комментария
  • Зачем нужна двунаправленная связь в hibernate?

    jaxtr
    @jaxtr
    JavaEE/Spring-разработчик
    Пример. Есть 2 класса: пользователь и комментарии:
    class User {
        int id;
        String name;
        List<Comment> comments;
        // get/set-методы
    }
    
    class Comment {
        int id;
        String content;
        User user;
        // get/set-методы
    }


    В двунаправленной связи мы можем получить информации о пользователе при обращении к объекту комментария:
    comment.getUser().getName();

    Но так же можем получить информацию о комментариях пользователя:
    user.getComments().size();

    Т.е. смысл двунаправленной связи в возможности получения доступа к связанным объектам в любом направлении. Хотя с данной фичей надо работать осторожно, т.к. один запрос может приводить к выбору большого количества лишних данных.
    Ответ написан
    Комментировать
  • Как максимально четко и уверенно рассказать про ООП?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Я недавно поймал себя на мысли, что я использую все это, но не могу адекватно дать определение.
    Я тоже, вот, не знал, но вспомнил. ;)
    Ответ написан
    3 комментария
  • Есть ли сайт, где собраны общепринятые практики программирования?

    @akimdi
    Вы спрашиваете
    где собраны общепринятые практики ?

    Нечто подобное собрано в топиках на гитхабе
    например есть так называемые Awesome Lists, где кто то собирает лучшие практики, кто-то собирает курсы, а кто-то шаблоны проектирования и т.п. и т.п. Их там много можно найти на любой вкус.
    Ответ написан
    1 комментарий
  • Чем отличаются JSON от JSONB?

    @curator
    JSONB — двоичная разновидность формата JSON, у которой пробелы удаляются, сортировка объектов не сохраняется, вместо этого они хранятся наиболее оптимальным образом, и сохраняется только последнее значение для ключей-дубликатов. JSONB обычно является предпочтительным форматом, поскольку требует меньше места для объектов, может быть проиндексирован и обрабатывается быстрее, так как не требует повторного синтаксического анализа.

    Источник: https://habrahabr.ru/post/282764/
    Ответ написан
    1 комментарий
  • Переменные заданные в /etc/profile.d/xxx.sh не видны для root, как лечить?

    sotvm
    @sotvm
    Умный поймёт, а дураку и так всё равно.
    будь в группе sudo
    добавь в /etc/sudoers (чтобы не ипало мосх на ввод пароля
    %sudo ALL=(ALL) NOPASSWD:AL
    лучше через vi или nano
    я редактирую через Geany или редактором Double Commander (не было проблем
    Ответ написан
    Комментировать
  • Счего начать изучение DevOps?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Saboteur неплохо ответил(что не отменяет того что все остальные ответившие тоже правы)
    Девопс - это практики. Это не набор инструментов( инструменты используются на определенных этапах, реализация которых необходима для приближения к идеалу), однако определенные необходимые инструменты опять же есть.
    Про девопс можно прочитать очень много информации, но я, как админ (win-админ :D) вижу ситуацию для вас, как и любого, с опсовой основой, примерно так:
    1. Жирным вы выделили вопросы который для вас вот конкретно сейчас не играют ни малейшей роли. Дмитрий Шицков и Saboteur написали почему: зависит от проекта.
    2. Завет любого ops-а: автоматизируй всё что можно
      Если выбор между configuration management (chef, ansible, puppet и тд) и скриптами - то лучше первое. Хотя и тут можно поспорить, у меня в проекте chef-ом автоматизированное не очень-то используется на последнем этапе доставки в прод, поскольку мы все равно запечатываем машину и запускаем в AWS с asg без пост-конфигурации. Тут можно до посинения спорить хорошо это или нет, но скрипты в идеальном мире проигрывают DSL
    3. Вы пишете код для автоматизации
      Вам понадобится git (который тянет за собой git-хостинг: bitbucket, github, gitlab и тп.) и навыки правильной работы с гитом. Для отслеживания и планирования изменений - понадобится какой-нибудь таск трекер (jira, таск трекер встроенный в gitlab, что-то другое).
    4. Инфраструктура как код
      Автоматизируй всё означает автоматизацию развертывания инфраструктуры
      Здесь уже вступают в силу особенности вашего окружения - в облаках вы скорее всего захочете использовать terraform или, например, CloudFormation в AWS - встроенное средство оркестрации, или же будете сразу все запускать в контейнерах - docker , kubernetes используя соответствующие инструменты.
    5. Мониторинг
      Без правильного и подходящего вашему продукту мониторинга(+логирования) жить нельзя. И это было еще до DevOps тренда - это классика администрирования. Здесь ничего не посоветую, с Zabbix-ом сам не ужился, переехал на influx и прилегающие (TICK stack). Для логирования - graylog, ELK. В некоторых частях используется prometheus который в том числе и для кубера удобен. В общем - с чем подружитесь.


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

    Для примерного осознания всего цикла можно посмотреть на (картинка относительно рандомная,таких много, два года назад я ориентировался по другой, с более подходящим мне списком инструментов, но найти не могу =( )
    Slide1.jpeg

    P.S. Еще раз хочу отметить что описанное выше основано на личном опыте и это - движение в devops со стороны ops. Есть те, кто сразу пытаются строить все по девопсу параллельно обучаясь опсовой части и девелоперской( видел таких, не у всех получалось ). Есть те, кто двигается в девопс со стороны Dev. Все будут иметь разные мнения что важно для того, чтобы начать
    Ответ написан
    1 комментарий
  • Google.play: «Не поддерживается на Вашем устройстве»?

    mik_os
    @mik_os
    Главные параметры, от которых зависит доступно ли приложение в маркете:
    1) ro.build.fingerprint, прописывается в /system/build.prop
    2) Возможности устройства: это xml-файлы в папке /system/etc/permissions
    3) Ну и не ограничил ли автор распространение приложений в конкретной стране

    Так как у вас кастомная прошивка то возможно либо пункт 1, либо пункт 2 сконфигурированы не правильно. Сравните с оригинальной прошивкой, поправьте, проверьте, отправьте патч в CM :)
    Ответ написан
    2 комментария