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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Нужна нормальная клавиатура. Купи себе недорогое устройство класса "нетбук".
    На телефоне писать не надо. Это просто неэффективно. Зря портить себе зрение и пальцы.
    Ответ написан
    Комментировать
  • Как заменить LIKE на SUBSTRING?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я не помню синтаксис MSSQL но может быть как-то так

    delete 
      dbo.Корреспонденция 
    from 
      dbo.Корреспонденция INNER JOIN dbo.Отправители ON dbo.Корреспонденция.код_отправителя = Отправители.код_отправителя
    where 
      контактный_телефон like '8%' and 
      substring(контактный_телефон,2,1) = substring(контактный_телефон,4,1);


    UPD: подожди лайкать. Единичку забыл в функции.
    Ответ написан
    Комментировать
  • Как проверить ноутбук на совместимость с linux?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я в таких случаях просто подмигиваю продавцу.... дескыть. Договоримся. И он позволяет поставить на ноут что угодно в магазине или в сервисном центре и мы далее вместе смотрим как Linux стартует. Расчитываемся и продавец на кармашек получает свои несколько долларов.
    Ответ написан
    1 комментарий
  • API xhr/fetch/rest/soap альтернативы друг другу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Автор, намешано конечно у тебя в списке.. ой-ой. Но если интересуешся веб-протоколами - посмотри
    еще на GraphQL https://graphql.org/ я думаю он очень интересен для современного разработчика.

    Еще посмотри на QUIC для общего развития https://cloud.google.com/blog/products/gcp/introdu... там интересно.

    REST - это вобщем-то не протокол а скорее философия или архитектурный подход к работе с http. У него - очень размытые границы в реализациях. И иногда сложно взять приложение и классифицировать что оно такое. Рест или не-рест. Рест использует коды ошибок из HTTP и поэтому существует только в слое http.
    В теле REST сообщения может быть что угодно. XML, JSON или просто текст. Неспецифицировано короче. Наивные попытки внести в рест спецификации появились сравнительно недавно. Рест хорошо интегрируется с балансерами и реверс-прокси (nginx).

    SOAP - это именно "протокол". Базируется на XML с жесткой схемой. Причем работающий почти на всех слоях сетей. Может на не только по HTTP но и по сырым сокетам бегать. Хотя в настоящее время - непопулярен. Типизирован. Имеет специальный файл спецификации (WSDL) который точно описывает все сигнатуры методов. Требует большой аккуратности в реализациях. И обычно никто не пишет SOAP клиент-сервер вручную а пользуются генераторами API. Часто используется в банках и крайне консервативных ведомствах.
    Ответ написан
    Комментировать
  • Как fread в PHP бинарного файла созданного в С++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот в stackoverflow пишут https://stackoverflow.com/questions/38859621/readi...
    Ответ написан
    Комментировать
  • Как организовать хранение фронтенда и бекенда?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если это единый проект - то ему нужен один репозиатрий.
    Ответ написан
    2 комментария
  • Существуют ли в opensource-проекты с хорошей архитектурой?

    mayton2019
    @mayton2019
    Bigdata Engineer
    SOLID может на каком-то этапе противоречить например KISS. Например вы, как старший разработчик можете видеть "вперед" и прогнозировать потребность бизнеса в расширении какого-то функционала. И будете закладывать Open/Closed и прочие философии. А разработчик уровня Junior который неделю назад пришел на проект - этого не знает и будет писать "как чукча". Тоесть буквально то что надо сделать - тои напишет. И между вами может возникнуть спор как раз на тему SOLID против KISS. Но вы можете ошибаться в своём прогнозе потребности бизнеса. Или бизнес может передумать. В этом случае правда оказалась на стороне святой простоты (Santa simplicitas).

    Как вы понимаете такие антагонизмы не могут быть удовлетворены аж никогда. Поэтому вы никогда не найдете проекты которые удовлетворяют ВСЕМ философиям которые перечислены в списке одновременно.
    Ответ написан
    Комментировать
  • Как создать кастомное кроссплатформенное окно на си?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Буквально недавно было обсуждение здесь https://qna.habr.com/q/1241266

    Если кратко - то под каждую платформу - надо писать какой-то #ifdef ....#endif. Тоесть ваш код
    будет в объеме умножаться на число платформ которые надо поддержкать. Сколько их щас?

    В чистом виде язык "C" не имеет какого-то стандарта на отображение графики.
    Ответ написан
    Комментировать
  • Как вывести список подключенных библиотек к проекту?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Почти все современные среды разработки в дереве проекта (Project=>External libraries) показывают зависимости.
    Но успех мероприятия сильно зависит от того как проект создавался. Для maven-сборщика
    это точно работает. Для других - надо смотреть.
    Ответ написан
    1 комментарий
  • Правильно ли решил задачу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно сделать коллекцию из этих строк
    "Two turtle-doves", "Three French hens"
    тогда алгоритм упрощается. Визуальная копи-паста уходит.
    Ответ написан
    4 комментария
  • Является ли чтение Readonly свойств объекта нарушением инкапсуляции?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Давайте представим объект и DTO которым пользуется объект. Если объект возаращает DTO как представление самого себя, например методом showStruct(): DTO будет ли это являться нарушением инкапсуляции?

    Я понял ваш вопрос. Смотрите. Философия ООП базируется на том что все действия с объектом должны быть санционированы языком или средой выполнения. Например в Java есть техника рефлексии которая позволяет много чего делать например менять приватные поля. Это часто используется в Mock/Mockito и я часто про это говорю. Мокито - фактически взламывает инкапсуляцию. Но это всех устраивает потому-что "тестить нуна!".
    В Java также есть технология сериализации-десериализации которая обеспечивает сохранения состояния объектов на диск или передачу их в сеть для дальнейшей работы (например пользовательская сессия прыгает между нодами кластера). И это действие (сериализация) полностью санкционировано средой и языком. Всех это устраивает. Хотя с моей точки зрения - этож капец взлом. Но зато в Java вы никогда не сделаете down-casting объекта одного типа к типу другого если иерархия этого не позволяет. Этого делать нельзя ... ну потому что это точняк нарушение ООП. И нельзя найти никакой санкции на такое странное действие. Вот в языке С++ например вы можете жонглируя указателями взглянуть в любую память своего процесса или потока и прочитать любой байт или word/dword. Что можно сделать в PHP из подобного? Я не знаю. Но новерное что в PHP много механик которые не позволяют делать хакинг когда. Вот. Поэтому ООП и считается философией программирования а вовсе не тюрьмой. Вобщем код надо писать по правилам языка и среды а не "хачить". И лучшие практики ООП они как раз стоят именно на этой идее. Кроме того - не существует единого ООП - а есть просто разные его реализации в разных языках. Короче вы не найдете самого-самого-ООП-шного языка.

    А вообще если это опнсорц - ну сделайте себе форк и меняйте что хотите в исходниках.

    И Еще пример. если объект не будет возвращать никаких данных о себе, то тогда как придерживаться принципа OpenClosed?

    Про что вообще OpenClosed? Это - расширенная трактовка ООП в части SOLID (вторая буква О).
    Означает что если вы хотите внести изменение в класс - то вы его наследуете. Например
    class BMWX5 extends BMW { .. }
    Мы ничего не нарушили. Мы не меняли свойств BMW. Мы создали новый класс BMWX5 где есть изменные методы. Оригинальный BMW мы не трогали. Все - в правовом поле.
    Ответ написан
    6 комментариев
  • Если в API ArrayList поддерживает сериализацию, нужно в самом классе ставить implements Serializable?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Обычно DAO не сериализируют. Вот Contact - можно.
    И DAO так не делают. Обычно DAO предоставляет доступ к источникам данных. К базе например.
    Но он не обязан ничего внутри себя хранить.
    Ответ написан
    Комментировать
  • Круговой массив java, как починить код?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    А моя программа выдает при n = 5 m = 4 путь: 15432

    Код работает как написано. Только ты зря завел переменную current. Без нее можно обойтись.
    Получается что ты шагаешь не через единичку а идешь длинными прыжками по модулю 5.
    И тебе кажется что идешь назад.
    for (int i = 0; i < n; i++) {
                System.out.print(arr[current]);
                current = (current + m) % n;
            }

    Я-бы переписал проще.
    for (int i = 0; i < n; i++) {
                System.out.print(arr[(i+ m) % n]);
            }
    Ответ написан
  • 1 или 2 сущности для регистрации?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Если они связаны 1:1 то соедини их в одну табличку и все.

    UPD: Автор если ты сомневаешся - то лучше не делай. На все технические вопросы тут ответят.
    Но риски - это дело твоё. Похлопывать тебя по плечу или давать санкции на авантюры - никто не будет.
    Если ты отвественный за БД и уверен в себе - то иди и делай.
    Ответ написан
    Комментировать
  • Существует ли эквалайзер с настройками и автоматическим переключением для разных уровней громкости?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В аналоговой технике 20-го века (усилителях и эквалайзерах) это могло называться тон-компенсация (Equal-loudness contour) https://en.wikipedia.org/wiki/Equal-loudness_contour
    Ответ написан
    3 комментария
  • Как эффективно использовать HQL при запросах сущностей с множеством связей?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    У меня - сходу замечание по твоему стилю. Зачем ты переменную card переписываешь? Это сбивает с толку.
    List<Card> cards = .....
    
    cards = entityManager

    Нельзя одну переменную брать в двух ипостасях. Сэкономил в одном - проиграл в читаемости.

    Второе я думаю что эта задача прекрасно решается одним SQL-запросом. Так было в продуктовых системах с 2000х годов когда еще не было этих ваших ORM/Hibernate. И все нормально работало. Поэтому делай все одним запросом. Не думай о накладных расходах в базе. Мой опыт показывает что база - лучше справляется когда выбирает все данные сразу одним курсором (запросом).

    А игры с Lazy-Eager которые придумали в ORM решают проблемый самого ORM и ApplicationServer а базе они вобщем-то не нужны.

    Если ты собрался глубоко заняться оптимизацией - посмотри лекцию Алименкова особенно в части трассировки Hibernate запросов. Собери цифры. Сколько карточек на 1 акк в среднем? 1 или 10 или 1000? Сколько транзакций на акк? Это все влияет на смыслы оптимизаций.
    Ответ написан
    6 комментариев
  • Как напечать треугольник в консоли?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Брось прикалываться. Нормальные люди рисуют геометрию на matplot. Вот посмотри примеры
    https://matplotlib.org/stable/gallery/lines_bars_a...

    Если ты любитель ASCII-art - то рисуй прямоугольник из звездочек. Но исключай те звездочки которые
    входят в тело треугольника который вписан. Принадледность точки треугольнику - это классическая задача на всяких codewars, контестерах.
    Ответ написан
    Комментировать
  • Какой есть универсальный и надежный способ замены байт в файле?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не специалист в Perl. Но использовать awk-like replacements для работы с бинарниками - так себе идея.

    У тебя в примере такой кейс. Дан двоичный файл и надо заменить в нем байты
    01 02 03на байты 04 05 06. Ето один кейс? Или возможны другие? 3 на 2 байта можно менять?
    В этом случае размер файла изменится. И нужно-ли сделать один реплейсмент? Или найти все возможные?

    Я думаю что тебе надо найти сишника, поставить ему пиво и он тебе 1 раз напишет утилиту для патчей и будешь ей всегда пользоваться.

    Или попробуй разберись вот как тут пишут https://stackoverflow.com/questions/2464334/how-ca...
    Ответ написан
    4 комментария
  • Написание кода коротко плохо?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Оба варианта хорошие. Но обычно если ты работаешь отладчиком и тебе
    интересно где логика ведет себя не так - то второй вариант удобнее.

    Однострочники хороши только когда ты досконально понимаешь
    что внутри них происходит.
    Ответ написан
    8 комментариев