SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Spotlight: un punto de luz en
                                tu aplicación


                             Javier Rodríguez (javierrodriguez@me.com)
lunes 27 de abril de 2009
1.     Breve historia
                     2.     Los fundamentos
                     3.     Las herramientas
                     4.     Crea tu plug-in
                     5.     Demo
lunes 27 de abril de 2009
1. Breve historia
                            • Mac OS X 10.4: Un servidor central de Metadatos
                            • Importadores de serie (plug-in)
                            • Arquitectura modular




lunes 27 de abril de 2009

Con anterioridad al Mac OS X las búsquedas eran textuales cuando se refería al contenido de los documentos. El
resto de búsquedas eran sobre los metadatos básicos, comunes a todo tipo de archivos como la fecha de creación,
modificación, última apertura, etc.
2. Los fundamentos
                            • Un tipo de archivo sólo puede ser indexado por
                              un plug-in.




lunes 27 de abril de 2009

(*) el sistema decidirá cuál es el tipo de plug-in más apropiado en el caso de que no se proporcione uno exclusivo.
Esto es lo que pasaría por ejemplo con un archivo de texto o XML.
2. Los fundamentos

                            • Un plug-in puede analizar los documentos
                              correspondientes a diversos UTI (no, no es
                              contradictorio).




lunes 27 de abril de 2009

Si un importador tiene registrados varios UTI, entonces este será llamado cada vez que se modifique cada uno de
dichos documentos. La única función recibirá el UTI de modo que pueda modificar su comportamiento en
consecuencia.
2. Los fundamentos
                            • Los metadatos se actualizan cuando se modifica
                              el archivo.




lunes 27 de abril de 2009

Spotlight guardará los metadatos recibidos por el plug-in encargado de procesar dicho archivo. Es decir: el
desarrollador decide cuáles son los metadatos importantes para un tipo de archivo concreto.

El plug-in ha de hacer el trabajo lo más rápido posible, ya que dicha indexación se produce durante los ciclos
muertos del procesador.
2. Los fundamentos
                            • El plug-in debe estar localizado en cualquiera de las dos ubicaciones
                               posibles:

                              /System/Library/Spotlight (los incluidos por omisión)

                              /Library/Spotlight

                              ~/Library/Spotlight

                              (aplicación)/Contents/Library/Spotlight



lunes 27 de abril de 2009

Si un importador tiene registrados varios UTI, entonces este será llamado cada vez que se modifique cada uno de
dichos documentos. La única función recibirá el UTI de modo que pueda modificar su comportamiento en
consecuencia.

Si existe un plug-in para un tipo de archivo determinado en la ruta “(aplicación)/Contents/Library/Spotlight” y otro
en cualquiera de las rutas anteriores, entonces tendrá precedencia para el parseo de los metadatos el disponible
dentro del bundle de la aplicación.
Si desarrollas un importador para parsear los documentos generados por una aplicación que no has creado tú,
entonces deberás añadir un “postinstall” en el script de instalación para informar manualmente a Spotlight de la
disponibilidad de tu plug-in (import manual)
2. Los fundamentos

                            • El plug-in se asocia con el documento mediante
                              un UTI (Uniform Type Identifier; Identificador de
                              Tipo Uniforme).




lunes 27 de abril de 2009

Los UTI tienen forma de DNS inverso.

keys kMDItemContentType y kMDItemContentTypeTree (mdls)
3. Las Herramientas

                            • Disponemos de varias herramientas del sistema:
                              > mdls
                              > mdutil
                              > mdfind
                              > mdimport
lunes 27 de abril de 2009

mdls: lista los atributos correspondientes a los metadatos para el archivo especificado.

mdutil: gestiona las bases de metadatos empleadas por Spotlight

mdfind: halla los archivos coincidentes con el criterio de búsqueda indicado.

mdimport: importa los metadatos correspondientes a los archivos indicados o bien jerarquías del sistema. Es útil
durante la depuración de nuestros plug-in
4. Crea tu plug-in
                     • Identifica tu documento:




lunes 27 de abril de 2009

Asigna uno (o varios) UTI que identifiquen tu tipo de documento.

Esta operación se realiza en info.plist (en Target, preferiblemente).

Si el importador va a ser independiente de la aplicación, entonces se declarará en el archivo info.plist del proyecto del
plug-in.
4. Crea tu plug-in
                     • Identifica tu documento:




lunes 27 de abril de 2009

Otra forma de llegar al mismo sitio: haz doble clic sobre el icono de la aplicación en Target.

En la ventana que se abre, selecciona la pestaña Properties y añade todos los atributos de la aplicación, entre ellos
los diferentes UTI en el listado inferior.

Ambas operaciones asocian el UTI con el tipo de documento, pero no lo declara por completo ante el sistema
operativo.
4. Crea tu plug-in




lunes 27 de abril de 2009

Para exportar el UTI al sistema, pulse el botón Open info.plist as file y añade un array con la clave
UTEportedTypeDeclarations.

Dicho array debe contener un Diccionario para cada uno de los UTI declarados.

Utiliza MDimport -d1 sobre un documento de aplicación. Verás que se identifica correctamente el tipo.

Si en vez del tipo (UTI, DNS inverso) muestra un UTI del estilo dyn.... significará que algo va mal.... no ha hallado
ningún UTI asociado y por tanto ha asociado uno dinámico.

En ese caso, revisa el archivo PLIST, ya sea en Xcode o bien empleando la herramienta plutil para comprobar que se
parsea correctamente.
4. Crea tu plug-in
                     • El molde de los bizcochos:




lunes 27 de abril de 2009

Problema: se crea como un nuevo proyecto (idealmente estaría bien que formase parte del proyecto de nuestra
aplicación)... pero a cambio Apple nos lo da todo prácticamente hecho.

Solución: en tu proyecto de aplicación puedes añadir el plug-in como un nuevo recurso de compilación del tipo
“Copiar archivo”.
4. Crea tu plug-in




lunes 27 de abril de 2009

info.plist e infoPlist.string: viejos conocidos del proyecto de nuestra aplicación.

Aquí es donde deberías de definir los UTI en el caso de que estés diseñando un importador independiente de la
aplicación.

Schema.xml: Este es el archivo en el que debes definir los atributos (metadatos) que sean propios (exclusivos) del
documento que se va a parsear. Dichos metadatos deben de ser distintos a los que contempla por omisión el propio
sistema operativo.
4. Crea tu plug-in




lunes 27 de abril de 2009

Tipos de valores soportados: CFString, CFNumber, CFBoolean, CFDate y CFArray.

Schema.strings incluye la representación en texto común para cada una de las claves de metadatos personalizados
que hayamos creado.

Dicha información es la que se presenta al usuario por el Finder, de modo que resulta más comprensible.

Una vez guardado el archivo: puedes comprobar la validez del mismo utilizando, desde el Terminal:

mdcheckschema schema.xml
4. Crea tu plug-in

                              ¿Qué metadatos puedo declarar?

                     Ninguno de estos: “Spotlight Metadata Attributes Reference”




lunes 27 de abril de 2009

Declara sólo los metadatos que sean realmente intrínsecos de tu aplicación. Antes de hacerlo, echa un vistazo
a la documentación de Apple. Si un metadato ya está declarado... usa la constante, no vuelvas a declararlo.
4. Crea tu plug-in
                      Información para humanos: schema.strings




lunes 27 de abril de 2009

Schema.strings incluye la representación en texto común para cada una de las claves de metadatos personalizados
que hayamos creado.

Dicha información es la que se presenta al usuario por el Finder, de modo que resulta más comprensible.
lunes 27 de abril de 2009

Todo el código que necesitas para parsear el documento: en una captura de pantalla.

Además, no necesitas parchear todo el archivo sólo la parte sobre la que deseas actuar extrayendo los
metadatos.

Dicho código es reutilizado: ¡ya lo has escrito en tu proyecto para generar el documento personalizado!

Si la función parchea correctamente los metadatos: devuelve el booleano ‘true’... de lo contrario, ‘false’
5. Demo   www.colorate.eu




lunes 27 de abril de 2009
¿Sigue alguien despierto?
                     Referencias:
                            http://www.apple.com/downloads/macosx/spotlight/


                            http://developer.apple.com/DOCUMENTATION/Carbon/Conceptual/MDImporters/Concepts/Troubleshooting.html

                            http://developer.apple.com/DOCUMENTATION/Carbon/Conceptual/MDImporters/Concepts/WritingAnImp.html




lunes 27 de abril de 2009

Más contenido relacionado

Destacado

Multitarea e hilos en java
Multitarea e hilos en javaMultitarea e hilos en java
Multitarea e hilos en javaTensor
 
Programacion Multihilo
Programacion MultihiloProgramacion Multihilo
Programacion MultihiloNICK
 
Java multi threading
Java multi threadingJava multi threading
Java multi threadingRaja Sekhar
 
Koldo Saratxaga - Para que una organizacion funcione hay que creer en las per...
Koldo Saratxaga - Para que una organizacion funcione hay que creer en las per...Koldo Saratxaga - Para que una organizacion funcione hay que creer en las per...
Koldo Saratxaga - Para que una organizacion funcione hay que creer en las per...K2K emocionando
 
Repaso matematicas 10_a_quinto
Repaso matematicas 10_a_quintoRepaso matematicas 10_a_quinto
Repaso matematicas 10_a_quintoFiz
 
Recursos, derechos y cooperación:carteles didácticos
Recursos, derechos y cooperación:carteles didácticosRecursos, derechos y cooperación:carteles didácticos
Recursos, derechos y cooperación:carteles didácticosCAPRi
 
Historia compacta de flash
Historia compacta de flashHistoria compacta de flash
Historia compacta de flashMario Zambrano
 
Presentación final de pedagogía especial2
Presentación final de pedagogía especial2Presentación final de pedagogía especial2
Presentación final de pedagogía especial2Ingrid Bond
 
Seminario Almacenamiento Datos Hoy - 13/12/10
Seminario Almacenamiento Datos Hoy - 13/12/10Seminario Almacenamiento Datos Hoy - 13/12/10
Seminario Almacenamiento Datos Hoy - 13/12/10CAESCG.org
 
Peligros y Oportunidades en Social Media
Peligros y Oportunidades en Social Media Peligros y Oportunidades en Social Media
Peligros y Oportunidades en Social Media Jorge Yunes
 
L’energia.ok
L’energia.okL’energia.ok
L’energia.okKalaura
 

Destacado (20)

Multitarea e hilos en java
Multitarea e hilos en javaMultitarea e hilos en java
Multitarea e hilos en java
 
Programacion Multihilo
Programacion MultihiloProgramacion Multihilo
Programacion Multihilo
 
Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
Java Threads (Hilos en Java)
Java Threads (Hilos en Java)Java Threads (Hilos en Java)
Java Threads (Hilos en Java)
 
Java multi threading
Java multi threadingJava multi threading
Java multi threading
 
Koldo Saratxaga - Para que una organizacion funcione hay que creer en las per...
Koldo Saratxaga - Para que una organizacion funcione hay que creer en las per...Koldo Saratxaga - Para que una organizacion funcione hay que creer en las per...
Koldo Saratxaga - Para que una organizacion funcione hay que creer en las per...
 
Repaso matematicas 10_a_quinto
Repaso matematicas 10_a_quintoRepaso matematicas 10_a_quinto
Repaso matematicas 10_a_quinto
 
Redactemos la editorial
Redactemos la editorialRedactemos la editorial
Redactemos la editorial
 
El tornillo
El tornilloEl tornillo
El tornillo
 
Recursos, derechos y cooperación:carteles didácticos
Recursos, derechos y cooperación:carteles didácticosRecursos, derechos y cooperación:carteles didácticos
Recursos, derechos y cooperación:carteles didácticos
 
Escuela tic pasquau
Escuela tic pasquauEscuela tic pasquau
Escuela tic pasquau
 
Historia compacta de flash
Historia compacta de flashHistoria compacta de flash
Historia compacta de flash
 
Presentación final de pedagogía especial2
Presentación final de pedagogía especial2Presentación final de pedagogía especial2
Presentación final de pedagogía especial2
 
El espacio público en la calle 19
El espacio público en la calle 19El espacio público en la calle 19
El espacio público en la calle 19
 
Heroes de una sana alimentacion
Heroes de una sana alimentacionHeroes de una sana alimentacion
Heroes de una sana alimentacion
 
Pgpcf
PgpcfPgpcf
Pgpcf
 
Seminario Almacenamiento Datos Hoy - 13/12/10
Seminario Almacenamiento Datos Hoy - 13/12/10Seminario Almacenamiento Datos Hoy - 13/12/10
Seminario Almacenamiento Datos Hoy - 13/12/10
 
Peligros y Oportunidades en Social Media
Peligros y Oportunidades en Social Media Peligros y Oportunidades en Social Media
Peligros y Oportunidades en Social Media
 
L’energia.ok
L’energia.okL’energia.ok
L’energia.ok
 
Estadisticas facebook 2011
Estadisticas facebook 2011Estadisticas facebook 2011
Estadisticas facebook 2011
 

Similar a [ Cocoa Gurus] Spotlight

Filtrador de Noticias Digitales MAPv020 fase 2
Filtrador de Noticias Digitales MAPv020 fase 2Filtrador de Noticias Digitales MAPv020 fase 2
Filtrador de Noticias Digitales MAPv020 fase 2APM-Shipley
 
Principios de estandares abiertos s13
Principios de estandares abiertos s13Principios de estandares abiertos s13
Principios de estandares abiertos s13Maestros en Linea MX
 
Principios de estandares abiertos s13
Principios de estandares abiertos s13Principios de estandares abiertos s13
Principios de estandares abiertos s13Maestros Online
 
Auto evaluacion n 2
Auto evaluacion n 2Auto evaluacion n 2
Auto evaluacion n 2mirye28
 
Auto evaluacion 2
Auto evaluacion 2Auto evaluacion 2
Auto evaluacion 2crispi2029
 
Auto evaluacion 2
Auto evaluacion 2Auto evaluacion 2
Auto evaluacion 2crispi2029
 
Tema 12 www.fresymetal.com
Tema 12 www.fresymetal.comTema 12 www.fresymetal.com
Tema 12 www.fresymetal.comFresyMetal
 
trabajo de sistemas operativos
trabajo de sistemas operativostrabajo de sistemas operativos
trabajo de sistemas operativosdanimartinez18
 
Mapeo de objeto relacional
Mapeo de objeto relacionalMapeo de objeto relacional
Mapeo de objeto relacionalInspirate Unaula
 
Sistemas operativos 180604 uchima_uchima_nidia
Sistemas operativos 180604 uchima_uchima_nidiaSistemas operativos 180604 uchima_uchima_nidia
Sistemas operativos 180604 uchima_uchima_nidianidiau
 
Partes de un sistema computacional
Partes de un sistema computacionalPartes de un sistema computacional
Partes de un sistema computacionalPilarST20
 
Herramienta scoopit
Herramienta scoopitHerramienta scoopit
Herramienta scoopitreyser2017
 
Uso de aplicaciones microinformáticas (con Impress)
Uso de aplicaciones microinformáticas (con Impress)Uso de aplicaciones microinformáticas (con Impress)
Uso de aplicaciones microinformáticas (con Impress)jorgebr
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativogrettel9612
 

Similar a [ Cocoa Gurus] Spotlight (20)

Filtrador de Noticias Digitales MAPv020 fase 2
Filtrador de Noticias Digitales MAPv020 fase 2Filtrador de Noticias Digitales MAPv020 fase 2
Filtrador de Noticias Digitales MAPv020 fase 2
 
Principios de estandares abiertos s13
Principios de estandares abiertos s13Principios de estandares abiertos s13
Principios de estandares abiertos s13
 
Principios de estandares abiertos s13
Principios de estandares abiertos s13Principios de estandares abiertos s13
Principios de estandares abiertos s13
 
Auto evaluacion n 2
Auto evaluacion n 2Auto evaluacion n 2
Auto evaluacion n 2
 
Auto evaluacion 2
Auto evaluacion 2Auto evaluacion 2
Auto evaluacion 2
 
Auto evaluacion 2
Auto evaluacion 2Auto evaluacion 2
Auto evaluacion 2
 
Act 3
Act 3Act 3
Act 3
 
Tema 12 www.fresymetal.com
Tema 12 www.fresymetal.comTema 12 www.fresymetal.com
Tema 12 www.fresymetal.com
 
trabajo de sistemas operativos
trabajo de sistemas operativostrabajo de sistemas operativos
trabajo de sistemas operativos
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Mapeo de objeto relacional
Mapeo de objeto relacionalMapeo de objeto relacional
Mapeo de objeto relacional
 
Sistemas operativos 180604 uchima_uchima_nidia
Sistemas operativos 180604 uchima_uchima_nidiaSistemas operativos 180604 uchima_uchima_nidia
Sistemas operativos 180604 uchima_uchima_nidia
 
Tema 6
Tema 6Tema 6
Tema 6
 
Partes de un sistema computacional
Partes de un sistema computacionalPartes de un sistema computacional
Partes de un sistema computacional
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Orm final
Orm finalOrm final
Orm final
 
Herramienta scoopit
Herramienta scoopitHerramienta scoopit
Herramienta scoopit
 
Uso de aplicaciones microinformáticas (con Impress)
Uso de aplicaciones microinformáticas (con Impress)Uso de aplicaciones microinformáticas (con Impress)
Uso de aplicaciones microinformáticas (con Impress)
 
Trabajo de programacion
Trabajo de programacionTrabajo de programacion
Trabajo de programacion
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 

Último

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 

Último (20)

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 

[ Cocoa Gurus] Spotlight

  • 1. Spotlight: un punto de luz en tu aplicación Javier Rodríguez (javierrodriguez@me.com) lunes 27 de abril de 2009
  • 2. 1. Breve historia 2. Los fundamentos 3. Las herramientas 4. Crea tu plug-in 5. Demo lunes 27 de abril de 2009
  • 3. 1. Breve historia • Mac OS X 10.4: Un servidor central de Metadatos • Importadores de serie (plug-in) • Arquitectura modular lunes 27 de abril de 2009 Con anterioridad al Mac OS X las búsquedas eran textuales cuando se refería al contenido de los documentos. El resto de búsquedas eran sobre los metadatos básicos, comunes a todo tipo de archivos como la fecha de creación, modificación, última apertura, etc.
  • 4. 2. Los fundamentos • Un tipo de archivo sólo puede ser indexado por un plug-in. lunes 27 de abril de 2009 (*) el sistema decidirá cuál es el tipo de plug-in más apropiado en el caso de que no se proporcione uno exclusivo. Esto es lo que pasaría por ejemplo con un archivo de texto o XML.
  • 5. 2. Los fundamentos • Un plug-in puede analizar los documentos correspondientes a diversos UTI (no, no es contradictorio). lunes 27 de abril de 2009 Si un importador tiene registrados varios UTI, entonces este será llamado cada vez que se modifique cada uno de dichos documentos. La única función recibirá el UTI de modo que pueda modificar su comportamiento en consecuencia.
  • 6. 2. Los fundamentos • Los metadatos se actualizan cuando se modifica el archivo. lunes 27 de abril de 2009 Spotlight guardará los metadatos recibidos por el plug-in encargado de procesar dicho archivo. Es decir: el desarrollador decide cuáles son los metadatos importantes para un tipo de archivo concreto. El plug-in ha de hacer el trabajo lo más rápido posible, ya que dicha indexación se produce durante los ciclos muertos del procesador.
  • 7. 2. Los fundamentos • El plug-in debe estar localizado en cualquiera de las dos ubicaciones posibles: /System/Library/Spotlight (los incluidos por omisión) /Library/Spotlight ~/Library/Spotlight (aplicación)/Contents/Library/Spotlight lunes 27 de abril de 2009 Si un importador tiene registrados varios UTI, entonces este será llamado cada vez que se modifique cada uno de dichos documentos. La única función recibirá el UTI de modo que pueda modificar su comportamiento en consecuencia. Si existe un plug-in para un tipo de archivo determinado en la ruta “(aplicación)/Contents/Library/Spotlight” y otro en cualquiera de las rutas anteriores, entonces tendrá precedencia para el parseo de los metadatos el disponible dentro del bundle de la aplicación. Si desarrollas un importador para parsear los documentos generados por una aplicación que no has creado tú, entonces deberás añadir un “postinstall” en el script de instalación para informar manualmente a Spotlight de la disponibilidad de tu plug-in (import manual)
  • 8. 2. Los fundamentos • El plug-in se asocia con el documento mediante un UTI (Uniform Type Identifier; Identificador de Tipo Uniforme). lunes 27 de abril de 2009 Los UTI tienen forma de DNS inverso. keys kMDItemContentType y kMDItemContentTypeTree (mdls)
  • 9. 3. Las Herramientas • Disponemos de varias herramientas del sistema: > mdls > mdutil > mdfind > mdimport lunes 27 de abril de 2009 mdls: lista los atributos correspondientes a los metadatos para el archivo especificado. mdutil: gestiona las bases de metadatos empleadas por Spotlight mdfind: halla los archivos coincidentes con el criterio de búsqueda indicado. mdimport: importa los metadatos correspondientes a los archivos indicados o bien jerarquías del sistema. Es útil durante la depuración de nuestros plug-in
  • 10. 4. Crea tu plug-in • Identifica tu documento: lunes 27 de abril de 2009 Asigna uno (o varios) UTI que identifiquen tu tipo de documento. Esta operación se realiza en info.plist (en Target, preferiblemente). Si el importador va a ser independiente de la aplicación, entonces se declarará en el archivo info.plist del proyecto del plug-in.
  • 11. 4. Crea tu plug-in • Identifica tu documento: lunes 27 de abril de 2009 Otra forma de llegar al mismo sitio: haz doble clic sobre el icono de la aplicación en Target. En la ventana que se abre, selecciona la pestaña Properties y añade todos los atributos de la aplicación, entre ellos los diferentes UTI en el listado inferior. Ambas operaciones asocian el UTI con el tipo de documento, pero no lo declara por completo ante el sistema operativo.
  • 12. 4. Crea tu plug-in lunes 27 de abril de 2009 Para exportar el UTI al sistema, pulse el botón Open info.plist as file y añade un array con la clave UTEportedTypeDeclarations. Dicho array debe contener un Diccionario para cada uno de los UTI declarados. Utiliza MDimport -d1 sobre un documento de aplicación. Verás que se identifica correctamente el tipo. Si en vez del tipo (UTI, DNS inverso) muestra un UTI del estilo dyn.... significará que algo va mal.... no ha hallado ningún UTI asociado y por tanto ha asociado uno dinámico. En ese caso, revisa el archivo PLIST, ya sea en Xcode o bien empleando la herramienta plutil para comprobar que se parsea correctamente.
  • 13. 4. Crea tu plug-in • El molde de los bizcochos: lunes 27 de abril de 2009 Problema: se crea como un nuevo proyecto (idealmente estaría bien que formase parte del proyecto de nuestra aplicación)... pero a cambio Apple nos lo da todo prácticamente hecho. Solución: en tu proyecto de aplicación puedes añadir el plug-in como un nuevo recurso de compilación del tipo “Copiar archivo”.
  • 14. 4. Crea tu plug-in lunes 27 de abril de 2009 info.plist e infoPlist.string: viejos conocidos del proyecto de nuestra aplicación. Aquí es donde deberías de definir los UTI en el caso de que estés diseñando un importador independiente de la aplicación. Schema.xml: Este es el archivo en el que debes definir los atributos (metadatos) que sean propios (exclusivos) del documento que se va a parsear. Dichos metadatos deben de ser distintos a los que contempla por omisión el propio sistema operativo.
  • 15. 4. Crea tu plug-in lunes 27 de abril de 2009 Tipos de valores soportados: CFString, CFNumber, CFBoolean, CFDate y CFArray. Schema.strings incluye la representación en texto común para cada una de las claves de metadatos personalizados que hayamos creado. Dicha información es la que se presenta al usuario por el Finder, de modo que resulta más comprensible. Una vez guardado el archivo: puedes comprobar la validez del mismo utilizando, desde el Terminal: mdcheckschema schema.xml
  • 16. 4. Crea tu plug-in ¿Qué metadatos puedo declarar? Ninguno de estos: “Spotlight Metadata Attributes Reference” lunes 27 de abril de 2009 Declara sólo los metadatos que sean realmente intrínsecos de tu aplicación. Antes de hacerlo, echa un vistazo a la documentación de Apple. Si un metadato ya está declarado... usa la constante, no vuelvas a declararlo.
  • 17. 4. Crea tu plug-in Información para humanos: schema.strings lunes 27 de abril de 2009 Schema.strings incluye la representación en texto común para cada una de las claves de metadatos personalizados que hayamos creado. Dicha información es la que se presenta al usuario por el Finder, de modo que resulta más comprensible.
  • 18. lunes 27 de abril de 2009 Todo el código que necesitas para parsear el documento: en una captura de pantalla. Además, no necesitas parchear todo el archivo sólo la parte sobre la que deseas actuar extrayendo los metadatos. Dicho código es reutilizado: ¡ya lo has escrito en tu proyecto para generar el documento personalizado! Si la función parchea correctamente los metadatos: devuelve el booleano ‘true’... de lo contrario, ‘false’
  • 19. 5. Demo www.colorate.eu lunes 27 de abril de 2009
  • 20. ¿Sigue alguien despierto? Referencias: http://www.apple.com/downloads/macosx/spotlight/ http://developer.apple.com/DOCUMENTATION/Carbon/Conceptual/MDImporters/Concepts/Troubleshooting.html http://developer.apple.com/DOCUMENTATION/Carbon/Conceptual/MDImporters/Concepts/WritingAnImp.html lunes 27 de abril de 2009