Thursday, 13 April 2017

TDD with React, couple of tutorials from semaphoreci community

https://semaphoreci.com/community/tutorials/testing-react-components-with-enzyme-and-mocha

Some notes...

Enzyme gives us several ways to render components for testing: using shallowmount, and static

shallow ... is used to isolate one component for testing and ensure child components do not affect assertions. 
You can think of it as rendering "just" the component you want it to.

mount is "real" rendering that will actually render your component into a browser environment. If you are creating full React components (and not just stateless components), you will want to use mount to do testing on the lifecycle methods of your component. We are using jsdom to accomplish rendering in a browser-like environment, but you could just as easily run it in a browser of your choosing.

static ... is used for analyzing the actual HTML output of a component


Tuesday, 28 March 2017

Ubuntu dev machine space management

Visualize filesystems usage:
df -h
Show disk usage of un/hidden folders
 du -sch .[!.]* * |sort -h


Find working kernel
uname -r
List installed kernels
dpkg --list | grep linux-image 


Sort and display packages size:
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n
Completely delete a package
sudo apt-get purge packagename
Delete unused packages
sudo apt-get autoremove
Clean Apt cache
sudo apt-get clean


Brew cache cleanup
rm -rf $(brew --cache)
Brew uninstall
sudo ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

RVM
rvm uninstall ruby-2.3.3
Uninstall gems
gem uninstall -aIx

NPM cache cleanup
npm cache clean
Yarn (Node.js) cache cleanup
yarn cache clean

Monday, 27 March 2017

Wednesday, 15 March 2017

Javascript substack module pattern

Sup!?

So, we are using React to get a photo, send to an API and convert the response into a chart with ChartJS.

Our first attempt involved writing a DataConverter class like this:

This is nice but... we have a class (ECMAScript 2015 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) which has no state at all, wouldn't be better to have a module instead?

Cool uh?!
Hang on!
Take a look at the return call: when this module is called, it is not offering a series of methods.
It is returning a function instead, so this module can be called as a function:

This is nice but apparently the power of NodeJS let's us build more robust code, using the substack module pattern:

Using this pattern we don't have to use the weird module pattern syntax, the code is more elegant and clear... agree???
One catch though, is where this code will be executed: server side or client side with build tools is fine, other cases there is a chance that all this function will be available in the global scope.

This pattern has also ways to expand the behaviour of our modules:

Wednesday, 9 September 2015

World Bank Indicators: collect and process them in Google Sheet

Hey guys!

I recently found myself in having to process some statistics data about countries performances...
Actually, I'm looking to expat and found this could be an interisting method for picking up a destination.

So what have I found?
World Bank is giving us loads of free data to play with, about countries:

  • GDP, 
  • electricity access, 
  • health,
  • education,
  • etc.

I thought: why don't load a bunch of these data in a sheet, set some filters and see what could be my best place to be?

So here we go, you can download it here: https://docs.google.com/spreadsheets/d/1TyI-98fVfl1BsVGM0t6b6V65WysPulW8Z2zUsYTul04

Follow the instructions on the spreadsheet.

One suggestion: the command inside the sheet for loading indicators will load about 13-15 thousands of them!!!
Use the World Bank web page for finding indicators could be easier: http://data.worldbank.org/
It must be the last bit of an indicator web link, i.e. for GDP
Web link: http://data.worldbank.org/indicator/NY.GDP.MKTP.CD
Indicator: NY.GDP.MKTP.CD

Authorization are for running some Google Apps Script code.
If you are interested in the code, follow this link: http://pavatechpit.blogspot.it/2015/09/world-bank-xml-service-and-google-apps.html

Also, don't forget World Bank data is available on the Google Public Data Explorer project: http://www.google.com/publicdata/explore?ds=d5bncppjof8f9_&hl=en&dl=en

World Bank XML service and Google Apps Script

Hi guys!

Easy task also for a novice as me in Google scripting, I wrote 200 lines in one day for ripping some data from the World Bank XML API service and presenting it in a Google Sheet.

Here the sheet: https://docs.google.com/spreadsheets/d/1TyI-98fVfl1BsVGM0t6b6V65WysPulW8Z2zUsYTul04

Functions are:
  • onOpen() : creates a menu in Google Sheet for launching the functions
  • average() : average function which supports NULL values, get it here - couldn't find any better on the web
  • loadDataXml(): given an indicator, fetch XML and process in such a way to export it both as a custom function or from a menu command
  • getData(): menu command for loadDataXml()
  • loadIndicatorsXml (): menu command for fetching indicators list as XML in a new sheet

loadDataXml()
Given an indicator, fetch XML and process in such a way to export it both as a custom function or from a menu command
getData()
Menu command for loadDataXml()
loadIndicatorsXml ()
Menu command for fetching indicators list as XML in a new sheet
onOpen()
 Creates a menu in Google Sheet for launching the functions

Javascript: average which accept null values

Pretty easy!

https://gist.github.com/mrenrich84/571cf7e5ebbaa777af1e