sudo apt-get install -y php7.2-pdo-mysql
(seleccione la version de php correspondiente a la de su sistema)
y reinicie el servidor de apache:
service apache2 restart
sudo apt-get install -y php7.2-pdo-mysql
(seleccione la version de php correspondiente a la de su sistema)
y reinicie el servidor de apache:
service apache2 restart
en nuestro proyecto creamos una carpeta llamada donde estaran todas nuestras clases, por ejemplo una llamada:
MiApp
adentro de esta irian bajo carpetas las de nuestra aplicacion, crearemos una por ejemplo, una llamada:
Helpers
dentro vamos a crear la clase Prueba.php:
en la raiz del proyecto ahora vamos a crear el archivo composer.json :
donde le decimos que
"MiApp\\":"MiApp/"
todo los archivos que estàn en la carpeta MiApp/
deben tener el namespace empezando en MiApp\
luego, ejecutamos:
sudo composer dump-autoload
(lo ejecuto como sudo porque va a necesitar permisos para creacion de carpetas)
este comando va a crear la carpeta "vendor" y unos cuantos archivos dentro de èl donde el importante es uno llamado autolad.php
y listo!
por ejemplo si tenemos un archivo index.php en la raiz del proyecto
podemos instanciar a la clase prueba asi:
el nuevo operador evalua si el valor es null y devuelve algun valor por default que
le querramos dar.
Por ejemplo, si tenemos este codigo
y llamamos al metodo con getValue(100) nos dara el sgt error:
PHP Notice: Undefined offset
si agregamos la sgt modificacion, y lo volvemos a llamar:
nos mostrará 'indice no existe'
ass
buscamos los ids de los procesos relacionados:
pidof _Postman
supongamos que nos salen varios IDs, los eliimnamos todos:
sudo kill -9 29539 29538 29499
suponiendo que tenemos alguna otra version de php ya instalada.
ejecutamos el sgt comando:
sudo apt install php7.2
activamos el modulo de php instalado:
sudo a2enmod php7.2
lo seteamos como default:
sudo update-alternatives --set php /usr/bin/php7.2
ahora, si ejecutamos: php -v nos deberia aparecer algo similar a:
PHP 7.2.34-8+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Oct 31 2020 16:57:15) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.34-8+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v3.0.1, Copyright (c) 2002-2020, by Derick Rethans
finalmente reinicie su servidor apache:
sudo systemctl restart apache2
dentro de la carpeta de nuestro proyecto,
agregar la dependencia de slim
sudo composer require slim/slim:3.*
agregar la dependencia de monolog
sudo composer require monolog/monolog
----------------------------------------------------
nota: podemos levantar el servidor integrado de php, así:
php -S localhost:8000 -t public/
(siempre que los archivos esten en la carpeta public)
------------------------------------------
en el archivo public/index.php
defectos que causan daño al sw:
-poner mas codigo/funcionalidad no relacionada en una unica clase
-hacer depender una clase de otra (estrechamente acopladas) el cambio en una afectará a la otra
-meter codigo duplicado
soluciones:
-elegir arquitectura correcta (mvc,etc)
-seguir principios de diseño ...solid
-elegir patrones de diseño
--------------------------------------------
SOLID
-acrónimo: cada letra representa un principio.
-si se sigue hará de nuestro sw uno escalable en el tiempo.
-tiene una relación con los conceptos de:
alta cohesión y bajo acoplamiento
alta cohesión: la información que almacena una clase debe ser coherente y estar relacionada con la clase.
bajo acoplamiento: tener las clases lo menos ligadas entre si. de tal modo que si se modifica una de ellas, no afecte o afecte poco al resto de clases.
SOLID, principios:
S: responsabilidad única
0: abierto o cerrado
L: sustitución de Liskov
I: segregación de interfaces
D: inversión de dependencia
un buen diseño nos ayuda a hacer más sencillo el mantenimiento del sw, para que cada vez que nos pidan una nueva funcionalidad no tener que estar tocando media aplicación de código antiguo.
reducimos así el costo de mantenimiento de sw.
Principio de Responsabilidad Unica:
-cada modulo de sw debe tener una sola razón para cambiar (no como una navaja suiza)
ejemplo
class Usuario{
public function pagarMisDeudas(){
if(tieneDineroEnELBanco(id_usuario){
...
}
}
public function tieneDineroEnELBanco(id_usuario){
...
}
}
-----------------------
la responsabilidad de la funcion tieneDineroEnELBanco(id_usuario)
no le pertenece directamenreal Usuario...
pues esa misma logica la vamos a querer usar en otra parte de la aplicacion y terminemos copiando y pegando ese codigo, haciendo luego inmantenible.
entonces, una solución sencilla sería:
class Usuario{
Banco $banco;
public Usuario(Banco banco){
$this->banco = banco;
}
public function pagarMisDeudas(){
if($this->banco->tieneDineroEnELBanco(id_usuario){
...
}
}
el comando require instalarà la version que se adapte a tu proyecto
composer require monolog/monolog
pero tambien se le puede indicar una versión especifica:
composer require monolog/monolog:~1.17.0
# Signature:
composer require <vendor>/<name>:<version>
donde, version se puede expresar de distintas manera:
^ (caret) ^1.2.3 es equivalente a >=1.2.3 <2.0.0)
~ (tilde) ~1.2 es equivalente a >=1.2 <2.0.0
o ~1.2.3 es equivalente a >=1.2.3 <1.3.0)
* (wildcard) 1.0.*
es equivalente a >=1.0 <1.1
.
ejecutar el comando:
sudo systemctl list-unit-files --type service --all
para listar sólo los servicios habilitados (enabled), osea los que se estan ejecutando actualmente:
sudo systemctl | grep running
composer install
Las dependencias de nuestra aplicación con Composer se configuran en el fichero composer.json.
La primera vez que ejecutamos composer install en un proyecto, Composer lee ese fichero,
resuelve las dependencias que hay en él e instala los paquetes en el directorio vendor
segun la version configurada para cada paquete y la configuración de estabilidad especificadas
en el fichero composer.json.
Luego, Composer crea en el directorio donde se ha ejecutado el comando install el fichero
composer.lock en el cual anota todos los paquetes instalados y la versión instalada de cada uno de ellos.
Comando update
El comando composer update lee siempre el fichero composer.json e instala las dependencias de ese fichero.
Después de instalar los paquetes, crea en el directorio donde se ha ejecutado este comando
el fichero composer.lock o lo actualiza si ya existe.
NOTA:
Cuando añades un nuevo paquete a tu aplicación, si usas el comando composer require
(por ejemplo, composer require doctrine/dbal:~2.3),
Composer añadirá ese paquete al fichero composer.json y lo instalará.
Por lo que seguirás manteniendo para el resto de paquetes las mismas versiones que tenían instaladas.
desde la carpeta donde vas a buscar los archivos ejecutar el sgt comando
grep -iRl "your-text-to-find" ./
donde
-i - ignore text case
-R - recursively search files in subdirectories.
-l - show file names instead of file contents portions.
use la siguiente sentencia:
evince my_file.pdf
para hacer que luego de abrir el archivo el cursor vuelva al prompt
evince my_file.pdf &
si modificamos un archivo js/index.js que lo usa una pagina html
asi:
<script src="js/index.js"></script>
cuando subamos el cambio la pagina seguirà usando la version del cachè
para obligar a que se vuelva a "bajar" la nueva version debemos hacer algo asi
<script src="js/index.js?v=1"></script>
y si lo volvemos a modificar cambiar esa linea por
<script src="js/index.js?v=2"></script>
y asi sucesivamente por cada actualizacion del archivo js.
Para automatizar esa url con las distintas versiones, la reemplazamos por este codigo:
<script type="text/javascript" language="javascript">
var versionUpdate = (new Date()).getTime();
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "js/index.js?v=" + versionUpdate;
document.body.appendChild(script);
</script>
instalar las librerias necesarias :
sudo apt-get install zip gzip tar
para extraer:
unzip archivo.zip
para comprimir un directorio:
zip -r nombre_comprimido.zip directorio_a_comprimir
requisito: tener una cuenta en cloudfare
esperar unos segundos ..y Listo.
al ingresar a tu sitio te redirigirà a https (esto hay que configurarlo en cloudfare)
donde host= @
y apunta a=335.222.11.130
y listo.
editar y agregar el sgt bloque en /etc/apache2/apache2.conf:
sudo apt-get install php7.1-xml
sudo apt-get install php-xdebug
sudo update-alternatives --set php /usr/bin/php7.1
para comprobarlo podemos ver que archivo de configuracion ini lee nuestra terminal asi:
php --ini |grep Loaded
{
"require-dev": {
"phpunit/phpunit": "3.7.*"
}
}
remote
— recommendedgit remote add <remote-name> <url>
$ git remote add different-repo https://github.com/your-username/your-repo
$ git push different-repo master
git branch --sort=-committerdate # DESC
git branch --sort=committerdate # ASC
~/.bashrc
:parse_git_branch() { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/' }export PS1="\u@\h \[\e[32m\]\w \[\e[91m\]\$(parse_git_branch)\[\e[00m\]$ "
~/.bashrc
, and it works:sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
laravel/ui
Composer package, which may be installed using Composer:composer require laravel/ui
laravel/ui
package has been installed, you may install the frontend scaffolding using the ui
Artisan command:// Generate basic scaffolding...
php artisan ui bootstrap
After installing the laravel/ui
Composer package and generating the frontend scaffolding, Laravel's package.json
file will include the bootstrap
package to help you get started prototyping your application's frontend using Bootstrap.npm install
npm install
, you can compile your SASS files to plain CSS using Laravel Mix. The npm run dev
command will process the instructions in your webpack.mix.js
file. Typically, your compiled CSS will be placed in the public/css
directory:desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable