Задать вопрос
  • Какую выбрать СУБД, если в день может быть более 11млн записей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    11 миллионов inserts в день - это 127 в секунду. При такой нагрузке справится любая современная БД. Ну я не знаю таких чтоб не справлялись. Делайте только короткую буферизацию и batch-insert пачками по 100 - 1000 чтобы оптимизировать сетевой roundtrip.

    Есть специализированные NoSQL системы такие как RocksDb, Tarantool в которых именно много оптимизаций сделано было для быстрой вставки. Они выдерживают и во много раз быстрее.

    И в данной задаче нужно также спросить бизнес - как быстро данные нужны к чтению пользователя. Нужно сию секунду чтоб они отобразились на UI или можно подождать пару минут или часов.
    Ответ написан
    1 комментарий
  • Как избавиться от неспособности придумать адекватное название блокам?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я где-то читал что астрономы уже давно не дают названия планетам и звездам. Закончились у них названия. Они их нумеруют. Может быть в какой-то степени это оправдано. Если для блоков веб-дизайна нет названий то возможно им стоит давать хотя-бы номера из sequence. Или если есть указание на относительную ориентацию (север-юг или слева внизу) то можно добавлять там какой-то символ. Вот. А если у автора возникнет именно задача тесной работы со слайдером - то тогда он его просто переименует в slider и будет работать. Похоже конечно на обфускацию больше чем на конвенцию по именам. Но может быть имена не так уж важны в данном процессе.
    Ответ написан
    Комментировать
  • Как сравнить два списка с помощью хеш-кода?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Насколько я вижу хешкод нигде не хранится для ArrayList а расчитывается каждый раз. Поэтому твоя попытка срезать на повороте - скорее всего неудачна.

    int hashCodeRange(int from, int to) {
            final Object[] es = elementData;
            if (to > es.length) {
                throw new ConcurrentModificationException();
            }
            int hashCode = 1;
            for (int i = from; i < to; i++) {
                Object e = es[i];
                hashCode = 31 * hashCode + (e == null ? 0 : e.hashCode());
            }
            return hashCode;
        }


    Используй метод equals. Это будет правильный ответ на собеседовании.
    Ответ написан
    Комментировать
  • Как правильно выделить память для двумерного массива большого размера?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это не большой размер

    2000 * 500 * sizeof(int) = 4 000 000

    4 мегабайта на каждую матрицу целых чисел. Когда-то давно во времена DOS этой памяти хватало чтобы поиграть в DOOM.
    Ответ написан
    Комментировать
  • Как сделать вложенность кэша?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ты сам себе создал проблему. Вот какую пользу тебе дает вложенность?

    Бери правило Паретто. Вот если метод method_2 покрывает 80% нагрузки - то кешируй только его а на остальное - забей. Это будет проще и надёжнее чем придумывать какие-то немыслимые ВЛОЖЕННОСТИ которые никакого
    отношения к техникам кеширования не имеют.
    Ответ написан
    Комментировать
  • Что лучше использовать ИИ или готовые библиотеки?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я ниразу не использовала ИИ и для меня будет это трудно, но есть билибиотеки для работы с аудио и переводами

    Конечно нужно брать готовые решения.

    ИИ - это некое общее понятие которое скорее всего будет программным API и его еще нужно долго конфигурировать. И без специальных знаний это конфигурирование будет невозможным.
    Ответ написан
    Комментировать
  • Есть ли хорошие книги для глубокого изучения Linux?

    mayton2019
    @mayton2019
    Bigdata Engineer
    хорошие книги для глубокого изучения Linux


    Есть книга Linux System Programming - Robert Love. Она где-то 2008 года. Но мне кажется что еще не утратила своей актуальности. Думаю что многие вещи из нее актуальны в части API.
    Ответ написан
    1 комментарий
  • Как rsync сжимает при передаче данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Просто на сервере дай бог 10 гб свободного места осталось. Не будет ли он на сервере создавать какие то архивы?
    А передать надо много, гб 200

    Можешь отдельно заархивировать кастомным архиватором и порезать на тома и добавить контрольные суммы для восстановления.
    200 Гб - это тот размер когда стоит дополнительно сделать проверки на целостность.
    Ответ написан
    3 комментария
  • Как погрузиться в начала/фундамент программирования?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Как построенн язык программирования, например: Как понять, как устроенны ключевые слова; Препроцессорные процессы: define, include и др.; - Я правильно понимаю, нужно опустится на ещё более низкий уровень до ассемблера? - Ассемлер является той фундаментальной сущностью в программировании (не считая машинный код, который и так человек не должен понимать)?

    Лет 50 назад так было. Программист был физик-математик. И он обязан был знать как работает транзистор. Этот был "тот" уровень понимания требований к профессии. Сегодня знания ассемблера уже не являются обязательными. Можно прожить бурную и интересную жизнь будучи синьором-помидором разработчиком но так и не написать ни строчки на асмах. Профессия разделилась на узкие специализации и знать весь стек уже стало настолько трудно что это перестало быть необходимым.

    По второму пункту - я не понял что хотел автор. Хотел достичь какого-то дзена?

    Ну и вообщем, какие-то фундаментальные знания - на чём базуется/построенна програмированние и IT, тоже не помешало. Например рекомендуют SICP почитать, правильно ли я тогда пойду или это не то. Если да, можете ещё набросать ваши варианты? Буду признателен.

    Кажется один из авторов SICP сказал примерно следующее. Что современный инженер - это уже не создатель алгоритмов. Он - интегратор. Просто сама индустрия подталкивает к тому чтобы популярным стал язык Go а не Scheme. Хотя c моей кочки зрения Scheme интереснее и умнее, но увы. Прагматизм все решает. Для меня Scheme останется в разделе забавных мозговых экспериментов вроде брейн-фака. Ты решаешь задачу и получаешь от этого эндорфин. Как codewars. Вот такого эндорфина от Go нету. Хотя в резюме такое вписывать бесполезно наверное. Кому нужен Lisp-овед или Schem-щик?

    Кстати кто знает какие курсы в MIT сейчас читают? Поделитесь.
    Ответ написан
    4 комментария
  • Как менять параметр функции внутри другой функции?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для обобщенного метода интегрирования как раз удобно передавать не один параметр а всю лямбду.

    f = lambda x, y: x**n

    передавай эту всю колбасу как параметр для dbl_integral.
    Ответ написан
    Комментировать
  • Не правильно отображаются отступы в pdf после конвертирования в base64. Как правильно конвертировать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    base64 здесь скорее всего непричем. У него нет таких странных артефактов воздействия на отступы.
    Тут либо документ вообще был-бы сломан и не открылся либо он будет 100% побайтово соотвествовать
    оригиналу.
    Ответ написан
    Комментировать
  • Как узнать монотонное ли число?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    У меня какое-то дежа-вю. Кажется что вопрос повторяется. Ну вот рекурсивно. С дополнительным опциональным параметром.

    def isMonotonic(i:Int,o:Option[Int] = None) : Boolean = {
    	if (o.isDefined) (i % 10 <= o.get) else isMonotonic(i / 10,Some(i % 10))
    }

    Написан на Scala но можно без труда переделать в Java. Option/Optional там тоже есть.
    Ответ написан
    Комментировать
  • Есть ли разница для скорости работы БД при установке типа text, а не varchar 128?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Лимиты на текстовые поля - это архаизм и пережитки старины далёкой. Они имели большой смысл для DBase, Clipper, FoxPro но для современных БД практически уже неактуальны. Можно брать text.
    Даже Oracle вобщем-то снял лимит 4000 байт на строку и настройками системных параметров можно его растянуть хотя-бы в 32 килобайта.

    Тем более что в поля все чаще кладут semi-structured информацию (JSON/XML e.t.c).

    Но вы можете их использовать просто как констрейнт чтобы акцентировать внимание что поле имеет особый вид строки. Например хеш SHA-256 или какой-то ключ или UUID.

    Поддерживаю Дмитрия в наблюдении за oversized attribute.
    Ответ написан
    Комментировать
  • Как правильно сделать проверку Email?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть хорошая статья на эту тему https://habr.com/ru/post/175375/
    Ответ написан
    Комментировать
  • Можно ли индексировать varchar в mysql?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Все int я индексировал

    Вот ты чудак. Надо не все индексировать а только те которые оптимизатор запросов может выбрать в плане запроса.
    Ты кстати еще получишь обратную связь в виде замедления update/insert/delete на такой чудо-таблице.
    Оптимизация - это искусство. И тут нельзя так... приходить и ВСЁ индексировать...
    Ответ написан
    Комментировать
  • Чистый php, если нет Бд, то можно ли её создать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно эволюция кода идет синхронно с обновлением схем в БД. Для этого есть инструменты типа liquibase/flyway. Они приводят в БД в состояние полного синхронизма с вашим репозитарием кода. И то что у вас происходит (нет таблицы) - это ужас-ужас и надо срочно что-то менять в жизни.

    Вот так. Развивайтесь. Взрослейте. Хватит уже бегать в детских штанишках. Хорошая система должна трекать свои изменния. Берите лучшие практики которые есть сегодня. Создание таблицы в секции catch - это опасная практика которая кроме того вызывает еще один парадоксальный вопрос из серии - а что делать если exception возник внутри секции exception и так далее.
    Ответ написан
    Комментировать
  • Всегда ли нужно переиспользовать переменные?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Оба примера - одинаковы по смыслу поэтому можно брать любой.

    Но если-бы я писал это на Rust/Scala то я всегда предпочитал бы константу. Ибо идеология и доказуемость значения в константе важнее гипотетических performance fixes.

    В данном случае - я все равно не специалист в Go и поэтому исходил бы из best practices и рекомендаций от самих создателей. Что они пишут по обработке ошибок? Дают ли они примеры? Вот если они в документации шлёпнут хотя-бы один сниппет с присвоением константы - то я скажу Окей мне все ясно и пойду писать код.

    Где там идолы что пишут у себя в pet-projects - надо смотреть.
    Ответ написан
    Комментировать
  • Как лучше хранить и пересылать время: как полную дату или только время?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если backend это Java - то заявлен тип данных java.time.LocalDate. Он - сериализуемый следовательно будет однозначно писаться и считываться из памяти и из сети.

    Вообще у программистов backend не возникает вопросов как "лучше хранить" и передавать время. Если вы хотите сильно экономить то храните и передавайте количество секунд с начала суток. Это будет целое число от 0 до 86400. Достаточно экономно. Но будете иметь свои трения при согласовании форматов между отделами разработки фронта и бєка. Можете передавать строкой как есть "08:40:20" но договоритесь о запрещенных комбинациях и так далее.

    Короче этот вопрос не про Postgres а про технологии сериализации даты-времени, стандарты и протоколы.
    Ответ написан
    Комментировать
  • Какой тип данных использовать для хранения паролей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Пароль обычно обрабатывают. Добавляют некую символьную последовательность которая будет уникальна для данного приложения (salt) например abcxyz123. Это предотвращает подбор тривиальных хешей. После этого парольная фраза хешируется функцией (например) SHA-256. На выходе битовая последовательность - длиной 256 бит или в binhex кодировании (4 бита на символ) 64 символа. Вот эти символы можно вписать уже в текстовое поле типа text или varchar(64).
    Ответ написан
    Комментировать
  • Сайты для поиска единомышленников?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для более конкретного примера: мне нужен middle+ frontend разраб, которого заинтересует моя та или иная идея

    Со стороны выглядит будто ты - такой себе ловкий менеджер. Сидишь и хочешь надурняк что-то высидеть :)

    Смотри если твоя идея реально ценна (в ней есть бизнес интерес) то наверное лучше пойти на крауд-файндинговы площадки и там собирать деньги. Или поискать инвесторов.

    Если у тебя - чисто научный интерес - то иди лучше в научные кафедры. Ищи себе руководителя и грызи гранит науки. Может станешь лет через 10 кандидатом наук.

    До кучи еще посмотри сериал Силиконовая Долина. Тоже про идеи.
    Ответ написан
    Комментировать