[PROYECTO] LinDriver. Recopilación de drivers para GNU/Linux

1, 2, 3, 4, 5
capitanquartz escribió:
analca3 escribió:Animo con todas mis ganas este proyecto, aunque no pueda colaborar :( :( ...No se nada de programacion. Pero bueno, yo os animo desde fuera.

PD: Como sugerencia: No se si la pagina va a estar en ingles solo. Me gustaria que estuviese tambien en español, ya que asi sera mas facil comprenderlo a los que no estamos muy avanzados en el idioma...

Salu2!!!


Si, va a estar en español y en inglés. Es más, se va a traducir muchas cosas del español al inglés... :P (me arrepiento de no haberle dado tanta importancia al inglés desde pequeño... :( )


Todo claro, gracias. Espero que esta web vaya a muy buen recaudo.

Salu2!!!
Aqui os dejo los archivos que he modificado para la web.
Solo he añadido una paginas con la informacion en español y en ingles y el esquema de la base de datos.

http://rapidshare.com/files/219849632/lindriver_web.zip

Espero que no te molesto, pero me he tomado la libertad de añadirme en traductores y relaciones publicas XD
Sigo pensando que es un proyecto muuuy gordo para tan poca gente xD-
hawk31 escribió:Sigo pensando que es un proyecto muuuy gordo para tan poca gente xD-

Por eso necesitamos más gente ^^ Pero Django ayuda mucho... :D

jajavimo escribió:Aqui os dejo los archivos que he modificado para la web.
Solo he añadido una paginas con la informacion en español y en ingles y el esquema de la base de datos.

http://rapidshare.com/files/219849632/lindriver_web.zip

Espero que no te molesto, pero me he tomado la libertad de añadirme en traductores y relaciones publicas XD

He aplicado los cambios, pero con tu permiso, me he permitido la libertad de hacer algunos cambios... no veo necesario utilizar directorios a parte de archivos que se encuentran en la raíz :P

-----------------------------------------------------------
Nueva versión del modelo de la base de datos:
Como siempre, recordar que es un borrador... :P podéis proponer cosas nuevas.

# -*- coding: utf-8 -*-
from django.db import models

class Mark(models.Model):
# Nombre de la marca
name = models.CharField(max_length=50)
def __unicode__(self):
return self.name


class Distro(models.Model):
# Nombre de la distribución
name = models.CharField(max_length=50)
def __unicode__(self):
return self.name


class Group(models.Model):
# Nombre del grupo
name = models.CharField(max_length=50)
def __unicode__(self):
return self.name


class Ip(models.Model):
# Dirección IP
ip = models.IPAddressField()
# Nombre del usuario al que corresponde. Si no está identificado, su valor es Null.
name = models.CharField(max_length=20)
# Hora unix en la que se uso por última vez la IP
time_max = models.IntegerField()
# Intentos de autentificación. si está identificado, su valor es Null. Como máximo hay 5 intentos.
retry = models.IntegerField()
def __unicode__(self):
return self.ip

class User(models.Model):
# Nombre del usuario
name = models.CharField(max_length=20)
# Grupos en los que se encuentra el usuario. Mediante los grupos se pueden tener permisos dentro de la web.
group = models.ManyToManyField(Group)
# Email del usuario
email = models.EmailField(max_length=100)
# Contraseña encriptada bajo MD5
password = models.CharField(max_length=50)
# Firma del usuario
firm = models.CharField(max_length=250)
# Msn
msn = models.EmailField(max_length=100)
# Yahoo
yahoo = models.EmailField(max_length=100)
# Número de ICQ
icq = models.IntegerField()
# Jabber
jabber = models.CharField(max_length=50)
# Si es un hombre o una mujer. True es mujer y hombre es False
woman = models.BooleanField()
# fecha de nacimiento
day = models.DateTimeField()
# Texto que aparece debajo del avatar
subtext = models.CharField(max_length=20)
# Idioma que se debe usar en la web
lang = models.CharField(max_length=2)
# avatar
avatar = models.ImageField(upload_to='avatars', max_length=30)
# Sitio web
web = models.CharField(max_length=100)
# País
country = models.CharField(max_length=20)
# Ciudad
city = models.CharField(max_length=20)

# IP desde el que se ha realizado el acceso
ip = models.IPAddressField()
# Tiempo máximo de duración de la cookie. Hora unix.
time_max = models.IntegerField()
# Código generado aleatoriamente que sirve de verificación al sitio.
checker = models.CharField(max_length=200)
def __unicode__(self):
return self.name


class Component(models.Model):
# Nombre del tipo de componente en español. Por ejemplo, "tarjeta gráfica"
es = models.CharField(max_length=70)
# Nombre del tipo de componente en inglés. Por ejemplo, "graphic card"
en = models.CharField(max_length=70)
# Una descripción de aquel tipo de componente al que se refiere en español.
description_es = models.CharField(max_length=250)
# Una descripción de aquel tipo de componente al que se refiere en español.
description_en = models.CharField(max_length=250)
# Un listado de rutas a imágenes
image = models.ImageField(upload_to='Component', max_length=100)
def __unicode__(self):
return '<en>%s</en> <es>%s</en>' % (self.en, self.en)

class Hardware(models.Model):
# La id del componente (padre). Es un número entero. Por ejemplo, si esta es una conceptronic C54RU (tarjeta inalámbrica USB) tendrá la id de "tarjeta inalámbrica" de la tabla componentes.
component = models.ForeignKey(Component)
# La marca del producto. Por ejemplo, Conceptronic.
mark = models.ForeignKey(Mark)
# El modelo. En este caso, C54RU, aunque pueden ser más largos.
model = models.CharField(max_length=100)
# De un mismo modelo y marca pueden haber variantes incluso de un mismo chip. aquí se especifica.
variant = models.CharField(max_length=50)
# El chip, en este caso, rt73 (ralink).
chip = models.CharField(max_length=50)
# La salida al hacer lsusb, lspci que corresponde a este hardware.
lsx = models.CharField(max_length=200)
# Una descripción del hardware en español.
description_es = models.CharField(max_length=250)
# Una descripción del hardware en inglés.
description_en = models.CharField(max_length=250)
# Valor True o False. Especifica con True que la fila de datos es la que deben ver los usuarios al referirse a este articulo. Por ejemplo, puede haber una primera fila refiriendose a un articulo llamado "conceptronc C54Ru", pero que después, otro usuario envie una corrección con el nombre "conceptronic C54Ru" (notese la "i"). Un moderador da la razón a la corrección y la primera versión, deja de ser la publicada (la que ven "en primera plana" los usuarios) para pasar a verse la versión corregida.
published = models.BooleanField()
# Un número entero que se refiere a un id o un valor Nulo. En el caso anterior mostrado, la primera versión tendría un valor nulo, ya que no se basa en ningún articulo (es la primera versión) pero, la corrección sería hijo de la primera versión, ya que está basada en esta. En dicho caso, el valor sería la id de la fila padre.
father = models.IntegerField()
# Un valor numérico entero. Siguiendo el mismo ejemplo a los antes nombrados, imaginemos que se lanza una tercera versión basada en la segunda (no esta basada en la primera, es una modificación de la segunda versión). En dicho caso, "father" (el padre) sería la id de la segunda versión, pero, en todas las versiones se mantiene la id de la primera versión, la original, y se llama "first_father". De esta manera todos los comentarios y soluciones enlazarán siempre al componente independientemente de la versión en la que se encuentre.
first_father = models.IntegerField()
# Valoración del 0 al 4 del hardware, siendo ya la valoración calculada.
stars = models.DecimalField(max_digits=4, decimal_places=3)
# Votos actuales en la valoración del hardware.
stars_votes = models.IntegerField()
# Valor numérico entero. La id de usuario que envia esta fila de información.
user = models.ForeignKey(User)
# Fecha en la que se envió la fila.
date = models.DateTimeField()
def __unicode__(self):
return '%s %s' % (self.mark, self.model)


class Solution(models.Model):
####### No debe confundirse entre "solution" y "page". La tabla "solution" incluye información sobre un procedimiento posible para hacer funcionar un determinado hardware. Por ejemplo, para nuestra Conceptronic C54RU con chip rt73 podemos usar los drivers de Serialmonkey, ndiswrapper o los drivers oficiales de ralink (privativos). Una página será la explicación de como utilizar un método en un idioma, para una arquitectura y una distribución. Por ejemplo, puede haber una página en español explicando como usar los drivers de serialmonkey para x86 en la distro Debian, otra página en inglés para como usar los drivers de serialmonkey para x86 en Debian, otra página en español de como usar ndiswrapper en x86_64 en Gentoo...
# Valor numérico entero. Es la id de "first_father" de la tabla hardware.
hardware = models.ForeignKey(Hardware)
# Valor True o False. Sigue la misma idea que el published de la tabla hardware.
published = models.BooleanField()
# Un número entero que se refiere a un id o un valor Nulo. Sigue la misma idea que el "father" de la tabla hardware.
father = models.IntegerField()
# Un valor numérico entero. Sigue la misma idea que el "first_father" de la tabla hardware.
first_father = models.IntegerField()
# El nombre del método en español.
name_es = models.CharField(max_length=100)
# El nombre del método en inglés.
name_en = models.CharField(max_length=100)
# Una descripción del método en español.
description_es = models.CharField(max_length=250)
# Una descripción del método en inglés.
description_en = models.CharField(max_length=250)
# Valoración del 0 al 4 de si es bueno el método, siendo ya la valoración calculada.
stars = models.DecimalField(max_digits=4, decimal_places=3)
# Votos actuales en la valoración del método.
stars_votes = models.IntegerField()
# Valor numérico entero. La id de usuario que envia esta fila de información.
user = models.ForeignKey(User)
# Fecha en la que se envió la fila.
date = models.DateTimeField()
# Valor True o False donde True indica que es un driver privativo.
privative = models.BooleanField()
def __unicode__(self):
return '<es>%s</es> <en>%s</en>' % (self.name_es, self.name_en)


class Page(models.Model):
####### Las variantes de un manual que se encuentran en el mismo idioma, para la misma arquitectura y la misma distro o distros serán propuestas de mejora, pero si por ejemplo se hace una variante de un mismo manual pero en otro idioma (una traducción) no será una mejora, sino que se hace una página nueva que será directamente hija de "solution".
# Valor numérico entero. Es la id de "first_father" de la tabla solution.
solution = models.ForeignKey(Solution)
# Un número entero que se refiere a un id o un valor Nulo. Sigue la misma idea que el "father" de la tabla hardware.
father = models.IntegerField()
# Un valor numérico entero. Sigue la misma idea que el "first_father" de la tabla hardware.
first_father = models.IntegerField()
# Valor True o False. Sigue la misma idea que el published de la tabla hardware.
published = models.BooleanField()
# Idioma en el que está la página. Para español "es" y para inglés "en".
lang = models.CharField(max_length=2)
# Es la distribución o distribuciones para las que está pensado el manual.
distros = models.ManyToManyField(Distro)
# La arquitectura (o, para decir que es valido para todas las arquitecturas, "All") para la que está pensado el manual.
architectures = models.CharField(max_length=200)
# Valor numérico entero. La id de usuario que envia esta fila de información.
user = models.ForeignKey(User)
# Fecha en la que se envió la fila.
date = models.DateTimeField()
# Valoración del 0 al 4 de la calidad de esta información.
stars = models.DecimalField(max_digits=4, decimal_places=3)
# Votos actuales en la valoración de la información.
stars_votes = models.IntegerField()
# El texto con los pasos a seguir para hacer funcionar el hardware.
text = models.TextField()
def __unicode__(self):
return str(self.id)


class Comment(models.Model):
# Que tipo de comentario es. Puede ser un comentario ("comment") o un reporte de fallo o problema ("bug").
comment_type = models.CharField(max_length=8)
# Un valor del 0 al 4. Si es un comentario, Con el 0 no agradeces para nada la página y con el 4 mucho. Si es un reporte de fallo, con 0 no le das mucha importancia y con el 4 mucha.
stars = models.IntegerField()
# Un valor numérico o un valor nulo. Se refiere a la id del comentario o del bug al que responde.
reply = models.IntegerField()
# A que tabla corresponde...
type_reply = models.IntegerField()
# Valor numérico entero. La id de usuario que envia esta fila de información.
user = models.ForeignKey(User)
# Fecha en la que se envió la fila.
date = models.DateTimeField()
# El titulo del comentario o bug.
title = models.CharField(max_length=40)
# El texto de la contestación
text = models.TextField()
def __unicode__(self):
return self.title


class Attached(models.Model):
# Nombre del adjunto.
name = models.CharField(max_length=40)
# Versión del adjunto.
version = models.CharField(max_length=20)
# Nombre del archivo en el servidor del adjunto.
archive = models.CharField(max_length=100)
# Veces descargado el archivo.
downloads = models.IntegerField()
# El "first_father" de la fila en la tabla "page" donde debe aparecer la descarga.
pages = models.TextField()
## El "first_father" de la fila en la tabla "comment" donde debe aparecer la descarga.
comments = models.TextField()
# Valor numérico entero. La id de usuario que envia esta fila de información.
user = models.IntegerField()
# Fecha en la que se envió la fila.
date = models.DateTimeField()
def __unicode__(self):
return self.name

Adjuntos

models.txt (11.79 KB)

Segundo borrador del modelo de la base de datos del proyecto LinDriver.
Yo estoy esperando a que haya algo de lógica de negocio que hacer, para ponerme manos a la obra; sinceramente, lo que es estructurar una base de datos no es mi fuerte, por eso estoy de acuerdo con los modelos que estás dando capitan.
capitanquartz escribió:He aplicado los cambios, pero con tu permiso, me he permitido la libertad de hacer algunos cambios... no veo necesario utilizar directorios a parte de archivos que se encuentran en la raíz :P


Como ya dije, no se programar y uso un WYSIWYG. Como no sabía como iba a quedar por el temas de los scripts, decidi copiar toda la raiz para no tener problemas XD

Por cierto, aqui te dejo un lista de problemas que he encontrado en la web. Son pequeñeces pero...

-Información sobre el proyecto LinDriver enlaza con la versión en inglés.
-(English version) enlaza con la versión en español
-Los enlaces al esquema de la base de datos de ambas versiones dirigen a /db/index.html que no existe

Creo que no he encontrado nada más.

¿Traduzco el nuevo modelo de base de datos?

EDITO: Traducción del nuevo modelo de la base de datos

# -*- coding: utf-8 -*-
from django.db import models

class Mark(models.Model):
# Brand
name = models.CharField(max_length=50)
def __unicode__(self):
return self.name


class Distro(models.Model):
# Distribution
name = models.CharField(max_length=50)
def __unicode__(self):
return self.name


class Group(models.Model):
# Group
name = models.CharField(max_length=50)
def __unicode__(self):
return self.name


class Ip(models.Model):
# IP adress
ip = models.IPAddressField()
# IP's user. If he doesn't exist, it will be Null.
name = models.CharField(max_length=20)
# Unix hour when the IP was used the last time.
time_max = models.IntegerField()
# Authentication's tries. If it exists, it will be Null. There are 5 tries.
retry = models.IntegerField()
def __unicode__(self):
return self.ip

class User(models.Model):
# User
name = models.CharField(max_length=20)
# Groups where the user is. Using groups there will be permissions in the web.
group = models.ManyToManyField(Group)
# User's e-mail.
email = models.EmailField(max_length=100)
# Under MD5 encrypted password.
password = models.CharField(max_length=50)
# User sign.
firm = models.CharField(max_length=250)
# Msn
msn = models.EmailField(max_length=100)
# Yahoo
yahoo = models.EmailField(max_length=100)
# ICQ number
icq = models.IntegerField()
# Jabber
jabber = models.CharField(max_length=50)
# Man or woman. True is woman and False is man.
woman = models.BooleanField()
# Birthday.
day = models.DateTimeField()
# Under avatar text.
subtext = models.CharField(max_length=20)
# Language.
lang = models.CharField(max_length=2)
# Avatar.
avatar = models.ImageField(upload_to='avatars', max_length=30)
# Web site.
web = models.CharField(max_length=100)
# Country.
country = models.CharField(max_length=20)
# City.
city = models.CharField(max_length=20)

# IP from which the access has been realized.
ip = models.IPAddressField()
# Maximum duration of the cookie. Unix hour.
time_max = models.IntegerField()
# Random code that is used as check to the site.
checker = models.CharField(max_length=200)
def __unicode__(self):
return self.name


class Component(models.Model):
# Name of the component type in Spanish. For example, "tarjeta gráfica"
es = models.CharField(max_length=70)
# Name of the component type in English. For example, "graphic card"
en = models.CharField(max_length=70)
# A description of the component type in Spanish.
description_es = models.CharField(max_length=250)
# A description of the component type in English.
description_en = models.CharField(max_length=250)
# A list of paths to images
image = models.ImageField(upload_to='Component', max_length=100)
def __unicode__(self):
return '<en>%s</en> <es>%s</en>' % (self.en, self.en)

class Hardware(models.Model):
# Component ID (father). It's a entire number. For example, if it's conceptronic C54RU (a wireless USB card) it will have the "tarjeta inalámbrica" ID of the component table.
component = models.ForeignKey(Component)
# The brand. For example, Conceptronic.
mark = models.ForeignKey(Mark)
# The model. In this case, C54RU, but it can be longer.
model = models.CharField(max_length=100)
# There may be variants of the same model and brand, even the same chip. Here it is specified.
variant = models.CharField(max_length=50)
# The chip, in this case, rt73 (ralink).
chip = models.CharField(max_length=50)
# Lsusb output, the lspci of this hardware.
lsx = models.CharField(max_length=200)
# A hardware description in Spanish.
description_es = models.CharField(max_length=250)
# A hardware description in English.
description_en = models.CharField(max_length=250)
# Boolean True or False. True specifies that the data row is that users should see when they refer to this component. For example, there may be a first row that refers a component called "conceptronc C54Ru" (without "i"), but after, another user sends a correction with the name "conceptronic C54Ru" (with "i"). A moderator accepts the correction and the first version is no longer published (the version that users see) to go to see the corrected version.
published = models.BooleanField()
# A entire number that refers an ID or a Null. In the previous case, the first version had a Null so it isn't based on any component (it is the first version) but the correction is the first version's son so it is based on the first one. In this case, the asset is its father's row ID.
father = models.IntegerField()
# A entire number. Following the same example, there is a third version based on the second one (it isn't based on the first version). In this case, "father" is the second version's ID id, but in all versions remains the first version's id, the original, and it's called "first_father". In this way all the comments and solutions will always link to the component regardless of the version which  is.
first_father = models.IntegerField()
# Hardware valuation (0-4), Being already calculated the valuation.
stars = models.DecimalField(max_digits=4, decimal_places=3)
# Current votes in the hardware valuation.
stars_votes = models.IntegerField()
# A entire number. The user ID who sends this information row.
user = models.ForeignKey(User)
# Date when the row was sended.
date = models.DateTimeField()
def __unicode__(self):
return '%s %s' % (self.mark, self.model)


class Solution(models.Model):
####### You musn't get confused between "solution" and "page". Th table "solution" has information about a possible procedure to make to work a certain hardware. For example, for our Conceptronic C54RU whith rt73 chip we can use the drivers of Serialmonkey, ndiswrapper or he official drivers of ralink (privative). A page will be the explication about use a method in a language, for an architecture and a distribution. For example, there may be a página en español explicando como usar los drivers de serialmonkey para x86 en la distro Debian, otra página en inglés para como usar los drivers de serialmonkey for x86 in Debian, another page in Spanish with ndiswrapper for x86_64 in Gentoo...
# A entire number. It is the ID of the "first_father" of the hardware's table.
hardware = models.IntegerField()
# Boolean True or False. It follows the same idea that the published of the hardware's table.
published = models.BooleanField()
# A entire number that refers an ID or Null. It follows the same idea that the "father" of the hardware's table.
father = models.IntegerField()
# A entire number. It follows the same idea that the "first_father" of the hardware's table.
first_father = models.IntegerField()
# The name of the method in Spanish.
name_es = models.CharField(max_length=100)
# The name of the method in English.
name_en = models.CharField(max_length=100)
# A description of the method in Spanish.
description_es = models.CharField(max_length=250)
# A description of the method in English.
description_en = models.CharField(max_length=250)
# Valuation (0-4) of the method, following the calculated valuation.
stars = models.FloatField(max_digits=4, decimal_places=3)
# Currents votes of the method's valuation.
stars_votes = models.IntegerField()
# A entire number. The ID of the user who sends this information.
user = models.IntegerField()
# Date when the row was sended.
date = models.DateField(auto_now)
# Boolean True or False where True refers that it's a privative driver.
privative = models.BooleanField()
def __unicode__(self):
return '<es>%s</es> <en>%s</en>' % (self.name_es, self.name_en)


class page(models.Model):
####### The variants of a manual that are in a the same language, for the same architecture and the same distribution or other distributions will be proposed of improvement, but if there are a variant of the same manual in other language (a translation) it won't be a improvement, rather it is made a new page that will be directly son of "solution".
# A entire number. It is the ID of "first_father" of the solution 's table.
solution = models.IntegerField()
# A entire number that refers an ID or Null. It follows the same idea that the "father" of the hardware's table.
father = models.IntegerField()
# A entire number. It follows the same idea that the "first_father" of the hardware's table.
first_father = models.IntegerField()
# Boolean True or False. It follows the same idea that the published of the hardware's table.
published = models.BooleanField()
# Page's language. For Spanish "es" and for English "en".
lang = models.CharField(max_length=2)
# Distribution/s of the manual.
distros = modelsManyToManyField(distro)
# The architecture (if it is for all the architectures, "All") of the manual.
architectures = models.ManyToManyField(architecture)
# Entire number. The user Id that sends this information.
user = models.IntegerField()
# Date when the row was sended.
date = models.DateField(auto_now)
# Valuation (0-4) of the information.
stars = models.FloatField(max_digits=4, decimal_places=3)
# Current votes on the information's valuation.
stars_votes = models.IntegerField()
# The text with the steps to install the hardware (manual).
text = models.TextField()
def __unicode__(self):
return str(self.id)


class comment(models.Model):
# Comment's type. It can be a comment ("comment") or a bug ("bug").
comment_type = models.CharField(max_length=8)
# Valuation (0-4). A comment: with 0 you don't thank the page and with the 4 you thank the page a lot. A bug: with 0 you think it isn't important and with 4 you think that it's very important.
stars = models.IntegerField()
# A entire number or a Null.It refers th comment or bug's ID.
reply = models.IntegerField()
# A entire number. The user ID that sends this information.
user = models.IntegerField()
# Date when the row was sended.
date = models.DateField(auto_now)
# Comment or bug's title.
title = models.CharField(max_length=40)
# The text with the reply.
text = models.TextField()
def __unicode__(self):
return self.title


class attached(models.Model):
# Name of the attached.
name = models.CharField(max_length=40)
# Versión of the attached.
name = models.CharField(max_length=20)
# Name of the file on the attached's server.
name = models.CharField(max_length=100)
# Number of downloads.
downloads = models.IntegerField()
# The "first_father" of the row in the table "page" where the download should appears.
pages = models.ManyToManyField(page)
# The "first_father" of the row in the table "comment" where the download should appears.
comments = models.ManyToManyField(comment)
# A entire number. The user ID that sends this information.
user = models.IntegerField()
# Date when the information was sended.
date = models.DateTimeField()
def __unicode__(self):
return self.name
Ya he hecho los arreglos en el sitio web y ahora subiré la nueva versión del modelo de la base de datos.

Un saludo.
Yo me apunto para el diseño web pero no conozco Jquery... :(
Ncoola escribió:Yo me apunto para el diseño web pero no conozco Jquery... :(

Ya te he añadido Ncoola.

Y por cierto, Buenas noticias!!
Ya me han respondido los del hosting a mi email, y me han dicho la cantidad que debo pagar. Lamentablemente, el cajero del banco se ha quedado con mi tarjeta y no lo he pasado muy bien que digamos... :-| :-| :-| pero ya he respondido a los del hosting diciendoles que pueden hacer una domiciliación bancaria. Dentro de poco podremos empezar a trabar de verdad :D

Un saludo.
Por curiosidad, ¿que hosting has usado?
jajavimo escribió:Por curiosidad, ¿que hosting has usado?

Ya que he dicho que han tardado mucho en contestar, no voy revelar el nombre... si queréis me lo podéis preguntar por privado.

Un saludo.
¿Hay por ahora algo más que hacer?
Ya tenemos soporte para Django en el servidor (¡¡¡por fin!!!) así que ahora podrémos empezar a trabajar en serio... [360º] [360º] [360º] Tendréis noticias dentro de poco, de momento tengo que configurar el servidor.

Un saludo.

EDITO:


Dentro de poco ya podremos divertirnos como enanos...

http://91.199.120.82:3000/

^^
PD: La dirección que he enlazado es un entorno de desarrollo, cuando haya algo "estable" sobre lo que trabajar, Lindriver.com tendrá puesto la configuración de Django.
capitanquartz escribió:Dentro de poco ya podremos divertirnos como enanos...

http://91.199.120.82:3000/

^^
PD: La dirección que he enlazado es un entorno de desarrollo, cuando haya algo "estable" sobre lo que trabajar, Lindriver.com tendrá puesto la configuración de Django.

Firefox no puede establecer una conexión con el servidor en 91.199.120.82:3000.
a mi tambien me da error [boing]
pho escribió:
capitanquartz escribió:Dentro de poco ya podremos divertirnos como enanos...

http://91.199.120.82:3000/

^^
PD: La dirección que he enlazado es un entorno de desarrollo, cuando haya algo "estable" sobre lo que trabajar, Lindriver.com tendrá puesto la configuración de Django.

Firefox no puede establecer una conexión con el servidor en 91.199.120.82:3000.


Acceso a IP ("Great Success ! Apache is working on your cPanel® and WHM™ Server") pero no a ese puerto sniff.
Si dan problemas los puertos pomnos un tipico index que nos redireccione mejor por ahora ^^
Prueba ahora. Estoy probando como poner el entorno de desarrollo siempre activo, sin tener que tener ssh abierto... intenté poniendo el proceso en segundo plano pero no funciono.

PD: Poneros en contacto conmigo para que os de cuentas de usuario para el panel de administración.
capitanquartz escribió:Prueba ahora. Estoy probando como poner el entorno de desarrollo siempre activo, sin tener que tener ssh abierto... intenté poniendo el proceso en segundo plano pero no funciono.

PD: Poneros en contacto conmigo para que os de cuentas de usuario para el panel de administración.


Ahora si que va ^^, para pruebas para ti mismo te recomiento un navegador en acceso anonimo (o independiente para que no pilles cookies y demas asi como asi y genere conflictos) y utilizando un proxy ^^

Y bueno, tiene buena pinta ^^, te aconsejo pillar un .tk mientras pruebas y que mande directamente al loguearse..., porque al ver tan poca proteccion me han entrado unas ganas de penetrar en tu sistema que para que XD.
capitanquartz escribió:Prueba ahora. Estoy probando como poner el entorno de desarrollo siempre activo, sin tener que tener ssh abierto... intenté poniendo el proceso en segundo plano pero no funciono.

PD: Poneros en contacto conmigo para que os de cuentas de usuario para el panel de administración.


¿Yo voy a necesitar cuenta o es solo para los programadores?
jajavimo escribió:
capitanquartz escribió:Prueba ahora. Estoy probando como poner el entorno de desarrollo siempre activo, sin tener que tener ssh abierto... intenté poniendo el proceso en segundo plano pero no funciono.

PD: Poneros en contacto conmigo para que os de cuentas de usuario para el panel de administración.


¿Yo voy a necesitar cuenta o es solo para los programadores?

Voy a poner de forma fija Django ahora :D y el panel sería usado también por traductores, documentadores...

Aquí hago una lista de lo que se necesita de cada sector:
Tareas pendientes:
Traductores:
Nada de momento :(

Diseñadores gráficos:
Es necesario un logo y un rotulo, preferiblemente colores azules y grises oscuros, yendo a negro. Prefriblemente, que el contorno del logo sea en forma de un cuadrado regular, es decir, que su altura y su anchura sean las mismas. Si se puede, usad vectorial. Es necesario que el fondo sea una transparencia.

Diseño web:
Tampoco hay nada por ahora... :( en cuanto los diseñadores gráficos tengan el logo y los programadores tengamos una base de los formularios... ya os avisaré :P

Programadores:
Se necesita:
  • Un Wiki programado en Django, donde sea necesaria verificación del usuario (verse modelo de la base de datos) y se guarden las diferentes modificaciones del la página, y hacer un sistema que permita comparar las versiones. También serán necesarios otros detalles como guardar la hora, etc. Hay libertad para proponer ideas al respecto y aplicarlas.
  • Un formulario de registro para usuarios donde, se guarden los reintentos de registro y sean necesario X segundos entre intento e intento, no se permita más de un registro a la hora, verificación por Captcha, verificación de formularios válidos mediante Jquery (de esto se pueden encargar los diseñadores web)... se permita libertad y propuesta de ideas. Preferiblemente, que la contraseña se envié codificada al servidor.
  • Un sistema de verificación del usuario, donde, se guarde la Ip de cada reintento y se ponga un cookie en el cliente con información, además de en el servidor. tras 1 reintento, se pide verificación por Captcha. Tras 5 intentos, no se permitirá volver a intentar hasta dentro de 15 minutos. Si la verificación del usuario se valida, se envía una cadena de 50 carácteres al cliente (aunque podéis poner más o menos, eso está a vuestra elección) generada aleatoriamente en el servidor, con mayúsculas, minúsculas, números y símbolos, la cual se almacena en una cookie junto con una fecha límite de utilización y usuario, y será necesario enviar dicha cadena con cada petición al servidor. También se guardará la Ip del usuario junto con la fecha límite y la cadena. Si alguno de los 3 falla, la petición se deniega.

Relaciones públicas: Tampoco hay nada de momento. El proyecto tendrá que estar más maduro para que se pueda empezar a trabajar.

Otras cosas:
Twitter: http://twitter.com/lindriver
Jabber (red de mensajería instantánea): lindriver@conf.jabberes.org
Nota: Podemos usar Irc si lo preferís. A mí personalmente no me importa.
Blog: Próximamente...
Correo electrónico: Próximamente...
capitanquartz escribió:Diseño web:
Tampoco hay nada por ahora... :( en cuanto los diseñadores gráficos tengan el logo y los programadores tengamos una base de los formularios... ya os avisaré :P


OK, mientras ire mirando como es Jquery ;)
Ncoola escribió:
capitanquartz escribió:Diseño web:
Tampoco hay nada por ahora... :( en cuanto los diseñadores gráficos tengan el logo y los programadores tengamos una base de los formularios... ya os avisaré :P


OK, mientras ire mirando como es Jquery ;)

Buenas idea ;-) Por cierto, recordaros que tenemos una cuenta de Twitter donde iré anunciando las novedades en directo y una sala de chat.

También disculparme porque por lo que tengo enterado, el servidor esta fallando. Lamento los problemas que pueda estar haciendo. esta es una situación provisional mientras desarrollamos el proyecto.

Un saludo.
Veo que el proyecto avanza, lento , pero avanza.

Hang on, baby ! xD
Ya tenemos blog :D :D :D
http://blog.lindriver.com

Todavía no he tenido respuesta de los del hosting :(

Y recordar, que también tenemos una cuenta de Twitter donde actualizo con todas las novedades del proyecto: http://twitter.com/lindriver

Y que tenemos una sala donde hablar: lindriver@conf.jabberes.org
Malas noticias: esta mañana me ha petado el HDD de mi sobremesa [cawento]. Probablemente para la semana que viene tenga un disco duro nuevo.
resadent escribió:Malas noticias: esta mañana me ha petado el HDD de mi sobremesa [cawento]. Probablemente para la semana que viene tenga un disco duro nuevo.

Vaya, que lástima :( Una put*** horrible, se lo que es... si te sirve de consejo, la última vez que me pasó cogí una llave con DSL (Damm Small Linux) y pude seguir trabajando, aunque limitado. Así por lo menos no tendrás un equipo inutilizado en tu casa...

----------------
Las cosas continúan como desde ayer: Los del hosting no responden, yo sigo avanzando por mí parte en local y recordar, que tenemos un blog, un twitter y una sala de chat para que podáis estar al tanto de todo...

Ahora mismo como se que los traductores no pueden hacer nada, estoy preparando los mensajes de error:

LinDriver Error Messages:

Categoría: #LDEM-1xxx
Errores en verificación de datos.
Errores ya establecidos:
#LDEM-1001: Ha pasado el tiempo límite que puede estar verificado como usuario en el sitio web. Porfavor, vuelva a conectarse, es por su seguridad.
#LDEM-1002: Está utilizando una dirección Ip diferente con la que se conectó al sitio web. Por su seguridad, vuelva a conectarse. Gracias.
#LDEM-1003: El código de verificación de su sesión no concuerda con la del servidor. Debe volver a conectarse.
#LDEM-1004: Parece ser que ya se encuentra conectado, pero el usuario por el que se encuentra verificado no se encuentra en la base de datos. Vuelva a iniciar sesión.
#LDEM-1005: Esta intentando acceder a una página que se encuentra fuera de sus permisos de usuario. Porfavor, debe conectarse como un usuario con los permisos para entrar en está página o conseguir en su usuario dichos permisos.

Categoría: #LDEM-2xxx
Errores en peticiones al servidor, formularios...
Errores ya establecidos:
#LDEM-2001: Ha realizado una petición al servidor que excede el límite de tamaño o longitud. Puede ponerse en contacto con nosotros si se trata de un error del sitio web. Gracias.
#LDEM-2002: La URL contiene parámetros (variables) que son erroneas ya que apuntan a Ids de elementos en la base de datos que no existen o son invalidos.
#LDEM-2003: El verificador de campos rellenados Javascript ha aceptado la petición de envio del formulario al servidor, pero, este no se encuentra completo o contiene campos invalidos. Porfavor, si se trata de un error del sitio web pongase en contacto con nosotros.
#LDEM-2004: El campo %CAMPO% contiene valores invalidos. Porfavor, lea con detenimiento las instrucciones que se le ofrecen para rellenarlo correctamente. Gracias.

Categoría: #LDEM-4xxx
Errores en el servicio.
Errores ya establecidos:
#LDEM-4001: En este momento el servidor se encuentra al máximo de su capacidad de procesamiento. Intentelo más tarde.
#LDEM-4002: Ha sido imposible conectar con la base de datos. El error se encuentra en el lado del servidor. No es necesario que se ponga en contacto con nosotros para advertir del error, ya tendrémos constancia del problema tras haber visto usted este mensaje. Sentimos las molestías.
#LDEM-4004: La ruta en la url no concuerda con ningún patrón del sitio web, por lo tanto, no es posible mostrarle información.
A ver si para mañana tengo traducidos los mensajes de error
Estoy a la espera de que me solucionen unos problemas en el grupo de conversación de Django-es. Si para esta noche no se resuelve mi duda, usaré otro método para sortear el problema. No puedo seguir de brazos cruzados...

Por otra parte, he aprovechado para avanzar un poco en lo que será el diseño de la web. http://static.lindriver.com/lindriver.html aún me queda mucho trabajo, pero creo que ayuda a hacerse una idea... por lo menos en mi Konqueror no se muestran bien los bordes, lo cual es algo que estoy intentando solucionar, pero que si alguien me echa una mano, se lo agradeceré.
No tengo acceso (hasta que me digne a usarlo por Wine) a Internet Explorer, así que si algún alma caritativa pudiese decirme que tal se ve en dicho navegador... :P
En elinks no he visto problemas, la navegación es sencilla y fácil. Y por si alguien lo preguntase: No, el logo que se muestra no es el definitivo... para nada. Es solo un garabato de relleno que hice ya que aún no disponemos de logo ¬¬

Un saludo.
Probado tanto en Chrome como en IE7, en los dos se ve bien!!!
Imagen

Ánimo con el proyecto!!!
luciferfran escribió:Probado tanto en Chrome como en IE7, en los dos se ve bien!!!
Imagen

Ánimo con el proyecto!!!


Emm... realmente como debe verse es así O_o
Imagen
Es verdad! no me habia dado cuenta, pues lo confirmo en Chrome y en IE7 se ve mal, en Firefox bien
Yo ahora mismo voy a trabajar en el esqueleto del sitio web. Porfavor, si alguien pudiese, que se encargue de arreglar el problema :(

Gracias.
una duda que tengo yo, vale que tendria que arreglarse con el chrome, etc, pero al IE7
sinceramente, yo diria que le den al IE7
xexio escribió:una duda que tengo yo, vale que tendria que arreglarse con el chrome, etc, pero al IE7
sinceramente, yo diria que le den al IE7


La verdad es que si..., ¿cuantas personas utilizaran este explorador para esta pagina particularmente? XD.


"LinDriver. Recopilación de drivers para GNU/Linux", ¿objetivo prioritatio que se vea con el navegador de Microsoft que nadie en Linux quiere utilizar sino es para mirar como alguna web bien hecha no va con el por caprichos del programador?
No es algo prioritario la perfecta visualizacion con IE XD.

Lo de Chrome pues mira, yo lo utilizo desde Windows siempre..., y porque no se puede aun nativamente desde Linux bien XD.
Dos consejos:
no perdáis tiempo de momento con Internet Explorer. Dedicaos a hacer las páginas válidas tanto en el html como en el CSS y hasta que no tengáis un diseño definitivo no le dediquéis horas a adaptarlo.

Pon la búsqueda arriba centrada y el otro bloque debajo. El qué es y para qué es en mi opinión deberían ser lo mismo. Las explicaciones de esto, junto con el Cómo funciona deberían abrirse en un área dentro del mismo bloque para no perder al usuario novato por varias páginas justo cuando acaba de llegar.
e provado en clase con windows XP + google chrome y la pagina se ve bien, mañana subire unas capturas que ahora estoi en casa
TRADUCCIÓN DE LOS MENSAJES DE ERROR

LinDriver Error Messages:

Category: #LDEM-1xxx
Errors in data verification.
Already established errors:
#LDEM-1001: You have spent the time limit you can be verified as a user of the website. Please, log in again, this is for your safety.
#LDEM-1002: You are using a different IP adress with which you were connected to the website.Please, log in again, this is for your safety. Thank you.
#LDEM-1003: The verification code of your session doesn't match with the server. You must log in again.
#LDEM-1004: It seems you are already connected, but the user you are verify isn't in the database. Log in again.
#LDEM-1005: You are trying to acces a page that your user has no permissions. You must connect as a user with the permissions to enter in page is or obtain in your user the mentioned permissions.

Category: #LDEM-2xxx
Errors in requests to server, forms...
Already established errors:
#LDEM-2001: you have made a request to server that exceeds the size or length. You can contact us if it is a website error. Thank you.
#LDEM-2002: The URL contains parameters (variables) that are wrong and suggest Id's of elements that don't exist in the database or are invalid.
#LDEM-2003: The Javascript completed field verificatior has accepted the request of sending the form to the server, but it isn't complete or contains invalid fields. Please, contact us if it is a website error.
#LDEM-2004: The field %CAMPO% has invalid values. Please, read carefully the instructions offered to fill it out correctly. Thank you.

Category: #LDEM-4xxx
Errors in the service.
Already established errors:
#LDEM-4001: At this time the server is at maximum capacity of processing. Try it later.
#LDEM-4002: Connecting to the database has been imposible. This is a server error. You needn't contact us because of we already have a record of the problem after you have seen this message. Sorry.
#LDEM-4004: The URL doesn't match with any pattern of the site so we can't display you the information.
Muchas gracias jajavimo por la traducción. Estoy intentando arreglar un bug que espero tener listo para mañana. Si para entonces no han respondido los del hosting, pondré el modo de entorno de desarrollo en el servidor, el cual, al menos sé que funciona correctamente.

Un saludo.

PD: Recordar que por Twitter voy informando de todo...
capitanquartz escribió:PD: Recordar que por Twitter voy informando de todo...


Y tambien hay una sala de charla jabber: lindriver@conf.jabberes.org

Se puede acceder via web:

http://www.jabberes.org/salas/entrar/?room=lindriver

Aunque es mejor utilizar algun programa como se explica en esta guía:

wiki/Guia_de_Psi_-Jabber-
Gracias por recordarlo ;-) yo me suelo encontrar por ahí...
Ya he arreglado los problemas con la base de datos. Ahora seguiré con el tema del envió desde el formulario...

Un saludo.

EDIT: ¡¡Ya he solucionado el problema en los formularios!! Mañana seguiré con un ritmo de trabajo fluido... :P
Parece que todo marcha bien.

Un salu2. Ánimo !
Escribo este mensaje para informaros que se va a instalar en el servidor un módulo(s) de RAM adicionales, por lo que el servidor estará desconectado unos minutos. Este es el email que me han enviado.

Estimado cliente:

Te comunicamos que durante la tarde de hoy lunes 4 de mayo realizaremos
tareas de mantenimiento urgente en el servidor en que se encuentra tu cuenta
de alojamiento:

(...)

Los trabajos se realizarán entre las 18 y las 20 horas y la duración máxima
estimada de desconexión será de 15 minutos.

Aprovecharemos para instalar RAM adicional en el servidor, duplicando la
capacidad actual, a fin de mejorar el rendimiento de las páginas web alojadas
en el servidor.

Te pedimos disculpas por cualquier inconveniente que esto pueda suponer y te
agradecemos una vez más tu confianza en (...).

Muchas gracias,
El equipo de (...).

No diré el nombre de los del hosting salvo que estos los deseen. Eso sí, les agradezco mucho a la compañía con la que tenemos contratado por dejarnos tener Django. Han hecho una excepción con nosotros ya que no tienen soporte para Django anunciado para sus clientes.

Novedades del proyecto:
  • Feler, un amigo de confianza, se está encargando del sistema de registro y de verificación de usuarios.
  • Esperamos que el servidor comience a funcionar decentemente. Los problemas que hemos tenido hasta el momento, muy posiblemente desaparezcan... :)
  • Estoy terminando el sistema de formularios, que es una parte esencial del proyecto y el sistema de visión de páginas. Tras esto me pondré con el buscador y con el visionador de resultados :P
  • Podéis descargar versiones del proyecto de aquí: http://static.lindriver.com/download/
  • Vuelven los problemas con la base de datos en el servidor. Vuelven, al servidor vuelven... pero espero solucionarlo pronto.

Un saludo a todos.
[plas] Espero novedades en breve ^^ que tiene muy buena pinta :D
Sigo trabajando :P Podéis ver los avances en el sitio web:
http://lindriver.com/es/search/

Y descargar las novedades en este sitio web:
http://static.lindriver.com/download

¡¡Dentro de poco podréis ver más novedades!! ^_^
Siguiendo indicaciones de Capitanquartz he terminado el logo, a ver que os parece.

Imagen
Mmmm... eso me ha dado una idea, creo que mañana voy a presentar mi candidato a logo... a ver si consigo lidiar con gimp xD.
resadent escribió:Mmmm... eso me ha dado una idea, creo que mañana voy a presentar mi candidato a logo... a ver si consigo lidiar con gimp xD.


Intenta hacerlo con inkscape, para que sea vectorial.
Primeras pruebas del siguiente prototipo:

Imagen

Imagen

Imagen

Voy todo lo deprisa que puedo, pero esto, arreglar algunos bugs, añadir alguna cosa que otra... pues me ha comido todo el día :P pero mañana seguiré. Por cierto, los diseños de las imágenes anteriores, están muy muy incompletos, sobre todo el tercero.

Un saludo.
Pedazo de currada, tiene muy pero que muy buena pinta, aver comoo sigue esto, mi enhorabuena.

Saludos.
208 respuestas
1, 2, 3, 4, 5