This media is not supported in your browser
VIEW IN TELEGRAM
🤣5
This media is not supported in your browser
VIEW IN TELEGRAM
Применил секретную технику на паре сегодня))
Прикольно, конечно, выглядит, но я потом пересмотрел видео и концентрироваться еще тяжелее стало (взгляд влево перевести невозможно)
Поэтому хорошо, что ненадолго включал
Но атмофсеру разрядил и то неплохо ☝️😔
Прикольно, конечно, выглядит, но я потом пересмотрел видео и концентрироваться еще тяжелее стало (взгляд влево перевести невозможно)
Поэтому хорошо, что ненадолго включал
Но атмофсеру разрядил и то неплохо ☝️😔
👍12😁9🤩5
Наткнулся на Lazy Nvim (зацепило название) - какой-то космический корабль, конечно)
Я до этого когда-то давно пробовал nvim, но он мне не понравился. Он показался каким-то тяжелым. Похожее ощущение производят все ide джетбрейнса - прям чувствуешь как ему сложно работать и что каждое нажатие на кнопку запускает какой-то сложнейший процесс. Как раз за отсутствие такого чувства мне и нравится вим.
Но, видимо, это было какое-то неправильное впечатление. Сейчас попробовал lazy nvim (пришлось и nvim поставить) и он супербыстрый оказался. Пока не успел что-то поделать с ним полезное, но впечатление крайне приятное
Еще меня подкупило, что там сразу был установлен мой любимый плагин (которым я не пользуюсь, но очень люблю его идею) - easymotion. Плагин позволяет быстро перемещатсья по файлу. Для этого надо глазами увидеть слово, куда хочешь переместиться и начать его писать. При поиске на месте всех подходящих слов покажутся уникальные буквы. И при нажатии на нужную букву сразу переходишь к соответсвующему слову.
И еще мне понравилось, что там есть предупреждения сбоку, когда что-то не то делаешь. В виме было бы тоже приятно такие иметь. А то не заметил, что зажал CapsLock, и на минуту выпадаешь из жизни, думая, что сошел с ума из-за того, что на привычные кнопки выполняются непривычные действия.
В общем попробую этот ваш nvim, может быть мне и понравится. Главное не уйти опять с головой в конфиги, а потихоньку разбираться.
PS. туда еще copilot встроен)
Я до этого когда-то давно пробовал nvim, но он мне не понравился. Он показался каким-то тяжелым. Похожее ощущение производят все ide джетбрейнса - прям чувствуешь как ему сложно работать и что каждое нажатие на кнопку запускает какой-то сложнейший процесс. Как раз за отсутствие такого чувства мне и нравится вим.
Но, видимо, это было какое-то неправильное впечатление. Сейчас попробовал lazy nvim (пришлось и nvim поставить) и он супербыстрый оказался. Пока не успел что-то поделать с ним полезное, но впечатление крайне приятное
Еще меня подкупило, что там сразу был установлен мой любимый плагин (которым я не пользуюсь, но очень люблю его идею) - easymotion. Плагин позволяет быстро перемещатсья по файлу. Для этого надо глазами увидеть слово, куда хочешь переместиться и начать его писать. При поиске на месте всех подходящих слов покажутся уникальные буквы. И при нажатии на нужную букву сразу переходишь к соответсвующему слову.
И еще мне понравилось, что там есть предупреждения сбоку, когда что-то не то делаешь. В виме было бы тоже приятно такие иметь. А то не заметил, что зажал CapsLock, и на минуту выпадаешь из жизни, думая, что сошел с ума из-за того, что на привычные кнопки выполняются непривычные действия.
В общем попробую этот ваш nvim, может быть мне и понравится. Главное не уйти опять с головой в конфиги, а потихоньку разбираться.
PS. туда еще copilot встроен)
👍2🔥2
Что выведел код выше?
Anonymous Quiz
65%
18048 то есть (45000 + 50000) % 65536
20%
2250000000
15%
You stink (UB)
Миша пишет код
Что выведел код выше?
Правильный ответ: UB
(А значит может вывестись что угодно, даже "you stink" из ответа)
Причем не просто какое-то тайное неопределенное поведение, а переполнение
Но в чем же дело? У нас же тут даже нет нигде интов
Весь прикол заключается в integer promotion. При операциях с типами, которые меньше инта и значения которых могут быть представлены интом, происходит promotion типа до int и операция выполняется в целых знаковых числах. А после этого происходит coercion обратно в исходный тип.
В нашем случае unsigned short - 2 байта, int - 4 байта. И значения [0, 65535] спокойно помещаются в int. Поэтому происходит promotion и данное умножение происходит в целых знаковых числах.
А 45'000 * 50'000 = 2'250'000'000 > INT_MAX = 2'147'483'647, поэтому происходит переполнения знакового числа, что является неопределенным поведением или UB.
Как не ошибиться?
В данном случае нам может помочь UB санитайзер:
Выдаст ошибку при запуске:
Больше по теме в статье
(А значит может вывестись что угодно, даже "you stink" из ответа)
Причем не просто какое-то тайное неопределенное поведение, а переполнение
signed int
, будь он неладен.Но в чем же дело? У нас же тут даже нет нигде интов
Весь прикол заключается в integer promotion. При операциях с типами, которые меньше инта и значения которых могут быть представлены интом, происходит promotion типа до int и операция выполняется в целых знаковых числах. А после этого происходит coercion обратно в исходный тип.
В нашем случае unsigned short - 2 байта, int - 4 байта. И значения [0, 65535] спокойно помещаются в int. Поэтому происходит promotion и данное умножение происходит в целых знаковых числах.
А 45'000 * 50'000 = 2'250'000'000 > INT_MAX = 2'147'483'647, поэтому происходит переполнения знакового числа, что является неопределенным поведением или UB.
Как не ошибиться?
В данном случае нам может помочь UB санитайзер:
clang -fsanitize=undefined code.c && ./a.out
Выдаст ошибку при запуске:
runtime error: signed integer overflow: 45000 * 50000 cannot be represented in type 'int'
.Больше по теме в статье
👍4🔥1
Миша пишет код
Мини рекап, чтобы не смотреть кружок: 1. Напрограммировал чит-клаву (там еще примерно миллион всего надо улучшить) и теперь можно нажав одну кнопку написать код, выводящий программу Hello world 2. Если заранее предложение из monkeytype вбить в клаву и дать…
Я своим 7650 wpm радовался, а тут чел просто скрипт на питоне написал и почти в 3 раза больше выбил.....
ну ладно, вызов принят😓
ну ладно, вызов принят
Please open Telegram to view this post
VIEW IN TELEGRAM
😱5🗿2
Узнал вчера, что существует очень известный мемес -
Лазил по коду проекта и боже мой это наверное самая прекрасная вещь, которую я видел за последнее время.
В чем идея?
Изначально FizzBuzz - детская игра, в которой надо по очереди называть числа, начиная с 1. Если число делится на 3, то говорить вместо этого числа Fizz, если делится на 5, то Buzz, а если и на то и на другое, то FizzBuzz, иначе само число.
Дальше эта детская игра превратилась в задачку с собеседований, которая должна была отсеять людей, не умеющих программировать. В новой формулировке нужно было к числам от 1 до 100 применить описанные выше правила.
Приключение на 20 минут Задачка на 10 строк.
Но..!
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition/tree/uinverse
Обожаю, когда люди запариваются на ровном месте и делают какую-нибудь бесполезную, но прекрасную вещь. Так и тут. Ребята запарились и сделали Enterprise версию этой задачи.
На джаве, с ддд и Мартином Фаулером, спрятанным в одной из папок.
Штуки, которые мне больше всего понравились:
1. У самурая нет цели, есть только путь (и очень длинный):
2. Там даже есть спринг
3. Issues - отдельная сказка
Fizzbuzz enterprise edition
. Лазил по коду проекта и боже мой это наверное самая прекрасная вещь, которую я видел за последнее время.
В чем идея?
Изначально FizzBuzz - детская игра, в которой надо по очереди называть числа, начиная с 1. Если число делится на 3, то говорить вместо этого числа Fizz, если делится на 5, то Buzz, а если и на то и на другое, то FizzBuzz, иначе само число.
Дальше эта детская игра превратилась в задачку с собеседований, которая должна была отсеять людей, не умеющих программировать. В новой формулировке нужно было к числам от 1 до 100 применить описанные выше правила.
Но..!
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition/tree/uinverse
Обожаю, когда люди запариваются на ровном месте и делают какую-нибудь бесполезную, но прекрасную вещь. Так и тут. Ребята запарились и сделали Enterprise версию этой задачи.
На джаве, с ддд и Мартином Фаулером, спрятанным в одной из папок.
Штуки, которые мне больше всего понравились:
1. У самурая нет цели, есть только путь (и очень длинный):
src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/math/arithmetics/NumberIsMultipleOfAnotherNumberVerifier.java
2. Там даже есть спринг
3. Issues - отдельная сказка
GitHub
GitHub - EnterpriseQualityCoding/FizzBuzzEnterpriseEdition: FizzBuzz Enterprise Edition is a no-nonsense implementation of FizzBuzz…
FizzBuzz Enterprise Edition is a no-nonsense implementation of FizzBuzz made by serious businessmen for serious business purposes. - EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
🔥2👍1
Насколько компьютеры быстры в понятных человеку величинах?
Сколько времени нужно человеку, чтобы сложить 2 числа? Ну пусть 1 сек.
А сколько компьютеру? 1 цикл. Где-то 0.3 ns.
Э - экстраполируем!
Умножить 2 числа
4 цикла - 4 секунды для человека (дальше всегда под временем будет подразумеваться время для человека)
Поделить 2 числа
20-100 циклов - около 1 минуты для человека
Сходить в кэш:
L1 - 4 цикла - 4 сек - чекнуть что-то быстро в телефоне
L2 - 12 циклов - 12 сек - проверить в книжке
L3 - 40 циклов - 40 сек - позвонить другу и спросить
Дальше просто аналогии:
Сходить в основную память - 2-3 мин - можно успеть сбегать в киоск, купить книгу и в ней прочитать
Сходить в диск (NVMe ssd)
1-4 дня - можно разобраться в теме и придумать ответ самому
Пингануть гугл
Полтора месяца - можно ненадолго уйти в горы, постигнуть вселенную и получить ответ от нее
Сварщик я правда ненастоящий и идею на ютубе нашел. Очень советую глянуть.
Кстати, там автор видео Matt Godbolt. Как раз тот самый, который является автором проекта https://godbolt.org/. Оказывается, это просто фамилия и название сайта не связано с богом компиляторов 😅
Сколько времени нужно человеку, чтобы сложить 2 числа? Ну пусть 1 сек.
А сколько компьютеру? 1 цикл. Где-то 0.3 ns.
Э - экстраполируем!
Умножить 2 числа
4 цикла - 4 секунды для человека (дальше всегда под временем будет подразумеваться время для человека)
Поделить 2 числа
20-100 циклов - около 1 минуты для человека
Сходить в кэш:
L1 - 4 цикла - 4 сек - чекнуть что-то быстро в телефоне
L2 - 12 циклов - 12 сек - проверить в книжке
L3 - 40 циклов - 40 сек - позвонить другу и спросить
Дальше просто аналогии:
Сходить в основную память - 2-3 мин - можно успеть сбегать в киоск, купить книгу и в ней прочитать
Сходить в диск (NVMe ssd)
1-4 дня - можно разобраться в теме и придумать ответ самому
Пингануть гугл
Полтора месяца - можно ненадолго уйти в горы, постигнуть вселенную и получить ответ от нее
Сварщик я правда ненастоящий и идею на ютубе нашел. Очень советую глянуть.
Кстати, там автор видео Matt Godbolt. Как раз тот самый, который является автором проекта https://godbolt.org/. Оказывается, это просто фамилия и название сайта не связано с богом компиляторов 😅
😱2🤣2👍1🔥1
Помните, был такой Brainfuck?
Так вот оказывается, что
На самом деле это не совсем честное утверждение, так как в нем нет цикла. Но
уже получается тьюринг полным.
Идея принадлежит победителю контеста IOCCC 2020, на котором он сделал крестики нолики используя как раз хак с printf. Назвал он этот подход Printf Oriented Programming.
Если вы не понимаете, как это работает, то я тоже. Но базовый концепт такой.
Все дело в спецификаторе
Ну а дальше просто (ну насколько это вообще можно назвать простым), так как промежуточный результат сохранить можно, то можно и объединять логические элементы в более сложные (как раз как и работают вычислительные машины).
Казалось бы, прикольно, но и при чем тут Brainfuck? Вместо ответа приведу просто следующую строку.
Пример printf реализующего OR:
В результате этого printf в
В общем жестко, но крайне прикольно. ioccc - кладезь запарных идей.
P.S. кстати, итоговая форматная строка
Так вот оказывается, что
printf
и его параметры являются тьюринг полным языком. А это значит, что подобрав аргументы верно, можно реализовать любую вычислимую функцию. Ну или простыми словами - напрограммировать что угодно.На самом деле это не совсем честное утверждение, так как в нем нет цикла. Но
while(1) printf(.....)
уже получается тьюринг полным.
Идея принадлежит победителю контеста IOCCC 2020, на котором он сделал крестики нолики используя как раз хак с printf. Назвал он этот подход Printf Oriented Programming.
Если вы не понимаете, как это работает, то я тоже. Но базовый концепт такой.
Все дело в спецификаторе
%n
, из-за которого printf
кладет в соответствующий указатель количество напечатанных на данный момент символов. Что как раз и удается заабъюзить.%n
позволяет сохранять результат промежуточных вычислений и используя его можно реализовать некоторые булевы операции (на самом деле все). В статье автор приводит пример OR
и NOT
. А эта пара операций является функционально полной - то есть с их помощью можно сделать булеву формулу, удовлетворяющую любой таблице истинности.Ну а дальше просто (ну насколько это вообще можно назвать простым), так как промежуточный результат сохранить можно, то можно и объединять логические элементы в более сложные (как раз как и работают вычислительные машины).
Казалось бы, прикольно, но и при чем тут Brainfuck? Вместо ответа приведу просто следующую строку.
Пример printf реализующего OR:
printf("%1$s%2$s%3$hhn", A, B, C)
В результате этого printf в
C
будет лежать A OR B
. В общем жестко, но крайне прикольно. ioccc - кладезь запарных идей.
P.S. кстати, итоговая форматная строка
printf
для крестиков ноликов после раскрытия всех макросов получается больше 100к символов в длину.🔥5👍3
Набрался мотивации и расписал конспект по тому, как работает
Даже запарился и нарисовал ASCII таблички)
malloc
и oom-killer.Даже запарился и нарисовал ASCII таблички)
🔥5👍4
Агрессия какая-то и зубы скрипят
Дядька купил себе мазду и сделал к ней всякие приложухи: уведомление на телефон при открытии машины, автоматическое управление зарядкой, которая учитывает динамические цены на электричество и всякие другие приколы.
Выложил он эти приложухи на гитхаб, чтобы другие могли тоже пользоваться.
Иииии
Пришла мазда и все удалила.
И главное причины-то какие:
Больше всего, конечно, последний пункт поражает...
Все, удаляйте линукс посоны, там эпл и майкрософт уже разработали свои приложухи с похожим функционалом.
Причем мне как человеку, у которого уже банили репозиторий, вдвойне больно читать такие новости...
https://arstechnica.com/cars/2023/10/mazdas-dmca-takedown-kills-a-hobbyists-smart-car-api-tool/
Дядька купил себе мазду и сделал к ней всякие приложухи: уведомление на телефон при открытии машины, автоматическое управление зарядкой, которая учитывает динамические цены на электричество и всякие другие приколы.
Выложил он эти приложухи на гитхаб, чтобы другие могли тоже пользоваться.
Иииии
Пришла мазда и все удалила.
И главное причины-то какие:
- contains code that "is violating [Mazda's] copyright ownership."
- used "certain Mazda information, including proprietary API information," to "create code and information."
- contained code that "provides functionality same as what is currently" in Mazda's apps posted to the Apple App Store and Google Play Store for Android.
Больше всего, конечно, последний пункт поражает...
Все, удаляйте линукс посоны, там эпл и майкрософт уже разработали свои приложухи с похожим функционалом.
Причем мне как человеку, у которого уже банили репозиторий, вдвойне больно читать такие новости...
https://arstechnica.com/cars/2023/10/mazdas-dmca-takedown-kills-a-hobbyists-smart-car-api-tool/
Ars Technica
Mazda’s DMCA takedown kills a hobbyist’s smart car API tool
Financial risk too great for dev working "in my spare time to help others."
🤬7❤1😱1
Спустя 500 лет после анонса посмотрел кто такой этот ваш Quest 3.
Хочется теперь все бросить и идти разрабатывать AR. Если приложенные видосы хотя бы наполовину реальные, то у меня просто нет слов. Одного видео с порталом вообще достаточно, чтобы продать мне Quest. Apple Vision Pro даже рядом не стоит.
Уже сразу миллиард идей, как его использовать, приходит на ум:
Можно выводить статистику по каким-нибудь словам: мату или паразитам.
Или апдейтнуть покемон го.
Я бы еще табы для гитары хотел выводить, чтобы можно было одновременно и на них и на левую руку смотреть.
(ну первые идеи тупые, но за ними где-то и нормальные прячутся)
Выглядит по удобству как airpods - как будто можно просто весь день ходить и даже не замечать, что что-то носишь.
Буду следить за всякими хаками от энтузиастов, надеюсь, их не будут банить и можно будет подсмотреть код.
Еще коммент с записи презентации понравился, тоже прикладываю.
Хочется теперь все бросить и идти разрабатывать AR. Если приложенные видосы хотя бы наполовину реальные, то у меня просто нет слов. Одного видео с порталом вообще достаточно, чтобы продать мне Quest. Apple Vision Pro даже рядом не стоит.
Уже сразу миллиард идей, как его использовать, приходит на ум:
Можно выводить статистику по каким-нибудь словам: мату или паразитам.
Или апдейтнуть покемон го.
Я бы еще табы для гитары хотел выводить, чтобы можно было одновременно и на них и на левую руку смотреть.
(ну первые идеи тупые, но за ними где-то и нормальные прячутся)
Выглядит по удобству как airpods - как будто можно просто весь день ходить и даже не замечать, что что-то носишь.
Буду следить за всякими хаками от энтузиастов, надеюсь, их не будут банить и можно будет подсмотреть код.
Еще коммент с записи презентации понравился, тоже прикладываю.
👍5😱1