Serie temporale dei dati: Introduzione ai PHP Zmanim

Ringraziamenti

In questo blog, spiego concetti e tecniche legati al modo in cui si calcolano i cosiddetti “tempi ebraici” (zmanim), nonché le tecniche necessarie per utilizzare la libreria PHP Zmanim – una libreria di funzioni che ti permette di calcolare facilmente i tempi ebraici.

La libreria PHPZmanim è mantenuta da Zachary Weixelbaum. Come per molte cose nel mondo tecnologico oggi, PHP Zmanim si basa sulla fondamentale libreria Kosher Java di Eliyahu Hershfeld. Ringrazio molto Zachary ed Eliyahu — non solo per il lavoro che hanno svolto nello sviluppo di quelle librerie, ma anche per il supporto che mi hanno dato mentre imparavo sia le linee guida tecniche che quelle religiose ebraiche (halacha) necessarie per usarle.

Introduzione

“A che ora saranno le preghiere pomeridiane (Mincha) questa settimana?” è una domanda ingannevolmente complessa. È ingannevole perché “preghiere pomeridiane” sembrano auto-esplicative, ma (come per molte cose relative alle regole religiose ebraiche (halacha), è necessaria una vasta quantità di background, commentari e specificità.

NOTA: Se sei già a tuo agio con i concetti di tempo ebraico (zmanim), sentiti libero di saltare alla sezione intitolata “Installazione di PHP Zmanim”. Non sarò offeso né mi farò del male.

È difficile comprendere l’importanza dei calcoli temporali precisi nel giorno, nella settimana e nella vita religiosa ebraica. Ciò influisce su tutto, dall’inizio e alla fine di un digiuno, al momento in cui è troppo tardi (o troppo presto) per dire certe preghiere, fino al momento in cui possedere (figuriamoci mangiare) il pane è proibito.

Per esprimerlo in altro modo, condividerò una citazione di Rabbi Abraham Joshua Heschel nel suo libro “Il Sabato”.

Il significato del Sabato è celebrare il tempo piuttosto che lo spazio. Sei giorni a settimana viviamo sotto la tirannia delle cose dello spazio; nel Sabato cerchiamo di diventare consapevoli della santità del tempo.

Rabbi Abraham Joshua Heschel, “The Sabbath”

Anche con questa spiegazione, alcuni lettori potrebbero ancora chiedersi: “Perché fare un problema così grande? Mi stai dicendo che Dio ti terrà a debito se sei in ritardo di 5 minuti?”

È una domanda valida e merita un momento di discussione perché altrimenti la necessità, figuriamoci l’impatto, di questo blog (e delle tecniche e tecnologie che descrive) si riduce.

No, ovviamente, Dio non se ne interessa. Proprio come il mio allenatore di atletica non “si interessa” se mi riscaldo prima di correre, faccio i miei allenamenti fuori stagione o bevo abbastanza acqua. Ammettiamolo: non importa quanto mi alleni, il mio allenatore non sarà più in salute. Tuttavia, il mio allenatore – che si preoccupa di me oltre la mia prestazione nella prossima gara, vuole che IO mi interessi. Vorrebbero che fossi pienamente coinvolto, solo perché sanno che la mia esperienza sarà più appagante a causa di ciò.

Allo stesso modo, Dio non “si preoccupa”. Ma sappiamo (attraverso i testi della Torah e del Talmud) che Dio vuole che NOI ci preoccupiamo. E così gli studiosi ebrei nei millenni hanno cercato – utilizzando le prove presentate nel testo – di evitare risposte semplici e semplicistiche, e scavare più a fondo per scoprire i dettagli.

Tornando alla domanda in questione: “A che ora si recitano le preghiere pomeridiane?” Per capire questo, dobbiamo prima comprendere cosa definisce “giorno” (rispetto a “notte”); come comprendere quale demarcazione separa “mattina” da “pomeriggio”; come dividere efficacemente il giorno in parti; e molto altro ancora.

Mentre questo blog presenterà alcuni di questi concetti e termini come necessario, non dovrebbe essere considerato esaustivo da nessuna parte della nostra immaginazione.

Non sorprende che i computer abbiano fatto in fretta a calcolare queste ore e ora ci sono una serie di siti web e applicazioni pronte a fare il lavoro per noi. Anche per chi vuole creare i propri programmi per fare questi calcoli, ci sono soluzioni che risparmiano tempo sotto forma di librerie di codice come KosherJava e i suoi numerosi port, tra cui PHP, Swift, .Net, JavaScript, Python, e molti altri.

Eppur, è importante comprendere la teoria che sta dietro gli strumenti. Chiunque voglia creare un sito web o un’app deve essere certo che il suo programma non stia accidentalmente fornendo i tempi sbagliati. Mentre, come accennato in precedenza, nessuno andrà “all’inferno” (per così dire) per pregare all’ora sbagliata, esiste un preciso comandamento:

וְלִפְנֵ֣י עִוֵּ֔ר לֹ֥א תִתֵּ֖ן מִכְשֹׁ֑ל וְיָרֵ֥אתָ מֵּאֱלֹהֶ֖יךָ
“lifnei iver lo titein michshol v’yareita mei-elohecha”
“Non mettere un ostacolo davanti a un cieco”

(Leviticus 19:14)

Una cosa è se un individuo sbaglia per errore. È del tutto diverso fornire informazioni errate che causano a qualcuno (o peggio, A MOLTI) di commettere un errore, credendo che le informazioni che hanno ricevuto (dalla tua app) fossero accurate e affidabili.

I Tempi Base

Con questo in mente, inizieremo con la comprensione dei tempi che sono abbastanza semplici e meno influenzati dalle variazioni nella tradizione ebraica:

  • L’alba (Netz Hachma) è l’antico alba nautica – il momento in cui il bordo superiore del disco del sole tocca l’orizzonte.
  • Il tramonto (Shkia) è l’altra faccia della medaglia giornaliera – il momento in cui il bordo superiore del sole scende appena sotto l’orizzonte.
  • A “seasonal hour” (sha’ah) refers to the even division of daylight, the time between sunrise and sunset. There are always 12 seasonal hours, but they may be longer or shorter than a regular (on your clock) hour because the amount of daylight fluctuates with the season.
    • Si noti che alcune tradizioni calcolano una sha’ah come 12 divisioni del tempo dall’alba (alot hashachar, o semplicemente “alot” quando la luce è visibile sull’orizzonte, ma prima dell’alba stessa) alla notte (tzeis hakochavim, o semplicemente “tzeis”, quando NON è visibile luce sull’orizzonte, dopo il tramonto). Approfondiremo sia l’alba (alot) che la notte (tzeit) più avanti nel blog.
  • I minuti stagionali (sha’ot zmaniyot) sono 1/60 di un’ora stagionale e, proprio come un’ora stagionale, possono essere più grandi o più piccoli di un minuto sul tuo orologio.

Come puoi vedere, l’alba e il tramonto formano il nucleo fondamentale di tutti gli altri calcoli temporali, e un gran numero di importanti momenti ebraici durante il giorno derivano direttamente da quelli. Ad esempio, in alcune tradizioni, troverai:

  • Il sabato inizia venerdì sera, 18 minuti prima del tramonto (shkia)
  • Il sabato termina sabato sera 45 (o 50, o 72) minuti dopo il tramonto (shkia)
  • …e così via.

Calcoli Dove “È Complicato”

Una volta che hai fissato l’alba e il tramonto, il prossimo passo è identificare i due momenti critici dell’alba e della notte. L’alba (Alot haShachar, o semplicemente “Alot”) e la notte (Tzeis hakochavim, o semplicemente “Tzeis”) si riflettono l’un l’altra come l’alba e il tramonto. L’alba è il momento in cui la luce (ma non il sole) è visibile sull’orizzonte. La notte è il momento in cui la luce non è più visibile.

Sfortunatamente, se c’è o non c’è “luce” è altamente soggettivo, e quindi il modo in cui è stato calcolato varia notevolmente.

  • Alcune tradizioni utilizzano un numero fisso di minuti dell’orologio prima dell’alba o dopo il tramonto.
  • Altri utilizzeranno l’astronomia per identificare il momento in cui il sole è sotto l’orizzonte di un numero specifico di gradi.
  • Altri utilizzeranno una formula, come prendere la quantità di luce diurna (dall’alba al tramonto), dividerla in 10 parti uguali e poi sottrarre tale quantità dall’alba o aggiungerla al tramonto.
  • Tuttavia, altri impiegheranno il tempo in cui il sole è sotto l’orizzonte in un giorno “uguale” (ovvero l’equinozio di primavera o d’autunno, quando la quantità di luce solare e di oscurità è esattamente la stessa), calcoleranno la differenza (in minuti di orologio) tra quel tempo e l’alba, normalizzeranno quei minuti rispetto ai “minuti stagionali” (“sha’ot zmaniyot”) per il giorno specifico in questione e, infine, sottrarranno tale quantità dall’alba (o aggiungeranno QUELLA al tramonto) per il giorno in questione.

Sembra confuso? Come dice il titolo di questa sezione, “è complicato”.

Il mio scopo nel descrivere questi metodi non è quello di stabilire un unico calcolo “corretto”, ma piuttosto di aiutarti a capire l’obiettivo finale di ogni tipo di calcolo – e anche per farti capire che ci sono diversi modi in cui diverse tradizioni ebraiche arrivano a ciascun calcolo.

I Tempi Complessi

Una volta che hai l’alba (alot), l’alba (netz), il tramonto (shkia) e la notte (tzeis), diventa possibile calcolare altri tempi quotidiani importanti. Questi includono:

  • L’ora più presto per le preghiere pomeridiane (Mincha Gedola), che spesso viene calcolata come un certo numero di ore stagionali (sha’ah) dopo l’alba o l’alba. Il punto di questo tempo è che è il primo momento in cui si verifica “pomeriggio” (letteralmente, dopo mezzogiorno).
  • L’ora preferibile per le preghiere pomeridiane (Mincha ketana), che viene calcolata come un numero maggiore di ore stagionali (sha’ah) dopo l’alba (netz) o l’alba (alot). Il punto qui è che è più di 3/4 della strada attraverso la giornata, quando è CHIARAMENTE pomeriggio – ma senza il rischio che accidentalmente sia notte (tzeis).
  • L’ultimo momento per le preghiere del pomeriggio (Plag haMincha, o “plag”), che è spesso calcolato come l’intervallo tra il momento migliore per le preghiere del pomeriggio (mincha ketana) e la notte (tzeis).

Sebbene ci siano diversi altri momenti chiave che esamineremo in un altro blog, questi sono sufficienti per iniziare.

Installazione della Libreria PHP Zmanim

Con questi dettagli tecnici risolti, possiamo ora passare a… alcuni dettagli tecnici! Tranne che questa volta sono dettagli TECHNICAL tecnici. (e per quelle persone che hanno saltato dall’introduzione a questa sezione, BENVENUTI! È bello rivedervi!)

PHP Zmanim è una libreria complessa che comprende non solo l’importazione di Kosher Java nel linguaggio PHP ma anche alcuni moduli di supporto come Carbon (uno strumento che facilita le conversioni di date e orari, rendendole più veloci, semplici e precise); Symfony (un framework per la progettazione web); e alcuni altri utilità più piccole.

Il punto è che tutti questi moduli funzionano in sinergia con PHP Zmanim e ne è necessaria l’installazione di tutti affinché qualcosa funzioni. Il modo più semplice per installarli tutti è utilizzare l’utility PHP “composer” che gestisce le dipendenze.

Se è necessario eseguire PHP Zmanim su un server web e non si ha accesso per eseguire installazioni dalla linea di comando, siete ancora fortunati. Copiate semplicemente la directory ./vendor da un’installazione locale, e – con alcune avvertenze – funzionerà.

Quali sono queste avvertenze? La principale è assicurarsi che la versione di PHP supportata dal tuo provider di hosting corrisponda a quella che utilizzi durante l’installazione tramite Composer.

Questo mi porta alla vera e propria istruzione di installazione di Composer. So che non siamo ancora arrivati a programmare nulla, ma impostiamo un directory dove andranno i script. Per questo blog, la chiamerò /phpzmanim_test.

In una finestra di terminale, spostati in quella directory:

cd /php zmanim_test

Ora digita il comando:

composer -V

(nota che è una V maiuscola)

Questo confermerà se Composer è installato o meno. Se non lo è, effettua una rapida ricerca per scoprire il modo migliore per installarlo nel tuo sistema operativo.

Successivamente, digita il comando:
composer require zachweix/php-zmanim

Questo farà due cose:

  1. In primo luogo, creerà il file composer.json nella directory corrente, con le istruzioni che PHP Zmanim dovrebbe essere installato.
  2. In realtà installa PHP Zmanim per te in una directory ./vendor all’interno della directory corrente. Nessun passaggio aggiuntivo necessario.

L’unico altro elemento “Composer” da notare è che se mai avessi bisogno di aggiornare, puoi farlo facilmente andando nella directory /phpzmanim_test (o come l’hai chiamata) e digitando il comando composer update. Questo leggerà le informazioni nel file composer.json e aggiorna tutto ciò che trova lì.

(SPOILER: questo significa che NON dovresti eliminare il file composer.json. Tuttavia, non devi copiarlo sul tuo sito remoto con il resto della tua applicazione se non vuoi farlo.)

Una volta fatto ciò, è necessario includere la seguente riga in ogni script PHP che utilizzerà la libreria PHP Zmanim:

PHP

 

require 'vendor/autoload.php';

Guida introduttiva a PHP Zmanim

Ora che PHP Zmanim è installato, sei pronto per iniziare a scrivere del codice con esso.

Per farlo, creerai prima un oggetto PHP – una raccolta (in realtà un array) di dati che vengono passati in varie funzioni. Questo oggetto contiene sia la data specifica per i tempi che vuoi estrarre sia anche le informazioni di località precise.

Creare un Oggetto con "Zmanim::Create()"

Prima di iniziare, dovrai conoscere alcune cose sulla località in cui chiedi i tempi:

  • La latitudine e la longitudine.
  • Il fuso orario, formattato utilizzando il formato database tz (esempio: "America/New_York").
  • L’altitudine di quella località, se decidi di utilizzarla. (SPOILER: molto raramente l’altitudine influenza questi calcoli.)
  • L’anno, il mese e il giorno dei tempi che calcolerai.

La formattazione per creare il tuo oggetto è la seguente:

PHP

 

$VARNAME = Zmanim::create(YEAR, MONTH, DAY, "NAME OF LOCATION", LATITUDE, LONGITUDE, ELEVATION, "TIME ZONE");

Ecco un esempio specifico:

PHP

 

$zmanim = Zmanim::create(2019, 2, 21, "New York City", 40.850519, -73.929214, 200, "America/New_York");

Come appare come script con alcune variabili al posto dell’input letterale:

PHP

 

<?php
require 'vendor/autoload.php';
use PhpZmanim\Zmanim;
use PhpZmanim\Calendar\ComplexZmanimCalendar;
use PhpZmanim\Geo\GeoLocation;

$getdate = date('Y-m-d');
$getyear = date('Y', strtotime($getdate));
$getmonth = date('m', strtotime($getdate));
$getday = date('d', strtotime($getdate));

$locname = "Beit Knesset Chochmat Shlomo, Beachwood, OH";
$lat = 41.4939407;
$long = -81.516709;
$elev = 0;
$tz = 'America/New_York';

$zmanim = Zmanim::create($getyear, $getmonth, $getday, $locname, $lat, $long, $elev, $tz);

Con quel codice in posizione, hai un oggetto per la data di oggi per la località specificata. Puoi persino stamparlo utilizzando la funzione print_r() di PHP:

PHP

 

print_r($zmanim);

Il che dovrebbe darti un output che assomiglia a qualcosa del genere:

PHP

 

PhpZmanim\Zmanim Object
(
    [calendar:PhpZmanim\Calendar\AstronomicalCalendar:private] => Carbon\Carbon Object
        (
            [endOfTime:protected] => 
            [startOfTime:protected] => 
            [constructedObjectId:protected] => 00000000000000080000000000000000
            [localMonthsOverflow:protected] => 
            [localYearsOverflow:protected] => 
            [localStrictModeEnabled:protected] => 
            [localHumanDiffOptions:protected] => 
            [localToStringFormat:protected] => 
            [localSerializer:protected] => 
            [localMacros:protected] => 
            [localGenericMacros:protected] => 
            [localFormatFunction:protected] => 
            [localTranslator:protected] => 
            [dumpProperties:protected] => Array
                (
                    [0] => date
                    [1] => timezone_type
                    [2] => timezone
                )

(ci sono altri dettagli, ma hai capito l’idea).

Ottenere il Primo Tempo Reale – Alba (Netz HaHachma)

Una volta che hai creato un oggetto, utilizzarlo per ottenere specifiche ore attraverso PHP Zmanim è quasi anti-climatico. Ottenere l’alba è così semplice come:

PHP

 

$sunrise = $zmanim->sunrise;

Se non sei familiare con questo concetto o non l’hai mai usato prima, il -> indica che stai interrogando un oggetto (ancora una volta, una raccolta di elementi dati) o utilizzando un metodo incorporato

Questo restituirà qualcosa che assomiglia a questo:

PHP

 

2024-12-20 07:48:52

Per chi segue, il codice completo finora assomiglia a questo:

PHP

 

sunrise;
echo "$sunrise\n";
?>

Sommario

C’è molto altro da coprire in PHP Zmanim, che ho intenzione di fare nei prossimi settimane. Ma questo dovrebbe almeno farti iniziare a costruire uno script o un sito web basato su PHP e visualizzare orari precisi per momenti ebraici.

Come sempre, accolgo domande, correzioni e complimenti nei commenti qui sotto.

Source:
https://dzone.com/articles/time-data-series-getting-started-with-php-zmanim