Skip to content

pyladies/pyladies-madrid-website

Repository files navigation

<!DOCTYPE html>

<html>

<head>
    
    <title>PyLadies Madrid &ndash;
        Capitulo de PyLadies Global</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
    <link rel="stylesheet" href="/assets/css/pygments.css" media="screen" title="screen" />
    <link rel="stylesheet" href="/assets/css/screen.css" media="screen" title="screen" />
    <link rel="stylesheet" href="/assets/css/mailchimp.css" media="screen" title="screen" />
    <link
        href='https://fonts.googleapis.com/css?family=Glegoo|Bitter|Droid+Serif:400,700,400italic,700italic|Raleway:400,200,300,500,600,700'
        rel='stylesheet' type='text/css' />
    <link rel="shortcut icon" href="/assets/images/favicon.ico" type="image/ico" />
    <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="/feed.xml" />
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
    <script>if (window.location.protocol != "https:" && window.location.host.indexOf('pyladies.com') > -1) {
            window.location.protocol = "https";
        }</script>
    
    <script src="https://platform.twitter.com/widgets.js" type="text/javascript"></script>
    <script type="text/javascript" src="/assets/js/meetup_widget.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            var meetupIds = [23053985];
            var timepadPages = [];
            PyladiesMeetupWidget.addUpcomingMeetups(meetupIds, timepadPages);
        });
    </script>
    
    
    
</head>

<body>
    <a href="https://github.com/pyladiesmadrid" class="github-corner"><svg width="80" height="80"
            viewBox="0 0 250 250"
            style="fill:rgb(153, 4, 51); color:#fff; position: absolute; top: 0; border: 0; left: 0; transform: scale(-1, 1);">
            <path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
            <path
                d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
                fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path>
            <path
                d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z"
                fill="currentColor" class="octo-body"></path>
        </svg></a>
    <style>
        .github-corner:hover .octo-arm {
            animation: octocat-wave 560ms ease-in-out
        }

        @keyframes octocat-wave {

            0%,
            100% {
                transform: rotate(0)
            }

            20%,
            60% {
                transform: rotate(-25deg)
            }

            40%,
            80% {
                transform: rotate(10deg)
            }
        }

        @media (max-width:500px) {
            .github-corner:hover .octo-arm {
                animation: none
            }

            .github-corner .octo-arm {
                animation: octocat-wave 560ms ease-in-out
            }
        }
    </style>
    <div class="header">
        <div id="pyladies_header_logo">
            <a href="/"><img src="/assets/images/pyladiesmadrid_logo.png" width="260" height="260"
                    alt="PyLadies Logo" /></a>
        </div>
        <nav>
            <ul class="nav-wrapper">
                <li><a href="/">Portada</a></li>
                <li><a href="/aboutus/">Sobre nosotras</a></li>
                <!--<li><a href="/blog/">Blog</a></li>-->
                <li><a href="/resources/">Recursos</a></li>
                <li><a href="/coc/">Código de conducta</a></li>
            </ul>
        </nav>
    </div>
    <div class="page">
        

    <section id="archive">
        <article>
            <h2></h2>
            
            <h3>Thursday, September 10, 2020</h3>

            <div>
                <a href="https://twitter.com/share" class="twitter-share-button" data-hashtags="pyladies">Tweet</a>
                <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
            </div>

            <h1>PyLadies Madrid</h1>
<p>Este sitio web está gestionado por la organizadoras de PyLadies Madrid. </p>

<p>Este repo está abierto a pull requests de cualquier miembro de la comunidad.</p>
<h2>Resumen</h2>
<p>Este es el código de la web <a href="https://pyladiesmadrid.netlify.app/">https://pyladiesmadrid.netlify.app/</a>. En ella hemos 
utilizado <code>mynt</code> para la generación del sitio estático, y está basado en 
🐍 Python 3.6 🐍!</p>
<h3>Organización del contenido del repo</h3>
<p>En este apartado se ofrece una vista general de la organización de los ficheros 
de este repositorio.</p>

<p>En general se utiliza la estructura de ficheros generada por <code>mynt</code>, la cual se 
explica en su documentación <a href="https://mynt.uhnomoli.com/docs/quickstart/">aquí</a></p>

<p>Además, el fichero <code>requirements.txt</code> contiene las dependencias del proyecto, y
los ficheros <code>runtime.txt</code> y <code>netlify.toml</code> sirven para facilitar la configuración
de su despliegue en <a href="https://www.netlify.com/">netlify</a></p>
<h3>Configurando el entorno de desarrollo</h3><h4>Configuración de Python y de la carpeta del proyecto</h4>
<p><strong>Linux, macOS</strong></p>

<ol>
<li><p>Comprueba que Python 3.6 está instalado introduciendo <code>python --version</code> en una terminal. 
Si no lo está, puedes descargarlo en la web <a href="https://www.python.org/downloads/release/python-3610/">https://python.org</a>:
<code>bash
$ python --version
Python 3.7.7
</code></p></li>
<li><p>(Opcional) Puedes comprobar la ruta donde está instalado Python usando <code>which python</code>:
<code>bash
$ which python
/usr/local/bin/python
</code>
Si te aparece un directorio distinto no te preocupes, puede ser normal.</p></li>
<li><p>Crea una carpeta para el proyecto usando <code>mkdir pyladiesmadrid</code>:
<code>bash
$ mkdir pyladiesmadrid
</code></p></li>
<li><p>Posiciónate en ese directorio con <code>cd pyladiesmadrid</code>:
&ldquo;`bash
$ cd pyladiesmadrid</p>
<h1>Comprueba en qué directorio estás (<code>&lt;YOUR_PATH&gt;</code> puede ser distinto en</h1><h1>cada sistema.)</h1>
<p>$ pwd
YOUR_PATH/pyladiesmadrid
&rdquo;`</p></li>
</ol>

<p>¡Estupendo, ya lo tienes!</p>

<p><strong>Windows</strong></p>

<p>El proceso es similar al de Linux/mac-OS, pero con algunos comandos distintos.
Es útil tener como referencia la <a href="https://devblogs.microsoft.com/scripting/table-of-basic-powershell-commands/">Tabla de comandos básicos de Powershell</a>.</p>
<h3>Create and activate a virtual environment</h3>
<ol>
<li><p>En el directorio <code>pyladiesmadrid</code>, instala el paquete <code>virtualenv</code> usando <code>pip</code>:</p>
<div class="code"><div><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span>$ pip install virtualenv
</pre></div>
</td></tr></table></div></div></li>
<li><p>Create nuevo entorno virtual llamado, por ejemplo <code>venv</code>:</p>
<div class="code"><div><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span>$ virtualenv venv
</pre></div>
</td></tr></table></div></div></li>
<li><p>Activa el entorno virtual:</p>
<div class="code"><div><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3</pre></div></td><td class="code"><div class="highlight"><pre><span></span>$ <span class="nb">source</span> venv/bin/activate

<span class="o">(</span>venv<span class="o">)</span>$
</pre></div>
</td></tr></table></div></div>
<p>Tras activar el entorno, debes observar <code>(venv)</code> en cada línea nueva de tu consola.</p></li>
</ol>

<p><strong>Nota de error (<code>AttributeError: &#39;module&#39; object has no attribute &#39;X509_up_ref&#39;</code>):</strong> El error proviene de PyOpenSSL. 
Puede deberse a que tu versión de OpenSSL es demasiado antigua o demasiado nueva. Prueba aumentando o disminuyendo 
la versión de OpenSSL and PyOpenSSL instalada en tu entorno.</p>
<h3>Bifurca (fork) y clona (clone) el repositorio de PyLadies Madrid</h3>
<ol>
<li>En GitHub, haz <code>fork</code> de <a href="http://github.com/pyladiesmadrid/pyladiesmadrid">http://github.com/pyladiesmadrid/pyladiesmadrid</a> en tu cuenta de Github 
<code>&lt;YOUR_GITHUB_USER_NAME&gt;</code> pressionando el botón de Fork en la esquina superior derecha de la pantalla.</li>
<li><p>En tu directorio local <code>pyladiesmadrid</code>, clona el repositorio del que acabas de hacer el fork usando
<code>git clone</code>:</p>
<div class="code"><div><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3
4
5
6
7
8</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="o">(</span>venv<span class="o">)</span> $ git clone https://github.com/&lt;YOUR_GITHUB_USER_NAME&gt;/pyladiesmadrid.git
Cloning into <span class="s1">&#39;pyladiesmadrid&#39;</span>...
remote: Enumerating objects: <span class="m">47</span>, <span class="k">done</span>.
remote: Counting objects: <span class="m">100</span>% <span class="o">(</span><span class="m">47</span>/47<span class="o">)</span>, <span class="k">done</span>.
remote: Compressing objects: <span class="m">100</span>% <span class="o">(</span><span class="m">29</span>/29<span class="o">)</span>, <span class="k">done</span>.
remote: Total <span class="m">5877</span> <span class="o">(</span>delta <span class="m">22</span><span class="o">)</span>, reused <span class="m">38</span> <span class="o">(</span>delta <span class="m">16</span><span class="o">)</span>, pack-reused <span class="m">5830</span>
Receiving objects: <span class="m">100</span>% <span class="o">(</span><span class="m">5877</span>/5877<span class="o">)</span>, <span class="m">39</span>.73 MiB <span class="p">|</span> <span class="m">3</span>.62 MiB/s, <span class="k">done</span>.
Resolving deltas: <span class="m">100</span>% <span class="o">(</span><span class="m">2922</span>/2922<span class="o">)</span>, <span class="k">done</span>.
</pre></div>
</td></tr></table></div></div>
<p>Has clonado con éxito el repo de pyladiesmadrid. 😄</p></li>
</ol>
<h2>Ejecutando el site en tu entorno local</h2>
<p><strong>Nota de error</strong> en algunos sistemas operativos, asegúrate de tener las cabeceras para python y libevent
instaladas (p.e., en Ubuntu, <strong>python-dev</strong> y <strong>libevent-dev</strong>). Los paquetes especificados en el fichero
<code>requirements.txt</code> son necesarios para que la web se construya con éxito en mynt.</p>

<ol>
<li>Asegúrate de estar en el raíz del repo con el entorno virtual activado:
<code>bash
(venv) $ pwd
YOUR_PATH/pyladiesmadrid
</code></li>
<li><p>Instala las dependencias con <code>pip</code>:
&ldquo;`bash
(venv) $ pip install -r requirements.txt</p>
<h1>Verás cómo se van instalando las distintas librerías en tu entorno</h1><h1>No pasa nada si alguna de las versiones es ligeramente distinta a la de este log</h1>
<p>Successfully built hoep MarkupSafe mynt pathtools pycparser PyYAML watchdog
Installing collected packages: argh, asn1crypto, six, pycparser, cffi, bcrypt, idna, enum34, ipaddress, cryptography, docutils, pyasn1, PyNaCl, paramiko, Fabric, hoep, MarkupSafe, Jinja2, Pygments, PyYAML, pathtools, watchdog, mynt
Successfully installed Fabric-1.13.1 Jinja2-2.9.6 MarkupSafe-1.0 PyNaCl-1.1.2 PyYAML-3.12 Pygments-2.2.0 argh-0.26.2 asn1crypto-0.22.0 bcrypt-3.1.3 cffi-1.10.0 cryptography-2.0.3 docutils-0.14 enum34-1.1.6 hoep-1.0.2 idna-2.6 ipaddress-1.0.18 mynt-0.3.1 paramiko-2.2.1 pathtools-0.1.2 pyasn1-0.3.2 pycparser-2.18 six-1.10.0 watchdog-0.8.3
&rdquo;`</p></li>
<li><p>Usa mynt para generar y publicar el sitio web en tu entorno local con 
<code>mynt gen -f _site &amp;&amp; mynt serve _site</code>:
&ldquo;`bash
(venv) $ mynt gen -f _site &amp;&amp; mynt serve _site</p>

<blockquote>
<blockquote>
<p>Parsing
Rendering
Generating
Completed in 1.114s
Serving at 127.0.0.1:8080
Press ctrl+c to stop.
&rdquo;`</p>
</blockquote>
</blockquote></li>
<li><p>Copia la IP que te indica <code>mynt</code> cuando termina de construir el sitio.
En el log verás algo como <code>&gt;&gt; Serving at 127.0.0.1:8080</code>. Después pega la IP
en la barra de tu navegador para comprobar que el sitio está correctamente desplegado.</p></li>
</ol>

<p><strong>Enhorabuena, ya tienes la web corriendo en tu ordenador</strong> 🎉 🐍</p>

<ol>
<li>(Opcional: A tener en cuenta con cada cambio que realices en el código) 
Para visualizar los cambios que realices en el código tienes que regenerar la
web de nuevo. Para ello, pulsa las teclas <code>crtl</code> + <code>c</code> en la terminal para para
el servidor que se esté ejecutando, ejecuta el comando del paso 3 y a continuación
vuelve a refrescar la ventana del navegador web.</li>
</ol>

        </article>
    </section>


    </div>

    <div class="sidebar">
        

        <div id="sponsor_us_btn" style="display:flex;justify-content:center;align-items:center;font-size:14px;"><a
                href="/sponsor/">Contacta</a></div>
        <!--<div id="shirts_btn" style="display:flex;justify-content:center;align-items:center;font-size:14px;"><a
                href="https://pyladies.spreadshirt.com/">Swag</a></div>-->

        <h3>Próximos Meetups</h3>
        <div id="upcomingMeetupsList">
        </div>

        <div id="twitter_feed">
            <h3>Tweets</h3>
            <div id="chapter_tweets">
                <a width="400" height="400" class="twitter-timeline" href="https://twitter.com/pyladiesmadrid"
                    data-widget-id="635861904234258433">Tweets from https://twitter.com/pyladiesmadrids</a>
                <script>!function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https'; if (!d.getElementById(id)) { js = d.createElement(s); js.id = id; js.src = p + "://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs); } }(document, "script", "twitter-wjs");</script>
            </div>
        </div>
        
    </div>

    <div class="footer-wrapper">
        <footer id="bottom">
            
            <ul class="social">
                <!--<li><a class="icon github" data-icon="&#62208;" href="https://github.com/pyladiesmadrid"
                        title="GitHub"></a></li>
                <li><a class="icon creative-commons" data-icon="&#128325;"
                        href="http://creativecommons.org/licenses/by-sa/3.0/" title="Creative Commons"></a></li> -->
                <ul class="footer-netlify">
                    <li><a href="https://www.netlify.com"><img src="/assets/images/netlify_logo.svg"
                                alt="Deploys by Netlify" /></a>
                    <li>
                </ul>
                <ul class="footer-notice">
                    <li>2020 - 2020 PyLadies Madrid - todos los derechos reservados. Gracias a <a href="https://twitter.com/jameshedaweng">James Heda Wen</a> por la identidad visual de PyLadies Madrid</li>
                    <li>Disclaimer - PyLadies y el logotipo de PyLadies son marcas registradas de la Python Software Foundation
                    </li>
                </ul>
            </ul>
            
        </footer>
    </div>

    <script type="text/javascript">

        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'UA-36930002-1']);
        _gaq.push(['_trackPageview']);

        (function () {
            var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
        })();

    </script>

</body>

</html>