El uso de replicate

laravel

Replicate es un método que nos da Laravel para hacer copias de registros en la base de datos, para usarlo basta con esto:

$tareas =Tarea::find(1);
$newTarea = $tareas->replicate();
$newTarea->save();

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

Subir montañas hermana hombres……

Formatos de compresión en Python

logo python

En su mayoría, los lenguajes poseen métodos para compactar archivos. Veamos en este post, formatos de compresión en Python.

zlib y gzip pertenecen a la librería zip de GNU, por su lado  bz2  es compatible con el proporciona acceso al formato zip2 más moderno.

 En ambos casos, estos métodos de compactación de datos en Python, aceptan cualquier  formato de entrada, y al mismo ofrecen  interfaces para leer y escribir archivos comprimidos de forma transparente.

tarfile lee y escribe el formato de archivo Unix.

zipfile funciona con archivos basados en el formato popularizado por el programa de PC PKZIP

Estos módulos, permiten  combinar varios archivos, en un sólo que puede ser manejado como una unidad. 

….. es el tiempo más lento del mundo, cuando va de prisa

R.Arjona

Error «Premature end of data in tag badges line 1 in country_module_list.xml file» en Prestashop 1.6

error prestashop

El error «Premature end of data in tag badges line 1 in country_module_list.xml file», puede aparecer en Prestashop 1.6, de manera imprevista y sin aparente causa.

Este suele venir acompañado de otros errores, en un listado que es más o menos como el que vemos a continuación:

  1. Error found : StartTag: invalid element name in country_module_list.xml file.
  2. Error found : Premature end of data in tag badges line 1 in country_module_list.xml file.
  3. Error found : Premature end of data in tag module line 1 in country_module_list.xml file.
  4. Error found : Premature end of data in tag modules line 1 in country_module_list.xml file.
  5. Error found : CData section not finished Allow the purchase of combinations of products wit in must_have_module_list.xml file.
  6. Error found : Premature end of data in tag additional_description line 1 in must_have_module_list.xml file.
  7. Error found : Premature end of data in tag module line 1 in must_have_module_list.xml file.
  8. Error found : Premature end of data in tag modules line 1 in must_have_module_list.xml file.

La solución a este error es una acción combinada que incluye estos tres pasos:

Eliminar estos archivos en /config/xml 

Limpiar la cache de nuestra tienda

Acceder a al archivo classes siguiendo la ruta public_html/classes y modificar estas líneas.

protected static $is_addons_up = true;
    public static function addonsRequest($request, $params = array())
    {
        return false;
        if (!self::$is_addons_up) {
            return false;

La causa de este error en PS 1.6 parece ser que el servidor de addons(complementos), crea archivos xml, no válidos o no reconocibles como válidos.

Espero que este post ayude a alguien.

Gracias

También yo tengo esos momentos en los que soy asesino, juez y victima.

Y.

TypeError: ‘int’ object is not iterable. Python

python error

El error TypeError: ‘int’ object is not iterable, puede ser lanzado en Python, cuando intentamos iterar dentro de un vector, pero no indicamos un rango de recorrido.

Revisa si tienes algo como esto:

for i in len(vector)

Intenta cambiarlo por esto.

for I in range(len(vector))

Puedes ver aquí la causa del error index out of range

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias

«…..lo que realmente importa no es lo que te da la vida, sino lo que haces con ello….»

Diferencias entre flatten() y ravel() en Python

logo python

Muchas veces las usamos indistintamente pero existen diferencias entre flatten() y ravel(), en Python

Cuando necesitamos convertir un ndarray en un array de una sola dimensión, podemos valernos de algunas de estas dos funciones de numpy, la biblioteca para operar funciones numéricas que Python posee.

flatten() vs ravel()

Las diferencias entre ambas funciones no son muchas, pero existen. Veamos

flatten()

Solo nos retornará una copia del array original, por lo que si modificamos su composición en el transcurso de nuestro código, nos seguirá devolviendo el array inicial

Por otro lado en comparación con ravel(), es más lento y ocupa mayor cantidad de memoria.

flatten() además, es un método propio del objeto ndarray

ravel()

Su resultado es una vista o referencia del array que esta aplanando o convirtiendo, pero si este cambia, al ser una referencia, el también se ve afectado y actualiza su contenido.

Es mucho más rápido y no ocupa memoria.

ravel() actúa como una función, pero esta diseñado como una librería

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias


“Todo como el diamante, antes que luz es carbon”

JMarti

Error grave: error no detectado: llamada a la función no definida mysql_connect ()

error php

Si recibes el error : error no detectado: llamada a la función no definida mysql_connect (), intento explicarte en este post, su solución.

Las funciones de mysql_* se eliminaron a partir de PHP 7.

En su defecto puedes usar: mysqli_connect($mysql_hostname , $mysql_username) en lugar de mysql_connect($mysql_hostname , $mysql_username).

No se recomienda usar la extensión de mysql anterior para nuevos proyectos, ya que al estar obsoleta queda expuesta a problemas de seguridad y compatibilidad serios que arrojarán este error.

Las alternativas que ofrece PHP, son MySQLi y PDO , que es son las que recomiendan los creadores del lenguaje, utilizar. 

PHP ofrece estas tres API diferentes para conectarse a MySQL.

Aquí en un este cuadro tomado de en  it-swarm donde se comparan las API proporcionadas por las extensiones mysql, mysqli y PDO.

Cada fragmento de código crea una conexión a un servidor MySQL que se ejecuta en «example.com» usando el nombre de usuario «username» y la contraseña «password».

<?php
// mysqli
$mysqli = new mysqli("example.com", "username", "password", "database");
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);

// PDO
$pdo = new PDO('mysql:Host=example.com;dbname=database', 'username', 'password');
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);

// mysql
$c = mysql_connect("example.com", "username", "password");
mysql_select_db("database");
$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = mysql_fetch_assoc($result);
echo htmlentities($row['_message']);
?>

Otras dos opciones que tiene, quien no desee actualizar son:

Retornar a la versión anterior de PHP, donde funciona el código, en la 5.5, ya estaba obsoleta la api mysql_* 

Emplear una puente  llamado  mysql-shim, que puede hallar en este link.

La idea es incluirlo en tu código con un include, algo asi como:

include_once("choice_shim.php"); 

Y hasta aquí. Esto es todo y espero haber ayudado a alguien.

Gracias

Es tan corto el amor, y es tan largo el olvido

P. Neruda

El método pop() en Python.

logo python

El método pop() elimina y retorna un elemento de una lista.
Puede emplear un parámetro opcional,  que el índice del elemento que desea eliminar de la lista.

Si no se especifica ningún índice, pop() elimina y retorna el último elemento de la lista.
Si el índice especificado en el método pop() no está en el rango de la lista, lanzara el error- IndexError: pop index out of range exception. 

lista = [1,2,3,4,56,'a','er','soso',False,True]
lista.pop()
output
True

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias

No podía despreciarlo, era el ultimo brindis de un bohemio por una reina

Números de base N y su precisión.

Todos los sistemas numéricos posicionales (números de base-N) comparten el mismo problema de  precisión

La mayoría de los lenguajes de programación, se basan en el estándar IEEE 754.

La cuestión,  es que los números se representan en este formato como un número entero multiplicado por una potencia de dos; los números racionales (como 0.1, que es 1/10) cuyo denominador no es una potencia de dos, no se pueden representar de forma exacta.

Para 0.1 en el formato estándar binario64, la representación se puede escribir en decimal exactamente como 0.1000000000000000055511151231257827021181583404541015625, o 0x1.999999999999ap-4 en notación C99 hexfloat.

Sin embargo, el número racional 0.1, que es 1/10, se puede escribir exactamente como 0,1 en decimal, o 0x1.99999999999999 … p-4, en un análogo de la notación hexfloat C99, donde … representa una secuencia interminable de 9.

Las constantes 0.2 y 0.3  por ejemplo, también tendrán aproximaciones a sus valores verdaderos.

Pero sucede que el doble más cercano a 0.2 es mayor que el número racional 0.2, mientras  que el doble más cercano a 0.3 es menor que el número racional 0.3.

La suma de 0.1 y 0.2 termina siendo mayor que el número racional 0.3.

Un tratamiento bastante completo de las cuestiones de la aritmética de coma flotante puede leerse en What Every Computer Scientist Should Know About Floating-Point Arithmetic, o en floating-point-gui.de, ambos en ingles.

Los números decimales con base 10, tienen los mismos problemas, por ejemplo  números como 1/3 terminan como 0.333333333 .

En la práctica, este problema de precisión significa que se necesita usar funciones de redondeo para redondear sus números de coma flotante a la cantidad de decimales que le interesen antes de mostrarlos.

También debe reemplazar las pruebas de igualdad con comparaciones que permitan cierta tolerancia, lo que significa:

No hacer si (x == y) {...}

En su lugar, haga if (abs (x - y) <mi valor de tolerancia) {...}.

Donde abs es el valor absoluto.,mi valor de tolerancia es un valor que eliges  para tu aplicación,  ( no debe ser una constante de estilo «épsilon») y tendrá mucho que ver con el «margen de maniobra» que estés dispuesto a permitir y cuál será el número más grande que va a comparar.

Mas de cien pupilas, donde vernos vivos …..

J. Sabina

Diferencia entre json.load() y json.loads()

logo python

La diferencia entre json.load() y json.loads(), puede a menudo confundirnos cuando operamos con archivos json desde Python.

He aquí en que se diferencian:

json.load(): deserializa el archivo json, tomando como cadena (string), su contenido y soporta texto y binario, para convertirlo en un objeto Python, siguiendo esta tabla de conversión

JSONPython
objectdict
arraylist
stringstr
number (int)int
number (real)float
trueTrue
falseFalse
nullNone
tabla de conversion de datos json python

json.load()

deserializa el archivo en si mismo, ya que acepta el objeto file(archivo), por tanto acepta esta forma

with open("/abc/data.json", "r") as content:
print(json.load(content))

Esto no podríamos hacerlo con json.loads(), porque lanzaría un error del tipo:

TypeError: expected string or buffer

json.loads()

Deserializa un string, por tanto al usarlo deberíamos pasarle  el contenido del archivo empleando, por ejemplo read().

with open("json_data.json", "r") as content:
print(json.loads(content.read()))

Esto se debe, a que al emplear la función read(), estamos leyendo el contenido de la cadena o string,  y no el archivo como objeto.

Si intentaramos emplear json.load(), para deserializar solo el contenido obtendríamos este error:

with open("json_data.json", "r") as content:
print(json.load(content.read()))
AttributeError: 'str' object has no attribute 'read'

En este link dejo especificaciones sobre su sintaxis

Dicho de otro modo json.load() deserializa archivos y json.loads() deserializa strings.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias

…. hay que levantarse cada mañana con una esperanza y dormirse cada noche con una meta….

Translate »