Tasks
, (*1)
Laravel Scheduling
https://laravel.com/docs/5.6/scheduling, (*2)
Al fitxer App\Console\Kernel es pot configurar a la funció shcedule., (*3)
Un cop configurar s'ha d'afegir una configuració al cron:, (*4)
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
Error de moustachs amb PHP
Per solucionar l'error dels {{ variable }} del vue a l'interior d'un fixer .php, la solució està en posar @ al devant de {{ variable }}, (*5)
Enllaç de adminlte alarms
https://adminlte.io/themes/AdminLTE/pages/UI/general.html, (*6)
JSON amb php
http://php.net/manual/es/book.json.php, (*7)
json_encode és per passar d'una variable a JSON., (*8)
PROMISES
Si va bé executarà una cosa, i si va malament, una altra., (*9)
npm run watch // npm run watch-poll
Serveix per compilar al instant., (*10)
Crear una comanda
Per crear una comanda s'ha de fer:, (*11)
php artisan make:command nomFitxerComanda
Extres
$tasks = Task::all()->toArray();
$headers = array_keys($tasks[0]);
dd($headers);
El resultat és:, (*12)
array:4 [
0 => "id"
1 => "name"
2 => "created_at"
3 => "updated_at"
Ara es pot utilitzar $headers per a retornar alguna cosa en format de table:, (*13)
$this->table($headers,$tasks);
D'aquesta forma, no hi ha res hardcoded i si mai es modifica la taula, el codi funcionarà igual., (*14)
DIRECTORI MENÚ ESQUERRA
NPM RUN HOT
S'ha d'executar abans d'arrencar el servidor web, ja que utilitza el port 8080., (*15)
API passport
Aquests passos es fan cada cop que es treballi amb API., (*16)
https://laravel.com/docs/5.5/passport, (*17)
per executar automàticament el php artisan passport:install es pot fer:, (*18)
Al fitxer DatabaseSeeder.php a la funció run, afegir:, (*19)
Artisan::call('passport:install');
VUE multiselect
https://github.com/monterail/vue-multiselect, (*20)
Paquet laravel
Un paquet laravel ho és perquè té providers.
Els paquets s'instal·len gràcies als fitxers composer.json., (*21)
CAN'T CD NODE_MODULES
S'ha de fer un npm install., (*22)
npm install
Crear un objecte de tipus REQUEST
Per crear:, (*23)
php artisan make:request nom
Els requests ha de complir:, (*24)
URL
Enllaç: http://acacha.org/mediawiki/URL#.WhcefU3Wx-U, (*25)
User Agent -> browser., (*26)
Paquet es divideix amb dos parts:, (*27)
-
Capçalera-> Metdades., (*28)
-
Dades -> la informació., (*29)
Per diferenciar entre URL i URI és:, (*30)
- Si ens diu com arribar a aquella cosa és URL.
- Si identifica alguna cosa és URI.
Helpers
Al composer.json s'ha de canviar l'autoload apuntant al fitxer helpers.php, d'aquesta forma s'aconsegueix que tothom pugui utilitzar aquest fitxer., (*31)
"autoload": {
...
"files" : [
"app/helpers.php"
]
},
Tot seguit s'executa:, (*32)
composer dumpautoload
PLUCK
Aquest mètode agafa tots els valors a partir d'una clau passada com a paràmetre., (*33)
$collection = collect([
['product_id' => 'prod-100', 'name' => 'Desk'],
['product_id' => 'prod-200', 'name' => 'Chair'],
]);
$plucked = $collection->pluck('name');
$plucked->all();
// ['Desk', 'Chair']
També es pot fer:, (*34)
$plucked = $collection->pluck('name', 'product_id');
$plucked->all();
// ['prod-100' => 'Desk', 'prod-200' => 'Chair']
SCOPED
Assegura que només s'apliquen els canvis al style que es vol i no en general., (*35)
SPA
Primer que tot s'ha d'instal·lar:, (*36)
https://github.com/euvl/vue-js-toggle-button, (*37)
Tot seguit a l'/home/quim/Code/Tasks/resources/assets/js/quimgc-tasks/index.js s'ha d'afegir:, (*38)
import ToggleButton from 'vue-js-toggle-button'
Vue.use(ToggleButton)
Un cop fet això, el que s'ha de fer és wrapper, al fitxer Task.php s'ha d'afegir:, (*39)
public function toArray()
{
return [
'id' => $this->id,
'name' => $this->name,
'description' => $this->description,
'user_id' => $this->user_id,
'completed' => $this->completed? true:false,
'created_at' => $this->created_at."",
'updated_at' => $this->updated_at."",
];
}
Amb això sobreescrivim el mèotode toArray per canviar el 0 o 1 per false o true., (*40)
Laravel Dusk
https://laravel.com/docs/5.5/dusk, (*41)
S'han de crear tests de tipus Browser seguint les tres fases:, (*42)
-
Preparació, (*43)
-
Executar, (*44)
-
Comprovar, (*45)
Instal·lació
composer require --dev laravel/dusk
php artisan dusk:install
La última comanda crea una carpeta on s'emmagatzemen imatges del moment que ha fallat per poder veure l'error a posteriori., (*46)
Per crear un test:, (*47)
php artisan dusk:make nomTest
Per executar un test no es pot fer amb shit + f10, s'ha de fer per terminal:, (*48)
php artisan dusk /ruta/fins/al/test
Però també s'ha de tenir un servidor obert per poder executar el test., (*49)
Si es comenta una linia del fitxer DuskTestCase.php es pot veure com s'executa el test:, (*50)
protected function driver()
{
$options = (new ChromeOptions)->addArguments([
'--disable-gpu',
//'--headless' linia a comentar
]);
return RemoteWebDriver::create(
'http://localhost:9515', DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY, $options
)
);
}
Per configurar el port del test és a .env.dusk.local:, (*51)
Recomanació: Separar els entorns (Bd, Ports, Controladors,...) per cada cosa., (*52)
...
APP_URL=http://localhost:8090
DB_CONNECTION=sqlite_dusk_testing
...
Estem indicant que per als test s'utilitzarà el port 8090 i la bd sqlite_dusk_testing., (*53)
Modificar també amb la mateix configuració .env.dusk.testing., (*54)
S'ha de tenir en compte que s'ha d'obrir un servidor escoltant pel mateix port que s'executarà el test:, (*55)
php artisan serve --port=8090 --env=dusk.local
També s'ha de modificar el fitxer database.php i afeigr:, (*56)
'sqlite_dusk_testing' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE_TESTING', database_path('nom.bd.creada')),
'prefix' => '',
],
Comunicació entre pare i fill
Per parlar del fill al pare;, (*57)
- És necessita events.
- Propietats.
VUE CUSTOM-UI
Enllaç wiki acacha:
- http://acacha.org/mediawiki/CSS#.WljKDk3Wx-U, (*58)
S'ha creat un nou projecte vue:, (*59)
vue init webpack nomPlantilla
S'ha executat npm run dev per executar i veure les modificacions al navegador., (*60)
- CSS Normalize per evitar els css dels user agents:
https://necolas.github.io/normalize.css/
Per veure la disponibilitat de les etiquetes CSS als diferents navegadors:
- https://caniuse.com/, (*61)
VUE QUILL EDITOR
https://github.com/surmon-china/vue-quill-editor, (*62)
CREAR CONTROLADORS
php artisan make:controller nomControlador
Automàticament apareixerà a l'apartat de controladors del nostre projecte., (*63)
EMAIL
https://laravel.com/docs/5.5/mail, (*64)
Per crear un OrderShiped:, (*65)
php artisan make:mail OrderShipped
Crear la plantilla amb la que s'envia el mail (markdown)
https://laravel.com/docs/5.5/mail#markdown-mailables, (*66)
MAIL EXPLOTACIÓ
Des d'explotació s'ha d'enviar correctament el correu al seu destinatari. Es pot usar els següents drivers:, (*67)
- Si s'utilitza gmail a username i password s'ha de posar el de gmail.
NOTES
Amb $browser->script("es pot executar qualsevol codi JS");, (*68)
EVENTS
https://laravel.com/docs/5.5/events, (*69)
VUETIFY
https://vuetifyjs.com/vuetify/quick-start, (*70)
Primer que tot es crea la plantilla:, (*71)
$ z Tasks
$ cd vue
$ vue init vuetifyjs/webpack vuetify-tasks
Apareix el següent wizard:, (*72)
? Project name vuetify-tasks
? Project description A Vue.js project
? Author quimgc <quimgonzalez@iesebre.com>
? Vue build standalone
? Install vue-router? Yes
? Use ESLint to lint your code? Yes
? Pick an ESLint preset Standard
? Set up unit tests Yes
? Pick a test runner karma
? Setup e2e tests with Nightwatch? Yes
? Use a-la-carte components? No
? Use custom theme? No
? Should we run `npm install` for you after the project has been created? (recommended) npm
Un cop creat s'entra dins del directori creat i s'executa:, (*73)
npm run dev
drawer -> calaixera de navegació., (*74)
REDIS
Instal·lar al servidor:, (*75)
composer require predis/predis
sudo apt-get install redis-server
Al .env posar QUEUE_DRIVER=redis, (*76)
També instal·lar:, (*77)
sudo apt-get install supervisor
cd /etc/supervisor/conf.d
sudo nano tasks-laravel-worker.conf
Afegir tot això al fitxer de configuració (compte amb els paths):, (*78)
[program:tasks-laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/quim/Code/Tasks/artisan queue:work redis --sleep=3 --tries=3
autostart=true
autorestart=true
user=quim
numprocs=8
redirect_stderr=true
stdout_logfile=/home/quim/Code/Tasks/storage/logs/worker.log
Al fitxer .env canviar QUEUE_DRIVER=sync per QUEUE_DRIVER=redis, (*79)