Showing posts with label Falcon. Show all posts
Showing posts with label Falcon. Show all posts

Monday, November 16, 2015

SAP HANA en las garras de Falcon

Falcon es un lenguaje de programación multi-paradígma y open source. Soporta programación procedural, orientad a objetos, basada en prototipos, funcional, tabular y de intercambio de mensajes. Apareció por primera vez hace unos 12 años atrás…así que no es un lenguaje nuevo e inmaduro. Era el lenguaje script for defecto del ya desaparecido sistema operativo Auroraux.


Falcon es bastante impresionante y tiene algunas características que otros lenguajes de programación matarían por tener -:)

Así que…ninguna demostración estaría completa si la enlazaramos con SAP HANA, so? Así que…vamos a hacerlo -;)

Primero, debemos crear un objeto Join y asociar la tabla por MANDT y CARRID. De ahí, seleccionar los siguientes campos como output MANDT, CARRID, CARRNAME, PRICE y CURRENCY.

Luego crear un objeto Aggregation seleccionándo los campos CARRNAME, PRICE (Como columnas agregadas) y CURRENCY. Debemos filtrar el campo CURRENCY por ‘USD’.

Luego, debemos crear un objeto Projection y seleccionar solo PRICE y CARRNAME.

En el objeto Semantics asegúrense de marcar  “CROSS CLIENT” como cliente por defecto.


Ahora, cambiemos a la vista SAP HANA Development y creemos un nuevo repositorio. Lo llamaremos“Flights”.

Creamos un proyecto “XS Engine” y también lo llamamos “Flights”. Lo enlazamos con el repositorio “Flights”.

Creamos un archivo vacio llamado “.xsapp”.

Creamos un archivo llamado “.xsaccess” con el siguente código.

.xsaccess
{
          "exposed" : true,
          "authentication" : [ { "method" : "Basic" } ]
}

Finalmente creamos un archivo llamado “flights.xsodata” con el siguiente código

flights.xsodata
service {
          "Blag/FLIGHTS_BY_CARRIER.calculationview" as "FLIGHTS" keys 
                                                        generate local "Id";
}

Activamos el proyecto y lanzamos nuestro browser...deberíamos ver algo como esto…


La parte de SAP HANA está lista…así que ahora podemos pasar a la parte de Erlang…

Falcon debería estar incluído en cualquier distribución de Linux…y estoy seguro de que ni siquiera se han dado cuenta -;)

En fín…también pueden instalarlo desde Falcon Releases...

Ahora…como aún soy un novato en Falcon…no estoy seguro si de verdad necesitamos esto…pero para estar seguros…instalamos esto…

apt-get install falconpl-curl

Son las libreías de Curl para Falcon…

Agarra tu editor favorito y copia y pega el siguiente código…

falcon_hana.fal
import from curl
import from json
h = curl.Handle("http://YourServer:8000/Flights/flights.xsodata/FLIGHTS?$format=json")
auth = "Authorization:Basic " + Base64.encode("SYSTEM:YourPassword")
headers = [auth]
h.setOption(curl.OPT.HTTPHEADER,headers)
h.setOption(curl.OPT.SSL_VERIFYPEER,false)
data = h.setOutString().exec().getData()

try
   raw = json.JSONdecode( data )
catch
   printl( "Can't decode the string" )
end

d = raw["d"]

results = d["results"]

for Index in [0:results.len()]
 print(results[Index]["CARRNAME"])
 print(" : ")
 printl(results[Index]["PRICE"])
end

Para ejecutarlo…simplemente abre una sesión en el terminal, anda a la carpeta donde tienes tu código y escribe...

Falcon falcon_hana.fal 



Debo admitir que esto no fué muy sencillo en un inicio…la documentación de Falcon no habla sobre curl…así que tuve que revisar el código en GitHub…hacer muchas pruebas…hasta que finalmente pude hacer que funcione…la parte de json por otro lado fué extremadamente sencilla -:D

Saludos,

Blag.
Development Culture.

Friday, September 18, 2015

LED es mi nuevo Hello World - Tiempo de Falcon

Continuándo con mi tradición...aquí está mi aplicación de Números LED utilizándo Falcon...utilicé mi código en Julia como código base...y debo decirlo...el código es practicamente el mismo...lo cual es bueno por ahora...pero espero poder encontrar algunas gemas ocultas y características extrañas a medida que aprendo más sobre Falcon -;)

Aquí está el código fuente...

LED_Numbers.fal
leds =  ["0" => [" _  ","| | ","|_| "],
         "1" => ["  ","| ","| "],
         "2" => [" _  "," _| ","|_  "],
         "3" => ["_  ","_| ","_| "],
         "4" => ["    ","|_| ","  | "],
         "5" => [" _  ","|_  "," _| "],
         "6" => [" _  ","|_  ","|_| "],
         "7" => ["_   "," |  "," |  "],
         "8" => [" _  ","|_| ","|_| "],
         "9" => [" _  ","|_| "," _| "]]
   
print("Enter a number: ")
number = input()
len = number.len()
for i in [0:3]
 for j in [0:len]
  print(leds[number[j]][i])
 end
 printl("")
end

Y por supuesto...aquí están las imágenes...



Saludos,

Blag.
Development Culture.

Mi primer post en Falcon

Descubrí Falcon hace algunos meses...pero no tuve el tiempo de empezar a jugar con el...


Falcon es un lenguaje de programación multi-paradigma y código abierto. Aunque se ve como un nuevo lenguaje de programación, en realidad es un poco viejo, puesto que su primera aparación fué en el 2003...

Sintácticamente, es bastante similar a Lua...lo cual significa que también se parece a GoC++...pero por supuesto tiene algunas carácterísticas propias y muy interesántes -;)

Por ahora...solo he portado mi versión de Número Fibonacci en Lua...y fuera del hecho de que Falcon no utiliza "then" y el hecho de que Falcon no puede concatenar números con strings (pero puede concatenar strings con números)...el código es prácticamente el mismo...

Veamos como nos va cuando haga mi aplicación de Números LED -;)

Aquí está el código fuente...

fibonacci.fal
function fib(num,a,b)
 result = ""
 if a > 0 and num > 1
  result = result + (a+b) + " " + fib(num-1,a+b,a)
 elif a == 0
  result = "" + a + " " + b + " " + (a+b) + " " + fib(num-1,a+b,b)
 end
 return result 
end

print("Enter a number: ")
num = int( input() )
print(fib(num,0,1))

Aquí está el resultado...



Saludos,

Blag.
Development Culture.