LINUX.ORG.RU

Сообщения bvn13

 

Логгирование Spring двоит выдачу лога

 , logback, ,

Использую

	compile('ch.qos.logback:logback-classic')
	compile('org.slf4j:slf4j-api')
	compile('org.apache.commons:commons-lang3')

логгер настроен так (файл logback.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="3 seconds">
	<contextName>VoidForum</contextName>

	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>
				%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{32} - %msg%n
			</pattern>
		</encoder>
	</appender>

	<jmxConfigurator />
	<root level="WARN">
		<appender-ref ref="STDOUT" />
	</root>

	<logger name="ru.bvn13.voidforum" level="ALL">
		<appender-ref ref="STDOUT" />
	</logger>

	<logger name="org.hibernate.SQL" level="WARN">
		<appender-ref ref="STDOUT" />
	</logger>
	<!--<logger name="org.hibernate.type" level="TRACE">-->
	<!--<appender-ref ref="STDOUT" />-->
	<!--</logger>-->
	<logger name="org.springframework.web" level="DEBUG">
		<appender-ref ref="STDOUT" />
	</logger>
	<logger name="ru.bvn13.voidforum.controllers" level="DEBUG">
		<appender-ref ref="STDOUT" />
	</logger>
	<logger name="ru.bvn13.voidforum.admin.controllers" level="DEBUG">
		<appender-ref ref="STDOUT" />
	</logger>
</configuration>

При этом каждая строчка вывода лога задваивается. Например:

2017-12-11 22:42:15.507 [main] DEBUG o.s.w.c.s.StandardServletEnvironment - Adding PropertySource 'servletConfigInitParams' with lowest search precedence
2017-12-11 22:42:15.507 [main] DEBUG o.s.w.c.s.StandardServletEnvironment - Adding PropertySource 'servletConfigInitParams' with lowest search precedence
2017-12-11 22:42:15.511 [main] DEBUG o.s.w.c.s.StandardServletEnvironment - Adding PropertySource 'servletContextInitParams' with lowest search precedence
2017-12-11 22:42:15.511 [main] DEBUG o.s.w.c.s.StandardServletEnvironment - Adding PropertySource 'servletContextInitParams' with lowest search precedence
2017-12-11 22:42:15.512 [main] DEBUG o.s.w.c.s.StandardServletEnvironment - Adding PropertySource 'systemProperties' with lowest search precedence
2017-12-11 22:42:15.512 [main] DEBUG o.s.w.c.s.StandardServletEnvironment - Adding PropertySource 'systemProperties' with lowest search precedence
2017-12-11 22:42:15.512 [main] DEBUG o.s.w.c.s.StandardServletEnvironment - Adding PropertySource 'systemEnvironment' with lowest search precedence
2017-12-11 22:42:15.512 [main] DEBUG o.s.w.c.s.StandardServletEnvironment - Adding PropertySource 'systemEnvironment' with lowest search precedence
2017-12-11 22:42:15.512 [main] DEBUG o.s.w.c.s.StandardServletEnvironment - Initialized StandardServletEnvironment with PropertySources [StubPropertySource {name='servletConfigInitParams'}, StubPropertySource {name='servletContextInitParams'}, MapPropertySource {name='systemProperties'}, SystemEnvironmentPropertySource {name='systemEnvironment'}]
2017-12-11 22:42:15.512 [main] DEBUG o.s.w.c.s.StandardServletEnvironment - Initialized StandardServletEnvironment with PropertySources [StubPropertySource {name='servletConfigInitParams'}, StubPropertySource {name='servletContextInitParams'}, MapPropertySource {name='systemProperties'}, SystemEnvironmentPropertySource {name='systemEnvironment'}]
2017-12-11 22:42:15.593 [main] INFO  ru.bvn13.voidforum.Application - Starting Application on bvn13-book with PID 20504 (C:\dev\my\VoidForum\out\production\classes started by bvn13 in C:\dev\my\VoidForum)
2017-12-11 22:42:15.593 [main] INFO  ru.bvn13.voidforum.Application - Starting Application on bvn13-book with PID 20504 (C:\dev\my\VoidForum\out\production\classes started by bvn13 in C:\dev\my\VoidForum)
2017-12-11 22:42:15.594 [main] DEBUG ru.bvn13.voidforum.Application - Running with Spring Boot v1.5.10.BUILD-SNAPSHOT, Spring v4.3.13.RELEASE
2017-12-11 22:42:15.594 [main] DEBUG ru.bvn13.voidforum.Application - Running with Spring Boot v1.5.10.BUILD-SNAPSHOT, Spring v4.3.13.RELEASE

Где напортачил? Почему так происходит?

bvn13
()

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

 , ,

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

Но просмотр скаченного и онлайн на ноуте уже поднадоел из-за невозможности одновременного конпеляния ядра использования ноута по его первостепенному предназначению.

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

Из необходимых: вайфай/лан надо, и возможность смотреть онлайн/по сети.

bvn13
()

IntelliJ IDEA и работа с GitHub

 , ,

Как их подружить?

В настройках ИДЕА в разделе GitHub выбираю Token, генерировать, тест - все ок.

Попытка прочитать репозиторий - хер там, Host key verification failed.

Какого черта?

bvn13
()

Доступ к базе MS Access (.mdb) из Mono C#.Net 4.5 в Linux

 , , , ,

Есть проект на С#, работает уже долго на винде. Но потребовалось перенести временно на линукс, чтобы спокойно переписать на чем-то православном.

В проекте используется соединение к базе MS Access через

OleDbConnection mdbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Password=;User ID=Admin;" + @"data source = f_base.mdb");

Как это портировать? В убунте, естественно, не находит драйвер подключения.

Есть какой-то временный костыль? Что посоветуете?

ЗЫ. Викинуть, забыть, забить, послать - это все понятино, но надо. Переписать - это тоже понятно, но время.

bvn13
()

Ростелеком режет p2p

 , , , ,

Сабж. На торренты хожу через friGate расширение. Вчера обнаружил, что торренты не качаются, хотя на рутрекере 14 пиров показано. Сегодня утром на работе за 5 минут все скачалось.

Провайдер онлайм (Москва), такие дела.

bvn13
()

Как обновить кеш Maven для Gradle

 , ,

У меня в проекте не видятся последние билды из Мавена. WTF?

Вот есть версия 0.28.8 библы: https://search.maven.org/#artifactdetails|com.vladsch.flexmark|flexmark-html-...

А у меня только 0.27.0 доступна. Как быть? Нужно обновить?

repositories {
    mavenLocal()
    jcenter()
    mavenCentral()

    maven { url 'http://repo.spring.io/libs-release' }
    maven { url "http://repo.springsource.org/repo" }
}
bvn13
()

Hibernate - Как связать в запросе две таблицы, которые физически не связаны?

 , ,

Ну, к примеру есть

TABLE Products
1. id
2. name

TABLE SearchParams
1. name_query

мне нужен запрос

SELECT p.name 
FROM Products AS p
LEFT JOIN SearchParams AS s
ON p.name LIKE concat('%', p.name, '%')
WHERE s.name IS NULL

Но Hibernate выдает ошибку при инициализации всего этого:

org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join!

Ему нужна связь? Как быть?

bvn13
()

Вычисление роботов

 , , , ,

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

bvn13
()

SystemD, что ты себе позволяешь?

 ,

Дома шуршит ArchLinux в качестве сервачка на стареньком ноуте.

Добавлял я блог как systemd-unit путем симлинка из /home/bvn13/dev/myblog.service в /etc/systemd/system/myblog.service, как говорила инструкция на арчевики. Все работало, пока я не захотел перезагрузиться.

И вот после перезагрузки я не смог удаленно по ssh зайти. Благо, автологин стоит и тимвувер в автозапуске. И что же я вижу? а sshd не запущен. И блог мой тоже. Делаю # systemctl start myblog.service, а оно говорит, мол, нет такого юнита! КАК?! Делаю # systemctl daemons-reload, и - о, чудо! - мой юнит найден и запущен. Вслед я запустил sshd.

Это что же, получается, я не туда свой юнит засунул? Или это-таки systemd виноват?

bvn13
()

Rasa NLU - кто-нибудь тыкал?

 nlu, , rasa, rasa-nlu,

Rasa NLU (Natural Language Understanding) is a tool for understanding what is being said in short pieces of text. For example, taking a short message like:

«I'm looking for a Mexican restaurant in the center of town»

And returning structured data like:

intent: search_restaurant
  entities: 
    - cuisine : Mexican
    - location : center

Интересная либа. Судя по описанию, поднимается как в докере, так и нативно, общение с библиотекой посредством http-запросов.

Недавно в твиттере встретил новость про сабж, думаю, к чему бы ее такому прикрутить.

bvn13
()

Камера для наблюдения с архивом.

 ,

Какие есть бюджетные варианты? Вплоть до собрать из составляющих и самому дистр и по накатывать.

bvn13
()

SpringBlog v2.6

 , , ,

Группа Open Source

Вношу свою лепту на благо OpenSource: представляю вам, лорчане, мой форк платформы для ведения блога SpringBlog (исходный код на github).

Предыстория

Мной был найден давно заброшенный (в 2015 г.) репозиторий движка для ведения блогов студента китайского ВУЗа Jiankun LEI (aka Raysmond), написанный на SpringBoot версии 1.4.0. Проект показался мне довольно интересным, он очень шустрый (отдача страниц порядка 63 мс), к тому же, его деплой не вызвал проблем.

( читать дальше... )

>>> Исходный код (github.com)

bvn13
()

Подтвердите баг в IntelliJ IDEA

 , ,

Сегодня прилетела обнова, которая фиксит pinch to zoom на маках. И как-то досадно стало, ведь скроллинг тачпадом так и не завелся.

Зарепортил https://youtrack.jetbrains.com/issue/IDEA-181923 - прошу поддержать, подтвердить.

bvn13
()

Помогите разобраться с ошибкой

 , ,

Проект на SpringBoot 1.5.8, шаблоны Jade templates.

Добавляю загрузку/скачивание файлов.

Отдаю файл вот таким методом:

    @GetMapping(value = "/{fileId:[\\d]+}", produces = APPLICATION_OCTET_STREAM_VALUE)
    @ExceptionHandler(value = FileNotFoundException.class)
    public @ResponseBody
    HttpEntity<byte[]> getFileById(@PathVariable Long fileId, final HttpServletResponse response) throws IOException {
        Assert.notNull(fileId);
        StoredFile file = this.storageService.getFileById(fileId);
        if (file == null) {
            response.sendError(404, String.format("File %s not found", fileId));
            return null;
        }
        byte[] content;
        try {
            content = this.storageService.getFileContent(file.getPath());
        } catch (IOException e) {
            e.printStackTrace();
            if (this.userService.currentUser().isAdmin()) {
                response.sendError(404, String.format("File %s (%s) not found", file.getName(), file.getPath()));
            } else {
                response.sendError(404, String.format("File %s not found", file.getName()));
            }
            return null;
        }

        HttpHeaders header = new HttpHeaders();
        header.setContentType(APPLICATION_OCTET_STREAM);
        header.set("Content-Disposition", "inline; filename=" + file.getName());
        header.setContentLength(file.getSize());

        return new HttpEntity<byte[]>(content, header);
    }

Когда дергаю файл, он успешно отдается в браузер, но в логе имею портянку ошибок.

Прикладываю еще WebConfig на случай, т.к. ошибка из него произрастает.

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
    @Qualifier("viewHelper")
    @Autowired
    private ViewHelper viewHelper;

    @Autowired
    private Environment env;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry
                .addResourceHandler("/webjars/**")
                .addResourceLocations("/webjars/");
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(viewObjectAddingInterceptor());
        super.addInterceptors(registry);
    }

    @PostConstruct
    public void registerJadeViewHelpers(){
        viewHelper.setApplicationEnv(this.getApplicationEnv());
    }

    @Bean
    public HandlerInterceptor viewObjectAddingInterceptor() {
        return new HandlerInterceptorAdapter() {
            @Override
            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
                viewHelper.setStartTime(System.currentTimeMillis());

                return true;
            }

            @Override
            public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView view) {
                CsrfToken token = (CsrfToken) request.getAttribute(CsrfToken.class.getName());
                if (token != null) {
                    view.addObject(token.getParameterName(), token); // ВОТ ТУТ ОШИБКА НАЧИНАЕТСЯ
                }
            }
        };
    }

    public String getApplicationEnv(){
        return this.env.acceptsProfiles(ENV_PRODUCTION) ? ENV_PRODUCTION : ENV_DEVELOPMENT;
    }
}

Стек эксепшенов тут: https://pastebin.com/HcraFKTT

PS. мой вопрос в сабже

bvn13
()

Как в jython установить модуль?

 , ,

Request page: /admin/posts/6 raised exception : ImportError: Cannot import site module and its dependencies: No module named site

Determine if the following attributes are correct:
 * sys.path: [/home/bvn13/dev/proj1/SpringProj-2.4.jar!/BOOT-INF/lib/Lib, __classpath__, __pyclasspath__/]
   This attribute might be including the wrong directories, such as from CPython
 * sys.prefix: /home/bvn13/dev/proj1/SpringProj-2.4.jar!/BOOT-INF/lib
   This attribute is set by the system property python.home, although it can
   be often automatically determined by the location of the Jython jar file
You can use the -S option or python.import.site=false to not import the site module

Что он от меня хочет? Модуль site? Как его поставить?

bvn13
()

Попилка леса

 , ,

Модераторы, не сносите за лютый оффтоп, спросить не у кого, а тут могут быть спецы.

Можно ли в лесу попилить себе поленьев из упавших деревьев?

Поделитесь опытом, законами, статьями, ссылками, пожалуйста.

Зы. Искать буду на Arch.

bvn13
()

Поиск допустимых интервалов

 

Есть таблица дат - одна колонка с датой. Разные часы в дне, какой-то час может быть пропущен.
25.10.2017 9:00:00
25.10.2017 10:00:00
25.10.2017 12:00:00
25.10.2017 13:00:00
25.10.2017 14:00:00
25.10.2017 15:00:00
25.10.2017 16:00:00
26.10.2017 8:00:00
26.10.2017 9:00:00
26.10.2017 10:00:00
26.10.2017 11:00:00
26.10.2017 13:00:00
26.10.2017 14:00:00
26.10.2017 15:00:00
26.10.2017 16:00:00

Нужно найти конец и начало интервала в дне по двум условиям:
1) продолжительность интервала в часах
2) Максимально допустимое количество пропущенных часов, которые могут быть проигнорированы.

Т.е. если есть в таблице часы 9,10,12,13,14, нужно собрать интервал в 5 часов, но максимально допустимый пропуск - 2 часа, то этот интервал подходит.

Не могу придумать алгоритм, помогите мыслями.

bvn13
()

Деплоинг на tomcat ломает авторизацию SpringSecurity

 , ,

Тестовый проект SpringBoot.

protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/admin/**").authenticated()
                .anyRequest().permitAll()
                .and()
            .formLogin()
                .loginPage("/signin")
                .permitAll()
                .failureUrl("/signin?error=1")
                .loginProcessingUrl("/authenticate")
                .and()
            .logout()
                .logoutUrl("/logout")
                .permitAll()
                .logoutSuccessUrl("/signin?logout")
                .and()
            .rememberMe()
                .rememberMeServices(rememberMeServices())
                .key("remember-me-key");
    }

Т.е. при обращении к /admin должно перекинуть на /signin, где пользователь заполняет форму, а при проверка авторизации осуществляется спрингом по урл /authenticate.

Вот ровно так работает до деплоя на томкат. После деплоя - адрес проекта получается вида http://localhost:9080/project/, и теперь все эти урлы, участвующие в авторизации, должны работать относительно адреса проекта.

Но как бы не так. Форма авторизации отправляется на http://localhost:9080/authenticate, а не на http://localhost:9080/project/authenticate. Как это пофиксить? не прописывать же имя проекта в шаблоне формы?

bvn13
()

Tux в кино

 , ,

bvn13
()

А тем временем вышла Django 2.0 beta 1

 ,

пруф

Django 2.0 beta 1 is an opportunity for you to try out the assortment of new features in Django 2.0.

Only bugs in new features and regressions from earlier versions of Django will be fixed between now and 2.0 final (also, translations will be updated following the «string freeze» when the release candidate is issued). The current release schedule calls for a release candidate in a month from now with the final release to follow about two weeks after that around December 1. Early and often testing from the community will help minimize the number of bugs in the release. Updates on the release schedule schedule are available on the django-developers mailing list.

As with all alpha and beta packages, this is not for production use. But if you'd like to take some of the new features for a spin, or to help find and fix bugs (which should be reported to the issue tracker), you can grab a copy of the beta package from our downloads page or on PyPI.

bvn13
()