Dies ist eine Geschichte über einen kundenresidenten SES-Onkel, von dem oft gesagt wird, dass er Wakusaku ähnlich ist, der eine alte ACCESS VBA-Anwendung auf Python portiert hat.
Ein Ingenieur im Finanzbereich. Ich habe alles getan, von kleinen EUCs bis hin zu Backbones und Paketen, aber vielleicht habe ich EUCs am längsten in der Nähe von Benutzern gemacht. Alter, das mir Sorgen um alte Augen macht.
Es gab zwei Gründe, warum ich angefangen habe, an Python zu arbeiten: Erstens hat der Kundenmitarbeiter, der neben der Site saß, Python normal ausgeführt. Diese Person scheint an einer ausländischen Universität Informatik studiert zu haben, und ich betrachtete es von der Seite mit einem Gefühl von "erstaunlich". Darüber hinaus lernen andere Mitarbeiter, die keine Ingenieure sind, im Rahmen ihrer Schulung Python, und diese Personen stellen Fragen. Also konnte ich natürlich nicht antworten. Es ist so, als würde man den Wassergraben um sich herum füllen, oder man spürt den Fluss der Zeit. Gehen Sie danach zu PyCon und hören Sie sich Geschichten wie Python-Verwendungsbeispiel an. tat.
Dann möchte ich es bei der Arbeit verwenden.
Die Entwicklung und der Administrator einer bestimmten Anwendung beim Kunden werden Jobs geändert. Also wollte ich das von Grund auf neu erstellen und fragte, ob ich es vorschlagen könnte.
Die Anwendung ist eine ACCESS / VBA-Anwendung, die verschiedene Berichte ausgibt (Format ist Excel / CSV) und diese per E-Mail an verschiedene Orte sendet. Sie wird seit mehr als 10 Jahren ausgeführt. VBA verfügt über einen integrierten Mechanismus wie ein Job Scheduler und wird automatisch betrieben. Ich habe übrigens auch beim Betrieb der Anwendung geholfen.
Zuerst dachte ich über einige plattformähnliche Alternativen zu ACCESS nach, aber keine davon schien schwer und lang zu passen. Wie ich bereits erwähnte, hatte das Unternehmen, in dem ich lebte, nicht-technische Mitarbeiter dazu ermutigt, Python zu verwenden. Als ich vorschlug, Python zu verwenden, wurde ich leicht akzeptiert. Die Person, die die Site organisiert, wies auf die Besorgnis hin, dass ".NET die Hauptsache hier ist, aber ich bin ein wenig besorgt, wenn andere Leute es pflegen", aber "Wenn Python verwendet werden kann, kann das Spektrum der Technologie erweitert werden. Ist es nicht? " Es war auch das Ziel, nicht-technischen Leuten zu ermöglichen, es in Zukunft zu warten.
Zunächst versammelten sich die betroffenen Parteien, um eine Bestandsaufnahme der Funktionen vorzunehmen, und schafften dann einige der Funktionen ab oder übertrugen sie. Für andere wesentliche Funktionen haben wir beschlossen, jedes Element (Datenbank / Formulare / VBA) der aktuellen Versionsplattform ACCESS zu modernisieren.
Python 3.7
Die neueste Version zu Beginn der Entwicklung.
Die Hauptbibliotheken sind wie folgt. --OpenPyXl: Wird für die Ausgabeverarbeitung von Artefakten verwendet. --pandas: Wird für die Aggregationsverarbeitung verwendet. Dies ist möglicherweise bequemer als das Aggregieren mit SQL.
Der Editor ist VS Code. Ich fand das besser als das ursprüngliche Visual Studio.
** Ein kleines Problem mit Excel **
Sie können beim Speichern einer Excel-Datei aus Python kein Kennwort festlegen. Natürlich hat Microsoft die Spezifikationen für den Sicherheitsteil nicht veröffentlicht, sodass Sie einer Excel-Datei nur aus einer Originalanwendung ein Kennwort zuweisen können. Da hierfür keine Hilfe verfügbar ist, habe ich eine Excel-Instanz von PowerShell aufgerufen, ein Kennwort auf die Excel-Zieldatei angewendet und es durch Überschreiben gespeichert. Übrigens muss jede Instanz (Sheet, Workbook, Applicaton) explizit freigegeben werden, wenn die Excel-Instanz beendet wird. Warum?
$sheet, $wb, $excel | ForEach-Object {
if ($_ -ne $null) {
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($_)
}
}
Obwohl Oracle als Kerndatenbank in diesem Bereich verwendet wurde, wird die zu migrierende Anwendung (Datenbank) nicht von anderen referenziert oder aktualisiert, und es besteht kein Grund zur Sorge um die Skalierung. Daher habe ich mich für diese entschieden. Die Bibliothek ist standardmäßig in Python enthalten. Notwendig und ausreichend als Alternative zur ACCESS-Datenbank (Jet DB).
PyQt ist schwer, deshalb habe ich mich für das Web entschieden. Daher habe ich mich für eine JavaScript-Bibliothek namens DataTables entschieden, weil ich dachte, es wäre schön, eine tabellenähnliche Benutzeroberfläche als Datenreferenz zu haben. Viel einfacher zu bedienen und anzuzeigen als der ACCESS-Tabellenbildschirm. Es scheint eine Update-Funktion zu geben, die ich diesmal jedoch nicht verwendet habe.
Ich hatte jedoch ein kleines Problem mit JavaScript. Ich dachte, es wäre für den Front-End-Ingenieur schwierig, beim Entwerfen mit JavaScript zu kämpfen.
** Webserver **
Da es keinen Entwicklungsserver gibt, leiht der Webserver IIS aus, der sich in der Abteilung befand.
Die Brücke zwischen SQLite und dem Web (DataTables) ist eine REST-API! Ich war begeistert, aber anscheinend kann ich ASP überhaupt nicht verwenden. Die Daten in SQLite werden in regelmäßigen Abständen in eine JSON-Datei ausgegeben und von IIS an den Browser zurückgegeben. Hier ist es etwas rau, aber es gibt kein Problem in Bezug auf die Benutzerfreundlichkeit. Ich möchte mich hier verbessern, wenn ich noch Zeit habe (derjenige, der es nie tut).
Python macht Spaß.
Sie können einfach schreiben, was Sie tun möchten. Ich denke fast nie, dass es ein Ärger ist. Die meiste Zeit wünschte ich mir, ich hätte eine solche Bibliothek.
Die Produktivität ist also gut.
Dieses Mal, zu Beginn der Entwicklung, hatte ich die Geschäfts- und Funktionsspezifikationen fast verstanden, und es gab fast keinen Entwurfsprozess, also fühle ich mich so.
Daher kann der Ausdruck "stört nicht" statt "gute Produktivität" dem tatsächlichen Gefühl näher kommen.
Ich möchte Python weiterhin verwenden, wenn ich eine Chance habe!
In diesem Requests-HTML-Blogbeitrag heißt es: "Die Bibliothek selbst leistet nicht viel Arbeit, sondern konzentriert sich auf das Kombinieren vorhandener Bibliotheken." Nachdem ich einen Satz gelesen hatte, versuchte ich, die vorhandene Bibliothek so gut wie möglich zu nutzen. Je weniger Sie schreiben, desto kürzer ist der Test. Dies ist möglicherweise nicht auf Python beschränkt.
Im Vergleich zu anderen Sprachen verfügt Python über zu viele Bibliotheken und es ist schwierig, selbst die wichtigsten zu erfassen. Ich denke, es gibt einige Stellen, an denen ich den Teil nicht verwenden konnte, z. B. "Ich wünschte, ich könnte diese Bibliothek hier verwenden" oder die Bibliothek selbst. Insbesondere bei Datenklassen können Sie diese möglicherweise nicht gut verwenden.
Immerhin der Ort, an dem der Typ der Variablen nicht explizit deklariert werden kann. Ich habe Typanmerkungen verwendet, um mit mypy zu prüfen, aber ich habe immer noch typbezogene Ausnahmen. Ich gehe davon aus, dass sich die Genauigkeit von mypy in Zukunft weiter verbessern wird. Schreiben Sie bis dahin einen Komponententest. Ich hoffe, dass es eines Tages so etwas wie TypePython wie TypeScript geben wird.
Ich habe auch SQLite RUNDEN von Zahlen, um Fehler zu erhalten verwendet, aber ich habe versucht, numerische Berechnungen und Aggregationen zu vermeiden, indem ich Pandas so weit wie möglich verwendet habe.
Und Warum ist Python so langsam? Ich war ein wenig besorgt über die Leistung, aber es ist selten ein Problem im EUC-Bereich. Ich denke, ich werde es tun, und tatsächlich war es diesmal nicht wirklich wichtig (vielmehr hatte mein Schreibstil einen großen Einfluss auf die Verarbeitungsleistung).
Die Implementierungsphase ist vorbei, und zu diesem Zeitpunkt sollte es parallel zur ACCESS-Version laufen und in die Überprüfungsphase eintreten, aber es steckt aufgrund dieser Korona-Katastrophe fest ... (Also schreibe ich diesen Artikel)
Es wird oft gesagt, dass es tödliche Routineaufgaben auf der Welt gibt, die Sie automatisieren möchten, und EUC-Anwendungen, die niemand warten muss.
Es gibt einige Leute und Nicht-Ingenieure, die sich für Python interessieren, und ich gehe davon aus, dass Nicht-Ingenieure ihre Verwendung von Python in Zukunft schrittweise verstärken werden.
Durch diese Kombination wird die Anzahl solcher Arbeitsplätze wie Bestandsaufnahme bestehender EUCs, Arbeitsersparnis und Modernisierung weiter zunehmen, wenn auch in geringem Umfang, und es wird kein Unternehmen geben, in dem Ingenieure solche Arbeitsplätze unterstützen. Ich frage mich, ob.
Recommended Posts