Skip to content

Instantly share code, notes, and snippets.

View samueltardieu's full-sized avatar

Samuel Tardieu samueltardieu

View GitHub Profile
use tokio::time::Duration;
async fn value<T>(x: T, duration: Duration) -> T {
println!("Before sleeping in value");
tokio::time::sleep(duration).await;
println!("After sleeping in value");
x
}
async fn identity<T>(x: &mut T) -> &mut T {
fn identity<T>(x: &mut T) -> &mut T {
println!("In identity");
x
}
fn main() {
let mut x = 0i32;
println!("Before assignment");
*identity(&mut x) = { println!("Evaluating 42"); 42 };
println!("After assignment");
@samueltardieu
samueltardieu / primes.py
Created November 26, 2010 22:46
Prime numbers manipulation
"""Prime number generation and number factorization."""
import bisect, itertools, random, sys
_primes = [2]
_miller_rabin_limit = 48611 # 5000th prime
_miller_rabin_security = 7
def modpow (a, b, c):
@samueltardieu
samueltardieu / injected-singleton.scala
Created March 11, 2011 10:18
Example of Scala injection of a singleton
// StopWatch class
abstract class StopWatch {
def giveTime: Time
}
// Class is declared abstract as it is lacking a StopWatch which will be later injected.
// Note that we could have defined a default value here and thus made the class concrete.
abstract class FooBar {
@samueltardieu
samueltardieu / gist:7946839
Created December 13, 2013 16:24
Freebox Companion pour Android
D/FbxCompMain( 7542): launching activity for 'Téléchargements'
I/ActivityManager(  850): START u0 {cmp=fr.freebox.android.compagnon/.downloadmanager.FbxDownloadListActivity (has extras)} from pid 7542
D/FbxDownloadListActivity( 7542): called onCreate
D/FbxDownloadListActivity( 7542): tab selected
D/FbxDownloadListFragment( 7542): called onCreate
D/FbxDownloadListActivity( 7542): called onStart
D/FbxDownloadListActivity( 7542): called onResume
D/FbxHttpClientTask( 7542): got 403, application/json; charset=utf-8 on http://88.160.xxx.yyy:81/api/v1/connection/config
D/FbxHttpClientTask( 7542): called doInBackground on: http://88.160.xxx.yyy:81/api/v1/fs/ls//?countSubFolder=1&removeHidden=1
@samueltardieu
samueltardieu / Factor.hs
Created June 23, 2013 08:13
Demo Factor basis for the non-classical paradigms and language course
module Factor where
import Control.Monad.State
-- We can put integer literals or quotations on the stack
data Stackable = IntLiteral Int
| FQuotation (Factor ())
-- Shortcut name
type Stack = [Stackable]
@samueltardieu
samueltardieu / Test.scala
Created June 17, 2013 15:38
Scala seems to always prefer value over call by name: `foo(true)` returns "foo1" and is not ambiguous. Why?
object Test {
def foo(t: Boolean) = "foo1"
def foo(t: => Boolean) = "foo2"
}
@samueltardieu
samueltardieu / LockMap.java
Last active December 16, 2015 09:49
Add comments, and create already locked semaphores in order to reduce further contention opportunities.
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Semaphore;
public class LockMap<Key> {
private final ConcurrentHashMap<Key, Semaphore> map = new ConcurrentHashMap<Key, Semaphore>();
public void lock(final Key key) throws InterruptedException {
Semaphore sem = map.get(key);
while (true) {
shortenUrl :: String -> String
shortenUrl url = case splitFileName url of
(dir, "index.html") | isLocal dir -> dir
_ -> url
where isLocal uri = isPrefixOf rootUrl uri || not (isInfixOf "://" uri)
@samueltardieu
samueltardieu / challenge.c
Created March 11, 2013 12:58
Le communication challenge fait en cours ce matin. Et il fonctionne :)
#include "ch.h"
#include "hal.h"
#include "lcd.h"
#define SCORED_QUIZZ 1
#define TEST_QUIZZ 2
// Define this as TEST_QUIZZ or SCORED_QUIZZ
#define QUIZZ TEST_QUIZZ