Skip to content

Instantly share code, notes, and snippets.

View Oxore's full-sized avatar

Vladimir Novikov Oxore

  • Saint Petersburg, Russia
View GitHub Profile
@Oxore
Oxore / c-leak.cpp
Last active August 7, 2017 19:16
Утечка в коде как в сях
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
int main()
{
void *a;
long int n = 10000000;
@Oxore
Oxore / cpp-leak.cpp
Created August 7, 2017 19:23
А теперь чисто крестовая утечка
#include <iostream>
#include <string.h>
#include <stdlib.h>
#define N 10000000
using namespace std;
class ss {
public:
@Oxore
Oxore / PKGBUILD
Created March 11, 2018 00:13
cal3d-git Arch Linux PKGBUILD
pkgname=cal3d-git
pkgver=0.120.r57.geb46227
pkgrel=1
pkgdesc="A skeletal-based 3D character animation library"
arch=(i686 x86_64)
url="https://mp3butcher.github.io/Cal3D/"
options=(!libtool) license=('GPL2')
depends=('gcc-libs')
makedepends=('subversion' 'cmake')
conflicts=('cal3d')
@Oxore
Oxore / Makefile
Last active April 13, 2018 14:21
C++ project simple Makefile boilerplate (with Google Test)
CXX=g++
RM=rm
Q=@
QQ=@
SRC=src
BUILD=build
SOURCES=$(wildcard $(SRC)/*.cpp)
OBJECTS:=$(patsubst $(SRC)/%.cpp,$(BUILD)/%.o,$(SOURCES))
@Oxore
Oxore / Makefile
Last active February 23, 2019 12:38
C Boilerplate Makefile
RM=rm
Q=@
SRC=src
BUILD=build
SOURCES=$(wildcard $(SRC)/*.c)
OBJECTS:=$(patsubst $(SRC)/%.c,$(BUILD)/%.o,$(SOURCES))
INCLUDE:=./include
@Oxore
Oxore / .clang-format
Last active October 13, 2018 15:33
My own C code style
---
BasedOnStyle: LLVM
# Strict
AllowShortIfStatementsOnASingleLine: false
BreakBeforeBinaryOperators: All
BreakBeforeBraces: Linux
BreakBeforeTernaryOperators: true
IndentCaseLabels: false
@Oxore
Oxore / painter-handle-pattern.md
Last active July 1, 2018 11:17
Паттерн handle для реализации двухмерного отрисовщика (Черновик)

Паттерн handle для реализации двухмерного отрисовщика (Черновик)

Задача

Необходимо отделить типы данных, с которыми работает логика приложения от типов данных, предоставляемых графической прослойкой (например SFML или SDL). Такое абстрагирование и сегрегация сделает тестирование проще, а архитектуру чище.

Например есть объект и его надо отрисовать. Пусть это будет текст. Такая структура содержит текст и его позицию.

struct text {
	vector2f pos;
@Oxore
Oxore / Headers.md
Last active July 28, 2019 10:51
Заметка про хедеры

Хедеры

Хедеры (header files, headers) существуют, чтобы определить интерфейс доступа к функциональности модулей и даже целых библиотек путём описания прототипов функций, новых типов данных, глобальных переменных и дефиниций.

Хедер не должен содержать компилируемый код

Но давайте представим, что имеется хедер какой-либо библиотеки, в котором объявлена функция с неиспользуемым аргументом, а ваш проект компилируется с помощью GCC/Clang с флагами -Wall -Wextra -Werror и всё падает на тех модулях, которые включают этот злополучный хедер. В итоге из-за сраного хедера вы не можете использовать -Werror вообще, а если вас раздражают предупреждения, то и от -Wextra придётся отказаться.

Ещё одна проблема, вызываемая компилируемым кодом в хедерах - это то, что его придётся компилировать. Особенно забавно выглядит костыль, решающий эту проблему, под названием предварительная компиляция хедеров (precompiled headers). Более того, этот костыль очень трудно поддерживается системами сборки. Хотя в виде контраргу

@Oxore
Oxore / README.md
Last active October 13, 2018 15:50
QEMU NAT

Put in /etc/qemu/bridge.conf:

allow bridge0

Run as

sudo ./bridge-up.sh
sudo ./firewall.sh
./qemu.sh
@Oxore
Oxore / blur.c
Last active December 7, 2018 23:57
CSFML multi-pass blur shader example
/*
* Compile with:
* gcc -oblur blur.c -lcsfml-graphics
*
* XXX #1:
* How to use shaders in CSFML:
* - https://en.sfml-dev.org/forums/index.php?topic=9767.0
*
* XXX #2:
* Gaussian Blur with link inside a thread to a book about SFML: