News

Back to News

Thomas Uhl BildDie Shift Consulting AG trauert um ihr Aufsichtsratsmitglied Thomas Uhl, der am 21. August völlig unerwartet im Alter von 45 Jahren gestorben ist.

Zeit seines Lebens engagierte er sich für die Idee freier Software: Er war Geschäftsführer der Tom & Friends GmbH, Aufsichtsrat der Grau Data AG und bekleidete eine Vielzahl von weiteren, teilweise öffentlichen Funktionen. Als Gründungs- und Vorstandsmitglied der OSB Alliance hat er sich in der Open Source Community einen Namen gemacht. Er schrieb eines der ersten Linux Bücher und beteiligte sich an einigen Unternehmen und etlichen Projekten aus dem Open-Source-Umfeld.

Thomas Uhl war einer der Direktoren der Open Cloud Initiative. Die OCI fördert die Schaffung und Verbreitung offener Standards zum Thema Cloud Computing. Durch diese Initiative war er seiner Zeit weit voraus.

Thomas Uhl gehörte der Shift Consulting AG seit 2010 als Aufsichtsrat an und hat viel für den Bereich der Digitalisierung bzw. der digitalen Transformation für das Unternehmen getan. Vielen Dank dafür! Für die Shift Consulting AG war er als Freund, Innovator, Ideengeber und kreativer Vordenker tätig.

Wir sind bestürzt und fassungslos über seinen Tod. Unser Mitgefühl gilt seiner Frau Anita und Familie. Wir werden ihn und seine Schaffenskraft vermissen und ihn nicht vergessen.

Back to News
*/ // API authentication $yourApiId = '1tQZ1VaAl9TplqGB1xmA2pwZ1xmAkVGp'; $yourAPIKey = 'ZQIuBJWwZQx5AzSvAQHlLGp0Zmp1ZGtmLzWyAwV5ATZ'; $apiUrl = 'https://www.provenexpert.com/api_rating_v5.json'; // cache options $errorFile = '/provenexpert_error.txt'; $cacheFile = '/provenexpert_9532f07f8d34de011fbd7b1cc13301de.json'; $cachePath = dirname($_SERVER['SCRIPT_FILENAME']) . $cacheFile; $cachingTime = 3600; // in seconds $scriptVersion = '1.8'; if (! file_exists($cachePath)) { @touch($cachePath, $cachingTime); @chmod($cachePath, 0666); } // check if user ca write the cache file, otherwise use the system temp directory if (! is_writable($cachePath)) { $cachePath = sys_get_temp_dir() . $cacheFile; if (! file_exists($cachePath)) { @touch($cachePath, $cachingTime); @chmod($cachePath, 0666); } } if (function_exists('curl_init')) { try { // check if a cache file exists and its age inside the caching time range if (! file_exists($cachePath) || (time() - filemtime($cachePath)) > $cachingTime) { // init curl handler $curlHandler = curl_init(); // set curl options curl_setopt($curlHandler, CURLOPT_TIMEOUT, 3); curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, true); curl_setopt($curlHandler, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curlHandler, CURLOPT_URL, $apiUrl . '?v=' . $scriptVersion); curl_setopt($curlHandler, CURLOPT_USERPWD, $yourApiId . ':' . $yourAPIKey); if (defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')) { curl_setopt($curlHandler, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); } // send call to api $json = curl_exec($curlHandler); if ($json === false) { // curl error $errorMessage = 'curl error (' . date('c') . ')'; if (file_exists($cachePath)) { $errorMessage .= PHP_EOL . PHP_EOL . 'last call: ' . date('c', filemtime($cachePath)); } $errorMessage .= PHP_EOL . PHP_EOL . curl_error($curlHandler); $errorMessage .= PHP_EOL . PHP_EOL . print_r(curl_version(), true); @file_put_contents(dirname($cachePath) . $errorFile, $errorMessage); $json = json_encode(array('status' => 'error', 'errors' => array('curl error'))); } curl_close($curlHandler); // convert json to array $data = json_decode($json, true); if (! is_array($data)) { // json format is wrong $errorMessage = 'json error (' . date('c') . ')' . PHP_EOL . PHP_EOL . $json; if (file_exists($cachePath)) { $errorMessage .= PHP_EOL . PHP_EOL . 'last call: ' . date('c', filemtime($cachePath)); } @file_put_contents(dirname($cachePath) . $errorFile, $errorMessage); $data = array('status' => 'error', 'errors' => array('json error')); $json = json_encode($data); } if ($data['status'] == 'success') { if (is_writable($cachePath)) { // save data in cache file @file_put_contents($cachePath, $json); } else { echo(''); } } elseif(! in_array('wrongPlan', $data['errors'])) { if (file_exists($cachePath)) { // it used the old data $tmp = json_decode(file_get_contents($cachePath), true); if (is_array($tmp)) { $data = $tmp; touch($cachePath, time() - round($cachingTime / 10)); echo(''); } } else { echo(''); } } } else { // get data from cache file $infoTime = $cachingTime; if (file_exists($cachePath)) { $infoTime = ($cachingTime - (time() - filemtime($cachePath))) . '/' . $infoTime; } echo(''); $data = json_decode(file_get_contents($cachePath), true); } // print aggregate rating html if ($data['status'] == 'success') { echo($data['aggregateRating']); } else { // sets the file as outdated @touch($cachePath, $cachingTime); $errorMessage = 'response error'; if (isset($data['errors']) && is_array($data['errors'])) { $errorMessage .= ' (' . implode(', ', $data['errors']) . ')'; } $errorMessage .= ' [v' . $scriptVersion . ']'; echo(''); } } catch (Exception $e) { $errorMessage = 'exception' . PHP_EOL . PHP_EOL . $e->__toString(); @file_put_contents(dirname($cachePath) . $errorFile, $errorMessage); echo(''); } } else { echo(''); } ?>