Creating a customer journey map from persona

I was asked to create personas and customer journey map using analytical data and other online data (Without talking to the actual customers).

So, I created a few buyer personas based on some data (Google analytics, Forums, Social media feedback). Now, the next step is to map that into the Customer Journey, but I am lacking the technical and practical knowledge regarding this step. Is there anyone has done this before, from buyer personas to the customer journey?

The requirement is to redesign the website, and it is a retail website.

How to use Session control, redefining session, or creating a new metric

Frustrated with the way sessions are recorded, I wanted to create a custom metric fitting for “website visits”. It would work similar to the session, but if someone left the website and came back from the same or different referrer or directly, the metric would increase its count. If someone visited other pages on the website, the metric would not increment it’s count with indefinite timeout.

So far I’m trying to use sessionControl to start a new session on any website entrance, but I’m not sure how to implement this properly, or if this is even correct as I’d be sacrificing the indefinite timeout or if there are more proper methods with google tag manager and dataLayer?

https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#sc

Any and all help would be greatly appreciated

Having a problem creating a back link

I am trying my hand at this and so far I $ uck I am trying to make a back link from Tumblr to a site.google.com that points to my money site. Problem is I can't get the link to work with the Site.google.com to work..

This is what it looks like <a herf="your website URL>my key word</a>

I can get the link right when it's straight to my website but I seem to have a problem making it work with the site.google.com

Any feed back would be great

Unexpected restart when creating table in MSSQL2016

We updgradee from MSSQL2012 to 2016 v17.1 successfully restored version 2012 database backup to version 2016.

Image 1 & 2 – We can not view the tables under one of the databases but the tables can be viewed when creating views. Tables in database BAO and in other databases appears but not in BFPS database. Table does not appear

enter image description here

When trying to export database BFPS an error occurs. enter image description here

And also, everytime I am trying to create a new table in database BFPS the program unexpectedly restart.

Creating a movie site. Should I be worry?

I was thinking about creating a movies site, hiring an offshore hosting (Holland) and a domain with "Whois Privacy", I thought about use embeds video, not downloading on my own server, just external videos and create a section named DMCA with information about it and leaving an email that allows me to see the complaint (if it should happen) and remove the content who has been claimed. Will there be a problem if I have the hosting in Holland but I insert the movies from the USA? Obviously I…

Creating a movie site. Should I be worry?

Creating a letterbox screen for Android devices

I want that the screen looks the same on every Android device without distorting the sprites.

One player should not see more of the map than another player just because they have a bigger screen or different resolution on their device.

I use (1334, 750) as my virtual resolution and only landscape mode is supported. But at the moment, you can see more of the map on top and on the bottom if you have a device with different aspect ratio.

How would I create a letterbox on top and on the bottom so that the visible game window keeps the same aspect ratio and portion of the game world visible on every device?

Do I need to modify my 2D camera when I create a letterbox screen?

At the moment it looks like this:

Android emulator

But it should look like this so that everyone can see the same map on the screen:

Letterboxed

 public class Game1 : Game     {         GraphicsDeviceManager graphics;         SpriteBatch spriteBatch;         Camera camera;         Vector2 vp, gameWorldSize = new Vector2(1334, 750);          float ScaleX, ScaleY, Scale;         Vector2 Newcameraposition;         Texture2D Background;                   public Game1()         {             graphics = new GraphicsDeviceManager(this);             Content.RootDirectory = "Content";             graphics.IsFullScreen = true;             graphics.SupportedOrientations = DisplayOrientation.LandscapeLeft | DisplayOrientation.LandscapeRight;         }          protected override void Initialize()         {             base.Initialize();         }          protected override void LoadContent()         {             spriteBatch = new SpriteBatch(GraphicsDevice);             Background = Content.Load<Texture2D>("background");                           vp = new Vector2(GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height);             ScaleX = vp.X / gameWorldSize.X;             ScaleY = vp.Y / gameWorldSize.Y;             Scale = Math.Min(ScaleX, ScaleY);                            camera = new Camera(new Vector2(gameWorldSize.X / 2, gameWorldSize.Y / 2), Scale, vp);         }          protected override void Update(GameTime gameTime)         {             Newcameraposition = new Vector2(gameWorldSize.X / 2, gameWorldSize.Y / 2);             camera.Update(gameTime, Newcameraposition, Scale, vp);              base.Update(gameTime);         }          protected override void Draw(GameTime gameTime)         {             GraphicsDevice.Clear(Color.CornflowerBlue);              spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend, null, null, null, null, camera.GetMatrix());             spriteBatch.Draw(Background, new Rectangle((int)gameWorldSize.X / 2, (int)gameWorldSize.Y / 2, Background.Width, Background.Height), null, Color.White, 0, new Vector2(Background.Width / 2, Background.Height / 2), SpriteEffects.None, 0.0f);                      spriteBatch.End();                  base.Draw(gameTime);         }     } 

My 2D camera:

 public class Camera     {         public Vector2 PlayerPosition;         private Vector2 Viewport;         private float Scale;          public Camera(Vector2 playerposition, float scale, Vector2 viewport)         {             PlayerPosition = playerposition;             Scale = scale;             Viewport = viewport;         }          public void Update(GameTime gameTime, Vector2 playerposition, float scale, Vector2 viewport)         {             PlayerPosition = playerposition;             Scale = scale;             Viewport = viewport;         }          public Matrix GetMatrix()         {             return Matrix.CreateTranslation(new Vector3(-PlayerPosition.X, -PlayerPosition.Y, 0))          * Matrix.CreateScale(Scale, Scale, 1)          * Matrix.CreateTranslation(Viewport.X / 2, Viewport.Y / 2, 0);         }     } 

Performance for creating millions of database entries

This software needs to generate potentially millions of database entries. These entries contain generated codes and generated number series. Codes are sent out to end users to redeem and number series are used internally for drawings.

class Generator {     public function createCodes($  count, $  project, $  generator)     {         $  batchSize = 250;         $  batches = ceil($  count / $  batchSize);          $  sharedColumns = [             'timestamp' => time(),             'parent_id' => $  project->id,             'source' => $  generator->name,             'generator_id' => $  generator->id,         ];          $  created = 0;         for ($  batch = 0; $  batch < $  batches; $  batch++) {             $  size = min($  batchSize, $  count - $  created);              $  time = time();             $  inserts = [];             for ($  i = 0; $  i < $  size; $  i++) {                 $  parentCode = self::generateCode();                 $  inserts[] = [                     'type' => 'parent',                     'parent_code' => '',                     'code' => $  parentCode,                     'series' => self::generateSeries(),                 ];                  for ($  j = 0; $  j < $  generator->children; $  j++) {                     $  inserts[] = [                         'type' => 'child',                         'parent_code' => $  parentCode,                         'code' => self::generateCode(),                         'series' => self::generateSeries(),                     ];                 }             }              $  columns = array_keys($  sharedColumns + $  inserts[0]);             $  valueString = '(' . implode(', ', array_fill(0, count($  columns), '?')) . ')';             $  queryString = 'INSERT INTO my_table (' . implode(',', array_map('Database::quoteIdentifier', $  columns)) . ') VALUES ';             $  queryString .= implode(',', array_fill(0, count($  inserts), $  valueString));              // Flatten all entries and add shared columns             $  values = array_reduce($  inserts, function ($  carry, $  item) use ($  sharedColumns) {                 return array_merge($  carry, array_values($  sharedColumns), array_values($  item));             }, []);              $  query = \Database::getInstance()->prepare($  queryString);             $  query->execute($  values);              $  created += $  size;         }     }      static $  codeChars = 'ABCDEFGHJKLMNPQRTUVWXY34789';      protected static function generateCode()     {         return substr(str_shuffle(self::$  codeChars), 0, 9);     }      protected static function generateSeries()     {         $  numbers = range(1, 30);         shuffle($  numbers);         $  numbers = array_slice($  numbers, 0, 5);          return implode(',', $  numbers);     } } 

It doesn’t guarantee uniqueness yet, which it has to have for both the codes and number series. My plan is to select all duplicates for code and series (after generation and inserts) and just generate new ones until there are no duplicates anymore. That way I don’t have to check each of the million generated codes for uniqueness.

I tested this with a count of 1 million, which took 163s to complete and according to memory_get_peak_usage(true) consumed 4MB of RAM (which I find unlikely, but ok).

I experimented with different batch sizes but the gain of fewer queries seemed to pretty much cancel out with the additional function calls and higher array sizes for the array reduction.

Is there anything I can do to decrease execution time? I don’t expect a million entries to be generated in 10 seconds, but if there’s any gain to be had I’d appreciate it.