SkyNet Hosting Getting Progressively Worse. Time to move!


I have been with SkyNet Hosting since October 2019. At first, they were great. Sites loaded fairly fast, ticket support was quick and generally, I was very happy with the service.

However over the past six months or so things seem to be tanking quite dramatically. I don’t know if this is because they are oversold, moved customer support to India, or are just offering way too much for the prices they charge. Whatever it is, the problems are mounting and starting to affect my business in a big way.

The biggest issue is customer support. Or lack of it. Even if I set a ticket to “critical” status it can be 3-6 hours before I get any sort of response.

Today for example all of my customers cannot receive emails from outside the SkyNet servers. This has been going on for four hours already!

I put in a ticket, marked as Critical (#OWM-595-26817) and I have not even received a confirmation. I have checked the status of the ticket on the support site but it is still open. The fact that the time on the ticket shows as submitted at 4.21 pm yet I put it in at approx 11.20 am UK time tells me that the “support” is in India and hence the huge time lag in getting any sort of answer.

Anyway, enough is enough. I can’t keep my customers on a sinking ship. And so the whole moving process begins yet again https://www.webhostingtalk.com/

My advice is to think really carefully before moving to SkyNet. The offers look great and I have no doubt you will receive good support, at least in the first few months. But once you are invested you will see it all fall away and find yourself in the same situation as me and many others.

So, if anyone knows a decent reseller host who can migrate 60 accounts in without too much downtime I would love to hear from you https://www.webhostingtalk.com/

If I move from shared hosting to VPS hosting, but my email box will stay local would I still need to massively configure email DNS records?

I currently host a MediaWiki website on a shared CentOS, Apache, MySQL, PHP environment.

I was thinking that sometime in the future I might migrate the website database, filetree and email hosting to a generally non managed VPS hosting (such as Linode, DigitalOcean), because such hostings tend to cost less and be faster, but, for sure I wouldn’t want to start doing crazy email DNS record configurations also.

Assuming that I change my current shared website hosting to a VPS hosting, but my email box will stay local,
(i.e. I wouldn’t send contact-form emails to my Gmail email account, rather, to a local Postfix-Dovecote-Roundcube(?) email account),
In such case, would I still need to massively configure email DNS records, as I would have to do if I did want to transfer contact-form emails to my Gmail email account?

c# – Refactoring a class to an abstract base class – keep default implementation in place or move it to an an other class?

I have a class which aggregates some temporal data from a database and provides a bunch of methods to query said data. It looks like this:

public class InfoProvider
{
    public IEnumerable<Contract> GetContracts() => GetContracts(DateTime.Today);
    public IEnumerable<Contract> GetContracts(DateTime at) => GetContracts(at, at);
    public IEnumerable<Contract> GetContracts(DateTime from, DateTime to) { /* query contracts */ }

    public IEnumerable<Job> GetJobs() => GetJobs(DateTime.Today);
    public IEnumerable<Job> GetJobs(DateTime at) => GetJobs(at, at);
    public IEnumerable<Job> GetJobs(DateTime from, DateTime to) { /* query jobs */ }

    /* more methods like above ... */
}

Now I need to extend my application to support different representations of the data in the database. Those representations are identical for the most part but have some subtle differences. For example GetContracts in representation 1 should return contracts of type A, B or C while in representation 2 it should return contracts only of type A or B. On the contrary, GetJobs would be the same in both representations.

I want to do this extension by refactoring InfoProvider into an abstract class and derive concrete classes, InfoProviderRepresentation1 and InfoProviderRepresentation2 for each representation. But I waver where to put the existing code. I see those two options:

  1. Leave it in the original class
public abstract class InfoProvider
{
    public IEnumerable<Contract> GetContracts() => GetContracts(DateTime.Today);
    public IEnumerable<Contract> GetContracts(DateTime at) => GetContracts(at, at);
    public virtual IEnumerable<Contract> GetContracts(DateTime from, DateTime to) { /* query contracts */ }

    public IEnumerable<Job> GetJobs() => GetJobs(DateTime.Today);
    public IEnumerable<Job> GetJobs(DateTime at) => GetJobs(at, at);
    public virtual IEnumerable<Job> GetJobs(DateTime from, DateTime to) { /* query jobs */ }
}

public class InfoProviderRepresentation1 : InfoProvider
{
}

public class InfoProviderRepresentation2 : InfoProvider
{
    public override IEnumerable<Contract> GetContracts(DateTime from, DateTime to) { /* ... */ }
}
  1. Move the code to an other abstract class and derive my concrete classes from there:
public abstract class InfoProvider
{
    public IEnumerable<Contract> GetContracts() => GetContracts(DateTime.Today);
    public IEnumerable<Contract> GetContracts(DateTime at) => GetContracts(at, at);
    public abstract IEnumerable<Contract> GetContracts(DateTime from, DateTime to);

    public IEnumerable<Job> GetJobs() => GetJobs(DateTime.Today);
    public IEnumerable<Job> GetJobs(DateTime at) => GetJobs(at, at);
    public abstract IEnumerable<Job> GetJobs(DateTime from, DateTime to);
}

public abstract class DefaultInfoProvider
{
    public virtual IEnumerable<Contract> GetContracts(DateTime from, DateTime to) { /* query contracts */ }
    public virtual IEnumerable<Job> GetJobs(DateTime from, DateTime to) { /* query jobs */ }
}

public class InfoProviderRepresentation1 : DefaultInfoProvider
{
}

public class InfoProviderRepresentation2 : DefaultInfoProvider
{
    public override IEnumerable<Contract> GetContracts(DateTime from, DateTime to) { /* ... */ }
}

I find option 2 a bit more readable. On the other hand it needs more boilerplate code than option 1. Does option 2 have any more advantages over option 1?

graphics – How to move around a circle and count the number of points inside it?

I have the following data:

data = {{223., 275.}, {212.5, 271.5}, {97.3889, 270.167}, {40., 269.}, {52.75, 266.875},{104.5, 265.5}, {241.7, 265.5}, {205.318, 263.318}, {217.045, 262.136}, {117.3, 257.5}, {69.2, 253.8}, {106.611, 253.833}, {198.389, 253.833}, {222., 254.}, {233.5, 254.}, {36.3889, 252.833},{210.214, 252.643}, {125.5, 250.5}, {92.5, 246.7}, {136.2, 246.8}, {115., 246.}, {147.682, 245.682}, {21.3, 244.5}, {104.5, 244.5}, {217.3, 244.5}, {244.3, 244.5}, {42.5, 242.3}, {72.8, 242.2}, {193.864, 241.955}, {31.8636, 240.955}, {123.1, 241.1}, {156., 241.}, {52., 240.}, {84.3889, 239.833}, {97.5, 237.5}, {142.786, 237.5}, {237.167, 237.611}, {64.5, 236.3}, {133.5, 236.5}, {109.045, 234.136}, {223.045, 234.136}, {34.4091, 232.864}, {77.3889, 232.833}, {117.318, 232.773}, {87.625, 231.625}, {151.3, 231.5}, {12.9545, 228.136}, {98.7, 228.}, {241.611, 225.833}, {139.5, 225.5}, {23.7, 224.5}, {81.1364, 223.409}, {171.3, 223.5}, {35.3889, 221.167}, {120.625, 221.375}, {158.2, 221.2}, {89.1364, 220.045}, {133.5, 217.5}, {147.7, 216.5}, {237.167, 216.611}, {110.167, 215.611}, {166.375, 215.375}, {177.167, 215.389}, {27.1364, 212.955}, {121.9, 211.9}, {38.8333, 210.611}, {92.5, 210.5}, {131.5, 208.3}, {158.056, 208.167}, {143., 207.3}, {19.0833, 204.75}, {72.5, 204.7}, {30.5, 203.5}, {171.167, 203.611}, {239.5, 203.5}, {252.3, 203.5}, {264.136, 203.591}, {84.7, 202.5}, {228.7, 202.5}, {42.3889, 199.833}, {123., 200.}, {51.6111, 198.833}, {76.3182, 196.682}, {64.5, 196.5}, {104.3, 195.5}, {144.167, 194.25}, {259.389, 194.167}, {34.1364, 191.955}, {235., 192.}, {114.833, 190.389}, {187.864, 190.591}, {56.5, 188.5}, {136.409, 188.318}, {158.3, 188.5}, {10.6111, 187.167}, {106.625, 183.625}, {139.409, 181.5}, {230.3, 182.5}, {47.2273, 181.318}, {90.3182, 181.318}, {59.8, 177.8}, {130., 178.}, {187.7, 178.}, {208.7, 175.5}, {81.1364, 174.409}, {139.5, 173.7}, {197.3, 173.5}, {241.833, 173.389}, {89.1154, 170.885}, {59.8, 167.2}, {175.625, 167.375}, {188., 166.}, {72.6111, 165.167}, {110.167, 165.056}, {159.611, 165.167}, {204., 165.}, {84.5, 161.5}, {143.136, 161.409}, {168.833, 161.389}, {262.7, 161.5}, {15.6111, 159.167}, {121.833, 159.389}, {102., 156.9}, {152.5, 157.}, {133.5, 154.5}, {75.0455, 153.136}, {113.625, 153.375}, {162.833, 153.389}, {85.5909, 152.136}, {241.611, 152.167}, {125.5, 149.7}, {96.3, 148.5}, {35.5, 146.5}, {105.5, 145.3}, {152.389, 145.167}, {197., 144.}, {85.7, 141.5}, {134.5, 141.5}, {162.833, 141.611}, {260.5, 141.5}, {175.833, 140.389}, {69.3889, 138.167}, {28.6429, 136.786}, {97.2, 136.8}, {129.167, 136.}, {39.625, 135.625}, {55.1667, 133.611}, {77.5, 133.5}, {164.3, 133.5}, {138.5, 132.5}, {213.5, 132.3}, {9.5, 131.}, {87.6111, 131.167}, {22.3889, 128.833}, {35.3889, 128.833}, {66.7, 128.5}, {177.136, 128.591}, {131.5, 125.3}, {189.722, 125.167}, {202., 125.}, {77.4091, 124.136}, {106.611, 123.833}, {160.611, 124.167}, {28.5, 122.7}, {142., 123.}, {214.5, 123.}, {226.5, 123.}, {15.5, 120.5}, {87.8333, 120.389}, {171.167, 120.611}, {5., 119.3}, {183., 117.}, {259.389, 117.167}, {73.1667, 115.583}, {98.6818, 115.682}, {131.318, 115.682}, {160.682, 114.682}, {34.1667, 114.611}, {193.7, 114.5}, {79.6667, 112.5}, {106.5, 112.5}, {203.786, 112.5}, {214.5, 112.5}, {13., 111.}, {59.3, 111.9}, {87.8636, 111.045}, {228.611, 111.167}, {69.3, 107.5}, {174.7, 107.5}, {151.3, 106.5}, {97.3889, 104.167}, {9.61111, 103.167}, {81., 103.}, {166.611, 103.167}, {61.2, 101.8}, {143., 102.}, {251.056, 101.833}, {71.5, 98.5}, {175.625, 98.375}, {238.167, 98.3889}, {90.3889, 95.8333}, {155.864, 95.9545}, {198.2, 94.9}, {138.375, 94.625}, {14.1667, 93.6111}, {59.8333, 93.6111}, {79.5, 93.5}, {112.682, 91.3182}, {33.875, 90.125}, {69.3182, 87.6818}, {150., 87.7}, {233.5, 87.5}, {180.5, 86.5}, {94., 85.3}, {190.167, 85.3889}, {242.833, 85.3889}, {19.1154, 82.8846}, {82., 83.}, {160.7, 83.}, {202., 83.}, {226.5, 79.7}, {129., 79.7}, {25.6818, 78.2273}, {39., 78.3}, {75.1364, 77.0455}, {48.1364, 74.9545}, {242.864, 74.9545}, {100.7, 73.5}, {120.5, 73.5}, {233.389, 73.1667}, {31.8333, 70.3889}, {69.2, 70.2}, {117.3, 65.5}, {226.5, 64.3}, {214.5, 62.}, {35.5, 60.7}, {205.3, 58.5}, {122., 57.3}, {180.375, 56.375}, {233.5, 56.3}, {43.5, 53.7}, {134.7, 54.}, {171.136, 53.9545}, {222.864, 53.9545}, {143.833, 49.0556}, {114.611, 47.8333}, {48.3, 45.5}, {81., 45.5}, {176., 45.5}, {40., 44.5}, {138.389, 40.8333}, {56.5, 39.7}, {127.239, 34.3261}, {67.0455, 32.8636}, {160.625, 32.625}, {118.5, 31.3}, {141.7, 31.5}, {55.0455, 29.1364}, {104.389, 28.1667}, {81., 26.7}, {93.7, 26.5}, {150., 26.7}, {110., 21.}};

which looks like:

p1 = ListPlot(data, PlotStyle -> Black, AspectRatio -> 1, Axes -> False)

enter image description here

Now, I need to draw a circle, let’s say, with a radius $50$, centered at each of the above points step by step, and count the number points inside the circle. For example, for one of the above points as a center of the circle, one has:

p2 = Graphics(Circle({79.66666666666667`, 112.5`}, 50));
Show(p1, p2)

which looks like:

enter image description here

I can do the above repeatedly for other points as centers of the circle, and then count the number of points inside the circle at each step. However, this is very tedious and time-consuming.

I have the following two questions:

  1. Is there an easier way to do the above procedure, and not manually do the counting and moving the circle around?

  2. If the answer to the above question is yes, I need also the circle to be remained completely inside the region of the points, that is, the center-points which result in a circle which some parts of it go outside the region, to be excluded (when doing by hand, one can detect these points. For example, one set of these points are those ones at the edges of the picture).

differential equations – The bugs move to each other, why it cannot work?

I am writing the code of the bugs move to the next one, and the number of the bugs is “n”. When t=0, the bugs are on the vertices of regular n polygon. But the code cannot work, can you help me? Thanks a lot!

Clear("`*")
n = 4;
a = CirclePoints(n);
b = 0.1;
equ = Flatten(
   Append(Table({Sqrt(
       Subscript(y, k - 1)'(t)^2 + Subscript(x, k - 1)'(t)^2) == 
       b, (Subscript(y, k)(t) - Subscript(y, k - 1)(t))*
        D(Subscript(x, k - 1)(t), t) == 
       (Subscript(x, k)(t) - Subscript(x, k - 1)(t))*
        D(Subscript(y, k - 1)(t), t), 
      Subscript(y, k - 1)(0) == a((k - 1, 2)), 
      Subscript(x, k - 1)(0) == a((k - 1, 1))}, {k, 2, 
      n}), {(Subscript(y, 1)(t) - Subscript(y, n)(t))*
       D(Subscript(x, n)(t), 
        t) == (Subscript(x, 1)(t) - Subscript(x, n)(t))*
       D(Subscript(y, n)(t), t), Subscript(y, n)(0) == a((n, 2)), 
     Subscript(x, n)(0) == a((n, 1)), 
     Sqrt(Subscript(y, n)'(t)^2 + Subscript(x, n)'(t)^2) == b}), 2);

sol = NDSolve(equ, 
  Flatten({Subscript(x, #)(t), Subscript(y, #)(t)} & /@ Range@n, 
   2), {t, 0, 5}, MaxSteps -> 100, SolveDelayed -> True)
result = Flatten({Subscript(x, #)(t), Subscript(y, #)(t)} & /@ 
    Range@n, 2);
result = Partition(result /. sol((1)), 2);
ParametricPlot(result, {t, 0, 23})
```

unity – How to smoothly move in FixedUpdate using touches on mobile?

I have a serious issue for over a week now and no matter how – I can’t make it work.

I have a simple movement system, where I move the player on the X position:

private void Update()
{
    if (Input.touchCount > 0 &&
        Input.GetTouch(0).phase == TouchPhase.Moved)
    {
        Vector2 touchPos = Input.GetTouch(0).position;

        float normalizedX = touchPos.x / Screen.width;
     
        float xPos = Mathf.Lerp(-5f, 5f, normalizedX);

        transform.position = new Vector3(xPos * 3f, transform.position.y, transform.position.z);
    }

}

See the gif below. It works super smooth on a phone (the gif was taken on a pc, with a different script just to show you what I want to achieve so it laggs a bit). The input above works just by simply lerping the touch position.

enter image description here

I need to somehow to move it to FixedUpdate, because I will detect collisions and move the Rigidbody of the player with a constant speed on Z axis (forward). Also we will probably implement some jumps.

But I can’t do it. I tried basically everything:

  • moving on X in Update() and rb.MovePosition() in FixedUpdate() for Y & Z axes
  • tried various things in FixedUpdate(), I just can’t replicate it, because collecting the input in FixedUpdate gives incorrect results
  • tried to collect the input in Update and parse it in FixedUpdate, but it didn’t work (I probably did it incorrectly)

Im really out of clues, drives me crazy. It may be that Im overthinking it, thats why Im seeking for help here.

How to convert this simple movement system for a rigidbody.MovePosition() so it behaves identically as on the gif?

Thread move

Admin submitted a new resource:

Thread move – Provides a one click button to move thread.

Description:

Provides a one click button to move thread.

(Example of Thread move button)

pic001.jpg

(Example of Options page)

pic002.jpg

(Example of User group permissions)

pic003.jpg

Features:

Read more

.(tagsToTranslate)null scripts(t)nulled(t)nulled sites(t)nulled forum(t)nulled script(t)nulled scripts(t)nulled script forum(t)best nulled scripts site(t)xenforo nulled(t)xenforo 2 nulled(t)xenforo nulled themes(t)seo xenforo 2(t)xenforo themes(t)seo for xenforo(t)vbulletin nulled(t)vbulletin 5 nulled(t)whmcs nulled(t)hexa whmcs(t)whmcs addons nulled(t)whmcs templates nulled(t)whmcs template nulled(t)whmcs modules nulled(t)whmcs themes nulled(t)cs-cart nulled(t)xfilesharing pro nulled(t)blesta nulled(t)arrowchat nulled(t)multi vendor ecommerce script nulled(t)seo providers(t)adsense alternative

key management – Move signing subkey to authentication slot on YubiKey (OpenPGP card)?

My PGP primary key is only used for certification—I use a separate subkey for signing. Like this:

sec  rsa4096/0x891781D0EDC66456                                                                                                                                                                                                                                                                                                
     created: 2021-09-04  expires: never       usage: C                                                                                                                                                                                                                                                                        
     trust: ultimate      validity: ultimate                                                                                                                                                                                                                                                                                   
ssb  rsa4096/0x14CF79D2D5917737                                                                                                                                                                                                                                                                                                
     created: 2021-09-04  expires: 2023-09-04  usage: S                                                                                                                                                                                                                                                                        
ssb  rsa4096/0x0041701689E0A409                                                                                                                                                                                                                                                                                                
     created: 2021-09-04  expires: 2023-09-04  usage: E                                                                                                                                                                                                                                                                        
(ultimate) (1). test user <test@example.com>                                                                                                                                                                                                                                                                                   

I noticed that the OpenPGP card spec only supports three key slots: one for signing, one for encryption, and one for authentication. There is no slot dedicated to certification. However, the keytocard command permits moving the signing subkey to the authentication slot, and moving the certification key to the signature slot.

My question: Are there any downsides to moving the keys to the card (YubiKey) as follows:

  • certification (primary) key to the signature slot
  • signing subkey to the authentication slot
  • encryption subkey to the encryption slot

In particular: Will I still be able to use the signing subkey for signing even though it’s in the authentication slot? I generated some throwaway keys and it seemed to work, but I wanted confirmation that it was OK.

The YubiKey will mostly be in cold storage, used only for the occasional certification operations (e.g., extending subkey expiration) and as a backup if I lose my main YubiKey.

Finder suddenly asking for permission to move to trash

In some recent update, the finder has asked me for to enter my password before I can move a file to the trash. It’s a similar issue to this question: Finder asks for password to move file to trash, except the OP’s solution there did not work for me.

The annoying part about this is that I cannot delete files from my music player (Clementine) like I used to — it just gives me an error, so I’m assuming it’s related.

How can I fix this and revert it back to its original behavior of not needing to prompt every time I move a file to the trash?

unity – When the object that move to the target is not in chasing mode the magnitude os it’s position is over 28 how can I resolve it?

using Cinemachine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MoveToTarget : MonoBehaviour
{
    public enum TransitionState
    {
        None,
        MovingTowards,
        Transferring
    }

    public Transform transformToChildTarget;
    public Transform transformChasingTarget;
    public bool isChild = false;
    public AnimationCurve curve = AnimationCurve.EaseInOut(0.0f, 0.0f, 1.0f, 1.0f);
    public float duration = 10.0f;
    public GameObject mainCam;
    public CinemachineFreeLook freeLookCamGameplay;
    public CinemachineFreeLook freeLookCamPickUp;
    public UnlockCrate unlockCrate;
    public InteractableItem interactableItem;
    public IKControl ikControl;
    public Transform player;
    public bool isChasing = false;

    private float t;
    private Transform originTransform;
    private float timer;
    private TransitionState state = TransitionState.MovingTowards;
    private Vector3 originPosition;
    private bool enableInteractableItemOnce = false;
    Vector3 v;

    void Start()
    {
        t = 0.0f;

        curve.postWrapMode = WrapMode.Once;
        originPosition = transform.position;
    }

    void Update()
    {
        if (unlockCrate.HasOpened())
        {
            if (enableInteractableItemOnce == false)
            {
                interactableItem.enabled = true;

                enableInteractableItemOnce = true;
            }

            if (isChasing)
            {
                originTransform = transformChasingTarget;
            }

            switch (state)
            {
                case TransitionState.MovingTowards:
                    if (isChasing)
                    {
                        v = transformChasingTarget.position - transform.position;
                    }
                    else
                    {
                        v = transformToChildTarget.position;
                    }
                    if (v.magnitude < 0.001f)
                    {
                        SwitchCameras();

                        state = TransitionState.Transferring;
                        if (isChasing)
                        {
                            originTransform = transformChasingTarget;
                        }
                        else
                        {
                            originTransform = transformToChildTarget;
                        }
                        timer = 0;
                        return;
                    }

                    t += Time.deltaTime;
                    float s = t / duration;

                    if (isChasing)
                    {
                        transform.position = Vector3.Lerp(originPosition,
                            transformChasingTarget.position, curve.Evaluate(s));
                    }
                    else
                    {
                        transform.position = Vector3.Lerp(originPosition,
                            transformToChildTarget.position, curve.Evaluate(s));
                    }

                    break;

                case TransitionState.Transferring:
                    timer += Time.deltaTime;
                    this.transform.position = Vector3.Lerp(originTransform.position, transformToChildTarget.position, timer);
                    if (timer >= 1.0f)
                    {
                        this.transform.parent = transformToChildTarget;
                        transform.localPosition = new Vector3(0, 0, 0);
                        isChild = true;
                        interactableItem.distance = 0;

                        state = TransitionState.None;
                        this.enabled = false;
                        return;
                    }
                    break;

                default:
                    this.enabled = false;
                    return;
            }
        }
    }

    private void SwitchCameras()
    {
        var brain = mainCam.GetComponent<CinemachineBrain>();
        brain.m_DefaultBlend.m_Time = 1f;
        freeLookCamGameplay.enabled = true;
        freeLookCamPickUp.enabled = false;
    }
}

When the flag isChasing is set to false the object transformToChildTarget is moving to a target and become a child of this target. In this case the fingers on the player right hand.

Maybe the problem is that the hand as target is too close to the player so when the object move to it and get to it the magnitude is too high ?

When the flag isChasing is true and than the object in transformChasingTarget is moving to the target and I move the player around drag the player around the object transformChasingTarget is chasing the player until it’s reaching the player and than become the player hand child and it’s continue to do the code after the magnitude checking line :

if (v.magnitude < 0.001f)

But if it’s not in chasing mode the player is not moving at all the object become the player hand child but the magnitude is very high : over 28.

I’m not sure what is wrong and how to solve it ?