Задать вопрос
  • Откуда браузеры берут favicon если его нет на сайте?

    serso
    @serso
    ...
    <link href="/images/favicon.ico" type="image/x-icon" rel="shortcut icon">
    ...
    
    Ответ написан
    Комментировать
  • maven: использование модуля в качестве плагина

    serso
    @serso
    Естественно Maven умеет работать с зависимыми друг от друга модулями, но важно чтобы у всех модулей и их зависимостей были правильно прописаны
    <groupId>, <artifactId>, <version>, <packaging>/<type>

    На этапе сборки Maven покажет что-то типа:
    Scanning for projects...
    Reactor build order:
    module-a
    module-b

    откуда можно понять как Maven разрулил зависимости.
    В вашем случае (когда модуль является плагином), честно скажу что будет не знаю, но почему-то мне кажется, что такой сценарий не предусмотрен разработчиками Maven'а. Поэтому всегда можно (да и нужно, наверное) вынести данный модуль в отдельный проект и установить его один раз.
    Ответ написан
  • Получение версии из JIRA перед сборкой в Jenkins?

    serso
    @serso
    У JIRA есть API — через него можно номер версии получить. C Jetkins не работал, но скорее всего к нему Ant можно подключить, который и будет вытягивать нужную версию.
    Ответ написан
  • Редирект с www.example.com на example.com (apache2, ubuntu 10.04)?

    serso
    @serso
    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^se\.solovyev\.org$
    RewriteRule ^ se.solovyev.org%{REQUEST_URI} [R=301,L]

    Код на гитхабе
    Ответ написан
    1 комментарий
  • Расчет размеров кастомного view?

    serso
    @serso
    Раз уж задаёте такие вопросы, то начинать нужно отсюда: Android User Interface. Потом ViewGroup.LayoutParams

    Сразу предупрежу — расчёт ширины/высоты руками — неправильный способ работы с GUI.
    Ответ написан
  • android + офферные системы

    serso
    @serso
    По-хорошему, вам действительно понадобится свой сервер для хранения всей информации и проверки действий игрока.

    Но можно попробовать выкрутиться и с помощью андроид.маркета: 1. Создаёте несколько бесплатных продуктов
    2. Каждый продукт — некая сумма в вашей валюте (например, 1р, 2р, 5р, 10р, 50р, 100р, если валюта рубли)
    3. Вы программно управляете покупкой валюты (насколько я понимаю — пользователю всё равно будет предложено зайти на андроид.маркет для подтверждения оплаты покупки (даже бесплатной)) за какие-нибудь действия игрока

    Минусы очевидны: если приложение взломали, то злоумышленник может купить вашу валюту в любом количестве, т.к. это контролируется только на стороне клиента.
    Ответ написан
    1 комментарий
  • Класс для работы с датой в Java?

    serso
    @serso
    Как уже советовали выше — Joda. Но есть ещё одна альернатива — time4j.
    Совет от себя — храните дату всегда в одной временной зоне, и только при выводе переводите в нужную: stackoverflow.com/questions/508019/jpa-hibernate-store-date-in-utc-time-zone
    Ответ написан
    Комментировать
  • Junior iOS Developer - тестовое задание и вопросы на интервью?

    serso
    @serso
    Обычно когда набирают Junior'ов НЕ требуется знания предметной области (в вашем случае — программирования под iOS). Скорее всего будут спрашивать общие вопросы, может быть попросят написать тестовое задание.

    Важно знание основ ООП, структур данных, алгоритмов, самого ЯП. А программировать под конкретную систему вас научат в ходе испытательного строка.
    Ответ написан
    Комментировать
  • Курсы по программированию под мобильные платформы Android и iOS?

    serso
    @serso
    Официального сертификата под Андроид от Гугла — нет.
    Есть всякие левые конторы, которые выдают свои сертификаты, например devsquare.com
    Ответ написан
    Комментировать
  • Какой вариант вызова диалога вы используете в Android?

    serso
    @serso
    Можно поинтересоваться почему так писать не рекомендуется?
    Только что пробежался по guide'у, но ничего вразумительного не нашёл кроме замечания, в котором, кстати, не объясняются причины такого поведения.
    Ответ написан
  • Какой вариант вызова диалога вы используете в Android?

    serso
    @serso
    Я использую
    android.app.AlertDialog
    с его
    android.app.AlertDialog.Builder
    Польность управляемый диалог — можно использовать три кнопки (можно названия разные вешать), вешать свою view, listener'ы на нажатия кнопок и т.д. Создаётся каждый раз заново — динамически.

    А для того, чтобы диалог не исчезал — достаточно указать a:configChanges=«orientation» для actvity, где он был вызван.
    Ответ написан
    3 комментария
  • Code Review Java?

    serso
    @serso
    Пожалуй начну жёсткую критику:
    1. Проект под мавеном — это хорошо, но плохо что он не поддерживает
    стандартную структуру каталогов проекта
    2. Config.parseConfiguration() — зачем самомоу парсить? Для этого есть уже написанные библиотеки типа Commons CLI для работы с коммандной строкой и Commons Configuration для хранения настроек (естественно, это можно заменить на что-нибудь другое но посыл, я думаю, понятен)
    3. Java code conventions нужно поддерживать — название класса isCloneable, имя пакета parserHandlers и
    private List<SuiteResult> _results;
    не есть хорошо
    4.
    if ( ... && command != -2)
    — это ад. Что значит константа -2?
    5. Нет такого слова Formater, нужно Formatter
    6.
    stringBuilder.append("[" + result.getTestSuiteName() + "]\r\n")
    — используете StringBuilder и зачем-то конкатенируете строки
    7.
    if (Config.isRunnable() == false)
    — так не пишут, используйте операцию отрицания.
    8. Вместо ParserHelper и статичных методов опишите интерфейс — мало ли откуда входные данные придётся парсить (Естественно, в качестве дефолтной реализации используйте свой код для парсинга из xml)
    9.
     public Command[] getCommands() {
            return commands.toArray(new Command[commands.size()]);
        }
    — почему бы список не возвращать? Вам действительно где-то нужен массив?
    10.
                        } catch (CloneNotSupportedException ex) {
    — выбрасывние CloneNotSupportedException — ошибра разработчиков java, с своих классах рекомендуется убирать из сигнатуры.

    Я думаю остановлюсь на этом. В плане архитектуры настоятельно рекомендую глянуть как реализована, например, библиотека jUnit
    Ответ написан
    1 комментарий
  • Маппинг классов?

    serso
    @serso
    На сколько я понимаю проблему — вам достаточно одной аннотации, типа:
    public @interface ClassReference {
    	Class<?>[] values();
    }


    Тогда можно связать один класс с N классами:
    1. Если в values указан 1 класс и у этого класса стоит «обратная» аннотация на этот класс — 1 к 1
    2. Если в values указано N классов и у них у всех «обратная» аннотация на этот класс — 1 к N
    3. Если в values указано N классов и у них в свою очередь указаны связки к другим классам — N к M

    PS Если это не решение, то уточните вопрос.
    Ответ написан
  • Как хранить общие данные в Spring?

    serso
    @serso
    Нет, не нормально (да и вообще в Spring'e хранить что-то статично — верх безумия — с его-то Dependency Injection).

    То что вы делаете называется кешированием данных. Оно бывает разное в зависимости от целей, в вашем случае оно на уровне приложения (т.е. один инстанс кеша на всё приложение). На сколько я помню в Spring'e есть механизм объявления бина (bean), при этом есть возможность задать его область видимости (scope). Так вот ваш случай — singleton или (если есть конечно) application bean.

    По поводу многопоточности — естественная проблема общих ресурсов. Тут, к сожалению, и Spring вам не поможет — нужно реализовывать самому используя конструкцию synchronized.
    Ответ написан
    Комментировать
  • Какой объем знаний должен быть у Senior Java Developer

    serso
    @serso
    Мы недавно рассуждали об абстрактном Senior Developer'е и пришли к решению, что Senior (в отличие от Junior) — это тот, кто может может решить поставленную программистскую задачу самостоятельно. Соответственно, Java EE Senior Developer — это разработчик, который самостоятельно может решить задачу, которая связана с разработкой Enterprise приложения.

    Конечно есть синтетические тесты для «выявления» Senior'а, но мне кажется, что это всё ерунда — главное решение реальных практических задач.
    Ответ написан
    3 комментария
  • Нормальна ли такая архитектура обмена данными?

    serso
    @serso
    Не сложно ли? Как будете синхронизировать операции над данными?

    Лучше сделать так: менеджер из офиса и пользователь из интернета работает с одним web-интерфейсом (=одной программой). Соответственно, имеют доступ к схеме базы (кто-то на запись, кто-то на чтение). Выделяются две схемы — одна доступная из приложения, вторая — нет. Общение между двумя схемами идёт по какому-нибудь протоколу и только внутри. Получаем: один код для работы пользователей с базой, разделение схем по уровню доступа.
    Ответ написан