venerdì 15 settembre 2017

Test Syma X8HW con Andoer 4k


Potenziare la camera del Syma X8HW è stato un test ottimo effettuato nel periodo estivo. Dopo varie ricerche e articoli non volendo spendere cifre eccessive trovo questa Andoer 4k 1080P Wifi Cam 16 MP Action Camera 5,08 cm (2") Ultra HD LCD 170°








Modificate anche le slitte di atterraggio e blocco porta camera

Ecco una prova veloce con 4K per verificarne la qualità.









naturalmente con la colonna sonora dei Doctor Groove .... :)

martedì 25 luglio 2017

MongoDB, C and Bulk Operation


E' molto tempo che voglio provare ad eseguire delle operazione su MongoDB utilizzando il Linguaggio C. Sono tantissimi anni che non uso più il C (circa 18.. dai tempi dei CGI sulla WebSphere Commerce Suite di IBM).

Per prima cosa vediamo come installare sotto Debian/Ubuntu il driver con i relativi sorgenti.

apt-get install libmongoc-1.0-0

A questo punto inizio ad analizzare il funzionamento del driver, la documentazione è molto valida.

Il problema che voglio risolvere è un calcolo su un numero elevato di record. Per testing utilizzo il db del Meteo. Il calcolo prevede di prendere i dati presenti nell'archivio delle piogge (Field RC) che sono in realtà un numero incrementale azzerato ad ogni riavvio della console del meteo. Quindi oggi il contatore è 200, domani 200, dopodomani 201, quindi andando per differenza oggi è caduto 1 mm di pioggia.

La struttura dell'object su cui vengono eseguite le query di mongo è la seguente:


 I record sono circa 1 M.



per la compilazione del pacchetto basta eseguire il comando:


sudo gcc -o raindata raindata.c utils.c $(pkg-config --cflags --libs libmongoc-1.0)

 La cosa molto interessante è la funzionalità di Bulk insert molto simile alle transazione dei classici db relazioni. Ovvero si caricano tutti i dati in una struttura e poi si esegue una flush e tutti i dati vengo inseriti in modo molto veloce.

Non mi soffermo tanto sul calcolo del dato puro ma sulle performance di inserimento. 
La prima esecuzione è con insert ripetitive, la seconda con la funzionalità di bulk. 

Si passa da 8 minuti a 12 secondi!!



come sempre trovate tutto il sorgente sul github https://github.com/marcoberri/mbmeteomongoc

mercoledì 19 aprile 2017

SqlServer 2014 - Spring Oauth2 Sql Table Script


Script per la creazione delle tabelle di Spring Security per la gestione del Oauth2 sul db di SQLServer 2014

https://gist.github.com/marcoberri/b02d5c523c0e511bdd18bda18ee5eb38




USE [DBNAME]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[oauth_refresh_token](
[token_id] [varchar](256) NULL,
[token] [varbinary](max) NULL,
[authentication] [varbinary](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
---------------------------------------------------------
USE [DBNAME]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[oauth_code](
[code] [varchar](256) NULL,
[authentication] [varbinary](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
---------------------------------------------------------
USE [DBNAME]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[oauth_client_token](
[token_id] [varchar](256) NULL,
[token] [varbinary](max) NULL,
[authentication_id] [varchar](256) NOT NULL,
[user_name] [varchar](256) NULL,
[client_id] [varchar](256) NULL,
PRIMARY KEY CLUSTERED
(
[authentication_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
---------------------------------------------------------
USE [DBNAME]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[oauth_client_details](
[client_id] [varchar](256) NOT NULL,
[resource_ids] [varchar](256) NULL,
[client_secret] [varchar](256) NULL,
[scope] [varchar](256) NULL,
[authorized_grant_types] [varchar](256) NULL,
[web_server_redirect_uri] [varchar](256) NULL,
[authorities] [varchar](256) NULL,
[access_token_validity] [int] NULL,
[refresh_token_validity] [int] NULL,
[additional_information] [varchar](4096) NULL,
[autoapprove] [varchar](256) NULL,
PRIMARY KEY CLUSTERED
(
[client_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
---------------------------------------------------------
USE [DBNAME]
GO
/****** Object: Table [dbo].[oauth_access_token] Script Date: 19/04/2017 08.41.06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[oauth_access_token](
[token_id] [varchar](256) NULL,
[token] [varbinary](max) NULL,
[authentication_id] [varchar](256) NOT NULL,
[user_name] [varchar](256) NULL,
[client_id] [varchar](256) NULL,
[authentication] [varbinary](max) NULL,
[refresh_token] [varchar](256) NULL,
PRIMARY KEY CLUSTERED
(
[authentication_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
---------------------------------------------------------

sabato 8 aprile 2017

Microservices : Spring Boot + Eureka + Zuul + OAuth2

Esempio completo della gestione a Microservices con Spring Boot e tutto il pacchetto completo  di gestione di proxy e bilanciamento. Per la gestione dell'autenticazione sempre attraverso i services di spring con Oauth2. L'esempio è basato su Jpa su Hibernate e MySql.

Trovate i sorgenti completi https://github.com/marcoberri/microservices-example



Gestione della security