Задать вопрос
  • Как корректно вывести функцию в байтовом виде?

    includedlibrary
    @includedlibrary
    Я не уверен, что можно сделать платформо и компиляторонезависимое решение. Я для своих нужд использовал таблицу символов в ELF файлах (в PE принцип тот же), которую генерирует GCC. Алгоритм был следующий:
    1. Добавляем в скрипт компоновщика символ для хэш-таблицы с именами и размерами функцмй пока что с размером равным нулю, в коде программы обращаемся к этой таблице, как-будто бы она уже заполнена (делаем поиск по имени функции, получаем по нему размер и далее делаем с размером то, что нам нужно).
    2. Компилируем программу.
    3. Пишем другую программу, которая будет смотреть полученный на предыдущем шаге ELF файл, доставать из таблицы символов функции и их размеры, заполнять хэш таблицу и записывать её в отдельный файл.
    4. Пишем новый скрипт компоновщика, в котором вместо символа с нулевым размером, создаём символ с тем же именем с размером и содержимым файла, полученным на предыдущем шаге
    5. Компилируем программу снова с использованием скрипта компоновщика, созданного на предыдущем шаге
    Написано
  • Как использовать строку в качестве названия функции в GoLang?

    includedlibrary
    @includedlibrary
    А что вы хотите сделать в итоге? Самый просто способ - сделать map[string]func() вместо func() подставьте нужную вам сигнатуру. Если у функций может быть разный набор аргументов, можно создать map[string]any, но тогда придётся делать приведение any к нужному типу, отчего весь смысл теряется:

    package main
    
    import "fmt"
    
    func read() {
    	fmt.Println("read")
    }
    
    func write() {
    	fmt.Println("write")
    }
    
    var funcs = map[string]func(){
    	"read":  read,
    	"write": write,
    }
    
    func main() {
    	funcs["read"]()
    	funcs["write"]()
    }
    Написано
  • Зачем нужен Wayland и что нужно чтобы нарисовать пиксель на экране?

    includedlibrary
    @includedlibrary
    Дмитрий, Вы правы. Неверно выразился. Я имел в виду, что в Wayland принято, что каждый менеджер окон реализует данный протокол и, соответственно, является сервером. В среде X11 (тут хоть и возможно более одной реализации, но почти все используют X.org) менеджер не является сервером, он является клиентом X сервера.
    Написано
  • Как скомпилировать win-iconv не имея опыта?

    includedlibrary
    @includedlibrary
    Простой Человек, В arch linux, очевидно нет windows.h, потому что это linux, а не windows. Будет ли проще через студию, я не знаю. Можете попробовать, там как раз есть CMakeLists.txt можно сгенерировать проект для студии
    Написано
  • Зачем нужен Wayland и что нужно чтобы нарисовать пиксель на экране?

    includedlibrary
    @includedlibrary
    Единственная проблема - ваша программа в таком случае не будет корректно работать на большинстве систем, потому что большинство пользователей работает либо под X11, либо под менеджером, который реализует Wayland
    Написано
  • Зачем нужен Wayland и что нужно чтобы нарисовать пиксель на экране?

    includedlibrary
    @includedlibrary
    что разработчикам FireFox не нужно тратить время на GTK и лучше сразу портировать браузер на Wayland.


    GTK - это библиотека для построения GUI, она уже портирована под wayland, соответсвенно, всё что её использует и не завязывается на X11 тоже должно работать под wayland. Firefox уже работает под wayland без использования xwayland, проверено лично.

    Допустим у нас нет GTK и я хочу отрисовать пиксель на экране. Что для этого нужно? Нужен ли для этого Wayland и кукую роль он будет играть?

    X11 - это сервер, который позволяет создавать окна и что-то отрисовывать. Wayland - это только протокол. Вы создаёте оконный менеджер, который обрабатывает запросы по протоколу Wayland, соответсвенно приложения должны эти запросы делать в соответствии с протоколом для создания окон и каких-либо ещё действий с ними. То есть в случае X11 есть одна реализация сервера, в случае с Wayland - тысячи их. Для отрисовки графики вам нужен драйвер видеокарты и программа, которая с ним взаимодействует. То есть вам не нужен ни Wayland, ни X11. Вы можете использовать EGL напрямую
    Написано
  • Как работает get запрос в https?

    includedlibrary
    @includedlibrary
    kedra90, Ну да. Сервер не может узнать, что вы с файлом сделали - скачали и сохранили, скачали и сразу отобразили без сохранения, или скачали и отбросили.
    Написано
  • Как работает get запрос в https?

    includedlibrary
    @includedlibrary
    kedra90, Пользователь запросил index.html. Сервер отдал ему index.html, используемые css и js файлы и картинки сразу, не дожидаясь, пока клиент их запросит
    Написано
  • Как работает get запрос в https?

    includedlibrary
    @includedlibrary
    kedra90, Не обязательно браузера. Но так да, HTTP - это запрос/ответ (хотя в HTTP/2 появилась возможность отдавать то, что ещё не было запрошено).
    Написано
  • Как работает get запрос в https?

    includedlibrary
    @includedlibrary
    с точки зрения сервера получается, что если пользователь смотрит или сохраняет к себе картинку (перетаскивая на пример к себе в папку на комп), то сервер не знает, что делает дальше с этой картинкой юзер? Правильно понимаю ?

    Да. Это очевидно, если подумать о возможности обратного - получается, что на компе/телефоне/умном чайнике/etc. должно стоять ПО, которое следит, что же такое пользователь делает с картинкой/другим файлом. При этом это ПО должно делиться всеми этими сведениями со всеми сайтами. Звучит трудозатратно и бессмысленно. А вообще RTFM
    Написано
  • Как скомпилировать win-iconv не имея опыта?

    includedlibrary
    @includedlibrary
    А запуск make не помогает? Если что, make и gcc под винду можно взять здесь https://github.com/skeeto/w64devkit/releases/
    Написано
  • Как вычисляется цвет пикселя во фрагментном шейдере?

    includedlibrary
    @includedlibrary
    Цикл for выполняется для каждого пикселя. Цета пикселей различаются, потому что есть зависимость цвета от координаты пикселя:

    // uv зависит от текущей координаты
    vec2 uv = (gl_FragCoord.xy - 0.5 * resolution.xy) / resolution.y;
    
    /* Этот цикл выполняется для каждого пикселя */
    for (float i = 0.0; i < 60.0; i += 1) {
        /* ... */
        col += 0.001 / length(uv - vec2(dx + 0.1, dy)); // Есть зависимость от uv, то есть от координаты
    }
    Написано
  • Как настроить CMake на установку пакетов?

    includedlibrary
    @includedlibrary
    Я не плюсовик, конечно, но через CMake обычно никто ничего не ставит. Обычно как раз пишут, мол, установи то-то и то-то, потом уже собирай. Мой опыт основывается только на сборке пакетов из исходников.
    Написано
  • Как сделать графику на fasm?

    includedlibrary
    @includedlibrary
    Например, есть такая статья https://habr.com/ru/companies/neobit/articles/176707. Но вообще странно сейчас думать о графике, нужно сначала основные части ОС написать (планировщик, файловая система, поддержку устройств ввода-вывода, системные программы), а потом уже думать о графике.
    Написано
  • Код на си начинает бесконечный цикл. Что делать?

    includedlibrary
    @includedlibrary
    Ещё стоит заметить, что определение функции внутри другой функции, не определено в стандарте языка
    Написано
  • Для чего тесты пишут?

    includedlibrary
    @includedlibrary
    0x80070005, Сначала проект малый, потом он становится большим. Если он никогда не перестанет быть малым, то тесты можно и не писать, при условии, что вы разрабатываете в соло, а не в команде
    Написано
  • Для чего тесты пишут?

    includedlibrary
    @includedlibrary
    Ну вот допустим мы сделали модальное окно и тест для него. Мы же можем это модальное окно в ручную проверить, без теста


    Можете, но каждый раз добавляя какие-то изменения после этого, вы должны проверить не только новую функциональность, но и старую, чтобы убедиться, что ничего не сломали
    Написано
  • Для чего тесты пишут?

    includedlibrary
    @includedlibrary
    У нас проект на 10к+ строк кода, там и тестов соответствующее количество. Вручную вы все случаи проверить не сможете, потому что каждый раз надо все их помнить и мучительно долго прогонять. Автотесты проходят минут за 7, вручную вы будете их прогонять час. Вот и смысл их использовать появляется
    Написано