[JAVA] Faites votre propre pomodoro

introduction

Cet article est un article relais de "2019 Tech Connect Summer" de Link Information System. .. Relayé par un membre du groupe de engineer.hanzomon. Le système d'information sur les liens Facebook est ici.

Je m'appelle Go (@Go_in_lis) et je suis en charge de la 9e journée de l'équipe ours. Je présenterai une méthode de travail appelée technique Pomodoro et une méthode simple (Java) pour créer une minuterie nécessaire à ce travail.

Technique Pomodoro

La technique Pomodoro est une méthode de travail efficace proposée par Francesco Cirillo dans les années 1980. Le but de la technique Pomodoro est d'améliorer la productivité des individus et des équipes en suivant les étapes ci-dessous pour augmenter la concentration et la motivation des personnes.

Procédure technique Pomodoro

  1. Définissez une tâche (objectif).
  2. Effectuez pomodoro (travail). Habituellement, un pomodoro prend 25 minutes.
  3. Faites une courte pause. Habituellement, une courte pause dure de 3 à 5 minutes.
  4. Revenez à 2.
  5. Lorsque les quatre pomodoros sont terminés, faites une longue pause au lieu d'une courte pause. Les longues pauses durent généralement de 15 à 30 minutes.
  6. Revenez à 1.

Cependant, la concentration varie d'une personne à l'autre. Je suis sûr qu'il y a des gens qui peuvent enfin se concentrer en 25 minutes mais qui sont interrompus, ou 5 minutes de pause ne suffisent pas. Par conséquent, dans cet article, je vais vous présenter une méthode pour créer "votre propre minuterie pomodoro" qui peut ajuster l'heure de chaque élément.

Environnement de montage

Type Nom
langage de développement Java
Outils de développement Eclipse Java 2019-06
Développement OS win10

Organigramme de Pomodoro

L'organigramme suivant montre la procédure du programme. Les conditions affichées dans la boucle sont des conditions de continuation. pomodoro_flowchat.png

* Outil de création d'organigrammes: https: // www.draw.io /

Code source

Paramètres de la minuterie

Vous pouvez régler l'heure de chaque élément en entrant à partir de la console. Et nous avons également une méthode qui peut lire la valeur de chaque membre du champ afin que d'autres méthodes puissent utiliser l'heure définie.

public class SetTimer
{
	private int pomodoroTime;
	private int shortBreakTime;
	private int pomoNum;
	private int longBreakTime;
	
	//Paramètres de la minuterie
	public SetTimer() throws NumberFormatException, IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		System.out.print("Heure de Pomodoro(Minutes)Entrez s'il vous plait:");
		pomodoroTime = Integer.parseInt(br.readLine());
		System.out.print("Temps de pause court(Minutes)Entrez s'il vous plait:");
		shortBreakTime = Integer.parseInt(br.readLine());
		System.out.print("Entrez le nombre de pomodoros jusqu'à la longue pause:");
		pomoNum = Integer.parseInt(br.readLine());
		System.out.print("Long temps de pause(Minutes)Entrez s'il vous plait:");
		longBreakTime = Integer.parseInt(br.readLine());
	}
	
	//Lire les données de chaque élément
	public int getPomodoroTime()
	{
		return pomodoroTime;
	}
	public int getShortBreakTime()
	{
		return shortBreakTime;
	}
	public int getPomoNum()
	{
		return pomoNum;
	}
	public int getLongBreakTime()
	{
		return longBreakTime;
	}	
}

Traitement du compte à rebours (avec Thread.sleep)

En tant que méthode de traitement du compte à rebours utilisée ici, convertissez d'abord le temps défini en secondes. Ensuite, il boucle l'opération d'attendre 1 seconde puis de réduire le temps d'1 seconde. La boucle se termine lorsque le temps atteint zéro. Le code est ci-dessous.

public class CountDown
{
	//fields
	private static long totalTimeBySec;
	private static long perSec = 1000;
	
	//method
	public static void bySleep(int totalTime) throws InterruptedException		//Méthode de compte à rebours utilisant la méthode de sommeil
	{
		totalTimeBySec =totalTime * 60;
		for(long i = totalTimeBySec; i >= 0; i--)
		{
			Thread.sleep(perSec);				//Attends une seconde
			ShowTime.remainTime(i);			//Afficher le temps restant
		}
	}
}

Affichage de l'heure

Les horloges numériques utilisées dans la vie quotidienne sont généralement affichées sur deux chiffres, quelles que soient les minutes ou les secondes. Java a une méthode similaire à "% 2d" en langage c, mais comme il s'agit d'un langage de programmation orienté objet, j'aimerais utiliser une classe appelée DecimalFormat. La classe DecimalFormat peut définir le format décimal à l'aide du constructeur. Ensuite, vous pouvez utiliser la méthode format () pour modifier l'argument en fonction du format. Le code est ci-dessous.

public static void remainTime(long timeBySec)
{
		long min = timeBySec/60;
		long sec = timeBySec%60;
		
		DecimalFormat df = new DecimalFormat("00");	//Sortie minutes et secondes sur deux chiffres
		
		System.out.println(df.format(min) + ":" + df.format(sec));
}

Autre affichage de message

Laisser l'utilisateur décider s'il souhaite ou non entrer la tâche suivante. La méthode de traitement io à ce moment-là est écrite dans la classe suivante. Et lors du démarrage ou de la fin d'un pomodoro / break, je pense qu'il est nécessaire non seulement de régler le temps d'affichage sur zéro ou la valeur initiale, mais aussi de présenter un message correspondant. Les méthodes d'affichage de ces messages sont également résumées dans les classes suivantes.

public class Message
{
	public static boolean isContinue() throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		while(true)
		{
			System.out.println("Voulez-vous faire la tâche suivante?(Y/N)");
			String reply = br.readLine();
			if(reply.equals("Y"))
			{
				System.out.println("Continuer. faisons de notre mieux.");
				return true;
			}
			else if(reply.equals("N"))
			{
				System.out.println("C'est fini. Vive le bon travail.");
				return false;
			}
			else
			{
				continue;
			}
		}
	}
	
	public static void startPomo()
	{
		System.out.print("Pomodoro, commençons.");
	}
	
	public static void startShortBreak()
	{
		System.out.print("Commençons une courte pause.");
	}
	
	public static void startLongBreak()
	{
		System.out.print("Commençons une longue pause.");
	}
}

Traitement principal

Si vous combinez tous les processus selon l'organigramme, vous aurez votre propre minuterie Pomodoro.

public class Main
{
	public static void main(String[] args) throws InterruptedException, NumberFormatException, IOException
	{
		boolean isContinue = true;
		SetTimer timer = new SetTimer();			//Réglage de l'heure pour chaque élément
		do {
			for(int i = 0; i < timer.getPomoNum(); i++)
			{
				Message.startPomo();
				CountDown.bySleep(timer.getPomodoroTime());			//Pomodoro
				if(i == timer.getPomoNum() - 1)
				{
					Message.startLongBreak();
					CountDown.bySleep(timer.getLongBreakTime());		//Longue pause
				}
				else
				{
					Message.startShortBreak();
					CountDown.bySleep(timer.getShortBreakTime());	//Courte pause
				}
			}
			isContinue = Message.isContinue();
		}while(isContinue);
	}
}

résultat

Voyons le résultat de l'exécution. Après l'exécution, vous pouvez définir l'heure de pomodoro, courte pause, longue pause et le nombre de pomodoro jusqu'à la longue pause en entrant dans la console. Lorsque tous les réglages sont terminés, la minuterie démarre. Cette image a un court laps de temps défini pour montrer l'effet. Une fois qu'un pomodoro est terminé, nous présenterons un message indiquant qu'une courte pause commencera et commencera une courte pause. Après une courte pause, le prochain Pomodoro commencera. Même lors d'une longue pause, cela commence après la présentation d'un message. Après une longue pause, vous pouvez décider de passer à la tâche suivante. Tapez "Y" pour entrer dans la tâche suivante et démarrer Pomodoro. Entrez "N" pour mettre fin à la minuterie.

Cette application console affiche le temps restant ligne par ligne. La raison est de s'assurer que le temps compte correctement d'une seconde. Pour écraser la ligne précédente à chaque fois, il devrait être possible d'utiliser une séquence d'échappement telle que "\ b" ou "\ r" pour le double revêtement de System.out.print (" "). , Cela peut ne pas être possible en fonction de l'environnement tel que la version et le système d'Eclipse. Nous avons vérifié que cela ne peut être réalisé dans cet environnement de mise en œuvre.

Les références

[1] Pomodoro Technique - Wikipedia. https://en.wikipedia.org/wiki/Pomodoro_Technique [2] Cirillo, Francesco. "The pomodoro technique (the pomodoro)." Agile Processes in Software Engineering and 54.2 (2006).

Perspective

Cette fois, je me demandais quel devrait être le thème, et en raison de la lenteur à décider, je n'ai fait qu'une application console. Cependant, dans la perspective de ce système,

  1. Connectez-vous à la base de données et enregistrez le temps et le contenu du travail
  2. Analyse de l'efficacité du travail et conseils
  3. Il est beau s'il s'agit d'une application avec interface graphique ou d'une application Web Etc. peut être réalisé.

en conclusion

C'est ennuyeux, mais merci d'avoir regardé jusqu'au bout. Si j'ai une autre chance, je voudrais exposer le Pomodoro amélioré. Vient ensuite l'article sur les oiseaux. Merci, continuez!


Link Information System Co., Ltd. recrute des collègues avec qui travailler au besoin. Nous recherchons également des demandes de travaux et des partenaires commerciaux. N'hésitez pas à nous contacter (https://www.lis.co.jp/inquiry).

Recommended Posts

Faites votre propre pomodoro
Créez votre propre plugin Elasticsearch
Créez vos propres annotations Java
Créez votre propre serveur simple avec Java et comprenez HTTP
Créez votre propre clavier QMK dans Docker. Volume unique à Windows
Créez votre propre requête de fonction Solr
Utilisez LocationAwareLogger pour votre propre enregistreur
Gérez vos propres annotations en Java
Créez votre propre encodage pour String.getBytes ()
Les articles deviennent désordonnés, alors créez une collection de liens de vos propres articles
Java: essayez d'implémenter vous-même un formateur séparé par des virgules
Essayez d'organiser votre propre orientation d'objet
Créez votre propre validateur avec Bean Validation
Utilisation du composant Talend (5) Créez votre propre composant