Scripting Contest

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
heisenberg
Beiträge: 3555
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Scripting Contest

Beitrag von heisenberg » 07.12.2015 17:53:03

Daher hatte ich hier eigentlich nicht auf Code, sondern auf ein "Das gibts doch schon!" gehofft.
Die grösste Häufigkeit, bei der ich diesen Satz gehört habe, war immer an dem Punkt, nachdem ich mir sehr viel Mühe gegeben habe, eine eigene Lösung zu schreiben. Da kam dann immer: Das ist aber aufwendig, wieso nimmst Du nicht einfach .... ! Davor kam das irgendwie nie.

Vielleicht auch deswegen, weil eine Darstellung der Aufgabe als tatsächlicher Code eine sehr präzise Art ist, sein Problem zu beschreiben. :)
Jede Rohheit hat ihren Ursprung in einer Schwäche.

r4pt0r
Beiträge: 1237
Registriert: 30.04.2007 13:32:44
Lizenz eigener Beiträge: MIT Lizenz

Re: Scripting Contest

Beitrag von r4pt0r » 07.12.2015 20:06:12

MoonKid hat geschrieben: IMO ist eine shell nicht für Menschen, sondern für Maschienen:
[...]
Es ist so schon gerade schwierig, meinen Kollegen im Team zu erklären, was ich hier so eigentlich gerade anstelle mit den ganzen scripten und ihren Daten - da kann ich nicht noch mit Bash kommen.
Da fällt mir noch ein sehr wichtiger Grund ein: Fehleranfälligkeit ist deutlich niedriger wenn ich von Bash die Finger lasse. Wenn ich eine sed-tr-grep-dingsbums-Lösung nehmen würde, hätte ich nie das Gefühl, so wirklich sicher zu sein, dass die Dinger auch das machen was ich will. Nicht weil sie etwas falsches tun, sondern weil ich ihre Sprache nicht adäquat beherrsche.
Die shell ist dazu da, dass menschen kurz und exakt der maschine sagen können was getan werden soll (anstatt ellenlang in beschränkten GUI-menüs rumzuklicken...)

Ich weiß nicht welches Aufgabengebiet Du und Deine Kollegen haben - aber wenn Serververwaltung/Administration oder ähnliches dazugehört, muss sicherer Umgang mit der Shell gegeben sein - egal ob interaktiv oder als script. Man schickt auch keinen Aussendienstler der nur Spanisch kann zum Kundentermin nach Indien...
Wenn man sich täglich (oder für ein Projekt) in einer Umgebung bewegt, muss man sich auch mit dem nötigen Grundwissen und ggf Sprachen auseinandersetzen, sonst endet das ziemlich schnell in Frust und Chaos. Mindestens eine Skriptsprache sollte also sicher beherrscht werden. In Linuxumgebungen idealerweise (Ba)sh oder grundlegendes Perl als "Shellskripte auf Steroiden" (auch wenn Perl _viel_ mächtiger ist als das...)

Um annähernd zurück zum Topic zu kommen:
Genau solche Anfragen sollten durch "Grundregeln" ausgeschlossen werden - das gehört als Anfrage in einen eigenen Thread...
Evtl sollten Aufgabenstellungen auch grundsätzlich nur Einzelprobleme behandeln - also z.B. nur einen Algorithmus zum Ziel haben, ggf benötigter I/O und Boilerplate-code kann (sollte?) zwecks Übersichtlichkeit weggelassen werden.

Benutzeravatar
heisenberg
Beiträge: 3555
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Scripting Contest

Beitrag von heisenberg » 08.12.2015 00:27:30

Ich habe mal einen Entwurf zum Thema:

Entwurf: Scripting Contest HOWTO

Lasst uns das hier ausdiskutieren und anschliessend können wir unsere Ergebnisse zunächst auf der Seite dort festhalten. Jeder hat dort
Bearbeitungsrechte.
Jede Rohheit hat ihren Ursprung in einer Schwäche.


r4pt0r
Beiträge: 1237
Registriert: 30.04.2007 13:32:44
Lizenz eigener Beiträge: MIT Lizenz

Re: Scripting Contest

Beitrag von r4pt0r » 08.12.2015 12:46:22

:THX:
Der Code soll direkt per Copy+Paste in eine Datei übernommen werden können und nach setzen des Ausführrechtes direkt zum Ergebnis führen.
Den Punkt würde ich etwas ändern/erweitern.
Für manche Aufgaben kann ggf ein schlanker Algorithmus mit nur wenigen Zeilen ausreichen, der "Sprachen-Overhead"/Boilerplate-code verschlingt aber je nach Sprache schnell den doppelten Platz. Gerade wenn die Lösungen im Forum gequotet werden, wird das eher Unübersichtlich. Bei einer Lösung in C scrollt man sich dann nen Wolf bis man endlich zur eigentlichen Lösung des Problems kommt.
Beispiel: meine Perl-Lösung zum binärumrechner - knapp doppelte Anzahl Zeilen für den Overhead der sowieso per script (oder von ner IDE) erstellt wird - "wichtig" sind eigentlich nur 3 Zeilen...

IMHO "schöner":
Die Komplettlösung (ggf mit makefile etc) ins repo, der für die Lösung relevante Teil des Codes wird im Thread gequotet und (kann) dort noch etwas ausführlicher erklärt werden.

Vorteile:
- Verlinkungen (auch zu github) sind irgendwann tot - wenn in 5 Jahren jemand per suche auf den Thread stößt und die Links sind tot, kann er keine Lösung mehr anschauen, so bleibt zumindest der Lösungsrelevante Teil erhalten.
- Anfänger/"nur Interessierte" können direkt im Thread die Lösungen ansehen (mit Erklärung) und ggf direkt fragen stellen und müssen sich nicht mit github, makefiles und compilern auseinandersetzen.
- Der Thread enthält den gesamten Kontext und man muss bei Erklärungen nicht zwischen Code und Thread wechseln - auch angenehm wenn man mal per Tablet oder Smartphone im Forum mitliest.

Benutzeravatar
heisenberg
Beiträge: 3555
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Scripting Contest

Beitrag von heisenberg » 08.12.2015 20:58:08

@r4pt0r:

Stimme Dir zu.

Wäre ja vielleicht hübsch das git hier auf dem DF-Server zu haben und -- träum -- jeder der einen Forenaccount hat, hat auch gleich einen zugehörigen Git-User mit synchronisiertem Passwort.

Bei github finde ich schön, dass es auch direkt eine Weboberfläche hat. Falls man kein Bock auf den Git-Kommandozeilen-Kram hat, kann man sich das per
Browser in eine Datei pasten.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

DeletedUserReAsG

Re: Scripting Contest

Beitrag von DeletedUserReAsG » 08.12.2015 21:19:02

Hier gibt es doch genug Leute mit unterbeschäftigten Servern. Könnte da nicht einer die Ressourcen zur Verfügung stellen? Ich meine: ob uptime nun ’ne Load von 0,05 0,04 0,02 oder 0,1 0,09 0,1 anzeigt […]

Mit einem zusätzlichen Account samt PW oder Schlüssel werden die Meisten auch nicht überfordert sein, denke ich.

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: Scripting Contest

Beitrag von catdog2 » 08.12.2015 21:32:34

Hier gibt es doch genug Leute mit unterbeschäftigten Servern. Könnte da nicht einer die Ressourcen zur Verfügung stellen?
Wäre natürlich kein Problem, allerdings ist eine Garantie, dass es über viele Jahre an seinem Platz bleibt bleibt auch da schwierig.
Unix is user-friendly; it's just picky about who its friends are.

DeletedUserReAsG

Re: Scripting Contest

Beitrag von DeletedUserReAsG » 08.12.2015 21:43:07

Da böte sich die Backupstrategie von Herrn Torvalds an: zusammenpacken, hochladen und jeden runterladen lassen, den’s interessiert. Mit einiger Wahrscheinlichkeit wird sich dann auch in zehn Jahren noch irgendwo ’ne Kopie auftreiben lassen – das Schwierige wird möglicherweise eher, dann einen kompatiblen Interpreter für die betreffende Sprache zusammenzubasteln …

Abgesehen davon könnte man Herrn Feltel fragen, ob das regelmäßige Sichern eines kompakten Archivs auf den Servern des Forums möglich wäre. Würde er vielleicht eher machen, als da groß git und Co. draufzubasteln.

r4pt0r
Beiträge: 1237
Registriert: 30.04.2007 13:32:44
Lizenz eigener Beiträge: MIT Lizenz

Re: Scripting Contest

Beitrag von r4pt0r » 08.12.2015 22:17:07

catdog2 hat geschrieben:
Hier gibt es doch genug Leute mit unterbeschäftigten Servern. Könnte da nicht einer die Ressourcen zur Verfügung stellen?
Wäre natürlich kein Problem, allerdings ist eine Garantie, dass es über viele Jahre an seinem Platz bleibt bleibt auch da schwierig.
Genau diese langfristige Verfügbarkeit dürfte bei privaten Servern das Problem sein. Da ist github schon die optimalere Lösung, auch wegen der sehr komfortablen weboberfläche in der sich auch nicht-git-user zurechtfinden. Ich denke die Kombination github für vollständigen Code und Forum für den essentiellen Codeteil ist ziemlich perfekt - wer nur mitliest hat alles Wichtige im Thread, wer ausprobieren will kann sich alles im repo holen inkl ggf makefile.

@Kompatibler Interpreter/Compiler:
Das Problem werden wir sicher nicht lösen können und will sicher auch keiner - wenn eine Sprache mal so weit fortgeschritten ist dass sich der Code nicht mehr ohne Verrenkungen interpretieren/compilieren lässt, ist der Code meist auch schon völlig überholt und nicht mehr empfehlenswert (siehe globale Variablen!!)... Zudem gehts hier ja eher um die grundlegenden Ideen und Gedankengänge hinter den Lösungen, nicht um in alle Ewigkeiten funktionierenden "fertig-Code zur Selbstbedienung". Daher ist es IMHO auch Sinnvoller im Thread nur essentiellen Code einzubinden


...und wenns ne Sprache in 10 Jahren nicht mehr gibt war die Lösung sowieso Falsch :mrgreen:

DeletedUserReAsG

Re: Scripting Contest

Beitrag von DeletedUserReAsG » 08.12.2015 22:43:08

Nun ja – eine Garantie, dass github in der Form in zehn Jahren noch existiert, gibt es auch nicht … Aber ist auch OT, wollt‘s nur mal angemerkt haben.

Andere Idee: da es sich beim bei einem solchen Scriptingwettbewerb ja dann doch eher nicht um riesige Projekte handelt, die ein ausgefeiltes Versionsmanagement und massenhaft Platz benötigen würden: könnte man es zumindest zum Archivieren nicht einfach im Wiki unterbringen? Pro Aufgabe eine Seite, auf der dann alle „Einsendungen“ zu finden sind? Wenn jemand ohne Versionsmanagement nicht auskommen sollte, kann er sich ja selbst drum kümmern – eingesendet wird letztlich ja doch nur eine Version.

Benutzeravatar
heisenberg
Beiträge: 3555
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Scripting Contest

Beitrag von heisenberg » 09.12.2015 08:28:25

Was das git angeht: Jeder, der will, kann ja per git clone ein Backup anfertigen. Im übrigen habe ich ein
Projekt eingerichtet. Jeder, der sich meldet, bekommt für seinen github Account dort commit-Rechte.
(Bitte schreibt mich per PN an).

https://github.com/megabert/df_script_contest/

Weiterhin schlage ich folgende Vereinbarung vor:

Sofern jemand sich am Scripting Contest beteilligt und eine Lösung postet oder verlinkt, wird diese Lösung automatisch unter GNU GPL in das Repository mitaufgenommen und steht unter GNU GPL, es sei denn...
  1. Derjenige schreibt explizit dass er das nicht möchte
  2. Derjenige schreibt am Anfang der Datei seiner Lösungsdatei(en) seine eigene gewünschte Lizenz. Dann gilt das was dort steht.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Scripting Contest

Beitrag von ThorstenS » 09.12.2015 13:23:30

Ich hab mir vor einiger Zeit einfach Gitlab Community Edition installiert.
Mit den sogenannten snippets kann man wunderbar Quellcode teilen (priv. in der Gruppe oder global) oder eben gleich ein Projekt aufmachen. MarkDown Dateien werden ebenso gerendert (inkl. Liveedit) wie bei Gitlab, das eingebaut wiki brauchts daher nicht wirklich.
Damit hab ich nun mein eigenes privates Github im Intranet. Ich find die Software _richtig_ gut.

Wollte ich nur mal angemerkt haben, falls jemand hier tatsächlich genügend Platz auf seinem dedicated über hat.

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: Scripting Contest

Beitrag von catdog2 » 09.12.2015 13:39:01

Ich hab mir vor einiger Zeit einfach Gitlab Community Edition installiert.
Ich habe gitolite und cgit als web viewer. Bei Gitlab schreckt mich diese ruby dependency hell etwas ab, aber ansonsten aber ansonsten wohl die "fancyeste" freie Lösung.
Wollte ich nur mal angemerkt haben, falls jemand hier tatsächlich genügend Platz auf seinem dedicated über hat.
Platz hätte ich schon über, wenn gewünscht. Sehe aber halt nicht was ich gegenüber den üblichen Hostern für diesen Zweck vorteilhaftes bieten könnte.
Unix is user-friendly; it's just picky about who its friends are.

Benutzeravatar
heisenberg
Beiträge: 3555
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Scripting Contest

Beitrag von heisenberg » 09.12.2015 13:46:42

Ich habe gestern gitlab community auch testweise installiert.(http://git.megabert.de, Könnt Ihr Euch gerne testweise ansehen. Ich lass es noch ein paar Tage laufen).

Bei dem Ruby-Zeugs habe ich auch gleich den Kopf geschüttelt. ca. 700 MB RAM-Verbrauch direkt nach dem starten der Dienste. Nur Java will noch mehr. Und man kann auch nicht definieren, dass alle gleich in eine Gruppe geworfen werden, die dann Commit-Rechte auf die Gruppenrepositories haben. Das muss man manuell machen.

Insofern - IMHO: Das kann github auch alles, da brauch ich keine eigene Software für.
Zuletzt geändert von heisenberg am 09.12.2015 21:41:00, insgesamt 1-mal geändert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: Scripting Contest

Beitrag von catdog2 » 09.12.2015 13:52:47

Insofern - IMHO: Das kann github auch alles, da brauch ich keine eigene Software für.
Naja selber hosten ist halt ein Wert für sich, gerade für nichtöffentliches oder wenn man sich nicht abhängig machen will.
Unix is user-friendly; it's just picky about who its friends are.

Benutzeravatar
heisenberg
Beiträge: 3555
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Scripting Contest

Beitrag von heisenberg » 09.12.2015 21:00:47

catdog2 hat geschrieben: Naja selber hosten ist halt ein Wert für sich, gerade für nichtöffentliches oder wenn man sich nicht abhängig machen will.
Ja, da gebe ich Dir Recht. Gerade bei privaten Daten ist Eigenhosting sehr sinnvoll. Ansonsten ist man damit auch flexibler, wenn man noch irgendetwas anpassen will.

Was die Anforderung hier betrifft, so sehe ich da keine sensiblen privaten Daten, die es zu schützen gilt. Meinetwegen kann da die ganze Welt Commit-Rechte haben. Was die Abhängigkeit betrifft: IMO ist ein git-Repo umzuziehen wirklich kein Hexenwerk.

Wie dem auch sei, wenn jemand ein gitlab oder etwas ähnliches irgendwo aufsetzen will, dann ist auch super.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: Scripting Contest

Beitrag von catdog2 » 09.12.2015 23:45:18

Was die Anforderung hier betrifft, so sehe ich da keine sensiblen privaten Daten, die es zu schützen gilt.
Jup sag ich ja auch. Man könnte evtl sogar zu gitlab gehen, dann hat man wenigstens einen Anbieter, der auf zum größten Teil auf freie Software setzt.,
Meinetwegen kann da die ganze Welt Commit-Rechte haben. Was die Abhängigkeit betrifft: IMO ist ein git-Repo umzuziehen wirklich kein Hexenwerk.
Kommt drauf an was man nutzt. Wenn man nur das repo hin schiebt ist das problemlos. Wenn man noch das drumherum benutzt (Issue Tracker, …) hat man wieder Vendor Lockin.
Unix is user-friendly; it's just picky about who its friends are.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Scripting Contest

Beitrag von eggy » 10.12.2015 05:47:18

Abgesehn von "die machen irgendwann auch zu", ist das Problem, dass ich bei github sehe: man darf nur einen Account haben: d.h. Deine df-de-Aktiviäten wären zu allem anderen was Du so machst gelinkt. Mag ich nicht.

Da es nur um kleine in ein paar Tagen zu schaffende Aufgaben geht, mag ich die Idee mit dem Wiki. Da gibts schließlich ja auch ne Historie. Und daher hier mein Vorschlag für den nächsten SC:

a) lese die SC-Wiki Seite aus, erstelle eine Liste aller Projekte und Autoren die auf entspechen Unterseiten liegen (alles was im Unterbereich liegt, auf der Liste_der_SC_Beiträge steht, oder mit SC_ anfängt etc - kommt drauf an wie das nachher im Wiki einsortiert ist)
b) überführe die Projekte in ein lokales Gitrepo. commitmessages sollten entsprechend gesetzt sein
b*) beachte Daten, Änderungsnotiz, Autoren, git name/mail koennte man auf account@df.de setzen etc; setze Tags auf akzeptierte Lösungen
c) sei sparsam was die Verbindungen zum Server betrifft, falls bereits ein lokales Repo da ist, zieh nur Änderungen.
d) erstelle ein tar.gz - entsprechend benannt - zb Zeitstempel des letzten Commits
e) erstelle eine Readme, sie soll Auskunft über die Projekte, die Autoren, die Akzeptiere Lösung enthalten
f*) werte die Readme aus, welcher SC war bisher am "beliebtesten" (hatte die meisten Autoren etc)

b* und f* wären Zusatzaufgaben, falls jemand Langeweile hat ;)

Schwierigkeiten:
Anfänger: a, d
Fortgeschritten: b, d, d
mehr Fortgeschritten: c

Zeitrahmen ne Woche, falls jemand sagt, dass er Spass an c hat, ihm eine Woche aber nicht reicht, einmal um eine weitere Woche verlängern?

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Scripting Contest

Beitrag von eggy » 10.12.2015 07:16:40


Benutzeravatar
heisenberg
Beiträge: 3555
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Scripting Contest

Beitrag von heisenberg » 12.12.2015 18:06:59

Ich habe die Seite mal ein kleines bisschen unter Verwendung von Mediawiki-Vorlagen verändert.

Template DebianforumBeitrag

Code: Alles auswählen

{{DebianforumBeitrag|$Beitragsnummer}}
Das erzeugt einen Link zum Forenbeitrag mit passender Beschriftung.

Beispiel

Code: Alles auswählen

{{DebianforumBeitrag|1069775}}
Ausgabe
Beitrag #1069775

Template SC_Link

Dieses Template zeigt einen Link zum erstellen einer Scripting Content Aufgabenseite an, die mit Vorlagentext gefüllt wird.

Code: Alles auswählen

{{SC_Link|Neue Überschrift}}
Beispiel

Code: Alles auswählen

{{SC_Link|Buchstaben ersetzen}}
Ausgabe

Buchstaben ersetzen anlegen

Das ganze ist nicht perfekt. Wenn die Seite dann angelegt ist, am besten dieses Template ersetzen durch einen Mediawiki-Link:

Code: Alles auswählen

[Buchstaben ersetzen]
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
heisenberg
Beiträge: 3555
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Scripting Contest

Beitrag von heisenberg » 13.12.2015 16:32:28

Ich habe mal weiter etwas am Wiki gearbeitet.

Insgesamt ist Mediawiki ok. Was blöd ist, ist die Verwendung von NoPaste(Man kann den Code nach einstellen nicht mehr verändern) oder das einstellen des Codes in Mediawiki selbst(git geht einfach viel schneller).
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
Phineas
Beiträge: 348
Registriert: 20.06.2012 20:26:19

Re: Scripting Contest

Beitrag von Phineas » 27.12.2015 10:53:55

r4pt0r hat geschrieben:Na dann würde ich fürn Anfang mal den Dezimal/Binär-Umwandler vorschlagen.
Gerade zufällig gebraucht für eine reine Bash-Umgebung (ohne bc und die üblichen Verdächtigen):

Code: Alles auswählen

d=256; b=; while ((d)); do b=$((d%2))$b; d=$((d/2)); done; echo $b

Desilluminati
Beiträge: 1
Registriert: 07.02.2016 19:23:10

Re: Scripting Contest

Beitrag von Desilluminati » 08.02.2016 15:02:44

Hallo allerseits,
Zum Thema Zeichenersetzung per bash, kann ich noch eine auf die bash optimierte (nutzt mehr von deren Extras) Version beisteuern.
Diese Version ist ca. 50-100% schneller als die bereits verbesserte Version. Kürzer ist sie auch, leicher verständlich wahrscheinlich nicht.)

Code: Alles auswählen

#!/bin/bash

function storys {
   local -A map=(
      [A]=4 [a]=4
      [B]=8 [b]=8
      [E]=3 [e]=3
      [G]=6 [g]=6
   )
   local -i i n q=0
   local line c s
   while read line; do
      s=''
      n=${#line}
      for ((i=0; i < n; ++i)); do
         c=${line:i:1}
         [[ $c = '"' ]] && ((q^=1))
         ((q)) && s+=$c || s+=${map[$c]:-$c}
      done
      echo -E "$s"
   done
}

Benutzeravatar
ohnex
Beiträge: 392
Registriert: 31.01.2010 22:35:36

Re: Scripting Contest

Beitrag von ohnex » 05.05.2016 13:24:32

hi


leider ist es hier still geworden, schade.

@heisenberg der Link ist tot
heisenberg hat geschrieben:Ich habe mal einen Entwurf zum Thema:

Entwurf: Scripting Contest HOWTO

Lasst uns das hier ausdiskutieren und anschliessend können wir unsere Ergebnisse zunächst auf der Seite dort festhalten. Jeder hat dort
Bearbeitungsrechte.

ciao

Antworten