dima
если фулстек = говнокод везде
да не скажи) бывает и без фулстука говнокод
Alexey Mishurovskiy
На джуна берут
ну это норм, можно сменить направление если понравится
Konstantin
На джуна берут
для джуна тоже вопрос позорный
Konstantin
?
Alexey Mishurovskiy
для джуна тоже вопрос позорный
да почему позорный. задача простейшая, и тут скорее всего интересна реализация и организация кода
Konstantin
Почему позорный?
Max
для джуна тоже вопрос позорный
позорно не сделать, а чувак ищет решение
Konstantin
вы уж извините. помочь-то могу, если делать нехер, но вам это повод задуматься о собственных навыках, это детсад "я не знаю как порезать задачу на интерфейсы"
Alexey Mishurovskiy
позорно не сделать, а чувак ищет решение
ну он не просит вроде за него писать )
Konstantin
да почему позорный. задача простейшая, и тут скорее всего интересна реализация и организация кода
++, я могу наколдовать как угодно, просто интересно мнение и советы более опытных ребят
Konstantin
позорно не сделать, а чувак ищет решение
позорно на собеседование принести чужой код, не? и чужие мысли. а потом, если не дай бог возьмут, сосать с работодателя деньги, не умея решить вот такое?
Max
Ты гуглу глупые вопросы не задаешь?)
Konstantin
Будет так же крутиться и научится
он будет крутиться за бОльшую зп, чем должен
Konstantin
это, на мой взгляд, не совсем честно
Alexey Mishurovskiy
он будет крутиться за бОльшую зп, чем должен
Всегда можно обсудить тестовое
Max
Alexey Mishurovskiy
если тот кто берет на работу не идиот он до всего докапается
Alexey Mishurovskiy
он будет крутиться за бОльшую зп, чем должен
С таким подходом и к собеседованию готовиться не надо и знания освежать не надо
Alexey Mishurovskiy
я вот когда беру человека мне важно как он думает. что то не знать это нормально
Konstantin
это, на мой взгляд, не совсем честно
Я не понимаю, что тебе не нравится. Что плохого в том, чтоб спросить совета, как сделать лучше, тем более, если ты делаешь это в первый раз. Работодатель знает, что до этого я ни разу в жизни не писал на симфони
Konstantin
Я считаю, имею полное право искать информацию как угодно, и где угодно. Это не тест на знания, а тест на поиск решения задачи, с которой никогда ранее не сталкивался
Konstantin
Но правильнее будет, если ты сам ошишешь как ты хочешь сделать и уже опытные поправят\направят.
Даа, ты прав, я вернусь позже, как сделаю, скину репу, там уже обсудим. Просто думал, что мб есть какие то в симфони приколы для подобных задач
Konstantin
Спасибо всем!
Юра
Парсер хорошой написать чтобы, знать надобно не мало
Юра
Например для начала надо скачать страницы
Юра
Не всегда нужно, но бывает что-то вдруг надо допарсить
Юра
Но в твоём случае главное реализация возможности поддержки разных сайтов
Юра
Без этого думаю твое задание не примут
Konstantin
короче, что я бы хотел увидеть на собеседовании от джуна: 1) надо спроектировать таблицу для новости: id, title, text, source (с какого сайта спарсили - rbk, habr, etc), created_at, external_id (уникальное поле чтобы не спарсить одну статью дважды). этот шаг мы опустим как тривиальный, сводится к настройке сущности Article 2) сделать DTO ParsedArticle - типизированную обертку для того, что напарсил парсер чтобы не обмениваться массивами неизвестной структуры в разных слоях приложения 2) сделать ArticleFactory - фабрику, что будет создавать новости из нашей дто-шки. пока опустим обработку дубликатов, в условиях задачи этого нет class ArticleFactory { public function create(ParsedArticle $input): Article { // тут мы вставляем в доктрину сущность статьи и ее возвращаем } } 3) интерфейс парсера. нужен чтобы абстрагироваться от имплементации парсера конкретного сайта. в процессе будем добавлять новые парсеры, но весь остальной код про это не знает interface SourceParserInterface { /** @return ParsedArticle[] */ public function parseNews(int $limit): array; } class RbkParser implements SourceParserInterface { ... // тут уже работаем с парсингом конкретного сайта. в будущем общие части (например, "скачать хтмл" или "распарсить хтмл" можно вынести в абстрактный класс и наследоваться от него, чтобы не приходилось утилитную работу делать в каждом парсере) } 4) registry парсеров - некий контейнер, что по ключу (например, rbk, habr) будет возвращать инстанс парсера. нужно чтобы вызывающий парсер код не знал о конкретной реализации парсера. я бы это сделал через tagged_iterator - см. доку симфони class ParserRegistry { public function getParser(string $id): SourceParserInterface { if (isset($this->parsers[$id])) { return $this->parsers[$id]; } throw new \InvalidArgumentException(sprintf('parser %s does not exist', $id)); } } 4) команду, что запустит парсер. ей мы будем передавать input argument-ом id парсера, что хотим спарсить. допустим ./bin/console parser:run rbk или ./bin/console parser:run habr class RunParserCommand extends Command { public function __construct( private readonly ParserRegistry $registry, private readonly NewsFactory $factory, ) { parent::__construct(); } protected function execute(InputInterface $input, OutputInterface $output): int { $parser = $this->registry->getParser($input->getArgument('id')); $articles = $parser->parseNews(10); foreach ($articles as $article) { try { $obj = $this->factory->create($article); } catch (\Exception $e) { // так как мы работаем с батчем, нужно понимать, что ошибка в обработке одной новости сломает всю пачку. // поэтому тут надо тщательно эту ошибку обработать } $output->writeln(sprintf('<info>created article with title %s</info>', $article->getTitle())); } } }
Konstantin
да мне действительно нефиг делать и я всё это пишу, не знаю зачем
Konstantin
но я бы примерно такой ответ, либо хотя бы ход мыслей ждал. разумеется, я опускаю настройку симфони, доктрины, контейнера и прочее
Konstantin
но по мне, если честно, на джуна это довольно объемное задание, даже я бы на всю мелочь и вылизывание до идеала (особенно с учетом парсинга) потратил на это, наверное, час бы точно. а то и два. джун легко бы неделю копался и всё равно сделал бы не то
Konstantin
разве что не описывать конкретные парсеры, а обойтись просто схемой взаимодействий
Konstantin
Парсер хорошой написать чтобы, знать надобно не мало
я почти уверен, тут основной упор на организацию кода, классы, команды, интерфейсы, а не тупо парсинг, это как раз самое слабо интересное работодателю. парсить любая макака умеет, а вот код организовать - уже проблема
Юра
Еще надо подумать о масштабируемости, завернуть все это в кубер кластер, настроить репликацию, dns round robin, BGT protocol, поднять p2p CDN. А и blockchain nft токены
Konstantin
да не, это как раз минимальный набор, я прям старался все выкинуть лишнее
Alexey Mishurovskiy
я тут на убунту 22-ю обновился. теперь такие белые пятна в шторме появляются. куда копать ?
Konstantin
свингопроблемы :)
Alexey Mishurovskiy
в багтрекер шторма
надо наверное сначала попробовать его переставить с нуля
Alexey Mishurovskiy
какой то пиздец
Alexey Mishurovskiy
написал им в поддержку короч
Юра
Линукс только в теории можно сделать dist upgrade
Юра
На практике лучше с нуля поставить
Alexey Mishurovskiy
Alexey Mishurovskiy
вот чистый аккаунт, то же самое
Юра
Java, write once, run everywhere
Burlakovmax
Шрифтов нет может каких?
Юра
Поэтому мне нравится флатер, который сам рисует все по максимуму и которому пофигу что там в системе творится
Alexey Mishurovskiy
буду переставлять с нуля ) я думаю 100% вылечится )
Alexey Mishurovskiy
вопрос в чем причина
Юра
Может там Wayland
Юра
Или еще что-то
Burlakovmax
вопрос в чем причина
У тебя «белезна» прет где значки и прочее - шрифта нет
Burlakovmax
Ну или что то такое
Alexey Mishurovskiy
У тебя «белезна» прет где значки и прочее - шрифта нет
не только еще например тултипы всплывающие. но все это не всегда.. то глючит то нет
Burlakovmax
Ну как выше писали с нуля…
Alexey Mishurovskiy
Ну как выше писали с нуля…
уже хмяка бекаплю ))
Burlakovmax
Но как по мне шрифт свалил какой или что то такое
Burlakovmax
Хотя шторм должен тащить все…поддержка?:/ Ну это я фантазирую
Alexey Mishurovskiy
Alexey Mishurovskiy
у меня уже было давно что то подобное после апгрейда. все же нормально апгрейд не работает
Spider
интересно что сейчас перспективнее для удадленки симфа или лаварель?
Alexey Mishurovskiy
самый перспективный
Spider
а если из этих вариантов? без доп
Burlakovmax
Konstantin
перспективнее уметь программировать и решать задачи, на ларавеле больше говнопроектов за двадцать баксов, на симфони больше шанс попасть на нормальный проект, где люди даже что-то нормальное делают
Spider
ладно нафиг - останусь в битриксе
Konstantin
с ларавелем это исключено
Alexey Mishurovskiy
с ларавелем это исключено
тут не соглашусь. лара особенно в штатах популярен
Alexey Mishurovskiy
но на симфе больше серьезных проектов, это факт