Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
109 - Telegram Web
Telegram Web
This media is not supported in your browser
VIEW IN TELEGRAM
🤣5
Миша пишет код
Video message
TLDR:
Сделал песню, у которой звуковая волна имеет форму круга (киви)

(И она даже звучит)

#сделал
👍5🤯3🔥2
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 встроен)
👍2🔥2
Что выведет код?
(Пользуюсь вот новым lazy nvim, выглядит стилево)

На всякий случай напомню:

1. Значения unsigned short - [0, 65535]
2. Переполнение беззнаковых типов - разрешенное поведение (не ведет к UB)
🤔2
👆 (45000*50000) % 65536 очепятка произошла
Миша пишет код
Что выведел код выше?
Правильный ответ: 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
Узнал вчера, что существует очень известный мемес - Fizzbuzz enterprise edition.

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

В чем идея?

Изначально FizzBuzz - детская игра, в которой надо по очереди называть числа, начиная с 1. Если число делится на 3, то говорить вместо этого числа Fizz, если делится на 5, то Buzz, а если и на то и на другое, то FizzBuzz, иначе само число.

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

Приключение на 20 минут Задачка на 10 строк.

Но..!
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 - отдельная сказка
🔥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🤣2👍1🔥1
Что за болезнь?

(все пытаюсь побить рекорд скорости того чувака)
🫡6👍1
Помните, был такой Brainfuck?

Так вот оказывается, что 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
Набрался мотивации и расписал конспект по тому, как работает malloc и oom-killer.

Даже запарился и нарисовал ASCII таблички)
🔥5👍4
Агрессия какая-то и зубы скрипят

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

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

Иииии

Пришла мазда и все удалила.

И главное причины-то какие:

- 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/
🤬71😱1
Спустя 500 лет после анонса посмотрел кто такой этот ваш Quest 3.

Хочется теперь все бросить и идти разрабатывать AR. Если приложенные видосы хотя бы наполовину реальные, то у меня просто нет слов. Одного видео с порталом вообще достаточно, чтобы продать мне Quest. Apple Vision Pro даже рядом не стоит.

Уже сразу миллиард идей, как его использовать, приходит на ум:

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

(ну первые идеи тупые, но за ними где-то и нормальные прячутся)

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

Буду следить за всякими хаками от энтузиастов, надеюсь, их не будут банить и можно будет подсмотреть код.

Еще коммент с записи презентации понравился, тоже прикладываю.
👍5😱1
2025/07/09 10:54:42
Back to Top
HTML Embed Code: