martes, 16 de marzo de 2021

El Oumuamua y la Covid-19

 En estos días me vino a la mente una idea que podría parecer estúpida pero no por eso deja de ser interesante, aunque sea para especular. 

El objeto Oumuamua sí era una nave de otra civilización, pero era una nave no tripulada y con un propósito específico. Posiblemente la construyó una raza similar a la humana pero mucho más avanzada tecnológicamente aunque no tan lejos de nosotros, a lo sumo unos 500 años. Ellos están buscando exoplanetas habitables en todos lados y vieron una opción en la tierra pero para poder habitarla primero tendrían que eliminar a los humanos y que mejor manera de hacerlo que con un virus.

Piensa en eso, la mejor manera de eliminar a una raza extraterrestre es mediante agentes biológicos. Lo único que necesitas es tiempo y eso es algo que les sobra a los extraterrestres. Posiblemente ya vienen en camino y para cuando lleguen a la tierra ésta estará deshabitada y solo quedaran los restos de la civilización que exterminaron. A lo mejor los animales sobreviven pero ¿quien lo asegura? 

La Covid-19 ha resultado ser un virus muy versátil, se ha modificado en variantes más contagiosas en muy poco tiempo, la inmunidad de los sobrevivientes es corta y muchos se han contagiado más de una vez y por si fuera poco el virus ha logrado saltar a animales como gatos, perros, visones, tigres y posiblemente más.

Mi hipótesis que la covid-19 es un arma arrojada por el Oumuamua para exterminar una raza y así preparar el planeta para una colonia que viene en camino y que llegara en unos 100 años aproximadamente.

domingo, 8 de noviembre de 2020

SOAP con PHP en pleno 2020

 Hola, me animé a hacer unos vídeos abordando como hacer un SOAP service en PHP. Están en youtube:



Parte 1

Parte 2

jueves, 22 de octubre de 2020

Using Custom Property Attributes in C#

 Hi, in this post I want to share what I learned just today.

Well, I had to create an excel file and that's very common right? The problem for me was that I couldn't use bad practices like put the column name as raw. The solution was pretty simple: Custom Attributes.

If you prefer it, you can go to the code:

https://gist.github.com/Lvcios/2e460783e9b72e628b7f6da440f2a4ac

 

If you are still here thanks. I'm not going to explain so much about System.Reflection which is the class that let us do this.

So, this is our row model and we are gonna use the custom attributes for the headers.

class ClientsExcelReport
    {
        [ExcelColumnName("Nombre del cliente")]
        [ExcelColumnComment("Algun comentario tonto sobre la columna")]
        public string ClientName { get; set; }
        [ExcelColumnName("País")]
        public string ClientCountry { get; set; }
        [ExcelColumnName("Edad")]
        public string Age { get; set; }
        public string Status { get; set; }
    }


Now, the attribute class for each attribute:

public class ExcelColumnNameAttribute : Attribute
    {
        public ExcelColumnNameAttribute(string columnName)
        {
            ColumnName = columnName;
        }

        public string ColumnName { get; }
    }

    public class ExcelColumnCommentAttribute : Attribute
    {
        public ExcelColumnCommentAttribute(string comment)
        {
            Comment = comment;
        }

        public string Comment { get; }
    }


Finally, the main function:


static void Main(string[] args)
        {
            var properties = typeof(ClientsExcelReport).GetProperties();
            foreach(var prop in properties)
            {
                Console.WriteLine($"Prop name: {prop.Name}");
                if(Attribute.IsDefined(prop, typeof(ExcelColumnNameAttribute)))
                    Console.WriteLine(prop.GetCustomAttribute<ExcelColumnNameAttribute>().ColumnName);
                if (Attribute.IsDefined(prop, typeof(ExcelColumnCommentAttribute)))
                    Console.WriteLine(prop.GetCustomAttribute<ExcelColumnCommentAttribute>().Comment);
                Console.WriteLine("**************");
            }
        }



domingo, 12 de julio de 2020

La Lista Negra del SAT

Hace años que no posteo en el blog pero aprovecharé que ya tiene cierto potencial apareciendo en búsquedas como "semáforo pic" y "master programmer" y cosillas de electrónica digital.

Bueno, les presento un proyecto en el que ando trabajando actualmente y que surgió a partir de las necesidades de mi chamba actual. Al momento que escribo este post me encuentro desarrollando sistemas que ayudan a la contabilidad de la empresa así como a validar facturas y cosas así. En fin, una de las validaciones que hacemos al momento de subir una factura es verificar si el emisor está en la lista negra del SAT.

Pero... ¿Por que es importante realizar esa validación? Ah pues porque básicamente si alguna de las personas físicas o morales con las que hiciste negocio y facturaste está en esa lista entonces tu no puedes realizar correctamente tu declaración de impuestos y muchísimo menos apelar una devolución de los mismos. Es como el refrán, dime con quien andas y te diré quien eres.

Bueno, ya mucho bla bla bla. Les  dejo el enlace al portal:

https://lalistanegradelsat.com.mx/



Tiene un endpoint para una API REST y otro  para un webservice SOAP para la vieja guardia de los cuales hablaré en otro post.

Por el momento solo deja hacer 10 búsquedas por dos cosas:
1. No tengo tanto dinero para pagar un ancho de banda muy alto
2. Quiero obtener un cliente al menos para poder costear el server que está en Digital Ocean

Ya, eso era todo. En un próximo post hablaré del aspecto técnico. Solo puedo adelantar que use C# con netCore, React con Typescript y PHP para el webservice SOAP... ah verdad esa no se la esperaban.

lunes, 10 de febrero de 2020

Cómo usar jquery y vanilla js en Laravel con WebPack

Laravel por defecto usa webpack para administrar las librerias del front tales como React, VueJs, Angular, Jquery, etc. ¿Pero que pasa cuando queremos usar funciones de vanilla js? Probablemente nos encontremos un mensaje indicando que la función no está definida. Por fortuna, Laravel usa algo que se llama LaravelMix.

LaravelMix nos ayuda a mezclar y minificar todos nuestros archivos JS. Entonces, para poder usar Jquery y Vanilla JS en Laravel nuestro archivo webpack.mix.js debe lucir de la siguiente manera:


const mix = require('laravel-mix');
.
.
mix.scripts(['resources/js/models/invoiceModel.js'], 'public/js/models.js')
mix.copy('node_modules/jquery/dist/jquery.min.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css');

Aquí lo importante es la instrucción mix.scripts. Dicha función recibe un arreglo con los paths de nuestros archivos JS para mezclarlos y minificarlos en la ruta que se le indica en el segundo parámetor.

Por ejemplo, mi archivo invoiceModel.js contiene una función así:


function hello(){
    alert("hello")
}

Laravel Mix toma ese archivo como un JS no compilable y lo mezcla en un archivo model.js:













Y para Jquery, bueno, aquí solo hace una copia del path donde está jquery instalado, en este caso la instalación se hizo usando NPM, por eso está en node_modules. De esa manera ya se pueden usar todas las funciones de jquery:






 Bueno, eso es todo. Si requieren más detalle dejen sus comentarios para aclarar dudas vía correo o skype. Saludos.