Licence CC BY

Nouvelle expérience : On continue à coder en live !

Samedi à 14h a eu lieu le premier livestream de code de zds. Comme je l’ai dit dans les commentaires j’envisage d’en faire un pour implémenter une nouvelle fonctionnalité de zds le 2 août. Mais en attendant, pour m’entraîner et voir le temps que peut prendre ce genre d’activité, je vous propose un nouveau refactoring.

En rapide, un nouveau stream se prépare ici vendredi 21 à 20h

Il était une fois un pdf

L’enjeu du refactoring : permettre à Zeste De Savoir de profiter à nouveau d’un export PDF propre et efficace.

Pour cela je vais prendre la suite du travail réalisé ici. Et je ferai évoluer le code de zds pour que lorsqu’on publie ou appelle à zmarkdown pour :

  • générer le fichier html stand alone
  • générer le fichier epub
  • générer un export .tex
  • et en déduire le pdf qui va bien.

L’enjeu sera d’avoir un code plus propre (la publication a un historique complexe et n’est pas le code le plus facile à comprendre du site – oui, j’aime les euphémismes.), qui se passe de pandoc et qui fonctionne.

ça veut dire quoi "fonctionner"?

  • quand un export réussi, il devient pleinement accessible, un flag est passé pour dire que c’est ok;
  • un un export rate, le flag est passé à "échec", une erreur correctement formatée est envoyée à sentry pour qu’on la traite comme il faut, et surtout le reste n’est pas bloqué.

un peu d'info sur la publication

Comme je le disais, le module de publication n’est pas le plus facile à comprendre. Je vous propose ce petit extrait pour avoir une "vue de loin" de comment ça marche.

Pipeline

Actuellement, Pandoc gère toutes les publications grâce à ce code, par exemple :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@PublicatorRegistery.register('pdf', settings.PANDOC_LOC, 'pdf', settings.PANDOC_PDF_PARAM)
@PublicatorRegistery.register('epub', settings.PANDOC_LOC, 'epub')
@PublicatorRegistery.register('html', settings.PANDOC_LOC, 'html')
class PandocPublicator(Publicator):

    """
    Wrapper arround pandoc commands
    """
    def __init__(self, pandoc_loc, _format, pandoc_pdf_param=None):
        self.pandoc_loc = pandoc_loc
        self.pandoc_pdf_param = pandoc_pdf_param
        self.format = _format
        self.__logger = logging.getLogger('zds.pandoc-publicator')

    def publish(self, md_file_path, base_name, change_dir='.', pandoc_debug_str='', **kwargs):
        """

        :param md_file_path: base markdown file path
        :param base_name: file name without extension
        :param change_dir: directory in wich pandoc commands will be executed
        :param pandoc_debug_str: end of command to allow debugging
        :param kwargs: othe publicator dependant options ignored by this one
        :return:
        """
        if self.pandoc_pdf_param:
            self.__logger.debug('Started {} generation'.format(base_name + '.' + self.format))
            subprocess.call(
                self.pandoc_loc + 'pandoc ' + self.pandoc_pdf_param + ' ' + md_file_path + ' -o ' +
                base_name + '.' + self.format + ' ' + pandoc_debug_str,
                shell=True,
                cwd=change_dir)
            self.__logger.info('Finished {} generation'.format(base_name + '.' + self.format))
        else:
            self.__logger.debug('Started {} generation'.format(base_name + '.' + self.format))
            subprocess.call(
                self.pandoc_loc + 'pandoc -s -S --toc ' + md_file_path + ' -o ' +
                base_name + '.' + self.format + ' ' + pandoc_debug_str,
                shell=True,
                cwd=change_dir)
            self.__logger.info('Finished {} generation'.format(base_name + '.' + self.format))

`

et la date

Vendredi 21 juillet à 20h heure Française.


35 commentaires

Début dans 15 minutes https://www.twitch.tv/artragis je serai là 5 minutes avant pour vérifier que les réglages sont bons

artragis

Ça s’est passé comment ? Tu nous envoie le lien du replay quand il est dispo ?

tleb

La bonne question aurait été : Peut-on espérer que par un pure miracle une partie du live est été sauvegardée ? :)

+0 -0

Côté code, j’en ai fait moins que je ne le pensais. J’avais sous estimé le ralentissement dû aux explications.

Côté stream, ça c’est mal passé à cause de coupure.

J’ai un enregistrement partiel (globalement j’ai 45 minutes sur 1h de stream), je vais faire ce qu’il faut pour uploader ça.

Sûrement ma connexion (8Mbps, pourtant j’avais réduit la qualité du son + mis en 20 fps) et sinon, peut être le PC que j’utilisais (j’avais pas la possibilité à cause d’un pb de conf d’utiliser mon ps fixe, qui est mieux fourni de ce point de vue).

J’ai les deux parties du stream en .flv. Je les colle asap puis je les balance sur mon youtube.

Sûrement ma connexion (8Mbps, pourtant j’avais réduit la qualité du son + mis en 20 fps) et sinon, peut être le PC que j’utilisais (j’avais pas la possibilité à cause d’un pb de conf d’utiliser mon ps fixe, qui est mieux fourni de ce point de vue).

J’ai les deux parties du stream en .flv. Je les colle asap puis je les balance sur mon youtube.

artragis

Personnellement pour avoir voulu suivre le live j’ai seulement pu regarder entre 5 et 10 min du live tellement les coupures été régulière et longues.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte