Отсутствие доказательств вреда ГМО?
Замена нормального лечения средствами ГМО и прочей чушью — вот самый настоящий вред. Одно дело, когда человек по собственной воле и безграмотности отказывается от современной медицины. Другое дело, когда врачи, вместо того, что бы рекоммендовать настоящие, проверенные средства рекоммендуют таблетки с сахаром, на которые старушкам предлагается отдать остаток своей пенсии, переложив его в карман чиновникам (вспоминаем «мадам Арбидол»).
Хотите отказаться от лечения и понадеяться на авось/плацебо/печеень барбарисской утки — пожалуйста. Но врачи должны рекоммендовать настоящие и проверенные лекарства.
Много раз слышал совет «Не слушать слишком громко телевизор или музыку в наушниках или без них», но ни разу не видел совета или исследований, насколько громко все-таки нужно слушать музыку, что бы повредить слух.
Сколько dB? Сколько это в % в популярных плеерах (iOS, Android) со стандартными наушниками?
Кроме того, попахивает некорректными силлогизмами. «Исследуемые имеют проблемы со слухом», «Исследуемые слушают музыку в наушниках», «Наушники приводят к потере слуха». Если опросить исследумых, кушают ли они завтрак, то скорее всего окажется, что все они кушают завтрак по утрам. Это не значит, что завтрак по утрам приводит к потере слуха.
Для проведения такого исследования, не достаточно просто сосчитать людей, которые слушают музыку (ее слушают почти все), нужно считать часы и громкость, и пытаться корректно определить корелляцию.
Тоже самое с человеком, разве нет? Это, конечно, редкий случай, но есть люди, разбирающиеся в терминологии, но не имеющие практического опыта программирования (HR-ы, например). Поговорить с ними о программировании вы так же не сможете.
Что в вашем понимании сознание?
У человека в памяти храниться информация, которая используется в качестве контекста. Если вы начнете обсуждать языки программирования с пятилетнем ребенком, или с человеком, который никогда ничего не слышал о программировании, ваш диалог будет не лучше.
Я думаю, что основная задача чат-ботов — это распознование контекста. И очень надеюсь, что с помощью machine learning эта задача наконец будет решена. Если система будет глобально обучаться на основании бесед с пользователями, то возможно, через некоторое время она сможет поддерживать проходить тест тьюринга.
Безусловно, сбор данных о беседах должен быть с прямого согласия пользователя, но лично я согласился бы на участие ради общего блага.
Не видел стрим, но коллега приобрел Google Home на выходных. Говорит это первая система, которая способна поддерживать беседу. Да, хило. Да, до беседы с человеком как до луны. Но зато можно спросить «Кто президент Мексики?», а получив ответ «А сколько там живет человек?»; система будет знать, что вы спрашиваете про Мексику.
Безусловно, если не знать, что такое сложность алгоритма и не понимать, чем отличается dict[«key»] от list.Where(e => e.name == «key»), то можно наворочать такого, что прийдется переписывать 100% кодовой базы.
Но и оптимизировать на спичках с самого начала — тоже глупо. Строить проект на костылях, пытаясь ускорить обращение к transform в полтора раза (когда в рамках всего проекта этот вызов занимает 0.00001% процессорного времени по сравнению с другими вызовами) — это и есть оптимизация на спичках.
Если я не уверен, станет ли определенное место бутылочным горлышком или нет, я пытаюсь написать его так, что бы потом его было легко отрефакторить, без переписывания 100% кода.
Слушайте, ну статья — это юмор, и на самом деле я вообще выисмиваю людей, которые пишут cachedTransform = transform; вручную в каждом классе. Я чуть выше писал — я таких людей видел :)
Если нужно закэшировать такие поля — обертка над MonoBehaviour это самое логичное решение. Ее можно сделать на любом этапе проекта, когда в этом действительно возникнет необходимость.
Безусловно, всё зависит от конкретного use-case. Если вы делаете RTS с сотнями юнитов для мобильных устройств, понятно, что управление этими юнитами это нестандартная задача, и решать ее надо нестандартными средствами. Честно говоря, я игр в таком жанре на мобильных платформах не видел — да и на PC RTS типа SC2 всегда есть ограничение на лимит юнитов, и как правило он не превышает 200 юнитов на игрока.
Мне всё равно трудно представить, как у вас может быть прирост в производительности в 2-3 раза от использования cached transform, моя математика выше это опровергает.
Но даже если представить, что это реально дает вам хоть какой-то прирост производительности, даже в 10%-20% — пожалуйста. Никто же не говорит, что это никогда нельзя делать. Все зависит от конкретного случая.
Но в общем случае, в 99% проектах, я убежден, что это не даст никакого результата, по сравнению с тем, сколько процессорного времени занимают другие расчеты, вызовы функций, draw calls, тот же GC, итд.
Пожалуйста, прочтите и осмыслите то, что я вам напишу.
Допустим, вы правы, и вызов стандартного .transform в несколько раз медленнее, чем использование своего закэшированного transform.
Но любая оптимизация может иметь, а может не иметь смысл в рамках всего проекта.
Я провел несколько бенчмарков с .transform и с различными операциями над transform, 10 миллионов итерация каждая:
Да, вы правы, и кэширование .transform даст вам прирост производительности в несколько раз. В абсолютной величине — это 2E-8 сек, т.е. 20 наносекунд. Но вы ведь к transform обращаетесь не просто так, что бы положить его в переменную, верно?
Практически любая операция над .transform, будь то взятие position, rotation, и уж тем более вызов методов типа SetParent, займет как минимум 50-60 наносекунд, и это в несколько раз превысит любой выигрыш, который вы получите с помощью своей оптимизации.
Т.е. даже если предположить, что у вас проект из одного Update цикла, и в этом update цикле вам надо взять transform и провести над ним всего-лишь одну операцию (например, поменять позицию), то ваша оптимизация позволит вам выиграть около 30%. Но 30% — это прирост производительности «в вакууме» — без учета работы самого цикла, без учета draw calls на ваш gameobject, без учета физики, без учета всего.
В реальной жизни, ваша оптимизация даст вам настолько мизерный прирост производительности, что в масштабах игры он будет абсолютно не значителен.
Поэтому предложение кэшировать все .transform — это оптимизация, она работает, но это оптимизация «на спичках». Если вы со мной не согласны, я предлагаю вам взять любой серьезный проект, и провести замеры производительности с кэшированием и без кэширования transform.
Можете привести пример кейса, когда программистам нужно использовать API, а дизайнер может менять поле напрямую? В чем логика — почему одни должны работать через api, а другие нет?
Мне кажется в случае с API имеет смысл написать расширение редактора для работы с этим полем, которое в свою очередь так же будет работать через API.
Откуда информация про «в 2 раза медленнее» или «в 4 раза медленнее»?
Судя по вот этим бенчмаркам, собственное кэширование дает прирост производительности в 15%-20%.
Если для вас действительно так критичны эти 15%-20%, то я считаю что проблему можно решить различными способами, например переопределить .transform, написать свой CachedMonoBehavior или вообще пройтись по всем transform'ам пост-процессинговым скриптом.
Но уж точно не прописывать вручную в каждом классе myTransform (а я такое видел, и в статье говорю именно об этом).
По поводу восьмизначного кода, смею предположить, что атакующий мог каким-то способом перехватывать все отправляемой техподдержкой коды в определенный момент времени, но не знал, куда именно они отправляются. Если коды отправлялись сотрудниками liveperson.net в microsoft, то возможно, был скомпрометирован их сервер, или один из компьютеров сотрудников. В этом случае атакующий, возможно, пытался отправить коды с разных сотрудников, что бы попасть на нужный ПК. Это объясняет то, что отправлялись запросы «всплесками» с интервалом в несколько часов (никогда неизвестно, есть ли кто-то из поддержки за нужной рабочей станцией).
Но как-то это слишком круто для школьника/студента, который продает услуги блокировки по $30. История с N репортами звучит гораздо более убедительно.
Что если попробывать связаться напрямую с сотрудниками microsoft (желательно с кем-нибудь наверху в пищевой цепочке) со Skype-аккаунтом (желательно личным), и заблокировать его? Я думаю, на репорт взлома сотрудника в microsoft отреагируют более адекватно.
Поэтому перед проведением операции как правило смотрят изменение зрения в динамике. Если зрение у вас активно падает, никто операцию делать вам не будет, потому что второй раз уже будет гораздо сложнее.
Годовой доход Wargaming — 200 милионов долларов, EA Games — 4.3 миллиарда. По-моему, это не называется «одного порядка», это как раз на один порядок выше :)
Мораль: не писать комментарии перед сном.
Замена нормального лечения средствами ГМО и прочей чушью — вот самый настоящий вред. Одно дело, когда человек по собственной воле и безграмотности отказывается от современной медицины. Другое дело, когда врачи, вместо того, что бы рекоммендовать настоящие, проверенные средства рекоммендуют таблетки с сахаром, на которые старушкам предлагается отдать остаток своей пенсии, переложив его в карман чиновникам (вспоминаем «мадам Арбидол»).
Хотите отказаться от лечения и понадеяться на авось/плацебо/печеень барбарисской утки — пожалуйста. Но врачи должны рекоммендовать настоящие и проверенные лекарства.
Нет. Но они могут рассказать о проблемах, с которыми им пришло столкнуться. И вы удивитесь.
Сколько dB? Сколько это в % в популярных плеерах (iOS, Android) со стандартными наушниками?
Кроме того, попахивает некорректными силлогизмами. «Исследуемые имеют проблемы со слухом», «Исследуемые слушают музыку в наушниках», «Наушники приводят к потере слуха». Если опросить исследумых, кушают ли они завтрак, то скорее всего окажется, что все они кушают завтрак по утрам. Это не значит, что завтрак по утрам приводит к потере слуха.
Для проведения такого исследования, не достаточно просто сосчитать людей, которые слушают музыку (ее слушают почти все), нужно считать часы и громкость, и пытаться корректно определить корелляцию.
У человека в памяти храниться информация, которая используется в качестве контекста. Если вы начнете обсуждать языки программирования с пятилетнем ребенком, или с человеком, который никогда ничего не слышал о программировании, ваш диалог будет не лучше.
Безусловно, сбор данных о беседах должен быть с прямого согласия пользователя, но лично я согласился бы на участие ради общего блага.
Безусловно, если не знать, что такое сложность алгоритма и не понимать, чем отличается dict[«key»] от list.Where(e => e.name == «key»), то можно наворочать такого, что прийдется переписывать 100% кодовой базы.
Но и оптимизировать на спичках с самого начала — тоже глупо. Строить проект на костылях, пытаясь ускорить обращение к transform в полтора раза (когда в рамках всего проекта этот вызов занимает 0.00001% процессорного времени по сравнению с другими вызовами) — это и есть оптимизация на спичках.
Если я не уверен, станет ли определенное место бутылочным горлышком или нет, я пытаюсь написать его так, что бы потом его было легко отрефакторить, без переписывания 100% кода.
Если нужно закэшировать такие поля — обертка над MonoBehaviour это самое логичное решение. Ее можно сделать на любом этапе проекта, когда в этом действительно возникнет необходимость.
Мне всё равно трудно представить, как у вас может быть прирост в производительности в 2-3 раза от использования cached transform, моя математика выше это опровергает.
Но даже если представить, что это реально дает вам хоть какой-то прирост производительности, даже в 10%-20% — пожалуйста. Никто же не говорит, что это никогда нельзя делать. Все зависит от конкретного случая.
Но в общем случае, в 99% проектах, я убежден, что это не даст никакого результата, по сравнению с тем, сколько процессорного времени занимают другие расчеты, вызовы функций, draw calls, тот же GC, итд.
Допустим, вы правы, и вызов стандартного .transform в несколько раз медленнее, чем использование своего закэшированного transform.
Но любая оптимизация может иметь, а может не иметь смысл в рамках всего проекта.
Я провел несколько бенчмарков с .transform и с различными операциями над transform, 10 миллионов итерация каждая:
Да, вы правы, и кэширование .transform даст вам прирост производительности в несколько раз. В абсолютной величине — это 2E-8 сек, т.е. 20 наносекунд. Но вы ведь к transform обращаетесь не просто так, что бы положить его в переменную, верно?
Практически любая операция над .transform, будь то взятие position, rotation, и уж тем более вызов методов типа SetParent, займет как минимум 50-60 наносекунд, и это в несколько раз превысит любой выигрыш, который вы получите с помощью своей оптимизации.
Т.е. даже если предположить, что у вас проект из одного Update цикла, и в этом update цикле вам надо взять transform и провести над ним всего-лишь одну операцию (например, поменять позицию), то ваша оптимизация позволит вам выиграть около 30%. Но 30% — это прирост производительности «в вакууме» — без учета работы самого цикла, без учета draw calls на ваш gameobject, без учета физики, без учета всего.
В реальной жизни, ваша оптимизация даст вам настолько мизерный прирост производительности, что в масштабах игры он будет абсолютно не значителен.
Поэтому предложение кэшировать все .transform — это оптимизация, она работает, но это оптимизация «на спичках». Если вы со мной не согласны, я предлагаю вам взять любой серьезный проект, и провести замеры производительности с кэшированием и без кэширования transform.
Мне кажется в случае с API имеет смысл написать расширение редактора для работы с этим полем, которое в свою очередь так же будет работать через API.
Судя по вот этим бенчмаркам, собственное кэширование дает прирост производительности в 15%-20%.
Если для вас действительно так критичны эти 15%-20%, то я считаю что проблему можно решить различными способами, например переопределить .transform, написать свой CachedMonoBehavior или вообще пройтись по всем transform'ам пост-процессинговым скриптом.
Но уж точно не прописывать вручную в каждом классе myTransform (а я такое видел, и в статье говорю именно об этом).
Но как-то это слишком круто для школьника/студента, который продает услуги блокировки по $30. История с N репортами звучит гораздо более убедительно.
Что если попробывать связаться напрямую с сотрудниками microsoft (желательно с кем-нибудь наверху в пищевой цепочке) со Skype-аккаунтом (желательно личным), и заблокировать его? Я думаю, на репорт взлома сотрудника в microsoft отреагируют более адекватно.