microdevelopment

Сделаю отдельную ветку для обсуждения распиливания борды на микросервисы, чтобы не флудить в основную.
>>130126
1) Докеризация имеющегося
2) Парсер
3) Сборщик мусора
4) Синк
>microdevelopment
Для Java Microedition, чи шчо?
Replies: >>130200
>>130198
Ну во-первых не джава, пока из двух существующих сервисов и одного планируемого на джаве только один. А во-вторых микро ибо микросервисы. Я проникся идеей.
Replies: >>130210
Такс, теперь и саму борду полноценно засунул в докер. Можно спокойно распиливать.
Replies: >>130205
>>130204
В частности, теперь при желании можно борду масштабировать, ибо никакого состояния само приложение (вроде бы) не хранит. Конечно, спринг и так достаточно хорошо работает, но вдруг.
>>130200
Ти ж жабіст, значит, замість хіпстерського вебу мусить бути фронтенд на Java.
Replies: >>130213
>>130210
Десктопная джава мертва.
Replies: >>130214, >>130236
>>130213
Но если я сделаю полноценный апи, любой сможет снова попытаться написать клиент на чём угодно. В прошлый раз желающих не нашлось, а я в десктопы не умею да и в веб тоже на самом деле :3.
Больше контейнеров богу контейнеров!
Replies: >>130218
Replies: >>130219
>>130216
А то!
Сейчас у меня в контейнерах борда, бот опеннета и дженкинс для автосборки (потом туда же добавлю сборку образа докера в локальный реестр).
Постгрес пока отдельно, я его не хочу контейнеризировать потому что и так прекрасно работает, к тому же там майнтест.
>>130217
Я не девопс и не архитектор, просто изучаю всякое модное говно.
Replies: >>130223
>>130219
Собственно, девопса там можно заменить на любое слово, которые сейчас в тренде.
Replies: >>130224
>>130223
Разве девопс в тренде? Это же просто модное слово для определенного вида админов, они всегда были.
Replies: >>130225, >>130237
>>130224
Дык в тренде же, практически везде нужен человек, который придет и налепит докеров.
Replies: >>130226
>>130225
Дык он и раньше был нужен, только без докеров.
Replies: >>130252
>>130213
>пише в жидбрейнсівських IDE
>закопує жабу
Ти можеш бодай один день не дристати до штанів?
>>130224
Адмінів-програмістів? Що, ліл?
Мені здається, чи з часовими поясами щось не те?
Replies: >>130245
>>130239
Дефолт стал utc. Позже поправлю.
Replies: >>131874
>>130226
Не, сейчас все ищут специального человека именно под докеры. При этом данный человек может ничего другого не уметь, главное чтобы мог в докеры.
Replies: >>130273
>>130252
А что там уметь? У него полторы команды. Вот если ещё уметь во всякие ажуры и акс, тогда да, опыт нужен.
Replies: >>130274, >>130307
>>130273
>А что там уметь? У него полторы команды.
Ага, суть именно в этом.
>Вот если ещё уметь во всякие ажуры и акс, тогда да, опыт нужен.
Это тоже какая-то фигня, на самом деле. Никаких низкоуровневых знаний, надо просто знать спинным мозгом интерфейс этой проприетарщины, и все пучком.
Replies: >>130277
>>130274
Нужен именно опыт работы. Чтобы знать, куда быстро нажать если все упало, где что настраивается, какие есть известные баги и как их обходить. Тупо выучить по учебнику недостаточно.
Replies: >>130278
>>130277
>Чтобы знать, куда быстро нажать если все упало, где что настраивается, какие есть известные баги и как их обходить.
Вот, как раз про спинной мозг.
Replies: >>130285
>>130278
Людям платят за то насколько они нужны. Неважно как ты научился это делать и каким мозгом, важно что ты быстро сделаешь то что от тебя требуется, когда тебе скажут добавить подов в ажуре или поменять один сервис на другой. И расскажешь как лучше масштабировать и почему.
У меня было одно собеседование где архитектор задавал хорошую задачку, начиная от простого приложения и дальше по мере упирания производительности в разные места что бы я сделал. С одной стороны ответы простые и логичные, а с другой если спросить обычного разработчика, он не ответит, просто потому что не сталкивался с этими ситуациями.
Replies: >>130314, >>130315
>>130273
>У него полторы команды
У цьому й проблема. Докер надзвичайно тупий і огороджений, треба мати неабиякий хист, щоб запихувати до контейнерів ПЗ, яке початково на них не розраховане, і щоб дані не пройобувалися за перестворення контейнерів.
Replies: >>130308
>>130307
Нет там ничего огороженого, а тупость только в простоте. Внутри у тебя обычная система, делай с ней что хочешь.
>щоб дані не пройобувалися за перестворення контейнерів
Мсье не знает о волюмах?
Replies: >>130317
>>130285
>Неважно как ты научился это делать и каким мозгом, важно что ты быстро сделаешь то что от тебя требуется
Да, и требуется очень немного за большие деньги. Потому что тренд.
>>130285
>важно что ты быстро сделаешь
Ну тому я й смокчу яловичі ануси: вмію багато, але швидко робити — нічого.
>>130308
>Нет там ничего огороженого
Шчоу? Вся суть контейнерів в огороджуванні. Вони сидять у клітці, і ззовні та з инших контейнерів усе треба явно прокидати через костурі.
>Мсье не знает о волюмах?
От бачиш, шче одні сакральні знання — а ти кажеш, що докер простий :3 При цьому все одно треба кропітка робота з розділення програми та даних (знову повертаємося від фон-нейманівських машин до гарвардських, лишень через сраку, ліл), щоб до тому втрапляли лише дані, в контейнері сиділа лише програма, і таким чином при заміні, скиданні чи оновленні контейнера нічого не відпало. І з розвитком і зміною програм це треба теж підтримувати й перелаштовувати.
Replies: >>130338
>>130317
Что сакрального в том чтобы указать папку или порт внешнего приложения?
Replies: >>130339
>>130338
Необхідність виловлювати ці теки та порти. Так можна дійти до того, що в замішуванні тіста, перекладанні папірців чи заливанні сайтів на FTP нічого сакрального нема. Ти дивишся з позиції фахівця і не вбачаєш складності, це типове когнітивне викривлення.
Replies: >>130340
>>130339
Ты кроме нажать кнопку ВКЛ на компьютере ничего не делаешь? Файлов нет, конфигов нет, каталогов нет, ничего никуда не монтируется?
> Ти дивишся з позиції фахівця і не вбачаєш складності
А что, контейнеры домохозяйки должны поднимать? Так у них сервисов нет, только клиенты.
Replies: >>130341
>>130340
>Ты кроме нажать кнопку ВКЛ на компьютере ничего не делаешь? Файлов нет, конфигов нет, каталогов нет, ничего никуда не монтируется?
Сі речі, крім тимчасових штибу fuse-zip, obexautofs і gio, налаштовані одного разу, вже й не пам'ятаю достеменно, що й куди. А робота спеціаліста з докеру — робити це постійно, і саме з докером.
>А что, контейнеры домохозяйки должны поднимать?
До чого тут домогосподарки? Окрема позиція спеціалістів із докеру як така існує у великих компаніях, де можлива вузька спеціалізація праці, тим-то всі технарі мають вузький перелік задач, хоч теоретично і можуть навчитися пердолитися з докером. А в маленьких штудіях на десяток мавп пердолитися з докером — задача програмістів, нема не те що окремих спеціалістів із докеру, а й навіть окремих девопсів.
Replies: >>130342
>>130341
>Сі речі, крім тимчасових штибу fuse-zip, obexautofs і gio, налаштовані одного разу, вже й не пам'ятаю достеменно, що й куди.
Так docker-compose тоже один раз настраивается, потом просто запускаешь его и он подтягивает свежую версию образа сам.
>А в маленьких штудіях на десяток мавп пердолитися з докером — задача програмістів, нема не те що окремих спеціалістів із докеру, а й навіть окремих девопсів.
Ну так отлично, простота докера позволяет макакам его поднять. В чём вопрос-то?
Replies: >>130343
>>130342
>подтягивает свежую версию образа сам
А якщо програма в образі оновилася і змінила спосіб зберігання даних чи вимоги до зовнішнього середовища?
>В чём вопрос-то?
Ти мене питаєш? Ви тут срач без мене почали, незрозуміло про що.
Replies: >>130345
>>130343
>А якщо програма в образі оновилася і змінила спосіб зберігання даних чи вимоги до зовнішнього середовища?
А если программа вне образа поменяла расположение конфигов или дефолтные порты? Точно так же идёшь и меняешь. Но это очень редкая ситуация.
Replies: >>130347
>>130345
>Точно так же идёшь и меняешь
Нічого не треба міняти, воно й так працює.
Replies: >>130348
>>130347
Как оно будет работать если твои приложения смотрят на порт где ничего больше не висит? А твои данные в каталоге о котором приложение не знает.
Replies: >>130349
>>130348
>если твои приложения смотрят на порт где ничего больше не висит
Програми можуть уже підтримувати пошук на кількох портах.
>А твои данные в каталоге о котором приложение не знает
В програми закладається міграція. Програма мігрує дані з теки, до якої підмонтовано том, і почне срати де-інде — весело? Можна навіть не помітити зразу.
Replies: >>130350
>>130349
>Програми можуть уже підтримувати пошук на кількох портах.
Они и в докере это могут делать.
>В програми закладається міграція.
Отмазки. Может закладываться, а может нет.
Replies: >>130351
>>130350
>Они и в докере это могут делать.
Так і для цього треба грамотний спеціаліст, який одразу налаштує гнучко, а не аби запрацювало.
>Может закладываться, а может нет
Шчоу? Міграцію не закладають лишень ратицесракі всякі, штибу тебе. Хоча б через послідовне встановлення версій, або й з дуже старої можна одразу оновитися.
Replies: >>130352
>>130351
>Так і для цього треба грамотний спеціаліст, який одразу налаштує гнучко, а не аби запрацювало.
Почему у тебя один и тот же софт в одном месте заработает а в другом нет?
>Міграцію не закладають лишень ратицесракі всякі, штибу тебе
Ну вот в постгресе например никакой автомиграции нет, потому что это риск похерить данные. В оракле и того хуже. Да нигде миграция автоматически не работает кроме игрушек.
Replies: >>130353
>>130352
>Почему у тебя один и тот же софт в одном месте заработает а в другом нет?
Тому що просто встановлений поруч він сам порти знайде, а з докером треба їх явно прокидати.
>в постгресе например
Постгрес у докері — це взагалі капець, зо півґіґа важить контейнер.
>В оракле и того хуже
До суворого продакшну, де використовується оракель, докер уже доплив?
Replies: >>130354, >>130355
>>130353
*суворого їнт'їрпрайзу
>>130353
>зо півґіґа важить контейнер
Контейнер ничего не весит, все данные в имедже.
>сам порти знайде
Каким образом, интересно? Будет шариться по каждому порту от нуля до 100000 и смотреть что там отвечают?
>До суворого продакшну, де використовується оракель, докер уже доплив?
Ну сам оракл я только в рамках экспериментов в докер пихал, у него какие-то хитрые условия по которым он пытается всех сажать на свое облако. А так облака давно уже докатились.
Replies: >>130356
>>130355
>Будет шариться
Ні, просто знає, що така-то програма версії 2 висіла на порті 8181, а у версії 3 ще додався окремий порт для контролю 8185.
>от нуля до 100000
...
ХТО ТЕБЕ ДО АЙТІ ПУСТИШЕ?!!
>А так облака давно уже докатились
А одинадцята жабка?
Replies: >>130357
>>130356
>Ні, просто знає, що така-то програма версії 2 висіла на порті 8181, а у версії 3 ще додався окремий порт для контролю 8185.
Никто тебе не гарантирует что знает, это ты сам придумал.
>А одинадцята жабка?
С жабкой сложнее, у нее де-факто с обратной совместимостью всё плохо, поэтому для увеличения циферки версии надо треть проекта переписать и отловить все плавающие баги новых версий.
Replies: >>130358
>>130357
>Никто тебе не гарантирует что знает
Ну так, гарантія підтримки нової версії в зовнішніх програмах не гарантується. Але якщо вони таки підтримують, то такі деталі враховують. Докер же нічого не враховує, він просто керує контейнерами, це все треба явно налаштовувати.
>у нее де-факто с обратной совместимостью всё плохо
А в нового оракеля зі старими жабками — ні? Цікавенько.
Replies: >>130359
>>130358
>Але якщо вони таки підтримують, то такі деталі враховують.
Нет.
>Докер же нічого не враховує, він просто керує контейнерами, це все треба явно налаштовувати.
Ещё раз, ты настраиваешь ровно то же что в обычном софте. Никто не меняет порты и каталоги каждый день, ты и так и так раз в несколько лет что-то настраиваешь.
>А в нового оракеля зі старими жабками — ні?
А ораклю разве системная джава нужна? Не обращал внимания честно говоря.
Replies: >>130362
>>130359
>Нет.
Що ти верзеш, курво? Як одна програма може підтримувати нову версію иншої, якщо вона не знає, що в тої змінився набір портів і взаємодіяти з ними слід инакше?
>ты и так и так раз в несколько лет что-то настраиваешь
Для таких речей мейнтейнери є.
>А ораклю разве системная джава нужна?
Ну а з жабою він як взаємодіє?
Replies: >>130365
>>130362
>Як одна програма може підтримувати нову версію иншої, якщо вона не знає, що в тої змінився набір портів і взаємодіяти з ними слід инакше?
Смена портов это крайне редкое явление, означающее поломку совместимости, так что даже перенастройка не спасет.
>Для таких речей мейнтейнери є.
Мейнтейнеры должны узнать что твой клиент майнтеста у тебя настроен на базу на таком-то порту, и этот пост изменился? Каким образом, интересно?
>Ну а з жабою він як взаємодіє?
Понятия не имею, возможно никак. Это ж просто база.
Replies: >>130369
>>130365
>означающее поломку совместимости, так что даже перенастройка не спасет
У-у-у, туге. Ще раз повторюю. В програмі 1 змінили набір портів. В програмі 2 зробили підтримку таких портів. Програма 1 далі працює, програма 2 також із нею працює. Якщо стоять в одній системі. Нічого ніде змінювати й налаштовувати не треба.
>настроен на базу на таком-то порту
Мова про дефолт.
>возможно никак. Это ж просто база
Це непродуктивно, мусить бути драйвер.
Replies: >>130370
>>130369
>В програмі 2 зробили підтримку таких портів.
Программа 2 это клиент, где ты ручками настроил какой базой пользоваться, потому что у тебя их десяток на разных портах. Оно не узнает об обновлении.
>Мова про дефолт.
Дефолт настроен на sqlite, у него вообще портов нет.
Replies: >>130373
>>130370
>где ты ручками настроил какой базой пользоваться
Ще раз повторюю, мова не про ручні налаштування. Ти у всіх програмах налаштовуєш усякі порти, сокети, шляхи до конфігів тощо?
>Дефолт настроен на sqlite
Це в майнтесту.
Replies: >>130374
>>130373
Во всех клиент-серверных -- да, разумеется, потому что они сами ничего не определяют. Не может клиент знать, где я ему базу создал и с каким логином, дефолтной не существует в принципе.
Replies: >>130375
>>130374
Маячня якась. СУБД зазвичай самі вирішують, де зберігати дані. Кріди — то окрема справа.
Replies: >>130376
>>130375
СУБД не могут сами создать базу и настройки для нее, это не имеет смысла -- оно зависит от того что ты туда собрался складывать. Теоретически можно дать софту админского юзера чтобы он сам создал под себя базу, но я не встречал чтобы так делали, слишком очевидная дыра и риск похерить соседние базы.
Replies: >>130377
>>130376
>СУБД не могут сами создать базу
У-у-у, до чого тут база, я про місце зберігання баз. Різницю відчуваєш? База — це абстракція рівня СКБД.
>но я не встречал чтобы так делали
CMS саме так і роблять зазвичай.
Replies: >>130399
>>130377
Место дефолтное есть, но ты всё равно никакой клиентский софт не запустить без предварительных настроек, и любая миграция делается руками.
И да, cms тоже так не делает, я парочку юзал. Возможно с мускулем разве что, но надо быть эпичным ссзб чтобы таким способом установки воспользоваться. Впрочем, юзеры мускуля такие и есть...
Итого.
RSS – есть.
Парсер – есть, хотя де-факто юзается только ббкод без выбора, а simple parser не умеет даже менять переносы строк.
Синк – нет, так как нет апи для доставания постов с борды. Но в принципе это возможно.
Желательно бы еще сделать полноценный апи доставания постов так, чтобы можно было приделать к борде сторонний интерфейс, а в будущем вообще выпилить встроенный. Но это так, мечты, вряд ли у меня совсем скоро возникнет вдохновение такое сделать.
>>131426
Туда же можно и марочки запилить, чтобы они не хардкодились внутри борды, а доставались по ссылке с сервиса. И аналогично позволить добавлять сколько угодно сторонних марочкосервисов, со своими интерфейсами для добавления.
Replies: >>131748, >>131756
>>131743
Хотя, с марочками будет проблема: их слишком много. Передавать файл из стороннего сервиса при каждом чтении нерационально. Правда, если они лежат на одном хосте, можно прямо вставлять ссылки на тот сервис вместо того чтобы качать файл на борду. Но тогда если заюзать сторонний сервис и он отвалится, все его марочки потеряются…
>>131743
Можно ещё маркопаки сделать. Допустим, в разных темах использовать разные. Ну и дать им возможность наследоваться друг от друга.
Мне правда очень лень писать к этому интерфейс, да ещё с авторизацией, но всё равно придётся.
Сделал реализацию марочного сервера, просто базового без интерфейса для тестирования самой возможности. Попробую ещё написать проксирование вывода самих картинок, чтобы внешнему юзеру не кидать ссылки на сервис, а отдавать картинку через борду.
И производительность такого подхода пока не тестил, как и возможность кэширования.
>>130245
Но ведь дефолт и должен быть UTC.
Replies: >>131876
>>131874
Чойта?
Replies: >>131890, >>131908
>>131876
ЛьОРохом'ячки хочуть спільний для всіх відвідувачів пояс — тільки там MSK :3
Replies: >>131896
>>131890
Киев – мать городов русских. Идеальный часовой пояс для всех.
Replies: >>131897
>>131896
Не всім потрібні руські.
>FROM python:3
>:3
:3
Курва, в тебе що — і бірда, і парсер запускаються на 8000-му порті? Ну й як їх без докера запускати разом?
Replies: >>131901
І знову конфіґ у репозиторії, ненавчувана тварюка.
Replies: >>131902
>>131899
Ты в докере их мапишь на какой угодно порт потом. Или можешь зайти внутрь и поменять.
Replies: >>131903
>>131900
Конфиг чего?
Replies: >>131904
>>131901
Сракою читає. Я кажу — без докера. Причому дефолтний конфіґ, що характерно, чекає на нього на 8001-му порті. А сервиться на 8000-му. Льогіка? нема її!
Replies: >>131915
>>131902
Їх багато, чи шчо? Я про application.properties.
Replies: >>131914
2019-11-23 17:12:16.006 ERROR 6364 --- [nio-8000-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException: null
at me.neboard.newneboard.service.PostService.connectReplies(PostService.java:327) ~[main/:na]
at me.neboard.newneboard.service.PostService.createPost(PostService.java:114) ~[main/:na]
at me.neboard.newneboard.service.PostService.createPost(PostService.java:85) ~[main/:na]
at me.neboard.newneboard.service.PostService$$FastClassBySpringCGLIB$$9318f2.invoke(<generated>) ~[main/:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749) ~[spring-aop-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294) ~[spring-tx-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) ~[spring-tx-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) ~[spring-aop-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at me.neboard.newneboard.service.PostService$$EnhancerBySpringCGLIB$$67e775ec.createPost(<generated>) ~[main/:na]
at me.neboard.newneboard.rest.PostRestController.addPost(PostRestController.java:131) ~[main/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.16.jar:9.0.16]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:63) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:151) ~[spring-session-core-2.1.4.RELEASE.jar:2.1.4.RELEASE]
at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:81) ~[spring-session-core-2.1.4.RELEASE.jar:2.1.4.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.16.jar:9.0.16]
at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Replies: >>131906
>>131905
А, тьху, це я намагаху послатися на піцт, якого ще нема :3 Варто такі ситуації відловлювати, а не штатний Server pidor : pidor писати. Винеси-но валідацію постів до мікросервісу.
Replies: >>131943
>>131876
21 век на дворе, щас бы местечковое время юзать.
Replies: >>131909
>>131908
А буває инше?
>>131904
Это дефолт. Ты его меняешь переменными окружения.
Replies: >>131916
>>131903
Без докера можешь на разных хостах поднять.
Replies: >>131917
>>131914
Який сенс у дефолті, який необхідно редагувати, щоб він запрацював? Ліпше тоді взагалі не робити дефолт.
Replies: >>131918, >>131925
>>131915
Чудове рішення — піднімати окремий хост для маленького скрипта на пітоне, еге.
>>131916
До речи, зі старим рушієм подібна халепа: скрипти для операцій, що запускаються за таймером, штибу чищення IP, покладені, а конфігурація для крону чи хоча б якісь інструкції з їх запуску — ні. Можна взагалі не помітити їх наявність, якщо не переглядати весь репозиторій.
Replies: >>131926
Дідько, на локалхості баґ не відтворюється. Якщо вивести попап поста, який знаходиться в тій же нитці — після зникнення попапу зникає і пост у товщі нитки. А під час чергової синхронізації нитки пост з'являється знову, і все це відбивається на лічильнику нових постів у заголовку. Я гадаху, що видалення попапу просто видаляє всі елементи з таким ідентифікатором, але виходить — тут щось таємничіше.
>>131916
Он может работать в дефолте.
Replies: >>131928
>>131918
В новом оно все автоматическое. А настройку внешних сервисов я пытаюсь описывать в ридми.
>>131925
Не може. Там два сервіси з однаковими портами; запустиш — отримаєш конфлікт.
Replies: >>131932, >>131943
>>131928
А кто тебя заставляет запускать все на одном хосте в дефолте?
Replies: >>131934
>>131932
А де ще запускати під час розробки?
Replies: >>131938
>>131934
Я поднимаю в докере с тегом dev, так проще чем где-то скриптами запускать каждый раз.
Я подумывал сделать все сервисы необязательными, например при отсутствии парсера выдавать голый текст, но это опасно – парсер незаметно отвалится а на борде пойдет мусор.
Вот с не запушенным пока картинкосервисом попроще, он ищет картинки на лету и без него будет просто дефолтная марочка урла.
Replies: >>131951
>>131928
А кто тебя заставляет запускать все на одном хосте в дефолте?
>>131906
Да, надо отлавливать, заведи issue.
Replies: >>131952, >>131974
>>131938
Докер навіть у README зазначений як опціональний, тож мусить працювати і без нього.
Replies: >>131966
>>131943
А як іще, повторюю? Розробне середовище має на увазі одну машину. Ти ще тести ганяти запропонуй із залученням зовнішніх хостів замість моків, ліл.
Replies: >>131967
>>131951
>мусить працювати і без нього
Оно работает, меняй порты или запускай на разных хостах.
Replies: >>131971
>>131952
>Розробне середовище має на увазі одну машину.
Вовсе не обязательно.
>Ти ще тести ганяти запропонуй із залученням зовнішніх хостів замість моків, ліл.
Они только так и работают, я ещё не переписал.
>>131966
>меняй порты
Вони ж захардкоджені, винеси в конфігурацію, ліл. І прибери врешті конфіґ із репозиторію, його після редагування що — вливати кожен раз, серучи мерджкомітами? Це тобі не Mercurial.
Replies: >>131972
>>131971
Там нет конфигурации. Дефолтный конфиг должен быть, там половину настроек заменять не нужно. И с ним все запустится сразу.
Replies: >>131973
>>131972
Де нема?!
Replies: >>131977
>>131943
А де на відрі бітів ішуї? Здається, їх треба явно вмикати для репозиторію.
Replies: >>131976, >>131981
>>131974
Хм, возможно.
>>131973
В микросервисах.
Replies: >>131978
>>131977
То зроби.
Replies: >>131979
>>131978
Зачем? Мне и в докере нормально.
Replies: >>131982
>>131974
Включил.
>>131979
До чого тут докер? Налаштування ж у них якісь будуть.
Replies: >>131983
>>131982
У парсера не будет, зачем? У него только список методов и их реализация есть.
У сорсов есть, да, но там и порта нету, это скрипт.
У картинкосервиса опять же нет настроек пока, он просто выдаёт картинки из заданного каталога. Я попросил чтобы мне написали полноценный сервер с интерфейсом для заливки новых, но это будет небыстро, а пока что базовый никаких настроек не имеет и запускается на дефолтном порту. Я кстати залил его в отдельную ветку.
Replies: >>131984
>>131983
>У парсера не будет, зачем?
Вайтліст міток, приміром.
Replies: >>131986
Если ты собираешься запускать порту для разработки, я могу вынести парсер наружу, но только это не спасёт – ему нужен доступ к борде чтобы парсить рефлинки, а ты наверняка за натом.
Replies: >>131989
>>131984
Каких меток? Приведи пример.
Replies: >>131987
>>131986
Ну от айтішникам // зручний, а якісь анімукурви можуть схотіти його вимкнути, щоб не заважав ліпити смайли //^_^\\ Писати кольором на багатьох бірдах — привілей і розпізнавальний знак адмінів.
Replies: >>131991
Ёбаный ажур не подойдёт для хостинга.
Replies: >>131990
>>131985
Ти про що взагалі? Щоб тестувати мікросервіс із основної бірди?
Replies: >>131992
>>131988
А ти хотіше, щоб тобі на попсових хмарах задешево було?
Replies: >>131993
>>131987
Как ты себе это представляешь в интерфейсе? Я допускаю отключение тегов вообще, но выбирать какие тебе хочется – это странно. И опять же это логичнее делать на форме, а не для всей борды глобально. Да никто других борд и не поднимает собственно.
Replies: >>131994
>>131989
Наоборот, чтобы ты мог свою борду тестировать или поднимать в продакшен с моим парсером, на размениваясь на свой.
Replies: >>131998
>>131990
Так у меня ничего тяжёлого нет. А так выходит что докер докером, а брать нужно обычный попсовый впс или продолжать хоститься дома.
Replies: >>131996
>>131991
>никто других борд и не поднимает собственно
politach.ru був же. Може, ще десь тишком-нишком сидять.
Replies: >>131997
>>131993
Я тобі одразу казаху, що докер не потрібен, його нема куди тулити.
>>131994
Правда? Я не застал. На старом движке?
Replies: >>131999
>>131992
А що, парсер робить вихідні з'єднання до бірди, ліл? І підтримує роботу з кількома бірдами одночасно при цьому?
Replies: >>132002
>>131997
Його сюди неодноразово вкидали, в тебе знову пам'ять, як у рибки?
Replies: >>132003
>>131998
>парсер робить вихідні з'єднання до бірди
Да. Он у борды запрашивает ссылку на пост (и исходя из этого его наличие) для рефлинка.
>І підтримує роботу з кількома бірдами одночасно при цьому?
Обратная ссылка передается в каждом запросе на парсинг.
Replies: >>132005
>>131999
Не знаю, куда кидали, я не видел.
>>132002
Навіщо запитувати, коли бірда вже встановлює з'єднання, запитуючи розмітку? Не можна сокет відкрити й у два боки по ньому ганяти? Капець якийсь.
Replies: >>132010
>>132005
>Не можна сокет відкрити й у два боки по ньому ганяти?
По http get-запросу? Каким образом?
Replies: >>132012
>>132010
До чого тут HTTP, коли мова про сокети?
Replies: >>132014
>>132012
До того, что все сервисы общаются между собой по ресту, а не голыми сокетами.
Replies: >>132017
>>132014
Ну і чому не використовувати сокети, коли вони доречні? Це ж рукосрацтво якесь — обробляти вхідний запит під час виконання вихідного.
Replies: >>132018
>>132017
>Ну і чому не використовувати сокети, коли вони доречні?
Потому что там больше проблем со стандартизацией. Здесь всё просто, есть готовый протокол, есть кодировки, есть json'ы.
>Це ж рукосрацтво якесь — обробляти вхідний запит під час виконання вихідного.
Не вижу ничего странного. Вызывающий и борда могут быть вообще разными сервисами на разных хостах, скажем, парсит сервис синхронизации, а посты спрашивают у борды.
Базовый поиск стикеров тоже сделал, надо только сделать безовый гейтвей туда и поправить скрипты чтобы автодополнение было. Ну и собственно загрузку по ссылке.
Replies: >>132558
>>132489
Докер не умирает!
// Хорошо что ты напомнил, надо создать юнит для сервиса марочек.
Reply to thread #130128
>qbispoilerscodecolor// comment
Maximum number of attachments: 5
Maximum total files size: 19 MB