Ответы пользователя по тегу Программирование
  • Как реализовать систему перемотки времени назад, как в принц персии например?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Представьте что вам нужно вести запись демки в игре.
    Пишете координаты, что где заспавнилось, что задеспавнилось, куда двигалось и вращалось. Делаете в записи обратный ход времени, в простейшем случаее инвертируете логику спавна\деспавна.
    Ответ написан
    Комментировать
  • Какую среду/язык выбрать для написания управляющей программы, работающей под Windows и Linux?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Внезапно, java+javafx (удобно и довольно просто) или классика в виде java+awt\swing (странно).
    А так, почему бы GUI не реализовать поверх opengl, библиотек много для разных языков, прикрутить к С или лазарусу. Если привычные языки брать.
    Можно еще на golang, современно, похож на С, компилируется в натив без зависимостей и рантаймов, но с GUI не все так однозначно.
    Я тоже когда то начал с паскаля\rad через С к ++ и на java. Сейчас ковыряю golang, нравится. Но самое удобное по чаcти gui это javafx, реально самое удобное что я видел.

    В части com, лучше уходи от этого в сторону tcp\udp. Для тяжелых случаев есть преобразователи, для простых nodemcu и ему подобные. Это просто более кросплатформенное, более удобное и т.д.
    Ответ написан
  • Какие есть языки разметки без строгой вложенности?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Судя по хотелкам вам нужен не язык разметки а просто БД и мордочка к ней. В таком случае берите ms access или libreoffice base, в нем ручками по любой статье сделаете БД и интерфейс удобный вам со всеми хотелками типа группировки\выборки как угодно.
    Ответ написан
  • Виртуальная машина - для чего нужна при разработке?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    1) Ставим НУЖНУЮ ОС, в нее софт ВНЕЗАПНОЙ версии, тестим НЕОЖИДАННЫЕЕ баги.
    2) Ставим НУЖНУЮ ОС, в ней собираем из исходников НЕОБХОДИМЫЙ софт.
    3) Ставим НУЖНУЮ ОС ИНТЕРЕСУЮЩЕЙ версии, ТЕСТИМ, УЧИМСЯ, ПОВЫШАЕМ квалификацию.
    4) Создаем НУЖНОЕ число виртулок, ставим в них НУЖНЫЕ версии ОС и софта, ОРГАНИЗУЕМ из них НЕОБХОДИМЫЙ стенд и ТЕСТИМ, УЧИМСЯ, ОТТАЧИВАЕМ навыки.
    5) Создаем виртуалки, ДАЕМ УДАЛЕННЫЙ ДОСТУП разрабам, разрабы довольны и могут моделировать что хотят.
    6) Поднимаем НУЖНЫЙ софт НУЖНЫЙХ версий, накатываем НЕОБХОДИМЫЕ конфиги, ДЕЛИМСЯ готовой виртуалкой с другими людьми.
    7) Поднимаем НУЖНЫЙ софт НУЖНЫЙХ версий, накатываем НЕОБХОДИМЫЕ конфиги, ЗАБЫВАЕМ проблемы если сдох сервер т.к. можем куда угодно перенести готовую виртуалки и без телодвижений запустить ее.
    8) ЗАНИМАЕМСЯ исследованием безопасности софта\ос в виртуалке или вирусов.
    9) СМОТРИМ порно\лук\i2p\... в виртуалке, не паримся за оставленные следы на компе.
    10) ПОДНИМАЕМ какие угодно, каких угодно версий версий не переживая за основную ОС.
    ...) ....
    1005000....) каждый находит свое применение.
    Ответ написан
    Комментировать
  • Возможно ли при запросе страницы сайта ,отдавать браузеру сразу все картинки в одном архиве?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Варианты:
    1) В целом можно такое провернуть самописными костылями.
    2) Можно слепить их в 1 большой "атлас", т.е. просто 1 мегакартинка.
    3) Можно сделать "on demand"(подгрузка по требованию), т.е. как только прокрутил страницу то подгрузить картинки которые он должен увидеть
    4) Небольшой хак, всем необходимым картинкам делаются миниатюры, миниатюры лепятся в атлас, пользователь сразу видит картинки в плохом качестве но в фоне идет подгрузка в большом и заменяет миниатюры
    5) Использовать CDN

    Во всех случаях в хедерах передавать флаг на полное кэширование пользователю.
    Ответ написан
    1 комментарий
  • Всегда ли в C++ false == 0, true == 1?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    В С++ существует миллиард и 1 способ как отстрелить себе ногу или обеспечить головной боли на пару недель маленькой строчкой причем на разных компиляторах это число и холоднокровные трюки разнятся. К примеру классический
    #define false true

    Во, откопал древний веселый прикол .
    Ответ написан
    Комментировать
  • Язык программирования для 40летнего начинающего?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Полноценно перескочить в кодеры будет проблемно.
    Если цель именно полностью сменить вид деятельности то лучше очень сильно подумать.
    Если цель получить постоянный сторонний доход то на мой взгляд есть 2 варианта:
    1) PHP - работы хоть одним местом жуй на фрилансе. Да будут не такие приятные суммы, но как дополнительный источник дохода очень даже подойдет. Минус в том что огромная конкуренция а как следствие побеждает тот кто запросит меньшую сумму, придется брать нормальное число заказов. Плюс в том что большая часть задач решается очень быстро. Можно вообще сесть на 4-5 проектов по поддержке сайта и не напрягаться.
    2) 1С - работы тоже достаточно много. Оплачивается очень достойно. Изучается, особенно для новичков, очень легко. Кучи отличной литературы. Плюсы в том что заказов физически получится делать меньше но при этом получать больше, очень жирный плюс что можно устроиться подработкой в 2-3 организации в своем городе приходным 1сником и рубить купусту. Минусы то что нужно рассчитывать свои силы исходя из задачи(одно дело базы подрезать да мелкие правки вносить в конфигурацию и совсем другое приколбасить к 1ске всякие железки или хитрые обмены между разным софтом.)
    Ответ написан
    Комментировать
  • Проблема в java.net или в нечто другом?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    reader.readLine() ждет конца строки чтобы ее считать а вы ее не шлете с клиента.
    Ответ написан
  • Программирование под Nokia 3310 (2017), Series 30+, где почитать?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    s30 значит MRE SDK который поудаляли везде. Найти конечно можно но для запуска софт\игру надо подписать что своими руками невозможно.
    Ответ написан
    2 комментария
  • Удобство для малого офиса, какие программы?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Крайне удобная штука это корпоративная почта яндекса, там и личные ящики доменные и общие контакты и чат по xmpp. Сейчас уже сделали 2.0. но что там нового пока не вкурсе даже.
    С софтовой стороны thunderbird(почта\чат\календарь\контакты\rss).
    GIT ставите любой удобный но все же намного лучше использовать онлайновые к примеру bitbucket(до 5 пользователей халявно).
    Всякие wiki\crm и т .д. как правило вообще нафиг ненужны и врядли кто то ими пользоваться будет, только что под палкой можно заставить будет. Да и кроме того все это в конечном счете выльется в постоянный допил этих сервисов вместо собственно работы.
    Свой сервак лучше оставьте себе же для разработки под докеры и т.д. а важные вещи типа чата\почты\календарей\контактов\git намного удобнее и надежнее доверить гиганту просто в целях того чтобы это все в самый нужный момент не умерло и не упало.
    Единственное что можно сделать это поднять свой маленький asterisk, загнать в него мультифон от мегафона. Профит будет от автоответчика\приветсвия\запись звонков\информатора и самое главное дабы распараллелить входящий звонок на всех. Еще не маловажное единый номер многолинейный и это исключит момент того что какойто заказчик вдруг внезапно захочет что то спросить и позвонит в 3 часа ночи(обычно те кто без своей АТС страдают от таких звонков т.к. пользуются личными телефонами и им потом начинают названивать).
    Ответ написан
    Комментировать
  • Что лучше изучать: математику или программирование?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Именно программирование(в своем правильном понимании) не может быть нормально изучено без математики.
    Конкретно в вашей ситуации, учите школьный курс и не забивайте пока голову. Когда будете учиться в институте курсе на 2-3 тогда и решите стоит ли вообще учить программирование и к этому моменту уже будет хотябы абстрактное понимание что понадобиться изучать дополнительно.
    Пока если сильно хочется кодить и изучать что и как устроено достаточно взять любой ЯП популярный и не php =) (с\с++\делфи\шарп\джаву\ruby\питон) и писать что то простенькое, по ходу изучения будут возникать вопросы как и что работает, пытайтесь узнать сами ответы на них путем чтения книг. Знаний на уровень "напишу ка я свой блокнот или сетевой чат" будет достаточно без познаний в тонких науках.
    Ответ написан
    1 комментарий
  • Как в linux mint установить nodejs версии > 6?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Может стоит попробовать docker и забыть о проблемах версий и свежести репозиториев?)
    Ответ написан
    3 комментария
  • Как работают библиотеки и как работает компилятор?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Если в кратце:
    Динамическая библиотека - все зависимости(библиотеки - dll\so\dylib) не входят в состав библиотеки\исполняемого файла. Т.е. для работы будет необходимо чтобы они были в системе или лежали рядом. Плюс в том что библиотеки можно обновлять(как правило, часто это невозможно), скомпилированная библиотека\исполняемый файл имеет малый размер.
    Статическая библиотека - все зависимости (библиотеки - lib\a), во время компиляции "вклеиваются" в твою библиотеку\исполняемый файл. Плюс в том что все зависимости(библиотеки) внедрены внутрь и какбы конечному пользователю нужно меньше телодвижений что бы все заработало. Размер библиотеки\исполняемого файла становится огромным.
    Исполняемый файл - это уже бинарная (двоичная) программа которую сможет выполнить твой CPU.
    Транслятор - сильно грубо говоря это переводчик. Переводит 1 язык в другой. К примеру он переводит человекочитаемый исходный код на "С++" в "С" или асемблер или машинный код.
    Линковщик(он же компановщик) - опять же сильно грубо это утилита которая смотрит весь исходный код и связи с библиотеками после составляет так называемую таблицу символов в которой обозначает где находится и как называется функция из другой библиотеки. Так же он обозначает и экспортируемые функции которые смогут увидеть другие библиотеки.
    Компилятор - в кратце это савокупность утилит запускаемых в определенном порядке чтобы из исходного кода получить машинный код который сможет выполниться на CPU. Этапов в нем много в т.ч. в него входит линковка и трансляция.

    Если хочется разобраться в этом нормально и понимать все абсолютно верно а не так как описал я то смотри рекомендации которые выше уже дали по "книге дракона". Я тебе описал все это сильно грубо чтобы просто представлять что это.
    PS внес поправочку копипасты =) Даниил Демидко
    Ответ написан
    2 комментария
  • Как пробивать НАТ?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Универсального способа нет. Гуглить по фразам UPnP, stun, turn.
    Для универсальности надо делать реализации всех способов разом, со стороны клиента перебирать каждый способ до достижения результата, если не один способ не помог то подключаться через промежуточный сервер.
    Ответ написан
    Комментировать
  • Насколько важно ООП в Python?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    ООП доминирующий принцип на данный момент. Знать надо и обязательно просто потому что в питоне подавляющее число библиотек написаны по парадигме ООП. Хотя сам питон при этом поддерживает множество парадигм, ООП и структурное и функциональное программирование.
    Ответ написан
    Комментировать
  • Способы реализации p2p обмена сообщениями. Каким образом blockchain может быть использован в создании мессенджера?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Совсем отказаться от серверов или чего то что будет говорить где какой клиент крайне сложно. Мы живем в мире где куча НАТов и серых ip адресов с динамикой.
    По факту Вам надо решить следующие проблемы:
    1) Реализовать "пробивалку" NATов. Способов много и нужно учитывать максимальное их количество. Это и UPnP, и возможность пробития порта через соседа который это может сделать и соединение с другим клиентом и уже через него выходить в общую сеть обмена.
    2) Нужен некий механизм доверия между клиентами т.к. никакого центрального сервера авторизации не будет. Тут способов тоже много и чаще всего применяется шифрование по некоторому ключу который генерируется у каждого клиента к каждому клиенту, после чего хранится локально. Даже если некий клиент прикинется другим клиентом с его ключем то ничего не выйдет. Сообщения дойдут но прочитать их он уже не сможет без индивидуальных ключей к каждому клиенту которые злоумышленник узнать уже не сможет никак.
    3) Понадобится некая реализация системы для сообщения IP адреса и порта клиентов друг другу. Тут уже варианты абсолютно разные со своими плюсами и минусами. Самый простой это некоторый сервер который только знает ip:port:идентификатор_клиента, с ним все и работают(естественно ничего более этот сервер не делает и сообщения и данные ходят между клиентами напрямую).
    Другой вариант это все тот же сервер который дает и знает ip:port:идентификатор_клиента но отличительно то что он динамический и создается у лучшего клиента(лучший выбирается по неким критериям типа хороший инет, выделенный ip, отсутсвие ната и т.д.). Т.е. сервер все также остался но переехал к самим клиентам и мало того их стало много. Этот способ и есть DHT и из него вырастает следующая проблема.
    4) Т.к. теперь у тебя полностью децентрализованная сеть на основе DHT или своего велосипеда который тоже повторяет DHT выросла проблема в том что клиенты могут оказаться в разных сетях с этими DHT и вообще не знать друг о друге. Тут понадобится реализация некоего механизма что бы DHT сервера искали и знали друг о друге. Как это будет реализованно тоже огромный геморойный вопрос, можно сделать еще один слой в виде DHT над DHT, можно сделать некоторые центральные сервера, можно пойти путем жесткого бродкаста между DHT узлами и т.д.

    Полноценно настоящая децентрализованная сеть возможно только в мире где у каждой железки в сети свой уникальный статичный IP и полностью отсутсвуют фаирволы а сама сеть построена без шлюзов и без деления на подсети. Но как понятно такого никогда не было и не будет но возможно внутри маленькой локальной сети.
    Чуть не забыл, такой p2p чат уже существует в виде Tox. Отдельно существуют подобные чаты в виде плагинов в битторрент клиенте Vuze-.
    Ответ написан
    3 комментария
  • Какой есть легковесный движок для игр?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    love2d, код на lua, очень прост, бесплатен и есть возможность пускать в браузере.
    Ответ написан
    Комментировать
  • Знания для программирования?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    А я посоветую решать реальные задачи из лично Вашей практики. Если работаете то попробуйте оптимизировать своим софтом какой-то ручной процесс. Или попробуте написать клон своей детской игры(не 3д конечно), другой вариант попробуйте вспомнить или осмыслить то чего вам так не хватало(или до сих пор нехватает) и напишите софт для того.
    Писать код того что действительно интересно и неизвестно намного занимательнее чем читать какое-то задание и пытаться его выполнить.
    Ответ написан
    Комментировать
  • Как лучше хранить данные о трафике в БД?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Храни как отдельные единицы. Т.е. для одной записи у тебя будут поля "терабайт" "гигабайт" "мегабайт" "байт" и напиши функции для преобразования в нужные тебе величины. Т.е. если ты добавляешь 1 мегабайт а у тебя уже в этой записи 1024 мегабайта то делаешь "терабайт"+1 , мегабайт =1. Отдельно функцию суммирования всех полей и т.д. Вообще лучше избегать работы и математики с огромными числами. Кроме того будет намного удобнее оперировать с округленными значениями. Если будете хранить все это одним полем то к примеру запись 1 терабайта будет 1e+12 байт что просто ужасно.
    Ответ написан
    2 комментария
  • Как связываются ресурсы с кодом?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Тут все немного проще.
    Программисты пишут набор утилит. Програмка или плагин для экспорта-импорта моделей\анимаций\партиклов\звуков\текстур.
    Дальше программисты описывают формат уровня и редактор для него.
    Все это делает этакий "мост" между программистами и всеми остальными.
    Программисты дальше уже по известным форматам ресурсов делают загрузку уровней и описывают логику всего в игре и очень часто многие параметры выносят в конфиги или скрипты. Дальше Уже снова дизайнеры\моделлеры и т.д. начинают подбирать параметры, к примеру размеры тех или иных моделей, их физические свойства, уровень здоровья, скорость бега и т.д.

    Т.е. привязать свойства моделей к свойствам классов и запуск анимаций к вызовам методов, получить возможность дублировать объекты и переключать сцену или активную камеру.
    Тут у вас тоже немного неправильное понимание. Привязывается не код к свойствам моделей. Любой контент это просто визуальная часть которой управляет код. Любое свойство это цифровое значение, откуда будет браться это значение совершенно неважно. Таже модель, в общем виде, это просто массив точек в пространсве. Отдельным файлом к ней может быть скелет в котором опять же точка это кость у которой есть вес(грубо говоря радиус по которому она может двигать соседние точки в пространсве). Еще одним файлом может быть анимация которая тоже является уже массивами точек костей в интервале времени. Еще один файл может описывать текстурную развертку над треугольниками построенными по массиву точек модели описывая каждый треугольник в виде координат на 2д текстуре. Все это может быть упаковано как в 1 файл так и в кучу разных. Именно программист в коде описывает загрузку всего этого добра и смешивает\накладывает эти данные слоями друг на друга.
    Позже программист берет все эти файлы и реализует к примеру переключение анимации что по факту будет просто назначение нужного файла с анимацией(та о которой говорилось выше).

    PS вообще вопрос очень абстрактный и без живых примеров которые будут просто огромные сложно дать простой ответ "вот как это происходит".
    Ответ написан
    Комментировать