Archivo de la categoría: Open Source

Mascotas Perdidas Py

2 de Enero

Este es un post que ya debería de haber escrito hace mucho, bueno, suficiente sentimentalismo y culpa, al proyecto.

8 de Enero


Lo primero es crear un repositorio, esto lo hago en https://github.com/p431i7o/mascotas-perdidas-py , de momento este repositorio está marcado como privado, pero al momento de publicar los artículos ya estará como público.

Luego sigue crear una carpeta localmente donde montar el proyecto Laravel y correr los comandos para instalar paquetes


Esto es para crear el proyecto, lo muestro netamente para demostración

composer create-project laravel/laravel mascotas-perdidas-py

Esto instalará los paquetes php que necesita el framework para funcionar

composer install

Esto va instalar los paquetes javascript que necesita el proyecto

npm install


Y esto construirá las versiones compiladas (realmente minimizadas) de los paquetes javascript que se expondran en public, por detras corre un programa llamado vite, que vino a reemplazar al webpack que se usaba en versiones anteriores.

npm run build

16 de Enero

Probamos si funciona el proyecto ejecutando:

php artisan serve

y corroboramos en el navegador

Visualización del proyecto corriendo con el artisan serve

A continuación toca definir nuestras estructuras de datos.

Vamos a necesitar una tabla para registrar a nuestros usuarios, y en este punto quiero recordar que Laravel ya viene con algunas tablas listas para migrar y usar estas son:

Migraciones que ya vienen con Laravel

Lo siguiente es crear la base de datos desde nuestro DBM, en mi caso es pgAdmin para postgres, pero deberian poder hacer lo mismo con MySQL, el nombre que elegí para la base de datos es mascperdorgpy y luego editar nuestro archivo .env (que es el que guarda las configuraciones del sistema y seteamos lo valores de base de datos de acuerdo a las credenciales que tengamos, en mi caso:

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=mascperdorgpy
DB_USERNAME=postgres
DB_PASSWORD=<passwordMegaUltraSecreto>

También podemos aprovechar y setear un nombre para la App en la variable
APP_NAME="Mascotas Perdidas Org Py"
Recordar que el valor que se asigna en el .env tiene algun espacio, conviene que vaya entre comillas, pues sino puede producir un error o tomar solo la primera palabra.

Revisando la primera migracion, la llamada create_users_table.php podemos observar que contiene:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email',255)->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
            $table->softDeletes();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
};

Vemos que para la tabla users, tiene unos campos básicos, a estos campos agregaremos unos más que necesitaremos en el proyecto, como ser dirección, teléfono, etc (que podrán ser nulos, pero es importante poder contar con ellos dada la naturaleza de nuestro sitio)

$table->string('address',250)->nullable();
$table->string('city',250)->nullable();
$table->string('phone')->nullable();
$table->boolean('active')->default(true);

Con eso cerramos este día, en la siguiente entrada tocará elegir un método de autenticación, tendremos para elegir entre los diferentes starter kits de laravel, entre ellos está Breeze, Jetstream y Fortify.

Mascotas Perdidas Py – Parte II

17 de enero

Siempre que leo las diferentes formas de autenticar con Laravel, termino yendo al que mejor entiendo, pero también uno un chiqui complicado: Fortify

¿Por qué? No hay porque…

Hablemos un poquito de Fortify

Fortify es un sistema que se usa en el backend (tras bambalinas) de autenticación agnóstico al frontend (eso significa que el registra las rutas para los diferentes procesos: login, registro, cambio de contraseña y verificación de la cuenta) y nosotros debemos de programar las diferentes interfaces, que es algo que a mi me gusta, porque nos da flexibilidad aunque a costa de un poco más de trabajo.

Antes de seguir, voy a crear una nueva rama para el proyecto de modo a que todo lo relacionado con autenticación y registro esté en ella y esté disponible más adelante para ser revisado por ustedes.

git checkout -b fortify-auth

Bueno, continuemos, primero tenemos que incluir fortify a nuestro proyecto, eso lo hacemos ejecutando:

composer require laravel/fortify

Esto incluira en nuestro achivo composer.json los datos de la ultima version estable de fortify, y la instalará en nuestra carpeta vendor, por detrás se ejecutará un comando llamado composer dump-autoload que lo agrega en el contexto de laravel y así ser visible en el proyecto.

Deja una salida similar a esta si es que todo está ok.

Info from https://repo.packagist.org: #StandWithUkraine
Using version ^1.16 for laravel/fortify
./composer.json has been updated
Running composer update laravel/fortify
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 5 installs, 0 updates, 0 removals
  - Locking bacon/bacon-qr-code (2.0.8)
  - Locking dasprid/enum (1.0.3)
  - Locking laravel/fortify (v1.16.0)
  - Locking paragonie/constant_time_encoding (v2.6.3)
  - Locking pragmarx/google2fa (v8.0.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 5 installs, 0 updates, 0 removals
  - Downloading bacon/bacon-qr-code (2.0.8)
  - Downloading laravel/fortify (v1.16.0)
  - Installing dasprid/enum (1.0.3): Extracting archive
  - Installing paragonie/constant_time_encoding (v2.6.3): Extracting archive
  - Installing pragmarx/google2fa (v8.0.1): Extracting archive
  - Installing bacon/bacon-qr-code (2.0.8): Extracting archive
  - Installing laravel/fortify (v1.16.0): Extracting archive
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi

   INFO  Discovering packages.  

  laravel/fortify ................................................. DONE
  laravel/sail .................................................... DONE
  laravel/sanctum ................................................. DONE
  laravel/tinker .................................................. DONE
  nesbot/carbon ................................................... DONE
  nunomaduro/collision ............................................ DONE
  nunomaduro/termwind ............................................. DONE
  spatie/laravel-ignition ......................................... DONE

80 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan vendor:publish --tag=laravel-assets --ansi --force

   INFO  No publishable resources for tag [laravel-assets].

Listo, con esto ya podemos hacer uso del backend de autenticación que nos disponibiliza Fortify. Una forma de chequear esto es ejecutando:

php artisan route:list
En esta vemos resaltadas todas las rutas que fortify genera para nosotros, como login, register, etc…

Con esto podemos apreciar todas las rutas disponibles en el sistema actualmente.

Luego procedemos a publicar los recursos que Fortify tiene en vendor (recordar que los recursos mientras estan en vendor, no van a ser modificables por nosotros, o por lo menos no entrarán en el versionado que manejamos, por eso se extraen del vendor y se colocan dentro de nuestras carpetas) ejecutando el comando:

php artisan vendor:publish \
--provider="Laravel\Fortify\FortifyServiceProvider"

Alli podemos ver que se publican las acciones (la mayoría son reglas de validaciones para registro y/o cambio de password); el FortifyServiceProvider que registra esas acciones en el inicio (boot) del sistema; y las migracion que agrega la tabla para tener autenticación en dos pasos disponible.

Ahora correremos las migraciones, que de hecho las tenemos pendiente desde la entrada anterior, y se crearan las tablas: users, password_resets, personal_access_token, y dos tablas mas que son con las que laravel controla las migraciones ejecutadas: migrations y failed_jobs.

Luego agregamos la siguiente linea al archivo config/app.php para registrar las acciones de fortify en el sistema, específicamente en el array de providers

App\Providers\FortifyServiceProvider::class

Luego procedemos a modificar el archivo config/fortify.php, y vamos a la sección de features (características) y solo dejaremos activadas las de registro, cambio de password y verificación de emails.

    'features' => [
        Features::registration(),
        Features::resetPasswords(),
        Features::emailVerification(),
        // Features::updateProfileInformation(),
        // Features::updatePasswords(),
        // Features::twoFactorAuthentication([
        //     'confirm' => true,
        //     'confirmPassword' => true,
        //     // 'window' => 0,
        // ]),
    ],

A continuación tenemos que indicar a Fortify, cual sera nuestra vista para login (que aparte debemos crearla, pero les mostraré un recurso que nos será útil) para ello editamos el archivo app/Providers/FortifyServiceProvider.php

en el método boot agregamos el código:

    public function boot(): void
    {
        Fortify::loginView(function () {
            return view('auth.login');
        });
        //...

Con esto Fortify ira a la vista login.blade.php que estará dentro de la carpeta auth.

Luego de esa entrada agregamos las siguientes que necesitamos para registrar usuarios, el formulario de me olvide mi contraseña, el formulario para cambiar de contraseña, y la vista que muestra el mensaje de que necesitamos verificar la cuenta para continuar.

        //...
        Fortify::registerView(function () {
            return view('auth.register');
        });

        Fortify::requestPasswordResetLinkView(function () {
            return view('auth.forgot-password');
        });

        Fortify::resetPasswordView(function ($request) {
            return view('auth.reset-password', ['request' => $request]);
        });

        Fortify::verifyEmailView(function () {
            return view('auth.verify-email');
        });
        //...

Con eso listo ya instruimos a Fortify cuales seran nuestras vistas, ahora continuaremos con la modificacion de nuestro modelo de Users, para indicarle que debe implementar las funcionalidades de verificacion de email, para ellos descomentamos la linea (o agregamos si no está)

use Illuminate\Contracts\Auth\MustVerifyEmail;

y también le decimos que agregue el trait de MustVerify email

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable, /* Esta -> */ MustVerifyEmail;

Por hoy eso es todo, procedemos a agregar al repositorio todos los archivos creados y modificados:

git add app/Actions/ app/Providers/FortifyServiceProvider.php config/fortify.php database/migrations/2014_10_12_200000_add_two_factor_columns_to_users_table.php package-lock.json

git commit -a -m "Fortify Auth functionality added \
Fortify features enabled and respective view names assigned"

git push --set-upstream origin fortify-auth

En la siguiente entrada les mostraré como son nuestras vistas para login, registro y reset de password usando Fortify y probaremos que tal funcionan.

Instalar FFMPEG en Slackware 14.2 (con Slackbuilds versión previa para RC2)

hola,

Siguiendo con la idea del post anterior, quiero mostrar como instalar ffmpeg desde slackbuilds, pero de una manera menos tradicional, ya que en este caso, la versión que vamos a instalar, no es una que ya esté disponible oficialmente en slackbuilds.org aún, pues la versión 14.2 de Slackware aún se encuentra en fase candidata (RC 2 a la fecha).

Si este no fuera el caso, con hacer el siguiente comando lo podriamos tener instalado en algunos minutos: Sigue leyendo

Atajos de teclado usando Dbus para Spotify en KDE 4.10

Si alguna vez usando usando Winamp (el viejo winamp que usaba en mi oscuro pasado en Windows) recordaras que habian opciones de accesos de teclado global, antes de tener teclados multimedia que ya venían con las opciones play/pause/next/previous.

Eran muy útiles, porque no importaba en que aplicaciones vos estabas trabajando, podrías hacer un control + alt + c y se ponia en pausa o play dependiendo de cual era el estado, un control + alt + b y pasabas a la siguiente música.

Bueno, dicen que los hábitos mueren muy difícilmente, y como yo sigo sin teclado multimedia, tengo uno mtek en el trabajo que tiene solo las funciones básicas, tengo grabado casi como un reflejo esos atajos de teclado. Y como soy un suscriptor del servicio de Spotify y tengo el cliente instalado en la maquina, decidí que necesitaba tener esos atajos al estilo winamp. Sigue leyendo

Slackware

Slackware 14.1 – Luego de una larga espera está finalmente aquí

Slackware pin

Slackware

Luego de una larga espera finalmente está aqui, un nuevo lanzamiento. Slackware 14.1 ya está aquí. hace aproximadamente 15 horas fue lanzado. Entre las cosas que se mencionan en el mail de anuncio del lanzamiento tenemos:

– Slackware  viene con dos de los ambientes de escritorios más avanzados hoy en día: XFCE 4.10.1, rápido y liviano, pero visualmente atractivo y fácil de usar. Además KDE 4.10.5 una versión estable de las serie 4.10.x.
Ambos escritorios utilizan udev, udisks y udisks2 y muchas de las especificaciones de freedesktop.org lo que permite al administrador del sistema conceder el uso de varios dispositivos de hardware según la pertenencia a grupos de usuarios lo que les permitirá utilizar elementos tales como memorias USB, unidades de CD y DVD, reproductores MP3 y más, todos estos sin requerir el uso de sudo, mount umount . Todo plug and play!.. El escritorio de Slackware es adecuado para cualquier nivel de experiencia en Linux.

– Viene con el Kernel 3.10.17 con las más  avanzadas características de  rendimiento tales como sistemas de archivos, soporte para SCSI  y ATA RAID, soporte para SATA, RAID por Software, LVM (Logical Volume Manager) y sistemas de archivos encriptados. El kernel soporta X DRI (Interfaz de renderizado directo) que aporta velocidad al hardware de aceleradoras gráficas 3D.
Esta versión del kernel está bien probada, ofrece buena performance, y tiene LTS (Long time support – Soporte a largo plazo) por parte de kernel.org.

– Los binarios vienen linkeados la libreria GNU C de la versión 2.17, que también tiene excelente soporte para librerías existentes.

– X11 basado en el sistema de ventanas modular X (X Windows System) de la Fundación X.Org . Esta es la X11R7.7, un nuevo lanzamiento, con muchas mejoras en terminos de performance y soporte de hardware.

– Slackware 14.1 viene con gcc-4.8.2 como compilador por defecto para C, C++, Objective-C,
Fortran-77/95/2003/2008, y Ada 95/2005/2012

– También incluye  LLVM y Clang, un compilador alternativo para   C, C++,
Objective-C y Objective-C++

– La versión x86_64 de Slackware 14.1 viene con soporte de instalación y arranque en máquinas que usen el firnmware UEFI.

– Soporte para NetworkManager para la configuración sencilla del redes de cable  e inalámbricas, incluyendo la banda ancha móvil, IPv6, VPN, y mucho más. Roaming sin problemas entre redes conocidas y configurar rápidamente nuevas conexiones. Hemos conservado pleno soporte a los  tradicionales scripts de redes de  Slackware  y para el administrador de red wicd, ofreciendo opciones y flexibilidad a todos los niveles de usuarios

Y muchas cosas más. A continuación copio el email de Patrick J. Volkerding anunciando slackware. Pueden copiarlo y traducirlo usando las herramientas de google

Yes, it is that time again!  After well over a year of planning,
development, and testing, the Slackware Linux Project is proud to
announce the latest stable release of the longest running distribution
of the Linux operating system, Slackware version 14.1!

We are sure you’ll enjoy the many improvements.  We’ve done our best to bring the latest technology to Slackware while still maintaining the stability and security that you have come to expect.  Slackware is well known for its simplicity and the fact that we try to bring software to you in the condition that the authors intended.

Slackware 14.1 brings many updates and enhancements, among which you’ll find two of the most advanced desktop environments available today: Xfce 4.10.1, a fast and lightweight but visually appealing and easy to use desktop environment, and KDE 4.10.5, a recent stable release of the 4.10.x series of the award-winning KDE desktop environment. These desktops utilize udev, udisks, and udisks2, and many of the
specifications from freedesktop.org which allow the system administrator
to grant use of various hardware devices according to users’ group
membership so that they will be able to use items such as USB flash
sticks, USB cameras that appear like USB storage, portable hard drives,
CD and DVD media, MP3 players, and more, all without requiring sudo, the
mount or umount command.  Just plug and play.  Slackware’s desktop
should be suitable for any level of Linux experience.

Slackware uses the 3.10.17 kernel bringing you advanced performance features such as journaling filesystems, SCSI and ATA RAID volume support, SATA support, Software RAID, LVM (the Logical Volume Manager), and encrypted filesystems.  Kernel support for X DRI (the Direct Rendering Interface) brings high-speed hardware accelerated 3D graphics to Linux.

There are two kinds of kernels in Slackware.  First there are the huge kernels, which contain support for just about every driver in the Linux kernel. These are primarily intended to be used for installation, but there’s no real reason that you couldn’t continue to run them after you have installed.  The other type of kernel is the generic kernel, in which nearly every driver is built as a module.  To use a generic kernel you’ll need to build an initrd to load your filesystem module and possibly your drive controller or other drivers needed at boot time, configure LILO to load the initrd at boot, and reinstall LILO.  See the docs in /boot after installing for more information.  Slackware’s Linux kernels come in both SMP and non-SMP types now.  The SMP kernel supports multiple processors, multi-core CPUs, HyperThreading, and about every other optimization available.  In our own testing this kernel has proven to be fast, stable, and reliable.  We recommend using the SMP kernel even on single processor machines if it will run on them.  Note that on
x86_64 (64-bit), all the kernels are SMP capable.

Here are some of the advanced features of Slackware 14.1:

– Runs the 3.10.17 version of the Linux kernel from ftp.kernel.org.
The 3.10.x series is well-tested, offers good performance, and will be
getting long term support from kernel.org.  For people interested in
running the previous long term support kernel series, we’ve provided
sample configuration files for Linux 3.4.66 under the /testing directory.
And, to make it easier for people who want to compile the latest Linux
kernel, we’ve also put configuration files for Linux 3.12 in /testing.

– System binaries are linked with the GNU C Library, version 2.17.
This version of glibc also has excellent compatibility with
existing binaries.

– X11 based on the X.Org Foundation’s modular X Window System.
This is X11R7.7, a new release, with many improvements in terms of
performance and hardware support.

– Installs gcc-4.8.2 as the default C, C++, Objective-C,
Fortran-77/95/2003/2008, and Ada 95/2005/2012 compiler.

– Also includes LLVM and Clang, an alternate compiler for C, C++,
Objective-C and Objective-C++.

– The x86_64 version of Slackware 14.1 supports installation and booting
on machines using UEFI firmware.

– Support for NetworkManager for simple configuration of wired and
wireless network connections, including mobile broadband, IPv6, VPN,
and more.  Roam seamlessly between known networks, and quickly set
up new connections.  We’ve retained full support for the traditional
Slackware networking scripts and for the wicd network manager,
offering choice and flexibility to all levels of users.

– Support for fully encrypted network connections with OpenSSL,
OpenSSH, OpenVPN, and GnuPG.

– Apache (httpd) 2.4.6 web server with Dynamic Shared Object
support, SSL, and PHP 5.4.20.

– USB, IEEE 1394 (FireWire), and ACPI support, as well as legacy PCMCIA
and Cardbus support.  This makes Slackware a great operating system
for your laptop.

– The udev dynamic device management system for Linux 3.x.
This locates and configures most hardware automatically as it
is added (or removed) from the system, loading kernel modules
as needed.  It works along with the kernel’s devtmpfs filesystem
to create access nodes in the /dev directory.

– New development tools, including Perl 5.18.1, Python 2.7.5,
Ruby 1.9.3-p448, Subversion 1.7.13, git-1.8.4, mercurial-2.7.2,
graphical tools like Qt designer and KDevelop, and much more.

– Updated versions of the Slackware package management tools make it
easy to add, remove, upgrade, and make your own Slackware packages.
Package tracking makes it easy to upgrade from Slackware 14.0 to
Slackware 14.1 (see UPGRADE.TXT and CHANGES_AND_HINTS.TXT).
The slackpkg tool can also help update from an older version of
Slackware to a newer one, and keep your Slackware system up to date.
In addition, the slacktrack utility will help you build and maintain
your own packages.

– Web browsers galore!  Includes KDE’s Konqueror 4.10.5, SeaMonkey 2.21
(this is the replacement for the Mozilla Suite), Mozilla Firefox ESR 24.1,
as well as the Thunderbird 24.1 email and news client with advanced
junk mail filtering.  A script is also available in /extra to repackage
Google Chrome as a native Slackware package.

– The KDE Software Compilation 4.10.5, a complete desktop environment.
This includes the Calligra productivity suite (previously known as
KOffice), networking tools, GUI development with KDevelop, multimedia
tools (including the Amarok music player and K3B disc burning software),
the Konqueror web browser and file manager, dozens of games and utilities,
international language support, and more.

– A collection of GTK+ based applications including pidgin-2.10.7,
gimp-2.8.6 (with many improvements including a single window mode),
gkrellm-2.3.5, xchat-2.8.8, xsane-0.998, and pan-0.139.

– A repository of extra software packages compiled and ready to run
in the /extra directory.

– Many more improved and upgraded packages than we can list here.  For
a complete list of core packages in Slackware 14.1, see this file:

ftp://ftp.slackware.com/pub/slackware/slackware-14.1/PACKAGES.TXT

Downloading Slackware 14.1:
—————————

The full version of Slackware Linux 14.1 is available for download from the central Slackware FTP site hosted by our friends at osuosl.org:

ftp://ftp.slackware.com/pub/slackware/slackware-14.1/

If the sites are busy, see the list of official mirror sites here:

http://mirrors.slackware.com

We will be setting up BitTorrent downloads for the official ISO images.  Stay tuned to http://slackware.com for the latest updates.

Instructions for burning the Slackware tree onto install discs may be found in the isolinux directory.

Purchasing Slackware on CD-ROM or DVD:
————————————–

Or, please consider purchasing the Slackware Linux 14.1 six CD-ROM set or deluxe dual-sided DVD release directly from Slackware Linux, and you’ll be helping to support the continued development of Slackware Linux!

The DVD release has the 32-bit x86 Slackware 14.1 release on one side, and the 64-bit x86_64 Slackware 14.1 release on the other.  Both sides are bootable for easy installation, and includes everything from both releases of Slackware 14.1, including the complete source code trees.

The 6 CD-ROM release of Slackware 14.1 is the 32-bit x86 edition. It includes a bootable first CD-ROM for easy installation.  The 6 CD-ROMs are labeled for easy reference.

The Slackware 14.1 x86 6 CD-ROM set is $49.95 plus shipping, or choose the Slackware 14.1 x86/x86_64 dual-sided DVD (also $49.95 plus shipping).

Slackware Linux is also available by subscription.  When we release a new version of Slackware (which is normally once or twice a year) we ship it to you and bill your credit card for a reduced subscription price ($32.99 for the CD-ROM set, or $39.95 for the DVD) plus shipping.

For shipping options, see the Slackware store website.  Before ordering express shipping, you may wish to check that we have the product in stock. We make releases to the net at the same time as disc production begins, so there is a lag between the online release and the shipping of media. But, even if you download now you can still buy the official media later. You’ll feel good, be helping the project, and have a great decorative item perfect for any computer room shelf.  🙂

Ordering Information:
———————

You can order online at the Slackware Linux store:

http://store.slackware.com

Other Slackware items like t-shirts, caps, pins, and stickers can also be found here.  These will help you find and identify yourself to your fellow Slackware users.

Order inquiries (including questions about becoming a Slackware reseller) may be directed to this address:  info@slackware.com

Have fun! :^)  I hope you find Slackware to be useful, and thanks
very much for your support of this project over the years.


Patrick J. Volkerding    <volkerdi@slackware.com>

Visit us on the web at:  http://slackware.com

Así es amigos, tenemos una nueva versión, personalmente en cuanto llegue a casa la descargaré e instalaré. Y en estos días actualizaré la notebook del trabajo, para poder probar el soporte UEFI (ya que fue un parto tratar de instalar la última vez por problemas con el UEFI).

Saludos!.

PD. No olviden visitar el la tienda oficial de Slackware o la tienda licenciada de Slackware donde pueden contribuir con el proyecto o directamente con Patrick (en ese orden).

Condoricosas que encontramos en los fuentes

Hola.

Estaba revisando mi archivo de configuración hosts (/etc/hosts), para eliminar algunos distractivos que tengo a la hora de trabajar (si, tiendo a tener una mente muy distraida), por lo general lo que hago es apuntar los dominios que mas visito en esa lista y los apunto a 127.0.0.1; Bueno volviendo al tema, estaba editando el host cuando me fijo por casualidad en alguno de los comentarios que estaban lineas mas arriba y me encuentro con algo como esto:

# By the way, Arnt Gulbrandsen <agulbra@nvg.unit.no> says that 127.0.0.1
# should NEVER be named with the name of the machine. It causes problems
# for some (stupid) programs, irc and reputedly talk. :^)

Lo cual llamo mi atención, no solía ver este tipo de cosas, así que me pregunté si habría más de ese tipo de cosas en los fuentes de configuración y codigo. Por lo cual rápidamente escribo en la consola:

pablo@darkstar:~$ sudo fgrep stupid /etc/ -R

y me encuentro con cosas como:

/etc/hosts:# for some (stupid) programs, irc and reputedly talk. :^)
/etc/cron.daily/certwatch:# This stupid script (C) 2006,2007 Jan Rafaj
/etc/skel/.screenrc:#remove some stupid / dangerous key bindings
/etc/termcap-BSD:mono-emx|stupid monochrome ansi terminal with only one kind of emphasis:\
/etc/termcap-BSD:# emulations (usually their stupidest, and usually labeled adm3, though
/etc/termcap-BSD:# * Added vt102-nsgr to cope with stupid IBM PC `VT100′ emulators.
/etc/hosts~:# for some (stupid) programs, irc and reputedly talk. :^)
/etc/screenrc:#remove some stupid / dangerous key bindings

Y me volví a preguntar, donde consigo más?

nuevamente corrí el comando en una carpeta donde probablemente haya más de ese tipo de comments:

pablo@darkstar:~$ sudo fgrep stupid /usr/include/ -R

/usr/include/poppler/goo/gtypes.h: * These have stupid names to avoid conflicts with some (but not all)
/usr/include/poppler/goo/gtypes.h: * These have stupid names to avoid conflicts with <sys/types.h>,
/usr/include/gdkmm-2.4/gdkmm/window.h: * This function has a stupid name because it dates back to the mists
/usr/include/fontforge/splinefont.h: unsigned int weight_width_slope_only: 1; /* This bit seems stupid to me */
/usr/include/boost/unordered/detail/table.hpp: // For some stupid reason, I decided to support equality comparison
/usr/include/boost/graph/filtered_graph.hpp: // This base class is a stupid hack to change overload resolution
/usr/include/boost/graph/distributed/page_rank.hpp: // the stupid synchronization rules of MPI-2 One-sided
/usr/include/boost/lambda/detail/operators.hpp: // It is stupid to have the names A and B as macro arguments, but it avoids
/usr/include/boost/xpressive/detail/core/quant_style.hpp:// // Replace transmogrify stupidity with rebindable matchers/placeholders
/usr/include/subversion-1/svn_client.h:/** Like svn_client_commit_item3_create() but with a stupid «const»
/usr/include/kwineffects.h: WindowQuadError, // for the stupid default ctor
/usr/include/k3biso9660.h: * Due to the stupid Qt which does not support large files as default
/usr/include/p2c/p2c.h:/* Fix toupper/tolower on Suns and other stupid BSD systems */
/usr/include/wx-2.8/wx/log.h: // is a bad idea as some compilers are stupid enough to not inline even
/usr/include/wx-2.8/wx/defs.h: /* no such stupidness under Unix */
/usr/include/wx-2.8/wx/defs.h:#else /* stupid, broken compiler */
/usr/include/wx-2.8/wx/layout.h:// X stupidly defines these in X.h
/usr/include/wx-2.8/wx/generic/grid.h: // suppress the stupid gcc warning about the class having private dtor and
/usr/include/wx-2.8/wx/generic/grid.h: // suppress the stupid gcc warning about the class having private dtor and
/usr/include/wx-2.8/wx/generic/grid.h: // suppress the stupid gcc warning about the class having private dtor and
/usr/include/icc34.h: Added the stupid check for autoconf by Marti Maria.
/usr/include/strigi/streambase.h: * stupid / does not work by design 🙂
/usr/include/seamonkey/nsMsgLineBuffer.h:// I can’t believe I have to have this stupid class, but I can’t find
/usr/include/seamonkey/mozilla/dom/HTMLMediaElement.h: // SetAttr override. C++ is stupid, so have to override both
/usr/include/seamonkey/mozilla/dom/HTMLImageElement.h: // SetAttr override. C++ is stupid, so have to override both
/usr/include/seamonkey/mozilla/dom/HTMLCanvasElement.h: // SetAttr override. C++ is stupid, so have to override both
/usr/include/talloc.h: stupidity in gcc 4.1.x */
/usr/include/openssl/err.h:/* Borland C seems too stupid to be able to shift and do longs in
/usr/include/archive.h:/* Default implementations are very, very stupid. */
/usr/include/linux/cm4000_cs.h:/* what is particularly stupid in the original driver is the arch-dependent
/usr/include/linux/reiserfs_fs.h: /* this file has an amazingly stupid
/usr/include/kmessagebox.h: * or your user did something stupid.
/usr/include/kmessagebox.h: * or your user did something stupid.
/usr/include/seamonkey-2.21/nsMsgLineBuffer.h:// I can’t believe I have to have this stupid class, but I can’t find
/usr/include/seamonkey-2.21/mozilla/dom/HTMLMediaElement.h: // SetAttr override. C++ is stupid, so have to override both
/usr/include/seamonkey-2.21/mozilla/dom/HTMLImageElement.h: // SetAttr override. C++ is stupid, so have to override both
/usr/include/seamonkey-2.21/mozilla/dom/HTMLCanvasElement.h: // SetAttr override. C++ is stupid, so have to override both
/usr/include/php/ext/mysqlnd/mysqlnd_wireprotocol.h: zend_bool stupid_list_fields_eof;
/usr/include/ImageMagick/Magick++/Include.h:# pragma warning( disable: 4273 ) /* Disable the stupid dll linkage warnings */
/usr/include/Xm/BulletinBP.h: Widget stupid_dead_field;
/usr/include/eigen2/Eigen/src/Core/util/Meta.h: // use ?: instead of || just to shut up a stupid gcc 4.3 warning
/usr/include/eigen2/Eigen/src/Core/util/XprHelper.h: void nevermind_this_is_just_to_work_around_a_stupid_gcc3_warning();

Y así uno encuentra cosas en los fuentes. Algunos con ganas de expresar su profundo malestar y otros bueh… mejor díganlo ustedes.
🙂

Agregar un usuario en MySQL para una base de datos específica

MySQL Database

MySQL Database

Muchas veces varias personas están trabajando con nosotros en un proyecto.
Y con frecuencia eso implica que estemos trabajando con diferentes usuarios de bases de datos, o todos con el mismo, dependiendo.

En mi caso, tenemos una una base de datos que va siendo modificadas por todos, eso luego afecta a un esquema que todos usamos.
Pero el problema saltaba con el archivo de conexión que todos compartíamos, verán cada uno tiene localmente su propio usuario con su contraseña.
Uno actualizaba sin querer su archivo de conexión y todos los demás luego teníamos que nuevamente modificar las nuestras, y así uno nuevamente sin querer actualizaba el suyo al servidor y esto se propagaba de actualización en actualización.

Y la solución fue sencilla, básicamente es que todos usemos el mismo usuario y con la misma contraseña, de modo a que el archivo de conexión ya no necesita ser cambiado. 🙂

grant all on <base de datos>.* to '<usuario>'@'localhost' identified by '<password compartido>';

Observación: por si no se note, lo que va entre los simbolos ‘<>’ es lo que debemos sustituir por nuestros valores deseados

MariaDB sustituirá a MySQL en slackware

mientras preparaba el post para https://ventiladorcito.com/blog/2013/05/virtualbox-en-slackware-14-0-adelanto/ [si ya sé que es un poco de autobombo, pero bueh, todavía no soy famoso 😉 ] entré a la página de http://www.slackware.com/ y me encontré con un post del 23 de marzo (algo viejillo) pero aún válido mencionando que Slackware estará pasando probablemente ya en el siguiente lanzamiento a incluir a MariaDB (que es un fork de MySQL ante la amenaza a que ORACLE mande todo a la mierda el proyecto).

Una traducción (probablemente no la mejor, pero el objetivo es extraer la idea) sería:
La gran noticia aquí sería la remoción de MySQL en favor de MariaDB. Esto no debería ser una sorpresa en ningún nivel. La encuesta en Linux Questions (LQ) mostró que una gran mayoría de usuarios estaba a favor de este cambio. Es mi creencia que la Fundación MariaDB hará un mejor trabajo con el código, tendrá mayor capacidad de respuesta en asuntos de seguridad, y tendrá un mayor deseo de trabajar con la comunidad del open source. Y mientras yo no creo que haya algún problema actualmente con la licencia de MySQL de la edición para la comunidad para usos comerciales, varios hilos en Linux Questions (LQ) demostraron que hay confusión acerca de esto, mientras que con MariaDB la libertad de uso es bastante clara. Las gracias son debidas a Heinz Wiesinger por su trabajo en la transición del script del build, las pruebas y sacandonos adelante de este movimiento. El ha estado trabajando con MariaDB (y sus desarrolladores) por varios años hasta ahora. Vincent Batts también obtuvo una ayuda en una temprana discusión aquí — el se encontró a Daniel Bartholomew de MariaDB en un tren el año pasado y consiguió una copia del fuente para jugar y pasar el tiempo del viaje (el milagro de los pendrives :), y le impresionó no solo MariaDB en sí, sino que con la bienvenida que Slackware estaba consiguiendo. Esperamos ellos den respuestas prontas en cualquier problema que tengamos. En la gran mayoría de situaciones, MariaDB es completamente compatible con las bases de datos MySQL existentes y encajará justo sin cambios necesarios. Hay un artículo disponible mostrando las áreas en las que MariaDB difiere de MySQL que recomiendo leer https://kb.askmonty.org/v/mariadb-versus-mysql-compatibility/
Gracias a la fundación MariaDB! Esperamos poder trabajar con ustedes.

Para más información acerca de MariaDB, visitar su sitio web: http://mariadb.org

Así que está interesante, slackware se suma a este cambio en el que se opta pasar a MariaDB que recordemos, está formada por una gran parte del equipo original que trabajó en MySQL.

Ademas de tener en cuenta que hay una importante cantidad de sitios que hoy en día están teniendo sus bases de datos con MySQL en estos momentos pueden tener un cambio tranquilo y sin mayores temores a MariaDB. Slackware está ayudando con un pequeño empujon. Ya veremos en el futuro si fue una movida apropiada o no. Lo cierto es que la comunidad tiene sus reservas acerca de que futuro podría dar Oracle a MySQL ya que en cierta forma (bastante lejana) es una pequeña competencia para su motor de bases de datos estrella, y señales de querer matar proyectos opensource tenemos varios, entre ellos open solaris.

En fin darle una miradita al MariaDB no hará daño.

Saludos.