Задать вопрос
  • Почему сайты открываются не с первого раза?

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я тоже до конца не понимаю цели и задачи которые ставились для winsock2 но вот можно
    почитать аннотацию здесь https://learn.microsoft.com/en-us/windows/win32/wi...

    С моей точки зрения было время большого разлада между лагерем Microsoft и Unix. И вместо того
    чтобы просто позаимстовать сетевые библиотеки или купить лицензии, MS как всегда стал делать
    что-то свое, "сумчатое" и ни на что не похожее. Яркий пример Component-Object Model (COM).
    Нигде такого нет.

    Для чего создаватьtypedef struct addrinfo{}? Только ради того, чтобы не писать struct в Си?

    Да все верно. Именно для такого юзкейса typedef и создавался. Плюс еще можно примитивы определять.

    Для чего определять *PADDRINFOA

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

    Где-то спокойно используется int, а где-то используетсяtypedef unsigned __int64 UINT_PTR, опять же вместо того, чтобы просто писать unsigned __int64.

    Это очень старый технический долг языка С++ и его уже нельзя исправить. Дело в том
    что спецификация языка не объясняет какой разрядности должен быть int. Он может быть
    16, 32 бит в зависимости от целевого железа. По сути он - синоним регистра процессора.
    И когда мы делаем цикл от 1 до 10 и нам по сути неважна разрядность параметра цикла - мы просто заказываем
    int чтоб долго не думать. И компиллятор собирает очень быстрый и оптимальный код.
    sizeof(int), или константы в в limits.h могут дать подсказку по вашей текущей архитектуре.

    typedef unsigned __int64 UINT_PTR

    Здесь идет форсирование разрядности в 64 бита. Такие потребности возникают
    в момент когда у нас есть например жестко заданный формат (сетевой протокол
    или дисковый формат файла) и мы должны гарантировать что другие архитектуры
    микрокотноллеры, мобилы и прочее правильно смогут интерпретировать эту структуру.
    Тут еще и порядок байтов внутри слова тоже важен. В наше время даже есть сет
    стандартов на описание таких структур ASN, AVRO, Protobuf, Thrift.
    Ответ написан
    1 комментарий
  • Как найти 3 самых частых символа в строке?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Много путей. Можно отсортировать и потом просто пройтись по всем сериям.

    aaaaaaaabbcccccdeeeeeeeeeeee
    Вот здесь глазами видно что серия а и е самые длинные а потом еще с.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Сама идея объединения USB устройств в хабы - заложена в протокол. Благодаря ему и существуют всякие портативные разветвители для ноутбуков. Тоесть 1 слот и там ... до хрена устройств подключить. Это
    как TCP сеть в миниатюре. Вообще после всяких COM/LPT слотов USB шина была прорывом. Размножение
    устройств например на SCSI кабеле было реализовано за счет электрических свойств самого кабеля.
    USB после этого конечно верх удобства.

    По поводу припаять. Скорее всего не получиться. Дело в то что флешка это не кусок памяти. Это
    вполне себе умное и завершенное устройство со своим контроллером и со своими зашитыми
    от производителя возможностями. И это умное устройство паять тоже нужно по умному.

    А так можно попробовать просто вставить 2 флешки в хаб и как-то объединить их в один логический
    volume средствами ОС Linux например. Правда надежность такого волума будет падать.
    Если какое-то устроство отъезжает от случайного шатания слота - то весь диск будет развален.
    Ответ написан
    Комментировать
  • Как определить есть ли противоречия в цепочке логических выражений?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно попробовать на Prolog написать. Правила (rules) известны. А в качестве утверждений - просто
    проверить что существуют ли целые числа которые удовлетворяют всем rules.
    Ответ написан
    Комментировать
  • Как скачать файл через командную строку?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Слабый нынче геймдевелопер пошел. Пипка - это такой себе менеджер пакетов для питона. Как чоколядка для Виндовс.

    Вот тут можно скачать https://www.python.org/downloads/ или тут https://pip.pypa.io/en/stable/installation/

    Но вангую что на этом твои приключения только начнуться.
    Ответ написан
  • Как sql запрос для phpmyadmin оформить в php?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ты его и для admin неоптимально сделал. Зачем 7 раз переписывать каждый документ. Вот будет у тебя база в 100 Гб - значит перепишешь почти терабайт.

    Сделай

    UPDATE wp_posts SET post_content = REPLACE(REPLACE(.... (post_content, '<pre><code>', '</code></pre>', '').......))))
    Ответ написан
    1 комментарий
  • Почему сайт падает при парсинге?

    mayton2019
    @mayton2019
    Bigdata Engineer
    сайт падает, в логах ничего

    Так не бывает. Если OOM киллер срубает процесс то где-то об этом остается след.
    Поищи в syslog, в сообщениях D-bus, в логах Апача, в логах Редиски или ПХП.
    Ответ написан
    Комментировать
  • Невозможно открыть файл?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ох инженеры пошли совсем никудышние.

    Заходи в cmd. И делай
    c:
    cd \
    cd Users
    cd "Пользователь"
    cd "PycharmProjects"
    cd "pythonProject1"

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ох и амбиции. И что за перфекционизм в отношении Postgresql?

    Не знаю как автор посчитал миллиард. Это если все население планеты Земля составляет порядка 8 млрд.
    И что мы возьмем целую страну и инвентаризируем ее чтоб получить такое число?

    Для графовых БД существует не Postgresql а специальные БД типа Neo4j. Но еще до того как ты доберешся
    до графовых БД - задание может многократно измениться и выйдет что граф - рудимент. Так часто бывало.
    Вообще очень малое число задач требуют именно графов. Если табличка отражает семантику модели
    то можно и ее использовать. Только с условием не решать в ней задачи о рукопожатиях.

    По поводу того что в таблице что-то там кого-то убивает на 1 млрд. Я отвечу так что если вы строите OLTP
    систему то в ней этот миллиард никогда не будет использоваться целиком. Там будут горячие области.
    Их можно каким-то образом кешировать или алгоритмически пред-выбирать. Или брать key-value системы если ТЗ позволяет. Для них что миллиард что триллион все безразлично. Не забывайте только поднимать новые ноды и подкидывать диски в облачко. Или если речь идет
    о BigData к примеру то там есть свой техно-стек. Например Apache Spark / GraphX. Хотя я с модулем GraphX
    не работал ни разу. Но биг-дата запросы обычно никогда не запрашивают одного физ-лица или одну
    единицу тех-средства. Биг дате ставят задачу собрать всё про всех и отгрузить отчет в виде другой таблички
    или DataMart. И на это ей дадут пару часиков а то и день. Поэтому разговоры относительно убивания
    производительности - очень можно смягчить.

    Вообще такие сложные системы не обязаны строиться поверх Postgres или Neo или Spark. В их разработке
    вполне можно использовать целый pipeline из технологий где например Postgres будет просто одним
    из элементов. Или одним stage.
    Ответ написан
    3 комментария
  • Как сравнить данные двух mysql баз и внести изменения?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Импортируй первую базу во вторую. А потом вторую в первую.
    Ответ написан
    Комментировать
  • Как понять порядок столбцов в таблице в SQL (MS SQL)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ну любой API который работает с metadata из курсора - всегда выдаст тебе колонки именно в том порядке
    как и выдает фактический запрос. Для JDBC там была своя процедура https://www.baeldung.com/jdbc-database-metadata

    Да и даже еслиб ты не знал про метадату - можно просто выбрать запрос который выдает 1 строку и взать из него типы полей тоже через какой- то API (JDBC/ODBC).
    Ответ написан
    Комментировать
  • Kubernetes, десятки configmap и как это готовить?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут читается не техническая а организационная проблема.

    Не очень понятно но попробую дать совет.

    Вот ты говоришь что требуется в 10 конфигах сделать изменения.
    Какие? Они - взаимосвязаны? - Это должен быть 1 коммит в git.
    Эти все изменения должны быть просмотрены глазами хотя-бы несколькими людьми.
    Если цена изменения дорого стоит (инфраструктура) то по любому должна
    быть бригада девопсов. Они - страхуют друг друга от случайной ошибки.
    Если ты будешь брать на себя падения датацентров - то очень скоро
    станешь пациентом кардиолога. Бери коллег для подстраховки.

    Константы и зависимости - надо объявлять отдельно. Чтоб если меняется hostname
    или имя свойства - то это должно быть ровно одно изменение. Как поддержать
    константы в конфигах - я щас не помню но была куча всяких штук... толи Puppet
    толи Ansible вобщем поищи сам. Я думаю таких много конфигураторов.

    Когда несколько environments то на проекте создается просто несколько фолдеров типа
    /dev
    /qa
    /uat

    и в каждом фолдере лежит полностью сконфигурированная и оттестированная
    копия всех конфигов. Переключение между env тоже должны происходит
    изменением ровно 1 свойства.

    Если внутри конфигов есть некая базовая конфигурация которая очень похожа
    (прототип) то сделайте аналог COC (Convention Over Configuration). Пускай
    прототип будет всегда. А наследники dev, qa, uat будут просто изменять
    дельту. Пароль поменялся - в конфиге-наследнике - лежит ровно 1 строчка с паролем.
    Других строк - не надо. Потому что они наследуются от прототипа.

    Как технически реализовать COC - я не скажу. Это надо обсуждать. Я это делал
    на Java проектах но это как-бы идея "на подумать". На проектах у меня были
    *.properis файлы и эту конвенцию было реализовать несложно. С ЯМЛ ами я не делал.
    Ну думаю что это возможно. Почему нет?
    Ответ написан
    2 комментария
  • Как решить проблему ограничения кол-ва символов в SOLR?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Интересно. Вот тут пишут про похожий инцедент https://stackoverflow.com/questions/24019868/utf8-...
    Ответ написан
    Комментировать
  • Зачем использовать FileWriter?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ну если открыть описание API то там достаточно четко описано.

    Object
     +- Writer (Abstract class for writing to character streams.)
         +- OutputStreamWriter (An OutputStreamWriter is a bridge 
              |                 from character streams to byte streams)
              +- FileWriter (Writes text to character files using a default buffer size.)


    Последний - буферизированный.
    Ответ написан
    6 комментариев
  • Как можно обновить файлы в папке без перезапуска docker compose?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Докер здесь непричем. Это проблема вашего прикладного софта. Софт видит любые папки через volumes.
    Да-да и изменения тоже видит. Тестируйте этот пункт. Все должно работать как и слокальным диском.
    Ответ написан
    23 комментария
  • "прикладной код Java" - это что?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    В тексте вопроса написано много чепухи. Java может использовать внешнюю память. Кажется еще
    в Java 8 для Apache Ignite (и других NoSQL систем) были попытки использовать неуправлямую
    память через ByteBuffer. История где-то об этом сохранилась я думаю.

    Начиная с JDK-14 (могу ошибаться) завезли Foreign Memory API который оперирует с памятью
    более продвинуто.

    По поводу
    в Java не надо следить за памятью

    - неправда. Следить за памятью надо всегда. Иногда это делает разработчик (для С/C++)
    а иногда это делает GC или умные механизмы borrow-checker (Rust).
    Если не следить то долго работающие процессы пожирают всю память ОС
    до тех пор пока не будут убиты через ОС OOM killer. Возможно под слежением
    имелись в виду накладные расходы на работу GC? Но эта проблема специфична
    только для приложений которые активно делают new и переживают хотя-бы одну
    эпоху. Кроме того в Java есть несколько разных GC которые просто обнуляют
    все тезисы например 2000х годов и обсуждать их надо уже совсем как другие
    алгоритмы которые имеют другие свойства. Грубо говоря знания по GC очень
    сильно устарели после G1, Shennandoh e.t.c. Нужно учить заново всё.

    прикладной код Java - заменить на “прикладной код движка Java”

    Это вообще невозможно прокомментировать т.к. идет жонглирование терминами без
    определений. Что такое движок в данном случае - непонятно?

    В любом случае тебе надо звать в студию этого загадочного Романа и не плодить свои домыслы.
    Ответ написан
    2 комментария
  • Как создать 2д мир?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Нет необходимости отслеживать состояние сразу всех 2х миллионов. В старых 2д играх слешерах 90х например уровни тоже были очень богатые на количество enemies но их не нужно было обрабатывать и хранить всех сразу. По сути игрок видел view-port размером с экран и игровому движку нужно было активировать рождение объектов-персонажей почти у границы экрана. Когда персонаж покидал экран - его можно было либо удалить либо поставить на паузу. Этим пользовались почти все движки и экономили ресурсы.

    Если речь идет допустим о клеточных автоматах - то там тоже есть свои оптимизации. Можно расчитывать эпохи параллельно используя опции параллелизма железа например. Или объединять близко стоящие кластеры клеток и обабатывать отдельно чтобы предотвратить расчет всего экрана. Тут нет предела совершенству. Можно брать такие индексы как Q-Tree/R-Tree для быстрого трекинга этих областей.

    В некоторых играх типа Age Of Empires или Cossacks можно было рассматривать в качестве единицы расчета не каждого пехотинца или всадника а целые фаланги. Этим пользовались особенно когда боевые
    единицы ходили в построении.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для сетевого оборудования был режим транка когда несколько сетевух объединялись в одно логическое устройство и пакеты раздавались по принципу четный-нечетный например. Но это очень low-level и очень жестко ограничивало и характеристики канала и сами железки. Я не конфигурил это никогда но знакомые сетевики делали.

    Идея объединять Wifi с проводным соединением мне непонятна. Что сделать со ошибками? Мы имеем по теории надежности более слабую схему где сильно зависит все от качества эфира например. Эфир вокруг Wifi всегда шумит ошибками и скорость плавает. Тоесть мы надежное кабельное устройство объединяем с крайне ненадежным. Что это будет? В какой части стека это можно вставить? IP? Кадры? Прикладной уровень?
    Как их чередовать?

    Я вспомниаю протокол SCTP. Он вроде бы создавался для таких двух-интерфейсных соединений.
    Но как он работает?
    Кто когда-то его использовал? Поделитесь информацией.
    Ответ написан
    Комментировать
  • Неполцноенное ООП в javascript и значение этого?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут нужно копнуть в историю и почитать для чего JavaScript созадавался. Какие цели и задачи перед ним ставились. Почитайте это интересно. И в части Lisp в браузерах - тоже.

    Что такое вообще ООП применительно к теории и к конкретному языку? На сегодняшний день не существует канонической реализации ООП. Грубо говоря ни один язык не может претендовать на трушное ООП. Хотя другие ООП (класса строго типизированных) просто вводят больше ограничений на компилляцию
    и рантайм запрещая на ходу менять тип объекта или внедрять в него новые методы и перегружать существующие.

    JavaScript является таким себе податливым пластилином который разрешает очень многое делать
    с объектами и именно это является объектом критики. Прототипирование вместо наследования и прочее.
    JavaScript насколько я знаю расширяет спецификацию и все таки вводит понятие класса. Ключевое
    слово есть. Это хорошо. Это его приближает к ООП и дает возможность больше проводить параллели с back-end например.

    Есть языковые надстройки (транспилляторы) типа type-script которые вводят некий повышенный уровень
    строгости по отношению к типам. Но Runtime насколько я понимаю по прежнему остается либеральным.

    Вообще тема чистоты ООП - это достаточно трольная тема особенно на собеседованиях. Теоретики до сих
    пор не могут посчитать сколько же свойств нужно для описания ООП. Там вроде как 3 свойства было или 4.
    До сих пор нед единого трактования термина инкапсуляция.

    Поэтому всех религоизных фанатиков ООП надо слать к чорту. А на собеседовании отвечать очень обтекаемо
    и с отсылкой на всяких Кентов Беков и Фаулеров и Дядек Бобов. Пускай они там друг с другом договоряться
    о терминологии а потом уж мы подтянемся.
    Ответ написан
    Комментировать