Stroring field name instead of referencing using objectId

This is my first question here

For example: I have a post document which contains list of people who like it and my question is Should i store each person in the array using objectId or username(it’s also a unique identifier) the reason i ask is that when we view a likes of a particular post i want to show only their username and profile pic in this case I think storing username will be much faster than query each objectId and fetch their username, but after all i still need to fetch their profile pic using either one of them.

Guide me if i’m wrong or misunderstood sth.

you can send me if you have any blogs related to this.

Show full post instead of excerpt

I am using a plugin which shows posts from specific category in a widget.

It has an option to show excerpt and the below code is used for that:

<?php echo $  post['excerpt'] ?> 

But I want to show full posts instead of excerpt.

I tried the_post, the_content instead of excerpt in the above code but none working.

Can you please let me know what I am doing wrong?

Google showing static title instead of dynamically set javascript title

Basically, lets say I have set my title using HTML to "Something – Example", and with Javascript I change the title to "Apple – Example". When I google my website (after waiting for it to update) or the link gets embedded on things such as twitter or discord, it shows the static "Something – Example" title instead of the new title.

How to tell Google to pick the first page instead of 2nd or 3rd page of the listing?

I have a classified website and it has a great traffic. When I google for a specific term that is related to my site I saw that my site appears in search results but google is picking the 5th page of the related category.

eg : https://test.lk/search/all/category1/sub-category1/?page=5

But I want google to pick the first page of my category. Because the first page is the page where the latest listing can be seen.

How to achieve that?

Interpolating vertex colors with trilinear coordinates instead of barycentric

In 3D graphics, vertex attributes like vertex normals, texture coordinates, and vertex colors are interpolated over the surface of triangles using barycentric coordinates. In actual fact it’s more complex than this and there’s a rabbit hole of perspective correct adjustment and all sorts, but indulge me for a moment. Here’s what this looks like for vertex colors, and Mathematica handles everything about the interpolation behind the scenes:

vtxs = {{0, 0}, {0, 1}, {1, 0}}; cols = {Red, Green, Blue}; tri = Polygon[vtxs, VertexColors -> cols]; pt = {1, 1/2}/2; Graphics[{tri,   {Yellow, PointSize[Large], Point[pt], Line[{pt, #}] & /@ vtxs},   MapThread[    Text[Style[#1, FontWeight -> Bold, FontSize -> 24], #2] &,      {{"R", "G", "B"}, vtxs}],   Style[{Text["u", {.3, .1}], Text["v", {.2, .65}],      Text["1-u-v", {.7, .1}],      Text[TraditionalForm[p], pt + {1, 1}*0.04]}, White, FontSize -> 24]   }] 

barycentric vertex colors

The color at $ p$ is a weighted combination $ p_c=Rw + Gv + Bu$ where $ (u,v,w=1-u-v)$ are the relative areas of the subtriangles such that $ u+v+w=1$ .

I want to find a reasonably efficient way to interpolate the colors for any triangle without using barycentric coordinates, but using trilinear coordinates instead, and see what images this creates.

That is, we drop a perpendicular to the nearest edge and get a point on that edge, possibly indexing into the $ RG,GB,RB$ gradients along the edges, and then weighting the combination of these colors by the trilinear distances or areas of the three regions – whatever is more appropriate as it’s all experimental. Any other suggestions for how to interpolate vertex colors using trilinears is welcome.

trilinear interpolation

This is my code so far. The next step is to interpolate the corner colors over a pixel grid and make an image, instead of a Graphics with a single point:

SeedRandom[123456789]; poly = RandomPolygon[3]; shell = RegionUnion[MeshPrimitives[poly, 1]]; nfs = RegionNearest /@ MeshPrimitives[poly, 1]; rds = RegionDistance /@ MeshPrimitives[poly, 1]; centroid = Mean[First[poly /. Polygon -> List]]; Manipulate[  Graphics[{FaceForm[None], EdgeForm[Thick], poly, Orange,     Line[{p, #[p]}] & /@ nfs, Point[centroid]}], {{p, centroid},    Locator}] 

trilinears

Plugin to manage user permissions that saves settings to file instead of database [closed]

I want to manage user roles and permissions/capabilities through a plugin. Most plugins save their settings to the database. Since we’re running multiple environments with seperate databases, saving to the database is inconvenient. After every deploy we’d have to update the settings on the other environment.

What I’m looking for is a plugin which persists its settings to a file, much like ACF does with the acf-json folder. This way I don’t have to remember to update the settings after every deploy. Is there any plugin which does this?

I’m aware there are plugins with manual backup/restore functionality. While this does alleviate the problem, it’s not the solution I’m looking for

Need help improving my Flow Field and Unit Avoidance code so that the units can properly surround a unit instead of getting stuck

My setup is like this. Every update my movement system moves all of the units on the field. They use some Boid logic to avoid eachother, and a flow field that directs them towards each other. This is the result. https://imgur.com/a/CaUpfT7

My general setup is to calculate 2 flow fields, one for each player. From every field on the map (32×32 fields) I calculate the vector that points towards the closest enemy. Now this is a fine approach but I’d like to somehow take into consideration obstacles somehow (without another round of for loops)? Or should I handle that in my movement system avoidance? I was maybe thinking of doing A* once a unit is close enough to the enemy but all of these systems together seem rather hacky and overkill.

There are no obstacles currently, maybe a spell will generate it in the future. For now there are only units on the battleground without terrain or obstacles (besides units fighting eachother)

Here is some code. Firstly how I create the flowfields (kinda costly, will look into a way to optimize it further, don’t really need every single tile, can probably merge 2 or 3 together)

func (g *Grid) Update() {     g.entityPositions[0] = g.entityPositions[0][:0]     g.entityPositions[1] = g.entityPositions[1][:0]     entities := g.world.GetEntityManager().GetEntities()     posComps := g.world.GetObjectPool().Components["PositionComponent"]      for _, ent := range entities {         g.entityPositions[ent.PlayerTag] = append(g.entityPositions[ent.PlayerTag], posComps[ent.Index].(components.PositionComponent).Position)     }      for x := 0; x <= g.MaxWidth/FlowTileSize; x++ {         for y := 0; y <= g.MaxHeight/FlowTileSize; y++ {              curPosVector := engine.Vector{X: float32(x * 32), Y: float32(y * 32)}             // find closest tile to this one for both players             minDist := float32(100000.0)             minIndx := -1             for indx, pos := range g.entityPositions[0] {                 d := engine.GetDistanceIncludingDiagonal(pos, curPosVector)                 if d < minDist {                     minIndx = indx                     minDist = d                 }             }              //  fmt.Printf("CurPos : %v, enemyPos : %v,  direction %v \n", curPosVector, g.entityPositions[0][minIndx], g.entityPositions[0][minIndx].Subtract(curPosVector).Normalize())             g.flowTiles[1][x][y].Direction = g.entityPositions[0][minIndx].Subtract(curPosVector).Normalize()              minDist1 := float32(100000.0)             minIndx1 := -1             for indx, pos := range g.entityPositions[1] {                 d := engine.GetDistanceIncludingDiagonal(pos, curPosVector)                 if d < minDist1 {                     minIndx1 = indx                     minDist1 = d                 }             }              g.flowTiles[0][x][y].Direction = g.entityPositions[1][minIndx1].Subtract(curPosVector).Normalize()         }     } }  

And my movement code. A lot of code but just basic allignnment cohesion/ separation. With added 2 look ahead vectors to steer away from the collision.

        desiredDirection := world.Grid.GetDesiredDirectionAt(positionComp.Position, tag)         direction := movementComp.Direction         maxSpeed = movementComp.MovementSpeed          //Avoidance         nearbyEntities := helper.GetNearbyEntities(100, world, index)          avoidance := engine.Zero()         avoidance = avoidance.Add(alignment(world, nearbyEntities, direction).MultiplyScalar(alignmentCoef))         avoidance = avoidance.Add(cohesion(world, nearbyEntities, direction, positionComp.Position).MultiplyScalar(cohesionCoef))         avoidance = avoidance.Add(separation(world, nearbyEntities, direction, positionComp.Position).MultiplyScalar(separationCoef))           //Checking ahead of us whether or not we'll encounter something         lookAheadVectorLong := direction.Add(desiredDirection).MultiplyScalar(maxSpeed * 2.5)         lookAheadVectorShort := direction.Add(desiredDirection).MultiplyScalar(maxSpeed)         maxAvoidanceForce := float32(1.0)          checkPosShort := positionComp.Position.Add(lookAheadVectorShort)         checkPosLong := positionComp.Position.Add(lookAheadVectorLong)          collidedIndexShort := world.Grid.IsPositionFree(index, checkPosShort, positionComp.BoundingBox)         collidedIndexLong := world.Grid.IsPositionFree(index, checkPosLong, positionComp.BoundingBox)          if collidedIndexShort != -1 {             direction = engine.Zero()             avoidance = checkPosShort.Subtract(world.ObjectPool.Components["PositionComponent"][collidedIndexShort].(components.PositionComponent).Position).Normalize()             avoidance = avoidance.MultiplyScalar(maxAvoidanceForce * 1.5)         } else if collidedIndexLong != -1 {             direction = direction.MultiplyScalar(breakingForce)             avoidance = checkPosShort.Subtract(world.ObjectPool.Components["PositionComponent"][collidedIndexLong].(components.PositionComponent).Position).Normalize()             avoidance = avoidance.MultiplyScalar(maxAvoidanceForce * 1.2)         }          direction = desiredDirection         direction = direction.Add(avoidance).Normalize()          positionComp.Position = positionComp.Position.Add(direction.MultiplyScalar(maxSpeed))          positionComp.Position.X = engine.Constraint(positionComp.Position.X, 0, 799)         positionComp.Position.Y = engine.Constraint(positionComp.Position.Y, 0, 511)          movementComp.Direction = direction.Normalize()          world.ObjectPool.Components["PositionComponent"][index] = positionComp         world.ObjectPool.Components["MovementComponent"][index] = movementComp          fmt.Printf("I %d am at %v\n", index, positionComp.Position)     }  }  func limit(p engine.Vector, lim float32) engine.Vector {     if p.X > lim {         p.X = lim     } else if p.X < -lim {         p.X = -lim     }     if p.Y > lim {         p.Y = lim     } else if p.Y < -lim {         p.Y = -lim     }     return p } func alignment(world *game.World, siblings []int, velocity engine.Vector) engine.Vector {     avg := engine.Vector{X: 0, Y: 0}     total := float32(0.0)      for _, siblingIndex := range siblings {         avg = avg.Add(world.ObjectPool.Components["MovementComponent"][siblingIndex].(components.MovementComponent).Direction)         total++     }     if total > 0 {         avg = avg.DivideScalar(total)         avg = avg.Normalize().MultiplyScalar(maxSpeed)         avg = avg.Subtract(velocity)         avg = limit(avg, maxForce)         return avg     }     return engine.Vector{X: 0.0, Y: 0.0}  }  func cohesion(world *game.World, siblings []int, velocity engine.Vector, position engine.Vector) engine.Vector {     avg := engine.Vector{X: 0, Y: 0}     total := float32(0)      for _, siblingindex := range siblings {          avg = avg.Add(world.ObjectPool.Components["PositionComponent"][siblingIndex].(components.PositionComponent).Position)         total++      }     if total > 0 {         avg = avg.MultiplyScalar(1.0 / total * cohesionCoef)         avg = avg.Subtract(position)         avg = avg.Normalize().MultiplyScalar(maxSpeed)         avg = avg.Subtract(velocity)         avg = limit(avg, maxForce)         return avg     }     return engine.Vector{X: 0.0, Y: 0.0} }  func separation(world *game.World, siblings []int, velocity engine.Vector, position engine.Vector) engine.Vector {     avg := engine.Vector{X: 0, Y: 0}     total := float32(0)      for _, siblingIndex := range siblings {         siblingPos := world.ObjectPool.Components["PositionComponent"][siblingIndex].(components.PositionComponent).Position         d := position.Distance(siblingPos)         if d < desiredSeperation {             diff := position.Subtract(siblingPos)             diff = diff.Normalize()             diff = diff.DivideScalar(d)             avg = avg.Add(diff)             total++         }     }     if total > 0 {         avg.DivideScalar(total)     }      if total > 0 {         avg = avg.MultiplyScalar(1.0 / total * separationCoef)         avg = avg.Normalize().MultiplyScalar(maxSpeed)         avg = avg.Subtract(velocity)         avg = limit(avg, maxForce)     }     return avg } 

What I am trying to achieve is:

Units not mashing into each other and just positioning themselves in a free spot around their target.

What are my problems :

  1. Make the flow field direct them away from collision rather than just towards closest unit.
  2. Make it work with the current system without adding too many nested loops and awful checks.
  3. I am doing the avoidance correctly? I have a desired direction that I get from the flow field (that directs me towards closest enemy), then I add avoidance to it to avoid any other units in the area.

My units move really well up untill the point of collision/ going to a spot next to a target. I am not sure how to implemenent that behaviour yet.

(This is my forth iteration of the movement system. I went from pure boid, to grid based, to A*, to this. So I tried a lot of variations and this going surrounding behaviour has been bugging me every time.)

Custom engine (server) written in Golang and then dispatched to Godot for the visuals. Performance is not my concern, but this is a server, so I am more mindful of that, I could probably brute force it but I’d rather hear some better take on it.

Any suggestion/article/ video is greatly appreciated !!

Edit: Thinking about it, flow field is currently useless. I can basically just have a vector pointing to the closest enemy for each unit… Would be less costly as well. But the problem of them clumping and not knowing how to surround still stands.

Table scan instead of index seeks happening when where clause filters across multiple tables in join using OR

We have an application generated query using a view that has two tables joined on a LEFT OUTER join. When filtering by fields from just one table (either table) an index seek happens and it’s reasonably fast. When the where clause includes conditions for fields from both tables using an OR the query plan switches to a table scan and doesn’t utilize any of the indexes.

All four fields that are being filtered on are indexed on their respective tables.

Fast query plan where I filter on 3 fields from one table: https://www.brentozar.com/pastetheplan/?id=Hym_4PRSO

Slow query plan where I filter on four fields…three from one table and one from another table: https://www.brentozar.com/pastetheplan/?id=r1dVNDRHO

Ideally I would like to understand why this is happening and how to nudge the query engine to utilize all the indexes.

GraphicsGrid $\to$ Beep “The shared stylesheet “Stylesheet-review-topics.nb” could not be \ found. The default stylesheet will be used instead.”

12.0.0 for Microsoft Windows (64-bit) (April 6, 2019)

I have a notebook in which using GraphicsGrid causes a beep "The shared stylesheet "Stylesheet-review-topics.nb" could not be found. The default stylesheet will be used instead."

I copied the entire content of the notebook to a new one, set the style sheet to the one shown, and saved over the original notebook. Same thing happens. I created a new notebook and set the style sheet to the one shown, and it does not beep. My notebooks are fairly large, and I really don’t want to spend a lot of time untangling what amounts to a nuisance. I also doing like being annoyed.

This kind of think happens from time to time, and I’m never sure why. Any ideas?