• Как заработать первые деньги на игре без доната?

    riky
    @riky
    Laravel
    можно сделать две версии игры платную и бесплатную. в платной больше уровней.
    в бесплатной также можно рекламу, в платной без.
    Ответ написан
    Комментировать
  • Как правильно настроить viewResolver в Spring?

    zolt85
    @zolt85 Автор вопроса
    Программист
    Проблема была в том, что я использовал класс org.springframework.web.portlet.ModelAndView вместо
    org.springframework.web.servlet.ModelAndView в классе контроллера. Всем спасибо.
    Ответ написан
    Комментировать
  • Какие есть близкие альтернативы NotePad++ на Mac?

    @pchelovek
    HTML-верстальщик
    Пользуйтесь плагином Emmet. Обзор здесь habrahabr.ru/post/170565
    Его можно установить в Sublime Text , но я рекомендую бесплатный Brackets brackets.io
    Brackets из коробки не выделяет фоном всё содержимое, но выделяет фоном теги.
    Ответ написан
    1 комментарий
  • Какие есть близкие альтернативы NotePad++ на Mac?

    @setbenson
    coda 2 - полностью мне заменила notepad++, когда пользовался windows
    Ответ написан
    Комментировать
  • Как правильно переписать Spring конфиг с xml на Java?

    @PqDn
    Совет не смотри по спринг буду видео уроки, читай официальную доку для конкретной версии твоего спринг буда
    вот например для самой последней версии 2.0.M6. Там всё как для детей написано.
    Ответ написан
    Комментировать
  • Как быть с authorizeRequests после переноса с XML в Java Аннотации?

    В самом сообщении об ошибке есть рекомендация как это исправить:
    role should not start with 'ROLE_' since it is automatically inserted. Got 'ROLE_ADMIN'


    Если посмотреть исходники SpringSecurity там следующая картина:
    private static String hasAnyRole(String... authorities) {
            String anyAuthorities = StringUtils.arrayToDelimitedString(authorities, "','ROLE_");
            return "hasAnyRole('ROLE_" + anyAuthorities + "')";
        }
    
        private static String hasRole(String role) {
            Assert.notNull(role, "role cannot be null");
            if (role.startsWith("ROLE_")) {
                throw new IllegalArgumentException("role should not start with 'ROLE_' since it is automatically inserted. Got '" + role + "'");
            }
            return "hasRole('ROLE_" + role + "')";
        }


    Соотвествено надо переписать JavaConfig следующим образом

    http.
                    authorizeRequests()
                    .antMatchers("/", "/login").permitAll()
                    .antMatchers("welcome").hasAnyRole("USER", "ADMIN")
                    .antMatchers("/admin/**").hasRole("ADMIN")
                        .anyRequest().authenticated()   //TODO Розобраться что это-такое
                    .and()
                    .formLogin()
                    .loginPage("/login").failureUrl("/login?error")
                    .defaultSuccessUrl("/welcome")
                    .usernameParameter("username")
                    .passwordParameter("password")
                    .and().logout()
                    .logoutSuccessUrl("/login?logout");
    Ответ написан
    1 комментарий
  • Способы стриминга видео/голоса с android клиента на сервер и наоборот?

    @awsswa59
    Рабочий примет
    https://www.loowid.com/
    Ответ написан
    Комментировать
  • Почему не отрабатывает условие в Java?

    roswell
    @roswell
    и швец, и жнец, и на дуде игрец
    Строки и прочие объекты в Java, в отличие от примитивных типов, нужно сравнивать через .equals()
    Ответ написан
    3 комментария
  • JSON_ENCODE quotes?

    @BorisKorobkov Куратор тега PHP
    Web developer
    Комментировать
  • Удаление данных из массива, в чем подвох?

    mitaichik
    @mitaichik
    Смотри: у List есть 2 метода remove:

    boolean remove(Object o);
    E remove(int index);

    Первый удаляет по объекту. Грубо говоря, он ищет в списке передаваемый объект, и если находит - удаляет его.
    Второй удаляет по индексу - то есть удаляет объект с индексом index.

    Обрати внимание на тип параметра: у первого это Object, у второго - скалярный int.

    В ipList.remove(id) ты передаешь переменную типа Integer (который, в свою очередь, наследуется от Object). Таким образом java вызывает первый метод. Он пытается найти этот объект в списке, а его там нет - у тебя же там Ip, и, в итоге, ничего не удаляет.

    Тебе надо приводить твой Integer к int ( с помощью id.intValue() или (int) id). Тогда java вызовет второй метод, который удаляет по индексу.

    Но! Скорее всего, в запросе ты будешь передавать не индекс, а иммено id класса Ip. Поэтому, на самом деле, решение с ipList.removeIf(i -> i.getId().equals(id)); является самым правильным. Ну, или использовать Map, как сказали выше.
    Ответ написан
    1 комментарий
  • ДДос атака на nginx пакетами 1 байт?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    500 строк в секунду - это не мощно и, вероятно, даже не DDoS. Если адрес один, то просто закройте ему доступ брандмауэром, а если адреса разные, то настройте лимит запросов в Nginx.

    nginx.conf
    http {
        ...
        limit_req_zone $binary_remote_addr zone=reqlimit:10m rate=30r/s;
        ...
    }

    some_site.conf
    server {
        ...
        location / {
            ...
            limit_req zone=reqlimit burst=10 nodelay;
        }
    }

    После этого запросы с одного ip-адреса начиная с 31-го в секунду будут отбрасываться.

    Как вишенку на торт, можно добавить ещё фильтр для fail2ban:

    nginx-req-limit.conf
    [Definition]
    
    failregex = limiting requests, excess: .* by zone .*, client: <HOST>
    ignoreregex =

    и правило в jail.local
    [nginx-req-limit]
    enabled = true
    port = http,https
    filter = nginx-req-limit
    logpath = /var/www/*/*/logs/error.log # Здесь укажите свой путь к логам виртуального хоста
    findtime = 600
    maxretry = 10
    bantime = 7200

    После этого адреса DoS'еров будут автоматически блокироваться брандмауэром на два часа. Что разгрузит Nginx от обработки паразитного трафика.
    Ответ написан
    11 комментариев
  • Есть ли аналог KeePass или бесплатный 1password под MacOS?

    littleguga
    @littleguga
    Не стыдно не знать, а стыдно не интересоваться.
    https://github.com/lgg/awesome-keepass

    Подборка всего на тему KeePass, в качестве клиента советуют keeweb.
    https://keeweb.info/
    https://keepassxc.org/
    Ответ написан
    Комментировать
  • Какой шаблонизатор более востребован на рынке Spring?

    @ruslanys
    Смешной вопрос. Шаблонизатор - лишь инструмент представления. Не бойтесь учить новое.

    Что касается выбора - Thymeleaf неплох, но есть нюансы.
    Например, Thymeleaf дает "рабочую" верстку, над которой дизайнер и программист могут работать параллельно, но это, пожалуй, единственный плюс.
    Из минусов, которые лично я отметил:
    1. Если на клиенте используется, например, Angular.JS, то в атрибутах тегов у вас будет несусветная каша, условно:
    <td th:text="${user.name}" ng-show="shouldShowUsername()">Username</td>

    В реальном проекте, где количество атрибутов нужно умножить на X - это оказалось трудно поддерживаемым .
    2. Учитывая тот факт, что Thymeleaf директиво-ориентированный шаблонизатор, его scope - это тег. К сожалению, не все теги одинаково хороши. А иногда их вовсе нет!
    Скажем, вы хотите отправлять plain-text сообщения по e-mail. Вам не нужна верстка и вы генерируете вовсе не HTML. В таком случае, с Thymeleaf будут проблемы, т.к. исключительно теги определяют его SCOPE. По-моему как-то костыльно эту проблему можно решить типа th:removetag, но тоже не всегда. В одном из случаев мы пытались генерировать блок стилей в head страницы и у Thymeleaf, насколько я помню, были проблемы с этим (возможно, починили).

    В любом случае, мы очень любили Thymeleaf и были его ярыми последователями, пока не столкнулись с концептуальными ограничениями завязки на директивы. Весь проект переписали на Freemarker (благо не много было генерации HTML на бекенде) - счастливы.
    Ответ написан
    Комментировать
  • Ubuntu дос на 22 порт как исправить?

    @pfg21
    ex-турист
    Ограничь доступ к 22 порту только своему диапазону ип-адресов ??
    Ответ написан
    Комментировать
  • Ubuntu дос на 22 порт как исправить?

    Отключить вход по паролю, запретить вход root, использовать ключи, fail2ban и другие фильтры, как минимум сменить порт
    Ответ написан
    Комментировать
  • Почему лучше не использовать input type=submit?

    dima9595
    @dima9595
    Junior PHP
    На мой взгляд вам херню какую-то сморозили.
    Если у вас форма без ajax запросов, то точно нужно использовать input type=sumbit, а если же вы отправляете данные через ajax, то можно использовать div с привязкой onclick по js.
    Ответ написан
    4 комментария
  • Если пользователь ввёл не правильные данные как попросить его ввести ещё раз?

    @D3lphi
    Консольное приложение? Цикл запускаете и выходите из него только если данные верны. Цикл do-while/while вам нужен.

    Как-то так:

    do {
        System.out.println("Введите данные: ");
    } while(!input());


    Или так:

    System.out.println("Введите данные: ");
    while(!input()) {
         System.out.println("Ошибочный ввод. Попробуйте еще раз: ");
    }


    private boolean input()
    {
        // Считываем данные, проверяем их на валидность и возвращаем true - если ввод валиден и false - если невалиден.
    }
    Ответ написан
    1 комментарий
  • Какой шаблонизатор более востребован на рынке Spring?

    Djaler
    @Djaler
    Сеньор-помидор
    Thymeleaf
    Ответ написан
    Комментировать
  • OkHTTP как игнорировать SSL сертификат?

    mitaichik
    @mitaichik
    Хз поможет ли, делал временное решения для работы с самоподписанными сертификатами, все ненужное вырезал оставил только суть:
    @Component
    public class ClientFactory
    {
    	@Value("${api.certificate.path}")
    	private String certificatePath;
    
    	@Value("${api.certificate.password}")
    	private String certificatePassword;
    
    	@Value("${api.params.site}")
    	private String paramSite;
    
    	/**
    	 *
    	 * @return
    	 * @throws Throwable
    	 */
    	public OkHttpClient createClient() throws Throwable
    	{
    		return new OkHttpClient.Builder()
    			.socketFactory(createSslContext().getSocketFactory())
    			.build();
    	}
    
    	/**
    	 *
    	 * @return
    	 * @throws Throwable
    	 */
    	private SSLContext createSslContext() throws Throwable
    	{
    		KeyStore ks = getCertificateKeyStore();
    
    		KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
    		kmf.init(ks, certificatePassword.toCharArray());
    
    		SSLContext sslContext = SSLContext.getInstance("SSL");
    		sslContext.init(kmf.getKeyManagers(), trustAll509(), new java.security.SecureRandom());
    
    		return sslContext;
    
    	}
    
    	/**
    	 * @return
    	 */
    	private TrustManager[] trustAll509()
    	{
    		return new TrustManager[] {
    			new X509TrustManager() {
    				public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}
    				public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {}
    				public X509Certificate[] getAcceptedIssuers() {return null;}
    			}
    		};
    	}
    }


    Самое главное здесь - подставить в SSLContext свой X509TrustManager, который тупо будет всех пропускать и ничего не проверять.

    Но!!! Это должно быть временным решением для разработки/отладки/тестов. Если вы юзаете невалидные сертификаты - что то вы делаете не так.
    Ответ написан
    1 комментарий
  • Что учить вместе с hibernate?

    jaxtr
    @jaxtr
    JavaEE/Spring-разработчик
    Вот к примеру выборку я делаю с помощью Criteria, а писать в БД как я понял критерия не умеет, по этому использую hql запросы

    Для вставки в Hibernate используется session.save() и session.merge(), не надо ничего мудрить с HQL. Примеры.

    Вопрос: какой смысл тогда с критерии если она умеет только выборки делать ?

    Смысл критерии именно в выборке (но мне удобнее использовать JPQL/HQL).

    Есть ли что-то единственое удобное для выборки, записи, удаления и т.п. ? (JPA?)

    Spring Data JPA

    И что ещё посоветуете учить паралельно с hibernate для поднятия скила и лёгкого старта в Spring mvc ?

    Если вместе со Spring, то советую учить в первую очередь JPA и связанный с ним Spring Data JPA. Для удобства можно ещё и на Spring Boot обратить внимание.
    Ответ написан
    Комментировать