Update posts metadata to new format
jump to
@@ -1,10 +1,8 @@
-```meta -created: 2016-03-04 -updated: 2018-01-31 -``` - -Blog de Lonami -============== ++++ +title = "Blog de Lonami" +date = 2016-03-04 +updated = 2018-01-31 ++++ Hola | Hi.@@ -21,4 +19,4 @@
Welcome to the blog ------------------- -Welcome to the best (or not) blog in the entire world. On this blog I will occasionally post new entries which I find interesting. +Welcome to the best (or not) blog in the entire world. On this blog I will occasionally post new entries which I find interesting.
@@ -1,10 +1,8 @@
-```meta -created: 2018-06-13 -updated: 2020-10-03 -``` - -An Introduction to Asyncio -========================== ++++ +title = "An Introduction to Asyncio" +date = 2018-06-13 +updated = 2020-10-03 ++++ Index -----@@ -437,4 +435,4 @@
Extra Material -------------- -If you want to understand how `asyncio` works under the hood, I recommend you to watch this hour-long talk [Get to grips with asyncio in Python 3](https://youtu.be/M-UcUs7IMIM) by Robert Smallshire. In the video, they will explain the differences between concurrency and parallelism, along with others concepts, and how to implement your own `asyncio` "scheduler" from scratch. +If you want to understand how `asyncio` works under the hood, I recommend you to watch this hour-long talk [Get to grips with asyncio in Python 3](https://youtu.be/M-UcUs7IMIM) by Robert Smallshire. In the video, they will explain the differences between concurrency and parallelism, along with others concepts, and how to implement your own `asyncio` "scheduler" from scratch.
@@ -1,9 +1,7 @@
-```meta -created: 2019-01-12 -``` - -Breaking Risk of Rain -===================== ++++ +title = "Breaking Risk of Rain" +date = 2019-01-12 ++++ [Risk of Rain](https://riskofraingame.com/) is a fun little game you can spend a lot of hours on. It's incredibly challenging for new players, and fun once you have learnt the basics. This blog will go through what I've learnt and how to play the game correctly.@@ -81,4 +79,4 @@
Closing Words ------------- -You can now beat the game in Monsoon solo with any character. Have fun! And be careful with the sadly common crashes. +You can now beat the game in Monsoon solo with any character. Have fun! And be careful with the sadly common crashes.
@@ -1,9 +1,7 @@
-```meta -created: 2019-06-19 -``` - -Python ctypes and Windows -========================= ++++ +title = "Python ctypes and Windows" +date = 2019-06-19 ++++ [Python](https://www.python.org/)'s [`ctypes`](https://docs.python.org/3/library/ctypes.html) is quite a nice library to easily load and invoke C methods available in already-compiled [`.dll` files](https://en.wikipedia.org/wiki/Dynamic-link_library) without any additional dependencies. And I *love* depending on as little as possible.@@ -373,4 +371,4 @@ If you see a function definition like `Function(void)`, that's C's way of saying it takes no parameters, so just call it as `Function()`.
Make sure to pass all parameters, even if they seem optional they probably still want a `NULL` at least, and of course, read the documentation well. Some methods have certain pre-conditions. -Have fun hacking! +Have fun hacking!
@@ -1,10 +1,8 @@
-```meta -created: 2016-06-21 -updated: 2016-06-21 -``` - -Apuntes de bachillerato de Filosofía -==================================== ++++ +title = "Apuntes de bachillerato de Filosofía" +date = 2016-06-21 +updated = 2016-06-21 ++++ Hay asignaturas que merecen la pena, y una de ellas es la filosofía. De verdad. Aprendes un montón de cosas y abres tu mente, comparas muchos puntos de vista y te das cuenta de grandes cosas. Por eso, quiero compartir mis apuntes con todo aquel interesado.@@ -19,4 +17,4 @@ * [Filosofía - Primer trimestre](filo_trimestre1.odt)
* [Filosofía - Segundo trimestre](filo_trimestre2.odt) * [Filosofía - Tercer trimestre](filo_trimestre3.odt) -Nota: Hay algunas palabras un tanto soez. ¡Añaden emoción y no son para tanto, a lo sumo dos o tres! :) +Nota: Hay algunas palabras un tanto soez. ¡Añaden emoción y no son para tanto, a lo sumo dos o tres! :)
@@ -1,14 +1,12 @@
-```meta -created: 2017-06-02 -updated: 2017-06-02 -``` ++++ +title = "Graphs" +date = 2017-06-02 +updated = 2017-06-02 ++++ <script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML' async></script> <noscript>There are a few things which won't render unless you enable JavaScript. No tracking, I promise!</noscript> - -Graphs -====== > Don't know English? [Read the Spanish version instead](spanish.html).@@ -20,7 +18,7 @@ s_1 & & V & & & \\
s_2 & V & & & & V \\ s_3 & & & & V & \\ s_4 & & V & V & & \\ - s_5 & V & & & V & + s_5 & V & & & V & \end{bmatrix}\) <p>This is known as a <i>"table of direct interconnections"</i>.</p>@@ -131,7 +129,7 @@ 1 & 2 & 1 & & \\
& & & & \\ & & & & \\ & & & & \\ - & & & & + & & & & \end{bmatrix}\) <p>We don't need to calculate anymore. We now know that the graph is@@ -175,4 +173,4 @@ </td></tr></table>
<script src="tinyparser.js"></script> <script src="enhancements.js"></script> -<script src="graphs.js"></script> +<script src="graphs.js"></script>
@@ -1,10 +1,8 @@
-```meta -created: 2017-05-13 -updated: 2019-02-16 -``` - -Installing NixOS -================ ++++ +title = "Installing NixOS" +date = 2017-05-13 +updated = 2019-02-16 ++++ Update ------@@ -67,4 +65,4 @@ |`|[| |
|+|]| | |¡|=| | |-|/| | -|ñ|;| | +|ñ|;| |
@@ -1,10 +1,8 @@
-```meta -created: 2019-02-15 -updated: 2019-02-16 -``` - -Installing NixOS, Take 2 -======================== ++++ +title = "Installing NixOS, Take 2" +date = 2019-02-15 +updated = 2019-02-16 ++++ This is my second take at installing NixOS, after a while being frustrated with Arch Linux and the fact that a few kernel upgrades ago, the system crashed randomly from time to time. `journalctl` did not have any helpful hints and I thought reinstalling could be worthwhile anyway.@@ -139,4 +137,4 @@ Regarding terminal issues with `nvim` printing the literal escape character, I was told off for not having checked what my `$TERM` was. I hadn't really looked into it much myself, just complained about it here, so sorry for being annoying about that. A quick search in the `nixpkgs` repository lets us find [neovim/default.nix](https://github.com/NixOS/nixpkgs/blob/release-18.09/pkgs/applications/editors/neovim/default.nix), with version 0.3.1. Looking at [Neovim's main repository](https://github.com/neovim/neovim) we can see that this is a bit outdated, but that is fine.
If only I had bothered to look at [Neovim's wiki](https://github.com/neovim/neovim/wiki/FAQ#nvim-shows-weird-symbols-2-q-when-changing-modes), (which they found through [Neovim's GitHub issues](https://github.com/neovim/neovim/issues/7749)) I would've seen that some terminals just don't support the program properly. The solution is, of course, to use a different terminal emulator with better support or to disable the `guicursor` in Neovim's config. -This is a pretty good life lesson. 30 seconds of searching, maybe two minutes and a half for also checking XFCE issues, are often more than enough to troubleshoot your issues. The internet is a big place and more people have surely came across the problem before, so make sure to look online first. In my defense I'll say that it didn't bother me so much so I didn't bother looking for that soon either. +This is a pretty good life lesson. 30 seconds of searching, maybe two minutes and a half for also checking XFCE issues, are often more than enough to troubleshoot your issues. The internet is a big place and more people have surely came across the problem before, so make sure to look online first. In my defense I'll say that it didn't bother me so much so I didn't bother looking for that soon either.
@@ -1,10 +1,8 @@
-```meta -created: 2016-02-24 -updated: 2016-03-05 -``` - -Inteligencia artificial -======================= ++++ +title = "Inteligencia artificial" +date = 2016-02-24 +updated = 2016-03-05 ++++ Índice ------@@ -140,4 +138,4 @@ Fuentes
------- * [Evolución de la inteligencia artificial - Wait but why](http://waitbutwhy.com/2015/01/artificial-intelligence-revolution-1) -* [*Machine learning* - Wikipedia](https://en.wikipedia.org/wiki/Machine_learning) +* [*Machine learning* - Wikipedia](https://en.wikipedia.org/wiki/Machine_learning)
@@ -1,8 +1,7 @@
-```meta -created: 2020-08-24 -``` - -# Making a Difference ++++ +title = "Making a Difference" +date = 2020-08-24 ++++ When I've thought about what "making a difference" means, I've always seen it as having to do something at very large scales. Something that changes everyone's lives. But I've realized that it doesn't need the case.@@ -22,4 +21,4 @@ I'm thinking about all the people who I've met online and have had overall a healthy relation, sharing interesting things between each other, playtime, thoughts, and other various lessons.
What I'm trying to get across is that you may be more impactful than you think you really are. And even if people don't say it, some are extremely thankful of your interactions with them. You can see this post as a sort of a "call for action" to be more thankful to the people that have affected you in important ways. If people take things for granted because they Just Work, the person who made those things should be proud of this achievement. -Thanks to all of them, to everyone who has shared good moments with me, and to all the people who enjoy the things I make. +Thanks to all of them, to everyone who has shared good moments with me, and to all the people who enjoy the things I make.
@@ -1,8 +1,8 @@
-```meta -title: A practical example with Hadoop -published: 2020-03-30T01:00:00+00:00 -updated: 2020-04-18T13:25:43+00:00 -``` ++++ +title = "A practical example with Hadoop" +date = 2020-03-30T01:00:00+00:00 +updated = 2020-04-18T13:25:43+00:00 ++++ In our [previous Hadoop post](/blog/mdad/introduction-to-hadoop-and-its-mapreduce/), we learnt what it is, how it originated, and how it works, from a theoretical standpoint. Here we will instead focus on a more practical example with Hadoop.@@ -155,9 +155,9 @@
``` $ ls results part-r-00000 _SUCCESS -$ cat results/part-r-00000 +$ cat results/part-r-00000 1901 317 1902 244 ``` -It worked! Now this example was obviously tiny, but hopefully enough to demonstrate how to get the basics running on real world data. +It worked! Now this example was obviously tiny, but hopefully enough to demonstrate how to get the basics running on real world data.
@@ -1,8 +1,8 @@
-```meta -title: Big Data -published: 2020-02-25T01:00:30+00:00 -updated: 2020-03-18T09:51:17+00:00 -``` ++++ +title = "Big Data" +date = 2020-02-25T01:00:30+00:00 +updated = 2020-03-18T09:51:17+00:00 ++++ Big Data sounds like a buzzword you may be hearing everywhere, but it’s actually here to stay!@@ -67,4 +67,4 @@ * ¿Qué es Big Data? – [https://www.ibm.com/developerworks/ssa/local/im/que-es-big-data/](https://www.ibm.com/developerworks/ssa/local/im/que-es-big-data/)
* The Four V’s of Big Data – [https://www.ibmbigdatahub.com/infographic/four-vs-big-data](https://www.ibmbigdatahub.com/infographic/four-vs-big-data) * Big data – [https://en.wikipedia.org/wiki/Big_data](https://en.wikipedia.org/wiki/Big_data) * Las 5 V’s del Big Data – [https://www.quanticsolutions.es/big-data/las-5-vs-del-big-data](https://www.quanticsolutions.es/big-data/las-5-vs-del-big-data) -* Las 7 V del Big data: Características más importantes – [https://www.iic.uam.es/innovacion/big-data-caracteristicas-mas-importantes-7-v/](https://www.iic.uam.es/innovacion/big-data-caracteristicas-mas-importantes-7-v/#viabilidad) +* Las 7 V del Big data: Características más importantes – [https://www.iic.uam.es/innovacion/big-data-caracteristicas-mas-importantes-7-v/](https://www.iic.uam.es/innovacion/big-data-caracteristicas-mas-importantes-7-v/#viabilidad)
@@ -1,8 +1,8 @@
-```meta -title: Cassandra: Introducción -published: 2020-03-05T00:00:33+00:00 -updated: 2020-03-30T09:28:07+00:00 -``` ++++ +title = "Cassandra: Introducción" +date = 2020-03-05T00:00:33+00:00 +updated = 2020-03-30T09:28:07+00:00 ++++ ![](1200px-Cassandra_logo.png)@@ -98,4 +98,4 @@
* [Apache Cassandra Architecture Fundamentals – The Distributed SQL Blog](https://blog.yugabyte.com/apache-cassandra-architecture-how-it-works-lightweight-transactions/) * [Apache Cassandra](https://cassandra.apache.org/) * [How Apache Cassandra™ Balances Consistency, Availability, and Performance – Datasax](https://www.datastax.com/blog/2019/05/how-apache-cassandratm-balances-consistency-availability-and-performance) -* [Apache Cassandra Architecture Fundamentals](https://blog.yugabyte.com/apache-cassandra-architecture-how-it-works-lightweight-transactions/) +* [Apache Cassandra Architecture Fundamentals](https://blog.yugabyte.com/apache-cassandra-architecture-how-it-works-lightweight-transactions/)
@@ -1,8 +1,8 @@
-```meta -title: Cassandra: Operaciones Básicas y Arquitectura -published: 2020-03-05T02:00:41+00:00 -updated: 2020-03-20T11:36:18+00:00 -``` ++++ +title = "Cassandra: Operaciones Básicas y Arquitectura" +date = 2020-03-05T02:00:41+00:00 +updated = 2020-03-20T11:36:18+00:00 ++++ Este es el segundo post en la serie sobre Cassandra, con una breve descripción de las operaciones básicas (tales como inserción, recuperación e indexado), y ejecución por completo junto con el modelo de datos y arquitectura. Otros posts en esta serie:@@ -113,4 +113,4 @@ * [tutorialspoint – Creating a Keyspace using Cqlsh](https://www.tutorialspoint.com/cassandra/cassandra_create_keyspace.htm)
* [tutorialspoint – Cassandra – CQL Datatypes](https://www.tutorialspoint.com/cassandra/cassandra_cql_datatypes.htm) * [tutorialspoint – Cassandra – Create Table](https://www.tutorialspoint.com/cassandra/cassandra_create_table.htm) * [Data Flair – Cassandra Crud Operation – Create, Update, Read & Delete](https://data-flair.training/blogs/cassandra-crud-operation/) -* [Cassandra Documentation – Secondary Indexes](https://cassandra.apache.org/doc/latest/cql/indexes.html) +* [Cassandra Documentation – Secondary Indexes](https://cassandra.apache.org/doc/latest/cql/indexes.html)
@@ -1,8 +1,8 @@
-```meta -title: Data Warehousing and OLAP -published: 2020-03-23T01:00:00+00:00 -updated: 2020-04-01T09:45:41+00:00 -``` ++++ +title = "Data Warehousing and OLAP" +date = 2020-03-23T01:00:00+00:00 +updated = 2020-04-01T09:45:41+00:00 ++++ Business intelligence (BI) refers to systems used to gain insights from data, traditionally taken from relational databases and being used to build a data warehouse. Performance and scalability are key aspects of BI systems.@@ -59,4 +59,4 @@ * [Chapter 1 – Professional Microsoft SQL Server 2012 Analysis Services with MDX and DAX (Harinath et al., 2012)](https://media.wiley.com/product_data/excerpt/03/11181011/1118101103-157.pdf)
* [YouTube – Data Mining in SQL Server Analysis Services](https://youtu.be/m_DzhW-2pWI) * Almacenes de Datos y Procesamiento Analítico On-Line (Félix R.) * [YouTube – What are Dimensions and Measures?](https://youtu.be/qkJOace9FZg) -* [Data Lake vs Data Warehouse vs Data Mart](https://www.holistics.io/blog/data-lake-vs-data-warehouse-vs-data-mart/) +* [Data Lake vs Data Warehouse vs Data Mart](https://www.holistics.io/blog/data-lake-vs-data-warehouse-vs-data-mart/)
@@ -1,8 +1,8 @@
-```meta -title: Developing a Python application for Cassandra -published: 2020-03-23T00:00:00+00:00 -updated: 2020-04-16T07:52:26+00:00 -``` ++++ +title = "Developing a Python application for Cassandra" +date = 2020-03-23T00:00:00+00:00 +updated = 2020-04-16T07:52:26+00:00 ++++ _**Warning**: this post is, in fact, a shameless self-plug to my own library. If you continue reading, you accept that you are okay with this. Otherwise, please close the tab, shut down your computer, and set it on fire.__(Also, that was a joke. Please don’t do that.)_@@ -99,7 +99,7 @@
``` def save_users(session, users): insert_stmt = session.prepare( - 'INSERT INTO users (id, first_name, last_name, username) ' + 'INSERT INTO users (id, first_name, last_name, username) ' 'VALUES (?, ?, ?, ?)') for user in users:@@ -215,4 +215,4 @@
## References * [DataStax Python Driver for Apache Cassandra – Getting Started](https://docs.datastax.com/en/developer/python-driver/3.22/getting_started/) -* [Telethon’s Documentation](https://docs.telethon.dev/en/latest/) +* [Telethon’s Documentation](https://docs.telethon.dev/en/latest/)
@@ -1,8 +1,8 @@
-```meta -title: Privado: Final NoSQL evaluation -published: 2020-05-13T00:00:00+00:00 -updated: 2020-05-14T08:31:06+00:00 -``` ++++ +title = "Privado: Final NoSQL evaluation" +date = 2020-05-13T00:00:00+00:00 +updated = 2020-05-14T08:31:06+00:00 ++++ This evaluation is a bit different to my [previous one](/blog/mdad/nosql-evaluation/) because this time I have been tasked to evaluate student `a(i - 2)`, and because I am `i = 11` that happens to be `a(9) =` a classmate.@@ -22,4 +22,4 @@ The post continues listing and briefly explaining all the tools used and what they are for, including commands to execute.
At last, they list what files their project uses, what they do, and contains a showcase of images which lets the reader know what the application does. -All in all, in my opinion, it’s clear they have put work into this entry and I have not noticed any major flaws, so they deserve the highest grade. +All in all, in my opinion, it’s clear they have put work into this entry and I have not noticed any major flaws, so they deserve the highest grade.
@@ -1,8 +1,8 @@
-```meta -title: Introduction to Hadoop and its MapReduce -published: 2020-03-30T00:00:00+00:00 -updated: 2020-04-01T11:01:46+00:00 -``` ++++ +title = "Introduction to Hadoop and its MapReduce" +date = 2020-03-30T00:00:00+00:00 +updated = 2020-04-01T11:01:46+00:00 ++++ Hadoop is an open-source, free, Java-based programming framework that helps processing large datasets in a distributed environment and the problems that arise when trying to harness the knowledge from BigData, capable of running on thousands of nodes and dealing with petabytes of data. It is based on Google File System (GFS) and originated from the work on the Nutch open-source project on search engines.@@ -73,4 +73,4 @@ * [YouTube – Video Post #2: Hadoop para torpes (I)-¿Qué es y para qué sirve?](https://youtu.be/j8ehT1_G5AY?list=PLi4tp-TF_qjM_ed4lIzn03w7OnEh0D8Xi)
* [Video Post #3: Hadoop para torpes (II)-¿Cómo funciona? HDFS y MapReduce](https://youtu.be/NQ8mjVPCDvk?list=PLi4tp-TF_qjM_ed4lIzn03w7OnEh0D8Xi) * [Apache Hadoop Releases](https://hadoop.apache.org/old/releases.html) * [Video Post #4: Hadoop para torpes (III y fin)- Ecosistema y distribuciones](https://youtu.be/20qWx2KYqYg?list=PLi4tp-TF_qjM_ed4lIzn03w7OnEh0D8Xi) -* [Chapter 2 – Hadoop: The Definitive Guide, Fourth Edition](http://www.hadoopbook.com/) ([pdf,](http://grut-computing.com/HadoopBook.pdf)[code](http://www.hadoopbook.com/code.html)) +* [Chapter 2 – Hadoop: The Definitive Guide, Fourth Edition](http://www.hadoopbook.com/) ([pdf,](http://grut-computing.com/HadoopBook.pdf)[code](http://www.hadoopbook.com/code.html))
@@ -1,8 +1,8 @@
-```meta -title: Introduction to NoSQL -published: 2020-02-25T02:00:30+00:00 -updated: 2020-03-18T09:51:33+00:00 -``` ++++ +title = "Introduction to NoSQL" +date = 2020-02-25T02:00:30+00:00 +updated = 2020-03-18T09:51:33+00:00 ++++ This post will primarly focus on the talk held in the [GOTO 2012 conference: Introduction to NoSQL by Martin Fowler](https://youtu.be/qI_g07C_Q5I). It can be seen as an informal, summarized transcript of the talk@@ -82,4 +82,4 @@
## Further reading * [The future is: ~~NoSQL Databases~~ Polyglot Persistence](https://www.martinfowler.com/articles/nosql-intro-original.pdf) -* [NoSQL Databases: An Overview](https://www.thoughtworks.com/insights/blog/nosql-databases-overview) +* [NoSQL Databases: An Overview](https://www.thoughtworks.com/insights/blog/nosql-databases-overview)
@@ -1,8 +1,8 @@
-```meta -title: Mining of Massive Datasets -published: 2020-03-16T01:00:00+00:00 -updated: 2020-03-28T19:09:44+00:00 -``` ++++ +title = "Mining of Massive Datasets" +date = 2020-03-16T01:00:00+00:00 +updated = 2020-03-28T19:09:44+00:00 ++++ In this post we will talk about the Chapter 1 of the book Mining of Massive Datasets Leskovec, J. et al., available online, and I will summarize and share my thoughts on it.@@ -24,4 +24,4 @@ Hash functions are also frequently used, because they can turn hash keys into a bucket number (the index of the bucket where this hash key belongs). They «randomize» and spread the universe of keys into a smaller number of buckets, useful for storage and access.
An index is an efficient structure to query for values given a key, and can be built with hash functions and buckets. -Having all of these is important when analysing documents when doing data mining, because otherwise it would take far too long. +Having all of these is important when analysing documents when doing data mining, because otherwise it would take far too long.
@@ -1,8 +1,8 @@
-```meta -title: MongoDB: Introducción -published: 2020-03-05T01:00:18+00:00 -updated: 2020-03-20T10:31:10+00:00 -``` ++++ +title = "MongoDB: Introducción" +date = 2020-03-05T01:00:18+00:00 +updated = 2020-03-20T10:31:10+00:00 ++++ Este es el primer post en la serie sobre Mongo, en el cuál introduciremos dicha bases de datos NoSQL y veremos sus características e instalación.@@ -27,16 +27,16 @@ ```
{ "_id" : ObjectId("52f602d787945c344bb4bda5"), "name" : "Tyrion", - "hobbies" : [ - "books", - "girls", + "hobbies" : [ + "books", + "girls", "wine" ], - "friends" : [ + "friends" : [ { "name" : "Bronn", "ocuppation" : "sellsword" - }, + }, { "name" : "Shae", "ocuppation" : "handmaiden"@@ -66,7 +66,7 @@ En cuanto a la arquitectura, podríamos decir que divide en tres partes: las bases de datos, las colecciones y los documentos (que contienen los campos de cada entrada).
* **Base de datos**: cada una de las bases de datos tiene un conjunto propio de archivos en el sistema de archivos con diversas bases de datos existentes en un solo servidor. * **Colección**: un conjunto de documentos de base de datos. El equivalente RDBMS de la colección es una tabla. Toda colección existe dentro de una única base de datos. -* **Documento**: un conjunto de pares clave/valor. Los documentos están asociados con esquemas dinámicos. La ventaja de tener esquemas dinámicos es que el documento en una sola colección no tiene que tener la misma estructura o campos. +* **Documento**: un conjunto de pares clave/valor. Los documentos están asociados con esquemas dinámicos. La ventaja de tener esquemas dinámicos es que el documento en una sola colección no tiene que tener la misma estructura o campos. ## Arista dentro del Teorema CAP@@ -74,7 +74,7 @@ ![](t73Q1t-HXfWij-Q1o5AYEnO39Kz2oyLLCdQz6lWQQPaSQWamlDMjmptAn97h.png)
MongoDB es CP por defecto, es decir, garantiza consistencia y tolerancia a particiones (fallos). Pero también podemos configurar el nivel de consistencia, eligiendo el número de nodos a los que se replicarán los datos. O podemos configurar si se pueden leer datos de los nodos secundarios (en MongoDB solo hay un servidor principal, que es el único que acepta inserciones o modificaciones). Si permitimos leer de un nodo secundario mediante la replicación, sacrificamos consistencia, pero ganamos disponibilidad. -## Descarga e instalación +## Descarga e instalación ### Windows@@ -82,7 +82,7 @@ Descargar el archivo desde [https://www.mongodb.com/download-center#production](https://www.mongodb.com/download-center#production)
1. Doble clic en el archivo `.msi` 2. El instalador de Windows lo guía a través del proceso de instalación. -Si elige la opción de instalación personalizada, puede especificar un directorio de instalación. +Si elige la opción de instalación personalizada, puede especificar un directorio de instalación. MongoDB no tiene ninguna otra dependencia del sistema. Puede instalar y ejecutar MongoDB desde cualquier carpeta que elija. 3. Ejecutar el `.exe` que hemos instalado.@@ -132,4 +132,4 @@ * [Características MONGO DB](https://es.slideshare.net/maxfontana90/caractersticas-mongo-db)
* [Qué es MongoDB y características](https://openwebinars.net/blog/que-es-mongodb) * [MongoDB. Qué es, cómo funciona y cuándo podemos usarlo (o no)](https://www.genbeta.com/desarrollo/mongodb-que-es-como-funciona-y-cuando-podemos-usarlo-o-no) * [MongoDB Documentation](https://docs.mongodb.com/) -* [NoSQL: Clasificación de las bases de datos según el teorema CAP](https://www.genbeta.com/desarrollo/nosql-clasificacion-de-las-bases-de-datos-segun-el-teorema-cap) +* [NoSQL: Clasificación de las bases de datos según el teorema CAP](https://www.genbeta.com/desarrollo/nosql-clasificacion-de-las-bases-de-datos-segun-el-teorema-cap)
@@ -1,8 +1,8 @@
-```meta -title: MongoDB: Operaciones Básicas y Arquitectura -published: 2020-03-05T03:00:53+00:00 -updated: 2020-03-20T11:42:15+00:00 -``` ++++ +title = "MongoDB: Operaciones Básicas y Arquitectura" +date = 2020-03-05T03:00:53+00:00 +updated = 2020-03-20T11:42:15+00:00 ++++ Este es el segundo post en la serie sobre MongoDB, con una breve descripción de las operaciones básicas (tales como inserción, recuperación e indexado), y ejecución por completo junto con el modelo de datos y arquitectura.@@ -105,7 +105,7 @@ true
</code> , permite una colección limitada. Una colección limitada es una colección - de tamaño fijo que sobrescribe automáticamente sus entradas más + de tamaño fijo que sobrescribe automáticamente sus entradas más antiguas cuando alcanza su tamaño máximo. Si especifica <code> true@@ -547,4 +547,4 @@
### Referencias * Manual MongoDB. (n.d.). [https://docs.mongodb.com/manual/](https://docs.mongodb.com/manual/) -* MongoDB Tutorial – Tutorialspoint. (n.d.). – [https://www.tutorialspoint.com/mongodb/index.htm](https://www.tutorialspoint.com/mongodb/index.htm) +* MongoDB Tutorial – Tutorialspoint. (n.d.). – [https://www.tutorialspoint.com/mongodb/index.htm](https://www.tutorialspoint.com/mongodb/index.htm)
@@ -1,8 +1,8 @@
-```meta -title: Privado: NoSQL evaluation -published: 2020-03-16T00:00:35+00:00 -updated: 2020-03-28T19:22:31+00:00 -``` ++++ +title = "Privado: NoSQL evaluation" +date = 2020-03-16T00:00:35+00:00 +updated = 2020-03-28T19:22:31+00:00 ++++ This evaluation is based on the criteria for the first delivery described by Trabajos en grupo sobre Bases de Datos NoSQL.@@ -25,4 +25,4 @@ **Grading: A.**
The post evaluated is Bases de datos NoSQL – Neo4j – Primera entrega. -Well-written post, although a bit smaller than Classmate’s, but that’s not really an issue. It still talks about everything it should talk and includes photos to go along the text which help. There is no noticeable wrong things in it, so it gets the highest grading as well. +Well-written post, although a bit smaller than Classmate’s, but that’s not really an issue. It still talks about everything it should talk and includes photos to go along the text which help. There is no noticeable wrong things in it, so it gets the highest grading as well.
@@ -1,8 +1,8 @@
-```meta -title: Visualizing Cáceres’ OpenData -published: 2020-03-09T00:00:08+00:00 -updated: 2020-03-19T14:38:41+00:00 -``` ++++ +title = "Visualizing Cáceres’ OpenData" +date = 2020-03-09T00:00:08+00:00 +updated = 2020-03-19T14:38:41+00:00 ++++ The city of Cáceres has online services to provide [Open Data](http://opendata.caceres.es/) over a wide range of [categories](http://opendata.caceres.es/dataset), all of which are very interesting to explore!@@ -299,4 +299,4 @@ Wow, that was a long journey! We hope that this post helped you pick some interest in data exploration, it’s such a fun world. We also offer the full download for the code below, because we know it’s quite a bit!
Which of the graphs was your favourite? I personally like the count per date, I think it’s nice to see the growth. Let us know in the comments below! -*download removed* +*download removed*
@@ -1,8 +1,8 @@
-```meta -title: What is an algorithm? -published: 2020-02-25T00:00:16+00:00 -updated: 2020-03-18T09:51:02+00:00 -``` ++++ +title = "What is an algorithm?" +date = 2020-02-25T00:00:16+00:00 +updated = 2020-03-18T09:51:02+00:00 ++++ Algorithms are a sequence of instructions that can be followed to achieve _something_. That something can be anything, and depends entirely on your problem!@@ -16,4 +16,4 @@ ## References
* algorithm – definition and meaning: [https://www.wordnik.com/words/algorithm](https://www.wordnik.com/words/algorithm) * Algorithm: [https://en.wikipedia.org/wiki/Algorithm](https://en.wikipedia.org/wiki/Algorithm) -* What is a «computer algorithm»?: [https://computer.howstuffworks.com/what-is-a-computer-algorithm.htm](https://computer.howstuffworks.com/what-is-a-computer-algorithm.htm) +* What is a «computer algorithm»?: [https://computer.howstuffworks.com/what-is-a-computer-algorithm.htm](https://computer.howstuffworks.com/what-is-a-computer-algorithm.htm)
@@ -1,9 +1,8 @@
-```meta -created: 2020-06-19 -modified: 2020-07-03 -``` - -# My new computer ++++ +title = "My new computer" +date = 2020-06-19 +updated = 2020-07-03 ++++ This post will be mostly me ranting about setting up a new laptop, but I also just want to share my upgrade. If you're considering installing Arch Linux with dual-boot for Windows, maybe this post will help. Or perhaps you will learn something new to troubleshoot systems in the future. Let's begin!@@ -364,4 +363,4 @@ Because `rougauracore` helped me and they linked to [hw-probe](https://github.com/linuxhw/hw-probe/blob/master/README.md#appimage), I decided to [run it on my system](https://linux-hardware.org/?probe=0e3e48c501), with the hopes it is useful for other people.
## Closing words -I hope the installation journey is at least useful to someone, or that you enjoyed reading about it all. If not, sorry! +I hope the installation journey is at least useful to someone, or that you enjoyed reading about it all. If not, sorry!
@@ -1,9 +1,7 @@
-```meta -created: 2019-06-03 -``` - -Shattered Pixel Dungeon -======================= ++++ +title = "Shattered Pixel Dungeon" +date = 2019-06-03 ++++ [Shattered Pixel Dungeon](https://shatteredpixel.com/shatteredpd/) is the classic roguelike RPG game with randomly-generated dungeons. As a new player, it was a bit frustrating to be constantly killed on the first levels of the dungeon, but with some practice it's easy to reach high levels if you can kill the first boss.@@ -41,4 +39,4 @@
Luck ---- -This game is all about luck and patience! Some runs will be better than others, and you should thank and pray the RNG gods for them. If you don't, they will only give you cursed items and not a single scroll to clean them. So, good luck and enjoy playing! +This game is all about luck and patience! Some runs will be better than others, and you should thank and pray the RNG gods for them. If you don't, they will only give you cursed items and not a single scroll to clean them. So, good luck and enjoy playing!
@@ -1,10 +1,8 @@
-```meta -created: 2016-06-13 -modified: 2016-06-13 -``` - -Reflexión sobre la Inteligencia artificial -========================================== ++++ +title = "TITReflexión sobre la Inteligencia artificialO" +date = 2016-06-13 +updated = 2016-06-13 ++++ > Nota: esta reflexión ha sido sacada de una conversación en Telegram, aunque ha sido lo más adaptada posible a formato de blog.@@ -26,4 +24,4 @@ Me estoy rayando.
El verdadero problema está en saber cómo sabemos que estamos pensando. El cerebro se compone de neuronas y conexiones, esa es la base a parte de donde se encuentra todo y tal la base es esa, y las sensaciones táctiles son igual de complejas, las procesa mi cerebro pero las siento en mi mano. ¿Será cosa de costumbre? Yo siento algo y lo situo ahí. Sin embargo sentimos ahí y no por encima o por debajo de, vamos a poner, los dedos de la mano, lo siento justo ahí. ¿Qué coño es realmente la [memoria a corto plazo](https://es.wikipedia.org/wiki/Memoria_a_corto_plazo)? (porque lo de la [memoria a largo plazo](https://es.wikipedia.org/wiki/Memoria_a_largo_plazo) se traslada ahí cuando la necesitamos para trabajar con ella, por eso es *MCP* o memoria de trabajo según ciertas teorías). -En fin. +En fin.
@@ -1,8 +1,8 @@
-```meta -title: A practical example with Hadoop -published: 2020-04-01T02:00:00+00:00 -updated: 2020-04-03T08:43:41+00:00 -``` ++++ +title = "A practical example with Hadoop" +date = 2020-04-01T02:00:00+00:00 +updated = 2020-04-03T08:43:41+00:00 ++++ In our [previous Hadoop post](/blog/ribw/introduction-to-hadoop-and-its-mapreduce/), we learnt what it is, how it originated, and how it works, from a theoretical standpoint. Here we will instead focus on a more practical example with Hadoop.@@ -131,7 +131,7 @@
``` $ ls results part-r-00000 _SUCCESS -$ cat results/part-r-00000 +$ cat results/part-r-00000 154 0 2 1 3@@ -147,4 +147,4 @@ exception 1
-snip- (output cut for clarity) ``` -It worked! Now this example was obviously tiny, but hopefully enough to demonstrate how to get the basics running on real world data. +It worked! Now this example was obviously tiny, but hopefully enough to demonstrate how to get the basics running on real world data.
@@ -1,8 +1,8 @@
-```meta -title: About Boolean Retrieval -published: 2020-02-25T00:00:29+00:00 -updated: 2020-03-18T09:38:02+00:00 -``` ++++ +title = "About Boolean Retrieval" +date = 2020-02-25T00:00:29+00:00 +updated = 2020-03-18T09:38:02+00:00 ++++ This entry will discuss the section on the _[Boolean retrieval](https://nlp.stanford.edu/IR-book/pdf/01bool.pdf)_ section of the book _[An Introduction to Information Retrieval](https://nlp.stanford.edu/IR-book/pdf/irbookprint.pdf)_.@@ -445,4 +445,4 @@ The boolean retrieval model can be implemented with relative ease, and can help with storage and efficient querying of the information if we intend to perform boolean queries.
However, the basic design lacks other useful operations, such as a «near» operator, or the ability to rank the results. -All in all, it’s an interesting way to look at the data and query it efficiently. +All in all, it’s an interesting way to look at the data and query it efficiently.
@@ -1,8 +1,8 @@
-```meta -title: Build your own PC -published: 2020-02-25T02:00:12+00:00 -updated: 2020-03-18T09:38:46+00:00 -``` ++++ +title = "Build your own PC" +date = 2020-02-25T02:00:12+00:00 +updated = 2020-03-18T09:38:46+00:00 ++++ _…where PC obviously stands for Personal Crawler_.@@ -190,4 +190,4 @@ e.printStackTrace();
} } } -``` +```
@@ -1,8 +1,8 @@
-```meta -title: Cassandra: an Introduction -published: 2020-03-05T00:00:45+00:00 -updated: 2020-03-18T09:47:05+00:00 -``` ++++ +title = "Cassandra: an Introduction" +date = 2020-03-05T00:00:45+00:00 +updated = 2020-03-18T09:47:05+00:00 ++++ This is the first post in the Cassandra series, where we will introduce the Cassandra database system and take a look at its features and installation methods.@@ -16,13 +16,13 @@ ----------
![NoSQL database – Apache Cassandra – First delivery](cassandra-database-e1584191543401.jpg) -## Purpose of technology +## Purpose of technology -Apache Cassandra is a **NoSQL**, **open-source**, **distributed “key-value” database**. It allows **large volumes of distributed data**. The main **goal **is provide **linear scalability and availabilitywithout compromising performance**. Besides, Cassandra **supports replication** across multiple datacenters, providing low latency. +Apache Cassandra is a **NoSQL**, **open-source**, **distributed “key-value” database**. It allows **large volumes of distributed data**. The main **goal **is provide **linear scalability and availabilitywithout compromising performance**. Besides, Cassandra **supports replication** across multiple datacenters, providing low latency. -## How it works +## How it works -Cassandra’s distributed **architecture **is based on a series of **equal nodes** that communicate with a **P2P protocol** so that **redundancy is maximum**. It offers robust support for multiple datacenters, with **asynchronous replication** without the need for a master server. +Cassandra’s distributed **architecture **is based on a series of **equal nodes** that communicate with a **P2P protocol** so that **redundancy is maximum**. It offers robust support for multiple datacenters, with **asynchronous replication** without the need for a master server. Besides, Cassandra’s **data model consists of partitioning the rows**, which are rearranged into **different tables**. The primary keys of each table have a first component that is the **partition key**. Within a partition, the rows are grouped by the remaining columns of the key. The other columns can be indexed separately from the primary key.@@ -33,19 +33,19 @@
![](s0GHpggGZXOFcdhypRWV4trU-PkSI6lukEv54pLZnoirh0GlDVAc4LamB1Dy.png) _ Cassandra architecture _ -## Features +## Features * **Decentralized**: there are **no single points of failure**, every **node **in the cluster has the **same role** and there is **no master node**, so each node **can service any request**, besides the data is distributed across the cluster. -* Supports **replication **and multiple replication of **data center**: the replication strategies are **configurable**. +* Supports **replication **and multiple replication of **data center**: the replication strategies are **configurable**. * **Scalability: **reading and writing performance increases linearly as new nodes are added, also **new nodes** can be **added without interrupting** application **execution**. * **Fault tolerance: data replication** is done **automatically **in several nodes in order to recover from failures. It is possible to **replace failure nodes****without **making** inactivity time or interruptions** to the application. * **Consistency: **a choice of consistency level is provided for **reading and writing**. * **MapReduce support**: it is **integrated **with **Apache Hadoop** to support MapReduce. * **Query language**: it has its own query language called **CQL (Cassandra Query Language) ** -## Corner in CAP theorem +## Corner in CAP theorem -**Apache Cassandra** is usually described as an “**AP**” system because it guarantees **availability** and **partition/fault tolerance**. So it errs on the side of ensuring data availability even if this means **sacrificing consistency**. But, despite this fact, Apache Cassandra **seeks to satisfy all three requirements** (Consistency, Availability and Fault tolerance) simultaneously and can be **configured to behave** like a “**CP**” database, guaranteeing **consistency and partition/fault tolerance**. +**Apache Cassandra** is usually described as an “**AP**” system because it guarantees **availability** and **partition/fault tolerance**. So it errs on the side of ensuring data availability even if this means **sacrificing consistency**. But, despite this fact, Apache Cassandra **seeks to satisfy all three requirements** (Consistency, Availability and Fault tolerance) simultaneously and can be **configured to behave** like a “**CP**” database, guaranteeing **consistency and partition/fault tolerance**. ![](rf3n9LTOKCQVbx4qrn7NPSVcRcwE1LxR_khi-9Qc51Hcbg6BHHPu-0GZjUwD.png) _Cassandra in CAP Theorem_@@ -54,7 +54,7 @@ ## Download
In order to download the file, with extension .tar.gz. you must visit the [download site](https://cassandra.apache.org/download/) and click on the file “[https://ftp.cixug.es/apache/cassandra/3.11.6/apache-cassandra-3.11.6-bin.tar.gz](https://ftp.cixug.es/apache/cassandra/3.11.6/apache-cassandra-3.11.6-bin.tar.gz)”. It is important to mention that the previous link is related to the 3.11.6 version. -## Installation +## Installation This database can only be installed on Linux distributions and Mac OS X systems, so, it is not possible to install it on Microsoft Windows.@@ -65,26 +65,26 @@ sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre ``` -In order to establish Java as a environment variable it is needed to open the file “/.bashrc”: +In order to establish Java as a environment variable it is needed to open the file “/.bashrc”: ``` nano ~/.bashrc ``` -And add at the end of it the path where Java is installed, as follows: +And add at the end of it the path where Java is installed, as follows: ``` export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/ export PATH=$PATH:$JAVA_HOME/bin ``` - At this point, save the file and execute the next command, note that it does the same effect re-opening the terminal: + At this point, save the file and execute the next command, note that it does the same effect re-opening the terminal: ``` source ~/.bashrc ``` -In order to check if the Java environment variable is set correctly, run the next command: +In order to check if the Java environment variable is set correctly, run the next command: ``` echo $JAVA_HOME@@ -93,7 +93,7 @@
![](JUUmX5MIHynJR_K9EdCgKeJcpINeCGRRt2QRu4JLPtRhCVidOhcbWwVTQjyu.png) _$JAVAHOME variable_ -Afterwards, it is possible to check the installed Java version with the command: +Afterwards, it is possible to check the installed Java version with the command: ``` java -version@@ -102,13 +102,13 @@
![](z9v1-0hpZwjI4U5UZej9cRGN5-Y4AZl0WUPWyQ_-JlzTAIvZtTFPnKY2xMQ_.png) _Java version_ -The next requirement is having installed the latest version of Python 2.7. This can be checked with the command: +The next requirement is having installed the latest version of Python 2.7. This can be checked with the command: ``` python --version ``` -If it is not installed, to install it, it is as simple as run the next command in the terminal: +If it is not installed, to install it, it is as simple as run the next command in the terminal: ``` sudo apt install python@@ -125,25 +125,25 @@
![](Ger5Vw_e1HIK84QgRub-BwGmzIGKasgiYb4jHdfRNRrvG4d6Msp_3Vk62-9i.png) _Python version_ -Once both requirements are ready, next step is to unzip the file previously downloaded, right click on the file and select “Extract here” or with the next command, on the directory where is the downloaded file. +Once both requirements are ready, next step is to unzip the file previously downloaded, right click on the file and select “Extract here” or with the next command, on the directory where is the downloaded file. ``` tar -zxvf apache-cassandra-x.x.x-bin.tar.gz ``` -In order to check if the installation is completed, you can execute the next command, in the root folder of the project. This will start Cassandra in a single node. +In order to check if the installation is completed, you can execute the next command, in the root folder of the project. This will start Cassandra in a single node. ``` /bin/cassandra ``` -It is possible to make a get some data from Cassandra with CQL (Cassandra Query Language). To check this execute the next command in another terminal. +It is possible to make a get some data from Cassandra with CQL (Cassandra Query Language). To check this execute the next command in another terminal. ``` /bin/cqlsh localhost ``` -Once CQL is open, type the next sentence and check the result: +Once CQL is open, type the next sentence and check the result: ``` SELECT cluster_name, listen_address from system.local;@@ -154,11 +154,11 @@
![](miUO60A-RtyEAOOVFJqlkPRC18H4RKUhot6RWzhO9FmtzgTPOYHFtwxqgZEf.png) _Sentence output_ -Finally, the installation guide provided by the website of the database is attached in this [installation guide](https://cassandra.apache.org/doc/latest/getting_started/installing.html). +Finally, the installation guide provided by the website of the database is attached in this [installation guide](https://cassandra.apache.org/doc/latest/getting_started/installing.html). -## References +## References * [Wikipedia](https://es.wikipedia.org/wiki/Apache_Cassandra) * [Apache Cassandra](https://cassandra.apache.org/) * [Datastax](https://www.datastax.com/blog/2019/05/how-apache-cassandratm-balances-consistency-availability-and-performance) -* [yugabyte](https://blog.yugabyte.com/apache-cassandra-architecture-how-it-works-lightweight-transactions/) +* [yugabyte](https://blog.yugabyte.com/apache-cassandra-architecture-how-it-works-lightweight-transactions/)
@@ -1,8 +1,8 @@
-```meta -title: Developing a Python application for MongoDB -published: 2020-03-25T00:00:04+00:00 -updated: 2020-04-16T08:01:23+00:00 -``` ++++ +title = "Developing a Python application for MongoDB" +date = 2020-03-25T00:00:04+00:00 +updated = 2020-04-16T08:01:23+00:00 ++++ This is the third and last post in the MongoDB series, where we will develop a Python application to process and store OpenData inside Mongo.@@ -644,7 +644,7 @@ <li>The <b>average noise</b> is <b>{format_avg_noise(area_info.avg_noise)}</b></li>
<li>There are <b>{area_info.census_count} persons </b> within the area</li> </ul> </div> - {#if area_info.trees_per_type.length > 0} + {#if area_info.trees_per_type.length > 0} <div class="text-center"> <h2 class="m-1 bg-dark text-white">Tree count per type</h2> </div>@@ -695,4 +695,4 @@
1. Unzip the downloaded file. 2. Make a copy of `example-server-config.ini` and rename it to `server-config.ini`, then edit the file to suit your needs. 3. Run the server with `python -m server`. -4. Open [localhost:9000](http://localhost:9000) in your web browser (or whatever port you chose) and enjoy! +4. Open [localhost:9000](http://localhost:9000) in your web browser (or whatever port you chose) and enjoy!
@@ -1,8 +1,8 @@
-```meta -title: Privado: Final NoSQL evaluation -published: 2020-05-13T00:00:00+00:00 -updated: 2020-05-14T07:30:08+00:00 -``` ++++ +title = "Privado: Final NoSQL evaluation" +date = 2020-05-13T00:00:00+00:00 +updated = 2020-05-14T07:30:08+00:00 ++++ This evaluation is a bit different to my [previous one](/blog/ribw/16/nosql-evaluation/) because this time I have been tasked to evaluate the student `a(i - 2)`, and because I am `a = 9` that happens to be `a(7) =` Classmate.@@ -26,4 +26,4 @@ The next section talks about the file structure of the project, and they detail what everything part does, although I have missed some code snippets.
The final result is pretty cool and contains many interesting graphs, they provide a download to the source code and list all the relevant references used. -Except for a weird «necesario falta» in the text, it’s otherwise well-written, although given the issues above I cannot grade it with the highest score. +Except for a weird «necesario falta» in the text, it’s otherwise well-written, although given the issues above I cannot grade it with the highest score.
@@ -1,8 +1,8 @@
-```meta -title: Google’s BigTable -published: 2020-04-01T00:00:00+00:00 -updated: 2020-04-03T09:30:05+00:00 -``` ++++ +title = "Google’s BigTable" +date = 2020-04-01T00:00:00+00:00 +updated = 2020-04-03T09:30:05+00:00 ++++ Let’s talk about BigTable, and why it is what it is. But before we get into that, let’s see some important aspects anybody should consider when dealing with a lot of data (something BigTable does!).@@ -38,4 +38,4 @@ Rows are split in different tablets based on the row keys, which simplifies determining an appropriated server for them. The keys can be up to 64KB big, although most commonly they range 10-100 bytes.
## Conclusions -BigTable is Google’s way to deal with large amounts of data on many of their services, and the ideas behind it are not too complex to understand. +BigTable is Google’s way to deal with large amounts of data on many of their services, and the ideas behind it are not too complex to understand.
@@ -1,8 +1,8 @@
-```meta -title: How does Google’s Search Engine work? -published: 2020-03-18T01:00:00+00:00 -updated: 2020-03-28T10:17:09+00:00 -``` ++++ +title = "How does Google’s Search Engine work?" +date = 2020-03-18T01:00:00+00:00 +updated = 2020-03-28T10:17:09+00:00 ++++ The original implementation was written in C/++ for Linux/Solaris.@@ -281,4 +281,4 @@
## References * [The anatomy of a large-scale hypertextual Web search engine](https://snap.stanford.edu/class/cs224w-readings/Brin98Anatomy.pdf) -* [The Anatomy of a Large-Scale Hypertextual Web Search Engine (slides)](https://www.site.uottawa.ca/~diana/csi4107/Google_SearchEngine.pdf) +* [The Anatomy of a Large-Scale Hypertextual Web Search Engine (slides)](https://www.site.uottawa.ca/~diana/csi4107/Google_SearchEngine.pdf)
@@ -1,8 +1,8 @@
-```meta -title: Integrating Apache Tika into our Crawler -published: 2020-03-18T00:00:00+00:00 -updated: 2020-03-25T17:38:07+00:00 -``` ++++ +title = "Integrating Apache Tika into our Crawler" +date = 2020-03-18T00:00:00+00:00 +updated = 2020-03-25T17:38:07+00:00 ++++ [In our last crawler post](/blog/ribw/upgrading-our-baby-crawler/), we detailed how our crawler worked, and although it did a fine job, it’s time for some extra upgrading.@@ -36,4 +36,4 @@ ## Download
And here you can download the final result: -*download removed* +*download removed*
@@ -1,8 +1,8 @@
-```meta -title: Introduction to Hadoop and its MapReduce -published: 2020-04-01T01:00:00+00:00 -updated: 2020-04-03T08:43:44+00:00 -``` ++++ +title = "Introduction to Hadoop and its MapReduce" +date = 2020-04-01T01:00:00+00:00 +updated = 2020-04-03T08:43:44+00:00 ++++ Hadoop is an open-source, free, Java-based programming framework that helps processing large datasets in a distributed environment and the problems that arise when trying to harness the knowledge from BigData, capable of running on thousands of nodes and dealing with petabytes of data. It is based on Google File System (GFS) and originated from the work on the Nutch open-source project on search engines.@@ -73,4 +73,4 @@ * [YouTube – Video Post #2: Hadoop para torpes (I)-¿Qué es y para qué sirve?](https://youtu.be/j8ehT1_G5AY?list=PLi4tp-TF_qjM_ed4lIzn03w7OnEh0D8Xi)
* [Video Post #3: Hadoop para torpes (II)-¿Cómo funciona? HDFS y MapReduce](https://youtu.be/NQ8mjVPCDvk?list=PLi4tp-TF_qjM_ed4lIzn03w7OnEh0D8Xi) * [Apache Hadoop Releases](https://hadoop.apache.org/old/releases.html) * [Video Post #4: Hadoop para torpes (III y fin)- Ecosistema y distribuciones](https://youtu.be/20qWx2KYqYg?list=PLi4tp-TF_qjM_ed4lIzn03w7OnEh0D8Xi) -* [Chapter 2 – Hadoop: The Definitive Guide, Fourth Edition](http://www.hadoopbook.com/) ([pdf,](http://grut-computing.com/HadoopBook.pdf)[code](http://www.hadoopbook.com/code.html)) +* [Chapter 2 – Hadoop: The Definitive Guide, Fourth Edition](http://www.hadoopbook.com/) ([pdf,](http://grut-computing.com/HadoopBook.pdf)[code](http://www.hadoopbook.com/code.html))
@@ -1,8 +1,8 @@
-```meta -title: Introduction to NoSQL -published: 2020-02-25T01:00:15+00:00 -updated: 2020-03-18T09:38:23+00:00 -``` ++++ +title = "Introduction to NoSQL" +date = 2020-02-25T01:00:15+00:00 +updated = 2020-03-18T09:38:23+00:00 ++++ This post will primarly focus on the talk held in the [GOTO 2012 conference: Introduction to NoSQL by Martin Fowler](https://youtu.be/qI_g07C_Q5I). It can be seen as an informal, summarized transcript of the talk@@ -80,4 +80,4 @@
## Further reading * [The future is: ~~NoSQL Databases~~ Polyglot Persistence](https://www.martinfowler.com/articles/nosql-intro-original.pdf) -* [NoSQL Databases: An Overview](https://www.thoughtworks.com/insights/blog/nosql-databases-overview) +* [NoSQL Databases: An Overview](https://www.thoughtworks.com/insights/blog/nosql-databases-overview)
@@ -1,8 +1,8 @@
-```meta -title: MongoDB: an Introduction -published: 2020-03-05T01:00:06+00:00 -updated: 2020-04-08T17:38:22+00:00 -``` ++++ +title = "MongoDB: an Introduction" +date = 2020-03-05T01:00:06+00:00 +updated = 2020-04-08T17:38:22+00:00 ++++ This is the first post in the MongoDB series, where we will introduce the MongoDB database system and take a look at its features and installation methods.@@ -18,13 +18,13 @@ ----------
![NoSQL database – MongoDB – First delivery](mongodb.png) -## Purpose of technology +## Purpose of technology MongoDB is a **general purpose, document-based, distributed database** built for modern application developers and for the cloud era, with the scalability and flexibility that you want with the querying and indexing that you need. It being a document database means it stores data in JSON-like documents. The Mongo team believes this is the most natural way to think about data, which is (they claim) much more expressive and powerful than the traditional row/column model, since programmers think in objects. -## How it works +## How it works MongoDB’s architecture can be summarized as follows:@@ -49,7 +49,7 @@ MongoDB also supports the creation of **indices**, similar to those in other database systems. It allows for the creation of indices on any field or subfields.
In Mongo, the **aggregation pipeline** allows us to filter and analyze data based on a given set of criteria. For example, we could pull all the documents in the `restaurants` collection that have a `category` of `Bakery` using the `$match` operator. Then, we can group them by their star rating using the `$group` operator. Using the accumulator operator, `$sum`, we can see how many bakeries in our collection have each star rating. -## Features +## Features The features can be seen all over the place in their site, because it’s something they make a lot of emphasis on:@@ -63,7 +63,7 @@ * **Support for aggregations** and other modern use-cases such as geo-based search, graph search, and text search.
* **A distributed systems design**, which allows developers to intelligently put data where they want it. High availability, horizontal scaling, and geographic distribution are built in and easy to use. * **A unified experience** with the freedom to run anywhere, which allows developers to future-proof their work and eliminate vendor lock-in. -## Corner in CAP theorem +## Corner in CAP theorem MongoDB’s position in the CAP theorem (Consistency, Availability, Partition Tolerance) depends on the database and driver configurations, and the type of disaster.@@ -76,9 +76,9 @@ ## Download
We will be using the apt-based installation. -The Community version can be downloaded by anyone through [MongoDB Download Center](https://www.mongodb.com/download-center/community), where one can choose the version, Operating System and Package.MongoDB also seems to be [available in Ubuntu’s PPAs](https://packages.ubuntu.com/eoan/mongodb). +The Community version can be downloaded by anyone through [MongoDB Download Center](https://www.mongodb.com/download-center/community), where one can choose the version, Operating System and Package.MongoDB also seems to be [available in Ubuntu’s PPAs](https://packages.ubuntu.com/eoan/mongodb). -## Installation +## Installation We will be using an Ubuntu-based system, with apt available. To install MongoDB, we open a terminal and run the following command:@@ -92,7 +92,7 @@ ```
mongod --version ``` -The output should be similar to the following: +The output should be similar to the following: ``` db version v4.0.16@@ -106,7 +106,7 @@ distarch: x86_64
target_arch: x86_64 ``` -## References +## References * [MongoDB’s official site](https://www.mongodb.com/) * [What is MongoDB?](https://www.mongodb.com/what-is-mongodb)@@ -114,4 +114,4 @@ * [MongoDB Architecture](https://www.mongodb.com/mongodb-architecture)
* [Where does mongodb stand in the CAP theorem?](https://stackoverflow.com/q/11292215/4759433) * [What is the CAP Theorem? MongoDB vs Cassandra vs RDBMS, where do they stand in the CAP theorem?](https://medium.com/@bikas.katwal10/mongodb-vs-cassandra-vs-rdbms-where-do-they-stand-in-the-cap-theorem-1bae779a7a15) * [Why doesn’t MongoDB have availability in the CAP theorem?](https://www.quora.com/Why-doesnt-MongoDB-have-availability-in-the-CAP-theorem) -* [Install MongoDB](https://docs.mongodb.com/manual/installation/) +* [Install MongoDB](https://docs.mongodb.com/manual/installation/)
@@ -1,8 +1,8 @@
-```meta -title: MongoDB: Basic Operations and Architecture -published: 2020-03-05T04:00:08+00:00 -updated: 2020-04-08T17:36:25+00:00 -``` ++++ +title = "MongoDB: Basic Operations and Architecture" +date = 2020-03-05T04:00:08+00:00 +updated = 2020-04-08T17:36:25+00:00 ++++ This is the second post in the MongoDB series, where we will take a look at the [CRUD operations](https://stackify.com/what-are-crud-operations/) they support, the data model and architecture used.@@ -375,4 +375,4 @@ Yeah, take that! The [`dropDatabase`](https://docs.mongodb.com/manual/reference/method/db.dropDatabase/) can be used to drop databases.
## References -The examples in this post are all fictional, and the methods that could be used where taken from Classmate’s post, and of course [Mongo’s documentation](https://docs.mongodb.com/manual/reference/method/). +The examples in this post are all fictional, and the methods that could be used where taken from Classmate’s post, and of course [Mongo’s documentation](https://docs.mongodb.com/manual/reference/method/).
@@ -1,8 +1,8 @@
-```meta -title: Cassandra: Basic Operations and Architecture -published: 2020-03-05T02:00:36+00:00 -updated: 2020-03-24T17:57:05+00:00 -``` ++++ +title = "Cassandra: Basic Operations and Architecture" +date = 2020-03-05T02:00:36+00:00 +updated = 2020-03-24T17:57:05+00:00 ++++ This is the second post in the NoSQL Databases series, with a brief description on the basic operations (such as insertion, retrieval, indexing…), and complete execution along with the data model / architecture.@@ -26,7 +26,7 @@ ```
$ bin/cassandra ``` -Once Cassandra is deployed, it is time to open a** CQL Shell**, in **other terminal**, with the command: +Once Cassandra is deployed, it is time to open a** CQL Shell**, in **other terminal**, with the command: ``` $ bin/cqlsh@@ -37,11 +37,11 @@
![](uwqQgQte-cuYb_pePFOuY58re23kngrDKNgL1qz4yOfnBDZkqMIH3fFuCrye.png) _CQL Shell_ -## Create/Insert +## Create/Insert -### DDL (Data Definition Language) +### DDL (Data Definition Language) -#### Create keyspace +#### Create keyspace A keyspace is created using a **CREATE KEYSPACE **statement:@@ -53,7 +53,7 @@ The supported “**options**” are:
* “**replication**”: this is **mandatory **and defines the **replication strategy** and the **replication factor** (the number of nodes that will have a copy of the data). Within this option there is a property called “**class**” in which the **replication strategy** is specified (“SimpleStrategy” or “NetworkTopologyStrategy”) * “**durable_writes**”: this is **not mandatory** and it is possible to use the **commit logs for updates**. -Attempting to create an already existing keyspace will return an error unless the **IF NOT EXISTS **directive is used. +Attempting to create an already existing keyspace will return an error unless the **IF NOT EXISTS **directive is used. The example associated to this statement is create a keyspace with name “test_keyspace” with “SimpleStrategy” as “class” of replication and a “replication_factor” of 3.@@ -63,7 +63,7 @@ **WITH** **replication** = {'class': 'SimpleStrategy',
'replication_factor' : 3}; ``` -The **USE **statement allows to **change** the current **keyspace**. The syntax of this statement is very simple: +The **USE **statement allows to **change** the current **keyspace**. The syntax of this statement is very simple: ``` **USE** keyspace_name;@@ -78,7 +78,7 @@ ```
**DESCRIBE** KEYSPACES | KEYSPACE keyspace_name; ``` -#### Create table +#### Create table Creating a new table uses the **CREATE TABLE **statement:@@ -180,7 +180,7 @@
![](s6GrKIGATvOSD7oGRNScUU5RnLN_-3X1JXvnVi_wDT_hrmPMZdnCdBI8DpIJ.png) _SELECT statement_ -Furthermore, we are going to test the SELECT JSON statement. For this, we are going to retrieve only the species name with a population of 0. +Furthermore, we are going to test the SELECT JSON statement. For this, we are going to retrieve only the species name with a population of 0. ``` **SELECT** JSON species **FROM** species_table **WHERE** population = 0 ALLOW FILTERING;@@ -189,11 +189,11 @@
![](Up_eHlqKQp2RI5XIbgPOvj1B5J3gLxz7v7EI0NDRgezQTipecdfDT6AQoso0.png) _SELECT JSON statement_ -## Update +## Update ### DDL (Data Definition Language) -#### Alter keyspace +#### Alter keyspace The statement **ALTER KEYSPACE **allows to modify the options of a keyspace:@@ -232,7 +232,7 @@ ```
**ALTER** **TABLE** species_table **DROP** sex; ``` - Finally, alter the comment with the WITH clause and set the comment to “All species records”. + Finally, alter the comment with the WITH clause and set the comment to “All species records”. ``` **ALTER** **TABLE** species_table **WITH** **comment**='All species records';@@ -302,7 +302,7 @@ ```
**DROP** **TABLE** [ **IF** **EXISTS** ] table_name; ``` - For example, drop the table called “species_2” if it exists: + For example, drop the table called “species_2” if it exists: ``` **DROP** **TABLE** **IF** **EXISTS** species_2;@@ -339,7 +339,7 @@ **WHERE** where_clause
[ **IF** ( **EXISTS** | condition ( **AND** condition )*) ] ``` -Now we are going to delete the value of the column “average_size” from “Cloned Sheep”. +Now we are going to delete the value of the column “average_size” from “Cloned Sheep”. ``` **DELETE** average_size **FROM** species_table **WHERE** species = 'Cloned Sheep';@@ -348,7 +348,7 @@
![](CyuQokVL5J9TAelq-WEWhNl6kFtbIYs0R1AeU5NX4EkG-YQI81mNHdnf2yWN.png) _DELETE value statement_ -And we are going to delete the same row as mentioned before. +And we are going to delete the same row as mentioned before. ``` **DELETE** **FROM** species_table **WHERE** species = 'Cloned Sheep';@@ -390,7 +390,7 @@ _BATCH statement_
## Index -CQL support creating secondary indexes on tables, allowing queries on the table to use those indexes. +CQL support creating secondary indexes on tables, allowing queries on the table to use those indexes. **Creating **a secondary index on a table uses the **CREATE INDEX **statement:@@ -406,13 +406,13 @@ ```
**CREATE** **INDEX** population_idx **ON** species_table (population); ``` -**Dropping **a secondary index uses the **DROP INDEX** statement: +**Dropping **a secondary index uses the **DROP INDEX** statement: ``` **DROP** **INDEX** [ **IF** **EXISTS** ] index_name; ``` -Now, we are going to drop the previous index: +Now, we are going to drop the previous index: ``` **DROP** **INDEX** **IF** **EXISTS** population_idx;@@ -424,4 +424,4 @@ * [Cassandra CQL](https://cassandra.apache.org/doc/latest/cql/ddl.html)
* [Differences between DML and DDL](https://techdifferences.com/difference-between-ddl-and-dml-in-dbms.html) * [Datastax CQL](https://docs.datastax.com/en/dse/5.1/cql/cql/cql_reference/cqlReferenceTOC.html) * [Cassandra CQL Types](https://cassandra.apache.org/doc/latest/cql/types.html#grammar-token-cql-type) -* [Cassandra Index](https://cassandra.apache.org/doc/latest/cql/indexes.html) +* [Cassandra Index](https://cassandra.apache.org/doc/latest/cql/indexes.html)
@@ -1,8 +1,8 @@
-```meta -title: Privado: NoSQL evaluation -published: 2020-03-16T00:00:15+00:00 -updated: 2020-03-27T11:22:45+00:00 -``` ++++ +title = "Privado: NoSQL evaluation" +date = 2020-03-16T00:00:15+00:00 +updated = 2020-03-27T11:22:45+00:00 ++++ I have decided to evaluate Classmate‘s post and Classmate‘s post, because they review databases I have not seen or used before, and I think it would be interesting to see new ones.@@ -38,4 +38,4 @@ The post I have evaluted is Raven.
They have done a good job describing the project’s goals, corner in the CAP theorem, download, and provide an extensive installation section. -They don’t seem to use some of WordPress features, such as lists, but otherwise the post is good and deserves an A grading. +They don’t seem to use some of WordPress features, such as lists, but otherwise the post is good and deserves an A grading.
@@ -1,8 +1,8 @@
-```meta -title: Privado: PC-Crawler evaluation 2 -published: 2020-03-16T01:00:47+00:00 -updated: 2020-03-28T10:29:49+00:00 -``` ++++ +title = "Privado: PC-Crawler evaluation 2" +date = 2020-03-16T01:00:47+00:00 +updated = 2020-03-28T10:29:49+00:00 ++++ As the student `a(i)` where `i = 9`, I have been assigned to evaluate students `a(i - 1)` and `a(i - 2)`, these being:@@ -31,4 +31,4 @@ Next, they show the code they have written, also describing what it does, although they don’t explain _why_ they chose the data structures they used.
The style of the code leaves a lot to be desired, and they should have embedded the code in the post instead of taking screenshots. People that rely on screen readers will not be able to see the code. -I have graded them B and not A for this last reason. +I have graded them B and not A for this last reason.
@@ -1,8 +1,8 @@
-```meta -title: Privado: PC-Crawler evaluation -published: 2020-03-04T00:00:23+00:00 -updated: 2020-03-18T09:39:27+00:00 -``` ++++ +title = "Privado: PC-Crawler evaluation" +date = 2020-03-04T00:00:23+00:00 +updated = 2020-03-18T09:39:27+00:00 ++++ As the student `a(i)` where `i = 9`, I have been assigned to evaluate students `a(i + 3)` and `a(i + 4)`, these being:@@ -44,4 +44,4 @@ Some of the methods are documented, although the code inside them is not very commented, including missing rationale for the data structures chosen. There also seem to be several other unused main functions, which I’m unsure why they were kept.
However, all the desired functionality is implemented. -Similar to Classmate, the code style could be improved and settled on some standard, as well as making use of Java features such as `for` loops over iterators instead of manual loops. +Similar to Classmate, the code style could be improved and settled on some standard, as well as making use of Java features such as `for` loops over iterators instead of manual loops.
@@ -1,8 +1,8 @@
-```meta -title: Upgrading our Baby Crawler -published: 2020-03-11T00:00:07+00:00 -updated: 2020-03-18T09:49:33+00:00 -``` ++++ +title = "Upgrading our Baby Crawler" +date = 2020-03-11T00:00:07+00:00 +updated = 2020-03-18T09:49:33+00:00 ++++ In our [last post on this series](/blog/ribw/build-your-own-pc/), we presented the code for our Personal Crawler. However, we didn’t quite explain what a crawler even is! We will use this moment to go a bit more in-depth, and make some upgrades to it.@@ -62,4 +62,4 @@ ## Download
The code was getting a bit too large to embed it within the blog post itself, so instead you can download it as a`.zip` file. -*download removed* +*download removed*
@@ -1,8 +1,8 @@
-```meta -title: What is ElasticSearch and why should you care? -published: 2020-03-18T02:00:00+00:00 -updated: 2020-03-27T11:04:45+00:00 -``` ++++ +title = "What is ElasticSearch and why should you care?" +date = 2020-03-18T02:00:00+00:00 +updated = 2020-03-27T11:04:45+00:00 ++++ ElasticSearch is a giant search index with powerful analytics capabilities. It’s like a database and search engine on steroids, really easy and fast to get up and running. One can think of it as your own Google, a search engine with analytics.@@ -62,4 +62,4 @@
* [YouTube – What is Elasticsearch?](https://youtu.be/sKnkQSec1U0) * [YouTube – GOTO 2013 • Elasticsearch – Beyond Full-text Search • Alex Reelsen](https://youtu.be/yWNiRC_hUAw) * [Kibana – Your window into the Elastic Stack](https://www.elastic.co/kibana) -* [Elastic Stack and Product Documentation](https://www.elastic.co/guide/index.html) +* [Elastic Stack and Product Documentation](https://www.elastic.co/guide/index.html)
@@ -1,10 +1,8 @@
-```meta -created: 2018-01-31 -updated: 2018-01-31 -``` - -Sentences -========= ++++ +title = "Sentences" +date = 2018-01-31 +updated = 2018-01-31 ++++ > Don't know English? [Read the Spanish version instead](spanish.html).@@ -28,4 +26,3 @@ * If you want something to happen, go and do it. Or wait sitting like a stupid until it happens that it never happens.
* I'd rather be happy than be right. * The engines don’t move the ship at all. The ship stays where it is and the engines move the universe around it. * If I never try getting there, I'll never get there. -
@@ -1,10 +1,8 @@
-```meta -created: 2018-01-31 -updated: 2018-01-31 -``` - -Frases -====== ++++ +title = "Frases" +date = 2018-01-31 +updated = 2018-01-31 ++++ Simplemente algunas frases que se han ido amontonando a lo largo de los años y que creo que merecen persistir en algún lugar.@@ -26,4 +24,3 @@ * Si quieres que pase, ve y hazlo. O espera sentado como un subnormal a que pase para que no pase nunca.
* Prefiero ser feliz a llevar la razón. * Los motores no mueven la nave en absoluto. La nave se queda donde está y los motores mueven el universo a su alrededor. * Si nunca aspiro a llegar, nunca llegaré -
@@ -1,10 +1,8 @@
-```meta -created: 2020-05-10 -updated: 2020-05-22 -``` - -Tips for Outpost -================ ++++ +title = "Tips for Outpost" +date = 2020-05-10 +updated = 2020-05-22 ++++ [Outpost](https://store.steampowered.com/app/1127110/Outpost/) is a fun little game by Open Mid Interactive that has popped in recently in my recommended section of Steam, and I decided to give it a try.@@ -144,4 +142,4 @@
Closing words ------------- -I hope you enjoy the game as much as I do! Movement is sometimes janky and there's the occassional lag spikes, but despite this it should provide at least a few good hours of gameplay. Beware however a good run can take up to an hour! +I hope you enjoy the game as much as I do! Movement is sometimes janky and there's the occassional lag spikes, but despite this it should provide at least a few good hours of gameplay. Beware however a good run can take up to an hour!
@@ -1,11 +1,10 @@
-```meta -published: 2020-07-03 -``` - -# University posts ++++ +title = "University posts" +date = 2020-07-03 ++++ During university, there were a few subjects where I had to write blog posts for (either as evaluable tasks or just for fun). Currently, these are: * [Data Mining and Data Warehousing](/blog/mdad) -* [Information Retrieval and Web Search](/blog/ribw) +* [Information Retrieval and Web Search](/blog/ribw)
@@ -1,10 +1,8 @@
-```meta -created: 2018-07-11 -modified: 2018-07-11 -``` - -WorldEdit Commands -================== ++++ +title = "WorldEdit Commands" +date = 2018-07-11 +updated = 2018-07-11 ++++ [WorldEdit](https://dev.bukkit.org/projects/worldedit) is an extremely powerful tool for modifying entire worlds within [Minecraft](https://minecraft.net), which can be used as either a mod for your single-player worlds or as a plugin for your [Bukkit](https://getbukkit.org/) servers.@@ -125,4 +123,4 @@ Finally, you can copy and cut things around like you would do with normal text with `//copy` and `//cut`. The copy is issued from wherever you issue the command, so when you use `//paste`, remember that if you were 4 blocks apart when copying, it will be 4 blocks apart when pasting.
The contents of the clipboard can be flipped to wherever you are looking via `//flip`, and can be rotated via the `//rotate 90` command (in degrees). -To remove the copy use `//clearclipboard`. +To remove the copy use `//clearclipboard`.