Initiative ISCN ?

17 juin 2011

Un exemple d’utilisation des « m accounts » : réparer l’email

le spam a plus ou moins tué l’email (ou bien abimé)

pourtant l’email c’est pratique

espace d’adresse c’est à dire réseau social, non monopolistique

Mais pas vraiment de police pour le spam, par contre de la police dans les réseaux sociaux, moins de spam, donc on vient chercher la police ! (ici privée, ou on n’y va pas)

possibilité :

on peut enregistrer son email sur son m account tenu par A ou B*

sur un envoi d’email il est inscrit que l’email est enregistrée chez A ou B (mais pas la gestion de la boîte, on peut enregistrer une adresse gmail ou hotmail sur son m account tenu par a ou b)

en réception on peut décider de ne recevoir que les messages dont l’adresse est enregistrée quelque part (avec vérification auprès de A ou B à la réception si considéré comme nécessaire)

si une adresse spame, on peut se plaindre chez A ou B si elle est enregistrée, et si elle n’est pas enregistrée et que l’on a décidé de ne pas recevoir les messages d’adresses non enregistrées, on ne les reçoit pas

en cas de plainte A ou B est tenu de dire à travers la justice (règles à définir) à la personne ayant enregistré l’adresse de se calmer

*: A ou B sont ici des « tiers de confiance » ou « m account managers » comme définis dans concepts économie numérique draft

11 juin 2011

DRMs et moins value utilisateur

Filed under: 1 ISCNs,6 Economie des oeuvres et informations — yt75 @ 7:38

Il y a quelques jours, suite à un passage sur  stalker , le blog « érudit et polémique » de Juan Asensio, j’achète « L’Homme » de Ernest Hello sur lulu.com, en pdf à 2,5€.

Le fichier n’a apparemment rien de particulier, on peut en faire de multiples copies l’envoyer par mail etc, sauf que, il est trafiqué de telle manière que les recherches textuelles y sont impossibles, tout comme le copier coller de quelques lignes vers un autre programme ..

Exemple typique de « DRMs » (digital rights management) dont le résultat, toujours le même, est de pénibiliser l’utilisation pour ceux qui achètent, et donc de fait d’abaisser la valeur de la chose achetée.

Il est bien évident que tous ces trucs devraient être oubliés, et très vite.

Au sujet de la prévention des copies, un point intéressant est que l’on a même essayé de « boucher » le « trou analogique » ou « analog hole ». C’est à dire la possibilité si l’on peut écouter, lire ou regarder quelque chose, de le reproduire avec des équipements d’enregistrement fonctionnant directement sur les sons écoutés ou images regardées. Le principe aurait alors été d’obliger les producteurs d’équipements d’enregistrement à inclure dans leurs produits des systèmes reconnaissant des « watermarks » sur les sons ou images, afin de ne pas fonctionner dans ce cas. Quel délire …

Encore une fois le but doit être de favoriser la diffusion légale (payant ou vrai gratuit), cela à travers la mise en place de quelque chose comme les « m accounts » et organisations associées, de ramener les DRMs à uniquement « écriture sur le m account du fait que telle chose a été achetée », et non de pénibiliser l’utilisation/lecture de toute chose achetée.

Et si répression, sur les centres/catalogues de diffusions piratées et non utilisateurs finaux bien évidemment.

Note : à retrouver video (sur TED il me semble) où Larry Page dit quelque chose comme « moi je n’aurais rien contre payer pour des œuvres, mais c’est toujours trop compliqué ou pénible », et Amazon avait même breveté le « concept » du one click buying …

5 juin 2011

Use case telco (aide mémoire)

Filed under: 1 ISCNs — yt75 @ 5:38

ISCN.py

Filed under: 1 ISCNs — yt75 @ 11:07
# -*- coding:Latin-1 -*-
# Ce programme, premier essai en python donc Èventuellement quelques "singularitÈs", 
# a pour but de vÈrifier et tester les algorithmes de codage et dÈcodage des ISCNs.
# Ces Algorithmes peuvent bien sur Ítre grandement optimisÈs une fois les choix de 
# nombres de segments max et nombres d'octets max faits
from math import *
from random import *

# Structs est la fonction qui retourne le nombre de structures ‡ i segments sur un 
# identifiant ‡ p octets.
# Ou Ègalement bien s˚r, le nombre de structures ‡ i segments sur un identifiant ‡ p bits.
# note: le nombre de structure ‡ 0 segment sur p octets est 1
def Structs (i,p ):
    if i==1 or i==0 :
        return 1
    elif i==2:
        return p-1
    elif i==3:
        return ((p-1)*(p-2))//2
    elif i==4:
        return ((p-1)*(p-2)*(p-3))//6
    elif i==5:
        return ((p-1)*(p-2)*(p-3)*(p-4))//24
    elif i==6:
        return ((p-1)*(p-2)*(p-3)*(p-4)*(p-5))//120
    elif i==7:
        return ((p-1)*(p-2)*(p-3)*(p-4)*(p-5)*(p-6))//720
    elif i==8:
        return ((p-1)*(p-2)*(p-3)*(p-4)*(p-5)*(p-6)*(p-7))//5040
    else:
        print "i is out of range in Structs, value : " , i

# STs est la fonction qui retourne le nombre total de structures ‡ i ou moins segments 
# dans p octets, 
# y compris la structure vide (ou ‡ 0 segment) qui compte pour une structure.
# cette fonction ‡ rÈÈcrire directement en polynomes
def STs (i,p):
    j=1
    r=1
    while j <= i :
        k=j
        while k <= p :
           r += Structs (j,k)
           k+=1
        j+=1
    return r
    
#tOc retourne la taille minimale en octets pour coder l'entier i
def tOc (i) :
    if (i==0 or i==1) : 
        return 1
    else:
        return int(log(i,2))//8+1
    
# AlgCodage prend en input une liste ls de tailles de segments, et retourne le numÈro de 
# structure correspondant. 
# Ceci pour un nombre de segments max MS et une taille d'octets max P. 
# Idstr est l'offset du numÈro de structure dans les appels rÈcursifs.
# Le principe est d'incrÈmenter Idstr avec les structures ‡ taille de premier segment 
# infÈrieur ‡ celle considÈrÈe, 
# puis appelrÈcursif sur le deuxiËme segment une fois positionÈ dans le bon intervalle.
ls=[]
def AlgCodage (ls , MS , P, Idstr=0):
    ll=len(ls)
    lseg1=0
    pos=0
    i=0
    if ll==0:
        return Idstr
    else :
        lseg1=ls[0]
        while i<lseg1:
            if i==0 : Idstr=Idstr+1
            else : Idstr=Idstr+STs(MS-1,P-i)
            i+=1
        del ls[0]
        return AlgCodage(ls,MS-1,P-lseg1,Idstr)
        
            
# AlgDecodage prend en input un numÈro de structure, et renvoi la liste de tailles de segments 
# correspondante. 
# Ceci pour un nombre max de segments MS et un nombre max d'octets P
ls=[]
def AlgDecodage (Idstr, ls, MS, P):
    lseg1=0 #taille premier segement courant
    pos=0
    if Idstr==0 : return ls
    while True:
        if lseg1==0 : pos=pos+1 
        else : pos=pos+STs(MS-1,P-lseg1)
        if Idstr>=pos : 
            int1=pos
            lseg1+=1
        else : break
    ls.append(lseg1)
    return AlgDecodage(Idstr-int1,ls,MS-1,P-lseg1)


def pAD (i,j):
    k=i
    while k<=j:
        ps(k)
        k+=1
    return None

def ps (k):
    print "str", k , AlgDecodage(k,[],7,14)
    return None

def ps12 (k):
    print "str", k , AlgDecodage(k,[],3,5)
    return None
    

# CodeListInt prend une liste d'entier en entrÈe et la transforme en un entier (binaire),
# avec le code de structure au dÈbut et ensuite les entiers
# Note : nous avons fixÈ ici le nombre de segments max ‡ 7 et le nombre d'octets max ‡ 14 
# pour les entiers (16 en tout), ie 128 bits, 
# la structure est codÈe sur 16 bits, 14 suffiraient
lint=[]
def CodeListInt (lint):
     ll=len(lint)
     lo=list(lint)
     i=0
     to=0
     while i<ll :
         t=tOc(lint[i])
         lint[i]=t
         to=to+t
         i+=1
     if to>14 :
         print "overflow", to
         return to
     lt=list(lint)
     nstruct=AlgCodage(lint,7,14)
     i=0
     bint=nstruct
     offset=16
     while i<ll :
        bint=bint | lo[i]<<offset
        offset=offset + 8*lt[i]
        i+=1  
     return bint

def mmask (p):
    ones=255 
    return ones<<8*(p-1)

# DecodeListInt prend un entier ou numÈro ISCN "empaquetÈ" et renvoi la liste d'entiers 
# correspondante
def DecodeListInt (intg):
    mask=mmask(1)|mmask(2)
    nstruct= intg & mask
    intg=intg>>16
    ls=AlgDecodage(nstruct, [],7, 14)
    ll=len(ls)
    lint=[]
    i=0
    off=0
    while i<ll : 
        mask=0
        k=0
        while k<ls[i] :
            mask= mask | mmask(k+1)
            k+=1
        lint.append((intg & (mask<<(off*8)))>>off*8)
        off=off+ls[i]
        i+=1
    return lint    
        

#Test de Code et Decode pour ms=7, n tests sont effectuÈs
def test (n):
    i=1
    lint=[]
    lseg=[]
    while i<=n:
        l=randrange(1,8)
        mo=14
        k=1
        while k<=l :
            tseg=randrange(1,mo-(l-k))
            lseg.append(tseg)
            mo=mo-tseg
            lint.append(randrange(pow(2,tseg*8)))
            k+=1
        i+=1
        olint=list(lint)
        bint=CodeListInt(lint)
        dlint=DecodeListInt(bint)
        if cmp(olint,dlint)!=0:
            printh(olint)
            print lseg
            print hex(bint)
            print hex(bint>>16)
            printh(dlint)
            return False
        lint=[]
        lseg=[]
    return True

#affichage hexadÈcimal d'une liste pour les tests       
def printh (l):
    print "[",
    for n in l :
        print hex(n), "," ,
    else : print "]"
        
        
        
#Les fonctions ci dessous implÈmentent les fonctions Dj(p) et TDj(p)
#de la mÈthode ou solution 2
def D1(p):
    return 1

def D2(p):
    if p<2:
        print "D2 error" , p
    else:
        return p-1

def D3(p):
    r=0
    if p<3:
        print "D3 error" , p
    else :
        i=1
        while i <= p-2:
            r+=D2(p-i)
            i+=1
        return r

def D4(p):
    r=0
    if p<4:
        print "D4 error" , p
    else :
        i=1
        while i <= p-3:
            r+=D3(p-i)
            i+=1
        return r
            
def D5(p):
    r=0
    if p<5:
        print "D5 error" , p
    else :
        i=1
        while i <= p-4:
            r+=D4(p-i)
            i+=1
        return r

def D6(p):
    r=0
    if p<6:
        print "D6 error" , p
    else :
        i=1
        while i <= p-5:
            r+=D5(p-i)
            i+=1
        return r
    
def D7(p):
    r=0
    if p<7:
        print "D7 error" , p
    else :
        i=1
        while i <= p-6:
            r+=D6(p-i)
            i+=1
        return r
    

def TD5(p):
    return D1(p)+D2(p)+D3(p)+D4(p)+D5(p)    

def TD7(p):
    return D1(p)+D2(p)+D3(p)+D4(p)+D5(p)+D6(p)+D7(p)

Relationnel vers « fonctionnel » (aide mémoire)

Filed under: 1 ISCNs,2 Concepts-projets — yt75 @ 7:34

En résumé :

  • Le modèle dit relationnel est une machine à créer des doublons sur les atomes « attributs fonctions », et le terme « foreign_key » un symptôme de bêtise
  • Le modèle fonctionnel proposé correspond à considérer une base comme un ensemble de fonctions définies par extension (et non compréhension), c’est à dire que les graphes de ces fonctions sont définis par extension
  • Il faut en fait 4 ou 5 « function images table » : 1 pour les fonctions à un argument, 1 pour les fonctions à 2 arguments, 1 pour les fonctions à 3 arguments, etc
  • Mais ceci n’est pas gênant, en terme de fonctions définies par extension, jamais beaucoup d’arguments, et d’autre part un argument peu aussi être une liste ou un array
  • Le « modèle » objet  n’est que diverses conventions plus ou moins semblables sur applicabilité des entités « attributs fonctions » aux divers atomes

Note : rien de vraiment nouveau ci-dessus

16 mai 2011

Tpædia

Filed under: 1 ISCNs,2 Concepts-projets — yt75 @ 9:25

Concept :

Tpædia, short for « technical encyclopedia »,  « transversal encyclopedia », or something like that, is meant to be a wiki using ISCNs as native entry keys.

The objective isn’t to make it complete in anyway, but more to use it as the focal documentation point for the ISCN initiative projects.

Concepts, projects, existing codes will be added according to on going needs.

Eventually it should also be implemented in TiNLisp, or in other words be an interface to the TiNlisp world.

Initial focus to be on Unicode objects/concepts and related.

15 mai 2011

Les espaces dits « hiérarchiques » ne le sont pas, la plupart du temps

Filed under: 1 ISCNs,2 Concepts-projets — yt75 @ 5:04

Draft :

  • a1.a2.a3 peut être considéré comme :
    1. les valeurs de a2 doivent être uniques dans le contexte a1 (vision ou compréhension hiérarchique)
    2. a1.a2.a3 est une phrase ou s-expression, donc la valeur a2 (le symbole a2 dans ce cas) dans a1.a2.a3 est la même que dans a1.a3.a2 ou a1.a2.a3.a2
  • La « bêtise » ou erreur du RH name tree avec les numéros parallèles aux mots clés (quand l’intérêt des numéros est dans la mise à plat permettant éventuellement de changer les mots clés, comme les inodes dans un file system par exemple permettent de changer les noms de fichiers, ou le fait que si plusieurs livres sont vendus dans un coffret, le coffret en tant que produit a lui-même un ISBN,  —à côté— des ISBNs des livres qui le compose)
  • Retournement de perspective : vision « top level », dans le cas 1), versus distributeur d’étiquettes ou symboles uniques, dans le cas 2)
  • Séparations typologiques ou organisationnelles
  • Quand on croit utiliser des espaces comme 1), on les utilise en fait de fait souvent comme 2), typiquement dans les conventions UNIX (/lib, /doc, fichiers « README »), mais pas uniquement
  • Vision erronée du besoin d’identifiant des organisation pour chaque espace typologique (cf la RFC 3402 par exemple dans l’exemple industrie automobile)
  • Avec les ISCNs, une même source peut-être utilisée dans n’importe quel contexte typologique, donc pas besoin de demander un préfixe ou segement par contexte typologique pour une organisation donnée.
  • Une organisation acquière des sources, puis les utilisent dans n’importe quel contexte typologique
  • l’aspect hiérarchique dans ce cas est donc là pour les besoins de distribution et non de classification, classification vient toujours après à travers d’autres ISCNs
  • même si « globalement », les espaces d’identifiants se mettent en place dans un contexte toujours plus ou moins typologique avant d’être organisationnel

Autre :

  • critique de l’emploi du terme « ressource » dans URN ou URL, ou « object » dans DOI (texte de Berners-Lee à ce sujet si l’on veut)
  • critique du besoin perçu d’ « actionability », dans les LSID, Ark, ou DOI
  • le besoin d’identification est indépendant de ces aspects d' »actionability », qui reviennent de toute manière à associer une certaine sémantique à un segment ou second identifiant
  • Quand on a besoin d’identifier des trucs on utilise des ISCNs, sans se poser de question
  • NT-maps et NT-spaces

Liens :

RFC3402 : http://www.ietf.org/rfc/rfc3402.txt

Concepts économie numérique draft

Il y a :

  • Des utilisateurs
  • Des « M account managers »
  • Des Service providers, content diffusers, hosters
  • Des Shops
  • Des éditeurs et créateurs d’œuvres, de services, (sites, films, disques, sites genres static contents ou pas)
  • Utilisation des ISCNs pour toutes les problématiques d’identification (et donc en particulier de tous les numéros GS1, ISBN,  ISAN ou autres, pour beaucoup d’œuvres existantes quand ça fait sens)

D’autre part :

  • Chaque utilisateur a un (ou quelques) M-account
  • Chaque M-account est « géré », à un instant donné, par une organisation « M account manager »
  • Un M account peut être transféré d’un M account manager à un autre
  • Le M account number est utilisé dans aucune transaction
  • Un utilisateur peut acheter des œuvres ou éditions dans n’importe quel shop, sous forme de licence « à vie » ou d’abonnement
  • Une œuvre ou édition d’oeuvre ou service est à un instant donné hosté par un hoster (cela peut changer)
  • Les accounts managers peuvent être les banques?, FAIs?, ou nouvelles organisations ?, mais en tout cas plusieurs et licence de rôle spécifique

Note : modèle également présenté dans copies_licenses (nov 2007)

Et même organisations et comptes « nécessaires »(enfin utilisable) pour la problématique « net identity » (où l’approche ID unique par utilisateur partagé entre tous les services n’est en rien nécessaire, et devrait être évitée à tout prix)

 

ISCN.org

Filed under: 1 ISCNs,2 Concepts-projets — yt75 @ 3:04

Projet :

Création d’une organisation à but non lucratif, à priori status association loi 1901 française, ayant pour fonction la gestion du premier segment des ISCNs

Projet associé : Le site web de cette organisation

Principes de distribution des ISCNs (brouillon)

Filed under: 1 ISCNs,2 Concepts-projets — yt75 @ 11:59

brouillon distrib ISCN

Donc :

  • Chaque source ou préfixe est aussi identifié par un iscn (c’est à dire que la « valeur » du préfixe n’est pas l’identifiant de la source correspondante, mais que l’on associe à la source un ISCN comme à tout autre concept/objet, et le préfix est simplement l’un des attributs de la source), ceci est un point essentiel. En particulier, la source premier segment a aussi un ISCN, 5.1.1 dans ce cas. Pas de règle à priori sur le  préfixe d’une source et l’ISCN de la source.
  • D’autre part des source ou préfixe d' »admin » sont définis, ce qui permet en particulier d’y allouer les ISCNs des sources, par contre aucune règle à priori sur le fait que l’ISCN d’une source soit ou pas dans le « contexte » du prefix associé.
  • Le préfixe 5 est attribué à l’ « ISCN world »
  • Le préfixe 5.1 est le préfixe d’admin de l’ISCN world (en particulier toutes les sources de classe A seront identifiées, auront comme ISCN, quelquechose comme 5.1.xy
  • L’ISCN de la source-préfixe x (premier segment) est 5.1.1
  • L’ISCN de la source-préfixe 5.x est 5.1.2
  • L’ISCN de la source-préfixe 5.1.x est 5.1.3
  • L’ISCN de la source-préfixe 5.2.x (utilisée par défaut pour tous les objets « non unicodes » définis) est 5.1.4
  • Le préfixe 7 est attribué à l’ « UNICODE world », dans un sens large, tout ce qui tourne autour des caractères et leurs codages, du fait du consortium unicode ou pas forcément, mais tous les concepts définis par le consortium UNICODE seront définis dans ce cadre (par exemple utf-8, utf-16, les « character set », etc)
  • L’ISCN de la source-préfixe 7.x est 7.1.1
  • La source-préfixe d’admin de l’ « UNICODE world » est 7.1
  • L’ISCN de la source préfixe 7.1.x est 7.1.2
  • Le préfixe 7.2 est attribué pour tous les codes points UNICODE
  • L’ISCN de la source-préfixe 7.2.x est 7.1.2
  • Tous les autres concepts UNICODE seront identifiés dans « 7.3.x »
  • L’ISCN de la source-préfixe 7.3.x est 7.1.3

Ensuite :

  • L’idée est de réserver pour un bon moment (25, 50, ou 100 ans) la moitié des préfixes A2, A3, A4, etc
  • On utilise pas les préfixes 0 par convention (ou disons on les réserve)
  • On désigne la « classe » d’un préfixe (ou d’une source) par AiBjCk où i, j, k désignent la taille en notation décimale des différents segments. Donc 11.123.48.x par exemple est une source-préfixe de classe A2B3C2
  • La « moitié » des préfixes A2 est réservée, sur [50,99]
  • La « moitié » des préfixes A3 est réservée, sur [500, 999]
  • La « moitié » des préfixes A4 est réservée, sur [5000, 9999]
  • La « moitié » des préfixes A5 est réservée, sur [50000, 99999]
  • Les seuls préfixes A1 alloués sont 5 et 7, pour le moment on en reste là
  • Les préfixes A2 disponibles [10,49] seront utilisés pour raccrocher des espaces existants majeurs, ou alloués à des redistributeurs majeurs
  • Les préfixes A3 disponibles [100, 499], seront utilisés pour raccrocher des espaces existants majeurs, alloués à des redistributeurs majeurs, où à des organisations importantes pour usage interne
  • Les préfixes A4 disponibles [1000, 4999], sont disponibles pour des organisations importantes
  • L’ « ISCN World » travaillera principalement dans 5.2.x

Inverser 5 et 7 ci dessus ? Peut-être, à voir ..

Unicode préfèrerait 5 ou 7 ?

Ou 3 pour UNICODE

Page suivante »

Créez un site Web ou un blog gratuitement sur WordPress.com.

%d blogueurs aiment cette page :