Andrew Brookins Andrew Brookins
On december 23, 2021 by adminI 2017 spurgte jeg: “Kan man skrive kode på en iPad?” I 2019 er svaret stort set det samme: ikke rigtig. Men tingene er ved at blive interessante.
Opdatering: Hvis du koder på en iPad, skal du tjekke mit detaljerede kig på måder at synkronisere iOS-udklipsholderen med en fjernmaskine via SSH. Jeg udforskede også, hvordan man bruger browserudviklingsværktøjer på iPadOS ved hjælp af Inspect-appen i et nyligt indlæg.
“Programmering” på iOS: Genvejsappen
Ipad’en mangler stadig muligheden for at lave nogen form for native programmering. Det vil sige, at du ikke finder en hemmelig dør, der fører til en UNIX-shell, hvor du kan installere homebrew og en C-compiler. Hvis bare!
Du kan roligt ignorere Swift Playgrounds, medmindre dit mål er at lære Swift. Playgrounds er ikke et generelt programmeringsmiljø; det er rettet mod børn, der lærer at kode.
Det tætteste på programmerbarhed, der findes som en indbygget funktion i iOS, er appen Genveje, som kan automatisere små opgaver og forbinde apps sammen.
Dette er den rebrandede Apple-version af Workflow, en populær app, der gjorde mere eller mindre det samme. Du kan bruge Genveje til at kæde en række handlinger sammen, som du normalt ville udføre, f.eks. slå Do Not Disturb til, afspille et bestemt album (jeg anbefaler Brute Force af The Algorithm) og åbne en SSH-klient-app eller en teksteditor.
Shortcuts er sikkert nyttig for nogen, men jeg bruger den ikke meget, og den er for begrænset til, at jeg kan kalde den programmering!
Redigering i native iOS-tekstredaktører
Det hele er dog ikke helt tabt. For det første, hvis du indrømmer, at iPad Pro er en potentiel tynd klient, der parres med en server, så har du muligheder. Der er gode SSH-apps til rådighed, som Blink. Men du behøver ikke nødvendigvis at oprette direkte forbindelse til serveren for at gøre alting. Hvis du hellere vil redigere nativt på iPad’en og konstruere et system af remskiver, der løfter din kode op til en cloud-server, måske med et system til kontinuerlig integration som GitLab’s, er det også muligt. Vi vil undersøge begge muligheder.
Hey, I Wrote a Book!
The Temple of Django Database Performance er min nye bog, der blander tabletop gaming, databaser og Django sammen. Udforsk et ødelagt tempel, mens du lærer avancerede Django-databasepræstations-tricks!
Du kan sandsynligvis ikke køre din kode på iOS, medmindre det er Python
Der er et vist spillerum omkring at køre din kode direkte på iPad, hvis du er Python-udvikler. Pythonista-appen er med tiden vokset fra en Python-teksteditor med fokus på iOS-automatisering til et hackbart Python-udviklingsmiljø, der leveres med større pakker som NumPy, har en bash-lignende shell implementeret i Python og understøtter plugins.
Afhængig af Python har jeg ikke fundet nogen generelt nyttige fortolker- eller compiler-apps på iOS.
Opdatering: Jeg blev af læsere henvist til Continuous, en C#- og F#-IDE til iOS, og Rescript, en JavaScript/node.js-IDE til iOS. Disse ser begge lovende ud og svarer måske til Pythonista, men jeg har ikke brugt dem. Der er også Replete, en iOS-app, der giver dig en ClojureScript REPL (read-eval-print loop); selv om den er sjov, virker den mindre funktionsrig end de andre.
Native iOS-redigeringsprogrammer bliver bedre
Der findes i stigende grad ordentlige tekstredigeringsprogrammer, der kører uden fortolker- eller compiler-komponenten. Apps som GoCoEdit og Textastic tilbyder redigeringsoplevelser, der er begyndt at få nogle af de funktioner, som desktopredigeringsprogrammer har, der går ud over det grundlæggende – f.eks. fuzzy-finding af filer.
Disse redaktører er begyndt at arbejde sammen med hinanden og med den kraftfulde Git-app Working Copy og den af Apple leverede Files-app for at frembringe interessante effekter. Working Copy kan tjekke et Git-repositorium ud og gøre det tilgængeligt for redigering i apps som GoCoEdit; ændringer, der foretages i editoren, afspejles automatisk tilbage i Working Copy, hvor du så kan overføre dem.
Funktioner, der mangler i iOS-tekstredaktører
Ingen af disse redaktører giver dog i sig selv en oplevelse, der egner sig til egentlig softwareudvikling. Vi taler om Dreamweaver, ikke Emacs.
En manglende del er i øjeblikket projektsøgning; det vil sige, at hvis man får en mappe eller et sæt mapper, kan brugeren søge efter tekst i alle filer i den. Hvis du bruger GoCoEdit eller iVim, kan du få en tilnærmelse til dette ved at bruge Working Copys fantastiske søgeværktøj, som giver denne funktion, til at finde filer og derefter vælge f.eks. “open in GoCoEdit” fra delingsmenuen. Textastic tilbyder ikke denne funktion af en eller anden grund. Anyway, det er brugbart i en nødsituation, men du vil sandsynligvis ikke opnå det eftertragtede “flow.”
Sidebemærkning om iVim: det er blevet bedre. Du kan have en .vimrc
fil og hente plugins ind i appens filsystem. Angiveligt virker plugins, så længe de er skrevet i Vimscript. Bemærk også, at det er Vim 7, så ingen async.
Når du arbejder fra en iOS-teksteditor, skal du ikke forvente, at det typiske mønster for udvikling af webapplikationer er gældende. Medmindre du bruger Pythonista, er der ingen server, der kører din kode på iPad’en, så du skal bruge noget lim for at få din redigerede fil overført et sted, der rent faktisk kører kode, som f.eks. en server eller en serverløs platform. Der er mange måder at opnå dette på i 2019, hvilket muligvis involverer en vis brug af Pythonista, Zapier, IFTTT og/eller en Siri-stemmekommando i Genveje. Hvis kodning på en iPad er din nye hobby, så kan du hengive dig til alle dine værste vaner med opmærksomhedsunderskuddetabulering ved at udforske dette emne.
Ingen af disse redaktører tilbyder heller ikke nogen linters eller kodeformatører. Designet af iOS tyder på, at det sandsynligvis ville kræve en separat app, der understøttede linting og formatering af meddelelser med tekst som input, at få linters og formatters uden for en editor-app til at fungere. Ellers skal editoren levere den binære kode, f.eks. gofmt
. For værktøjer, der er skrevet i fortolkede sprog, formoder jeg, at editoren ville være nødt til at bundle hele programmeringssproget eller hvad Pythonista nu laver.
The Message-Passing Nature of iOS is Pretty Cool
Desto mere du bruger iOS til at gøre noget ikke-trivielt, jo mere begynder du at mærke dets message-passing-natur. I stedet for at programmer interagerer med hinanden og med operativsystemet via filer og systemkald, sender og modtager alle programmer meddelelser mellem hinanden og operativsystemet.
Sådan finder du dine filer i appen Filer, men det er ikke bare en mappe med filer. Det er mere som et enkelt sted, hvor du kan sende og modtage meddelelser om filer i alle apps på din iPad, herunder iCloud Drive.
Apps, der gør noget med filer, har tilføjet mere avancerede funktioner for at udnytte disse nye filrelaterede meddelelser, som andre apps understøtter, så mange tekstredigeringsapps kan nu gøre ting som at åbne en mappe med filer, der er udstillet af en anden app (i 2019 er det “avanceret” for iOS). Mapper, der åbnes på denne måde, vil normalt forblive i noget som en sidebar i appen og fortsat være tilgængelige, som om de var lokale for appen.
Eventuelt begynder dette at føles ret cool og naturligt; hvis du går tilbage til en stationær computer, forventer du måske en konsekvent “deleknap”, som ikke findes. Hvis bare der var en teksteditor af professionel kvalitet til rådighed på iOS – og compilere, fortolkere, webservere osv.
Få mit nyhedsbrev.
Du vil få en lejlighedsvis e-mail, når jeg er begejstret nok for en teknologi til at skrive om den.
Forbindelse til en rigtig computer med SSH
Hvis du bruger Blink eller en anden SSH-app til at oprette forbindelse til en server, der kan udføre vilkårlig kode, og køre Vim eller Emacs derfra, kan det typiske mønster med webapps skrevet i dynamiske sprog, hvor man redigerer en fil, venter på, at appserveren genindlæser den redigerede fil, og derefter opdaterer en webside, stadig fungere.
Du opdaterer selvfølgelig en browser på iOS. Jeg foreslår iCab på grund af dets omfattende tilpasningsmuligheder, herunder de bedste modificerbare tastaturgenveje, jeg har set på iOS.
Hvor skal du køre din server i 2019?
For folk, der har brug for kraften og fleksibiliteten i en fjernserver og en ægte editor som Vim, er der endnu flere muligheder, end der var tidligere.
Digital Ocean er et godt valg for at komme hurtigt i gang. Webstedet har et godt UI/UX, og support er inkluderet.
Men Googles forpligtelse til at bruge 100 % vedvarende energi gør Google Cloud Platform til et attraktivt valg, hvis du ikke har brug for support og ønsker at bruge lidt flere kræfter. Det “altid gratis” niveau af GCP omfatter en f1-micro-instans, som kan fungere som din udviklings-VM, afhængigt af dine behov.
Det fungerer også godt med en gammel Mac, som du kan konfigurere som server, for så kan du synkronisere filer mellem serveren og din iPad ved hjælp af iCloud Drive eller bruge osascript
til at sende dig selv tekstbeskeder, der dybt linker til iOS-apps. Verden er dit østers på det tidspunkt. Apple har genoplivet Mac Mini, så det er et levedygtigt par hjemme-server/desktopcomputer til iPad.
Reaching Your Development Web Server from an iOS Browser
For et par år siden år, hvis du udviklede et webprogram på en fjernserver, var du måske nødt til at køre programmets dev-server på en offentligt tilgængelig port. Nu er der en app til SSH-tunneling kaldet – vent på det! – SSH Tunnel.
For at nå din applikationsserver (f.eks. Djangos udviklingsserver) skal du først etablere en tunnel til den server (computeren), som applikationsserveren kører på, med SSH Tunnel. Du skal definere et andet værtsnavn end “localhost” i /etc/hosts
på serveren, der peger på 127.0.0.0.1. Følg derefter vejledningen på SSH Tunnels websted for at indstille de rigtige proxy-indstillinger på den iOS-netværksforbindelse, du bruger.
Når du har udført blodofferet, kan du indtaste det angivne værtsnavn, f.eks. old-faithful
og den port, som din applikationsserver kører på, i din iOS-browser efter eget valg, f.eks. http://old-faithful:4000
for at indlæse applikationen.
Browser Dev Tools, Where Art Thou?
Når du har brug for at debugge webappen, er der nu en dev tools-app kaldet Inspect. Den fungerer ret godt, selv om den mangler det robuste JavaScript-debugging-miljø, som du får i en desktop-browser. Alligevel har Inspect, bortset fra en JS-debugger, det meste af det, du har brug for: CSS/HTML-inspektion og en JS-konsol, så du i det mindste kan lave console.log
debugging.
Manglen på en dev tools-app som Inspect var den største hindring for udvikling af webapps på iPad før 2018. Ved hjælp af blot disse værktøjer kan du lave webapplikationsudvikling fra iPad. Vil det være fantastisk? Det ved jeg ikke. Sandsynligvis ikke.
So There You Have It
I 2019 er iPad og iOS stort set det samme som i 2017, hvad angår programmering. Det, der er anderledes, er det stigende antal iOS-appudviklere, der henvender sig til folk, der ønsker at skrive kode på iOS.
I betragtning af at iOS blev udgivet for 12 år siden og først nu har tekstredigeringsprogrammer i stil med Dreamweaver til rådighed, med få måder at køre kode på ud over “lær at kode”-apps, foreslår jeg, at du vil kunne kode på en iPad i 2037.
Skriv et svar