Programación

programacion

La programación es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. El código fuente es escrito en un lenguaje de programación. El propósito de la programación es crear programas que exhiban un comportamiento deseado.

Subcategorías

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado

Hoy me recomiendan ver este proyecto en github.La verdad es guia muy interesante para aprender utilizar las nuevas caracteristicas de PHp, para mejorar nuestro código como programador

Valor del parámetro predeterminado de la función

Ya conociaos que podemos poner un valor predeterminado a un parametro de una función:

 fuction miFuncion ( $parametro = 'default'){ 
.... 
}

Con esto le indicamos que aunque no pasemos el $parametro, su valor va ser 'default'

Pero si al llamar a esa función y le enviamos un null o una variables indefinida

 miFuncion( $a);

El log PHP no muestra una advertencia: variable indefinida $ undefined

Declarar tipo de un parametro de una funcion

Con la declaración de tipo, puede especificar el tipo de datos esperado para una propiedad que se aplicará en tiempo de ejecución. Admite muchos tipos, como tipos escalares (int, string, bool y float), pero también array, iterable, object, stdClass, etc.

 fuction miFuncion ( int $parametro = 'default'){ 
.... 
}

Si no enviamos un entero , entonces nos da un error seria algo asi:

// TypeError: miFuncion(): Argument #1 ($param) must be of type int, string given

Esto puede ser muy útil, para controlar mejor lo que enviamos.

Declarar el valor a devolver por la funcion

A la hora de crear una funcion podemos indicar que vamos devolver, de la siguiente forma:

 fuction miFuncion ( $parametro = 0) : int { 
.... 
}

Entonces si devolvemos algo distinto a un int, no daría el siguiente error:

// TypeError: myFunction (): El valor devuelto debe ser de tipo int, cadena devuelta

... [continuara]

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

Un programador debe saber trabajar con sesiones, sobretodo si desarrollas páginas web ya que soy muy útiles y muy necesarias.

Las sessiones en PHP se usan para pasar datos entre paginas del mismo servidor. Normalmente estos datos se guardan en ficheros en el servidor y si lo permite en el navegador en forma de cookie, por defecto esa cookie la llama PHPSESSID, aunque el programador lo puede cambiar.

Funciones de php para trabajar con sesiones

Puedes ver información y mas completa de estas funciones en manual oficial de php, yo aquí voy poniendo las que vamos utilizando.

funcion session_start()

Con esta función abrimos una session creandola o reanudando.

session_start();

Cuando crea una nueva sesion, también crea un fichero en el directorio sessiones de php con el nombre 'sess_idsession', el prefijo 'sess_' el que viene por defecto en la instalacion php, pero se puede cambiar, alguial que la ruta del directorio donde se guarda el fichero.

Cuando reanuda una session existe en el directorio. obtenermos los datos de $_SESSION. Si no tenemos activa ninguna session la variable GLOBAL $_SESSIONES esta vacía.

El concepto iniciar o reanudar lo hace internamente php, ya que si ejecutamos session start() internamente php comprueba si hay alguna y si no hay  genera una nueva.

Si forzamos el abrir una sesión existente, obtenemos los datos $_SESSION que tuviera ese fichero reanudado.

session_id('idsession');
session_start();

Ejecutando las funciones anterirores, es la forma forzar a reanudar una sesión existente, abriendo  la session_id('idsession'), recuerda que lógicamente tiene existir el fichero y tienes que tener permiso acceso ( tuvo que ser creado por el mismo usuario), ese fichero tiene el nombre con el prefijo sess_idsession.

Recuerda que script solo puede actuar sobre una session cada vez, por ello php guarda y cierra la session cada vez termine el script.

Realizando pruebas:

Como siempre tenemos que probar las cosas si funcionan, lo hacemos y ademas intentamos darle mas vuelta (nuestro mini hackeo).
Para poder hacer esto, creamos un pequeño script en php, lo publico github gist text-sessiones.php.

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado

Lo primero que es saber que no se tiene instalar absolutamente ningún plugin y componente, es simplemente un override de la plantilla de virtuemart de orders en los ficheros:

- html/com_virtuemart/orders/detail.php
- html/com_virtuemart/orders/details_item.php

En fichero de detail añadimos:

    
<input type="hidden" name="task" value="add"/>
    <input type="hidden" name="option" value="com_virtuemart">
    <input type="hidden" name="view" value="cart">
    <input type="hidden" name="Itemid" value="101">
</form>

 En fichero de details_items.php añadimos esta input ocultos:

<input type="hidden" name="virtuemart_product_id[]" value="<?php echo $item->virtuemart_product_id; ?>">
<input type="hidden" name="quantity[]" value="<?php echo $qtt; ?>">

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado

Si queremos aprender html ,primero un poco teoria, suele ser la parte que menos gusta, por este motivo no me voy enrrollar mucho.

¿Que és y para que sirve html ?

HTML es un lenguaje de marcado que se utiliza para el desarrollo de páginas de Internet, son las siglas "Lenguaje de Marcado de Hipertexto" (ingles) se utiliza para estructurar y desplegar una página web y sus contenidos, con imagenes y todos sus componentes.

¿Por qué le llaman un lenguaje de etiquetas?

Porque HTML utiliza etiquetas de marca , que consisten en un corchete izquierdo( < ), (el símbolo "menor que''), al que sigue el nombre de la etiqueta y cerrado por un corchete derecho( > ).

 ¿Cuales son las etiquetas que hay en html5 ?

Realmente no se cuantas son, pero no son muchas. Se puedes consultar en wikipedia la pagina html5 que tiene un listado ellas.

 Un poco de práctica con videos.

Un video sencillo que enseña hace una pagina web

Video que encontre en el canal FalconMaster, os recomiendo visitar su blog , lo tiene muy bien organizado y muy bueno su contenido.

Otro video que podemos ir haciendo como practica, esta vez de la academia-x

 

Para empezar está bien...

 

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

Introducción

Laravel es uno o el mas famoso framework de php en estos momentos, cuando un amigo me ofreció hacer un curso de express de 15 días, una hora, lo acepte, y aquí voy poniendo mis anotaciones.

Requerimiento para instalación Laravel.

Para instalar Laravel 8.x debes tener en cuenta los siguientes requerimientos.

- PHP >= 7.3
- Composer
- npm
- node.js

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado

Revisando esta web https://decodecms.com/ que su fundador Jhon Marreros Guzman lo seguía hace muchos años en el monitoJoomla, el cual abandono para unirse webempresa, por ciento que blog monitoJoomla debe estar hackeada. :-)

Al tema, como hacer nuestra modificaciones en un tema , sin que nos afecte para cuando actualicemos. En este link: https://decodecms.com/crear-un-child-theme-en-wordpress-de-manera-correcta/ como siempre Jhon Marreros lo explica muy bien.

Nos explica como crear un tema hijo de nuestro tema, para quepodamos modificaciones.

Tambien nos explica como utilizar el fichero style.css para poner nuestro css.

No habla del fichero functions.php, para cargar el css del tema padre

Precisamente este fichero es el tocamos en una web en la que estamos trabajando que NO nos carga el fichero style.css

Modificaciones que realizamos

function theme_enqueue_styles() {
    wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css' );
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );

function avada_lang_setup() {
	$lang = get_stylesheet_directory() . '/languages';
	load_child_theme_textdomain( 'Avada', $lang );
}
add_action( 'after_setup_theme', 'avada_lang_setup' );

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado

Curioseando en grupo de programadores de telegram, recomienda a una persona que pregunta como empezar a programar las siguientes aplicaciones:

  • Grasshopper
  • Mimo
  • Sololearn

Como soy muy curioso me puse a probar grasshopper, de entrada me encuentro que con la version del navegador de Mozilla  que utilizo en debian, no funciona, asi que tuve probarla con chrome, ya que  esta aplicacion segun parece pertenece a google.

Es una forma muy interactiva de aprender a programar. :-)

 

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

Esto es una traduccion del post de virtuemart de Release VirtueMart 3.8.8

Publicado: 29 de enero de 2021

Aquí hay algunas palabras del líder de VirtueMart (Max Milbers):

"Estos son tiempos revueltos. Por un lado, la vida cambió por completo para la mayoría de los miembros, ofreciendo nuevas oportunidades. En mi caso, actualmente estoy muy ocupado con los problemas de bloqueo. Literalmente, conseguir una simple solucion de un gran problema que requiere mucho tiempo. La política divide a las personas y los negocios. Recibí preguntas indirectas, preguntando si VirtueMart va a tomar medidas con respecto a su 'uso político correcto'.

Cuando me uní a VirtueMart, mi objetivo era crear un sistema de tienda gratuita para la gente. VirtueMart es un sistema de código abierto gratuito para cualquier persona. Ningún miembro de la comunidad puede controlar lo que vendes con él. No es nuestra responsabilidad. Personalmente creo en la buena voluntad de las personas y que nadie debería juzgar a los demás sin andar con sus zapatos por un tiempo. Nosotros, la comunidad VirtueMart, tenemos miembros en todo el mundo. ¡Mantengámoslo de esa manera! "

Ahora volvamos a VirtueMart. Ya intentamos hace un año crear una nueva plantilla de administración. Esta vez, nuestra miembro del equipo, Valerie Isaksen de alatak.net, rompió los obstáculos y encendió un nuevo fuego para la nueva plantilla de administrador. La plantilla anterior se fusionará más tarde con la nueva plantilla y se proporcionará como estilo o tema (no será exactamente el mismo). La nueva plantilla de administración se proporciona actualmente como plantilla de backend. Los actualizadores deben usar nuestro paquete (use el gran botón azul de descarga) para obtener la nueva plantilla de administración. Puede instalar el paquete sobre su instalación actual. Garantiza que también obtenga los últimos tcpdf y vmbeez. Pero también puede extraerlo e instalar vmadmin.zip. De esta forma se asegura que los cambios en la plantilla de backend no interfieran con ninguna instalación productiva.
Diseño de plantilla de interfaz de administrador actualizado

Hay una nueva plantilla de administrador disponible para pruebas que mejora la apariencia y usabilidad de dispositivos móviles y de escritorio para administradores de tiendas.

Los iconos modernos se utilizan para representar funciones clave y dar a la interfaz una apariencia más limpia.

Los comentarios nos dicen que las características principales y la flexibilidad de configuración siguen siendo un aspecto central de por qué VirtueMart es una excelente opción para el comercio electrónico de Joomla.

Por lo tanto, esta es una actualización de la interfaz de usuario de la plantilla y no un rediseño completo de las páginas de administración. Los propietarios de tiendas seguirán encontrando la información y las configuraciones de su negocio en el mismo lugar.

Se ha modificado ligeramente el aspecto de una pequeña cantidad de pantallas de configuración mediante el uso de iconos y proporcionan una alineación más consistente de características / nombres de campo con entrada / selección.

nueva plantilla virtuemart ordes administrador

 

Reflejos

  • Barra lateral
    • Funcionalidad de alternancia de apariencia más limpia.
    • Está completamente oculto y disponible mediante la alternancia de diapositivas o superposiciones en todas las vistas, lo que brinda más espacio para mostrar la información.
  • Móvil / Tableta:
    • Las pantallas de lista para la mayoría de las funciones de administración de VM ahora se ajustan de manera efectiva.
    • Las selecciones de funciones (filtro / búsqueda) se muestran correctamente.
    • La alineación del nombre del campo con la selección / entrada facilita la visualización en el escritorio y mejora significativamente la interfaz de usuario en dispositivos móviles / tabletas.
  • General
    • Uso general mejorado de iconos.
    • Selecciones de pestañas más limpias para configuraciones de varias páginas.
    • Los selectores simples de radio sí / no ahora se alinean con el aspecto de la interfaz de usuario de Joomla.
    • Visualización y carga de imágenes: pequeñas mejoras en el cambio de diseño de productos / categorías / fabricantes y medios.

nueva plantilla virtuemart orde administrador

 

Nuevas funciones, mejoras, correcciones

Mejorado o nuevo

  • Actualización de pago de Skrill
  • La tienda eliminada es una función fuera de línea. En su lugar, se agregó un enlace que muestra mejores posibilidades para hacer eso (usando joomla o modo catálogo).
  • Restricción de envío / pago mediante Cupón
  • Nota de pedido adicional. Solo una simple nota para pedidos para uso interno.
  • La lista de pedidos busca ahora también la nota_cliente y la nota_pedido
  • La lista de pedidos ahora también se puede filtrar por proveedor
  • Nuevas opciones de almacenamiento de carros (actualmente por configuración oculta)
    1. #CartsDontSave = 0 // no guarde los carritos para los compradores registrados
    2. # CartsDontSaveByshoppergroup = 50 // no almacene carritos para los compradores de este grupo de compradores
    3. # CartsDontSaveCartFields = 1 // no guarde los campos del carrito cuando almacene un carrito para un comprador
  • La función de modelo de pedido getOrder carga ahora todos los datos del estado de un pedido (interesante para los templaters)
  • Filtro de categoría múltiple para la lista de productos en el backend. Deshabilitado de forma predeterminada, actualmente puede habilitarlo mediante la configuración oculta AllowMultipleCatsFilter = 1

Nuevo para desarrolladores

  • nuevo patrón si se da una matriz, y necesitamos el primer elemento, entonces usamos ahora restablecer y no el elemento 0.
  • Nuevo activador en storeProductCustomfields, para campos personalizados eliminados.
  • Se agregó la función "andWhere" al parámetro de la función de carga VmTableXarray, se agregó la función loadOrderingCurrentItem
  • VmTable orden limpiado, función agregada loadOrderingCurrentItem
  • Compatibilidad con PHP 8, aún pueden ocurrir errores.

Arreglos

  • Pedido de productos
  • Todas las advertencias desagradables como "Advertencia: Parámetro 1 para plgVmShipmentWeight_countries :: plgVmOnSelectCheckShipment () se espera que sea una referencia, valor dado en /var/www/vhosts/..../libraries/joomla/event/event.php en la línea 70"
  • el tiempo para los cupones es a partir de ahora no "AHORA" sino "timestamp_utc"
  • Arreglo para 1054 Columna desconocida 'Array' in 'donde cláusula después de la actualización a 3.8.6 http://forum.virtuemart.net/index.php?topic=145855.30 Arreglo para ordenar productos si se muestran productos de subcategorías
  • Los enlaces de detalles del pedido en el correo electrónico consideran el caso, que ni el enlace de invitado ni el registrado están establecidos
  • Característica que los usuarios registrados deben activar ellos mismos
  • getUserInfoInUserFields obteniendo los datos de usuario correctos de Joomla por ID dado
  • Mensaje de error de carrito faltante en js
  • Falta '' para VMPATH_ROOT constante en el script del instalador
  • Se eliminó \ n inútil en la descripción de la tienda de muestras
  • getVendorAddressFields cuando un administrador y un proveedor editan a otro proveedor.
  • El modelo de categoría llama a clearCategoryRelatedCaches
  • idioma del complemento de envío en la vista de pedidos
  • agregado elegidoDropDowns en el carrito de compras predeterminado
  • pequeña solución para cartlayout personalizado
  • Años de copyright actualizados, variables renombradas y otros menores
  • Se corrigieron muchas advertencias del tipo "Desaprobado: el parámetro obligatorio $ isSite sigue al parámetro opcional $ selectedCategories en /var/www/vhosts/.../administrator/components/com_virtuemart/helpers/shopfunctions.php en la línea 652". Entonces ya estamos preparados para PHP8.

 

 

 

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado

Akkeba Backup para wordpress, pienso que es la mejor opción por lo que he probado hasta ahora.

Hace tiempo provee este otro plugin  muy conocido en la comunidad wordpress que es All in One migration , un cliente me paso una copia de su web (815MB) para hacer unos cambios, la copia la realizo el cliente con ese plugin.

Entonces yo tuve que instalar un wordpress con ese plugin para poder importar el fichero que me paso, la información la encontré en esta web que lo tiene muy bien explicado.

En el momento de realizarlo me surgieron una serie dudas y problemas.

1.- Si la version que me pasa el cliente es mucho inferior a la que instale, que sucede ...

2.- Al ser una web tan pesada tuve cambiar php.ini de mi servidor.

Una vez terminada, el usuario que haya creado en la instalación del wordpress pelado  creo que dejará funcionar una vez hagas importacion y tendrás que utilizar el usuario de la copia que importaste.

Problemas con la url en servidor local.

Wordpress tiene un sistema de reescribir url  que ne local siempre me da muchos problemas.

Lo que hice fue activar el mod_rewrite de apache en mi Debian, tal como dice en esta pagina de digitalocean

Me surge una duda en la "Paso 2: configuración de .htaccess" a la hora modificar el fichero de configuracion, ya mi servidor apache local está multisite y tengo varios ficheros de configuracion y entonces el que creo que debo utilizar me aparece lo siguiente:

 < VirtualHost _default_:80 >
	# The ServerName directive sets the request scheme, hostname and port that
	# the server uses to identify itself. This is used when creating
	# redirection URLs. In the context of virtual hosts, the ServerName
	# specifies what hostname must appear in the request's Host: header to
	# match this virtual host. For the default virtual host (this file) this
	# value is not decisive as it is used as a last resort host regardless.
	# However, you must set it for any further virtual host explicitly.
	#ServerName www.example.com

	ServerAdmin webmaster@localhost
	DocumentRoot /home/miusuario/www
	ServerName miusuario.midominio.es
	ServerAlias 192.168.4.3 localhost homer

	< Directory / >
		Options FollowSymLinks
		AllowOverride None
	< /Directory >
	< Directory /home/miusuario/www/ >
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Require all granted
	< /Directory >
	<  Directory /home/miusuario/www/Clientes/Micliente/worpress/ >
		Options Indexes FollowSymLinks
		AllowOverride None
		Require all granted
	< / Directory >

	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
	# error, crit, alert, emerg.
	# It is also possible to configure the loglevel for particular
	# modules, e.g.
	#LogLevel info ssl:warn

	ErrorLog ${APACHE_LOG_DIR}/miusuario_error.log
	CustomLog ${APACHE_LOG_DIR}/miusuario_access.log combined

	# For most configuration files from conf-available/, which are
	# enabled or disabled at a global level, it is possible to
	# include a line for only one particular virtual host. For example the
	# following line enables the CGI configuration for this host only
	# after it has been globally disabled with "a2disconf".
	#Include conf-available/serve-cgi-bin.conf
< / VirtualHost >

La cuestion es que puse jugar un poco y me dio un error el wordpress con una pagina en blanco, lo explica muy bien en siguiente link. En ella nos dice que puede ser del ficheto htaccess y muchas mas opciones.

Me parece interesante lo que habla configuracion para dectetar errores.

 

 

 

 

 

Bueno, la cuestion es que encontre esta web donde lo explica un poco bien,