Commits

Anonymous committed 10d9a20

Add some advances in new task

  • Participants
  • Parent commits 6cff87c

Comments (0)

Files changed (8)

File from_console/from_console.rst

+
+----
+
+Información de ficheros aiff::
+
+    $ python3 -maifc Blow.aiff
+    Reading Blow.aiff
+    nchannels = 2
+    nframes   = 58433
+    sampwidth = 2
+    framerate = 44100
+    comptype  = NONE
+    compname  = not compressed
+
+
+----
+
+Convertir en base64::
+
+    $ echo "hola" | python3 -mbase64
+    aG9sYQo=
+
+----
+
+Mostrar un calendario::
+
+    $ python3 -mcalendar -L es -e utf8
+                                      2013
+
+           enero                    febrero                    marzo
+    lu ma mi ju vi sá do      lu ma mi ju vi sá do      lu ma mi ju vi sá do
+        1  2  3  4  5  6                   1  2  3                   1  2  3
+     7  8  9 10 11 12 13       4  5  6  7  8  9 10       4  5  6  7  8  9 10
+    14 15 16 17 18 19 20      11 12 13 14 15 16 17      11 12 13 14 15 16 17
+    21 22 23 24 25 26 27      18 19 20 21 22 23 24      18 19 20 21 22 23 24
+    28 29 30 31               25 26 27 28               25 26 27 28 29 30 31
+
+    ...
+
+Permite generar un html también. En Unix existe `cal`.
+
+----
+
+¿Testear cgi?::
+
+    $ python3 -mcgi
+
+Lo siento, no he probado tecnología viejuna ;-)
+
+----
+
+La consola::
+
+    $ python3 -mcode
+
+Si, la consola es módulo que podemos extender en nuestros servidores ;-)
+
+----
+
+El de codecs es solo testing::
+
+    ### Tests
+
+    if __name__ == '__main__':
+
+        # Make stdout translate Latin-1 output into UTF-8 output
+        sys.stdout = EncodedFile(sys.stdout, 'latin-1', 'utf-8')
+
+        # Have stdin translate Latin-1 input into UTF-8 input
+        sys.stdin = EncodedFile(sys.stdin, 'utf-8', 'latin-1')
+
+
+¿No podría tener una opción tipo iconv de regalo?
+
+----
+
+Compilarlo todo :-/ ::
+
+    $ python3 -mcompileall --help
+    usage: compileall.py [-h] [-l] [-f] [-q] [-b] [-d DESTDIR] [-x REGEXP]
+                         [-i FILE]
+                         [FILE|DIR [FILE|DIR ...]]
+
+    Utilities to support installing Python libraries.
+
+    positional arguments:
+      FILE|DIR    zero or more file and directory names to compile; if no
+                  arguments given, defaults to the equivalent of -l sys.path
+
+    optional arguments:
+      -h, --help  show this help message and exit
+      -l          don't recurse into subdirectories
+      -f          force rebuild even if timestamps are up to date
+      -q          output only error messages
+      -b          use legacy (pre-PEP3147) compiled file locations
+      -d DESTDIR  directory to prepend to file paths for use in compile-time
+                  tracebacks and in runtime tracebacks in cases where the source
+                  file is unavailable
+      -x REGEXP   skip files matching the regular expression; the regexp is
+                  searched for in the full path of each file considered for
+                  compilation
+      -i FILE     add all the files and directories listed in FILE to the list
+                  considered for compilation; if "-", names are read from stdin
+
+----
+
+Profiling de código::
+
+    $ python3 -mcProfile
+    Usage: cProfile.py [-o output_file_path] [-s sort] scriptfile [arg] ...
+
+Las opciones para sort estan descritas en 'http://docs.python.org/3/library/profile.html#pstats.Stats.sort_stats'_
+
+Si no existiera habría que inventarlo.
+
+----
+
+El paquete decimal solo tiene cosas de test::
+
+    $ python3 -mdecimal
+
+Y encima la versión que tengo me da fallos :-(
+
+----
+
+Otro con solo cosas de test::
+
+    $ python3 -mdifflib
+
+Pero este no da fallos
+
+----
+
+Para aprender los bytecodes de python::
+
+    $ python3 -m dis kk.py
+      1           0 SETUP_LOOP              57 (to 60)
+                  3 LOAD_NAME                0 (range)
+                  6 LOAD_CONST               0 (10)
+                  9 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
+                 12 GET_ITER
+            >>   13 FOR_ITER                43 (to 59)
+                 16 STORE_NAME               1 (i)
+
+      2          19 SETUP_LOOP              34 (to 56)
+                 22 LOAD_NAME                0 (range)
+                 25 LOAD_CONST               0 (10)
+                 28 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
+                 31 GET_ITER
+            >>   32 FOR_ITER                20 (to 55)
+                 35 STORE_NAME               2 (j)
+
+      3          38 LOAD_NAME                3 (print)
+                 41 LOAD_NAME                1 (i)
+                 44 LOAD_NAME                2 (j)
+                 47 BINARY_POWER
+                 48 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
+                 51 POP_TOP
+                 52 JUMP_ABSOLUTE           32
+            >>   55 POP_BLOCK
+            >>   56 JUMP_ABSOLUTE           13
+            >>   59 POP_BLOCK
+            >>   60 LOAD_CONST               1 (None)
+                 63 RETURN_VALUE
+
+----
+
+Pruebas unitarias encontradas en tests:
+
+Este está comentado 'http://docs.python.org/3/library/doctest.html#module-doctest'_
+
+----
+
+Para comparar dos directorios::
+
+    $ python3 -m filecmp . ../flash_gordon/
+    diff . ../flash_gordon/
+    Only in . : ['__pycache__', 'from_console.rst', 'kk.py']
+    Only in ../flash_gordon/ : ['flash_gordon.rst', 'images', 'presentation.html', 'theme']
+    Identical files : ['requirements.txt']
+
+----
+
+El de fileinput también es un test::
+
+    $ python3 -mfileinput -b.bak kk.py
+    1: kk.py[1]* for i in range(10):
+    2: kk.py[2]     for j in range(10):
+    3: kk.py[3]         print(i**j)
+    3: kk.py[3]
+
+----
+
+Un formateador que puede ser util::
+
+    $ cat requirements.txt | python3 -mformatter
+    jinja2 pygments markdown docutils landslide
+
+Dos intros es un párrafo y corta los párrafos si son muy largos.
+
+----
+
+Probar rápidamente un ftp::
+
+    $ python3 -mftplib ftp.rediris.es -l
+    drwxr-xr-x    7 55         55                512 Sep 15 15:56 .
+    drwxr-xr-x    7 55         55                512 Sep 15 15:56 ..
+    -rw-r--r--    1 55         55                189 Mar 27  2012 .banner
+    drwxr-xr-x    8 55         55                 14 Sep 15 17:09 debian
+    d-wx--x--x    2 104        55               5305 Sep 11 09:58 incoming
+    -rw-r--r--    1 55         55         1083770947 Sep 15 15:54 ls-lR
+    -rw-r--r--    1 55         55          189257083 Sep 15 15:56 ls-lR.Z
+    -rw-r--r--    1 55         55          128721068 Sep 15 15:55 ls-lR.gz
+    drwxr-xr-x    2 55         55               3072 Jul  5 11:30 mirror
+    d--x--x--x   16 104        55                 16 Nov  8  2012 outgoing
+    drwxr-xr-x    3 55         55                512 Jul  4  2012 pub
+    drwxr-xr-x   69 55         55                 69 Jul  5 11:32 sites
+    -rw-r--r--    1 55         55                 86 Jan 18  2010 welcome.msg
+
+----
+
+Test de una librería importante para hacer comandos::
+
+    $ python3 -mgetopt -a a -b lala -c asdf b
+    ([('-a', 'a'), ('-b', '')], ['lala', '-c', 'asdf', 'b'])
+
+
+Aburrido :-(
+
+----
+
+Tenemos una versión cutrecilla del gzip::
+
+    $ cat requirements.txt | python3 -mgzip > requirements.txt.gz
+    $ cat requirements.txt.gz | python3 -mgzip -d
+    jinja2
+    pygments
+    markdown
+    docutils
+    landslide
+
+----
+
+Otro test::
+
+    $ python3 -mheapq
+    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+
+----
+
+Otro test, esta vez de imaplib::
+
+    $ python3 -mimaplib -d5
+
+Ninguna utilidad
+
+----
+
+Utilidad para encontrar imágenes::
+
+    $ python3 -mimghdr
+    ./: recursing down:
+    ./kk.py.gz: None
+    ./requirements.txt.gz: None
+    ./from_console.rst: None
+    ./kk.py: None
+    ./imagen: gif
+    ./requirements.txt: None
+
+Aunque ya existe el comando `file` que mola más
+
+----
+
+Otro test sin utilidad::
+
+    $ python3 -mkeyword
+
+----
+
+Listar los locales del sistema::
+
+    $ python3 -mlocale
+
+Tampoco muy util teniendo el comando `locale`.
+
+----
+
+Más tests insulsos::
+
+    $ python3 -m macurl2path
+
+----
+
+Para ver asociaciones de tipo de ficheros a programas::
+
+    $ python3 -mmailcap
+
+¿Podría valer para hacer un lanzador automático de ficheros?
+
+----
+
+Obtener algo de información de un fichero::
+
+    $ python3 -mmimetypes requirements.txt.gz
+    type: text/plain encoding: gzip
+
+Tampoco muy útil.
+
+----
+
+Otro test::
+
+    $ python3 -mmodulefinder
+
+----
+
+Lista información del fichero ~/.netrc::
+
+    $ python3 -mnetrc
+
+----
+
+Para probar el cliente de news::
+
+    $ python3 -mnntplib
+
+No demasiado útil aparte de para revisar los últimos mensajes de un grupo.
+
+----
+
+Arrancar el debugger::
+
+    $ python3 -mpdb
+
+Aunque recomendaría instalar ipdb ;-)
+
+----
+
+Visualizar un fichero serializado con pickle::
+
+    $ python3 -mpickle kk.pickle
+    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+
+¿Cuántas veces habeis hecho un script para esto?
+
+----
+
+Y la versión hardcore de la serialización::
+
+    $ python3 -mpickletools kk.pickle
+        0: \x80 PROTO      3
+        2: ]    EMPTY_LIST
+        3: q    BINPUT     0
+        5: (    MARK
+        6: K        BININT1    0
+        8: K        BININT1    1
+       10: K        BININT1    2
+       12: K        BININT1    3
+       14: K        BININT1    4
+       16: K        BININT1    5
+       18: K        BININT1    6
+       20: K        BININT1    7
+       22: K        BININT1    8
+       24: K        BININT1    9
+       26: e        APPENDS    (MARK at 5)
+       27: .    STOP
+    highest protocol among opcodes = 2
+
+Según dicen en la documentación, para core developers.
+
+----
+
+Obtener información del sistema::
+
+    $ python3 -mplatform
+    Linux-3.8.0-29-generic-x86_64-with-Ubuntu-13.04-raring
+    $ python3 -mplatform terse
+    Linux-3.8.0-29-generic-x86_64-with-glibc2.9
+
+Parecido a `uname`
+
+----
+
+Cutre prueba de cliente de correo pop::
+
+    $ python3 -mpoplib pop3.lasizoillo.com me@lasizoillo.com ******
+
+Quizá para probar algún servicio...
+
+----
+
+Otro test::
+
+    $ python3 -mpprint
+
+----
+
+Como cProfile, pero en lento::
+
+    $ python3 -mprofile
+
+Mejor la otra versión ;-)
+
+----
+
+Para ver las estadísticas generadas con el profiler::
+
+    $ python3 -mpstats
+
+Consola muy util para procesar los datos del profiling.
+
+----
+
+Para generar el .pyc::
+
+    $ python3 -mpy_compile kk.py
+
+----
+
+Quizá una forma de soportar python en tu editor favorito::
+
+    $ python3 -mpyclbr /home/lasi/devel/cpython/Lib/pyclbr.py
+    class Class [] 55
+      def __init__ 57
+      def _addmethod 67
+    class Function [] 70
+      def __init__ 72
+    def readmodule 78
+    def readmodule_ex 90
+    def _readmodule 99
+    def _getnamelist 286
+    def _getname 306
+    def _main 325
+
+Para los que no quieran instalar exhuberant ctags
+
+----
+
+El módulo del comando pydoc::
+
+    $ python -mpydoc
+
+----
+
+Y para un encode raro de MIMETYPE::
+
+    $ python3 -mquopri
+    tab al final de linea
+    tab al final de linea=09
+
+Ni idea de la utilidad que pueda tener.
+
+----
+
+Otro test::
+
+    $ python3 -mrandom
+
+Igual a Rayman le entretiene, yo no le veo utilidad :-)
+
+----
+
+Para implementar la opción -m que usamos todo el rato::
+
+    $ python3 -mrunpy code
+
+No tiene sentido usarlo desde consola.
+
+----
+
+Tester del parser de comandos de unix::
+
+    $ python3 -mshlex kk.py
+
+No le veo utilidad
+
+----
+
+Información de la configuración de site::
+
+    $ python3 -msite
+    sys.path = [
+        '/home/lasi/PycharmProjects/talks/from_console',
+        '/usr/lib/python3.3',
+        '/usr/lib/python3.3/plat-x86_64-linux-gnu',
+        '/usr/lib/python3.3/lib-dynload',
+        '/usr/local/lib/python3.3/dist-packages',
+        '/usr/lib/python3/dist-packages',
+    ]
+    USER_BASE: '/home/lasi/.local' (exists)
+    USER_SITE: '/home/lasi/.local/lib/python3.3/site-packages' (doesn't exist)
+    ENABLE_USER_SITE: True
+
+Este módulo se inicia por defecto. Requeriría charla.
+
+----
+
+Para montar un servidor de correo de pruebas::
+
+    $ python3 -msmtpd -d -n -c DebuggingServer
+
+Se pueden ver en la consola los mails o montar un proxy de correo o....
+
+Muy util!!!
+
+----
+
+Para probar envio de correos::
+
+    $ python3 -msmtplib
+
+No está tan currado como el anterior, le faltaría ser más configurable.
+
+Puede tener utilidad.
+
+----
+
+Analizar cabeceras de ficheros de sonido::
+
+    $ python3 -msndhdr -r ~/Música
+
+Reconoce wav, aiff y poco más. Poco útil.
+
+----
+
+Un generador de código para un fichero de cabecera::
+
+    $ python3 -msre_constants
+
+Genera el fichero sre_constants.h. No creo que lo use nunca.
+
+----
+
+Más de construcción de código::
+
+    $ python3 -msymbol
+
+Y solo funciona desde el código fuente de python.
+
+----
+
+Imprimir la tabla de símbolos::
+
+    $ python3 -msymtable
+
+No se para qué servirá, pero para más información sobre la tabla
+de símbolos de python 'http://eli.thegreenplace.net/2010/09/18/python-internals-symbol-tables-part-1/'_
+
+----
+

File from_console/imagen

Binary file added.

File from_console/kk.pickle

Binary file added.

File from_console/kk.py

+for i in range(10):
+    for j in range(10):
+        print(i**j)

File from_console/kk.py.gz

Binary file added.

File from_console/requirements.txt

+jinja2
+pygments
+markdown
+docutils
+landslide

File from_console/requirements.txt.gz

Binary file added.

File from_console/sre_constants.h

+/*
+ * Secret Labs' Regular Expression Engine
+ *
+ * regular expression matching engine
+ *
+ * NOTE: This file is generated by sre_constants.py.  If you need
+ * to change anything in here, edit sre_constants.py and run it.
+ *
+ * Copyright (c) 1997-2001 by Secret Labs AB.  All rights reserved.
+ *
+ * See the _sre.c file for information on usage and redistribution.
+ */
+
+#define SRE_MAGIC 20031017
+#define SRE_OP_FAILURE 0
+#define SRE_OP_SUCCESS 1
+#define SRE_OP_ANY 2
+#define SRE_OP_ANY_ALL 3
+#define SRE_OP_ASSERT 4
+#define SRE_OP_ASSERT_NOT 5
+#define SRE_OP_AT 6
+#define SRE_OP_BRANCH 7
+#define SRE_OP_CALL 8
+#define SRE_OP_CATEGORY 9
+#define SRE_OP_CHARSET 10
+#define SRE_OP_BIGCHARSET 11
+#define SRE_OP_GROUPREF 12
+#define SRE_OP_GROUPREF_EXISTS 13
+#define SRE_OP_GROUPREF_IGNORE 14
+#define SRE_OP_IN 15
+#define SRE_OP_IN_IGNORE 16
+#define SRE_OP_INFO 17
+#define SRE_OP_JUMP 18
+#define SRE_OP_LITERAL 19
+#define SRE_OP_LITERAL_IGNORE 20
+#define SRE_OP_MARK 21
+#define SRE_OP_MAX_UNTIL 22
+#define SRE_OP_MIN_UNTIL 23
+#define SRE_OP_NOT_LITERAL 24
+#define SRE_OP_NOT_LITERAL_IGNORE 25
+#define SRE_OP_NEGATE 26
+#define SRE_OP_RANGE 27
+#define SRE_OP_REPEAT 28
+#define SRE_OP_REPEAT_ONE 29
+#define SRE_OP_SUBPATTERN 30
+#define SRE_OP_MIN_REPEAT_ONE 31
+#define SRE_AT_BEGINNING 0
+#define SRE_AT_BEGINNING_LINE 1
+#define SRE_AT_BEGINNING_STRING 2
+#define SRE_AT_BOUNDARY 3
+#define SRE_AT_NON_BOUNDARY 4
+#define SRE_AT_END 5
+#define SRE_AT_END_LINE 6
+#define SRE_AT_END_STRING 7
+#define SRE_AT_LOC_BOUNDARY 8
+#define SRE_AT_LOC_NON_BOUNDARY 9
+#define SRE_AT_UNI_BOUNDARY 10
+#define SRE_AT_UNI_NON_BOUNDARY 11
+#define SRE_CATEGORY_DIGIT 0
+#define SRE_CATEGORY_NOT_DIGIT 1
+#define SRE_CATEGORY_SPACE 2
+#define SRE_CATEGORY_NOT_SPACE 3
+#define SRE_CATEGORY_WORD 4
+#define SRE_CATEGORY_NOT_WORD 5
+#define SRE_CATEGORY_LINEBREAK 6
+#define SRE_CATEGORY_NOT_LINEBREAK 7
+#define SRE_CATEGORY_LOC_WORD 8
+#define SRE_CATEGORY_LOC_NOT_WORD 9
+#define SRE_CATEGORY_UNI_DIGIT 10
+#define SRE_CATEGORY_UNI_NOT_DIGIT 11
+#define SRE_CATEGORY_UNI_SPACE 12
+#define SRE_CATEGORY_UNI_NOT_SPACE 13
+#define SRE_CATEGORY_UNI_WORD 14
+#define SRE_CATEGORY_UNI_NOT_WORD 15
+#define SRE_CATEGORY_UNI_LINEBREAK 16
+#define SRE_CATEGORY_UNI_NOT_LINEBREAK 17
+#define SRE_FLAG_TEMPLATE 1
+#define SRE_FLAG_IGNORECASE 2
+#define SRE_FLAG_LOCALE 4
+#define SRE_FLAG_MULTILINE 8
+#define SRE_FLAG_DOTALL 16
+#define SRE_FLAG_UNICODE 32
+#define SRE_FLAG_VERBOSE 64
+#define SRE_INFO_PREFIX 1
+#define SRE_INFO_LITERAL 2
+#define SRE_INFO_CHARSET 4