Setup & Outils
HUD (heads-up display)
Pour afficher le Metal Performance HUD d'Apple, l'outil de suivi des performances intégré à macOS, iOS & iPadOS qui permet d'analyser en temps réel l'utilisation du GPU et les données graphiques, rendez-vous dans Xcode uniquement, trouves Edit Scheme… pour la plateforme que tu veux tester comme sur cette capture d'écran :
Ensuite Run → Diagnostics → sélectionne Show Graphics Overview & Log
Commandes shell pour personnaliser ton environnement
Créer des fichiers avec header personnalisé!
En tant que bon développeur, tu aimes simplifier/automatiser les choses.
Dans Xcode :
Voir editing source files in xcode
Dans le Terminal :
Configuration .zshrc
cd && vim .zshrc
Celui-ci est précédé d'un point car il s'agit d'un fichier caché, nous en croisseront d'autres tels que .vimrc, .env, .git ou encore .gitignore
Ajoute ça dans ton fichier ~/.zshrc via vim (éditeur de texte dans le terminal) :
~/ = la racine de ton Mac
PROMPT='%F{blue}%n%f %F{cyan}%~%f %#'
ZSH_THEME="agnoster"
export CLICOLOR=1 # Active la coloration des commandes
export LSCOLORS=ExFxBxDxCxegedabagacad # Définit les couleurs pour 'ls'
E_C()
{
local user=$(whoami)
local filename=$1
local current_date=$(date +"%d/%m/%Y %H:%M:%S")
local basefilename=$(basename "$filename")
local len=${#basefilename}
local tabs=" "
if [ $len -lt 6 ]; then tabs=" "
elif [ $len -lt 10 ]; then tabs=" "
elif [ $len -lt 14 ]; then tabs=" "
elif [ $len -lt 18 ]; then tabs=" "
else tabs=" "
fi
cat > "$filename" << EOF
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* + + */
/* File: $basefilename +++ +++$tabs**/
/* + + */
/* By: $user ** + + **/
/* + + */
/* Created: $current_date + + + + + + * ****/
/* */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
EOF
echo "Fichier $filename créé avec entête !"
printf "\e[0;92mAdmirez comment il vous regarde \e[1;33m*_*\e[0m\n"
ls -la
vim "$filename"
}
alias → créer la commande zsh "ftpp"
# Usage : ftpp main.cpp
# effect : clang++ -std=c++17 -Wall -Wextra -Werror -O2 -o unNouveauSuperProgrammeExtraOrdinaire main.cpp
local → créer la variable user et lui donne la valeur de l'utilitaire 'whoami'.
# Usage : On l'utilise dans notre fonction () E_C, récupérée grâce au '$'
PROMPT → définit l’apparence du prompt Zsh
%n : nom de l’utilisateur %~ : dossier courant (raccourci avec ~) %# : # si root, % sinon %F{color} / %f : début/fin de couleur (voir si j'ai ça dans Makefile full)ZSH_THEME → définit un thème visuel (voir ohmyz.sh sur le web)
export → rend une variable disponible pour tous les programmes lancés depuis ton shell
E_C → ta nouvelle fonction/fonctionnalité shell
# Usage : E_C fichieracreer.cpp
>> EOF → écris dans le fichier → bloc multi-lignes (heredoc())
Alias utiles pour ce projet
# Dans ~/.zshrc
# Compiler un .metal rapidement pour tester la syntaxe
metalcheck()
{
xcrun -sdk macosx metal -c "$1" -o /tmp/test.air && echo "✓ OK" || echo "✗ Erreur"
}
# Usage
metalcheck 4D.metal
alias ftclang='clang -Wall -Wextra -Werror'
alias ftpp='clang++ -std=c++17 -Wall -Wextra -Werror -O2 -o unNouveauSuperProgrammeExtraOrdinaire'
alias ftdsa='find . -name ".DS_Store" -print && find . -name "a.out" -print' #-delete
alias nyan='curl -s https://ascii.live/nyan'
alias earth='curl -s https://ascii.live/earth'
Configuration .vimrc
Si tu veux personnaliser ton vim comme dans le cours :
# Ajoute le même style à ton éditor VIM ~/.vimrc : → cd && vim .vimrc
set number
set relativenumber
syntax on
set smartindent
set ruler
set guifont=Fira\ Code\ Retina\ 12
set showmatch
set wildmenu
if has("gui_running")
set guifont=Menlo\ Regular:h14
endif
set nocompatible
set laststatus=2
set mouse=a
set statusline=%F%m%r%h%w\ [Pos=%l,%v][%p%%]\ [Buffer=%n]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
hi StatusLine ctermfg=White ctermbg=DarkGray cterm=NONE
set backspace=indent,eol,start
set clipboard^=unnamed,unnamedplus
L'icon de ton application.
Pour créer ton icon d'application, il te faut une image de 72 PPI (pixels par pouce) au maximum (prévue pour les écrans) et une résolution de ~1024x1024 (toujours carré) c'est largement suffisant. Je te conseille le format de pixel dans l'ordre : RGB, Adobe RGB, P3, Rect. 2020, …
Tu peux ensuite utiliser ce script qui va générer les différentes tailles possibles (App Store, Dock, …) et créer le fichier à l'extension .icns (Apple icon image).
Il doit être placé dans le même dossier que ton fichier Icon.png. Pas de canal alpha.
#!/bin/bash
mkdir -p AppIcon.iconset
echo "Generating icon sizes.."
sips -z 16 16 Icon.png --out AppIcon.iconset/icon_16x16.png > /dev/null 2>&1
sips -z 32 32 Icon.png --out AppIcon.iconset/icon_16x16@2x.png > /dev/null 2>&1
sips -z 32 32 Icon.png --out AppIcon.iconset/icon_32x32.png > /dev/null 2>&1
sips -z 64 64 Icon.png --out AppIcon.iconset/icon_32x32@2x.png > /dev/null 2>&1
sips -z 128 128 Icon.png --out AppIcon.iconset/icon_128x128.png > /dev/null 2>&1
sips -z 256 256 Icon.png --out AppIcon.iconset/icon_128x128@2x.png > /dev/null 2>&1
sips -z 256 256 Icon.png --out AppIcon.iconset/icon_256x256.png > /dev/null 2>&1
sips -z 512 512 Icon.png --out AppIcon.iconset/icon_256x256@2x.png > /dev/null 2>&1
sips -z 512 512 Icon.png --out AppIcon.iconset/icon_512x512.png > /dev/null 2>&1
sips -z 1024 1024 Icon.png --out AppIcon.iconset/icon_512x512@2x.png > /dev/null 2>&1
echo "Creating .icns file.."
iconutil -c icns AppIcon.iconset
rm -rf AppIcon.iconset
echo "AppIcon.icns created successfully!"
# Usage (terminal) dans ton dossier contenant le .png
user ~/Application/macOS % ./create_icns.sh
Tu peux le mettre dans ton dossier Application/macOS/ et vérifier que le nom (ici AppIcon.icns) corresponde dans ton/tes .plist (Icon file)
C'est juste une image.
Les arguments de ton bundle application.
Exemple avec le sélecteur d'arrêt de ta boucle d'application :
/// Objective-C++ — AppViewController.mm — update:18/05/26 — ApplicationController
- (void)applicationDidFinishLaunching:(NSNotification*)notification
{
[self createWindow];
[self createView];
[self evaluateCommandLine]; // on appelle notre fonction lorsque l'app a terminé son lancement
}
/// Objective-C++ — AppViewController.mm — update:18/05/26 — avant: drawInMTKView
- (void)evaluateCommandLine // si le bundle .app contient un argument (pas les .exe)
{
NSArray<NSString *>* args = [[NSProcessInfo processInfo] arguments];
BOOL exitAfterOneFrame = [args containsObject:@"--auto-close"];
if (exitAfterOneFrame)
{
NSLog(@"Automatically terminating in 2 hours...");
[[NSApplication sharedApplication] performSelector:@selector(terminate:)
withObject:self // AppKit / NSApplication / terminate:
afterDelay:23]; // temps en seconde
}
}
# Ouvrir l'application avec argument(s)
open LearnMSL.app --args "--auto-close" "Hello"
1. Elle permet les calculs scientifiques.
2. Tu peux l'utiliser comme calculatrice "Programmer" afin d'utiliser les opérations XOR et calculer en base 8, 10, 16, etc, …
3. Dans "Convert", tu peux absolument tout convertir : angle, area, data, force, length, speed, presure, time, …
Recommandations AI
Si tu souhaites être aidé par l'IA, je te recommande fortement d'utiliser Claude pour MSL.