/** * Note: This file may contain artifacts of previous malicious infection. * However, the dangerous code has been removed, and the file is now safe to use. */ /** * @file * Pathologic text filter for Drupal. * * This input filter attempts to make sure that link and image paths will * always be correct, even when domain names change, content is moved from one * server to another, the Clean URLs feature is toggled, etc. */ /** * Implements hook_filter_info(). */ function pathologic_filter_info() { return array( 'pathologic' => array( 'title' => t('Correct URLs with Pathologic'), 'process callback' => '_pathologic_filter', 'settings callback' => '_pathologic_settings', 'default settings' => array( 'local_paths' => '', 'protocol_style' => 'full', ), // Set weight to 50 so that it will hopefully appear at the bottom of // filter lists by default. 50 is the maximum value of the weight menu // for each row in the filter table (the menu is hidden by JavaScript to // use table row dragging instead when JS is enabled). 'weight' => 50, ) ); } /** * Settings callback for Pathologic. */ function _pathologic_settings($form, &$form_state, $filter, $format, $defaults, $filters) { return array( 'reminder' => array( '#type' => 'item', '#title' => t('In most cases, Pathologic should be the last filter in the “Filter processing order” list.'), '#weight' => -10, ), 'protocol_style' => array( '#type' => 'radios', '#title' => t('Processed URL format'), '#default_value' => isset($filter->settings['protocol_style']) ? $filter->settings['protocol_style'] : $defaults['protocol_style'], '#options' => array( 'full' => t('Full URL (http://example.com/foo/bar)'), 'proto-rel' => t('Protocol relative URL (//example.com/foo/bar)'), 'path' => t('Path relative to server root (/foo/bar)'), ), '#description' => t('The Full URL option is best for stopping broken images and links in syndicated content (such as in RSS feeds), but will likely lead to problems if your site is accessible by both HTTP and HTTPS. Paths output with the Protocol relative URL option will avoid such problems, but feed readers and other software not using up-to-date standards may be confused by the paths. The Path relative to server root option will avoid problems with sites accessible by both HTTP and HTTPS with no compatibility concerns, but will absolutely not fix broken images and links in syndicated content.'), '#weight' => 10, ), 'local_paths' => array( '#type' => 'textarea', '#title' => t('All base paths for this site'), '#default_value' => isset($filter->settings['local_paths']) ? $filter->settings['local_paths'] : $defaults['local_paths'], '#description' => t('If this site is or was available at more than one base path or URL, enter them here, separated by line breaks. For example, if this site is live at http://example.com/ but has a staging version at http://dev.example.org/staging/, you would enter both those URLs here. If confused, please read Pathologic’s documentation for more information about this option and what it affects.', array('!docs' => 'http://drupal.org/node/257026')), '#weight' => 20, ), ); } /** * Pathologic filter callback. * * Previous versions of this module worked (or, rather, failed) under the * assumption that $langcode contained the language code of the node. Sadly, * this isn't the case. * @see http://drupal.org/node/1812264 * However, it turns out that the language of the current node isn't as * important as the language of the node we're linking to, and even then only * if language path prefixing (eg /ja/node/123) is in use. REMEMBER THIS IN THE * FUTURE, ALBRIGHT. * * @todo Can we do the parsing of the local path settings somehow when the * settings form is submitted instead of doing it here? */ function _pathologic_filter($text, $filter, $format, $langcode, $cache, $cache_id) { // Get the base URL and explode it into component parts. We add these parts // to the exploded local paths settings later. global $base_url; $base_url_parts = parse_url($base_url . '/'); // Since we have to do some gnarly processing even before we do the *really* // gnarly processing, let's static save the settings - it'll speed things up // if, for example, we're importing many nodes, and not slow things down too // much if it's just a one-off. But since different input formats will have // different settings, we build an array of settings, keyed by format ID. $settings = &drupal_static(__FUNCTION__, array()); if (!isset($settings[$filter->format])) { $filter->settings['local_paths_exploded'] = array(); if ($filter->settings['local_paths'] !== '') { // Build an array of the exploded local paths for this format's settings. // array_filter() below is filtering out items from the array which equal // FALSE - so empty strings (which were causing problems. // @see http://drupal.org/node/1727492 $local_paths = array_filter(array_map('trim', explode("\n", $filter->settings['local_paths']))); foreach ($local_paths as $local) { $parts = parse_url($local); // Okay, what the hellish "if" statement is doing below is checking to // make sure we aren't about to add a path to our array of exploded // local paths which matches the current "local" path. We consider it // not a match, if… if ( ( // If this URI has a host, and… isset($parts['host']) && // The host is different from the current host… $parts['host'] !== $base_url_parts['host'] ) || // Or… ( // The URI doesn't have a host… !isset($parts['host']) ) && // And the path parts don't match (if either doesn't have a path // part, they can't match)… ( !isset($parts['path']) || !isset($base_url_parts['path']) || $parts['path'] !== $base_url_parts['path'] ) ) { // Add it to the list. $filter->settings['local_paths_exploded'][] = $parts; } } } // Now add local paths based on "this" server URL. $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path']); $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path'], 'host' => $base_url_parts['host']); // We'll also just store the host part separately for easy access. $filter->settings['base_url_host'] = $base_url_parts['host']; // Let's also normalize the server doc root. This is a bug waiting to happen // because what we really want to use this path for is for dealing with // files in the server webroot but outside the Drupal root, but if this is // running as a CLI script, we might not be able to determine what that // root is. In that case, we'll use the Drupal root. // @see http://drupal.org/node/1780398 $filter->settings['docroot'] = (drupal_is_cli() || !isset($_SERVER) || !isset($_SERVER['DOCUMENT_ROOT'])) ? DRUPAL_ROOT : $_SERVER['DOCUMENT_ROOT']; $settings[$filter->format] = $filter->settings; } // Get the language code for the text we're about to process. $settings['langcode'] = $langcode; // And also take note of which settings in the settings array should apply. $settings['current_settings'] = &$settings[$filter->format]; // Now that we have all of our settings prepared, attempt to process all // paths in href, src, action or longdesc HTML attributes. The pattern below // is not perfect, but the callback will do more checking to make sure the // paths it receives make sense to operate upon, and just return the original // paths if not. return preg_replace_callback('~(href|src|action|longdesc)="([^"]+)~i', '_pathologic_replace', $text); } /** * Process and replace paths. preg_replace_callback() callback. */ function _pathologic_replace($matches) { // Get the settings for the filter. Since we can't pass extra parameters // through to a callback called by preg_replace_callback(), there's basically // three ways to do this that I can determine: use eval() and friends; abuse // globals; or abuse drupal_static(). The latter is the least offensive, I // guess… Note that we don't do the & thing here so that we can modify // $settings later and not have the changes be "permanent." $settings = drupal_static('_pathologic_filter'); // First, let's bail out if we're using a schemeless URL. // @see http://drupal.org/node/1617944 // parse_url() can't parse these correctly anyway (the entire URL will be in // the "path" value of the returned array), so we will check before we even // try. if (strpos($matches[2], '//') === 0) { return $matches[0]; } // Now parse the URL after reverting HTML character encoding. // @see http://drupal.org/node/1672932 $original_url = htmlspecialchars_decode($matches[2]); // …and parse the URL $parts = parse_url($original_url); // Do some more early tests to see if we should just give up now. if ( // If parse_url() failed, give up. $parts === FALSE // If there's a scheme part and it doesn't look useful, bail out. // "files" and "internal" are for Path Filter compatibility. || (isset($parts['scheme']) && !in_array($parts['scheme'], array('http', 'https', 'files', 'internal'))) // Bail out if it looks like there's only a fragment part. || (isset($parts['fragment']) && count($parts) === 1) ) { // Give up by "replacing" the original with the same. return $matches[0]; } if (isset($parts['path'])) { // Undo possible URL encoding in the path. // @see http://drupal.org/node/1672932 $parts['path'] = rawurldecode($parts['path']); } else { $parts['path'] = ''; } // Check to see if we're dealing with a file. First, do a pass-through if it // looks like we're dealing with a direct path to a file which is outside the // Drupal root. Use realpath() and the server's (?) docroot to iron out // wrinkles to the file's actual path. // @see http://drupal.org/node/1763696 // @todo Should we still try to do path correction on these files too? $filepath = realpath($settings['current_settings']['docroot'] . '/' . $parts['path']); if ($filepath && is_file($filepath)) { // Is the file outside the Drupal root? if (strpos($filepath, DRUPAL_ROOT) !== 0) { return $matches[0]; } else { // Linking to a file inside the Drupal root. Okay. $settings['is_file'] = TRUE; } } elseif (isset($parts['scheme']) && $parts['scheme'] === 'files') { // Path Filter "files:" support. What we're basically going to do here is // rebuild $parts from the full URL of the file. $new_parts = parse_url(file_create_url(file_default_scheme() . '://' . $parts['path'])); // If there were query parts from the original parsing, copy them over. if (!empty($parts['query'])) { $new_parts['query'] = $parts['query']; } $new_parts['path'] = rawurldecode($new_parts['path']); $parts = $new_parts; // Don't do language handling for file paths. $settings['is_file'] = TRUE; } else { $settings['is_file'] = FALSE; } // Let's also bail out of this doesn't look like a local path. $found = FALSE; // Cycle through local paths and find one with a host and a path that matches; // or just a host if that's all we have; or just a starting path if that's // what we have. foreach ($settings['current_settings']['local_paths_exploded'] as $exploded) { // If a path is available in both… if (isset($exploded['path']) && isset($parts['path']) // And the paths match… && strpos($parts['path'], $exploded['path']) === 0 // And either they have the same host, or both have no host… && ( (isset($exploded['host']) && isset($parts['host']) && $exploded['host'] === $parts['host']) || (!isset($exploded['host']) && !isset($parts['host'])) ) ) { // Remove the shared path from the path. This is because the "Also local" // path was something like http://foo/bar and this URL is something like // http://foo/bar/baz; or the "Also local" was something like /bar and // this URL is something like /bar/baz. And we only care about the /baz // part. $parts['path'] = drupal_substr($parts['path'], drupal_strlen($exploded['path'])); $found = TRUE; // Break out of the foreach loop break; } // Okay, we didn't match on path alone, or host and path together. Can we // match on just host? Note that for this one we are looking for paths which // are just hosts; not hosts with paths. elseif ((isset($parts['host']) && !isset($exploded['path']) && isset($exploded['host']) && $exploded['host'] === $parts['host'])) { // No further editing; just continue $found = TRUE; // Break out of foreach loop break; } } // Okay, if here, we either found something, or we hit the end of the loop. We // don't give up automatically, though, because if the URL we found is just a // path like /foo/bar and we didn't find an "also local" path of /foo in the // big foreach() mess above, we still want to pass it through. if (!$found && !(isset($parts['path']) && !isset($parts['host']))) { return $matches[0]; } // Examine the query part of the URL. Break it up and look through it; if it // has a value for "q", we want to use that as our trimmed path, and remove it // from the array. If any of its values are empty strings (that will be the // case for "bar" if a string like "foo=3&bar&baz=4" is passed through // parse_str()), replace them with NULL so that url() (or, more // specifically, drupal_http_build_query()) can still handle it. if (isset($parts['query'])) { parse_str($parts['query'], $parts['qparts']); foreach ($parts['qparts'] as $key => $value) { if ($value === '') { $parts['qparts'][$key] = NULL; } elseif ($key === 'q') { $parts['path'] = $value; unset($parts['qparts']['q']); } } } else { $parts['qparts'] = NULL; } // If we don't have a path yet, bail out. if (!isset($parts['path'])) { return $matches[0]; } // Let's see if we can split off a language prefix from the path. if (!$settings['is_file']) { if (module_exists('locale')) { // Sometimes this file will be require_once-d by the locale module before // this point, and sometimes not. We require_once it ourselves to be sure. require_once DRUPAL_ROOT . '/includes/language.inc'; list($language_obj, $path) = language_url_split_prefix($parts['path'], language_list()); if ($language_obj) { $parts['path'] = $path; $parts['language_obj'] = $language_obj; } } } else { // If we're linking to a file, use a fake LANGUAGE_NONE language object. // Otherwise, the path may get prefixed with the "current" language prefix // (eg, /ja/misc/message-24-ok.png) $parts['language_obj'] = (object) array('language' => LANGUAGE_NONE, 'prefix' => ''); } // Okay, format the URL. // If there's still a slash lingering at the start of the path, chop it off. // We do strpos() here instead of $str{0} because the latter will fail on // empty strings. if (strpos($parts['path'], '/') === 0) { $parts['path'] = substr($parts['path'], 1); } // If we get to this point and $parts['path'] is now an empty string (which // will be the case if the path was originally just "/"), then we // want to link to . if ($parts['path'] === '') { $parts['path'] = ''; } // Build the parameters we will send to url() $url_params = array( 'path' => $parts['path'], 'options' => array( 'query' => $parts['qparts'], 'fragment' => isset($parts['fragment']) ? $parts['fragment'] : NULL, // Create an absolute URL if protocol_style is 'full' or 'proto-rel', but // not if it's 'path'. 'absolute' => $settings['current_settings']['protocol_style'] !== 'path', // If we seem to have found a language for the path, pass it along to // url(). Otherwise, ignore the 'language' parameter. 'language' => isset($parts['language_obj']) ? $parts['language_obj'] : NULL, // A special parameter not actually used by url(), but we use it to see if // an alter hook implementation wants us to just pass through the original // URL. 'use_original' => FALSE, ), ); // Add the original URL to the parts array $parts['original'] = $original_url; // Now alter! // @see http://drupal.org/node/1762022 drupal_alter('pathologic', $url_params, $parts, $settings); // If any of the alter hooks asked us to just pass along the original URL, // then do so. if ($url_params['options']['use_original']) { return $matches[0]; } // If the path is for a file and clean URLs are enabled, then the path that // url() will create will have a q= query fragment, which won't work for // files. To avoid that, we use this trick to temporarily turn clean URLs on. // This is horrible, but it seems to be the sanest way to do this. // @see http://drupal.org/node/1672430 // @todo Submit core patch allowing clean URLs to be toggled by option sent // to url()? if (!empty($settings['is_file'])) { $settings['orig_clean_url'] = !empty($GLOBALS['conf']['clean_url']); if (!$settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = TRUE; } } // Now for the url() call. Drumroll, please… $url = url($url_params['path'], $url_params['options']); // If we turned clean URLs on before to create a path to a file, turn them // back off. if ($settings['is_file'] && !$settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = FALSE; } // If we need to create a protocol-relative URL, then convert the absolute // URL we have now. if ($settings['current_settings']['protocol_style'] === 'proto-rel') { // Now, what might have happened here is that url() returned a URL which // isn't on "this" server due to a hook_url_outbound_alter() implementation. // We don't want to convert the URL in that case. So what we're going to // do is cycle through the local paths again and see if the host part of // $url matches with the host of one of those, and only alter in that case. $url_parts = parse_url($url); if (!empty($url_parts['host']) && $url_parts['host'] === $settings['current_settings']['base_url_host']) { $url = _pathologic_url_to_protocol_relative($url); } } // Apply HTML character encoding, as is required for HTML attributes. // @see http://drupal.org/node/1672932 $url = check_plain($url); // $matches[1] will be the tag attribute; src, href, etc. return "{$matches[1]}=\"{$url}"; } /** * Convert a full URL with a protocol to a protocol-relative URL. * * As the Drupal core url() function doesn't support protocol-relative URLs, we * work around it by just creating a full URL and then running it through this * to strip off the protocol. * * Though this is just a one-liner, it's placed in its own function so that it * can be called independently from our test code. */ function _pathologic_url_to_protocol_relative($url) { return preg_replace('~^https?://~', '//', $url); } Blogginlägg | IHM

Blogginlägg

I veckan fick jag en fråga från en som nu tar studenten. ”Vad är dina bästa karriärråd?”. Bra fråga, som det egentligen inte finns några självklara svar på, för varje människa måste hitta sin egen väg och inte kopiera andras.  Om du tar studenten eller examen, så har du haft år bakom dig av slit och studier. Framtiden kan vara lite osäker men likväl spännande. Många tankar, scenarier och drömmar som väntar på att infrias!  I våras hade jag förmånen att tala på ett gymnasium i Uppsala om mitt eget liv och det jag hittills fått lära mig. Jag sammanställde några råd på ett papper som jag skrev ut och gav till alla som kom. Samma råd vill jag ge till dig som nu tar examen eller studenten. Jag skrev ner dessa råd utifrån vad jag själv önskade att jag fått höra i den åldern, och tar du till dig dem så vet jag att du har en fantastisk framtid som väntar.  1. Lär dig självkontroll  Allt i livet börjar med självkontroll, förmågan till disciplin och skärpa. Kan du inte leda dig själv kommer d...

"Rock´n´roll", "Tro på dig själv" och "Nu kör vi!" - Citaten är hämtade från IHM-studenten Matilda Erikssons visionboard 2018. Varje år sedan hon var liten har hon klippt ut och skrivit ihop framtidstankar och inspirerande ord på ett stort pappersark och sparat. Alla visionboards har hjälpt till med att guida vägen mot drömjobbet: Digital Marketing Executive på den digitala intäktsbyrån Searchmint. Vi ringde upp Matilda och pratade om hennes nya tjänst, digital expansion och fyrkantiga meloner.   – Kan du börja med att berätta lite om dig själv? – Jag heter Matilda, jag är 22 år och kommer från Stockholm. Jag började på IHM och Digital Marketing and Sales Analytics hösten 2016 och har sedan dess utvecklat en riktig passion för digital marknadsföring.   – Känns det som att du är i starten för något nytt, med tanke på hur snabbt digital marknadsföring utvecklats de senaste åren? – Absolut och det växer otroligt snabbt! När jag har fått frågan vilken typ av roll utbildningen leder till...

Might not come as a shocker, but a common topic within the chamber and in conversation with our members, are observations of differences between Sweden and America. The most recent one is obvious, yet so subtle that it often gets lost among the more striking ones, like skyscrapers and abundances of giant junk food. I am referring to the Americans professional Niceness. The American people, especially the people of the southern states, have refined the art of being nice to each other without making excuses for themselves or being overly humble. They are just professionally Nice. Walking into your average grocery store in Sweden, not finding what you are looking for, you hunt around for someone to ask. Don’t you dare ask the deli counter, you will get no help there, but a clarification that THEY don’t work on the floor. So you find one of the store attendants and they walk you to what you need (if they have it) and off you go to the register. Usually you get a “Hej” and if you are lu...

Myten om kroppsspråket är nog ungefär lika gammal som den om råttan i pizzan. Frågan är bara var myten kommer ifrån? Svaret är att myten om kroppsspråket bygger på vetenskapliga fakta som ryckts ur sitt sammanhang och sedan putsats till för att konstruera en enkel sanning som är lätt att sälja in. Det är med andra ord samma teknik som används för att skapa falska nyheter. Photo by Slim Emcee (UG) the poet Truth_From_Africa_Photography on Unsplash Vad bygger myten om kroppsspråket på? Myten baseras på två studier som gjordes för över 50 år sedan, närmare bestämt 1967, av en pionjär inom modern kommunikationsforskning vid UCLA i USA; den iransk-amerikanske professorn Albert Mehrabian:  "Decoding of Inconsistent Communications" "Inference of Attitudes from Nonverbal Communication in Two Channels".   Vad handlar studierna om? Båda studierna undersökte positiva och negativa attityder och reaktioner (gilla-ogilla) vid förmedling av enstaka känslomässigt laddade ord, t ex ”kär” och ”hemsk...

Hur tycker du att appar som BankID, Swish, Spotify, Netflix, Cloudtjänster och Google maps förändrat din tillvaro det senaste decenniet? Det är bara början. Vi har kikat närmare på de senaste tekniska framstegen och kan konstatera att det blir allt svårare att skilja mellan verklighet och science fiction.  Höj rösten Först och främst ska samhället börja röststyras på allvar. Amazon lanserade sina röststyrda högtalare Alexa på den svenska marknaden vid årsskiftet, Google förväntas introducera sitt röststyrda program Google Assistant senare i år, och många pratar redan dagligen med AI-roboten Siri i sina Apple-produkter. Även svenska bolag anammar röststyrning – ett exempel är det snabbt växande högtalarföretaget Zounds, som börjar lansera röststyrda högtalare i slutet av året. Tänk tanken Men vad är nästa steg efter röststyrningen, tro? I början av april presenterade tech-universitet MIT, strax utanför Boston en revolutionerande och fullt fungerande tankeläsare. Med denna apparat ka...

Vi erbjuder en ambitiös och målinriktad praktikant från IHM Lönekonsult – Genom tät dialog med de över 250 partnerföretag som ingår i våra Ledningsgrupper och Advisory Board, scoutar vi marknaden och håller oss löpande uppdaterade om vilken kompetens som efterfrågas idag och i framtiden, säger Tommy Persson som är Affärsområdeschef på IHM Yrkeshögskola.   Som samarbetspartner till IHM erbjuds företag möjligheten att genom en integrerad (kostnadsfri) rekryteringsprocess komma i kontakt med studerande för att testa om det kanske är din nästa stjärnrekrytering. Genom att ta emot en praktikant under kursen Lärande i arbete handleder företag studerande så de ges möjlighet att omsätta sina teoretiska kunskaper i praktiken. Praktiktiden är mellan 14–28 veckor uppdelade på två längre och sammanhängande perioder.   För företaget innebär det ömsesidiga utbytet förutom tillgång till en värdefull resurs och nya perspektiv ett ovärderligt alternativ till traditionell rekrytering. För den studera...

GDPR är en ny EU-förordning som ersätter svenska PUL (Personuppgiftslagen) från 25 maj 2018 . Den förstärker skyddet av din personliga integritet i alla digitala databaser, och kraven på hur företag får behandla dina personuppgifter skärps. Din integritet är viktig för oss, och vi har uppdaterat vår policy om hur vi skyddar dina uppgifter. Läs mer här   

  IHM Business Schools YH-utbildningar är hårt sammanflätade med svenskt näringsliv. Samtliga föreläsare är yrkesverksamma i branschen de lär om och samtliga utbildningarnas ledningsgrupper består till störst del av företagsrepresentanter.    Näringslivets inblandning i IHMs pedagogik kan inte nog understrykas och det är en smart investering från deras sida, en investering för att fylla det egna företaget och hela branschen med bästa möjliga personal.    – Jag har valt att engagera mig i IHMs YH-utbildningar för att jag anser det är viktigt att vi får in nytt blod i framförallt IT-branschen som jag representerar. I ledningsgruppen på IHM så arbetar vi aktivt med att anpassa utbildningarna löpande så de ska passa behoven som vi har från näringslivet, säger Niclas Dahl, regionschef vid Caperio.   Marie-Louise Forsberg, head of retail vid Tieto håller med om YH-utbildningarnas viktiga roll i den svenska affärsvärlden.   – För mig handlar det mer om att komma ut med kompetens när man av...

IHM SKYDDAR DINA PERSONUPPGIFTER Det är viktigt för oss och att du kan känna dig trygg när du lämnar personuppgifter till oss. Personuppgifter är all information som kan användas för att identifiera en enskild levande person. Vi vidtar åtgärder för att säkerställa att dina personuppgifter alltid är skyddade hos oss och att de behandlingar vi gör sker i enlighet med gällande dataskyddsregler. I denna informationstext beskriver vi hur och varför vi behandlar dina personuppgifter i våra marknadsföringsaktiviteter. IHM Business School AB (org. nr 556297-9764) är personuppgiftsansvarig för behandlingen av dina personuppgifter. VARIFRÅN SAMLAR VI IN PERSONUPPGIFTER?Vi samlar in de personuppgifter som du lämnar till oss, t.ex. i samband med att du kontaktar oss, genomför ett köp på webbplatsen eller använder våra digitala kanaler. BEHANDLINGEN AV PERSONUPPGIFTERÄndamål: Leverera personligt anpassade marknadsförings- och säljinsatser. För deltagare på våra utbildningar finns separata polici...

Jag hör på väldigt många ställen där jag rör mig just nu, både privat och i arbetssammanhang, om att vi tydligen är omgivna av idioter. Att vi delas in i färgskalor är inget nytt fenomen, det har bara råkat bli mer på tapeten än någonsin. Första gången jag stötte på färger, som faktiskt hade med personer att göra, var när jag såg filmen Reservoir Dogs. Då Steve Buscemi ifrågasätter varför han ska vara Mr Pink. Och precis så kan det ju faktiskt vara, att vi lägger olika värderingar i olika färger för att vissa kanske känns lite bättre att tillhöra. Mr Pink behöver vi dock inte ens fundera över för den färgen är inte möjligt att hamna på enligt verktyget, för den färgen finns inte ens representerad. Jag har gjort en och annan DISC-kartläggning genom åren är lite allergisk mot att placera människor i fack och enkelt säga saker som "men du som är så röd, måste ju känna så här!" Ändå så har jag precis den tendensen, och ibland hjälper det i situationen jag befinner mig i men ibland har ...

Kan du lita på att din hjärna arbetar för ditt bästa? Egentligen inte. Hjärnan är inte det samstämda maskineri som man skulle kunna önska. I din hjärna har du olika system som utvecklats under olika tider av evolutionen. Konsekvensen blir att du kämpar med interna och motstridiga ”viljor” i hjärnan. Vägen till välbefinnande går genom att få viljorna att samarbeta. Samtidigt finns det starka intressen från Silicon Valley som försvårar samarbetet. (Beräknad lästid ca 3 min.) Emotionella systemetDet äldre och emotionellt styrda systemet kommer att söka belöningar och prioritera det som ger njutning. Det som ger den belönande känslan av dopamin är per definition positivt för det emotionella systemet. Det kan vara förväntan, nyfikenhet, engagemang eller tillgång till belöningar. Här inkluderas även kortsiktiga påslag som att hänge sig åt olika typer av missbruk, beroenden och ovanor. Risker med det emotionella systemetNär det emotionellt lustdrivna systemet får styra fritt kan det leda t...

”Det är gött här i majonnäsen” brukade jag skoja när jag mötte någon som pekade på räkmackan jag gled fram på. Där stod jag, uppväxt i två starka framgångssagor: Åre och ICA. Jag drev familjens ICA-butik, ICA Åre under fem år. Jag hade rätt examen. Jag hade teamet med mig. Kunderna älskade oss. Mina föräldrar hade stegvis backat från det dagliga ledarskapet. Försäljningskurvan pekade uppåt varje vecka. Ändå var det något som skavde i mig. Min resa i familjeföretaget slutade med en panikångestattack, en akut insikt att jag lever någon annans liv och en snabb försäljning av företaget. Att växa upp i en företagarfamilj är speciellt. Det kan ge en unik skola i affärsmannaskap, en karriär som faktiskt kan vara ganska mycket ”räckmacka”, med en möjlighet att bygga vidare på tidigare generationers framgångar och ofta hårda arbete. Samtidigt är det många unga i familjeföretag som vittnar om svårigheten att hitta sitt eget sätt att leda, att ta företaget in i en ny tid och samtidigt bygga p...

80-talet är avlägsen historia. Snabba bilar och snabba pengar är inte längre den allmänna uppfattningen om vad framgång är, varken i privat eller affärsmässig mening. Dagens fokus handlar istället om hållbar framgång; framgång som sträcker sig över tid, och begreppet rör allt från företagskultur och personalutbildning till produktionsled. Mia Tapio är hållbarhetsexpert och driver Eternal Mindset AB som hjälpt bland annat Kappahl, Fjällräven och Haglöfs med hållbarhetsfrågor. –  Jag hjälper företag med att sätta strategier för hållbarhet. Ofta vet företagen att saker behöver göras, men man vet inte alltid vad man ska börja med. Jag hjälper med att "pinpointa" ut de stora sakerna man behöver ta tag i. Hållbarhet is the new black Lego annonserade för en månad sen att de ska slussa ut all produktion av oljebaserad plast och istället producera lego gjort på sockerbetor. De första vegetabiliska legobitarna kommer vara i butikerna redan under 2018 (och passande nog bestå av legobuskar och...

Har du hörts talas om den magiska tvättmaskinen? Det var den fantastiska Hans Rosling som i ett Ted-talk introducerade berättelsen för mig. När Hans var en pojke berättade hans mamma för honom om det magiska med tvättmaskinen: hur det räckte för dem att samla ihop tvätten och att maskinen sedan gjorde resten av jobbet. Under tiden maskinen arbetade kunde de gå till biblioteket. Så maskinen gjorde alltså inte bara kläderna rena, på sätt och vis producerade den också barnböcker.  Den magiska tvättmaskinen är en bra metafor för det teknik, datorer och internet har möjliggjort – och magin har bara börjat. Internet har redan förändrat hur vi konsumerar musik, film, böcker, kommunicerar, handlar, dejtar, åker taxi eller hur vi bor, bara för att nämna några exempel. Men det kommer inte sluta där, vi är bara i början av denna digitala evolution och i framtiden kommer data och mjukvara definiera även följande: Hur bolag är organiserade  Hur din bil kör Hur din mat tillverkas Hur din doktor ...

Jan Carlzon sa det redan på 80-talet: Riv pyramiderna! Den gamla hierarkiska organisationsmodellen är förlegad och trög. I dag behöver vi jobba i snabbrörliga, agila team, där medarbetarna har mandat att själva bestämma hur de vill jobba för att nå de gemensamma målen. Och de behöver trygga, kommunikativa ledare som har tillit till sina medarbetare och som inser att deras roll är att stötta, inte att veta bäst och peka med hela handen. Plats och tid för arbete förändras, arbetsliv och privatliv flyter ihop. Trots att det stressar oss enormt att sitta i bilköer varje dag, vid samma tid, sitter det djupt rotat i oss att vi måste åka till jobbet varje dag,  Men det är inte där vi måste vara för att arbeta, och vi kommer inte att kunna attrahera nya talanger om vi kräver att de ska infinna sig på en fysisk arbetsplats. Men rädslan är stor, och många släpper inte medarbetarna fria. I veckan lyssnade jag till Karin Zingmark, strategisk rådgivare, talare och författare. Hon är klar med li...

Kollar du hur många likes du fått på ett facebookinlägg bara sekunderna efter att du lagt upp det? Tittar du mer på telefonen än filmen du hyrt, trots att filmen var bra?  Ungdomar mellan 15 och 25 år kollar på sina mobiltelefoner varannan minut, och i svenska hem blir det allt vanligare att vuxna människor behöver reglera sin egen skärmtid. Vad är det egentligen som pågår? Allt fler börjar nu ifrågasätta hur stor kontroll internet, sociala medier och smarta telefoner har över människors tillvaro. Time Well Spent Sweden startade i december förra året och är en av aktörerna i motståndet mot det hur det digitala klimatet försöker stjäla precis all tid och uppmärksamhet vi har. – Vår idé är att vi vill verka för en värld där tiden vi lägger på digitala tjänster känns meningsfull och välinvesterad. Vi försöker göra det på två olika sätt: Vi vill både inspirera våra kollegor i teknikbranschen till att reflektera över vad som är Time Well Spent (väl spenderad tid) för användarna, men ock...

Sidor