Играл во flatout 2 через стим на онтопике. Два дня назад ещё всё было хорошо. Сегодня при запуске мне выдает «недопустимая платформа». В магазине поддержку Linux тоже убрали. Чем им помешала игра, которой уже 15 лет - я не знаю.
Мораль, пасаны, пользуйте gog или пиратку. Иначе завтра ваш дистр превратится в тыкву.
Есть достаточно нетривиальная задача, если найдется решение хотя бы для linux - было бы уже неплохо.
Есть процесс, запущенный через fork() + close(1, 2) + open(file1, file2) + execve. Соответственно он пишет свой stdout/err в файл.
Что нужно - периодически чекать размер файла в другой программе (тривиально) и если он больше чем N (пусть будет 10 МБ) - отрезать ему M байт (пусть будет 5 МБ) с начала (не тривиально). Оставив таким образом только последние 5 МБ её выхлопа.
Не тривиально, потому что этот же файл всё еще пишется запущенной исходной программой.
Да, можно в теории поступить по-другому - открыть файл, скопировать его в другой, сохранить как .log.1, затранкейтив полностью исходный. Но есть проблема в том, что таких «пишущих» процессов будет что-то около 50 и засирать каталог очень не хочется (тем более, что практика показала, что искать что-то одновременно в log.1 … log.9 не очень удобно (особенно когда это что-то попадает куском в первый файл, а куском во второй)).
logrotate не доступен, потому что это условно-portable сервис + его надо запускать под виндами, желательно не переписав его на 90%.
UPD:
В общем на чем сейчас остановились: перехватывать на себя выхлоп через пайпы - не вариант, нужно плодить миллион (80 шт) нитей чтобы обслуживать все запущенные сервисы (40 шт).
Сейчас рассматриваем вариант с одной нитью и работать как logrotate - делать log.1, log.2 для всех разом. Непенятно только как заставить каретку в программе переехать на начало, ведь если работающий сервис не сделал close - то его позиция каретки зафикшена и если после моего truncate файла будет write со стороны программы - то там будет не 0, а файл, размером N МБ + добавка последней записи.
Кто расскажет, какую магию делает logrotate и logrotatewin?
https://pastebin.com/ewDukJJx
Object Oriented Programming with C++, Second Edition by Richard Johnsonbaugh
1.4 C++ AS A SUPERSET OF C PROGRAMMING LANGUAGE
C++ has inherited all the strong points of C. It has tried to remove certain weaknesses. Object orientation has added a totally new dimension to the language. You can make use of code and reuse it to the hilt. C++ is a superset of C. All your C programs will work without any modification in this environment. However, we recommend that you get accustomed to new styles and techniques of C++ from day one.
2012
А потом к нам на должность С-программиста стучатся люди, которые никогда не кодили на си, но зато чо-то там делали на Qt/boost
Лояльное отношение начальства (надо куда-то свалить - ок, потом отработаешь, либо договоримся если работа завершена в срок)
Возможна работа удаленно с редкими визитами в офис (сейчас из всего отдела в офисе работает только один потому что там стоят тестовые стенды с оборудованием, как только закупят вторую партию отправится работать из дома)
Конференции и поездки за счет работодателя (сейчас с поездками хуже, рассосется ковидла - будет лучше, до ковидлы каждый месяц кто-то куда-то уезжал, онлайн сейчас в приоритете)
Курсы повышения квалификации за счет работодателя
В отделе есть человек 81го года, проблем нет, возраст не помеха.
Интересные задачи разной направленности - управление кинооборудованием, спутниковая передача данных, работа с кассовым оборудованием, работа с авиационными системами.
Неожиданно столкнулся с тем, что ассемблер под mingw чутка отличается от gcc’шного (хотя при этом у нас уже много чисто асмовых модулей, например sha2, на которых граблей не было, нужно было только экспортные имена поменять).
Как выяснилось, gcc это кушает хорошо, в вот mingw жрать не хочет:
<symbolname>_gen.s: Сообщения ассемблера:
<symbolname>_gen.s:3: Предупреждение: Псевдооперация .type используется вне .def/.endef: игнорируется.
<symbolname>_gen.s:3: Ошибка: мусор в конце строки, первый нераспознанный символ «m»
<symbolname>_gen.s:10: Предупреждение: Псевдооперация .type используется вне .def/.endef: игнорируется.
<symbolname>_gen.s:10: Ошибка: мусор в конце строки, первый нераспознанный символ «m»
Помогите, пожалуйста портировать эту засаду под mingw/win32.
Суть в автоматическом встраивании внешних файлов в бинарь. Например у нас есть JSON-файл со схемой валидации. Вместо того чтобы таскать его с собой, открывать на чтение и проч. просто используем условный myjson[].
Я не специалист по шрифтам, но мне нужно узнать ответ на следующий вопрос:
Положим есть пиксельный шрифт (не векторный, не в курсе как они правильно называются - я ж не специалист). У этого шрифта положим есть буква «А». Так вот вопрос в следующем:
Предположим, что мы средствами например браузера или терминала используем эту букву этого шрифта. Возможно ли если я выставил букве красный цвет средствами только шрифта сделать так чтобы например перекладина в «А» была другого цвета или хотя бы оттенка (темнее\светлее)?
Или рендер абсолютно всех шрифтов всегда происходит на черно-белой канве впоследствии окрашиваясь с используя канву как альфа-маску?
Как мне получить имя xxx и сколько секунд назад (bytes_i Ns ago) пришел последний пакет без того, чтобы парсить это всё вприсядку регэкспами в надежде что не сменится алгоритм? Есть у ipsec какой-нибудь адекватный машиночитаемый выхлоп?
Судя по всему гугл начал считать что оно содержит вредоносное ПО, поэтому расширение автоматически отключено во всех браузерах у всех пользователей.
Для тех кто в танке что это:
MeddleMonkey (fork Violentmonkey with some features) is the most popular user script manager, with over 4 million users, which supports for Chromium-based browsers like Opera and Chrome.
В lok_library_func обычный dlsym с проверкой на нашел\не нашел. При не нашел - падаем.
Грузит, находит по адресу. Но xmlMalloc == NULL. Т.е. переменная не присвоена. Окей, обращаемся к коду libxml:
#if defined(DEBUG_MEMORY_LOCATION) || defined(DEBUG_MEMORY)
<...>
xmlMallocFunc xmlMalloc = (xmlMallocFunc) xmlMemMalloc;
<...>
#else
<...>
/**
* xmlMalloc:
* @size: the size requested in bytes
*
* The variable holding the libxml malloc() implementation
*
* Returns a pointer to the newly allocated block or NULL in case of error
*/
xmlMallocFunc xmlMalloc = malloc;
Точно известно, что DEBUG_MEMORY_LOCATION и DEBUG_MEMORY не установлены. Значит переменная должна быть инициализирована при загрузке библиотеки (что и происходит при dlopen).
Вопрос - почему переменная NULL?
Из-за того, что она NULL происходит падение при первом же выделении памяти внутри самой либы (например на LIBXML_TEST_VERSION).
xUbuntu 18.04. Раньше, когда устанавливал wine он добавлял свои «хвосты» просто везде - в меню приложений, в контекстное меню, заменяя «открыть как» своим списком.
Хочу просто поставить бинари чтобы они никуда ничего не писали меняя в меню. Запускать буду через xxx/wine app.exe отдельным скриптом.
Как? Скачать и разархивировать ubuntu deb-пакет в какой-нибудь /opt? Или есть нормальный метод?
Запустил deluge, скачал раздачу, выбрал «удалить торрент», получил пустой список.
Запустил VPN до ProtonVPN, через минуту получаю выкидывание на страницу «мы зафиксировали p2p трафик, остынь 5 минут, паренек или купи дорогой тариф». Перезапустил соединение, еще пара минут - снова та же страница. Проверил, в Deluge пустой список. Выключил deluge полностью - не выбрасывает на эту страницу.
Не, ну реально, весь этот фансервис во всех современных тайтлах убивает желание смотреть что-либо на корню. В то время как ishuzoku reviewers прорывают очередное дно в индустрии аниме, стирая грань между хентаем и аниме (до такой степени что оказались забанены на стриминговых сервисах) сердце и душа просит чего-то доброго и вечного типа Slayers (хотя и там тоже периодически фансервисили по самое не хочу).
В общем поделитесь чем-то, что можно посмотреть бородатому дяде под 30 и где не будет мелькающих трусов или сисек. Такое вообще всё еще делают? Или такие тайтлы навсегда остались в 80х?
Список того, про что я веду речь:
Slayers
Ginga Eiyuu Densetsu
Ano Hi Mita Hana no Namae o Bokutachi wa Mada Shiranai (Ano Hana)
Ascendance of a Bookworm
Girls’ Last Tour
One Punch Man
Sleepy Princess in the Demon Castle
Battleangel Alita
To aru kagaku no railgun – этакое «анимешное чёрное зеркало» – сюжетки про чудеса техники и то как они могут повлиять. Не слишком научно достоверно в деталях, но задуматься можно
Dr Stone – анимешный научпоп. Главная его задача (помимо развлечения) – показать что наука это круто
Yakusoku no Neverland – майндгейм, ангст. В конце, вроде как, намёк на антивойну, но не уверен - не дождавшись главы дропнул.
School Live – поведение ОЯШкольниц в зомбоапокалипсисе. Довольно трогательно пытаются сохранить модели поведения старого мира, понимая при этом (нуу.. почти все) ситуацию.
$ sudo smartctl -i /dev/sda
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-5.0.0-37-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Device Model: Samsung SSD 860 EVO 1TB
Serial Number: S4FMNF0M808306B
LU WWN Device Id: 5 002538 e998026fe
Firmware Version: RVT03B6Q
User Capacity: 1 000 204 886 016 bytes [1,00 TB]
Sector Size: 512 bytes logical/physical
Rotation Rate: Solid State Device
Form Factor: 2.5 inches
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: Unknown(0x09fc), ACS-4 T13/BSR INCITS 529 revision 5
SATA Version is: SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Tue Nov 24 01:59:52 2020 MSK
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Если до катаклизма локдауна по удаленке можно было поработать полулежа на кровати (но не более пары дней), то с переходом на полноценную удаленку нужно было организовать рабочее место дома.
К сожалению в 19 метровой однокомнатной квартире где проживают два человека это оказалось сложной задачей, поэтому место для стула нашлось только на балконе. Сверлильному Zitrek’у пришлось временно подвинуться (он все равно не прикручен, куда этот 20 килограммовый гроб денется). Чуть позже надо будет выкинуть этот икеевский столик который был тут поставлен и сделать вместо него нормальный со слотом под стабилизатор для станка.
На том же балконе есть откидной стол для второго члена семьи, который я периодически экспроприирую и использую как верстак.
Ноутбук Thinkpad L560, который вроде бы и thinkpad, но вроде бы и нет. По крайней мере вертикальный нажим на вставленную зарядку он выдержал, сломав защелку в корпусе, но не сдохнув сам. Тач залит водой, поэтому вместо него используется клипипка. Логотип я случайно оторвал, поэтому вместо него стикер, чтобы внутрь не попадала влага (там дырочка для защелки логотипа). Под ноутбуком док-станция, раньше использовал на работе для второго монитора, сейчас дома чтобы он просто удобно стоял и не пришлось зарядку перетыкать. Такие доки больше не делают, все перешли на usb c и это бесит, потому что раздалбывается полезный разъем в самом ноутбуке.
Попробовал скомилить и запустить вулкановский пример - компилится но сегфолтится на init. Вычитал что надо ставить отдельный драйвер (!) чтобы заработали vulkan приложения.
Меня прекрасно устраивает текущий видеодрайвер, который работает без тиринга или еще каких артефактов.
Я так понимаю, что разрабатывая под вулкан мне нужно требовать от остальных пользователей чтобы они себе также ставили эти драйвера как под Linux так и под Windows.
Всвязи с этим вопрос - а насколько разработка под OpenGL ныне считается deprected?
А то получается как в «12 стульях» - немое кино уже не актуально, а кина со звуком еще нет.
Domain "lorwiki.org.ru" not found
Домен продается!
Цена: 5000 руб. при оплате напрямую
Цена: 7000 руб. при оплате через магазин доменов nic.ru
По вопросу приобретения писать на email: moderator777rus@mail.ru
# pvs-studio report:
./projects/shared/libfenrir/code/utils/fen_gzip.c:140:1: warn V1031 The 'inflateInit2' function is not declared. Passing data to or from this function can be affected.
./projects/shared/libfenrir/code/utils/fen_gzip.c:142:1: warn V1031 The 'inflateInit2' function is not declared. Passing data to or from this function can be affected.
Ну то есть понятно, да? Оно даже не пытается разворачивать макросы/препроцессить. Тупо видит xxx() - считает это функций.
600 000-∞р/год (в зависимости от того насколько вы большая компания) за херобору которая даже gcc -E не делает чтобы получить список актуальных функций.
Я понимаю, что когда делаешь сложный технический продукт можно чего-то не учесть, типа какие-нибудь auto shared_ptr с лямбдами и блекджеком. Но получение списка функций - это базовый функционал, епт!
P.S. косвенную проверку указателя на NULL также все еще не научились. «Либо == NULL либо её у вас нет.»