Einführung
Vor kurzem habe ich begonnen, in die Welt von Kotlin einzutauchen, einer modernen und vielseitigen Programmiersprache, die meine Aufmerksamkeit erregt hat. Da ich jedoch an die interaktive Umgebung von Jupyter gewöhnt bin, die schnelle Iterationen und eine flüssige Code-Erkundung ermöglicht, habe ich mich gefragt, ob es für Kotlin etwas Ähnliches gibt.
Zu meiner angenehmen Überraschung habe ich entdeckt, dass es einen Jupyter-Kernel für Kotlin gibt. Dieses Tool kombiniert die Leistungsfähigkeit und Eleganz von Kotlin mit der Interaktivität und Benutzerfreundlichkeit von Jupyter und schafft so eine ideale Entwicklungsumgebung zum Erlernen und Experimentieren mit der Sprache.
In diesem Beitrag teile ich meine Erfahrungen beim Einrichten einer Jupyter-Umgebung mit Kotlin-Unterstützung und gehe sogar noch einen Schritt weiter und erstelle ein Notizbuch, mit dem Sie mit mehreren Sprachen gleichzeitig arbeiten können.
Erstellen eines Containers mit Kotlin
Die Installation des Kotlin-Kernels für Jupyter ist relativ einfach, insbesondere wenn wir Docker verwenden, um eine kontrollierte und reproduzierbare Umgebung zu erstellen. Schauen wir uns die Docker-Datei an, die ich zu diesem Zweck erstellt habe – lesen Sie die Kommentare, um jeden Schritt zu verstehen:
Docker-Datei
Wir beginnen mit einem offiziellen Jupyter-Image, das von quay.io heruntergeladen wurde. Wir verwenden eine bestimmte Version, um die Reproduzierbarkeit sicherzustellen und kennzeichnen das Bild zur einfachen Identifizierung als Kotlin-Kernel.
FROM quay.io/jupyter/base-notebook:2024-12-31 AS kotlin-kernel
Wir installieren OpenJDK 21, das zum Ausführen von Kotlin erforderlich ist. Die Installation erfolgt als Root, um Berechtigungsprobleme zu vermeiden, und dann wechseln wir zum Nicht-Root-Benutzer, um die Sicherheit des Images zu gewährleisten.
USER root RUN apt-get update && apt-get -y install openjdk-21-jdk USER jovyan
Wir installieren den Kotlin-Kernel für Jupyter, damit wir Kotlin-Code in unserem Notebook ausführen können.
RUN pip install --user \ kotlin-jupyter-kernel==0.12.0.322
Wir erstellen ein Verzeichnis zum Speichern der Notizbücher.
RUN mkdir -p /home/jovyan/notebooks
Schließlich richten wir die Umgebungsvariable NOTEBOOK_ARGS ein, die es uns ermöglicht, das Notizbuch mit den von uns benötigten Optionen zu konfigurieren. In diesem Fall möchten wir nicht, dass sich automatisch ein Browser öffnet, und das Notizbuchverzeichnis soll /home/jovyan/ sein. Notizbücher.
ENV NOTEBOOK_ARGS="--no-browser --notebook-dir=/home/jovyan/notebooks"
Um das Docker-Image zu erstellen, führen wir Folgendes aus:
docker build --target kotlin-kernel -t kotlin-kernel .
Dieser Befehl erstellt das Docker-Image und markiert es als kotlin-kernel.
Um den Container auszuführen:
docker run \ -it \ -p 8888:8888 \ -v $(pwd)/notebooks:/home/jovyan/notebooks \ kotlin-kernel
Dieser Befehl:
- Führen Sie den Container im interaktiven Modus (-it) aus.
- Ordnet Port 8888 des Containers Port 8888 des Hosts zu (-p 8888:8888).
- Fügt das lokale Notebook-Verzeichnis in das Verzeichnis :/home/jovyan/notebooks des Containers ein (-v $(pwd)/notebooks::/home/jovyan/notebooks).
Nach der Ausführung können Sie in Ihrem Browser auf JupyterLab zugreifen und sehen, dass im Launcher bereits zwei Kernel verfügbar sind: Python und Kotlin.
Und tatsächlich können wir jetzt Notizbücher mit Kotlin erstellen!
Der nächste Schritt in der Interaktivität
Als ich mich eingehender mit Kotlin befasste, fielen mir einige interessante Ähnlichkeiten mit Python auf. Dies brachte mich dazu, diese Ähnlichkeiten detaillierter zu visualisieren und direkte Vergleiche zwischen den beiden Sprachen zu erstellen. Ich habe mich gefragt, ob es möglich wäre, Python- und Kotlin-Code auf demselben Notebook auszuführen, und es stellte sich heraus, dass dies möglich ist.
Ich habe eine Erweiterung (und einen Jupyter-Kernel) namens SoS (Script of Scripts) entdeckt, die diese Funktionalität ermöglicht. Ich habe beschlossen, es mit dem Kotlin-Kernel zu meinem Container hinzuzufügen. Hier sind die Ergänzungen zur Docker-Datei:
Dockerfile-Update
Wir installieren SoS, das es uns ermöglicht, Python- und Kotlin-Code im selben Notebook auszuführen.
FROM quay.io/jupyter/base-notebook:2024-12-31 AS kotlin-kernel
Mit diesen Ergänzungen können wir jetzt unseren verbesserten Container erstellen und ausführen:
USER root RUN apt-get update && apt-get -y install openjdk-21-jdk USER jovyan
Wenn Sie jetzt auf JupyterLab zugreifen, werden Ihnen drei verfügbare Kernel angezeigt: Python, Kotlin und SoS.
Und jetzt können wir Python- und Kotlin-Code im selben Notebook ausführen:
Zusätzliche Anpassung
Um das visuelle Erlebnis zu verbessern und Zellen verschiedener Sprachen leichter unterscheiden zu können, habe ich beschlossen, das Erscheinungsbild der Zellen anzupassen.
Mit Jupyter Notebook können Sie benutzerdefiniertes CSS hinzufügen, wodurch wir je nach Sprache links von jeder Zelle Farbverläufe hinzufügen können.
Hier ist das CSS, das ich verwendet habe:
RUN pip install --user \ kotlin-jupyter-kernel==0.12.0.322
Um diese Anpassung zu implementieren, habe ich das CSS in einer Datei namens „custom.css“ gespeichert und zur Docker-Datei hinzugefügt:
RUN mkdir -p /home/jovyan/notebooks
Darüber hinaus ist es notwendig, im Jupyter-Lab-Befehl anzugeben, dass wir dieses benutzerdefinierte CSS verwenden möchten, indem wir dem Ausführungsbefehl das Flag --custom-css hinzufügen.
ENV NOTEBOOK_ARGS="--no-browser --notebook-dir=/home/jovyan/notebooks"
Fehler und wie man sie verbirgt
Bei der Verwendung des mehrsprachigen Kernels tritt gelegentlich ein Fehler auf, wenn eine Kotlin-Zelle ausgeführt wird. Dieser Fehler wird zufällig angezeigt und obwohl ich seinen Ursprung noch nicht identifizieren konnte oder wie ich ihn definitiv beheben kann, habe ich eine vorübergehende Lösung gefunden, um das Benutzererlebnis zu verbessern.
Um diesen lästigen Fehler zu verbergen, habe ich mich für die Verwendung von CSS entschieden. Ich habe der oben erwähnten Datei „custom.css“ die folgende Zeile hinzugefügt:
FROM quay.io/jupyter/base-notebook:2024-12-31 AS kotlin-kernel
Diese CSS-Zeile verbirgt Kotlin-spezifische Fehlermeldungen im Notizbuch. Obwohl es sich nicht um eine ideale Lösung handelt, da es wichtige Fehler verbergen könnte, verbessert es das visuelle Erlebnis bei der Arbeit mit Kotlin-Notebooks erheblich, insbesondere wenn es um diesen wiederkehrenden und scheinbar harmlosen Fehler geht.
Abschluss
In diesem Beitrag haben wir untersucht, wie man mit Jupyter Notebooks eine interaktive Entwicklungsumgebung für Kotlin erstellt.
Wir beginnen mit der grundlegenden Einrichtung eines Docker-Containers mit Kotlin-Unterstützung und gehen dann zu einer anspruchsvolleren Umgebung über, die die Codeausführung in mehreren Sprachen innerhalb desselben Notebooks ermöglicht.
Darüber hinaus haben wir gesehen, wie wir das Erscheinungsbild unserer Notizbücher anpassen können, um das visuelle Erlebnis und die Lesbarkeit zu verbessern, und wie wir einige häufige Fehler, die bei der Verwendung dieser Notizbücher auftreten können, „ausblenden“ können.
Dies erleichtert nicht nur das Erlernen von Kotlin, sondern ermöglicht auch direkte Vergleiche mit anderen Sprachen wie Python, was für Entwickler, die auf Kotlin umsteigen oder regelmäßig mit mehreren Programmiersprachen arbeiten, äußerst nützlich sein kann
Zusätzliche RessourcenFür diejenigen, die daran interessiert sind, diese Umgebung weiter zu erkunden oder zu replizieren, habe ich den gesamten in diesem Projekt verwendeten Code in meinem GitHub-Repository verfügbar gemacht.
Ich hoffe, dieser Leitfaden wird Ihnen bei Ihrer Lernreise mit Kotlin und Jupyter nützlich sein.
Das obige ist der detaillierte Inhalt vonErstellen eines Notebooks mit Jupyter und Kotlin. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Die Gründe, warum Python -Skripte auf UNIX -Systemen nicht ausgeführt werden können, sind: 1) unzureichende Berechtigungen unter Verwendung von chmod xyour_script.py zur Erteilung von Ausführungsberechtigungen; 2) Falsche oder fehlende Shebang -Linie, Sie sollten #!/Usr/bin/envpython verwenden; 3) In falsche Einstellungen für die Umgebungsvariablen können Sie os.Environ -Debugging drucken. 4) Mit der falschen Python -Version können Sie die Version in der Shebang -Zeile oder der Befehlszeile angeben. 5) Abhängigkeitsprobleme unter Verwendung der virtuellen Umgebung, um Abhängigkeiten zu isolieren; 6) Syntaxfehler, verwenden Sie Python-Mpy_CompileYour_Script.py, um zu erkennen.

Die Verwendung von Python -Arrays eignet sich besser für die Verarbeitung großer Mengen von numerischen Daten als für Listen. 1) Arrays speichern mehr Speicher, 2) Arrays sind schneller nach numerischen Werten, 3) Konsistenz vom Arrays Kraftstyp, 4) Arrays sind mit C -Arrays kompatibel, sind jedoch nicht so flexibel und bequem wie Listen.

Listen besser voreflexibilität undmixdatatatypen, während Datensätze der überlegenen sumerischen Berechnungen sandlastete

NumpymanageMemoryforlargearrayseffictionlyusingViews, Kopien und Memory-Made.1) ViewsAllowsLicing Mit Outcopying, direktModifizierende Theoriginalarray.2) CopieScanbecreated withthecopy () methodeChoperingdata.3) Memory-Maddscanbeed-medellessive-made-mapedFileshandleshandLessive-massessive-massessiva

ListsinpythondonotRequireMportingamodule, whilearRays aus der FROMTHEARRAYMODULEDONEDANIMIMPORT.1) listet zur Verfügung gestellt.

PythonlistscanstoreanyDatatype, ArrayModulearraysStoreOnetype und NumpyarraysarefornumericalComputations.1) listet dieArversatile-memory-effizient.2) Arraymodulenarraysalememory-effizientforhomogeneData.3) Numpharraysareoptional-EffictionhomogenInData.3) nummodulenarraysoptionalinformanceIntata.3) nummodulearraysoptionalinformanceIntata.3) NumpharraysareoPresopplowancalinScesDataa.3) NumpharraysoePerformance

Wenn SietostoreavalueOfThewrongdatatypeinapythonarray, touencounteratypeerror.Thissisdustuetothearraymodules -SstrictTypeNeen -Forcortion, welche

PythonlistsarePartThestandardlibrary, whilearraysarenot.listarebuilt-in, vielseitig und UNDUSEDFORSPORINGECollections, während dieArrayRay-thearrayModulei und loses und loses und losesaluseduetolimitedFunctionality.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.
