Cette coupure est d'autant plus surprenant qu'un jugement a ete prononce recemment en faveur d'un internaute qui n'avais pas moins de 500 films sur CD telecharges sur internet. Le juge a considere cela comme de la copie privee, deja prise en charge par la taxe sur les supports numeriques.
Moi ce que je voudrai, c'est un logiciel un poil plus intelligent. Je voudrai par exemple surveiller des recherches google pour voir si de nouveaux sites ou de nouvelles news sont apparues sur le net.
Genre, je surveille "contactless smart card" sur google (mon metier) pour voir si de nouveaux liens sont apparus dans le monde qui parlent de carte a puce sans-contact.
Il suffirait probablement d'ajouter un modele "recherche google" au bazar mais la doc m'a semble tres tres succinte. J"ai pas compris aussi si on est tout cense se connecter a mynews ou si on fait tourner notre version privee.
J'ai deja rencontre le meme genre d'argument. Genre je dis a des co-developpeurs que avec OpenOffice + CVS, plus besoin d'avoir MsOffice et sourcesafe. La reponse qui tue : "Mais MsOffice, c'est gratuit. On l'a dans notre package annuel de licence !". De fait, tant que tu ne quittes pas _tous_ les outils microsoft, tu risques de payer encore longtemp.
Quand tu vois que le jour ou il a vote cette resolution, il s'est fait defonce en velo par un motard qui roulait a fond sur un couloir de bus (direct a l'hopital), tu te dis qu'il a des raisons de rester attache a son point de vue.
j'utilise mes deux adresses from pour poster vers tous types d'adresses. En gros, j'ai une adresse pro et une adresse privee. Ca fait donc pas moins de 14 clicks par jour et par compte pour envoyer des mails. C'est vraiment lourdingue.
Je vais etudier la solution script pour faire tout ca a la mano, ca sera peut-etre mieux.
Oui, tres bien mais en dehors de kmail et thunderbird/enigmail, personne ne supporte le pgp/mime.
Si je veux envoyer un document a 7 destinataires differents, sous kmail, pas de solution. Je prends mon fichier je l'encode 7 fois avec 7 cles differentes et j'envoi 7 mails avec chacun un fichier different attache. C'est hautement merdique.
Sous thunderbird, j'attache le document et a l'envoi thunderbird va s'occuper d'encrypter automatiquement le document avec les 7 cles publiques differentes des 7 destinataires. J'ai gagne une demi-heure de mon temps.
J'ai ouvert un bug sur kmail pour ca. Il me semble que la reponse a ete du genre "oui, mais pgp/mime est mieux donc on le fera pas".
Je dois avouer que plus j'utilise Thunderbird, plus je lui trouve de defauts. J'ai pas trop le choix puisque je suis sous windows, mais je trouvais kmail beaucoup plus fonctionnel.
Les trucs qui m'agacent le plus:
- sous kmail, c'est hyper facile de passer au message suivant et precedent, tout en scrollant chaque message, et sans quitter les doigts du clavier: ca se fait avec les fleches. Les racourcis thunderbird sont beaucoup moins pratiques et sous conditionnes au focus.
- plutot lent a se lancer sous windows
- j'ai deux comptes pop3 et je dois gerer deux jeux de filtres. Je trouve ca completement hallucinant. J'ai fait l'erreur d'avoir une mailbox globale pensant que ca allait ameliorer la situation. Que nenni, maintenant, j'ai trois jeux de filtres a gerer !
- je comprends pas du tout l'interet de la separation entre plusieurs comptes pop3. Ca me cree plein de problemes et aucun avantages
- il me faut qqch comme 7 click pour changer le smtp qui me sert a envoyer des mails. C'est une operation que je fais deux fois par jour, je trouve ca super penible
- gestion des mailing list completement inexistante. Sous kmail, je prend un message que j'ai recu d'une mailing list, je fais "creer un filtre pour cettte mailing list" et il me cree un filtre en utilisant le champ X-Mailing-List du message. Sous thunderbird, rien de tout ca. Comme les champs X-Mailing-List ne sont pas proposes par defaut, il faut s'en remettre a des to-or-cc ce qui n'est pas fiable. Sous kmail, je peux aussi faire un middle-click sur un folder pour envoyer un mail a un mailing-list en particulier en utilisant meme la bonne adresse d'envoi
- pas possible de faire du drag'n drop d'adresse entre messages
Bon, il a quand meme de tres bon cotes:
- bonne gestion de pgp, alors que kmail impose le pgp/mime, que personne sur la planete ne supporte. Les regles pgp sont quand meme un peu chiant a definir.
- excellent filtre antispam. Il a renvoye bogofilter aux oubliettes tellement il est efficace.
<<
qui scannent des photos avec Word, d'autres qui tapent des rapports avec Powerpoint, ou qui dessinent des plans avec Photoshop ... y'en a même qui codent avec vi !
>>
Je vois pas le probleme. C'est vrai, ca nous choque de voir ca parce qu'on sait qu'on n'a pas besoin de word pour le faire, mais les utilisateurs sont plus rapides et plus efficaces avec cet outil, c'est normal que ce soit celui qu'ils choisissent systematiquement.
Pour beaucoup d'utilisateurs, l'apprentissage de word a ete douloureux et ils ne veulent pas remettre le couvert une deuxieme fois. En plus, ils risque de se perdre apres entre deux logiciels. Ce sont leurs a priori, je ne sais pas si ils sont tous fondes.
C'est clair que pour beaucoup, works (livre par defaut souvent avec windows) suffit largement mais quand tu parles autour de toi, tout le monde de parle de msoffice et de word, pas de works.
Je suis sur que qq'un prenant la peine d'apprendre le langage de macro de OpenOffice peut reussir a faire la meme chose. Au final, a mon avis, il n'investirait pas moins de temps que toi tu en as mis pour apprendre Latex.
Perso, depuis que j'utilise OpenOffice, c'est le bonheur. Je ne fais que de la doc d'entreprise. Les template sont super facile a manipuler, en 3 secondes, je peux changer le style de tous mes titres, etc etc.
C'est quoi l'api crypto de linux ? Linux permet de generer des cles RSA ? De faire des verifications de signature RSA ? D'encrypters des donnes en triple DES et AES ?
==> NON !
Je ne sais pas de quelle api crypto tu parles, mais clarement, linux ne suffit pas pour coder une application avec de la crypto. Il faut utiliser utiliser une lib qui code tous les algos. En general, on utilise openssl (www.openssl.org) mais rien n'empeche de le re-ecrire.
Je n'ai rien dit de tel. Je te fais remarquer que ton voeu pieu va avec une charge de travail telle que ca me parait peu probable qu'il soit realise. Mais j'aimerai qu'on me prouve que j'ai tort.
C'est justement ce genre d'interview ou la retranscription va prendre encore plus de temps que les 10 minutes par minutes, et que seul une minorite de gens pourront faire.
Il est clair que les editeurs chinois ont du aussi faire jouer leurs relations. Mais je doute que les editeurs associes arrivent au 10 000 e de la puissance de Microsoft, que celle-ci soit commerciale, financiere ou de lobbying.
Donc pour moi, c'est bien une victoire du petit contre le grand, et la seule raison qui puisse expliquer cette victoire c'est l'application d'une loi de preference nationale.
Moi ce que je cherche, c'est vraiment un bon debuggeur python portable. Pour l'instant, j'ai que dalle. J"arrive pas a me faire a pdb et je n'ai pas trouve de debugger potable. Je compte essayer eclipse prochainement, j'espere qu'il s'en sortira bien...
La Chine est en pleine mutation, et on y retrouve deux systemes qui s'affrontent, d'un cote l'ancien systeme gouvernemental, corrompu, qui marche a coup de relations, de reseaux et de pots de vins. De l'autre, les lois que la Chine fait passer pour se transformer en pays moderne (et ultraliberal).
Honnetement, je suis surpris que ce soit les petits editeurs Linux qui reussisent a l'emporter en invoquant une loi, face a la corruption + la machine Microsoft.
C'est une tres tres bonne nouvelle, d'une part pour le logiciel libre, d'autre part pour la Chine puisque ca montre son entree (certe, chaotique, difficile et imparfaite) dans un etat de droit.
Pour une fois, la technique du dealer de drogue de Microsoft n'a pas marche: tiens, prends mes premieres licences, elles coutent pas cher.
Esperons d'autre transitions vers le logiciel libre, et d'autres lois appliquees plus fidelement.
Ce qui me chagrine, c'est qu'il n'y a pas comme objectif d'avoir un driver/bootloader/machin truc pour le faire marcher sous windows. C'est vraiment impossible ou c'est juste trop complique a faire pour l'instant ?
Quand je vois des programmes qui sous windows, creent des lecteurs de DVD virtuels, je me dis que ca doit pas etre impossible au moins de rendre les partitions visibles, et au mieux d'y installer windows.
Certe, on est sur linuxfr mais l'interet d'avoir plusieurs partitions, c'est bien d'avoir plusieurs OS disponibles.
Chuis vert, j'ai passe 10 minutes a mettre ce post en forme et tout est nique parce que j'ai appuye sur le mauvais bouton au mauvais moment.
Ca sert aussi dans le cas de test unitaires pour faire des objets
moqueurs (www.easymock.org).
Exemple:
def my_communication_protocol( my_interface, data ):
# call many methods of my_interface
# depending on the execution of each of them, handle
# the communication protocol
# return the result
Maintenant, comment on teste un bazar pareil ? J'ai justement eu le
probleme recemment ou j'ai du ecrire exactement ce genre de code,
une fois en C++ et une fois en python.
En C++, j'ai du creer une interface generique, rajouter des
methodes virtuelles, passer pas mal de temps a memoriser les
echanges et pas mal de temps a tester mon objet de test. En
python, c'est 10 fois plus simple. Tu passes un objet mock qui va
enregistrer tous les appels qui seront faits sur ton interface et qui
peut eventuellement retourner des donnees fictives.
Exemple reel tire de mon code de test:
# correct data, correct sw my_rd = Mock(
{ "exchangeApdu": data + sw,
"powerOn": [0x3B, 0] } )
sp = ScriptPlayerBase( my_rd )
sp.setUnexpectedRaisesException( 0 )
my_rd.clearCalls()
self.assertEquals( sp.send( cmd, sw=sw ), data + sw )
allCalls = my_rd.getAllCalls()
self.assertEquals( len(allCalls), 1 )
self.assertEquals( allCalls[0].params[0], cmd )
- my_rd est un objet fictif qui retournera data+sw a la methode
exchangeApdu, et la liste [0x3B, 0x00] a la methode powerOn.
- je le passe a ScriptPlayerBase en lieu et place d'un objet lecteur
reel
- j'appelle la methode send sur my_rd. Derriere mon dos, sp va
appeler my_rd et recevoir les reponses qu'il attend
- je verifie que la reponse est correct de send est correcte
- ensuite, je liste tous les appels effectues sur my_rd et je verifie
qu'ils sont bien ce qu'ils doivent etre. Les capacites dynamiques de
python permettent de faire facilement ce genre de chose. Le code
pour la classe Mock fait 80 lignes commentaires et documenation
comprise.
Pour faire le meme test en utilisant une methode a la
EasyMock, on aurait:
# correct data, correct sw
my_rd = EasyMock()
my_rd.record()
my_rd.powerOn()
my_rd.setReturn( [0x3B, 0 ] )
my_rd.exchangeApdu( cmd )
my_rd.setReturn( data+sw )
my_rd.replay()
sp = ScriptPlayerBase( my_rd )
sp.setUnexpectedRaisesException( 0 )
self.assertEquals( sp.send( cmd, sw=sw ), data + sw )
# if something went wrong, an exception would have been raised
Malheureusement, personne n'a encore ecrit d'easymock pour
python. Mais ca doit bien demander une heure de travail a tout
casser.
Pour faire une retranscription d'une interview audio, il faut compter 10 minutes pour retranscrire une minute d'interview (experience vecue, http://dot.kde.org/1081772638/(...)). Pour de la video, c'est encore plus complique puisqu'il faut apres synchroniser les sous-titres.
La, il y avait une quinzaine de video de 45 minutes a l'akademy: 15 * 45 * 10 = 6750 minutes = 110 heures a quelques poils pres, uniquement sur la partie audio.
A mon avis, c'est plus rapide d'apprendre l'anglais.
Ca sert aussi dans le cas de test unitaires pour faire des objets
moqueurs (www.easymock.org).
Exemple:
def my_communication_protocol( my_interface, data ):
# call many methods of my_interface
# depending on the execution of each of them, handle
# the communication protocol
# return the result
Maintenant, comment on teste un bazar pareil ? J'ai justement eu le
probleme recemment ou j'ai du ecrire exactement ce genre de code,
une fois en C++ et une fois en python.
En C++, j'ai du creer une interface generique, rajouter des
methodes virtuelles, passer pas mal de temps a memoriser les
echanges et pas mal de temps a tester mon objet de test.
En python, c'est 10 fois plus simple. Tu passes un objet mock qui va
enregistrer tous les appels qui seront faits sur ton interface et qui
peut eventuellement retourner des donnees fictives.
Exemple reel tire de mon code de test:
# correct data, correct sw
my_rd = Mock(
{ "exchangeApdu": data + sw,
"powerOn": [0x3B, 0]
} )
sp = ScriptPlayerBase( my_rd )
sp.setUnexpectedRaisesException( 0 )
my_rd.clearCalls()
self.assertEquals( sp.send( cmd, sw=sw ), data + sw )
allCalls = my_rd.getAllCalls()
self.assertEquals( len(allCalls), 1 )
self.assertEquals( allCalls[0].params[0], cmd )
- my_rd est un objet fictif qui retournera data+sw a la methode
exchangeApdu, et la liste [0x3B, 0x00] a la methode powerOn.
- je le passe a ScriptPlayerBase en lieu et place d'un objet lecteur reel
- j'appelle la methode send sur my_rd. Derriere mon dos, sp va
appeler my_rd et recevoir les reponses qu'il attend
- je verifie que la reponse est correct de send est correcte
- ensuite, je liste tous les appels effectues sur my_rd et je verifie qu'ils sont bien ce qu'ils doivent etre.
Les capacites dynamiques de python permettent de faire facilement
ce genre de chose. Le code pour la classe Mock fait 80 lignes
commentaires et documenation comprise.
Pour faire le meme test en utilisant une methode a la EasyMock, on aurait:
# correct data, correct sw
my_rd = EasyMock()
my_rd.record()
my_rd.powerOn()
my_rd.setReturn( [0x3B, 0 ] )
my_rd.exchangeApdu( cmd )
my_rd.setReturn( data+sw )
my_rd.replay()
sp = ScriptPlayerBase( my_rd )
sp.setUnexpectedRaisesException( 0 )
self.assertEquals( sp.send( cmd, sw=sw ), data + sw )
# if something went wrong, an exception would have been raised
Malheureusement, personne n'a encore ecrit d'easymock pour
python. Mais ca doit bien demander une heure de travail a tout casser.
<< Le 'Explicit is better than implicit' est un argument creux: si c'était le cas, on programmerait toujours en assembleur: il n'y a pas plus explicite comme language. >>
Au contraire, l'assembleur est plutot obscur comme langage. Python est d'une clarte limpide a la lecture et ca, ca vaut cher.
J'avoue que ca me gonflait aussi un peu au debut, maintenant, je m'y suis fait meme si je l'oublie de temps en temps, ou si je le rajoute sur des fonctions qui n'en ont pas besoin.
Note que ce n'est pas le seul langage qui demande a declarer explicitement l'instance de l'objet. C'est le cas aussi pour lua, il me semble que c'est aussi le cas pour javascript et je suis sur qu'on peut en exhiber un certtain nombre comme ca.
C'est difficile de faire des tests unitaires qui couvrent tout. C'est tres tres facile de faire des tests unitaires en python mais sur mes programmes, malgre la palanquee de test, il y a toujours des cas non testes.
On peut eventuellement utiliser des outils de couverture de code (valider que les tests unitaires exercent tous les chemins) mais je ne suis pas sur ca suffise.
Typiquement, comme les type sont dynamiques, je me retrouve souvent a abuser un peu de ca, et ca peut faire mal:
def f( a ):
if not type(a) is type([]): a = [ a ]
# now, treat a as a list
def g( b ):
if type(b) is type([]):
for e in b:
g(b)
Dans ces deux cas, g et f acceptent deja deux types d'arguments (a noter pour les pythonistes que g peut s'ecrire plus simplement avec map).
En fait, je pense que ce n'est pas un bon style de programmation parce que c'est un peu dangereux. C'est avec ce genre de connerie qu'on se retrouve avec des chemins d'execution hyper complexes et qu'on peut lever une exception au mauvais moment.
if KDE_SUPPORTED:
XMainWindow = KMainWindow
else:
XMainWidow = QMainWindow
class MyMainWindow( XMainWindow ):
....
En fait, ces possibilites tres dynamiques ne sont pas tant un besoin qu'une possibilite naturelle offerte par le langage.
Les methodes d'une classe sont stockees par exemple dans un dictionnaire attache a la classe, dictionnaire que tu peux manipuler a ta guise. Quel interet de les stocker dans un dictionnaire ? Il fallait bien les stocker quelque part. Quel interet de rendre le dictioninaire accessible ? Ben ca peut s'averer pratique dans certains cas mais Guido n'a pas vu de bonne raison de ne pas le faire.
Par exemple, tu peux faire beaucoup d'introspection en python en passant justement par ce dictionnaire. Alors que en C++, c'est particulierement lourd a faire. Meme en Java ou en .NET, l'api d'introspection est beaucoup plus limitee.
Les caracteristiques hautement dynamiques de python le rendent vraiment adapte pour faire des trucs un peu tordus ou des trucs complexes. Par exemple, la programmation oriente Aspect est hyper facile a mettre en place en python.
Mais faut pas croire que parce que il y a des super fonctionnalites, on doit les utiliser. Perso, je n'utilise que les fonctionnalites de base, je me sert de python comme d'un C++ leger et rapide, avec beaucoup de types de bases tres elabores et une large bibliotheque de fonctions.
La version actuelle de gcc est issue d'un fork du gcc de la FSF, fork qui se nommait egcs. Dans ce cas, egcs a carrement remplace gcc, parce qu'il marchait beaucoup mieux. Cela dit, gcc n'est pas mort, les developpeurs se sont apercus de leur erreur et ont rejoint la nouvelle branche (au bout de deux ans si je me souviens bien).
Pour XEmacs, je ne suis pas un expert mais des gens informes m'ont dit que XEmacs etait beaucoup mieux que emacs. Ca n'empeche pas emacs de continuer sa belle vie.
Les forks sont lies soient a des problemes de personnes, soit a des visions differentes sur ce que doit etre le futur du logiciel (et en general un peu des deux). Les forks reussis sont tres tres rares. Le developpeur initial d'un projet a su amener le projet jusqu'a sa version actuelle garde beaucoup de pouvoir implicite et de respect de la part des autres developpeurs. Beaucoup de fork finissent dans l'oubli parce que le forkeur avait surtout une grande gueule et n'a pas reussi a amener l'ecosysteme minimal pour faire vivre un logiciel.
Inkscape est un fork qui reussit bien.
A mon avis, il ne faut pas avoir peur d'un fork parce que il a tres peu de chance de marcher. C'etait la peur no 1 de trolltech avant de mettre Qt en GPL et ils sont maintenant persuades que personne ne pourra developper Qt mieux qu'eux.
Bon, j'aime beaucoup ce langage. Simple, rapide a aprrendre, une lib de base tres tres complete permettant de faire a peu pres n'importe quoi.
Sa faiblesse vient a mon avis de son caractere hautement dynamique, qui l'autorise malheureusement a laisser des exceptions dans des coins tres sournois, qui ne seront peut-tres jamais mise en evidence durant les tests mais finiront par se lever en prod dans des condeitions bizarres.
Des outils comme pychecker ou peak aident a gerer ce genre de probleme mais je ne suis pas encore satisfait des limitations restantes.
Je reve d'un module qui aurait la force du compilateur de ocaml pour extraire l'ensemble des contraintes appliquees a chaque variable et qui en retirerait des erreurs, un peu comme ce qu'on a a la compile en C++.
[^] # Re: Upload ou download?
Posté par Philippe F (site web personnel) . En réponse à la dépêche p2p: premières résiliations d'abonnements. Évalué à 8. Dernière modification le 06 février 2018 à 19:17.
Cette coupure est d'autant plus surprenant qu'un jugement a ete prononce recemment en faveur d'un internaute qui n'avais pas moins de 500 films sur CD telecharges sur internet. Le juge a considere cela comme de la copie privee, deja prise en charge par la taxe sur les supports numeriques.
Forum des Droits sur l'Internet
[^] # ouaah
Posté par Philippe F (site web personnel) . En réponse à la dépêche GnomeMeeting 1.2 disponible. Évalué à 3.
[^] # Re: Base de données
Posté par Philippe F (site web personnel) . En réponse à la dépêche Sortie de MyNews 1.0. Évalué à 2.
[^] # Re: Base de données
Posté par Philippe F (site web personnel) . En réponse à la dépêche Sortie de MyNews 1.0. Évalué à 1.
Genre, je surveille "contactless smart card" sur google (mon metier) pour voir si de nouveaux liens sont apparus dans le monde qui parlent de carte a puce sans-contact.
Il suffirait probablement d'ajouter un modele "recherche google" au bazar mais la doc m'a semble tres tres succinte. J"ai pas compris aussi si on est tout cense se connecter a mynews ou si on fait tourner notre version privee.
[^] # Re: Inutile sans interactivité exchange.
Posté par Philippe F (site web personnel) . En réponse à la dépêche Novell et Netline annoncent Open Exchange en Open Source. Évalué à 10.
[^] # Re: encore plus idiot
Posté par Philippe F (site web personnel) . En réponse à la dépêche [Belgique] P2P, la Sabam gagne contre Tiscali !... Évalué à 5.
[^] # Re: Plutot decu
Posté par Philippe F (site web personnel) . En réponse à la dépêche Thunderbird 1.0 est sorti, en français. Évalué à 2.
Je vais etudier la solution script pour faire tout ca a la mano, ca sera peut-etre mieux.
[^] # Re: Plutot decu
Posté par Philippe F (site web personnel) . En réponse à la dépêche Thunderbird 1.0 est sorti, en français. Évalué à 3.
Si je veux envoyer un document a 7 destinataires differents, sous kmail, pas de solution. Je prends mon fichier je l'encode 7 fois avec 7 cles differentes et j'envoi 7 mails avec chacun un fichier different attache. C'est hautement merdique.
Sous thunderbird, j'attache le document et a l'envoi thunderbird va s'occuper d'encrypter automatiquement le document avec les 7 cles publiques differentes des 7 destinataires. J'ai gagne une demi-heure de mon temps.
J'ai ouvert un bug sur kmail pour ca. Il me semble que la reponse a ete du genre "oui, mais pgp/mime est mieux donc on le fera pas".
# Plutot decu
Posté par Philippe F (site web personnel) . En réponse à la dépêche Thunderbird 1.0 est sorti, en français. Évalué à 6.
Les trucs qui m'agacent le plus:
- sous kmail, c'est hyper facile de passer au message suivant et precedent, tout en scrollant chaque message, et sans quitter les doigts du clavier: ca se fait avec les fleches. Les racourcis thunderbird sont beaucoup moins pratiques et sous conditionnes au focus.
- plutot lent a se lancer sous windows
- j'ai deux comptes pop3 et je dois gerer deux jeux de filtres. Je trouve ca completement hallucinant. J'ai fait l'erreur d'avoir une mailbox globale pensant que ca allait ameliorer la situation. Que nenni, maintenant, j'ai trois jeux de filtres a gerer !
- je comprends pas du tout l'interet de la separation entre plusieurs comptes pop3. Ca me cree plein de problemes et aucun avantages
- il me faut qqch comme 7 click pour changer le smtp qui me sert a envoyer des mails. C'est une operation que je fais deux fois par jour, je trouve ca super penible
- gestion des mailing list completement inexistante. Sous kmail, je prend un message que j'ai recu d'une mailing list, je fais "creer un filtre pour cettte mailing list" et il me cree un filtre en utilisant le champ X-Mailing-List du message. Sous thunderbird, rien de tout ca. Comme les champs X-Mailing-List ne sont pas proposes par defaut, il faut s'en remettre a des to-or-cc ce qui n'est pas fiable. Sous kmail, je peux aussi faire un middle-click sur un folder pour envoyer un mail a un mailing-list en particulier en utilisant meme la bonne adresse d'envoi
- pas possible de faire du drag'n drop d'adresse entre messages
Bon, il a quand meme de tres bon cotes:
- bonne gestion de pgp, alors que kmail impose le pgp/mime, que personne sur la planete ne supporte. Les regles pgp sont quand meme un peu chiant a definir.
- excellent filtre antispam. Il a renvoye bogofilter aux oubliettes tellement il est efficace.
[^] # Re: Métaphore
Posté par Philippe F (site web personnel) . En réponse à la dépêche Il n'y a pas que le traitement de texte pour manipuler du texte !. Évalué à 4.
qui scannent des photos avec Word, d'autres qui tapent des rapports avec Powerpoint, ou qui dessinent des plans avec Photoshop ... y'en a même qui codent avec vi !
>>
Je vois pas le probleme. C'est vrai, ca nous choque de voir ca parce qu'on sait qu'on n'a pas besoin de word pour le faire, mais les utilisateurs sont plus rapides et plus efficaces avec cet outil, c'est normal que ce soit celui qu'ils choisissent systematiquement.
Pour beaucoup d'utilisateurs, l'apprentissage de word a ete douloureux et ils ne veulent pas remettre le couvert une deuxieme fois. En plus, ils risque de se perdre apres entre deux logiciels. Ce sont leurs a priori, je ne sais pas si ils sont tous fondes.
C'est clair que pour beaucoup, works (livre par defaut souvent avec windows) suffit largement mais quand tu parles autour de toi, tout le monde de parle de msoffice et de word, pas de works.
[^] # Re: Bof, pas convaincu par l'article
Posté par Philippe F (site web personnel) . En réponse à la dépêche Il n'y a pas que le traitement de texte pour manipuler du texte !. Évalué à 1.
Perso, depuis que j'utilise OpenOffice, c'est le bonheur. Je ne fais que de la doc d'entreprise. Les template sont super facile a manipuler, en 3 secondes, je peux changer le style de tous mes titres, etc etc.
[^] # Re: pourquoi ne pas utiliser l'API crypto du noyau ?
Posté par Philippe F (site web personnel) . En réponse au journal les nouveautés de KDE 3.4. Évalué à 3.
==> NON !
Je ne sais pas de quelle api crypto tu parles, mais clarement, linux ne suffit pas pour coder une application avec de la crypto. Il faut utiliser utiliser une lib qui code tous les algos. En general, on utilise openssl (www.openssl.org) mais rien n'empeche de le re-ecrire.
[^] # Re: Pour memoire
Posté par Philippe F (site web personnel) . En réponse à la dépêche Sortie officielle de Flumotion. Évalué à 4.
Je n'ai rien dit de tel. Je te fais remarquer que ton voeu pieu va avec une charge de travail telle que ca me parait peu probable qu'il soit realise. Mais j'aimerai qu'on me prouve que j'ai tort.
C'est justement ce genre d'interview ou la retranscription va prendre encore plus de temps que les 10 minutes par minutes, et que seul une minorite de gens pourront faire.
[^] # Re: Ah, la Chine
Posté par Philippe F (site web personnel) . En réponse à la dépêche La municipalité de Pékin opte pour des logiciels "nationaux" libres et non libres. Évalué à 5.
Donc pour moi, c'est bien une victoire du petit contre le grand, et la seule raison qui puisse expliquer cette victoire c'est l'application d'une loi de preference nationale.
[^] # Re: Quel éditeur/IDE pour python ?
Posté par Philippe F (site web personnel) . En réponse à la dépêche Sortie de Python 2.4. Évalué à 2.
# Ah, la Chine
Posté par Philippe F (site web personnel) . En réponse à la dépêche La municipalité de Pékin opte pour des logiciels "nationaux" libres et non libres. Évalué à 10.
Honnetement, je suis surpris que ce soit les petits editeurs Linux qui reussisent a l'emporter en invoquant une loi, face a la corruption + la machine Microsoft.
C'est une tres tres bonne nouvelle, d'une part pour le logiciel libre, d'autre part pour la Chine puisque ca montre son entree (certe, chaotique, difficile et imparfaite) dans un etat de droit.
Pour une fois, la technique du dealer de drogue de Microsoft n'a pas marche: tiens, prends mes premieres licences, elles coutent pas cher.
Esperons d'autre transitions vers le logiciel libre, et d'autres lois appliquees plus fidelement.
# Incompatible ?
Posté par Philippe F (site web personnel) . En réponse à la dépêche SPT : Une alternative au système historique de partitionnement des PC. Évalué à 4.
Quand je vois des programmes qui sous windows, creent des lecteurs de DVD virtuels, je me dis que ca doit pas etre impossible au moins de rendre les partitions visibles, et au mieux d'y installer windows.
Certe, on est sur linuxfr mais l'interet d'avoir plusieurs partitions, c'est bien d'avoir plusieurs OS disponibles.
[^] # Re: le python c'est bon
Posté par Philippe F (site web personnel) . En réponse à la dépêche Sortie de Python 2.4. Évalué à 6.
Chuis vert, j'ai passe 10 minutes a mettre ce post en forme et tout est nique parce que j'ai appuye sur le mauvais bouton au mauvais moment. Ca sert aussi dans le cas de test unitaires pour faire des objets moqueurs (www.easymock.org). Exemple: def my_communication_protocol( my_interface, data ): # call many methods of my_interface # depending on the execution of each of them, handle # the communication protocol # return the result Maintenant, comment on teste un bazar pareil ? J'ai justement eu le probleme recemment ou j'ai du ecrire exactement ce genre de code, une fois en C++ et une fois en python. En C++, j'ai du creer une interface generique, rajouter des methodes virtuelles, passer pas mal de temps a memoriser les echanges et pas mal de temps a tester mon objet de test. En python, c'est 10 fois plus simple. Tu passes un objet mock qui va enregistrer tous les appels qui seront faits sur ton interface et qui peut eventuellement retourner des donnees fictives. Exemple reel tire de mon code de test: # correct data, correct sw my_rd = Mock( { "exchangeApdu": data + sw, "powerOn": [0x3B, 0] } ) sp = ScriptPlayerBase( my_rd ) sp.setUnexpectedRaisesException( 0 ) my_rd.clearCalls() self.assertEquals( sp.send( cmd, sw=sw ), data + sw ) allCalls = my_rd.getAllCalls() self.assertEquals( len(allCalls), 1 ) self.assertEquals( allCalls[0].params[0], cmd ) - my_rd est un objet fictif qui retournera data+sw a la methode exchangeApdu, et la liste [0x3B, 0x00] a la methode powerOn. - je le passe a ScriptPlayerBase en lieu et place d'un objet lecteur reel - j'appelle la methode send sur my_rd. Derriere mon dos, sp va appeler my_rd et recevoir les reponses qu'il attend - je verifie que la reponse est correct de send est correcte - ensuite, je liste tous les appels effectues sur my_rd et je verifie qu'ils sont bien ce qu'ils doivent etre. Les capacites dynamiques de python permettent de faire facilement ce genre de chose. Le code pour la classe Mock fait 80 lignes commentaires et documenation comprise. Pour faire le meme test en utilisant une methode a la EasyMock, on aurait: # correct data, correct sw my_rd = EasyMock() my_rd.record() my_rd.powerOn() my_rd.setReturn( [0x3B, 0 ] ) my_rd.exchangeApdu( cmd ) my_rd.setReturn( data+sw ) my_rd.replay() sp = ScriptPlayerBase( my_rd ) sp.setUnexpectedRaisesException( 0 ) self.assertEquals( sp.send( cmd, sw=sw ), data + sw ) # if something went wrong, an exception would have been raised Malheureusement, personne n'a encore ecrit d'easymock pour python. Mais ca doit bien demander une heure de travail a tout casser.[^] # Re: Pour memoire
Posté par Philippe F (site web personnel) . En réponse à la dépêche Sortie officielle de Flumotion. Évalué à 4.
Pour faire une retranscription d'une interview audio, il faut compter 10 minutes pour retranscrire une minute d'interview (experience vecue, http://dot.kde.org/1081772638/(...)). Pour de la video, c'est encore plus complique puisqu'il faut apres synchroniser les sous-titres.
La, il y avait une quinzaine de video de 45 minutes a l'akademy: 15 * 45 * 10 = 6750 minutes = 110 heures a quelques poils pres, uniquement sur la partie audio.
A mon avis, c'est plus rapide d'apprendre l'anglais.
[^] # Re: le python c'est bon
Posté par Philippe F (site web personnel) . En réponse à la dépêche Sortie de Python 2.4. Évalué à 1.
Ca sert aussi dans le cas de test unitaires pour faire des objets moqueurs (www.easymock.org). Exemple: def my_communication_protocol( my_interface, data ): # call many methods of my_interface # depending on the execution of each of them, handle # the communication protocol # return the resultMaintenant, comment on teste un bazar pareil ? J'ai justement eu le probleme recemment ou j'ai du ecrire exactement ce genre de code, une fois en C++ et une fois en python. En C++, j'ai du creer une interface generique, rajouter des methodes virtuelles, passer pas mal de temps a memoriser les echanges et pas mal de temps a tester mon objet de test. En python, c'est 10 fois plus simple. Tu passes un objet mock qui va enregistrer tous les appels qui seront faits sur ton interface et qui peut eventuellement retourner des donnees fictives. Exemple reel tire de mon code de test: # correct data, correct sw my_rd = Mock( { "exchangeApdu": data + sw, "powerOn": [0x3B, 0] } ) sp = ScriptPlayerBase( my_rd ) sp.setUnexpectedRaisesException( 0 ) my_rd.clearCalls() self.assertEquals( sp.send( cmd, sw=sw ), data + sw ) allCalls = my_rd.getAllCalls() self.assertEquals( len(allCalls), 1 ) self.assertEquals( allCalls[0].params[0], cmd ) - my_rd est un objet fictif qui retournera data+sw a la methode exchangeApdu, et la liste [0x3B, 0x00] a la methode powerOn. - je le passe a ScriptPlayerBase en lieu et place d'un objet lecteur reel - j'appelle la methode send sur my_rd. Derriere mon dos, sp va appeler my_rd et recevoir les reponses qu'il attend - je verifie que la reponse est correct de send est correcte - ensuite, je liste tous les appels effectues sur my_rd et je verifie qu'ils sont bien ce qu'ils doivent etre. Les capacites dynamiques de python permettent de faire facilement ce genre de chose. Le code pour la classe Mock fait 80 lignes commentaires et documenation comprise. Pour faire le meme test en utilisant une methode a la EasyMock, on aurait: # correct data, correct sw my_rd = EasyMock() my_rd.record() my_rd.powerOn() my_rd.setReturn( [0x3B, 0 ] ) my_rd.exchangeApdu( cmd ) my_rd.setReturn( data+sw ) my_rd.replay() sp = ScriptPlayerBase( my_rd ) sp.setUnexpectedRaisesException( 0 ) self.assertEquals( sp.send( cmd, sw=sw ), data + sw ) # if something went wrong, an exception would have been raised Malheureusement, personne n'a encore ecrit d'easymock pour python. Mais ca doit bien demander une heure de travail a tout casser.[^] # Re: Pourquoi tous ces self ?
Posté par Philippe F (site web personnel) . En réponse à la dépêche Sortie de Python 2.4. Évalué à 3.
Au contraire, l'assembleur est plutot obscur comme langage. Python est d'une clarte limpide a la lecture et ca, ca vaut cher.
J'avoue que ca me gonflait aussi un peu au debut, maintenant, je m'y suis fait meme si je l'oublie de temps en temps, ou si je le rajoute sur des fonctions qui n'en ont pas besoin.
Note que ce n'est pas le seul langage qui demande a declarer explicitement l'instance de l'objet. C'est le cas aussi pour lua, il me semble que c'est aussi le cas pour javascript et je suis sur qu'on peut en exhiber un certtain nombre comme ca.
[^] # Re: le python c'est bon
Posté par Philippe F (site web personnel) . En réponse à la dépêche Sortie de Python 2.4. Évalué à 2.
On peut eventuellement utiliser des outils de couverture de code (valider que les tests unitaires exercent tous les chemins) mais je ne suis pas sur ca suffise.
Typiquement, comme les type sont dynamiques, je me retrouve souvent a abuser un peu de ca, et ca peut faire mal:
def f( a ):
if not type(a) is type([]): a = [ a ]
# now, treat a as a list
def g( b ):
if type(b) is type([]):
for e in b:
g(b)
Dans ces deux cas, g et f acceptent deja deux types d'arguments (a noter pour les pythonistes que g peut s'ecrire plus simplement avec map).
En fait, je pense que ce n'est pas un bon style de programmation parce que c'est un peu dangereux. C'est avec ce genre de connerie qu'on se retrouve avec des chemins d'execution hyper complexes et qu'on peut lever une exception au mauvais moment.
[^] # Re: le python c'est bon
Posté par Philippe F (site web personnel) . En réponse à la dépêche Sortie de Python 2.4. Évalué à 8.
if KDE_SUPPORTED:
XMainWindow = KMainWindow
else:
XMainWidow = QMainWindow
class MyMainWindow( XMainWindow ):
....
En fait, ces possibilites tres dynamiques ne sont pas tant un besoin qu'une possibilite naturelle offerte par le langage.
Les methodes d'une classe sont stockees par exemple dans un dictionnaire attache a la classe, dictionnaire que tu peux manipuler a ta guise. Quel interet de les stocker dans un dictionnaire ? Il fallait bien les stocker quelque part. Quel interet de rendre le dictioninaire accessible ? Ben ca peut s'averer pratique dans certains cas mais Guido n'a pas vu de bonne raison de ne pas le faire.
Par exemple, tu peux faire beaucoup d'introspection en python en passant justement par ce dictionnaire. Alors que en C++, c'est particulierement lourd a faire. Meme en Java ou en .NET, l'api d'introspection est beaucoup plus limitee.
Les caracteristiques hautement dynamiques de python le rendent vraiment adapte pour faire des trucs un peu tordus ou des trucs complexes. Par exemple, la programmation oriente Aspect est hyper facile a mettre en place en python.
Mais faut pas croire que parce que il y a des super fonctionnalites, on doit les utiliser. Perso, je n'utilise que les fonctionnalites de base, je me sert de python comme d'un C++ leger et rapide, avec beaucoup de types de bases tres elabores et une large bibliotheque de fonctions.
[^] # Re: Complément
Posté par Philippe F (site web personnel) . En réponse au journal Projets et licences. Évalué à 4.
La version actuelle de gcc est issue d'un fork du gcc de la FSF, fork qui se nommait egcs. Dans ce cas, egcs a carrement remplace gcc, parce qu'il marchait beaucoup mieux. Cela dit, gcc n'est pas mort, les developpeurs se sont apercus de leur erreur et ont rejoint la nouvelle branche (au bout de deux ans si je me souviens bien).
Pour XEmacs, je ne suis pas un expert mais des gens informes m'ont dit que XEmacs etait beaucoup mieux que emacs. Ca n'empeche pas emacs de continuer sa belle vie.
Les forks sont lies soient a des problemes de personnes, soit a des visions differentes sur ce que doit etre le futur du logiciel (et en general un peu des deux). Les forks reussis sont tres tres rares. Le developpeur initial d'un projet a su amener le projet jusqu'a sa version actuelle garde beaucoup de pouvoir implicite et de respect de la part des autres developpeurs. Beaucoup de fork finissent dans l'oubli parce que le forkeur avait surtout une grande gueule et n'a pas reussi a amener l'ecosysteme minimal pour faire vivre un logiciel.
Inkscape est un fork qui reussit bien.
A mon avis, il ne faut pas avoir peur d'un fork parce que il a tres peu de chance de marcher. C'etait la peur no 1 de trolltech avant de mettre Qt en GPL et ils sont maintenant persuades que personne ne pourra developper Qt mieux qu'eux.
# le python c'est bon
Posté par Philippe F (site web personnel) . En réponse à la dépêche Sortie de Python 2.4. Évalué à 6.
Sa faiblesse vient a mon avis de son caractere hautement dynamique, qui l'autorise malheureusement a laisser des exceptions dans des coins tres sournois, qui ne seront peut-tres jamais mise en evidence durant les tests mais finiront par se lever en prod dans des condeitions bizarres.
Des outils comme pychecker ou peak aident a gerer ce genre de probleme mais je ne suis pas encore satisfait des limitations restantes.
Je reve d'un module qui aurait la force du compilateur de ocaml pour extraire l'ensemble des contraintes appliquees a chaque variable et qui en retirerait des erreurs, un peu comme ce qu'on a a la compile en C++.