Skip to content

Instantly share code, notes, and snippets.

@mbinna
mbinna / effective_modern_cmake.md
Last active April 12, 2025 02:22
Effective Modern CMake

Effective Modern CMake

Getting Started

For a brief user-level introduction to CMake, watch C++ Weekly, Episode 78, Intro to CMake by Jason Turner. LLVM’s CMake Primer provides a good high-level introduction to the CMake syntax. Go read it now.

After that, watch Mathieu Ropert’s CppCon 2017 talk Using Modern CMake Patterns to Enforce a Good Modular Design (slides). It provides a thorough explanation of what modern CMake is and why it is so much better than “old school” CMake. The modular design ideas in this talk are based on the book [Large-Scale C++ Software Design](https://www.amazon.de/Large-Scale-Soft

@moeiscool
moeiscool / ffmpegToWeb.js
Last active January 27, 2025 16:29
FFMPEG to Web Browser with Express, Socket.IO and JSMPEG
// Shinobi (http://shinobi.video) - FFMPEG H.264 over HTTP Test
// How to Use raw H.264 (Simulated RTSP)
// 1. Start with `node ffmpegToWeb.js`
// 2. Get the IP address of the computer where you did step 1. Example : 127.0.0.1
// 3. Open VLC and "Open Network Stream".
// 4. Input the following without quotes : `http://127.0.0.1:8001/h264` and start.
var child = require('child_process');
var io = require('socket.io');
var events = require('events');
@emoacht
emoacht / KeyValuePairExtension.cs
Created March 10, 2017 11:10
Deconstruct extension method for KeyValuePair in C# 7
public static class KeyValuePairExtension
{
public static void Deconstruct<TKey, TValue>(this KeyValuePair<TKey, TValue> source, out TKey Key, out TValue Value)
{
Key = source.Key;
Value = source.Value;
}
}
@rharkanson
rharkanson / RandomBigInteger.cs
Created March 1, 2017 01:35
RandomBigInteger - An extension to the C# Random class for generating random BigIntegers
using System;
using System.Numerics;
namespace System.Numerics
{
class RandomBigInteger : Random
{
public RandomBigInteger() : base()
{
}
@Emzi0767
Emzi0767 / YtAudio.cs
Last active June 4, 2021 09:12
YouTube audio stream url extractor
// requires Jint
//
// this can be used for video streams as well, with few modifications
public async Task<string> GetYtAudioUrl(string id)
{
await Task.Yield();
var utf8 = new UTF8Encoding(false);
var wc = new WebClient();
@yasirkula
yasirkula / FileDownloader.cs
Last active April 12, 2025 21:29
C# Download Public File From Google Drive™ (works for large files as well)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Net;
using System.Text;
/* EXAMPLE USAGE
FileDownloader fileDownloader = new FileDownloader();
@omnibs
omnibs / 101-rx-samples.md
Last active March 22, 2025 11:58
101 Rx Samples in C#

101 Rx Samples in C#

This was taken from http://rxwiki.wikidot.com/101samples, because I wanted to be able to read it more comfortable with syntax highlighting.

Here's the unedited original, translated to Github Markdown glory:

101 Rx Samples - a work in progress

@trinnguyen
trinnguyen / MyApplication.cs
Created February 27, 2016 08:33
Xamarin.Android override Application class to get global Context
using System;
using Android.App;
namespace MyApp.Droid
{
[Application(Theme = "@style/MyMaterialTheme")]
public class MyApplication : Application
{
public static Android.Content.Context CurrentContext { get; private set; }
@mfuerstenau
mfuerstenau / zigzag-encoding.README
Last active April 8, 2025 02:03
ZigZag encoding/decoding explained
ZigZag-Encoding
---------------
Maps negative values to positive values while going back and
forth (0 = 0, -1 = 1, 1 = 2, -2 = 3, 2 = 4, -3 = 5, 3 = 6 ...)
(i >> bitlength-1) ^ (i << 1)
with "i" being the number to be encoded, "^" being
XOR-operation and ">>" would be arithemtic shifting-operation
public class ConcurrentList<T> : IList<T>, IDisposable
{
private ReaderWriterLockSlim _lock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
private int _count = 0;
public int Count
{
get
{
_lock.EnterReadLock();