monitoring – Personal PagerDuty or customizable alarm / alert application?

I launch this game server which explodes from time to time. So I have this service which sends me a telegram message when this happens, but the notification sound is absolutely not loud enough to wake me up if I take a nap. Is there a customizable alarm / alert app, similar to PagerDuty (which is expensive for personal use), so that when my server sends it a message (be it a webhook, an email or whatever), it wakes me up?

Google sheets – Where can I keep application configuration information in the cloud so that it can be changed in a user-friendly way?

Currently, I keep a list of people who should be alerted to certain events in a Google spreadsheet. I share this spreadsheet among the appropriate administrators so they can update it.

I also keep other config (like numerical thresholds, etc.) in this spreadsheet. I use the API Sheets to get appropriate cell data.

I found it a bit awkward, so I hacked something with https://form.io. It works pretty well – you can design a form, submit the form, and then send your administrators a link to edit this submission using the form. You can retrieve the data behind this API submission from your code.

But I think there must be a better tool for this?

Zapier has this: https://zapier.com/help/create/storage-and-digests/storage-examples-in-zaps, but that is not enough.

This seems to be a common problem – surely there is a better way?

desktop application – How to handle JOptionPane.showConfirmDialog Java by keyboard?

Well, I created a POS system for a customer; But he didn't like using a mouse at the time of the sale, because it wastes a lot of time. So I went after several tutorials and forums, but I couldn't find anything that could help me with this problem.
This is the 100% functional part of my code, but my problem is using the keyboard to choose one of the options; without the help of the mouse:

int reply = JOptionPane.showConfirmDialog (this, "Do you want to print the coupon?", "Confirm", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);

if (answer == JOptionPane.YES_OPTION) {
printCouponTickets (modelModelSaleProductTickets, modelSaleTickets list);
int codCli = Integer.parseInt (tfUsuarioID.getText ());
clearForm ();
}

 else if(resposta==JOptionPane.NO_OPTION){
 int codCli = Integer.parseInt(tfUsuarioID.getText());      
 limparFormulario();       
 }

 else if(resposta==JOptionPane.CLOSED_OPTION){
 int codCli = Integer.parseInt(tfUsuarioID.getText());      
 limparFormulario();    
 }

Web application – Can anyone identify the authentication backend used by a PHP website from the following URL?

The POSTs creds client, and if authenticated, the server responds with a 302 redirect to a huge path:

https://phpwebsite.com/login/auth/(encoded_data)

where encoded_data is 811 or 726 characters long (for administrators and unprivileged users respectively).

charset is (a-zA-z0-9_-) and it appears that the underscore / hyphen is used to encode the data rather than as separators. here are the first 80 characters of four authenticated requests:

kDXQCdyBLGeI6iffL7NCerz-2n7cqsQkAd--qu_cwaDku3u05mkOfLnhG0X0jhYj78VCulnaWX96Aaj3
O_sTfG87ndgFssFpZrQ1zIi7AXGs8ft-ufiRcs9tec0seoMnZuuvYexCmRONdhylx5mxy_QJw8qD04CM
hY1YSR-1yT6Mr61HPd0sKHRsGpIHvfXCyvTreOza9hMMmROxv9RKdDY-4gb1z4IMAlGM0aaFqaCUv1VN
qtFUBJtBT-6eL7Fxrj47H2ryTVe0uVLWHVxtxC-Xp0Hw2g-7gN_ovBi-e_i-iTHDAmbhNJkesk_7wxSI

The client gets the massive path string and the server responds with a new PHPSESSID cookie value for the authenticated session.
I realize the length and the component / login / auth / of the path can be variable (defined by the user), but I don't know how it was configured.

architecture – Data aggregation between microservices in a Twitter application

I am developing a Twitter-like application and I have doubts about my service-oriented architecture.

i have a User Service with a REST endpoint POST /users/{userId}/follow
so that the "logged in" user begins to follow the user userId. After that, this service publishes an event UserStartedFollowing with a payload like this:

{ "followerId": "1234",  "followedId": "77638" }

Then I have a Timeline Service who listens to these events and creates the timeline (comments, or tweets) asynchronously. This service exposes an endpoint GET /messages which returns all messages (aka tweets) from people you follow (previously published using another endpoint) POST /messages). The answer is like this:

({
  userId: "786387",
  content: "This is an example of a message"
})

The problem comes here. In the app, I need to show the name of the author of the message. But I don't have this information in the Timeline Service, but only ID. What's the best way to do it?

I thought of retrieving each username from its username in the User Service (from some sort of API gateway), data caching. But it may be too heavy.

Another option could be to include followed username in the UserStartedFollowing event and store it in the Timeline Service, also. So it will be included in the /messages reply.

What do you think

Javascript To Do Application – Code Review Stack Exchange

// Set Event Listeners
function eventListiners(){
  document.querySelector('#task-form').addEventListener('submit', getTask);
  document.addEventListener('click', onClick); 
};

//Load Event Listeners
eventListiners();

// Update Task List from localStorage on page load
if(localStorage.getItem('tasks') !== null){
  addTasksFromStorage();
}

// click Event
function onClick(){
  /// Delete Item
  if(event.target.className == 'fa fa-remove'){
    removeTask();
  };

  // Clear Tasks
  if(event.target.className == 'clear-tasks btn black'){
    clearTasks(event);
  };
}


// Get Task Value & Pass to storeTask();
function getTask(e){
  let task = this.querySelector('#task').value;

  storeTask(task);
  e.preventDefault();
};


// Store Task in Local Storage
function storeTask(taskValue){
  let task = taskValue;
  let tasks;
  let displayMessage;

  // Check if item exists in localstorage
  if(localStorage.getItem('tasks') === null){
    tasks = ();
  } else {
    tasks = JSON.parse(localStorage.getItem('tasks'));
  };

  // Used to display status message
  displayMessage = document.querySelector('#form-message');

  // Check if task already exists in the list
  if(tasks.includes(task)){
    // Update Status Message
    displayMessage.innerText = 'Item Already Added';
    displayMessage.className = 'message-warning';
  } else {
    // Update Status Message
    displayMessage.innerText = 'Item Added';
    displayMessage.className = 'message-success';

    // Add Task to Tasks Array
    tasks.push(task);
    
    // Pass Task to addTaskToList();
    addTaskToList(task);
  }

  // Update localStorage
  localStorage.setItem('tasks', JSON.stringify(tasks));
};


// Add new task to list of tasks
function addTaskToList(task){
  let taskList;
  let newTask;
  let newTaskLink;
  
  // Select list element
  taskList = document.querySelector('ul.collection');

  // Create new li
  newTask = document.createElement('li');
  newTask.className = 'collection-item';

  newTask.appendChild(document.createTextNode(task));

  newTaskLink = document.createElement('a');
  newTaskLink.className = 'delete-item secondary-content';
  newTaskLink.innerHTML = '';

  // Add new li to list
  newTask.appendChild(newTaskLink);
  taskList.appendChild(newTask);
};


// Remove Task from localStorage & UI
function removeTask(){
  let task;
  let taskIndex;
  let tasks = ();
  
  // Get task li & remove
  task = event.path(2);
  task.remove();

  // Get tasks from localStorage & remove
  tasks = JSON.parse(localStorage.getItem('tasks'));
  taskIndex = tasks.indexOf(task.innerText);
  tasks.splice(taskIndex, 1);
  
  // Update localStorage
  tasks = JSON.stringify(tasks);
  localStorage.setItem('tasks', tasks);
}


// Remove all tasks from localStorage & UI
function clearTasks(e){
  let taskList;

  // Select list parent
  taskList = document.querySelector('ul.collection');

  // Loop through all tasks & remove
  while(taskList.firstChild){
    taskList.removeChild(taskList.firstChild);
  };

  // Clear localStorage
  localStorage.removeItem('tasks');
  e.preventDefault();
};


// Add tasks from localstorage
function addTasksFromStorage(){
  let tasks;

  tasks = JSON.parse(localStorage.getItem('tasks'));

  tasks.forEach(task => {
    addTaskToList(task)
  });
}




  
  
  
  
  
  To-do list



  
To-do list
Tasks
Delete tasks

2013 – Unable to add the application hosted by the SharePoint provider. Get the error "Sorry, an error occurred while adding the application. Click to retry"

When adding an application to the subsite (via Site Content> Add Application), we receive a message "We are adding your application, click to cancel" for a few seconds, then generates an error as mentioned in the title.

We compared the ULS logs with the work environment and found that everything is identical except the lines below.

SharePoint Foundation   Claims Authentication   amge4   Verbose SPFederationAuthenticationModule.IsRedirectToLogOnPage: This is a 302 redirect to /_layouts/15/viewlsts.aspx#newest

SharePoint Foundation   Claims Authentication   amge7   Medium  SPFederationAuthenticationModule.IsRedirectToLogOnPage: Detected a redirection but the redirect is not to a known signin page: /_layouts/15/viewlsts.aspx#newest

We have verified and ensured that all required services and service applications are operational. Appreciate all the suggestions to solve this problem.

Do I have to declare a "conviction for exhausted traffic" from 2007 in the United Kingdom in a tourist visa application in Ireland?

I was convicted of a traffic violation in the UK in 2007 when I was a student there (Indian national). He drove without a full license and insurance. The punishment was a fine and 6 points on the learner's license. I left the UK in 2010 and have been living in India ever since.

I want to apply for a tourist visa to Ireland and there is the question "Do you have a criminal conviction in any country" but there are no other details as if "criminal "also includes convictions for trafficking and whether we should report past convictions.

mobile application – Entry for an arbitrarily large radius in the map

I am developing a mobile application in which users must select a point on a map, then define a radius around this point. It will be used to define a geographic fence and to perform an action when the user later enters this area.

At the moment, the user can select a point by touching the map, then sets the radius with the help of a search bar. The circle drawn on the map updates dynamically with the modifications of the search bar.

a map with a location and a search bar to define a radius

My question is how to allow the user to enter an arbitrarily large radius?

For the moment, I have defined a maximum for the Geofence radius. But I would like to allow the user to define a radius as large as they want.

An idea would be to simply increase the maximum of the search bar when the user "pushes" the search bar on the right edge. But then, removing it, the scale would be weird: small changes in the search bar are now making huge changes in the radius.

Web Hosting – Where do I host my website if I need to run WordPress * AND * a custom SaaS web application?

150,000 users / month. Many blog posts and traffic. But the main activity is running on a web application.

Currently hosted on one of these basic VPS packages from a great cheap hosting company which you have certainly heard about and probably used when you were a kid.

Am I dreaming? Is there a great host like Kinsta or Pantheon who can host my WP stuff and my application, without requiring a subdomain?

Or should I do what everyone else does and host my blog / marketing on a high-level WP host (again, Pantheon, Kinsta, WP Engine, etc.) and host my webapp on AWS via the standard app.mybiz.com configuration of the subdomain?