MS Excel Problem?

Ich soll in der Arbeit eine Datenanalyse mit MS Excel durchführen. Ei dafür notwendiger Zwischenschritt ist es, die "Ist-Ankunftszeit" von Bussen von der "Soll-Ankunftszeit" eben dieser Züge zu subtrahieren (um die Verspätungen auszuwerten). Die Zellen, in denen diese Daten stehen, sind als "Standard" formatiert und sehen so aus:

2024-02-09T13:34

Teils steht auch noch die Sekundenzahl bei der Uhrzeit dabei, aber auch nicht immer (teils steht sie sogar bei der Sollzeit dabei und bei der Istzeit nicht, was auch noch so ein Aspekt ist). Ich will eben die Differenz von zwei solchen (oben in schwarz dargestellten) Daten bilden, um die Verspätung zu erhalten. Natürlich klappt das so erstmal nicht, es kommt die Fehlermeldung "Wert". Ich hab dann versucht, die entsprechenden Zellen als Zahl, Datum oder auch benutzerdefiniert zu formatieren, dennoch erhalte ich bei der Subtraktion immer den obigen Fehler. Excel erkennt halt nicht, was es tun soll. Auch die Funktion Datevalue hat mir nicht geholfen. Meines Erachtens sind die Daten bei uns da einfach schlecht aufbereitet^^

Hat jemand eine schlaue Idee, wie ich das Problem lösen kann?

Händisch einzeln ändern geht übrigens nicht, meine Exceltabelle hat 200.000 Zeilen, es geht hier um große Datenmengen.

Schönes Wochenende euch :)

PC, Computer, Arbeit, Microsoft Word, Software, Microsoft, Microsoft Excel, Mathematik, IT, Microsoft Office, programmieren, VBA, Datenanalyse, Formel, Medien, Programmiersprache, Tabellenkalkulation, Excel-Formel, Office 365
Warum nutzen wir alle nicht wieder alte Software?

Jetzt mal Hand aufs Herz. Wir wollen doch alle Geschwindigkeit oder nicht. Warum das also wegwerfen? Man könnte ja zumindest nutzen was schon erreicht wurde.

Ich weiß gleich kommen die folgenden Argumente:

- Es lohne sich nicht, da Hardware günstiger sei:

-> Das stimmt nicht. Milliarden Nutzer * 1500€ sind mehr als die Entwicklungskosten einee optimierung. Außerdem wäre das Wirtschaft und es heißt ja ComputerSCIENCE

- Es sei nicht nötig sich die Mühe zu machen da Computer das heute alles packen:

-> Das sah bei GTA6 jetzt nicht so aus! Und was ist mif skalierungsmöglichkeiten, Multitasking und Massendatenverarbeiting, Ernergiekosten, Überlastungen von Rechensystemen... Umweltschutz und Die Herstellung neuer Computerbauteile?

- Es liegt alles an OOP und Web:

-> Das gibts es schon ewig. Es erklärt nicht so wirklich viel davon.

- Geplante Alterung sei Notwendig da die Firmen sonst Pleite gehen:

-> Den Firmen die das tun platzt das Geld aus den Hosentaschen. Und außerdem geht das auch anders. Man kann auch alle paar Jahre eine Lizens erneuern oder es teuerer machen, aber ich denke nicht das Geld das Problem ist? Selbst wenn - Es wird immer zwischen den Themen herumgeschaukelt. Ich sehe das schon, Ich bin nicht auf den Kopf gefallen.

- Zeit zur Veröffentlichung und Marketing sei wichtiger:

-> Ich sprach nicht von dem Azubi nem Becker seine Webseite erstellt.

- Es war früher nicht schneller:

-> Doch war es erinnere dich bitte

- Die Hardware kann nicht mehr:

-> Doch kann Sie, alte Software beweißt es.

- Linux sei die Lösung

-> Schön wärs. Leider nur leichter aber nicht schneller.

- Treiber kann man nicht schreiben:

-> Wenn man sich nicht drüber unrerhällt kann man auch nichts gewinnen. Nicht versucht ist schon verloren.

Ds wird immer ständig zwischen diesen Punkten herumgereicht.

Hab ich was vergessen? Nun Realtalk mal bitte, es muss sich doch was ändern! Ihr könnt mir nicht erzählen das ihr das so wollt...

Computer, Computerspiele, Software, Windows, Microsoft, Studium, Technik, Linux, CPU, Grafikkarte, Hardware, Elektronik, HTML, programmieren, Business, RAM, Wissenschaft, Gaming, Anwendungsentwicklung, Assembler, developer, Industrie, Informatik, Python, Softwareentwicklung, Treiber, Software Update, Technologie und Wirtschaft
Wie kriege ich mit ROP einen "/bin/sh" Pointer in rdi?

Ich versuche, rücksprungorientierte Programmierung (ROP) zu lernen.

Und zwar habe ich ein Programm mit einem Pufferüberlauf auf dem Stack, und ich möchte das Programm dazu bringen, /bin/sh zu öffnen.

Das geht mit dem execve Syscall, wenn ich die richtigen Instruktionen finden kann, um die Funktionsparameter vorzubereiten. Das ist die Signatur von execve:

int execve(const char *pathname, char *const _Nullable argv[], char *const _Nullable envp[]);

Also muss ich die folgenden Register setzen:

  • rax = 0x3b (Syscallnummer von execve)
  • rdi = "/bin/sh" Pointer
  • rsi = NULL
  • rdx = NULL

Die folgenden Instruktionen habe ich bereits gefunden:

pop rax ; ret
pop rdi ; ret
pop rsi ; ret
pop rdx ; ret
syscall

Ich kann also die Instruktionen und Registerwerte mit dem Pufferüberlauf auf den Stack schreiben und so meine Register füllen. Das Problem ist aber, dass ich einen "/bin/sh" Pointer in rdi brauche (also nicht "/bin/sh" im Register, sondern eine Speicheradresse, an der "/bin/sh" steht).

Ich kann natürlich "/bin/sh" in den Puffer auf dem Stack schreiben, aber leider ist die Speicheradresse jedes Mal anders und ich kenne sie vorher nicht.

Ich weiß, dass "/bin/sh" in libc vorkommt, aber auch dort ist die Speicheradresse jedes Mal anders und ich kenne sie vorher nicht.

Wie komme ich also an einen "/bin/sh" Pointer? Gibt es Tricks oder bestimmte Instruktionen, nach denen ich mich umsehen sollte?

hacken, Hack, Programm, programmieren, pointer, Assembler, Hacker, Hacking, Informatik, IT-Sicherheit, Shell, stack, x64, assemblersprache, Assembly, Exploit, hacken lernen, IT-Sicherheitsexperte, Register, Capture The Flag
Clean Code und (vs?) Strukturierte Programmierung?

Als Anwendungsentwickler kenne ich natürlich beide Begrifflichkeiten. Mir ist allerdings aufgefallen, besonders auch in Bezug eines Clean-Code-Seminars, dass anscheinend innerhalb von Clean-Code das Thema strukturierte Programmierung keine Erwähnung zu finden scheint. Noch schlimmer sogar, der Dozent zeigte ein Beispiel einer Swtich-Anweisung, bei der jede Fallunterscheidung in ein return (also fluchtartiges Verlassen der Routine) mit irgendeinem Wert mündete und meinte, das sei Clean-Code :-D.

Bei früheren Arbeitgebern in den letzten 10 Jahren habe ich u.a. fluchtartiges Verlassen von Schleifen (break), Rücksprünge zum Anfang der Schleifen (continue) und nicht zuletzt auch frühzeitiges Verlassen von Routinen (return) gesehen(, erlebt und dabei den Kopf geschüttelt)! Eine externe Fachkraft adelte die letzte Stilform mit "early Return" und hielt das für besonders pfiffig.

Bei meinem letzten Arbeitgeber waren die Kollegen sehr an Clean-Code interessiert und lernten das fleißig auf einschlägigen Seiten. Aber auch sie bevorzugten gerne, so wie ich es nenne "Mittendrin-Returns". Das ging sogar so weit, dass innerhalb von Catch-Blöcken gerne mal Returns formuliert wurden, was den eigentlichen Sinn und Zweck vom Exception-Handling in der Sprache Java ad absurdum führt.

Ist in den Bildungsstätten die Strukturierte Programmierung völlig abhanden gekommen, oder gilt diese mittlerweile als überholt? Habe ich die Stelle wo in den Clean-Code-Regeln, in der auf strukturierte Programmierung eingegangen wird nur übersehen, oder hat man das Thema da, aus meiner Sicht bedauerlicherweise, ausgespart oder gar ignoriert?

Software, programmieren, Softwareentwickler, Softwareentwicklung, Programmcode
Wie lässt sich auf einem Apache Server ein Port aktivieren ohne, dass dieser anschließend für eine andere Anwendung blockiert ist?

Hab hier einen angemieteten Server wo ich grade versuche ein Datenbanksystem (mongo db + mongo-db express) zum Laufen zu kriegen. Der Server läuft bei einem Hostingdienst auf dem Apache2 schon vorinstalliert ist. Nun zum Problem: Ich muss um das Ganze zum Laufen zu kriegen anscheinend einen bestimmten Port (27017 oder 8081) freigeben. Durch die Vorkonfiguration ist/war außerdem der Browsing Zugriff auf ein bestimmtes Verzeichnis beschränkt. Dieses Problem konnte ich durch Anpassen der Konfigurationsdateien (Pfaderweiterungen + Hinzufügen des entsprechenden Porteintrages) lösen. Leider klemmt nun das Ganze woanders: Es gibt beim Zugriff egal ob via Browser oder lokal einen 403 "forbidden" Fehler und MongoDB Express lässt sich über die Konsole nicht neu starten weil anscheinend der Port durch mehrere Prozesse (Zahl variiert) belegt ist. Ich hab das Ganze auch bereits ohne Apache Konfiguration probiert und nur mit einem Eintrag in der rules.v4 von IP-Tables (die nicht vorinstalliert war), allerdings bekomm ich damit sowohl mit, als auch ohne den Eintrag lediglich einen Network Error und kann überhaupt nicht auf das Verzeichnis zugreifen. Es geht weder mit noch ohne Netzwerkregel und ohne die Pfadwhitelist von Apache komm ich nirgends rein. Hat irgendeiner, der sich mit der Thematik auskennt evtl. eine Ahnung wie sich dieses Problem beheben lässt? Irgend ein zusätzliches Script, Bridge oder Ähnliches installieren? Apache2 evtl. komplett deinstallieren? (Sorry für die Fragen, aber bin kein Profi und mache das mehr oder weniger zum ersten mal)

PC, Server, Internet, Linux, Webseite, programmieren, Apache, Firewall, Port, Webserver, Netzwerkfehler, Datenbanksystem, MongoDB, Debian 10
Mongo DB Express auf Port :8081 zum Laufen kriegen. Was mach ich falsch?

Hab mal eine Frage zum Thema IT & Server & Ports und würde mich freuen wenn mir einer mit Fachkenntnissen weiterhelfen kann:

Also ich versuche hier seit Tagen eine kleine Webseite auf einem angemieteten Server (Debian 10) zum Laufen zu kriegen und möchte dabei das Datenbanksystem Mongo DB (+ das Webinterface mongo-express) verwenden. Die wichtigsten Grundabhängigkeiten wie Mongo DB, PHP, Java, node.js, npm etc. konnte ich bereits alle installieren und hab es nach sehr langem Herumprobieren sogar geschafft mit einem kleinen .sh Script den Port :8081 zu öffnen, sodass dieser zumindest in den IP-Tables angezeigt wird. Auch konnte ich (Mithilfe verschiedener Anleitungen) alle Anwendungen erfolgreich starten, teils erst nach dem Setzen einiger Umgebungsvariablen setzen und bekomme nun die Meldung, dass der DB-Express Server auf dem richtigen Port lauscht. Dennoch komm ich nun seit gestern nicht weiter bzw. mein Browser kann sich mit dem Port :8081 des Servers einfach nicht verbinden > "Netzwerkfehler", wobei die Ursache alles und nichts sein kann! Hab auch schon mit anderen Ports probiert mit ähnlichem Resultat. Meine Frage wäre jetzt ob irgendeiner diese Anwendung hier (dieses Problem) zufällig kennt oder weiß was hier zutun ist oder was ein mögliches Problem sein kann?   Ich hab da zwar eine wage Vermutung aber da ich das alles komplett blind und zum ersten mal mache und derzeit keinen *richtigen* IT-Experten habe wären ein paar Ratschläge, die jetzt nicht unbedingt in den Anleitungen stehen nicht schlecht?

Server, Linux, Netzwerk, Webseite, programmieren, Java, Apache, Firewall, Netzwerkverbindung, PHP, Port, Kommandozeile, MongoDB, Debian 10
Computer mit Software statt mit Hardware schneller machen?

Also meine Idee wäre das man z.B. die Bildausgabe von Spielen und auch von alltäglichen Dingen über Software beschleunigt, und sagen wir mal das man aus 10fps -> 100 fps machen kann. Das wäre auch recht ökologisch da der Energiebedarf nicht steigen würde da der Computer diengleichen Watt verbraucht und nicht höher takten muss. Außerdem kann man sich so die Herstellung von neuen Teilen ersparen, welche gerade bei Aluminium extrem viel Energie verbraucht.

Neuere Computer könnten ebenfalls profitieren und mit eben noch weniger Taktrate das gleiche erreichen. Weniger Auslastung würde auch die Kühlung begünstigen und wieder Energie sparen. Auch die Reduzierung von übertragenen Daten im Netzwerk kann hilfreich sein und so die Latenz verbessern und dazz verhindern das Internetknoten überlastet werden.

Selbstverständlich ist desto weniger Ram auch besser da so mehr Ram für andere Arbeiten frei bleibt um idealfall nichts auf das Speichermedium geschrieben/gelesen werden muss.

Was haltet ihr davon? Habt ihr Umsetzungsideen? Oder vielleicht sogar konkrete Software?

Finde ich nicht so gut 77%
Finde ich von Vorteil 23%
PC, Computer, Computerspiele, Handy, Betriebssystem, Mathematik, Linux, CPU, Grafikkarte, Hardware, Elektronik, programmieren, RAM, Gaming, Update, AMD, Intel, Nvidia, OpenGL, Softwareentwicklung, Treiber, DirectX, x86, Laptop

Meistgelesene Fragen zum Thema Programmieren