Обновить
198

Программист

79
Подписчики
Отправить сообщение

То что Вы описали - это ужас какой-то. Я закончил школу в 2011 году, участовал в разных олимпиадах в 6-11 классах, потом помогал их проводить, когда учился в МФТИ. И для меня это была заметная часть жизни и возможность самореализации.

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

К сожалению, не везде так было, например на областной олимпиаде по астрономии один раз следить за ней посадили какого-то немотивированного студента (я был в 10 или 11 классе), который прямо сказал "списывайте, делайте что хотите, чем раньше уйдёте тем раньше я освобожусь" - меня это тогда довольно сильно демотивировало.

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

Судя по вашему описанию, проблема не в нейронках, а в отвратительной организации. Очень жалко.

А ещё backspace это удалить.

В нормальном софте enter и backspace это "зайти в папку/открыть файл" и "выйти в родительскую папку", не знаю как они додумались до удаления.

Ну кстати возможно, что было бы интересно не только байткод для BEAM поддерживать, а иметь несколько таргетов (возможно, в виде простой генерации кода для Java/C++), потому что в программе вполне часто получается, что есть и какой-то стрёмный код который трогать не хочется, и какая-нибудь подсистема, которую наоборот хочется сделать максимально строгой и верифицируемой.

P.S. Прекрасно вас пойму, если будете поддерживать только BEAM, потому что много таргетов поддерживать сложнее.

Ну он работает, прост не так хорошо, как с пользователями. Я, например, тоже могу довольно долго писать статьи в минус за счет накопленного рейтинга.

Нет, не работает.
Во-первых, администрация умеет удалять комментарии под постами без плашки про НЛО и делает это. Для примера - вот в этой корпоративной статье были комментарии про принадлежность компании к икс-холдинг, (и мой в том числе), который производит СОРМ. Сейчас этих комментариев нет: https://habr.com/ru/companies/yadro/articles/964952/

Во-вторых на хабре есть лимит на количество минусов в день и вроде 2 минуты между минусованием кармы. Т.е., минусовать авторов нейрослопа можно, но сам в процессе задолбаешься и массово этим никто не занимается. И минусы статьям тоже не сильно удобно ставить - вылазит окошко типа "отметьте за что".

Что интересно, на плюсы лимита вроде нет, и я знаю историю, когда некоторые люди ради интереса прошлись по корпоративным статьям одной компании и поплюсовали их, так что та обошла в рейтинге хабра другую компанию (тот рейтинг как раз зависит от суммы рейтинга недавних статей) Условно, статьи копроблога выходят буквально каждый день, и один человек может пройтись и сделать +1 или +2 к каждой, в сумме около +30 или +60. После этого случилось забавное - во-первых, у компании-конкуретна вскоре тоже вырос рейтинг, во-вторых администрация хабра отключила возможность голосовать участникам перформанса, чтобы не "качали" рейтинги компаний туда-сюда.

В общем всё это как игра с шулером, выиграть невозможно. Если пользователи организуются и начнут как-то целенаправленно голосовать, их могут либо забанить, либо изменить правила, либо корпорации нарегают фейковых аккаунтов (или даже просто по аккаунту на каждого сотрудинка) и будут плюсовать друг друга, компенсируя минусы. По-факту это не сложно, для рейтинга статьи в +50 достаточно 50 аккаунтов.

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

Жду, когда появится конкурент хабра и с радостью уйду туда.

Да и без steam os в обычном десктопном linux mint пользуюсь стимом последние четыре года и всё ок.

Клавиатуру и мышку можно по bluetooth подключить. Монитор можно через type c подключить (и обычно если монитор подключается по type c, он ещё умеет заряжать устройство и раздавать usb порты монитора, если мышка и клавиатура всё-таки проводные)

При этом, пиксельный шейдер запускается не просто ради одного пикселя, а для блока 2х2.

Я правильно понимаю, что если только один пиксель в блоке попадает в треугольник, то пиксельный шейдер выполняется для четырёх пикселей, при этом в трёх остальных на вход шейдера приходят немножко невалидные значения, которые лежат за пределом треугольника? Условно, если я в пиксельном шейдере получаю интерполированные значения от вершинного, то для таких пискелей они на самом деле даже экстраполированные?

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

Например, можно сказать что по витой паре cat5e с максимальной частой в 100 МГц можно передать 100 мегабит и невозможно гигабит.

Ещё можно сказать, что по wifi при ширине полосы передачи в 80 МГгц гигабит не передать.

Для меня сигнал - если человек прям безапелляционно заявляет - то в большинстве случаев он и знает не много, и скорее всего и не стремится узнавать новое.

Очень хорошим примером был учебник Феймана по физике - к утверждению что сила притяжения F = mMG/(R^2) прилагался ещё список границ, до которых удалось дойти в экспериментах - минимальные и максимальные расстояния на которых это точно работает, минимальная и максимальная масса.

В сербском вообще все мягкие глассные через j делаются или через мягкий знак у согласного.
Т.е., тут будут jo, je, ju, ja, но при этом в авфавите появляются отдельные мягкие согласные типа љ и њ (причём для многих согласных мягких версий вообще нет).

Буквально через границу от Сербии есть Болгария, в которой алфавит прям сильно похож на современный русский (с Э, Ю, Я), но при этом в болгарском языке со временем потерялись падежи и теперь их нет.

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

Мне на это открыла глаза книжка "Concrete Mathematics" от Кнута: https://en.wikipedia.org/wiki/Concrete_Mathematics

Например, для ряда чисел можно точно так же определить производную как и у Коши: (f(n + eps) - f(n))/ eps, только разница в том, что eps не получится устремить к нулю и она будет либо 1, либо -1 (у кнута они называются производной слева и производной справа и они не равны)

Можно провести аналогию между интегралом и суммой ряда. Например, интеграл от х - это х^2/2, сумма ряда x(n)=n будет n * (n - 1) / 2. По сути то же самое, только вылезла наша единичная eps.

Преобразование Фурье применимо и для ряда, и для непрерывной функции. Причём даже можно взять кольцо вычетов для простого числа p, найти там корень N-ной степени из единицы и потом прямо в кольце сделать преобразование Фурье с таким корнем. И там не будут нужны комплексные числа!

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

И для дельта-функции дискретная аналогия это просто ряд с одной единичкой и остальными нулями.

В Сербии, кстати, сейчас сразу два алфавита используются параллельно - и кириллица и латиница.

128 Гб DDR4 RAM и можно увидеть что-то около 8 токенов в секунду от minimax-m2 на процессоре и квантизации в 4 бита. И немножко быстрее работает gpt-oss 120b, но она мне не нравится.

Ещё есть всякие Qwen-Coder с экспертами, когда модели на 30миллиардов параметров из которых активных только 3 - они работают шустро даже на процессоре.

По-моему локальные модели становятся всё круче, причём даже с жёсткой квантизацией до трёх бит модель как будто не становится радикально глупее.
Из минусов только то, что скорость заметно ниже и если в формате "вопрос-ответ" это норм, то в формате "посмотри десять файлов" хочется что-то побыстрее - а тогда модель меньше и глупее.

Про мультфильмы, фильмы и книги - доход не только с продажи копий.

Обычно выстраивается целый бренд - например, есть взять каких-нибудь супергероев, то это и комиксы, и мультфильмы, и фильмы (и показы в кино и продажи копий потом), и игры, и какие-нибудь игрушки, футболки с принтами, участие в фестивалях т.п. Что-то из этого легко пиратится, что-то нет.

Бренд влияет на продажи - например, я скорее всего куплю лего, а не китайский клон в три раза дешевле, потому что в качестве лего и в совместимости с другими их наборами я уверен.

Реальность в том, что Epic Game Store аж бесплатно игры время от времени раздаёт (причём они не пиратские, а типа легальные),
торренты тоже существуют, но пользователи всё равно сидят в Стиме.

А ещё игра ведьмак 3 когда-то вышла без защиты (в GOG все игры без защиты, это их принципиальная позиция), сразу после выхода она появилась на торрентах, о это не помешало получить рекордные продажи.

"Зачем платить если есть бесплатно" - чтобы поддержать авторов.

Когда пользователь не может взять бесплатно, появляется соблазн выкручивать ему руки и ставить любые цены и ограничения. А когда альтернатива есть, приходится подстраиваться и делать удобно и хорошо.

Нет, не перестанут, есть куча альтернативных способов монетизации.

Например, на концерт Рамштайна билеты больше 100 евро стоят, и некоторые люди готовы вообще в другую страну ради него поехать. Сначала люди слушают пиратскую музыку, потом становятся фанатами и радостно идут на концерт.

Или например на ютубе деньги авторам из РФ не платят (и вообще Роскомнадзор ютуб блочит ещё и для зрителей). Что, русскоязычный Ютуб умер? Да вроде нет, живёт как-то, авторы используют нативную рекламу, собирают донаты или вообще просто по фану видео выкладывают.

Или, например, я могу заплатить за игру в Стиме, потому что в Стиме удобнее нажать пару кнопок и потом получить игру, обновления, игровые сохранения в облаке с возможностью продолжить игру с любого устройства, кооперативный режим и т.п. - это удобнее, чем ставить её с торрентов.

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

Смысл есть, это как раз то что связано с перемещением.
Например, бивектор yx описывает скорость вращения (и даёт кватернион как exp(yx * angularVelocity * t), и бивектор wx будет описывать линейную скорость и можно получить транслятор как exp(wx * linearVelocity * t)
И поскольку wx в квадрате это 0, а не -1, экспонента превращается в простую линейную запись (1 + wx * linearVelocity * t), а не в выражение с косинусами и синусами как в случае кватерниона.

И да, алгебра про которую я говорю, Cl(3, 0, 1), и вот эта вырожденность с w * w = 0 критически важна. В Cl(4, 0, 0) фокус с линейным перемещением не пройдёт.

P.S. и ещё в CL(3, 0, 1) будет градация точка-линия-плоскость, плоскость будет либо тривектором, либо 1-вектором в зависимости от выбранных обозначений. Бивектор будет описывать линию в пространстве.

Всё прекрасно комбинируется.
Если я перемножаю кватернион и кватернион - получается кватернион.
Если перемножу кватернион и транслятор - будет мотор.
Если перемножу кватернион с мультивектором - будет мультивектор.

Аналогично, когда мотор двигает плоскость, он даёт новую плоскость, а когда на линию - новую линию, на точку - даёт точку.

Если всё упростить до "мультивектор умножается на мультивектор", вся эта информация потеряется и пользоваться становится неудобно и непрактично - вместо перемножения двух кватернионов из 4 чисел каждый получается геометрическое произведение двух мультивектором из 16 чисел, причём большая часть нули и это всё избыточно.

Вот например как у меня получилось: https://github.com/Kright/ScalaGameMath/blob/master/cpp/pga3d/Motor.h#L91

В 3д графике нет необходимости умножать мультивектор на мультивектор.
Там будет мотор (8 компонент), собранный как комбинация всех трансформаций, который будет двигать точки в модели (3 или 4 компоненты).

Вычислительно это проще на порядок, чем считать sandwich product мультивектора и мультивектора.

Вот тут можно сравнить длину выражений для sandwich product для мультивектора, и, например, для мотора и точки:
https://github.com/Kright/ScalaGameMath/blob/master/cpp/pga3d/opsSandwich.h#L20

В случае транслятора и точки вообще тривиально:

constexpr Point Translator::sandwich(const Point& b) const noexcept { 
    return {.x = (b.x - 2.0 * wx), .y = (b.y - 2.0 * wy), .z = (b.z - 2.0 * wz)}; 
}

Это выражение получится, если взять мультивектор с нулями и упростить.

Условно, я в любом месте могу написать motor.toMultivector().sandwich(point.toMultivector()) и результат будет эквивалентен выражению motor.sandwich(point).toMultivector(), но второе считать намного быстрее.

Я не согласен, что вместо векторов, кватернионов и т.п. в 3д графике стоит использовать один мультивектор.

В мультвекторе 8 элементов (а если добавить ещё четвёртое измерение для перемещений - все 16), и переможение двух мультиветкоров - это куча операций. (Кажется, порядка 16^2)
У меня получилось, что лучше наоборот навыделять подклассов, которые нужны в реальной жизни, как минимум такой список: точки, векторы, обобщённые точки, линии, плоскости, идеальные плоскости, кватернионы, трансляторы, моторы, псевдоскаляр (и можно ещё больше сделать, но количество реализаций для бинарных операций растёт как N^2 и особо не разгуляешься)

И вот эти подклассы получаются простыми (вектор - только 3 числа, обобщённая точка - только 4, линия - 6, идеальная плоскость - 3), бинарные операции тоже радикально упрощаются и система типов языка программирования начинает помогать. А геометрическая основа в виде мультиветкора помогает в том, что все эти классы согласованы друг с другом и ведут себя как мультиветкоры, у которых часть полей нули.

Например, sandwich продукт транслятора и вектора упрощается до трёх сложений и трёх умножений на 0.5

Если явно написать типы и сказать что а б с это точки, то более-менее очевидно что а ^ б это линия и а ^ б ^ с это плоскость. Если вместо этого использовать просто "мультивектор", для всего ,то все эти предположения приходится держать в уме и вдобавок из-за ошибок округления в цепочках вычислений могут вылазить не-нулевые маленькие значения там, где должен быть ноль.

Либо, как вариант, надо брать мультивектор, но в качестве полей подставлять не числа, а символьные выражения, и потом для результата делать "упрощения", что тоже не просто.

Можно, но ничто не запретит максу увидеть что вместо текста передаётся что-то странное и заблочить/ограничить.
Мб прокатит какая-нибудь фигня со стеганографией - например, отправкой картинок с мемами и запрятыванием инфы в каких-то битах. Но мне кажется лучшее что можно сделать - не играть с мошенником в карты - сервер принадлежит понятно кому и в любой момент правила игры могут поменяться в одностороннем порядке.

Очень круто! Я на такие низкоуровневые штуки смотрел как тёмную магию, а оказывается не так уж и сложно.

Информация

В рейтинге
Не участвует
Откуда
Белград, Сербия
Зарегистрирован
Активность

Специализация

Десктоп разработчик, ML разработчик
Kotlin
Scala
Java
Python
Нейронные сети
Алгоритмы и структуры данных
Разработка под Android
OpenGL