Школьник не может втихаря самостоятельно повскрывать трупы людей и обучаться анатомии и хирургии на дому,
Кстати, я смотрел некоторые анатомические демки в VR. Вне всяких сомнений, в недалеком будущем это будет обязательным этапом перед практикой. Это касается и множества других профессий/занятий.
что к ним должен приходить человек, который уже самоучка и пару лет пописал программы
А с VR придет такой вундер-киндер-сюрприз, и расскажет, что в игре "VR симулятор: Клиника 2033" прошел все уровни на HARD+ и все аддоны перепрошел по десять раз. :) И хочет учиться на хирурга.
Оххх. Классный пример попинать ООП. :) Типичные проблемы oven.Insert(pizza) или pizza.ПолезайВ(oven)
И забавные абстракции pizza.Boxed = box.PutIn(pizza) -- т.е. внутри пиццы теперь у нас будет лежать еще и упакованная пицца. :) А потом еще и .Boxed , и Sliced и .Ready... оййоой....
; условный лиспоподобный псевдокод без синтаксиса отступов
; для базовой ситуации, где одна печь
defn produce-pizza [order]
; включаем нагрев печки
oven/start-heating our-pizza-cooking-temperature ; берем нашу стандартную Т
; "создаем" новую пиццу
let [pizza (create-new-pizza order "Mozarella")] ; я указал как в примере
; ожидаем полного нагрева
oven/wait-for-temperature our-pizza-cooking-temperature
; .......
; а дальше конвеер операций c pizza
(-> pizza
(add-toping (get order :kind))
(oven/bake our-pizza-cooking-time)
put-in-a-box
(slice (get order :size))
close-the-box)
; Нам же важен порядок манипуляций?
; Значит вполне логично выразить это в последовательности операций
; Каждая следущая работает с результатом предыдущей
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ну и локальные функции для работы с pizza:
defn add-toping [pizza kind] ...
defn slice [pizza size] ...
defn put-in-a-box [pizza] ...
defn close-the-box [pizza] ...
А если у нас печей много, то должно быть что-то вроде такого, т.е. операции в контексте печи с этим ID:
def cooking-params {:temp 221, :time 20}
......
defn produce-pizza [order]
with-open [current-oven (oven/find-free-oven)]
; передаем команду "подготовить и начать нагрев до температуры X"
(oven/prepare current-oven (get cooking-params :temp))
; внутри with-open для того, чтобы уже пошел нагрев, пока мы начинаем делать пиццу :)
let [pizza-template (create-new-pizza order "Mozarella")]
(oven/wait-for-temperature (get cooking-params :temp))
(-> pizza
(add-toping (get order :kind))
(oven/bake current-oven (get cooking-params :time))
put-in-a-box
(slice (get order :number-of-slices))
close-the-box)
В этом, на мой взгляд, такой код не сломает мозги непонятными метаниями между лишними абстракциями.
Или вот даже в такую сторону можно еще продвинуться:
Я только-только начал использовать clojure для переписывания части своих python модулей в одном проекте. Разбираюсь с языком по ходу дела, так что даже не все еще конструкции знаю.
Но, глядя на код в примере, не могу не отметить, что этот код пугающий. :) Как можно не запутаться в этой сложности? Я вот тут "на глаз" подправил структуру ветвлений (и заодно убрал комментарии, которые тут были только для статьи). В строке c db/get-user hash-map тоже свернул в строку -- в угоду читабельности всего этого длинного ветвящегося кода. Для return-errors изменил на сокращенный вариант объявления анонимной функции. Для такого вида и параметры можно в строку тогда размещать, но тут уже кому-как нравится.
В таком вот виде лично я могу код читать и понимать. Такое умещается в часть экрана. И четко видно все вложенности по уровням отступов, когда они идут рядом.
Может за счет какого-то редактора можно нормально работать с кодом из примера, я не знаю. :) Но у меня его читать не получается, пока не переформатируешь. Мозг ломается от перескакиваний туда-сюда.
P.S. Жаль, что тут нет подсветки синтаксиса Clojure. Без этого не очень корректно/наглядно показывает.
А я чуть по другой схеме делал. За какое-то время у меня накапливается простой список новых слов, которых я не знаю. В отдельной запиненной вкладке. Затем я подаю просто список слов с мощным таким длинным ПРОМПТом chatGPT.
На выходе он дает CSV файл, который можно импортировать в ANKI (путем апдейта любого deck-а). Там с "лицевой стороны" идет английское описание слова (выбранное chatGPT без наличия этого слова в описании), а на "обратной" -- само слово, транскрипция, примеры использования в словосочетаниях (chatGPT выбирает максимально-частотные варианты использования слова), примеры простых предложений с этим словом.
Дополнительно еще выдает специальный блок prompt-описания слова для построения изображения с помощью StableDiffusion. Правда, я не стал это использовать. Хотя провозился долго с этим, ведь не так просто универсально сформулировать универсальную задачу визуального описания объекта/понятия/абстракции.
Качество "человечности" синтезатора -- шикарное! :)
Добавлю немножко фидбека. Заметил странности с вопросительными предложениями. "Агент, у вас все еще есть портфель?" -- вообще игнорирует знак вопроса. А тестах с вопросами "Как вы себя чувствуете? " и "Хорошо?" через ssml_text появляются жесткие щелчки в конце, если они в таком формате:
ssml_sample = """
<speak>
<s>Как вы себя чувствуете?</s>
<s>Хорошо?</s>
<s>Вот и отлично</s>
</speak>
"""
Если убрать "<s>Вот и отлично</s>", то предыдущий вопрос "Хорошо?" уже читается как утверждение.
Все не так страшно. Большие LLM стали не только мечом, но щитом. Чем быстрее интернет начнет наполняться мусором, тем быстрее люди начнут пользоваться системами вроде chatGPT для получения ответов на свои вопросы. А эти LLM-ки все больше будут совершенствовать факт-чекинг и прочее.
Параллельно массовый пользователь продолжает все активней искать ответы на свои вопросы в YouTube, а не на неизвестных сайтах.
Представьте себе колоду из 52 карт . Загадайте любую, я дам вам пару секунд. Дайте угадать. Ваша карта: туз червей.
Не, я загадал RTX 4090. Там 24 гига. И LLM-ки лучше уже влезут, и SD можно локально нормально обучать. И в Instant NERF mesh-и покрупнее можно сохранять.
Будем надеяться, что проект найдет поддержку. :) Однозначно это очень удобная обертка. Насколько ж адекватней выглядит такой код для получения списка случайных фреймов. Без всяких этих отдельных set, read:
# читабельно
cap = cv3.VideoCapture(project_video_path)
total_frames = cap.frame_cnt
frame_indices = random.sample(range(total_frames), 10)
frames = [cap[i] for i in frame_indices]
# ну или еще более компактно, если кому-то так нравится
cap = cv3.VideoCapture(project_video_path)
frames = [cap[i] for i in random.sample(range(cap.frame_cnt), 10)]
# а теперь сравните с этой манной кашей
cap = cv2.VideoCapture(project_video_path)
total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
frame_indices = random.sample(range(total_frames), 10)
frames = []
for i in frame_indices:
cap.set(cv2.CAP_PROP_POS_FRAMES, i)
ret, frame = cap.read()
frames.append(frame)
Да ладно? Часто слышу такие изречения, от людей, которые выживают за счёт помощи других.
Все это уже было доказано в научной работе от 1969 года (Владимир Иосифович Раутбарт в соавторстве с Эдуардом Успенским). Ссылку на работу как раз вот выше дали.
Это уже, кстати, недоработка автора канала, который настраивал эти рекомендации на таймлайне в Youtube Studio. Если планируешь такую вставку в конце, то надо продлить ролик хотя бы черным экраном на ХХ секунд, чтобы красиво выдать связанные ролики. Можно даже аудио подложку там сделать другую, чтобы воспринималось все более гармонично. Например: https://www.youtube.com/watch?v=8ch7mPz6GUU
Но, да, мог бы Гугл и сам сделать возможность таких вставок без искажения оригинальных видео. Прямо в студии.
Поддерживаю. Видел идеальный пример -- реклама в футбольной трансляции. Ничего не прерывается, футбольная трансляция немного масштабируется (уменьшается), а на новых областях экрана показывается реклама. Мало того, что не прерывает ничего, так еще и реально можешь обратить внимание на рекламу, если в трансляции не происходит ничего "напряженного" в данную секунду.
Тренажер процесса приготовления препарата из бактерий и метод окраски
Было бы любопытно, да. :)
Вообще, на мой взгляд, самые эффективные сценарии для обучения в VR прямо сейчас -- нештатные ситуации, аварии. Вот это важнейшая тема для реализации. Например, из самого массового -- уроки контр-аварийного вождения.
Но вот парадокс. С ближайшим внедрением AI во многие сферы жизни более ценными навыками "кожаных мешков" будут как раз моторные, которые все еще будут слишком сложны для роботов (по цене реализации).
Но тренировать моторные навыки с помощью VR на текущем железе пока никак (если нужно оттачивать навыки, например, для игры в футбол). Существующие неточности/погрешности в схеме действие -> визуальный контроль результата просто будут "размазывать" нашу нейронку. Разве что, если пробовать что-то сложное с нуля в VR, а потом в реальности файн-тюнить ее уже. :)
Кстати, я смотрел некоторые анатомические демки в VR. Вне всяких сомнений, в недалеком будущем это будет обязательным этапом перед практикой. Это касается и множества других профессий/занятий.
А с VR придет такой вундер-киндер-сюрприз, и расскажет, что в игре "VR симулятор: Клиника 2033" прошел все уровни на HARD+ и все аддоны перепрошел по десять раз. :) И хочет учиться на хирурга.
Оххх. Классный пример попинать ООП. :) Типичные проблемы
oven.Insert(pizza) или pizza.ПолезайВ(oven)И забавные абстракции
pizza.Boxed = box.PutIn(pizza) -- т.е. внутри пиццы теперь у нас будет лежать еще и упакованная пицца. :) А потом еще и .Boxed , и Sliced и .Ready... оййоой....А если у нас печей много, то должно быть что-то вроде такого, т.е. операции в контексте печи с этим ID:
В этом, на мой взгляд, такой код не сломает мозги непонятными метаниями между лишними абстракциями.
Или вот даже в такую сторону можно еще продвинуться:
Я только-только начал использовать clojure для переписывания части своих python модулей в одном проекте. Разбираюсь с языком по ходу дела, так что даже не все еще конструкции знаю.
Но, глядя на код в примере, не могу не отметить, что этот код пугающий. :) Как можно не запутаться в этой сложности? Я вот тут "на глаз" подправил структуру ветвлений (и заодно убрал комментарии, которые тут были только для статьи). В строке c db/get-user hash-map тоже свернул в строку -- в угоду читабельности всего этого длинного ветвящегося кода. Для return-errors изменил на сокращенный вариант объявления анонимной функции. Для такого вида и параметры можно в строку тогда размещать, но тут уже кому-как нравится.
В таком вот виде лично я могу код читать и понимать. Такое умещается в часть экрана. И четко видно все вложенности по уровням отступов, когда они идут рядом.
Может за счет какого-то редактора можно нормально работать с кодом из примера, я не знаю. :) Но у меня его читать не получается, пока не переформатируешь. Мозг ломается от перескакиваний туда-сюда.
P.S. Жаль, что тут нет подсветки синтаксиса Clojure. Без этого не очень корректно/наглядно показывает.
А я чуть по другой схеме делал. За какое-то время у меня накапливается простой список новых слов, которых я не знаю. В отдельной запиненной вкладке. Затем я подаю просто список слов с мощным таким длинным ПРОМПТом chatGPT.
На выходе он дает CSV файл, который можно импортировать в ANKI (путем апдейта любого deck-а). Там с "лицевой стороны" идет английское описание слова (выбранное chatGPT без наличия этого слова в описании), а на "обратной" -- само слово, транскрипция, примеры использования в словосочетаниях (chatGPT выбирает максимально-частотные варианты использования слова), примеры простых предложений с этим словом.
Дополнительно еще выдает специальный блок prompt-описания слова для построения изображения с помощью StableDiffusion. Правда, я не стал это использовать. Хотя провозился долго с этим, ведь не так просто универсально сформулировать универсальную задачу визуального описания объекта/понятия/абстракции.
Очень странно, что ни слова нет про NIM (язык "счастья") в контексте такой статьи. Можно сделать вывод, что автор его упустил из виду. :)
Качество "человечности" синтезатора -- шикарное! :)
Добавлю немножко фидбека. Заметил странности с вопросительными предложениями. "Агент, у вас все еще есть портфель?" -- вообще игнорирует знак вопроса. А тестах с вопросами "Как вы себя чувствуете? " и "Хорошо?" через ssml_text появляются жесткие щелчки в конце, если они в таком формате:
ssml_sample = """<speak><s>Как вы себя чувствуете?</s><s>Хорошо?</s><s>Вот и отлично</s></speak>"""Если убрать "
<s>Вот и отлично</s>",то предыдущий вопрос "Хорошо?" уже читается как утверждение.Так нет же. Тем быстрее станет НЕ ВЫГОДНО откладывать отходы слоями на поверхности. Вот и перестанут их там "накладывать".
Все не так страшно. Большие LLM стали не только мечом, но щитом. Чем быстрее интернет начнет наполняться мусором, тем быстрее люди начнут пользоваться системами вроде chatGPT для получения ответов на свои вопросы. А эти LLM-ки все больше будут совершенствовать факт-чекинг и прочее.
Параллельно массовый пользователь продолжает все активней искать ответы на свои вопросы в YouTube, а не на неизвестных сайтах.
Не, я загадал RTX 4090. Там 24 гига. И LLM-ки лучше уже влезут, и SD можно локально нормально обучать. И в Instant NERF mesh-и покрупнее можно сохранять.
Будем надеяться, что проект найдет поддержку. :) Однозначно это очень удобная обертка. Насколько ж адекватней выглядит такой код для получения списка случайных фреймов. Без всяких этих отдельных set, read:
Как раз наоборот же. Сначала надо заинтересовать, показать "мотивационную часть" (примеры кода), а потом уже рассказывать о том, как устанавливать.
Я для переключения капс-локом написал на Nim вот такую микро-утилитку - https://github.com/KMiNT21/minimal-caps-lock-lang-switcher/blob/master/caps_lock_lang_switcher.nim
Можешь добавить туда еще несколько строк и для обработки F9 и F10.
Вот и кто в то время знал, что интернет изменится АЖ ТАК? :)
Забавно было пройтись по комментам. :)
Все это уже было доказано в научной работе от 1969 года (Владимир Иосифович Раутбарт в соавторстве с Эдуардом Успенским). Ссылку на работу как раз вот выше дали.
А в реальности это не работает. :)
Относись к другим так, чтобы они относились к тебе так, как ты хочешь. :)
Это уже, кстати, недоработка автора канала, который настраивал эти рекомендации на таймлайне в Youtube Studio. Если планируешь такую вставку в конце, то надо продлить ролик хотя бы черным экраном на ХХ секунд, чтобы красиво выдать связанные ролики. Можно даже аудио подложку там сделать другую, чтобы воспринималось все более гармонично. Например: https://www.youtube.com/watch?v=8ch7mPz6GUU
Но, да, мог бы Гугл и сам сделать возможность таких вставок без искажения оригинальных видео. Прямо в студии.
Поддерживаю. Видел идеальный пример -- реклама в футбольной трансляции. Ничего не прерывается, футбольная трансляция немного масштабируется (уменьшается), а на новых областях экрана показывается реклама. Мало того, что не прерывает ничего, так еще и реально можешь обратить внимание на рекламу, если в трансляции не происходит ничего "напряженного" в данную секунду.
Было бы любопытно, да. :)
Вообще, на мой взгляд, самые эффективные сценарии для обучения в VR прямо сейчас -- нештатные ситуации, аварии. Вот это важнейшая тема для реализации. Например, из самого массового -- уроки контр-аварийного вождения.
Но вот парадокс. С ближайшим внедрением AI во многие сферы жизни более ценными навыками "кожаных мешков" будут как раз моторные, которые все еще будут слишком сложны для роботов (по цене реализации).
Но тренировать моторные навыки с помощью VR на текущем железе пока никак (если нужно оттачивать навыки, например, для игры в футбол). Существующие неточности/погрешности в схеме действие -> визуальный контроль результата просто будут "размазывать" нашу нейронку. Разве что, если пробовать что-то сложное с нуля в VR, а потом в реальности файн-тюнить ее уже. :)
"Изучая мед, нельзя стать пчелой"
(с) Лао Кармакяо