Socket.io moet ik ook in gaan duiken voor mijn app, werkt dat een beetje?quote:Op vrijdag 10 februari 2012 12:50 schreef Bigs het volgende:
Een live updatende web applicatie met Websockets (en Redis voor pubsub). Super vet.. bij elke update in de datalaag wordt er een evenement gepubliceerd in Redis, waarna de javascript clients hun data bijwerken. Het is echt flitsend snel. Voor browsers zonder Websockets wordt gebruik gemaakt van een Flash ding of een long-polling XHR's (met dank aan Socket.io).
Nou technisch gezien gebruik ik Juggernaut, maar de client communicatie daarvan leunt zwaar op Socket.io. Ik moet zeggen het werkt als een trein.quote:Op vrijdag 10 februari 2012 13:00 schreef Scorpie het volgende:
[..]
Socket.io moet ik ook in gaan duiken voor mijn app, werkt dat een beetje?
Voor de geïnteresseerden; de eerste gepublishedquote:
Hmmm hoe heb ik deze post gemist. Wat ben je precies aan het doen?quote:Op donderdag 2 februari 2012 16:45 schreef webbyplus het volgende:
Hoewel niet helemaal volgens de Terms of Use, ben ik momenteel bezig met een tooltje die uit het spel World of Warcraft values uitleest/presenteert. Dat doe ik met Delphi(Pascal).
Niet iets heel bijzonders. Ben bezig met een simpele radar-lezer. Op mijn form toon ik een radar waarop alle NPC's, MOBs, etcetera af te lezen zijn.quote:Op maandag 2 april 2012 12:15 schreef WyriHaximus het volgende:
[..]
Hmmm hoe heb ik deze post gemist. Wat ben je precies aan het doen?
Ah dat is idd behoorlijk tegen de ToS/ToU/EULAquote:Op donderdag 5 april 2012 17:01 schreef webbyplus het volgende:
[..]
Niet iets heel bijzonders. Ben bezig met een simpele radar-lezer. Op mijn form toon ik een radar waarop alle NPC's, MOBs, etcetera af te lezen zijn.
Daarbij heb ik een lijstje gemaakt waaraan namen toegevoegd kunnen worden. Als een van de NPC’s/MOBS de betreffende naam heeft, gaat er een alarmpje af.
Ook heb ik een AFK-timer ingebouwd waardoor de character niet uitlogd.
Kortom; handig als je op zoek bent naar rare creatures als “Time-Lost Proto Drake” of “Aeonaxx”. Je krijgt dus simpelweg een signaaltje als ie voorbij komt. Je kunt dan je PC aan laten staan, het tooltje doet de rest en waarschuwt je op tijd.
Zoals eerder gezegd; wel tegen de ToU, maar goed, wat niet weet wat niet deert…
Heb veel info kunnen vinden op http://www.ownedcore.com/(...)/wow-memory-editing/
Daar worden telkens de laatste memory offsets gepost
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | <?php session_start(); define("_THEPIRATEBAY_", "thepiratebay.se"); class BayProxy { private $content_headers = array ( "jpg" => "image/jpg", "png" => "image/png", "gif" => "image/gif", "css" => "text/css", "xml" => "application/opensearchdescription+xml", "js" => "text/javascript", "torrent" => "application/x-bittorrent" ); private $fqdn; function __construct() { } function run() { if (isset ($_GET["p"])) { if (!$this->isFile($_GET["p"])) { $this->fqdn = $this->getFQDN($_GET["p"]); $_SESSION["fqdn"] = $this->fqdn; print ("<html>" . $this->getParsedHTML($this->getData($_GET["p"])) . "</html>"); } else { $this->getFile($_GET["p"]); } } else { if (isset ($_GET["q"]) && isset ($_SESSION["fqdn"])) { $parsed_url = parse_url($_GET["q"]); $this->fqdn = !array_key_exists("host", $parsed_url) ? $_SESSION["fqdn"] : $parsed_url["host"]; print ("<html>" . $this->getParsedHTML($this->getData($this->fqdn . "/search/" . $_GET["q"])) . "</html>"); } else { header("Location: " . $_SERVER["PHP_SELF"] . "?p=" . _THEPIRATEBAY_); } } } private function getScheme($url) { $parsed = parse_url($url); if (!array_key_exists("scheme", $parsed)) { return "http://"; } else { return ""; } } private function getFile($url) { preg_match("/\.(" . $this->getExtensions() . ")$/i", $url, $matches); if (count($matches) >= 1) { $fp = fopen($this->getScheme($url) . $url, "rb"); header("Content-Type: " . $this->content_headers[$matches[1]]); fpassthru($fp); exit; } } private function isHost($host) { return count(explode(".", $host)) > 1 && !preg_match("/php|html|htm|asp|aspx/i", $host); } private function getParsedHTMLCallback($matches) { $match = $matches[3]; do { $match = trim($match, "/"); } while (preg_match("/^\/\/$/i", $match)); $host = $this->getHost($match); if ($this->isHost($host)) { if (preg_match("/" . $this->getHost($this->fqdn) . "/i", $host)) { return $matches[1] . '="' . $_SERVER["PHP_SELF"] . '?p=' . $match . '"'; } else { return $matches[1] . '="' . $match . '"'; } } else { return $matches[1] . '="' . $_SERVER["PHP_SELF"] . '?p=' . $this->fqdn . '/' . $match . '"'; } } private function getParsedHTML($data) { return preg_replace_callback('/(href|src|action)=("|\')((http:\/\/|https:\/\/)?([a-z0-9\.-]+)?(:[0-9]+)?[a-z0-9\._\/\-\?\=%&\(\)\[\]\+\!]+)("|\')/i', array ( $this, "getParsedHTMLCallback" ), $data); } private function getData($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, "Opera/9.23 (Windows NT 5.1; U; en)"); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); $data = curl_exec($ch); curl_close($ch); return $data; } private function getFQDN($url) { preg_match("/^(http:\/\/|https:\/\/)?([a-z0-9\._-]+(:[0-9]+)?)\/?/i", $url, $matches); if (count($matches) >= 2) { return $matches[2]; } die("Whoops, something went wrong. Please try again."); } private function getHost($url) { $host = ""; preg_match("/^(http:\/|https:\/)?(\/+)?([a-z0-9\.-]+)?(:[0-9]+)?\/?/i", $url, $matches); if (count($matches) >= 3) { $host = $matches[3]; if (count(explode(".", $host)) > 2) { preg_match("/([a-z0-9-]+)\.([a-z]{2,}|\.[a-z]{2,}\.[a-z]{2,})$/i", $host, $matches); if (count($matches) >= 1) { $host = $matches[0]; } } else { $host = $matches[3]; } } return $host; } private function getExtensionsCallback($value) { return $value . "|"; } private function getExtensions() { return trim(implode(array_map(array ( $this, "getExtensionsCallback" ), array_keys($this->content_headers))), "|"); } private function isFile($url) { return preg_match("/^(http:\/\/|https:\/\/)?[a-z0-9\.-]+(:[0-9]+)?[a-z0-9\._\/\-\?\=%&\(\)\[\]\+\!]+\.(" . $this->getExtensions() . ")$/i", $url); } } ?> <?php $proxy = new BayProxy(); $proxy->run(); ?> |
|
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |