CocoaPods: gestor de dependencias para iOS

CocoaPods es un gestor de dependencia para los proyectos Swift y Objective-C Cocoa. Está construido con Ruby y se puede instalar con el Ruby predeterminado disponible en OS X.

Para instalarlo, hay que realizar lo siguiente:

macairjx:~ javoaxian$ sudo gem install cocoapods

Se pedirá nuestra contraseña y después de ingresarla, mostrará una salida similar:


macairjx:~ javoaxian$ sudo gem install cocoapods
Password:
Fetching: concurrent-ruby-1.0.5.gem (100%)
Successfully installed concurrent-ruby-1.0.5
Fetching: i18n-0.9.5.gem (100%)
Successfully installed i18n-0.9.5
Fetching: thread_safe-0.3.6.gem (100%)
Successfully installed thread_safe-0.3.6
Fetching: tzinfo-1.2.5.gem (100%)
Successfully installed tzinfo-1.2.5
Fetching: activesupport-4.2.10.gem (100%)
Successfully installed activesupport-4.2.10
Fetching: nap-1.1.0.gem (100%)
Successfully installed nap-1.1.0
Fetching: fuzzy_match-2.0.4.gem (100%)
Successfully installed fuzzy_match-2.0.4
Fetching: cocoapods-core-1.5.3.gem (100%)
Successfully installed cocoapods-core-1.5.3
Fetching: claide-1.0.2.gem (100%)
Successfully installed claide-1.0.2
Fetching: cocoapods-deintegrate-1.0.2.gem (100%)
Successfully installed cocoapods-deintegrate-1.0.2
Fetching: cocoapods-downloader-1.2.1.gem (100%)
Successfully installed cocoapods-downloader-1.2.1
Fetching: cocoapods-plugins-1.0.0.gem (100%)
Successfully installed cocoapods-plugins-1.0.0
Fetching: cocoapods-search-1.0.0.gem (100%)
Successfully installed cocoapods-search-1.0.0
Fetching: cocoapods-stats-1.0.0.gem (100%)
Successfully installed cocoapods-stats-1.0.0
Fetching: netrc-0.11.0.gem (100%)
Successfully installed netrc-0.11.0
Fetching: cocoapods-trunk-1.3.0.gem (100%)
Successfully installed cocoapods-trunk-1.3.0
Fetching: cocoapods-try-1.1.0.gem (100%)
Successfully installed cocoapods-try-1.1.0
Fetching: molinillo-0.6.5.gem (100%)
Successfully installed molinillo-0.6.5
Fetching: atomos-0.1.2.gem (100%)
Successfully installed atomos-0.1.2
Fetching: CFPropertyList-3.0.0.gem (100%)
Successfully installed CFPropertyList-3.0.0
Fetching: colored2-3.1.2.gem (100%)
Successfully installed colored2-3.1.2
Fetching: nanaimo-0.2.6.gem (100%)
Successfully installed nanaimo-0.2.6
Fetching: xcodeproj-1.5.9.gem (100%)
Successfully installed xcodeproj-1.5.9
Fetching: escape-0.0.4.gem (100%)
Successfully installed escape-0.0.4
Fetching: fourflusher-2.0.1.gem (100%)
Successfully installed fourflusher-2.0.1
Fetching: gh_inspector-1.1.3.gem (100%)
Successfully installed gh_inspector-1.1.3
Fetching: ruby-macho-1.2.0.gem (100%)
Successfully installed ruby-macho-1.2.0
Fetching: cocoapods-1.5.3.gem (100%)
Successfully installed cocoapods-1.5.3
Parsing documentation for concurrent-ruby-1.0.5
Installing ri documentation for concurrent-ruby-1.0.5
Parsing documentation for i18n-0.9.5
Installing ri documentation for i18n-0.9.5
Parsing documentation for thread_safe-0.3.6
Installing ri documentation for thread_safe-0.3.6
Parsing documentation for tzinfo-1.2.5
Installing ri documentation for tzinfo-1.2.5
Parsing documentation for activesupport-4.2.10
Installing ri documentation for activesupport-4.2.10
Parsing documentation for nap-1.1.0
Installing ri documentation for nap-1.1.0
Parsing documentation for fuzzy_match-2.0.4
Installing ri documentation for fuzzy_match-2.0.4
Parsing documentation for cocoapods-core-1.5.3
Installing ri documentation for cocoapods-core-1.5.3
Parsing documentation for claide-1.0.2
Installing ri documentation for claide-1.0.2
Parsing documentation for cocoapods-deintegrate-1.0.2
Installing ri documentation for cocoapods-deintegrate-1.0.2
Parsing documentation for cocoapods-downloader-1.2.1
Installing ri documentation for cocoapods-downloader-1.2.1
Parsing documentation for cocoapods-plugins-1.0.0
Installing ri documentation for cocoapods-plugins-1.0.0
Parsing documentation for cocoapods-search-1.0.0
Installing ri documentation for cocoapods-search-1.0.0
Parsing documentation for cocoapods-stats-1.0.0
Installing ri documentation for cocoapods-stats-1.0.0
Parsing documentation for netrc-0.11.0
Installing ri documentation for netrc-0.11.0
Parsing documentation for cocoapods-trunk-1.3.0
Installing ri documentation for cocoapods-trunk-1.3.0
Parsing documentation for cocoapods-try-1.1.0
Installing ri documentation for cocoapods-try-1.1.0
Parsing documentation for molinillo-0.6.5
Installing ri documentation for molinillo-0.6.5
Parsing documentation for atomos-0.1.2
Installing ri documentation for atomos-0.1.2
Parsing documentation for CFPropertyList-3.0.0
Installing ri documentation for CFPropertyList-3.0.0
Parsing documentation for colored2-3.1.2
Installing ri documentation for colored2-3.1.2
Parsing documentation for nanaimo-0.2.6
Installing ri documentation for nanaimo-0.2.6
Parsing documentation for xcodeproj-1.5.9
Installing ri documentation for xcodeproj-1.5.9
Parsing documentation for escape-0.0.4
Installing ri documentation for escape-0.0.4
Parsing documentation for fourflusher-2.0.1
Installing ri documentation for fourflusher-2.0.1
Parsing documentation for gh_inspector-1.1.3
Installing ri documentation for gh_inspector-1.1.3
Parsing documentation for ruby-macho-1.2.0
Installing ri documentation for ruby-macho-1.2.0
Parsing documentation for cocoapods-1.5.3
Installing ri documentation for cocoapods-1.5.3
Done installing documentation for concurrent-ruby, i18n, thread_safe, tzinfo, activesupport, nap, fuzzy_match, cocoapods-core, claide, cocoapods-deintegrate, cocoapods-downloader, cocoapods-plugins, cocoapods-search, cocoapods-stats, netrc, cocoapods-trunk, cocoapods-try, molinillo, atomos, CFPropertyList, colored2, nanaimo, xcodeproj, escape, fourflusher, gh_inspector, ruby-macho, cocoapods after 30 seconds
28 gems installed

Con esto queda instalado CocoaPods para poder usarlo en nuestros proyectos para iOS.

Instalar Enterprise Architect en GNU/Linux

Esta es una guía para la instalación de Enterprise Architect en Linux Mint pero que seguramente servirá en distribuciones basadas en un Ubuntu así como para demás distribuciones GNU/Linux.

Para comenzar nos convertimos en root:

javoaxian@vboxlinuxmintjx $ sudo su -

Ahora instalamos Wine y los siguientes paquetes:

root@vboxlinuxmintjx # apt-get install wine
root@vboxlinuxmintjx # dpkg --add-architecture i386
root@vboxlinuxmintjx # add-apt-repository ppa:wine/wine-builds
root@vboxlinuxmintjx # apt-get update
root@vboxlinuxmintjx # apt-get install --install-recommends winehq-devel
root@vboxlinuxmintjx # apt-get install winetricks
root@vboxlinuxmintjx # apt-get install fonts-crosextra-carlito

Dejamos de ser el usuario root.

root@vboxlinuxmintjx # exit

Y ahora ejecutamos lo siguiente:

javoaxian@vboxlinuxmintjx $ winetricks msxml3

Se nos mostrará la siguiente pantalla:

jx_post_1116_01

presionamos Instalar y se nos mostrará la siguiente pantalla:

jx_post_1116_02

presionamos Instalar y se mostrará la siguiente pantalla:

jx_post_1116_03

presionamos Instalar y se mostrará la siguiente pantalla:

jx_post_1116_04

Si como a mi, después de ejecutar lo anterior se cierra la pantalla y después ya no pasa nada, entonces lo siguiente que se puede hacer es volver a ejecutar el siguiente comando:

javoaxian@vboxlinuxmintjx $ winetricks msxml3

Se nos abrirá Nautilus en donde debió descargar el archivo msxml3.msi que necesitamos y también se abrirá el navegador para descargar el archivo.

jx_post_1116_05

Se nos presenta la interfaz para descargar el archivo y lo guardamos:

jx_post_1116_06

Una vez guardado yo copie el archivo al directorio donde regularmente se descarga y presionas:

jx_post_1116_07

Ahora hacemos doble clic en el archivo y se nos mostrará la siguiente pantalla:

jx_post_1116_08

Presionamos Next > y se muestra la siguiente pantalla:

jx_post_1116_09

Seleccionamos que aceptamos los términos y presionamos en Next >. se mostrará la siguiente pantalla:

jx_post_1116_10

Sólo presionamos Next > en esta pantalla y se mostrará la siguiente:

jx_post_1116_11

Presionamos Install y  se mostrará la siguiente pantalla:

jx_post_1116_12

Presionamos Finish y terminará la instalación de este paquete.

Descargamos e instalamos el siguiente paquete:

javoaxian@vboxlinuxmintjx $ winetricks msxml4

Ahora si en este paquete me mostró la siguiente pantalla:

jx_post_1116_13

Presionamos Next > y se muestra la siguiente pantalla:

jx_post_1116_14

Aceptamos los términos y presionamos Next >. Se mostrará la siguiente pantalla:

jx_post_1116_15

Presionamos Next > y se presenta la siguiente pantalla:

jx_post_1116_16

Presionamos sobre Install Now, se mostrará la siguiente pantalla:

jx_post_1116_17

Presionamos Finish y terminará la instalación de este paquete.

Descargamos e instalamos el siguiente paquete:

javoaxian@vboxlinuxmintjx $ winetricks mdac28

Se mostrará la siguiente pantalla:

jx_post_1116_18

Aceptamos los términos y presionamos Siguiente >. Se mostrará la siguiente pantalla:

jx_post_1116_19

Presionamos Terminar y se mostrará la siguiente pantalla:

jx_post_1116_20

Presionamos Close y terminará la instalación de este paquete.

Ahora descargamos Enterprise Architect si queremos la versión trial o si tenemos el de con licencia utilizamos ese:

Enterprise Architect

Una vez descargado, podemos ejecutar dando doble clic sobre el archivo descargado o desde la opción del navegador, como sea nuestro gusto:

jx_post_1116_21

Se mostrará la siguiente pantalla:

jx_post_1116_22

Presionamos en Next y se mostrará la siguiente pantalla:

jx_post_1116_23

Aceptamos los términos y presionamos Next. Se mostrará la siguiente pantalla:

jx_post_1116_24

Presionamos Next y se mostrará la siguiente pantalla:

jx_post_1116_25

Presionamos Next y se mostrará la siguiente pantalla:

jx_post_1116_26

Presionamos Install y se mostrará la siguiente pantalla:

jx_post_1116_27

Finalizada la instalación se mostrará la siguiente pantalla:

jx_post_1116_28

Presionamos Finish y terminará la instalación.

Con esto ya tenemos instalado Enterprise Architect y ahora si ya podemos abrirlo ya que ya lo tenemos instalado en nuestros paquetes:

jx_post_1116_29

jx_post_1116_30

 

Instalando Yii 2

Yii2 es un framework de desarrollo que me ha gustado utilizar para programar en PHP, tiene dos versiones, la versión básica y la versión más completa donde se tiene la parte pública y la parte administrativa. En este post sólo explicaré cómo instalar la versión básica.

Yii tiene varias formas de instalarse aunque la recomendada es la siguiente, para lo cuál deberemos tener instalado Composer.

En el siguiente post indico como instalarlo:

Composer: herramienta para administrar dependencias en PHP

Una vez que tenemos instalado Composer, nos moveremos al directorio donde trabajaremos el proyecto, ya sea el directorio htdocs de Apache o el public_html de una cuenta de usuario o un directorio donde se configuró un Virtual Host. Para este ejemplo yo lo realizaré en el directorio public_html de mi cuenta.

Para ello nos moveremos a la carpeta:

javoaxian@vaiolinuxmintjx $ cd $HOME/public_html

Ahora ejecutamos la instalación del proyecto el cual lo llamaré: proyectoyii:

javoaxian@vaiolinuxmintjx $ composer create-project --prefer-dist yiisoft/yii2-app-basic proyectoyii

Puede que nos mandé algunos mensajes de error como el siguiente que a mi me mostró, en el cuál se especifica que me falta una configuración hecha en PHP para que Yii2 trabaje correctamente:

Installing yiisoft/yii2-app-basic (2.0.13)
  - Installing yiisoft/yii2-app-basic (2.0.13): Loading from cache
Created project in proyectoyii
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - yiisoft/yii2 2.0.9 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - yiisoft/yii2 2.0.8 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - yiisoft/yii2 2.0.7 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - yiisoft/yii2 2.0.6 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - yiisoft/yii2 2.0.5 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - yiisoft/yii2 2.0.13.1 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - yiisoft/yii2 2.0.13 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - yiisoft/yii2 2.0.12 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - yiisoft/yii2 2.0.11.2 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - yiisoft/yii2 2.0.11.1 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - yiisoft/yii2 2.0.11 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - yiisoft/yii2 2.0.10 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - Installation request for yiisoft/yii2 ~2.0.5 -> satisfiable by yiisoft/yii2[2.0.10, 2.0.11, 2.0.11.1, 2.0.11.2, 2.0.12, 2.0.13, 2.0.13.1, 2.0.5, 2.0.6, 2.0.7, 2.0.8, 2.0.9].

  To enable extensions, verify that they are enabled in your .ini files:
    - /usr/local/php/lib/php.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

Para resolverlo deberemos compilar PHP con la opción –enable-mbstring.

Aquí dejo el post de instalar PHP, sólo hay que agregar en el comando configure poner la opción –enable-mbstring.

Aquí dejo un ejemplo:

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-pdo-mysql --with-openssl --with-zlib --enable-mbstring

Una vez compilado de esta manera PHP, se nos indicará que fue creado correctamente nuestro proyecto:

Installing yiisoft/yii2-app-basic (2.0.13)
  - Installing yiisoft/yii2-app-basic (2.0.13): Loading from cache
Created project in proyectoyii
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 60 installs, 0 updates, 0 removals
  - Installing yiisoft/yii2-composer (2.0.5): Loading from cache
  - Installing swiftmailer/swiftmailer (v5.4.8): Loading from cache
  - Installing bower-asset/jquery (3.2.1): Loading from cache
  - Installing bower-asset/yii2-pjax (2.0.7.1): Loading from cache
  - Installing bower-asset/punycode (v1.3.2): Loading from cache
  - Installing cebe/markdown (1.1.2): Loading from cache
  - Installing ezyang/htmlpurifier (v4.9.3): Loading from cache
  - Installing bower-asset/inputmask (3.3.11): Loading from cache
  - Installing yiisoft/yii2 (2.0.13.1): Loading from cache
  - Installing yiisoft/yii2-swiftmailer (2.0.7): Loading from cache
  - Installing bower-asset/bootstrap (v3.3.7): Loading from cache
  - Installing yiisoft/yii2-bootstrap (2.0.7): Loading from cache
  - Installing yiisoft/yii2-debug (2.0.13): Loading from cache
  - Installing bower-asset/typeahead.js (v0.11.1): Loading from cache
  - Installing phpspec/php-diff (v1.1.0): Loading from cache
  - Installing yiisoft/yii2-gii (2.0.6): Loading from cache
  - Installing fzaninotto/faker (v1.7.1): Loading from cache
  - Installing yiisoft/yii2-faker (2.0.3): Loading from cache
  - Installing sebastian/diff (2.0.1): Loading from cache
  - Installing sebastian/recursion-context (3.0.0): Loading from cache
  - Installing sebastian/exporter (3.1.0): Loading from cache
  - Installing sebastian/comparator (2.1.2): Downloading (100%)         
  - Installing behat/gherkin (v4.4.5): Loading from cache
  - Installing symfony/polyfill-mbstring (v1.6.0): Loading from cache
  - Installing symfony/dom-crawler (v4.0.3): Loading from cache
  - Installing symfony/css-selector (v4.0.3): Loading from cache
  - Installing symfony/browser-kit (v4.0.3): Loading from cache
  - Installing symfony/yaml (v4.0.3): Loading from cache
  - Installing symfony/event-dispatcher (v4.0.3): Loading from cache
  - Installing symfony/console (v4.0.3): Loading from cache
  - Installing symfony/finder (v4.0.3): Loading from cache
  - Installing psr/http-message (1.0.1): Loading from cache
  - Installing guzzlehttp/psr7 (1.4.2): Loading from cache
  - Installing doctrine/instantiator (1.1.0): Loading from cache
  - Installing phpunit/php-text-template (1.2.1): Loading from cache
  - Installing phpunit/phpunit-mock-objects (4.0.4): Loading from cache
  - Installing theseer/tokenizer (1.1.0): Loading from cache
  - Installing sebastian/version (2.0.1): Loading from cache
  - Installing sebastian/environment (3.1.0): Loading from cache
  - Installing sebastian/code-unit-reverse-lookup (1.0.1): Loading from cache
  - Installing phpunit/php-token-stream (2.0.2): Loading from cache
  - Installing phpunit/php-file-iterator (1.4.5): Loading from cache
  - Installing phpunit/php-code-coverage (5.3.0): Loading from cache
  - Installing sebastian/resource-operations (1.0.0): Loading from cache
  - Installing sebastian/object-reflector (1.1.1): Loading from cache
  - Installing sebastian/object-enumerator (3.0.3): Loading from cache
  - Installing sebastian/global-state (2.0.0): Loading from cache
  - Installing phpunit/php-timer (1.0.9): Loading from cache
  - Installing webmozart/assert (1.2.0): Loading from cache
  - Installing phpdocumentor/reflection-common (1.0.1): Loading from cache
  - Installing phpdocumentor/type-resolver (0.4.0): Loading from cache
  - Installing phpdocumentor/reflection-docblock (4.2.0): Loading from cache
  - Installing phpspec/prophecy (1.7.3): Loading from cache
  - Installing phar-io/version (1.0.1): Loading from cache
  - Installing phar-io/manifest (1.0.1): Loading from cache
  - Installing myclabs/deep-copy (1.7.0): Loading from cache
  - Installing phpunit/phpunit (6.4.4): Loading from cache
  - Installing codeception/base (2.3.7): Loading from cache
  - Installing codeception/verify (0.3.3): Loading from cache
  - Installing codeception/specify (0.4.6): Loading from cache
symfony/browser-kit suggests installing symfony/process ()
symfony/event-dispatcher suggests installing symfony/dependency-injection ()
symfony/event-dispatcher suggests installing symfony/http-kernel ()
symfony/console suggests installing symfony/lock ()
symfony/console suggests installing symfony/process ()
symfony/console suggests installing psr/log (For using the console logger)
phpunit/phpunit-mock-objects suggests installing ext-soap (*)
phpunit/php-code-coverage suggests installing ext-xdebug (^2.5.5)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/phpunit suggests installing phpunit/php-invoker (^1.1)
phpunit/phpunit suggests installing ext-xdebug (*)
codeception/base suggests installing aws/aws-sdk-php (For using AWS Auth in REST module and Queue module)
codeception/base suggests installing codeception/phpbuiltinserver (Start and stop PHP built-in web server for your tests)
codeception/base suggests installing flow/jsonpath (For using JSONPath in REST module)
codeception/base suggests installing phpseclib/phpseclib (for SFTP option in FTP Module)
codeception/base suggests installing league/factory-muffin (For DataFactory module)
codeception/base suggests installing league/factory-muffin-faker (For Faker support in DataFactory module)
codeception/base suggests installing symfony/phpunit-bridge (For phpunit-bridge support)
codeception/base suggests installing stecman/symfony-console-completion (For BASH autocompletion)
Writing lock file
Generating autoload files
> yii\composer\Installer::postCreateProject
chmod('runtime', 0777)...done.
chmod('web/assets', 0777)...done.
chmod('yii', 0755)...done.
> yii\composer\Installer::postInstall

Ahora desde nuestro navegador podremos entrar ya a nuestro proyecto con Yii2. Cabe recordar que este proyecto lo coloqué en el directorio public_html de mi cuenta de usuario, por lo que ingresaré de la siguiente forma en el navegador:

http://localhost/~javoaxian/proyectoyii/web/index.php

se nos mostrará la siguiente pantalla:

jx_post_1104_01

Existe un archivo de requerimientos mínimos de Yii2, para ingresar a él:

http://localhost/~javoaxian/proyectoyii/requirements.php

se nos mostrará la siguiente pantalla:

jx_post_1104_02

Con esto ya tenemos nuestro primer proyecto de Yii2, ahora será cuestión de empezar a desarrollar en él.

Configure: error: Cannot find OpenSSL’s

Si al momento de compilar PHP al habilitar la opción –with-openssl manda el siguiente error:

configure: error: Cannot find OpenSSL's

Para resolver este error instalamos el siguiente paquete:

javoaxian@vboxlinuxmintjx $ sudo su -
root@vboxlinuxmintjx # apt-get install libssl-dev

Configurar PHP para conectarse a SQL Server

En este post voy a explicar la manera que me funcionó para poder configurar PHP para que se pueda conectar a SQL Server 2017.

Para poder realizar esta configuración, estaré en el supuesto que ya se tiene instalado lo siguiente:

Ya teniendo instalado todo ésto, vamos a proceder a ejecutar lo siguiente para la configuración.

Para comenzar nos convertiremos en usuario root.

javoaxian@vboxlinuxmintjx $ sudo su -

Ya como root, realizamos lo siguiente:

root@vboxlinuxmintjx # pear config-set php_ini `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"` system
root@vboxlinuxmintjx ~ # pecl install sqlsrv

Si obtenemos el siguiente error:

Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

Instalamos el siguiente paquete para corregirlo:

root@vboxlinuxmintjx # apt-get install autoconf

Continuamos con la instalación y si ahora obtenemos el siguiente error:

root@vboxlinuxmintjx # checking whether we are using the GNU C++ compiler... no
checking whether g++ accepts -g... no
checking how to run the C++ preprocessor... /lib/cpp
configure: error: in `/tmp/pear/temp/pear-build-rootTlVXJL/sqlsrv-4.3.0':
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
See `config.log' for more details
ERROR: `/tmp/pear/temp/sqlsrv/configure --with-php-config=/usr/local/php/bin/php-config' failed

Instalamos el siguiente paquete para corregirlo:

root@vboxlinuxmintjx # apt-get install g++

Continuamos con la instalación y si ahora ya se instaló correctamente mandándonos el siguiente mensaje:

Build process completed successfully
Installing '/usr/local/php/lib/php/extensions/no-debug-zts-20170718/sqlsrv.so'
install ok: channel://pecl.php.net/sqlsrv-4.3.0
Extension sqlsrv enabled in php.ini

Entonces continuamos con la instalación del siguiente paquete:

root@vboxlinuxmintjx # pecl install pdo_sqlsrv

Una vez instalado correctamente se muestra el siguiente mensaje:

Build process completed successfully
Installing '/usr/local/php/lib/php/extensions/no-debug-zts-20170718/pdo_sqlsrv.so'
install ok: channel://pecl.php.net/pdo_sqlsrv-4.3.0
Extension pdo_sqlsrv enabled in php.ini

Esta instalación agregó las siguientes líneas en el archivo php.ini y si no las colocó, entonces hay que agregarlas:

extension="pdo_sqlsrv.so"
extension="sqlsrv.so"

Ahora reiniciamos el servidor Apache:

root@vboxlinuxmintjx # apachectl restart

Ahora podemos crear un archivo con la siguiente línea. En mi caso creé el archivo phpinfo.php en el directorio /usr/local/apache/htdocs:

<?php phpinfo(); ?>

Al ejecutar el archivo, nos mostrará la configuración y ahí podremos ver que ya se encuentra la extensión PDO de SQL Server la cual se llama pdo_sqlsrv.

jx_post_1057_01

Con esto ya tenemos configurado nuestro PHP para conectar con SQL Server.

Aquí dejo un archivo que obtuve de este artículo para que puedan comprobar la conexión a la base de datos, sólo se deberán cambiar los parámetros para conectarse a la base de datos. Sólo hay que quitar las extensión .txt para ejecutarlo.

Instalar PHP desde fuentes en GNU/Linux habilitando PDO para conexión a base de datos

En mi otro blog había hecho el post:

Instalar PHP desde fuentes en GNU/Linux

Este post no difiere mucho del que hice en el otro blog, sólo que se muestra como compilar PHP para poder usar las funciones de conexión y manejo de base de datos de la extensión PDO, la cual es la que ya a partir de hace algunos años, es la manera en que se debe conectar y manera la base de datos.

Antes que nada deberemos tener instalado ya Apache, aquí dejo este artículo actualizado para su instalación.

También deberemos descargar PHP.

php-7.2.1.tar.bz2

Ya instalado el servidor web y descargado los fuentes de PHP, vamos a realizar los siguientes pasos:

Para este post, tomaré de ejemplo MySQL

Para comenzar nos convertiremos en usuario root.

javoaxian@vboxlinuxmintjx $ sudo su -

Siguiente:

root@vboxlinuxmintjx $ cp /ruta/donde se descargo/php-7.2.1.tar.bz2 /usr/local/src/
root@vboxlinuxmintjx $ cd /usr/local/src/
root@vboxlinuxmintjx $ tar -jxvf php-7.2.1.tar.bz2
root@vboxlinuxmintjx $ cd php-7.2.1/
root@vboxlinuxmintjx $ ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-pdo-mysql

Si nos manda el siguiente error:

checking whether to enable LIBXML support... yes
checking libxml2 install dir... no
checking for xml2-config path...
configure: error: xml2-config not found. Please check your libxml2 installation.

Instalamos el siguiente paquete pare resolver el error:

root@vboxlinuxmintjx $ apt-get install libxml2-dev

Instalado el paquete anterior, continuamos con la instalación.

root@vboxlinuxmintjx $ make
root@vboxlinuxmintjx $ make install

Una vez terminada la compilación e instalación, deberemos copiar el archivo php.ini al directorio de instalación. Se nos proporcionan 2 archivo el php.ini-development y php.ini-production, yo utilizaré el primero para este ejemplo ya que lo utilizo más para desarrollo y prefiero su configuración para este fin.

root@vboxlinuxmintjx $ cp php.ini-development /usr/local/php/lib/php.ini

Ahora deberemos editar el archivo httpd.conf de apache, el cual en este ejemplo se encuentra en el directorio /usr/local/apache/conf/. En dicho archivo deberemos buscar las siguientes líneas:

 #
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz

Y arriba de éstas agregaremos las líneas respectivas de PHP para que nos quede esa sección de esta forma:

 #PHP
AddType application/x-httpd-php .php .html .phtml .php3 .php4 .php5. .php7 .htm
AddType application/x-httpd-php-source .phps
#
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz

Aquí le estamos indicando a Apache que los archivos con extensiones .php .html .phtml .php3 .php4 .php5 .php7 .htm pueden interpretar el código de PHP.

También buscaremos las siguientes líneas:

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

Y agregaremos el archivo index.php para que sea interpretado como archivo principal.

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

Si tienen el proceso de apache funcionando, deberán darlo de baja:

root@vboxlinuxmintjx $ /usr/local/apache/bin/apachectl stop

Y ahora deberán levantarlo:

root@vboxlinuxmintjx $ /usr/local/apache/bin/apachectl start

Ahora apache ya puede interpretar nuestras páginas con código de PHP.

Si queremos probar que esté funcionando Apache con PHP, podemos poner un archivo llamado phpinfo.php dentro del directorio /usr/local/apache/htdocs/ (solo el usuario root puede escribir en este directorio para fines de este ejemplo) y agregarle la siguiente línea:

<?php phpinfo(); ?>

Ahora en nuestra navegador ingresamos a la siguiente dirección: http://localhost/phpinfo.php

Recuerda que si tu Apache está corriendo en otro puerto, como por ejemplo el 8080, deberás ingresar de la siguiente manera desde el navegador: http://localhost:8080/phpinfo.php

Donde nos aparecerá algo como ésto:

jx_post_1044_01

Dentro de esa misma pantalla, podemos buscar que ya está habilitado PDO para MySQL.

jx_post_1044_02

En mi caso me gusta agregar la ruta de las herramientas en el PATH de todos los usuarios, para ello hay que editar el archivo como usuario root:

/etc/profile

y agregamos las siguientes líneas:

export PHP=/usr/local/php
export PATH=$PATH:$PHP/bin

Con esto concluimos la configuración.

Git-cola: cliente para Git

Git-cola es un cliente para administrar los cambios de nuestros proyectos con Git. Los he empezado a usar y esta muy simple a comparación de otros que he probado y quizá algo limitado visualmente a mi gusto, pero realmente lo veo funcional y en algunos proyectos lo estoy usando y me ha funcionado bien.

Sitio: https://git-cola.github.io/

Descarga: https://git-cola.github.io/downloads.html

Gratuito: Sí.

PhpStorm: IDE de desarrollo para programar en PHP

PhpStorm es un interesante IDE de desarrollo para PHP el cual he empezado a utilizar. Desde hace mucho utilizo a Eclipse como IDE, pero decidí probar esta alternativa debido a que desarrollando en Android y hacer el paso de Eclipse a Android Studio noté varias cosas que me agradaron.

Encontré que debido a que estaba basado en IntelliJ la misma empresa tiene varios IDE’s para desarrollar, entre ellos PhpStorm. Estoy trabajando un proyecto junto con Yii2 y va bastante bien. Seguramente estaré publicando algunas cosas más de este IDE.

Sitio: https://www.jetbrains.com/phpstorm/

Descarga: https://www.jetbrains.com/phpstorm/download/

Gratuito: No.

Captura de pantalla:


jx_post_871_02

GitKraken: cliente para Git

GitKraken es un cliente para administrar nuestros cambios de nuestros proyectos con Git. Últimamente lo he empezado a usar bastante con GNU/Linux y me ha dejado muy buen sabor de boca, aún no se le compara al 100% a SourceTree que lo he usado ya bastante tiempo en Mac OS X.

Esta en constante actualización debido a que todavía está en versión Beta.

Esta disponible para su descarga en GNU/Linux, Mac OS X y Windows.

 

La liga para su descarga es:

Sitio: http://www.gitkraken.com

Descarga: http://www.gitkraken.com/download

Gratuito: Si y versión Pro de paga.

Aquí dejo una captura de pantalla de este cliente.


jx_post_857_02

configure: error: xml2-config not found. Please check your libxml2 installation.

Cuando queremos instalar un paquete desde sus fuentes, muchas veces nos encontramos con algunos errores al tratar de compilarlo debido a que no contamos con todos los paquetes y bibliotecas necesarias para que se instale el software que deseamos.

configure: error: xml2-config not found. Please check your libxml2 installation.

En el caso de este error, para corregirlo podemos instalar el siguiente paquete como usuario root o usando el comando sudo:

root@debian8:~# apt-get install libxml2-dev

Se presiona Enter para instalar el paquete y con esto podemos proseguir con la instalación del software que arrojó este error.

configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

Cuando queremos instalar un paquete desde sus fuentes, muchas veces nos encontramos con algunos errores al tratar de compilarlo debido a que no contamos con todos los paquetes y bibliotecas necesarias para que se instale el software que deseamos.

configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

En el caso de este error, para corregirlo podemos instalar el siguiente paquete como usuario root o usando el comando sudo:

root@debian8:~# apt-get install libpcre3-dev

En mi caso me indicará que se necesitan instalar los siguientes paquetes extra y recomendaciones:
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
libpcrecpp0
Se instalarán los siguientes paquetes NUEVOS:
libpcre3-dev libpcrecpp0
0 actualizados, 2 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 579 kB de archivos.
Se utilizarán 1 266 kB de espacio de disco adicional después de esta operación.
¿Desea continuar? [S/n]

Se presiona Enter para instalar el paquete y con esto podemos proseguir con la instalación del software que arrojó este error.

configure: error: APR-util not found. Please read the documentation.

configure: error: APR-util not found.  Please read the documentation.

En este caso sólo hay que indicar la ruta donde tenemos instalado apr, si no lo tenemos instalado, primero deberemos instalarlo para poder indicar la ruta donde lo debe encontrar, como por ejemplo, en mi caso sería de la siguiente manera:

javoaxian@debian8:~/Developer/Applications/src/httpd-2.4.18$ ./configure --prefix=/home/javoaxian/Developer/Applications/apache --enable-module=so --with-apr=/home/javoaxian/Developer/Applications/apr --with-apr-util=/home/javoaxian/Developer/Applications/apr-util

 

configure: error: APR not found. Please read the documentation.

configure: error: APR not found.  Please read the documentation.

En este caso sólo hay que indicar la ruta donde tenemos instalado apr, si no lo tenemos instalado, primero deberemos instalarlo para poder indicar la ruta donde lo debe encontrar, como por ejemplo, en mi caso sería de la siguiente manera:

javoaxian@debian8:~/Developer/Applications/src/httpd-2.4.18$ ./configure --prefix=/home/javoaxian/Developer/Applications/apache --enable-module=so --with-apr=/home/javoaxian/Developer/Applications/apr

 

configure: error: APR could not be located. Please use the –with-apr option.

configure: error: APR could not be located. Please use the –with-apr option.

En este caso sólo hay que indicar la ruta donde tenemos instalado apr, si no lo tenemos instalado, primero deberemos instalarlo para poder indicar la ruta donde lo debe encontrar, como por ejemplo, en mi caso sería de la siguiente manera:

javoaxian@debian8:~# ./configure --prefix=/home/javoaxian/Developer/Applications/apr-util --with-apr=/home/javoaxian/Developer/Applications/apr

 

bash: make: no se encontró la orden

Cuando queremos instalar un paquete desde sus fuentes, muchas veces nos encontramos con algunos errores al tratar de compilarlo debido a que no contamos con todos los paquetes y bibliotecas necesarias para que se instale el software que deseamos.

bash: make: no se encontró la orden

En el caso de este error, para corregirlo podemos instalar el siguiente paquete como usuario root o usando el comando sudo:

root@debian8:~# apt-get install make

Se presiona Enter para instalar el paquete y con esto podemos proseguir con la instalación del software que arrojó este error.

configure: error: no acceptable C compiler found in $PATH

Cuando queremos instalar un paquete desde sus fuentes, muchas veces nos encontramos con algunos errores al tratar de compilarlo debido a que no contamos con todos los paquetes y bibliotecas necesarias para que se instale el software que deseamos.

configure: error: no acceptable C compiler found in $PATH

En el caso de este error, para corregirlo podemos instalar el siguiente paquete como usuario root o usando el comando sudo:

root@debian8:~# apt-get install gcc

En mi caso me indicará que se necesitan instalar los siguientes paquetes extra y recomendaciones:
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
binutils gcc-4.9 libasan1 libatomic1 libc-dev-bin libc6-dev libcilkrts5
libgcc-4.9-dev libitm1 liblsan0 libtsan0 libubsan0 linux-libc-dev
manpages-dev
Paquetes sugeridos:
binutils-doc gcc-multilib make autoconf automake libtool flex bison gdb
gcc-doc gcc-4.9-multilib gcc-4.9-doc gcc-4.9-locales libgcc1-dbg
libgomp1-dbg libitm1-dbg libatomic1-dbg libasan1-dbg liblsan0-dbg
libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libquadmath0-dbg glibc-doc
Se instalarán los siguientes paquetes NUEVOS:
binutils gcc gcc-4.9 libasan1 libatomic1 libc-dev-bin libc6-dev libcilkrts5
libgcc-4.9-dev libitm1 liblsan0 libtsan0 libubsan0 linux-libc-dev
manpages-dev
0 actualizados, 15 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 16.7 MB de archivos.
Se utilizarán 69.6 MB de espacio de disco adicional después de esta operación.
¿Desea continuar? [S/n]

Se presiona Enter para instalar el paquete y con esto podemos proseguir con la instalación del software que arrojó este error.

Declaración de variables en Swift

Así como mostré la forma de declarar una constante en Swift, ahora le toca a las variables, para ello es muy similar a como se hizo en las constante, la única diferencia es que en lugar de poner la palabra:

let

Se deberá usar la palabra reservada:

var

Se indica la palabra reservada var, posteriormente se especifica el nombre de la variable y se asigna el valor que se le quiere poner, como a continuación se presenta:
var miVariable = "Esta es una variable"
De esta forma queda declarada una constante en Swift.

Declaración de constantes en Swift

Para declarar constantes en Swift se realizan de la siguiente manera.

Se indica la palabra reservada:

let

Posteriormente se especifica el nombre de la constante y se asigna el valor que se le quiere poner, como a continuación se presenta:
let miConstante = "Esta es una constante"
De esta forma queda declarada una constante en Swift.