Schon klar wie das zu machen ist. Trotzdem danke^^ ich brauch's im Grunde garnicht though
Der Code-Schnippsel-Thread
-
-
#!/bin/bash
ffmpeg -i "${1}" -vcodec mpeg2video -r 25 -s 544x480 -aspect 4:3 -b 4000000 -maxrate 4500000 -bufsize 1500000 -acodec mp2 -ab 192000 -ar 48000 "${1}.ts"Video in .ts-Format für die DBOX2 umwandeln.
-
Code
Alles anzeigenint ledPin = 13; // Onboard LED ist an PIN 13 angeschlossen void setup() { // Der Port wird als Ausgang konfiguriert pinMode(ledPin, OUTPUT); } // Und nun das Hauptprogramm, eine Endlosschleife void loop() { digitalWrite(ledPin, HIGH); // LED einschalten delay(250); // Eine 250 Millisekunden warten digitalWrite(ledPin, LOW); // LED ausschalten delay(500); // Eine halbe Sekunde warten digitalWrite(ledPin, HIGH); // LED einschalten delay(250); // Eine 250 Millisekunden warten digitalWrite(ledPin, LOW); // LED ausschalten delay(500); // Eine halbe Sekunde warten digitalWrite(ledPin, HIGH); // LED einschalten delay(250); // Eine 250 Millisekunden warten digitalWrite(ledPin, LOW); // LED ausschalten delay(500); // Eine halbe Sekunde warten digitalWrite(ledPin, HIGH); // LED einschalten delay(500); // Eine halbe Sekunde warten digitalWrite(ledPin, LOW); // LED ausschalten delay(500); // Eine halbe Sekunde warten digitalWrite(ledPin, HIGH); // LED einschalten delay(500); // Eine halbe Sekunde warten digitalWrite(ledPin, LOW); // LED ausschalten delay(500); // Eine halbe Sekunde warten digitalWrite(ledPin, HIGH); // LED einschalten delay(500); // Eine halbe Sekunde warten digitalWrite(ledPin, LOW); // LED ausschalten delay(500); // Eine halbe Sekunde warten digitalWrite(ledPin, HIGH); // LED einschalten delay(250); // Eine 250 Millisekunden warten digitalWrite(ledPin, LOW); // LED ausschalten delay(500); // Eine halbe Sekunde warten digitalWrite(ledPin, HIGH); // LED einschalten delay(250); // Eine 250 Millisekunden warten digitalWrite(ledPin, LOW); // LED ausschalten delay(500); // Eine halbe Sekunde warten digitalWrite(ledPin, HIGH); // LED einschalten delay(250); // Eine 250 Millisekunden warten digitalWrite(ledPin, LOW); // LED ausschalten delay(1000); // Eine Sekunde warten }
Hier mal was fürs Arduino Board ... es lässt die Onboard LED SOS blinken
-
Schön simples C
-
Grässlich redundanter Code^^
Am schönsten wär's sowas in ein eigenes Dateiformat zu packen
-
So fürs Arduino hab ich gerade bissel gebastelt...
Man nehme ... ne alte GPS Maus, in meinem Fall die RGM-2000, die TTL kommuniziert ... bissel schaltdraht und ein wenig CodeZur verdrahtung ...
Pin 2 RX von GPS Maus
Pin 3 TX zur GPS Maus
5 V zur GPS Maus
GND zur GPS Mausund nun der Code
Code
Alles anzeigen#include <SoftwareSerial.h> SoftwareSerial GPS = SoftwareSerial (2,3); // PIN 2 RX, PIN 3 TX void setup() { GPS.begin(4800); // Mit 4800 Baud kommt es von der GPS Maus Serial.begin(9600); // Zum PC geht es mit 9600 Baud } void loop() { if (GPS.available() > 0) {Serial.write(GPS.read());} // Egal was kommt bringe es auf die Serial Konsole }
-
Hatte ich vor der letzten Bücherverbrennung im WHF zu einem Coding-Wettbewerb schon mal in Python geschrieben: Zu einem Array eine bestimmte Permutation aus der nach Indizes sortierten Reihenfolge der Permutationen (für [a,s,d,f] wäre das z. B. 0 => [a,s,d,f], 1 => [a,s,f,d], 2 => [a,d,s,f], …, 23 => [f,d,s,a]) zurückgeben.
Java
Alles anzeigenimport java.util.ArrayList; import java.util.Arrays; … public static <T> T[] permute(T[] arr, long permutation) { if (arr == null) { return null; } else if (permutation < 0L || permutation >= factorial(arr.length)) { throw new IllegalArgumentException(); } else { // in der Größe unverändliche List-View auf das Array in eine Collection kopieren ArrayList<T> pickList = new ArrayList<T>(Arrays.asList(arr)); // mit Java 7 wäre das nicht passiert @SuppressWarnings("unchecked") T[] resultArray = (T[]) new Object[arr.length]; int i = 0; while (pickList.size() > 0) { long quotient = permutation / factorial(pickList.size() - 1); resultArray[i++] = pickList.remove((int) quotient); permutation = permutation % factorial(pickList.size()); } return resultArray; } } public static long factorial(int n) { // in einen vorzeichenbehafteten 64-Bit-Integer passen alle Fakultäten // bis 20! hinein if (n < 0 || n > 20) { throw new IllegalArgumentException(); } else if (n < 2) { return 1L; } else { // 2 <= n <= 20 long f = 1L; for (int i = 2; i <= n; ++i) { f *= i; } return f; } }
-
Wo ich da grad den ArrayList-Import sehe: Eine Hüllklasse für ArrayList, die selbige um das Observer-Pattern erweitert. An Methoden ist nur das vorhanden was ich gebraucht habe, lässt sich aber leicht erweitern.
Java
Alles anzeigenimport java.util.ArrayList; import java.util.Iterator; import java.util.Observable; public class ObservableArrayList<t> extends Observable { ArrayList<t> theList = new ArrayList<t>(); public int size() { return theList.size(); } public Iterator<t> iterator() { return theList.iterator(); } public void add(t anElement) { theList.add(anElement); setChanged(); notifyObservers(); } public t get(int i) { return theList.get(i); } public boolean remove(t anElement) { if(theList.remove(anElement)) { setChanged(); notifyObservers(); return true; } else { return false; } } }
-
Wie schön das .NET eine BindingList vorimplementiert.
-
Keine Ahnung, ob ichs schonmal gepostet habe. Nachgucken, wer alles per SCP/SSHFS Dateien mit dem Server tauscht (ja ich weiß, das is teine sehr dreckige Lösung, aber sie funktioniert):
-
C: Da errno.h angepasste Fehlermeldungen nur sehr stiefmütterlich behandelt (geht das überhaupt?)
Aufgerufene Methoden erzeugen mit void newError(char*); einen neuen Fehler (dies setzt ein Fehler flag) und fügen bei bedarf mit void appendError(char*); weitere Strings an.
Aufrufende Methoden prüfen mit bool checkError(void); das Fehler flag (es wird dann zurück gesetzt) und holen sich ggf. mit char *getError(void); den neuen Fehlerstring (dies können sie beliebig oft tun).errorReporting.h
Spoiler anzeigen
#ifndef ERRORREPORTING_H_INCLUDED
#define ERRORREPORTING_H_INCLUDED#include <stdbool.h>
extern bool checkError(void);
extern char *getError(void);
extern void newError(char*);
extern void appendError(char*);#endif // ERRORREPORTING_H_INCLUDED
errorReporting.c
Spoiler anzeigen
#include <stdlib.h>
#include "string.h"
#include "errorReporting.h"bool errorOccurred = false;
char *errorString = NULL;bool checkError(void)
{
bool returnValue = errorOccurred;if(errorOccurred)
{
errorOccurred = false;
}return returnValue;
}char *getError(void)
{
return errorString;
}void newError(char *error)
{
if(errorOccurred)
{
free(errorString);
}errorString = (char*) calloc( strlen(error) + 1, sizeof(char) );
strcpy(errorString, error);
errorOccurred = true;
}void appendError(char *error)
{
if( !errorOccurred)
//This function should not be called unless newError() was called, but oh well...
{
newError(error);
}
else
{
errorString = (char*) realloc( errorString, (strlen(errorString) + strlen(error) + 1) * sizeof(char) );
strcat(errorString, error);
}
} -
̔
Bash
Alles anzeigen#!/bin/sh DATE=`date +"%m-%Y"` NAME="Backup" LOG=/home/tobias/Backup.log LOGDATE=`date +"%d-%m-%Y"` FULLNAME="$NAME-$DATE" EXIT=$? if [ -e /home/tobias/$FULLNAME ]; then cp -ruv /home/tobias/Dokumente* /home/tobias/$FULLNAME |tee >>$LOG echo Backup vom $LOGDATE >>$LOG echo ------------------------------------------------------------------------ >>$LOG else echo Backup vom $LOGDATE >>$LOG mkdir /home/tobias/$FULLNAME cp -ruv /home/tobias/Dokumente* /home/tobias/$FULLNAME |tee >>$LOG echo ------------------------------------------------------------------------ >>$LOG fi if [ $EXIT -eq "0" ]; then mailx -s "Backup erfolgreich" tobias@localhost </home/tobias/Backup.log else mailx -s "Backup fehlgeschlagen" tobias@localhost </home/tobias/Backup.log fi
Mal auf die Schnelle zusammen gebastelt.
-
Schönes Script
Als Bonus könntest du noch ${HOME} statt /home/tobias nehmen und die Mail dann an $(whoami)@$(hostname) versenden. Dann könnte man es noch als Cronjob unter den Rechten der jeweiligen Benutzer laufen lassen, für die regelmäßig gebackupped werden soll und schon hat man vollautomatisches Backup.
-
Schönes ScriptAls Bonus könntest du noch ${HOME} statt /home/tobias nehmen und die Mail dann an $(whoami)@$(hostname) versenden. Dann könnte man es noch als Cronjob unter den Rechten der jeweiligen Benutzer laufen lassen, für die regelmäßig gebackupped werden soll und schon hat man vollautomatisches Backup.
Gute Idee. Danke
Bin aber am überlegen, ob ich das cp net auf n rsync ändere.
-
Bin aber am überlegen, ob ich das cp net auf n rsync ändere.
Joa, rsync wäre gerade bei großen Datenmengen sinnvoll. Dann könnte er auch vorher gucken, ob sich die jeweilige Datei seit dem letzten Backup geändert hat.
-
Bash
Alles anzeigen#!/bin/sh DATE=`date +"%m-%Y"` NAME="Backup" LOG=/home/tobias/Backup.log LOGDATE=`date +"%d-%m-%Y"` FULLNAME="$NAME-$DATE" EXIT=$! if [ -e ${HOME}/$FULLNAME ]; then cp -ruv ${HOME}/Dokumente* ${HOME}/$FULLNAME |tee >>$LOG echo Backup vom $LOGDATE >>$LOG echo ------------------------------------------------------------------------ >>$LOG else echo Backup vom $LOGDATE >>$LOG mkdir ${HOME}/$FULLNAME cp -ruv /home/tobias/Dokumente* /home/tobias/$FULLNAME |tee >>$LOG echo ------------------------------------------------------------------------ >>$LOG fi if [ $EXIT -z ]; then mailx -s "Backup erfolgreich" $(whoami)@$(hostname) <${HOME}/Backup.log else mailx -s "Backup fehlgeschlagen" $(whoami)@$(hostname) <${HOME}/Backup.log fi
tobias@voyager:~$ /home/tobias/Test.sh
[: 23: -eq: unexpected operator
tobias@voyager:~$Was mache ich falsch?
EDIT: if [ $EXIT -eq "0" ]; then stimmt nicht.
So muss es sein: if [ $EXIT -z ]; then -
Wenn du Rsync benutzt kannst du mit '--link-dest' auch recht einfach platzsparende inkrementelle Backups durch Hardlinks machen. Wobei dann kannst auch eigtl gleich dirvish oder so benutzen
-
Code
@echo off net use q: \\ZEUS\tausch\EDVTmp if q:\psinfo\PsInfo.exe -s >>C:\%computername%.txt move c:\%computername%.txt q:\Ergebnisse\%computername%.txt del C:\PsInfo.exe net use q: /delete pause
Kann ich Windows irgendwie verklickern, dass ich gerne ein Netzwerkshare über 2 Laufwerksbuchstaben verbinden kann?
-
Ich würde einfach zwei mal net use für das selbe Share machen, jeweils mit anderm Laufwerksbuchstaben.
-
Ich würde einfach zwei mal net use für das selbe Share machen, jeweils mit anderm Laufwerksbuchstaben.Das lässt Windows leider net zu. Habe ich schon versucht.
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!