Ссылки:
понедельник, 23 декабря 2019 г.
пятница, 20 декабря 2019 г.
Qemu, crosstool-NG
Настроим отладку простейшей проги на си, подключившись через gdbserver к виртуальной машине qemu с архитектурой riscv, следуя следующему руководству на русском, опирающемся на английский оригинал (можно сразу по нему).
Ставим qemu на Fedora 31:
sudo dnf install @virtualization
sudo dnf install qemu-system-riscv-core-4.1.0-2.fc31.x86_64.rpm
Скачиваем Open On-Chip Debugger для Fedora отсюда и prebuilt RISC‑V GCC Toolchain and Emulator отсюда.
Попытаемся удаленно отладить при помощи gdbserver прогу на эмулированной qemu-машине с архитектурой riscv. Прога hello.c от K&R:
mkdir ./helloWorld
cd ./helloWorld
nano ./hello.c
#include <stdio.h>
int main()
{
printf("hello, world\n");
return 0;
}
Компилим её сразу следующим образом:
riscv64-unknown-elf-gcc hello.c -g -v
Запускаем аналог gdbserver в виртуальной машине qemu riscv:
qemu-system-riscv64 -machine virt -m 128M -gdb tcp::1234 -kernel a.out
Запускаем gdb и подключаемся к серверу:
riscv64-unknown-elf-gdb a.out(gdb) target remote :1234
Получаем неопределенный стэк:
Remote debugging using :1234
0x0000000000000000 in ?? ()
(gdb)
Скидываем dtb-файл в текущую папку:
cd /usr/local/tools/riscv-openocd-x86_64
mkdir machines
qemu-system-riscv64 -machine virt -machine dumpdtb=riscv64-virt.dtb
Ставим dtc:
sudo dnf install dtc
Конвертируем :
dtc -I dtb -O dts -o riscv64-virt.dts riscv64-virt.dtb
Находим начало RAM'а и размер (подробнее в оригинальном руководстве):
[adil_nurimanov@localhost machines]$ grep memory riscv64-virt.dts -A 3
memory@80000000 {
device_type = "memory";
reg = <0x00 0x80000000 0x00 0x8000000>;
};
Отредактируем оригинальный riscv64-unknown-elf-ld скрипт:
cd /usr/local/tools/riscv-gcc-x86_64/bin
riscv64-unknown-elf-ld --verbose > riscv64-virt.ld
Добавим два определения в riscv64-virt.ld:
1) добавляем определение RAM - секция MEMORY:
OUTPUT_ARCH(riscv)
/* >>> Our addition. <<< */
MEMORY
{
/* qemu-system-risc64 virt machine */
RAM (rwx) : ORIGIN = 0x80000000, LENGTH = 128M
}
/* >>> End of our addition. <<< */
ENTRY(_start)
2) добавляем определение вершины стэка __stack_top - секция PROVIDE:
SECTIONS
{
/* Read-only sections, merged into text segment: */
PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x10000));
. = SEGMENT_START("text-segment", 0x10000) + SIZEOF_HEADERS;
/* >>> Our addition. <<< */
PROVIDE(__stack_top = ORIGIN(RAM) + LENGTH(RAM));
/* >>> End of our addition. <<< */
.interp : { *(.interp) }
.note.gnu.build-id : { *(.note.gnu.build-id) }
Напишем свой crt0.s:
1) https://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_3.html
Вики (qemu, risc-v):
1) https://github.com/riscv/riscv-qemu
2) https://wiki.qemu.org/Documentation/Platforms/RISCV
3) http://openocd.org/
RISC-V on qemu:
1) (!)https://habr.com/en/post/454208/ (riscv, qemu)
2) https://habr.com/ru/post/319736/ (установка debian 9 на qemu, для кросссборки используется gnueabihf)
Отличие bare metal от linux:
1) https://en.wikipedia.org/wiki/Application_binary_interface (русская страница)
2) https://www.linux.org.ru/forum/development/10188780
3) https://jacobmossberg.se/assets/presentations/running-c-programs-bare-metal-arm-gnu-toolchain-foss-gbg-20180926.pdf
RISC-V (wiki, github):
1) RISC-V ISA wiki https://ru.wikipedia.org/wiki/RISC-V
2) RISC-V crosscompiler toolchain (newlib for baremetal) https://github.com/riscv/riscv-gnu-toolchain
3) (!)Недостатки riscv (по сравнению с arm) https://habr.com/ru/post/461785/
4) Перенос Alpine Linux на RISC-V https://habr.com/ru/post/434382/
crosstool-NG:
1) https://habr.com/ru/post/114230/ (только теория)
2) https://habr.com/ru/post/363349/ (сборка под ESP8266)
3) https://habr.com/ru/post/343690/ (без crosstool-Ng, но с asm на qemu)
4) https://habr.com/ru/post/310056/ (сборка под FPGA altera)
5) https://habr.com/ru/post/186124/ (сборка под OSX)
6) https://crosstool-ng.github.io/docs/
7) Cross-compiling tools package guidelines (arch)
8) https://www.linux.org.ru/forum/linux-install/11003225 (gentoo)
9) https://stackoverflow.com/questions/46258701/how-to-builld-os-abi-for-systemv-using-crosstool-ng
Вики (контейнеризация):
1) https://ru.wikipedia.org/wiki/Docker
2) https://ru.wikipedia.org/wiki/Kubernetes
3) https://ru.wikipedia.org/wiki/Chroot
Virtio:
1) https://wiki.libvirt.org/page/Virtio
2) http://rus-linux.net/nlib.php?name=/MyLDP/vm/jones/virtio.html
3) https://www.linux-kvm.org/page/Virtio
4) https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers
5) https://wiki.osdev.org/Virtio
6) https://developer.ibm.com/technologies/linux/articles/l-virtio/
Windows virtual machine with virtio, kvm:
1) https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/
2) QEMU/KVM и установка Windows https://habr.com/ru/post/313144/
3) Разворачиваем виртуалку с Windows с пробросом виртуальной видеокарты с помощью QEMU и Intel GVT-g https://habr.com/ru/post/437270/
4) Ускорение дисковой подсистемы Qemu KVM в Linux https://habr.com/ru/company/ruvds/blog/493696/
5) Запуск FreeBSD в Linux KVM https://habr.com/ru/post/167099/
6) Работа с виртуальными машинами KVM. Подготовка хост-машины https://habr.com/ru/post/120717/
7) Общие принципы работы QEMU-KVM https://habr.com/ru/post/466549/
8) Howto Qemu-kvm Debian 8 https://habr.com/ru/post/260791/
9) Автоматизация Для Самых Маленьких. Часть 1.1. Основы виртуализации https://habr.com/ru/post/467801/
10) Запуск Windows под Linux KVM https://habr.com/ru/post/176823/
Kubernetes server cluster on bare metal (мне это не нужно):
1) https://habr.com/ru/post/342232/
2) https://habr.com/ru/company/flant/blog/440504/
3) https://habr.com/ru/company/southbridge/blog/334846/
4) https://habr.com/ru/company/southbridge/blog/439562/
riscv memory manager:
1) https://github.com/riscv/riscv-tests/blob/master/debug/programs/tiny-malloc.c
2) https://www.sifive.com/blog/all-aboard-part-9-paging-and-mmu-in-risc-v-linux-kernel
3) https://inst.cs.berkeley.edu/~cs61c/fa17/disc/2/Disc2Sol.pdf
4) https://github.com/riscv/riscv-gnu-toolchain/issues/571
memory manager wiki:
1) https://en.wikipedia.org/wiki/Memory_management (русская)
2) https://en.wikipedia.org/wiki/Memory_management_unit (русская)
Ставим qemu на Fedora 31:
sudo dnf install @virtualization
sudo dnf install qemu-system-riscv-core-4.1.0-2.fc31.x86_64.rpm
Скачиваем Open On-Chip Debugger для Fedora отсюда и prebuilt RISC‑V GCC Toolchain and Emulator отсюда.
Я распаковал Open On-Chip Debugger в папку /usr/local/tools/riscv-openocd-x86_64, а RISC‑V GCC Toolchain в папку /usr/local/tools/riscv-gcc-x86_64.
В файл /home/<user>/.bashrc добавляем (перед export PATH):
PATH="$PATH:/usr/local/tools/riscv-openocd-x86_64/bin:/usr/local/tools/riscv-gcc-x86_64/bin"
Попытаемся удаленно отладить при помощи gdbserver прогу на эмулированной qemu-машине с архитектурой riscv. Прога hello.c от K&R:
mkdir ./helloWorld
cd ./helloWorld
nano ./hello.c
#include <stdio.h>
int main()
{
printf("hello, world\n");
return 0;
}
riscv64-unknown-elf-gcc hello.c -g -v
Запускаем аналог gdbserver в виртуальной машине qemu riscv:
qemu-system-riscv64 -machine virt -m 128M -gdb tcp::1234 -kernel a.out
Запускаем gdb и подключаемся к серверу:
riscv64-unknown-elf-gdb a.out(gdb) target remote :1234
Получаем неопределенный стэк:
Remote debugging using :1234
0x0000000000000000 in ?? ()
(gdb)
cd /usr/local/tools/riscv-openocd-x86_64
mkdir machines
qemu-system-riscv64 -machine virt -machine dumpdtb=riscv64-virt.dtb
Ставим dtc:
sudo dnf install dtc
Конвертируем :
dtc -I dtb -O dts -o riscv64-virt.dts riscv64-virt.dtb
Находим начало RAM'а и размер (подробнее в оригинальном руководстве):
[adil_nurimanov@localhost machines]$ grep memory riscv64-virt.dts -A 3
memory@80000000 {
device_type = "memory";
reg = <0x00 0x80000000 0x00 0x8000000>;
};
cd /usr/local/tools/riscv-gcc-x86_64/bin
riscv64-unknown-elf-ld --verbose > riscv64-virt.ld
Добавим два определения в riscv64-virt.ld:
1) добавляем определение RAM - секция MEMORY:
OUTPUT_ARCH(riscv)
/* >>> Our addition. <<< */
MEMORY
{
/* qemu-system-risc64 virt machine */
RAM (rwx) : ORIGIN = 0x80000000, LENGTH = 128M
}
/* >>> End of our addition. <<< */
ENTRY(_start)
2) добавляем определение вершины стэка __stack_top - секция PROVIDE:
{
/* Read-only sections, merged into text segment: */
PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x10000));
. = SEGMENT_START("text-segment", 0x10000) + SIZEOF_HEADERS;
/* >>> Our addition. <<< */
PROVIDE(__stack_top = ORIGIN(RAM) + LENGTH(RAM));
/* >>> End of our addition. <<< */
.interp : { *(.interp) }
.note.gnu.build-id : { *(.note.gnu.build-id) }
Напишем свой crt0.s:
.section .init, "ax"
.global _start
_start:
.cfi_startproc
.cfi_undefined ra
.option push
.option norelax
la gp, __global_pointer$
.option pop
la sp, __stack_top
add s0, sp, zero
jal zero, main
.cfi_endproc
.end
C code compile:1) https://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_3.html
Вики (qemu, risc-v):
1) https://github.com/riscv/riscv-qemu
2) https://wiki.qemu.org/Documentation/Platforms/RISCV
3) http://openocd.org/
RISC-V on qemu:
1) (!)https://habr.com/en/post/454208/ (riscv, qemu)
2) https://habr.com/ru/post/319736/ (установка debian 9 на qemu, для кросссборки используется gnueabihf)
3) https://habr.com/ru/post/278159/ (qemu, mips, arm, debian 8)
Отличие bare metal от linux:
1) https://en.wikipedia.org/wiki/Application_binary_interface (русская страница)
2) https://www.linux.org.ru/forum/development/10188780
3) https://jacobmossberg.se/assets/presentations/running-c-programs-bare-metal-arm-gnu-toolchain-foss-gbg-20180926.pdf
RISC-V (wiki, github):
1) RISC-V ISA wiki https://ru.wikipedia.org/wiki/RISC-V
2) RISC-V crosscompiler toolchain (newlib for baremetal) https://github.com/riscv/riscv-gnu-toolchain
3) (!)Недостатки riscv (по сравнению с arm) https://habr.com/ru/post/461785/
4) Перенос Alpine Linux на RISC-V https://habr.com/ru/post/434382/
1) https://habr.com/ru/post/114230/ (только теория)
2) https://habr.com/ru/post/363349/ (сборка под ESP8266)
3) https://habr.com/ru/post/343690/ (без crosstool-Ng, но с asm на qemu)
4) https://habr.com/ru/post/310056/ (сборка под FPGA altera)
5) https://habr.com/ru/post/186124/ (сборка под OSX)
6) https://crosstool-ng.github.io/docs/
7) Cross-compiling tools package guidelines (arch)
8) https://www.linux.org.ru/forum/linux-install/11003225 (gentoo)
9) https://stackoverflow.com/questions/46258701/how-to-builld-os-abi-for-systemv-using-crosstool-ng
Вики (контейнеризация):
1) https://ru.wikipedia.org/wiki/Docker
2) https://ru.wikipedia.org/wiki/Kubernetes
3) https://ru.wikipedia.org/wiki/Chroot
Virtio:
1) https://wiki.libvirt.org/page/Virtio
2) http://rus-linux.net/nlib.php?name=/MyLDP/vm/jones/virtio.html
3) https://www.linux-kvm.org/page/Virtio
4) https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers
5) https://wiki.osdev.org/Virtio
6) https://developer.ibm.com/technologies/linux/articles/l-virtio/
Windows virtual machine with virtio, kvm:
1) https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/
2) QEMU/KVM и установка Windows https://habr.com/ru/post/313144/
3) Разворачиваем виртуалку с Windows с пробросом виртуальной видеокарты с помощью QEMU и Intel GVT-g https://habr.com/ru/post/437270/
4) Ускорение дисковой подсистемы Qemu KVM в Linux https://habr.com/ru/company/ruvds/blog/493696/
5) Запуск FreeBSD в Linux KVM https://habr.com/ru/post/167099/
6) Работа с виртуальными машинами KVM. Подготовка хост-машины https://habr.com/ru/post/120717/
7) Общие принципы работы QEMU-KVM https://habr.com/ru/post/466549/
8) Howto Qemu-kvm Debian 8 https://habr.com/ru/post/260791/
9) Автоматизация Для Самых Маленьких. Часть 1.1. Основы виртуализации https://habr.com/ru/post/467801/
10) Запуск Windows под Linux KVM https://habr.com/ru/post/176823/
Kubernetes server cluster on bare metal (мне это не нужно):
1) https://habr.com/ru/post/342232/
2) https://habr.com/ru/company/flant/blog/440504/
3) https://habr.com/ru/company/southbridge/blog/334846/
4) https://habr.com/ru/company/southbridge/blog/439562/
riscv memory manager:
1) https://github.com/riscv/riscv-tests/blob/master/debug/programs/tiny-malloc.c
2) https://www.sifive.com/blog/all-aboard-part-9-paging-and-mmu-in-risc-v-linux-kernel
3) https://inst.cs.berkeley.edu/~cs61c/fa17/disc/2/Disc2Sol.pdf
4) https://github.com/riscv/riscv-gnu-toolchain/issues/571
memory manager wiki:
1) https://en.wikipedia.org/wiki/Memory_management (русская)
2) https://en.wikipedia.org/wiki/Memory_management_unit (русская)
пятница, 6 декабря 2019 г.
Сигналы, слоты и ивенты в qt для взаимодействия между потоками
Материалы:
1) Как работают сигналы и слоты в Qt (часть 1) https://habr.com/ru/post/214379/
1) Как работают сигналы и слоты в Qt (часть 1) https://habr.com/ru/post/214379/
2) Сигналы и слоты в Qt5 https://habr.com/ru/post/141983/
3) Сигналы и слоты в Qt (перевод официальной документации от qt4.4)
вторник, 3 декабря 2019 г.
Автоматизированное тестирование проги на qt
Функциональное тестирование (freeware):
Функциональное тестирование (proprietary):
Быстрый старт (googletest, googlemock):
1) googletest https://github.com/google/googletest/blob/master/googletest/docs/primer.md
2) googlemock https://github.com/google/googletest/blob/master/googlemock/docs/for_dummies.md
3) https://www.slideshare.net/yaevents/google-mock-google
Windows:
Linux:
2) https://qualityhour.wordpress.com/2012/02/01/automated-testing-of-qt-apps-with-testability-driver/
Unit-тесты:
1) QtTest qt5 https://doc.qt.io/qt-5/qttest-index.html
2) QTestLib qt4 https://doc.qt.io/archives/qt-4.8/qtestlib-manual.html
3) QTestLib https://habr.com/ru/post/146449/
4) QTestLib https://stackoverflow.com/questions/2686326/unit-testing-in-qtestlib-running-single-test-tests-in-class-all-tests
5) googletest https://github.com/google/googletest
2) QTestLib qt4 https://doc.qt.io/archives/qt-4.8/qtestlib-manual.html
3) QTestLib https://habr.com/ru/post/146449/
4) QTestLib https://stackoverflow.com/questions/2686326/unit-testing-in-qtestlib-running-single-test-tests-in-class-all-tests
5) googletest https://github.com/google/googletest
6) gtest https://habr.com/ru/post/119090/
Быстрый старт (googletest, googlemock):
1) googletest https://github.com/google/googletest/blob/master/googletest/docs/primer.md
2) googlemock https://github.com/google/googletest/blob/master/googlemock/docs/for_dummies.md
3) https://www.slideshare.net/yaevents/google-mock-google
понедельник, 2 декабря 2019 г.
пятница, 22 ноября 2019 г.
Получение в Qt списка usb-флешек через вызов bash-скриптов
1. bash-скрипт списка подключенных устройств, содержащих хотя бы один раздел:
#!/bin/sh
readlink `find /dev/disk/by-path/ -name '*usb*part1*'`
2. bash-скрипт монтирования указанного usb-устройства c файловой системой fat32; идентификатор usb-устройства передается скрипту в виде первого параметра (например, /dev/sdb1):
#!/bin/sh
if ! [ -z $1 ]
then
mkdir /media/usb
mount $1 /media/usb
SIZE_STRING=`df -h | grep $1 | awk '{print $2}' | sed 's/\n//'`
LABEL_FS_STRING=`blkid | grep $1 | awk '{print $2 "#" $4}' | sed 's/LABEL=//' | sed 's/TYPE=//' | sed 's/"//g'`
echo $LABEL_FS_STRING#$SIZE_STRING
fi
3. bash-скрипт отмонтирования устройства, примонтированного к папке /media/usb:
#!/bin/sh
MOUNTED_STRING=`mount | grep /media/usb | egrep -o '/dev/[a-z][a-z][a-z][0-9]+'`
if ! [ -z $MOUNTED_STRING ]
then
umount /media/usb
echo $MOUNTED_STRING
fi
Источники (bash):
1) Передача параметров в bash-скрипты https://habr.com/ru/company/ruvds/blog/326328/
2) Предопределенные переменные в bash https://habr.com/ru/post/47163/
3) $? https://www.opennet.ru/docs/RUS/bash_scripting_guide/c2105.html
4) https://ru.wikipedia.org/wiki/Bash
Источники (libusb):
1) https://github.com/libusb/libusb/blob/master/examples/listdevs.c
2) http://libusb.sourceforge.net/api-1.0/index.html
3) https://ru.stackoverflow.com/questions/835083/%D0%9A%D0%B0%D0%BA-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C-%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8E-%D0%BE-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%BD%D0%BE%D0%BC-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B5
4) https://forum.ubuntu.ru/index.php?topic=176467.0
#!/bin/sh
readlink `find /dev/disk/by-path/ -name '*usb*part1*'`
2. bash-скрипт монтирования указанного usb-устройства c файловой системой fat32; идентификатор usb-устройства передается скрипту в виде первого параметра (например, /dev/sdb1):
#!/bin/sh
if ! [ -z $1 ]
then
mkdir /media/usb
mount $1 /media/usb
SIZE_STRING=`df -h | grep $1 | awk '{print $2}' | sed 's/\n//'`
LABEL_FS_STRING=`blkid | grep $1 | awk '{print $2 "#" $4}' | sed 's/LABEL=//' | sed 's/TYPE=//' | sed 's/"//g'`
echo $LABEL_FS_STRING#$SIZE_STRING
fi
3. bash-скрипт отмонтирования устройства, примонтированного к папке /media/usb:
#!/bin/sh
MOUNTED_STRING=`mount | grep /media/usb | egrep -o '/dev/[a-z][a-z][a-z][0-9]+'`
if ! [ -z $MOUNTED_STRING ]
then
umount /media/usb
echo $MOUNTED_STRING
fi
1) Передача параметров в bash-скрипты https://habr.com/ru/company/ruvds/blog/326328/
2) Предопределенные переменные в bash https://habr.com/ru/post/47163/
3) $? https://www.opennet.ru/docs/RUS/bash_scripting_guide/c2105.html
4) https://ru.wikipedia.org/wiki/Bash
Источники (libusb):
1) https://github.com/libusb/libusb/blob/master/examples/listdevs.c
2) http://libusb.sourceforge.net/api-1.0/index.html
3) https://ru.stackoverflow.com/questions/835083/%D0%9A%D0%B0%D0%BA-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C-%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8E-%D0%BE-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%BD%D0%BE%D0%BC-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B5
4) https://forum.ubuntu.ru/index.php?topic=176467.0
четверг, 21 ноября 2019 г.
Разблокировка игровой консоли Wii (чтение игр с usb-флешки)
Источники:
1) https://www.emu-land.net/forum/index.php?topic=76237.0
2) http://www.prizolovy.ru/forum/viewtopic.php?t=8254
3) http://n-wii.ru/usb-loader-gx-v3-0-zapusk-igr-s-usb-nositelej/
4) http://www.hackfaq.net/community/index.php?threads/11395/
5) https://ru.m.wikihow.com/%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C-%D0%B2-Wii-c-USB-%D1%84%D0%BB%D0%B5%D1%88-%D0%BD%D0%B0%D0%BA%D0%BE%D0%BF%D0%B8%D1%82%D0%B5%D0%BB%D1%8F
Дополнительно:
1) https://ru.m.wikipedia.org/wiki/Wii
2) https://m.avito.ru/mytischi/igry_pristavki_i_programmy/nintendo_wii_1847482097
3) https://gamesqa.ru/games/kak-igrat-v-igry-s-wii-i-gamecube-na-pk-9940/
1) https://www.emu-land.net/forum/index.php?topic=76237.0
2) http://www.prizolovy.ru/forum/viewtopic.php?t=8254
3) http://n-wii.ru/usb-loader-gx-v3-0-zapusk-igr-s-usb-nositelej/
4) http://www.hackfaq.net/community/index.php?threads/11395/
5) https://ru.m.wikihow.com/%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C-%D0%B2-Wii-c-USB-%D1%84%D0%BB%D0%B5%D1%88-%D0%BD%D0%B0%D0%BA%D0%BE%D0%BF%D0%B8%D1%82%D0%B5%D0%BB%D1%8F
Дополнительно:
1) https://ru.m.wikipedia.org/wiki/Wii
2) https://m.avito.ru/mytischi/igry_pristavki_i_programmy/nintendo_wii_1847482097
3) https://gamesqa.ru/games/kak-igrat-v-igry-s-wii-i-gamecube-na-pk-9940/
Игровая консоль на raspberrypi (orangepi)
RetroPie:
1) Floob https://www.youtube.com/channel/UCdSu9Y0xAyY8V77vj6mQ-0g
2) https://github.com/RetroPie/RetroPie-Setup/wiki/Cheats
3) https://retropie.org.uk/docs/First-Installation/
4) https://m.habr.com/ru/post/221581/
5) https://pikabu.ru/story/999999_v_1_ili_vtoraya_zhizn_raspberry_pi_3_5317700
RecalcBox:
1) https://www.recalbox.com/
Lakka:
1) https://www.lakka.tv/get/linux/rpi2/
YouTube:
1) https://www.youtube.com/watch?v=_MtN_s4tVK0
2) https://www.youtube.com/watch?v=ux9lXBexw0o
3) https://www.youtube.com/watch?v=dV-W23lONI4
1) Floob https://www.youtube.com/channel/UCdSu9Y0xAyY8V77vj6mQ-0g
2) https://github.com/RetroPie/RetroPie-Setup/wiki/Cheats
3) https://retropie.org.uk/docs/First-Installation/
4) https://m.habr.com/ru/post/221581/
5) https://pikabu.ru/story/999999_v_1_ili_vtoraya_zhizn_raspberry_pi_3_5317700
RecalcBox:
1) https://www.recalbox.com/
Lakka:
1) https://www.lakka.tv/get/linux/rpi2/
YouTube:
1) https://www.youtube.com/watch?v=_MtN_s4tVK0
2) https://www.youtube.com/watch?v=ux9lXBexw0o
3) https://www.youtube.com/watch?v=dV-W23lONI4
вторник, 19 ноября 2019 г.
Восстановление grub
У меня на компе с двумя ОС (Ubuntu14.04/Windows7; Fedora31/Win10) перестала грузиться первая. Я решил создать загрузочную ОС на флешке (LiveUSB), загрузиться с нее, примонтироваться с исходной файловой системе и обновить порядок загрузки ОС в grub.
Скачиваем нужный исошник отсюда. Скачиваем прогу UNetbootin отсюда. Вставляем флешку (у меня 8GB, но 4GB вполне должно хватить). Запускаем UNetbootin, выбираем исошник, флешку, записываем. Перезагружаемся, проверяем, чтобы в BIOS'е в списке устройств для загрузки первым устройством стояла флешка. Загружаемся с флешки.
Ubuntu Links:
1) http://help.ubuntu.ru/wiki/%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_grub
2) http://help.ubuntu.ru/wiki/unetbootin
3) http://ubuntu.ru/get
4) http://help.ubuntu.ru/wiki/ubuntu_%D0%BD%D0%B0_usb
5) http://help.ubuntu.ru/wiki/liveusb
Fedora Links:
1) https://sys-adm.in/sections/os-nix/844-vosstanovlenie-grub-v-fedora.html
2) https://docs.fedoraproject.org/en-US/quick-docs/bootloading-with-grub2/
3) https://superuser.com/questions/596317/how-would-i-reinstall-the-grub-efi-bootloader-on-fedora-linux
4) https://fedoraproject.org/wiki/GRUB_2
5) https://zen.yandex.ru/media/id/5d75175fc7e50c00ade545d5/nastroika-fedora-31-posle-ustanovki-5dd803896c428f7920c2b85a
Скачиваем нужный исошник отсюда. Скачиваем прогу UNetbootin отсюда. Вставляем флешку (у меня 8GB, но 4GB вполне должно хватить). Запускаем UNetbootin, выбираем исошник, флешку, записываем. Перезагружаемся, проверяем, чтобы в BIOS'е в списке устройств для загрузки первым устройством стояла флешка. Загружаемся с флешки.
Ubuntu Links:
1) http://help.ubuntu.ru/wiki/%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_grub
2) http://help.ubuntu.ru/wiki/unetbootin
3) http://ubuntu.ru/get
4) http://help.ubuntu.ru/wiki/ubuntu_%D0%BD%D0%B0_usb
5) http://help.ubuntu.ru/wiki/liveusb
Fedora Links:
1) https://sys-adm.in/sections/os-nix/844-vosstanovlenie-grub-v-fedora.html
2) https://docs.fedoraproject.org/en-US/quick-docs/bootloading-with-grub2/
3) https://superuser.com/questions/596317/how-would-i-reinstall-the-grub-efi-bootloader-on-fedora-linux
4) https://fedoraproject.org/wiki/GRUB_2
5) https://zen.yandex.ru/media/id/5d75175fc7e50c00ade545d5/nastroika-fedora-31-posle-ustanovki-5dd803896c428f7920c2b85a
Ubuntu 16.04 + Windows 10: amd64, GPT, UEFI
Использованный материал:
1) https://habrahabr.ru/post/259283/
2) http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_desktop_14_04/%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8_%D0%BD%D0%B0_%D0%BF%D0%BB%D0%B0%D1%82%D1%8B_%D1%81_uefi
3) https://technet.microsoft.com/ru-ru/library/dd744301(v=ws.10).aspx
4) http://www.outsidethebox.ms/16075/
5) https://msdn.microsoft.com/ru-ru/library/hh824839.aspx
1) https://habrahabr.ru/post/259283/
2) http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_desktop_14_04/%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8_%D0%BD%D0%B0_%D0%BF%D0%BB%D0%B0%D1%82%D1%8B_%D1%81_uefi
3) https://technet.microsoft.com/ru-ru/library/dd744301(v=ws.10).aspx
4) http://www.outsidethebox.ms/16075/
5) https://msdn.microsoft.com/ru-ru/library/hh824839.aspx
Bash-скрипт для создания img-сборок образов microsd-карт для работы под BeagleBoneBlack
Работа bash-скрипта выливается в:
- создание заархивированных образов img-дампов образов microsd-карт
- создание файла словаря списка созданных дампов и аппаратных конфигураций обрудования, для которых предназначены эти дампы
Сборка состоит из:
- кросскомпилированного бинарника приложения на qt (параметры сборок передаются в виде дефайнов)
- конфигурационных файлов
- других bash-скриптов и python-скриптов (это не так важно)
Создание образа microsd-карты и его автоматическое расширение под BeagleBoneBlack частично описано тут.
Использованные материалы:
1. bash:
1) https://habr.com/ru/company/ruvds/blog/325522/
2. sfdisk:
1) Пример скрипта, заливающего на встроенную emmc-память платы BeagleBoneBlack содержимого microsd-карты с бинарниками uboot, ядра и rootfs
https://raw.githubusercontent.com/RobertCNelson/boot-scripts/master/tools/eMMC/bbb-eMMC-flasher-eewiki-ext4.sh
2) https://www.thegeekstuff.com/2017/05/sfdisk-examples/
3) https://suntong.github.io/blogs/2015/12/25/use-sfdisk-to-partition-disks/
4) https://stackoverflow.com/questions/12150116/how-to-script-sfdisk-or-parted-for-multiple-partitions
5) http://download.vikis.lt/doc/util-linux-ng-2.17.2/sfdisk.examples
6) https://www.systutorials.com/docs/linux/man/8-sfdisk/
3. генерирование файла словаря созданных дампов из bash-скрипта:
1) https://habr.com/ru/company/ruvds/blog/326594/
4. формирование номера программы и билда:
1) https://habr.com/ru/post/118756/
2) Нумерация версий программного обеспечения
- создание заархивированных образов img-дампов образов microsd-карт
- создание файла словаря списка созданных дампов и аппаратных конфигураций обрудования, для которых предназначены эти дампы
Сборка состоит из:
- кросскомпилированного бинарника приложения на qt (параметры сборок передаются в виде дефайнов)
- конфигурационных файлов
- других bash-скриптов и python-скриптов (это не так важно)
Создание образа microsd-карты и его автоматическое расширение под BeagleBoneBlack частично описано тут.
Использованные материалы:
1. bash:
1) https://habr.com/ru/company/ruvds/blog/325522/
2. sfdisk:
1) Пример скрипта, заливающего на встроенную emmc-память платы BeagleBoneBlack содержимого microsd-карты с бинарниками uboot, ядра и rootfs
https://raw.githubusercontent.com/RobertCNelson/boot-scripts/master/tools/eMMC/bbb-eMMC-flasher-eewiki-ext4.sh
2) https://www.thegeekstuff.com/2017/05/sfdisk-examples/
3) https://suntong.github.io/blogs/2015/12/25/use-sfdisk-to-partition-disks/
4) https://stackoverflow.com/questions/12150116/how-to-script-sfdisk-or-parted-for-multiple-partitions
5) http://download.vikis.lt/doc/util-linux-ng-2.17.2/sfdisk.examples
6) https://www.systutorials.com/docs/linux/man/8-sfdisk/
3. генерирование файла словаря созданных дампов из bash-скрипта:
1) https://habr.com/ru/company/ruvds/blog/326594/
4. формирование номера программы и билда:
1) https://habr.com/ru/post/118756/
2) Нумерация версий программного обеспечения
пятница, 15 ноября 2019 г.
Создание кастомного редактора для двухуровневого xml-файла (структура ini-файла) в виде древовидной структуры наследника QTreeView, состоящих из элементов QTreeWidgetItem в qt4
1. Tree Model with MVC (QTreeView):
2) Использование моделей в Qt https://habr.com/ru/post/171443/
4) QT: программируем по шаблонам MVC http://blog.kislenko.net/show.php?id=1511
5) Трюки с моделями в Qt https://habr.com/ru/post/126995/
2. Tree Model without MVC (QTreeWidget):
1) QT: строим дерево строк на основе QTreeWidget http://blog.kislenko.net/show.php?id=1509
2) https://qt-way-notes.blogspot.com/search?q=Xmltree&m=1
Doc:
1) https://doc.qt.io/archives/qt-4.8/qtreewidget.html
2) https://doc.qt.io/archives/qt-4.8/qtreewidgetitem.html
3. Qt GUI:
1) Model/View Programming https://doc.qt.io/archives/qt-4.8/model-view-programming.html
4) QT: программируем по шаблонам MVC http://blog.kislenko.net/show.php?id=1511
5) Трюки с моделями в Qt https://habr.com/ru/post/126995/
Doc:
1) https://doc.qt.io/archives/qt-4.8/QTreeView.html
3) https://doc.qt.io/archives/qt-4.8/qstandarditemmodel.html
1) https://doc.qt.io/archives/qt-4.8/QTreeView.html
7) https://doc.qt.io/archives/qt-4.8/qitemeditorfactory.html
8) https://doc.qt.io/archives/qt-4.8/qlineedit.html
9) https://doc.qt.io/archives/qt-4.8/qspinbox.html
8) https://doc.qt.io/archives/qt-4.8/qlineedit.html
9) https://doc.qt.io/archives/qt-4.8/qspinbox.html
1) QT: строим дерево строк на основе QTreeWidget http://blog.kislenko.net/show.php?id=1509
2) https://qt-way-notes.blogspot.com/search?q=Xmltree&m=1
Doc:
1) https://doc.qt.io/archives/qt-4.8/qtreewidget.html
2) https://doc.qt.io/archives/qt-4.8/qtreewidgetitem.html
3. Qt GUI:
среда, 13 ноября 2019 г.
Загрузка из bash-скрипта файла на гуглдрайв и яндексдиск
Источники:
1) http://qaru.site/questions/358637/download-a-file-from-google-drive-using-wget
2) http://swedbyte.ru/2017/11/google-drive-reporting-will-show-activity-based-metrics-in-the-admin-console/
3) http://nurzod.ru/%D0%BA%D0%B0%D0%BA-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%B8%D1%82%D1%8C-%D1%84%D0%B0%D0%B9%D0%BB-%D0%B2-google-%D0%B4%D0%B8%D1%81%D0%BA-%D0%B8%D0%B7-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE/
4) https://www.howtoforge.com/tutorial/how-to-access-google-drive-from-linux-gdrive/
5) https://andreyex.ru/operacionnaya-sistema-linux/klient-drive-cli-google-dlya-linux/
6) https://prostolinux.ru/google-disk-v-linux/
1) http://qaru.site/questions/358637/download-a-file-from-google-drive-using-wget
2) http://swedbyte.ru/2017/11/google-drive-reporting-will-show-activity-based-metrics-in-the-admin-console/
3) http://nurzod.ru/%D0%BA%D0%B0%D0%BA-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%B8%D1%82%D1%8C-%D1%84%D0%B0%D0%B9%D0%BB-%D0%B2-google-%D0%B4%D0%B8%D1%81%D0%BA-%D0%B8%D0%B7-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE/
4) https://www.howtoforge.com/tutorial/how-to-access-google-drive-from-linux-gdrive/
5) https://andreyex.ru/operacionnaya-sistema-linux/klient-drive-cli-google-dlya-linux/
6) https://prostolinux.ru/google-disk-v-linux/
пятница, 8 ноября 2019 г.
Расширение раздела ext2 и файловой системы в bash
В bash-скрипте я создаю 200M-образ, связываю его с loop-устройством, монтирую, создаю файловую систему ext2, делаю сборку из необходимых файлов и в конце собираю бинарник на qt при помощи кросс-компилятора:
# 200 метров должно хватить для любого диска с прогой, скриптов и настроек
dd if=/dev/zero of=./dump.img bs=1M count=200
# освобождаем loop0-устройство
losetup -d /dev/loop0
# сопоставляем образ с loop-устройством
losetup /dev/loop0 ./dump.img
# формируем таблицу разделов на /dev/loop0
sfdisk /dev/loop0 <<-__EOF__
;
__EOF__
# перечитываем
partprobe /dev/loop0
# создаем файловую систему ext2
mkfs.ext2 -F -L "$FIRMWARE_VER1" /dev/loop0p1
# создаем папку, на всякий случай
mkdir ./imgmnt
# монтируем loop-устройство в папку
mount /dev/loop0p1 ./imgmnt
Записываем созданный распакованный образ на microsd-карту через usb-переходник (microsd-карта монтируется как /dev/sdc1):
sudo dd if=./myimage.img of=/dev/sdc bs=1M
На плате BBB делаем авторасширение ext2-раздела (microsd-карта монтируется как /dev/mmcblk0p1) в моем bash-скрипте, запускаемом при инициализации (/etc/init.d/mystart.sh).
Авторасширение делается в два этапа:
1) до монтирования microsd-карты делаем расширение раздела с предварительной проверкой на размер раздела:
Авторасширение делается в два этапа:
1) до монтирования microsd-карты делаем расширение раздела с предварительной проверкой на размер раздела:
# расширение раздела до монтирования
read MSIZE < /sys/class/block/mmcblk0/size
read NR START END TYPE < <( partx -gbro NR,START,END,TYPE /dev/mmcblk0 )
if [ "$END" -lt "$(($MSIZE - 1))" ] && [ "$TYPE" == "0x83" ]; then
dd if=/usr/share/medteco/sdresize.rgb of=/dev/fb0
parted /dev/mmcblk0 resizepart 1 100%
e2fsck -f /dev/mmcblk0p1
fi
Источники:
2) после монтирования microsd-карты делаем расширение файловой системы (этот этап можно было сделать до монтирования, но почему-то на нем в таком случае часто случались косяки):
# расширяем файловую систему после монтирования
resize2fs /dev/mmcblk0p1
resize2fs /dev/mmcblk0p1
3) https://www.tecmint.com/parted-command-to-create-resize-rescue-linux-disk-partitions/
4) https://elinux.org/RPi_Resize_Flash_Partitions
5) https://www.raspberrypi.org/forums/viewtopic.php?t=45265
6) https://unix.stackexchange.com/questions/373063/auto-expand-last-partition-to-use-all-unallocated-space-using-parted-in-batch-m
7) https://github.com/armbian/build/issues/243
4) https://elinux.org/RPi_Resize_Flash_Partitions
5) https://www.raspberrypi.org/forums/viewtopic.php?t=45265
6) https://unix.stackexchange.com/questions/373063/auto-expand-last-partition-to-use-all-unallocated-space-using-parted-in-batch-m
7) https://github.com/armbian/build/issues/243
четверг, 7 ноября 2019 г.
Сборка libusb-1.0.22 для BBB на Fedora30/Ubuntu16.04
Скачиваем архив отсюда, распаковываем в локальную папку (у меня, /media/Data/Libraries/bbb/libusb-1.0.22).
Переходим в папку, определяем уже установленный кросс-компилятор, запускаем autotools, configure, make, make install:
cd /media/Data/Libraries/bbb/libusb-1.0.22
./autogen.sh
export CC=/usr/local/tools/linaro-gnueabihf-4.9/bin/arm-linux-gnueabihf-gcc
export CXX=/usr/local/tools/linaro-gnueabihf-4.9/bin/arm-linux-gnueabihf-g++
./configure --with-pic --disable-udev --host=arm-linux
--prefix=/usr/local/tools/libusb-1.0.22
make
make install
Переходим в папку, определяем уже установленный кросс-компилятор, запускаем autotools, configure, make, make install:
cd /media/Data/Libraries/bbb/libusb-1.0.22
./autogen.sh
export CC=/usr/local/tools/linaro-gnueabihf-4.9/bin/arm-linux-gnueabihf-gcc
export CXX=/usr/local/tools/linaro-gnueabihf-4.9/bin/arm-linux-gnueabihf-g++
./configure --with-pic --disable-udev --host=arm-linux
--prefix=/usr/local/tools/libusb-1.0.22
make
make install
вторник, 5 ноября 2019 г.
Отладка ядра BeagleBone через KGDB
Будем использовать это ядро. При пересборке ядра (./tools/rebuild.sh) включим следующие опции:
1) Kernel hacking -> Compile time checks and compiler options -> Compile the kernel with debug info [*]
2) Kernel hacking -> Kgdb: Kernel Debugger [*]
3) Kernel Features -> Compile kernel in thumb-2 mode [] (отключаем сборку в режиме thumb-2, чтобы побороть ошибку Internal error: Oops - undefined instruction: 0 [#1] THUMB2)
Отредактируем /boot/uEnv.txt, добавим:
1) Kernel hacking -> Compile time checks and compiler options -> Compile the kernel with debug info [*]
2) Kernel hacking -> Kgdb: Kernel Debugger [*]
3) Kernel Features -> Compile kernel in thumb-2 mode [] (отключаем сборку в режиме thumb-2, чтобы побороть ошибку Internal error: Oops - undefined instruction: 0 [#1] THUMB2)
Отредактируем /boot/uEnv.txt, добавим:
optargs=kgdbwait kgdboc=ttyS0,115200
Запускаем BBB, вывод процесса загрузки по uart (sudo screen /dev/ttyUSB0 115200,cs8) остановился на:
[ 3.125478] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[ 3.125613] io scheduler noop registered
[ 3.125627] io scheduler deadline registered
[ 3.125660] io scheduler cfq registered (default)
[ 3.126677] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
[ 3.128057] Serial: 8250/16550 driver, 6 ports, IRQ sharing disabled
[ 3.130208] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 154, base_baud = 3000000) is a 8250
[ 3.939841] console [ttyS0] enabled
[ 3.944036] KGDB: Registered I/O driver kgdboc
[ 3.948520] KGDB: Waiting for connection from remote gdb...
[ 3.954150] Internal error: Oops - undefined instruction: 0 [#1] THUMB2
Entering kdb (current=0xdd8f3840, pid 1) due to Keyboard Entry
kdb>
Будем отлаживать через тот же uart. Собранный незаархивирванный образ ядра (Image) лежит здесь: /mnt/Data/Projects/LinuxKernel/4.1.38/bb-kernel/KERNEL/arch/arm/boot.
Клиент gdb (arm-linux-gnueabihf-gdb) лежит здесь: /mnt/Data/Projects/LinuxKernel/4.1.38/bb-kernel/dl/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/bin. Скидываем их в одну локальную папку (например, /mnt/Data/Projects/LinuxKernel/Debug), переходим в папку, запускаем:
cd /mnt/Data/Projects/LinuxKernel/Debug
arm-linux-gnueabihf-gdb -ex 'file vmlinuz-4.1.38-bone24' -ex 'target remote /dev/ttyUSB0'
Получаем:
Запускаем BBB, вывод процесса загрузки по uart (sudo screen /dev/ttyUSB0 115200,cs8) остановился на:
[ 3.125478] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[ 3.125613] io scheduler noop registered
[ 3.125627] io scheduler deadline registered
[ 3.125660] io scheduler cfq registered (default)
[ 3.126677] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
[ 3.128057] Serial: 8250/16550 driver, 6 ports, IRQ sharing disabled
[ 3.130208] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 154, base_baud = 3000000) is a 8250
[ 3.939841] console [ttyS0] enabled
[ 3.944036] KGDB: Registered I/O driver kgdboc
[ 3.948520] KGDB: Waiting for connection from remote gdb...
[ 3.954150] Internal error: Oops - undefined instruction: 0 [#1] THUMB2
Entering kdb (current=0xdd8f3840, pid 1) due to Keyboard Entry
kdb>
Будем отлаживать через тот же uart. Собранный незаархивирванный образ ядра (Image) лежит здесь: /mnt/Data/Projects/LinuxKernel/4.1.38/bb-kernel/KERNEL/arch/arm/boot.
Клиент gdb (arm-linux-gnueabihf-gdb) лежит здесь: /mnt/Data/Projects/LinuxKernel/4.1.38/bb-kernel/dl/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/bin. Скидываем их в одну локальную папку (например, /mnt/Data/Projects/LinuxKernel/Debug), переходим в папку, запускаем:
cd /mnt/Data/Projects/LinuxKernel/Debug
arm-linux-gnueabihf-gdb -ex 'file vmlinuz-4.1.38-bone24' -ex 'target remote /dev/ttyUSB0'
[adil@adil Debug]$ ./arm-linux-gnueabihf-gdb -ex 'file Image' -ex 'target remote /dev/ttyUSB0'
...
/dev/ttyUSB0: Device or resource busy.
Источники:
1) https://code-examples.net/en/q/4b6ff1
...
/dev/ttyUSB0: Device or resource busy.
1) https://code-examples.net/en/q/4b6ff1
6) http://nickdesaulniers.github.io/blog/2018/10/24/booting-a-custom-linux-kernel-in-qemu-and-debugging-it-with-gdb/
7) https://stackoverflow.com/questions/43291068/how-can-i-see-the-full-backtrace-using-kgdb-to-debug-an-arm-linux-module
8) https://github.com/beagleboard/linux/issues/133
9) https://pagefault.blog/2017/05/03/why-and-how-to-enable-arm-thumb-2-instruction-set-in-yocto/
7) https://stackoverflow.com/questions/43291068/how-can-i-see-the-full-backtrace-using-kgdb-to-debug-an-arm-linux-module
8) https://github.com/beagleboard/linux/issues/133
9) https://pagefault.blog/2017/05/03/why-and-how-to-enable-arm-thumb-2-instruction-set-in-yocto/
четверг, 31 октября 2019 г.
BBB lcd pins, frame buffer and overlays
Источники:
1) https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-BONE-LCD7-01-00A1.dts
2) https://beagleboard.org/blog/2018-01-17-building-a-device-tree-overlay-for-your-new-pocketcape-design
3) https://elinux.org/24bit_LCD_for_BBB
4) https://habr.com/ru/post/337226/
5) https://beagleboard.net/project/bbb-lcd-fbtft-prebuilt/
6) https://blog.littlevgl.com/2018-01-03/linux_fb
7) https://www.kernel.org/doc/Documentation/fb/framebuffer.txt
8) https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/tilcdc/tilcdc_panel.c
9) http://e2e.ti.com/support/processors/f/791/t/626242?Linux-AM3358-LCD-driver-configuration
10) http://processors.wiki.ti.com/index.php/AM335x_LCD_Controller_Driver%27s_Guide
11) http://processors.wiki.ti.com/index.php/AM335x_Touchscreen_Driver%27s_Guide
12) https://www.shortn0tes.com/2019/07/waveshare-5-lcd-beaglebone-black.html
13) https://www.kernel.org/doc/Documentation/devicetree/bindings/display/tilcdc/tilcdc.txt
14) https://github.com/torvalds/linux/tree/master/drivers/gpu/drm/tilcdc
понедельник, 28 октября 2019 г.
Запуск sshd на Fedora 30
Источники:
1) How to install, start and connect to SSH Server on Fedora Linux
https://linuxconfig.org/how-to-install-start-and-connect-to-ssh-server-on-fedora-linux
2) Как создать ключ для авторизации по SSH и добавить его на сервер?
https://firstvds.ru/technology/dobavit-ssh-klyuch
3) https://docs.fedoraproject.org/en-US/fedora/rawhide/system-administrators-guide/infrastructure-services/OpenSSH/
4) https://www.ssh.com/ssh/authorized_keys
5) https://www.ssh.com/ssh/authorized_keys/openssh
1) How to install, start and connect to SSH Server on Fedora Linux
https://linuxconfig.org/how-to-install-start-and-connect-to-ssh-server-on-fedora-linux
2) Как создать ключ для авторизации по SSH и добавить его на сервер?
https://firstvds.ru/technology/dobavit-ssh-klyuch
3) https://docs.fedoraproject.org/en-US/fedora/rawhide/system-administrators-guide/infrastructure-services/OpenSSH/
4) https://www.ssh.com/ssh/authorized_keys
5) https://www.ssh.com/ssh/authorized_keys/openssh
воскресенье, 27 октября 2019 г.
Портирование проекта c qt4 на qt5
В pro-файл легче всего добавить условную операцию, вводящую разные настройки в зависимости от версии Qt. Это можно сделать в pro-файле при помощи следующих операторов (test functions): equals , greaterThan, lessThan. Дополнительно, устанавливаем препроцессорную переменную окружения, которую в исходном коде можно будет обрабатывать при помощи #ifdef HAVE_QT5 и #if defined(HAVE_QT5) (отсюда).Мне кажется, легче всего так:
equals(QT_MAJOR_VERSION, 5){
DEFINES+=HAVE_QT5
QT += widgets
}
equals(QT_MAJOR_VERSION, 4) {
QT += gui
}
Источники:
1) https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5
2) https://doc.qt.io/qt-5/embedded-linux.html
3) https://www.linux.org.ru/forum/development/9500040
4) https://doc.qt.io/qt-5/qtquick-porting-qt5.html
5) https://habr.com/ru/post/164721/
6) http://jeniapalto.blogspot.com/2015/06/qt-4x-qt5.html
7) https://doc.qt.io/qt-5/qscriptengine.html
8) https://doc.qt.io/qt-5/qqmlengine.html
9) http://stackoverflow.com/questions/18663331/how-to-check-the-selected-version-of-qt-in-a-pro-file
10) http://doc.qt.io/qt-5/qmake-test-function-reference.html
DEFINES+=HAVE_QT5
QT += widgets
}
equals(QT_MAJOR_VERSION, 4) {
QT += gui
}
Источники:
1) https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5
2) https://doc.qt.io/qt-5/embedded-linux.html
3) https://www.linux.org.ru/forum/development/9500040
4) https://doc.qt.io/qt-5/qtquick-porting-qt5.html
5) https://habr.com/ru/post/164721/
6) http://jeniapalto.blogspot.com/2015/06/qt-4x-qt5.html
7) https://doc.qt.io/qt-5/qscriptengine.html
8) https://doc.qt.io/qt-5/qqmlengine.html
9) http://stackoverflow.com/questions/18663331/how-to-check-the-selected-version-of-qt-in-a-pro-file
10) http://doc.qt.io/qt-5/qmake-test-function-reference.html
пятница, 18 октября 2019 г.
четверг, 17 октября 2019 г.
Уроки по работе с периферией плат BeagleBoneBlack and RaspberryPi на Qt и питоне
1. BeagleBoneBlack.
Серии уроков:
1) Derek Molloy - Уроки на Qt C++
2) Paul McWhorter - Уроки на Python
Книги:
1) BeagleBone Essentials
2) Exploring BeagleBone
3) BeagleBone for Dummies
2. RaspberryPi
Серии уроков:
1) Derek Molloy - Уроки на Qt C++
2) Paul McWhorter - Уроки на Python
Книги:
1) Exploring RaspberryPi
Серии уроков:
1) Derek Molloy - Уроки на Qt C++
2) Paul McWhorter - Уроки на Python
Книги:
1) BeagleBone Essentials
2) Exploring BeagleBone
3) BeagleBone for Dummies
2. RaspberryPi
Серии уроков:
1) Derek Molloy - Уроки на Qt C++
2) Paul McWhorter - Уроки на Python
Книги:
1) Exploring RaspberryPi
четверг, 10 октября 2019 г.
Расшаривание на ноуте с виндой 10 wifi-инета по ethernet-соединению
Мы на телефоне сделали wifi точку доступа, хотим подключиться с ноута к ней и по ethernet-кабелю раздать инет подключенному устройству с линуксом. На ноуте стоит винда 10 с нативным американским языком.
1. На ноуте у имеющегося ethernet-соединения выставляем следующие параметры ip4:
1) статическое получение ip;
2) ip4 address - 192.168.1.1;
3) mask - 255.255.255.0;
4) отключаем расшаривание сети по этому адаптеру на вкладке sharing.
2. Настраиваем, если ещё не настроили, подключение по wifi ноута к телефону. Там будет стоять, скорее всего, ip4 подключение и динамическое получение адреса от dhcp-сервера, который работает на телефоне. На этом адаптере во вкладке sharing тоже отключаем расшаривание.
3. Выделяем во вкладке "Network connections" оба подключения мышкой, нажирмаем правую клавишу и выбираем "Bridge connection". Создается виртуальный "Network Bridge".
4. На линукс-устройстве вводим следующие параметры ip4:
1) статическое получение ip;
2) ip4 address - 192.168.1.2;
3) mask - 255.255.255.0;
4) gateway - 192.168.1.1;
5) dns - 192.168.1.1.
Источники:
1) https://answers.microsoft.com/en-us/windows/forum/windows_10-networking/internet-connection-sharing-in-windows-10/f6dcac4b-5203-4c98-8cf2-dcac86d98fb9
2) https://superuser.com/questions/563291/share-wi-fi-connection-over-ethernet
1. На ноуте у имеющегося ethernet-соединения выставляем следующие параметры ip4:
1) статическое получение ip;
2) ip4 address - 192.168.1.1;
3) mask - 255.255.255.0;
4) отключаем расшаривание сети по этому адаптеру на вкладке sharing.
2. Настраиваем, если ещё не настроили, подключение по wifi ноута к телефону. Там будет стоять, скорее всего, ip4 подключение и динамическое получение адреса от dhcp-сервера, который работает на телефоне. На этом адаптере во вкладке sharing тоже отключаем расшаривание.
3. Выделяем во вкладке "Network connections" оба подключения мышкой, нажирмаем правую клавишу и выбираем "Bridge connection". Создается виртуальный "Network Bridge".
4. На линукс-устройстве вводим следующие параметры ip4:
1) статическое получение ip;
2) ip4 address - 192.168.1.2;
3) mask - 255.255.255.0;
4) gateway - 192.168.1.1;
5) dns - 192.168.1.1.
Источники:
1) https://answers.microsoft.com/en-us/windows/forum/windows_10-networking/internet-connection-sharing-in-windows-10/f6dcac4b-5203-4c98-8cf2-dcac86d98fb9
2) https://superuser.com/questions/563291/share-wi-fi-connection-over-ethernet
среда, 9 октября 2019 г.
Уроки по unreal engine для создания игр в стиле tps, quest
Manual:
1) Learn Unreal Engine for Blender Users - UE4 Beginner Tutorial https://www.youtube.com/watch?v=3jM_VLzRqlE&ab_channel=UnrealSensei
Level design:
1) Level Design Timelapse in Unreal Engine using Megascans | Myrkur Games https://www.youtube.com/watch?v=L430pv3pCac&ab_channel=MyrkurGames
2) Brushify Bootcamp - Landscape sculpting and level design in Unreal Engine https://www.youtube.com/watch?v=MYqvBvR5LBQ&ab_channel=JoeGarth
3) A Guided Tour of Gameplay Abilities | Inside Unreal https://www.youtube.com/watch?v=YvXvWa6vbAA&ab_channel=UnrealEngine
ue4:
1) Общий туториал по движку от установки до игры (гипертекст): https://habr.com/ru/post/344394/
2) UE4 для Unity-разработчиков https://habr.com/ru/companies/vk/articles/327520/
3) Unreal против Unity: на чем лучше разрабатывать мобильные игры? https://habr.com/ru/companies/piter/articles/269415/
4) Итак, вы решили перейти с Unity на Unreal Engine https://habr.com/ru/articles/762076/
5) Создание Survival Horror в стиле RE2 на Unreal Engine и С++. Базовая настройка и импорт ассетов https://habr.com/ru/articles/675906/
Unreal Engine: QuickStart в Qt Creator под Arch Linux https://habr.com/ru/post/341756/
Уроки по созданию первой игры:
1) канал Devslopes (бесплатно доступна небольшая серия видеоуроков) https://www.youtube.com/watch?v=QJpfLkEsoek
2) канал Game Dev Academy (бесплатно доступна небольшая серия видеоуроков)
https://www.youtube.com/watch?v=a0qNO6_xPx0
3) канал Гоша Дударь (серия уроков) https://www.youtube.com/playlist?list=PL0lO_mIqDDFWoBtWz06nf9TAbI0LVOoQi
4) канал Unreal Engine Rus https://www.youtube.com/watch?v=qesvyI7_bgY
5) канал Virtus Learning Hub / Creative Tutorials https://www.youtube.com/watch?v=1M3S3eiJK5I
Уроки по созданию tps:
1) Unreal Engine https://www.youtube.com/watch?v=hRO82u1phyw
2) EvilEyeGames (playlist) https://www.youtube.com/playlist?list=PL4wXBehVu_5-SlRrhdvpd7RlczgJkfftG
3) MoCap Online https://www.youtube.com/watch?v=4KNqElZ6Sm8
4) Sg Unreal Creation https://www.youtube.com/watch?v=QrqKTN-ORzI
5) Medel Design https://www.youtube.com/watch?v=iZnv1FL0ux8
6) https://forums.unrealengine.com/community/community-content-tools-and-tutorials/64093-building-a-third-person-shooter
7) http://shootertutorial.com/tutorials/
Уроки по системы диалогов на unreal engine:
1) https://youtu.be/RBq-RqzhAL4
2) https://youtu.be/k2zC9pg6Eno
3) Создание редактора квестов и диалогов для Unreal engine: Часть 1 описание плагина https://habr.com/ru/post/318366/
Stepik:
1) Создание игр и приложений на Unreal Engine https://stepik.org/course/87797/syllabus
2) Введение в С++. Начало работы с Unreal Engine 4 https://stepik.org/course/92428/syllabus
вторник, 8 октября 2019 г.
unity3d third person shooter
Elder scroll, Dark Souls like:
1) Souls-like https://www.youtube.com/watch?v=-m9tDF2v-5Q&list=PL1bPKmY0c-wlpIpXUp-7wk6cuzhxRAfa5&index=1&ab_channel=SharpAccent
2) HOW TO CREATE DARK SOULS in UNITY https://www.youtube.com/watch?v=HKMo3pczQyc&list=PLD_vBJjpCwJtrHIW1SS5_BNRk6KZJZ7_d&index=1&ab_channel=SebastianGraves
Протагонист с мечом, одежда:
1) (!)Third Person System Tutorial Series Unity | 2017 https://www.youtube.com/playlist?list=PL8xcKsKsXEfvWsZIZuhV36I3f7DxTIStT
Протагонист с оружием и скриптинг антигероя (tps):
1) Third Person Shooter Redux https://www.youtube.com/watch?v=Zx56JAHEP1U&list=PL1bPKmY0c-wmfD6FzpuyFCmPPg3bwxMqe&ab_channel=SharpAccent
2) Stevie ROF (youtube playlist) https://www.youtube.com/playlist?list=PLJfktYG5YLJGK-ROk1Gj1_i8AtnIyeKTs
3) MrAndreykpd (на русском плэйлист из 18 уроков ) https://www.youtube.com/playlist?list=PLxElzWEX8XzPC9s9_85305OxTH3CyNou4
2) Stevie ROF (youtube playlist) https://www.youtube.com/playlist?list=PLJfktYG5YLJGK-ROk1Gj1_i8AtnIyeKTs
3) MrAndreykpd (на русском плэйлист из 18 уроков ) https://www.youtube.com/playlist?list=PLxElzWEX8XzPC9s9_85305OxTH3CyNou4
Climbing the wall, parkour system:
1) (!) How to make Parkour system(VAULTING)in Unity and Playmaker
2) Full Ledge Climbing System for Unity https://www.youtube.com/watch?v=O91pjnCWOl0&ab_channel=Filmstorm
3) [Unity 5] Tutorial: How to make a climbing system like in Assassins Creed in Unity https://www.youtube.com/playlist?list=PL47vwJBRNh1xzEvcLvXoJvjLcr1h0j-1O
4) (!)Climb System https://www.youtube.com/watch?v=k8kZ3-K8gcs&list=PL1bPKmY0c-wlGdXHNwGLnREWJcb7-4Rvo&ab_channel=SharpAccent
5) [01] [Oculus Quest] [Unity] Climbing System https://www.youtube.com/watch?v=XGdWIeyKmZE&ab_channel=VRwithAndrew
5) [01] [Oculus Quest] [Unity] Climbing System https://www.youtube.com/watch?v=XGdWIeyKmZE&ab_channel=VRwithAndrew
6) Botw Climb System https://www.youtube.com/watch?v=_pOJipOVTfg&list=PL1bPKmY0c-wmrLRSXiOx2sd9sk6u83QfR&ab_channel=SharpAccent
7) Advanced Third Person Controller https://www.youtube.com/watch?v=3YTR_9_Trsg&list=PL1bPKmY0c-wnvW9F4BDJMwDHmq2SQ8m3L&index=1&ab_channel=SharpAccent
Fighting system like in Assassin`s Creed:
1) Fight System Similar To Assassins Creed https://www.youtube.com/watch?v=xVMyd0SBVcQ&list=PL1bPKmY0c-wmmTqs4riryXAiZPt4pYlIO&ab_channel=SharpAccent
Цилиндр (npc) следует за главным героем (Follow AI):
1) (!)NPC Follow Player in Unity 3D https://sharpcoderblog.com/blog/npc-follow-player-in-unity-3d
5) Использование NavMesh для навигации ИИ в Unity https://habr.com/ru/articles/646039/
Follow AI (youtube):
2) (!)Unity 3D Simple Enemy Follow AI Script for NavMeshAgent Getting Started for Enemy AI or Behaviour https://www.youtube.com/watch?v=omQ_o10WD_g&ab_channel=MayankSanghvi
3) Unity 3D Simple Enemy Follow AI Script Without NavMeshAgent https://www.youtube.com/watch?v=drTcfhULpLA&ab_channel=MayankSanghvi
Follow AI (forum):
Commandos, Diablo like:
1) Advanced AI & Commandos-Like game https://www.youtube.com/watch?v=hKE8bqaGspM&list=PL1bPKmY0c-wn5J-hoUWTjZFAk8XkoZ9hl&index=1&ab_channel=SharpAccent
2) Basic Diablo-like Light Radius in Unity3D https://www.youtube.com/watch?v=VlP9Aeo4xqU&ab_channel=Tudvari
3) Unity3D Tutorial: Inventory (Diablo/POE Style) https://www.youtube.com/watch?v=9xz_kYJZ_zw&list=PLaKASd7MJVnzwmeaPeNJgrdxDKrso3fH8&ab_channel=NamanJain
4) Eternal Eclipse : Top-Down Survival Action RPG https://www.youtube.com/watch?v=2hiHwxPEPdg&list=PLaKASd7MJVnzOBYSs5JUYvMFxU8VK9XfJ&ab_channel=NamanJain
5) Unity3D : RPG Tutorial Diablo Style https://www.youtube.com/watch?v=EAiV7gZv69M&list=PLaKASd7MJVnzlqFAnOndK4gJ2aXp--23J&ab_channel=NamanJain
6) Unity2D Tutorial: Diablo Remake https://www.youtube.com/watch?v=YbwlUvnpulE&list=PLaKASd7MJVnwxAkM-CQxkas9DlzOALIuW&index=1&ab_channel=NamanJain
Официальные уроки: https://unity3d.com/ru/learn/tutorials
Уроки по unity3d для начинающих (gui, prefab etc):
1) https://unity3d.com/ru/learn/tutorials/s/interactive-tutorials
2) https://unity3d.com/ru/learn/tutorials/s/unity-playground
Уроки по созданию трехмерных игр в Unity3D (платный asset):
1) https://unity3d.com/ru/learn/tutorials/s/3d-game-kit
Уроки по unity3d для начинающих (gui, prefab etc):
1) https://unity3d.com/ru/learn/tutorials/s/interactive-tutorials
2) https://unity3d.com/ru/learn/tutorials/s/unity-playground
Уроки по созданию трехмерных игр в Unity3D (платный asset):
1) https://unity3d.com/ru/learn/tutorials/s/3d-game-kit
habr:
1) Создание шутера с LeoECS. Часть 1 https://habr.com/ru/post/573028/
2) Создание шутера с LeoECS. Часть 2 https://habr.com/ru/post/578054/
Концепция:
1) погоня за мухой (гэг)
2) комната с арт-объектами из пустых по содержанию, но формально типичных совковых объявлений "в соответствии с законом росрегулирования искусства смотреть на белую стену строжайше запрещено, можно только с разрешения сторожа и т.д."
3) локация с открыпанием дома, который постепенно засыпает песок (Кобо Абэ "Женщина в песках")
4) вид fps, игрок-ёжик идёт в тумане, ищет грибы, может наткнуться на дерево или кого-то ещё;
5) вид tps, игрок должен добежать до финиша, сверху падают большие кубы, выростают горы;
6) сделать компилятор с языка sarte, собранный бинарник представляет из себя локацию из "Тошноты" или "Слов";
7) галерея, в которой при начальной подгрузке генерятся полотна абстрактной живописи;
8) бросание шарика в стакан (на телефоне)
9) механика из сделанной игры на английском: буква в изометрии пытается преодолеть препятствия, задействован микрофон - при назывании звука буква на экране трансформируется и может легче преодолеть нужное препятствие, надо сделать на русском
10) раскрыть метафору холивара и устроить rts, например, поклонников windows и linux
11) регулирование политики через законодательный последовательный беспредел (диктатуры Гитлера, Сталина, законы госдумы РФ 2011-2022 и т.д.)
Unity3d ide problems:
1) "Could not establish a connection with Unity Package Manager” https://support.unity.com/hc/en-us/articles/360044381032-I-cannot-open-Unity-and-I-am-stuck-with-a-message-saying-Could-not-establish-a-connection-with-Unity-Package-Manager-what-can-I-do-
Brackeys:
1) THIRD PERSON MOVEMENT in Unity https://www.youtube.com/watch?v=4HpC--2iowE&ab_channel=Brackeys
понедельник, 7 октября 2019 г.
Внутреннее устройство stl-контейнеров и алгоритмическая сложность
Абстрактные типы данных (abstract data types):
1) Стек
2) Очередь
3) Очередь с приоритетом (priority queue, https://acm.khpnets.info/)
4) Массив
5) Динамический массив
6) Связный список
7) Ассоциативный массив
Хабр:
1) Стек
2) Очередь
3) Очередь с приоритетом (priority queue, https://acm.khpnets.info/)
4) Массив
5) Динамический массив
6) Связный список
7) Ассоциативный массив
Хабр:
Структуры данных (data structures):
1) Кольцевой буфер
2) Calendar queue
3) Двусторонняя очередь (deque)
4) Куча
5) B-tree
6) Двоичное дерево
8) Двоичная куча (английская полнее https://en.wikipedia.org/wiki/Binary_heap,
иитмо https://neerc.ifmo.ru/, визуализация https://www.cs.usfca.edu/~galles/visualization/Heap.html)
13) Hash table
14) Фильтр Блума
(!)Устройство бинарных деревьев поиска:
- вики:
1) Кольцевой буфер
2) Calendar queue
3) Двусторонняя очередь (deque)
4) Куча
5) B-tree
6) Двоичное дерево
8) Двоичная куча (английская полнее https://en.wikipedia.org/wiki/Binary_heap,
иитмо https://neerc.ifmo.ru/, визуализация https://www.cs.usfca.edu/~galles/visualization/Heap.html)
9) Биномиальная куча
10) Фибоначчиевая куча
11) Префиксное дерево (cтатья на английском полнее https://en.wikipedia.org/wiki/Trie)
12) Сжатое префиксное дерево (cтатья на английском полнее https://en.wikipedia.org/wiki/Radix_tree)10) Фибоначчиевая куча
11) Префиксное дерево (cтатья на английском полнее https://en.wikipedia.org/wiki/Trie)
13) Hash table
14) Фильтр Блума
(!)Устройство бинарных деревьев поиска:
- вики:
1) Двоичное дерево поиска
2) Бинарные деревья поиска и рекурсия – это просто https://habr.com/ru/post/267855/
2) B-дерево
- обзорные статьи:
1) https://tproger.ru/translations/binary-search-tree-for-beginners/2) Бинарные деревья поиска и рекурсия – это просто https://habr.com/ru/post/267855/
3) Структуры данных: бинарные деревья. Часть 1 https://habr.com/ru/post/65617/
- реализация:
2) Основы B-деревьев (внутреннее устройство БД)
3) Лекции 13-14: деревья поиска, почти сбалансированные деревья.
Красно-черные деревья и реализация множества на их основе http://mech.math.msu.su/~vvb/2course/Borisenko/lecTree.html
Префиксное дерево:
1) Префиксное дерево (cтатья на английском полнее https://en.wikipedia.org/wiki/Trie)
2) Сжатое префиксное дерево (cтатья на английском полнее https://en.wikipedia.org/wiki/Radix_tree)
3) Чем хороши префиксные деревья? https://otus.ru/nest/post/676/
4) Trie, или нагруженное дерево https://habr.com/ru/post/111874/
5) Сжатые префиксные деревья https://habr.com/ru/post/151421/
6) K-d дерево
7) Анатомия KD-Деревьев https://habr.com/ru/post/312882/
8) К-d деревья и перечисление точек в произвольном прямоугольнике (статика)
9) http://www.ray-tracing.ru/articles181.html
10) KD-деревья и R-деревья https://fat-crocodile.livejournal.com/156564.html
Реализация динамического массива на си c автоматическим расширением размера выделенной памяти в случае необходимости:
1) Аналог std::vector из C++11 на чистом C89 и как я его писал https://habr.com/ru/post/324210/
2) https://prog-cpp.ru/c-alloc/
Реализации односвязного списка на си:
1) https://prog-cpp.ru/data-ols/
2) http://acm.mipt.ru/twiki/bin/view/Cintro/SimpleList
Реализация очереди с приоритетами на базе двоичной кучи, реализованной через статический массив:
1) Двоичная куча (английская полнее https://en.wikipedia.org/wiki/Binary_heap,
иитмо https://neerc.ifmo.ru/)
2) https://ru.stackoverflow.com/
3) https://www.geeksforgeeks.org/building-heap-from-array/
Источники:
1) Qt Container Classes (wiki) https://doc.qt.io/qt-5/containers.html
2) Библиотека стандартных шаблонов (STL) (вики)
3) http://stepanovpapers.com/STL/DOC.PDF
4) Степанов, Ли - Руководство по стандартной библиотеке шаблонов (STL)
https://rsdn.org/article/cpp/stl.xml (немного косячный перевод)
5) http://www.martinbroadhurst.com/stl/
Реализация связного списка на C++ с шаблонами (аналога std::list):
1) Односвязный список на C++ http://itnotesblog.ru/note.php?id=178
2) STL для новичков. Реализация класса-контейнера https://habr.com/ru/post/187010/
Очередь с приоритетами на C++ с шаблонами:
1) адаптер std::priority_queue https://en.cppreference.com/w/cpp/container/priority_queue
2) https://www.bestprog.net/ru/2019/09/29/c-an-example-implementation-of-a-priority-queue-for-a-template-class-implementation-as-a-dynamic-array-ru/
3) https://ru.wikibooks.org
1) Префиксное дерево (cтатья на английском полнее https://en.wikipedia.org/wiki/Trie)
2) Сжатое префиксное дерево (cтатья на английском полнее https://en.wikipedia.org/wiki/Radix_tree)
3) Чем хороши префиксные деревья? https://otus.ru/nest/post/676/
4) Trie, или нагруженное дерево https://habr.com/ru/post/111874/
5) Сжатые префиксные деревья https://habr.com/ru/post/151421/
6) K-d дерево
7) Анатомия KD-Деревьев https://habr.com/ru/post/312882/
8) К-d деревья и перечисление точек в произвольном прямоугольнике (статика)
9) http://www.ray-tracing.ru/articles181.html
10) KD-деревья и R-деревья https://fat-crocodile.livejournal.com/156564.html
Реализация динамического массива на си c автоматическим расширением размера выделенной памяти в случае необходимости:
1) Аналог std::vector из C++11 на чистом C89 и как я его писал https://habr.com/ru/post/324210/
2) https://prog-cpp.ru/c-alloc/
Реализации односвязного списка на си:
1) https://prog-cpp.ru/data-ols/
2) http://acm.mipt.ru/twiki/bin/view/Cintro/SimpleList
Реализация очереди с приоритетами на базе двоичной кучи, реализованной через статический массив:
1) Двоичная куча (английская полнее https://en.wikipedia.org/wiki/Binary_heap,
иитмо https://neerc.ifmo.ru/)
2) https://ru.stackoverflow.com/
3) https://www.geeksforgeeks.org/building-heap-from-array/
Источники:
1) Qt Container Classes (wiki) https://doc.qt.io/qt-5/containers.html
2) Библиотека стандартных шаблонов (STL) (вики)
3) http://stepanovpapers.com/STL/DOC.PDF
4) Степанов, Ли - Руководство по стандартной библиотеке шаблонов (STL)
https://rsdn.org/article/cpp/stl.xml (немного косячный перевод)
5) http://www.martinbroadhurst.com/stl/
Реализация связного списка на C++ с шаблонами (аналога std::list):
1) Односвязный список на C++ http://itnotesblog.ru/note.php?id=178
2) STL для новичков. Реализация класса-контейнера https://habr.com/ru/post/187010/
Очередь с приоритетами на C++ с шаблонами:
1) адаптер std::priority_queue https://en.cppreference.com/w/cpp/container/priority_queue
2) https://www.bestprog.net/ru/2019/09/29/c-an-example-implementation-of-a-priority-queue-for-a-template-class-implementation-as-a-dynamic-array-ru/
3) https://ru.wikibooks.org
Алгоритмы сортировки:
1) Пузырьковая сортировка и все-все-все https://habr.com/ru/articles/204600/
Книги по STL:
1) Леен Аммерааль - STL для программистов на C++ https://vk.com/wall-18822808_8289
1) Леен Аммерааль - STL для программистов на C++ https://vk.com/wall-18822808_8289
2) Скотт Мэйерс - Эффективный STL https://yadi.sk/i/miCReUNP3j7ECQ
3) Бьярн Страуструп - Язык программирования C++ https://yadi.sk/i/OaOuAQWWeEm9GQ
4) Джосьютис - Стандартная библиотека C++ https://yadi.sk/i/frVPf5aREhHqQA
Книги по алгоритмам:
1) Кормен, Лейзертон, Риверст, Штайн - Алгоритмы
2) Кнут Д. - Тома 1, 2, 3
3) Вирт Н. - Алгоритмы (pascal, modula-2)
Примеры реализаций алгоритмов на c, c++:
1) Язык Си в примерах (викиучебник)
2) Реализация алгоритмов (викиучебник)
3) http://acm.mipt.ru/twiki/bin/view/Algorithms/WebHome
4) http://algolist.manual.ru/
5) https://habr.com/ru/post/146793/
3) Бьярн Страуструп - Язык программирования C++ https://yadi.sk/i/OaOuAQWWeEm9GQ
4) Джосьютис - Стандартная библиотека C++ https://yadi.sk/i/frVPf5aREhHqQA
Книги по алгоритмам:
1) Кормен, Лейзертон, Риверст, Штайн - Алгоритмы
2) Кнут Д. - Тома 1, 2, 3
3) Вирт Н. - Алгоритмы (pascal, modula-2)
Примеры реализаций алгоритмов на c, c++:
1) Язык Си в примерах (викиучебник)
2) Реализация алгоритмов (викиучебник)
3) http://acm.mipt.ru/twiki/bin/view/Algorithms/WebHome
4) http://algolist.manual.ru/
5) https://habr.com/ru/post/146793/
Вопросы:
1) типы указателей в c++11 (unique_ptr, shared_ptr, weak_ptr):
- Без new: Указатели будут удалены из C++ https://habr.com/ru/post/352570/
- Smart pointers для начинающих https://habr.com/ru/post/140222/
- weak_ptr:
2) какая алгоритмическая сложность у map, у unordered_map:
- Потокобезопасный std::map с производительностью lock-free map https://habr.com/ru/post/328374/
3) чему равна высота сбалансированного дерева поиска в 1000000 элементов?
4) в чем проявляется сбалансированность дерева поиска?
5) какие структуры данных дают поиск за логарифмическое время? (map)
6) зачем нужен map, если unordered_map всегда выдает более быстрый результат?
7) какие структуры данных выдают результат за линейное время? (vector)
Вопросы с собеседований:
1) Популярные вопросы на собеседовании по C++ и ответы на них https://habr.com/ru/post/117996/
2) Дебри графики или как пройти собеседование на программиста компьютерной графики в GameDev https://habr.com/ru/post/561372/
Теория:
ШАД:
1) Прием https://yandexdataschool.ru/enroll
2) Решения вступительных испытаний в ШАД https://efiminem.github.io/supershad/
3) Полный разбор экзамена ШАД-2019 https://habr.com/ru/post/487680/
4) Поступление в ШАД глазами куратора и студента https://academy.yandex.ru/posts/postuplenie-v-shad-glazami-kuratora-i-studenta
5) Ритуал поступления https://academy.yandex.ru/posts/beri-i-delay-sovety-blogera-kotoryy-smog-postupit-v-shad
7) Разбор задач для поступления в ШАД https://yandexdataschool.ru/stepbystep
yandex:
2) Как проходят алгоритмические секции на собеседованиях в Яндекс https://habr.com/ru/company/yandex/blog/449890/
спортивное программирование:
1) Спортивное программирование — социальный лифт в IT. Как его использовать школьнику, родителям школьника и разработчику? https://habr.com/ru/company/it_people/blog/583280/
2) Спортивное программирование https://astanahub.com/blog/sportivnoe-programmirovanie1617782868?locale=ru
3) Олимпиадное программирование https://tproger.ru/tag/competitive-programming/
6) Спортивное программирование https://stepik.org/course/53634/promo
10) ACM
17) A+B
Собеседование в it:
1) Как пройти собеседование в IT-компанию https://vc.ru/hr/263806-kak-proyti-sobesedovanie-v-it-kompaniyu
2) Подготовка к собеседованиям в IT-гиганты: как я преодолела проклятье алгоритмического собеседования https://habr.com/ru/post/499394/
3) Как я оклад 2х хотел https://habr.com/ru/post/657619/
4) Моя история прохождения интервью в IB IT (Java разработчик, investment bank) в Лондоне с примерами типичных заданий https://habr.com/ru/articles/430788/
leetcode:
2) Есть ли польза от решения алгоритмических задач на LeetCode? https://habr.com/ru/articles/709550/
3) Нужно читать академические статьи в Computer Science https://habr.com/ru/companies/skillfactory/articles/710822/
Реализация упорядоченного множества на c и c++:
3) Алгоритмы и структуры данных для начинающих: двоичное дерево поиска https://tproger.ru/translations/binary-search-tree-for-beginners/
4) Структуры данных: бинарные деревья https://habr.com/ru/articles/65617/
Подписаться на:
Сообщения (Atom)