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

    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....) каждый находит свое применение.
    Ответ написан
    Комментировать
  • В jar не работает консоль. Что делать?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Запускать надо не двойным кликом а через консоль командой "java -jar название.jar" или ассоциируй по умолчанию к jar файлам именно java.exe.
    Пояснение:
    В windows в jre существует 2 ехе файла рантайма
    java.exe - по умолчанию как бы консольное но также легко и с графикой
    javaw.exe - консоль будет скрыта НО приложение будет работать, графика будет выводиться как положено.

    UPD если манифеста нет или в нем не указана точка входа то будет так "java -jar название.jar пакет.класс_мейна"
    Ответ написан
    6 комментариев
  • Возможно ли при запросе страницы сайта ,отдавать браузеру сразу все картинки в одном архиве?

    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 комментария