Skip to content. | Skip to navigation

Personal tools
Sections
You are here: Home
Navigation
 

redturtle blog

The redturtle blog

Jan 20, 2010

The Top 11 Tips for Keeping Your Servers Healthy

by Andrea Baglioni — last modified Jan 20, 2010 06:55 PM

Have you ever wondered how healthy your servers are? Are you running with default settings on your production servers? Do maintenance tasks run when they should, or are they even running at all? Are you using appropriate database features, controlling log sizes, or leaving debug variables in the .ini? Have you implemented critical features that were introduced with the server software in your latest upgrade? This cross-platform session will shed light on a number of items most administrators overlook or simply do not understand the importance of implementing. Learn from real-world customer examples and see how to remedy the situations presented.**

Best practies in pillole:

  • Pay attention to console errors!!
  • Are you using default settings?
  • Are your servers too open?
  • Know your schedules
  • Keep your servers clean
  • Clustered server tips
  • ID management
  • New features not implemented
  • Policies – are you using them?
  • Maintenance tasks
  • Get to the new ODS

 

 

Lotus Notes Traveler, news and photos

by Fabio Pignatti — last modified Jan 20, 2010 01:52 AM
Filed Under:


Again, during the opening general session IBM talks about Lotus Notes Traveler. First of all they announce the support for Android platform, then a big news for people who wanted encrypted mail on iPhone: Lotus Notes Traveler Companion is available today on App Store!


Lotus Notes Traveler Companion allow to read encrypted mail on the iPhone directly using the Notes ID security!

Last is the extension of the support for other operating system. I mean, now Travel can be installed only on Windows OS, with Traveler 8.5.2 you can also install on Linux SUSE!!!

Cool! Isn't it? It's so cool that we can't wait. 8.5.2 is supposed to be released in Q3-Q4 2010. This mean that we can have Android support on Linux based Traveler at the end of this year!

IBM Project Vulcan, photos and news

by Fabio Pignatti — last modified Jan 20, 2010 01:26 AM
Filed Under:


On the OGS we learn about IBM Project Vulcan, as report on Ed Brill's Blog “Project Vulcan is the blueprint for where Lotus Notes is going”. During the Opening general session we have some screen shots of the evolution of the Notes client:





and some concept on mobile devices like BlackBerry or iPhone:






Other news comes from the keynote during the first two day of Lotusphere, one is particularly important: after 8.5.2 Notes will be “vulcanized”.

Other pictures on Project Vulcan can be found in my Flickr photostream.

My 2 cents on this project are:
  1. Notes 9 will be the Project Vulcan implementation like Notes 8 has been the Hannover's one.
  2. Project Vulcan will be hugely developed in xPages and other web technology.
  3. Notes 3 to 8 apps still work fine in the Vulcan. This doesn't came from me but from history. :-)

There’s No Fixing Ugly: How to Make a Great First Impression with Your Applications

by Andrea Baglioni — last modified Jan 20, 2010 12:05 AM
Filed Under:

When it comes to client and/or user-acceptance, how your applications look is as important—and possibly more important—than how they actually work. Well-designed and eye-pleasing interfaces are not terribly hard to create, yet provide enormous perceived value to your end-users -- and, more importantly, to their bosses. In this session you will learn a series of easy-to-follow guidelines for making applications that look as good as they work.**

Lotusphere 2010 banner

Il titolo parla da solo. Esempi di cosa NON fare e di cosa invece tener conto nel realizzare un'applicazione.

Il messaggio in generale è questo:

"se l'applicazione è esteticamente mal fatta, la prima impressione è che non funzioni"

Interessantissima demo di 8 minuti che ha dimostrato, con pochi accorgimenti (font-family, font-size, colori) come passare da un'interfaccia orrenda a qualcosa di accattivante

Jan 19, 2010

What's New in Composite Applications in IBM Lotus Notes 8.5.1

by Andrea Baglioni — last modified Jan 19, 2010 10:30 PM

Come and learn about whats new with composite applications in Lotus Notes 8.5.1. You'll see how you can leverage the new tooling in the Composite Application Editor (CAE) to quickly assemble applications and create new components using "point and click". We'll show how different components like Web, XPages, Java Views and Eclipse views can be assembled in a composite and on the side shelf within your application. You'll learn about the new container framework and what this means for your components. We'll cover the low level extensions to the CAE that allow you to add your own custom tooling for your components, and you'll learn all about custom actions and see how they can make your applications more powerful.**

Lotusphere 2010 banner

Bob Balfe ha presentato due interessantissime CA realizzate con la versione 8.5.1 e illustrato i nuovi oggetti:

  • Synphony Spreadsheet Container
  • Web Browser container
  • Host on Demand container
  • Notes Document Container
  • Notes View container

 

Ed inoltre, per il futuro:

  • CAI URL enhancement - pagealias
  • Role based access to components

 

Peccato per la scarsità dei talk riguardanti l'argomento, ma di sicuro Balfe, Guru assoluto in materia, ha alzato ai massimi livelli la qualità del suo intervento.

 

Lotusphere in sentence, Day 2 - general and Lotus application development strategy

by Fabio Pignatti — last modified Jan 19, 2010 08:25 PM
Filed Under:


General:

  1. My daily agenda: BP210, KEY101, BP108, BP111, BP204, ID615.
  2. “Project Vulcan is the blueprint for where Lotus Notes is going” [Ed Brill Blog]

Lotus Application Development Strategy:

  1. Lotus Notes/Domino developer skills are important and remain important.
  2. For the future release Lotus will support and integrate to OpenID.
  3. For the future release Lotus will support and integrate to Oauth.
  4. Again, next releases? Will be much more based on web technology (e.g. HTML5, CSS3, Dojo).
  5. Samples of integration with cloud software already exist: Tungle, Gist, Openspan.

Lotusphere in sentence, Day 1 - other sentences

by Fabio Pignatti — last modified Jan 19, 2010 02:51 PM
Filed Under:

General:

  1. My daily agenda: OGS, ID201, KEY104, AD201, BP306, AD207, BOF201.
  2. Thanks Bob for the button!
  3. Great sushi at Kimonos restaurant.

Lotus Notes and Domino strategy and future:

  1. LotusLive Notes will be launched
  2. Support for Citrix, XenApp, VMWare client virtualization technology
  3. Lotus Notes Traveler on Android
  4. Lotus Domino will be available as a image on  Amazon EC2
  5. Lotus Business Solutions Catalog is being released
  6. Symphony 3.0 will be beta in the next month and it will be released in 2010
  7. After 8.5.2 Notes will be “vulcanized”
  8. Project Concord was introducted: web-based collaborative document editor for creating, editing and sharing documents.

Symphony:

  1. Symphony “Vienna” will be based on OpenOffice 3.x (Q2 2010).
  2. Symphony “Vienna” will be support MS VB macro.
  3. LotusScript classes are available to manipulate Symphony applications (Java API will be available with “Vienna”).
  4. Strategy: catch up with the latest OpenOffice regurarly.

Domino Designer:

  1. Many people during BOF push to have a Mac based Domino Designer soon.
  2. Performance in opening mail template: benchmark says 10 seconds, if you experience are minutes it's not normal.
  3. Lotus Domino Designer 8.5.2 beta is available for partner program.


Jan 18, 2010

AD106 - XPages just keep getting better

by Andrea Baglioni — last modified Jan 18, 2010 10:55 PM

Last year at Lotusphere, XPages burst onto the Lotus Domino application development landscape. Since then, the developer community has embraced XPages and delivered compelling Lotus Domino Web solutions. 8.5.1 delivered on the vision by providing the ability to build an application once for the Web, the Notes client or expose as an iWidget.Come hear about other 8.5.1 enhancements, what is coming in 8.5.2 and glimpse towards the future.**

Lotusphere 2010 banner

Annunciate le novità per le XPages (nella 8.5.2)

- REST e nuovi advanced controls
- modalità off-line e repliche locali
- wiring con le composite applications
- Performance improvements
- iWidget mashup
- hidden field text control
- RichText editor migliorato
- riuso delle funzionalità esistenti: LS libraries, forms, vies
- utility per convertire vecchi form, viste in xpages
- nuovi DataSource (jdbc, db relazionali)

AD109 - XPages perfomance and scalability

by Andrea Baglioni — last modified Jan 18, 2010 10:00 PM

Understanding the XPages architecture is key to building performant scalable enterprise-ready Lotus Domino web applications. We'll show how to go under the hood to discover functional features that help your application perform and scale well. You'll learn about design patterns and techniques that ensure your applications are optimally tuned for your business requirements, and we'll show how to integrate existing business logic -- without increasing performance cost.**

Lotusphere 2010 banner

Tips&Tricks veramente utili per incrementare le performace

- i tool di monitoring consigliati: Firebug, YSlow, PageSpeed
- IBM Xpages Profiling tool: database per il tuning delle XPages in termini di CPU, cache ecc...
- consigli per il rendering delle pagine e per migliorare il JSF cycle lifecycle

- dataCache per le viste (nuovo nella 8.5.1)

- come usare Java nelle XPages per mantenere performance ridotte

Lotusphere in sentence, Day 1 - IBM Lotus Server: Present and Futures

by Fabio Pignatti — last modified Jan 18, 2010 08:42 PM
Filed Under:

In the form of "aspect - goal" that's the key sentences of the Domino server future:

  • Database management tool improvements - Leverage a single tool that performs all application/database maintenance tasks (eg compact, index update, ...).
  • SAML - Provide greater flexibility regarding secure authentication.
  • Platform expansion – Lower costs, improve flexibility and scalability (64 bit, virtual env, Linux platform).
  • RESTful APIs – Enable ISV's and application builders with broad set of API's usable from any application endpoint.
  • DXL – Roud-trip DXL design elements with no loss.

Lotusphere in sentence, Day 1 (Opening general session)

by Fabio Pignatti — last modified Jan 18, 2010 05:00 PM
Filed Under:

 

General and vision:

  • Lotus knows why.
  • Lotus knows how.
  • This year the special guest is Captain Kirk William Shatner directly form Enterprise!
  • GM, RIM, Continental, Panasonic and Zurich are the customers presented this year by Lotus.
  • You knew the importance of delivering on promises.
  • 18378 new customers after Domino 8 was been released.
  • Positive disruption: capabilities for free Symphony.
  • Collaboration agenda is a new offering who puts together different Lotus products and is designed with industry specific teams who helps company to design his own specific solution: lower the cost of collaboration and improve people collaboration.
  • File Navigator by Rene Winkelmeyer is the best open source Notes application.
  • LotusLive with 18M users, now is offered for 4 USD per user per month.
  • IBM Project Vulcan is a sneak peak into the evolution of collaboration.

Demo time:

  • Now in xPages applications is possible to use Quickr component.
  • IBM Multimedia Library for Lotus Notes: the fastest, most affordable way to learn Lotus Notes, Sametime and Quickr!
  • Quickr and Alfresco are now integrated.
  • Announced Lotus Notes Traveler for Android
  • Lotus Notes Traveler Companion is an iPhone plugin who can provide to access encrypted email on the iPhone (using Notes ID security!)
  • xPages now runs in the Notes client: develop once, run everywhere!
  • LotusLive labs is a set of services availables in lotuslive.com. Some examples: slide library, event maps, collaborative recorded meetings and composer.

Specific on Project Vulcan:

  • Project Vulcan embraces the one programming model: public REST APIs, Widget and Mashups, xPages for Notes, HTML5 for richer user experiences.
  • Project Vulcan: continuity, convergence, innovation, new opportunities
  • Project Vulcan and the competition? IBM says it is not an answer to Google Wave.
  • Project Vulcan is based on Notes Client and in the browser you have the same experience.
  • Project Vulcan can be accessed through Blackberry or iPhone.
  • Project Vulcan as the brand new Notes 9 is my guess.
  • Project Vulcan will be shipped in 2011.

Lotusphere Day 1 - JMP106 - “Kum Bah Yah” Meets “Let's Kick Butt”: The Integration of IBM Lotus Notes and Lotus Domino with Microsoft Office, .NET, and IBM Lotus Symphony

by Andrea Baglioni — last modified Jan 18, 2010 03:11 AM

Welcome to 2010, where Lotus Notes and Domino are just part of your corporate toolset. This session will introduce you to integration of Lotus Notes and Domino 8.5 with Microsoft Office, .NET technologies, OpenOffice.org, & Lotus Symphony. We'll start with the basics and build up to mail merge, exporting to a spreadsheet, charting, presentations, and integration on the Web. Advanced topics such as Visual Studio Tools for Office, advanced development with C#, and integration with Lotus Domino Web Services are included. Integration with Xpages, Google Docs, Sharepoint, ODF, OOXML, and Windows Explorer will highlight the options available. Every sample is new or updated, so even past attendees will get something from this session.***

Lotusphere 2010 banner

John Head e Alex Kassabov hanno mostrato in un talk di sicuro effetto scenico riguardante l'evoluzione del mondo dell'integrazione tra Lotus Notes e i principali productivity tool come Miicrosoft Office e Lotus Symphony, in entrambe le direzioni.

Anche in questo caso la collaborazione tra IBM e OpenNTF farà si che un il progetto open si concretizzi in un template scaricabile per l'utilizzo.

Le novità sono molteplici: innanzitutto l'annuncio dell'implementazione della classe SymphonyApplication, che sgrava lo sviluppatore dall'utilizzo delle classi UNO per l'integrazione con OpenOffice, sia numerosi esempi veramente utili per creare spreadsheet, documenti e presentazioni a partire da documenti notes con un semplice click.

Le slide sono disponibili sul sito di John Head

Lotusphere Day 1 - JMP105 - XML and Web Services Jumpstar

by Andrea Baglioni — last modified Jan 18, 2010 02:50 AM

Most companies today know that the easiest way to integrate with other entities (both internally and externally) is to provide their solution as a Service that can be called from any system regardless of the operating system or software. Web Service providers and consumers provide this much needed resource. This jumpstart will provide developers with an solid foundation in XML (the language of web services) as well as proven techniques for implementing Web Service providers and consumers in Lotus Notes and Domino 6,7,8 and 8.5. You'll will be provided with resources and examples of Web Service consumers and providers in both LotusScript and Java. You'll see how to integrate Web Services with Lotus Domino form designs and XPages.***t

Lotusphere 2010 banner

Ottimo talk di Paul Calhoun su WebService.

Retrospettiva su provider e consumer, nulla che già non si sappia, ma la chicca è che ha promesso di rendere disponibile per il download un db che offre tra le altre cose (utility per la gestione XML, agenti ecc.) un xslt che permette, attraverso il transformer di DXL, di convertire form Notes in XPages. Ancora in stato semi-embrionale (per esempio, non gestisce correttamente combobox e radiobutton), ma di sicuro effetto ed utilità

Tra le altre cose, tips&tricks, esempi di testing provider in Eclipse Galileo e integrazione tra Xpages e Webservice.

Lotusphere in sentence, Day 0

by Fabio Pignatti — last modified Jan 18, 2010 02:00 AM
Filed Under:

Lotusphere 2010 banner

General:

  1. After “Emergence” in 2008 and “Resonance” in 2009, this year the Lotusphere theme is “Lotus knows”.
  2. My daily agenda: BOOT103 (great job Franziska), SHOW105, BOOT104, JMP102 and Welcome Reception.

Admin tips:

  1. DAOS and SAN? Again, be sure transaction logging is on a separate and dedicated LUN.
  2. Set all compressions "on" using console: load compact mail -ZU -n -v -C
  3. Deny access list and HTTP? Be careful you have to set “Enforce server access settings” in server documents, ports, Internet ports otherwise HTTP do not follow the configuration.
  4. In NAB “Actions-> Set Secure Internet Password” allow you to encrypt the HTTP password in secure way. Note, I mean a “secure”, not a “more secure” cause the standard HTTP password mechanism use @Password to encrypt so (eg) same password are show with the same encryption. Mandatory!
  5. In the configuration setting, set “Enforce Internet/Password Lockout” to prevent a brute force attack over HTTP. You can also use policy to specify a per-person criteria.
  6. Notes Shared Login do not require software installation on the clients (and it's much better than previous OS login) and you can use policy to set it!

Sametime:

  1. Sametime 8.5 will be released in two flavors: Sametime 8.5 Community Services for chats and awareness (Domino based) and Sametime 8.5 Meeting Services (Websphere based) for meeting and video conferencing.
  2. Wes Morgan rules on Sametime 97/3 utilization: 97% of the users will be logged into chat, 3% parteciping in meetings.

Welcome reception:

  1. Still cold. :-(
  2. A nice match against Andrea playing tennis with Wii.

Jan 17, 2010

Lotusphere in sentence, Day -1

by Fabio Pignatti — last modified Jan 17, 2010 03:25 PM
Filed Under:

Lotusphere 2010 banner

  1. Luckily the temperature is higher than the last two freezing years (around 20°C during the day).
  2. I have had great times with Andrea e Daniele relaxing and eating shrimp and crab in front of the ocean in Cocoa Beach.
  3. The pocket agenda is changed, now we have a tabular folder instead the traditional pocket book.
  4. The backpack is almost the same of last year.

Jan 13, 2010

Install Plone 4 on OSX Leopard e Snow Leopard (from scratch)

by Stefano Marchetti — last modified Jan 13, 2010 08:30 AM

Install Plone 4 without Unified Installer is easy.

Trying Plone 4 is easy.
The following steps are tested with OSX 10.6 Snow Leopard and OSX 10.5 Leopard.
The first step is to obtain the compiler to build Python from source.
On OSX, to install the gcc compiler, download the Xcode package from http://connect.apple.com/. You’ll need to register for an Apple Developer Connection account. Once you’ve registered, login and click Download Software and then Developer Tools. Find the Download link
Xcode 3.2.1 Developer DVD (Disk Image)
Be careful: Xcode 3.2.1 is for OSX 10.6 Snow Leopard and Xcode 3.1.4 is for OSX 10.5 Leopard.

First: create a temp folder:

mkdir -p /Users/stefano/Devel/tmp
cd  /Users/stefano/Devel/tmp


Plone 4 needs Python 2.6; it is easy build Python from source. The great advantage is that, in this way, all files will be in a folder leaving your OS "clean".

Download the latest version 2.6 release from http://www.python.org/download/releases/2.6.4/

Move the file (Gzipped source tar ball) Python-2.6.4.tgz in the "temp" folder and uncompress it:

tar zxf Python-2.6.4.tgz
cd Python-2.6.4


Create the Python destination folder:

mkdir -p /Users/stefano/Devel/python/2.6/
cd /Users/stefano/Devel/tmp/Python-2.6.4


before you can build your Python first you must configure it.

From the folder /Users/stefano/Devel/tmp/Python-2.6.4 type the command:

./configure --prefix=/Users/stefano/Devel/python/2.6/

 
Then to build your Python type:

make


To install the Python binary, library modules, shared library modules, include files, configuration files, and the manual page, just type:

make install


Download the Python Imaging Library (the "all platform" version) from
http://www.pythonware.com/products/pil/
Move the downloaded file in /Users/stefano/Devel/tmp/

tar zxf Imaging-1.1.6.tgz

cd /Users/stefano/Devel/tmp/Imaging-1.1.6

 
Install Python Imaging Library in your Python environment:

/Users/stefano/Devel/python/2.6/bin/python2.6 setup.py install
cd /Users/stefano/Devel/

 
Then download the Plone source:

svn co http://svn.plone.org/svn/plone/buildouts/plone-coredev/branches/4.0/ plone4

cd plone4 

Then bootstrap Plone:

/Users/stefano/Devel/python/2.6/bin/python2.6 ./bootstrap.py


Then run the buildout:

./bin/buildout

 
Start Plone:

./bin/instance fg


Then type this URL in your browser:

http://localhost:8080


Enjoy your new Plone 4!

If you want to test new experimental functionality you can use configuration files in the folder "exeperimental" in the plone folder (Users/stefano/Devel/plone4)
For example to try Deco relaunch the buildout:

./bin/buildout -c experimental/deco.cfg

 
For more information read the instructions at the beginning of the configuration file "experimental/deco.cfg".

Dec 18, 2009

"./bin/buildout" senza "-N" su Plone 3.1? Ahi!

by Luca Fabbri — last modified Dec 18, 2009 12:52 PM

Vediamo di spiegare quello che succede a tantissimi quando provano ad aggiornare il loro vecchio Plone 3.1

Prima di tutto: "-N" è vostro amico!

I problemi li vediamo sotto, ma ricordate che l'opzione -N su un vecchio Plone come può essere la versione 3.1 è un parametro vivamente consigliato!

Volete installare un nuovo prodotto?
Ricordate che "-N" sta per non-updating, quindi solo gli egg già scaricati non vengono aggiornati, ma se la vostra modifica all'istallazione richiede la presenza di un nuovo modulo, questo viene normalmente prelevato (...e speriamo che la versione scaricata sia compatibile... in caso contrario, cercatene una che lo sia! vedere sotto...).

Di chi è la colpa?

I problemi sono iniziati con qualche prodotto rilasciato nell'era Plone 3.3, ma la cosa è diventata particolarmente sensibile (e fastidiosa) col rilascio delle prime versioni egghizzate di Plone 4.

Plone 3.1 non aveva le versioni degli egg fissate dai file versions (e.g: http://dist.plone.org/release/3.3.1/versions.cfg per Plone 3.3.1).

Per di piu "Plone" e "Zope2" sono diventati "veri" egg da poco.

Iniziano quindi ad essere disponibili molti egg che (giustamente) richiedono dipendenze da questi moduli software...

...peccato che a loro volta questi abbiano dipendenze verso altri egg che sono troppo aggiornati per la vecchia versione di Plone 3.1.

NB: l'idea non è sbagliata di per se! In un mondo perfetto se un utente che non sa nulla di Zope & Plone naviga la rete e trova il riferimento ad un prodotto che si chiama Ploneboard e che fornisce un forum, potrebbe volerlo provare. Se tenta di installarlo con easy_install, perché questo non dovrebbe a sua volta scaricarmi un ambiente Plone completo?

Vediamo di risolvere

Diciamo che state leggendo questo perché vi siete dimenticati di tenere l'opzione "-N", oppure un nuovo prodotto che dovete per forza installare ha delle dipendenze pericolose, o siete masochisti...

Ad ogni modo (i gusti son gusti) eccovi un esempio di un buildout di un Plone 3.1 che di recente mi ha dato problemi.

[buildout]
parts =
    plone
    zope2
    instance
    zopepy
    fss

# Add additional egg download sources here. dist.plone.org contains archives
# of Plone packages.
find-links =
    http://dist.plone.org
    http://download.zope.org/ppix/
    http://download.zope.org/distribution/
    http://effbot.org/downloads

# Add additional eggs here
# elementtree is required by Plone
eggs =
    elementtree
    iw.fss>=2.7.5,<2.7.6dev
    iw.recipe.fss
    Products.DocFinderTab
    
# Reference any eggs you are developing here, one per line
# e.g.: develop = src/my.package
develop =
    ...

[plone]
recipe = plone.recipe.plone

[zope2]
recipe = plone.recipe.zope2install
url = ${plone:zope2-url}

[instance]
recipe = plone.recipe.zope2instance
zope2-location = ${zope2:location}
user = admin:admin
http-address = 7084
#debug-mode = on
#verbose-security = on
effective-user = plone

eggs =
    ${buildout:eggs}
    ${plone:eggs}
    ...

# If you want to register ZCML slugs for any packages, list them here.
# e.g. zcml = my.package my.other.package
zcml = 
    iw.fss
    iw.fss-meta
    ...

products =
    ${buildout:directory}/products
    ${plone:products}

[zopepy]
recipe = zc.recipe.egg
eggs = ${instance:eggs}
interpreter = zopepy
extra-paths = ${zope2:location}/lib/python
scripts = zopepy

[fss]
recipe = iw.recipe.fss
storages =
    ...

Trovate degli omissis per alcune parti generiche e non interessanti.

Qual'è l'effetto di lanciare un buildout con questo .cfg, tenendo conto delle recenti dipendenze degli egg con Plone e Zope2?
Una frittata... e non particolarmente piacevole.

Ecco cosa potreste leggere a console (usate l'opzione "-v" per individuare gli errori):

...
Installing 'plone.recipe.zope2instance'.
We have the best distribution that satisfies 'plone.recipe.zope2instance'.
Picked: plone.recipe.zope2instance = 4.0a2
Getting required 'Zope2>=2.12.1'
  required by plone.recipe.zope2instance 4.0a2.
We have no distributions for Zope2 that satisfies 'Zope2>=2.12.1'.
...

In pratica, l'aggiornamento prova a scarica l'ultima versione di plone.recipe.zope2instance, ma dall'uscita di Plone 4 l'ultima versione risulta essere la 4.0a2. Questo va già male di per se, ma come accennato sopra un altro grosso problema è che questo è dipendente dall'egg Zope2 versione 2.12.1.
Inutile proseguire oltre; a sua volta questo egg ha un'infinità di altre dipendenze... vediamo dove porta tutto questo:

Getting distribution for 'Zope2>=2.12.1'.
Running easy_install:
/opt/local/bin/python "-c" "from setuptools.command.easy_install import main; main()" "-mUNxd" "/Users/luca/Library/Buildout/eggs/tmpFz8U_N" "-q" "/Users/luca/Library/Buildout/downloads/dist/Zope2-2.12.1.tar.gz"
path=/Users/luca/Library/Buildout/eggs/setuptools-0.6c11-py2.4.egg

src/initgroups/_initgroups.c: In function ‘initgroups_initgroups’:
src/initgroups/_initgroups.c:34: warning: implicit declaration of function ‘initgroups’
  File "build/bdist.macosx-10.6-i386/egg/Zope2/Startup/zopectl.py", line 313
    finally:
          ^
SyntaxError: invalid syntax
  File "/Users/luca/Library/Buildout/eggs/tmpFz8U_N/Zope2-2.12.1-py2.4-macosx-10.6-i386.egg/Zope2/Startup/zopectl.py", line 313
    finally:
          ^
SyntaxError: invalid syntax
While:
  Installing.
  Getting section instance.
  Initializing section instance.
  Installing recipe plone.recipe.zope2instance.
  Getting distribution for 'Zope2>=2.12.1'.
Error: Couldn't install: Zope2 2.12.1

Questo non è l'unico errore possibile, ma spieghiamolo: Plone 4 userà Python 2.6 e la sintassi non è completamente compatibile con Python 2.4 usato fino alla versione 3.3.

In altri casi invece il problema è un conflitto di dipendenze: ad esempio Plone 3.1 ha già un egg Zope2, la cui versione è la 0.0.

Questo perché nei buildout di Plone vengono usati (e possono essere usati anche per i vostri scopi) i fake-eggs. Un fake egg non è un vero e proprio egg ma il buildout crede di averlo disponibile alla versione (di solito) 0.0.

In un modo o nell'altro, il buildout non arriva a conclusione...

Come risolvere

La prima regola è analizzare gli errori; lanciare quindi il buildout con l'opzione "-v" per avere messaggi dettagliati, poi risalire la catena delle dipendenze nella console e trovare chi tra questi egg sta scaricando "Zope2>2.12.1" (oppure altri egg non appropriati perché rilasciati per Plone 4).

Nell'esempio sopra il problema era plone.recipe.zope2instance. Ci possono essere altri egg maledetti (ne vediamo almeno un altro più avanti) a seconda dei prodotti usati nel vostro buildout.

La soluzione è fissare le versioni:

[buildout]
parts =
    plone
    zope2
    instance
    zopepy
    fss

versions=versions

# Add additional egg download sources here. dist.plone.org contains archives
# of Plone packages.
find-links =
    http://dist.plone.org
    http://download.zope.org/ppix/
    http://download.zope.org/distribution/
    http://effbot.org/downloads

# Add additional eggs here
# elementtree is required by Plone
eggs =
    elementtree
    iw.fss>=2.7.5,<2.7.6dev
    iw.recipe.fss
    Products.DocFinderTab
    
# Reference any eggs you are developing here, one per line
# e.g.: develop = src/my.package
develop =
    ...

[versions]
plone.recipe.zope2instance = 3.6
...

La nuova parte versions, usata esplicitamente nella parte buildout, fissa plone.recipe.zope2instance alla "vecchia" versione 3.6.
Non ho una regola per trovare la versione giusta... andare alla pagina del Cheeseshop e guardare la sezione CHANGES di questo egg è stato sufficiente. La 3.6 è la main release precedente alla 4.0.

Questo potrebbe essere sufficiente... in presenza di altri egg velenosi si può ricorrere all'uso esplicito degli additional-fake-eggs.

Alcuni egg ad esempio hanno una dipendenza da "Plone" (la cui vita come egg, ricordo, è iniziata con la versione 3.2).

Ecco come modificare la parte zope2 per sistemare la dipendenza a Plone:

[zope2]
recipe = plone.recipe.zope2install
url = ${plone:zope2-url}
fake-zope-eggs = true
additional-fake-eggs =
    Plone

In questo modo il nostro buildout avrà già disponibile un egg "Plone" alla versione 0.0.

I problemi rimangono in vari casi. Cosa succedere ad esempio se voglio usare une prodotto che ha una dipendenza ad una versione precisa di un egg che ho nella sezione fake-eggs? Ad esempio: Ploneboard versione 2.1beta2 ha una sezione di dipendenze così fatta (preso dal suo setup.py):

      install_requires=[
        'setuptools',
        'Products.SimpleAttachment',
        'plone.app.controlpanel',
        'plone.app.portlets',
        'plone.portlets',
        'plone.memoize',
        'plone.i18n',
        'python-dateutil',
        'Plone >= 3.3',
      ],

Anche lanciando il nostro buildout con opzione "-N" e con la presenza del fake-egg "Plone", buildout prova giustamente ad ottenere una versione di "Plone>= 3.3". La versione 0.0 ovviamente non va bene.

La sezione fake-eggs ha una potenzialità maggiore; potrei cambiare il buildout così:

[zope2]
recipe = plone.recipe.zope2install
url = ${plone:zope2-url}
fake-zope-eggs = true
additional-fake-eggs =
    Plone=3.3

Questo significa che il nostro fake-egg "Plone" non sarà più a versione 0.0

NB: ovviamente non è detto (e non ho testato) che provare questa versione di Ploneboard, fatta per Plone 3.3 su un Plone 3.1, porti a qualche risultato funzionante... spero che passi il concetto generale dell'esempio!

Un ulteriore esempio

Ora voglio anche usare in questo vecchio buildout un file .cfg per lo sviluppatore, magari copiato da altri buildout. Questo aggiunge alcuni egg molto utili per lo sviluppo in locale:

[buildout]
extends = buildout.cfg

parts+=
    omelette

[instance]
http-address = 8080
eggs +=
    plone.reload==1.1

zcml +=
    plone.reload

[omelette]
recipe = collective.recipe.omelette
eggs =
    ${instance:eggs}

products =
    ${instance:products}

Se lancio il buildout senza l'opzione "-N" torno ad avere problemi:

./bin/buildout -vc sviluppo.cfg

Ottengo questo:

While:
  Installing instance.
Error: There is a version conflict.
We already have: Zope2 0.0
but Products.CMFCore 2.2.0-beta requires 'Zope2>=2.12.0b4dev'.

Come abbiamo già fatto: chi è che sta provando a scaricare Products.CMFCore 2.2.0-beta (anche CMF non era egghizzato fino a poco tempo fa)?

Analizzando indietro il trace, troviamo che il cattivo è plone.reload:

Getting required 'Products.CMFCore'
  required by plone.reload 1.1.
We have the best distribution that satisfies 'Products.CMFCore'.
Picked: Products.CMFCore = 2.2.0-beta

Possiamo di nuovo superare la cosa tramite fake-eggs, oppure fissando la versione di plore.reload ad una versione più vecchia, compatibile con Plone 3.1.

Nel primo caso modifico buildout.cfg di nuovo, come segue:

additional-fake-eggs =
    Products.CMFCore 
    Plone=3.3

Anche in questo caso forse sto barando... ma non è detto (vedere sotto).

Il modo canonico è come sempre trovare una versione compatibile; rimuovo il fake-egg "Products.CMFCore" e questa volta modifico sviluppo.cfg:

[instance]
http-address = 8080
eggs +=
    plone.reload<1.1dev

E con questo abbiamo finito!

Quale modo è il migliore?

In generale, fissare le versioni è la giusta soluzione, e con l'uso di versions si sta facendo quello che le release successive di Plone hanno fatto.

L'uso dei fake-eggs è comunque una scappatoia da non dimenticare... Magari Ploneboard 2.1 funziona anche con Plone 3.1... solo che nessuno lo ha mai testato (e potreste volerlo fare voi).

Lo stesso per plone.reload. La versione successiva (la 1.2) ha rimosso la dipendenza all'egg Products.CMFCore. Magari anche la 1.1 funziona correttamente con il nostro vecchio Plone e gli sviluppatori si sono accorti di come questa dipendenza creasse più problemi che altro.

Dec 14, 2009

collective.flowplayer_toolbar: adding accessibility in an unobtrusive way

by Luca Fabbri — last modified Dec 14, 2009 09:43 AM

The way I used to make Flowplayer use inside Plone a little more accessible, this time without branching the collective.flowplayer product!

First of all: some terms

After finishing this article I understand that people not familiar with this argument and software can be confused, so:

  • Flowplayer (in capitalized form) is a Flash player for audio/video files, indipendent from the Plone technology.
  • collective.flowplayer is a Plone products that use Flowplayer and give this player well integrated in Plone CMS
  • collective.flowplayer 1.x is an old release family, that use Flowplayer 2.x
  • collective.flowplayer 3.x is the last release family, that use Flowplayer 3

Introduction to main characters

Flowplayer is one of the most promising Flash audio/video player available right now, and we can use it in a simple way inside Plone site thanks the collective.flowplayer, a well know product that replaced the use of p4a.video in recent Plone experiences.

Flowplayer is good, and open source, but not the most accessible available player. Our work with collective.flowplayer accessibility begin when the available release was the 1.0.x version.

As noted above, Flowplayer version used in this old release was the old 2.x, so many of the most recent and cool features were missing; on the other hand, the current 3.x family is heavily integrated with jQuery Javascript framework.
Not less important, the Flowplayer team is the one who released the jQuery Tools, the javascript addon for jQuery recently integrated in Plone 4 thanks to plone.app.jquery.

Fixing collective.flowplayer 1.x

The main accessibility problem of Flowplayer is its flash controlbar. Practical tests show that is not easy to handle video controls using the keyboard.

Our customer, the same that ask for accessible videos in Plone and also like Flowplayer very much, provide us a static HTML example of Flowplayer that use Javascript controlbar, simply usable with keyboard. The problem was that this example supports Flowplayer 3.2, the current version of the Flash player, but not the version used in the Plone addon.
Also the example provide a patched version of the controlbar plugin for Flowplayer. This custom version add some missing HTML attributes and WAI-ARIA support.

After looking on the web we found that even if Flowplayer 2 was backward compared to the new branch, it provides some limited APIs, usable through Javascript.

Our target was to replicate all the feature seen in the Flowplayer 3 demo in the Flowplayer 2 environment... of course this was not so easy! However after some work we find a way to provide those features:

  • a play/pause button
  • a stop button (not required, but was simple to do)
  • a timer display

The collective.flowplayer branchThe only feature "impossible" to obtain (directly) was the progressbar... to be honest, some additional Javascript could also realize this (we have the duration of the video, we have the current execution time, we know how to perform arithmetic division... why not draw ourself? :-) but was enough.

What we really don't like was this: we found no (simple) way to write a Plone addon that work with collective.flowplayer 1.0, adding to it our new features.

We don't waste more time: we made a branch of the original collective.flowplayer 1.x, providing our new feature.

Thank you! Thank you! We have collective.flowplayer 3.x!

After a few weeks collective.flowplayer 3.x was released (I think that the developers team skipped the 2.x version for aligning the Plone product's version to the Flowplayer one).
So we came back to the original example give to us (the customer project was happy finished using our branch) just for test the new feature available and to understand is in future a new, better approach is possible.

The API's of the latest Flowplayer versions are more complete and powerful, heavily filled with the jQuery power.

This time we were able to develop something that could live and enhance the original collective.flowplayer, releasing only a new product: collective.flowplayer_toolbar.

The final result really better than the old approach; without embarrassment I can say that we did a few line of codes! The most part of the work of our new controlbar came from Flowplayer features and one more time from the great jQuery library.

You want see the "core" of this product?

/**
 * Javascript code for adding accessible toolbar to flowplayer players in the page 
 */

jq(document).ready(function(event) {
	$f("*").each(function() {
		this.onLoad(function(event) {
			this.getPlugin("controls").hide();
			var p = jq(this.getParent());
			var p_width = p.width();
			var time_width = (p_width<400?99:129);
			var hulu_id = "hulu-"+ (jq(".hulu").length+1);
			p.after('<div id="'+hulu_id+'" style="width:'+p_width+'px" class="hulu">\n'
				+'<a class="play" href="javascript:;" role="button">Play</a>\n'
				+'<div class="track" style="width:'+(p_width-46-46-time_width)+'px">\n'
				+'    <div class="buffer"></div>\n'
				+'    <div class="progress"></div>\n'
				+'    <div class="playhead"></div>\n'
				+'</div>\n'
				+'<div class="time" style="width:'+time_width+'px"></div>\n'
				+'<a class="mute" href="javascript:;" role="button">Mute</a>\n'
				+'</div>\n');
			this.controls(hulu_id);
			// Now I'll fix all other positions of the new toolbar
			jq("#"+hulu_id+" a.mute").css('left', p_width-46);
			jq("#"+hulu_id+" div.time").css('left', p_width-46-time_width);
		});
	});
});

The rest of the egg simply use a limited version of the original CSS of the demo page in Flowplayer site, the patched controlbar plugin (but you can use the original one without problems)... nothing more!

The jQuery presence make real the injection our new feature on existings Flowplayer instance in the page (for example, this is also working properly for our redturtle.video product). No need to patch/branch collective.flowplayer, also no need to override some views or resource of it.

Conclusion

This work can be also a proof-of-concept for future Flowplayer integration with additional features. The player supports many additional plugins (Yuri point my attention to the Caption Flash plugin...).

Dec 03, 2009

2010 Content Technology Vendor Map

by Fabio Pignatti — last modified Dec 03, 2009 06:42 PM
Filed Under:

cms vendor map

Full report available here

Nov 27, 2009

Plone is Cool!

by Irene Capatti — last modified Nov 27, 2009 07:00 AM

Ecco la maglietta sfoggiata alla Conference di Budapest... in versione open source.

Maglietta Plone Conference 2009 (fronte)Maglietta Plone Conference 2009 (retro)Alla recente Plone Conference ci siamo presentati in gruppo con una maglietta creata ad-hoc per l'occasione. Il tema è "Plone is Cool": l'immagine anteriore è costante, ma sulla schiena sono stati stampati 5 diversi frammenti di codice (python e jQuery) che portano tutti ad un risultato molto simile :-)

Grande successo soprattutto per il "lancio delle magliette" ai portatori sani di domande intelligenti al termine dei talk di Massimo e Andrew! Nei giorni successivi, infatti, non sono mancati gli incontri casuali con plonisti che diffondevano il Verbo del CMS più cool.

Sul sito di RedTurtle trovate i file sorgenti con loghi e codice pronti per la stampa.

Di seguito riporto il codice.

>>> import CMS
>>> all_cms = CMS.queryAllKnowCMS()
>>> all_cms.sort(lambda x, y: cmp(x.coolValue,
...                               y.coolValue))
>>> print all_cms[-1]
'Plone'

 

>>> import CMS
>>> plone = CMS.getCmsByName('Plone')
>>> CMS.getCoolerCmsThan(plone)
Traceback (most recent call last):
...
NotFoundError: can't find a cooler CMS than 'Plone'

 

>>> @memoize
>>> def ploneIsCool(self):
...    return True

 

>>> var title = jq(".documentFirstHeading > span");
>>> var old_title = title.text().strip();
>>> title.text(old_title.split(" ")[2] + " is Cool!");
>>> title.text();
"Plone is Cool!"

 

>>> import CMS
>>> coolestCMS = IFullyFeatured(CMS)
>>> coolestCMS.downloadURL() 
'http://plone.org/products/plone'

 

 

Document Actions