domingo, 12 de mayo de 2024

Haxe

Haxe es un lenguaje de programación de código abierto de alto nivel de tipo estricto con un compilador cruzado de optimización rápida.

El sitio oficial de este lenguaje menciona que es usado para crear APIs, video juegos, aplicaciones web y de escritorio.

Instalación de Haxe en Linux (Ubuntu)

sudo add-apt-repository ppa:haxe/releases -y
sudo apt-get update
sudo apt-get install haxe -y
mkdir ~/haxelib && haxelib setup ~/haxelib

La extensión de un programa en Haxe es *.hx.

Main.hx

class Main{
   static public function main(): Void{
      trace("Hola mundo en Haxe!!!");
   }
}

Para compilar y ejecutar abrimos una terminal

haxe --main Main --interp

Tipos de datos:

var entero:Int=11;
var cadena:String="Helmut Gerrsand";
var falso:Bool= 45 > 21;
var flotante:Float=3.4;

Funciones:

class Main{
   static public function main(): Void{
   testA();
  }

   static public function testA(): Void{
    trace("Hola, mundo en Haxe!!");
   }

}

Enlaces:

https://haxe.org/

Aprender Oracle SQL con LiveSQL

Si deseas aprender SQL o mejorar tus habilidades existe un sitio para hacerlo: https://livesql.oracle.com/

LiveSql es un sitio con tutoriales, ejemplos y editor que nos permite ejecutar sentencias SQL como:

  • Crear tablas.
  • Crear vistas.
  • Consultar datos de las tablas.
  • Crear bloques PL/SQL.
  • Crear funciones y procedimientos PL/SQL.
  • etc.

¿Qué es SQL?

Son las siglas de Structured Query Language. Un lenguaje especializado para la creación y manipulación de la información contenida en tablas de información perteneciente a una base de datos.

El SQL se divide en:

  • DCL: Data Control Language (GRANT/REVOQUE).
  • TCL: Transaction Control Language (COMMIT/ROLLBACK/SAVEPOINT).
  • DDL: Data Definition Language(CREATE/ALTER/DROP/RENAME/TRUNCATE).
  • DML:Data Manipulation Language(INSERT/SELECT/UPDATE/DELETE).

DCL, nos permitirá otorgar y revocar permisos a tablas, funciones y procedimientos y otros objetos.

TCL, nos permitirá el control de las transacciones.

DDL, nos permitirá el control de la definición de los objetos.

DML, nos permitirá la manipulación de la información contenida.

LiveSql está enfocado tanto a principiantes como experimentados en el conocimiento de SQL. No permite crear o borrar bases de datos. No las necesitas, con que puedas crear tablas y manipularlas te bastará, ya que trabajarás con la BD que provee el sitio.

Oracle posee, al igual que otros SGBD (Sistema Gestor de Bases de Datos) su propios tipos de datos como lo pueden ser:

VARCHAR
CHAR
FLOAT
NUMBER
DATE
LONG
BINARY_FLOAT
BINARY_DOUBLE
TIMESTAMP
CLOB
BLOB
...

El editor nos permitirá ejecutar cualquier sentencia SQL válida:

select to_char(sysdate, 'HH:MI:SS') as hora from dual;
HORA
03:13:05

Podremos ejecutar bloques PL/SQL:

DECLARE
BEGIN
   dbms_output.put_line('Fecha: '||sysdate);
END;
/
Fecha: 12-MAY-24

Más ejemplos en próximos posts.

Enlaces:

https://livesql.oracle.com/

viernes, 3 de mayo de 2024

GCP: Creando y borrando tablas con BigQuery (Java, Python, etc.)

En un post pasado dimos un pequeño vistazo a GCP y BigQuery. Continuaremos con más ejemplos de Java y BigQuery.

Ejemplo 1. Crear una tabla con BigQuery.

CrearTableBigQuery.java

package com.codemonkey.main;

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Field;
import com.google.cloud.bigquery.Schema;
import com.google.cloud.bigquery.StandardSQLTypeName;
import com.google.cloud.bigquery.StandardTableDefinition;
import com.google.cloud.bigquery.TableDefinition;
import com.google.cloud.bigquery.TableId;
import com.google.cloud.bigquery.TableInfo;

public class CrearTableBigQuery {

   public static final String MY_DATASET_NAME = "midataset";
   public static final String MY_TABLE_NAME= "usuarios";

  public static void main(String[] args) {

    String datasetName = MY_DATASET_NAME;
    String tableName = MY_TABLE_NAME;
    Schema schema =
        Schema.of(
            Field.of("nombre", StandardSQLTypeName.STRING),
            Field.of("activo", StandardSQLTypeName.BOOL));
    createTable(datasetName, tableName, schema);
  }

  public static void createTable(String datasetName, String tableName, Schema schema) {
    try {
   
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      TableId tableId = TableId.of(datasetName, tableName);
      TableDefinition tableDefinition = StandardTableDefinition.of(schema);
      TableInfo tableInfo = TableInfo.newBuilder(tableId, tableDefinition).build();

      bigquery.create(tableInfo);
      System.out.println("Tabla creada exitosamente!!");
    } catch (BigQueryException e) {
      System.err.println("Ha ocurrido un error al crear la tabla: \n" + e.getMessage());
    }
  }
}

Si todo funciona correctamente, entonces la tabla usuarios habrá sido creada correctamente.

En Python el código tan solo consta de unas breves líneas de código:

creartablabq.py

from google.cloud import bigquery

client = bigquery.Client()
table_id = "midataset.usuarios"
schema = [
    bigquery.SchemaField("nombre", "STRING", mode="REQUIRED"),
    bigquery.SchemaField("edad", "INTEGER", mode="REQUIRED"),
]
table = bigquery.Table(table_id, schema=schema)
table = client.create_table(table)  
print(
    "Se ha creado la tabla {}.{}.{}".format(table.project, table.dataset_id, table.table_id))

Ejemplo 2. Eliminar una tabla con BigQuery.

EliminarTabla.java

package com.codemonkey.main;

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.TableId;

public class EliminarTabla {

  public static void main(String[] args) {
    String datasetName = "midataset";
    String tableName = "usuarios";
    borrarTabla(datasetName, tableName);
  }

  public static void borrarTabla(String datasetName, String tableName) {
    try {

      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
      boolean success = bigquery.delete(TableId.of(datasetName, tableName));
      if (success) {
        System.out.println("Tabla borrada exitosamente");
      } else {
        System.out.println("Tabla no encontrada");
      }
    } catch (BigQueryException e) {
      System.out.println("Ha ocurrido un error al borrar la tabla. \n" + e.getMessage());
    }
  }
}

Si funciona correctamente, la tabla será eliminada.

Ahora en Python:

eliminartablabq.py

from google.cloud import bigquery

client = bigquery.Client()

table_id = 'myproject.mydataset.usuarios'

client.delete_table(table_id, not_found_ok=True) 
print("Tabla eliminada: '{}'.".format(table_id))

¿Y qué con otros clientes cómo PHP, etc.?

Hay clientes para otros lenguajes además de Java y Python, también puede usar C#, PHP, y Go.

borrartablebq.php

use Google\Cloud\BigQuery\BigQueryClient;

/**
 * Borrar determinada tabla
 *
 * @param string $projectId El ID de tu proyecto.
 * @param string $datasetId El ID de tu dataset.
 * @param string $tableId El ID de tu tabla.
 */
function eliminarTabla(string $projectId, string $datasetId, string $tableId): void
{
    $bigQuery = new BigQueryClient([
      'projectId' => $projectId,
    ]);
    $dataset = $bigQuery->dataset($datasetId);
    $table = $dataset->table($tableId);
    $table->delete();
    printf('Tabla eliminada %s.%s' . PHP_EOL, $datasetId, $tableId);
}

Cómo se puede observar, es relativamente fácil emplear el client library de GCP para nuestros proyectos en la nube.

El código fue tomado de este enlace: https://cloud.google.com/bigquery/docs/samples/bigquery-delete-table

Enlaces:

https://codemonkeyjunior.blogspot.com/2024/04/gcp-google-cloud-bigquery.html
https://codemonkeyjunior.blogspot.com/2024/04/google-cloud-platform-gcp-en-un-vistazo.html
https://codemonkeyjunior.blogspot.com/2024/04/gcp-google-cloud-storage.html