Bash
if [[ "$OSTYPE" == "darwin"* ]]; then
say "Starting the long process now."
fi
Error handling
# Function to handle errors in a bash script
error_handler() {
ERROR_MESSAGE="An error occurred during script execution."
echo "$ERROR_MESSAGE"
if [[ "$OSTYPE" == "darwin"* ]]; then
say "$ERROR_MESSAGE"
fi
exit 1
}
# Set trap to catch errors
trap 'error_handler' ERR
Python
import platform
import subprocess
(...)
def say(text):
if platform.system() == "Darwin": # Check if the system is macOS
subprocess.run(["say", text])
else:
print(text) # Fallback for non-macOS systems
(...)
say("25% completed")
----------
Ezzel a módszerrel súlyos tíz-perceket, és elkerülhető káromkodásokat lehet megspórolni.
A linkelt videóban a Bash és a Bash error handling van bemutatva.
A Pythonos - meglepő módon - ugyanígy hangzik.
- Hevi blogja
- A hozzászóláshoz be kell jelentkezni
- 412 megtekintés
Hozzászólások
én mondjuk
osascript -e "display notification \"$ERROR_MESSAGE\" with title \"Error\""
parancsot használnék
4 és fél éve csak vim-et használok. elsősorban azért, mert még nem jöttem rá, hogy kell kilépni belőle.
- A hozzászóláshoz be kell jelentkezni
Az se rossz, de az nem beszél.
Ez pl. tökéletes, ha a terminál egy másik virtual-desktopon fut, de azért a képernyőt nézed.
A "say" meg akkor jó, ha a script futásakor valami mást csinálsz, képernyő nézés helyett, de azért szeretnél updateket.
- A hozzászóláshoz be kell jelentkezni
A notification azért jó, mert nem pofázik bele a zenébe. :D
- A hozzászóláshoz be kell jelentkezni
Van egy pythonos programom, ami versenymusort tolt le a celfotos programnak, es az idoeredmenyeket meg visszatolti a serverre. Az egyik srac, aki a versenylebonyolitot kezelte kerdezte, hogy miert nem mondja be, amikor feltoltotte az x-edik futamot? Par perc mulva bemondta :D
A pyttsx3 modult hasznaltam, ez platformfuggetlen (legalabbis Linuxon meg Win10 alatt is megy, OSX-et nem tudom).
import pyttsx3
...
self.engine = pyttsx3.init() # ez inicializalja, ugy emlekszem opcionalis parameterekkel
...
self.engine.say(msg) # ez elkuldi az engine-nek a mondanivalot, de itt meg csak osszegyulik
self.engine.runAndWait() # ez meg bemondja.. ugy emlekszem, a multithread-es megoldas nem ment stabilan, de nekem nem kellett feltetlenul (van olyan, ami a hatterben mondja be, es megy tovabb)
Volt egy masik eset, egyik kollegam (CNC kezelo) kerdezte nem lehetne-e megoldani, hogy ha kesz az alkatresz, akkor kuldjon SMS-t neki. Rakerestem, SMS az kicsit korulmenyesebb, de a Gmail-re talaltam egyszeruen hasznalhato Python modult. Vegul mondta, hogy csak hulyeskedett, es leallitott, de szerintem az sem lett volna sok ido (15-20 perc). Ebben az a jo, hogy nem kell, hogy mellette ulj (plusz ha tavoli serveren szamol valamit, akkor is megy).
Voltam egy data engineer tanfolyamon, ott az egyik mentor mondta, hogy o szereti ugy megcsinalni a kodjait, hogy a notebook vegen egy hang jelzi, ha kesz. Ha gyanusan sokaig tart - vagy elakad, akkor rogton tudja, hogy valami baj van. Nala a winsound (ez tudtommal OS-fuggo) volt a megoldas:
import winsound
winsound.Beep(freq, notify_time)
Viszont van platformfuggetlen is, ez hangfile-t tud lejatszani:
from playsound import playsound
playsound('blabla.wav')
Nagyjabol ezeket szoktam hasznalni en is. (ja, es bashbol meg lehet hivni pythont, szoval onnan is megy ugyanez)
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
Én ZSH-t használok, és ahhoz van egy OhMyZsh nevű keretrendszer ami elég okos és elég sokmindent tud, completiontől kezdve sokmindenig. Ebben van egy bgnotify plugin, az gyakorlatilag ha a terminál ablak épp inaktív/nincs fókuszban, akkor küld egy notification-t ha lefutott az adott parancs. Sajnos nem tudom milyen mágia hajtja, így azt sem, hogy macOS alatt megy-e vagy csak Linux alatt.
- A hozzászóláshoz be kell jelentkezni
Mostanaban shellnek a xonsh-t probalgatom. Kicsit olyan, mint ha a pythont meg a basht keverned ossze, lehet python-szeru ciklusokat irni bele, meg shell parancsokat. Notificationt meg nem neztem, de eleg sokat tud.
Nem teljesen ertem, de valamiert itt a hupon az a trend, hogy normalis funkcionalitasu shellek hasznalata helyett az a cel, hogy valami 1970-es evekbeli szaron is fusson ugyanaz a script.
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni