Eine Geschichte über die Portierung des Codes "Versuchen Sie zu verstehen, wie Linux funktioniert" nach Rust

"Versuchen Sie zu verstehen, wie Linux funktioniert"

In Amazon heißt es "[Versuchen und Verstehen] Wie Linux funktioniert ~ Grundkenntnisse über Betriebssystem und Hardware, die durch Experimente und Illustrationen erlernt wurden". .. Aufgrund des Handle-Namens von Autor Takeuchi-san wird es oft als Sat-Buch bezeichnet.

Der von Herrn Takeuchi verteilte C-Code lautet hier, und der Code, den ich in Rust neu geschrieben habe, lautet [hier](https: //). Es kann unter github.com/gyu-don/linux-in-practice) gefunden werden.

Unten ist das Gedicht.

Impressionen des Buches

Ich selbst hatte ein gewisses Interesse an Linux und Speicher, daher gab es nicht viel neuen Inhalt. Ich fühle mich jedoch sehr gut, es zu lesen. Mit der Bezeichnung "Try and Understand" können Sie tatsächlich versuchen, was geschrieben steht, um Ihr Verständnis zu vertiefen. Ich habe es irgendwie gehört, aber ich bin wirklich froh, dass ich tatsächlich etwas ausprobieren konnte, was ich eigentlich nicht ausprobiert hatte.

Warum nach Rust portiert?

  1. Meine Theorie lautet: "Es ist besser, es selbst zu schreiben, weil es in Ordnung ist, es zu kopieren, als nur das Programm auszuführen." Es ist jedoch langweilig, wenn es nur eine Kopie ist, also habe ich sie nach Rust verschoben.
  2. Ich wollte erfahren, "Rust ist für die Systemprogrammierung geeignet, aber wie ist es eigentlich? Ist es einfacher als C?"

War es einfach zu tun?

pros:

cons: ――Ich habe beschlossen, mein Bestes zu geben, um die Teile zu schreiben, die keinen Umschlag hatten oder sich nicht sehr gut anfühlten. --C NUL-Abschlusszeichenfolge ist ohne Verwendung von Heap schwer zu erstellen (wenn Heap in Ordnung ist, sieht CString :: new (...) `gut aus)

Wie wäre es doch?

Ich wollte es mit Rust Hurra beenden, aber da die Benutzeroberfläche ursprünglich auf C basierte, wäre es unpraktisch, wenn ich mich nicht auf den Wrapper verlassen würde, und ich hatte das Gefühl, dass der Wrapper nicht perfekt war. Trotzdem denke ich, dass es sehr praktisch ist, Fehler mit "Ergebnis" zu behandeln, und selbst wenn Sie den Wrapper nicht mögen, können Sie ihn ohne großen Aufwand selbst erstellen, und es scheint nicht schlecht zu sein.

Recommended Posts

Eine Geschichte über die Portierung des Codes "Versuchen Sie zu verstehen, wie Linux funktioniert" nach Rust
Die Geschichte der Portierung von Code von C nach Go (und zur Sprachspezifikation)
Eine Geschichte über den Umgang mit dem CORS-Problem
[Linux] [C / C ++] So ermitteln Sie den Wert der Rücksprungadresse einer Funktion und den Funktionsnamen des Aufrufers
So machen Sie VS Code auf die venv-Umgebung und ihre Vorteile aufmerksam
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
[CleanArchitecture mit Python] Wenden Sie CleanArchitecture Schritt für Schritt auf eine einfache API an und versuchen Sie zu verstehen, welche Art von Änderung in der Codebasis stark ist.
Ein Memo zum visuellen Verstehen der Achse von Pandas.Panel
Eine Geschichte über die Änderung des Master-Namens von BlueZ
Die Geschichte von Airflows Webserver und DAG, deren Laden lange dauert
Ich bin gerade in Singapur. Eine Geschichte über das Erstellen eines LineBot und den Wunsch, einen unvergesslichen Job zu machen
[Ubuntu] So löschen Sie den gesamten Inhalt des Verzeichnisses
Eine grobe Zusammenfassung der Unterschiede zwischen Windows und Linux
So ermitteln Sie den Skalierungskoeffizienten eines bipolaren Wavelets
Immerhin die Geschichte der Rückkehr von Linux zu Windows
[Einführung in Tensorflow] Verstehen Sie Tensorflow richtig und versuchen Sie, ein Modell zu erstellen
Befehle und Dateien zum Überprüfen der Version von CentOS Linux
Wie man einen bestimmten Prozess am Anfang und Ende der Spinne mit Scrapy einfügt
So verbinden Sie den Inhalt der Liste mit einer Zeichenfolge
Eine Geschichte über die Vorhersage von Präfekturen aus Städtenamen mit Jubatus
Erfahren Sie anhand eines einfachen Regressionsmodells den Ablauf der Bayes'schen Schätzung und die Verwendung von Pystan
So zeigen Sie eine bestimmte Dateispalte unter Linux an (awk)
Übersicht über das Erstellen eines Server-Sockets und das Einrichten eines Client-Sockets
So bestimmen Sie die Existenz eines Selenelements in Python
So implementieren Sie Java-Code im Hintergrund von Red Hat (Linux ONE)
[EC2] So installieren Sie Chrome und den Inhalt jedes Befehls
[Python] So erhalten Sie den ersten und den letzten Tag des Monats
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
[Linux] Deaktivieren der automatischen Aktualisierung der Datei /etc/resolv.conf (AmazonLinux2)
So ermitteln Sie die Speicheradresse des Pandas-Datenrahmenwerts
Schreiben Sie ein Programm, das das Programm missbraucht und 100 E-Mails sendet
Wie nutzt man maschinelles Lernen für die Arbeit? 01_ Den Zweck des maschinellen Lernens verstehen
Ich habe zusammengefasst, wie die Boot-Parameter von GRUB und GRUB2 geändert werden
Der Versuch, Segmentbäume Schritt für Schritt zu implementieren und zu verstehen (Python)
[Python] Ein Hinweis, dass ich das Verhalten von matplotlib.pyplot zu verstehen begann
Die Geschichte des Exportierens eines Programms
So führen Sie den Übungscode des Buches "Profitable KI mit Python erstellen" in Google Colaboratory aus
[AtCoder für Anfänger] Sprechen Sie über den Rechenaufwand, den Sie grob wissen möchten
Kopieren und Einfügen des Inhalts eines Blattes im JSON-Format mit einer Google-Tabelle (mithilfe von Google Colab)
Eine Geschichte über das Erstellen eines Programms, mit dem die Anzahl der Instagram-Follower in einer Woche von 0 auf 700 erhöht wird
Eine Geschichte, die es aufgegeben hat, JavaScripthon unter Windows auszuführen.
[Python] So legen Sie die Position und Größe der Fensteranzeige von matplotlib fest
Teilen und Verarbeiten eines Datenrahmens mithilfe der Groupby-Funktion
Überlegen Sie, wie Sie einen Filter mit den Shotgun API-Contact-Versionen schreiben
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
[Linux] Ein Befehl zum Abrufen einer Liste der in der Vergangenheit ausgeführten Befehle
[NNabla] Hinzufügen einer Quantisierungsschicht zur mittleren Schicht eines trainierten Modells
So setzen Sie eine Zeilennummer am Anfang einer CSV-Datei
Die Geschichte, den Versuch aufzugeben, mit Heroku eine Verbindung zu MySQL herzustellen
Versuchen Sie, Python-Code zu schreiben, um Go-Code zu generieren. - Versuchen Sie, JSON-to-Go usw. zu portieren
Die Geschichte einer Soundkamera mit Touch Designer und ReSpeaker
Ein Hinweis zu den Funktionen der Standard-Linux-Bibliothek, die sich mit Zeit befasst
Python-Code zur Bestimmung der monatlichen Signale für Investitionen mit relativer Stärke
So spielen Sie ein Video ab, während Sie die Anzahl der Bilder ansehen (Mac)