Tunnel SSH
Le commutateur Tunnel SSH atteint une base derrière un bastion avec le client SSH propre à Calíope, et l’hôte et le port du profil deviennent la base vue depuis le bastion.
Chaque capacité, vérifiée face au code source.
Calíope est distribuée comme une application unique dont les capacités ci-dessous sont disponibles sur Mac, iPad, iPhone et Apple Vision Pro. Chaque entrée correspond à du code qui existe aujourd'hui — c'est un catalogue, pas une liste de souhaits. Utilisez les raccourcis pour sauter à une catégorie, ou parcourez la liste complète.
Cette page décrit Calíope 1.8, la version que je construis en ce moment. La 1.7 est sur l'App Store pour Mac, iPad, iPhone, Apple Watch, Apple TV et Apple Vision Pro. Le changelog indique dans quelle version chaque fonction est arrivée.
Le commutateur Tunnel SSH atteint une base derrière un bastion avec le client SSH propre à Calíope, et l’hôte et le port du profil deviennent la base vue depuis le bastion.
Avant de faire confiance à un bastion, Calíope affiche son empreinte SHA256, dit si elle est nouvelle ou a changé depuis la dernière fois, et attend que vous l’acceptiez ou la mettiez à jour.
Le commutateur SSL / TLS chiffre la connexion, vérifie le serveur auprès des autorités du système ou d’un fichier de CA, et accepte un certificat et une clé client facultatifs.
Les mots de passe, les phrases secrètes SSH et les clés d’API vivent dans le trousseau, jamais dans un fichier, et ne vont au trousseau iCloud que si j’active ce commutateur à part.
Avec le commutateur des Réglages actif, Connecter demande d’abord Touch ID, Face ID ou Optic ID, et en cas d’échec la connexion ne continue pas.
Quand l’hôte principal ne répond pas, l’adresse alternative est essayée avec le même port et les mêmes identifiants, et la session indique qu’elle est passée par là.
Un catalogue d’étiquettes avec le nom et la couleur de votre choix, à partir de Local, Préproduction ou Production si vous voulez, marque chaque connexion avec son environnement.
Chaque étiquette porte une protection, aucune, confirmer ce qui écrit ou lecture, que la garde de la session applique à toute instruction qui écrit, quel que soit l’outil qui l’envoie.
Avec ce commutateur actif, changer la base active sur une connexion coupée rouvre la session entière, tunnel SSH compris, et refait le changement.
Propose mots-clés, fonctions, bases, tables et colonnes de la session pendant que je tape, avec le vocabulaire de son dialecte.
Souligne chaînes, commentaires et parenthèses non fermés pendant que je tape, et signale une espace pleine chasse, sans rien envoyer au serveur.
Réindente le SQL de l'éditeur avec le dialecte de la session.
Bloque les instructions qui modifient données, structure ou privilèges jusqu'à ce que je le désactive. Il est activé par défaut.
Construit une clause WHERE pour une table à partir de ses colonnes, opérateurs et valeurs, sans l'écrire à la main.
Écrit la jointure entre les tables du plan de travail à partir des clés étrangères que déclare le serveur, et là où il n'y en a pas, ajoute la table en CROSS JOIN avec un commentaire.
Renomme un alias, une CTE ou une variable et toutes ses références dans le script.
Va directement à toute table, vue ou routine du schéma actif en tapant une partie de son nom.
La première fois que vous l'ouvrez connecté à un moteur, j'ajoute les extraits d'exemple de ce moteur, une fois par moteur.
Affiche le DDL d'une table, vue, routine ou d'un trigger quand le pointeur s'arrête sur son nom.
Affiche la fiche de la fonction du moteur sous le curseur, avec sa signature et un exemple qui s'exécute sur ce moteur.
Modifie une valeur longue, JSON, binaire ou spatiale dans une feuille avec des onglets texte, arbre, hex, Base64 et image.
Exécute le script instruction par instruction avec des commandes lecture, pause et pas à pas.
Ouvre un panneau façon terminal avec invite et historique propre pour exécuter du SQL de façon interactive.
Dessine le résultat en graphique à barres, en courbes ou en secteurs, en choisissant la colonne d'étiquette et celle de valeur.
Connecte une seconde base et exécute chaque requête sur les deux, en affichant les deux résultats côte à côte avec les différences marquées cellule par cellule.
Réordonne les groupes de boutons des barres de l'éditeur, des résultats et principale, et les rétablit.
Je saisis un texte et j’appuie sur Rechercher, et toutes les colonnes de texte des tables cochées sont parcourues, avec l’avancement par table et un total des occurrences.
Dessine la colonne spatiale du résultat sur une carte, et déplace, ajoute ou vide une géométrie en proposant l'UPDATE avant de l'appliquer.
Dans la feuille de sortie je masque, réordonne et renomme les colonnes et je donne à chacune un format et un alignement, sans réécrire la requête.
Dans une feuille je déclare chaque paramètre avec nom, type, libellé, s’il est obligatoire et sa valeur par défaut, et elle me propose les marqueurs que la requête utilise déjà pour les ajouter avec le nom exact.
Avant le SELECT final je peux fixer des variables de session et construire et remplir des tables temporaires, le tout sur une connexion ; ce qui sort de cette liste fermée est refusé avec son numéro d’instruction avant toute exécution, et les temporaires sont supprimées à la fin.
J’exporte ce que déclare la sortie en CSV, TSV, JSON, XML, Excel, HTML, Markdown, texte ou un PDF paginé, toujours par le panneau d’enregistrement du système.
Je programme un rapport quotidien, hebdomadaire, en jours ouvrés, mensuel ou toutes les N heures ; il s’exécute même app fermée là où le système le permet, se rattrape une fois si son heure est passée sans qu’il ait pu s’exécuter, utilise la valeur par défaut de chaque paramètre et note une exécution ignorée avec son motif.
Chaque exécution laisse sa ligne avec état, déclencheur, paramètres, lignes, durée, appareil et adresse ; je la filtre, la cherche, la copie, la supprime ou je vide tout, elle reste sur cet appareil et les lignes de plus de 180 jours sont supprimées.
Affiche dans le panneau inférieur le DDL que renvoie le serveur pour l'objet choisi, avec coloration syntaxique.
Copie le script complet qui transforme la source en cible, avec les tables d'abord, les clés étrangères dans leur propre bloc et les autres objets triés par dépendance, pour l'exécuter dans l'éditeur SQL.
Liste les changements de structure (CREATE, ALTER, DROP) exécutés depuis Calíope, avec quand et où.
Crée chaque objet coché dans la destination sur une connexion, avec la progression et un arrêt entre un objet et le suivant, écrit une ligne de journal par objet et crée les clés étrangères à la fin.
Crée ou remplace une procédure ou une fonction depuis un formulaire avec ses paramètres, son type de retour, ses options et son corps, et affiche le DDL qui sera exécuté.
Affiche, avec la coloration syntaxique, le CREATE TABLE ou l'ALTER TABLE que produisent mes modifications, suit chaque modification et indique dans un commentaire ce que le moteur ne peut pas faire.
Reconstruit ou compacte chaque table cochée avec l'opération propre au serveur et indique ce qu'il a fait.
Montre chaque portée comme une carte avec ses privilèges groupés selon ce qu’ils permettent, un interrupteur ALL PRIVILEGES et WITH GRANT OPTION, et à l’enregistrement exécute les REVOKE et GRANT nécessaires, avec les refus du serveur à côté du bouton.
Lit le plan de la requête sélectionnée, repère les parcours complets qui filtrent sur une colonne et propose le CREATE INDEX à copier ou insérer.
Crée ou reconstruit un index sur la table choisie avec son type, sa méthode et ses colonnes ordonnées, et affiche le DDL qui sera exécuté.
Calcule les statistiques d'une colonne du résultat : minimum, maximum, moyenne, NULL, valeurs distinctes et les plus fréquentes.
Dessine chaque table de base de la base choisie comme un nœud avec ses colonnes, ses types et le glyphe de sa clé, reliées par les clés étrangères que déclare le serveur, et se recharge quand je choisis une autre base ici ou dans l'arbre de schéma.
Dessine chaque document comme une carte avec son _id et son nombre de champs, et chaque champ avec sa clé, sa valeur et son type, en dépliant documents et tableaux imbriqués.
Le crayon ouvre le document entier en JSON étendu, Formater le réindente et vérifie qu'il se lit, et l'enregistrement le remplace sur le serveur par son _id.
En mode Agrégation j'écris le pipeline entier comme une liste d'étapes, et un pipeline qui n'est pas une liste, ou une étape qui n'est pas un document, est détecté avant tout envoi.
Nouvel index ouvre une feuille avec le nom, les clés écrites comme un document, les interrupteurs sans doublons, clairsemé, expiration et masqué au planificateur, un filtre partiel facultatif et une collation avec sa force, et si le serveur le refuse son message reste dans la feuille ouverte.
Opérations liste chaque opération en cours avec son type, son espace de noms, les secondes écoulées et la connexion d’où elle vient, et signale celles qui attendent un verrou.
Exécuter (⌘↩) envoie le document tel quel et la réponse arrive sous forme d'arbre, repliée à chaque fois ; je peux ainsi demander des statistiques, valider une collection, changer un paramètre du serveur ou poser un validateur sans ouvrir mongosh.
La liste montre les 200 dernières opérations de system.profile, de la plus récente à la plus ancienne, avec l’heure, l’opération, l’espace de noms et les millisecondes et, quand le serveur les note, le plan, les documents et les clés examinés, les documents renvoyés et le client ; le pied indique quand le lot a atteint son plafond.
Je demande les clés au serveur avec SCAN, par lots et jamais avec KEYS, et le pied indique combien j’en ai parcouru et si le parcours est terminé.
J’affiche la valeur selon son type et je lis une grande valeur par morceaux avec un bouton pour le suivant, en indiquant toujours combien sur combien est à l’écran.
Analyser parcourt les clés de la base avec SCAN, mesure chacune avec MEMORY USAGE et additionne ce qui a été mesuré par préfixe, en découpant les noms avec le même séparateur que l’explorateur de clés.
J’affiche used_memory avec sa limite maxmemory et le pourcentage, ou l’absence de limite, ainsi que la politique d’éviction et le pic.
KEYS, MONITOR, les abonnements, SHUTDOWN, DEBUG, les changements de protocole, SELECT et les transactions ne sont pas envoyés : la sortie donne le motif de chacun, et dessous Ce qu’il ne faut pas faire ouvre la rubrique du Manuel du DBA.
J’affiche ce que le serveur a noté : quand cela a commencé selon l’horloge du serveur, avec son fuseau, combien de temps cela a duré, la commande sur une ligne avec un AUTH masqué, et le client quand le serveur l’envoie.
Chaque connexion ouverte affiche son nom, son id, son adresse, le temps connecté, le temps inactif, la base, la dernière commande, les drapeaux et la mémoire. Sur le Mac, c’est une grille ; en dehors du Mac, chaque client est une ligne avec ces données étiquetées, empilées aux tailles d’accessibilité.
Diagramme dessine une boîte par nœud, regroupées par fragment : le primaire en haut avec sa plage de slots, une flèche, et ses répliques en dessous avec leur retard. Un nœud qui ne dépend d’aucun primaire connu est placé à part, sans deviner qui il suit.
J’envoie l’instruction avec le niveau de cohérence que vous choisissez, LOCAL_ONE si vous ne le changez pas. Sans sélection, ⌘↩ exécute tout le texte instruction par instruction (un BATCH part entier) ; avec une sélection, seulement celle-ci. Ce qui écrit passe d’abord par la garde de l’étiquette de la session, et une écriture indique qu’elle a été appliquée : CQL ne compte pas les lignes. Si le serveur répond par une erreur qu’explique le Manuel du DBA, Voir la solution ouvre son chapitre : la cohérence pour Unavailable ou un délai dépassé, les rôles et permissions pour Unauthorized, les erreurs fréquentes pour les autres qu’il couvre, syntaxe comprise.
Avec Tracer activé, le serveur enregistre la trace de l’instruction et j’affiche son identifiant, qui l’ouvre dans Traces.
J’affiche les requêtes lentes les plus récentes notées par ScyllaDB, avec leur durée, tables, utilisateur et nœud, et j’ouvre la trace de chacune.
Depuis les lignes d’une table j’insère une ligne, je modifie ses colonnes régulières ou je la supprime, toujours par la clé entière, avec une transaction légère qui dit si elle a été appliquée, et par le garde de l’étiquette de la session.
J’affiche chaque nœud avec son centre de données, son rack, son état, sa version et ses jetons, et je dis s’ils s’accordent tous sur le schéma.
Pour les tables de l’utilisateur, j’affiche ce que chacune occupe, ses plus grandes partitions et, dans Cassandra, sa latence de lecture et d’écriture vue par ce nœud.
J’affiche les connexions ouvertes sur le nœud avec adresse, utilisateur, pilote, protocole et TLS, et je marque celle qu’utilise Calíope.
J’accorde une permission sur tous les keyspaces, un keyspace, une table, tous les rôles, un rôle ou toutes les fonctions, et je révoque une des permissions propres du rôle.
J’envoie votre recherche aux index que vous choisissez, en Query DSL ou en SQL, et en ES|QL sur Elasticsearch ou en PPL sur OpenSearch, et j’affiche les résultats comme documents ou comme tableau.
Sur Elasticsearch, je demande au serveur de traduire votre SQL en Query DSL et je l’ouvre dans le mode Query DSL, avec l’index de son FROM.
J’écris un document en JSON, avec votre _id ou un _id du serveur ; modifier remplace le document entier, et seulement si personne ne l’a changé depuis sa lecture. Supprimer demande d’abord et nomme l’_id. Toute écriture passe par la protection de la session, et en lecture seule je ne la propose pas.
Restaurer… sur un instantané complet ouvre une feuille qui choisit ses index, propose restored_ devant chaque nom et laisse l’état global désactivé ; le serveur refuse de restaurer par-dessus un index ouvert du même nom, et la feuille montre son texte.
J’affiche la santé du cluster avec son glyphe et son nom, combien de nœuds répondent, où sont les shards et pourquoi l’un reste non assigné.
Pour le nœud choisi, j’affiche le tas de la JVM et son maximum, les passages jeunes et anciens du ramasse-miettes, le CPU de la machine et celui du nœud, le disque encore utilisable, et les débits de recherche et d’indexation du dernier intervalle, lus toutes les cinq secondes tant que l’onglet est devant.
Sur une tâche que le serveur marque annulable, je lui demande de l’annuler après une confirmation qui nomme l’action et le nœud ; une tâche déjà terminée le dit, et les tâches persistantes du cluster et la liste elle-même ne sont pas proposées.
Je liste vos clés d’API en vigueur, j’en crée une avec un nom et une expiration et je l’affiche une seule fois avec un bouton pour copier, et j’en invalide une après une confirmation.
J'ouvre un fichier de base de données local sans aucun serveur, y compris quand il arrive depuis l'extérieur de l'app, et je le marque en lecture seule quand il ne peut pas être modifié.
Je crée une vue par fichier CSV, JSON ou Parquet choisi, lue à la volée à chaque requête sans copier ses données dans la base, et j'ouvre d'abord une base en mémoire si aucune n'est ouverte ; un fichier Parquet ouvert depuis le Finder ou partagé depuis l'app Fichiers arrive aussi ici, avec sa requête écrite dans Exécuter du SQL.
Montre un fichier local interprété selon son extension sans rien modifier, enregistrer ni exécuter, et s’ouvre même sans serveur connecté.
Le Coup d’œil du système affiche une base SQLite ou DuckDB, un fichier Parquet et, sur le Mac, un TSV sous forme de tables avec leurs 20 premières lignes, sans ouvrir Calíope et sans rien écrire à côté du fichier.
Le modèle de langage du système répond sur l'appareil lui-même, sans clé et sans que la question en sorte, et n'est proposé que là où le système le dit disponible.
Parle à un serveur Ollama à l'adresse que j'écris —ce Mac ou un de mon réseau—, sans clé, et le dit quand personne n'y répond ou que l'adresse n'est pas valide.
Le panneau de réglages choisit entre OpenAI, Google Gemini, Anthropic Claude, Apple Intelligence et Ollama, et n'affiche que ce dont le fournisseur choisi a besoin : la clé pour ceux du cloud, conservée dans le trousseau.
Avec l'interrupteur activé et une base choisie dans l'en-tête, les noms de ses tables, colonnes et clés étrangères voyagent avec la question —jamais de lignes—, et le panneau indique lequel des trois états s'applique.
Le micro transcrit la question sur l'appareil lui-même, dans une langue que je peux choisir à côté, et indique quand le modèle de cette langue doit d'abord être téléchargé.
Un panneau latéral conserve chaque conversation dès sa première question, avec une recherche dans tous les échanges, pour la reprendre, la copier ou la supprimer une à une ou toutes à la fois, jusqu'aux 200 plus récentes.
Un interrupteur des Réglages démarre ou arrête le serveur MCP sur-le-champ ; il est éteint au départ et, tant qu’il reste allumé, redémarre avec Calíope.
Avant de toucher le serveur, run_query refuse tout ce qui n’est pas une instruction de lecture, ainsi que SELECT … FOR UPDATE et LOCK IN SHARE MODE.
Vide les objets cochés dans un fichier .sql ou .sql.gz en arrière-plan, objet par objet et avec une mémoire bornée, avec un journal, une barre de progression, le temps restant estimé et un bouton Annuler qui efface le fichier partiel.
Donne à une sauvegarde son nom, sa connexion (obligatoire pour une nouvelle), sa fréquence (quotidienne, hebdomadaire, jours ouvrés, mensuelle, toutes les N heures ou à la demande) avec son heure, et le dossier de destination choisi avec une autorisation persistante.
Ne garde que les N derniers fichiers de chaque sauvegarde planifiée dans son dossier, de 1 à 30 ou tous, et supprime les plus anciens après chaque exécution.
Exécute un fichier .sql ou .sql.gz sur le serveur dans une session, après un résumé avec les instructions trouvées, les bases touchées et un avertissement s'il supprime des objets, et s'arrête à la première erreur en nommant l'instruction qui a échoué ; pendant ce temps, il dit combien d'instructions il a exécutées et sur quelle table il en est, et à la fin il laisse un message du système et, avec l'app en arrière-plan, une notification.
Importe un fichier CSV, JSON ou Excel dans une table en trois étapes, en associant les colonnes et en choisissant le mode d'insertion.
Garde dans un fichier sur le disque chaque instruction que j'exécute, de cette session et des précédentes, avec son numéro, sa date, sa connexion, son état, l'instruction et ce que le serveur a répondu.
Partage le journal entre mes appareils via iCloud quand je l'active avec le bouton du nuage, en prévenant que les instructions voyagent telles qu'écrites.
« Synchroniser Calíope avec iCloud » envoie dans iCloud mes connexions, les onglets de l’éditeur, la surveillance, les rapports, les fragments et les préférences après avoir demandé, et la désactiver demande aussi.
« Exporter… » écrit un fichier JSON avec ce que je choisis —connexions, état de l’éditeur, préférences, historique— et n’y met les mots de passe que si je les coche, chiffrés avec une clé que je tape.
Sur un écran étroit, les premiers outils de mon ordre vont dans la barre système en bas, et le reste sous « Plus ».
Calíope sur la montre lit dans iCloud les messages que publient vos appareils, avec une liste et un détail, fonctionne sans iPhone à proximité et n’écrit rien nulle part.
Calíope sur l’Apple TV affiche en tuiles les serveurs que publient vos appareils, avec un résumé par gravité et chaque état avec sa forme, et n’ouvre aucune connexion ni n’exécute aucune requête.
Sur Apple Vision Pro, le navigateur d’outils, les onglets ouverts et la barre de chaque outil flottent hors de la fenêtre dans leur propre verre, et toute la fenêtre reste au contenu.
Sur Apple Vision Pro, ouvre le diagramme dans un espace immersif autour de vous, la fenêtre de Calíope restant visible, et le ferme depuis le même bouton. Chaque table est une carte avec ses colonnes et ses clés, et chaque schéma a sa couche, derrière la précédente. Chaque clé étrangère est une ligne qui relie sa colonne sur une carte à sa colonne sur l’autre, et celle qui va d’un schéma à un autre traverse d’une couche à la suivante. Enregistrer la disposition garde la disposition 3D sur cet appareil, une par base (elle n’est pas synchronisée), et l’espace s’ouvre avec elle la fois suivante ; ce qui n’a pas de place enregistrée vient du diagramme 2D. « + DB » avec l’espace ouvert ajoute sa couche sans le fermer, et l’espace se ferme tout seul quand sa session se déconnecte ou se ferme, ce que l’onglet indique ; l’ouvrir depuis une autre session ferme d’abord celui de cette session. Pendant sa construction, l’onglet et le panneau de l’espace affichent « Chargement de 120 tables… » avec le temps écoulé. Avec beaucoup de tables, les cartes s’empilent en rangées pour qu’aucune n’en cache une autre, et au-delà de 200 tables l’espace s’ouvre sans lignes et ne montre que celles de la carte sélectionnée. Les cartes et les panneaux grandissent avec la taille du texte, et l’empilement suit ; VoiceOver lit chaque carte comme sa table, sa base, son nombre de colonnes et de relations, dit laquelle est sélectionnée et lesquelles y sont liées, et lit chaque colonne avec son type complet et sa clé.
Choisit quelle connexion enregistrée héberge l'historique et y crée son schéma et ses tables, en indiquant si cela a fonctionné.
Dessine le plan que le serveur donne pour la requête, sans l'exécuter, sous forme d'arbre de cartes avec l'objet, le type d'accès, les lignes estimées et le détail qu'ajoute le moteur.
Décompose la dernière requête en phases internes du serveur, avec le temps de chacune.
Liste les exécutions enregistrées par le serveur, de la plus lente à la moins lente, avec heure, utilisateur, base, durée et lignes, plus les colonnes que publie ce moteur.
Depuis le menu d'une ligne, termine la connexion entière ou annule seulement sa requête en cours après me l'avoir demandé, et dit quand le serveur refuse et pourquoi.
Montre quatre cartes du serveur auquel je suis connecté : le thread IO et le thread SQL avec le mot que donne le serveur, le retard en secondes coloré selon le seuil (« Sans donnée » quand le serveur n'a pas de chiffre) et le serveur source qu'il lit.
Je nomme le groupe et je choisis, parmi mes connexions enregistrées, le primaire et ses répliques dans l'ordre où je veux les voir, avec son intervalle de sondage. Ne sont proposées que les connexions dont l'outil sait sonder la réplication, et il en faut au moins deux.
Affiche chaque événement avec son type, sa position de début et de fin, sa classe et le champ Info, que je peux sélectionner et copier.
Carte en courbe avec le rythme des instructions exécutées par le serveur, ou des transactions là où le moteur compte celles-ci, chacune sous son propre nom.
L'onglet Information réunit ce qui identifie le serveur et ma connexion : version, hôte, port, répertoire de données, jeu de caractères et collation, limite de connexions, et l'id et l'utilisateur de ma connexion.
Exécute la requête N fois et donne le temps minimum, moyen et maximum.
La cloche ouvre Alertes du serveur, où l'on active les notifications système et fixe les seuils de connexions face au maximum, de taux de succès du cache et de retard de réplication.
Liste chaque règle avec sa requête, sa colonne, sa condition, la valeur mesurée dans cette session et son état, et le pied compte combien sont en alerte.
Un panneau montre ce qui tourne dans chaque session, les modes actifs et les dernières opérations terminées avec la façon dont chacune s’est achevée (un échec, avec la raison du serveur), avec Aller à et, quand l’opération le permet, Arrêter.
Quand l’erreur a sa propre rubrique d’aide, mène directement de la ligne ou de son détail à cette rubrique.
Affiche les connexions, le débit, la durée de fonctionnement, les threads, les requêtes lentes et le taux de cache d’un serveur sur le bureau, l’écran d’accueil, l’écran verrouillé ou un mur, dans les tailles propres à chaque endroit.
Affiche le pire état des serveurs que surveille le moniteur de santé et combien demandent de l’attention, en trois tailles, et ouvre le moniteur de santé quand on le touche.
Chaque widget placé a son paramètre Serveur, rempli par un catalogue minimal de profils que Calíope écrit dans le conteneur partagé, si bien que plusieurs widgets peuvent suivre des serveurs différents.
Toucher ou cliquer sur le widget des métriques ouvre Calíope sur le tableau de bord du serveur choisi par ce widget, en se connectant d’abord s’il n’y avait pas de session.
Un badge vert, rouge ou ambre, chacun avec son symbole, dit si la donnée est actuelle, si le serveur a cessé de répondre ou si plus de trois fois la cadence d’écriture s’est écoulée, avec un plancher de 90 secondes.
Réglages › Widget garde à jour un profil épinglé sans le tableau de bord ouvert, toutes les 30 secondes ou toutes les 1, 5 ou 15 minutes, en ouvrant une brève connexion à chaque tour.
Les quatre actions sont prêtes à l’emploi, sans construire de raccourci : Siri reconnaît leurs phrases dans chaque langue, et Spotlight et l’app Raccourcis les suggèrent.
Charge un fichier .sql dans l’éditeur SQL, depuis le menu Fichier avec ⌘O ou en ouvrant le fichier depuis le Finder ou Fichiers.
Place un cylindre dans la barre des menus de macOS avec Ouvrir la fenêtre, qui ramène Calíope au premier plan, et Quitter.
Chaque fois que j’ouvre un outil, au plus une bulle d’aide apparaît à côté de la commande qu’elle explique, dans un ordre qui met d’abord celles qui évitent une erreur ; une fois affichée, elle est consommée.
Répond au clic, au double clic, à l’appui long ou au clic droit sur une cellule ou un en-tête de colonne par sa propre action : voir la valeur, générer l’UPDATE, le menu de la cellule, trier ou redimensionner.
Je capture la fenêtre de Calíope à une taille prédéfinie ou personnalisée, en ajustant ou remplissant un autre rapport, avec minuteur, et je l’enregistre ou la copie.
La première fois qu’une nouvelle version s’ouvre, la fenêtre des nouveautés liste ce qu’elle apporte et les versions précédentes ; sur le Mac elle se rouvre depuis le menu Aide, et partout depuis sa rubrique d’aide.
Ouvre dans le navigateur du système, dans la langue de l’app, la page que j’ai faite pour qui arrive depuis elle —les nouveautés, l’Aide, le manuel du DBA, des données pour s’exercer, les vidéos et le blog, avec une recherche dans l’Aide, le manuel et le blog—, sans ouvrir d’onglet et sans envoyer la version.
Général indique dans laquelle des six langues est Calíope et m’emmène au réglage du système où je la choisis par application, car il n’y a pas de sélecteur dans l’app.
« Supprimer toutes mes données » demande d’abord, efface ce que Calíope garde sur cet appareil, dans le trousseau et dans iCloud, puis montre lieu par lieu ce qui a été supprimé et ce qui a échoué.
N’enregistre jamais de mot de passe, même tronqué, et désigne le serveur par l’alias de son profil plutôt que par hôte, port et utilisateur.
Calíope ne note rien tant que je n’active pas « Conserver un rapport d'utilisation sur cet appareil », puis compte événements, erreurs et ouvertures d’outils dans un fichier qui reste ici et que je peux vider.
Chaque bloc de code porte en pied qu'il a été généré par une IA et doit être vérifié avant exécution, et le nom du fournisseur auquel il a été envoyé.
Commence l’essai de 30 jours avec tout débloqué sur tous les appareils du même identifiant Apple ; il ne demande pas de carte, ne devient jamais un prélèvement et ne peut commencer qu’une fois par identifiant Apple, et un compte qui a déjà l’essai de 60 jours n’en commence pas un autre.
L’écran d’achat énumère ce que l’achat débloque —les moteurs, les connexions illimitées, SSH et TLS, l’éditeur, l’assistant, les sauvegardes, la supervision et les diagrammes— avec le « ? » qui ouvre son sujet d’aide.
Toutes les capacités de cette page sont incluses dans l'achat unique. Trente jours gratuits, puis un achat unique et c'est à vous pour toujours.