Задать вопрос
  • Как создать кастомное кроссплатформенное окно на си?

    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 комментариев
  • Как организовать массив состоящий из разных участков памяти?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Напоминает попытку построить свой кеш. А зачем топик тегирован Ассемблером? Какая тут нерешаемая
    для ассемблера задача?
    Ответ написан
    Комментировать
  • Кроссплатформенное программирование на C?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Давайте поговорим о шрифтах. В 2012 я перешел с windows7 на Linux. И первая проблема практической работы с десктопом заключалась в том что я начал менять шрифты. Вот не нравились мне не шрифты не алгоритмы их рендеринга. Надо отдать должное МС. Шрифты у них хорошие. Дизайнеры очень долго думали над ними. Вот. Когда вы заняты кросс-платформенным UI возникает проблема. - Где взять шрифты максимально похожие на оригинал. Высота. Кернинг. Все должно быть максимально похожим на оригинальный десктоп где идет разработка иначе дизайн разваливается. В годы развития Linux Suse я пытался устанавливать их десктопы и использовать. И самая большая визуальная проблема что я видел - это полный развал шрифтового оформления. Доходило до смешного. Я просто не мог прочитать кириллический месседж в окне. Текст - сползал куда-то за границу окна. Или текст успешно переносился а баттон сползал за границы окна. Вобщем проблем было масса. Я думаю что одна из главных проблем кросс-платформенного UI - это унификация шрифтов. И дело тут вовсе не в Qt или Gnome/Gtk или KDE. А дело в том что другая платформа понятия не имеет как должен выглядет текстовый месседж.
    Ответ написан
    Комментировать
  • Имеются ли общие гайды по созданию моделей данных (ERD) для Data Quality?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не знаю каким боком ERD связано с DataQuality. Но на одной лекции я слышал что для оценки качества данных используют "ящики с усами" (box-and-whisker) и по ним смотрят выбросы. Ящик строится для каждой колонки отдельно.

    Реляционная диаграмма здесь скорее всего непричем. Статистика и маш-обучение оперирует обычно одной таблицей где есть всё.
    Ответ написан
    2 комментария
  • Как дать пользователю права суперюзера без использования стандартного пользователя postgres?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Судя по всему ты следуешь какой-то инструкции. По обучению наверное. Смотри если смысл - создать бд и стать владельцем - то это все не нужно. Качай постгрес под Windows и ставь его каким угодно способом. Базу табличное пространство и пользователя можешь создать скриптами. Если твой пользователь - владелец базы - то этого достаточно чтоб делать почти все что нужно.
    CREATE TABLESPACE tbs1 OWNER joker LOCATION '.....';
    CREATE USER joker WITH PASSWORD '123';
    CREATE DATABASE pingwin OWNER joker TABLESPACE tbs; 
    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO joker;

    Менеджер пакетов чоко любят преподаватели курсов которым нужна шаблонная конфигурация для обучения на windows-десктопах. Другого смысла в чоко я не вижу.
    Ответ написан
  • Как искать зашифрованные данные через like?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обходные пути есть. Если вы ищете like 'Ив%' чтобы найти всех ивановых то создайте виртуальную
    колонку где первые две буквы от имени. И пускай она будет тоже шифрованная. Но для нее
    поиск по совпадению и будет аналогом like.

    Вобщем создайте столько шифрованных колонок сколько надо. Накладные расходы - обсудите с бизнесом.
    Дескыть вы хотели GDPR - получите и распишитесь. Если не даете нам создавать колонки - тогда мы не знаем
    как решать вопрсы вашего бизнеса. Эстимируйте в конце концов. Это все цена разработки и она должна
    быть обсуждена.
    Ответ написан
  • Язык програмирования для нейросетей и ИИ?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тяжеловато будет изучать и С++ и ИИ одновременно. Для новичка. Оба направления - это просто космос знаний.
    С++ - сложен. И даже Бьярн Страус-труп советует его изучать частями. Не охватывая сразу все фичи. Восходящая звезда хай-лоада - язык Rust выглядит привлекательнее но я к сожалению не знаю насколько его библиотеки покрывают саму педметную область НС и ИИ. Пускай Rust-овщики скажут.

    По поводу наук. Я-бы по старой привычке посоветовал изучать теор-вер и мат-статистику но смотрю что сейчас на это все забивают. Надеются подготовить не ученого по ИИ а ИИ-девопса. Тоесть парня который лихо знает названия квадратиков на диаграмме. И патчит эти квадратики. Вобщем наверное оно и не надо.

    Кроме Python я могу посоветовать Python. Потому что все API будут делаться под него.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Сколько работаю с БД - впервые слышу глагол "внос". Слышал: загрузка, input, ingestion, migration, load, pull.

    Ладно. Вобщем ты конено тег не поставил БД. В классическом SQL я не помню такой команды. Но в Postgres есть
    insert ... on conflict ...
    где ты указываешь что делать если ключик уже есть.

    В Oracle можно сделать как-то так
    merge into .... using dual on (key = key)
             when not matched then insert (...) values (...)
                 when matched then update set ....;


    И возможно в современных SQL/Nosql системах уже UPSERT поддерживается нативно.
    Ответ написан