Andrew Brookins
On december 23, 2021 by adminIn 2017 vroeg ik: “Kun je code schrijven op een iPad?” In 2019 is het antwoord in principe hetzelfde: niet echt. Maar de dingen worden interessant.
Update: als je codeert op een iPad, bekijk dan mijn gedetailleerde blik op manieren om het iOS-klembord te synchroniseren met een externe machine via SSH. Ik heb ook onderzocht hoe je browser dev tools op iPadOS kunt gebruiken met behulp van de Inspect-app in een recente post.
“Programmeren” op iOS: de Shortcuts App
De iPad mist nog steeds de mogelijkheid om native programmering te doen. Dat wil zeggen, je zult geen geheime deur vinden die leidt naar een UNIX shell waar je homebrew en een C compiler kunt installeren. Was het maar waar!
Je kunt Swift Playgrounds gerust links laten liggen, tenzij je doel is om Swift te leren. Playgrounds is geen programmeeromgeving voor algemeen gebruik; het is gericht op kinderen die leren coderen.
Het dichtst bij programmeerbaarheid dat bestaat als een native functie van iOS is de app Shortcuts, die kleine taken kan automatiseren en apps met elkaar kan verbinden.
Dit is de rebranded Apple-versie van Workflow, een populaire app die min of meer hetzelfde deed. Je kunt Shortcuts gebruiken om een reeks acties aan elkaar te rijgen die je normaal gesproken zou kunnen doen, zoals Do Not Disturb inschakelen, een specifiek album afspelen (ik raad Brute Force van The Algorithm aan) en een SSH-client-app of een teksteditor openen.
Shortcuts is waarschijnlijk nuttig voor iemand, maar ik gebruik het niet veel en het is te beperkt voor mij om het programmeren te noemen!
Editing in Native iOS Text Editors
Toch is niet alles helemaal verloren. Ten eerste, als je toegeeft dat de iPad Pro een potentiële thin client is die koppelt met een server, dan heb je opties. Er zijn goede SSH apps beschikbaar, zoals Blink. Maar je hoeft niet per se direct verbinding te maken met de server om alles te doen. Als je liever wilt bewerken op de iPad en een systeem van katrollen wilt bouwen die je code omhoog hijsen naar een cloud server, misschien met een continu integratie systeem zoals GitLab’s, dan is dat ook mogelijk. We zullen beide opties verkennen.
Hey, ik heb een boek geschreven!
De tempel van Django Database Performance is mijn nieuwe boek dat tabletop gaming, databases, en Django masseert. Verken een vervallen tempel terwijl je geavanceerde Django database performance trucs leert!
Je kunt je code waarschijnlijk niet op iOS uitvoeren tenzij het Python is
Er is wat speelruimte rond het uitvoeren van je code rechtstreeks op de iPad als je een Python-ontwikkelaar bent. De Pythonista-app is in de loop van de tijd uitgegroeid van een Python-teksteditor gericht op iOS-automatisering tot een hackbare Python-ontwikkelingsomgeving die wordt geleverd met belangrijke pakketten zoals NumPy, een bash-achtige shell heeft die in Python is geïmplementeerd en plugins ondersteunt.
Anders dan Python, heb ik geen algemeen bruikbare interpreter- of compiler-apps op iOS gevonden.
Update: Lezers verwezen me naar Continuous, een C# en F# IDE voor iOS, en Rescript, een JavaScript/node.js IDE voor iOS. Deze zien er allebei veelbelovend uit en zijn misschien gelijkwaardig aan Pythonista, maar ik heb ze nog niet gebruikt. Er is ook Replete, een iOS-app die je een ClojureScript REPL (read-eval-print loop) geeft; hoewel leuk, lijkt het minder feature-rijk dan de anderen.
Native iOS Editors Are Getting Better
Er zijn steeds meer fatsoenlijke teksteditors die draaien zonder de interpreter of compiler component. Apps als GoCoEdit en Textastic bieden bewerkingservaringen die een aantal van de functies van desktop-editors beginnen te krijgen die verder gaan dan de basis – bijvoorbeeld het fuzzy-finding van bestanden.
Deze editors beginnen met elkaar en met de krachtige Git-app Working Copy en de door Apple geleverde Files-app samen te werken om interessante effecten te produceren. Working Copy kan een Git-repository uitchecken en beschikbaar maken voor bewerking in apps als GoCoEdit; wijzigingen die in de editor worden gemaakt, worden automatisch teruggekoppeld naar Working Copy, waar je ze vervolgens kunt vastleggen.
Ter ontbrekende functies in iOS-teksteditors
Geen van deze editors biedt echter een ervaring die geschikt is voor daadwerkelijke software-ontwikkeling op zichzelf. We hebben het over Dreamweaver, niet over Emacs.
Een ontbrekend onderdeel op dit moment is project zoeken; dat wil zeggen, gegeven een map of een set van mappen, de gebruiker in staat stellen om te zoeken naar tekst in alle bestanden in het. Als je GoCoEdit of iVim gebruikt, kun je dit benaderen door de geweldige zoekfunctie van Working Copy te gebruiken, die deze mogelijkheid wel biedt, om bestanden te vinden en dan bijvoorbeeld te kiezen voor “openen in GoCoEdit” in het menu delen. Textastic biedt deze mogelijkheid om de een of andere reden niet. Hoe dan ook, het is werkbaar in een noodgeval, maar je zult waarschijnlijk niet de gewenste “flow” bereiken.
Noot over iVim: het is beter geworden. Je kunt een .vimrc
bestand hebben en plugins downloaden in het bestandssysteem van de app. Vermoedelijk werken plugins zolang ze geschreven zijn in Vimscript. Merk ook op dat het Vim 7 is, dus geen async.
Wanneer u werkt vanuit een iOS-teksteditor, verwacht dan niet dat het typische patroon van webapplicatie-ontwikkeling van toepassing is. Tenzij je Pythonista gebruikt, is er geen server die je code op de iPad uitvoert, dus je zult wat lijm nodig hebben om je bewerkte bestand ergens heen te sturen dat daadwerkelijk code uitvoert, zoals een server of een serverloos platform. Er zijn veel manieren om dit in 2019 te bereiken, mogelijk met enig gebruik van Pythonista, Zapier, IFTTT en / of een Siri-spraakopdracht in Shortcuts. Als coderen op een iPad je nieuwe hobby is, dan kun je al je ergste Attention Deficit Disorder-gewoonten uitleven bij het verkennen van dit onderwerp.
Niemand van deze editors biedt ook geen linters of codeformatters. Het ontwerp van iOS suggereert dat om linters en formatters extern aan een editor app te laten werken, waarschijnlijk een aparte app nodig is die linting en formattering ondersteunt met tekst als invoer. Anders zal de editor de binary moeten leveren, bijv. gofmt
. Voor tools geschreven in geïnterpreteerde talen, zou de editor waarschijnlijk de hele programmeertaal moeten bundelen of wat Pythonista ook doet.
The Message-Passing Nature of iOS is Pretty Cool
Hoe meer je iOS gebruikt om iets niet-triviaals te doen, hoe meer je de message-passing aard begint te voelen. In plaats van dat applicaties met elkaar en met het OS communiceren via bestanden en systeemaanroepen, sturen en ontvangen alle apps berichten tussen elkaar en het OS.
Daarom vind je je bestanden in de app Bestanden, maar het is niet zomaar een map met bestanden. Het is meer een enkele plaats voor het verzenden en ontvangen van berichten over bestanden in alle apps op je iPad, inclusief iCloud Drive.
Apps die iets met bestanden doen, hebben geavanceerdere functies toegevoegd om te profiteren van deze nieuwe bestandsgerelateerde berichten die andere apps ondersteunen, dus veel teksteditor-apps kunnen nu dingen doen zoals het openen van een map met bestanden die door een andere app zijn blootgesteld (in 2019 is dat “geavanceerd” voor iOS). Directories die op deze manier worden geopend, blijven meestal in iets als een zijbalk in de app en blijven toegankelijk alsof ze lokaal zijn voor de app.
Eventueel begint dit behoorlijk cool en natuurlijk aan te voelen; teruggaand naar een desktopcomputer, verwacht je misschien een consistente “delen” -knop die niet bestaat. Was er maar een professionele teksteditor beschikbaar op iOS – en compilers, interpreters, webservers, etc.
Geef mijn nieuwsbrief.
Je krijgt af en toe een e-mail als ik enthousiast genoeg ben over een technologie om erover te schrijven.
Verbinden met een echte computer met SSH
Als je Blink of een andere SSH-app gebruikt om verbinding te maken met een server die willekeurige code kan uitvoeren en van daaruit Vim of Emacs uitvoert, dan kan het typische patroon met web-apps geschreven in dynamische talen van het bewerken van een bestand, wachten tot de app-server het bewerkte bestand opnieuw laadt, en dan een webpagina verversen nog steeds werken.
Je zult natuurlijk een browser op iOS verversen. Ik stel iCab voor vanwege de uitgebreide aanpassingsopties, inclusief hands-down de best aanpasbare sneltoetsen die ik op iOS heb gezien.
Waar moet je je server in 2019 draaien?
Voor mensen die de kracht en flexibiliteit van een externe server en een echte editor zoals Vim nodig hebben, zijn er nog meer opties dan er vroeger waren.
Digital Ocean is een geweldige keuze om snel aan de slag te gaan. De website heeft een geweldige UI / UX, en ondersteuning is inbegrepen.
Ondertussen maakt Google’s toewijding aan het gebruik van 100% hernieuwbare energie Google Cloud Platform een aantrekkelijke keuze als je geen ondersteuning nodig hebt en een beetje meer moeite wilt doen. De “altijd gratis” tier van GCP omvat een f1-micro instance, die zou kunnen werken als je ontwikkeling VM, afhankelijk van je behoeften.
Wat ook goed werkt is een oude Mac die je kunt instellen als server, want dan kun je bestanden synchroniseren tussen de server en je iPad met behulp van iCloud Drive, of osascript
gebruiken om jezelf tekstberichten te sturen die deep-linking in iOS-apps. Op dat moment ligt de wereld aan je voeten. Apple heeft de Mac Mini nieuw leven ingeblazen, dus dat is een levensvatbaar thuis server / desktop computer paar voor de iPad.
Reaching Your Development Web Server from an iOS Browser
Een paar jaar geleden als je een webapplicatie aan het ontwikkelen was op een externe server moest je misschien de dev server van de applicatie draaien op een publiek toegankelijke poort. Nu is er een app voor SSH-tunneling genaamd – wacht even! – SSH Tunnel.
Om je applicatieserver te bereiken (b.v. Django’s ontwikkelserver), moet je eerst een tunnel opzetten naar de server (de computer) waarop de app server draait met SSH Tunnel. Je zult een andere hostnaam dan “localhost” willen definiëren in /etc/hosts
op de server, gericht op 127.0.0.1. Volg vervolgens de instructies op de website van SSH Tunnel om de juiste proxy-instellingen in te stellen op de iOS netwerkverbinding die je gebruikt.
Nadat je het bloedoffer hebt uitgevoerd, kun je de hostnaam intypen die je hebt opgegeven, bijv. old-faithful
en de poort waarop uw applicatie server draait in uw iOS browser van keuze, bijv. http://old-faithful:4000
om de applicatie te laden.
Browser Dev Tools, Where Art Thou?
Wanneer u de web app moet debuggen, is er nu een dev tools app genaamd Inspect. Het werkt vrij goed, hoewel het ontbreekt aan de robuuste JavaScript debug-omgeving die je krijgt op een desktop browser. Maar, behalve een JS debugger, heeft Inspect het meeste wat je nodig hebt: CSS / HTML-inspectie en een JS-console, dus je kunt in ieder geval console.log
debuggen.
Gebrek aan een dev tools-app zoals Inspect was de nummer één blokkade voor web app-ontwikkeling op de iPad vóór 2018. Met behulp van alleen deze tools, kunt u webapplicatie-ontwikkeling doen vanaf de iPad. Zal het geweldig zijn? Ik weet het niet. Waarschijnlijk niet.
So There You Have It
In 2019 zijn de iPad en iOS in principe hetzelfde als ze in 2017 waren, voor zover het programmeren betreft. Wat anders is, is het groeiende aantal iOS-app-ontwikkelaars die zich richten op mensen die code willen schrijven op iOS.
Gezien het feit dat iOS 12 jaar geleden werd uitgebracht en er nu pas teksteditors vergelijkbaar met Dreamweaver beschikbaar zijn, met weinig manieren om code uit te voeren buiten “leer om te coderen” apps, stel ik voor dat je in 2037 in staat zult zijn om te coderen op een iPad.
Geef een antwoord