Как стать автором
Обновить
4
0.5
Илья @edge790

Пользователь

Отправить сообщение

Посмотрите на SonarQube и плагин для IDEA, Eclipse, Visual Studio, Visual Studio Code и Atom'а — SonarLint.
SonarLint(или только SonarQube. к сожалению сказать точно не могу) предоставляет инспекции в которых клонов видно больше чем в стандартных IDEA инспекциях.


  • много дополнительных уязвимостей и кодсмеллов.


  • SonarLint интегрируется с SonarQube'ом так что свои инспекции можно самому настраивать и видеть их в IDE.

Ну и просто, если вы вдруг не знали, SonarCloud — бесплатен для OpenSource проектов и может легко использоваться в связке с GitHub + TravisCI + SonarCloud


P.s. Хотел написать просто: "добавьте к списку плагинов для поиска клонов SonarLint", но получилось что-то напоминающее рекламу…

а для опенсорс проектов можно просто писать с ломбоком и делать деломбок

Сейчас сеть(в смысле источник сигнала) — это Базовая Станция, которая выступает чем-то вроде реле — весь трафик идёт через них и все базовые станции связанны с соседними(на деле не всегда) и говорят, когда пользователь идёт от одной Базовой станции к другой, чтобы связь не прерывалась.
Если людей около одной базовой станции много и они её активно используют, то она схлопывается(уменьшается её область покрытия) поэтому когда много людей в одном месте, иногда пропадает связь.
В концепции 5G, насколько мне известно, само устройство будет выступать как Базовая станция. Т.е. чем больше рядом людей, тем лучше связь.
Из-за этого в 5G только VoIP и обязательное E2E шифрование — иначе любой человек сможет видеть весь трафик и перехватить разговоры других людей.


Саму фразу что "Сеть гоняется за абонентом" я понимаю как то, что сам абонент будет выступать сетью

Один из основных принципов Spring'а: "Convention over Configuration". Т.е. чтобы разработчикам нужно было делать как можно меньше однообразных действий, спринг практически для всего делает "дефолтную" конфигурацию.
Я думаю они просто решили сделать синглтон скоуп, потому что он лучше всего подходит под эту философию.

Про безопасность не было ничего сказано. Даже тогда, когда я задал вопрос лектору, то он сказал, что не задавался вопросом.
в 5G обещают E2E шифрование. https://www.huawei.eu/sites/default/files/5G_Security_Whitepaper_en.pdf

Самая большая проблема — что его просто могут запретить.

тут всё зависит от сервера и сетей вашего провайдера. иногда сеть идёт не по самому "быстрому" пути, потому что тогда используются каналы других провайдеров, за которые придётся ещё доплачивать. тут выбирается самый дешевый

между континентами он больше. Переехал из одного города в другой. Расстояние 350км. В первом пинг был в районе 35мс, в текущем 15мс.

Со стратегиями — да. Более менее норм.


В шутерах и прочих Экшн играх используется интерполяция — сервер говорит, то что было n-миллисекунд назад, хотя слушает в реалтайме. Это сделано для того, чтобы он знал все действия на шаг вперед и клиенты могли "сгладить" движения.
В итоге в Counter-Strike 1.6 был даже фича баг, из-за которой игроки, которые выстрелили в промежуток меньший чем те же n-миллисекунд, убивали друг друга и раунд заканчивался ничьёй.
В CS:GO — это пофиксили, поэтому порой случается так, что ты слышишь выстрел, уже радуешься победе, а игра показывает что ты умер, а противник жив.
С гонками и симуляторами космических кораблей поступают совсем иначе — используют обратный метод к интерполяции — экстраполяцию: ты говоришь что другая машина находится в координатах xyz и движется со скоростью uV (u — вектор направления движения, V — скорость). Отсылая эти данные на клиент мы можем на стороне клиента смоделировать плавное движение других машин.
Из-за этого в таких гонках можно увидеть как машина противника уезжает в стену, ты ликуешь, а потом оказывается что был рассинхрон и он на самом деле всё ещё впереди тебя. Второй случай — когда они врезаются в объекты и, сначала кажется будто они прошли через них или объехали, а потом "возвращаются" на место столкновения.
З.ы. мне кажется что нечто подобное с экстраполяцией использовали и в WoW — когда происходит рассинхрон — если герой на момент рассинхрона шёл вперед, то он продолжает идти вперед.

проблему с "бесконечной прокруткой" тоже можно аналогичным образом

Возможно, я не прав, но акселерация — это фича аппаратного уровня.
+ Интересует вопрос: а стелко увеличительное с сенсора сняли?(Если оно было)

На данный момент все производители мышей гонятся за DPI, из-за чего прибегают к «грязным трюкам» типа увеличительных стекол.
Идея простая — жертвуем максимальным ускорением мыши (G) но увеличиваем DPI (т.е. передвижение курсора на X точек за Y дюймов)
Никто не заставляет использовать именно bool как булеву переменную ([хех]), int/short/char тоже неплохо подходят

Что в памяти программы будет одним и тем же. Нам не важно какой у неё тип в коде. Нам важно её значение во время выполняемой программы.
Про "Несказанно повезло" вы явно перегнули, потому что искать 0 и 1 — нормально, т.к. в большинстве игр так и есть(а тип не имеет значения, т.к. можно искать от меньшего к большему)
Про переменную принимающую значения нажатой кнопки 0 — объяснение в том что сначала думали что кнопка будет (включать туман войны), а потом оказалось что наоборот звучит лучше (убрать туман войны).
По поводу значение галочки в 3 — просто экономия памяти с использованием масок.
Например: 1 — включить туман войны, 2 — наложение чёрного. 0 — ни тумана, ни черного, 1 — только туман, 2 — только черный, 3 — и черный и туман. (Опять же. одна галочка может быть скрыта в релизе)

Как правильно написал derwin — oracle лицензируется по ядрам.
Пример из статьи с сравнением:


Так, 32-ядерная модель EPYC 7601 при работе с целочисленными значениями (тест SPEC) показала себя на 47% быстрее 22-ядерного Intel Broadwell на частоте 2,4/3,6 ГГц и на 75% быстрее при работе с числами с плавающей запятой.
Т.е. с увеличением стоимости софта на 68.75%(32 ядра у амд, против 22 у интела) получили прирост в 47% по целым и 75% по числам с плавающей точкой. Т.е. на данный момент всё и вправду печально для амд.
Вся надежда на то что оракл возьмётся за ум и как-то подкорректирует это дело

Я надеюсь, что вы так шутите, но всё же отвечу на ваш комментарий:


а) Зачем кому-то нужно чтобы всё отображалось одинаково?
1) Форматирование кода ведет к более быстрому обнаружению ошибок = > улучшают программу
2) Паттерн билдер и (не помню как это называется, вроде chain-call) когда метод возвращает инстанс самого объекта для конфигурирования — у меня таб = 2 символа, у кого-то 4 следовательно и по разному это всё будет выглядеть: кто-то по отсупам будет сразу видеть что это вызов всё того же билдера, а кто-то не будет понимать почему это так
3) Как заметил выше alexeykuzmin0, выравнивание параметров функции в столбик


Может ещё набирать людей одного роста, пола и цвета кожи и чтобы с абсолютно одинаковыми интересами?
Код стайл у всех должен быть одинаковый — он упрощает понимание кода. В команде более чем из 5 человек это серьёзно увеличивает производительность (например Класс с большой, метод с маленькой, константы SCREAMING_SNAKE_CASE'ом — только по названию мы видим что есть что, а IDE (в моём случае IDEA) и вовсе по кейсу делает подсказки. Если я не смогу найти класс из-за того, что он написан с маленькой буквы и потрачу на это дело кучу времени — я буду недоволен, как минимум. А про производительность команды в целом, я вообще молчу.
И да. В этом воопросе я не вижу связи с рассизмом. Не надо утрировать.

б) Не вижу как это относится к тому что компания, имеющая огромную кодовую базу и тысячи сотрудников составила и выложила в открытый доступ рекомендации по написанию кода. Если они вас не устраивают, то вы можете не следовать им, а следовать например Oracle Code Conventions или любым другим в зависимости от вашего языка. Рекомендации, на то и рекомендации, что, в основном, следование им, делает жизнь проще.
P.s. что гугл — самые умные в мире, я не говорил не слова(хотя спорить с этим я бы не стал, но это "моё личное скромное мнение"), но то что у них одни из самых больших зарплат(а это то что обсуждается в статье) и веб-сервисы, использующиеся сотнями миллионами людей — это факты.


в) Какая разница другим людям, от того что я вижу таб в два пробела, делаю таб, в два пробела и вообще использую пробелы, если я их комичу пробелами в репозиторий, а остальные их видят как захотят(либо пробелами, либо как я "псевдотабами")


То что они занимают меньше байтов — это не проблема, для компании, у которой столько кода, что ей не хватает обычного облака.
Со вторым, я поспорить не могу. Можете поискать/написать плагин, который вместо двух пробелов будет отображать 4.

Да, спасибо. Я это и хотел сказать в первом пункте, но описал только причину и решение, вместо самой проблемы...

а) Табы и пробелы отображаются у всех по разному(у меня размер таба = 2 пробела, а стандартный = 4) поэтому в больших компаниях создают / используют Coding Conventions с целью на пробелы(т.к. гораздо сложнее следить чтобы у всех всё было "правильно")
б) Одна из самых популярных code style'ов, которые может использовать любая компания, вместо изобретения своих велосипедов, для улучшения качества кода является Google Code Style, который для всех языков советует использовать пробелы. (Следовательно все сотрудники гугл используют пробелы), а бОльшая часть open source проектов на них ссылается
в) "Те странные ребята постоянно стучащие по пробелу" на самом деле просто люди, которые умеют настраивать IDE, чтобы она автоматически вместо таба ставила пробелы (например при импорте Google CodeStyle'а в любую Intellij IDE эти настройки проставляются автоматически, и разработчик даже не видит разницы)


P.s. я не вижу ни одной причины для крупных компаний использовать табы в коде, тем более и табы и пробелы, отсюда и закономерность: Большие компании с хорошим качеством кода = Пробелы => сотрудники больших компаний с хорошим качеством кода = пробелы |= зарплата

и по юсб. лет 5 назад тоже работало с андроидом...

Движение игрока и пули сделано через transform.position, а не velocity, поэтому игрока колбасит, когда он упирается в стены;

По-моему, тут проблема не в transform.position и velocity, а в том что для всех действий которые аффектят физику нужно юзать FixedUpdate, а не Update — апдейт отрабатывает на каждом фрейме(т.е. вызовы в секунду = фпс), FixedUpdate — отрабатывает на каждый "физический тик" который вызывается каждые Time.fixedDeltaTime.


Офицальная документация говорит что для работы с объектами, у которых есть RigidBody мы должны использовать FixedUpdate:


FixedUpdate should be used instead of Update when dealing with Rigidbody.
Ссылка

Так же в игре есть стандартный интерфейс с взаимодействием с временем: Time.timeScale.
Офф.Док:


The scale at which the time is passing. This can be used for slow motion effects.

Слишком сложный вопрос.
Обфускация кода есть практически во всех играх, но дизассемблируя мы видим код, каким его видит процессор(а комменты/названия частенько затирают).
В одной из игр видел такой трюк: игра при каждом изменении переменной присваивает её другой переменной(всего их было 4 на каждую характеристику и они по кругу менялись). Это была пошаговая двухмерная стратегическая РПГ поэтому они могли себе позволить такие затраты памяти.
В некоторых играх значения изменяются через сеттеры и геттеры "обфусцируя" значение переменной. Пример: цивилизация, где ресурсы показываются как число с дробной частью (100.26 или 25.32), а на самом деле является интом 100.
В флеш играх часто значения переменных умножались на 8(и иногда вдобавок плюсовалась 6). Поэтому для Cheat Engine даже писал свой кастомный поиск "Flash Value" который искал (value || value
8 || value * 8 + 6)
В игре Dungeon Defenders(доступна в стим) все значения легко находятся и изменяются(если это не игра на офицйальном сервере, т.к. данные хранятся на сервере), но при подключении дебагера игра крашится. (До сих пор хз по какой причине)
Если XOR'ить значения переменных можно сделать очень неприятную ситуацию: обычные средства поиска подразумевают:


  1. Поиск по конкретному значению с указанием типа(целое или с плавающей точкой, знаковое или беззнаковое, 4 или 8 байт на переменную)
  2. Поиск по конкретному значению и всем типам (раньше я их разделял, потому что много времени занимало)
  3. Fuzzy Search — Нечёткий поиск. Это поиск когда мы не говорим конкретные значения, а говорим что переменная либо: Увеличилась на х / Уменьшилась на х, Увеличилась / Уменьшилась, Изменилась / Не изменилась. Значения приведены в порядке увеличения времени и итераций поиска. Поэтому в случае XOR'а придётся выбирать самый последний, долгий и мучительный вариант.
    Но всё выше перечисленное(не считая вылета при дебагинге) это лишь временная преграда, потому что самый "Крутой/жесткий/гибкий/продвинутый"(нужное подчекнуть) способ — это отслеживать изменения переменных через адресацию через базовый гейм адрес. (В статье автор использует брейкпоинт на Write, а там ещё есть брейк на Access — последний логирует все обращения к переменной и "хвост" за ней. Это позволяет нам делать совершенно любые и даже неожиданные вещи: например сделать так чтобы враги считали нас союзником(был такой хак для Halo), заставить врагов атаковать друг-друга и вообще всё, всё, всё.

Получилось много, но суть в одном — по-моему невозможно "полностью" защитить игру от подобного взлома, потому что этот способ, по-сути даёт нам возможность писать свой код в чужой программе. Например, GTA:SAMP — мультиплеер для GTA:SA работает на аналогичном методе...

Я думаю что для каждой игры свой средний объем текста:
Диабло — слешшер в нём не нужен текст (текст сведен к минимуму).
СтарКрафт(1-2), ВарКрафт(3) — содержат среднее количество текста
Ходячие мертвецы и прочие игры от TellTale Games — целиком состоят из текста(пускай и анимированного и озвученного). Ради него в них и играют.
В играх, где «сюжет — не главное» его делают, но позволяют пропускать (Диабло 3, где добавили дневники с лором о монстрах, боссах и местах, СтарКрафт 2 где в «Меню» можно посмотреть новости, поговорить с напарниками и т.д.)
Тем более «Сделать меньше текста» выглядит особенно глупо для игр в которых это основной элемент. Персона 5, которая используется на всех скринах пришла из Японии, в которой один из самых распространённых жанров игр является «Visual Novel», которые больше похожи на интерактивные книги. Сделать в них меньше текста = сделать меньше игру. (Кстати в той же Persona 3\4\5) был «опциональный лор», в который можно вдаваться а)либо потому что тебе интересно либо б) потому что он повышает характеристики твоего персонажа.

Меньше текста для игр в которых он является главной частью игры — ужасная идея. Лучше сделать какую-то его часть опциональной.
Не неофициальный сервер WoW, а «любительская реализация серверной части одной из лучших MMORPG».
Нелегально запускать свой публичный сервер.
А этот код написан фанатами и распространяется по GNU GPL (т.е. автор передает творение в общественную собственность).
Причём на сайте указано что поднятие сервера незаконно и комманда mangos не оказывает никакой поддержки в этом.

Информация

В рейтинге
1 921-й
Откуда
Воронеж, Воронежская обл., Россия
Зарегистрирован
Активность