[RUBY] Eine Geschichte von sechs Schülern der Mittel- und Oberstufe, die einen Dienst leisten und den ersten Platz bei einem Programmierschulwettbewerb einnehmen

Dieses Mal werden ein Schüler und fünf Schüler alles von der Idee bis zur Implementierung des Dienstes tun und im WEB-Bereich des Programmierwettbewerbs Life is Tech! für Schüler und Schüler der Mittel- und Oberstufe. Ich möchte den ersten Platz einnehmen und darüber sprechen, was ich dachte und fühlte.

0. Mitglieder

Die Mitglieder sind Schüler der Mittel- und Oberstufe von der dritten Klasse der Mittelstufe bis zur dritten Klasse der Oberstufe. Die Entwicklung wurde von einem Team von fünf Schülern mit einem Schüler der Mittelstufe durchgeführt. Es gibt 3 Mädchen und 3 Jungen, und das Verhältnis der Mädchen ist für ein Team von studentischen Ingenieuren hoch, aber normalerweise sind alle sehr nahe beieinander, gehen nach der Schule oder in den Ferien zum Spielen, essen usw. Es ist ein Freund zu tun. (Der Favorit des Teams ist das Angeln, aber ich konnte in letzter Zeit wegen eines Virus nicht ausgehen ... Pien ...)

1. Welche Art von Service haben Sie erbracht?

Der diesmal erstellte Dienst ist eine neue Art von Entwicklungszeitaufzeichnungsdienst, der mit Entwicklern namens Assemble Tempo in Teamschlachten kämpft. assembletempo_toppage.png

Wie können Sie Ihre Motivation erhalten, indem Sie sich das Ziel setzen, "einen Service zu schaffen, der Sie motiviert"? Als ich als Team darüber nachdachte, kam mir die Idee, daraus einen Service im Spielstil zu machen.

Wir diskutierten, welche Art von Spiel als nächstes im Team zu machen ist, aber es wurde zu einer Geschichte, dass wir, wenn wir in Teamkämpfen um die Entwicklungszeit kämpften, die Motivation fortsetzen konnten. Deshalb beschlossen wir, einen Dienst zu schaffen, der in Teamkämpfen um die Entwicklungszeit konkurriert. Hat.

2. Programmiersprache und verwendete Dienste

Programmiersprache

Programmiersprache: Ruby, Javascript Rahmen: Sinatra Entwicklungsumgebung DB: sqlite3 Produktions-DB: PostgreSQL

Der Grund für die Übernahme dieser Informationen liegt darin, dass sie im Webdienst-Kurs von Life is Tech! Übertragen werden. Die meisten Mitglieder haben sie verwendet, und da es Lehrbücher usw. gibt, habe ich beschlossen, dass Bildung einfach ist, auch wenn ich sie nicht verstehe. ist.

Bedienung

Ich habe verschiedene Dienste für die Teamentwicklung genutzt. Zuerst haben wir Google Hangouts und Slack für die Teamkommunikation verwendet. Bei Slack stellten wir Fragen zum Code, neue Ideen und Feedback zu den fertigen Teilen.

Google Hangouts wurde für Online-Besprechungen verwendet, um die Infektion eines bestimmten Virus zu verhindern. Screen Shot 2020-10-07 at 0.58.54.png

Ich habe Github für die gemeinsame Nutzung und Verwaltung von Code und Trello für die Verwaltung von Projektaufgaben verwendet.

Trello sprach mit den Mitgliedern, besprach das weitere Vorgehen und verwendete Etiketten, um Prioritäten, Schwierigkeiten usw. anzugeben. Screen Shot 2020-10-07 at 1.03.34.png

3. Über die Implementierung.

Die Implementierung wurde in Front-End- und Back-End-Teams unterteilt.

Vorderes Ende

Zunächst diskutierten die Mitglieder, welche Art von Bildschirm sie benötigten, und erstellten einen temporären Rahmen. ios__________.jpg

Als ich mich für die Bildschirme entschied, die ich bis zu einem gewissen Grad benötigte, verwendete ich XD, um einen Rahmen zu erstellen. Screen Shot 2020-10-07 at 14.03.25.png

Backend

Wie beim Front-End wurde das Back-End implementiert, indem mit den Mitgliedern besprochen wurde, welche Art von System verwendet werden soll und welche Art von Implementierung durchgeführt werden soll.

Hauptmerkmale des Backends

Benutzerauthentifizierung / E-Mail-Bestätigungsfunktion Diagrammberechnung / Echtzeitaktualisierung des Diagramms (Server-Sendeereignisse) Gruppierungsfunktion Symbolfunktion Timer-Funktion

Ist die Hauptfunktion.

Unter anderem möchte ich die Server Send-Ereignisse und die Timer-Funktion erläutern, deren Implementierung lange gedauert hat.

Server Send events Server-Sendeereignisse sind eine Technologie, die http verwendet, um eine Echtzeitkommunikation durchzuführen, und die als Push vom Server zum Client verwendet werden kann. Der Hauptunterschied zu WebSocket besteht darin, dass es nicht vom Client an den Server senden kann. (Ich benutze stattdessen Ajax)

Server-Send-Ereignisse haben lange gedauert, da es in Sinatra keine Bibliothek gibt und wir sie von Grund auf neu implementieren müssen.

ruby


set :server, 'thin'
$connections = []

get '/send_message' do
	message = "Dies ist eine Nachricht."
	$connections.each do |sse|
		sse << "retry: 500\n" +
					"event: event\n" +
					"data: #{message}\n\n" unless sse.closed?
	end
end

get '/sse', provides: 'text/event-stream' do
	stream :keep_open do |sse|
		$connections << sse
		graph_data.callback {
			$connections.delete(sse)
		}
    end
end

Timer-Funktion

Die Timer-Funktion bereitet eine Tabelle für den Timer vor. Bei einer neuen Erstellung wird ein Timer erstellt, wenn die Tabelle keine Benutzerdaten enthält. Der Timer läuft jetzt ab, wenn die Tabelle Benutzerdaten enthält.

ruby


#Überprüfen Sie, ob die Datenbank bereits Daten enthält
if time = Timers.find_by(Benutzeridentifikation: session[:Benutzersitzung],Startzeit: now_time.all_day,Endzeit: nil)
    #Sparen Sie Entwicklungsendzeit und Entwicklungszeit in DB
	Timers.update(Endzeit: now_time)
else
	#Erstellen Sie einen neuen Timer
    Timers.create(Benutzeridentifikation: session[:Benutzersitzung],Startzeit: now_time)
end

4. Eindrücke der Teamentwicklung

Zum ersten Mal war ich dieses Mal sehr froh, es veröffentlichen zu können, während Mitglieder das Backend entwickelten und die meisten Mitglieder Git noch nie benutzt hatten.

Was ich gelernt habe.

Ich dachte, ich hätte am meisten gelernt, die Funktionen in Teile zu unterteilen und die Mitglieder zu fragen. (PM) Da die Sprachen, die geschrieben werden können, und die Techniken, die verwendet werden können, je nach Mitglied unterschiedlich sind, war es ein großartiges Lernen, sie zu verstehen und die Mitglieder zu fragen. Ist es möglich, eine Technologie zu verwenden, die ich noch nie verwendet habe? Während ich darüber nachdachte, bat ich die Mitglieder, die Funktion zu implementieren! !!

Außerdem konnte ich durch das Unterrichten der Mitglieder, was sie nicht verstanden hatten, eine Menge Output produzieren und Dinge lernen, die ich nicht einmal wusste.

Es war schwer.

Es gibt viele Dinge, die schwierig waren. Zunächst war es schwierig, Git zu unterrichten, da ich das einzige Mitglied war, das Git für die Codeverwaltung und -freigabe verwenden konnte, was für die Teamentwicklung am wichtigsten ist.

In Bezug auf das Problem, das den Schülern eigen ist, war es schwierig, weil jeder unterschiedliche Schulen hatte, so dass es für jeden nur wenige Möglichkeiten gab, Dinge wie Diskussionen zu diskutieren, da der Zeitplan nicht übereinstimmte. Außerdem haben alle aufgehört zu antworten, als es um die Testphase ging, und ich war besorgt, ob ich sie richtig veröffentlichen könnte.

Was ich über die Mitglieder gedacht habe.

Ich denke, es war mein erstes Mal, dass ich ein Team aufgebaut habe, daher war es für mich am Anfang schwierig, Git zu verstehen. Ich dachte jedoch, dass alle mir folgten und eine sehr gute Arbeit leisteten.

Zu Beginn sagten die Mitglieder, die sagten "Ich könnte die Mitglieder stören", auch "Ich bin froh, dass ich es veröffentlichen konnte!" Und "Es hat Spaß gemacht!", Also war ich glücklich.

In Bezug auf Programmierkenntnisse gab es Mitglieder, die Ruby schreiben konnten, und Mitglieder, die sagten "Ich verstehe Ruby überhaupt nicht !!" und die DB (ActiveRecord) verwenden konnten! !! Die Mitglieder schienen zu erkennen, dass sich ihre Fähigkeiten verbessert hatten, und ich fand es erstaunlich, dass sie so weit wachsen konnten, dass sie es fühlen konnten.

5. Schließlich

Es war das erste Mal für mich und die Mitglieder, dieses Team zu entwickeln, aber ich war froh, rechtzeitig zum Wettbewerb auf dem ersten Platz zu sein. In dieser Teamentwicklung gab es viele Überlegungen zu PM, Entwicklungsumgebung, Support und Implementierung, aber ich hoffe, dass sie für die zukünftige Entwicklung verwendet werden kann.

Wir diskutieren, welche Funktionen in Zukunft implementiert werden sollen, und wir planen, sie zu aktualisieren. Es wäre also großartig, wenn Sie den Service nutzen könnten, um Ihre Motivation für die Entwicklung zu steigern! !!

Recommended Posts

Eine Geschichte von sechs Schülern der Mittel- und Oberstufe, die einen Dienst leisten und den ersten Platz bei einem Programmierschulwettbewerb einnehmen
[Der weltweit größte Schüler der Mittel- und Oberstufe, Robocon] Über das FRC-Programm ~ Über Begriffe usw. ~
Die Geschichte des Lernens von Java in der ersten Programmierung
[Der weltweit größte Schüler der Mittel- und Oberstufe, Robocon] Über das FRC-Programm ~ Grabber related ~
[Der weltweit größte Schüler der Mittel- und Oberstufe, Robocon] Über das FRC-Programm ~ Lift related ~
[Der weltweit größte Schüler der Mittel- und Oberstufe, Robocon] Über das Programm bei FRC ~ Main related ~
Programmierung und Mathematik an der High School