create account

馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos by eniolw

View this thread on steemit.com
· @eniolw ·
$15.72
馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos
<div class="text-center"><img src="https://i.postimg.cc/SsHj4PMY/rejectlist-banner.png"></div>

<h1>馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos</h1>

<div class="pull-right"><p><br><i>Por Enio...</i></p></div>
<div>鈦</div>
<p><br></p>

<div class="text-justify">

<p>En inform谩tica, la lista negra se refiere a una compilaci贸n de entidades que ser谩n discriminadas de participar en alg煤n proceso o servicio. Tales entidades usualmente consisten en direcciones de correo, nombres de usuario, contrase帽as, direcciones web (URLs), nombres de dominio, direcciones IP, etc. La idea es que el software que lee esta lista de alg煤n modo ignorar谩 o dar谩 trato diferente o limitado a tales entidades, y si el software es parte de los servicios ofrecidos por una empresa u organizaci贸n cualquiera, el significado se har谩 notorio en el alcance de ese servicio.</p>

<p>De hecho, en Internet las listas negras originalmente se inventaron y promovieron para registrar y filtrar aquellos computadores conectados a la red que generan correo no deseado o <i>spam</i>. Esto se logra generalmente filtrando desde nuestros servidores de correo a ciertas direcciones IP (ejemplo: <i>186.166.241.166</i>) o tambi茅n nombres de dominio (ejemplo: <i>https://www.cientoporcientospam.com</i>). Una de las compilaciones de listas m谩s conocidas es el <i>Domain Name System Blacklists (DNSBL's)</i> cuyos antecedentes datan de 1997.</p> 

<p>Al d铆a de hoy, ese sigue siendo el mejor ejemplo e instancia de la funcionalidad de lista negra, pero un caso m谩s corriente lo ser铆a una escuela o instituci贸n que, a trav茅s de su dependencia inform谩tica y de redes, limita el acceso a ciertas p谩ginas de pornograf铆a u otras desde los computadores conectados a su red. Otro ejemplo con el que quiz谩 estemos tambi茅n familiarizados es el de un famoso bot de Steem que hace su esfuerzo por detectar a quienes incurren en  plagio, <i>spam</i>, etc., a帽adi茅ndolos a su lista negra.</p>

<p>Como se ve, parece que la idea de la lista negra es razonable, pues desde un punto de vista t茅cnico y pr谩ctico busca proteger a un servicio contra contenidos no deseados, accesos no autorizados y pr谩cticas abusivas, lo que termina por convertir a sus generadores en fuentes no deseadas para quien implementa la lista. Esta puede interpretarse entonces como un mecanismo de arquitectura de seguridad de todo el sistema.</p>

<p>Sin embargo, la discusi贸n sobre la connotaci贸n positiva o negativa de las listas negras est谩 m谩s bien abierto, puesto que hablamos de una tecnolog铆a ambigua y que tiene muchas veces consecuencias m谩s all谩 de lo meramente t茅cnico, con repercusiones legales, sociales, de negocios, etc.</p>

<p>Algunas veces las razones de existencia de las listas negras son imposiciones de la ley, directivas del Estado o pol铆ticas empresariales. Han existido disputas legales sobre si estos mecanismos son causa de discriminaci贸n y abuso, tales como los bloqueos de p谩ginas web por parte del proveedor de Internet, y afectan la libre competencia de las empresas, como los filtros aplicados por los motores de b煤squeda a p谩ginas de descargas, etc. y en cierta medida, algo como el famoso caso de Google y Huawei por causa de una lista negra comercial.</p>

<p>Por otra parte, si lo pensamos un poco, tampoco deber铆amos pasar por alto que "negra" es un calificativo poco apropiado en t茅rminos de lenguaje y sociedad, pues, como pasa a menudo en nuestra vida social, se relaciona lo negro con lo malo o lo no deseado (驴racismo?).</p> 

<p>Curiosamente, el concepto y mecanismo de "lista blanca" tambi茅n existe y representa lo autorizado, lo deseado, justamente lo contrario a la lista negra, y ello pasa as铆 en muchos idiomas (por ejemplo, en ingl茅s: <i>blacklist</i> y <i>whitelist</i>). Especulo con que los psic贸logos anal铆ticos llamar铆an a nuestra obsesi贸n por asociar lo bueno con lo blanco una especie de "arquetipo". En todo caso, creo que deber铆amos usar el t茅rmino existente alternativo, es decir, hablar mejor de "lista de rechazo" (<i>rejectlist</i>) que de lista negra (<i>blacklist</i>). Es el t茅rmino que usar茅 a partir de ahora en este art铆culo.</p> 

<p>Sobre el art铆culo, precisamente, su car谩cter se tornar谩 ahora en adelante m谩s t茅cnico, puesto que su prop贸sito es explicar el desarrollo de una funcionalidad de lista de rechazo teniendo en perspectiva la ingenier铆a de software. La idea es crear una implementaci贸n para un caso de uso relacionado con esta funcionalidad, lo cual detallaremos en un ulterior art铆culo. De momento, en este primer post me enfocar茅 en preparar la capa de datos, es decir, crear una base de datos para la funcionalidad.</p>

<p>El ambiente tecnol贸gico que he delimitado comprende al lenguaje de programaci贸n <b>Javascript</b> (variando un poco mis anteriores entregas de programaci贸n con mi favorito <b>Python</b>) a trav茅s de <b>Node.js</b>, que es el entorno de ejecuci贸n de <b>Javascript</b> para el servidor y que actualmente se ha hecho bastante popular y demandado en el campo.</p> 

<p>Tambi茅n, para la implementaci贸n de la capa de datos  he escogido <b>MongoDB</b>, una de las mejores propuestas de las base de datos no relacionales, sino orientadas a documentos. La implementar茅 a trav茅s del m贸dulo <a href="https://www.npmjs.com/package/mongoose"><b>mongoose</b></a> de npm.</p> 

<p>En cuanto al dise帽o de esta soluci贸n, est谩 compuesta de los siguientes pasos:</p>

<h4>1. Especificaciones de la listas</h4>

<p>Para este ejercicio, las entidades que conformar谩n la lista de rechazo ser谩n nombres de usuarios. Se supone que la lista es para limitar el acceso de esos usuarios a los servicios de un sistema en particular.</p>

<h4>2. Obtenci贸n de la lista de usuarios iniciales</h4>

<p>Asumiremos que la base de datos no estar谩 vac铆a de antemano, sino que ser谩 creada con algunos registros o documentos previos. En ese sentido, utilizar茅 como referencia un conjunto de listas ya existentes con antelaci贸n y p煤blicamente disponibles en Internet en formato JSON. Para ello, utilizar茅 el m贸dulo <code>https </code> con el cual no quiero montar un completo servidor HTTP sino b谩sicamente usarlo para descargar el mencionado fichero. Dejemos que el <i>script</i> lo explique:</p>

<div class="text-center">
<img src="https://i.postimg.cc/HLkFTXpd/script1.png" alt="Snippet para descargar la lista en JSON">
<br><sup><b>猬嗭笍 Imagen 1:</b> <i>snippet</i> para descargar la lista en JSON <b>Autor:</b> @eniolw <b>Licencia:</b> <a href="https://creativecommons.org/licenses/by/2.0/deed.es">CC BY 2.0</a></sup></div>

<p>La fuente es un archivo JSON de las "listas blanca, negra y gris" de @SteemSTEM. Recientemente tuve el honor de colaborar con este proyecto en t茅rminos de programaci贸n, y estos ejemplares me parecen id贸neos. Para los conocedores del m贸dulo HTTP, sabemos que el m茅todo <code>get</code> har谩 la descarga del contenido de manera gradual en el evento <code>data</code> (l铆nea 12 y 13) y luego se parsea manualmente a formato JSON una vez completada la descarga (l铆nea 18).</p>

<h4>3. Creaci贸n de la base de datos y la colecci贸n</h4>

<p>A continuaci贸n, defino una la funci贸n <code>InsertarMiembros</code> que ser谩 llamada v铆a <i>callback</i> por el <i>script</i> anterior (l铆nea 21). En ella primeramente definir茅 un modelo para representar los documentos a almacenar en la colecci贸n:</p>

<div class="text-center">
<img src="https://i.postimg.cc/R0pyhhFf/script2-1.png" alt="Definiendo el esquema de la colecci贸n">
<br><sup><b>猬嗭笍 Imagen 2:</b> definiendo el esquema de la colecci贸n <b>Autor:</b> @eniolw <b>Licencia:</b> <a href="https://creativecommons.org/licenses/by/2.0/deed.es">CC BY 2.0</a></sup></div>

<p>Como se observa, se ha usado la clase <code>Schema</code> del m贸dulo <code>mongoose</code>, ideal para definir las especificaciones de la colecci贸n. En este caso, constar谩 con dos campos: 1) <code>username</code> de tipo <code>String</code> el cual contendr谩 el nombre de usuario, y 2) <code>lista</code>, tambi茅n <code>String</code>, que est谩 pensado para tener tres posibles valores: 鈥榖lacklist鈥, 鈥榳hitelist鈥 o 鈥榞reylist鈥. Ser铆a el tipo de lista en el que est茅 clasificado el usuario.</p>

<h4>4.  Inserci贸n de usuarios en la colecci贸n</h4>

<p>El resto de la funci贸n <code>InsertarMiembros</code> registra f铆sicamente los usuarios en la colecci贸n, creando de esa forma los documentos o registros:</p>

<div class="text-center">
<img src="https://i.postimg.cc/C1Ztq0B2/script3.png" alt="snippet para insertar los usuarios en la colecci贸n">
<img src="https://i.postimg.cc/Nj4Whpvd/script4.png" alt="snippet para insertar los usuarios en la colecci贸n">
<br><sup><b>猬嗭笍 Imagen 3:</b> snippet para insertar los usuarios en la colecci贸n <b>Autor:</b> @eniolw <b>Licencia:</b> <a href="https://creativecommons.org/licenses/by/2.0/deed.es">CC BY 2.0</a></sup></div>

<p>Definimos un arreglo <code>miembros</code> (l铆nea 44) que se llena con instancias de <code>ModeloMiembro</code>, creadas a partir de los datos contenidos en nuestro objeto JSON obtenido en pasos previos (nombre de usuario y tipo de lista a la que pertenece) (暮铆neas 61, 68, 75). Ese arreglo es insertado en la base de datos a trav茅s del m茅todo <code>insertMany</code> de Mongoose (l铆nea 81).</p>

<p>La ejecuci贸n de este <i>script</i> debe dejarnos una base de datos MongoDB con una colecci贸n que contiene los nombres de usuarios que ser谩n protagonistas de la funcionalidad de lista de rechazo por programar (ver imagen 4). No obstante, ser铆a interesante a modo de ejercicio completar el <i>script</i> con una rutina que valide los nombres de usuarios aqu铆 existente. En este caso es posible lograrlo, ya que se trata de usuarios de Steem, y esta <i>blockchain</i> posee una API p煤blica que nos permitir铆a comprobarlo. Lo dejar茅 de tarea para mis lectores programadores :)</p>

<p>Nos vemos en la pr贸xima entrega donde implementaremos una soluci贸n al caso de uso de esta lista de rechazo, completando la capa de datos y de l贸gica de negocios. Si tienes alguna duda o aporte, no dudes en comentarlo.</p>

<div class="text-center">
<img src="https://i.postimg.cc/7Yc53MWQ/ejecuci-n.png" alt="Salida del script">
<br><sup><b>猬嗭笍 Imagen 4:</b> salida del <i>script</i> confirmando la ejecuci贸n satisfactoria <b>Autor:</b> @eniolw <b>Licencia:</b> <a href="https://creativecommons.org/licenses/by/2.0/deed.es">CC BY 2.0</a></sup></div>

</div>

<hr>
<div class="text-justify">
<p><b>MATERIALES DE REFERENCIA</b></p>
<ul>
<li>驴Simplemente qu茅 es Node.js? por <a href="https://www.ibm.com/developerworks/ssa/opensource/library/os-nodejs/index.html">IBM</a></li>
<li>Documentaci贸n del m贸dulo <a href="https://www.npmjs.com/package/mongoose">mongoose</a></li>
<li>Verificador de <i>blacklist</i> seg煤n <a href="https://whatismyipaddress.com/blacklist-check">DNSBL</a></li>
</ul>
</div>
<hr>
<div class="text-justify"><p><em>Si est谩s interesado en m谩s temas sobre Ciencia, Tecnolog铆a, Ingenier铆a y Matem谩ticas (STEM, siglas en ingl茅s), consulta las etiquetas #STEM-Espanol y #SteemSTEM, donde puedes encontrar m谩s contenido de calidad y tambi茅n hacer tus aportes. Puedes unirte al <a href="https://discord.gg/bw6aH9W">servidor de Discord</a> de STEM-Espanol para participar a煤n m谩s en nuestra comunidad y consultar los reportes semanales publicados por @STEM-Espanol.</em></p></div>

<hr>
<div class="text-center"><img src="https://steemitimages.com/0x0/https://i.imgur.com/Mlgwrhf.jpg">
<br><sup><b>Cr茅ditos:</b> @IAmPhysical</sup></div>

<div class="text-center"><img src="https://i.postimg.cc/xCf7bHT4/logo-con-base1.png">
<br><sup><b>Cr茅ditos:</b> @Eniolw</sup></div>

<hr>
<div class="text-justify">
<p><br><b>NOTAS ACLARATORIAS</b></p>
<ul>
<li>La imagen de pie es de @CarlosERP-2000 y @IAmPhysical y es de dominio p煤blico.</li>
<li>A menos que haya sido indicado lo contrario, las im谩genes de esta publicaci贸n han sido elaboradas por el autor, lo que incluye la imagen de <i>banner</i>, creada con base en im谩genes de dominio p煤blico.</li>
</ul>
</div>
<div class="text-center"><img src="https://steemitimages.com/0x0/http://i.picasion.com/pic87/f6171e50de4ba9ae17c018b092dc3b1d.gif" alt="imagen de pie"></div>
馃憤  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 553 others
properties (23)
post_id77,753,992
authoreniolw
permlink-creaci-n-de-funcion-1562719268
categorysteemstem
json_metadata{"tags":["steemstem","stem-espanol","nodejs","javascript","software"],"app":"steemstem"}
created2019-07-10 00:41:09
last_update2019-07-10 00:41:09
depth0
children13
net_rshares43,393,211,436,683
last_payout2019-07-17 00:41:09
cashout_time1969-12-31 23:59:59
total_payout_value11.706 SBD
curator_payout_value4.010 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length12,157
author_reputation21,053,937,692,175
root_title"馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos"
beneficiaries
0.
accountsteemstem
weight500
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (617)
@belkisa758 ·
Una publicaci贸n necesaria para dar a conocer la importancia de estas listas con las que por cierto, tambi茅n me encuentro en desacuerdo con su nombre por su car谩cter discriminatorio. 

S铆, son necesarias estas lista dada su condici贸n de protecci贸n a los creadores de contenidos. Sin embargo, en algunos casos,  suelen ser destructivas.

Ning煤n caso donde se reconozca el plagio intencional deber铆a ser negociado, en ese sentido, la lista rechazo  estar谩 dise帽ada para bloquear toda acci贸n invasiva. Pero, 驴se podr铆a dar el caso de clasificar el tipo de plagio? 

Pudi茅semos decir **隆plagio es plagio!** y afirmar que la acci贸n no tiene nivel de discriminaci贸n, v谩lido. A煤n as铆 me surge la duda.

En el caso de steemit, incorporar a los usuarios radicalmente en una lista de rechazo sin avenencia no s茅 si sea la acci贸n correcta. A mi juicio deben darse se帽ales de alerta 1 o 2 veces como m谩ximo y desde all铆 verificar la intencionalidad el los usuarios. 

Felicitaciones por este trabajo que muestra transparencia en un proceso necesario por el bien de todos. Saludos.
properties (22)
post_id77,755,931
authorbelkisa758
permlinkpuekua
categorysteemstem
json_metadata{"tags":["steemstem"],"app":"steemit\/0.1"}
created2019-07-10 01:47:03
last_update2019-07-10 01:47:03
depth1
children2
net_rshares0
last_payout2019-07-17 01:47:03
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length1,067
author_reputation9,898,184,747,299
root_title"馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@eniolw ·
9j6znrj30
S铆, hay personas que cometen plagio insconscientemente, pero deber铆an tener un poco de sentido com煤n. 

Por otra parte, en el caso del bot Cheetah, seg煤n sus creadores, este "vota los posts como se帽al de buena voluntad". Si no ha sido un error del bot que haya se帽alado al usuario de usar contenidos ya existentes en la red, el usuario debe entender la se帽a y evitar ser se帽alado en el futuro. Por el contrario, si la ignora y sigue incurriendo en la falta y recibiendo el comentario de Cheetah, eventualmente ser谩 denunciado e incluido en su lista negra.

Gracias por tu valoraci贸n!
properties (22)
post_id77,785,300
authoreniolw
permlink9j6znrj30
categorysteemstem
json_metadata{"tags":"steemstem","app":"steemstem"}
created2019-07-10 18:16:30
last_update2019-07-10 18:16:30
depth2
children1
net_rshares0
last_payout2019-07-17 18:16:30
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length583
author_reputation21,053,937,692,175
root_title"馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@belkisa758 ·
A esto me refiero, creo que ese trabajo de Cheetah es importante porque obviamente te alerta y eso como dices, si se hace caso omiso pues ya no hay forma de quejarse. Yo igual defiendo el derecho de autor, es un tema sin discusi贸n. 脡xitos en tu proyecto.
properties (22)
post_id77,786,823
authorbelkisa758
permlinkpufxtp
categorysteemstem
json_metadata{"tags":["steemstem"],"app":"steemit\/0.1"}
created2019-07-10 19:25:00
last_update2019-07-10 19:25:00
depth3
children0
net_rshares0
last_payout2019-07-17 19:25:00
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length254
author_reputation9,898,184,747,299
root_title"馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@slwzl ·
Super interesante la creaci贸n de la Base se Datos, estar茅 atenta aunque confieso que debo fortalecer el 谩rea con estos entornos. En cuanto a la existencia de estas listas he notado que son usadas hasta como forma de imponer un poder y en manos equivocadas a veces pueden ser destructivas al ser tomadas de forma personal. Totalmente de acuerdo en el t茅rmino racista. 
_Es bueno aprender._ Gracias

Posted using [Partiko Android](https://partiko.app/referral/slwzl)
properties (22)
post_id77,758,377
authorslwzl
permlinkslwzl-re-eniolw--creaci-n-de-funcion-1562719268-20190710t030220470z
categorysteemstem
json_metadata{"app":"partiko","client":"android"}
created2019-07-10 03:02:21
last_update2019-07-10 03:02:21
depth1
children1
net_rshares0
last_payout2019-07-17 03:02:21
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length464
author_reputation5,481,367,101,558
root_title"馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@eniolw ·
2vm9w27iy
Me alegra le haya gustado. Gracias por la visita!
properties (22)
post_id77,784,858
authoreniolw
permlink2vm9w27iy
categorysteemstem
json_metadata{"tags":"steemstem","app":"steemstem"}
created2019-07-10 18:00:45
last_update2019-07-10 18:00:45
depth2
children0
net_rshares0
last_payout2019-07-17 18:00:45
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length49
author_reputation21,053,937,692,175
root_title"馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@felixrodriguez ·
Excelente publicaci贸n, saludos @eniolw
properties (22)
post_id77,796,836
authorfelixrodriguez
permlinkpufrmh
categorysteemstem
json_metadata{"tags":["steemstem"],"users":["eniolw"],"app":"steemit\/0.1"}
created2019-07-11 01:55:15
last_update2019-07-11 01:55:15
depth1
children1
net_rshares0
last_payout2019-07-18 01:55:15
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length38
author_reputation14,603,079,328,664
root_title"馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@eniolw ·
Muchas gracias, estimado!
properties (22)
post_id77,866,935
authoreniolw
permlinkpujhmn
categorysteemstem
json_metadata{"tags":["steemstem"],"app":"steemit\/0.1"}
created2019-07-12 17:23:12
last_update2019-07-12 17:23:12
depth2
children0
net_rshares0
last_payout2019-07-19 17:23:12
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length25
author_reputation21,053,937,692,175
root_title"馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@steemstem ·
re-eniolw--creaci-n-de-funcion-1562719268-20190712t021420971z
<div class='text-justify'> <div class='pull-left'> <center> <br /> <img width='200' src='https://res.cloudinary.com/drrz8xekm/image/upload/v1553698283/weenlqbrqvvczjy6dayw.jpg'> </center>  <br/> <br /> </div>

This post has been voted on by the **SteemSTEM** curation team and voting trail. It is elligible for support from <b><a href='https://www.steemstem.io/#!/@curie'>@curie</a></b> and <b><a href='https://www.steemstem.io/#!/@utopian-io'>@utopian-io</a></b>.<br /> 

If you appreciate the work we are doing, then consider supporting our witness [**stem.witness**](https://steemconnect.com/sign/account_witness_vote?approve=1&witness=stem.witness). Additional witness support to the [**curie witness**](https://steemconnect.com/sign/account_witness_vote?approve=1&witness=curie) and [**utopian-io witness**](https://steemconnect.com/sign/account_witness_vote?approve=1&witness=utopian-io) would be appreciated as well.<br /> 

For additional information please join us on the [**SteemSTEM discord**]( https://discord.gg/BPARaqn) and to get to know the rest of the community!<br />

Thanks for having added <b><a href='https://www.steemstem.io/#!/@steemstem'>@steemstem</a></b> as a beneficiary to your post. This granted you a stronger support from SteemSTEM.<br />

Thanks for having used the <b><a href='https://www.steemstem.io'>steemstem.io</a></b> app. You got a stronger support!</div>
properties (22)
post_id77,836,176
authorsteemstem
permlinkre-eniolw--creaci-n-de-funcion-1562719268-20190712t021420971z
categorysteemstem
json_metadata{"app":"bloguable-bot"}
created2019-07-12 02:14:24
last_update2019-07-12 02:14:24
depth1
children1
net_rshares0
last_payout2019-07-19 02:14:24
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length1,396
author_reputation188,124,103,984,912
root_title"馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@eniolw ·
Thanks!
properties (22)
post_id77,867,060
authoreniolw
permlinkpujhsb
categorysteemstem
json_metadata{"tags":["steemstem"],"app":"steemit\/0.1"}
created2019-07-12 17:26:36
last_update2019-07-12 17:26:36
depth2
children0
net_rshares0
last_payout2019-07-19 17:26:36
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length7
author_reputation21,053,937,692,175
root_title"馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@utopian-io ·
#### Hi @eniolw!

Your post was upvoted by Utopian.io in cooperation with @steemstem - supporting knowledge, innovation and technological advancement on the Steem Blockchain.

#### Contribute to Open Source with utopian.io
Learn how to contribute on <a href='https://join.utopian.io'>our website</a> and join the new open source economy.

**Want to chat? Join the Utopian Community on Discord https://discord.gg/h52nFrV**
properties (22)
post_id77,865,368
authorutopian-io
permlinkre--creaci-n-de-funcion-1562719268-20190712t163826z
categorysteemstem
json_metadata{"app":"beem\/0.20.17"}
created2019-07-12 16:38:27
last_update2019-07-12 16:38:27
depth1
children1
net_rshares0
last_payout2019-07-19 16:38:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length421
author_reputation152,913,012,544,965
root_title"馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@eniolw ·
Awesome!
properties (22)
post_id77,867,055
authoreniolw
permlinkpujhs3
categorysteemstem
json_metadata{"tags":["steemstem"],"app":"steemit\/0.1"}
created2019-07-12 17:26:27
last_update2019-07-12 17:26:27
depth2
children0
net_rshares0
last_payout2019-07-19 17:26:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length8
author_reputation21,053,937,692,175
root_title"馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@ubaldonet ·
$0.09
i2qjo4ew6
Blacklist y whitelist son de uso amplio y pueden ser convenientes seg煤n el entorno, as铆 como en la plataforma Steemit se habla mucho de una blacklist para marcar cuentas en especifico, muchas veces en sistemas de comunicaci贸n el proceso es inverso y se usan whitelist, donde se rechaza a todo aquel que no este en la lista. Proceso que en sistemas empresariales se consideran muchas veces m谩s efectivos cuando son por ejemplo direcciones IP las que se bloquean o permiten y se desea reducir el abanico de posibilidades de conexi贸n a un n煤mero limitado y evitar dejar filtraciones al reducir al m铆nimo el n煤mero de posibles conexiones. Las listas son un tema que a煤n cuando viene us谩ndose desde hace mucho tiempo siguen siendo de gran efectividad. Espero por la segunda parte.
馃憤  , , ,
properties (23)
post_id77,989,422
authorubaldonet
permlinki2qjo4ew6
categorysteemstem
json_metadata{"tags":"steemstem","app":"steemstem"}
created2019-07-16 02:41:06
last_update2019-07-16 02:41:06
depth1
children1
net_rshares254,387,699,776
last_payout2019-07-23 02:41:06
cashout_time1969-12-31 23:59:59
total_payout_value0.069 SBD
curator_payout_value0.023 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length775
author_reputation9,120,108,393,559
root_title"馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (4)
@eniolw ·
Buen aporte. Gracias por comentar.
properties (22)
post_id78,134,032
authoreniolw
permlinkpux2h1
categorysteemstem
json_metadata{"tags":["steemstem"],"app":"steemit\/0.1"}
created2019-07-20 01:22:12
last_update2019-07-20 01:22:12
depth2
children0
net_rshares0
last_payout2019-07-27 01:22:12
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length34
author_reputation21,053,937,692,175
root_title"馃摑馃捇 Creaci贸n de funcionalidad de rejectlist como ejercicio de programaci贸n - Parte I: capa de datos"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000