Image    Planeta

15 set 2018 - 20:37
$ cd projectes/ $ wget https://julialang-s3.julialang.org/bin/linux/x64/1.0/julia-1.0.0-linux-x86_64.tar.gz $ tar xvvf julia-1.0.0-linux-x86_64.tar.gz $ export PATH=$PATH:~/projectes/julia-1.0.0/bin $ mkdir -p ~/.julia/config/ $ echo "using Pkg" >> ~/.julia/config/startup.jl $ julia

julia> Pkg.add("UnicodePlots")

julia> using UnicodePlots julia> myPlot = lineplot([sin, cos], -π, 2π)

14 set 2018 - 07:44

Hui he iniciat el meu Ubuntu 18.04 i de sobte se m'ha reiniciat un parell o tres de vegades el meu escriptori amb gnome+wayland sense que jo fera res.

Immediatament he anat a la finestra de comandaments a vore què li passava al sistema:

$ dmesg -w ... [ 136.559610] nouveau 0000:01:00.0: Direct firmware load for nouveau/nve7_fuc084 failed with error -2 [ 136.559618] nouveau 0000:01:00.0: Direct firmware load for nouveau/nve7_fuc084d failed with error -2 [ 136.559619] nouveau 0000:01:00.0: msvld: unable to load firmware data [ 136.559622] nouveau 0000:01:00.0: msvld: init failed, -19

Resulta que no tinc accel·leració ara mateix a la meua targeta gràfica

$ lspci -v | grep -i nvidia 01:00.0 VGA compatible controller: NVIDIA Corporation GK104M [GeForce GTX 870M] (rev a1) (prog-if 00 [VGA controller]) Kernel modules: nvidiafb, nouveau

i no poden solucionar-ho perquè el firmware és propietari. :(

Com no puc tindre problemes amb el meu portàtil per tema de treball, la solució passa per instal·lar el firmware propietari. Cree un directori on posar el firmware:

$ mkdir /tmp/nouveau $ cd /tmp/nouveau

Em baixe un fitxer per extraure el firmware:

$ wget https://raw.github.com/imirkin/re-vp2/master/extract_firmware.py

Em baixe l'instal·lador porpietari i l'execute:

$ wget http://us.download.nvidia.com/XFree86/Linux-x86/325.15/NVIDIA-Linux-x86-325.15.run $ sh NVIDIA-Linux-x86-325.15.run --extract-only

Extrac el firmware amb l'aplicació que m'he baixat abans:

$ python extract_firmware.py

Cree un directori al sistema on es posa tot el firmware:

$ sudo mkdir /lib/firmware/nouveau

I copie allà tots els fitxers del firmware:

$ sudo cp -d nv* vuc-* /lib/firmware/nouveau/

I ja està. Ha desaparegut l'error i ja tinc accel·leració.

14 set 2018 - 07:28

Interessant pàgina web interactiva on pots comprovar com era la terra fa milions d'anys: ancient earth. Mireu:

Com podeu veure a la imatge, es pot navegar amb les tecles de fletxa avant i darrere en el temps, o acostar-te o allunyar-te del planeta. Tens un seleccionable per saltar directament a uns milions d'anys determinats i un altre selector per a saltar a èpoques de la terra on es produïren evolucions especials.

Fins i tot tens un quadre on pots posar una adreça, per saber on estaries si estigueres en aquell moment.

A la pàgina principal d'aquesta web, si t'agraden els dinosaures, tens un munt de fotos i informació sobre ells.

Divertit. Apunte l'adreça a l'apartat d'enllaços per poder visitar-la més endavant.

 

6 set 2018 - 23:09

La Gestió de Drets Digitals, DRM en anglès, és un terme molt ampli utilitzat per denominar aquella tecnologia que controla com i quan es pot utilitzar qualsevol contingut digital, com ara els jocs, la música, el vídeo o els llibres.

Els jocs amb DRM inclouen una capa de programari més enllà del que necessiteu per jugar al joc. Avui en dia, el DRM enviarà la vostra informació a un servidor en línia, i podrien executar comprobacions per veure si heu tocat fitxers o refusar donar-vos accés definitivament al joc a no ser que hagueu iniciat la sessió a algun lloc.

Dit d'una altra manera, el DRM està allà per qüestionar el que feu en cada pas del camí.

Per què us hauríeu de preocupar pel DRM?

Perquè hi ha un interruptor integrat als vostres jocs. És clar, el DRM potser no us afectarà ara mateix, però les empreses mantindran la clau i només us permetran entrar sempre que pugueu provar la propietat de manera repetida. Sempre que estigueu connectats a Internet. Mentre el DRM funcioni sense cap error. Mentre estigui.

Així, doncs, la càrrega de la prova la teniu vós? Pots confiar en algú que no confia en tu?

 

 

Més info: defectivebydesign.org, eff.org

By Gog.com

6 set 2018 - 22:41

Interessant pàgina web de la Comissió Europea on podem vore diversos atles amb informació diversa sobre la desertització al planeta.

Les dades les podeu visualitzar agrupades en les següents temàtiques:

Dins de cada apartat hi ha diversos atles que mostren les dades abordant el problema des de distints punts.

Per exemple, en l'apartat dels límits de la sostenibilitat, hi ha diversos atles que tracten l'aridesa i sequera. Així, us podeu trobar amb un mapa així, que intenta posar cara als patrons de l'aridesa:

on es veu clarament quines zones del planeta estan més exposades a la sequera. Hi ha un munt de dades i gràfics addicionals en cada secció.

El que he dit, molt interessant.

Afegisc l'URL a la secció d'enllaços, com sempre.

3 set 2018 - 18:33

M'agrada llegir codi d'altres per aprendre. I llig molt abans de preguntar dubtes.

És una forma de treballar que m'ha ensenyat el programari lliure: busca't la vida i després pregunta.

I per què preguntar si tinc milions de línies de codi amb exemples de programadors que saben programar més que jo?

Per això em sembla inaudit, que al munt de llistes de correu on estic apuntat, els nouvinguts del programari propietari, el primer que fan és preguntar. I cada pregunta... Sobre això ja faré un apunt intens els propers dies. M'ho apunte [*].

Ací volia parlar de cercar.

No tinc memòria, i és impossible recordar-se de tot. Així que és normal per mi cercar, en milers de fitxers, el nom de funcions, de paraules clau, etc. en distints formats de fitxer, per tal de trobar exemples, refrescar la sintaxi o aprendre la millor manera de fer les coses.

Fins ara m'havia fet un script en Bash jo mateix al qual li havia posat el nom de tb (trobar):

Bàsicament utilitza la comanda find amb combinació amb la comanda grep per cercar dins de fitxers. Hi ha, si llegiu el codi, 3 possibilitats depenent dels paràmetres. Cercar la cadena en totes les extensions o en una especificada, i després hi havia una altra que era cercar la cadena i afegir n línies, la qual cosa em permetia cercar en la resta de línies per alguna cosa.

Així, si volia trobar la funció default_get() simplement havia d'executar:

cubells@portatil:~/Dades/git/odoo11/src/core/addons/account$ tb py "default_get" ./models/account_payment.py: def default_get(self, fields): ./models/account_payment.py: rec = super(account_register_payments, self).default_get(fields) ./models/account_payment.py: def default_get(self, fields): ./models/account_payment.py: rec = super(account_payment, self).default_get(fields) ./models/account_bank_statement.py: company_id = self.env['res.company']._company_default_get('account.bank.statement').id ./models/account_bank_statement.py: default=lambda self: self.env['res.company']._company_default_get('account.bank.statement')) ./models/chart_template.py: def default_get(self, fields): ./models/chart_template.py: res = super(WizardMultiChartsAccounts, self).default_get(fields) ./models/account.py: default=lambda self: self.env['res.company']._company_default_get('account.account')) ./models/account.py: def default_get(self, default_fields): ./models/account.py: return super(AccountAccount, contextual_self).default_get(default_fields) ./models/account_invoice.py: default=lambda self: self.env['res.company']._company_default_get('account.invoice')) ./models/account_invoice.py: readonly=True, states={'draft': [('readonly', False)]}) #Default value computed in default_get for out_invoices ./models/account_invoice.py: def default_get(self,default_fields): ./models/account_invoice.py: res = super(AccountInvoice, self).default_get(default_fields) ./models/account_move.py: def default_get(self, fields): ./models/account_move.py: rec = super(AccountMoveLine, self).default_get(fields) ./wizard/account_reconcile.py: def default_get(self, fields): ./wizard/account_reconcile.py: res = super(AccountMoveLineReconcile, self).default_get(fields)

Com veieu, perfecte.

Però cercant per la xarxa i per casualitat he vist millors opcions.

La primera ha estat el programa ack. És una meravella com podeu comprovar:

Per instal·lar simplemente heu de fer apt-get install ack.

Avantatges:

  • Apareix el nom de cadascun dels fitxers on està la cadena de manera més clara.
  • Sintaxi amb colors.
  • Apareix el número de la línia on està la cadena.

I aquest va ser el nou programa que vaig adoptar.

Però també de casualitat, em vaig trobar amb un programa que és el que actualment faig servir per cercar: ripgrep.

I quina diferència hi ha entre ack i rg? Doncs la velocitat, la qual m'ha encisat. Ripgrep és molt més ràpid que l'ack, com podeu comprovar per a la mateixa cerca:

És de l'ordre de 5 vegades més ràpid.

Per instal·lar simplemente heu de fer apt-get install ripgrep.

També m'ha agradat molt perquè exclou els fitxers inclosos als patrons dels .gitignore durant la cerca directament, o que fa cerca a fitxers unicode.

Així que m'he creat uns quans alies per cercar a les extensions més comuns que utilitze i no haver de posar-la cada vegada:

$ cat ~/.bashrc | grep rg alias rgp="rg -g '*.py'" alias rgx="rg -g '*.xml'" alias rgc="rg -g '*.csv'" alias rga="rg"

I he afegit una variable al bash per dir-li on està el fitxer de configuració del ripgrep:

$ cat ~/.bashrc | grep RIPGREP export RIPGREP_CONFIG_PATH=~/.ripgreprc

On he especificat aquestos paràmetres generals:

$ cat ~/.ripgreprc ───────┬───────────────────────────────────────────────────────────── │ File: /home/cubells/.ripgreprc ───────┼───────────────────────────────────────────────────────────── 1 │ # Don't let ripgrep vomit really long lines to my terminal. 2 │ --max-columns=150 3 │ 4 │ # Because who cares about case!? 5 │ --smart-case 6 │ 7 │ # Ignore .gitignore message warnings 8 │ --no-messages

He afegit el nombre màxim de columnes, que no faça cas de les majúscules i que no mostre els errors en processar els fitxers .gitignore.

Si voleu una bona comparativa, podeu llegir aquesta web, del creador d'ack, una mica antiquada ja pels canvis al programari, però que us pot donar una idea de quina és la millor eina per a vosaltres.

1 set 2018 - 15:30
Com cada any, organitzo amb Caliu el Dia de la Llibertat del Programari (Software Freedom Day). Farem xerrades i tallers de diversos programes lliures per tal de donar informació a tothom que hi estigui interessat a l’Ateneu La Bòbila de Nou Barris, al carrer de l’Estudiant, 26. Dissabte 15 de setembre 16:15  Presentació de La Continue reading →
31 ag 2018 - 10:33
Instal·lem els paquets: $ sudo apt install cuetools shntool flac Separem els fitxers: $ shnsplit -f file.cue -t %n-%t -o flac file.flac 0
27 ag 2018 - 23:01

Mai no ha estat tan fàcil aconseguir totes les eines que necessites al teu ordinador, per facilitar-te la feina.

Si tens un sistema amb Linux, com en el meu cas, és molt fàcil fer-ho amb l'aplicació Snapd.

La pots instal·lar a aquestos sistemes operatius:

Executant la comanda:

$ sudo apt-get install snapd

i ja està!

Què pots instal·lar-te per convertir el teu ordinador en una estació de trebal potent?

Necessites un entorn integral de desenvolupament?

Però no solament tens accés a IDES, també tens editors de text que són també entorns de programació:

Que no tens prou eines? Doncs pots instal·lar-te'n més:

No en tens prou?

Doncs tots aquestos programes te'ls pots instal·lar simplemente executant:

$ sudo snap install nom_del_programa

Si vols llistar els snaps que tens al teu sistema, simplement has d'executar:

$ snap list Name Version Rev Tracking Publisher Notes android-studio 3.1.4.0 53 stable snapcrafters classic core 16-2.35 5328 stable canonical✓ core

I sis vols desinstal·lar, sols has d'executar:

$ sudo snap remove nom_del_programa

I per acabar, la llista completa de comandes disponibles:

$ snap -help Usage: snap <command> Install, configure, refresh and remove snap packages. Snaps are 'universal' packages that work across many different Linux systems, enabling secure distribution of the latest apps and utilities for cloud, servers, desktops and the internet of things. This is the CLI for snapd, a background service that takes care of snaps on the system. Start with 'snap list' to see installed snaps. Available commands: abort Avorta un canvi pendent ack Add an assertion to the system alias Set up a manual alias aliases List aliases in the system buy Buy a snap changes List system changes connect Connect a plug to a slot disable Disable a snap in the system disconnect Disconnect a plug from a slot download Download the given snap enable Enable a snap in the system find Find packages to install (aliases: search) get Print configuration options help Show help about a command info Show detailed information about snaps install Install a snap to the system interface List snap interfaces interfaces List interfaces in the system known Show known assertions of the provided type list List installed snaps login Authenticate to snapd and the store logout Log out of snapd and the store logs Retrieve logs of services pack Pack the given directory as a snap prefer Prefer aliases from a snap and disable conflicts refresh Refresh a snap in the system remove Remove a snap from the system restart Restart services revert Reverts the given snap to the previous state run Run the given snap command services Query the status of services set Change configuration options start Start services stop Stop services switch Switches snap to a different channel tasks List a change's tasks (aliases: change) try Test a snap in the system unalias Unalias a manual alias or an entire snap version Show version details wait Wait for configuration watch Watch a change in progress whoami Print the email the user is logged in with

Completet.

26 ag 2018 - 09:22

Interessant article de fa un any on l'autor tracta d'explicar l'auge que està tenint el format JSON, en contraposició a la davallada del format XML.

Podeu comprovar com cada vegada es consulta més sobre JSON a StackOverflow en aquesta gràfica:

O també podeu comprovar-ho en ca Google:

Això indica la bona salut que pateix aquest format.

Les raons que expliquen la davallada del format XML són:

  • L'ús obligat del símbols < i >. Cada vegada que s'obre una etiqueta, s'ha de tancar i això fa que hi haja un munt de caràcters que no fan res, fan el document molt gran i, més important, el fan difícil de llegir.
  • L'XML encara que moltes vegades s'usa per l'intercanvi de dades, originalment no es va disenyar per aixó, sinó per a ser un llenguatge de marques.
  • L'XML és confús perquè hi ha un munt de sabors distints: RSS, ATOM, SOAP, o SVG.

El format JSON, en canvi, és fàcilment entenible, tant pels usuaris com pels programes, i solament fa una cosa i la fa senzilla.

Quins poden ser segons tu les raons d'aquesta davallada?

Per mi simplement són formats que van ser creats per a tasques distintes. Però també poden explicar la cada vegada major demanda de procés i intercanvi de dades en la web, en contraposició amb les pàgines on solament es mostren. Aquesta demanda farà que triem un o altre llenguatge i que siga un llenguatge de futur.

Pàgines