Por qué Windows 7 triunfará

microsoft-windows-7

Vaya título, eh? Pues así es, gracias a una situación que viví hace unos días he decidido volver a escribir por aquí, y además, voy a hablar de Windows 7. Windows 7, ¿ese sistema que salvará a Microsoft del tremendo desastre de Vista? Puede ser. Ni lo he probado ni espero tener que hacerlo, porque, por propia iniciativa, no lo hice con Vista y menos lo haré con Seven.

Este tema surgió hace unos días con unos amigos. Estábamos hablando sobre una gran superficie de electrónica, que como no me pagan no pienso hacerles publicidad gratuita. Comentábamos que si nos comprábamos un portátil con Windows Vista, nos lo actualizarían directamente a Windows 7. ¡Qué maravilla!, ¿verdad? Y para qué íbamos a querer nosotros Windows 7, seguro que es otra patata como Vista, aunque, por poco que mejorase ya sería mejor que Vista, eso seguro. Llegamos a una conclusión. Y si Microsoft la había pifiado tanto con Vista para, al lanzar el siguiente (Windows 7), éste, por poco mejor que fuera, ya lo sería. Es decir, hacen algo malo para después lanzar algo menos malo para que parezca bueno. La verdad que a mi no me extrañaría nada.

A parte de ésto, hay que tener en cuenta que la mayoría de clientes de estas grandes superficies no conocen muchas alternativas a Windows, por no decir ninguna. Se extrañan al ver un Mac, como para saber que es GNU/Linux. Si sumamos estas dos cosas, aparente mejora de Windows 7 con la falta de conocimiento de alternativas por parte del cliente, y lo multiplicamos por la pericia del vendedor, obtenemos la siguiente conversación.

[...]

Vendedor: Sí, además si ahora compras este ordenador recibirás de forma gratuita una actualización a Windows 7.

Cliente: Windows qué? ¿Qué es eso?

V: Es la nueva versión de Windows, un XP nuevo.

C: Ah! Vale, y para qué me sirve a mi que sea nuevo.

V: Mire, es un nuevo Windows que tiene todo lo bueno del XP y lo bueno del Vista. Es decir, es rápido, fiable y no se cuelga tanto y lo bueno del Vista, que es el aspecto y todo eso.

C: ¡Qué bien! Pues entonces me lo llevo. Muchas gracias, así da gusto comprar :)

(Conversación real.)

Ahí está mi reflexión sobre por qué Windows 7 triunfará. Estoy seguro que no lo hará por méritos propios, sino por el mérito de quién lo venda.

SQL Injection

http://xkcd.com/327/

Base de datos de Nhopkg

La nueva base de datos de Nhopkg usará el motor SQLite3, con el cual se ganará una velocidad extra (que la versión 0.5 no garantizaba en algunos momentos) y mayor usabilidad. Aunque ahora no pueda trabajar mucho en el desarrollo de Nhopkg, pero si estoy haciendo alguna cosilla. Entre estas cosas, voy subiendo de vez en cuando cambios en el código al repositorio bazaar en sourceforge y también voy documentando las cosas poco a poco, para que resulte más fácil colaborar con el proyecto.

Ahora os muestro el diagrama de la base de datos, que en principio usará Nhopkg. Digo en princpio porque al estar en contrinuo desarrollo nunca se sabe si podrá cambiar algunos aspectos de ésta, o quizá completamente. Ahí va un adelanto, cualquier sugerencia será bienvenida.

nhopkg-db

Para el que quiera curiosear algo más, en el repositorio bazaar puede encontrar los archivos SQL.

[Python] Primeras líneas de libnhopkg

Las siguientes líneas son un pequeño anticipo de lo que será libnhopkg, la librería básica de Nhopkg escrita en Python, tal y como anuncié en la entrada anterior.

Tan solo es el script y la clase encargados de obtener la información que necesitará Nhopkg para funcionar. Esta información la recoge, en primer lugar del sistema, datos como la arquitectura, la versión del kernle, etc. y por otro lado del archivo de configuración nhopkg.conf. Se trata de una parte muy básica de la librería, pero indispensable (creo yo) para seguir trabajando. Además, aunque no lo postee aquí, estoy trabajando en las clases necesarias para leer y obtener la información de los archivos nhoid, presentes en los paquetes.

Antes de nada también aprovecho para mostraros una plantilla (sin datos) de lo que será el archivo nhopkg.conf, con algunos cambios significativos desde la última versión estable. Aunque está bastante completo, no descarto que se le añadan más campos al archivo.

[main]
sysconfdir =
datadir =
localstatedir =
tmpdir =
buildir =
lockfile =

[database]
database =

[server]
server =

[packaging]
find_dirs =
no_upgrade_file =

[options]
check_deps =
check_inverse_deps =
check_md5sum =
verbose_mode =
nls_support =
nls_support_textdomain =
nls_support_textdomaindir =
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Nhopkg is a universal package manager for unix systems.
# Copyright (C) 2009 Jaime Gil de Sagredo Luna <jaimegildesagredo@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

"""Default Nhopkg configuration."""

import os
import ConfigParser

class config_parse:
  """Get data from Nhopkg configuration file."""
  def __init__(self, config):
    """config: Nhopkg configuration file."""
    self.config_file = config
    (self.sysname, self.hostname, self.sysrelease, self.sysversion, \
      self.machine) = os.uname()

    self.read_file()
    self.parse()

  def read_file(self):
    """Read Nhopkg configuration file."""
    self.config = ConfigParser.ConfigParser()
    self.config.read(self.config_file)

  def parse(self):
    """Parse Nhopkg configuration file."""
    self.sysconfdir = self.config.get('main', 'sysconfdir')
    self.datadir = self.config.get('main', 'datadir')
    self.localstatedir = self.config.get('main', 'localstatedir')
    self.tmpdir = self.config.get('main', 'tmpdir')
    self.buildir = self.config.get('main', 'buildir')
    self.lockfile = self.config.get('main', 'lockfile')
    self.database = self.config.get('database', 'database')
    self.server = self.config.get('server', 'server')
    self.find_dirs = self.config.get('packaging', 'find_dirs')
    self.no_upgrade_file = self.config.get('packaging', 'no_upgrade_file')
    self.check_deps = self.config.get('options', 'check_deps')
    self.check_inverse_deps = self.config.get('options', 'check_inverse_deps')
    self.check_md5sum = self.config.get('options', 'check_md5sum')
    self.verbose_mode = self.config.get('options', 'verbose_mode')
    self.nls_support = self.config.get('options', 'nls_support')
    self.nls_support_textdomain = self.config.get('options', \
      'nls_support_textdomain')
    self.nls_support_textdomaindir = self.config.get('options', \
      'nls_support_textdomaindir')

En breve subiré las primeras líneas de este código al nuevo repositorio bazaar de Nhopkg, mucho más cómodo y en mi opinión mejor que el anterior svn. http://nhopkg.bzr.sourceforge.net/bzr/nhopkg/changes

Además la lista de correo de desarrollo de Nhopkg está ya activa, si quieres unirte al desarrollo o estar informado de las últimas novedades de éste, no dudes en suscribirte: https://lists.sourceforge.net/lists/listinfo/nhopkg-svn