• Чем мониторить активность в сети?

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

    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'шник.
    Ну смотри.
    Во первых зачем тебе TBO, захотелось секаса с мипмапами?) Да и они более тяжелые.
    Во вторых, атлас имеет смысл если текстуры очень мелкие и их очень много, т.е. скорость увеличиться чисто за счет меньшего числа IO операций. Проще загрузить 1 раз файл побольше чем загрузить 100 мелких файлов. В наше время честно говоря не вижу особого смысла заморачиваться с атласами, кроме ситуаций когда каждая текстура размером меньше 64 пикселей.
    Подгляди реализацию текстур\атласов и "текстурных регионов" в libgdx. Весьма просто и удобно сделано. Хочешь просто текстуру, хочешь из этой текстуры возьми регион(в общем и целом те самые атласы), есть и реальная реализации атласов.
    Ответ написан
    9 комментариев
  • Raspberry pi как карманный компьютер?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Для ваших целей не годится, если хочется чегото эдакого и не хочется ноутбук\гибрид то есть другой вариант.
    Разживаетесь смартфоном или планшетом с нормальным железом(больше ядер и минимум 2гб оперативки). На нем разворачиваете linux deploy с любимым дистром линуксов. По желанию докупаеются активные узб хабы и всякие разные ништяки(я к примеру подцеплял displayLink карточку и выводил картинку на обычный монитор)
    Дальше есть несколько вариантов развития событий:
    Первый вариант: собираете 2 стенда. узб хаб+мышь+клавиатура+displayLink. Первый ставите дома, другой на работе. Немного трахаетесь чтобы оно заработало. На выходе полноценное рабочее место в кармане и вау эффект(0______о) знакомых. Минус в том что придется много потрахаться чтобы все заработало, когда USB в режиме OTG девайс подзарядить не получится.
    Второй вариант: Все тот же линь деплой, дома и на работе обычный VNC клиент. Эффект ВАУ все еще сохраняется. Из минусов только то что это всетаки VNC со всеми вытекающими.
    Третий: Дома и на работе как основные системы линуксовые(хотя это не обязательно). Работаете с софтом через x-forward. Из минусов только то что пропадает эффект ВАУ и рядом сидячий бородатый линуксоид крутит пальцем у виска глядя на это. Работать будет довольно шустро, если заморочиться и не стратовать dm на девайсе то будет куча свободных ресурсов.

    OpenJDK есть для armv7, работает неплохо. NetBeans тоже есть под арму.
    В свое время игрался с перечисленными выше примерами, было очень интересно, было полезно для развития. Было ли это правильно и удобно, тут надо исходить из задачи. Гонял все это на honor 6(проц hisilicon 8 ядер, 3гб оперативки). Расберри пай тоже есть но в итоге валяется в ящике, для использования в виде повседневного пк не годится, как медиацентр не годится, годится как тонкий клиент или эксперементы железячников.
    В конечном счете купил бу трансформер от асуса, 2гб оперативки конечно маловато для 10ки но для повседневных полевых задач годится на ура.
    Ответ написан
    Комментировать
  • Почему переходит в конец текста при выводе в JEditorPane?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    После того как загрузишь текст сделай
    jEditorPane.setCaretPosition(тут догадаешься=) );
    Ответ написан
    Комментировать
  • Функционал чата на Java?

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

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    love2d, код на lua, очень прост, бесплатен и есть возможность пускать в браузере.
    Ответ написан
    Комментировать
  • Где можно использовать старый SSD 64Gb?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    1) Купить бокс с USB3.0 и использовать как добротную флешку.
    2) Использовать как %TEMP%
    Ответ написан
    Комментировать
  • Как обновлять контент своего приложения?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Вы уж определитесь, сначала вы хотите вкладку в приложении чтобы добавлять а следом что нельзя было добавлять.
    В целом гдето на сервере в инете сама БД и REST сервис, на телефоне локальная sqlite БД, приложение шлет запрос к примеру по json на REST с номером цитаты, в ответ приходит json с цитатой, парсите эту json и заталкиваете в локальную sqlite БД. Если надо чтобы еще и пользователь мог добавить то тоже самое, шлете с телефона запрос с json в котором все нужное и на сервере разбираете и заталкиваете в БД.
    Ответ написан
  • Какие библиотеки используете для работы с зашифрованным zip в Java 8?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Поддержка ZIP архивов в яве есть из коробки. Не обновляется не значит плохо, вероятно просто не осталось багов.
    Шифрация в яве делается через, внезапно,штатный класс Cipher.
    Ответ написан
    1 комментарий
  • Java libgdx или C# Unity3D?

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

    Юнити хоть и мощный двиг но придется мириться с тем что он предоставляет и ни шагу в сторону как бы неудобно и нелогично это выглядело.
    LibGDX дает тебе возможность написать именно нужные тебе для конкретной игры двиг с необходимым и удобным тебе тулсетом.

    К примеру если игра изначально задумывается в виде платформера то намного удобнее написать все свое конкретно для данной игры на LibGDX, скорее всего это будет даже быстрее чем на юнити.
    Если игра будет чем то вроде КС то такую игру намного проще и быстрее делать на Юнити но позже будет сложнее дорабатывать ради уникальных фишек и количество костылей будет расти пропорционально числу уникальных фич.
    Ответ написан
    Комментировать
  • Возможно ли реализовать такое приложение?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Ваша идея полностью копирует обычный поисковик. Откройте гугл, введите запрос и нажмите кнопку "Мне повезет!".
    Сделать такое достаточно сложно особенно для начинающего.
    Если же предусматривается какой то определенный небольшой набор сайтов по которым будут искаться ответы, то задача станет проще но не намного.
    Ответ написан
    1 комментарий
  • Godot или GameMaker для новичка в разработке игр, и программировании в целом?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Не совсем понятно жанровое направление. Без программирования сейчас никуда, но есть исключения в виде конструкторов.
    Из крупных:
    1) Unreal Engine 4. Максимально удобный с отличным инструментарием, вместо кода можно использовать BluPrint(визуальный конструктор логики).
    2) Unity тоже подходит но без знания С# ловить особо нечего.

    Из конструкторов:
    1) FPS Creator, максимально простой конструктор для игр в жанре FPS.
    2) RPG Maker, тоже что и п1 но для RPG.
    3) Не шибко популярный у нас Kodu от MS, как по мне идеальный вариант для прототипирования и обучения.
    4) Еще менее популярный у нас spark game engine, лично мое мнение что это идеальный вариант для творческих людей, код писать не надо, все визуально и интуитивно. Смотрел его, остались очень приятные впечатления.

    Из интересных и требующих кода:
    1) LibGDX, очень классная и хорошо документированная либа но писать придется много.
    2) JMonkey engine, тоже что и п1 но с инструментарием и множеством дополнительных фич.
    3) Cocos2d, аналогичен LibGDX только в профиль.
    4) love2d, очень крутая штука с очень низким порогом вхождения в кодинг. Все на Lua скриптах.
    Ответ написан
    Комментировать
  • Как синхронизировать музыку между Linux и Android?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Самое близкое к айтюнсу это DoubleTwist но нет под линукс.
    Еще есть Winamp для ведра а он может синхронизироваться с айтюнсом.
    Еще есть iSyncr он только для синхронизации в отличии от Winamp'а.
    Ответ написан
    Комментировать
  • Как посылать запущенному приложению комманды?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Есть еще костыльный вариант но тем неменее удобный во многих случаях.
    Делаете обычный System.in\out консольный с нужными вам командами в самой софтине. Дальше пишете шеловый скрипт в котором описываете к пример start\stop\status\restart\exec(команда). Запуск софтины делать в screen с котором часть команд скрипта и будет работать. Софтину запускаете соответсвенно уже через этот скрипт.
    На выходе получится следующее, штатно цепляетесь по ssh к серверу и дергаете этот скрипт как угодно. Так же в самом скрипте можно сделать автоматический рестарт софта если он упал.
    Способ хоть действительно и костыльный но всетаки бывает очень удобным и за безопасность можно не переживать.
    Ответ написан
    Комментировать
  • Сетевое подключение диска к WEB серверу, прошу совета?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Из самых простых NFS.
    Если используете орaкловский VM box то у него тоже есть шаринг папок\дисков.
    У qemu тоже есть штатный механизм прокидывания папок\дисков.
    Ответ написан
  • Почему без вызова this система не принимает ответ?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Могу предположить что в случае потоков переменная this.message означает что поток отработает с данными которые были на момент его запуска\создания а не те которые реально лежат в памяти на данный момент. Если без this то данные будут браться именно те которые в данный момент реально находятся в переменной но поток мог спать и данные отправить должен был другие.
    Это лишь предположение, и вероятнее всего неверное.
    Ответ написан
    2 комментария