. // // Alexey A.Znayev, znaeff@mail.ru, http://xbsoft.org, http://xbsoft.ru // /////////////////////////////////////////////////////////////////////////// // This file contains public class DNSBL // This class performs IP address check in spam blocking lists as described // on http://ru.wikipedia.org/wiki/RBL class DNSBL { private $_aCheckers = array( // list of checkers available for individual checking 'spamhaus' => array('.zen.spamhaus.org', true), //available for group checking with 'all' key 'spamcop' => array('.bl.spamcop.net', true), //available for group checking with 'all' key 'dsbl' => array('.list.dsbl.org', false), //not available for group checking with 'all' key 'ordb' => array('.relays.ordb.org', false), //not available for group checking with 'all' key 'sorbs' => array('.dnsbl.sorbs.net', false), //not available for group checking with 'all' key 'njabl' => array('.dnsbl.njabl.org', false) //not available for group checking with 'all' key ); // AZ - 1. Key 'all' is illegal // AZ - 2. Most of spammer IP addresses is covered by 'spamhaus' & 'spamcop' (and they are fast), // some of the rest may not work sometimes, you can make them group checking available after individual testing private $_sDefaultChecker = 'spamhaus'; /////////////////////////////////////////////////////////////////////////// // CheckSpamIP - check IP for spam in checkers : given, default or all available for group checking (may be slow) // parameters: // string $ip - ip address // string $checker - checker name or 'all' or nothing // returns: // true when IP exitsts in spam-lists of $checker or at least one of all checkers // false when not or when ip address is local or not correct public function CheckSpamIP($ip, $checker = ''){ if(empty($ip)) return false; if(preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $ip) != 1) return false; $octets = explode('.', $ip); if($octets[0] == '127') return false; if($octets[0] == '10') return false; if($octets[0] == '192' && $octets[0] == '168') return false; if($octets[0] == '169' && $octets[0] == '254') return false; // ms windows if((int)$octets[0] > 255 || (int)$octets[1] > 255 || (int)$octets[2] > 255 || (int)$octets[3] > 255 ) return false; $ret_val = false; $PTR = implode(array_reverse($octets), '.'); if($checker === 'all'){ foreach(array_values($this->_aCheckers) as $c){ if($c[1]){ $ret_val = $ret_val || $this->_CheckDNSAnswer(dns_get_record($PTR . $c[0], DNS_A)); } if($ret_val) break; } }else if(array_key_exists($checker, $this->_aCheckers)){ $ret_val = $this->_CheckDNSAnswer(dns_get_record($PTR . $this->_aCheckers[$checker][0], DNS_A)); }else{ $ret_val = $this->_CheckDNSAnswer(dns_get_record($PTR . $this->_aCheckers[$this->_sDefaultChecker][0], DNS_A)); } return $ret_val; } /////////////////////////////////////////////////////////////////////////// // GetCheckers - gets list of available checker names // returns: // array of strings public function GetCheckers(){ return array_keys($this->_aCheckers); } /////////////////////////////////////////////////////////////////////////// // GetGroupCheckers - gets list of checker names available for group checking with 'all' key // returns: // array of strings public function GetGroupCheckers(){ $ret_val = array(); foreach(array_keys($this->_aCheckers) as $k) if($this->_aCheckers[$k][1]) array_push($ret_val, $k); return $ret_val; } /////////////////////////////////////////////////////////////////////////// // GetDefaultChecker - gets default checker name // returns: // string public function GetDefaultChecker(){ return $this->_sDefaultChecker; } /////////////////////////////////////////////////////////////////////////// // SetDefaultChecker - sets default checker name // parameters: // string $new_checker - new default checker name // returns: // true when success // false when failed ($new_checker is not in the list of available checker names) public function SetDefaultChecker($new_checker){ if(array_key_exists($new_checker, $this->_aCheckers)){ $this->_sDefaultChecker = $new_checker; return true; }else{ return false; } } /////////////////////////////////////////////////////////////////////////// // EnableGroupChecking - sets checker available for group checking // parameters: // string $checker - checker name // returns: // true when success ($checker is included) // false when failed ($checker is not in the list of available checker names) public function EnableGroupChecking($checker){ if(array_key_exists($checker, $this->_aCheckers)){ $this->_aCheckers[$checker][1] = true; return true; }else{ return false; } } /////////////////////////////////////////////////////////////////////////// // DisableGroupChecking - sets checker not available for group checking // parameters: // string $checker - checker name // returns: // true when success ($checker is excluded) // false when failed ($checker is not in the list of available checker names) public function DisableGroupChecking($checker){ if(array_key_exists($checker, $this->_aCheckers)){ $this->_aCheckers[$checker][1] = false; return true; }else{ return false; } } // private methods /////////////////////////////////////////////////////////////////////////// // _CheckDNSAnswer - checks DNS-server answer for 127.0.0.* values // returns: // true when success // false when failed private function _CheckDNSAnswer($dns_answer){ if(!is_array($dns_answer)) return false; $len = count($dns_answer); if($len <= 0) return false; for($i=0; $i<$len; $i++){ $obj = $dns_answer[$i]; if(!(is_object($obj) || is_array($obj))) return false; $ip_str = $obj['ip']; if(!is_string($ip_str)) return false; $pos = strpos($ip_str, '127.0.0.'); if($pos !== false) return true; } return false; } } // end of class DNSBL ?> Samsung Galaxy S4, un ordenador de bolsillo

Samsung Galaxy S4, un ordenador de bolsillo

Samsung finalmente dio a conocer su último móvil en un evento de lanzamiento en el Radio City Music Hall de Nueva York en marzo, su nuevo y flamante GALAXY S4. Pero la pregunta que se hacen muchos usuarios de smartphones es, ¿merece la pena cambiar de terminal? Desde Indaltronia os vamos a dar unas pequeñas indicaciones para que vosotros mismos decidáis.

Galaxy S4

Diseño y Tamaño

El S4 es delgado, muy delgado para un teléfono de su potencia y ​​sólo 0,3 mm más grueso que el iPhone 5. Es muy ligero debido a su construcción en policarbonato y es sólo 1,1 mm más alto y 1,9 mm más ancho que el popular Samsung Galaxy Nexus, a pesar de que su pantalla es más grande.

Tiene una buena sensación en las manos sobre todo porque se trata del tamaño de la mayoría de los teléfonos en estos días y pesa más o menos lo normal (130grams). Los botones para encendido, volumen y el home se encuentran en lugares típicos como la mayoría de los teléfonos Samsung. 

Tecnología

La tecnología es sin duda la parte poderosa de este terminal. Han conseguido empaquetar una gran cantidad de nuevas prestaciones  en un solo dispositivo que cabe en la palma de la mano. El S4 tiene una pantalla Full HD a 1920×1080 con 441 píxeles por pulgada. La pantalla es una Super AMOLED LCD que goza de 16 millones de colores.

Junto con la increíble pantalla el S4 dispone de todo el hardware para ser considerado lo que sería un super ordenador hace apenas una década. Incorpora un quad core Snapdragon a 1,9 GHz y 2 GB de memoria RAM. No hay duda de que el S4 es como tener un ordenador en tu bolsillo todo el tiempo.

Cámaras

Con sus poderosos 13 MP, su cámara toma fotos impresionantes con poca saturación y poco ruido, pero va a sufrir un poco en condiciones de poca luz, que es común en la mayoría de las cámaras de los teléfonos. Incluso la cámara frontal tiene un sensor de 2MP que hace unos años hubiera sido lo normal para una cámara principal de un teléfono. Todas las características que esperas como flash y enfoque automático se encuentran en el S4 también. De hecho, casi, si no todo lo que se puede esperar en este aspecto, se encuentra en este dispositivo.

Pequeños detalles

El que tenga una cámara potente y un procesador bestial está muy bien, pero hay pequeños detalles de los que los fabricantes parece que se olvidan últimamente. Por ejemplo el hecho de poder extraer la batería y de poder incrementar el tamaño de la memoria interna hasta los 64 GB, cosas que están presentes en este fabuloso terminal. Los que posean un Xperia S saben de que estoy hablando.

Incorpora numeros sensores (Acelerómetro, Geomagnético, Giroscopio, Barómetro, Proximidad, Temperatura y humedad, Gestual) alguno de los cuales nunca había visto en un terminal, cómo por ejemplo el sensor de temperatura, aunque habrá que ver que tal funciona cuando el terminal adquiera un poco de temperatura debido a su uso.

Otro de los detalles que llama la atención es el llamado Eye-tracking. Esta novedosa función se usa para desplazar páginas web mediante el movimiento de los ojos o poner en pausa un vídeo si se mira a lo lejos, algo que a priori parece ser muy cómodo, siempre y cuando funcione como es debido.

Accesorios

Atrás quedaron las arcaicas carcasas que les colocábamos a los antiguos Nokia cómo único accesorio disponible. Hoy en día existe un amplio abanico de posibilidades para poder aprovechar al máximo las prestaciones de nuestro terminal. De esta manera, para el Galaxy S4 son numerosas las posibilidades de las que disponemos. 

Conclusiones

 El Samsung Galaxy S4 es un teléfono maravilloso y que incluso hace llamadas telefónicas. Pero, ¿realmente necesitamos un equipo de cuatro núcleos, con casi 2.0ghz, con 2 GB de RAM y una memoria 64 GB, con conectividad constante, una cámara de 13mp y eye-tracking metido en nuestros pequeños bolsillos? Y por qué no!! ¿Es el S4 demasiado teléfono? Eso es fácil. El Galaxy ya no es un teléfono,es un ordenador de bolsillo que está diseñado para complementar a sus necesidades diarias.

Leave a reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Connect with Facebook