Commentaires.
Le prototype montré à la photokina 1990 comportait un dos spécial monté sur un boîtier Nikon F3. Il était destiné au marché du photojournalisme, en offrant la possibilité d'accélérer grandement la transmission des images. L'appareil a été présenté publiquement pour la première fois àen France, à Arles, aux Journées de l'Image Pro, par M. Ray H. DeMoulin, le président de l"'Eastman Kodak Company". Pas moins de 453 journalistes internationaux ont assisté à cette présentation, au Palais des Congrès d'Arles.
Le prototype prédécesseur de la version commerciale fut réalisé au printemps 1987 par les laboratoires de recherche de Kodak. Le capteur de 1,3 Mpixels fabriqué par Kodak devait être suivi par d'autres, de beaucoup plus haute définition. Le prototype a été testé en collaboration avec "Associated Press" ; le boîtier Nikon F3 a été choisi car il était à l'époque le plus répandu chez les professionnels et aussi pour des raisons plus techniques. Il a fallu résoudre de nombreux problèmes : comment positionner précisément le capteur au niveau du plan du film, comment synchroniser l'obturateur mécanique avec la capture de l'image par le capteur, quels objectifs utiliser pour obtenir des images nettes sans artefacts, comment aider l'opérateur à obtenir une pose correcte lorsque le contraste du sujet est plus important que ce que peut supporter le capteur, comment stocker les images sous forme numérique, quelle alimentation électrique choisir, etc. ?
Heureusement, les contacts électriques destinés au moteur du F3HP pouvaient fournir des signaux suffisants pour la synchronisation électronique. Un ensemble d'objectifs susceptibles de convenir a été testé en utilisant la fonction de transfert de modulation et ceux qui convenaient le mieux ont été choisis. Une batterie et un disque dur ont été intégrés dans un équipement porté sur l'épaule du photographe. Les signaux fournis par le convertisseur analogique/numérique ont été traités pour obtenir un histogramme indispensable pour définir l'exposition correcte. Le capteur étant plus petit que le format 24 x 36, un cadre coloré a été ajouté dans le viseur pour délimiter le champ photographié. Le prototype du système a été testé très longuement en 1987 et 1988 par des photographes d"'Associated Press" pour comparer ses performances à celles des films. Le système suscita suffisamment d'enthousiasme pour qu'une version commerciale fût entreprise. On a montré une première version à photokina en 1990 et le produit a été lancé en mai 1991.
Le DCS 100 a conservé beaucoup de caractéristiques du prototype, dont une unité de stockage numérique ("Digital Storage Unit", DSU) séparée, portée à l'épaule, contenant la batterie et permettant de visualiser et de stocker les images. Le disque dur de 200 Mo du DSU pouvait initialement contenir 136 images non comprimées, puis plus tard 600 images comprimées en JPEG par un module optionnel. Un clavier externe permettait d'enregistrer les titres des photos et d'autres informations.
Le système numérique professionnel Kodak était disponible avec deux dos DM3 différents. Le dos couleur utilisait une trame de filtres colorés personnalisables. Le dos monochrome n'avait aucun filtre coloré. Quelques dos été fabriquées sans filtre infrarouge, pour des usages scientifiques. Le disque dur 3,5" SCSI pouvait être connecté à un ordinateur via une interface SCSI externe. Il était accessible grâce à un plug-in TWAIN pour Photoshop 3. Beaucoup de modèles ont été proposés avec des mémoires-tampons différentes, pour la couleur, le monochrome et différents systèmes de transmission pour les claviers et les modems.
Le système complet coûtait 20 000 $ : 987 exemplaires ont été vendus.

Programmation Python/Problèmes connus
Ce chapitre aide à résoudre les problèmes les plus courants, selon la situation ou le message d'erreur rencontré.
Les opérations avec un caractère non-ASCII ne fonctionne pas.
Ajouter l'encodage sous le shebang : codice_1.
Le regex ajoute le symbole � à la place des pipes (|).
Encoder la chaine du pipe sous la forme d'une chaîne litérale Unicode :
re.sub() ne trouve pas une expression trouvée par re.search().
Dans un contexte multi-ligne, re.sub() ne recherche pas tout comme re.search() (qui a un global flag).
Utiliser codice_4.
Messages d'erreur.
ImportError: bad magic number in....
Si vous avez les fichiers sources correspondants, forcez une nouvelle compilation des fichiers sources en supprimant les fichiers compilés :
Sinon, essayez d'obtenir les fichiers sources, ou utilisez la version de Python utilisée par ces fichiers.
Import error: No module named monModule.
Il suffit de modifier le PYTHONPATH pour qu'il trouve le module mentionné, par exemple derrière une condition s'assurant que la machine qui exécute le script contient le répertoire du module :
import sys, socket
if socket.gethostname() == "MonUbuntu":
 sys.path.append(u'/usr/local/lib/python2.7/dist-packages/requests')
else:
 import requests
Dans le cas des tests unitaires, il faut en faire un package : créer __init__.py dans le dossier des tests pour qu'il importe le dossier du code à tester.
IndexError: list index out of range.
Ajouter un test sur la taille du tableau avant d'y accéder, ex :
 if len(tableau) > 0: print tableau[0]
NameError: global name 'ma_fonction' is not defined.
Si les imports sont fait avec *, les spécifier.
sre_constants.error: bad character range.
Arrive quand on inverse les paramètres dans codice_5.
sre_constants.error: multiple repeat.
Dans un regex, il y a des symboles de répétition consécutifs tels que **, +* ou ++.
sre_constants.error: unmatched group.
Survient quand codice_6 ne trouve pas un groupe de capture. On peut donc le rechercher pour lancer le remplacement si la condition est remplie :
if re.compile(chaine).search(regex):
 re.sub(regex, chaine)
Sinon il y a peut-être une barre verticale non échappée à tort.
TypeError: maMethode() takes no arguments (1 given).
Une méthode de classe doit être déclarée avec l'argument "self" à minima.
TypeError: 'module' object is not callable.
Il suffit d'appeler le module sous la forme : NomFichier.NomFonction.
TypeError: slice indices must be integers or None or have an __index__ method.
Une chaine est divisée par une variable inappropriée (ex : x dans c[x:y]).
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position x: ordinal not in range(128).
En Python 2.7 sur Pywikibot, convertir la variable avec codice_7 (passe partout en remplaçant les caractères inconnus par des ? en console).
Sinon, ne pas utiliser codice_8, par exemple au profit de :
Dans le cas de l'affichage du résultat d'une concaténation, la séparer en deux instructions.
Sinon, ajouter codice_9 après la variable résultat de la concaténation.
UnicodeEncodeError: 'charmap' codec can't encode characters in position x-y: character maps to <undefined>.
Voir l'erreur précédente.
UnicodeWarning: Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal.
L'encodage ou le typage faible pose problème.
ValueError: too many values to unpack.
Un "for" est mal utilisé, par exemple retirer "clé" dans : "for clé, valeur in tableau".

Grammaire néerlandaise/le verbe
Photographie/Personnalités/M/Lorenzo Maccotta