Skip to content

Instantly share code, notes, and snippets.

View max-dark's full-sized avatar

Maxim Timakov max-dark

View GitHub Profile
@max-dark
max-dark / gpio_v2.cpp
Created January 22, 2024 21:25
Play with Linux GPIO API v2
// Play with Linux GPIO API v2
// based on https://github.com/torvalds/linux/tree/v6.1/tools/gpio
// compile: g++ -std=c++17 gpio_v2.cpp -o btn-watch-v2
#include <iostream>
#include <iomanip>
#include <string>
#include <string_view>
#include <chrono>
@max-dark
max-dark / grpc_generate_cpp.cmake
Last active October 15, 2023 18:30
generate cpp files for gRPC service
##@brief grpc_generate_cpp
##@param in,required PROTO_FILES
##@param in,optional PROTO_INCLUDES
##@param in,required OUT_DIR
##@param out,required OUT_SRCS
##@param out,required OUT_HDRS
function(grpc_generate_cpp)
set(args OUT_SRCS OUT_HDRS OUT_DIR)
set(inp_args PROTO_FILES PROTO_INCLUDES)
@max-dark
max-dark / configure-o3de.bat
Last active August 21, 2021 17:39
o3de build configuration
@rem configure O3DE for windows
setlocal
set ROOT=C:\root\path\for\o3de
set INSTALL=%ROOT%\o3de-bin
set BUILD=%ROOT%\o3de-build
set PACKAGES=%ROOT%\o3de-packages
set SOURCE=%ROOT%\o3de
set GENARATOR=-G "Visual Studio 16 2019"
@max-dark
max-dark / merge_sort.cxx
Created November 25, 2020 18:30
merge sort
// https://en.wikipedia.org/wiki/Merge_sort
#include <iostream>
#include <iomanip>
#include <cstddef>
#include <cassert>
using std::size_t;
@max-dark
max-dark / graham.cxx
Created November 21, 2020 19:03
Convex hull / Graham scan
auto comparePoints(const QPointF& a, const QPointF& b)
{
return a.x() < b.x() || (a.x() == b.x() && a.y() < b.y());
}
auto convex_hull_graham(QPolygonF& points)
{
if (points.size() <= 1) return points;
QPolygonF result, up, down;
#include "buffer.hxx"
#include <filesystem>
#include <fstream>
#include <ios>
namespace fs = std::filesystem;
namespace Scan
{
@max-dark
max-dark / numbereditor.cxx
Created September 25, 2020 18:57
Qt5 custom QDoubleSpinBox
#include "numbereditor.hxx"
namespace Schematics::Ui::Widgets
{
NumberEditor::NumberEditor(QWidget *parent)
: QDoubleSpinBox(parent)
{
setSuffix(" mm");
setDecimals(1);
setAlignment(Qt::AlignRight);
@max-dark
max-dark / CMakeLists.txt
Created September 20, 2020 13:19
custom gfx text item
cmake_minimum_required(VERSION 3.10)
project(examples LANGUAGES CXX)
set(CMAKE_CXX_STANDART 14)
set(CMAKE_CXX_STANDART_REQUIRED ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOMOC ON)
@max-dark
max-dark / fizz_buzz.cxx
Last active January 23, 2020 16:46
fizz buzz without "if"
// task: https://en.wikipedia.org/wiki/Fizz_buzz
// compile: g++ -std=c++14 -Wall -Wpedantic -Werror fizz_buzz.cxx -o fizz_buzz
#include <iostream>
#include <string>
namespace
{
std::string solve(int num);
}
int main()
@max-dark
max-dark / block_pool.c
Last active January 21, 2020 00:01
simple on-array allocator
// task: create two queues that will be located in one array of a fixed size
// solution: create a pool of blocks in this array.
// http://www.cyberforum.ru/algorithms/thread2569313.html
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include <assert.h>
// настройки типов