На каких интернет-ресурсах вы берёте цифровые книги?
Я из легальных могу выделить rusneb.ru для старых (особенно дореволюционных книг) и для иностранщины archive.org, тоже старой, в основном.
Я из легальных могу выделить rusneb.ru для старых (особенно дореволюционных книг) и для иностранщины archive.org, тоже старой, в основном.
Проблема проста. Есть ноутбук подключенный к сети через WiFi.
Надо обеспечить доступ виртуальной машины на QEMU в эту же сеть.
Я понимаю, что для этого теоретически, надо создать tap сетевой адаптер и создать мост включающий его и сетевую карту, через которую реальная машина подключена к сети.
Вот тут и проблема - нельзя просто взять и создать мост с WiFi картой. Или как-то можно?
Подскажите пожалуйста. Возможно есть другие пути?
Виртуалка просто должна работать в реальной сети как еще один компьютер.
Интересует именно QEMU, как это сделать с Virtualbox я знаю, но он не подходит.
#####РЕШЕНИЕ#######
Спасибо Pinkbyte! Я осилил по твоему совету.
Включаем Proxy ARP
# sysctl net.ipv4.conf.all.proxy_arp=1
Включаем IP Forwarding
# sysctl net.ipv4.ip_forward=1
Создаем tap сетевой интерфейс, доступный для пользователя (важно! qemu работает от пользователя !)
# tunctl -p -t tap0 -u <username>
Создаем маршрут для ip адреса виртуалки через tap0
ip route add 192.168.1.199 dev tap0
Запускаем QEMU с параметрами сети
-netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no -device virtio-net-pci,netdev=mynet0
На гостевой системе - настраиваем статический ip адрес 192.168.1.199.
После этого все работает, виртуалка видна по своему адресу снаружи как отдельный компьютер.
Здравствуйте, коллеги!
Нужда приперла реализовать некую функцию на С для последующего использования ее в коде на python. Подтягивать ее намерен через ctypes. Хотя тут могут быть варианты. Открыт вашим предложениям.
Функция довольно заковыристая. Вот ее прототип на С
char * func4py(char * data, int data_size, int pos, char * buf, int buf_size);
char * res = (char *) malloc(buf_size + pos);
// ...
return res;
Функция принимает 2 указателя на области памяти, кое-что магичит с данными и результат закидывет в выделенный res, который и возвращает в качестве указателя.
И тут я сталкиваюсь со всей глубиной своего незнания…
В python я бы хотел вызывать эту функцию в виде:
buf3 = func4py(buf1: bytes, pos: int, buf2: bytes)
Ведь python же всегда знает размеры своих объектов!
Но как передать это сокральное знание с С?
Можно, конечно:
buf3 = func4py(buf1: bytes, buf1_size: int = len(buf1), pos: int, buf2: bytes, buf2_size: int = len(buf2))
Жуть какая-то, на мой взгляд. Можно, конечно, сделать обертку в виде питоновской функции, но может есть способ более элегантный?
Еще непонятка с выделением памяти.
Для результирующего буфера мне память приходится выделять, а python ее в дальнейшем сам корректно освободит?
И еще, наверное, стоит как-то генерировать исключение если malloc вернет NULL.
в общем, прошу совета как все это грамотно реализовать?
Ну и вишенка на торте:
Как вернуть не только указатель на буфер, а еще и измененный pos? Типа как tuple или list
PS Я нормально знаю С, так что с реализацией функции ни каких проблем. Но я никогда еще не писал сишные функции для python.
Полное резюме https://www.liltechdude.xyz/resume.pdf
Вкратце
Много воды утекло с момента выхода LDD3 (LDD4 мы, видимо, уже не дождёмся), безнадёжно устарел фундаментальный труд Бовета и Чезати, Роберт Лав давно не радовал нас своими прекрасными творениями. Казалось бы, в мире литературы о программировании ядра Linux наметилась устойчивая стагнация…
Но нет! Ситуацию спасает замечательный индийский программист со звучным именем Кайван Биллимория. Он написал книгу о программировании ядра, аж в двух томах.
Об авторе
Кайван программирует с 1983 года. В то время он самостоятельно научился программировать на бейсике, затем освоил Си и ассемблер под MS-DOS, а потом открыл для себя мир UNIX и Linux. Занимался программированием ядра и драйверов, участвовал в коммерческих и свободных проектах, занимался преподавательской деятельностью.
Повествование в книге ведётся на основе Ubuntu 18.04 LTS и ядра версии 5.4.
( читать дальше... )
>>> Том 1 на Amazon
>>> Том 2 на Amazon
Practical Electronics for Inventors. Купил, читаю и очень доволен. На английском языке. Вроде есть русское издание от BHV, его не читал. Объясняется очень доступно, без заумностей. Но в то же время с нужными формулами, есть разделы, где объясняется физика явлений для желающих. Английский довольно простой, я его знаю так себе, но проблем с чтением не возникло.
Оно продаётся в электронном виде, если денег жалко, наверняка есть рипы на торрентах. У меня версия с DRM, к сожалению поделиться не смогу.
Как в тулкитах совмещается программный и аппаратный рендеринг так чтобы не было тормозов при копировании из/в видеопамять и чтобы не было избыточных буферов/копирования? Далеко не всё рисование в тулкитах делается через GPU. Можно примеры на места в коде реализации тулкитов.
В частности интересно возможно ли нарисовать буфер в RAM на OpenGL рендербуфере с клиппингом без дополнительных буферов и копирований? Буфер в RAM можно выделить с необходимым выравниванием и прочими параметрами если требуется.
На хосте Fedora 34 Workstation, в виртуалке тоже. Не могу побороть хрипящий звук. Пробовал разные варианты, результат один.
Вот последняя попытка:
-audiodev pa,id=audiodev-0,server="$XDG_RUNTIME_DIR/pulse/native" \
-device ich9-intel-hda \
-device hda-output,audiodev=audiodev-0 \
Добрый день.
У меня проблема. Есть почтовый сервер Exim, на машине планируется держать почту нескольких доменов (пока один). С учетом предыдущего опыта, идут тонны спама на случайные ящики в домене который хостится на сервере, особенно если есть catchall. Для борьбы решил настроить SPF по инструкции https://www.sidn.nl/en/news-and-blogs/hands-on-implementing-spf-dkim-and-dmarc-in-exim (3.3 ACL configuration for SPF) но благодаря условию deny spf = fail : softfail отклоняется любая попытка отправки авторизованным пользователем сообщения по SMTP. SMTP клиенту пишет что моему IP не разрешено отправлять почту от имени этого домена. Закомментировал пару строчек - письмо отправляется успешно, но в заголовке стоит Received-SPF: softfail и бонусом засвечен IP адрес пользователя, подключившегося по SMTP.
Как можно настроить проверку SPF только для доставки почты с других почтовых серверов, при этом пропускать проверку SPF для пользователей, имеющих ящики в этом домене?
https://www.youtube.com/watch?v=3d4xXvF2ukY
Понимаешь, что есть музыка развлекательная и как бы это сказать, вызывающая более высшие чувства как эта. Недаром и комментарии вроде
If aliens asked me for one good reason not to wipe out the planet, I would show them this.
She stopped being a human when she began singing this song..and then she became an Angel of God...
Ave Maria Gratia plena Maria Gratia plena Maria Gratia plena Ave, ave dominus Dominus tecum Benedicta tu in mulieribus Et benedictus Et benedictus fructus ventris Ventris tui Jesus
Дальше почему-то не звучало здесь
Ave Maria Ave Maria Mater dei Ora pro nobis pecatoribus Ora, ora pro nobis Ora ora pro nobis pecatoribus Nunc et in hora mortis In hora mortis nostrae, In hora mortis, mortis nostrae In hora mortis nostrae Ave Maria!
Ожидается что приложении будет написано на Kotlin для Android
В Колибри есть возможность загрузить линуксовый драйвер radeon, но у меня он не работает.
Ноутбук Asus K53U.
$ lspci | grep -i vga
00:01.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Wrestler [Radeon HD 6310]
Всяко пробовал запускать atikms, с разными комбинациями ключей, в результате или ничего не случается, или чёрный экран и приходится перезагружаться. Вот лог atikms , а вот часть dmesg из линукса.
С этими вечными переездами и ремонтами наконец дошли руки и средства до покупки нормальных наушников - полноразмерных, закрытого типа.
Пока что выбор состоит из нескольких моделей:
Audio-Technica M50X - классика, как она есть. Вроде бы и надежная по конструкции, и хорошо играет. Но в некоторых обзорах утверждают, что она «долбит», то есть завышает басы и тем самым искажает звук. В каком-то из отзывов чел писал, что тащился с нее, пока не послушал Высоцкого и БГ - не то в ней.
Shure SRH 840 - все сходятся во мнении, что в них идеальный звук. И в обзорах, и в отзывах. Но тут же все говорят, что у них очень хрупкий пластик, который быстро треснет и уши отвалятся.
Beyerdynamic DT 770 Pro - все точно так же сходятся во мнении, что это идеальный уши по звуку, ставят их в один ценовой диапазон с предыдущими двумя моделями. Я уже почти было склонился к ним, но вдруг обнаружил, что 32 и 80 ОМ уши стоят около 16к, а не 10, как предыдущие. А 250Ом, который по цене вроде попадают, скорее всего не вытянет плеер, ибо они студийные.
Бюджет, как ясно из текста выше, около 10к, больше тратить на наушники пока не могу себе позволить.
Может быть, я что-то упускаю?
Музыка - от Pink Floyd и Dire Straits до Kamelot и Metallica с Nightwish. Втыкаться будет в покупаемый так же HiFi плеер с нормальным усилком либо через него же в качестве звуковой карты от компа.
З.Ы. Да, я понимаю, что лучше всего ехать в магаз и слушать на месте все, но тут опять перенесли карантин на пол-месяца, и магазины все еще закрыты. Думаю рискнуть и просто заказать их.
UPD
Использовать их хочу не только с ПК, но и портативно в деревне - с плеером. Рассматриваю варианты:
Cowon Plenue J - увидел его первым в рекламе, и с этого вдруг резко «вспомнилось» увелечение музыкой, забытое за переездами и кучей жизненной ерунды. Косяк в том, что обзоров на него раз два и обчелся, а видеообзоров нет вообще, кроме одного более менее вменяемого.
iBasso DX120 - попал на него из одного из обзоров на ютубе. Вроде бы говорят, что он нормально раскачивает уши, есть запас по мощности, шустрая ОС не на андроиде
Fiio x5 III gen - на него попал так же из обзоров, вроде бы даже он понравился из-за двух цапов, но андроид и отзывы как-то от него отталкивают: подтормаживает, читает не все файлы, долго читает карту, мало живет от батарейки
Всех приветствую.
Решил тут со скуки и небольшого профицита времени удариться в hdl. Давно лежит книжка про это дело (Панчул присоветовал, если что. У кого тут от него полыхает?)
Ну и вот. Читаю вдумчиво и пытаюсь повторить примеры из книги. Для компиляции и симуляции выбрал icarus. Маленький, свободный. Для визуализации gtkwave. Решил пока монструозные идешки не качать.
По умолчанию в моей слаке ставится Икарус 0.9.7. В нем как-то ничего не заработало. Написал Панчулу. Он говорит, в свободных поддержки систем верилога вообще нет. И предложил тренироваться на веб-сайте. Потом я немного нагуглил версию Икаруса 0.10.3, выкатил и у меня практически без проблем все собралось.
Ну а теперь вопрос знатокам верилога, системверилога и Икаруса. Какие есть ограничения по поддержке разных версий языков и Икаруса? Каких приятных штучек буду лишён в процессе познания? И вообще, чем отличается верилог от системверилога?
Объявлен выход KolibriN 10.1 - операционной системы, написанной преимущественно на ассемблере.
KolibriN с одной стороны — это дружелюбная для пользователя версия KolibriOS, с другой — её максимальная сборка. Иными словами, проект создан, чтобы показать новичку все возможности, доступные в альтернативной операционной системе Kolibri на данный момент. Отличительные особенности сборки:
Проект является открытым и в нём может принять участие каждый желающий, распространяется на условиях GPLv2.
Из основных изменений в новой версии:
>>>
Скриншоты
>>>
Скачать (архив весит 69 МБ)
>>>
Сообщество разработчиков (VK)
>>> Подробности
gcc 7.4 собирает пример с -O2 и ругается без оптимизации. gcc 4.8 собирает без ругани в обоих случаях. Где порылась собака и какое поведение правильное?
root@0d2ad7bc98a5:/build/src# cat a.c
#include <stdio.h>
inline void f(void)
{
printf("wtf\n");
}
void g(void)
{
f();
}
int main(void)
{
f();
return 0;
}
root@0d2ad7bc98a5:/build/src# gcc a.c
/tmp/ccOKVIbb.o: In function `g':
a.c:(.text+0x5): undefined reference to `f'
/tmp/ccOKVIbb.o: In function `main':
a.c:(.text+0x11): undefined reference to `f'
collect2: error: ld returned 1 exit status
root@0d2ad7bc98a5:/build/src# gcc a.c -O2
root@0d2ad7bc98a5:/build/src# gcc --version
gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Если убрать inline - сборка проходит. То, что компилятор к inline относится по-разному в зависимости от уровня оптимизации, я знаю. Но стулья ломать зачем?
Посоветуйте, пожалуйста, книгу или статью об особенностях Си, с помощью которой можно было бы дополнить уже имеющиеся знания о языке
Собственно, вопрос в заголовке.
Снова потихоньку собираю нормальную акустику вместо встроенных реалтеков и маленьких наушников. Соответственно, нужен качественный контент (с). Стриминговые сервисы:
а) почти все обладают так себе качеством
б) все зависят от интернета
Хочется снова собрать локальную коллекцию, как в старые добрые времена. Когда-то собранная коллекция с what.cd померла вместе с очередным хардом, поэтому приходится начинать с нуля.
Собственно, куда идти за музыкой? what.cd мёртв, waffles тоже, других не знаю.
Стандарты языка С предписывают компиляторам пользовать «быстрое» сравнение, вместо корректного.
То есть в следующем коде согласно всех стандартов языка С переменная res
должна получить значение
0
а не 1
, что крайне непрактично.
unsigned int a = 1;
int b = -1;
int res = (b < a);
Недавно я узнал что существует заметно больше способов корректного сравнения чем я изначально предполагал. Поэтому мне интересен чужой опыт.
Естественно речь о ситуациях где отказаться ни от знаковых, ни от беззнаковых никак нельзя.
Мой основной способ решения этой проблемы через расширение разрядности, так как я в первую очередь имею дело с unsigned char
, но смесь size_t
c ssize_t
или что-то подобное также нередко доставляет неудобства.
Опишите кто и как выкручивается в сложившейся ситуации.
For example x86 gcc 7.1 will for C++ source:
bool compare(int x, unsigned int y) {
return (x < y); // "wrong" (will emit warning)
}
bool compare2(int x, unsigned int y) {
return (x < 0 || static_cast<unsigned int>(x) < y);
}
bool compare3(int x, unsigned int y) {
return static_cast<long long>(x) < static_cast<long long>(y);
}
Produce this assembly (godbolt live demo):
compare(int, unsigned int):
cmp edi, esi
setb al
ret
compare2(int, unsigned int):
mov edx, edi
shr edx, 31
cmp edi, esi
setb al
or eax, edx
ret
compare3(int, unsigned int):
movsx rdi, edi
mov esi, esi
cmp rdi, rsi
setl al
ret
Взято вот здесь:
следующие → |