Variables locais e globais en autolisp

Cando creamos unha función en autolisp deberemos de ser coidadosos de non empregar variables globais. Estas xeran conflitos noutras funcións, e procurar o erro as veces resulta tedioso. En autolisp, se non declaramos a función como local, por defecto será global. Para declarar unha variable como local deberemos de facelo nos parámetros da función. Na seguinte función suma, os parámetros n1 e n2 serven para introducir eses datos na función. A variables n3 é local da función suma. Aínda que queiramos ler o seu valor desde outra función, non será posible.

(defun suma (n1 n2 / n3)
(setq n1 (+ n1 1))
(setq n3 (- n1 n2))
(setq n4 (+ n1 n2))
)

Vexamos o seguinte exemplo. Na función suma introducimos dos valores a través das variables n1 e n2. Concretamente á variable n1 asignámoslle o valor de a e a n2 asignámoslle o valor de b (definidas na función principal io), e a función suma sumámoslle unha unidade a n1, é dicir ao valor de a (2) sumámoslle 1 e quedará 3 . A variable n3 é local, fronte a n4 que é global, e polo tanto un punto crítico na programación

(defun suma (n1 n2 / n3)
(setq n1 (+ n1 1))
(setq n3 (- n1 n2))
(setq n4 (+ n1 n2))
)

(defun c:io(/ a b resultado)
(setq n3 nil)
(setq resultado nil)
(setq a 2)
(setq b 3)
(setq resultado (suma a b))
(princ "\n valor de n3:")
(princ n3)
(princ "\n resultado: ")
(princ resultado)
(princ)
)

Na función principal, o primeiro que facemos é resetear os posibles valores de n3 e n4. Asiámoslle valores a a e b. Non hai motivo ningún polo que deixalas como variables globais, polo tanto definímolas como locais na cabeceira da función, colocándooas á dereita da barra inclinada.

Seguidamente chamamdos a función suma (suma a b), e resultado da mesma gardámolo en resultado:

(setq resultado (suma a b))

Pero que valor gardamos?. Noutras linguaxes de programación pódese definir que parámetro queremos que devolva unha función con return n3, por exemplo. En autolisp non dispoñemos de return, e o resultado dunha función será o último setq que teñamos definido na función:

(defun suma (n1 n2 / n3)
(setq n1 (+ n1 1))
(setq n3 (- n1 n2))
(setq n4 (+ n1 n2))
)

Neste exemplo, o resultado da fucnión é n4, pois é o último setq que se definiu na función. Deste xeito o valor de n4 gardarese na variable resultado, que imprimos posteriormente. Se desde a función principal queremos acceder a unha variable definida como local noutra función, neste caso n3, veremos que non poderemos e a súa vez, teremos claro que o valor que colla non nos vai producir interferencias na variable da función principal no caso de que coincida o nome. Vemos aquí a saída do programa:

Comando: IO

 valor de n3:nil
 resultado: 6

No caso de que queiramos imprimir n4 desde a función principal (ou cambiar o seu valor), poderemos facelo, xa que non especificamos que fose unha variable local, e polo tanto é global. Isto, repito é unha fonte de problemas.

(defun c:io(/ a b resultado)
(setq n3 nil)
(setq resultado nil)
(setq a 2)
(setq b 3)
(setq resultado (suma a b))
(princ "\n valor de n3:")
(princ n3)
(princ "\n valor de n4:")
(princ n4)
(princ "\n resultado: ")
(princ resultado)
(princ)
)

Execución da rutina:

Comando: IO

valor de n3:nil
valor de n4:6
resultado: 6

Solución erro invalid socket do programa Amule

donkey-2761528_640.jpg

Para instalar amule empregamos a seguinte instrución desde root:

apt update

apt install amule

En aparencia o programa queda instalado correctamente, sen embargo obtemos o seguinte erro:

../src/unix/sockunix.cpp(143): assert "m_fd != INVALID_SOCKET" failed in OnReadWaiting(): invalid socket ready for reading?

erro amule.png

 

Sen desinstalar o amule, instala os seguintes paquetes:

apt install libupnp6 libupnp6-dev

Proba a arrancalo de novo. Se non funcionase novamente instala tamén os seguintes paquetes:

apt install libwxbase3.0-0 libwxbase3.0-dev libwxbase3.0-0-dbg libwxgtk3.0-0 libwxgtk3.0-dev
 
Volve a arrancar o programa e xa non aparecerá o erro e funcionará correctamente
 
 

Diminuír o peso dun vídeo e publicalo en Drupal

Aínda que existen moitas maneiras de baixar o peso, é dicir os megabytes dun vídeo, deixo por aquí o método que emprego eu.

1. HandBrake

En Source escollemos o vídeo que desexamos baixarlle o tamaño

source.png

Na pestana Summary indícanos as dimensión que ten o vídeo. Neste exemplo ten 1920*1080 px. Pero ocupa 160 mb. Deberemos de baixarlle o tamaño, basicamente para non arruinarlle o ancho ancho de banda aos usuario que queiran visualizalo.

Pinchamos en Picture

picture.png

En Storage Geometry, baixamoslle o tamaño ata o desexado. Con un width de 512 mantén unha visualización moi boa. Ao ir baixando o ancho, automaticamente xa adapta o alto (height). Tamén deberemos definir o nome do ficheiro e o cartafol de saída. Fixámonos que o Handbrake cambia a extensión a m4v.

novasdimensions.png

Finalmente clic en Start, para que faga a conversión de tamaño. O novo tamaño do vídeo é de 33.4 Mb. Procedemos agora co ffmulticonverter a convertilo nun ficheiro mp4

2. ffmulticonverter

Empregaremos este software para convertir a extensión m4v a mp4. Se non o temos instalado, podémolo facer coa seguinte instrución:

su root

apt install ffmulticonverter

Engadimos o ficheiro que nos gardou o Handbrake. Clic en Engadir. En converter, escollemos a extensión mp4. Eliximos o cartafol de saída. Finalmente clic en Converter.

ffmulti.png

Con este software poderíamos evitar empregar o Handbrake, pois pinchado en Máis podemos observar que podemos cambiarlle o tamaño directamente. Sen embargo entendo que é máis sinxelo co Handbrake.

O tamaño final deste vídeo exemplo é de 13.2 Mb, tamaño máis razonable.

3. Publicalo en Drupal

Creamos un novo contido, tipo páxina.

paxina.png

Engadimos o título da nova. Seguindamente en ficheiros adxuntos, subimos ao servidor o vídeo

ficheirosadxuntos.png

Desmarcamos o check de Lista. Se nos fixamos aparece debaixo do cadro o enderezo URL no cal está publicado o vídeo. Neste exemplo é o seguinte: http://www.edu.xunta.gal/centros/ceiplabartapose/system/files/AS%C3%8D%20SE%20FIXO_1.mp4

 

Subimos novamente e prememos en "Desactivar texto enriquecido"

texto_enriquecido.png

E pegamos o seguinte código, pero en src debemos de inserir a url na cal se atopa o vídeo encomillado

<div>
<video width="512" height="288" controls="controls">
<source src="http://www.edu.xunta.gal/centros/ceiplabartapose/system/files/AS%C3%8D%20SE%20FIXO_1.mp4" type="video/mp4" />
O teu navegador non soporta este vídeo.
</video>
</div>

Finalmente clic en Gardar. E este sería o resultado:

resultado_video.png

Outro software alternativo para diminir o tamaño dun vídeo: DEVEDE

apt install devede

Menú adaptable ao móbil en Drupal 8

mmenu.jpeg

Estes foron os pasos que dei para configurar o menú do paxina para que fose adaptable ao móbil. Como sempre, con seguridade de pode facer doutros xeitos, esta é unha máis:

1. Instalación do mógulo responsive_menu

https://www.drupal.org/project/responsive_menu

2. Instalación e activación dos módulos context e context UI

https://www.drupal.org/project/context

3. Instalación da librería mmenu

cd /var/www/html/tic/drupal/libraries
wget https://api.github.com/repos/FrDH/jQuery.mmenu/zipball
unzip zipball
mv mv FrDH-jQuery.mmenu-e5df2d3 mmenu

4. Instalación da librería hammerjs

wget https://api.github.com/repos/hammerjs/hammer.js/zipball
unzip zipball
mv hammerjs-hammer.js-563b5b1 hammerjs

5. Instalación da librería superfish

wget https://api.github.com/repos/joeldbirch/superfish/zipball
unzip
mv joeldbirch-superfish-442820e superfish

6. Activar responsive_menu

7. Comprobar que en Informes -> Informe de estado temos mmenu, hammersjs e superfish instalados.

8. No apartado de adminsitracion / responsive design, e dentro del en OFF CANVAS
Escribimos main e non Main Navigation, xa que main é o nome que lle da a máquina. Pódese observar na seguinte imaxe:

name-main.png

Onde pon marchine name:main

off-canvas.png

9. En Primary menu engadimos o bloque Responsive menu mobile icon

10. En unha páxina monoligüe, podemos activar o bloque horizontal-menu. Sen embargo, nunha páxina plurilingüe non actializa o menú cada vez que cambiamos de idioma, ao idioma desexado. Neste caso, non activamos o bloque horizontal menu, e introducimos o bloque Main Navigation. Pero a súa vez debemos de configurar con CSS a non visibilidade deste bloque no dispositivos máis pequenos, como nunha tablet ou ben nun smartphone. Engadiremos o seguinte código css:

@media screen and (min-width: 0px) and (max-width: 851px) {
 #block-mainnavigation { display: none; }  /* show it on small screens */
}

E tamén para ver a letras en cor branco

#block-mainnavigation ul li a
{ color: white; }

Non debemos de esquecer que ás veces, ao modificar o código css, debemos de valeirar a caché  para que se poida visualizar correctamente no móbil:

/admin/config/development/performance

valeirar.png

Instalar impresora HP

HP_New_Logo_2D.svg.png

En ocasións mercamos unha impresora HP moderna. Ao chegar á casa lembrámonos que temos que instalala no noso querido Debian. O que máis fastidia é cando a través de cups non a damos instalado, e tampouco atopamos drivers en openprinting....bueno, pensandoo ben, o que máis fastidia é que teñas alguén na casa que che diga..."isto en windows non pasaba"..

A maneira máis sinxela de instalala, ao meu humilde entender é mediante a ferramenta hplip. O primeiro que podemos facer é asegurarnos que a impresora conta cos drivers para linux. Para iso imos as news de hplib:

https://sourceforge.net/p/hplip/news/2018/05/hplip-3185-release-notes/

Seguidamente baixamos a última versión de hplib:

hplib.png

Abrimos o terminal e dirixímonos ao cartafol de descargas. Despois, dámoslle permisos de execución:

cd ~/Descargas

chmod +a hplib-3.16.7.run

E executámolo, pero antes, debemos de escalar os permisos a root:


./hplib-3.16.7.run

erro_dependencias.png

Prememos y, para que engada a despendencias. No modo de instalación escollemos o automatic (a). Confirmamos o nome da Destribución, no meu caso Debian 8.7 (y), seguidamente engadimos a password de root, e prememos un enter. Cando pregunta se instala "/admin/config/development/performance", indicamos y. Seguidamente indícannos as dependencias incrumpridas e aceptamos instalar eses paquetes con un y. O sistema inicia a instalación, sendo un proceso relativamente longo. Finalmente escollemos o modolo de impresora e o porto ou ip de comunicación coa mesma.

Finalmente reiniciamos.

Unha nova páxina de matemáticas

cousenaire

Por unha temporada vou centrarme nas matemáticas de primaria. Como xa sabedes, a mellor de forma de aprender é ensinar, polo que comezo a crear unha páxina web centrada no movemento OAOA. Agardo que vos sexa de interese.

https://oaoa.atio.es

Internet cambiouno todo!

Estamos vivindo unha época de cambio moi forte. Unha época na que ter un título universitario deixou de ser garantía de nada, na que as regras clásicas de como gañarte a vida están en dúbida. Hai moita precariedade laboral e tamén hai un mercado global online no que o inglés abre as portas por completo e no hai moito oco e moitas oportunidades para sacarlle partido ao teu talento e ademais no que toda a formación que poidas querer está dunha maneira ou doutra de forma gratuíta. Internet supuxo un cambio total e a maioría da xente actúa como se non tivera cambiado nada e cambiouno todo.
Jaime Altozano

O vídeo é un recurso maravilloso no ensino. As seguintes páxinas son moi útiles para os alumnos.

https://www.unicoos.com/

https://es.khanacademy.org/

 

Instalar ou actualizar o LibreOffice de maneira sinxela

flatpak

No caso de que xa teñamos LibreOffice instalado e queiramos actualizalo, debemos de eliminar a versión anterior.

1. Abrimos o terminal e escalamos os permisos a root

usuario@debian:~$ su root

(escribimos o contrasinal)

usuario@debian:~$ apt remove --purge libreoffice*

Se despois de desintalar o libreoffice seguen aparecendo iconas do programa no Menú de aplicativos > Oficina, podemos eliminalos desde o cartafol /home/usuario/.local/share/applications/, borrando todos aqueles que comecen por libreoffice

2. Instalamos o libreoffice coa axuda do instalador de paquetes flatpak

Se non o tivesemos instalado na nosa distribución, podemos facelo co Synaptic ou ben co terminal

synaptic

root@debian:/home/usuario# apt update

root@debian:/home/usuario# apt install flatpak

Unha vez que temos o paquete flatpak instalado, procedemos a instalar o LibreOffice:

flatpak install flathub org.libreoffice.LibreOffice

Sen embargo ultimamente devolve un erro. Polo que alternativamente debemos de descarga o paquete flatpak da páxina https://flathub.org/

install.png

Seguidamente, abrimos o terminal, escalamos a root e dirixímonos ao cartafol de descargas e procedemos coa instalación do software empregando a seguinte instrución:

flatpak install org.libreoffice.LibreOffice.flatpakref

 

 

Como instalar fontes en Debian

Se queremos engadir fontes diferentes ao Debian, o primeiro é buscalas.

http://openfontlibrary.org/

http://www.theleagueofmoveabletype.com/

http://ospublish.constantvzw.org/foundry/

https://fonts.google.com/

 

Por exemplo as fontes de Google:

https://fonts.google.com/

 

Podemos filtralas por gustos. Imaxinamos que procuramos unha fonte de escritura a man:

categorías

Seguidamente pinchamos en + no modelo de letra que nos guste:

seleccionar

E aparece una nova fiestra. Nesta temos varias opcións, xa que este modelo de letra tamén o podemos engadir a unha páxina web. Sen embargo pinchamos no logo de descarga:

download

Agora debemos de descomprimir o ficheiro de descarga:

 

Debemos de copiar o cartafol resultante (neste exemplo Architects_Daughter) no cartafol /usr/share/fonts. Sen embargo un usuario non ten dereitos de escritura nesa ruta, polo que debemos de abrir o explorador de ficheiros co perfil de usuario root. Para isto seguimos os seguintes pasos:

1. Copiamos o cartafol que acabamos de descomprimir:

copiar

2. Abrimos o terminal

abrir o terminal

3. Logueámonos como root

usuario@debian:~$ su root

E escribimos o contrasinal. Debemos de ter en conta que non aparece nada na pantalla ao escribir, sen embargo está collendo de todos os xeitos os caracteres do contrasinal.

4. Abrimos o thunar, pero con permisos de root

root@debian:/home/usuario# thunar

Agora poderemos abrir, copiar ou borrar calquera ficheiros ou cartafol do sistema, coas consecuencias que isto conleva.

thunar root

Se o desexamos tamén podemos empregar o nautilus:

root@debian:/home/usuario# nautilus

5. Diriximonos á ruta /usr/share/fonts/truetype/ e pegar o cartafol que copiamos anteriormente:

fonts

6. Demos de rexenerar a caché das fontes para que apareza dispoñible. Podemos rexenerala co terminal, empregando a instrución seguinte, ou ben simplemente reiniciando o equipo:

fc-cache -f -v

Abrimos o libreoffice writer, por exemplo,  e comprobamos que xa podemos seleccionar a fonte que acabamos de instalar.

seleccionar fontes

 

E este sería o resultado:

resultado

 

Derrotados son aqueles que baixan os brazos

Body
Texto

Se es novo tes que saber isto:

A vida escápaseche -e vaise- minuto a minuto e non podes ir ao supermercado mercar vida!
Entón, loita por vivila! Por darlle contido á vida!

A diferenza da vida humana ás outras formas de vida é que ti podes darlle (ata certo punto) unha orientación a túa vida. Ti podes (en termos relativos) ser autor do camiño da túa propia vida. Non es como un vexetal que vive porque nacestes.
Despois de nacer podes darlle un contido...ou non. Ou podes perder a razón da túa vida, e que cha merque o mercado. E pásaste toda a vida pagando con tarxetas e mercando cacharros e dáslle para adiante e ao final, despois, estás vello coma min. Todo cheo de reumatismo, roubásteste, e ¿que fixeches neste mundo?

Pero se tiveches un soño, e pelexastes por unha esperanza e intentastes permitir aos que quedan, tal vez quede un pequeno alento rodando polos outeiros, nos mares. Un pálido recordo que vale máis que un monumento, que un libro, que un himno, que unha poesía. A esperanza humana que se vai realizando nas novas xeracións.

Compañeiros! Nada vale máis que a vida, loiten pola felicidade! E a felicidade é darlle contido á vida! E rumbo á vida! E non deixar que cha rouben. E para iso non hai receita, está aquí, na conciencia, se es ousado ou empregas a marabillosa oportunidade de ter nacido, case milagrosa.

Polo demais,un segundo consello aos mozos:
O “imposible” custa un pouco máis, e “derrotado”, derrotados son só aqueles que baixan os brazos, e entréganse. A vida pode darche mil tropezóns en todos os aspectos: no amor, no traballo, na aventura do que estás pensando, nos soños do que queres concretar. Pero unha e mil veces, estás feito con forza para volver a erguerte e comezar de novo, porque o importante é: ¡o camiño!

Non hai unha meta! Non hai un arco do triunfo, non hai un paraíso que nos recibe. Non hai odaliscas que te van a recibir porque morrestes na guerra. Fastidiáchela e punto. Non, o que hai é outra cousa. É a fermosura de vivir a tope. De querer a vida -en calquera circunstancia- e loitar por ela e intentar transmitila.

Porque a vida non é só recibir, é antes de nada, dar algo do que temos, e por fodido que te atopes, sempre tes algo para darlle aos demais.

José Mujica