Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Tuesday, 28 January 2020

Frontify raises $22.3M to help businesses manage how their brands and logos get used

The rise of design tools like Canva and the vast expanse of digital spaces where a company’s name can appear these days have created a challenge for organisations: how best to make sure that what gets used is up to date and in keeping with how you want it to be used.

Today a “brand management” startup is announcing some funding to continue building out a business that it hopes will help them. Frontify, a startup originally founded in Switzerland and now co-headquartered in New York, has raised $22.3 million in funding to continue its international expansion and to continue developing technology for its SaaS platform, which lets organisations create image repositories and brand management guidelines, and helps them manage any kind of brand-related project work.

The funding — at an undisclosed valuation — is being led by EQT Ventures, with participation also from previous investors Blossom Capital, Datartis Ventures and Thomas Dübendorfer, Tenderloin Ventures, and Myke Näf. The company had previously raised $8.3 million in 2018. Frontify has been around since 2013, but this round comes on the heels of some strong growth: the company now has more than 2,500 customers, with notable “brands” including Facebook, Dyson, Centrica, Lufthansa, Vodafone, and Allianz.

“With a rapidly growing worldwide customer base, we continue to see validation in our platform and the niche we’ve established in the market,” said Roger Dudler, the founder and CEO, in a statement. “Increasing our footprint across Europe, cracking the code to the US market, continuing to innovate on our product and shaping brand on an even deeper level than before; these are the kind of initiatives we forecast championing together.”

The company’s evolution speaks to the opportunity in the market: it started out by providing a repository to customers, a way for them to organise and update brand assets in an easy way and then integrate that into their websites. That in itself was useful since the kind of ordering and managing needed for that was not necessarily what those businesses would have already had in place and would have needed more dedicated time for product to build from the ground up, and that led to a number of outdated assets in circulation.

“I experienced firsthand the increasing number of tools emerging in the marketing and product development space, but for some reason, the coordination of brand assets remained a real challenge,” said Ted Persson, operating partner and investment advisor at EQT Ventures, in a statement. “ People would still insist on sending around outdated PDFs, Illustrator files, and fonts. The Frontify team has built a delightful product, enabling everyone to access the most up-to-date brand assets as and when they need to, and the company already has a stellar customer base.”

Over time, that expanded as the use of logos and other design assets across a wider array of use cases have led to a subsequent expansion in Frontify’s target users from designers to brand, marketing, design, developer, and communications professionals. And now the company is moving deeper into the next stage of how brand assets get used by providing tools to help with projects using said assets.

Its place in the market is still relatively ahead of its time, it seems.

“We mainly face players from the fragmented DAM market, which we think is not a very outcome driven category yet, because it’s mainly a storage for assets,” said Dudler in an interview. “We think of a new, more holistic category called brand management. While companies start to invest more and more into their brand, starting with a purpose, they are looking for sophisticated tools that fit perfectly into their existing ecosystems, which will eventually enable anyone at a company to create branded content easily. This element of trust people want for their brands has become very complex with the large number of touchpoints. We see kind of consolidation in the market going on, combined with the strong demand from all industries, we see the need of brand management solutions rising massively.”

For now, the company does offer some integrations — currently with Figma, Sketch & Adobe XD — but it doesn’t see an expanding list of these as part of its growth strategy. “We think design tools might change rather quickly [while] the single source of truth for all brand resources will stay,” Dudler added. “That’s why we bridge that gap by integrating with as many existing tools as possible.” He notes that the new templating features that the company has added to expand beyond basic digital asset management “bring Canva-like functionality to brands with a much more targeted offering for complex enterprise needs.”

One thing Frontify is not doing yet, but I suspect would be an interesting product, would be to create a way to track whee and when those brand assets are getting used, and conversely to figure out when outdated logos and other assets are appearing. Given the millions that businesses and other organisations spend on the efforts to create the designs and logos in the first place, tracking to make sure they actually get used, and used the right way, seems a logical step.



from TechCrunch https://ift.tt/315ejZs
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support