Ответы пользователя по тегу Программирование
  • Как правильно написать условие запрета повторного ввода символа "." в Action Script 3.0?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Action Script - это как Cobol в наше время. Разработчики отрастили седые бороды и померли.

    Проверь что
    имя_текстполя.text
    не пустое.

    Проверь какое числовое значение возвращает
    имя_текстполя.text.indexOf(".")

    Это и будет скорее всего ответ на твой вопрос
    Ответ написан
  • Актуален ли ассемблер на сегодняшний день?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ассемблер полезен при анализе прошивок на безопасность.
    При изучении того как работает софт без исходного кода (обратный инжинеринг)
    и при решении задач интеграции разных слоёв софта.

    Ассемблер также очень близко стоит к разработке компилляторов. И если у вас нет
    соотвествующих знаний то строить свой компиллятор вы не сможете. Или вам нужно
    будет изучать готовые back-ends, virtual-machines.

    Ассемблер помогает при анализе узких мест в коде. В частности например
    векторизация вычислений ставит в первую очередь вопросы на которые ассемблер
    отвечает а ЯВУ - нет.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Любая оптимизация начинается от проблемы. Из проблем памяти я могу отметить технологический предел
    на пропускную способность. (так называемая Стена Фон-Неймана). Она частично решается
    кешамя для горячих участков кода но никак не решается в обобщенной постановке.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Такая грамматика уже создана. Называется язык Prolog.

    Сразу скажу что сама затея создания словесных экспертных систем обречена на провал.
    Растущая комбинаторная сложность и сложность задавания вопросов этой системе
    свела на нет все усилия лет 30 назад.

    Сегодня такие системы считаются legacy, и языковые модели-чаты их полностью заметили.
    Потому что обучить модель легче чем человеку описать сет рулов. И еще все это потом протестировать.
    Ответ написан
    7 комментариев
  • Какой инструмент может превратить схему БД в панель управления или админку?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Практически такое решение будет очень небезопасным. Обычно вебу дается минимум доступа к БД и то
    через всякие сервисы и прослойки. А вы прям открываете вообще все что только есть. Это я думаю - плохой
    дизайн по безопасности. И пользователь может грохнуть целую таблицу случайно.

    Графические инструменты для работы с БД есть. Например JBeaver. Универсален и удобнее веба.
    Ответ написан
  • На чем пишутся современные десктопные приложения?

    mayton2019
    @mayton2019
    Bigdata Engineer
    java - "не подходит для десктопа"

    На платформе Java (Groovy, Kotlin) написана среда разработки Jetbrains Idea.
    Правда есть у меня подозрение что из библиотек там использован не Swing а SWT
    но я уж не помню я слишком давно этот вопрос изучал. За много лет многое могло поменятся.
    SWT не слишком кроссплатформенный.

    На Java написан менеджер закачек Vuze (Azureus) и такая векторная рисовалка как Yed
    которой я пользуюсь иногда.

    Еще OracleDeveloper, Beaver, SOAP-UI, и много всяких тулов программисткого толка.

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

    Мы живем в эпоху сильного изменения подходов к разработке декстопов. В эпоху мобил
    и веба десктоп теряет свой смысл как бизнес-проект. Любой кто делает визуальную часть
    своего бизнеса вкладывается в мессенджеры, мобильный магазин и в классический веб-сайт.

    Для окон остается что-то очень хардовое типа Photoshop, 3dMax, AutoCad где можно грузить на 200%
    клиентский CPU и ты реально будешь хотя-бы чувствовать пользу от такой отдачи.

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

    Поэтому не звучит вопрос что на Java десктопы не пишут. А их щас реально уже НИ НА ЧЕМ не пишут.
    Даже на С++. Реально только игры и редкие приложения типа там 1С или какие-то клиент-банки.
    Ответ написан
    7 комментариев
  • Как обрабатывать переполнение счетчиков и индексов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В классических языках программирования происходит обнуление переменных int, long.
    Тоесть ошибки не будет но счетчик пойдет снова с нуля. Чтоб детектировать - надо
    делать проверку условия на максимум.

    На уровне языка Ассемблер и процессора существует флаг переполнения (OF) который взводится в
    состояние true если в результате сложения или инкремента последняя операция детектировала
    переполнение. Тоесть обработать это технически возможность существует. И далее - условный переход
    на обработку.

    В реальных приложениях такого лучше не допускать. Лучше не жадничать и вводить long счетчики.
    Их хватит на тысячи лет как-бы вы там интенсивно не делали инкременты. В базах данных типа Oracle
    NUMBER тип хранит 38 десятичных знаков числа. Надолго хватает. И я не слыхал чтоб у кого-то в обычном
    режиме бизнес-транзакций эти счетчики переполнялись.

    У Постгреса была проблема с 32 битными счетчиками XID. Не знаю как они ее порешали. Кажется
    как-то они сбрасывают их для всей таблицы. Толи в вакууме толи еще как-то я не помню. Пускай
    постгресщики скажут точнее.

    Чтобы уйти от мелких счетчиков попробуйте использовать SnowflakeId (64bit) или GUID(128bit). Их надолго
    хватает и никто не жаловался. Git использует 160-bit идентификаторы коммитов в графе коммитов
    и тоже пока никто не жаловался.
    Ответ написан
  • Есть ли необходимость или очевидные плюсы перехода на linux?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В целом острой необходимости нет. Особенно если ты работаешь с веб-дизайном например.
    Я перешел когда мне стало интересно разворачивать Ораклы и Hadoop и прочие вещи
    и мне нужна была нативная интеграция bash. Не на уровне виртуалок или докеров или WSL
    а мне нужна была истинная система. Делить ресурсы 50 на 50 между гостем и хостом я не хотел.
    И задачи я себе придумывал такие которые требовали hardware нагрузить на сто процентов.

    Корпоративные ноуты еще долго будут под Windows11. Это стандарт де факто для офиса. И я с ним
    вобщем согласен. Я-бы сказал что не звучит вопрос переходить или не переходить. А в современном
    мире, в мире где допустим командная строка как способ оперативного решения задач снова возвращается
    в руки разработчику (после периода забвения от Windows95) или девопсу, быть неграмотным в этой
    строке просто неприлично. Нужно быть грамотным в юниксовой строке независимо от того что у вас
    хост-система на декстопе.
    Ответ написан
    Комментировать
  • Как хранить и обрабатывать отображение Id на адрес узла в кластере?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Смысл рафта в том чтобы выбрать лидера. Как только лидер выбран - можно пересылать всех
    клиентов на его IP адрес как в балансировщике. В этом случае все клиенты будут видеть единую
    табличку свойств. Как в зукипере.

    Больше в рафте никакого смысла нет.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если гуглить по ключевому слову С++ socket server то обычно находят приложение клиент-сервер
    который по TCP/IP передает текстовые сообщения. Я считаю что это - минималистичный мессенджер.
    Вот бери его и думай как развивать дальше.
    Ответ написан
    Комментировать
  • Есть ли хорошие пошаговые туториалы проектов на С++ для новичков?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно С++ в вакууме не существует. Его учат сразу применительно к программированию UI под Windows,
    или к Unreal Engine, или к сетевому программированию под Linux/Unix. Или еще более специфичный
    сегмент - сетевое оборудование и микроконтрллеры. Это неизбежно.

    Особенно когда ты доходишь до дисковой подсистемы, сетей или мультизадачности - ты просто выходишь за рамки С++ и нужно разбираться во всем остальном. И мне кажется что в этом главный челлендж. Не сам язык а
    системная архитектура и прикладные фреймворки.

    Тоесть в самом вопросе ты должен сам решить куда ты дальше со знаниями С++ пойдешь.

    P.S. С++ за 14 дней... - это завсегда можно найти.
    Ответ написан
    3 комментария
  • Редактор кода, удобный для больших длинных файлов -?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Да. Atom и Sublime, Notepad++ - это хорошие кандидаты на роль универсального редактора на все
    случаи жизни. Многие из них работают с Markup/Markdown языками.

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

    Вот. Все современные IDE (Visual Studio Code, Eclipse, Netbeans) тоже являются текстовыми редакторами
    и автору я советую их тоже проверить и приходить сюда с выводами. Споры об годности IDE - это
    вкусовщина. Я о них уже не спорю никогда и всегда соглашаюсь с выбором любого участника.

    Выбирай. Проверяй.

    Насчет AST деревьев, синтаксиса и графов и прочее. Автор должен понимать что все эти техники нагружают
    оперативную память и такой редактор может стать узким местом в системе похуже браузера
    Интернета. Откроешь проект на 100 файлов и уйдешь гулять и пить кофе пока он все откроет
    и проиндексирует.
    Ответ написан
  • Шаблонный код: Чем можно удобно генерировать код для автоматизации сборки по шаблону?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я использовал Apache Velocity https://velocity.apache.org/ он правда не для кодо-генерации,
    а для отчетов, но в некоторых простых кейсх подходит. В шаблон можно добавлять проверки условий и циклы.

    Есть еще Mustache https://mustache.github.io/ , он более простой. Там просто строковые замены. Но, поддерживает все языки разработки для запуска.
    Ответ написан
    Комментировать
  • Нужно ли делать защиту при делении на ноль?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вообще ты сам себе ответил на вопрос
    в разных отраслях для личного пользования.


    Главный пользователь и заказчик - это ты. И когда ты разрабатываешь свою библиотеку векторной алгебры - то пишешь модульные тесты. И тесты, как-бы документируют твою библиотеку и закрывают все вопросы
    с нулями и бесконечностями.

    Какие вообще у тебя варианты по отработке неопределенностей? Я вижу такие.
    1) Возвращать бесконечность +Inf. Это нормально для floating-point. Но влияние результата на стек
    вызовов дальше надо учитывать. Эта бесконечность пойдет в другие формулы порождая новые бесконечности и т.п.

    2) Бросать исключение. Это не в духе С++ и не всегда удобно для выскокой производительности. Но языки высокого уровня этим часто пользуются. Здесь мы предполагаем что такой результат - крайне нежелателен и работа стека расчета векторов будет аварийно прервана.

    3) Возвращать специальный контейнер с результататом (Optional или Either) или пустой контейнер. Это в духе функционального кодинга. Но весь твой стек должен тоже быть адаптированным к таким Optional параметрам результатов.

    И есть еще вариант - просто найти такой базис вычислений в котором нет такой проблемы. Пускай допустим векторы так и остаются основным типом данных но расчеты ты будешь делать в каком-нибудь другом типе где эта операция на уровне математики - безопасна и всегда определена. Грубо говоря как в углах Эйлера. Чтоб не писать всякие проверки условий (if) - можно перейти к кватерниону и там вроде как вращение легче идет.
    Ответ написан
    Комментировать
  • Возможно ли оптимизировать Inline метода с throw с помощью директив препроцессора?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не скажу насчет C# но в других языках и технологиях обработка Exception когда оно уже случилось
    приводит к тяжелым последствиям для производительности. Мне кажется лучше возвращать код
    ошибки или как-то по другому проверять capacity.
    Ответ написан
  • Есть ли название у подобного подхода?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Он называется guard expressions., и имеет отношение к pattern matching.
    Ответ написан
    Комментировать
  • Как построить "нейронные связи" на основании полученных данных в json?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне кажется что термин НЕЙРОННЫЕ здесь - buzzword. Не путайте читателей это к теме не имеет отношения.

    А имеет отношение скорее semantic web. Но это кажется мертвая технология. Ее поднимали в 2000х и
    вкладывали большие надежды. Тогда сообщество хотело чтоб веб был свободный и статичный как либа Мошкова.

    А современный веб вообще не заинтересован выдавать на выход семантические сети. Он выдает
    только дизайн и то очень динамический и защищенный многофакторками и защитой от роботов.

    Покажи вообще пример такой карты сайта. Я думаю что тут - две независимые задачи.

    1) Автогенерация карты сайта. Это интересное в топике но нужен пример. Покрывающий пример
    чтоб было понятно например будут ли там циклы.
    2) Визуализация. По этому - есть миллион решений. Я вот навскидку знаю только graphviz. Он немного
    устарел и глючит на больших объемах nodes и ему трудно подобрать подходящий layout и набор
    параметров чтоб не падал и выглядел красиво.
    Ответ написан
  • Является ли Не перенос строки синтаксическим сахаром?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Нет. То что ты нарисовал - это просто форматирование.
    Ответ написан
    Комментировать
  • Как определить есть ли противоречия в цепочке логических выражений?

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тема хорошая. Только вот градус амбиций я-бы сбросил. Попробуй просто написать сокетное приложение
    которое передает события из точки А в точку Б. И придумай механизм персистенции. И балансировщик. И кластер. Да. правильно написал про Raft. Не только Raft. Еще есть Paxos используется в Cassandra. И централизованный ZooKeeper.

    Где почитать - я даже не знаю. Спектр технологий такой широкий. Тут и сети. И многозадачность. И хранение информации.

    Кстати Кафки в дефолтной комплектации почти не бывает. Каждый кастомер конфигурирует для себя регуляторы скорость-надежность. Влево-вправо. Понимаешь? Поэтому до того как "убивать" Кафку надо просто понять что любое ее нагрузочное тестирование просто ставит другие вопросы. А что собстенно вы ходите. Доставить опционально но быстро. Или с гарантией что месседж сохранился. Или с гарантией что сохранился в основной кластер и в реплику. Каждый кастомер еще для себя придумывает partitioning strategy что является очень важным аспектом скорости Kafka. Тоесть еще до бенчмарка нужно все эти вопросы проговорить. Иначе выйдет сравнительное тестирование "бульдога" и "носорога". И любая система которая будет быстрее Кафки на самом деле будет просто системой заточенной на более узкие условия. Это как узкий UDP может быть быстрее чем TCP но ... как говорил Василий Иванович есть один "нюанс".
    Ответ написан
    Комментировать