• Структурное против ООП программирование
    –2
    Да конечно.
  • Структурное против ООП программирование
    –1
    Ну ладно. Я рассматривал варианты. А почему не нравиться?
  • Поддерживаю драйвер tp-link t4u для linux
    +1
    почему же. вот, теперь в поисковике видно ссылку на эту статью. желательно написать в google «tplink t4u ubuntu 20.04»
  • Поддерживаю драйвер tp-link t4u для linux
    0
    это не работает. пробовал. я полгода назад вроде это скачивал и не работало. хотя может сейчас работает. но проверю потом.
  • Поддерживаю драйвер tp-link t4u для linux
    0
    да не поддерживает. я пробовал ставить. не работает. или не пробовал. а нет, я пробовал только из github ставить. а это нет.
  • Создаём приложение на gtk
    0
    а такое может быть? а в каких случаях?
  • Создаём приложение на gtk
    0
    потому что он выравнивает всё по 4 байта. если он будет делать это по другому, то будет не эффективная работа для получения следующего адреса. поэтому если в структуре все элементы равны 8 байтам, то компилятор врядли будет добавлять в структуру промежуток. всё ведет к эффективности работы. вот посмотрите как компилятор высчитывает следующий адрес в структуре.
    0x0000555555558050 <+71>: lea rdx,[rax*8+0x0]
    0x0000555555558058 <+79>: mov rax,QWORD PTR [rbp-0x118]
    0x000055555555805f <+86>: add rax,rdx

    всё просто и логично. каждый раз умножается на 8 индекс. если бы по вашему компилятор работал по другому, то такого цикла в принципе быть не могло, и тогда он каждый вызов будет писать по порядку. но разве есть такой компилятор?
  • Создаём приложение на gtk
    0
    То есть вы хотите сказать, что компилятор нарошно между вторым и третьим элементом в стурктуре, где все элементы одного размера, вставит область, чтобы потом обращаться к виджету не так
    mov rax, [rax + 8]

    а вот так?
    mov rax, [rax + 10]

    мне слабо вериться что компилятор будет так делать. откуда вы вообще взяли, что компилятор будет в структуре добавлять что-то?
  • Создаём приложение на gtk
    0
    Но вы не инициализируете его нулем, то есть в общем случае значение там может быть любое.

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

    не я имел ввиду использовать по полной возможности ос. например в linux есть dbus, в windows есть реестр. вы можете из gtk в реест записывать данные? я например не знаю как это сделать. да и в принципе я в windows не программирую. немного пописал классические приложухи. вот например я в своем twitch боте сделал функцию такую, что можно audacious плеером управлять через чат. и это благодаря dbus. и то что вы приняли как за совет, я писал что это бы я так сделал. то есть это бы я писал для windows на этом, а для linux на этом.
  • Создаём приложение на gtk
    0
    а как ты к виджетам будешь обращаться? не надоест высчитывать индекс виджета окна? через структуру правильней.
  • Создаём приложение на gtk
    0
    STUBS нужен для того, чтобы в функции set_theme, смотрите. там проверяется на NULL. этот виджет всегда NULL, и это значит что выполнение цикла нужно прекратить. если вы не поняли код, то вот что происходит — здесь по всем виджетам структуры проходит указатель и назначает каждому виджету новое имя для темы оформления.
    	struct widgets **p = ( struct widgets ** ) &w;
    	for ( int i = 0; p[i] != NULL; i++ ) {
    		gtk_widget_set_name ( ( GtkWidget * ) p[i], name );
    	}
    

    насчет dbus. ну я считаю что не нужно ограничивать приложение только из-за того, что в других ос нет dbus. я хочу пользоваться всеми преимуществами ос и правильней будет использовать dbus. потому что этот dbus просто классная штука. а если хотите для windows 10 делать, то лучше использовать WinRT или как она там называется, которая работает на windows 8 и 10. ну это моё мнение. я бы так делал. то есть я бы не стал пытаться сделать gtk приложение нормальное для windows. большинство библиотек скомпилировано для VC, то есть visual studio и было бы логичней для windows писать в Visual Studio не классические приложения, а новые. а в linux я предпочитаю gtk, gio, glib.
  • Создаём приложение на gtk
    0
    Мне не нравиться как в qt нужно подключать чужие библиотеки. там какая то непонятка с лицензией. да и ещё платить большую сумму за пользование qt ( вроде как для коммерческих целей ), это уже слишком. я лучше на gtk попишу. на gtk можно коммерческие создавать и бесплатная лицензия. да и что там. включил vim, создал makefile, указал нужные библиотеки и всё. всё как должно быть. ну это в моем случае. у вас же ситуация полюбому другая и вам виднее что лучше использовать. я ни на что не намекаю как бы.
  • Создаём приложение на gtk
    0
    я указал только некоторые способы, которые делаются с помощью gtk, это же туториал. саму программу я показывать не хочу.
  • Создаём приложение на gtk
    0
    Нет. Vala не пробовал.
  • Systemd: пишем собственные .service и .target
    0
    не подскажите где документацию почитать по этим сервисам? желательно официальную.
  • Изучаем MIPS-ассемблер
    0
    У вас неправильная информация о регистрах. не пойму откуда вы взяли описание. чтобы было понятней что я имею ввиду. регистр fp имеет $30 значение. а у вас это s8 — не порядок.
  • Подготовка SDL2-проекта для запуска на android
    0
    Ну я как помню что если подключить SDL_mixer, то других зависимостей не нужно, но звук вроде будет только wav, про ogg не знаю. Под все платформы собирается само, главное указать архитектуры, но обычно можно взять готовый файл из своего же sdl, где написаны все архитектуры.
  • Подготовка SDL2-проекта для запуска на android
    0
    Мда, я что-то об этом и не подумал. У меня этого в проекте нет, и я забыл об этом. Ну насчёт звука это понятно. Но зачем png? У меня есть утилита, которая переводит в собственный формат изображения png, чтобы рисунки было удобно загружать в игру. Ну в принципе, если посмотреть на то, как у меня сделана настройка Freetype2, можно сделать настройки с аналогичными библиотеками.
  • Использование подобия паттерна наблюдатель на С
    0
    Что-то я не пойму. Вы что издателя делаете как модуль, который например полностью работает с чатом. другой издатель работает полностью с экраном? Или что там может быть в издателе такого, что приходится переписывать каждый раз заново издателя? Не знаю почему вам этот способ кажется правильней. Для меня удобно сделать один раз реализацию и пользоваться ей. указываю любые функции и любые данные.
  • Использование подобия паттерна наблюдатель на С
    0
    Я так понимаю что вам придется писать одну и ту же реализацию для каждого subject1,2,3. а нет универсального способа. чтобы вы например написали один раз реализацию и пользоваться ей, не изменяя и не добавляю каждый раз код для создания нового издателя?
  • Использование подобия паттерна наблюдатель на С
    0
    А если я хочу задать несколько издателей, здесь я вижу реализацию только одного издателя. А в программе возможно понадобиться несколько издателей.
  • Использование подобия паттерна наблюдатель на С
    0
    Да, конечно. Я вообще не очень понимаю, зачем файлами мыслить.

    ну затем что в одном файле у вас реализация например работы c новостями, новые новости например появляются на экране. Потом в другом файле у вас например журналирование данных. в другом файле у вас например работа с чатом. и все надо обработать из файла где происходит парсинг данные. тогда в парсинге данных отправляешь подписчикам новые данные.
  • Использование подобия паттерна наблюдатель на С
    0
    Начнем с того, что ваше решение — не от той задачи. Вы реализовали pub/sub, а не observer.

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

  • Использование подобия паттерна наблюдатель на С
    –2
    Я указываю на недостатки вашего решения, а не языка.

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

    Повторюсь, я не указываю вам, как писать на Си, я говорю, чем ваше решение плохо.

    вы указали на такие ошибки, которые может совершить только человек, который не программирует вообще. в моем случае программист должен задаться вопросом, а где брать издателей, и найдет ответ, что есть специальный хедер файл, где описаны все издатели. только так. а если он лепит в каждом файле новые enum, то что у него в голове твориться я не знаю. вот и что у вас в голове твориться я не знаю, чтобы писать мне о об этом.
  • Использование подобия паттерна наблюдатель на С
    –1
    Зачем? Си я знаю недостаточно хорошо, будут глупые ошибки, а основной смысл подхода никуда не денется.

    Ну вот видите, вы указываете на недостатки языка, и показываете что ваш язык этих недостатков лишен. Чтобы мне указывать как надо на си писать, у вас должен быть уровень повыше моего. А так это просто тупой спор.
  • Использование подобия паттерна наблюдатель на С
    –1
    А почему вы мне показываете как это делается на js? Почему вы сишника учите программировать, если сами показываете код на js. Если хотите показать как надо правильно делать, то пишите на си. То же мне, показывает как это удобно делается на js. Как будто статья про js.
  • Использование подобия паттерна наблюдатель на С
    –5
    ну а event: sell тогда что значит? Это тип? Ну вот видите, ваш код не универсальный. Вы создаете функции с разными event. В моем случае остается только пользоваться готовым решением ( не нужно что-то в коде менять, потому что можно передавать любые данные ). А в вашем подготавливать функции с нужными типами и по сигналу передавать.

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

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

    Завести — удобнее, а пользоваться — нет.

    Как знаете. Вам не удобно пользоваться. Мне удобно. Почему я должен знать что именно вам не удобно пользоваться?

    И как гарантировать, что функции используют один и тот же enum?

    Ну что вы все на компилятор полагаетесь. Смотришь в хедер какой использовать enum и пишешь в функцию. Или у вас не так все происходит. Вы наверное по памяти пишете enum. Наверное еще используете ide, которая вам всячески подсказывает, но вы все равно допускаете ошибки. Единественное что вас спасает, так это что компьютер проверяет вас, что вы не накасячели нигде.
    let subscribe<event> (handler : (event -> unit))

    А что шаблон это не ооп? Вы всего лишь показываете готовые возможности языка для использования издателя и подписчика. В си стандартных средств нет. Нужно писать свою реализацию. Ну вот я и написал.
  • Использование подобия паттерна наблюдатель на С
    –4
    Ну так проблема-то как раз в разработчиках.

    Ну судя по вашему коду, который вы в пример написали с двумя enum, как можно так писать? Заводите отдельный хедер файл с enum, который будет доступен нужным функциям. И используете. Если вы не знаете как правильно писать код, то так и будете ошибаться. Еще насчет enum. А что вы хотите, чтобы названия издателя были как строки, чтобы программа на строки сравнивала типа такого?
    init_publisher ( "trade", sub_trade, NULL );
    init_publisher ( "sell", sub_sell, NULL );
    

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

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

    Как можно ошибиться? Как можно проверку сделать на enum? Вы в своем уме? Вы передаете число, какая тут проверка блин. Такое впечатление что вы просто хейтите мою статью. Заказной хейт какой-то. Еще вы так пишете, будто от вас ничего не зависит и на компьютер вся надежда. Вы что, не знаете что вы делаете?
    Это неправда, кстати. ООП не имеет к этому никакого отношения.

    Как это не имеет, а как вы тогда будете нужные типы данных рассылать подписчикам?
  • Использование подобия паттерна наблюдатель на С
    0
    А что будет, если использовать два?

    Как это два? Можно создать сколько угодно издателей. Из любой точки программы можно использовать одинаковый enum. Правильность написания кода ложиться на программиста, он же пишет программу, а не прикалывается.
    у вас нигде нет никакого контроля за тем, какие данные высылает издатель и получает подписчик.

    Зато можно выслать абсолютно любые данные. В ооп вы бы указывали какие данные получать, а мне нужна была универсальность, которая подходит к любой ситуации без переписывания кода. То есть программист сам следит за передаваемыми данными. Вам ведь никто не сможет испаганить код, кроме разработчиков.
  • Использование подобия паттерна наблюдатель на С
    0
    Спасибо за комментарий. Я в основном программирую на си. И то редко. ООП почти не затрагиваю. Да библиотечной наверное не выглядит, но она для встраивания в проект. Ведь если приложения будут использовать одну и ту же библиотеку, то смогут пользоваться одинаковыми данными?
  • Использование подобия паттерна наблюдатель на С
    0
    Хорошо. Понятно. Спасибо за разъяснения.
  • Реализация PubSubHubbub-подписики в Java-приложении на App Engine
    0
    Я не совсем понимаю что именно и как нужно отправить. Вот ваше сообщение.
    Если значения параметров устраивают (соответствуют запросу), то чтобы подтвердить подписку (или отказ от нее), нужно в ответ вернуть код 2xx, а в тело ответа поместить значение еще одного параметра: hub.challenge.

    Он отсылает GET, но Connection пишет Close.
    Что надо в ответ.
    HTTP/1.1 200 OK

    <hub_challenge?>
  • Встраивание кода и опасность пиратского ПО
    0
    классно.
  • Встраивание кода и опасность пиратского ПО
    0
    Ну моя программа например работает так. Если хочешь получить все смещения и выполнить определённую работу, то передаешь функции FALSE. Если хочешь просто вывести дизассемблированный код, то передаёшь TRUE. Но FALSE я передаю только в том случае, когда надо добавить новый ассемблерный код куда нибудь между кодом, тогда вызывается функция с FALSE, которая заполняет структуру с данными и сразу же после этой функции обрабатывает.
  • Встраивание кода и опасность пиратского ПО
    0
    Ну чтобы заменить байтами код это да, проще, но я хочу понять весь elf и весь дизассемблер. Уж очень классное приложение может получиться если реализовать всё. Ну да, я вставляю код в нужный адрес и всё пересчитывается. Потом можно проверить тем же objdump, что файл получился правильным.
  • Представляем Windows Terminal
    0
    Если уж сильно надо постоянно файлы переносить, то неплохо бы скрипт написать, который автоматизирует всю работу )
  • freetype 2 и opengl пишем текст
    –1
    А что за SDF?
  • freetype 2 и opengl пишем текст
    –2
    В android скорее всего это не прокатит. Я знаю про glVertexColorPointer и glVertexPointer и glTexCoordPointer. Но это без шейдеров.
  • freetype 2 и opengl пишем текст
    –2
    Хотя можно еще цвет залить скорее всего через uniform переменные. Но я так не пробывал.
  • Как я стал indie gamedev-разработчиком или особенности национальной разработки на коленке
    –1
    Я не копировал код с форума. У меня исходники на компьютере.