Inicio Blog Página 57

Esta pretemporada Reforjan las Runas

0

 

Esta pretemporada reforjamos las runas

Las runas y las maestrías tienen problemas. Sus sistemas son complicados, difíciles de equilibrar y no dejan margen para personalizar vuestro estilo de juego o adaptarlo a la situación en la selección de campeón. Últimamente hemos estado hablando sobre nuestros planes para la pretemporada y por qué vamos a combinar las runas y maestrías en un sistema prepartida reestructurado. Hoy, profundizaremos en cómo funcionará el nuevo sistema.

Combinadas y reestructuradas

Forjar un sistema de runas más eficiente implica, en primer lugar, concentrar el poder del sistema en menos elecciones, para que cada una de ellas sea más importante. En los sistemas de runas y maestrías actuales, existen unas 60 ranuras diferentes, pero muy pocas tienen un impacto significativo en las jugadas de vuestro campeón. La mayoría de estas ranuras se usan para equipar al campeón con las estadísticas «necesarias», como velocidad de ataque, armadura, o resistencia mágica. Esto hace que la selección de runas y maestrías sea una tarea rutinaria en lugar de una elección. Además, dividir el poder en tantas partes provoca que ninguna de las decisiones sea suficientemente importante (o poderosa) como para que el sistema sea divertido.
Teniendo esto en cuenta, vamos a pasar esas estadísticas «necesarias» al segundo plano para que os podáis centrar en lo que importa. Las maestrías clave fueron nuestra primera prueba de este nuevo sistema, ya que concentran más poder en las elecciones individuales. Como ocurre con las maestrías clave, el nuevo sistema de runas se centrará menos en las estadísticas pasivas (aunque no desaparecerán por completo) y más en los efectos que definen el estilo de juego.

¿Cómo funciona?

Entraréis en partida con seis runas. Se dividirán en tres tipos: runas clave, mayores y menores.

Runas clave

Solo contaréis con una runa clave, que será la más fuerte y una evolución directa de las maestrías clave. Aparecerá en la pantalla de carga y en la tabla de puntuaciones, y tendrá más impacto en vuestra experiencia de juego continua. Las runas clave otorgan efectos importantes y poderosos que pueden cambiar lo que hace vuestro campeón. ¿Queréis jugar con calma en los combates y tener una explosión de velocidad de ataque repentina para machacar al equipo enemigo? ¿Y si pudierais tener una mascota que os sigue y que ayuda a atacar a los enemigos o proteger a los aliados? Esos son ejemplos que estamos probando en este momento.

Furia: En los 3 segundos siguientes después de dañar a un campeón, entráis en un estado de furia y obtenéis un 60 % de velocidad de ataque durante 3 segundos. Podéis prolongar el efecto a 10 segundos si atacáis a un campeón enemigo. Furia os permite superar los límites de velocidad de ataque.

Perxie: Vuestros ataques y habilidades envían a Perxie hacia un objetivo. Perxie otorga un escudo de 40-120 puntos a los aliados según el nivel (+0,3 de PH o +0,3 de DA adicional) o daña a los enemigos 10+40 según el nivel (+0,1 de PH o +0,15 de DA adicional). No se puede enviar a Perxie de nuevo hasta que vuelva hacia vosotros.

Runas mayores

Las runas mayores son las siguientes en la escala de poder. Son las que más difieren de los sistemas de runas y maestrías anteriores. En este caso, observaréis efectos que no son tan tácticos como los de las runas clave, pero son mucho más potentes que lo que hemos visto hasta ahora. Las runas mayores tendrán representación visual y sonora en la partida, así que podréis saber cuándo se están usando y reconocer su impacto. Veamos dos ejemplos. Ambos están siendo desarrollados, pero queremos compartirlos con vosotros aunque aún sea provisional.

El primer ejemplo es de tipo protector y se llama Supercuración:

Supercuración: El exceso de curación (hasta un 10 % de vuestra vida total) se convierte en un escudo que decrece progresivamente.

Supercuración os aporta una sinergia mayor con campeones que pueden curaros o con vuestras propias curaciones o robos de vida. Esto puede afectar al modo en el que os aproximáis a las peleas, ya que intentar intercambiar daño o despejar súbditos mantendrá el escudo cargado y os proporcionará esa durabilidad extra para la siguiente pelea.

La siguiente es una opción bastante diferente, Guardián zombi:

Guardián zombi: Cuando elimináis un guardián enemigo, un guardián zombi aliado aparece en su lugar. Los guardianes zombis son visibles, duran 180 segundos y no cuentan para el límite de guardianes.

Estos guardianes cambian el modo en el que se contrarresta la visión. Cuando eliminéis guardianes enemigos, otorgaréis visión a vuestro equipo sin que eso afecte al límite de guardianes.

Runas menores

Las runas menores tienen efectos menos llamativos: tienen menos impacto en la experiencia de juego continua, pero os permiten especializar a vuestros campeones de forma divertida. Tendrán efectos de todo tipo. Pueden ayudar a progresar, a aumentar el daño o la defensa, otorgar objetos gratis, etc. Cada runa menor puede ayudaros a duplicar una fortaleza, reaccionar ante un enfrentamiento contra un enemigo, o contrarrestar una debilidad.

Sobrecarga: +1 % de reducción de enfriamiento por nivel, hasta +10 % de reducción de enfriamiento al nivel 10. Cada 1 % de reducción de enfriamiento por encima del límite se convierte en +2 de poder de habilidad o +1,4 de daño de ataque, según corresponda.

Sobrecarga otorga reducción de enfriamiento cuando subís de nivel y convierte el exceso de reducción de enfriamiento en DA o PH. Esto dará lugar a nuevas combinaciones de objetos.

Ladrón de esencia: Obtenéis 1 de vida máxima permanente cuando los súbditos enemigos mueren cerca de vosotros. Alcance: 1400 unidades.

Ladrón de esencia es una inversión para la durabilidad de final de partida. Cada súbdito enemigo que muera cerca de vosotros os otorgará una bonificación, aunque no lo matéis vosotros.

 

Ramas y ranuras

 

Ya hemos analizado los diferentes tipos de runa, pero aún no hemos explicado cómo se eligen. Las runas se asignan a ramas concretas con su propia temática, identidad y conjunto de mecánicas que podrán explorarse. La rama de Dominación, por ejemplo, encaja con campeones que cazan y machacan a sus objetivos. Dentro de cada rama contaréis con una serie de opciones o ranuras en las que tendréis que elegir una runa de entre tres opciones. Cada ranura aporta ciertos beneficios. Sobrecarga, por ejemplo, se encuentra en una de las ranuras orientadas al daño.

Cada rama cuenta con una ranura clave, una ranura mayor y dos menores.

 

Cada rama tiene su temática, identidad y conjunto de ranuras especiales. Las runas siguen siendo un proyecto en curso, pero abajo podéis ver algunas ilustraciones del arte conceptual de las nuevas ramas.

Este es un ejemplo de cómo quedaría una ranura completa de la rama de Dominación.

Vamos a probar una variación del clásico Cazarrecompensas. Cazarrecompensas ha sido una maestría popular, pero es difícil otorgarle un efecto más específico que el daño, debido a algunas de las limitaciones de las maestrías actuales. Estas tres nuevas opciones de Cazarrecompensas usan el mismo patrón de acumulación (conseguir matar o asistir para matar a cada campeón enemigo), pero ofrece distintas recompensas que os permiten adaptaros a las que creáis que serán vuestras necesidades en esa partida.

Cazador incesante: Otorga 10 puntos de velocidad de movimiento fuera de combate por cada acumulación de Cazarrecompensas. La primera vez que asesináis a cada campeón enemigo conseguís una acumulación de Cazarrecompensas.

Cazador ingenioso: Otorga un 5 % de reducción de enfriamiento a las habilidades activas de objetos por cada acumulación de Cazarrecompensas. La primera vez que asesináis a cada campeón enemigo conseguís una acumulación de Cazarrecompensas.


Cazador voraz: 2 % de succión de hechizo por cada acumulación de Cazarrecompensas. La primera vez que asesináis a cada campeón enemigo conseguís una acumulación de Cazarrecompensas.

Al comparar elementos similares como estos, las decisiones son más fáciles de entender y de ajustar en el momento, al mismo tiempo que plantean cuestiones profundas y predecibles sobre la partida que vais a jugar y las recompensas que necesitaréis.

No todas las ranuras se pueden comparar de forma tan directa como Cazarrecompensas. A continuación, os mostramos un ejemplo de la rama de Valor, que ofrece opciones de utilidad.

Ladrón de esencia: Obtenéis 1 de vida máxima permanente cuando los súbditos enemigos mueren cerca de vosotros. Alcance: 1400

Que no cunda el pánico: Las curaciones y los escudos son un 5 % más potentes y aumentan hasta un 10 % en objetivos que se encuentren por debajo del 40 % de vida.

¡Pánico!: Obtenéis un 10 % de velocidad de movimiento hacia los aliados cercanos que estén bajo efectos de control de adversario o hacia los enemigos a los que hayáis aplicado esos efectos. Alcance: 1500

En este caso, elegiríais entre dos runas situacionales defensivas y ¡Pánico!, que aumenta vuestra capacidad para aferraros a los enemigos o alcanzar a los aliados que están en peligro. La diferencia es que al elegir ¡Pánico! se sacrifica la durabilidad que aportan Ladrón de esencia o Que no cunda el pánico.

Cada página de runas os permite rellenar una rama completa al mismo momento que elegís algunos elementos de otras ramas. Hablaremos más sobre cómo funciona ese aspecto del sistema más adelante.

 

A la espera de la pretemporada

Llegan grandes cambios, y creemos que cualquier tipo de runas nuevas debería ser más accesible que las de hoy en día para que podáis explorar el sistema. No deberíais tener que elegir entre probar una nueva combinación de runas y compraros un nuevo campeón, así que las runas serán gratuitas. Este es un cambio que debería afectar positivamente a todo el mundo, ya que nos da más libertad para cambiar y equilibrar las runas (algo que siempre nos costaba hacer con el sistema antiguo). También podréis editarlas libremente en la selección de campeón.

Hoy en día, las runas son una gran parte del contenido que los jugadores desbloquean por PI, así que hacerlas gratis afectará a otros aspectos. Nuestros sistemas actuales de ganancias y recompensas tienen algunos problemas: los nuevos jugadores se encuentran con un gran desafío antes de poder competir, y muchos jugadores veteranos tienen miles de PI que no saben en qué gastar. Por ese motivo, vamos a tomarnos un tiempo para reflexionar sobre nuestros sistemas de ganancias y recompensas como un todo. Hablaremos más sobre el tema cuando se acerque la pretemporada.

Llevamos mucho tiempo trabajando en este cambio, así que estamos deseando debatirlo con vosotros. Contadnos qué pensáis y enviadnos las dudas que tengáis. Compartiremos más detalles sobre las runas reforjadas en los próximos meses.

El precio de las CPUs AMD Ryzen baja notablemente

0

Con la llegada de los procesadores Intel Core de 8ª Generación, más conocidos como Coffee Lake, los procesadores AMD Ryzen ya tienen un rival real gracias a la incorporación de modelos con 6 núcleos, y parece que AMD ha movido ficha para ajustar el precio de sus modelos para hacerlos más competitivos en términos de rendimiento/precio.

Si nos limitamos al mercado español, ya podemos apreciar notables rebajas de precio. Si por ejemplo, el AMD Ryzen 7 1700X de 8 núcleos y 16 hilos a una frecuencia Base/Turbo de 3.40/3.80 GHz salía a la venta a mitades del mes de agosto a un precio de 399 euros, a día de hoy lo podemos encontrar por 309 euros. En julio el AMD Ryzen 5 1500X (4 núcleos + 8 hilos @ 3.50/3.70 GHz) salía a la venta a un precio de 209 euros, costando a día de hoy 179 euros. Curiosamente, las CPUs más populares, como los Ryzen 5 1600/X han disminuido muy poco el precio, unos 10 euros, mientras que la gama de entrada se ha abaratado notablemente, pudiendo acceder a un AMD Ryzen 3 1200 (4x núcleos + 4x hilos @ 3.10/3.40 GHz) por un precio que ronda los 100 euros.

Obviamente, estaba bajada de precio busca seguir incentivando las ventas, teniendo AMD la ventaja de que el stock de CPUs Intel Coffee Lake es prácticamente inexistente y se espera que la situación no cambie hasta principios de 2018, esperando que para ese entonces ya se hayan filtrado detalles sobre las futuras CPUs AMD Ryzen 2, de esta forma AMD buscará comenzar a eclipsar la disponibilidad de stock de su eterno rival junto a nuevas bajadas de precio, ya que hay que recordar que será en febrero cuando lleguen estas CPUs estrenando un nuevo proceso de fabricación de 12nm.

Fuente

El avión secreto del Pentágono aterriza después de pasar dos años en el espacio

0

El X-37B ha estado en órbita más de 700 días haciendo pruebas de contenido clasificado

https://www.youtube.com/watch?v=De30IsdhAAQ

El avión espacial experimental X-37B de la Fuerza Aérea de Estados Unidos (USAF) aterrizó este domingo en el Centro Espacial Kennedy, en Florida, después de haber completado una misión clasificada que ha durado más de dos años, según las autoridades militares.

El X-37B, un aparato no tripulado que tiene el aspecto de una pequeña lanzadera espacial, tomó tierra a las 13.47 de este domingo en una pista que antes era usada por las lanzaderas espaciales, tal como ha informado la USAF.

El avión espacial, construido por Boeing, fue lanzado en mayo de 2015 desde Cabo Cañaveral a bordo de un cohete Atlas 5, construido por la compañía United Launch Alliance, socia de Lockheed Martin Corp y Boeing.

El X-37B, uno de los dos que hay en la flota de la USAF, llevó a cabo experimentos no especificados durante los más de 700 días que estuvo en órbita. Ha sido la cuarta misión y la más larga del programa secreto, organizado por la Oficina de Capacidades Rápidas de la Fuerza Aérea.

Estas naves orbitales «ponen a prueba tecnologías para reducir riesgos, experimentar y probar prototipos de vehículos espaciales reutilizables», ha explicado la USAF, sin dar más detalles. El coste de programa también es clasificado.

Misión de inteligencia

La «Secure World Foundation», un grupo que promueve la exploración pacífica del espacio ha dicho que el secretismo que rodea al X-37B sugiere que a bordo de la nave se están probando programas relacionados con inteligencia.

Estas naves miden nueve metros de largo y tienen una envergadura de 4,6 metros, lo que les hace ser cuatro veces más pequeños que los transbordadores espaciales ya retirados por la NASA.

El X-37B, también conocida como Vehículo Orbital de Pruebas (OTV, en inglés), voló por primera vez en 2010 y volvió a Tierra después de ocho meses. Una segunda misión, que duró 15 meses, fue lanzada en marzo de 2011, mientras que una tercera se lanzó en diciembre de 2012 y volvió después de 22 meses.

El aterrizaje de este domingo ha sido el primero del X-37B en Florida. Los tres anteriores han tenido lugar en la base de la Fuerza Aérea en Vandenberg, California. La USAF cambió la localización del programa en 2014, aprovechando dos de los hangares para transbordadores de la NASA.

La USAF pretende lanzar la quinta misión del X-37B desde la estación que tiene en Cabo Cañaveral, al sur del Centro Espacial Kennedy, este año.

Fuente

Detienen la propagación del ransomware Wanna Cry. Prevención del mismo [Guía]

0

Un experto en seguridad se ha convertido en un «héroe accidental» tras gastar unos pocos dólares y registrar un dominio inexistente, que hace que el ransomware WannaCry deje de extenderse. Vió que el malware tenía codificadas consultas a un dominio muy largo, que no estaba registrado Si WannaCry ve que ese dominio está activo, deja de propagarse. Aparentemente, los creadores del malware habían creado este interruptor para poder detener su avance. Cisco ha confirmado que la extensión se ha detenido por este descubrimiento. Microsoft ha decidido parchear versiones sin soporte de Windows por la gravedad del asunto.

Durante las últimas horas, un malware de secuestro denominado WannaCry afectó a muchas organizaciones de todo el mundo como Telefónica de España, FedEx de Estados Unidos o el Servicio Nacional de Salud (NHS) del Reino Unido, donde las computadoras del hospital comenzaron a mostrar un mensaje de rescate de $ 300 de bitcoin. También se confirma que Nissan en Sunderland, la mayor fábrica de automóviles del Reino Unido.

Ahora, un «héroe accidental» ha interrumpido la propagación global del ransomware, simplemente gastando unos pocos dólares registrando un nombre de dominio al que el malware hace una solicitud.

Este hombre, al parecer un investigador de  ciberseguridad de 22 años del Reino Unido @malwaretechblog, encontró que el interruptor fue codificado en el ransomware «en caso de que el creador quisiera detener su propagación. Esto se hizo a través de un nombre de dominio muy largo que el malware tuvo que conectarse (muy similar a buscar cualquier sitio web). Si la conexión es correcta, y muestra un dominio en vivo, el ‘kill switch’ funciona, se apaga inmediatamente y se detiene la propagación del ransomware. (del inglés ransom, ‘rescate’, y ware, por software)

Warren Mercer (líder de seguridad técnica en Cisco), confirmó que las infecciones por WannaCry / WanaDecrpt0r han bajado debido al descubrimiento de @MalwareTechBlog

El dominio es una dirección dot-com, formada por una larga cadena de letras y números gobbledygook, que termina en ‘gwea.com’. De acuerdo con TheDailyBeast, @MalwareTechBlog vio que el dominio no estaba registrado y decidió comprarlo en NameCheap.com por sólo 10,69 dólares. Luego, lo señaló en un servidor de ‘sumidero’ en California, con la intención de recolectar información sobre el malware. De repente, vio miles de conexiones por segundo.

Sin embargo, se advierte sobre un nuevo hilo que viene. «Hay una posibilidad muy probable que van a desvelar una nueva versión de la ransonware para comenzar de nuevo. Si la gente no repara sus computadoras, volverá a ocurrir «.

Los investigadores de Cisco Umbrella observaron por primera vez las solicitudes de uno de los dominios de killswitch de WannaCry (iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea Com) a partir de las 07:24 UTC, luego aumentando a un pico de poco más de 1.400 casi 10 horas más tarde.

iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com

La carga útil (Payload) de propagación WannaCry contiene un dominio previamente no registrado, la ejecución falla ahora que el dominio ha sido eliminado (skinhole)

API InternetOpenUrlA():

La subrutina anterior intenta un HTTP GET a este dominio y, si falla, continúa llevando a cabo la infección. Sin embargo, si tiene éxito, la subrutina sale. El dominio está registrado en un sumidero bien conocido, lo que efectivamente hace que esta muestra termine su actividad maliciosa.

La amenaza crea un servicio denominado mssecsvc2.0, cuya función es explotar la vulnerabilidad de SMB en otros equipos accesibles desde el sistema infectado:

Nombre del Servicio: mssecsvc2.0
Descripción del servicio: (Microsoft Security Center (2.0) Service)
Parámetros de servicio: «-m security»

Detalles criptográficos

    • encrypted via AES-128-CBC (custom implementation in the binary)
    • AES key generated with a CSPRNG, CryptGenRandom
    • AES key is encrypted by RSA-2048 (windows RSA implementation)
    • https://haxx.in/key1.bin (the ransomware pubkey, used to encrypt the aes keys)
    • https://haxx.in/key2.bin (the dll decryption privkey) the CryptImportKey() rsa key blob dumped from the DLL by blasty.

 

Algunos strings interesantes del binario

BAYEGANSRV\administrator Smile465666SA wanna18@hotmail.com

Contraseña usada para descomprimir el dropper:

WNcry@2ol7

Microsoft publica una actualización urgente contra WannaCrypt para Windows XP y otras versiones sin soporte

Microsoft publica el parche de seguridad para Windows XP contra WannaCrypt, el ransomware. Una situación delicada como esta ha requerido una acción ‘inusual’ como la de desarrollar una actualización de seguridad de urgencia para proteger a los usuarios de sus antiguas plataformas.

    • Windows XP
    • Windows 8
    • Windows Server 2003

 

Descargar parches contra Ransom:Win32.WannaCrypt.

Windows Server 2003 SP2 x64
Windows Server 2003 SP2 x86
Windows XP SP2 x64
Windows XP SP3 x86
Windows XP Embedded SP3 x86
Windows 8 x86
Windows 8 x64

Actualización de seguridad -KB4012598

KB4012598

¿Cómo se propaga WannaCrypt, WannaCry, WanaCrypt0r, WCrypt, WCRY?

– Tienes protocolo SMBv1 habilitado
– Eres accesible desde internet (WAN)
– No tienes el parche MS17-010

En caso de que no sea posible aplicar los parches de seguridad se debería desactivar el servicio SMBv1. Para ello: – Abre el Panel de control, haz clic en Programas y, a continuación, haz clic en Activar o desactivar características de Windows.

– En la ventana Características de Windows, desactiva la casilla de verificación SMB1.0 / CIFS File Sharing Support y, a continuación, haz clic en Aceptar para cerrar la ventana.

– Reinicia el sistema.

Para desactivar SMB1 abre powershell como administrador y usa estos 2 comandos

SC.exe config lanmanworkstation depend = mrxsmb20/bowser/nsi
SC.exe config mrxsmb10 start = disabled

Para habilitar o deshabilitar SMBv1 en el servidor SMB, configure la clave del registro siguiente:

Subclave del registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

entrada del registro: SMB1

REG_DWORD: 0 = deshabilitado
REG_DWORD: 1 = habilitado
Valor predeterminado: 1 = habilitado

SMBv1 Workstation
Key/Hive – «HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation»
Subkey – DependOnService
Value – «Bowser»,»MRxSmb20″,»NSI»
SMBv1 Server
Key/Hive – HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters»
Subkey – SMB1
Value – 0
Type – DWORD
Note: This is a new subkey you need to create

Herramienta NoMoreCry  del CCN-CERT

 

El CCN-CERT ha desarrollado una herramienta para prevenir la infección por el malware WannaCry 2.0. Se trata de «CCN-CERT NoMoreCry Tool», una herramienta disponible para todas las entidades que lo requieran, que crea un mutex (algoritmo de exclusión mutua) en el equipo que previene la ejecución del código dañino WannaCry 2.0. Es importante reseñar que, en el caso de máquinas infectadas, la ejecución de esta herramienta NO es de aplicación al no actuar sobre la misma de la forma prevista.

El Equipo de Respuesta del Centro Criptológico Nacional hace notar que la herramienta deberá ejecutarse tras cada reinicio, debido a que no presenta persistencia en el equipo. Este proceso se puede automatizar mediante la modificación del registro de Windows o a través de la aplicación de políticas en el dominio.

Esta herramienta funciona en sistemas operativos superiores a Windows XP.

CCN-CERT NoMoreCry Tool se encuentra en la plataforma en la nube del CCN-CERT, LORETO. Junto a ella también está disponible el Script que evita la ejecución del código dañino en equipos Windows en inglés y en español.

Fuente

 

Database Wrapper para PDO +(comentario sobre performance)

0

Os traigo un Wrapper que uso habitualmente en mis proyectos PHP. Lo suelo tener integrado en mi esqueleto Slim 3 pero lo he usado con anterioridad en otros tipos de proyectos. Seria un sustituto del ORM que nunca me ha gustado usar. Lo he ido programando con el tiempo y las funciones insert, update y delete las cogí de algún otro Wrapper, ORM o a saber.

En mis proyectos es importante que el acceso a la base de datos sea rápido y muchas veces el uso de un ORM como Doctrine o Eloquent no son para nada rápidos:

With pure PDO:
memory: 0.0044288635253906
seconds: 0.24748301506042

With DBAL and autoload:
memory: 0.97610473632812
seconds: 0.29042816162109

Extraído de Reddit y de gonzalo123.com. No es el código mas elegante ni de la ultima versión de PHP, de hecho tengo que actualizarlo para poder usar toda la potencia de PDO, aun así, aquí os lo pego y luego un tutorial de como usarlo (os prometo que lo actualizare para sacarle mas jugo):

class DatabaseWrapper {

    private $_conn;

    public function __construct( $db )
    {

        $pdo                = new PDO($db, $db, $db, $db);

        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

        $this->_conn        = $pdo;

    }

    protected function exec($query, $params)
    {

        if (strpos($query,'SELECT') !== false) {
            return $this->executeQuery($query, $params)->fetchAll(\PDO::FETCH_ASSOC);
        }

        return $this->executeQuery($query, $params)->rowCount();

    }

    protected function executeQuery($query, $params) {

        $statment  = $this->_conn->prepare($query);
        $statment->execute($params);

        return $statment;

    }

    public function fetchRow($query, $params = array()) {

        return $this->executeQuery($query,$params)->fetch(\PDO::FETCH_ASSOC);

    }

    public function fetchAll($query, $params) {

        return $this->executeQuery($query,$params)->fetchAll(\PDO::FETCH_ASSOC);

    }

    public function fetchColumn($query, $params, $column = 0) {

        return $this->executeQuery($query,$params)->fetchColumn($column);

    }

    public function fetchAssoc($statement, array $params = array())
    {
        return $this->executeQuery($statement, $params)->fetch(\PDO::FETCH_ASSOC);
    }

    public function fetchArray($statement, array $params = array())
    {
        return $this->executeQuery($statement, $params)->fetch(\PDO::FETCH_NUM);
    }

    public function delete($tableExpression, array $identifier, array $types = array())
    {
        if (empty($identifier)) {
            return FALSE;
        }

        $criteria = array();

        foreach (array_keys($identifier) as $columnName) {
            $criteria[] = $columnName . ' = ?';
        }

        return $this->exec(
            'DELETE FROM ' . $tableExpression . ' WHERE ' . implode(' AND ', $criteria),
            array_values($identifier)
            //is_string(key($types)) ? $this->extractTypeValues($identifier, $types) : $types
        );
    }

    public function insert($table, $data)
    {
        $fields = $values = array();
        foreach ($data as $key => $value) {

            if ($value instanceof DateTime) {
                $value = $value->format('Y-m-d H:i:s');
            }

            $fields[] = '`'.str_replace("`", "``", $key).'`';
            $values[] = $this->_conn->quote($value);
        }

        $query = "INSERT INTO `$table` (".implode(',', $fields).") VALUES (".implode(',', $values).")";

        $this->_conn->exec($query);

        return $this->_conn->lastInsertId();
    }

    public function update($table, $data, $conditions)
    {
        if (!$data) {
            return false;
        }

        $updates = $wheres = array();
        foreach ($data as $key => $value) {

            if ($value instanceof DateTime) {
                $value = $value->format('Y-m-d H:i:s');
            }

            $updates[] = '`'.str_replace("`", "``", $key).'` = '.$this->_conn->quote($value);
        }

        foreach ($conditions as $key => $value) {
            $wheres[] = '`'.str_replace("`", "``", $key).'` = '.$this->_conn->quote($value);
        }

        $table = '`'.str_replace("`", "``", $table).'`';

        $query = "UPDATE $table SET ".implode(', ', $updates)." WHERE ".implode(' AND ',$wheres);

        $this->_conn->exec($query);

        return true;
    }

    public function query($statement)
    {

        return $this->_conn->exec($statement);

    }

    public function errorCode()
    {
        return $this->_conn->errorCode();
    }

    public function errorInfo()
    {
        return $this->_conn->errorInfo();
    }

    public function lastInsertId($seqName = null)
    {
        return $this->_conn->lastInsertId($seqName);
    }

}

SELECT de una fila

$dbw      = new DatabaseWrapper($db);
$sql        = 'SELECT `name`, email FROM Users WHERE id = ?';

$user      = $dbw->fetchRow($sql, );

SELECT

$dbw      = new DatabaseWrapper($db);
$sql        = 'SELECT `id`, `room`, beds
                              FROM Rooms WHERE hotel_id = ?';

$rooms      = $dbw->fetchAll($sql, );

DELETE

$dbw      = new DatabaseWrapper($db);
$dbw->delete($table_name, );

INSERT

$dbw      = new DatabaseWrapper($db);
$row_id  = $dbw->insert($table_name, );

UPDATE

$dbw      = new DatabaseWrapper($db);
$row_id  = $dbw->update($table_name, ,);

Resumen de metodos:

    • fetchRow
    • fetchAll
    • fetchColumn
    • fetchAssoc
    • fetchArray
    • delete
    • insert
    • update
    • query
    • errorCode
    • errorInfo
    • lastInsertId

Nunca hago el new en el código porque mis proyectos funcionan con DI y el objeto $dbw siempre me llega al controlador. Si os interesa esta técnica os podría explicar como.

Consiguen velocidades de 112 Gbps con una conexión de luz infrarroja

Un grupo de ingenieros de los Países Bajos está desarrollando un sistema de conexión inalámbrica que utiliza luz infrarroja que destaca por ofrecer un rendimiento muy superior al que ofrece la WiFi en la actualidad.

El sistema se basa en la utilización de antenas infrarrojas para dirigir los haces de luz hacia los dispositivos conectados, y los resultados de las pruebas muestran que alcanza una velocidad de transmisión de datos de 112 Gbps. Por el contrario, los routers WiFi convencionales solo ofrecen decenas o cientos de Mbps, por lo que la diferencia es muy elevada.

La conexión WiFi utiliza ondas de radio para transferir datos y conectar los dispositivos a Internet de manera inalámbrica. Sin embargo, este sistema tiene sus limitaciones, principalmente las derivadas de la necesidad que tienen los distintos aparatos conectados a un router de compartir el ancho de banda. Como consecuencia de la afluencia de dispositivos, las redes se congestionan y se producen los temidos cuellos de botella que ralentizan la conexión.

Para resolver este problema, en los últimos años se ha avanzado en la investigación de las conexiones mediante luz, como el LiFi, un sistema de comunicaciones ópticas inventado por el profesor Harald Hass de la Universidad de Edimburgo en 2011. Esta técnica utiliza bombillas LED para transmitir los datos y prometía que en el futuro podría alcanzar velocidades de hasta 100 Gbps, aunque de momento solo han conseguido 10 Gbps.

Más tarde, los científicos de la Universidad Técnica de Eindhoven (Países Bajos) presentaron el pasado mes de marzo un nuevo sistema basado en luz infrarroja para transmitir los datos. Ahora, el equipo ha conseguido optimizarlo, pasando de una velocidad de transmisión de 40 Gbps a los 112 Gbps actuales.

En este nuevo sistema, los datos son transportados a través de un rayo láser infrarrojo, que es el mismo tipo que se emplea en las redes de telecomunicaciones, a un arsenal de fibras ópticas. El haz inicial se puede dividir en múltiples canales, cada uno con una longitud de onda distinta, lo que evita las congestiones y permite que cada dispositivo disfrute de la velocidad de transferencia completa.

Ton Koonen, líder del proyecto, asegura que si recibe los apoyos comerciales necesarios, su sistema de conexión inalámbrica por rayos infrarrojos podría estar disponible dentro de cinco años.

Consigue a Albóndiga como Campeón para tu Sede de Clase

0

Bienvenidos a la guía para conseguir a http://es.wowhead.com/champion=986/ como campeón, se puede poner como aliado de combate o http://es.wowhead.com/spell=231701.

    • Tener acceso a la hermandad de los camorristas (Necesitaremos http://es.wowhead.com/item=144363/, que se puede obtener facilmente matando PNJ’s en Reposo del Escudo (Tormenheim)

 

PD: Puede que sea necesario esperar entre una misión y otra aproximadamente 1 hora.

Comics sobre la nueva expansión "Caballeros del trono helado"

0

Aquí os dejo los enlaces a los cómics de la nueva expansión de Hearthstone: Caballeros del trono helado. (Estaría bien que sacaran alguno de esos aspectos en Heroes of the Storm)

Primer cómic: Enlace

Segundo cómic: Enlace

Tercer cómic: Enlace

Cambia el tipo de letra en WoW

0

Hace tiempo hice un vídeo sobre como cambiar el tipo de letra en World of Warcraft. Os dejo el vídeo.

Tenemos que crear una carpeta llamada Fonts (dentro de la carpeta del juego, junto a interfaz, wtf, data…)
Dentro metemos las fuente que queramos y le damos uno de los siguientes nombres (o todos)

FRIZQT__.ttf (interfaz – nombre de los npc y jugadores, spells, objetos, buffos, registro de misiones, texto flotante…)
ARIALN.ttf (chat)
skurri.ttf (chat de combate)
MORPHEUS.ttf (correo, rastreador de misiones)
FRIENDS.ttf (lista de amigos)

Call of Duty WWII es una realidad: se presentará el 26 de abril

0

El videojuego de Activision y Sledgehammer Games vuelve a la Segunda Guerra Mundial.

Tras semanas de rumores, Activision acaba de confirmar la existencia de Call of Duty: WWII, el nuevo videojuego de la franquicia bélica americana. Poco se sabe del juego más allá de lo visto en la página web oficial, en la que se nos insta a esperar al próximo 26 de abril para poder ver el primer adelanto del esperadísimo título.

Lo que ya parece más que confirmado es que Call of Duty regresa a la Segunda Guerra Mundial, periodo histórico en el que comenzó la serie con gran éxito a principios de la pasada década. Es también el segundo Call of Duty de Sledgehammer: firmó el competente CoD: Advanced Warfare, que contó con la presencia de Kevin Spacey.

Restará esperar al próximo miércoles, a partir de las 19:00 (hora española), para poder saber qué nos espera en el nuevo videojuego de la franquicia.

Fuente

¡¡Dios mio que ganas tenía de esto!! Por fin un CoD que voy a comprar después del MW3 y del BO3 !!!!  Porque el ghost, advanced warfare y infinity warfare… para ellos.