Archivado como Networking, ubuntu por josepcoves | 0 comments
Today I’ve learned how to use bounding under ubuntu 12.04. Bounding lets you combine several network ports to make a single group. I had the following scenario: two network interfaces which needed to be combined to a single static IP address with a round-robin adapter policy.
1) Installing ifenslave:
sudo apt-get install ifenslave
2) Editing interfaces file:
sudo gedit /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet manual
bond-master bond0
auto eth1
iface eth1 inet manual
bond-master bond0
auto bond0
iface bond0 inet static
address XXX.XXX.XXX.XXX
netmask 255.255.255.0
gateway XXX.XXX.XXX.XXX
dns-nameservers XXX.XXX.XXX.XXX YYY.YYY.YYY.YYY
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate 1
bond-slaves none
slaves eth0 eth1
3) Restarting the services (better restarting the computer if possible)
sudo /etc/init.d/networking restart
4) Checking configuration with ifconfig (you should see both adapters as SLAVES and bond0 with Static IP Configuration). To check specific bonding configuration you can execute:
sudo cat /proc/net/bonding/bond0
Further information at:
https://help.ubuntu.com/community/UbuntuBonding
Archivado como Oracle, Query por josepcoves | 0 comments
En ocasiones queremos reemplazar un texto por su equivalente en texto plano sin caracteres especiales ni acentos. Esto nos puede ser muy útil para pasos de parámetros via URL o para impedir que el usuario utilice caracteres especiales en procesos delicados. Un ejemplo de función podría ser la siguiente:
CREATE OR REPLACE FUNCTION plain_text
(
P_TEXT IN VARCHAR2
) RETURN VARCHAR2 AS
BEGIN
RETURN regexp_replace(REPLACE(upper(utl_raw.cast_to_varchar2((nlssort(P_TEXT, 'nls_sort=binary_ai')))),' ',''),'[^A-Z]','');
END plain_text;
Primero convertimos el texto a texto sin acentos con un abecedario plano con la función utl_raw.cast_to_varchar2 con el parámetro nls_sort=binary_ai (accent insensitive) y posteriormente aplicamos una expresión regular para eliminar todos aquellos caracteres no válidos fuera del rango a-z.
Archivado como BD, SQLServer por josepcoves | 0 comments
Si como yo estáis buscando una vista de sistema para obtener el código fuente en TSQL de los stored procedures, y os habéis leído todas las vistas de “sys.” sin éxito, aquí va la solución a vuestra comedura de coco… SQL Server no contiene ninguna vista tipo all_source de Oracle con el código TSQL de los procedures, para ello debemos usar el procedure OBJECT_DEFINITION(object_id).
Por ejemplo, podemos usar la siguiente SQL para obtener el código fuente de todos los triggers de vuesta BD:
SELECT name,object_definition(object_id)
FROM sys.objects
WHERE type LIKE 'TR'
ORDER BY name
Archivado como APACHE, APEX, Oracle por josepcoves | 0 comments
Partiendo de nuestra típica instalación de APEX sobre una Oracle XE (usando EPG), imaginemos que queremos cambiar el puerto por defecto 8080 a 80. Si usamos la lógica, el primer intento sería modificar el parámetro del puerto en la instalación de APEX, pero si lo intentamos nos daremos cuenta que no funcionará. Esto sucede porqué APEX espera un puerto de 4 dígitos, con lo que el puerto 80 queda fuera del rango de puertos a elegir.
Para solucionar esta limitación podemos usar diferentes alternativas, en este post voy a proponer la redirección via apache2 usando modrewrite.
1) Instalación de apache2
sudo apt-get install apache2
2) Configuración de apache2
En primer lugar activamos los módulos de proxy y rewrite:
cd /etc/apache2/mods-enabled
sudo ln -s ../mods-available/rewrite.load rewrite.load
sudo ln -s ../mods-available/rewrite.load rewrite.load
sudo ln -s ../mods-available/proxy.conf proxy.conf
sudo ln -s ../mods-available/proxy.load proxy.load
sudo ln -s ../mods-available/proxy_http.load proxy_http.load
Modificamos la configuración para activar el uso de los módulos de rewrite:
cd /etc/apache2/sites-enabled
modificamos el fichero default la línia AllowOverride:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
# AllowOverride None #Activamos el módulo para su uso
AllowOverride All
Order allow,deny
allow from all
</Directory>
luego creamos el fichero /var/www/.htaccess con el siguiente contenido:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} /(([^/]+)(/.*)*)$
RewriteCond %2 =htmldb [OR]
RewriteCond %2 =apex [OR]
RewriteCond %2 =i [OR]
RewriteCond %2 =public [OR]
RewriteCond %2 =sys
RewriteRule .* http://localhost:8080/%1 [P]
Finalmente reiniciamos apache2:
sudo /etc/init.d/apache2 restart
Archivado como APEX, Oracle por josepcoves | 0 comments
I had the following scenario:
1) An APEX page executing an AJAX call to a PHP Script
2) APEX at port 8080
3) PHP at port 80
Even though I had both scripts at the same server I got the “Same origin policy” error because the port was different. First of all, I needed to retrieve responseXML but PL/SQL allways returned “text/html”, so before anything else you need to change http pl/sql header response by adding the following line:
owa_util.mime_header(’text/xml’);
I had to encapsulate PHP call within a PL/SQL function because I had PL/SQL app on port 8080 and PHP at 80, so I always got a “Same origin policy” restriction which returned null response and null status (beacause of different ports). So my final picture ended like this:
1) PL/SQL Calling an AJAX to PL/SQL procedure
2) The second PL/SQL procedure contains the owa_util.mime_header(’text/xml’); command and internally calls PHP via UTL_HTTP and retreives PHP response
3) PHP starts and returns its XML output response
4) PL/SQL catches reponse and posts it via UTL_HTTP
5) AJAX retrieves response and gets responseXML filled
Hope it helps!
Archivado como BD, Query, SQLServer por josepcoves | 0 comments
SELECT
[TableName] = so.name,
[RowCount] = MAX(si.rows)
FROM
sysobjects so,
sysindexes si
WHERE
so.xtype = 'U'
AND
si.id = OBJECT_ID(so.name)
GROUP BY
so.name
ORDER BY
2 DESC
Archivado como linux, ubuntu por josepcoves | 0 comments
A partir de Ubuntu 10, ha desaparecido Xorg.conf, aún y así podríamos configurar la pantalla creándolo pero dado que la distribución propone otras formas de hacerlo a partir de ahora, es bueno aprovecharlas antes que usar una configuración antigua que en cualquier momento puede dejar de funcionar.
La forma estándar de modificar los parámetros disponibles para la configuración de la pantalla es usando la utilidad xrandr. No voy a entrar en detalle de cómo se usa esta herramienta dado que hay mucha información disponible en la red y es bastante sencillo.
El tema es que si usamos este comando, los cambios que apliquemos se perderán en el siguiente inicio de sesión. Si queremos hacerlos permanentes tenemos 3 opciones:
- Modificar fichero xprofile añadiendo los comandos de xrandr. No recomiendo esta opción pues los cambios se aplican solamente para el usuario que inicia la sesión, con lo que el resto de usuarios no aplicarán la configuración. Además, la configuración se aplica después del login lo que puede provocar que la pantalla de login se vea mal (sin los cambios aplicados) y luego sucedan una serie de refrescos de pantalla que pueden descuadrar el escritorio (además de la sensación de inestabilidad de cara al usuario)
- Crear un nuevo fichero xorg.conf. No lo recomiendo, pues es una configuración ya obsoleta
- Modificar los scripts de arranque de GDM / KDM. Es la mejor opción pues se aplica a todo el entorno gráfico desde el arranque.
Para modificar los scripts de arranque de GDM modificaremos el siguiente fichero:
/etc/gdm/PreSession/Default
Añadiremos los comandos de configuración de xrandr justo antes de la llamada a inictl, por ejemplo, para añadir la resolución de 1360×768:
#!/bin/sh
#
# Note that any setup should come before the sessreg command as
# that must be 'exec'ed for the pid to be correct (sessreg uses the parent
# pid)
#
# Note that output goes into the .xsession-errors file for easy debugging
#
PATH="/usr/bin:$PATH"
#if [ -x '/usr/bin/xsplash' ];
#then
# /usr/bin/xsplash --daemon
#fi
#Customización xrandr
cvt 1360 768
xrandr --newmode "1360x768_60.00" 84.75 1360 1432 1568 1776 768 771 781 798 -hsync +vsync
xrandr --addmode VGA1 1360x768_60.00
#Fin customización
/sbin/initctl -q emit desktop-session-start DISPLAY_MANAGER=gdm
Archivado como BD, MySQL, SQLServer por josepcoves | 0 comments
En Microsoft SQL Server no existe la función de conversión de fechas UNIX a fechas tipo “Timestamp” para ello podemos aplicar la siguiente transformación:
DATEADD(s, DATEDIFF(s, GETUTCDATE(), GETDATE()) + udf_date1/1000, '1970-01-01')
Donde udf_date1 es la fecha en formato unix
Archivado como APEX, VirtualBox, ubuntu por josepcoves | 0 comments
Suponiendo que tenemos una máquina virtual llamada “UBUNTU 10.04 + APEX 4.0.2″ y que queremos redireccionar los puertos hacia la máquina hosta para poder acceder a la BD y al APEX via navegador podemos hacer un port forwarding de los servicios httpd y oraclexe. Para ello, debemos tener la máquina virtual apagada y ejecutar los siguientes comandos:
VBoxManage setextradata "UBUNTU 10.04 + APEX 4.0.2" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/oraclexe/Protocol" TCP
VBoxManage setextradata "UBUNTU 10.04 + APEX 4.0.2" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/oraclexe/GuestPort" 1521
VBoxManage setextradata "UBUNTU 10.04 + APEX 4.0.2" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/oraclexe/HostPort" 1521
VBoxManage setextradata "UBUNTU 10.04 + APEX 4.0.2" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/httpd/Protocol" TCP
VBoxManage setextradata "UBUNTU 10.04 + APEX 4.0.2" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/httpd/HostPort" 8080
VBoxManage setextradata "UBUNTU 10.04 + APEX 4.0.2" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/httpd/GuestPort" 8080
Archivado como UNIX, VirtualBox, linux, ubuntu por josepcoves | 0 comments
Si después de un tiempo te das cuentas que te has quedado sin espacio en tu máquina virtual tienes dos alternativas, o volver a crear una máquina virtual con más espacio de disco duro desde cero o seguir los siguientes pasos. Estos pasos se han seguido con una máquina Ubuntu 10.04 tanto en el Host como en el Guest.
1) En primer lugar es necesario desvincular la máquina virtual de VirtualBox, se puede hacer visualmente desde la gestión de unidades virtuales clicando con el botón derecho y liberar el disco.
2) Modificamos el identificador uuid del disco virtual, para ello usaremos la siguiente instrucción:
VBoxManage internalcommands sethduuid disco_antiguo.vdi
3) Creamos una nueva unidad virtual con el espacio deseado, por ejemplo 20GB:
VBoxManage createhd --filename disco_nuevo.vdi --size 20000 --remember
4) Duplicamos el contenido de la máquina virtual en el nuevo disco virtual:
VBoxManage clonehd disco_antiguo.vdi disco_nuevo.vdi --existing
5) Creamos una nueva máquina virtual con el nuevo disco virtual disco_nuevo.vdi
6) Usaremos GPARTED para ampliar el disco duro nuevo con el espacio que sobra. Para ello descargaremos cualquier LiveCD que contenga la aplicación o directamente el LiveCD de GPARTED:
http://gparted.sourceforge.net/download.php
Arrancamos la máquina virtual con la ISO del LiveCD como unidad de CDROM. Abrimos GPARTED desmontamos la unidad maestra y la ampliamos.