ace

joined 2 years ago
[–] ace@lemmy.ananace.dev 6 points 3 months ago

Thank you so much, especially for the private instance improvement.

It's sad when it's revealing that ~80% of all traffic to my home instance is garbage.

[–] ace@lemmy.ananace.dev 3 points 3 months ago

Default block for incoming traffic is always a good starting point.
I'm personally using crowdsec to good results, but still need to add some more to it as I keep seeing failed attacks that should be blocked much quicker.

[–] ace@lemmy.ananace.dev 3 points 4 months ago* (last edited 4 months ago)

10-20% of year-over-year revenue is the going rate.

[–] ace@lemmy.ananace.dev 9 points 4 months ago (4 children)

Honestly, the two reasons I've been sticking with Plex is the federated/shared libraries and watch together.

If they're starting to axe those then I see no reason to continue using it.

[–] ace@lemmy.ananace.dev 2 points 5 months ago (3 children)

Done both, but I've found I rather enjoy the mix of stick and trackpad, emulated as KB+M

[–] ace@lemmy.ananace.dev 10 points 5 months ago

Calling it a "Lemmy/Mastodon bridge" sounds off, it's like saying "Gmail/Outlook bridge" when discussing the sending of emails between the two.

I'd use the word "interoperability" instead, or maybe "interaction" for something slightly less technical.

[–] ace@lemmy.ananace.dev 13 points 5 months ago (5 children)

I might be slightly biased, but I can also recommend OpenMW for Deck.

[–] ace@lemmy.ananace.dev 2 points 5 months ago

Been enjoying Aloft, a pretty cozy exploration/survival game about restoring the environment of various floating islands.

Also started working my way through Disco Elysium.

[–] ace@lemmy.ananace.dev 43 points 7 months ago (3 children)

Eurofighter Typhoon

[–] ace@lemmy.ananace.dev 61 points 7 months ago (3 children)

Eurofighter Typhoon

[–] ace@lemmy.ananace.dev 35 points 7 months ago (3 children)

Apparently posting it caused enough load to take down my pict-rs server, sorry about that.

[–] ace@lemmy.ananace.dev 2 points 7 months ago

Ended up oversleeping somewhat, so I did the first part on the way to work using flood fills over a global visited set, and now that work's over I've sat down to expand that solution to do corner counting for part two as well.

C#

char[] map = new char[0];
(int X, int Y) size = (0, 0);

public void Input(IEnumerable<string> lines)
{
  map = string.Concat(lines).ToCharArray();
  size = (lines.First().Length, lines.Count());
}

Dictionary<HashSet<(int,int)>,int> areas = new Dictionary<HashSet<(int,int)>,int>();
public void PreCalc()
{
  HashSet<(int, int)> visited = new HashSet<(int, int)>();
  for (int y = 0; y < size.Y; ++y)
    for (int x = 0; x < size.X; ++x)
    {
      var at = (x, y);
      if (visited.Contains(at))
        continue;

      var area = Flood((x, y), visited);
      areas[area.Area] = area.Perim;
    }
}

public void Part1()
{
  int sum = areas.Select(kv => kv.Key.Count * kv.Value).Sum();

  Console.WriteLine($"Fencing total: {sum}");
}
public void Part2()
{
  int sum = areas.Select(kv => kv.Key.Count * countCorners(kv.Key)).Sum();

  Console.WriteLine($"Fencing total: {sum}");
}

readonly (int dX, int dY)[] links = new[] { (1, 0), (0, 1), (-1, 0), (0, -1) };
(HashSet<(int,int)> Area, int Perim) Flood((int X, int Y) from, HashSet<(int X, int Y)> visited)
{
  char at = map[from.Y * size.X + from.X];

  (HashSet<(int,int)> Area, int Perim) ret = (new HashSet<(int,int)>(), 0);
  visited.Add(from);
  ret.Area.Add(from);

  foreach (var link in links)
  {
    (int X, int Y) newAt = (from.X + link.dX, from.Y + link.dY);
    char offset ;
    if (newAt.X < 0 || newAt.X >= size.X || newAt.Y < 0 || newAt.Y >= size.Y)
      offset = '\0';
    else
      offset = map[newAt.Y * size.X + newAt.X];

    if (offset == at)
    {
      if (visited.Contains(newAt))
        continue;

      var nextArea = Flood(newAt, visited);
      ret.Area.UnionWith(nextArea.Area);
      ret.Perim += nextArea.Perim;
    }
    else
    {
      ret.Perim += 1;
    }
  }

  return ret;
}

readonly (int dX, int dY)[] cornerPoints = new[] { (0, 0), (1, 0), (1, 1), (0, 1) };
readonly int[] diagonalValues = new[] { (2 << 0) + (2 << 2), (2 << 1) + (2 << 3) };
int countCorners(HashSet<(int X, int Y)> points)
{
  int corners = 0;
  var bounds = findBounds(points);
  for (int y = bounds.minY - 1; y < bounds.maxY + 1; ++y)
    for (int x = bounds.minX - 1; x < bounds.maxX + 1; ++x)
    {
      var atPoint = cornerPoints.Select(c => points.Contains((x + c.dX, y + c.dY)));
      var before = corners;
      if (atPoint.Where(c => c).Count() % 2 == 1)
        corners++;
      else if (diagonalValues.Contains(atPoint.Select((c, i) => c ? (2 << i) : 0).Sum()))
        corners += 2;
    }

  return corners;
}

(int minX, int minY, int maxX, int maxY) findBounds(HashSet<(int X, int Y)> points)
{
  (int minX, int minY, int maxX, int maxY) ret = (int.MaxValue, int.MaxValue, int.MinValue, int.MinValue);
  foreach (var point in points)
  {
    ret.minX = Math.Min(ret.minX, point.X);
    ret.minY = Math.Min(ret.minY, point.Y);
    ret.maxX = Math.Max(ret.maxX, point.X);
    ret.maxY = Math.Max(ret.maxY, point.Y);
  }

  return ret;
}

 

The quality of life just keeps on coming.

 

The QoL work keep on coming, really feels like it's going to become a whole new game once they get the expansion ready for release.

 

It's really nice to see how they continue to cater to player quality of life, lots of great improvements both for new and returning players here.

 

Some more general improvements to trains, the upcoming patch (and DLC) just continue to collect quality of life improvements it seems.

 
 
 

The quality of life just keeps on coming, proper flipping is great, and core support for setting recipes through circuits is great - I've used mods to do just that many times before.

 

And the Factorio devs just continue to add more quality of life and interest to the game mechanics.

Native stacking of items is a great idea for larger bases, and also something I see mods getting a lot of use from. (Always been a fan of the stacking beltboxes mod)

 
 

And even more general improvements happening.

Amusingly enough, I've also written my own command-line Factorio mod manager for similar reasons, though I never really shared mine.

 

Trebuchet.

view more: ‹ prev next ›