Задать вопрос
  • Как спарсить openapi?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Так ты сам этот инструмент назвал. Это и есть Swagger. А точнее swagger-codegen.

    https://swagger.io/docs/open-source-tools/swagger-...

    UPD: Добавил линку
    Ответ написан
    Комментировать
  • Бэкап Linux (Fedora)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Хочу при помощи tar сохранить все конфиги, но метаюсь между выбором директории home и ~/.config

    Дык тебе не надо метаться. Тем более что никто не сможет ответить нужен ли тебе home целиком или нет.
    Если места достаточно то бэкапть все что можно.

    Но проблемы бэкапа только начинаются после того как он сделан. Ты разверни виртуалку и попробуй потом восстановить все конфиги (и приложения!!) с этого бэкапа. Я гарантирую сюрпризы.

    Вобщем пробуй сам. Для бэкапа всех поддиректорий с точечками - можно написать скрипт. Но проблема
    не в этом на самом деле.
    Ответ написан
    Комментировать
  • Как стоит организовать хранение данных mysql?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Скорее всего тебе нужно 2 таблицы. Users и Tasks. Вторая - дочерняя и таким образом у одного юзера есть несколько тасков или ни одной.

    Это называется Нормализация БД.
    Ответ написан
    Комментировать
  • Почему новичкам часто советуют парсинг?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Парсинг - это очень простое ТЗ которое можно привязать к опыту работы с сетью и с реальными а не учебными данными. Я думаю что такие ТЗ создают очень ленивые преподаватели и инструкторы. Которые обязательно воспользуются результатом вашего труда. Коллекция парсеров магазинов пром-товаров может быть собрана в пакет и перепродана кому-то еще.

    Парсинг для самого разработчика - это дно-днищенское. Очень быстро прокачаете опыт в BeautifulSoup но кроме этого дальше расти некуда. Парсинг с точки зрения договорённостей о сетевом контракте (endpoint, Swagger, SOAP, gRPG) это тоже сплошное кидалово. Что-бы вы не дизайнили - владелец сайта в любой момент может сломать просто изменив спецификацию или дизайн. Это ставит вас в заведомо рабское положение. Вроде как работу проделали но за 1 день до релиза сайт сделал редизайн и всё зря. А никто не заплатит.

    Я парсил исключительно из любопытсва. Только не на Python а на других языках. Создавал базу прокей (штук 100) и пытался работать через них в параллелизме. Типа аккуратненько. Чтоб не было очевидно. Прокси ломаются. Отъезжают. Вобщем забавно. Можно потратить кучу времени но ненадежно. Все что бесплано - ненадежно.

    Мой друг парсил валютные биржи. Но не ради парсинга а ради самих данных. Это было полезно. Он гонял на них нейросетевые алгоритмы. Торговые роботы типа.

    По поводу опыта работы с Selenium. Я не использовал никогда. Но я думаю что это очень полезный опыт если вы докажете что делаете любые штуки - можете пойти тестером автоматизатором в большую корпорацию. Это уже на несколько левелов выше чем парсинг сайтов. И оплата стабильная.

    Вобщем как цель жизни парсинг - втопку. Но как некий опыт. Попробовать. Поймать тыщи HTTP-ошибок. Парсить разные виды респонсов - это я считаю полезно.
    Ответ написан
    1 комментарий
  • Компилятор выдаёт ошибку 1 при Выставление счета через QIWI. Что делать?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Автор попробуй поменяй версию com.qiwi.billpayments.sdk на более новую или более старую.
    Ответ написан
    Комментировать
  • Где ошибка? Почему массив выводится в линию?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Кажется вот этот вывод перевода строки стоит не там.
    }cout << "\n";

    Вообще... олимпиадный код где сплошняком идет стена вычислений вперемешку с выводом читать трудно.
    Разбей хотя-бы на 3 функции. Ввод. Расчеты. И вывод результата.
    Ответ написан
    Комментировать
  • Будет ли приложение для arm64-v8a работать быстрее чем для armeabi-v7a?

    mayton2019
    @mayton2019
    Bigdata Engineer
    До 2005 года производительность зависела практически только от тактовой частоты. Покупаешь 2 процессора. Смотришь. Если в 2 раза больше - то можно предполагать что в приложениях типа рендеринга 3Д графики будет ощутима разница.

    Для современного железа все стало запутано. Стали наращивать число ядер. А это значит что программист обязан писать приложения так чтобы они бились на независимые части и работали на ядрах. Мультизадачка по сути. В твоём кейсе скорее всего не будет разницы. Или будет сильно зависеть от класса приложения. Или будет разница зависеть от совокупности - процессор-кеш-объем-памяти-тип-сетевого-соединения (3G/4G/Wifi).
    Ответ написан
    Комментировать
  • Что быстрее: select и update или просто update?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Делай просто update. Проверка не нужна.
    Ответ написан
    Комментировать
  • Стоит ли изучать sql, или же сразу заняться изучением ORM?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Стоит ли изучать sql, или же сразу заняться изучением ORM?

    Все люди которые ратуют за использование ORM с годами все равно приходят к очень сильной
    и мотивированной необходимости знать SQL. Этот язык сегодня является латынью баз данных.
    Вы сможете говорить с бизнесом на одном языке если будете в переписке активно использовать
    например язык DDL таблиц. Ваши аргументы будут выглядеть убедительно если в переписке будут
    фрагменты например любой консоли MySQL, psql, SQL*Plus e.t.c. Короче знание SQL - это признак
    джентльмена. Путь в приличное общество.

    И наоборот, вы будете вообще НЕПОНЯТЫ если попробуете показать ORM объект на Node или не дай
    бох на Java/JPA техниках аннотации. Бизнесу эти аннотации неинтересны и неинформативны.

    Да и вам самомму смоделировать любой сложности выборку или отчет будет бытрее в SQL чем в фрейморках
    ООП-отображения.

    Что касаемо перформанса. К сожалению все современные ORM реализуют только самые базовые возможности
    оптимизации запросов. Насколько я знаю Hibernate (по состоянию на 2015 год) так и не умел обращаться
    с Oracle Hints. А любой сложный ентерпрайз начинается там где вы выжимаете из запроса не 100 а 1000%
    возможностей. И здесь вам нужно управлять проприетарными функциями воздействия на оптимизатор.

    Вообще для меня например цикл оптимизации ORM запросов начинается с того что я выбрасываю из
    стека ORM. Заменяю на native. И долго наблюдаю его и оптимизирую. И когда достиг критерия готовности
    то пытаюсь затащить обратно в ORM. Иногда не заходит. Это те случаи когда ORM оказался плох.
    Эти случаи сложны, синьорны. и по каждому из них можно здесь в хабре открывать статью как минимум.

    Но не все так плохо. Существует взгляд на ORM с обратной стороны. Это фреймворки наподобие MyBatis.
    Они в первую очередь решают проблемы БД а уж потом дают опции объектных возможностей. Короче
    Батис - это ОРМ наоборот. Где эволюция системы идет не от кода к БД (как любят хипстеры) а от
    имеющихся вызовов процедур
    и запросов к объектам респонса.
    Ответ написан
    5 комментариев
  • С чего лучше всего начинать рефакторинг?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот плохо написанная функция изменения цены товара, учитывающая множество разных условий. Нужно рефакторить, так как сама функция жутко нечитабельна. С чего начать рефакторинг или какие методы использовать для начала рефакторинга?

    Обычно рефакторинг начинается с написания модульного теста который полностью покрывает все кейсы улучшаемой функции. Без этого шага начинать рефакторинг рисковано. В противном случае ты можешь что-то сломать и долго не знать об этом.

    После того как модульный тест написан - можно смотреть на функцию. Что в ней видно невооруженным глазом? Видно большое количество повторяющихся действий. Например одна и та-же функция реплейса по регуляке.

    .replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ')

    встречается 4 раза. Ее можно обработать через extract function. После этого кода станет визуально меньше.

    Далее - повторяющийся code-block с обновлением update_price. Его брат-близнец отличается только
    аргументом option_price. На этом можно сыграть и тоже сделать некоторое упрощение.

    if (prefix == '+') {
          update_price = current + Number(option_price);
        } else {
          update_price = current - Number(option_price);
        }


    Некоторые фрагменты кода напрашиваются на introduce temporary variable.
    Например следующий сниппет
    option_sizes.find('input[type="hidden"]')
    был использован дважды. И первый раз он нашел какое-то значение и был использован.
    И в следующей строке этот поиск был вызван снова. Хотя операция find как-бы подсказывает
    нам что она имеет complexity близкое к линейному. Тоесть нужно ценить процессорное
    время и не грузить его повторными поисками. Тут - как-бы смысл двойной. И перформанс
    и нормализация кода. Тоесть явное указание что этот результат нам еще понадобиться.

    Очень сильно в рефакторинге помогает типизация. Тоесть если переписать код с JavaScript на TypeScript
    то будут более очевидны некоторые инварианты.

    Вот на этом пожалуй хватит. Надо сделать эти рефакторинги и возможно дальше откроется видение других.
    Ответ написан
    3 комментария
  • Какая БД позволяет использовать структуру множественной связи (дерево связано с деревьями)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Посмотри графовые бд: Neo4j (например).
    Покрывает все твои потребности.
    Ответ написан
    2 комментария
  • Как поменять порядок битов в байте C?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут все биты - перевернуты.
    На псевдокоде как-то так.
    int a = 0b0010_1101;
    for(i in (1..8)) {
     b |= a & 0b0000_0001
     b <<= 1;
    }
    Ответ написан
  • Какой дистрибутив java выбрать для обучения?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Можно брать последнюю с суффиксом LongTermSupport (LTS) но с условием что фреймворк тоже
    поддерживает эту версию. Например я тоже люблю топчик (JDK17) но вынужден кататься на
    более старой модели жигулей JDK11 только потому что нужные Spark/Hadoop иногда хотят
    именно старую версию.

    Для разработок в банковской среде очень многие enterprise приложения до сих пор (!)
    сидят на JDK-8 и очень мало вероятно что они когда-то переведут language на что-то более
    старшее. Поэтому весьма анекдотична ситуация когда вас собеседуют и спрашивают про
    модное-молодежное а когда приходите на рабочее место - с ужасом узнаете какой
    огромный парк легаси сред и языков вас будет сопровождать. Печаль-печаль.

    Вообще проблемы установки конкретного дистрибутива ощущают с болью в основном Windows-пользователи.
    Для Linux эта проблема не так заметна. Можешь поставить 3/11/17 LTS в разные фолдеры и переключать их просто меняя PATH/CLASSPATH для текущего сеанса консоли.

    Для приложений на базе контейнеризации (docker/kuber) - вообще такой проблемы не существует.
    Каждое приложение выбирает себе конкетную сборку JRE/JDK в конфигурации образа.
    Ответ написан
    Комментировать
  • Как можно практически закрепить знания JAVA SE?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Мне кажется ты слега перегрел себя. Что там оттачивать в Enum? Какой вопрос тебя могут спросить на собеседновании на джуна и на который ты не знаешь ответ.

    В твоей ситуации я был. Это похоже на усталость. Ничего не надо делать. Надо просто отдохнуть.
    Для систематизации-же заведи себе в гитхабе проектик типа FAQ. И складывай туда code-samples
    по каждому вопросу.
    Ответ написан
    Комментировать
  • Как сделать функцию полнотекстового поиска?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно попробовать начать с поиска по LIKE выражению. Обычно этого хватает для небольших таблиц.

    А сама постановка полно-текстового поиска - очень сложна в условиях. Например в том какие возможности поискового языка должны использоваться. Нужно ли учитывать национальные особенности языка. Стоп-слова. Стемминг. Лемматизацию. Как часто будут обновляться индексируемые данные. Это все - список экспертных вопросов которые надо проговорить. Если вы не знаете зачем вам это все - то наверное полнотекстовый поиск не нужен и like будет достаточно.
    Ответ написан
  • Как обращаться к элементам json через точку?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Существует только один язык в котором объекты мапятся однозначно в JSON. Это javaScript.
    Собсно слово JSOn от этого и происходит. А во всех других - будут какие-то LinkedHashMap
    шаблонизирующиеся строкой как ключ и object как value.
    Ответ написан
    Комментировать
  • Какую область программирования выбрать PHP или Java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Если автор знает Python - это очень хорошо. Мне кажется что под него щас проще искать работу. В том смысле что он - широкоформатный. Есть и девопс и электронная коммерция и дата-саенс и автоматизация тестирования и нейросети с роботами и железяки.
    Ответ написан
    Комментировать
  • В чем практический смысл тестирования?

    mayton2019
    @mayton2019
    Bigdata Engineer
    У багов есть разный impact. Или степень влияния на качество продукта. Вот какое влияние сдвинутых иконок?
    Я думаю их увидели только жители стран которые используют перевод с английского и этот перевод оказался на несколько символов длинее оригинала из-за чего произошел развал дизайна. Можно сказать что аудитория некоторых стран ощутила легкое неудобство.

    Тоесть impact - так себе.

    А что будет если программист 3Д графики допустил ошибку, которая приводит к крашу игры? Тут влияние посильнее. Я-бы сказал что это провал релиза. Как такое пропустили тестировщики (автоматизаторы или ручники) неважно) - ХЗ. Но тут важно срочно бежать в студию и выкладывать на steam экстренное обновление игры. И счет идет не на недели а на считанные дни. Кое-кому из отдела разработки и тестирования придется провести несколько безсонных ночей перед багфиксом.

    Вот в этом и есть практический смыл тестирования. Тестировать важные части логики.
    Ответ написан
    Комментировать
  • Какой монитор выбрать, если материнка DVI-D и HDMI?

    mayton2019
    @mayton2019
    Bigdata Engineer
    DVI-D - это морально устаревший стандарт. И его стоит брать только для железа которое уже не будет модернизироваться. Кроме того у DVI-D есть ограничения по разрешению видео. Посмотрие в технических описаниях стандарта.
    Ответ написан
    Комментировать
  • Какой формат (с изменениями) эффективнее хранится в Git?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вам надо в git складывать не бэкапы Sqlite а текстовое представление wiki по состоянию на сегодняшний день. Насколько я помню там есть
    свой язык форматирования типа markup. Так что все будет норм.
    Ответ написан
    2 комментария