Entrada del blog Desvaríos informáticos, en la que aparte de afirmar que hay pocos fallos de seguridad en Menéame para lo que es habitual, comenta varias líneas del código de la API. Entrada especialmente interesante para desarrolladores y curiosos.
En primer lugar que siempre debe haber un grado de confianza hacia los dueños o administradores del sitio, sino es imposible que funcione cualquier sitio web.
Es ridículo pedir que además todo el mundo tenga acceso directo al servidor, por varias razones:
1. El servidor es propiedad privada.
2. Problemas básicos de seguridad: posibilidad de que otros modifiquen ficheros, o que puedan ver la clave privada que se usa para los "hash" de control.
3. Estaríamos violando la LOPD, ya que tendría acceso a datos personales.
4. Practicidad: no podemos dar acceso a los 200.000 usuarios diarios que acceden al menéame, ni siquiera a los 5.000 ó 10.000 que participan diariamente enviando, comentando o votando.
Pero, el hecho que el código esté publicado da un márgen más de confianza, bastante más que la de un sitio que no te muestra ni publica nada de código.
Aún más, pero mejorar la confianza y sobre todo el tan reclamado "quién vigila a los vigilantes" también ponemos a disposición toda la información para este control:
1. El promote (http://meneame.net/promote.php) con los cálculos en "tiempo real" que hace el programa de promoción de noticias. Con éste es relativamente sencillo verificar si es la misma versión publicada a la que se ejecuta.
2. Los cálculos del karma de cada usuario son verificables en su perfil. Con esto es relativamente fácil (la complejidad reside en la cantidad de datos/votos) verificar que el código es el mismo. O detectar errores, bugs o "injusticias".
3. Las decisiones principales que se toman respecto a las noticias (automáticas como la del promote, o manuales como descartar noticias que violan las reglas) están en los logs de cada noticia. Además nunca borramos ninguna noticia, y se suele comentar el porqué se han tomado decisiones "manuales".
4. Todos los votos son públicos. Tanto en cada noticia y comentario como en el perfil de cada usuario (que se pueden ver los votos a noticias, negativos y positivos).
5. Además todo el historial de votos, comentarios, notas o envíos de cada usuario está también disponible.
¿Qué más se puede ofrecer sin empezar a rozar los límites legales, éticos o de practicidad? Por publicar, hasta las estadísticas de acceso son públicas (en quantcast) y otras estadísticas en tiempo real en la fisgona (por ejemplo el comando !stats o !stats2).
¿Qué otro sitio publica tanta información como el Menéame?
Si con todo eso tienes dudas, creo que deberías primero empezar a plantear las mismas dudas de otros sitios que no publican absolutamente nada.
PS: Por otro lado, hace un tiempo un A-list wannabe nos puso a parir acusándonos que ocultamos información porque no dejamos ver el código que se ejecuta (WTF?). Le ofrecí que si firmaba un documento de confidencialidad por temas legales (básicamente la LOPD) y de seguridad (claves privadas) le dejaríamos auditar. Rechazó la oferta. Si el de este comentario me demuestra que sabe de informática y programación web, que ha hecho trabajos similares de "auditoría", y que nos entrega un documento de confidencialidad, no tenemos ningún problema en que audite si lo que hay ejecutándose es lo mismo que lo que está publicado.
#30:
Me gustaría hacer una reflexión sobre todo esto...
Me gusta colaborar con meneame (me refiero a la parte técnica, meneame es software libre), y cada vez que escribo sobre ello, salta gente con historias de mafias, de egos, de narcicismos, o de no se que.
Esto es un articulo técnico, quien no le guste, no lo entienda, o no le interese, que no lo vote, igual que el resto de artículos técnicos.
Pero por favor, esto no es un articulo de opinión sobre meneame y sus usuarios, sus mafias, o sobre el pp o el psoe, por que este tipo de artículos se llena siempre de trolls? el siguiente paso ya me lo conozco, mañana el blog lleno de comentarios insultando...es ya rutina cada vez que me menean una noticia relacionada con meneame o seguridad. En otros temas no pasa, misterios.
Veis fantasmas de mafias, egos, spams, karmas, etc por todas partes, tanto, que ya no sois capaces de discernir un simple articulo técnico.
#12:
No he comprendido demasiado del funcionamiento de menéame por dentro, ya que no soy un experto. Pero el artículo si ha causado una impresión en mi: con todo el funcionamiento interno del site abierto (diciendolo en un lenguaje común, "con las tripas al aire") aún no entiendo cómo hay gente que dice que hay una "mafia". Para mi es cómo si dijeran que se pueden esconder cosas en una caja de cristal.
> _($current_user->user_level==”god”_ || _$current_user->user_level==”admin”) es un insulto a la eficiencia...
Poco sabes sobre "evaluar la eficiencia", y has soltado una barbaridad. Te voy a dedicar unos segundos para explicarlo brevemente.
0. Sin mirar el código está claro que el Menéame es muy eficiente, dime de cuantos sitios con base de datos como la nuestra, y con 700.000 páginas vistas al día (más de 2 millones si cuentas las llamadas al backend) funciona tan rápido y con tan pocos servidores.
1. El mayor consumo --de lejos, muy de lejos-- de CPU del Menéame es del MySQL (i.e. las consultas SQL), no del PHP.
2. Esas cadenas "admin", "god" (y "disabled", "normal") provienen del diseño de la base de datos, se usa el campo ENUM, que es el más eficiente tanto en "compactación" como en el acceso a los índices (que tenemos varios).
3. Escalar (o sea replicar) PHP es mucho más fácil que replicar bases de datos, sólo tienes que agregar servidores webs.
Por esas razones básicas se usan campos ENUM donde es posible.
PS: Seguramente el código es mejorable y optimizable por todos lados, pero lo burrada que acabas de decir con tanta autoridad y chulería sin siquiera haber mirado las razones de que sean string me hace dudar que seas capaz de hacerlo bien. Si se me permite dudar...
Hablar sobre qué es _"$current_user"_ o sobre si hay directorios para wii y demás es como poco una frivolidad para alguien que alardea de que "he encontrado varios problemas y de gravedad variada" pero no dice cuales o que afirma que "el número total de problemas de seguridad, ha sido mucho menor que en otros sites populares" pero no dice cual es ese número total de problemas y con qué sitios los compara.
O con php-nuke, que ha tenido también sus decenas de bugs.
Vamos a ser claros en este punto, phpbb, php-nuke, etc etc tienen todos algo en común, son productos de software libre desarrollados en php, cualquier puede ir a securityfocus.com y ver la cantidad de agujeros de seguridad que han tenido, todos ellos.
Meneame es mucho menos popular como software que esos productos, sin embargo, pese a ser también software libre y escrito en php, no ha tenido prácticamente errores de seguridad graves.
www.phpbb.com, la sección foros, donde obviamente utilizan phpbb, ha sido defaceada unas 10 veces, meneame 0.
No quiero decir con esto que meneame sea perfecto, nada mas lejos, las personas que han auditado su código, saben que ha tenido problemas, como cualquier software del mundo, y que se han ido superando, lo que quiero decir es que lleva años en linea y ha logrado mantener una cierta seguridad.
Sin embargo, es mucho mas fácil recurrir un ad hominem como has hecho, diciendo en pocas palabras, que no soy nadie para hablar de la seguridad de nada.
Para empezar, aquí tienes unos cuantos bugs descubiertos por mi en meneame:
Si te hubieses molestado en mirar los logs del svn, los hubieses visto tu, pero es mucho mas fácil recurrir al ad hominem fácil y saltar a la siguiente noticia donde haya algo para trollear.
Es un producto de software libre que proporciona unos foros, como phbb, aquí tienes un advisory (reporte) hecho por mi hace tiempo sobre una vulnerabilidad en esos foros.
No estoy haciendo este post para alardear de mi trabajo o de lo que hago para colaborar con proyectos como smf, por lo cual, no voy a continuar poniendo citas ni enlaces.
Lo único que quiero decir, es: ¿Por que necesito poner aquí todo lo que hago, y justificarme antes ti? Es que acaso no tengo derecho a escribir un artículo y que tu lo juzgues por su contenido, en lugar de decir que es frivolo por que yo no soy nadie?
Supongo que en el fondo te da igual lo que escriba aquí, ya habrás pasado a trollear a la siguiente noticia.
Hay mucha gente que no le gusta lo que escribo, por motivos muy variados.
Pero cuando me dicen que las explicaciones técnicas son de patio de colegio, me gusta que eso vaya precedido de una explicación, de lo contrario, lo tomo como pataleo.
Por cierto, tu también tienes que admitir que te puedan tachar de troll, si vienes a un artículo técnico, a lloriquear sobre mafias y tonterías, desviando el tema a una discusión, como la que estamos teniendo, al mas puro estilo troll.
#48:
#35 ¿Cómo sabes que las personas del mundo real son personas reales y que no estás viviendo en Matrix?
#31:
#19 No sé lo que hay en el servidor. Por mi puede haber 1000 monos picando máquinas de escribir, pero yo pienso que el site funciona porque no es un código cerrado lo que regula los contenidos, si no los propios usuarios. Una noticia irrelevante, por ejemplo, normalmente no la descarta "el servidor", si no los usuarios que piensan que no merece salir a portada.
No voy a ponerme "narcisista" y decir que menéame es perfecta y que supera a cualquier otro site social. Como todo, tiene aspectos en los que mejorar... pero no depende de códigos cerrados o abiertos para funcionar, si no que presta una "base" para que los usuarios opinen y monten su propio site.
#79:
Si por algo odio estos posts tan tecnicistas es porque no puedo trollear ni insultar a nadie ni poner negativos "unfair" ni hostias, fundamentalmente porque no tengo ni puñetera de programación. Qué aburridos son, en el fondo, ¿no?
(por si acaso)
#55:
#54 mucha gente ha hablado de mafias en los comentarios de esta noticia, y de todas esas historias.
Es mas, mucha gente habla de mafia en los comentarios de cualquier noticia del meneame.
No he querido decir que tu precisamente lo hayas hecho, estaba generalizando sobre que te pueden tachar de troll, si tomas esa actitud, no me refiero a que tu la hayas tomado, y siento mucho si es así como ha sonado, lo último que he querido es ofenderte o caer en el ad hominem.
Hay que entender una cosa, meneame es software libre, aparte de existir meneame.net, existe un software entorno a el, con licencia Affero, que eso sobre lo que trata el artículo, y de igual manera que existe una comunidad entorno a phpbb, smf, o drupal, existe una (mucho mas pequeña) comunidad entorno a este software, que tiene el mismo nombre que el site, meneame.
Con comunidad me refiero a gente que ha leído el código, gente que ha contribuido de maneras muy diversas, y gente que ha programado cosillas entorno a este software.
Es cierto que el site, meneame.net, es la razón de existir de meneame (el software) pero no quiero entrar en eso, por eso he hecho incapie en que he pretendido darle un enfoque técnico a la cuestión.
Se que hay mucha gente que desconoce que hay una API en meneame, que se puede jugar con ella, las implicaciones que tiene que meneame sea libre, etc, y eso es lo que me lleva a que haya escrito un par de veces sobre ello, por que personalmente pienso que desde meneame se promociona poco el uso de estas APIS y la integración de meneame en el escritorio y en las aplicaciones existentes.
En primer lugar que siempre debe haber un grado de confianza hacia los dueños o administradores del sitio, sino es imposible que funcione cualquier sitio web.
Es ridículo pedir que además todo el mundo tenga acceso directo al servidor, por varias razones:
1. El servidor es propiedad privada.
2. Problemas básicos de seguridad: posibilidad de que otros modifiquen ficheros, o que puedan ver la clave privada que se usa para los "hash" de control.
3. Estaríamos violando la LOPD, ya que tendría acceso a datos personales.
4. Practicidad: no podemos dar acceso a los 200.000 usuarios diarios que acceden al menéame, ni siquiera a los 5.000 ó 10.000 que participan diariamente enviando, comentando o votando.
Pero, el hecho que el código esté publicado da un márgen más de confianza, bastante más que la de un sitio que no te muestra ni publica nada de código.
Aún más, pero mejorar la confianza y sobre todo el tan reclamado "quién vigila a los vigilantes" también ponemos a disposición toda la información para este control:
1. El promote (http://meneame.net/promote.php) con los cálculos en "tiempo real" que hace el programa de promoción de noticias. Con éste es relativamente sencillo verificar si es la misma versión publicada a la que se ejecuta.
2. Los cálculos del karma de cada usuario son verificables en su perfil. Con esto es relativamente fácil (la complejidad reside en la cantidad de datos/votos) verificar que el código es el mismo. O detectar errores, bugs o "injusticias".
3. Las decisiones principales que se toman respecto a las noticias (automáticas como la del promote, o manuales como descartar noticias que violan las reglas) están en los logs de cada noticia. Además nunca borramos ninguna noticia, y se suele comentar el porqué se han tomado decisiones "manuales".
4. Todos los votos son públicos. Tanto en cada noticia y comentario como en el perfil de cada usuario (que se pueden ver los votos a noticias, negativos y positivos).
5. Además todo el historial de votos, comentarios, notas o envíos de cada usuario está también disponible.
¿Qué más se puede ofrecer sin empezar a rozar los límites legales, éticos o de practicidad? Por publicar, hasta las estadísticas de acceso son públicas (en quantcast) y otras estadísticas en tiempo real en la fisgona (por ejemplo el comando !stats o !stats2).
¿Qué otro sitio publica tanta información como el Menéame?
Si con todo eso tienes dudas, creo que deberías primero empezar a plantear las mismas dudas de otros sitios que no publican absolutamente nada.
PS: Por otro lado, hace un tiempo un A-list wannabe nos puso a parir acusándonos que ocultamos información porque no dejamos ver el código que se ejecuta (WTF?). Le ofrecí que si firmaba un documento de confidencialidad por temas legales (básicamente la LOPD) y de seguridad (claves privadas) le dejaríamos auditar. Rechazó la oferta. Si el de este comentario me demuestra que sabe de informática y programación web, que ha hecho trabajos similares de "auditoría", y que nos entrega un documento de confidencialidad, no tenemos ningún problema en que audite si lo que hay ejecutándose es lo mismo que lo que está publicado.
Me gustaría hacer una reflexión sobre todo esto...
Me gusta colaborar con meneame (me refiero a la parte técnica, meneame es software libre), y cada vez que escribo sobre ello, salta gente con historias de mafias, de egos, de narcicismos, o de no se que.
Esto es un articulo técnico, quien no le guste, no lo entienda, o no le interese, que no lo vote, igual que el resto de artículos técnicos.
Pero por favor, esto no es un articulo de opinión sobre meneame y sus usuarios, sus mafias, o sobre el pp o el psoe, por que este tipo de artículos se llena siempre de trolls? el siguiente paso ya me lo conozco, mañana el blog lleno de comentarios insultando...es ya rutina cada vez que me menean una noticia relacionada con meneame o seguridad. En otros temas no pasa, misterios.
Veis fantasmas de mafias, egos, spams, karmas, etc por todas partes, tanto, que ya no sois capaces de discernir un simple articulo técnico.
No he comprendido demasiado del funcionamiento de menéame por dentro, ya que no soy un experto. Pero el artículo si ha causado una impresión en mi: con todo el funcionamiento interno del site abierto (diciendolo en un lenguaje común, "con las tripas al aire") aún no entiendo cómo hay gente que dice que hay una "mafia". Para mi es cómo si dijeran que se pueden esconder cosas en una caja de cristal.
> _($current_user->user_level==”god”_ || _$current_user->user_level==”admin”) es un insulto a la eficiencia...
Poco sabes sobre "evaluar la eficiencia", y has soltado una barbaridad. Te voy a dedicar unos segundos para explicarlo brevemente.
0. Sin mirar el código está claro que el Menéame es muy eficiente, dime de cuantos sitios con base de datos como la nuestra, y con 700.000 páginas vistas al día (más de 2 millones si cuentas las llamadas al backend) funciona tan rápido y con tan pocos servidores.
1. El mayor consumo --de lejos, muy de lejos-- de CPU del Menéame es del MySQL (i.e. las consultas SQL), no del PHP.
2. Esas cadenas "admin", "god" (y "disabled", "normal") provienen del diseño de la base de datos, se usa el campo ENUM, que es el más eficiente tanto en "compactación" como en el acceso a los índices (que tenemos varios).
3. Escalar (o sea replicar) PHP es mucho más fácil que replicar bases de datos, sólo tienes que agregar servidores webs.
Por esas razones básicas se usan campos ENUM donde es posible.
PS: Seguramente el código es mejorable y optimizable por todos lados, pero lo burrada que acabas de decir con tanta autoridad y chulería sin siquiera haber mirado las razones de que sean string me hace dudar que seas capaz de hacerlo bien. Si se me permite dudar...
#19 No sé lo que hay en el servidor. Por mi puede haber 1000 monos picando máquinas de escribir, pero yo pienso que el site funciona porque no es un código cerrado lo que regula los contenidos, si no los propios usuarios. Una noticia irrelevante, por ejemplo, normalmente no la descarta "el servidor", si no los usuarios que piensan que no merece salir a portada.
No voy a ponerme "narcisista" y decir que menéame es perfecta y que supera a cualquier otro site social. Como todo, tiene aspectos en los que mejorar... pero no depende de códigos cerrados o abiertos para funcionar, si no que presta una "base" para que los usuarios opinen y monten su propio site.
Hablar sobre qué es _"$current_user"_ o sobre si hay directorios para wii y demás es como poco una frivolidad para alguien que alardea de que "he encontrado varios problemas y de gravedad variada" pero no dice cuales o que afirma que "el número total de problemas de seguridad, ha sido mucho menor que en otros sites populares" pero no dice cual es ese número total de problemas y con qué sitios los compara.
O con php-nuke, que ha tenido también sus decenas de bugs.
Vamos a ser claros en este punto, phpbb, php-nuke, etc etc tienen todos algo en común, son productos de software libre desarrollados en php, cualquier puede ir a securityfocus.com y ver la cantidad de agujeros de seguridad que han tenido, todos ellos.
Meneame es mucho menos popular como software que esos productos, sin embargo, pese a ser también software libre y escrito en php, no ha tenido prácticamente errores de seguridad graves.
www.phpbb.com, la sección foros, donde obviamente utilizan phpbb, ha sido defaceada unas 10 veces, meneame 0.
No quiero decir con esto que meneame sea perfecto, nada mas lejos, las personas que han auditado su código, saben que ha tenido problemas, como cualquier software del mundo, y que se han ido superando, lo que quiero decir es que lleva años en linea y ha logrado mantener una cierta seguridad.
Sin embargo, es mucho mas fácil recurrir un ad hominem como has hecho, diciendo en pocas palabras, que no soy nadie para hablar de la seguridad de nada.
Para empezar, aquí tienes unos cuantos bugs descubiertos por mi en meneame:
Si te hubieses molestado en mirar los logs del svn, los hubieses visto tu, pero es mucho mas fácil recurrir al ad hominem fácil y saltar a la siguiente noticia donde haya algo para trollear.
Es un producto de software libre que proporciona unos foros, como phbb, aquí tienes un advisory (reporte) hecho por mi hace tiempo sobre una vulnerabilidad en esos foros.
No estoy haciendo este post para alardear de mi trabajo o de lo que hago para colaborar con proyectos como smf, por lo cual, no voy a continuar poniendo citas ni enlaces.
Lo único que quiero decir, es: ¿Por que necesito poner aquí todo lo que hago, y justificarme antes ti? Es que acaso no tengo derecho a escribir un artículo y que tu lo juzgues por su contenido, en lugar de decir que es frivolo por que yo no soy nadie?
Supongo que en el fondo te da igual lo que escriba aquí, ya habrás pasado a trollear a la siguiente noticia.
Hay mucha gente que no le gusta lo que escribo, por motivos muy variados.
Pero cuando me dicen que las explicaciones técnicas son de patio de colegio, me gusta que eso vaya precedido de una explicación, de lo contrario, lo tomo como pataleo.
Por cierto, tu también tienes que admitir que te puedan tachar de troll, si vienes a un artículo técnico, a lloriquear sobre mafias y tonterías, desviando el tema a una discusión, como la que estamos teniendo, al mas puro estilo troll.
Si por algo odio estos posts tan tecnicistas es porque no puedo trollear ni insultar a nadie ni poner negativos "unfair" ni hostias, fundamentalmente porque no tengo ni puñetera de programación. Qué aburridos son, en el fondo, ¿no?
No se sabe si los usuarios que votan una noticia o la descartan son personas reales o bots programados para ello por el mismo creador.
Si lo usuarios de meneame fueran bots desarrollados por los administradores, perl habría conseguido ser la primera persona en desarrollar un bot capaz de superar el test de turing, porque vamos, a mi los usuarios me parecen totalmente humanos.
#54 mucha gente ha hablado de mafias en los comentarios de esta noticia, y de todas esas historias.
Es mas, mucha gente habla de mafia en los comentarios de cualquier noticia del meneame.
No he querido decir que tu precisamente lo hayas hecho, estaba generalizando sobre que te pueden tachar de troll, si tomas esa actitud, no me refiero a que tu la hayas tomado, y siento mucho si es así como ha sonado, lo último que he querido es ofenderte o caer en el ad hominem.
Hay que entender una cosa, meneame es software libre, aparte de existir meneame.net, existe un software entorno a el, con licencia Affero, que eso sobre lo que trata el artículo, y de igual manera que existe una comunidad entorno a phpbb, smf, o drupal, existe una (mucho mas pequeña) comunidad entorno a este software, que tiene el mismo nombre que el site, meneame.
Con comunidad me refiero a gente que ha leído el código, gente que ha contribuido de maneras muy diversas, y gente que ha programado cosillas entorno a este software.
Es cierto que el site, meneame.net, es la razón de existir de meneame (el software) pero no quiero entrar en eso, por eso he hecho incapie en que he pretendido darle un enfoque técnico a la cuestión.
Se que hay mucha gente que desconoce que hay una API en meneame, que se puede jugar con ella, las implicaciones que tiene que meneame sea libre, etc, y eso es lo que me lleva a que haya escrito un par de veces sobre ello, por que personalmente pienso que desde meneame se promociona poco el uso de estas APIS y la integración de meneame en el escritorio y en las aplicaciones existentes.
No diría que es entrar al trapo --no estoy flameando ni tratando mal a nadie--, sino paciencia infinita para contestar a lo mismo, volver a dar explicaciones sobre algo que en realidad deberíamos ser ejemplo a seguir --desde mi punto de vista, claro está-- por otros sitios similares, y responder a las dudas de los usuarios.
Lo que no me queda tan claro es el porqué de tus comentarios de ese estilo, cuando seguramente sabes o has observado lo comentado en #47.
#55 Yo tambien te pido disculpas, no entiendo porque esto se ha enrevesado tanto por una chorrada, al fin y al cabo el unico perjudicado ha sido mi karma por votar negativo a una noticia que lleva 185 meneos y esta en portada,per en fin... los principios son los principios y asi son las cosas de menéame.
Pero es que alucino cómo se dicen barbaridades en temas informáticos, y cómo se trata casi de imbéciles a programadores cracks --como jcarlosn-- que le darían mil vueltas y les pondrían en serios apuros a los que le critican.
a ver que os quede claro, no hay mafia, simplemente hay gente con algo de karma que es rematadamente gilipollas, y ya se sabe una manzana podrida en el cesto puede parecer mas de lo que es
#35 A ver, yo en el artículo he visto enlaces a lo que parece ser el código de menéame. No se si es "el que está en el servidor" o es una mascara, como insinuas. De todas maneras, si realmente piensas que hay algo que se esconde detrás, ¿podrías darme las pruebas que tienes para desconfiar?
Yo confio en el funcionamiento de la página por un simple hecho: funciona. Vale que es un argumento muy debil, pero como usuario "normal", me vale para saber que si publico algo, no va a ser el sistema quien la publique o la descarte: van a ser otros users como yo los que decidan. Hasta puedes ver quien ha votado a tus noticias, comentarios y notas; más transparente, imposible.
#61
0. No dudo de la potencia de la base de datos, es más me parece un logro Enhorabuena, pero no me refería a la base de datos
1. La comparación se realiza en PHP no en MySQL, no me he referido a MySQL en ningún momento ni al consumo total, me he referido al consumo de la evaluación de esa comparación.
2. MySQL no es PHP, por lo que es bueno en un sitio no tiene porqué serlo en el otro. Que venga bien utilizar un tipo de dato u otro para almacenar la información no implica que también venga bien en el lenguaje de programación. Una rápida búsqueda en Google me lanza algún resultado (http://ronaldbradford.com/blog/to-enum-or-not-to-enum-2006-01-22) por el que no es recomendable, por supuesto, seguro que encuentras los que lo recomiendan (y justifican la afirmación de que es el mejor en cuanto a eficiencia), pero dado que dicho tipo de dato no forma parte del SQL estándar, con eso me vale (fuera interoperabilidad); logicamente al ser propio... qué menos que sea eficiente y/o útil.
3. Escalar, en mi vocabulario (y en el de cualquiera que lo sepa) no es lo mismo que replicar Pero eso aquí no viene a cuento, porque la solución al consumo excesivo de CPU no está en meter más procesador y/o memoria a pesar de la mala costumbre, se puede llegar a un punto (que se lo pregunten a Google), en que el gasto es tal que hay que empezar a optimizar el código, algo que en ocasiones se puede hacer desde el principio.
4. (extra) Sigo afirmando lo dicho (que lo he hecho sin chulería alguna) mientras no se demuestre lo contrario, y mientras no se invente nada nuevo... no es lo mismo comparar un número que una cadena de caracteres (las razones que haya detrás de utilizar la cadena de texto me parecen estupendas, si viene bien usar ENUM, pues perfecto, pero yo no lo haría así por la razón esgrimida)
Por cierto, dado que se compara esa cadena de caracteres... no vendría mal usar una bonita constante, vamos, para el día en que se quiera cambiar el nombre utilizado por otro, y así no tener que hacer una búsqueda en todos los ficheros donde se pueda utilizar... (no, no he mirado más ficheros, se use en un único punto o varios, una clase, o en varias es recomendable seguir esta práctica de programación)
De todas formas realmente ya ha llegado a portada, sólo está remoloneando un poco, si hubiéseis leído el artículo habríais visto que en el código de Menéame hay secciones que promocionan secretamente todas las noticias que hablan (bien) del propio Menéame
Para los que tienen dudas: no es sólo que el código sea abierto, es que también se muestran los cálculos. Cada uno tiene en su perfil el enlace a "detalle cálculo". Si el código publicado fuera uno y el que está en le servidor otro, veríamos las incongruencias en el cálculo de cada uno.
De todas formas, después de haber visto hace unos días en un comentario que un meneante aseguraba que hay una conspiración mundial contra los jóvenes (no iba de coña, lo decía en serio), seguro que por muchas pruebas que se aporten siempre habrá quien hable de mafias, sólo porque no le votan a sus noticias.
Al código del Menéame lo único que se le puede achacar es que no esté documentado en absoluto. Y no es de extrañar, dado que siendo una sola persona quien lo mantiene (aparte de R. Galli nadie ha hecho salvo pequeñas cosas) o bien programa o bien documenta. Podríamos tener un código maravillosamente documentado pero carente de funcionalidades.
#60 >> "que está mal escrito es evidente está plagado de faltas de ortografía, la puntuación es mala y la expresión es pobre ... " > "Supongo que en el fondo te da igual lo que escriba aquí"
magic_quotes es el tema de que php autoescapa las comillas y las en peticiones get, post y cookie.
No tienes nada que ver con usar " o '
#86 no hay ad-hominem, claro que no, mira lo que dices arriba:
Hablar sobre qué es _"$current_user"_ o sobre si hay directorios para wii y demás es como poco una frivolidad para alguien que alardea de que "he encontrado varios problemas y de gravedad variada"
#77
> 1. La comparación se realiza en PHP no en MySQL, no me he referido a MySQL en ningún momento ni al consumo total, me he referido al consumo de la evaluación de esa comparación.
Ains... informáticos. Lee de nuevo esa parte que dice los valores son leídos de la base de datos.
> MySQL no es PHP, por lo que es bueno en un sitio no tiene porqué serlo en el otro.
Estás mirando el código del Menéame, no de un sistema operativo multiplataforma.
> Escalar, en mi vocabulario (y en el de cualquiera que lo sepa) no es lo mismo que replicar
Deberías estudiar un poco más, o ponerlo en perspectiva, que esto parece discusión de críos más que informática.
Escalar es en general el aumento de la capacidad para mantener o aumentar el rendimiento cuando aumentan los requerimientos (así, de memoria y para ser breve). Se puede hacer de varias formas según el contexto o aplicación: SMP, NUMA, clustering, replicación, particionado, sharding, etc.
Si relees el comentario, entre paréntesis sale "o sea, replicación", porque el código del Menéame está programado para poder replicar servidores webs --o sea el PHP-- de una forma muy sencilla, de hecho no hay que hacer casi nada. También está preparado para usar múltiples esclavos para consulta y un máster. Lee la parte de Amazon EC2 en http://blog.meneame.net/2008/06/26/novedads-votos-a-comentarios-anotaciones-calculo-del-karma-promote-amazon-ec2-y-futbol/ (sí, funciona, y de forma fácil y sencilla).
> no es lo mismo comparar un número que una cadena de caracteres (las razones que haya detrás de utilizar la cadena de texto me parecen estupendas, si viene bien usar ENUM, pues perfecto, pero yo no lo haría así por la razón esgrimida)
También es más eficiente leer directamente desde un fichero local, no sé para que se usa el mysql, si al final aumenta el consumo de CPU, consumo de disco y complejidad
Lo repito, se diseña el esquema --que es usado por programas en varios lenguajes-- y luego se implementa las consultas. Los índices son grandes, por ello usamos enum cuando son enum. Son mucho más eficientes en el mysql, que es donde está el cuello de botella.
Prometo llorar a lágrima tendida si me vuelven a proponer que use tinyint y macros en el lenguaje como "solución" para ahorrar unos picosegundos de ejecución y perder varias centésimas en el base de datos.
#81
> Sobre lo de las enum/no-enum: A mi me gusta poner un tinyint en la base de datos...
Ver lo de antes.
A mí no me gusta nada, estás metiendo temas de representación en el código quitándolo de la base de datos. Pero lo más importante es lo que quitas de legibilidad a la base de datos, y el lío que te haces si la accedes desde otros lenguajes (como hacemos en Menéame, mira el svn, que hay cosas en Perl --tan importante como la interfaz Jabber-- o Python) que debes volver a definir las constantes, y modificarlas cada vez que modificas el esquema.
Es subjetivo, pero en conjunto lo que dices es objetivamente una aberración (¿falta de experiencia o de estudios?).
> Por cierto, las comillas dobles (") son pecado, y mortal si se usan sin variables dentro.
Más o menos, en general intentamos usar el ' y las " sólo para las interpolaciones (incluso hay mucho códido similar a 'literal'."n"), pero la costumbre de la " jode un poco.
Pero el tema de las simples o dobles es casi irrelevante (aunque feo mezclarlos), y aún más con el optimizador de código o cosas como eaccelerator (lo usamos) que ya los trata igual a los literales en las siguientes ejecuciones.
Vaya, no sabía que hubiera una versión para Wii y para NDS, se ven nintenderos los desarrolladores. Ya podrían hacer una para PlayStation3, que cada vez que intento entrar en meneame desde el navegador de la consola, la web aparece y en un segundo desaparece, dejando un fragmento de html mostrando el include de un javascript de publicidad.
Siempre me ha asaltado una duda cuando leo el código de Menéame. ¿Qué razón hay para no usar el patrón MVC o MTV? No, no me refiero a Rails, Django, Symfony, etc. eso son implementaciones en forma de frameworks. Una implementación de MVC puede ser extremadamente sencilla, sin depender de código externo ni meter frameworks enormes. MVC tiene casi 30 años y su diseño es claramente muy eficaz. Además, probablemente muchos de los fallos de seguridad encontrados no hubiesen sido posibles usando MVC y limpiando la entrada de datos desde un sitio centralizado. En general, muchos de los fallos de XSS son debidos a que alguien se olvidó de limpiar la entrada en una parte del código. Hay varios ejemplos de MVC en PHP sin usar frameworks, incluso sin necesitar OOP:
Otra cosa es que en el código de Menéame hay partes en las que las consultas están escritas directamente en la vista. Tampoco están encapsuladas en funciones (en el artículo de jcarlosn he puesto un ejemplo), que harían más fácil el mantenimiento y la legibilidad.
Por cierto, creo que el código sería más robusto si hubiera más tests. No sólo para probar que funciona, sino para evitar regresiones y para asegurar que la API es estable y no se ha roto nada en un commit. Hace tiempo que sigo el desarrollo basado en ramas (del cual UQDS es una implementación: http://www.divmod.org/trac/wiki/UltimateQualityDevelopmentSystem) y lo cierto es que la cantidad de fallos ha disminuido y la estabilidad de mi código ha aumentado notablemente.
Por otra parte, de la forma en que Twitter no es una aplicación típica (y de ahí que sufra tantos bajones, al ser diseñada como una aplicación normal), sino una aplicación de mensajería asíncrona con suscriptores y publicadores, tal vez Menéame podría beneficiarse de una arquitectura basada en servicios a la hora de escalar. Esto son cábalas, así que hay que tomárselas con un grano de sal.
Bueno, esto sólo son consejos y son susceptibles de cualquier crítica
#81 el articulo va dirigido a un público técnico que no haya leído nunca el código de meneame, ¿O es de Captain Obvious para ti, que todo lo que gestiona Ajax esté en backend/, que los usuarios y links se gestionen con mezclas de DAOs y TOs, y que existan esas determinadas apis? Pues tio, eres rappel.
Bromas aparte, lo de las comillas simples o dobles es un tema muy discutido en foros de discusión PHP, donde normalmente, se desecha un ciclo de cpu en pos de coding style.
Por cierto, tu dices que son muuuuuucho mas lentas, pero lo has probado? te reto a intentar determinar la diferencia de velocidad de ' y " en un test con 3000 o 4000 ciclos, y repetir el test un par de veces, a ver si siempre sale el mismo ganador en velocidad.
Te darás cuenta enseguida de que lo de las " y ', es un mito, y que la diferencia de velocidad es prácticamente inexistente.
Hay cosas que impactan mucho mas y de forma mas profunda en la escalabilidad de un script PHP, que el hecho de usar " o '.
#52 MIENTES. Dime un solo comentario mio, no solo en este hilo sino en mi historial de comentarios en el que yo haya hablado de mafias o nada semejante. MIRA mi historial, y luego habla. Si tienes que recurrir a la calumnia para justificarte es que debes tener pocos argumentos.
Y te guste o no, seguiré votando negativo a cualquier noticia sobre meneáme, hable bien o mal. Por la sencilla razón de que no creo que el tema deba ser una garantía de portada.
Y no lo uso como ajuste de cuentas, no pongo negativos a todo el que piensa contrario a mi, recuerda que poner negativos a comentarios resta karma, si esa fuese mi actitud, ya no podría ni votar.
Solo pongo negativos al FUD, y lo hago siempre.
Odio esa actitud de crítica que algo queda, cuando alguien dice que un artículo (sea mio o de don pimpón) es malo técnicamente, me gusta que esgrima argumentos razonables.
Tu solo has repetido y repetido que el artículo es malo técnicamente sin decir por que, sin dar argumentos y repitiendolo todo el rato, en plan anuncio de radio.
#63 Vale, me autorespondo y cito uno de los comentarios (que por cierto, no había leído) del blog:
TuxMeister: Una aclaración. El logo apple-touch-icon.png es usado en el iPhone/iPod Touch cuando se añade la web de meneame como enlace desde la pantalla principal (un bookmark que se convierte en “pseudo-aplicación”). También es usado para la versión imeneame.net para iPhone, que por cierto, olvidaste mencionar aquí.
Pues eso. Por si alguien tenía la misma duda que yo.
¿Alguien sabe algo sobre la posible versión dedicada al iPhone/iPod Touch? Es que hace poco me he comprado el segundo de los dos y me resultaría interesante que hubiese una versión especializada y ajustada al tamaño de la pantalla.
Aunque tampoco es mucho problema dado que el Safari del iPod ya tiene zoom y muestra las páginas web a pantalla completa. El iPod Touch es de lejos el mejor dispositivo de mano para navegar por Internet que he tenido nunca (por encima de la PSP, y sobre todo de la Nintendo DS).
#90 MVC es un patrón arquitéctonico, que ahora haya una moda de decir que el framework "Patatín" sea MVC, pues muy bien, pero en sí mismo, MVC simplemente define la arquitectura de una determinada aplicación. Estaría bueno que MVC obligase a usar esto o lo otro, entonces perdería todo su encanto.
Respecto a la documentación, siempre lo digo, la mejor documentación no es el código ni los comentarios del código sino el documento de análisis y diseño, el código y las pruebas complementan a esa documentación. Colaborar en un proyecto se hace muy complicado si solo se dispone del código fuente (por muchos comentarios que tenga), porque el proceso de ingeniería inversa (mental) que hay que hacer es brutal; aunque lo bueno que tiene es que luego te conoces la aplicación de arriba a abajo, pero con un simple diagrama de secuencia y uno de clases puedes entender en cuestión de minutos todo el juego de mensajes que se produce para una determinada acción.
Que yo sepa, Menéame carece de esto (y lamentablemente la practica totalidad de proyectos open source).
Sois como los esclavos que construyeron la grán pirámide:Todos admiran su obra pero nadie se acuerda de ellos.Solo del que dió la orden de construirla.
Sois los esclavos de nuestro tiempo,mal pagados jodidos y perpetuamente amargados.
#83 No soy rappel, pero es lo que basicamente se usa en todos los proyectos serios en PHP. Todo lo que dices es como decir: aquí en el meneame usamos variables para guardar datos. Es obvio.
Sobre las comillas dobles, no voy a explicar mucho, los mismos de PHP pueden arrojar algo de luz: http://www.php.net/manual/en/security.magicquotes.whynot.php
Por cierto, si ves la pagina principal de magic quotes, dicen que no se usen, puesto que van a desaparecer en PHP6.
Coding style, comillas dobles? Si me explicas por que... y no es un mito que tenga un performance hit, las cadenas con comillas dobles son escaneadas en busca de variables. Eso consume más ciclos y más memoria.
Y sobre lo de la escalabilidad, pues trabajo en una de las redes sociales mas grandes de Europa, con sede en Berlin. Tenemos millones de visitas unicas al dia. Creo que en mi empresa nos preocupamos por la escalabilidad.
Y ahora si me permites, me voy. Tengo codigo que picar ^^
Sobre lo de las enum/no-enum: A mi me gusta poner un tinyint en la base de datos y usar constantes en PHP, así ademas puedes usar las operaciones bitwise y es rápido en ambos lados. Ej.: ( $user->haveRights( User::GOD | User::ADMIN ) ). Esto tambien tiene la ventaja de que puedes guardar los permisos y configurarlos en vez de hacerlo hardcoded en un if. ( $user->haveRights( $item->getRequiredRights() ).
Las ENUM dan legibilidad a las consultas SQL, y son tan rapidas como un numero (que de hecho es lo que son internamente, no me acuerdo que clase de INT), casi depende un poco del gusto del consumidor. Lo cual no excusa que no se hayan usado constantes en el código.
Por cierto, las comillas dobles (") son pecado, y mortal si se usan sin variables dentro. Son muucho más lentas que las simples (') ya que no hay que hacer ningún parsing. En general es mejor no usarlas, EMHO.
Y a la postre, esto son detalles casi sin importancia. Lo importante del menéame no son si se usan ENUM o no, sino el complejo algorimo del karma, que hace que funcione todo esto. Quiero decir, como red social, y tal y cual.
Por cierto, el artículo, indescifrable al ojo profano, y digno del Captain Obvious para los del gremio.
#84 Ya está más que explicado y discutido. ¿Cuántas veces hay que repetir que "no hay bala de plata"? mnm.uib.es/gallir/posts/2006/09/26/820/
En el artículo hablas de Smarty, Pligg, etc. No me refería a eso, siempre que alguien te ha preguntado porqué no usaste MVC o MTV, hablas de cómo las librerías de plantillas hacían el código más lento. Pero, ¿has leído el artículo de Rasmus Lerdorf? Su MVC es extremadamente sencillo, ni siquiera usa objetos. MVC no obliga ni a usar librerías de plantillas, ni objetos, ni frameworks ni nada. Sólo te dice cómo separar el código que accede a los datos, del que se encarga de mostrar información y, a su vez, del que se encarga de recibir la entrada de datos, para luego explicarte la manera en que actúan entre ellos. Sinceramente, me fío bastante de la opinión de Rasmus, creador de PHP (tal vez aquí hay una falacia de magister dixit - esto va para el que me ha llamado pedante - ). Hay un artículo reciente sobre una conferencia que dió en la DrupalCon:
no es precisamente un fan de los frameworks actuales. El artículo de su no-framework es muy bueno y demuestra que MVC puede ser rápido, sin sobrecarga de librerías, ni penalización de rendimiento.
Además, en otros comentarios has dicho que la mayor carga está en la base de datos, así que me intriga que digas que siguiendo MVC haya una penalización tan grande.
Por otra parte, PHP es en sí mismo un sistema de plantillas, así que estoy de acuerdo contigo en que capas extra de plantillas pueden suponer una carga extra que puede no compensar.
Por todo lo demás (unidades de test, documentación, etc. etc.), el código es libre, aceptamos parches encantados. Show me the code :-)
Sé que puede parecer un flame, pero:
[sarcastic mode on]
Por supuesto, alguien que no ha estado metido en el desarrollo, que no tiene anotaciones de cómo funciona el software de Menéame y de las decisiones que se han tomado a la hora de desarrollarlo es la persona más indicada para documentarlo y testearlo
[sarcastic mode off]
Me ha recordado a un "artículo" (más bien un despotrique) que leí hace poco en Reddit:
no es especialmente constructivo, pero la última frase es muy cierta. Es muy difícil que alguien ajeno a un proyecto pueda documentarlo (o testearlo) bien si precisamente no existe ni documentación ni tests. Para mí la mejor documentación son los tests, de hecho en algunos de mis proyectos tengo incluso más tests que código, supongo que porque prefiero ejemplos de cómo usar el código.
#76 arre coño!, no sé cual es el sinónimo de pedante en tecnología, pero deber haber alguno inventado solo para tí...
de verdad crees que alguien se ha leido ese chorreo hasta el final? incluso siguiendo los links que pones y todo?
te falta conocimiento de la naturaleza humana...
Una pequeña crítica... ¿Por qué otro dominio? ¿No hubiera sido mas lógico un i.meneame.net? O siguiendo el esquema de la Wii o la DS usar meneame.net/iphone? ¿Alguna razón especial?
#0 En el artículo: el caso de meneame me ha demostrado que muchos “webmasters” (como llamarlos?) solo buscan aprovecharse de que meneame comparte su código, y no buscan ni ayudar, ni colaborar, ni enriquecer nada mas que sus bolsillos.
Tiene razón... pero también es cierto que cuesta mucho colaborar, ¡incluso en documentación!
Yo una vez quise ayudar añadiendo un poco de documentación actualizada de cómo instalarlo, y me encontré sin derechos para ello. Solicité que se me permitiese, y después de unos días me contestaron que les indicase qué página específica del wikispaces (documentación) necesitaba editar... y claro, me desanimé porque si por cada página que quiero editar colaborando tengo que andar pidiendo acceso en una especie de foro de discusión, me da lata. Un día lo haré, pero claro, he descubierto que no puedo ir documentando sobre la marcha... porque el acceso está demasiado restringido. Ganaron los malos, los que ponen burradas, y los que queremos ayudar nos vemos afectados e impedidos.
#46 No te iba a contestar, pero como veo que sigues... Digo yo que en algun momento tendras que admitir que puede haber gente a los que no les guste tu artículo, y eso no los convierte ni en trolls, ni en criminales de guerra. Si no eres capaz de admitir eso, entonces lo siento por ti.
#62 Estás un poco sobreexcitado, cálmate chaval, relee lo que escribo, y no pongas en mis dedos palabras que yo no he escrito.
Lo del ad hominem lo has querido ver tú solito, porque se puede comprobar que ninguno de mis argumentos va dirigido contra ti, sino contra lo que has escrito. Yo me he quejado de tu lamentable estilo de escritura, por un lado, y de lo vacio de contenidos por otro. Si tú quieres ver un ataque contra tu persona, es que, o bien no sabes en que consiste un argumento ad hominem, o tu ego está lo bastante disparado como para considerar un ataque personal una crítica a tu artículo.
No pongo en cuestión si has corregido muchos bugs o pocos, me la sopla, me quejo de tu artículo.
Y nada más. Si eso te sirve para mejorar en el siguiente artículo, pues muy bien, pero no hace falta que te pongas como un basilisco cuando critiquen tus artículos.
Las pruebas en cuanto a que está mal escrito son evidentes, está plagado de faltas de ortografía, la puntuación es mala y la expresión es pobre.
En cuanto al asunto técnico, también se explica por si solo.
Hablar sobre qué es "$current_user" o sobre si hay directorios para wii y demás es como poco una frivolidad para alguien que alardea de que "he encontrado varios problemas y de gravedad variada" pero no dice cuales o que afirma que "el número total de problemas de seguridad, ha sido mucho menor que en otros sites populares" pero no dice cual es ese número total de problemas y con qué sitios los compara.
Y yo, ni te he votado negativo, ni te he descalificado, ni te he insultado. Pero sí que entiendo los artículos técnicos y he criticado el tuyo. Lo siento si no te gusta la crítica.
Sabía que no te resistirías a entrar al trapo,lo sabía.
Pero no te quejes que yo he dicho que confío plenamente en tí y si yo confio en ti siendo el mas baneado de la historia de meneame, cualquiera debería hacerlo.
Saludos.
#88 Cada vez que alguien te hace un comentario crítico, ¡voto negativo al canto! Si señor. Aunque eso no evitará que un artículo escrito mal con un contenido técnico mediocre sea un mal artículo. Encájalo chaval.
No sé que tal andará de seguridad pero hacer esto: if _($current_user->user_level==”god”_ || _$current_user->user_level==”admin”)_ seguro que hay boquetones de seguridad, otra cosa es que no merezca la pena explotarlos
La verdad es que ese artículo está escrito de forma lamentable.
Por otro lado las explicaciones técnicas son de patio de colegio. No entiendo qué tiene de interesante...
#38 bien, cambio codigo cerrado por SISTEMA PROPIETARIO.
El sistema de MENEAME ,compuesto de sus servidores son su s.o. y su codigo fuente,compone un sistema cerrado del cual sabemos lo que su dueño quiere que sepamos,algo totalmente lícito de hecho yo apoyo los sistemas cerrados como la xbox el iphone etc y me parece muy mal que los crakeen.
#31 me encanta tu candidez e inocencia,no la pierdas nunca,pues es un tesoro.
No se sabe si los usuarios que votan una noticia o la descartan son personas reales o bots programados para ello por el mismo creador.
No se sabe si el calculo del karma se hace en el servidor tal como se dice que se hace en lo que está publicado.
No se sabe simplemente porque MENEAME es codigo cerrado.Sería codigo abierto si permitieran el acceso al servidor a todo el mundo.Cosa que evidentemente no es necesario porque no merece la pena auditar semejante cosa,nadie se pararía en ello,y a quien lo haga le puedo recomendar actividades mucho mas divertidas y relajadas.
y como he dicho antes,creo que el de las llaves es honrado e integro.Pero esto es subjetivo ...claro.
Comentarios
#19, #35, #41
En primer lugar que siempre debe haber un grado de confianza hacia los dueños o administradores del sitio, sino es imposible que funcione cualquier sitio web.
Es ridículo pedir que además todo el mundo tenga acceso directo al servidor, por varias razones:
1. El servidor es propiedad privada.
2. Problemas básicos de seguridad: posibilidad de que otros modifiquen ficheros, o que puedan ver la clave privada que se usa para los "hash" de control.
3. Estaríamos violando la LOPD, ya que tendría acceso a datos personales.
4. Practicidad: no podemos dar acceso a los 200.000 usuarios diarios que acceden al menéame, ni siquiera a los 5.000 ó 10.000 que participan diariamente enviando, comentando o votando.
Pero, el hecho que el código esté publicado da un márgen más de confianza, bastante más que la de un sitio que no te muestra ni publica nada de código.
Aún más, pero mejorar la confianza y sobre todo el tan reclamado "quién vigila a los vigilantes" también ponemos a disposición toda la información para este control:
1. El promote (http://meneame.net/promote.php) con los cálculos en "tiempo real" que hace el programa de promoción de noticias. Con éste es relativamente sencillo verificar si es la misma versión publicada a la que se ejecuta.
2. Los cálculos del karma de cada usuario son verificables en su perfil. Con esto es relativamente fácil (la complejidad reside en la cantidad de datos/votos) verificar que el código es el mismo. O detectar errores, bugs o "injusticias".
3. Las decisiones principales que se toman respecto a las noticias (automáticas como la del promote, o manuales como descartar noticias que violan las reglas) están en los logs de cada noticia. Además nunca borramos ninguna noticia, y se suele comentar el porqué se han tomado decisiones "manuales".
4. Todos los votos son públicos. Tanto en cada noticia y comentario como en el perfil de cada usuario (que se pueden ver los votos a noticias, negativos y positivos).
5. Además todo el historial de votos, comentarios, notas o envíos de cada usuario está también disponible.
¿Qué más se puede ofrecer sin empezar a rozar los límites legales, éticos o de practicidad? Por publicar, hasta las estadísticas de acceso son públicas (en quantcast) y otras estadísticas en tiempo real en la fisgona (por ejemplo el comando !stats o !stats2).
¿Qué otro sitio publica tanta información como el Menéame?
Si con todo eso tienes dudas, creo que deberías primero empezar a plantear las mismas dudas de otros sitios que no publican absolutamente nada.
PS: Por otro lado, hace un tiempo un A-list wannabe nos puso a parir acusándonos que ocultamos información porque no dejamos ver el código que se ejecuta (WTF?). Le ofrecí que si firmaba un documento de confidencialidad por temas legales (básicamente la LOPD) y de seguridad (claves privadas) le dejaríamos auditar. Rechazó la oferta. Si el de este comentario me demuestra que sabe de informática y programación web, que ha hecho trabajos similares de "auditoría", y que nos entrega un documento de confidencialidad, no tenemos ningún problema en que audite si lo que hay ejecutándose es lo mismo que lo que está publicado.
Me gustaría hacer una reflexión sobre todo esto...
Me gusta colaborar con meneame (me refiero a la parte técnica, meneame es software libre), y cada vez que escribo sobre ello, salta gente con historias de mafias, de egos, de narcicismos, o de no se que.
Esto es un articulo técnico, quien no le guste, no lo entienda, o no le interese, que no lo vote, igual que el resto de artículos técnicos.
Pero por favor, esto no es un articulo de opinión sobre meneame y sus usuarios, sus mafias, o sobre el pp o el psoe, por que este tipo de artículos se llena siempre de trolls? el siguiente paso ya me lo conozco, mañana el blog lleno de comentarios insultando...es ya rutina cada vez que me menean una noticia relacionada con meneame o seguridad. En otros temas no pasa, misterios.
Veis fantasmas de mafias, egos, spams, karmas, etc por todas partes, tanto, que ya no sois capaces de discernir un simple articulo técnico.
18 min
No he comprendido demasiado del funcionamiento de menéame por dentro, ya que no soy un experto. Pero el artículo si ha causado una impresión en mi: con todo el funcionamiento interno del site abierto (diciendolo en un lenguaje común, "con las tripas al aire") aún no entiendo cómo hay gente que dice que hay una "mafia". Para mi es cómo si dijeran que se pueden esconder cosas en una caja de cristal.
#58
> _($current_user->user_level==”god”_ || _$current_user->user_level==”admin”) es un insulto a la eficiencia...
Poco sabes sobre "evaluar la eficiencia", y has soltado una barbaridad. Te voy a dedicar unos segundos para explicarlo brevemente.
0. Sin mirar el código está claro que el Menéame es muy eficiente, dime de cuantos sitios con base de datos como la nuestra, y con 700.000 páginas vistas al día (más de 2 millones si cuentas las llamadas al backend) funciona tan rápido y con tan pocos servidores.
1. El mayor consumo --de lejos, muy de lejos-- de CPU del Menéame es del MySQL (i.e. las consultas SQL), no del PHP.
2. Esas cadenas "admin", "god" (y "disabled", "normal") provienen del diseño de la base de datos, se usa el campo ENUM, que es el más eficiente tanto en "compactación" como en el acceso a los índices (que tenemos varios).
3. Escalar (o sea replicar) PHP es mucho más fácil que replicar bases de datos, sólo tienes que agregar servidores webs.
Por esas razones básicas se usan campos ENUM donde es posible.
PS: Seguramente el código es mejorable y optimizable por todos lados, pero lo burrada que acabas de decir con tanta autoridad y chulería sin siquiera haber mirado las razones de que sean string me hace dudar que seas capaz de hacerlo bien. Si se me permite dudar...
#35 ¿Cómo sabes que las personas del mundo real son personas reales y que no estás viviendo en Matrix?
#19 No sé lo que hay en el servidor. Por mi puede haber 1000 monos picando máquinas de escribir, pero yo pienso que el site funciona porque no es un código cerrado lo que regula los contenidos, si no los propios usuarios. Una noticia irrelevante, por ejemplo, normalmente no la descarta "el servidor", si no los usuarios que piensan que no merece salir a portada.
No voy a ponerme "narcisista" y decir que menéame es perfecta y que supera a cualquier otro site social. Como todo, tiene aspectos en los que mejorar... pero no depende de códigos cerrados o abiertos para funcionar, si no que presta una "base" para que los usuarios opinen y monten su propio site.
#60
Hablar sobre qué es _"$current_user"_ o sobre si hay directorios para wii y demás es como poco una frivolidad para alguien que alardea de que "he encontrado varios problemas y de gravedad variada" pero no dice cuales o que afirma que "el número total de problemas de seguridad, ha sido mucho menor que en otros sites populares" pero no dice cual es ese número total de problemas y con qué sitios los compara.
Lo comparo con phpbb, por ejemplo:
http://www.google.com/search?hl=en&q=phpbb+security+bug&btnG=Search
O con php-nuke, que ha tenido también sus decenas de bugs.
Vamos a ser claros en este punto, phpbb, php-nuke, etc etc tienen todos algo en común, son productos de software libre desarrollados en php, cualquier puede ir a securityfocus.com y ver la cantidad de agujeros de seguridad que han tenido, todos ellos.
Meneame es mucho menos popular como software que esos productos, sin embargo, pese a ser también software libre y escrito en php, no ha tenido prácticamente errores de seguridad graves.
www.phpbb.com, la sección foros, donde obviamente utilizan phpbb, ha sido defaceada unas 10 veces, meneame 0.
No quiero decir con esto que meneame sea perfecto, nada mas lejos, las personas que han auditado su código, saben que ha tenido problemas, como cualquier software del mundo, y que se han ido superando, lo que quiero decir es que lleva años en linea y ha logrado mantener una cierta seguridad.
Sin embargo, es mucho mas fácil recurrir un ad hominem como has hecho, diciendo en pocas palabras, que no soy nadie para hablar de la seguridad de nada.
Para empezar, aquí tienes unos cuantos bugs descubiertos por mi en meneame:
http://svn.meneame.net/index.cgi?rev=1251&view=rev
http://svn.meneame.net/index.cgi?rev=1551&view=rev
http://svn.meneame.net/index.cgi?rev=999&view=rev
Si te hubieses molestado en mirar los logs del svn, los hubieses visto tu, pero es mucho mas fácil recurrir al ad hominem fácil y saltar a la siguiente noticia donde haya algo para trollear.
Además, conoces simple machines forums?
http://www.simplemachines.org/
Es un producto de software libre que proporciona unos foros, como phbb, aquí tienes un advisory (reporte) hecho por mi hace tiempo sobre una vulnerabilidad en esos foros.
http://securityvulns.com/Odocument766.html
No estoy haciendo este post para alardear de mi trabajo o de lo que hago para colaborar con proyectos como smf, por lo cual, no voy a continuar poniendo citas ni enlaces.
Lo único que quiero decir, es: ¿Por que necesito poner aquí todo lo que hago, y justificarme antes ti? Es que acaso no tengo derecho a escribir un artículo y que tu lo juzgues por su contenido, en lugar de decir que es frivolo por que yo no soy nadie?
Supongo que en el fondo te da igual lo que escriba aquí, ya habrás pasado a trollear a la siguiente noticia.
Apuestas, cuanto tiempo tarda en estar en portada?
#49 claro que lo admito, es mas, lo se.
Hay mucha gente que no le gusta lo que escribo, por motivos muy variados.
Pero cuando me dicen que las explicaciones técnicas son de patio de colegio, me gusta que eso vaya precedido de una explicación, de lo contrario, lo tomo como pataleo.
Por cierto, tu también tienes que admitir que te puedan tachar de troll, si vienes a un artículo técnico, a lloriquear sobre mafias y tonterías, desviando el tema a una discusión, como la que estamos teniendo, al mas puro estilo troll.
#35 http://es.wikipedia.org/wiki/C%C3%B3digo_abierto
#73 http://meneame.net/sneak.php?hoygan=1
#12 Ancagalon: lo que se publica no es el servidor de meneame, sino el código de lo que DICEN que está dentro del servidor.
Que no tiene porqué corresponder con lo que está expuesto al publico.
Solamente el que tiene acceso al servidor,y nadie más que el,conoce realmente como funciona meneame.
Despues de abriros los ojos a esto,tengo que decir que creo que la persona que tiene las llaves del servidor es honrado y no nos miente.
Acabo de publicarla y ya está en meneame? Esto si que es velocidad...
Si por algo odio estos posts tan tecnicistas es porque no puedo trollear ni insultar a nadie ni poner negativos "unfair" ni hostias, fundamentalmente porque no tengo ni puñetera de programación. Qué aburridos son, en el fondo, ¿no?
(por si acaso)
No se sabe si los usuarios que votan una noticia o la descartan son personas reales o bots programados para ello por el mismo creador.
Si lo usuarios de meneame fueran bots desarrollados por los administradores, perl habría conseguido ser la primera persona en desarrollar un bot capaz de superar el test de turing, porque vamos, a mi los usuarios me parecen totalmente humanos.
#54 mucha gente ha hablado de mafias en los comentarios de esta noticia, y de todas esas historias.
Es mas, mucha gente habla de mafia en los comentarios de cualquier noticia del meneame.
No he querido decir que tu precisamente lo hayas hecho, estaba generalizando sobre que te pueden tachar de troll, si tomas esa actitud, no me refiero a que tu la hayas tomado, y siento mucho si es así como ha sonado, lo último que he querido es ofenderte o caer en el ad hominem.
Hay que entender una cosa, meneame es software libre, aparte de existir meneame.net, existe un software entorno a el, con licencia Affero, que eso sobre lo que trata el artículo, y de igual manera que existe una comunidad entorno a phpbb, smf, o drupal, existe una (mucho mas pequeña) comunidad entorno a este software, que tiene el mismo nombre que el site, meneame.
Con comunidad me refiero a gente que ha leído el código, gente que ha contribuido de maneras muy diversas, y gente que ha programado cosillas entorno a este software.
Es cierto que el site, meneame.net, es la razón de existir de meneame (el software) pero no quiero entrar en eso, por eso he hecho incapie en que he pretendido darle un enfoque técnico a la cuestión.
Se que hay mucha gente que desconoce que hay una API en meneame, que se puede jugar con ella, las implicaciones que tiene que meneame sea libre, etc, y eso es lo que me lleva a que haya escrito un par de veces sobre ello, por que personalmente pienso que desde meneame se promociona poco el uso de estas APIS y la integración de meneame en el escritorio y en las aplicaciones existentes.
#50
No diría que es entrar al trapo --no estoy flameando ni tratando mal a nadie--, sino paciencia infinita para contestar a lo mismo, volver a dar explicaciones sobre algo que en realidad deberíamos ser ejemplo a seguir --desde mi punto de vista, claro está-- por otros sitios similares, y responder a las dudas de los usuarios.
Lo que no me queda tan claro es el porqué de tus comentarios de ese estilo, cuando seguramente sabes o has observado lo comentado en #47.
#28 Se dice grasias de hantebraso
#4, sí, sí, hazte el despistado
#2, premio, 18 minutos
#55 Yo tambien te pido disculpas, no entiendo porque esto se ha enrevesado tanto por una chorrada, al fin y al cabo el unico perjudicado ha sido mi karma por votar negativo a una noticia que lleva 185 meneos y esta en portada,per en fin... los principios son los principios y asi son las cosas de menéame.
Rápido votar que regalan karma!!!
#654
Pero es que alucino cómo se dicen barbaridades en temas informáticos, y cómo se trata casi de imbéciles a programadores cracks --como jcarlosn-- que le darían mil vueltas y les pondrían en serios apuros a los que le critican.
HOYGAN alquien me pude decr como jackiar meneame para tnr mas karma? grazias de antemano. (hoygan mode off)
#44 ya has cumplido lo que dije en #30, ahora empiezan los insultos y descalificaciones personales.
Premio para ti.
#5 va a ser que no
2008-09-17 16:00:03 link_publish kisky84 kisky84 Tres segundo de error, no está mal...
No entendí nada de la lectura. No me explico por qué el autor utiliza tantas palabras del inglés. ¿Será que no existen equivalentes en nuestro idioma?
17 min
#10 Relacionada:
Narsicista; Grandioso, frágil y exibicionista
Narsicista; Grandioso, frágil y exibicionista
latercera.cl#12 Es que la Mafia no funciona precisamente en código PHP.
Mmmm, ehhh,...¿soy el único que no se ha enterado de practicamente de nada de lo que hay escrito en la página?
a ver que os quede claro, no hay mafia, simplemente hay gente con algo de karma que es rematadamente gilipollas, y ya se sabe una manzana podrida en el cesto puede parecer mas de lo que es
¿hoygan.php?:
branches
#35 A ver, yo en el artículo he visto enlaces a lo que parece ser el código de menéame. No se si es "el que está en el servidor" o es una mascara, como insinuas. De todas maneras, si realmente piensas que hay algo que se esconde detrás, ¿podrías darme las pruebas que tienes para desconfiar?
Yo confio en el funcionamiento de la página por un simple hecho: funciona. Vale que es un argumento muy debil, pero como usuario "normal", me vale para saber que si publico algo, no va a ser el sistema quien la publique o la descarte: van a ser otros users como yo los que decidan. Hasta puedes ver quien ha votado a tus noticias, comentarios y notas; más transparente, imposible.
#61
0. No dudo de la potencia de la base de datos, es más me parece un logro Enhorabuena, pero no me refería a la base de datos
1. La comparación se realiza en PHP no en MySQL, no me he referido a MySQL en ningún momento ni al consumo total, me he referido al consumo de la evaluación de esa comparación.
2. MySQL no es PHP, por lo que es bueno en un sitio no tiene porqué serlo en el otro. Que venga bien utilizar un tipo de dato u otro para almacenar la información no implica que también venga bien en el lenguaje de programación. Una rápida búsqueda en Google me lanza algún resultado (http://ronaldbradford.com/blog/to-enum-or-not-to-enum-2006-01-22) por el que no es recomendable, por supuesto, seguro que encuentras los que lo recomiendan (y justifican la afirmación de que es el mejor en cuanto a eficiencia), pero dado que dicho tipo de dato no forma parte del SQL estándar, con eso me vale (fuera interoperabilidad); logicamente al ser propio... qué menos que sea eficiente y/o útil.
3. Escalar, en mi vocabulario (y en el de cualquiera que lo sepa) no es lo mismo que replicar Pero eso aquí no viene a cuento, porque la solución al consumo excesivo de CPU no está en meter más procesador y/o memoria a pesar de la mala costumbre, se puede llegar a un punto (que se lo pregunten a Google), en que el gasto es tal que hay que empezar a optimizar el código, algo que en ocasiones se puede hacer desde el principio.
4. (extra) Sigo afirmando lo dicho (que lo he hecho sin chulería alguna) mientras no se demuestre lo contrario, y mientras no se invente nada nuevo... no es lo mismo comparar un número que una cadena de caracteres (las razones que haya detrás de utilizar la cadena de texto me parecen estupendas, si viene bien usar ENUM, pues perfecto, pero yo no lo haría así por la razón esgrimida)
Por cierto, dado que se compara esa cadena de caracteres... no vendría mal usar una bonita constante, vamos, para el día en que se quiera cambiar el nombre utilizado por otro, y así no tener que hacer una búsqueda en todos los ficheros donde se pueda utilizar... (no, no he mirado más ficheros, se use en un único punto o varios, una clase, o en varias es recomendable seguir esta práctica de programación)
Cuánto miraobras con ADSL
Un elefante por dentro!!
#4 Me llegó a Google Reader y me ha parecido interesante
Ni pajolera idea de lo que dicen ahí pero como la peña vota, yo voto
#77 Totalmente de acuerdo, en todo (no voy a entrar en la discusión de los enum/no-enum).
Es cierto que hay cosas hardcodeadas etc.
Yo apuesto por 35 minutos, puestos a apostar.
De todas formas realmente ya ha llegado a portada, sólo está remoloneando un poco, si hubiéseis leído el artículo habríais visto que en el código de Menéame hay secciones que promocionan secretamente todas las noticias que hablan (bien) del propio Menéame
Para los que tienen dudas: no es sólo que el código sea abierto, es que también se muestran los cálculos. Cada uno tiene en su perfil el enlace a "detalle cálculo". Si el código publicado fuera uno y el que está en le servidor otro, veríamos las incongruencias en el cálculo de cada uno.
De todas formas, después de haber visto hace unos días en un comentario que un meneante aseguraba que hay una conspiración mundial contra los jóvenes (no iba de coña, lo decía en serio), seguro que por muchas pruebas que se aporten siempre habrá quien hable de mafias, sólo porque no le votan a sus noticias.
Yo digo que a en punto... por eso del promote... ¿que he ganado?
Al código del Menéame lo único que se le puede achacar es que no esté documentado en absoluto. Y no es de extrañar, dado que siendo una sola persona quien lo mantiene (aparte de R. Galli nadie ha hecho salvo pequeñas cosas) o bien programa o bien documenta. Podríamos tener un código maravillosamente documentado pero carente de funcionalidades.
#35 Compara lo que está aquí con lo que estaría si el código publicado es el que está funcionando http://meneame.net/promote.php
PD: Es lo que pienso yo lo que digo es que compare las cifras.
Apuesto a que no , los negativos en noticias meneame abundan
#60 >> "que está mal escrito es evidente está plagado de faltas de ortografía, la puntuación es mala y la expresión es pobre ... " > "Supongo que en el fondo te da igual lo que escriba aquí"
¡Chic@s, he encontrado a uno de la mafia! Es #27, elige a dedo cuándo se publica una noticia
22 minutos
Acerté 17 minutos, me llevo 20 karmas de premio.
#85 sabes lo que es magic_quotes?
Como te lias, eh
magic_quotes es el tema de que php autoescapa las comillas y las en peticiones get, post y cookie.
No tienes nada que ver con usar " o '
#86 no hay ad-hominem, claro que no, mira lo que dices arriba:
Hablar sobre qué es _"$current_user"_ o sobre si hay directorios para wii y demás es como poco una frivolidad para alguien que alardea de que "he encontrado varios problemas y de gravedad variada"
No hay ad-hominem,claro que no.
#77
> 1. La comparación se realiza en PHP no en MySQL, no me he referido a MySQL en ningún momento ni al consumo total, me he referido al consumo de la evaluación de esa comparación.
Ains... informáticos. Lee de nuevo esa parte que dice los valores son leídos de la base de datos.
> MySQL no es PHP, por lo que es bueno en un sitio no tiene porqué serlo en el otro.
Estás mirando el código del Menéame, no de un sistema operativo multiplataforma.
> Escalar, en mi vocabulario (y en el de cualquiera que lo sepa) no es lo mismo que replicar
Deberías estudiar un poco más, o ponerlo en perspectiva, que esto parece discusión de críos más que informática.
Escalar es en general el aumento de la capacidad para mantener o aumentar el rendimiento cuando aumentan los requerimientos (así, de memoria y para ser breve). Se puede hacer de varias formas según el contexto o aplicación: SMP, NUMA, clustering, replicación, particionado, sharding, etc.
Si relees el comentario, entre paréntesis sale "o sea, replicación", porque el código del Menéame está programado para poder replicar servidores webs --o sea el PHP-- de una forma muy sencilla, de hecho no hay que hacer casi nada. También está preparado para usar múltiples esclavos para consulta y un máster. Lee la parte de Amazon EC2 en http://blog.meneame.net/2008/06/26/novedads-votos-a-comentarios-anotaciones-calculo-del-karma-promote-amazon-ec2-y-futbol/ (sí, funciona, y de forma fácil y sencilla).
> no es lo mismo comparar un número que una cadena de caracteres (las razones que haya detrás de utilizar la cadena de texto me parecen estupendas, si viene bien usar ENUM, pues perfecto, pero yo no lo haría así por la razón esgrimida)
También es más eficiente leer directamente desde un fichero local, no sé para que se usa el mysql, si al final aumenta el consumo de CPU, consumo de disco y complejidad
Lo repito, se diseña el esquema --que es usado por programas en varios lenguajes-- y luego se implementa las consultas. Los índices son grandes, por ello usamos enum cuando son enum. Son mucho más eficientes en el mysql, que es donde está el cuello de botella.
Prometo llorar a lágrima tendida si me vuelven a proponer que use tinyint y macros en el lenguaje como "solución" para ahorrar unos picosegundos de ejecución y perder varias centésimas en el base de datos.
#81
> Sobre lo de las enum/no-enum: A mi me gusta poner un tinyint en la base de datos...
Ver lo de antes.
A mí no me gusta nada, estás metiendo temas de representación en el código quitándolo de la base de datos. Pero lo más importante es lo que quitas de legibilidad a la base de datos, y el lío que te haces si la accedes desde otros lenguajes (como hacemos en Menéame, mira el svn, que hay cosas en Perl --tan importante como la interfaz Jabber-- o Python) que debes volver a definir las constantes, y modificarlas cada vez que modificas el esquema.
Es subjetivo, pero en conjunto lo que dices es objetivamente una aberración (¿falta de experiencia o de estudios?).
> Por cierto, las comillas dobles (") son pecado, y mortal si se usan sin variables dentro.
Más o menos, en general intentamos usar el ' y las " sólo para las interpolaciones (incluso hay mucho códido similar a 'literal'."n"), pero la costumbre de la " jode un poco.
Pero el tema de las simples o dobles es casi irrelevante (aunque feo mezclarlos), y aún más con el optimizador de código o cosas como eaccelerator (lo usamos) que ya los trata igual a los literales en las siguientes ejecuciones.
#76
Ya está más que explicado y discutido. ¿Cuántas veces hay que repetir que "no hay bala de plata"? http://mnm.uib.es/gallir/posts/2006/09/26/820/
Han sido 17 minutos y en portada. No ha estado mal
Vaya, no sabía que hubiera una versión para Wii y para NDS, se ven nintenderos los desarrolladores. Ya podrían hacer una para PlayStation3, que cada vez que intento entrar en meneame desde el navegador de la consola, la web aparece y en un segundo desaparece, dejando un fragmento de html mostrando el include de un javascript de publicidad.
Siempre me ha asaltado una duda cuando leo el código de Menéame. ¿Qué razón hay para no usar el patrón MVC o MTV? No, no me refiero a Rails, Django, Symfony, etc. eso son implementaciones en forma de frameworks. Una implementación de MVC puede ser extremadamente sencilla, sin depender de código externo ni meter frameworks enormes. MVC tiene casi 30 años y su diseño es claramente muy eficaz. Además, probablemente muchos de los fallos de seguridad encontrados no hubiesen sido posibles usando MVC y limpiando la entrada de datos desde un sitio centralizado. En general, muchos de los fallos de XSS son debidos a que alguien se olvidó de limpiar la entrada en una parte del código. Hay varios ejemplos de MVC en PHP sin usar frameworks, incluso sin necesitar OOP:
http://www.fiftyfoureleven.com/weblog/web-development/programming-and-scripts/php-mvc-without-oop
http://www.tonymarston.co.uk/php-mysql/model-view-controller.html
http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html
Otra cosa es que en el código de Menéame hay partes en las que las consultas están escritas directamente en la vista. Tampoco están encapsuladas en funciones (en el artículo de jcarlosn he puesto un ejemplo), que harían más fácil el mantenimiento y la legibilidad.
Por cierto, creo que el código sería más robusto si hubiera más tests. No sólo para probar que funciona, sino para evitar regresiones y para asegurar que la API es estable y no se ha roto nada en un commit. Hace tiempo que sigo el desarrollo basado en ramas (del cual UQDS es una implementación: http://www.divmod.org/trac/wiki/UltimateQualityDevelopmentSystem) y lo cierto es que la cantidad de fallos ha disminuido y la estabilidad de mi código ha aumentado notablemente.
Por otra parte, de la forma en que Twitter no es una aplicación típica (y de ahí que sufra tantos bajones, al ser diseñada como una aplicación normal), sino una aplicación de mensajería asíncrona con suscriptores y publicadores, tal vez Menéame podría beneficiarse de una arquitectura basada en servicios a la hora de escalar. Esto son cábalas, así que hay que tomárselas con un grano de sal.
Bueno, esto sólo son consejos y son susceptibles de cualquier crítica
#81 el articulo va dirigido a un público técnico que no haya leído nunca el código de meneame, ¿O es de Captain Obvious para ti, que todo lo que gestiona Ajax esté en backend/, que los usuarios y links se gestionen con mezclas de DAOs y TOs, y que existan esas determinadas apis? Pues tio, eres rappel.
Bromas aparte, lo de las comillas simples o dobles es un tema muy discutido en foros de discusión PHP, donde normalmente, se desecha un ciclo de cpu en pos de coding style.
Por cierto, tu dices que son muuuuuucho mas lentas, pero lo has probado? te reto a intentar determinar la diferencia de velocidad de ' y " en un test con 3000 o 4000 ciclos, y repetir el test un par de veces, a ver si siempre sale el mismo ganador en velocidad.
Te darás cuenta enseguida de que lo de las " y ', es un mito, y que la diferencia de velocidad es prácticamente inexistente.
Hay cosas que impactan mucho mas y de forma mas profunda en la escalabilidad de un script PHP, que el hecho de usar " o '.
Y el premio al(los) comentario(s) mas estupido(s) carente de argumentos e inteligencia, y con el unico animo de joder va para ...... BreoganRepublic.
Aplausos y felicitaciones! ñ_ñ
Estos comentarios me los tengo que leer con mas calma, que ahora tengo prisa...
Entreguemos el premio a #2 picándole su botoncito verde
#1 10 minutos
#61..¡jó, como defiendes menéame! ni que te fuera la vida en ello.
#52 MIENTES. Dime un solo comentario mio, no solo en este hilo sino en mi historial de comentarios en el que yo haya hablado de mafias o nada semejante. MIRA mi historial, y luego habla. Si tienes que recurrir a la calumnia para justificarte es que debes tener pocos argumentos.
Y te guste o no, seguiré votando negativo a cualquier noticia sobre meneáme, hable bien o mal. Por la sencilla razón de que no creo que el tema deba ser una garantía de portada.
41min
#58 Suerte.
Premio para #2 !! Enhorabuena! Te han tocado 100 karmas
#94 ahí tienes otro negativo.
Y no lo uso como ajuste de cuentas, no pongo negativos a todo el que piensa contrario a mi, recuerda que poner negativos a comentarios resta karma, si esa fuese mi actitud, ya no podría ni votar.
Solo pongo negativos al FUD, y lo hago siempre.
Odio esa actitud de crítica que algo queda, cuando alguien dice que un artículo (sea mio o de don pimpón) es malo técnicamente, me gusta que esgrima argumentos razonables.
Tu solo has repetido y repetido que el artículo es malo técnicamente sin decir por que, sin dar argumentos y repitiendolo todo el rato, en plan anuncio de radio.
yohooo acerté. Tenía su miga acertar eh?
#96 ya te he explicado el problema que tengo con tu actitud, que me sigas preguntando lo mismo es demagogo ya.
Narcisismo puro.
#63 Vale, me autorespondo y cito uno de los comentarios (que por cierto, no había leído) del blog:
TuxMeister: Una aclaración. El logo apple-touch-icon.png es usado en el iPhone/iPod Touch cuando se añade la web de meneame como enlace desde la pantalla principal (un bookmark que se convierte en “pseudo-aplicación”). También es usado para la versión imeneame.net para iPhone, que por cierto, olvidaste mencionar aquí.
Pues eso. Por si alguien tenía la misma duda que yo.
¿Alguien sabe algo sobre la posible versión dedicada al iPhone/iPod Touch? Es que hace poco me he comprado el segundo de los dos y me resultaría interesante que hubiese una versión especializada y ajustada al tamaño de la pantalla.
Aunque tampoco es mucho problema dado que el Safari del iPod ya tiene zoom y muestra las páginas web a pantalla completa. El iPod Touch es de lejos el mejor dispositivo de mano para navegar por Internet que he tenido nunca (por encima de la PSP, y sobre todo de la Nintendo DS).
#1 27 minutos 17 segundos
#90 MVC es un patrón arquitéctonico, que ahora haya una moda de decir que el framework "Patatín" sea MVC, pues muy bien, pero en sí mismo, MVC simplemente define la arquitectura de una determinada aplicación. Estaría bueno que MVC obligase a usar esto o lo otro, entonces perdería todo su encanto.
Respecto a la documentación, siempre lo digo, la mejor documentación no es el código ni los comentarios del código sino el documento de análisis y diseño, el código y las pruebas complementan a esa documentación. Colaborar en un proyecto se hace muy complicado si solo se dispone del código fuente (por muchos comentarios que tenga), porque el proceso de ingeniería inversa (mental) que hay que hacer es brutal; aunque lo bueno que tiene es que luego te conoces la aplicación de arriba a abajo, pero con un simple diagrama de secuencia y uno de clases puedes entender en cuestión de minutos todo el juego de mensajes que se produce para una determinada acción.
Que yo sepa, Menéame carece de esto (y lamentablemente la practica totalidad de proyectos open source).
Picadores de código.
Sois como los esclavos que construyeron la grán pirámide:Todos admiran su obra pero nadie se acuerda de ellos.Solo del que dió la orden de construirla.
Sois los esclavos de nuestro tiempo,mal pagados jodidos y perpetuamente amargados.
#83 No soy rappel, pero es lo que basicamente se usa en todos los proyectos serios en PHP. Todo lo que dices es como decir: aquí en el meneame usamos variables para guardar datos. Es obvio.
Sobre las comillas dobles, no voy a explicar mucho, los mismos de PHP pueden arrojar algo de luz:
http://www.php.net/manual/en/security.magicquotes.whynot.php
Por cierto, si ves la pagina principal de magic quotes, dicen que no se usen, puesto que van a desaparecer en PHP6.
Coding style, comillas dobles? Si me explicas por que... y no es un mito que tenga un performance hit, las cadenas con comillas dobles son escaneadas en busca de variables. Eso consume más ciclos y más memoria.
Y sobre lo de la escalabilidad, pues trabajo en una de las redes sociales mas grandes de Europa, con sede en Berlin. Tenemos millones de visitas unicas al dia. Creo que en mi empresa nos preocupamos por la escalabilidad.
Y ahora si me permites, me voy. Tengo codigo que picar ^^
Esta visto que sentido del humor y Ego son conceptos antagónicos.
God=Dios
Dios esta en meneame.net
Sobre lo de las enum/no-enum: A mi me gusta poner un tinyint en la base de datos y usar constantes en PHP, así ademas puedes usar las operaciones bitwise y es rápido en ambos lados. Ej.: ( $user->haveRights( User::GOD | User::ADMIN ) ). Esto tambien tiene la ventaja de que puedes guardar los permisos y configurarlos en vez de hacerlo hardcoded en un if. ( $user->haveRights( $item->getRequiredRights() ).
Las ENUM dan legibilidad a las consultas SQL, y son tan rapidas como un numero (que de hecho es lo que son internamente, no me acuerdo que clase de INT), casi depende un poco del gusto del consumidor. Lo cual no excusa que no se hayan usado constantes en el código.
Por cierto, las comillas dobles (") son pecado, y mortal si se usan sin variables dentro. Son muucho más lentas que las simples (') ya que no hay que hacer ningún parsing. En general es mejor no usarlas, EMHO.
Y a la postre, esto son detalles casi sin importancia. Lo importante del menéame no son si se usan ENUM o no, sino el complejo algorimo del karma, que hace que funcione todo esto. Quiero decir, como red social, y tal y cual.
Por cierto, el artículo, indescifrable al ojo profano, y digno del Captain Obvious para los del gremio.
Para que un negocio te funcione necesitas seguir estas dos indicaciones:
1. No decir nunca nada a nadie.
2.
#84 Ya está más que explicado y discutido. ¿Cuántas veces hay que repetir que "no hay bala de plata"? mnm.uib.es/gallir/posts/2006/09/26/820/
En el artículo hablas de Smarty, Pligg, etc. No me refería a eso, siempre que alguien te ha preguntado porqué no usaste MVC o MTV, hablas de cómo las librerías de plantillas hacían el código más lento. Pero, ¿has leído el artículo de Rasmus Lerdorf? Su MVC es extremadamente sencillo, ni siquiera usa objetos. MVC no obliga ni a usar librerías de plantillas, ni objetos, ni frameworks ni nada. Sólo te dice cómo separar el código que accede a los datos, del que se encarga de mostrar información y, a su vez, del que se encarga de recibir la entrada de datos, para luego explicarte la manera en que actúan entre ellos. Sinceramente, me fío bastante de la opinión de Rasmus, creador de PHP (tal vez aquí hay una falacia de magister dixit - esto va para el que me ha llamado pedante - ). Hay un artículo reciente sobre una conferencia que dió en la DrupalCon:
http://www.sitepoint.com/blogs/2008/08/29/rasmus-lerdorf-php-frameworks-think-again/
no es precisamente un fan de los frameworks actuales. El artículo de su no-framework es muy bueno y demuestra que MVC puede ser rápido, sin sobrecarga de librerías, ni penalización de rendimiento.
Además, en otros comentarios has dicho que la mayor carga está en la base de datos, así que me intriga que digas que siguiendo MVC haya una penalización tan grande.
Por otra parte, PHP es en sí mismo un sistema de plantillas, así que estoy de acuerdo contigo en que capas extra de plantillas pueden suponer una carga extra que puede no compensar.
Por todo lo demás (unidades de test, documentación, etc. etc.), el código es libre, aceptamos parches encantados. Show me the code :-)
Sé que puede parecer un flame, pero:
[sarcastic mode on]
Por supuesto, alguien que no ha estado metido en el desarrollo, que no tiene anotaciones de cómo funciona el software de Menéame y de las decisiones que se han tomado a la hora de desarrollarlo es la persona más indicada para documentarlo y testearlo
[sarcastic mode off]
Me ha recordado a un "artículo" (más bien un despotrique) que leí hace poco en Reddit:
http://withoutane.com/rants/2008/09/your-documentation-sucks
no es especialmente constructivo, pero la última frase es muy cierta. Es muy difícil que alguien ajeno a un proyecto pueda documentarlo (o testearlo) bien si precisamente no existe ni documentación ni tests. Para mí la mejor documentación son los tests, de hecho en algunos de mis proyectos tengo incluso más tests que código, supongo que porque prefiero ejemplos de cómo usar el código.
#76 arre coño!, no sé cual es el sinónimo de pedante en tecnología, pero deber haber alguno inventado solo para tí...
de verdad crees que alguien se ha leido ese chorreo hasta el final? incluso siguiendo los links que pones y todo?
te falta conocimiento de la naturaleza humana...
#67 ¡Gracias! Eso mismo estuve buscando yo: http://www.imeneame.net/
Una pequeña crítica... ¿Por qué otro dominio? ¿No hubiera sido mas lógico un i.meneame.net? O siguiendo el esquema de la Wii o la DS usar meneame.net/iphone? ¿Alguna razón especial?
Por dios!!!!
#0 En el artículo: el caso de meneame me ha demostrado que muchos “webmasters” (como llamarlos?) solo buscan aprovecharse de que meneame comparte su código, y no buscan ni ayudar, ni colaborar, ni enriquecer nada mas que sus bolsillos.
Tiene razón... pero también es cierto que cuesta mucho colaborar, ¡incluso en documentación!
Yo una vez quise ayudar añadiendo un poco de documentación actualizada de cómo instalarlo, y me encontré sin derechos para ello. Solicité que se me permitiese, y después de unos días me contestaron que les indicase qué página específica del wikispaces (documentación) necesitaba editar... y claro, me desanimé porque si por cada página que quiero editar colaborando tengo que andar pidiendo acceso en una especie de foro de discusión, me da lata. Un día lo haré, pero claro, he descubierto que no puedo ir documentando sobre la marcha... porque el acceso está demasiado restringido. Ganaron los malos, los que ponen burradas, y los que queremos ayudar nos vemos afectados e impedidos.
--[No;h3 3nTendid0 n^d^ d3 n^d^ ;
$
#46 No te iba a contestar, pero como veo que sigues... Digo yo que en algun momento tendras que admitir que puede haber gente a los que no les guste tu artículo, y eso no los convierte ni en trolls, ni en criminales de guerra. Si no eres capaz de admitir eso, entonces lo siento por ti.
#89 El voto en meneame es libre, lo siento si te molesta.
#62 Estás un poco sobreexcitado, cálmate chaval, relee lo que escribo, y no pongas en mis dedos palabras que yo no he escrito.
Lo del ad hominem lo has querido ver tú solito, porque se puede comprobar que ninguno de mis argumentos va dirigido contra ti, sino contra lo que has escrito. Yo me he quejado de tu lamentable estilo de escritura, por un lado, y de lo vacio de contenidos por otro. Si tú quieres ver un ataque contra tu persona, es que, o bien no sabes en que consiste un argumento ad hominem, o tu ego está lo bastante disparado como para considerar un ataque personal una crítica a tu artículo.
No pongo en cuestión si has corregido muchos bugs o pocos, me la sopla, me quejo de tu artículo.
Y nada más. Si eso te sirve para mejorar en el siguiente artículo, pues muy bien, pero no hace falta que te pongas como un basilisco cuando critiquen tus artículos.
Vaya humos...
Las pruebas en cuanto a que está mal escrito son evidentes, está plagado de faltas de ortografía, la puntuación es mala y la expresión es pobre.
En cuanto al asunto técnico, también se explica por si solo.
Hablar sobre qué es "$current_user" o sobre si hay directorios para wii y demás es como poco una frivolidad para alguien que alardea de que "he encontrado varios problemas y de gravedad variada" pero no dice cuales o que afirma que "el número total de problemas de seguridad, ha sido mucho menor que en otros sites populares" pero no dice cual es ese número total de problemas y con qué sitios los compara.
Y yo, ni te he votado negativo, ni te he descalificado, ni te he insultado. Pero sí que entiendo los artículos técnicos y he criticado el tuyo. Lo siento si no te gusta la crítica.
#47 gracias, Perl.
Sabía que no te resistirías a entrar al trapo,lo sabía.
Pero no te quejes que yo he dicho que confío plenamente en tí y si yo confio en ti siendo el mas baneado de la historia de meneame, cualquiera debería hacerlo.
Saludos.
#88 Cada vez que alguien te hace un comentario crítico, ¡voto negativo al canto! Si señor. Aunque eso no evitará que un artículo escrito mal con un contenido técnico mediocre sea un mal artículo. Encájalo chaval.
#93 Es libre, pero tu lo usas como ajuste de cuentas en lugar de utilizarlo para lo que es. Y a pesar de todo, tu artículo sigue siendo malo.
#95 ¿Cada vez que diga que tu artículo es malo, y que no sabes escribir me vas a votar negatifo?
No sé que tal andará de seguridad pero hacer esto: if _($current_user->user_level==”god”_ || _$current_user->user_level==”admin”)_ seguro que hay boquetones de seguridad, otra cosa es que no merezca la pena explotarlos
La verdad es que ese artículo está escrito de forma lamentable.
Por otro lado las explicaciones técnicas son de patio de colegio. No entiendo qué tiene de interesante...
#1 y #2 No si yo puedo evitarlo: Irrelevante
#38 bien, cambio codigo cerrado por SISTEMA PROPIETARIO.
El sistema de MENEAME ,compuesto de sus servidores son su s.o. y su codigo fuente,compone un sistema cerrado del cual sabemos lo que su dueño quiere que sepamos,algo totalmente lícito de hecho yo apoyo los sistemas cerrados como la xbox el iphone etc y me parece muy mal que los crakeen.
#31 me encanta tu candidez e inocencia,no la pierdas nunca,pues es un tesoro.
No se sabe si los usuarios que votan una noticia o la descartan son personas reales o bots programados para ello por el mismo creador.
No se sabe si el calculo del karma se hace en el servidor tal como se dice que se hace en lo que está publicado.
No se sabe simplemente porque MENEAME es codigo cerrado.Sería codigo abierto si permitieran el acceso al servidor a todo el mundo.Cosa que evidentemente no es necesario porque no merece la pena auditar semejante cosa,nadie se pararía en ello,y a quien lo haga le puedo recomendar actividades mucho mas divertidas y relajadas.
y como he dicho antes,creo que el de las llaves es honrado e integro.Pero esto es subjetivo ...claro.