Merge branch 'master' into bug1873

This commit is contained in:
Axel Uhl committed 2023-11-15 16:02:25 +01:00
commit 9628231d4b
49 files changed
+515 -305

No files matched your search

+2 -2
View File
@@ -50,9 +50,9 @@ allprojects {
ext {
// regular
buildTools = "30.0.3"
compileSdk = 31
compileSdk = 33
minSdk = 16
targetSdk = 31
targetSdk = 33
sourceCompatibilityVersion = JavaVersion.VERSION_1_8
targetCompatibilityVersion = JavaVersion.VERSION_1_8
+1 -4
View File
@@ -1,6 +1,3 @@
0 10 1 * * export PATH=/bin:/usr/bin:/usr/local/bin; mail-events-on-my >/dev/null 2>/dev/null
* * * * * export PATH=/bin:/usr/bin:/usr/local/bin; sleep $(( $RANDOM * 60 / 32768 )); update_authorized_keys_for_landscape_managers_if_changed $( cat /root/ssh-key-reader.token ) https://security-service.sapsailing.com /root 2>&1 >>/var/log/sailing.err
0 7 2 * * export PATH=/bin:/usr/bin:/usr/local/bin; docker exec -it registry-registry-1 registry garbage-collect /etc/docker/registry/config.yml
# * * * * * export PATH=/bin:/usr/bin:/usr/local/bin; sleep $(( $RANDOM * 60 / 32768 )); update_authorized_keys_for_landscape_managers_if_changed $( cat /home/httpdGit/ssh-key-reader.token ) https://security-service.sapsailing.com /home/httpd 2>&1 >>/var/log/sailing.err #only on httpdGit
#*/5 * * * * /path/to/file/mailIfDown.sh #only on archive
#*/2 * * * * /<location>/updateHttpd.sh #only on disposableRevProxies
#*/2 * * * * /<location>/updateHttpd.sh #only on disposableRevProxies
+1
View File
@@ -401,6 +401,7 @@ https://event3.tractrac.com/events/event_20230629_TheOceanRa/jsonservice.php
https://event3.tractrac.com/events/event_20230706_ParisOlymp/jsonservice.php
https://event3.tractrac.com/events/event_20230809_AllianzPar/jsonservice.php
https://event3.tractrac.com/events/event_20230809_AllianzSai1/jsonservice.php
https://event3.tractrac.com/events/event_20231105_Europeaner/jsonservice.php
https://event.tractrac.com/events/event_20170727_Travemnder2/jsonservice.php
https://event.tractrac.com/events/event_20171013_DSLPokalGl/jsonservice.php
https://event.tractrac.com/events/event_20181012_MstarnasMs/jsonservice.php
@@ -24,7 +24,7 @@ Team=Team
SearchTag=Search Tag
LeaderboardSailingDomainRetrieverChain=Leaderboards
RaceSailingDomainRetrieverChain=Races
LegSailingDomainRetrieverChain=Legs
LegOfCompetitorSailingDomainRetrieverChain=Legs of Competitors
GPSFixSailingDomainRetrieverChain=GPS Fixes
BravoFixSailingDomainRetrieverChain=Bravo Fixes
BravoFixTrackSailingDomainRetrieverChain=Bravo Tracks
@@ -254,4 +254,6 @@ CompetitorDaySailingDomainRetrieverChain=Competitor-Day for race
LowestSpeed=Lowest Speed
SpeedChange=Speed Change
MaximumTurningRate=Maximum turning rate (°/s)
AverageTurningRate=Average turning rate (°/s)
AverageTurningRate=Average turning rate (°/s)
LengthOfTheLeg=Length of the Leg
LegSailingDomainRetrieverChain=Leg
@@ -10,8 +10,8 @@ Acronym=Abkürzung
SailID=Segelnummer
BoatName=Bootsname
Color=Farbe
LegNumber=Nummer des Schenkels
LegType=Art des Schenkels
LegNumber=Nummer des Bahnschenkels
LegType=Art des Bahnschenkels
Year=Jahr
Regatta=Regatta
CourseArea=Regattabahn
@@ -21,7 +21,7 @@ RaceColumn=Rennspalte
Race=Rennen
LeaderboardSailingDomainRetrieverChain=Leaderboards
RaceSailingDomainRetrieverChain=Rennen
LegSailingDomainRetrieverChain=Schenkel
LegOfCompetitorSailingDomainRetrieverChain=Bahnschenkel eines Teilnehmers
GPSFixSailingDomainRetrieverChain=GPS-Fixes
BravoFixSailingDomainRetrieverChain=Bravo-Fixes
BravoFixTrackSailingDomainRetrieverChain=Bravo Messreihen
@@ -35,9 +35,9 @@ RaceOfCompetitorSailingDomainRetrieverChain=Rennen eines Teilnehmers
ManeuverSailingDomainRetrieverChain=Manöver
LeaderboardGroup=Ranglisten Gruppe
Leaderboard=Rangliste
Leg=Schenkel
Leg=Bahnschenkel
MarkPassing=Tonnenrundung
LegOfCompetitor=Schenkel eines Teilnehmers
LegOfCompetitor=Bahnschenkel eines Teilnehmers
GpsFix=GPS-Fix
BravoFix=Bravo-Fix
LineLengthAtStart=Länge der Startlinie zum Startzeitpunkt
@@ -117,7 +117,7 @@ RankThirtySecondsAfterStart=Absolute Platzierung 30s nach dem Startzeitpunkt
WindwardDistanceToAdvantageousEndOfLineAtStartOfRace=Windwärtige Distanz zum Bevorteilten Ende der Startlinie zum Start des Rennens
WindwardDistanceToAdvantageousEndOfLineAtStartOfCompetitor=Windwärtige Distanz zum Bevorteilten Ende der Startlinie zum Start des Teilnehmers
AbsoluteWindwardDistanceToStarboardSideAtStartOfCompetitor=Absolute Windwärtige Distanz zur Steuerbordseite beim Start des Teilnehmers
RankAfterHalfOfTheFirstLeg=Platzierung nach der Hälfte des ersten Schenkels
RankAfterHalfOfTheFirstLeg=Platzierung nach der Hälfte des ersten Bahnschenkels
AdvantageousEndOfLine=Bevorteiltes Ende der Startlinie
AdvantageOfStarboardSideOfStartLine=Vorteil der Steuerbord-Seite der Startlinie
TrueWindAngleOfStartLineSeenFromStarboardSide=Winkel der Startlinie zum wahren Wind vom Steuerbord-Ende aus gesehen
@@ -257,4 +257,6 @@ CompetitorDaySailingDomainRetrieverChain=Teilnehmer-Tag für Wettfahrt
LowestSpeed=Niedrigste Geschwindigkeit
SpeedChange=Geschwindigkeits-Änderung
MaximumTurningRate=Maximale Drehgeschwindigkeit (°/s)
AverageTurningRate=Durchschnittliche Drehgeschwindigkeit (°/s)
AverageTurningRate=Durchschnittliche Drehgeschwindigkeit (°/s)
LengthOfTheLeg=Länge eines Bahnschenkels
LegSailingDomainRetrieverChain=Bahnschenkel
@@ -249,8 +249,8 @@ IRM=IRM コード (OCS、DNC、DNF など)
XTE=クロストラックエラー
AbsoluteXTE=絶対クロストラックエラー
Day=日
CompetitorDay=競技者日
CompetitorDaySailingDomainRetrieverChain=レースの競技者-日
CompetitorDay=競技者日数
CompetitorDaySailingDomainRetrieverChain=レースの競技者日数
LowestSpeed=最低速度
SpeedChange=速度変更
MaximumTurningRate=最大回転率 (°/s)
@@ -98,9 +98,14 @@ public class SailingDataRetrievalChainDefinitions {
HasFoilingSegmentContext.class, FoilingSegmentsDataMiningSettings.class, FoilingSegmentsDataMiningSettings.createDefaultSettings(), "FoilingSegments");
dataRetrieverChainDefinitions.add(foilingSegmentsRetrieverChainDefinition);
//
final DataRetrieverChainDefinition<RacingEventService, HasTrackedLegContext> legRetrieverChainDefinition = new SimpleDataRetrieverChainDefinition<>(
trackedRaceRetrieverChainDefinition, HasTrackedLegContext.class, "LegSailingDomainRetrieverChain");
legRetrieverChainDefinition.endWith(TrackedRaceRetrievalProcessor.class, TrackedLegRetrievalProcessor.class,
HasTrackedLegContext.class, "Leg");
dataRetrieverChainDefinitions.add(legRetrieverChainDefinition);
//
final DataRetrieverChainDefinition<RacingEventService, HasTrackedLegOfCompetitorContext> legOfCompetitorRetrieverChainDefinition = new SimpleDataRetrieverChainDefinition<>(
trackedRaceRetrieverChainDefinition, HasTrackedLegOfCompetitorContext.class, "LegSailingDomainRetrieverChain");
legOfCompetitorRetrieverChainDefinition.addAfter(TrackedRaceRetrievalProcessor.class, TrackedLegRetrievalProcessor.class, HasTrackedLegContext.class, "Leg");
legRetrieverChainDefinition, HasTrackedLegOfCompetitorContext.class, "LegOfCompetitorSailingDomainRetrieverChain");
legOfCompetitorRetrieverChainDefinition.endWith(TrackedLegRetrievalProcessor.class, TrackedLegOfCompetitorRetrievalProcessor.class,
HasTrackedLegOfCompetitorContext.class, "LegOfCompetitor");
dataRetrieverChainDefinitions.add(legOfCompetitorRetrieverChainDefinition);
@@ -2,8 +2,10 @@ package com.sap.sailing.datamining.data;
import com.sap.sailing.domain.common.LegType;
import com.sap.sailing.domain.tracking.TrackedLeg;
import com.sap.sse.common.Distance;
import com.sap.sse.datamining.annotations.Connector;
import com.sap.sse.datamining.annotations.Dimension;
import com.sap.sse.datamining.annotations.Statistic;
public interface HasTrackedLegContext {
@@ -16,5 +18,6 @@ public interface HasTrackedLegContext {
public LegType getLegType();
@Dimension(messageKey="LegNumber", ordinal=7)
public int getLegNumber();
@Statistic(messageKey = "LengthOfTheLeg", resultDecimals = 2)
Distance getLegLength();
}
@@ -6,6 +6,7 @@ import com.sap.sailing.domain.common.LegType;
import com.sap.sailing.domain.common.NoWindException;
import com.sap.sailing.domain.tracking.TrackedLeg;
import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor;
import com.sap.sse.common.Distance;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.impl.MillisecondsTimePoint;
@@ -97,5 +98,9 @@ public class TrackedLegWithContext implements HasTrackedLegContext {
}
return at;
}
@Override
public Distance getLegLength() {
return getTrackedLeg().getWindwardDistance();
}
}
@@ -460,9 +460,8 @@ public class TrackedRaceWithContext implements HasTrackedRaceContext {
if (timePoint != null) {
final Position courseCenter = getTrackedRace().getCenterOfCourse(timePoint);
if (courseCenter != null) {
TimeZone timeZone;
try {
timeZone = ReverseGeocoder.INSTANCE.getTimeZone(courseCenter, timePoint);
final TimeZone timeZone = ReverseGeocoder.INSTANCE.getTimeZone(courseCenter, timePoint);
final DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
df.setTimeZone(timeZone);
cachedDayAsISO = df.format(timePoint.asDate());
@@ -2,7 +2,7 @@
<launchConfiguration type="com.github.sdbg.debug.core.chromeLaunchConfig">
<stringAttribute key="applicationArguments" value=""/>
<stringAttribute key="applicationName" value=""/>
<stringAttribute key="browserSearchOrder" value="chromium,chrome,edge,firefox"/>
<stringAttribute key="browserSearchOrder" value="chrome,chromium,edge,firefox"/>
<booleanAttribute key="launchFile" value="false"/>
<booleanAttribute key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
@@ -4,6 +4,14 @@
<div id="mainContent">
<h4 class="articleHeadline">What's New - SAP Sailing Analytics</h4>
<div class="innerContent">
<h5 class="articleSubheadline">November 2023</h5>
<ul class="bulletList">
<li>Added statistics for length of a leg to the Data Mining module.</li>
</ul>
<h5 class="articleSubheadline">October 2023</h5>
<ul class="bulletList">
<li>Competitor charts sometimes wouldn't update properly in live mode. This has now been fixed.</li>
</ul>
<h5 class="articleSubheadline">September 2023</h5>
<ul class="bulletList">
<li>Added statistics for maneuvers to Data Mining module to match capabilities of
@@ -16,8 +16,6 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog;
* this class offers the UI components and validation rules that help in composing a UI that, among other things, allows a user
* to configure the discarding thresholds.<p>
*
* TODO produce error messages during validation
*
* @author Axel Uhl (d043530)
*
*/
@@ -82,7 +80,7 @@ public class DiscardThresholdBoxes {
private Widget createDiscardThresholdBoxesPanel(StringMessages stringMessages) {
assert discardThresholdBoxes != null && discardThresholdBoxes.length == MAX_NUMBER_OF_DISCARDED_RESULTS;
final VerticalPanel vp = new VerticalPanel();
vp.add(new Label(stringMessages.discardRacesFromHowManyStartedRacesOn()));
vp.add(new Label(stringMessages.applyDiscardsBasedOnNumberOfScoredRaces(MAX_NUMBER_OF_DISCARDED_RESULTS)));
final Grid grid = new Grid(0, 2*NUMBER_OF_BOXES_PER_LINE);
grid.setCellSpacing(3);
vp.add(grid);
@@ -52,7 +52,8 @@ unlink=Unlink
leaderboardName=Leaderboard Name
pleaseEnterAName=Please enter a name
pleaseEnterABoatClass=Please enter a boat class
discardRacesFromHowManyStartedRacesOn=Discard one more race starting with how many started races
discardRacesFromHowManyStartedRacesOn=Discard one or more races, starting with how many started races there are
applyDiscardsBasedOnNumberOfScoredRaces=Configure discards. Enter into box X, the number of scored races required to apply the Xth discard. Maximum discards: {0}.
leaderboardWithThisNameAlreadyExists=Leaderboard with this name already exists
discardThresholdsMustBeNumeric=Discard thresholds must be numeric
discardThresholdsMustBeAscending=Discard thresholds must be ascending
@@ -52,7 +52,8 @@ unlink=Odpojit
leaderboardName=Název výsledkové tabule
pleaseEnterAName=Zadejte název
pleaseEnterABoatClass=Zadejte lodní třídu
discardRacesFromHowManyStartedRacesOn=Vyřadit ještě jednu rozjížďku počínaje počtem odstartovaných rozjížděk
discardRacesFromHowManyStartedRacesOn=Vyřadit jednu nebo více rozjížděk počínaje počtem odstartovaných rozjížděk
applyDiscardsBasedOnNumberOfScoredRaces=Nakonfigurujte vyřazení. Zadejte do pole X počet bodovaných rozjížděk vyžadovaných k použití X-tého vyřazení. Maximum vyřazení: {0}.
leaderboardWithThisNameAlreadyExists=Výsledková tabule s tímto názvem již existuje
discardThresholdsMustBeNumeric=Prahy vyřazení musejí být numerické
discardThresholdsMustBeAscending=Prahy vyřazení musejí být vzestupné
@@ -52,7 +52,8 @@ unlink=Fjern tilknytning
leaderboardName=Ranglistenavn
pleaseEnterAName=Indtast et navn
pleaseEnterABoatClass=Indtast en bådklasse
discardRacesFromHowManyStartedRacesOn=Opgiv en kapsejlads mere startende med hvor mange startede kapsejladser
discardRacesFromHowManyStartedRacesOn=Opgiv en eller flere kapsejladser, startende med hvor mange startede kapsejladser der er
applyDiscardsBasedOnNumberOfScoredRaces=Konfigurer opgivelser. Indtast i felt X antallet af pointgivne kapsejladser, der kræves for at anvende den X''te opgivelse. Maks. antal opgivelser: {0}.
leaderboardWithThisNameAlreadyExists=Rangliste med dette navn findes allerede
discardThresholdsMustBeNumeric=Opgivelsesgrænser skal være numeriske
discardThresholdsMustBeAscending=Opgivelsesgrænser skal være stigende
@@ -22,7 +22,7 @@ racesAndTracking=Wettfahrten/Tracking
tracked=getracked
time=Zeit
linkedRaces=Verknüpfte Rennen
timeTooltip=Zeit, die der Teilnehmer auf diesem Schenkel gesegelt ist. Beim ersten Schenkel zählt die Zeit ab Überquerung der Startlinie.
timeTooltip=Zeit, die der Teilnehmer auf diesem Bahnschenkel gesegelt ist. Beim ersten Bahnschenkel zählt die Zeit ab Überquerung der Startlinie.
playSpeed=Abspielgeschwindigkeit
playSpeedHelp="1" für normale Abspielgeschwindigkeit, "2" für doppelte Geschwindigkeit usw.
playModeLive=Live
@@ -53,6 +53,7 @@ leaderboardName=Name der Rangliste
pleaseEnterAName=Bitte geben Sie einen Namen ein.
pleaseEnterABoatClass=Bitte geben Sie eine Bootsklasse ein.
discardRacesFromHowManyStartedRacesOn=Discard one more race starting with how many started races
applyDiscardsBasedOnNumberOfScoredRaces=Streicher konfigurieren: in Feld X die Anzahl gewerteter Wettfahrten eingeben, ab welcher der X-te Streicher angewendet werden soll. Maximal {0} Streicher.
leaderboardWithThisNameAlreadyExists=Eine Rangliste mit diesem Namen existiert bereits.
discardThresholdsMustBeNumeric=Discard thresholds must be numeric
discardThresholdsMustBeAscending=Discard thresholds must be ascending
@@ -76,10 +77,10 @@ expand=+
leg=L
distanceInMeters=Distanz
averageSpeedInKnots=\u2205 FüG
averageSpeedInKnotsTooltip=Die durchschnittliche Fahrt über Grund auf diesem Schenkel,\nberechnet durch die Division der gefahrenen Distanz durch die benötigte Zeit.
averageSpeedInKnotsTooltip=Die durchschnittliche Fahrt über Grund auf diesem Bahnschenkel,\nberechnet durch die Division der gefahrenen Distanz durch die benötigte Zeit.
raceAverageSpeedInKnotsTooltip=Die durchschnittliche Fahrt über Grund in diesem Rennen,\nberechnet durch die Division der gefahrenen Distanz durch die benötigte Zeit.
rankGain=Platz +/-
rankGainTooltip=Die Differenz zwischen der Platzierung im aktuellen und im vorangegangenen Schenkel
rankGainTooltip=Die Differenz zwischen der Platzierung im aktuellen und im vorangegangenen Bahnschenkel
sapSailingAnalytics=Sailing Analytics
leaderboard=Rangliste
leaderboards=Ranglisten
@@ -95,7 +96,7 @@ gapToLeaderInSecondsTooltip=Schätzt die (berechnete) Ankunftszeit an der jetzig
velocityMadeGoodInKnots=VMG
velocityMadeGoodInKnotsTooltip=Die effektive Geschwindigkeit zum Ziel; auf der Kreuz die windwärtige Geschwindigkeit; auf der Vorwindstrecke die leewärtige Geschwindigkeit
windwardDistanceToGoInMeters=Abstand in Windrichtung zur nächsten Bahnmarke
windwardDistanceToGoInMetersTooltip=Windwärtige / leewärtige Distanz des Teilnehmerns bis zum Ende des Schenkels auf Kreuz bzw. Vorwindstrecke; Strecke entlang des Schenkels bei Holeschlägen
windwardDistanceToGoInMetersTooltip=Windwärtige / leewärtige Distanz des Teilnehmerns bis zum Ende des Schenkels auf Kreuz bzw. Vorwindstrecke; Strecke entlang des Bahnschenkels bei Holeschlägen
windwardDistanceToCompetitorFarthestAheadInMeters=Rückstand
windwardDistanceToCompetitorFarthestAheadInMetersTooltip=Windwärtiger Abstand zum Boot, das bisher am weitesten windwärts gesegelt ist.\nFür Handicap-Wertungen ist das nicht notwendigerweise der nach Verrechnung in Führung liegende Teilnehmer.
name=Name
@@ -151,7 +152,7 @@ timing=Timing
raceDetailsToShow=Renndetails
tracking=Tracking
overallDetailsToShow=Regatta-Details
legDetailsToShow=Schenkeldetails
legDetailsToShow=Bahnschenkeldetails
showCarryColumn=Spalte Übertrag
showCarryColumnCheckbox=Spalte Übertrag anzeigen
showCarryColumnTitle=Spalte Übertrag anzeigen
@@ -165,7 +166,7 @@ selectedRaces=Welche Rennen möchten Sie angezeigt bekommen?
lengthInSeconds=Länge (s)
stressTest=Stresstest
numberOfManeuvers=Manöver
numberOfManeuversTooltip=Die Anzahl der gesegelten Manöver in diesem Schenkel
numberOfManeuversTooltip=Die Anzahl der gesegelten Manöver in diesem Bahnschenkel
numberOfManeuversInRaceTooltip=Die Anzahl der gesegelten Manöver in diesem Rennen
tacks=Wenden
jibes=Halsen
@@ -175,7 +176,7 @@ maneuverTypes=Manöver
chooseChart=Diagramm wählen
raceNameEmpty=Rennname leer
distanceTraveled=Zurückgelegte Strecke
distanceTraveledTooltip=Die zurückgelegt Strecke vom Start des Schenkels bis zum Ende\noder bis zum aktuellen Zeitpunkt, falls der Schenkel noch nicht beendet ist.
distanceTraveledTooltip=Die zurückgelegt Strecke vom Start des Schenkels bis zum Ende\noder bis zum aktuellen Zeitpunkt, falls der Bahnschenkel noch nicht beendet ist.
raceDistanceTraveledTooltip=Die zurückgelegte Strecke vom Start des Rennens, bis zum Ende\noder bis zum aktuellen Zeitpunkt, falls das Rennen noch nicht beendet ist.
velocityMadeGoodLong=Velocity Made Good
speedOverGroundLong=Speed Over Ground
@@ -297,9 +298,9 @@ leaderboardGroups=Ranglisten-Gruppen
filterLeaderboardGroupsByName=Ranglisten-Gruppen nach Name filtern
createNewLeaderboardGroup=Neue Ranglisten-Gruppe erstellen
leaderboardGroupConfiguration=Ranglistengruppen-Konfiguration
legs=Schenkel
currentLeg=Aktueller Schenkel
currentLegTooltip=Schenkel auf dem sich der Teilnehmer aktuell befindet
legs=Bahnschenkel
currentLeg=Aktueller Bahnschenkel
currentLegTooltip=Bahnschenkel auf dem sich der Teilnehmer aktuell befindet
leaderboardGroup=Ranglisten-Gruppe
pleaseEnterNonEmptyDescription=Bitte eine nicht-leere Beschreibung eingeben
groupWithThisNameAlreadyExists=Ranglisten-Gruppe mit diesem Namen existiert bereits
@@ -366,11 +367,11 @@ replication=Replikation
averageAbsoluteCrossTrackErrorInMeters=\u2205 XTE
averageAbsoluteCrossTrackErrorInMetersTooltip=Die durchschnittliche Querabweichung zur Kursmittellinie in diesem Schenkel; die Seite, zu der der Teilnehmer abweicht, spielt dabei keine Rolle; aktueller Wert während des Bahnschenkels, danach der Durchschnittswert.
averageSignedCrossTrackErrorInMeters=\u2205 XTE +/-
averageSignedCrossTrackErrorInMetersTooltip=Die durchschnittliche Querabweichung zur Kursmittellinie in diesem Schenkel, wobei negative Werte Abweichungen nach links, positive Werte Abweichungen nach rechts bedeuten; aktueller Wert während des Bahnschenkels, danach der Durchschnittswert.
averageSignedCrossTrackErrorInMetersTooltip=Die durchschnittliche Querabweichung zur Kursmittellinie in diesem Bahnschenkel, wobei negative Werte Abweichungen nach links, positive Werte Abweichungen nach rechts bedeuten; aktueller Wert während des Bahnschenkels, danach der Durchschnittswert.
currentAbsoluteCrossTrackErrorInMeters=\u2205 XTE
currentAbsoluteCrossTrackErrorInMetersTooltip=Die momentane Querabweichung zur Kursmittellinie in diesem Schenkel; die Seite, zu der der Teilnehmer abweicht, spielt dabei keine Rolle; nur verfügbar, wenn der Teilnehmer zum angefragten Zeitpunkt in einem/dem Bahnschenkel segelt.
currentAbsoluteCrossTrackErrorInMetersTooltip=Die momentane Querabweichung zur Kursmittellinie in diesem Bahnschenkel; die Seite, zu der der Teilnehmer abweicht, spielt dabei keine Rolle; nur verfügbar, wenn der Teilnehmer zum angefragten Zeitpunkt in einem/dem Bahnschenkel segelt.
currentSignedCrossTrackErrorInMeters=\u2205 XTE +/-
currentSignedCrossTrackErrorInMetersTooltip=Die durchschnittliche Querabweichung zur Kursmittellinie in diesem Schenkel, wobei negative Werte Abweichungen nach links, positive Werte Abweichungen nach rechts bedeuten; nur verfügbar, wenn der Teilnehmer zum angefragten Zeitpunkt in einem/dem Bahnschenkel segelt.
currentSignedCrossTrackErrorInMetersTooltip=Die durchschnittliche Querabweichung zur Kursmittellinie in diesem Bahnschenkel, wobei negative Werte Abweichungen nach links, positive Werte Abweichungen nach rechts bedeuten; nur verfügbar, wenn der Teilnehmer zum angefragten Zeitpunkt in einem/dem Bahnschenkel segelt.
raceAverageAbsoluteCrossTrackErrorInMetersTooltip=Die durchschnittliche Querabweichung zur Kursmittellinie für alle Kreuzen in diesem Rennen; die Seite, zu der der Teilnehmer abweicht, spielt dabei keine Rolle; aktueller Wert während des Bahnschenkels, danach der Durchschnittswert.
raceAverageSignedCrossTrackErrorInMetersTooltip=Die durchschnittliche Querabweichung zur Kursmittellinie für alle Kreuzen diesem Rennen, wobei negative Werte Abweichungen nach links, positive Werte Abweichungen nach rechts bedeuten.
helpLines=Hilfslinien
@@ -858,7 +859,7 @@ polarDiagramButton=Polardiagramm
ratioBetweenTimeSinceLastPositionFixAndAverageSamplingInterval=GPS Verzug
ratioBetweenTimeSinceLastPositionFixAndAverageSamplingIntervalTooltip=Verhältnis zwischen dem Alter der zuletzt empfangenen GPS-Position und dem durchschnittlichen Abtastintervall
trackingQuality=Tracking-Qualität
legType=Art des Schenkels
legType=Art des Bahnschenkels
sailID=Segelnummer
seriesLeaderboard=Rangliste der Serie
regattaLeaderboards=Ranglisten der Regatta
@@ -1273,7 +1274,7 @@ orMultipleEmails=oder mehrere E-Mails (Komma-separiert)
courseOverGroundTrueDegreesTooltip=Rechtweisender Kurs über Grund in Grad
courseOverGroundTrueDegrees=KüG
distanceIncludingGateStartInMeters=Distanz (m. Torstart)
distanceTraveledIncludingGateStartTooltip=Die zurückgelegt Strecke vom Start des Schenkels bis zum Ende\noder bis zum aktuellen Zeitpunkt, falls der Schenkel noch nicht beendet ist.\nEnthält der Schenkel einen Torstart, so wird die Distanz vom Pin End bis zur Startposition des Teilnehmers hinzugezählt,\num so vergleichbare Distanzen auch für Teilneher zu erhalten, die zu verschiedenen Zeiten gestartet sind.
distanceTraveledIncludingGateStartTooltip=Die zurückgelegt Strecke vom Start des Bahnschenkels bis zum Ende\noder bis zum aktuellen Zeitpunkt, falls der Bahnschenkel noch nicht beendet ist.\nEnthält der Bahnschenkel einen Torstart, so wird die Distanz vom Pin End bis zur Startposition des Teilnehmers hinzugezählt,\num so vergleichbare Distanzen auch für Teilneher zu erhalten, die zu verschiedenen Zeiten gestartet sind.
raceDistanceTraveledIncludingGateStartTooltip=Die zurückgelegte Strecke vom Start des Rennens, bis zum Ende\noder bis zum aktuellen Zeitpunkt, falls das Rennen noch nicht beendet ist. Bei einem Torstart wird die Distanz vom Pin End bis zur Startposition des Teilnehmers hinzugezählt,\num so vergleichbare Distanzen auch für Teilneher zu erhalten, die zu verschiedenen Zeiten gestartet sind.
dashboardHeader=Dashboard
dashboardNoWindBotAvailableHeader=Wind Bot nicht verfügbar.
@@ -1328,7 +1329,7 @@ eventsCount[one]={0,number} Veranstaltung
competitorsCount={0,number} Teams
courseAreaName=Regattabahn: {0}
competitorsCount[one]={0,number} Team
currentOfTotalLegs=Schenkel {0,number}/{1,number}
currentOfTotalLegs=Bahnschenkel {0,number}/{1,number}
clone=Clone
changed=Changed
matcher=Matcher
@@ -2247,7 +2248,7 @@ errorAssigningCertificates: Fehler beim Zuweisen von Messbriefen zu Booten: {0}
insertedAndReplacedAndRemovedCertificateAssignments=Neue Messbriefzuweisungen: {0}. Geänderte Zuweisungen: {1}. Gelöschte Zuweisungen: {2}.
spreadTotalDistanceProportionallyAcrossLegs=Gesamtdistanz proportional auf Bahnschenkel verteilen
trackedTwaInDegrees=Getrackter TWA (°)
trackedDistanceInNauticalMiles=Getrackte Schenkel-Distanz (NM)
trackedDistanceInNauticalMiles=Getrackte Bahnschenkel-Distanz (NM)
useTrackedData=Tracking-Werte verwenden
totalDistance=Gesamtdistanz (NM)
setAllLegsToType=Typ für alle Bahnschenkel setzen
@@ -52,7 +52,8 @@ unlink=Quitar enlace
leaderboardName=Nombre de tabla de clasificación
pleaseEnterAName=Indique un nombre
pleaseEnterABoatClass=Indique una clase de embarcación
discardRacesFromHowManyStartedRacesOn=Descartar un inicio de prueba más con cuántas pruebas iniciadas
discardRacesFromHowManyStartedRacesOn=Descarte una o más pruebas comenzando por cuántas pruebas iniciadas hay
applyDiscardsBasedOnNumberOfScoredRaces=Configurar descartadas. Introduzca en la casilla X el número de pruebas puntuadas necesario para aplicar el descarte X. Máximo de descarte: {0}.
leaderboardWithThisNameAlreadyExists=Ya hay una tabla de clasificación con este nombre.
discardThresholdsMustBeNumeric=Los umbrales de rechazo deben ser numéricos
discardThresholdsMustBeAscending=Los umbrales de rechazo deben ser ascendentes
@@ -52,7 +52,8 @@ unlink=Annuler Lier
leaderboardName=Nom du palmarès
pleaseEnterAName=Saisissez un nom.
pleaseEnterABoatClass=Saisissez une catégorie de bateau.
discardRacesFromHowManyStartedRacesOn=Éliminez une course de plus en commençant au nombre de courses déjà lancées.
discardRacesFromHowManyStartedRacesOn=Éliminez une ou plusieurs courses, en partant du nombre de courses déjà lancées.
applyDiscardsBasedOnNumberOfScoredRaces=Configurez les éliminations. Dans la case X, saisissez le nombre de courses (avec classement) requis pour que l''élimination au Xe s''applique. Nombre d''éliminations au maximum : {0}.
leaderboardWithThisNameAlreadyExists=Un palmarès de ce nom existe déjà.
discardThresholdsMustBeNumeric=Les seuils d''élimination doivent être numériques.
discardThresholdsMustBeAscending=Les seuils d''élimination doivent être ascendants.
@@ -52,7 +52,8 @@ unlink=Annulla collegamento
leaderboardName=Nome classifica
pleaseEnterAName=Inserire un nome
pleaseEnterABoatClass=Inserire una classe della barca
discardRacesFromHowManyStartedRacesOn=Scartare ancora una gara tra quelle iniziate
discardRacesFromHowManyStartedRacesOn=Eliminare una o più gare, iniziando dal numero di gare iniziate
applyDiscardsBasedOnNumberOfScoredRaces=Configurare le eliminazioni. Inserire nella casella X il numero di gare portate a termine richiesto per applicare la X° eliminazione. Numero massimo di eliminazioni: {0}.
leaderboardWithThisNameAlreadyExists=Esiste già una classifica con questo nome
discardThresholdsMustBeNumeric=Le soglie di scarto devono essere numeriche
discardThresholdsMustBeAscending=Le soglie di scarto devono essere in ordine ascendente
@@ -52,7 +52,8 @@ unlink=リンク解除
leaderboardName=リーダーボード名
pleaseEnterAName=名称を入力してください
pleaseEnterABoatClass=艇種を入力してください
discardRacesFromHowManyStartedRacesOn=レース除外 (スタート済レースから)
discardRacesFromHowManyStartedRacesOn=1 つ以上のレースを除外 (スタート済みレースがいくつ存在しているかから開始)
applyDiscardsBasedOnNumberOfScoredRaces=除外を設定します。X 番目の除外を適用するために必要な得点済みレースの数を X ボックスに入力します。最大除外数: {0}。
leaderboardWithThisNameAlreadyExists=この名称のリーダーボードは登録されています
discardThresholdsMustBeNumeric=破棄しきい値は数値でなければなりません
discardThresholdsMustBeAscending=破棄しきい値は昇順でなければなりません
@@ -52,7 +52,8 @@ unlink=Eliminar link
leaderboardName=Nome do painel de classificação
pleaseEnterAName=Insira um nome
pleaseEnterABoatClass=Insira uma classe de barcos
discardRacesFromHowManyStartedRacesOn=Descartar mais um corrida a partir de quantas corridas iniciadas
discardRacesFromHowManyStartedRacesOn=Rejeitar uma ou mais corridas, começando com quantas corridas iniciadas existem
applyDiscardsBasedOnNumberOfScoredRaces=Configure as rejeições. Insira no campo de seleção X o número de corridas pontuadas necessárias para aplicar a Xª rejeição. Máximo de rejeições: {0}.
leaderboardWithThisNameAlreadyExists=Já existe um painel de classificação com este nome
discardThresholdsMustBeNumeric=Os limites do descarte devem ser numéricos
discardThresholdsMustBeAscending=Os limites do descarte devem estar em ordem crescente
@@ -52,7 +52,8 @@ unlink=Отменить связывание
leaderboardName=Название таблицы лидеров
pleaseEnterAName=Введите название
pleaseEnterABoatClass=Введите класс лодки
discardRacesFromHowManyStartedRacesOn=Исключить еще одну гонку, начиная с числа стартов в гонках
discardRacesFromHowManyStartedRacesOn=Исключите одну или несколько гонок, исходя из числа стартов в гонках
applyDiscardsBasedOnNumberOfScoredRaces=Настройте исключение. Введите в поле X, число оцениваемых гонок, необходимое для применения исключения X. Максимум исключений: {0}.
leaderboardWithThisNameAlreadyExists=Таблица лидеров с таким названием уже существует
discardThresholdsMustBeNumeric=Пороги исключения должны быть числовыми
discardThresholdsMustBeAscending=Пороги исключения должны возрастать
@@ -52,7 +52,8 @@ unlink=Odstrani povezavo
leaderboardName=Ime lestvice vodilnih
pleaseEnterAName=Vnesite ime
pleaseEnterABoatClass=Vnesite kategorijo jadrnice
discardRacesFromHowManyStartedRacesOn=Odstranite še en plov, ki se začne s številom začetih plovov
discardRacesFromHowManyStartedRacesOn=Odstranite enega ali več plovov, ki se začne s številom razpoložljivih plovov
applyDiscardsBasedOnNumberOfScoredRaces=Konfigurirajte odstranitve. V okvirček vnesite X, število točkovanih plovov, potrebnih za uporabo X.  odstranitve. Največje število odstranitev: {0}.
leaderboardWithThisNameAlreadyExists=Lestvica vodilnih s tem imenom že obstaja
discardThresholdsMustBeNumeric=Mejne vrednosti odstranitve morajo biti številske
discardThresholdsMustBeAscending=Mejne vrednosti odstranitve morajo naraščati
@@ -52,7 +52,8 @@ unlink=取消链接
leaderboardName=积分榜名称
pleaseEnterAName=请输入名称
pleaseEnterABoatClass=请输入船只级别
discardRacesFromHowManyStartedRacesOn=从已开始的比赛轮次数开始再放弃一个比赛轮次
discardRacesFromHowManyStartedRacesOn=从已开始的比赛轮次数开始再放弃一个或多个比赛轮次
applyDiscardsBasedOnNumberOfScoredRaces=配置放弃次数。在方框中输入 X,即申请第 X 次放弃所需的得分比赛次数。最大放弃次数:{0}。
leaderboardWithThisNameAlreadyExists=具有此名称的积分榜已存在
discardThresholdsMustBeNumeric=放弃临界值必须为数字
discardThresholdsMustBeAscending=放弃临界值必须递增
@@ -371,14 +371,15 @@ public abstract class AbstractCompetitorRaceChart<SettingsType extends ChartSett
}
/**
* Based on a time range and a {@link #getStepSizeInMillis() desired step size} computes an effective
* step size that observes a maximum number of fixes that may be queried in one request from the server
* ({@link SailingServiceConstants#MAX_NUMBER_OF_FIXES_TO_QUERY}). If the time range and the desired step
* size do not exceed this limit, the step size desired will be returned. Otherwise, the step size will be
* extended such that {@link SailingServiceConstants#MAX_NUMBER_OF_FIXES_TO_QUERY} fixes will be requested
* for the time range between {@code from} and {@code to}.
* Based on a time range and a {@link #getStepSizeInMillis() desired step size} computes an effective step size that
* observes a maximum number of fixes that may be queried in one request from the server
* ({@link SailingServiceConstants#MAX_NUMBER_OF_FIXES_TO_QUERY}). If the time range and the desired step size do
* not exceed this limit, the step size desired will be returned. Otherwise, the step size will be extended such
* that {@link SailingServiceConstants#MAX_NUMBER_OF_FIXES_TO_QUERY} fixes will be requested for the time range
* between {@code from} and {@code to}.
*
* @return the effective step size in milliseconds
* @return the effective step size in milliseconds; if {@code from} or {@code to} are {@code null}, 0 is returned,
* assuming that then the server will compute a reasonable step size
*/
private long getEffectiveStepSize(final Date from, final Date to) {
return Math.max(getStepSizeInMillis(),
@@ -398,16 +399,16 @@ public abstract class AbstractCompetitorRaceChart<SettingsType extends ChartSett
public void addedToSelection(CompetitorDTO competitor) {
if (isVisible()) {
showLoading(stringMessages.loadingCompetitorData());
ArrayList<CompetitorDTO> competitorsToLoad = new ArrayList<>();
final ArrayList<CompetitorDTO> competitorsToLoad = new ArrayList<>();
competitorsToLoad.add(competitor);
final TimeRange timeRangeToLoadForFirstMetric = TimeRange.create(
TimePoint.of(primary.timeOfEarliestRequestInMillis),
TimePoint.of(primary.timeOfLatestRequestInMillis));
TimePoint.of(primary.timeOfEarliestRequestInMillis == null ? timeRangeWithZoomProvider.getFromTime() == null ? null : timeRangeWithZoomProvider.getFromTime().getTime() : primary.timeOfEarliestRequestInMillis),
TimePoint.of(primary.timeOfLatestRequestInMillis == null ? timeRangeWithZoomProvider.getToTime() == null ? null : timeRangeWithZoomProvider.getToTime().getTime() : primary.timeOfLatestRequestInMillis));
final TimeRange timeRangeToLoad;
if (getSelectedSecondDetailType() != null) {
final TimeRange timeRangeToLoadForSecondMetric = TimeRange.create(
TimePoint.of(secondary.timeOfEarliestRequestInMillis),
TimePoint.of(secondary.timeOfLatestRequestInMillis));
TimePoint.of(secondary.timeOfEarliestRequestInMillis == null ? timeRangeWithZoomProvider.getFromTime() == null ? null : timeRangeWithZoomProvider.getFromTime().getTime() : secondary.timeOfEarliestRequestInMillis),
TimePoint.of(secondary.timeOfLatestRequestInMillis == null ? timeRangeWithZoomProvider.getToTime() == null ? null : timeRangeWithZoomProvider.getToTime().getTime() : secondary.timeOfLatestRequestInMillis));
timeRangeToLoad = timeRangeToLoadForFirstMetric.extend(timeRangeToLoadForSecondMetric);
} else {
timeRangeToLoad = timeRangeToLoadForFirstMetric;
@@ -518,8 +519,10 @@ public abstract class AbstractCompetitorRaceChart<SettingsType extends ChartSett
if (tholder.timeOfEarliestRequestInMillis == null || tholder.timeOfEarliestRequestInMillis > chartData.getRequestedFromTime().getTime()) {
tholder.timeOfEarliestRequestInMillis = chartData.getRequestedFromTime().getTime();
}
if (tholder.timeOfLatestRequestInMillis == null || tholder.timeOfLatestRequestInMillis < chartData.getRequestedToTime().getTime()) {
tholder.timeOfLatestRequestInMillis = chartData.getRequestedToTime().getTime();
// FIXME bug5895: storing particularly the requestedToTime without knowing whether data up to there was delivered at all makes no sense
final Date oldestDateOfNewestData = chartData.getOldestDateOfNewestData();
if (tholder.timeOfLatestRequestInMillis == null || (oldestDateOfNewestData != null && tholder.timeOfLatestRequestInMillis < oldestDateOfNewestData.getTime())) {
tholder.timeOfLatestRequestInMillis = oldestDateOfNewestData == null ? null : oldestDateOfNewestData.getTime();
}
chart.redraw();
}
@@ -533,8 +536,6 @@ public abstract class AbstractCompetitorRaceChart<SettingsType extends ChartSett
}
/**
*
* @param competitor
* @return A series in the chart, that can be used to show the data of a specific competitor.
*/
protected Series getOrCreateCompetitorDataSeries(DetailType seriesDetailType, final CompetitorDTO competitor) {
@@ -543,7 +544,6 @@ public abstract class AbstractCompetitorRaceChart<SettingsType extends ChartSett
Series result = this.dataSeriesForDetailTypeAndCompetitor.get(coDePair);
if (result == null) {
result = chart.createSeries().setType(Series.Type.LINE);
if (hasSecondYAxis()) {
result.setName(DetailTypeFormatter.format(seriesDetailType) + " " + competitor.getName());
} else {
@@ -559,14 +559,11 @@ public abstract class AbstractCompetitorRaceChart<SettingsType extends ChartSett
result.setOption("turboThreshold", MAX_SERIES_POINTS);
dataSeriesForDetailTypeAndCompetitor.put(coDePair, result);
}
result.setYAxis(yAxisIndex);
return result;
}
/**
*
* @param competitor
* @return A series in the chart, that can be used to show the mark passings.
*/
private Series getOrCreateCompetitorMarkPassingSeries(Series linkedCompetitorSeries, DetailType seriesDetailType, CompetitorDTO competitor) {
@@ -850,9 +847,9 @@ public abstract class AbstractCompetitorRaceChart<SettingsType extends ChartSett
// is date before first cache entry or is cache empty?
if (primary.timeOfEarliestRequestInMillis == null
|| newTime.getTime() < primary.timeOfEarliestRequestInMillis) {
updateChart(timeRangeWithZoomProvider.getFromTime(), newTime, /* append */true);
updateChart(timeRangeWithZoomProvider.getFromTime(), newTime, /* append */ true);
} else if (newTime.getTime() > primary.timeOfLatestRequestInMillis) {
updateChart(new Date(primary.timeOfLatestRequestInMillis), timeRangeWithZoomProvider.getToTime(), /* append */true);
updateChart(new Date(primary.timeOfLatestRequestInMillis), timeRangeWithZoomProvider.getToTime(), /* append */ true);
}
// otherwise the cache spans across date and so we don't need to load anything
break;
@@ -860,13 +857,13 @@ public abstract class AbstractCompetitorRaceChart<SettingsType extends ChartSett
case Replay: {
if (primary.timeOfLatestRequestInMillis == null) {
// pure replay mode
updateChart(timeRangeWithZoomProvider.getFromTime(), timeRangeWithZoomProvider.getToTime(), /* append */false);
updateChart(timeRangeWithZoomProvider.getFromTime(), timeRangeWithZoomProvider.getToTime(), /* append */ false);
} else {
// replay mode during live play
if (primary.timeOfEarliestRequestInMillis == null || newTime.getTime() < primary.timeOfEarliestRequestInMillis) {
updateChart(timeRangeWithZoomProvider.getFromTime(), newTime, /* append */true);
updateChart(timeRangeWithZoomProvider.getFromTime(), newTime, /* append */ true);
} else if (newTime.getTime() > primary.timeOfLatestRequestInMillis) {
updateChart(new Date(primary.timeOfLatestRequestInMillis), timeRangeWithZoomProvider.getToTime(), /* append */true);
updateChart(new Date(primary.timeOfLatestRequestInMillis), timeRangeWithZoomProvider.getToTime(), /* append */ true);
}
}
break;
@@ -851,7 +851,6 @@ public class FixesAndTails {
protected Double getDetailValueAt(CompetitorDTO competitorDTO, int index) {
final Trigger<Integer> firstShownFixForCompetitor = firstShownFix.get(competitorDTO);
int indexOfFirstShownFix = (firstShownFixForCompetitor == null || firstShownFixForCompetitor.get() == null) ? -1 : firstShownFixForCompetitor.get();
try {
return getFixes(competitorDTO).get(indexOfFirstShownFix + index).detailValue;
} catch (IndexOutOfBoundsException e) {
@@ -21,10 +21,7 @@ public class CompetitorsRaceDataDTO implements IsSerializable {
CompetitorsRaceDataDTO() {}
public CompetitorsRaceDataDTO(DetailType detailType, Date requestedFromTime, Date requestedToTime) {
this.detailType = detailType;
this.requestedFromTime = requestedFromTime;
this.requestedToTime = requestedToTime;
this.competitorsData = new HashMap<>();
this(detailType, requestedFromTime, requestedToTime, new HashMap<>());
}
public CompetitorsRaceDataDTO(DetailType detailType, Date requestedFromTime, Date requestedToTime,
@@ -106,7 +103,7 @@ public class CompetitorsRaceDataDTO implements IsSerializable {
public Date getOldestDateOfNewestData() {
Date dateOfNewestData = null;
for (CompetitorRaceDataDTO competitorRaceData : competitorsData.values()) {
Date raceDateOfNewestData = competitorRaceData.getDateOfNewestData();
final Date raceDateOfNewestData = competitorRaceData.getDateOfNewestData();
if (dateOfNewestData == null) {
dateOfNewestData = raceDateOfNewestData;
} else {
@@ -1,6 +1,6 @@
PolarChain1=Polare
PolarChain2=Backend-Polare
LegIndex=Schenkel Index
LegIndex=Bahnschenkel Index
PolarData=Polardaten
Polars=Polare
GPSFix=GPS Fix
@@ -6,7 +6,7 @@ regattaName = Regatta Name
crossSum = Quersumme
Name=Name
Year = Jahr
LegNumber=Anzahl der Schenkel
LegNumber=Anzahl der Bahnschenkel
SailID=Segelnummer
TestCluster=Test Cluster Deutsch
increment=Inkrementieren
@@ -2,6 +2,7 @@ package com.sap.sse.security.datamining.data.impl;
import com.sap.sse.common.Duration;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Util;
import com.sap.sse.security.datamining.data.HasSubscriptionContext;
import com.sap.sse.security.datamining.data.HasUserContext;
import com.sap.sse.security.shared.subscription.Subscription;
@@ -22,7 +23,7 @@ public class SubscriptionWithContext implements HasSubscriptionContext {
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((subscription == null) ? 0 : subscription.getSubscriptionId().hashCode());
result = prime * result + ((subscription == null) ? 0 : subscription.getSubscriptionId() == null ? 0 : subscription.getSubscriptionId().hashCode());
return result;
}
@@ -38,7 +39,7 @@ public class SubscriptionWithContext implements HasSubscriptionContext {
if (subscription == null) {
if (other.subscription != null)
return false;
} else if (!subscription.getSubscriptionId().equals(other.subscription.getSubscriptionId()))
} else if (!Util.equalsWithNull(subscription.getSubscriptionId(), other.subscription.getSubscriptionId()))
return false;
return true;
}
@@ -5,27 +5,27 @@ payment_interval_DAY=den
support_subject=Požadavek na služby a informace SAP Sailing Analytics
businessModelTitle=Obchodní model
businessModelDescription=Rozhodli jsme se naše bezplatné řešení rozšířit o nabídku předplatného. I když základní informace ze závodů včetně aktuálního pořadí s úpravami podle větru můžete nadále sledovat zdarma, budete-li využívat řadu vyspělých funkcí nabízených v SAP Sailing Analytics, dovolíme si vás požádat o příspěvek. Toto řešení SAP plně dotuje již více než deset let a za tu dobu umožnil jeho použití při bezpočtu závodů na celém světě. Nyní se vám naskýtá příležitost pomoci, aby je mohla jachtařská komunita využívat i nadále. Veškeré úhrady za zvolené předplatné budou využity k provozu, podpoře, údržbě a dalšímu rozvoji Sailing Analytics. Vaše doporučení uvítáme na https://bugzilla.sapsailing.com, kde můžete také sledovat postup vývoje. Děkujeme za pochopení a za vaši stálou podporu!
free_subscription_plan_name=Zdarma
free_subscription_plan_description=K vyzkoušení
free_subscription_plan_name=Základní
free_subscription_plan_description=Vytvořte si vlastní účet. Zkuste to.
free_subscription_plan_info=
free_subscription_plan_price_info=
free_subscription_plan_features=Základní aktuální pořadí s úpravami podle větru|Založte si vlastní účet a s pomocí bezplatné trasovací aplikace nebo profesionální trasovací služby analyzujte údaje ze závodu nebo tréninku|Synchronizujte živě YouTube videa s vašimi závody
free_subscription_plan_features=Základní aktuální pořadí s úpravami podle větru|Analyzujte údaje ze závodu nebo tréninku pomocí bezplatné trasovací aplikace nebo profesionální trasovací služby|Synchronizujte živě YouTube videa s vašimi závody
premium_name=Premium
premium_description=Všechny prémiové funkce, jako je mapová vrstva větrů, simulátor nebo rozšířená metrika, např. ztráta na vedoucího závodníka, uplutá vzdálenost či odchylka od zvoleného kurzu
premium_info=
premium_price_info=Jednorázová platba
premium_features=Všechny funkce bezplatné nabídky|Kompletní analytika aktuálních dat s řadou dalších funkcí včetně grafického znázornění síly a směru větru nebo ztráta na vedoucího závodníka|Možnost připnutí videí a poznámek na individuální časovou osu|Pokročilé vizualizace přímo v mapě a mnoho dalších funkcí|Viz kompletní přehled funkcí prémiového plánu dále.
data_mining_archive_name=Dolování dat – archiv
data_mining_archive_description=Vytěžování dat z archivovaných závodů a událostí.
data_mining_archive_description=Dolování dat z archivovaných závodů a událostí.
data_mining_archive_info=
data_mining_archive_price_info=Jednorázová platba
data_mining_archive_features=Všechny funkce prémiového plánu|Výkonné vytěžování dat z archivovaných závodů, rozjížděk a událostí uložených na www.sapsailing.com.
data_mining_archive_features=Všechny funkce prémiového plánu|Výkonné dolování dat z archivovaných závodů, rozjížděk a událostí uložených na www.sapsailing.com.
data_mining_all_name=Dolování dat – vše
data_mining_all_description=Dolování dat ze všech závodů a událostí.
data_mining_all_info=
data_mining_all_price_info=Jednorázová platba
data_mining_all_features=Všechny funkce nabídky Dolování dat – archiv|Výkonné vytěžování dat, a to včetně dat ze všech subdomén sapsailing.com, jako jsou např. národní soutěže, živé události nebo klubové servery.
free_subscription_plan_shortname=zdarma
data_mining_all_features=Všechny funkce nabídky Dolování dat – archiv|Výkonné dolování dat, a to včetně dat ze všech subdomén sapsailing.com, jako jsou např. národní soutěže, živé události nebo klubové servery.
free_subscription_plan_shortname=základní
premium_subscription_plan_shortname=premium
datamining_subscription_plan_shortname=dolování dat
features_limited_live_analytics_title=Analytika aktuálních dat (omezená)
@@ -33,11 +33,13 @@ features_limited_live_analytics_description=Omezená analytika aktuálních dat
features_full_live_analytics_title=Analytika aktuálních dat (plná)
features_full_live_analytics_description=Kompletní analytika aktuálních dat se stovkami funkcí včetně grafického znázornění síly a směru větru, srovnávacích grafů, pokročilých vizualizací v mapě atd.
features_organize_events_title=Organizování závodů
features_organize_events_description=Využití Sailing Analytics s bezplatnou trasovací aplikací nebo profesionální službou trasování jako Trac Trac při vámi pořádané regatě. Detekce manévrů a analytika.
features_organize_events_description=Analyzujte údaje ze závodu s naší bezplatnou trasovací aplikací nebo profesionální službou trasování jako Trac Trac při vámi pořádané regatě. Detekce manévrů a analytika.
features_organize_events_url=https://support.sapsailing.com/hc/en-us/articles/360018169799-Create-a-simple-event-on-my-sapsailing-com
features_events_with_more_regatta_title=Několik regat při jedné akci
features_events_with_more_regatta_description=Lze vytvořit závod vypsaný pro několik tříd nebo sérii závodů započítávaných do jednoho žebříčku.
features_connect_to_tractrac_title=Připojení k Trac Trac
features_connect_to_tractrac_description=Lze se připojit k profesionální službě trasování.
features_connect_to_tractrac_url=https://tractrac.com/
features_imports_title=Import externích dat
features_imports_description=Import souborů ve formátu GPX nebo KML, souborů GRIB a protokolů Expedition.
features_media_management_title=Správa médií
@@ -60,10 +62,12 @@ features_maneuver_analytics_title=Analýza manévrování
features_maneuver_analytics_description=Pokročilá analýza manévrování jednotlivých závodníků včetně ztráty při manévru, tempa změny kurzu a úhlu manévru.
features_wind_analytics_title=Analýza větru
features_wind_analytics_description=Pokročilá analýza sebraných údajů o větru, barevné animované překryvné vrstvy a bodové grafy podle jednotlivých zdrojů údajů.
features_data_mining_title=Dolování dat
features_data_mining_description=Vytěžování dat ze závodů, rozjížděk a akcí v závislosti na zakoupeném plánu: buď z dat archivovaných jen na www.sapsailing.com, nebo i včetně subdomén (např. národní soutěže, živé akce nebo klubové servery).
trial_name=Zkušební plán
trial_description=Bezplatná zkušební verze všech plánů včetně prémiového plánu a Dolování dat na jeden den. Lze využít pouze jednou.
features_data_mining_title=Dolování dat – archiv
features_data_mining_description=Použijte dolování dat z minulých závodů, rozjížděk a akcí
features_data_mining_all_title=Dolování dat – vše
features_data_mining_all_description=Zatímco v případě plánu „Archiv“ můžete použít dolování dat pro uplynulé akce, které již byly archivovány, plán „Vše“ umožňuje používat dolování dat také pro živé události a probíhající ligové sezóny. Zahrnuje také data z archivu (vše, co lze najít na www.sapsailing.com) a všech subdomén (například pro národní soutěže, živé události nebo klubové servery)
trial_name=Bezplatná zkouška
trial_description=Bezplatná zkouška všech plánů včetně prémiového plánu a Dolování dat. Lze využít jen jednou.
trial_info=
trial_price_info=Bezplatná zkušební verze na jeden den
trial_price_info=Bezplatná zkouška na jeden den
trial_features=Všechny funkce plánu Dolování dat – vše|Obsahuje všechny funkce|Platí na jeden den
@@ -5,27 +5,27 @@ payment_interval_DAY=dag
support_subject=SAP Sailing Analytics-service og informationsforespørgsel
businessModelTitle=Forretningsmodel
businessModelDescription=Vi besluttede at udvide vores gratis løsning med et abonnementstilbud. Mens du stadig kan følge de grundlæggende kapsejladser og se en live vindbaseret rangliste gratis, vil vi gerne bede om dit bidrag, hvis du sætter pris på de mange avancerede funktioner, som SAP Sailing Analytics tilbyder. I mere end et årti har SAP fuldt ud sponsoreret denne løsning og gjort den tilgængelig for tusindvis af sejlsportsbegivenheder verden over. Nu har du mulighed for at hjælpe med at holde løsningen tilgængelig for sejlsportsentusiaster. Alle betalinger for det abonnement, du vælger, vil gå til drift, support, vedligeholdelse og videreudvikling af Sailing Analytics. Du kan afgive dine forslag på https://bugzilla.sapsailing.com og følge udviklingen der. Vi takker dig for din forståelse og fortsatte støtte!
free_subscription_plan_name=Gratis
free_subscription_plan_description=Prøv den
free_subscription_plan_name=Grundlæggende
free_subscription_plan_description=Opret din egen konto. Prøv det.
free_subscription_plan_info=
free_subscription_plan_price_info=
free_subscription_plan_features=Grundlæggende live vindbaseret rangliste|Opret din egen konto og udfør sejladsanalyser for din regatta eller træning med vores gratis sporingsapp eller en professionel sporingstjeneste|Synkroniser live YouTube-videoer med dine kapsejladser
free_subscription_plan_features=Grundlæggende live vindbaseret rangliste|Udfør sejladsanalyser for din regatta eller træning med vores gratis sporingsapp eller en professionel sporingstjeneste|Synkroniser live YouTube-videoer med dine kapsejladser
premium_name=Premium
premium_description=Alle premium-funktionerne, såsom vindkort-overlay, simulatoren og forbedrede metrikker, såsom afstand til forreste båd, sejlet distance og Cross Track Error
premium_info=
premium_price_info=Engangsbetaling
premium_features=Alt fra den gratis plan|Komplette live analyser med hundredvis af funktioner, herunder vindstreamlets, sammenligningsdiagrammer eller afstand til forreste båd|Avancerede visualiseringer på kortet og meget mere.|Se hele listen over premium-funktioner nedenfor
data_mining_archive_name=Data mining - Arkiv
data_mining_archive_name=Data mining - Arkiv
data_mining_archive_description=Data mining på tværs af arkiverede kapsejladser og begivenheder
data_mining_archive_info=
data_mining_archive_price_info=Engangsbetaling
data_mining_archive_features=Alt fra premium-planen|Effektiv data mining for arkiverede kapsejladser og begivenheder, der kan findes på www.sapsailing.com
data_mining_all_name=Data mining - ALLE
data_mining_all_name=Data mining - Alle
data_mining_all_description=Data mining på tværs af alle kapsejladser og begivenheder
data_mining_all_info=
data_mining_all_price_info=Engangsbetaling
data_mining_all_features=Alt fra data mining-arkivplanen|Effektiv data mining inkluderer yderligere data fra alle underdomæner af sapsailing.com, f.eks. for ligaer, live begivenheder eller klubservere
free_subscription_plan_shortname=Gratis
free_subscription_plan_shortname=grundlæggende
premium_subscription_plan_shortname=Premium
datamining_subscription_plan_shortname=Data mining
features_limited_live_analytics_title=Live analyser (begrænset)
@@ -34,10 +34,12 @@ features_full_live_analytics_title=Live analyser (komplette)
features_full_live_analytics_description=Komplette live analyser med hundredvis af funktioner, herunder vindstreamlets, sammenligningsdiagrammer, avancerede visualiseringer på kortet og meget mere
features_organize_events_title=Organiser begivenheder
features_organize_events_description=Kør Sailing Analytics under din regatta med vores gratis sporingsapp eller en professionel sporingstjeneste, f.eks. TracTrac. Manøvreregistrering og -analyser
features_organize_events_url=https://support.sapsailing.com/hc/en-us/articles/360018169799-Create-a-simple-event-on-my-sapsailing-com
features_events_with_more_regatta_title=Begivenheder med mere end en regatta
features_events_with_more_regatta_description=Du kan oprette en begivenhed med flere klasser eller en sæson af begivenheder, der tæller med i en sæsonrangliste
features_connect_to_tractrac_title=Opret forbindelse til TracTrac
features_connect_to_tractrac_description=Opret forbindelse til professionel sporingstjeneste
features_connect_to_tractrac_url=https://tractrac.com/
features_imports_title=Importer eksterne data
features_imports_description=Importer filformaterne GPX og KML, GRIB-filer og ekspeditionsprotokoller
features_media_management_title=Medieadministration
@@ -60,10 +62,12 @@ features_maneuver_analytics_title=Manøvreanalyser
features_maneuver_analytics_description=Avancerede analyser af konkurrenternes manøvreudførelse, herunder tab ved manøvre, drejehastighed og vinkel for manøvre
features_wind_analytics_title=Vindanalyser
features_wind_analytics_description=Avancerede analyser af de indsamlede vinddata. Farvet animeret overlay og strip-diagrammer for hver inkluderet kilde for vind
features_data_mining_title=Data mining
features_data_mining_description=Data mining på tværs af kapsejladser og begivenheder. Afhængigt af plantype for kun arkiv (alt, hvad der kan findes under www.sapsailing.com) eller alle underdomæner (fx for ligaer, live begivenheder eller klubservere)
trial_name=Prøveversion
trial_description=Gratis prøveversion af alle planer for én dag, herunder premium- og data mining-planen. Kan kun abonneres på én gang
features_data_mining_title=Data mining-Arkiv
features_data_mining_description=Data mining til data fra tidligere begivenheder på tværs af kapsejladser og begivenheder
features_data_mining_all_title=Data mining - Alle
features_data_mining_all_description=Mens du med "Arkiv"-planen kan bruge data mining til tidligere begivenheder, der allerede er arkiveret, gør planen "Alle" det muligt for dig også at bruge data mining til live begivenheder og igangværende ligasæsoner. Den indeholder også alle data fra arkivet (alt, der kan findes under www.sapsailing.com) og alle underdomæner (f.eks. for ligaer, live begivenheder eller klubservere)
trial_name=Gratis prøveversion
trial_description=Gratis prøveversion af alle planer for én dag, herunder "premium-" og begge "data mining"-planer. Kan kun abonneres på én gang
trial_info=
trial_price_info=Test én dag gratis
trial_features=Alt fra data mining alt-planen|Alle funktioner inkluderet|Gælder for en dag
@@ -5,27 +5,27 @@ payment_interval_DAY=día
support_subject=Solicitud de información y servicio de SAP Sailing Analytics
businessModelTitle=Modelo empresarial
businessModelDescription=SAP ha decidido ampliar su solución gratuita lanzando una oferta de suscripción. Si es de los que disfruta con las funciones avanzadas de SAP Sailing Analytics, nos gustaría pedirle ayuda con una contribución mientras sigue disfrutando de las carreras y teniendo a su disposición la clasificación de vela en tiempo real de manera totalmente gratuita. SAP ha patrocinado íntegramente esta solución durante más de una década y ha estado disponible para miles de eventos de navegación en todo el mundo. Ahora tiene la oportunidad de ayudarnos a que toda la comunidad náutica pueda seguir utilizando esta aplicación. Todo lo recaudado con las suscripciones se invertirá en operaciones, soporte, mantenimiento y a continuar desarrollando SAP Sailing Analytics. Si tiene cualquier tipo de sugerencia, o simplemente quiere mantenerse informado del desarrollo, entre en https://bugzilla.sapsailing.com. Le agradecemos su apoyo y comprensión.
free_subscription_plan_name=Gratis
free_subscription_plan_description=Pruébelo
free_subscription_plan_name=Básico
free_subscription_plan_description=Cree su propia cuenta. Pruébelo.
free_subscription_plan_info=
free_subscription_plan_price_info=
free_subscription_plan_features=Clasificación básica de vela en tiempo real|Crear su propia cuenta y realizar análisis de la navegación para su regata o entrenamiento con nuestra aplicación de rastreo gratuita o un servicio de rastreo profesional|Vídeos de YouTube Sync live con sus carreras
free_subscription_plan_features=Clasificación básica de vela en tiempo real|Realizar análisis de la navegación para su regata o entrenamiento con nuestra aplicación de rastreo gratuita o un servicio de rastreo profesional|Vídeos de YouTube Sync live con sus carreras
premium_name=Premium
premium_description=Todas las funciones Premium, como la superposición del mapa de vientos, el simulador y métricas mejoradas, como la distancia al líder, la distancia navegada y el error de recorrido.
premium_info=
premium_price_info=Pago único
premium_features=Todo lo del plan gratuito|Análisis completo en tiempo real con cientos de funciones, incluidas corrientes de aire, gráficos de comparación o distancia al líder|Marca de la cronología personal con vídeos y notas|Visualizaciones avanzadas en el mapa y mucho más.|Consulte más abajo la lista completa de funciones Premium
data_mining_archive_name=Data Mining: Archivo
data_mining_archive_name=Data Mining - Archivo
data_mining_archive_description=Data Mining para eventos y carreras archivadas
data_mining_archive_info=
data_mining_archive_price_info=Pago único
data_mining_archive_features=Todo desde el plan Premium|Data Mining eficiente para eventos y carreras archivadas que se puede encontrar en la dirección www.sapsailing.com
data_mining_all_name=Data Mining: TODO
data_mining_all_name=Data Mining - Todo
data_mining_all_description=Data Mining en todos los eventos y carreras
data_mining_all_info=
data_mining_all_price_info=Pago único
data_mining_all_features=Todo desde el plan Archivo de Data Mining|Data Mining eficiente que incluye datos adicionales de todos los subdominios de sapsailing.com, p. ej., para ligas, eventos en directo o servidores del club
free_subscription_plan_shortname=gratis
data_mining_all_features=Todo desde el plan Archivo de Data Mining|Data Mining eficiente que incluye datos adicionales de todos los subdominios de sapsailing.com, p. ej., para ligas, eventos en tiempo real o servidores de clubes
free_subscription_plan_shortname=básico
premium_subscription_plan_shortname=premium
datamining_subscription_plan_shortname=data mining
features_limited_live_analytics_title=Análisis en tiempo real (limitado)
@@ -34,10 +34,12 @@ features_full_live_analytics_title=Análisis en tiempo real (completo)
features_full_live_analytics_description=Análisis completo en tiempo real con cientos de funciones, incluidas corrientes de aire, gráficos de comparación, visualizaciones avanzadas en el mapa, y mucho más
features_organize_events_title=Organizar eventos
features_organize_events_description=Realizar el análisis de navegación para su regata con nuestra aplicación de rastreo gratuita o un servicio de rastreo profesional, como Trac Trac. Detección de maniobra y análisis
features_organize_events_url=https://support.sapsailing.com/hc/en-us/articles/360018169799-Create-a-simple-event-on-my-sapsailing-com
features_events_with_more_regatta_title=Eventos con más de una regata
features_events_with_more_regatta_description=Puede crear un evento de varias clases o una temporada de recuento de eventos en una clasificación de temporada
features_connect_to_tractrac_title=Conexión a Trac Trac
features_connect_to_tractrac_description=Conexión a servicio profesional de rastreo
features_connect_to_tractrac_url=https://tractrac.com/
features_imports_title=Importar datos externos
features_imports_description=Importar formatos de fichero GPX y KML, ficheros GRIB y logs de expedición
features_media_management_title=Gestión de medios
@@ -60,10 +62,12 @@ features_maneuver_analytics_title=Análisis de maniobras
features_maneuver_analytics_description=Análisis avanzado de la ejecución de las maniobras de los competidores, incluida la pérdida de maniobra, velocidad de giro y ángulo de maniobra
features_wind_analytics_title=Análisis del viento
features_wind_analytics_description=Análisis avanzado de los datos recogidos relativos al viento, superposición animada en colores y gráficos de bandas para cada fuente de viento considerada.
features_data_mining_title=Data Mining
features_data_mining_description=Data Mining en carreras y eventos. Dependiendo del tipo de plan solo para archivo (está todo en www.sapsailing.com) o todos los subdominios (p. ej., para ligas, eventos en tiempo real o servidores del club.)
trial_name=Versión de prueba
trial_description=Versión de prueba gratuita de todos los planes, incluidos los planes Premium y Data Mining. La suscripción solo se puede realizar una vez
features_data_mining_title=Archivo de Data Mining
features_data_mining_description=Utilice Data Mining en datos de eventos pasados entre carreras y eventos.
features_data_mining_all_title=Data Mining - Todo
features_data_mining_all_description=Mientras que con el plan "Archivo" puede usar Data Mining para eventos pasados que ya se han archivados, el plan "Todo" le permite usar Data Mining también para eventos en tiempo real y temporadas de liga en curso. También incluye todos los datos del archivo (todo lo que se puede encontrar en www.sapsailing.com) y todos los subdominios (por ejemplo, para ligas, eventos en tiempo real o servidores de clubes).
trial_name=Versión de prueba gratuita
trial_description=Versión de prueba gratuita de todos los planes durante un día, incluidos los planes "Premium" y "Data Mining". La suscripción solo se puede realizar una vez
trial_info=
trial_price_info=Pruébelo un día gratis
trial_features=Todos los planes de Data Mining|Todas las funciones incluidas|Válido durante un día
@@ -5,11 +5,11 @@ payment_interval_DAY=jour
support_subject=Demande de service et d''informations pour SAP Sailing Analytics
businessModelTitle=Modèle de gestion
businessModelDescription=Nous avons décidé d''élargir notre solution gratuite avec une offre d''abonnement. Vous pouvez continuer de suivre gratuitement les courses ainsi que le palmarès actualisé en direct en fonction du vent, mais, si vous aimez les nombreuses fonctionnalités qu''offre SAP Sailing Analytics, nous apprécierions beaucoup une contribution de votre part. SAP a pleinement sponsorisé cette solution pendant plus d''une décennie et l''a rendue accessible à des milliers d''événements nautiques à travers le monde. Vous avez désormais l''opportunité de nous aider à garantir qu''elle restera à la disposition de la communauté des passionnés de navigation. Chaque paiement effectué pour un abonnement bénéficiera directement à Sailing Analytics, aussi bien au niveau des opérations que de l''assistance, de l''entretien et du développement. Laissez-nous vos suggestions sur https://bugzilla.sapsailing.com et suivez son développement ici. Nous vous remercions de votre compréhension et de votre soutien indéfectible.
free_subscription_plan_name=Gratuit
free_subscription_plan_description=Essayez-le
free_subscription_plan_name=Offre basique
free_subscription_plan_description=Essayez-la en créant votre propre compte.
free_subscription_plan_info=
free_subscription_plan_price_info=
free_subscription_plan_features=Palmarès de base actualisé en direct en fonction du vent|Création de votre propre compte et exécution de la solution Sailing Analytics pour votre régate ou votre entraînement à l''aide de notre application de suivi gratuite ou d''un service de suivi professionnel|Synchronisation en direct de vidéos YouTube avec vos courses
free_subscription_plan_features=Palmarès de base actualisé en direct en fonction du vent|Utilisez la solution Sailing Analytics pour votre régate ou votre entraînement à l''aide de notre application de suivi gratuite ou d''un service de suivi professionnel|Synchronisation en direct de vidéos YouTube avec vos courses
premium_name=Premium
premium_description=Toutes les fonctionnalités Premium, par exemple la superposition de la carte des vents, le simulateur et les métriques améliorées (notamment l''écart avec le concurrent en tête, la distance parcourue, l''écart de route)
premium_info=
@@ -20,12 +20,12 @@ data_mining_archive_description=Exploration des données des courses et manifest
data_mining_archive_info=
data_mining_archive_price_info=Paiement unique
data_mining_archive_features=Toutes les fonctionnalités du plan d''abonnement Premium|Exploration approfondie des données des courses et manifestations archivées consultables depuis www.sapsailing.com
data_mining_all_name=Exploration de données - TOUT
data_mining_all_name=Exploration de données - Complet
data_mining_all_description=Exploration des données de toutes les courses et manifestations
data_mining_all_info=
data_mining_all_price_info=Paiement unique
data_mining_all_features=Toutes les fonctionnalités du plan d''abonnement Exploration de données - Archive|Exploration approfondie des données, y compris des données supplémentaires des sous-domaines de sapsailing.com (par exemple : ligues, manifestations en direct ou encore serveurs de club)
free_subscription_plan_shortname=gratuit
free_subscription_plan_shortname=basique
premium_subscription_plan_shortname=premium
datamining_subscription_plan_shortname=exploration de données
features_limited_live_analytics_title=Analyses en direct (limitées)
@@ -33,11 +33,13 @@ features_limited_live_analytics_description=Analyses en direct limitées
features_full_live_analytics_title=Analyses en direct (complètes)
features_full_live_analytics_description=Analyses complètes actualisées en direct avec des centaines de fonctionnalités, notamment liées aux couloirs de vent, aux graphiques de comparaison, à des visualisations avancées sur carte et bien plus encore
features_organize_events_title=Organisation de manifestations
features_organize_events_description=Exécution de la solution Sailing Analytics pendant une régate à l''aide de notre application de suivi gratuite ou d''un service de suivi professionnel tel que TracTrac. Analyses et détection des manœuvres
features_organize_events_description=Utilisez la solution Sailing Analytics pendant une régate à l''aide de notre application de suivi gratuite ou d''un service de suivi professionnel tel que TracTrac. Analyses et détection des manœuvres
features_organize_events_url=https://support.sapsailing.com/hc/en-us/articles/360018169799-Create-a-simple-event-on-my-sapsailing-com
features_events_with_more_regatta_title=Manifestations avec plusieurs régates
features_events_with_more_regatta_description=Création d''une manifestation à plusieurs catégories ou d''une saison de manifestations comptant pour un palmarès saisonnier
features_connect_to_tractrac_title=Connexion à TracTrac
features_connect_to_tractrac_description=Connexion au service de suivi professionnel
features_connect_to_tractrac_url=https://tractrac.com/
features_imports_title=Importation de données externes
features_imports_description=Importation de fichiers aux formats GPX, KML et GRIB et de journaux d''Expedition
features_media_management_title=Gestion des médias
@@ -60,10 +62,12 @@ features_maneuver_analytics_title=Analyses des manœuvres
features_maneuver_analytics_description=Analyses avancées de l''exécution des manœuvres des concurrents, entre autres : pertes liées aux manœuvres, taux de giration, angle de manœuvre
features_wind_analytics_title=Analyses du vent
features_wind_analytics_description=Analyses avancées des données de vent collectées : superposition animée et colorée, cartes d''itinéraire pour chaque direction du vent prise en compte
features_data_mining_title=Exploration de données
features_data_mining_description=Exploration des données de courses et de manifestations : selon le plan d''abonnement, accès uniquement aux archives (tout ce qui est consultable depuis www.sapsailing.com) ou à tous les sous-domaines (exemple : ligues, manifestations en direct et serveurs de club)
features_data_mining_title=Exploration de données - Archive
features_data_mining_description=Utilisez l''exploration de données avec des données issues d''événements passés dans des courses et manifestations.
features_data_mining_all_title=Exploration de données - Complet
features_data_mining_all_description=Le plan "Archive" vous permet d''utiliser l''exploration de données pour des manifestations passées qui ont déjà été archivées, tandis que le plan "Complet" vous permet d''utiliser l''exploration de données également pour les manifestations en direct et les saisons de ligue en cours. Ce plan inclut également toutes les données de l''archive (toutes les données disponibles sur www.sapsailing.com) et tous les sous-domaines (par exemple : ligues, manifestations en direct ou encore serveurs de club).
trial_name=Version d''essai
trial_description=Version d''essai pour tous les plans pour une journée, y compris les plans Premium et Exploration de données. Souscription possible une seule fois.
trial_description=Version d''essai d''un jour pour tous les plans, y compris les plans "Premium" et "Exploration de données". Un seule souscription possible.
trial_info=
trial_price_info=Tester gratuitement pendant une journée
trial_features=Toutes les fonctionnalités du plan d''abonnement Exploration de données - Tout|Toutes les fonctionnalités sont incluses|Valide une journée
@@ -5,11 +5,11 @@ payment_interval_DAY=giorno
support_subject=Servizio SAP Sailing Analytics e richiesta di informazioni
businessModelTitle=Modello business
businessModelDescription=Abbiamo deciso di ampliare la soluzione gratuita attraverso un''offerta di sottoscrizione. Anche se puoi ancora seguire le azioni di gara di base e vedere gratuitamente la classifica live basata sul vento, ti saremmo grati se volessi offrire un contributo qualora apprezzassi le numerose funzioni avanzate offerte da SAP Sailing Analytics. Per più di dieci anni, SAP ha sponsorizzato al 100% la soluzione e l''ha messa a disposizione di migliaia di eventi velistici in tutto il mondo. Ora hai la possibilità di aiutare a far sì che la community velistica continui a usufruirne. Qualsiasi sottoscrizione tu scelga, tutti i pagamenti verranno destinati al funzionamento, al supporto, alla manutenzione e all''ulteriore sviluppo di Sailing Analytics. Puoi lasciarci i tuoi commenti all''indirizzo https://bugzilla.sapsailing.com, da cui puoi seguire i progressi dello sviluppo del software. Grazie della comprensione e del continuo supporto!
free_subscription_plan_name=Gratuito
free_subscription_plan_description=Provalo
free_subscription_plan_name=Di base
free_subscription_plan_description=Crea il tuo account. Provalo
free_subscription_plan_info=
free_subscription_plan_price_info=
free_subscription_plan_features=Classifica live base basata sul vento|Crea il tuo account e porta avanti l''analisi velistica della tua regata o la tua formazione tramite la nostra app di tracciamento gratuita o un servizio di tracciamento professionale|Sincronizza i video live su YouTube con le tue gare
free_subscription_plan_features=Classifica live base basata sul vento|Esegui l''analisi velistica della tua regata o dell''allenamento con la nostra app di tracciamento gratuita o con un servizio di tracciamento professionale|Sincronizza i video live su YouTube con le tue gare
premium_name=Premium
premium_description=Tutte le funzionalità premium, quali l''overlay della mappa dei venti, il simulatore e le metriche avanzate, quali la distanza dal concorrente in testa, la distanza navigata e l''errore di direzione trasversale
premium_info=
@@ -20,12 +20,12 @@ data_mining_archive_description=Data mining nelle gare e negli eventi archiviati
data_mining_archive_info=
data_mining_archive_price_info=Pagamento una tantum
data_mining_archive_features=Tutti i contenuti del piano premium|Data mining efficiente per le gare e gli eventi archiviati reperibili all’indirizzo www.sapsailing.com
data_mining_all_name=Data mining - TUTTO
data_mining_all_name=Data mining - Tutto
data_mining_all_description=Data mining in tutte le gare e in tutti gli eventi.
data_mining_all_info=
data_mining_all_price_info=Pagamento una tantum
data_mining_all_features=Tutti i contenuti del piano di data mining archivio|Data mining efficiente inclusi i dati supplementari di tutti i domini secondari di sapsailing.com, ad es.: per leghe sportive, eventi live o server club
free_subscription_plan_shortname=Gratuito
free_subscription_plan_shortname=di base
premium_subscription_plan_shortname=Premium
datamining_subscription_plan_shortname=data mining
features_limited_live_analytics_title=Analisi live (con limitazioni)
@@ -33,11 +33,13 @@ features_limited_live_analytics_description=Analisi live con limitazioni
features_full_live_analytics_title=Analisi live (completo)
features_full_live_analytics_description=Analisi live completa con centinaia di funzionalità, tra cui streamlet dei venti, grafici di confronto, visualizzazioni avanzate delle mappe e molto altro ancora
features_organize_events_title=Organizza eventi
features_organize_events_description=Esegui Sailing Analytics nella tua regata con la nostra app di tracciamento gratuita o con un servizio di tracciamento professionale come ad esempio Trac Trac. Analisi e rilevamento manovre
features_organize_events_description=Esegui l''analisi velistica della tua regata con la nostra app di tracciamento gratuita o con un servizio di tracciamento professionale come ad esempio Trac Trac. Analisi e rilevamento manovre
features_organize_events_url=https://support.sapsailing.com/hc/en-us/articles/360018169799-Create-a-simple-event-on-my-sapsailing-com
features_events_with_more_regatta_title=Eventi con più regate
features_events_with_more_regatta_description=È possibile creare un evento multiclasse o una stagione di eventi inclusi in una classifica stagionale
features_connect_to_tractrac_title=Connetti a Trac Trac
features_connect_to_tractrac_description=Connetti a un servizio di tracciamento professionale
features_connect_to_tractrac_url=https://tractrac.com/
features_imports_title=Importa dati esterni
features_imports_description=Importa i formati file GPX e KML, i file GRIB e i registri Expedition
features_media_management_title=Gestione supporti
@@ -60,10 +62,12 @@ features_maneuver_analytics_title=Analisi manovre
features_maneuver_analytics_description=Analisi avanzata dell’esecuzione delle manovre dei concorrenti, inclusi la perdita della manovra, la velocità di svolta e l’angolo di manovra
features_wind_analytics_title=Analisi venti
features_wind_analytics_description=Analisi avanzata dei dati raccolti sui venti; overlay animato a colori e strip charts per ogni sorgente di vento considerata
features_data_mining_title=Data mining
features_data_mining_description=Data mining nelle gare e negli eventi. In base al tipo di piano esclusivamente per archivio (tutti i contenuti reperibili all’indirizzo www.sapsailing.com) o per tutti i domini secondari (ad es. per leghe sportive, eventi live o server club)
trial_name=Prova
trial_description=Versione di prova gratuita di tutti i piani della durata di un giorno, compresi il piano premium e di data mining. È possibile effettuare l''abbonamento solo una volta
features_data_mining_title=Data mining - Archivio
features_data_mining_description=Utilizza il data mining sui dati di eventi passati di gare ed eventi
features_data_mining_all_title=Data mining - Tutto
features_data_mining_all_description=Quando si è in possesso del piano "Archivio", è possibile utilizzare il data mining per eventi passati già archiviati; mentre il piano "Tutto" consente di utilizzare il data mining anche per gli eventi live e le stagioni di campionato in corso. Esso include inoltre tutti i dati di archivio (tutto ciò che si può trovare in www.sapsailing.com) e tutti i sottodomini (ad esempio per campionati, eventi live o server club)
trial_name=Versione di prova gratuita
trial_description=Versione di prova gratuita di tutti i piani della durata di un giorno, compresi il piano "Premium" ed entrambi i piani di "Data mining". È possibile effettuare l''abbonamento solo una volta
trial_info=
trial_price_info=Prova un giorno gratuitamente
trial_features=Tutti i contenuti del piano data mining completo|Tutte le funzionalità incluse|Valido per un giorno
@@ -5,11 +5,11 @@ payment_interval_DAY=日
support_subject=SAP Sailing Analytics サービスおよび情報依頼
businessModelTitle=ビジネスモデル
businessModelDescription=無料のソリューションをサブスクリプションのオファーにより延長することを決定いたしました。基本的なレースアクションをフォローし、風ベースのリーダーボード実況を無料で表示することは引き続き可能ですが、SAP Sailing Analytics が提供している多くの先進的な機能を歓迎していただいている場合はご寄付もお願いしたいと考えております。10 年以上にわたって、SAP はこのソリューションに全面的に出資しており、世界中の数千のセーリングイベントで利用できるようにしてまいりました。これからは、このソリューションがセーリングコミュニティで利用し続けられるよう支援する機会をお持ちになれます。選択するどのサブスクリプションへの支払も、すべて Sailing Analytics の運営、サポート、メンテナンス、そしてさらなる開発に向けられます。ご提案があれば https://bugzilla.sapsailing.com に書き込むことができ、開発の進捗をそこでフォローすることができます。皆様のご理解と、変わらぬご支持に感謝いたします。
free_subscription_plan_name=無料
free_subscription_plan_description=試用
free_subscription_plan_name=基本
free_subscription_plan_description=自分のアカウントを作成して、試用してみてください。
free_subscription_plan_info=
free_subscription_plan_price_info=
free_subscription_plan_features=風ベースの基本的なリーダーボード実況|自分のアカウントの作成および無料の追跡アプリまたはプロフェッショナル追跡サービスでのレガッタまたはトレーニングの Sailing Analytics の実行|レースでの同期実況 YouTube 動画
free_subscription_plan_features=風ベースの基本的なリーダーボード実況|無料の追跡アプリまたはプロフェッショナル追跡サービスでのレガッタまたはトレーニングの Sailing Analytics の実行|レースでの同期実況 YouTube 動画
premium_name=プレミアム
premium_description=風マップオーバーレイ、シミュレータなどのプレミアム機能、ならびに首位艇との距離差、帆走した距離、クロストラックエラーなどの拡張メトリックのすべて
premium_info=
@@ -25,7 +25,7 @@ data_mining_all_description=すべてのレースおよびイベントにわた
data_mining_all_info=
data_mining_all_price_info=ワンタイム支払
data_mining_all_features=データマイニングアーカイブプランからのすべて|sapsailing.com のすべてのサブドメインからの追加データを含む強力なデータマイニング (リーグ、実況イベント、クラブサーバのものなど)
free_subscription_plan_shortname=無料
free_subscription_plan_shortname=基本
premium_subscription_plan_shortname=プレミアム
datamining_subscription_plan_shortname=データマイニング
features_limited_live_analytics_title=Live Analytics (限定版)
@@ -34,10 +34,12 @@ features_full_live_analytics_title=Live Analytics (完全版)
features_full_live_analytics_description=風ストリームレット、比較チャート、詳細マップ可視化などを含む、数百の機能を伴う完全版の Live Analytics です
features_organize_events_title=イベントの組織化
features_organize_events_description=無料の追跡アプリや、Trac Trac のようなプロフェッショナル追跡サービスにより、レガッタでの Sailing Analytics を実行します。マニューバー検知および分析
features_organize_events_url=https://support.sapsailing.com/hc/en-us/articles/360018169799-Create-a-simple-event-on-my-sapsailing-com
features_events_with_more_regatta_title=複数レガッタによるイベント
features_events_with_more_regatta_description=複数クラスのイベントや、シーズンごとのリーダーボードでカウントされるイベントのシーズンを作成可能
features_connect_to_tractrac_title=TracTrac への接続
features_connect_to_tractrac_description=プロフェッショナル追跡サービスへの接続
features_connect_to_tractrac_url=https://tractrac.com/
features_imports_title=外部データのインポート
features_imports_description=GPX および KML ファイル形式、GRIB ファイル、ならびに Expedition ログのインポート
features_media_management_title=メディア管理
@@ -60,10 +62,12 @@ features_maneuver_analytics_title=マニューバー分析
features_maneuver_analytics_description=マニューバーロス、回転レート、マニューバー角度を含む、競技者のマニューバー実行に関する詳細分析
features_wind_analytics_title=風分析
features_wind_analytics_description=収集された風データに関する詳細分析 (考慮される風源ごとの動く色付きのオーバーレイおよびストリップチャート)
features_data_mining_title=データマイニング
features_data_mining_description=レースおよびイベントにわたるデータマイニング。アーカイブのみ (www.sapsailing.com で見つけることのできるすべて) またはすべてのサブドメイン (リーグ、実況イベント、またはクラブサーバのものなど) のプランタイプに依存。
trial_name=トライアル
trial_description=プレミアムおよびデータマイニングプランを含む、すべてのプランを 1 日間利用できる無料トライアル
features_data_mining_title=データマイニング - アーカイブ
features_data_mining_description=レースおよびイベントにわたる過去のイベントからのデータについてデータマイニングを使用
features_data_mining_all_title=データマイニング - すべて
features_data_mining_all_description="アーカイブ" プランではすでにアーカイブされている過去のイベントに対してデータマイニングを使用することができますが、"すべて" プランでは実況イベントや進行中のリーグシーズンに対してもデータマイニングを使用することが可能です。また、アーカイブ (www.sapsailing.com で見つけられるすべて) およびすべてのサブドメイン (リーグ、実況イベント、クラブサーバのものなど) からのすべてのデータも含まれます
trial_name=無料トライアル
trial_description="プレミアム" および両方の "データマイニング" プランを含む、すべてのプランを 1 日間利用できる無料トライアル。1 回だけサブスクライブが可能
trial_info=
trial_price_info=無料で 1 日間テスト
trial_features=データマイニングのすべてのプランからのすべて|すべての機能を含む|1 日間有効
@@ -5,27 +5,27 @@ payment_interval_DAY=dia
support_subject=Solicitação de informação e serviço do SAP Sailing Analytics
businessModelTitle=Modelo de negócio
businessModelDescription=Decidimos ampliar nossa solução gratuita com uma oferta de assinatura. Embora você ainda possa seguir a ação básica das regatas e ver um painel de classificação com base no vento ao vivo gratuitamente, gostaríamos de solicitar sua contribuição caso aprecie as diversas funcionalidades avançadas que o SAP Sailing Analytics oferece. Durante mais de uma década, a SAP patrocinou por completo essa solução e a disponibilizou a milhares de eventos de vela por todo o mundo. Agora você tem a oportunidade de ajudar a manter a solução disponível para a comunidade de vela. Todos os pagamentos por qualquer assinatura que escolha irão para operações, suporte, manutenção e continuação do desenvolvimento do Sailing Analytics. Você pode deixar suas sugestões em https://bugzilla.sapsailing.com e seguir o progresso do desenvolvimento aqui. Agradecemos sua compreensão e seu contínuo suporte!
free_subscription_plan_name=Grátis
free_subscription_plan_description=Experimente
free_subscription_plan_name=Básico
free_subscription_plan_description=Crie a sua própria conta. Experimente.
free_subscription_plan_info=
free_subscription_plan_price_info=
free_subscription_plan_features=Painel de classificação com base no vento ao vivo básico|Crie sua própria conta e execute a análise da vela para sua regata ou treinamento com nosso app de rastreamento gratuito ou um serviço de rastreamento profissional|Sincronize vídeos do YouTube ao vivo com suas corridas
free_subscription_plan_features=Painel de classificação com base no vento ao vivo básico|Execute a análise da vela para sua regata ou treinamento com nosso app de rastreamento gratuito ou um serviço de rastreamento profissional|Sincronize vídeos do YouTube ao vivo com suas corridas
premium_name=Premium
premium_description=Todas as funcionalidades Premium, como sobreposição do mapa de vento, o simulador e a métrica ampliada, como distância para líder, distância velejada e distância da embarcação ao waypoint
premium_info=
premium_price_info=Pagamento único
premium_features=Tudo do plano gratuito|Análise ao vivo completa com centenas de funcionalidades, incluindo cursos do vento, gráficos de comparação ou distância para líder |Tag da linha de tempo pessoal com vídeos e notas|Visualizações avançadas no mapa e muito mais.|Veja a lista completa de funcionalidades Premium embaixo
premium_features=Tudo do plano gratuito|Análise ao vivo completa com centenas de funcionalidades, incluindo curso do vento, gráficos de comparação ou distância para líder |Tag da linha de tempo pessoal com vídeos e notas|Visualizações avançadas no mapa e muito mais.|Veja a lista completa de funcionalidades Premium embaixo
data_mining_archive_name=Data mining - Arquivo
data_mining_archive_description=Data mining em corridas e eventos arquivados
data_mining_archive_info=
data_mining_archive_price_info=Pagamento único
data_mining_archive_features=Tudo do plano Premium|Data mining poderoso para corridas e eventos arquivados que podem ser encontrados em www.sapsailing.com
data_mining_all_name=Data mining - TUDO
data_mining_all_name=Data mining - Tudo
data_mining_all_description=Data mining em todas as corridas e eventos
data_mining_all_info=
data_mining_all_price_info=Pagamento único
data_mining_all_features=Tudo do plano do arquivo de data mining|Data mining poderoso incluindo dados adicionais de todos os subdomínios de sapsailing.com, por exemplo: para ligas, eventos ao vivo ou servidores de clubes
free_subscription_plan_shortname=grátis
free_subscription_plan_shortname=básico
premium_subscription_plan_shortname=premium
datamining_subscription_plan_shortname=data mining
features_limited_live_analytics_title=Análise ao vivo (limitada)
@@ -34,10 +34,12 @@ features_full_live_analytics_title=Análise ao vivo (completa)
features_full_live_analytics_description=Análise ao vivo completa com centenas de funcionalidades, incluindo cursos de vento, gráficos de comparação, visualizações avançadas do mapa e muito mais
features_organize_events_title=Organizar eventos
features_organize_events_description=Execute o Sailing Analytics em sua regata com nosso app de rastreamento gratuito ou um serviço de rastreamento profissional. como o Trac Trac. Deteção e análise de manobras
features_organize_events_url=https://support.sapsailing.com/hc/en-us/articles/360018169799-Create-a-simple-event-on-my-sapsailing-com
features_events_with_more_regatta_title=Eventos com mais de uma regata
features_events_with_more_regatta_description=Você pode criar um evento de várias classes ou uma época de eventos contando em um painel de classificação sazonal
features_connect_to_tractrac_title=Conecte-se ao Trac Trac
features_connect_to_tractrac_description=Conecte-se ao serviço de rastreamento profissional
features_connect_to_tractrac_url=https://tractrac.com/
features_imports_title=Importar dados externos
features_imports_description=Importar formatos de arquivos GPX e KML, arquivos GRIB e logs de Expedition
features_media_management_title=Gerenciamento de mídias
@@ -60,10 +62,12 @@ features_maneuver_analytics_title=Análise de manobras
features_maneuver_analytics_description=Análise avançada referente à execução de manobras dos competidores, incluindo perda de manobra, taxa de viragem e ângulo da manobra
features_wind_analytics_title=Análise do evento
features_wind_analytics_description=Análise avançada referente a dados coletados do vento; gráficos de rotas e sobreposições animados e coloridos para cada origem de vento considerada
features_data_mining_title=Data mining
features_data_mining_description=Data mining em corridas e eventos. Dependendo do tipo de plano, só para arquivo (tudo o que pode ser encontrado em www.sapsailing.com) ou todos os subdomínios (por exemplo, para ligas, eventos ao vivo ou servidores de clubes)
trial_name=Teste
trial_description=Teste gratuito de todos os planos por um dia, incluindo o plano Premium e de data mining. Só pode ser assinado uma vez
features_data_mining_title=Data mining-Arquivo
features_data_mining_description=Utilize Data mining em dados de eventos passados em corridas e eventos
features_data_mining_all_title=Data mining - Tudo
features_data_mining_all_description=Com o plano "Arquivo", você pode utilizar Data mining para eventos passados que já foram arquivados; o plano "Tudo" permite que vcê utilize Data mining também para eventos ao vivo e temporadas da liga em curso. Também inclui todos os dados do arquivo (tudo o que pode ser encontrado em www.sapsailing.com) e todos os subdomínios (por exemplo, para ligas, eventos ao vivo ou servidores de clubes)
trial_name=Teste gratuito
trial_description=Teste gratuito de todos os planos por um dia, incluindo o plano Premium e os planos "Data mining". Só pode ser assinado uma vez
trial_info=
trial_price_info=Testar gratuitamente por um dia
trial_features=Tudo do plano de data mining Tudo|Todas as funcionalidades incluídas|Válido por um dia
@@ -5,27 +5,27 @@ payment_interval_DAY=день
support_subject=Запрос сервиса и информации SAP Sailing Analytics
businessModelTitle=Бизнес-модель
businessModelDescription=Мы расширяем наше бесплатное решение предложением подписки. Хотя вы по-прежнему можете бесплатно следить за основными парусными гонками и видеть актуальную таблицу лидеров, мы просим вас внести свой вклад, если вам нравятся многие расширенные функции, которые предлагает SAP Sailing Analytics. На протяжении более чем 10 лет компания SAP полностью спонсировала это решение и делала его доступным для тысяч мероприятий, относящихся к парусному спорту, по всему миру. Теперь у вас есть возможность помочь нам поддерживать доступность данного решения для парусного сообщества. Все платежи по выбранной вами подписке пойдут на работу, поддержку, обслуживание и дальнейшую разработку Sailing Analytics. Вы можете оставить свои предложения по адресу https://bugzilla.sapsailing.com и там же отслеживать ход разработки. Благодарим за понимание и непрекращающуюся поддержку!
free_subscription_plan_name=Бесплатно
free_subscription_plan_description=Попробуйте
free_subscription_plan_name=Базовый
free_subscription_plan_description=Создайте собственную учетную запись и попробуйте.
free_subscription_plan_info=
free_subscription_plan_price_info=
free_subscription_plan_features=Базовая актуальная таблица лидеров парусных гонок|Создайте собственную учетную запись и занимайтесь аналитикой для своей регаты или обучения с помощью нашего бесплатного приложения для отслеживания или профессионального сервиса отслеживания|Синхронизируйте прямые трансляции видео в YouTube со своими гонками
free_subscription_plan_features=Базовая актуальная таблица лидеров парусных гонок|Анализируйте свою регату или обучайтесь с помощью нашего бесплатного приложения для отслеживания или профессионального сервиса отслеживания|Синхронизируйте прямые трансляции видео в YouTube со своими гонками
premium_name=Премиум
premium_description=Все функции Премиум, такие как наложение карты ветра, симулятор и расширенные показатели, такие как отставание от лидера, расстояние под парусом и боковое уклонение
premium_info=
premium_price_info=Разовый платеж
premium_features=Все из бесплатного плана|Полная актуальная аналитика с сотнями функций, включая потоки ветра,сравнительные диаграммы или отставание от лидера|Возможность помечать персональную хронологию видеороликами и примечаниями|Расширенные визуализации на карте и многое другое.|См. полный список функций Премиум ниже
data_mining_archive_name=Сбор данных - архив
data_mining_archive_name=Сбор данных - архив
data_mining_archive_description=Сбор данных во всех архивных гонках и мероприятиях
data_mining_archive_info=
data_mining_archive_price_info=Разовый платеж
data_mining_archive_features=Все из плана Премиум|Эффективный сбор данных по архивным гонкам и мероприятиям, которые можно найти на www.sapsailing.com
data_mining_all_name=Сбор данных - ВСЕ
data_mining_all_name=Сбор данных - все
data_mining_all_description=Сбор данных во всех гонках и мероприятиях
data_mining_all_info=
data_mining_all_price_info=Разовый платеж
data_mining_all_features=Все из плана "Сбор данных - архив"|Эффективный сбор данных, включающий дополнительные данные из всех поддоменов sapsailing.com, например по лигам, актуальным мероприятиям или серверам клубов
free_subscription_plan_shortname=бесплатно
free_subscription_plan_shortname=базовый
premium_subscription_plan_shortname=премиум
datamining_subscription_plan_shortname=сбор данных
features_limited_live_analytics_title=актуальная аналитика (ограниченная)
@@ -33,11 +33,13 @@ features_limited_live_analytics_description=Ограниченная актуа
features_full_live_analytics_title=актуальная аналитика (полная)
features_full_live_analytics_description=Полная актуальная аналитика с сотнями функций, включая потоки ветра, сравнительные диаграммы, расширенные визуализации на карте и многое другое
features_organize_events_title=Организация мероприятий
features_organize_events_description=Занимайтесь аналитикой для своей регаты с помощью нашего бесплатного приложения для отслеживания или профессионального сервиса отслеживания, например Trac Trac. Определение и аналитика маневров
features_organize_events_description=Проводите аналитику для своей регаты с помощью нашего бесплатного приложения для отслеживания или профессионального сервиса отслеживания, например Trac Trac. Определение и аналитика маневров
features_organize_events_url=https://support.sapsailing.com/hc/en-us/articles/360018169799-Create-a-simple-event-on-my-sapsailing-com
features_events_with_more_regatta_title=Мероприятия, включающие более одной регаты
features_events_with_more_regatta_description=Можно создать многоклассовое мероприятие или сезон мероприятий, учитывающихся в сезонной таблице лидеров
features_connect_to_tractrac_title=Соединение с Trac Trac
features_connect_to_tractrac_description=Соединение с профессиональным сервисом отслеживания
features_connect_to_tractrac_url=https://tractrac.com/
features_imports_title=Импорт внешних данных
features_imports_description=Импорт файлов в форматах GPX и KML, GRIB-файлов и журналов Expedition
features_media_management_title=Управление медиа
@@ -60,10 +62,12 @@ features_maneuver_analytics_title=Аналитика маневров
features_maneuver_analytics_description=Расширенная аналитика выполнения маневров участниками соревнования, включающая потерю маневра, угловую скорость поворота и угол маневра
features_wind_analytics_title=Аналитика ветра
features_wind_analytics_description=Расширенная аналитика собранных данных о ветре; цветное анимированное наложение и диаграммы потоков ветра для каждого учитываемого источника ветра
features_data_mining_title=Сбор данных
features_data_mining_description=Сбор данных в гонках и мероприятиях. В зависимости от типа плана: только для архива (все, что можно найти на www.sapsailing.com) или для всех поддоменов (например, по лигам, актуальным мероприятиям или серверам клубов)
features_data_mining_title=Сбор данных-архив
features_data_mining_description=Используйте сбор данных прошлых событий по всем гонкам и событиям
features_data_mining_all_title=Сбор данных - все
features_data_mining_all_description=В плане "Архив" можно использовать сбор данных прошлых событий, которые уже архивированы, а план "Все" позволяет использовать также сбор данных текущих сезонов лиги. В него также включены все данные из архива (все, что можно найти на сайте www.sapsailing.com) и все поддомены (например для лиг, текущих событий и серверов клубов)
trial_name=Пробная
trial_description=На один день предоставляется бесплатная пробная версия всех планов, включая "Премиум" и "Сбор данных". Подписку можно оформить только один раз
trial_description=На один день предоставляется бесплатная пробная версия всех планов, включая "Премиум" и оба плана "Сбор данных". Подписку можно оформить только один раз
trial_info=
trial_price_info=Попробуйте бесплатно, только один день
trial_features=Все из плана "Сбор данных - все"|Включены все функции|Только один день
@@ -5,27 +5,27 @@ payment_interval_DAY=dan
support_subject=Zahteva za storitev SAP Sailing Analytics in informacije
businessModelTitle=Poslovni model
businessModelDescription=Odločili smo se, da našo brezplačno rešitev razširimo, tako da ponudimo naročnino. Čeprav lahko še vedno spremljate osnovno tekmovanje in si v živo brezplačno ogledate lestvico vodilnih na podlagi vetra, bi vas prosili za vaš prispevek, če cenite številne napredne funkcije SAP Sailing Analytics. SAP že več kot desetletje v celoti sponzorira to rešitev in jo daje na voljo številnim jadralnim dogodkom po vsem svetu. Zdaj imate priložnost, da pomagate, da je rešitev še naprej na voljo jadralni skupnosti. Vsa plačila naročnine po vaši izbiri so namenjena postopkom, podpori, vzdrževanju in nadaljnjemu razvoju Sailing Analytics. Svoje predloge lahko oddate na https://bugzilla.sapsailing.com, kjer lahko spremljate tudi napredek v razvoju. Zahvaljujemo se vam za razumevanje in stalno podporo.
free_subscription_plan_name=Brezplačno
free_subscription_plan_description=Preskusite
free_subscription_plan_name=Osnovno
free_subscription_plan_description=Ustvarite svoj račun. Preskusite.
free_subscription_plan_info=
free_subscription_plan_price_info=
free_subscription_plan_features=Osnovna lestvica vodilnih v živo na podlagi vetra|Ustvarite račun in opravite analitiko jadranja za regato ali trening z našo brezplačno aplikacijo za slednje ali strokovno storitvijo sledenja|Sinhronizirajte videoposnetke v YouTubu v živo s svojimi plovi
free_subscription_plan_features=Osnovna lestvica vodilnih v živo na podlagi vetra|Opravite analitiko jadranja za regato ali trening z našo brezplačno aplikacijo za slednje ali strokovno storitvijo sledenja|Sinhronizirajte videoposnetke v YouTubu v živo s svojimi plovi
premium_name=Premium
premium_description=Vse premium funkcije, kot je prekrivno okno z zemljevidom vetra, simulator in razširjena metrika, kot je razdalja do vodilnega, prepluta razdalja ter odstopanje od začrtane smeri
premium_info=
premium_price_info=Enkratno plačilo
premium_features=Vse iz brezplačnega paketa|Celotna analitika v živo s številnimi funkcijami, vključno s tokovi vetra, primerjalnimi diagrami ali razdaljo do vodilnega|Označite osebno časovnico z videoposnetki in opombami|Napredne vizualizacije na zemljevidu in še veliko več.|Spodaj si oglejte seznam vseh Premium funkcij
data_mining_archive_name=Podatkovno rudarjenje - arhiv
data_mining_archive_name=Podatkovno rudarjenje - arhiv
data_mining_archive_description=Podatkovno rudarjenje po arhiviranih plovih in dogodkih.
data_mining_archive_info=
data_mining_archive_price_info=Enkratno plačilo
data_mining_archive_features=Vse iz premijskega paketa|Zmogljivo podatkovno rudarjenje za arhivirane plove in dogodke, ki jih je mogoče najti na www.sapsailing.com
data_mining_all_name=Podatkovno rudarjenje - VSE
data_mining_all_name=Podatkovno rudarjenje - vse
data_mining_all_description=Podatkovno rudarjenje po vseh plovih in dogodkih
data_mining_all_info=
data_mining_all_price_info=Enkratno plačilo
data_mining_all_features=Vse iz paketa arhiva podatkovnega rudarjenja|Zmogljivo podatkovno rudarjenje vključno z dodatni podatki iz vseh poddomen sapsailing.com, na primer za lige, dogodke v živo ali klubske strežnike
free_subscription_plan_shortname=brezplačno
free_subscription_plan_shortname=Osnovno
premium_subscription_plan_shortname=Premium
datamining_subscription_plan_shortname=podatkovno rudarjenje
features_limited_live_analytics_title=Analitika v živo (omejeno)
@@ -34,10 +34,12 @@ features_full_live_analytics_title=Analitika v živo (v celoti)
features_full_live_analytics_description=Celotna analitika v živo s številnimi funkcijami, vključno s tokovi vetra, primerjalnimi diagrami, naprednimi vizualizacijami na zemljevidu in še veliko več
features_organize_events_title=Organiziraj dogodke
features_organize_events_description=Izvedite analitiko jadranja na regati z našo brezplačno aplikacijo za slednje ali strokovno storitvijo sledenja, kot je Trac Trac. Zaznavanje in analitika manevrov
features_organize_events_url=https://support.sapsailing.com/hc/en-us/articles/360018169799-Create-a-simple-event-on-my-sapsailing-com
features_events_with_more_regatta_title=Dogodki z več kot eno regato
features_events_with_more_regatta_description=Ustvarite lahko večrazredne dogodke ali sezono dogodkov, ki se upoštevajo pri sezonski lestvici vodilnih
features_connect_to_tractrac_title=Vzpostavitev povezave s Trac Trac
features_connect_to_tractrac_description=Vzpostavitev povezave s strokovno storitvijo sledenja
features_connect_to_tractrac_url=https://tractrac.com/
features_imports_title=Uvoz zunanjih podatkov
features_imports_description=Uvoz oblik zapisa datoteke GPX in KML, datotek GRIB in zapisnikov ture
features_media_management_title=Upravljanje predstavnostne vsebine
@@ -60,10 +62,12 @@ features_maneuver_analytics_title=Analitika manevrov
features_maneuver_analytics_description=Napredna analitika v zvezi z izvedbo manevrov tekmovalcev, vključno s časom manevra, stopnjo obrata in kotom manevra
features_wind_analytics_title=Analitika vetra
features_wind_analytics_description=Napredna analitika v zvezi z zbranimi podatki o vetru, barvni animirani diagrami prekrivanja in pasov za vsak upoštevani vir vetra
features_data_mining_title=Podatkovno rudarjenje
features_data_mining_description=Podatkovno rudarjenje po plovih in dogodkih. Glede na vrsto paketa samo za arhiv (vse, kar je mogoče najti na www.sapsailing.com) ali vse poddomene (na primer za lige, dogodke v živo ali klubske strežnike)
trial_name=Preskusna različica
trial_description=Brezplačni preskus vseh paketov za en dan, vključno s paketoma premium in podatkovnim rudarjenjem. Možno je le enkratno naročilo
features_data_mining_title=Podatkovno rudarjenje - arhiv
features_data_mining_description=Uporabite podatkovno rudarjenje po podatkih s preteklih plovov in dogodkov
features_data_mining_all_title=Podatkovno rudarjenje - vse
features_data_mining_all_description=Paket "Arhiv" omogoča podatkovno rudarjenje po preteklih dogodkih, ki so že arhivirani, paket "Vse" pa vam omogoča uporabo podatkovnega rudarjenja tudi za dogodke v živo in sezone lige, ki še potekajo. Vsebuje tudi vse podatke iz arhiva (vse, kar je mogoče najti na www.sapsailing.com) in vseh poddomen (npr. za lige, dogodke v živo ali klubske strežnike)
trial_name=Brezplačni preskus
trial_description=Brezplačni preskus vseh paketov za en dan, vključno s paketoma "Premium" in "Podatkovno rudarjenje". Naročite se lahko samo enkrat
trial_info=
trial_price_info=Preskusite en dan brezplačno
trial_features=Vse iz paketa arhiva podatkovnega rudarjenja|Vključene so vse funkcije
@@ -5,16 +5,16 @@ payment_interval_DAY=天
support_subject=SAP Sailing Analytics 服务和信息请求
businessModelTitle=业务模式
businessModelDescription=我们决定通过订阅产品扩展我们的免费解决方案。您仍然可以关注基本的比赛活动并且可以免费查看基于风力的实况积分榜,但是,如果您想要使用 SAP Sailing Analytics 提供的诸多高级功能,您需要订阅。十多年来,SAP 一直全力赞助该解决方案,并将其提供给全球成千上万的帆船比赛活动。现在,您拥有使该解决方案继续可供帆船界使用的机会。对于您选择的任何订阅,所有款项都将用于 Sailing Analytics 的运营、支持、维护和进一步开发。您可以在 https://bugzilla.sapsailing.com 提供您的建议并关注开发进度。感谢您的理解和一如既往的支持!
free_subscription_plan_name=免费版
free_subscription_plan_description=试用
free_subscription_plan_name=基本
free_subscription_plan_description=创建您自己的账户。试试吧。
free_subscription_plan_info=
free_subscription_plan_price_info=
free_subscription_plan_features=基于风力的基本实况积分榜|创建您自己的账户并使用我们的免费跟踪应用或专业跟踪服务为您的比赛或培训执行 Sailing Analytics|将 YouTube 直播视频与您的比赛轮次同步
free_subscription_plan_features=基于风力的基本实况积分榜|使用我们的免费跟踪应用或专业跟踪服务为您的比赛或培训执行 Sailing Analytics|将 YouTube 直播视频与您的比赛轮次同步
premium_name=高级版
premium_description=所有高级版功能(例如风图覆盖图)、模拟器和增强的指标,例如与第一名的差距、航行距离和交叉轨道误差
premium_info=
premium_price_info=一次性付款
premium_features=免费计划的内容|完整的实时分析,提供数百项功能,包括风流|比较记录或第一名的差距|使用视频和注释标记个人时间线|高级地图内可视化效果等。|请查看下方的完整高级版功能清单
premium_features=免费计划的内容|完整的实时分析,提供数百项功能,包括风流、比较记录或与第一名的差距|使用视频和注释标记个人时间线|高级地图内可视化效果等。|请查看下方的完整高级版功能清单
data_mining_archive_name=数据挖掘 - 归档
data_mining_archive_description=跨已归档比赛轮次和活动的数据挖掘
data_mining_archive_info=
@@ -25,7 +25,7 @@ data_mining_all_description=跨所有比赛轮次和活动的数据挖掘
data_mining_all_info=
data_mining_all_price_info=一次性付款
data_mining_all_features=数据挖掘归档计划的内容|强大的数据挖掘功能,包括来自 sapsailing.com 所有子域的附加数据,例如:联赛、现场活动或俱乐部服务器
free_subscription_plan_shortname=免费
free_subscription_plan_shortname=基本
premium_subscription_plan_shortname=高级版
datamining_subscription_plan_shortname=数据挖掘
features_limited_live_analytics_title=实时分析(有限)
@@ -34,10 +34,12 @@ features_full_live_analytics_title=实时分析(完整)
features_full_live_analytics_description=完整的实时分析,提供数百项功能,包括风流、比较记录、高级地图可视化效果等
features_organize_events_title=组织活动
features_organize_events_description=使用我们的免费跟踪应用或专业跟踪服务(例如 Trac Trac)为您的比赛运行 Sailing Analytics。操作检测和分析
features_organize_events_url=https://support.sapsailing.com/hc/en-us/articles/360018169799-Create-a-simple-event-on-my-sapsailing-com
features_events_with_more_regatta_title=拥有不止一场比赛的活动
features_events_with_more_regatta_description=您可以创建多类活动,也可以创建包含赛季性积分榜在内的活动赛季。
features_connect_to_tractrac_title=连接到 Trac Trac
features_connect_to_tractrac_description=连接到专业跟踪服务
features_connect_to_tractrac_url=https://tractrac.com/
features_imports_title=导入外部数据
features_imports_description=导入 GPX 和 KML 文件格式、GRIB 文件和导航图日志
features_media_management_title=媒体管理
@@ -60,10 +62,12 @@ features_maneuver_analytics_title=操作分析
features_maneuver_analytics_description=有关参赛队操作执行的高级分析,包括操作损失、回转率和操作角度
features_wind_analytics_title=风力分析
features_wind_analytics_description=有关所收集风力数据的高级分析;考虑的每个风源的彩色动画覆盖图和带状图
features_data_mining_title=数据挖掘
features_data_mining_description=跨比赛轮次和活动的数据挖掘。取决于计划类型,即仅限归档(可以在 www.sapsailing.com 下找到的所有内容)还是所有子域(例如:联赛、现场活动或俱乐部服务器)
trial_name=试用
trial_description=全部计划免费试用一天,包括高级版和数据挖掘计划。只能订阅一次
features_data_mining_title=数据挖掘 - 归档
features_data_mining_description=对跨比赛轮次和活动的过去活动数据使用数据挖掘
features_data_mining_all_title=数据挖掘 - 全部
features_data_mining_all_description=您可以使用“归档”计划对已归档的过去活动使用数据挖掘,可以使用“全部”计划对现场活动和正在进行的联赛赛季使用数据挖掘。它还包括归档中的所有数据(可以在 www.sapsailing.com 下找到的所有内容)和所有子域(例如:联赛、现场活动或俱乐部服务器)
trial_name=免费试用
trial_description=全部计划免费试用一天,包括“高级”版和两种“数据挖掘”计划。只能订阅一次
trial_info=
trial_price_info=免费测试一天
trial_features=数据挖掘全部计划的内容|包括所有功能|有效期为一天
-1
View File
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE projectDescription>
<projectDescription>
<name>wiki</name>
<comment></comment>
+6 -2
View File
@@ -32,12 +32,15 @@ To start SDM debugging in Eclipse, do the following:
* Start the backend as you would always do.
* Start GWT Super Dev Mode by launching "SailingGWT sdm.launch" or "SailingGWT All SDM.launch".
* Do not Click on the URLs provided in "Development view"!
* Run "Debug SailingGWT SDM on Chrome.launch"
* Do not Click on the URLs provided in "Development view" (this is not essential for MAC users)!
* Make sure that in the _Debug Configurations..._ => *Launch Browser* tab, you set the correct browser search order: _chrome_ **must** be the first one for the SDBG to work correctly.
* Run "Debug AdminConsole"
* A new instance of Chrome is started and you will see a debug session running in Eclipse
* Your Eclipse break points will now work in the running debug session.
* You are free to change the URL or navigate to other pages in the automatically openend browser window (debugging will go on)
You may need to go to *Preferences => General => Web Browser*, and click _New_ to add Chrome.
### Noteworthy information & Troubleshooting
If you are faced with an error stating that your Chrome installation isn't found, do the following:
@@ -55,6 +58,7 @@ Be aware that some of the Eclipse debugger features do NOT work with this kind o
* Variable naming is not 1:1 what you expect in the Java world
* Stacks look different but clicking on Stack elements should
* [[Stack Traces logged in Chrome do not use source maps|https://code.google.com/p/chromium/issues/detail?id=357958]], so you see the JavaScript Stack Trace instead.
If you wish to debug in a different language, go to the `.gwt.xml file`, for the given page, and add `<extend-property name="locale" values="en,de" />`. Next, run the setup, the same way you would to use the debugger. After launching in Chrome, add the following after the .html: `?locale=de`
## Debugging SDM on Android devices
+15 -2
View File
@@ -48,7 +48,7 @@ First of all, make sure you've looked at [http://www.amazon.de/Patterns-Elements
3. JDK 1.8 (Java SE 8), ideal is the SAPJVM 1.8: Go to [https://tools.eu1.hana.ondemand.com/#cloud](https://tools.eu1.hana.ondemand.com/#cloud), scroll down to `SAP JVM` select your operating System, extract the downloaded .zip into desired location (e.g. Windows `C:\Program Files\Java`. If you want to make this your default JDK, set the `JAVA_HOME` variable to it. In any case, set the `JAVA8_HOME` variable to it which is required by a few build scripts where certain steps currently are not yet compatible with newer JDK releases, such as our Android build process, keeping us on Gradle 6.0.1 for the time being which isn't Java 17-compatible.
4. Git (e.g. Git for Windows v2.18), [http://git-scm.com](http://git-scm.com) / [https://git-for-windows.github.io](https://git-for-windows.github.io)
5. Configure git (see [Git repository configuration essentials](#onboarding-information_sap-sailing-analytics-development-setup_git-repository-configuration-essentials))
6. MongoDB (at least Release 4.4), download: [https://www.mongodb.com/](https://www.mongodb.com/)
6. MongoDB (at least Release 4.4), download: [https://www.mongodb.com/](https://www.mongodb.com/). You may need to choose the community edition. In addition, install `mongosh`.
7. RabbitMQ, download from [http://www.rabbitmq.com](http://www.rabbitmq.com). Requires Erlang to be installed. RabbitMQ installer will assist in installing Erlang. Some sources report that there may be trouble with the latest versions of RabbitMQ. In some cases, McAffee seems to block the installation of the latest version on SAP hardware; in other cases connection problems to the newest versions have been reported. We know that version 3.6.8 works well. [https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_8](https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_8)
8. Maven 3.1.1 (or higher), [http://maven.apache.org](http://maven.apache.org)
A setup guide for windows can be found on this webpage: [https://maven.apache.org/guides/getting-started/windows-prerequisites.html](https://maven.apache.org/guides/getting-started/windows-prerequisites.html)
@@ -92,7 +92,7 @@ Copy the settings.xml (may be in $GIT_HOME/configuration/maven-settings.xml and
### Automatic Eclipse plugin installation
The necessary Eclipse plugins can be automatically installed into a newly unzipped version of ["2023-09"](https://www.eclipse.org/downloads/packages/release/2023-09/r/eclipse-ide-eclipse-committers) by using the `./configuration/pluginsForEclipse2023-09.p2f` file, found in the git repository cloned in _step 11_. To install the plugins open Eclipse and install Software Items from File. (File ⇒ Import ⇒ Install ⇒ Install Software from File). The description file is located at `/configuration/pluginsForEclipse2023-09.p2f`.
Make sure to select all Plugins (it might not be possible to select Lucene ignore that) and click next. In the pop-up dialog shown next, leave the top radio button selected ("Keep my installation the same and modify the items being installed to be compatible"). Skip the `Installation details`, accept the licence agreements and click finish. While Eclipse is installing the plugins a pop-up will appear in the background where you need to trust all plugins. Be aware that the installation may take several minutes depending on your Internet connection.
Make sure to select all Plugins (it might not be possible to select Lucene ignore that) and click next. In the pop-up dialog shown next, select the top radio button ("Update my installation to be compatible with the items being installed"). Skip the `Installation details`, accept the licence agreements and click finish. While Eclipse is installing the plugins a pop-up will appear in the background where you need to trust all plugins. Be aware that the installation may take several minutes depending on your Internet connection.
Be also aware that with this p2f-file it's not possible to update the plugins to newer versions.
@@ -156,10 +156,15 @@ Out of the box, multiple settings in Eclipse need to be changed. Go to Window
- In the list on the left, click on "Connectors"
- For TracTrac Events: In the "TracTrac Connections" Form, fill in the JSON URL [http://germanmaster.traclive.dk/events/event_20120905_erEuropean/jsonservice.php](http://germanmaster.traclive.dk/events/event_20120905_erEuropean/jsonservice.php)(all other required information will be filled in automatically)
- Press "List Races"
6. Further useful launch configurations
- Use SAP JVM Profiler. If you used the script above and installed the SAPJVM instead of the jdk, you can now open the profiling perspective by clicking on Window ⇒ Perspective ⇒ Open Perspective ⇒ Profiling)
- Debugging gwt: For further instructions please see [here](./development/super-dev-mode)
If you want to use **breakpoints**, *avoid* clicking on the options in the Development Mode tab. Instead, within the _Debug Configurations_ menu, select the _Debug AdminConsole_ (found in the _Launch Browser_ subtab); change the browser search order, such that chrome is the leftmost; and then launch. This is necessary because SDBG is compatible with Chrome. Further, details of how GWT Super Dev Mode (SDM) works, can be found in the link above.
### Build for deployment
Open a shell (preferrably a git bash or a cygwin bash), cd to the git workspace's root folder and issue "./configuration/buildAndUpdateProduct.sh build". This should build the software and run all the tests. If you want to avoid the tests being executed, use the -t option. If you only want to build one GWT permutation (Chrome/English), use the -b option. When inside the SAP VPN, add the -p option for proxy use. Run the build script without arguments to get usage hints.
@@ -247,3 +252,11 @@ Install the GWT Browser Plugin for the GWT Development mode. As of 2016-08-31 Fi
### Create Hudson Job
If you want a hudson job to run when you push your branch then you can run a script in `configuration` called . Run options for a branch titled `createHudsonJobForBug.sh`. For you bug branch titled `bug<bug number>`, create a build job, which will create a release, by running the script like so: `./createHudsonJobForBug.sh <bug number>`.
If on Windows, you may need to disable any web shields in antivirus software, to allow `curl` to function.
###Issues when playing around with AWS
- The problem: **aws cli (used for aws ec2 describe-tags) hangs in eu-west-2** in all AZs on new instances I created, using a target group which permitted all outbound connections and inbound https, http and ssh connections. I tried permitting everything but that didn’t work. When I attached (at Axel’s suggestion) the Java Application with Reverse Proxy security group, it worked but — even if I duplicated this security group, and applied that copy instead — it still didn’t work.
Curl issue solution: it turns out that the network interface only permits certain outbound and inbounds from certain target groups.
The path to the solution: On my instance in eu-west-2a, I ran aws --debug ec2 describe-tags (you may need to do aws configure first). This is much akin to verbose mode of other unix commands. I noticed it hang on a request to ec2.eu-west-2.amazonaws.com. If you do `dig -t any ec2.eu-west-2.amazonaws.com` you see 3 ip addresses, which — as you will see later — are IPs in each of the eu-west-2 availability zones. When I ran curl -v ec2.eu-west-2.amazonaws.com (the v flag is verbose), one of the IPs from dig was used (namely the one in eu-west-2a, where the instance resides) and it hangs. I then went to endpoints for the VPC and noticed a service for the service `com.amazonaws.eu-west-2.ec2`. It had the default security group, which turned out to only allow inbound rules from the default or Java Application with Reverse Proxy target group.
- Problem: A load balancer's target group health checks fail. I was told the checks failed with 403 errors.
Solution: This was occurring because the website didn't have any content in the /var/www/html. Whilst a site was still served (namely the Apache test page) it does throw a 403 error. If you fill the directory with and index.html the test then passes and a 200 code is returned
+7 -14
View File
@@ -97,23 +97,16 @@ As a result of handling the request, Final Assembly will trigger builds on [http
### xMake Build for Android Apps
We currently release the Android apps off a branch called ``android-xmake-release`` and referred to in the sequel as the "Android release branch."
The Android release branch holds the changes required to run a successful Android build in xMake. This cannot be overestimated, and credits go to Steffen Schaefer for pulling this off! Check out the specificities for the Android build in the top-level ``pom.xml`` file and you see why this was such a great achievement.
We have various branches on which Android mobile app features are being developed. Ultimately, they should be merged into the ``master`` branch from where they get merged into the Android release branch. A so-called "Customer release" build can be triggered for the Android release branch on a [central Jenkins instance](https://xmake-mobile-dev.wdf.sap.corp/job/sapsailingprogram/job/sapsailingcapture.android-OD-dockerrun/). However, it is important to know that the xMake build profile will make sure that the version specified in the ``pom.xml`` descriptors matches in its major and minor version with a ``rel-x.y`` branch name in the central git repository at ``git.wdf.sap.corp``. For example, if the ``pom.xml`` files specify a ``1.4.0`` version, the commit to be built needs to be contained in a branch called ``rel-1.4``.
Also note that once released to Nexus, the next release build will have to use at least an incremented micro version, such as 1.4.1. In order to change all versions in all `MANIFEST.MF` and `pom.xml` files consistently, the Tycho `set-version` plugin can be used. For this, the `<parent>` definition in the top-level `pom.xml` file needs to be commented out, which points to `com.sap.ldi/ldi-parent/8.0.0` or else you will get error messages that this component cannot be found (it is only found when the build is run on a central Jenkins instance that sees the Nexus repository at the right place). Then, you would have to issue the following command, setting the version number as required:
We currently release the Android apps off a branch called ``android-xmake-release`` and referred to in the sequel as the "Android release branch." The Android release branch holds the changes required to run a successful Android build in xMake, particularly some adjustments to the top-level "Gradle Wrapper" (``/gradlew``) and its properties (``/gradle/wrapper/gradle-wrapper.properties``), such as obtaining the Gradle ZIP file from an SAP-internal sources instead of from an external repository. Other diffs between ``android-xmake-release`` are rather a legacy from the earlier Maven-based build and could in principal be reverted, such as the specific version adjustments along all ``pom.xml`` files. The actual build is still the Gradle build that xMake invokes like this:
```
mvn -Dtycho.mode=maven org.eclipse.tycho:tycho-versions-plugin:set-version -DnewVersion=x.y.z
./gradlew -Pxmake -Pversion=1.4.116 -PcommonRepoURL=https://int.repositories.cloud.sap/artifactory/build-releases/
```
Make sure to replace `x.y.z` by the version to which you want to set your files. Then remember to uncomment the `<parent>` specification again.
We have various branches on which Android mobile app features are being developed. Ultimately, they should be merged into the ``master`` branch from where they get merged into the Android release branch. A so-called "Customer release" build can be triggered for the Android release branch on a [central Jenkins instance](https://xmake-mobile-dev.wdf.sap.corp/job/sapsailingprogram/job/sapsailingcapture.android-SP-REL-common_directshipment/). To get a release build staged for releasing, the version numbers in a few descriptor files, particularly the ``gradle.properties`` files of each app sub-directory under ``/mobile``, as well as ``cfg/files2sign.json`` need to be adjusted to the new version.
Next, make sure to upgrade the versions in the `AndroidManifest.xml` files of the three apps we're currently shipping. The `android:versionCode` specifier is relevant for the PlayStore pushing the update to the users. The `android:versionName` is just a symbolic name which users will see (other than the `android:versionCode` which is not usually displayed to users). For the `android:versionName` we try to use a reasonable versioning scheme that should be independent of our internal rel-x.y numbering and the sequential, technical versionCode. Example: 1.1.
Also note that once released to Nexus / Artifactory, the next release build will have to use at least an incremented micro version, such as 1.4.1.
In order to get the Android release branch merged into the ``rel-x.y`` branch, the same process as explained above for the merge of iOS branches into ``fa/rel-x.y`` is required. In particular, this means that a Java Correction Workbench Correction Request [needs to be created](https://css.wdf.sap.corp/sap/bc/bsp/spn/jcwb/default.htm?newCMForProject=sapsailingcapture&newCMComponentName=SV-COE-MSO-CDP) and the latest commit to be pushed to ``refs/for/rel-x.y`` needs to be amended so that it contains a valid ``Change-Id:`` and ``CR-Id:`` line. Then, the commit needs to be voted on. Other than for the MiOS branches under ``fa/rel-x.y`` it seems to be required that _another_ committer votes with +2 to enable a merge. Once this has been done, the blue ``Submit`` button will appear on your change page (something like [https://git.wdf.sap.corp/#/c/1436212/](https://git.wdf.sap.corp/#/c/1436212/)) that you can use to technically get the commit merged into the ``rel-x.y`` branch.
Releasing can happen only from branches in Gerrit (git.wdf.sap.corp) under the ``fa/`` branch name prefix. Our Android branch for releasing therefore currently is ``fa/rel-1.4``. We can simply push the latest version of our ``android-xmake-release`` branch to it.
Many of the above steps can be automated by using the script ``configuration/releaseAndroidApps.sh``. Call like this:
@@ -128,8 +121,8 @@ Additional options:
-r The git remote; defaults to origin
```
This will checkout the `android-xmake-release` branch, merge the `fa/arel-1.4` release branch into it, push the result again so Gerrit knows this commit / change already. Then, the version substitutions for all `pom.xml` and `MANIFEST.MF` files are carried out automatically by looking at the version currently declared in the root `pom.xml`. If that's a `-SNAPSHOT` version, only the `-SNAPSHOT` suffix is removed to obtain the new release version number. If no `-SNAPSHOT` suffix is found, the micro version is increased by one (e.g., 1.4.18 --&gt; 1.4.19). Furthermore, the `android:versionCode` number is increased by one for each of the three apps in their `AndroidManifest.xml`, and the `android:versionName` which is assumed to have the format major.minor will have the minor version increased by one. The result is committed to git and the resulting commit is pushed to the fa/rel-1.4 branch.
This will checkout the `android-xmake-release` branch, merge the `fa/rel-1.4` release branch into it, push the result again so Gerrit knows this commit / change already. Then, the version substitutions for all ``gradle.properties`` and ``cfg/files2sign.json`` files are carried out automatically by looking at the version currently declared in them and incrementing the micro-version by one (e.g., 1.4.18 --&gt; 1.4.19). The result is committed to git and the resulting commit is pushed to the ``fa/rel-1.4`` branch.
Once this is done, a [Customer release build can be started](https://xmake-mobile-dev.wdf.sap.corp/job/sapsailingprogram/job/sapsailingcapture.android-SP-REL-common_directshipment/). Select "Build with Parameters" from the left, then select ``Stage`` as the build mode, then ``customer`` as the ``RELEASE_MODE`` and enter the ``fa/rel-x.y`` branch name in the "TREEISH" field, make sure the Maven version 3.1.1 is selected, select Tycho version 1.0.0, switch the "Next development version" to ``no change`` and click the "Build" button. If the build succeeds, Final Assembly should be able to _promote_ the build artifact, such as the ``.apk`` files which should have been signed using the SAP certificate.
Once this is done, a [Customer release build can be started](https://xmake-mobile-dev.wdf.sap.corp/job/sapsailingprogram/job/sapsailingcapture.android-SP-REL-common_directshipment/). Select "Build with Parameters" from the left, then select ``Stage`` as the build mode, then ``customer`` as the ``RELEASE_MODE`` and enter the ``fa/rel-1.4`` branch name in the "TREEISH" field and click the "Build" button. If the build succeeds, Final Assembly should be able to _promote_ the build artifact, such as the ``.apk`` files which should have been signed using the SAP certificate.
If the build fails due to missing Nexus artifacts, check out the document describing [how to upload artifacts to Nexus](https://wiki.wdf.sap.corp/wiki/display/LeanDI/Uploading+Third+Party+Artifacts+to+Nexus#UploadingThirdPartyArtifactstoNexus-1.CreateaJiraTicket). You will have to create a JIRA ticked in this process and upload the artifact and its ``pom.xml`` file to Nexus. Usually, these requests get handled within less than 48 hours. Good luck...
@@ -0,0 +1,112 @@
# Setting up an image for the hudson.sapsailing.com server
This is an add-on to the regular EC2 image set-up described [here](https://wiki.sapsailing.com/wiki/info/landscape/creating-ec2-image-from-scratch). An Android SDK needs to be installed.
* Create a ``hudson`` user/group
* Make sure ``/home/hudson`` is a separate mount; probably just mount the existing volume of a previous installation
* Install an Android SDK under ``/home/hudson/android-sdk-linux``; if you simply re-used an old ``/home/hudson`` mount this should already be in place.
* Install Eclipse to ``/home/hudson/eclipse`` to allow sharing it in case a large AWS instance is needed, e.g., for heap dump analysis.
* export ``/home/hudson/android-sdk-linux`` and ``/home/hudson/eclipse`` as follows in ``/etc/exports``:
```
/home/hudson/android-sdk-linux 172.31.0.0/16(rw,nohide,no_root_squash)
/home/hudson/eclipse 172.31.0.0/16(rw,nohide,no_root_squash)
```
* Ensure you have EC2 / EBS snapshot backups for the volumes by tagging them as follows: ``WeeklySailingInfrastructureBackup=Yes`` for ``/`` and ``/home/hudson``.
``/home/hudson/repo`` has the Hudson build repository. The Hudson WAR file is under ``/usr/lib/hudson/hudson.war``. ``/etc/init.d/hudson``, linked to from ``/etc/rc0.d/K29hudson``, ``/etc/rc1.d/K29hudson``, ``/etc/rc2.d/K29hudson``, ``/etc/rc3.d/S81hudson``, ``/etc/rc4.d/K29hudson``, ``/etc/rc5.d/S81hudson``, and ``/etc/rc6.d/K29hudson``, takes care of spinning up Hudson during instance re-boot. Hudson systemwide configuration is under ``/etc/sysconfig/hudson``:
```
## Path: Development/Hudson
## Description: Configuration for the Hudson continuous build server
## Type: string
## Default: "/var/lib/hudson"
## ServiceRestart: hudson
#
# Directory where Hudson store its configuration and working
# files (checkouts, build reports, artifacts, ...).
#
HUDSON_HOME="/home/hudson/repo"
## Type: string
## Default: ""
## ServiceRestart: hudson
#
# Java executable to run Hudson
# When left empty, we'll try to find the suitable Java.
#
HUDSON_JAVA_CMD="/opt/sapjvm_8/bin/java"
# The following line choses JavaSE-1.7
#HUDSON_JAVA_CMD="/opt/jdk1.7.0_02/bin/java"
# The following line choses JavaSE-1.8
#HUDSON_JAVA_CMD="/opt/jdk1.8.0_20/bin/java"
## Type: string
## Default: "hudson"
## ServiceRestart: hudson
#
# Unix user account that runs the Hudson daemon
# Be careful when you change this, as you need to update
# permissions of $HUDSON_HOME and /var/log/hudson.
#
HUDSON_USER="hudson"
## Type: string
## Default: "-Djava.awt.headless=true"
## ServiceRestart: hudson
#
# Options to pass to java when running Hudson.
#
HUDSON_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx2G -Dhudson.slaves.ChannelPinger.pingInterval=60 -Dhudson.slaves.ChannelPinger.pingIntervalSeconds=60 -Dhudson.slaves.ChannelPinger.pingTimeoutSeconds=60"
## Type: integer(0:65535)
## Default: 8080
## ServiceRestart: hudson
#
# Port Hudson is listening on.
#
HUDSON_PORT="8080"
## Type: integer(1:9)
## Default: 5
## ServiceRestart: hudson
#
# Debug level for logs -- the higher the value, the more verbose.
# 5 is INFO.
#
HUDSON_DEBUG_LEVEL="5"
## Type: yesno
## Default: no
## ServiceRestart: hudson
#
# Whether to enable access logging or not.
#
HUDSON_ENABLE_ACCESS_LOG="no"
## Type: integer
## Default: 100
## ServiceRestart: hudson
#
# Maximum number of HTTP worker threads.
#
HUDSON_HANDLER_MAX="100"
## Type: integer
## Default: 20
## ServiceRestart: hudson
#
# Maximum number of idle HTTP worker threads.
#
HUDSON_HANDLER_IDLE="20"
## Type: string
## Default: ""
## ServiceRestart: hudson
#
# Pass arbitrary arguments to Hudson.
# Full option list: java -jar hudson.war --help
#
HUDSON_ARGS=""
```
@@ -10,7 +10,13 @@ This is an add-on to the regular EC2 image set-up described [here](https://wiki.
Then carry out these steps:
* install additional packages: `yum install fail2ban git mod24_perl perl perl-CGI perl-Template-Toolkit perl-HTML-Template perl-CPAN perl-DBD-MySQL mod24_ssl php71 php71-mysqlnd mod24-ldap ruby24 ruby24-devel rubygems24 rubygems24-devel icu libicu-devel gcc-c++ ncurses-devel geoip-devel perl-autodie`
* install additional packages:
```
yum install fail2ban git mod24_perl perl perl-CGI perl-Template-Toolkit perl-HTML-Template perl-CPAN perl-DBD-MySQL \
mod24_ssl php71 php71-mysqlnd mod24-ldap ruby24 ruby24-devel rubygems24 rubygems24-devel icu libicu-devel \
gcc-c++ ncurses-devel geoip-devel perl-autodie docker
```
* activate NFS by calling `chkconfig nfs on`; ensure that `/var/log/old` and `/home/scores` are exposed in `/etc/exports` as follows:
```
/var/log/old 172.31.0.0/16(rw,nohide,no_root_squash)
@@ -64,10 +70,10 @@ sinatra-2.0.0 depends on rack (~> 2.0)
If you remove this gem, these dependencies will not be met.
Continue with Uninstall? [yN] y
Successfully uninstalled rack-2.0.3
```
* ensure there are users and groups for `wiki`, `scores`, `wordpress`, `trac` that match up with their /home directory owners / groups
* ensure there are users and groups for `wiki`, `scores`, `trac` that match up with their /home directory owners / groups
* ensure the Wiki startup script `serve.sh` configured for port 4567 and `config.ru` as well as the entire Gollum installation under /home/wiki are present, as well as the `users.yml` file
* clone ``ssh://trac@sapsailing.com/home/trac/git`` into ``/home/wiki/gitwiki``
* ensure there is a reasonable `/root/.goaccess` file
* Configure goaccess by adjusting `/etc/goaccess.conf` such that it contains the following lines:
```
@@ -88,7 +94,49 @@ mv welcome.conf welcome.conf.org
```
* install bugzilla to `/usr/share/bugzilla` and `/var/lib/bugzilla`
* create `/etc/bugzilla/localconfig`
* install scripts such as ``update_authorized_keys_for_landscape_managers_if_changed`` to ``/usr/local/bin``:
```
lrwxrwxrwx 1 root root 62 Jan 29 2022 awsmfalogon.sh -> /home/wiki/gitwiki/configuration/aws-automation/awsmfalogon.sh
-r-xr-xr-x 1 root root 1465 Jan 11 2018 dbilogstrip
-r-xr-xr-x 1 root root 6291 Jan 11 2018 dbiprof
-r-xr-xr-x 1 root root 5479 Jan 11 2018 dbiproxy
-rwxr-xr-x 1 root root 24707072 Jan 16 2022 docker-compose
-r-xr-xr-x 1 root root 42043 Jan 11 2018 enc2xs
-r-xr-xr-x 1 root root 3065 Jan 11 2018 encguess
-rwxr-xr-x 1 root root 640 Jan 11 2018 github-markup
-rwxr-xr-x 1 root root 598 Jan 11 2018 gollum
-rwxr-xr-x 1 root root 613 Jan 11 2018 htmldiff
-rwxr-xr-x 1 root root 610 Jan 11 2018 kramdown
-rwxr-xr-x 1 root root 607 Jan 11 2018 ldiff
-rwxr-xr-x 1 root root 352 Nov 1 2021 mail-events-on-my
-rwxr-xr-x 1 root root 610 Jan 11 2018 mustache
-rwxrwxr-x 1 trac trac 18992 Jun 16 2020 netio
-rwxr-xr-x 1 root root 610 Jan 11 2018 nokogiri
lrwxrwxrwx 1 root root 75 Oct 20 09:00 notify-operators -> /home/wiki/gitwiki/configuration/on-site-scripts/paris2024/notify-operators
-r-xr-xr-x 1 root root 8356 Jan 11 2018 piconv
-rwxr-xr-x 1 root root 648 Jan 11 2018 posix-spawn-benchmark
-rwxr-xr-x 1 root root 590 Jan 11 2018 rackup
-rwxr-xr-x 1 root root 596 Jan 11 2018 rougify
-rwxr-xr-x 1 root root 616 Jan 11 2018 ruby-prof
-rwxr-xr-x 1 root root 640 Jan 11 2018 ruby-prof-check-trace
-rwxr-xr-x 1 root root 586 Jan 11 2018 tilt
lrwxrwxrwx 1 root root 78 Feb 8 2021 update_authorized_keys_for_landscape_managers -> /home/wiki/gitwiki/configuration/update_authorized_keys_for_landscape_managers
lrwxrwxrwx 1 root root 89 Feb 8 2021 update_authorized_keys_for_landscape_managers_if_changed -> /home/wiki/gitwiki/configuration/update_authorized_keys_for_landscape_managers_if_changed
```
* set up ``crontab`` for ``root`` user (remove the symbolic link to ``/home/sailing/code/configuration/crontab`` if that had been created earlier)
```
0 10 1 * * export PATH=/bin:/usr/bin:/usr/local/bin; mail-events-on-my >/dev/null 2>/dev/null
* * * * * export PATH=/bin:/usr/bin:/usr/local/bin; sleep $(( $RANDOM * 60 / 32768 )); update_authorized_keys_for_landscape_managers_if_changed $( cat /root/ssh-key-reader.token ) https://security-service.sapsailing.com /root 2>&1 >>/var/log/sailing.err
0 7 2 * * export PATH=/bin:/usr/bin:/usr/local/bin; docker exec -it registry-registry-1 registry garbage-collect /etc/docker/registry/config.yml
```
* set up crontab for user `wiki` as `*/10 * * * * /home/wiki/syncgit` and make sure the script is in place
* ensure that ``/var/log/old/cache/docker`` makes it across from any previous installation to the new one; it contains the docker registry contents. See in particular ``/var/log/old/cache/docker/registry/docker/registry/v2/repositories``.
* [install docker registry](https://wiki.sapsailing.com/wiki/info/landscape/docker-registry) so that the following containers are up and running:
```
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cd8086eb6361 joxit/docker-registry-ui:latest "/docker-entrypoint.…" 6 months ago Up 6 months 0.0.0.0:5000->80/tcp, :::5000->80/tcp registry-ui-1
bcf1e278ecd7 registry:latest "/entrypoint.sh /etc…" 6 months ago Up 6 months 5000/tcp, 0.0.0.0:5001->5001/tcp, :::5001->5001/tcp registry-registry-1
```
* ensure that `https://git.sapsailing.com/git` delivers the git content, with password credentials defined in `/etc/httpd/conf/passwd.git`. Sasa Zivkov (sasa.zivkov@sap.com) has been our point of contact of the SAP Gerrit group helping us with replicating our Git repository to the SAP-internal git.wdf.sap.corp one.
* comment `lbmethod_heartbeat_module` in /etc/httpd/conf.modules.d/00-proxy.conf because we don't need this sort of load balancing across origin servers and it causes a warning message in error_log
* install awstats to `/usr/share/awstats`, establish `/etc/httpd/conf/passwd.awstats`, establish a configuration under `/etc/awstats`, establish AWStats data directory under `/var/lib/awstats` and create /etc/cron.weekly/awstats as follows:
@@ -99,75 +147,6 @@ su -l -c '/usr/share/awstats/tools/awstats_updateall.pl now -configdir="
exit 0
```
* Follow the [mail setup](https://wiki.sapsailing.com/wiki/info/landscape/mail-relaying#setup-central-mail-server-instance-webserver) instructions
* Install the backup.sh script with the following contents:
```
#!/bin/sh
# This is a template for creating backup of data and persist them
# to a central backup server. Make sure to adapt this script to your needs.
#
# Maintainer: simon.marcel.pamies@sap.com
export HOME=/root
# Directories to backup
BACKUP_DIRECTORIES="/etc /home/trac/git /home/trac/mailinglists /home/trac/maven-repositories /home/trac/p2-repositories /home/trac/releases /home/trac/sapsailing_layouts.git /var/www/static /home/trac/crontab /home/scores /var/log/old"
# Prefix for backup - set that to the hostname of your server
# Make sure to change this!
PREFIX="webserver"
# Directory for temporary files
TARGET_DIR=/tmp
# Configuration for external backup server - needs a ssh key
BACKUP_SERVER="backup@172.31.25.136"
# Set date for this backup - this makes it possible to compare
# files from different branches
BACKUP_DATE=`date +%s`
# Aliases
BUP_CMD="/opt/bup/bup"
BUP_ADDITIONAL="-r $BACKUP_SERVER:/home/backup/$PREFIX"
BUP_IGNORES='--exclude-rx=/war/$ --exclude-rx=/cache/unique-ips-per-referrer/stats/'
BUP_CMD_INDEX="$BUP_CMD index $BUP_IGNORES"
BUP_CMD_SAVE="$BUP_CMD save --date=$BACKUP_DATE $BUP_ADDITIONAL"
PARAM=$@
# Make sure to init remote repository
$BUP_CMD init
ssh $BACKUP_SERVER "/opt/bup/bup init -r /home/backup/$PREFIX"
# Backup general directories
for OTHER_DIR in $BACKUP_DIRECTORIES; do
NORMALIZED_DIR_NAME=${OTHER_DIR//\//-}
$BUP_CMD_INDEX $OTHER_DIR
$BUP_CMD_SAVE -n dir$NORMALIZED_DIR_NAME $OTHER_DIR
# no need to remove any backup files here
done
```
* Register the backup script as a cron job by establishing the following `/etc/crontab` file:
```
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=simon.marcel.pamies@sap.com
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
0 22 * * * root /opt/backup.sh
```
* Install Wordpress
* Install gollum Wiki
* Copy git contents of ssh://trac@sapsailing.com/home/trac/git to /home/trac/git
* Ensure there is a /home/scores directory with subdirectories `barbados`, `kiwo`, `sailwave`, `scores`, `velum`, and `xrrftp`.
@@ -188,7 +167,33 @@ logpath = /var/log/secure
maxretry = 5
```
* Ensure that fail2ban will be started automatically when the instance starts: `chkconfig --level 23 fail2ban on` and start it right away with `service fail2ban start`. You can see which filters are active using `service fail2ban status`.
* Ensure you have EC2 / EBS snapshot backups for the volumes by tagging them as follows: ``WeeklySailingInfrastructureBackup=Yes`` for ``/var/www/static``, ``/var/log``, ``/var/log/old`` and ``/var/log/old/cache``, ``DailySailingBackup=Yes`` for ``/home``.
## Appendix / Resources
BACKUP_DIRECTORIES="/etc /home/trac/git /home/trac/mailinglists /home/trac/maven-repositories /home/trac/p2-repositories /home/trac/releases /home/trac/sapsailing_layouts.git /var/www/static /home/trac/crontab /home/scores /var/log/old"
## Basic setup for reverse proxy instance
perl
httpd
apachetop
per-CGI
postfix
sendmail-cf
mod_proxy_html
tmux
nfs-utils
amazon linux extras install php7.2 && yum update && yum install php
root access
num of connections trackable
keyreader token
amazon-efs-utils
mounts
mail -> I don't think anything is needed but I added the stuf to sendmail-cf ///
logrotate target
chkconfig nfs on (half complete)
fail2ban setup
@@ -2,6 +2,20 @@
I started out with a clean "Amazon Linux AMI 2015.03 (HVM), SSD Volume Type - ami-a10897d6" image from Amazon and added the existing Swap and Home snapshots as new volumes. The root/system volume I left as is, to start with. This requires having access to a user key that can be selected when launching the image.
Add a ``sailing`` user / group. Under that user account, clone ``ssh://trac@sapsailing.com/home/trac/git`` to ``/home/sailing/code``.
Under ``/usr/local/bin`` install the following:
```
lrwxrwxrwx 1 root root 56 Oct 20 09:20 cp_root_mail_properties -> /home/sailing/code/configuration/cp_root_mail_properties
-rwxr-xr-x 1 root root 24707072 Jan 30 2022 docker-compose
lrwxrwxrwx 1 root root 71 May 10 2021 getLatestImageOfType.sh -> /home/sailing/code/configuration/aws-automation/getLatestImageOfType.sh
lrwxrwxrwx 1 root root 50 Mar 23 2021 launchhudsonslave -> /home/sailing/code/configuration/launchhudsonslave
lrwxrwxrwx 1 root root 57 Mar 23 2021 launchhudsonslave-java11 -> /home/sailing/code/configuration/launchhudsonslave-java11
lrwxrwxrwx 1 root root 69 Jun 1 2019 mountnvmeswap -> /home/sailing/code/configuration/archive_instance_setup/mountnvmeswap
lrwxrwxrwx 1 root root 78 Jan 27 2021 update_authorized_keys_for_landscape_managers -> /home/sailing/code/configuration/update_authorized_keys_for_landscape_managers
lrwxrwxrwx 1 root root 89 Feb 4 2021 update_authorized_keys_for_landscape_managers_if_changed -> /home/sailing/code/configuration/update_authorized_keys_for_landscape_managers_if_changed
```
Enable the EPEL repository by issuing `yum-config-manager --enable epel/x86_64` or `sudo amazon-linux-extras install epel -y`.
I then did a `yum update` and added the following packages:
@@ -35,13 +49,13 @@ In order to be able to connect to AWS DocumentDB instances, the corresponding ce
A latest MongoDB shell is installed by the following:
```
cat << EOF >/etc/yum.repos.d/mongodb-org.3.6.repo
[mongodb-org-3.6]
cat << EOF >/etc/yum.repos.d/mongodb-org.4.4.repo
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.6/x86_64/
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
EOF
yum update
@@ -111,10 +125,10 @@ Added the following two lines to `/etc/security/limits.conf`:
```
* hard nproc unlimited
* hard nofile 65000
* hard nofile 128000
```
This increases the maximum number of open files allowed from the default 1024 to a more appropriate 65k.
This increases the maximum number of open files allowed from the default 1024 to a more appropriate 128k.
Copied the httpd configuration files `/etc/httpd/conf/httpd.conf`, `/etc/httpd/conf.d/000-macros.conf` and the skeletal `/etc/httpd/conf.d/001-events.conf` from an existing server. Make sure the following lines are in httpd.conf:
@@ -134,6 +148,12 @@ Instead of having the `ANDROID_HOME` environment variable be set in `/etc/profil
Had to fiddle a little with the JDK being used. The default installation has an OpenJDK installed, and the AWS tools depend on it. Therefore, it cannot just be removed. As a result, it's important that `env.sh` has the correct `JAVA_HOME` set (/opt/jdk1.8.0_45, in this case). Otherwise, the OSGi environment won't properly start up.
For the ``root`` user create the symbolic link from ``/root/crontab`` to ``/home/sailing/code/configuration/crontab`` and run ``crontab crontab``. It adds the following crontab entry that is responsible for updating the SSH keys of the users with permission for landscape management in the ``/root/.ssh/authorized_keys`` file.
```
* * * * * export PATH=/bin:/usr/bin:/usr/local/bin; sleep $(( $RANDOM * 60 / 32768 )); update_authorized_keys_for_landscape_managers_if_changed $( cat /root/ssh-key-reader.token ) https://security-service.sapsailing.com /root 2>&1 >>/var/log/sailing.err
```
Make sure, a valid bearer token is installed in ``/root/ssh-key-reader.token``.
To ensure that chronyd is started during the boot sequence, issued the command
```
+14 -16
View File
@@ -4,24 +4,22 @@
## Basic setup of the Android apps build
The Android Build is based on Maven and is part of the overall multi-module-build. The Android specific projects are hosted in /mobile. The build of the app projects is completely separated from Tycho/p2.
The Android Build is based on Gradle and is separate of the overall multi-module-build. The Android specific projects are hosted in /mobile. The build of the app projects is completely separated from Tycho/p2.
## Backend Build vs Android Build
To build the Android apps, go to the root of the Git workspace and enter the command
```
./gradlew
```
It will produce the APK files in the following locations:
```
./mobile/com.sap.sailing.racecommittee.app/build/outputs/apk/release/com.sap.sailing.racecommittee.app-unsigned.apk
./mobile/com.sap.sailing.android.buoy.positioning.app/build/outputs/apk/release/com.sap.sailing.android.buoy.positioning.app-unsigned.apk
./mobile/com.sap.sailing.android.tracking.app/build/outputs/apk/release/com.sap.sailing.android.tracking.app-unsigned.apk
```
The build job also copies them to ``java/com.sap.sailing.www/apps`` from where, during the build of the ``com.sap.sailing.www`` OSGi bundle they become part of the overall delivery and can hence be downloaded conveniently for a "side-load" style installation from any of our servers' ``/apps`` URL path.
Due to some incompatibilities of the Android Build with specifics of the Tycho Build, it's not possible to build the backend and Android apps in one execution. That's why there are several profiles that control, what is part of the specific build.
The default activation of the profiles causes the backend build to run. The relevant profiles to switch between backend and Adnroid build are:
* with-mobile (defauts to off)
* with-not-android-relevant (defauts to on)
So to run the Android apps build you have to add "-P -with-not-android-relevant -P with-mobile" to the Maven command line.
If this build works without errors, it will also be part of all full product builds, as seen on [https://hudson.sapsailing.com](https://hudson.sapsailing.com).
## Release build overview
There are several differences when running the build on Lean DI. Due to this, it's necessary to implement some changes in the build. To realize the build for Lean DI there is a specific branch "android-xmake-release". It is intended that most of the Lean DI specific logic is implemented on "master" in specific Maven profiles. This causes the release branch to only have few differences compared to "master". The most notable differences are:
* Configuration of parent POM "com.sap.ldi:ldi-parent" in workspace POM
* Versions are set to not be *-SNAPSHOT but release versions
* Some profile activation conditions are changed
See also [https://wiki.sapsailing.com/wiki/info/landscape/building-and-deploying#building-deploying-stopping-and-starting-server-instances_app-build-process-for-ios-and-android](https://wiki.sapsailing.com/wiki/info/landscape/building-and-deploying#building-deploying-stopping-and-starting-server-instances_app-build-process-for-ios-and-android).
See [here](https://wiki.sapsailing.com/wiki/info/landscape/building-and-deploying#building-deploying-stopping-and-starting-server-instances_app-build-process-for-ios-and-android_xmake-build-for-android-apps).