SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
Programando Cross Platform


           Programación Cross-Platform
     Cosas a tener en cuenta para no quedarte pelado
Roberto Alsina <ralsina@kde.org>
Manuel de la Peña <manuel@canonical.com>




                               PyCon Argentina 2011
Programando Cross Platform


Cross Platform: Qué y Porqué
 • Medio hacia un fin
 • Fin en sí mismo




                          PyCon Argentina 2011
Programando Cross Platform


Cross Platform: ¿Es difícil?
Muy. ¡Pregúntenle a Manuel!




                                PyCon Argentina 2011
Programando Cross Platform


¿Cuántas plataformas estamos hablando?
 • Linux (GNOME/KDE/Unity/ninguno)
 • Windows (XP/Vista/7/8)
 • Mac
 • Mobile (Android/iOS)
 • Web (Chrome/Firefox/Safari/Mobile browsers/IE x.x)




                              PyCon Argentina 2011
Programando Cross Platform


¡Nos mudamos a la web!
 • La web no es una única plataforma
 • Se puede ser web y no ser cross-platform
 • Se puede ser web y ser desktop (aplicaciones mixtas)




                              PyCon Argentina 2011
Programando Cross Platform


Desktop: ¿Se puede?
 • Convenciones de la UI




                             PyCon Argentina 2011
Programando Cross Platform


Ser igual a los demás




                 PyCon Argentina 2011
Programando Cross Platform


Ser igual a sí mismo




                 PyCon Argentina 2011
Programando Cross Platform


Notificaciones
 • Bubbles
 • App indicators
 • Growl




                      PyCon Argentina 2011
Programando Cross Platform


Filesystems
Cuando se trabaja con diferentes filesystems se ha de tener cuidado con los siguientes
temas:

   • Paths: Como han de manajarse los paths. Es os.path suficiente?
   • Eventos: Que eventos recibimos del fs cuando se editan los archivos.
   • Unicode vs Binary
   • User rights.




                                PyCon Argentina 2011
Programando Cross Platform


Filesystems
Problemas de Paths:

   • Caracteres illegales * Linux: / null * Mac OS X: :/ null * Windows:

             • DOS Fat32: x00-x1F SPACE DEL " * / : < > ?  |
             • Windows NTFS: " * : < > ?  / |




                                  PyCon Argentina 2011
Programando Cross Platform


Filesystems
Hay más problemas con los paths:
(Pregunta para la gente de la sala)




                                 PyCon Argentina 2011
Programando Cross Platform


Filesystems
Aggg.... tus paths son demasiado largos.

   • Windows:

        • Old school: Path maximo es de 255 char
        • NTFS: Cada componente del path puede ser de 255




                                PyCon Argentina 2011
Programando Cross Platform


Filesystems
os.path esta roto:

   • listdir:

          • 'C:Python27/.' => funciona o/
          • '?C:Python27/.' => no funciona :( puto!




                                    PyCon Argentina 2011
Programando Cross Platform


Filesystems
Windows: Vamos a jugar al teto, tú te agachas y yo te la meto:
Nombre illegales:

   • AUX
   • CLOCK$
   • COM[0-9]
   • CON
   • LPT[1-9]
   • NUL
   • PRN


                                 PyCon Argentina 2011
Programando Cross Platform

Esto incluye todos los nombres ya mencionados incluyendo la extension (AUX.txt). Pero
es windwos... se puede usar si se usa ?WTF?!?!




                               PyCon Argentina 2011
Programando Cross Platform


Eventos
Queremos recibir eventos cuando una archivo es modificado:

   • Linux: pyinotify
   • Windows: ReadDirecotryChangesW
   • Mac OS X: FSEvents




                               PyCon Argentina 2011
Programando Cross Platform


Eventos
Los diferentes FS tienen diferentes APIs:

   • Linux: Por directorio
   • Windows: Por árbol
   • Mac OS X: Por árbol




                                 PyCon Argentina 2011
Programando Cross Platform


Eventos
Los diferentes FS tienes diferentes eventos:

   • Linux:

      pyinotify.IN_OPEN
      pyinotify.IN_CLOSE_NOWRITE
      pyinotify.IN_CLOSE_WRITE
      pyinotify.IN_CREATE
      pyinotify.IN_CREATE | pyinotify.IN_ISDIR

   • Windows:

      1: IN_CREATE
      2: IN_DELETE

                                 PyCon Argentina 2011
Programando Cross Platform


  3: IN_MODIFY
  4: IN_MOVED_FROM
  5: IN_MOVED_TO

• Mac OS X:




                       PyCon Argentina 2011
Programando Cross Platform


Binary vs Unicode
Es importante usar binary o unicode?
    (pregunta para la audiencia)




                                   PyCon Argentina 2011
Programando Cross Platform


User rights
o.chmod si, pero no!

   • Linux: Ok
   • Mac OS X: Ok
   • Windows: AddAccessAllowedAceEx, AddAccessDeniedAceEx




                            PyCon Argentina 2011
Programando Cross Platform


User rights Windows
security_descriptor = GetFileSecurity(path, DACL_SECURITY_INFORMATION)
dacl = ACL()
for group_sid, attributes in groups:
    # set the attributes of the group only if not null
    if attributes:
        dacl.AddAccessAllowedAceEx(ACL_REVISION,
             CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE, attributes,
             group_sid)
# the dacl has all the info of the diff groups passed in the parameters
security_descriptor.SetSecurityDescriptorDacl(1, dacl, 0)
SetFileSecurity(path, DACL_SECURITY_INFORMATION, security_descriptor)




                          PyCon Argentina 2011
Programando Cross Platform


IPC
Formas de hacer ipc:

   • Linux: Dbus, tcp
   • Windows: NamedPipes, tcp, Shared Memory
   • Mac Os X: NSDistributedNotificationCenter or NSPortNameServer (mach ports)
Hay que abstraer la comunicación ya que cada uno tienes un estilo de exponer los
mensajes.




                             PyCon Argentina 2011
Programando Cross Platform


Packaging
 • Packaging en Linux
 • Installers en Windows
 • App stores en mobile




                             PyCon Argentina 2011

Más contenido relacionado

Similar a Programando Cross-Platform: cosas a tener en cuenta para no quedarte pelado

Cursini Linuxi 4ni.ppt
Cursini Linuxi 4ni.pptCursini Linuxi 4ni.ppt
Cursini Linuxi 4ni.pptjohan riuk
 
CursoLinux4_________________________.ppt
CursoLinux4_________________________.pptCursoLinux4_________________________.ppt
CursoLinux4_________________________.pptmapajoben
 
Saregune Técnica
Saregune TécnicaSaregune Técnica
Saregune TécnicaSaregune
 
Sistema operativo(Linux)
Sistema operativo(Linux)Sistema operativo(Linux)
Sistema operativo(Linux)Andhy Santos
 
Desarrollo Web con Herramientas Libres
Desarrollo Web con Herramientas LibresDesarrollo Web con Herramientas Libres
Desarrollo Web con Herramientas LibresDiego Fernando Marin
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosLuciaMart
 
Introducción a los sistemas operativos
Introducción a los sistemas operativosIntroducción a los sistemas operativos
Introducción a los sistemas operativosjaikox
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go LangArkhotech
 
Diseño de software educativo 1
Diseño de software educativo 1Diseño de software educativo 1
Diseño de software educativo 1minerva23
 
Equivalencia de sw libre
Equivalencia de sw libreEquivalencia de sw libre
Equivalencia de sw libreMiguel Leyva
 
Bii t03 - sistemas operarivos. windows, linux y unix
Bii t03 - sistemas operarivos. windows, linux y unixBii t03 - sistemas operarivos. windows, linux y unix
Bii t03 - sistemas operarivos. windows, linux y unixnuria garcia
 
201910 valencia gnu linux es
201910 valencia gnu  linux es201910 valencia gnu  linux es
201910 valencia gnu linux esGuillermo Amat
 
Trabajo n° 5 tipos de software
Trabajo n° 5 tipos de softwareTrabajo n° 5 tipos de software
Trabajo n° 5 tipos de softwareJosè Jimènez
 

Similar a Programando Cross-Platform: cosas a tener en cuenta para no quedarte pelado (20)

Cursini Linuxi 4ni.ppt
Cursini Linuxi 4ni.pptCursini Linuxi 4ni.ppt
Cursini Linuxi 4ni.ppt
 
CursoLinux4_________________________.ppt
CursoLinux4_________________________.pptCursoLinux4_________________________.ppt
CursoLinux4_________________________.ppt
 
sistemas operativos
sistemas operativossistemas operativos
sistemas operativos
 
Sistema linux
Sistema linuxSistema linux
Sistema linux
 
Cuadro comparativo S.O Diego H.
Cuadro comparativo S.O Diego H.Cuadro comparativo S.O Diego H.
Cuadro comparativo S.O Diego H.
 
01 - Introducción al lenguaje C
01 - Introducción al lenguaje C01 - Introducción al lenguaje C
01 - Introducción al lenguaje C
 
Saregune Técnica
Saregune TécnicaSaregune Técnica
Saregune Técnica
 
Sistema operativo(Linux)
Sistema operativo(Linux)Sistema operativo(Linux)
Sistema operativo(Linux)
 
Linux
LinuxLinux
Linux
 
Desarrollo Web con Herramientas Libres
Desarrollo Web con Herramientas LibresDesarrollo Web con Herramientas Libres
Desarrollo Web con Herramientas Libres
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Introducción a los sistemas operativos
Introducción a los sistemas operativosIntroducción a los sistemas operativos
Introducción a los sistemas operativos
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go Lang
 
Quien creo el xp
Quien creo el xpQuien creo el xp
Quien creo el xp
 
Diseño de software educativo 1
Diseño de software educativo 1Diseño de software educativo 1
Diseño de software educativo 1
 
Equivalencia de sw libre
Equivalencia de sw libreEquivalencia de sw libre
Equivalencia de sw libre
 
Bii t03 - sistemas operarivos. windows, linux y unix
Bii t03 - sistemas operarivos. windows, linux y unixBii t03 - sistemas operarivos. windows, linux y unix
Bii t03 - sistemas operarivos. windows, linux y unix
 
201910 valencia gnu linux es
201910 valencia gnu  linux es201910 valencia gnu  linux es
201910 valencia gnu linux es
 
Trabajo n° 5 tipos de software
Trabajo n° 5 tipos de softwareTrabajo n° 5 tipos de software
Trabajo n° 5 tipos de software
 

Último

R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
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
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
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
 
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
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 

Último (20)

R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
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
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
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
 
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
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 

Programando Cross-Platform: cosas a tener en cuenta para no quedarte pelado

  • 1. Programando Cross Platform Programación Cross-Platform Cosas a tener en cuenta para no quedarte pelado Roberto Alsina <ralsina@kde.org> Manuel de la Peña <manuel@canonical.com> PyCon Argentina 2011
  • 2. Programando Cross Platform Cross Platform: Qué y Porqué • Medio hacia un fin • Fin en sí mismo PyCon Argentina 2011
  • 3. Programando Cross Platform Cross Platform: ¿Es difícil? Muy. ¡Pregúntenle a Manuel! PyCon Argentina 2011
  • 4. Programando Cross Platform ¿Cuántas plataformas estamos hablando? • Linux (GNOME/KDE/Unity/ninguno) • Windows (XP/Vista/7/8) • Mac • Mobile (Android/iOS) • Web (Chrome/Firefox/Safari/Mobile browsers/IE x.x) PyCon Argentina 2011
  • 5. Programando Cross Platform ¡Nos mudamos a la web! • La web no es una única plataforma • Se puede ser web y no ser cross-platform • Se puede ser web y ser desktop (aplicaciones mixtas) PyCon Argentina 2011
  • 6. Programando Cross Platform Desktop: ¿Se puede? • Convenciones de la UI PyCon Argentina 2011
  • 7. Programando Cross Platform Ser igual a los demás PyCon Argentina 2011
  • 8. Programando Cross Platform Ser igual a sí mismo PyCon Argentina 2011
  • 9. Programando Cross Platform Notificaciones • Bubbles • App indicators • Growl PyCon Argentina 2011
  • 10. Programando Cross Platform Filesystems Cuando se trabaja con diferentes filesystems se ha de tener cuidado con los siguientes temas: • Paths: Como han de manajarse los paths. Es os.path suficiente? • Eventos: Que eventos recibimos del fs cuando se editan los archivos. • Unicode vs Binary • User rights. PyCon Argentina 2011
  • 11. Programando Cross Platform Filesystems Problemas de Paths: • Caracteres illegales * Linux: / null * Mac OS X: :/ null * Windows: • DOS Fat32: x00-x1F SPACE DEL " * / : < > ? | • Windows NTFS: " * : < > ? / | PyCon Argentina 2011
  • 12. Programando Cross Platform Filesystems Hay más problemas con los paths: (Pregunta para la gente de la sala) PyCon Argentina 2011
  • 13. Programando Cross Platform Filesystems Aggg.... tus paths son demasiado largos. • Windows: • Old school: Path maximo es de 255 char • NTFS: Cada componente del path puede ser de 255 PyCon Argentina 2011
  • 14. Programando Cross Platform Filesystems os.path esta roto: • listdir: • 'C:Python27/.' => funciona o/ • '?C:Python27/.' => no funciona :( puto! PyCon Argentina 2011
  • 15. Programando Cross Platform Filesystems Windows: Vamos a jugar al teto, tú te agachas y yo te la meto: Nombre illegales: • AUX • CLOCK$ • COM[0-9] • CON • LPT[1-9] • NUL • PRN PyCon Argentina 2011
  • 16. Programando Cross Platform Esto incluye todos los nombres ya mencionados incluyendo la extension (AUX.txt). Pero es windwos... se puede usar si se usa ?WTF?!?! PyCon Argentina 2011
  • 17. Programando Cross Platform Eventos Queremos recibir eventos cuando una archivo es modificado: • Linux: pyinotify • Windows: ReadDirecotryChangesW • Mac OS X: FSEvents PyCon Argentina 2011
  • 18. Programando Cross Platform Eventos Los diferentes FS tienen diferentes APIs: • Linux: Por directorio • Windows: Por árbol • Mac OS X: Por árbol PyCon Argentina 2011
  • 19. Programando Cross Platform Eventos Los diferentes FS tienes diferentes eventos: • Linux: pyinotify.IN_OPEN pyinotify.IN_CLOSE_NOWRITE pyinotify.IN_CLOSE_WRITE pyinotify.IN_CREATE pyinotify.IN_CREATE | pyinotify.IN_ISDIR • Windows: 1: IN_CREATE 2: IN_DELETE PyCon Argentina 2011
  • 20. Programando Cross Platform 3: IN_MODIFY 4: IN_MOVED_FROM 5: IN_MOVED_TO • Mac OS X: PyCon Argentina 2011
  • 21. Programando Cross Platform Binary vs Unicode Es importante usar binary o unicode? (pregunta para la audiencia) PyCon Argentina 2011
  • 22. Programando Cross Platform User rights o.chmod si, pero no! • Linux: Ok • Mac OS X: Ok • Windows: AddAccessAllowedAceEx, AddAccessDeniedAceEx PyCon Argentina 2011
  • 23. Programando Cross Platform User rights Windows security_descriptor = GetFileSecurity(path, DACL_SECURITY_INFORMATION) dacl = ACL() for group_sid, attributes in groups: # set the attributes of the group only if not null if attributes: dacl.AddAccessAllowedAceEx(ACL_REVISION, CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE, attributes, group_sid) # the dacl has all the info of the diff groups passed in the parameters security_descriptor.SetSecurityDescriptorDacl(1, dacl, 0) SetFileSecurity(path, DACL_SECURITY_INFORMATION, security_descriptor) PyCon Argentina 2011
  • 24. Programando Cross Platform IPC Formas de hacer ipc: • Linux: Dbus, tcp • Windows: NamedPipes, tcp, Shared Memory • Mac Os X: NSDistributedNotificationCenter or NSPortNameServer (mach ports) Hay que abstraer la comunicación ya que cada uno tienes un estilo de exponer los mensajes. PyCon Argentina 2011
  • 25. Programando Cross Platform Packaging • Packaging en Linux • Installers en Windows • App stores en mobile PyCon Argentina 2011