ps - Problem Solving

  •        15

ps is a collection of various computing problems and their corresponding solutions that I could think of. The problems range in various categories such as design, algorithms, performance optimizations, and more. Feel free to add a Github issue for any discrepancy, typo, alternatives, or a different solution that I might not have considered. Also feel free to add issues for problems that you would like me to work upon - though it may take me a few days to research and jot my notes here.

https://github.com/sangupta/ps

Tags
Implementation
License
Platform

   




Related Projects

BoomFilters - Probabilistic data structures for processing continuous, unbounded streams.

  •    Go

Boom Filters are probabilistic data structures for processing continuous, unbounded streams. This includes Stable Bloom Filters, Scalable Bloom Filters, Counting Bloom Filters, Inverse Bloom Filters, Cuckoo Filters, several variants of traditional Bloom filters, HyperLogLog, Count-Min Sketch, and MinHash.Classic Bloom filters generally require a priori knowledge of the data set in order to allocate an appropriately sized bit array. This works well for offline processing, but online processing typically involves unbounded data streams. With enough data, a traditional Bloom filter "fills up", after which it has a false-positive probability of 1.

cfilter - Cuckoo Filter implementation in Go, better than Bloom Filters (unmaintained, unfortunately)

  •    Go

Cuckoo filter is a Bloom filter replacement for approximated set-membership queries. Cuckoo filters support adding and removing items dynamically while achieving even higher performance than Bloom filters. For applications that store many items and target moderately low false positive rates, cuckoo filters have lower space overhead than space-optimized Bloom filters. Some possible use-cases that depend on approximated set-membership queries would be databases, caches, routers, and storage systems where it is used to decide if a given item is in a (usually large) set, with some small false positive probability. Alternatively, given it is designed to be a viable replacement to Bloom filters, it can also be used to reduce the space required in probabilistic routing tables, speed longest-prefix matching for IP addresses, improve network state management and monitoring, and encode multicast forwarding information in packets, among many other applications. Cuckoo filters provide the flexibility to add and remove items dynamically. A cuckoo filter is based on cuckoo hashing (and therefore named as cuckoo filter). It is essentially a cuckoo hash table storing each key's fingerprint. Cuckoo hash tables can be highly compact, thus a cuckoo filter could use less space than conventional Bloom filters, for applications that require low false positive rates (< 3%).

bloomd - C network daemon for bloom filters

  •    C

Bloomd is a high-performance C server which is used to expose bloom filters and operations over them to networked clients. It uses a simple ASCII protocol which is human readable, and similar to memcached. Bloom filters are a type of sketching or approximate data structure. They trade exactness for efficiency of representation. Bloom filters provide a set-like abstraction, with the important caveat that they may contain false-positives, meaning they may claim an element is part of the set when it was never in fact added. The rate of false positives can be tuned to meet application demands, but reducing the error rate rapidly increases the amount of memory required for the representation.

bloom - Go package implementing Bloom filters

  •    Go

A Bloom filter is a representation of a set of n items, where the main requirement is to make membership queries; i.e., whether an item is a member of a set.A Bloom filter has two parameters: m, a maximum size (typically a reasonably large multiple of the cardinality of the set to represent) and k, the number of hashing functions on elements of the set. (The actual hashing functions are important, too, but this is not a parameter for this implementation). A Bloom filter is backed by a BitSet; a key is represented in the filter by setting the bits at each value of the hashing functions (modulo m). Set membership is done by testing whether the bits at each value of the hashing functions (again, modulo m) are set. If so, the item is in the set. If the item is actually in the set, a Bloom filter will never fail (the true positive rate is 1.0); but it is susceptible to false positives. The art is to choose k and m correctly.

python-bloomfilter - Scalable Bloom Filter implemented in Python

  •    Python

P. Almeida, C.Baquero, N. Preguiça, D. Hutchison, Scalable Bloom Filters, (GLOBECOM 2007), IEEE, 2007. Bloom filters are great if you understand what amount of bits you need to set aside early to store your entire set. Scalable Bloom Filters allow your bloom filter bits to grow as a function of false positive probability and size.


cuckoofilter

  •    C++

Cuckoo filter is a Bloom filter replacement for approximated set-membership queries. While Bloom filters are well-known space-efficient data structures to serve queries like "if item x is in a set?", they do not support deletion. Their variances to enable deletion (like counting Bloom filters) usually require much more space. Cuckoo filters provide the flexibility to add and remove items dynamically. A cuckoo filter is based on cuckoo hashing (and therefore named as cuckoo filter). It is essentially a cuckoo hash table storing each key's fingerprint. Cuckoo hash tables can be highly compact, thus a cuckoo filter could use less space than conventional Bloom filters, for applications that require low false positive rates (< 3%).

bloomd - A high performance C server for bloom filters

  •    C

A high performance C server for bloom filters

whatlanguage - A language detection library for Ruby that uses bloom filters for speed.

  •    Ruby

Text language detection. Quick, fast, memory efficient, and all in pure Ruby. Uses Bloom filters for aforementioned speed and memory benefits. It works well on texts of over 10 words in length (e.g. blog posts or comments) and very poorly on short or Twitter-esque text, so be aware. Works with Dutch, English, Farsi, French, German, Italian, Pinyin, Swedish, Portuguese, Russian, Arabic, Finnish, Greek, Hebrew, Hungarian, Korean, Norwegian, Polish and Spanish out of the box.

pybloomfiltermmap - Fast Python Bloom Filter using Mmap

  •    Python

The goal of pybloomfiltermmap is simple: to provide a fast, simple, scalable, correct library for Bloom Filters in Python.

mastering-modular-javascript - 📦 Module thinking, principles, design patterns and best practices.

  •    HTML

📦 Module thinking, principles, design patterns and best practices. Modular JavaScript is a book series with the mission of improving our collective understanding of writing robust, well-tested, modular JavaScript code. Mastering Modular JavaScript is the second book in the series, and it discusses modular JavaScript application development. Mastering Modular JavaScript includes hundreds of real-world patterns and practices, as well as detailed explanations of what works and what hasn’t when it comes to leveraging ES6 in the wild.

NSketch, .Net sketch-based algorithms

  •    CSharp

The NSketch library provides implementations of most common sketch-based algorithms (histograms, quantile, frequent items, bloom filter ...). The library is written in C# for .Net.

Video Processing Project

  •    C++

Video processing source code for algorithms and tools used in software media pipelines. The currently available source code is written in C++ with their associated libraries and DirectShow Filters. Filters include an H.264 encoder, H.264 decoder, H.264 source filter, YUV source, RGB to YUV color conversion, croppers, scalers, video mixing/picture in picture filters, rotate filter, and many more. Code is released under BSD license with exception of H.264 codec related classes which are rele

ant-ux - :guitar: A sitemap template for ux design

  •    Javascript

This is a materials library which assists designers to define, refine and finalise the inter-page logic of their products. At the early stage of the product design process, you can use it to draw the logic diagram between pages. Throughout this process, it can help you visualise and understand product architectures and business processes more easily. OmniGraffle is a software which can help you create precise and beautiful graphics ranging from website wireframes, flow charts, organization structure to illustrations. There are unlimited usage scenarios. For example, you can use it to facilitate thinking process, to visualise brain storm ideas, to draw mind map, to create prototypes of website and PDF files, or use it as a style manager. OmniGraffle provides extensive options for objects, canvases, templates, inspectors, and stencils, fully representing its nature of WYSIWYG. You can also customise your own "Stencils", a group of pre-defined drag-able elements.

furtive - A forward-thinking, lightweight, css microframework

  •    CSS

A forward-thinking, lightweight, CSS microframework. Minimal by design. 2.47kB gzipped.

TarsosDSP - A Real-Time Audio Processing Framework in Java

  •    Java

TarsosDSP is a Java library for audio processing. Its aim is to provide an easy-to-use interface to practical music processing algorithms implemented, as simply as possible, in pure Java and without any other external dependencies. The library tries to hit the sweet spot between being capable enough to get real tasks done but compact and simple enough to serve as a demonstration on how DSP algorithms works. TarsosDSP features an implementation of a percussion onset detector and a number of pitch detection algorithms: YIN, the Mcleod Pitch method and a “Dynamic Wavelet Algorithm Pitch Tracking” algorithm. Also included is a Goertzel DTMF decoding algorithm, a time stretch algorithm (WSOLA), resampling, filters, simple synthesis, some audio effects, and a pitch shifting algorithm. To show the capabilities of the library, TarsosDSP example applications are available. Head over to the TarosDSP release directory for freshly baked binaries and code smell free (that is the goal anyway), oven-fresh sources.

igel - a delightful machine learning tool that allows you to train, test, and use models without writing code

  •    Python

The goal of the project is to provide machine learning for everyone, both technical and non-technical users. I needed a tool sometimes, which I can use to fast create a machine learning prototype. Whether to build some proof of concept or create a fast draft model to prove a point. I find myself often stuck at writing boilerplate code and/or thinking too much of how to start this.

Algorithm-Program - A collection of editorials and tutorials about Algorithms and Data Structures

  •    TeX

inzva Algorithm Program includes lectures, contests, problem-solving sessions and a variety of practices every Saturday, aimed at teaching advanced knowledge of algorithms to university students, spreading algorithmic thinking and providing training which will help them in international contests as well as in their professional lives. We prepared this full-fledged program to last weeks in order to grow the algorithm community in its technical capacity and ready the students for international contests.

AiEngine - Packet Inspection Engine

  •    C++

AIEngine is a packet inspection engine with capabilities of learning without any human intervention. AIEngine helps network/security profesionals to identify traffic and develop signatures for use them on NIDS, Firewalls, Traffic classifiers and so on or use them on the engine automatically.

panda3d - Powerful, mature open-source cross-platform game engine for Python and C++, developed by Disney and CMU

  •    C++

Panda3D is a game engine, a framework for 3D rendering and game development for Python and C++ program. It featues include Exposes Full Power of Graphics API, Powerful interface between shaders and engine, Support for tessellation and compute shaders, Fullscreen filters such as Bloom, Cartoon Inking, Volumetric Lightning, Blur/Sharpen and Ambient Occlusion, as well as the ability to use your own, Get models from your 3d modeller to Panda3D easily, Several options for adding sounds, physics simulation to your game.






We have large collection of open source products. Follow the tags from Tag Cloud >>


Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.