Diferencia entre revisiones de «Kernel de TuEntidad.es»
m (→Iteradores) |
|||
(No se muestran 61 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
− | La parte que encargada del tratamiento de | + | [[Imagen:TuentidadKernel.jpg||thumb|400px|Logo del apartado del kernel]] |
+ | La parte que encargada del tratamiento y la ejecución de las órdenes de '''lectura/escritura de datos''' dentro de la [[TuEntidad|Plataforma Social "TuEntidad.es"]] se llama '''Kernel'''. Se denomina [[Estación]] si se hace utilizando el [[Estándar de TuEntidad.es]]. | ||
+ | |||
+ | En el caso del '''Kernel de TuEntidad.es''', se puede acceder a través del subdominio (denominado ''kernel'') de la página web de de la [[TuEntidad|Plataforma Social]]. En casos puntuales donde es necesario, existe un archivo dentro del propio [[#Los Visores|visor]] que redirecciona internamente, por ejemplo a través de una implementación [[proxy]]-[[php]] (crossdomain) en el caso del [[visor]] [[lotienes]], a '''kernel'''. No todos los [[visores]] implementan un proxy, ya que permiten conectarse directamente al '''kernel'''. El uso del '''proxy oficial''' permite un balanceo de carga entre [[máquinas]] que mejoran los tiempos de carga usando diferentes hilos del kernel. | ||
Los [[visores]] en otros lenguajes se caracterizan por '''acceder al kernel directamente'''. Es el caso de las versiones en [[Flash]] y '''ejecutables de escritorio'''. La necesidad del [[proxy]] aparece en los visores que utilizan [[JavaScript]], el cual no permite acceder a dominios fuera del actual. | Los [[visores]] en otros lenguajes se caracterizan por '''acceder al kernel directamente'''. Es el caso de las versiones en [[Flash]] y '''ejecutables de escritorio'''. La necesidad del [[proxy]] aparece en los visores que utilizan [[JavaScript]], el cual no permite acceder a dominios fuera del actual. | ||
+ | {{VT|Estándar de TuEntidad.es}} | ||
{{VT|Servidor 3501}} | {{VT|Servidor 3501}} | ||
− | == | + | == Órdenes del kernel == |
− | + | [[Imagen:Flujodelprotocolo.png||thumb|250px|Flujo del protocolo]] | |
Actualmente hay una serie de '''acciones''' no estandarizadas todavía como son el ''registro de nuevos usuarios'' y ''recuperación de claves de acceso'', el ''inicio/cierre de sesión'', y la ''subida de medios locales''. Aquellas '''acciones''' estandarizadas se les llama '''peticiones'''. | Actualmente hay una serie de '''acciones''' no estandarizadas todavía como son el ''registro de nuevos usuarios'' y ''recuperación de claves de acceso'', el ''inicio/cierre de sesión'', y la ''subida de medios locales''. Aquellas '''acciones''' estandarizadas se les llama '''peticiones'''. | ||
Línea 15: | Línea 19: | ||
{{AP|#Tipos_de_.C3.93rdenes_del_Kernel|Tipos de Órdenes del Kernel: ''consultas'' y ''escrituras''}} | {{AP|#Tipos_de_.C3.93rdenes_del_Kernel|Tipos de Órdenes del Kernel: ''consultas'' y ''escrituras''}} | ||
− | Cada '''orden''', sigue el modelo de '''conjunto de componentes'''. | + | Cada '''orden''', sigue el modelo de '''conjunto de componentes'''. Cada '''componente''' se separa por el '''signo almohadilla''' ('''#'''). |
− | Devuelve, generalmente, una '''estructura''' o un conjunto (''vector'', ''matriz'', etc) de '''estructuras''' | + | Devuelve, generalmente, una '''estructura''' o un conjunto (''vector'', ''matriz'', etc) de '''estructuras'''. |
{{CL|#Estructuras del Kernel|Estructuras del Kernel}} | {{CL|#Estructuras del Kernel|Estructuras del Kernel}} | ||
Línea 34: | Línea 38: | ||
=== Funciones === | === Funciones === | ||
− | Al final de cada '''órden''' pueden aparecer, separadas por el '''signo | + | Al final de cada '''órden''' pueden aparecer, separadas por el '''signo pipa''' ('''|'''), una o más funciones. Las '''funciones''' tienen una estructura parecida a la '''componentes''' de la '''orden'''. |
− | == | + | == Protocolo de TuEntidad.es == |
− | El ''' | + | El '''Protocolo de TuEntidad.es''' permite enviar '''órdenes''' a un [[Kernel de TuEntidad.es|kérnel]] para trabajar con los [[TOBIS|Objetos Sociales]] que controle. Se distinguen dos tipos '''órdenes''': La de '''consulta''', y la '''escritura''', que se separan en dos archivos de petición ''.php'' distintos dentro del '''kernel''', ''consulta.php'' y ''escritura.php''. |
− | |||
− | |||
=== Consultas === | === Consultas === | ||
Las '''consultas''' devuelven '''estructuras'''. Las '''componentes''' de una '''consulta''' son: | Las '''consultas''' devuelven '''estructuras'''. Las '''componentes''' de una '''consulta''' son: | ||
− | * '''[0]''': El '''tipo''' | + | * '''[0]''': El '''tipo de objeto''' (''a'' para los álbumes, ''c'' para los contactos, etc). |
* '''[1]''': El '''identificador numérico''' del objeto (''id>0'' para los propios, o ''id<0'' para los comunes) seleccionado. | * '''[1]''': El '''identificador numérico''' del objeto (''id>0'' para los propios, o ''id<0'' para los comunes) seleccionado. | ||
* '''[2]''': El '''nombre de la estructura''' -matriz o vector o valor- (generalmente ''datos'' o ''entidad''). | * '''[2]''': El '''nombre de la estructura''' -matriz o vector o valor- (generalmente ''datos'' o ''entidad''). | ||
* '''[3]''': La '''componente numérica'''. En caso de ser ''matriz'', la fila; o de ser ''vector'', la componente. | * '''[3]''': La '''componente numérica'''. En caso de ser ''matriz'', la fila; o de ser ''vector'', la componente. | ||
− | * '''[4]''': La '''componente | + | * '''[4]''': La '''componente numérica'''. En caso de haber sido una ''matriz'', la componente del '''vector''' seleccionado en la anterior '''componente''' de la '''consulta'''. |
Un ejemplo de consulta podría ser este, que es la petición de la fila 1 de los datos de un usuario, en la que se encuentra su ''nombre'', y ''apellidos''. Esta función es pública y accesible por cualquier usuario o visitante: | Un ejemplo de consulta podría ser este, que es la petición de la fila 1 de los datos de un usuario, en la que se encuentra su ''nombre'', y ''apellidos''. Esta función es pública y accesible por cualquier usuario o visitante: | ||
Línea 55: | Línea 57: | ||
u # 1 # datos # 1 | u # 1 # datos # 1 | ||
[0] [1] [2] [3] | [0] [1] [2] [3] | ||
− | + | ||
− | - | + | --- Dame, |
− | --- con '''identificador''' ''1'', | + | [0] - del '''objeto''' ''usuario'' (''u''), |
− | ----- su '''matriz''' ''datos'', | + | [1] --- con '''identificador''' ''1'', |
− | -------- la '''fila''' ''1'' | + | [2] ----- su '''matriz''' ''datos'', |
+ | [3] -------- la '''fila''' ''1'' | ||
=== Escrituras === | === Escrituras === | ||
Línea 72: | Línea 75: | ||
[0] [1] [2] [∞] | [0] [1] [2] [∞] | ||
− | - | + | --- Escribe, |
− | --- ''nuevo'', | + | [0] - un ''mensaje'' (''n''), |
− | ----- para el ''buzón 1'', del ''usuario 1'', con ''plantilla -2'' (la de S&E), | + | [1] --- ''nuevo'' (''+''), |
− | -------- cuyo contenido | + | [2] ----- para el ''buzón 1'', del ''usuario 1'', con ''plantilla -2'' (es la plantilla de '''S&E'''), |
+ | [3] -------- cuyo contenido será: el ''asunto asunt'', y el ''texto txt'' | ||
+ | |||
+ | En donde la componente [0] se conoce (n), la [1] es el carácter comodín más ('''+''') que indica que es siguiente al último, y el resto son conocidos. Este ejemplo es el que se usa para enviar mensajes de '''Sugerencias y Errores''' al [[buzón]] del administrador. | ||
+ | |||
+ | == Prototipo Estandarizado de TuEntidad.es == | ||
+ | |||
+ | Como el [[protocolo]] de [[TuEntidad.es]] no tiene todas las características [[estándar]]es que fija el [[Paradigma eWa]], el [[Proyecto eWa]] comenzó a desarrollar a finales del '''2010''' un '''prototipo''' que se ha denominado '''Prototipo Estandarizado de Peticiones de "TuEntidad.es"'''. Permite un tercer tipo de '''orden''', denominadas '''órdenes genéricas''', que englobará las '''consultas''' y '''escrituras''' que permite el [[protocolo]]. Ésto permitirá que en una misma [[petición]] se puedan encontrar tanto '''órdenes''' de '''lectura''' como '''órdenes''' de '''escritura'''. | ||
+ | |||
+ | Esta idea está recogida dentro del [[Estándar de TuEntidad.es]]. | ||
+ | |||
+ | === Sintaxis === | ||
− | + | La sintaxis quedará mucho más escalable. | |
+ | |||
+ | |--------------------- '''componentes''' ---------------------|------- '''argumentos''' -------| | ||
+ | objeto '''#''' identificador '''#''' coordenada1 : c2 : ... : cN '''#''' argumento1 : a2 ... : a3 | ||
+ | [0] [1] [2] [3] | ||
+ | |||
+ | * Componentes. | ||
+ | ** '''[0] objeto''': el '''tipo de objeto''' (con una letra) que se va a seleccionar. | ||
+ | ** '''[1] identificador''': el '''identificador''' del objeto deseado. | ||
+ | ** '''[2] coordenadas''': las coordenadas que apuntarán al '''dato''' separadas por ''dos puntos''. | ||
+ | *** Si no hay coordenadas, devuelve la '''Matriz''' completa. | ||
+ | *** La primera coordenada determina la fila completa de la Matriz como '''Vector''' . | ||
+ | *** La segunda coordenada determina la '''Columna''' del vector previo que incluye el '''Valor''' que se devolverá. | ||
+ | * Argumentos. | ||
+ | ** '''[3] objeto''': Sólo se incluye si se trata de una escritura. Son datos separados por ''dos puntos''. | ||
+ | |||
+ | Cada '''argumento''' de la '''lista de argumentos''' ([3]) corresponderá a una [[cadena de texto]] codificada según marca el [[estándar]] relativo a la codificación de '''estructuras multidimensionales''' (''vectores'', ''matrices'', etc.) en [[Estructura:STRING|estructuras unidimensionales]] (''[[Estructura:STRING|cadenas]]'') utilizando los '''caracteres delimitadores''' que fija el [[estándar]]. | ||
+ | |||
+ | === Adición de la capa de lenguaje === | ||
+ | |||
+ | El '''Estándar de Peticiones de "TuEntidad.es"''', además, permite encapsular (bajo la apariencia de un [[lenguaje de programación]], similar a los [[LeWaS]], compatible con el [[Idioma eWa|Idioma de Programación eWa]]) las '''órdenes genéricas'''. | ||
+ | |||
+ | Los códigos se envían compilados al [[Kernel de TuEntidad.es|kérnel]] compatible con el [[Estándar de "TuEntidad.es"]] y devuelve una respuesta análoga a la que recibiría el '''Protocolo de "TuEntidad.es"''' para las mismas consultas básicas. | ||
== Estructuras del Kernel == | == Estructuras del Kernel == | ||
Línea 91: | Línea 127: | ||
=== Objetos === | === Objetos === | ||
− | Según se marca en la definición de [[Red Social]], los [[Tres Objetos Básicos de Identidad Social]] son los objetos '''entidad''', ''' | + | Según se marca en la definición de [[Red Social]], los [[Tres Objetos Básicos de Identidad Social]] son los objetos de tipo '''entidad''', '''permiso''', y '''medio'''. Por ese motivo, la organización de '''objetos''' en las '''Estructuras del Kernel de TuEntidad.es''' se agrupan según las características generales de cada objeto. |
+ | |||
+ | ==== Entidades ==== | ||
+ | {{AP|Entidad}} | ||
+ | Los objetos de tipo [[entidad]]es son aquellos que tengan '''existencia real''', '''autonomía''', y '''diferenciación e individualidad''''. Se representa por ''e'' en el [[Protocolo de TuEntidad.es|Protocolo]]. | ||
+ | |||
+ | * '''Usuarios''' (''u''): | ||
+ | * Y también... '''Empresa''', '''Asociación''', '''Organismo''', '''Agrupación''', etc. | ||
− | '' | + | ==== Medios ==== |
+ | {{AP|Medios}} | ||
+ | Los [[medios]] son todo el conjunto de [[entidad]]es que incluyen información. Generalmente se consideran '''medios primarios''' (o '''propios''') a las '''imágenes''', '''vídeos''' y '''sonidos'''. | ||
− | + | En realidad existen multitud de [[TOBIS|objetos]] que entran dentro de la definición de [[medios]] y subcategorías de los tres primarios. A esos se les llama '''Aglutinadores''' o '''Conjuntos'''. | |
− | |||
− | ==== | + | ==== Permisos ==== |
− | + | {{AP|Permisos}} | |
− | + | Los [[objetos]] de tipo [[permisos]] son un tipo especial de [[objeto social]] donde se evalúa un '''predicado''' (cuando se solicite autorización para realizar una determinada [[acción]] (devolverá '''cierto''' cuando se le conceda al permiso requerido, y '''falso''' en caso contrario) o que devolverá una lista de [[acciones]] autorizadas si no se le solicita una autorización explícita. La variación de los parámetros de entrada (el ''tipo de permiso'' solicitado, hora actual, IP, etc.) puede hacer que modifique su respuesta. | |
− | |||
− | |||
− | |||
− | ==== | + | ==== Acciones ==== |
− | + | {{AP|Acciones}} | |
− | + | Los [[objetos]] de tipo [[acciones]] son también un tipo especial de [[objeto social]]. En este caso, como su propio nombre indica, se utilizan para englobar acciones, comprobaciones y otras operaciones secuenciales bajo una misma orden. El valor de retorno corresponde con un valor [[Estructura:STRING|literal]] o un [[objeto]] que se acoplará al [[objeto social]] que se esté procesando en esa [[Protocolo de TuEntidad.es|petición]]. | |
− | |||
− | |||
− | |||
− | |||
+ | [[Categoría:Plataforma Social "TuEntidad.es"]] | ||
+ | [[Categoría:Sociedad Virtual]] | ||
[[Categoría:Protocolo]] | [[Categoría:Protocolo]] | ||
+ | [[Categoría:Solución Informática]] | ||
+ | [[Categoría:Solución]] |
Revisión actual del 21:03 29 oct 2011
La parte que encargada del tratamiento y la ejecución de las órdenes de lectura/escritura de datos dentro de la Plataforma Social "TuEntidad.es" se llama Kernel. Se denomina Estación si se hace utilizando el Estándar de TuEntidad.es.
En el caso del Kernel de TuEntidad.es, se puede acceder a través del subdominio (denominado kernel) de la página web de de la Plataforma Social. En casos puntuales donde es necesario, existe un archivo dentro del propio visor que redirecciona internamente, por ejemplo a través de una implementación proxy-php (crossdomain) en el caso del visor lotienes, a kernel. No todos los visores implementan un proxy, ya que permiten conectarse directamente al kernel. El uso del proxy oficial permite un balanceo de carga entre máquinas que mejoran los tiempos de carga usando diferentes hilos del kernel.
Los visores en otros lenguajes se caracterizan por acceder al kernel directamente. Es el caso de las versiones en Flash y ejecutables de escritorio. La necesidad del proxy aparece en los visores que utilizan JavaScript, el cual no permite acceder a dominios fuera del actual.
Sumario
Órdenes del kernel
Actualmente hay una serie de acciones no estandarizadas todavía como son el registro de nuevos usuarios y recuperación de claves de acceso, el inicio/cierre de sesión, y la subida de medios locales. Aquellas acciones estandarizadas se les llama peticiones.
Peticiones
Las peticiones (consultas y escrituras) siguen el modelo de conjunto de órdenes. Las órdenes están separadas por el signo dólar ($) y se numeran internamente con un autoincremental natural que empieza en cero.
Ordenes
Cada orden, sigue el modelo de conjunto de componentes. Cada componente se separa por el signo almohadilla (#).
Devuelve, generalmente, una estructura o un conjunto (vector, matriz, etc) de estructuras.
Componentes
Las componentes de cada orden están separadas por el signo almohadilla (#).
Iteradores
Cada identificador numérico incluido en la componente [1] de cada orden puede ser un valor estático (identificador numérico natural) o un valor dinámico.
- Los valores estáticos se generan en los visores y se envían directamente para su tratamiento.
- Los valores dinámicos se les llama iteradores. Los iteradores son referencias numéricas a órdenes anteriores generados en tiempo de procesamiento en el propio kernel, separados por comas (,).
Funciones
Al final de cada órden pueden aparecer, separadas por el signo pipa (|), una o más funciones. Las funciones tienen una estructura parecida a la componentes de la orden.
Protocolo de TuEntidad.es
El Protocolo de TuEntidad.es permite enviar órdenes a un kérnel para trabajar con los Objetos Sociales que controle. Se distinguen dos tipos órdenes: La de consulta, y la escritura, que se separan en dos archivos de petición .php distintos dentro del kernel, consulta.php y escritura.php.
Consultas
Las consultas devuelven estructuras. Las componentes de una consulta son:
- [0]: El tipo de objeto (a para los álbumes, c para los contactos, etc).
- [1]: El identificador numérico del objeto (id>0 para los propios, o id<0 para los comunes) seleccionado.
- [2]: El nombre de la estructura -matriz o vector o valor- (generalmente datos o entidad).
- [3]: La componente numérica. En caso de ser matriz, la fila; o de ser vector, la componente.
- [4]: La componente numérica. En caso de haber sido una matriz, la componente del vector seleccionado en la anterior componente de la consulta.
Un ejemplo de consulta podría ser este, que es la petición de la fila 1 de los datos de un usuario, en la que se encuentra su nombre, y apellidos. Esta función es pública y accesible por cualquier usuario o visitante:
|--- componentes ---| u # 1 # datos # 1 [0] [1] [2] [3] --- Dame, [0] - del objeto usuario (u), [1] --- con identificador 1, [2] ----- su matriz datos, [3] -------- la fila 1
Escrituras
Al igual que el anterior, estas órdenes de escritura se dividen en componentes. La última componente ([∞]) es el valor que se le asignará. Generalmente no devuelven nada, y solo en casos concretos, por ejemplo cuando se utilizan los comodines (+) devuelven los valores de esas componentes que se ignoraron.
Ese es el caso de, por ejemplo, la petición de un mensaje nuevo:
|---- componentes ----|------------- valor --------------| n # + # 1 : 1 : -2: # urlescape(asunt) : urlescape(txt) [0] [1] [2] [∞] --- Escribe, [0] - un mensaje (n), [1] --- nuevo (+), [2] ----- para el buzón 1, del usuario 1, con plantilla -2 (es la plantilla de S&E), [3] -------- cuyo contenido será: el asunto asunt, y el texto txt
En donde la componente [0] se conoce (n), la [1] es el carácter comodín más (+) que indica que es siguiente al último, y el resto son conocidos. Este ejemplo es el que se usa para enviar mensajes de Sugerencias y Errores al buzón del administrador.
Prototipo Estandarizado de TuEntidad.es
Como el protocolo de TuEntidad.es no tiene todas las características estándares que fija el Paradigma eWa, el Proyecto eWa comenzó a desarrollar a finales del 2010 un prototipo que se ha denominado Prototipo Estandarizado de Peticiones de "TuEntidad.es". Permite un tercer tipo de orden, denominadas órdenes genéricas, que englobará las consultas y escrituras que permite el protocolo. Ésto permitirá que en una misma petición se puedan encontrar tanto órdenes de lectura como órdenes de escritura.
Esta idea está recogida dentro del Estándar de TuEntidad.es.
Sintaxis
La sintaxis quedará mucho más escalable.
|--------------------- componentes ---------------------|------- argumentos -------| objeto # identificador # coordenada1 : c2 : ... : cN # argumento1 : a2 ... : a3 [0] [1] [2] [3]
- Componentes.
- [0] objeto: el tipo de objeto (con una letra) que se va a seleccionar.
- [1] identificador: el identificador del objeto deseado.
- [2] coordenadas: las coordenadas que apuntarán al dato separadas por dos puntos.
- Si no hay coordenadas, devuelve la Matriz completa.
- La primera coordenada determina la fila completa de la Matriz como Vector .
- La segunda coordenada determina la Columna del vector previo que incluye el Valor que se devolverá.
- Argumentos.
- [3] objeto: Sólo se incluye si se trata de una escritura. Son datos separados por dos puntos.
Cada argumento de la lista de argumentos ([3]) corresponderá a una cadena de texto codificada según marca el estándar relativo a la codificación de estructuras multidimensionales (vectores, matrices, etc.) en estructuras unidimensionales (cadenas) utilizando los caracteres delimitadores que fija el estándar.
Adición de la capa de lenguaje
El Estándar de Peticiones de "TuEntidad.es", además, permite encapsular (bajo la apariencia de un lenguaje de programación, similar a los LeWaS, compatible con el Idioma de Programación eWa) las órdenes genéricas.
Los códigos se envían compilados al kérnel compatible con el Estándar de "TuEntidad.es" y devuelve una respuesta análoga a la que recibiría el Protocolo de "TuEntidad.es" para las mismas consultas básicas.
Estructuras del Kernel
Las Estructuras de Datos del Kernel son Estructuras de Datos que almecenan y suministran información sobre los diferentes elementos que hay implementados en la Plataforma Social "TuEntidad.es".
Cada estructura está formada por tres componentes separadas por el signo almohadilla (#).
- [0]: El Tipo de objeto (a para los álbumes, c para los contactos, etc).
- [1]: El Identificador numérico natural del objeto (id>0 para los propios de la Red Social, o id<0 para los comunes) seleccionado.
- [2]: El Valor, vector -valores separados por dos puntos (:)- o matriz -vectores separados por salto de línea (\n)-.
Objetos
Según se marca en la definición de Red Social, los Tres Objetos Básicos de Identidad Social son los objetos de tipo entidad, permiso, y medio. Por ese motivo, la organización de objetos en las Estructuras del Kernel de TuEntidad.es se agrupan según las características generales de cada objeto.
Entidades
Los objetos de tipo entidades son aquellos que tengan existencia real, autonomía, y diferenciación e individualidad'. Se representa por e en el Protocolo.
- Usuarios (u):
- Y también... Empresa, Asociación, Organismo, Agrupación, etc.
Medios
Los medios son todo el conjunto de entidades que incluyen información. Generalmente se consideran medios primarios (o propios) a las imágenes, vídeos y sonidos.
En realidad existen multitud de objetos que entran dentro de la definición de medios y subcategorías de los tres primarios. A esos se les llama Aglutinadores o Conjuntos.
Permisos
Los objetos de tipo permisos son un tipo especial de objeto social donde se evalúa un predicado (cuando se solicite autorización para realizar una determinada acción (devolverá cierto cuando se le conceda al permiso requerido, y falso en caso contrario) o que devolverá una lista de acciones autorizadas si no se le solicita una autorización explícita. La variación de los parámetros de entrada (el tipo de permiso solicitado, hora actual, IP, etc.) puede hacer que modifique su respuesta.
Acciones
Los objetos de tipo acciones son también un tipo especial de objeto social. En este caso, como su propio nombre indica, se utilizan para englobar acciones, comprobaciones y otras operaciones secuenciales bajo una misma orden. El valor de retorno corresponde con un valor literal o un objeto que se acoplará al objeto social que se esté procesando en esa petición.