OAK: Câmera com Visão Computacional e AI embarcada

OAK (OpenCV Artificial Intelligence Kit) é um hardware revolucionário, pois acredito que este equipamento será relevante para a visão computacional como o Raspberry Pi foi para o setor de embarcados. OpenCV AI Kit, ou OAK, é uma câmera que utiliza um chip de AI incorporado para processar tarefas de visão computacional, como, por exemplo, detectar objetos, medir distâncias e muitas outras tarefas comum no setor de IA.

O hardware é baseado em software livre sob a licença MIT e uma solução baseada em hardware Myriad X para visão computacional por OpenCV (se isso não fosse óbvio). O produto está disponível em duas versões: OAK e OAK-D. A diferença entre estas câmeras são a capacidade de processamento 3D e a presença de múltiplas câmeras. Além de eficaz, apresenta eficiência energética tornado uma solução de grande benefício. O produto pode executar a detecção de objeto com câmera RGB 12MP integrada, combinando ao seu recurso de profundidade estéreo integrado.

Especificação técnica

  • 12MP Câmera colorida 4K integrada
  • 1MP Par estéreo sincronizado com obturador global integrado
  • Real-time Profundidade estéreo
  • 4 TOPS de Processamento Visual
  • Sem carga de computação no host
  • Câmera de IA espacial com inferência em vários estágios
  • Interface USB 3.0 Type-C
  • Use com qualquer sistema operacional host com suporte ao OpenVINO
  • 4K / 30fps Codificação H.265
  • JPEG, H.264 & H.265/HEVC codificação

Onde comprar? Neste link podemos obter os equipamento : https://store.opencv.ai/collections/frontpage

O construtor de diagramas baseado em nó denominado Depthai-gui, está disponível para facilitar o uso da visão computacional, como também o desenvolvimento de trabalho de IA. Assim tornando a IA 2d e espacial de várias etapas simples, bastando arrastar e soltar apenas. Muito útil para criar um protótipo rápido (sem o conhecimento programação de visão computacional),como por exemplo criar soluções de detecção de objetos. Vejam o video demonstrativo abaixo:

Para finalizar, deixo aqui um artigo no Viva o Linux de como utilizar este brinquedo sem mistério.

Upgrading to the next PostgreSQL version

We upgraded our internal PostgreSQL cluster to the latest version last week.

Time passes by so quickly: we installed our PostgreSQL cluster around 2008. At least, this was the time of the first public MirrorBrain release 2.2, which was the reason to run a PostgreSQL installation for openSUSE. But MirrorBrain (and therefor the PostgreSQL cluster behind it) is way older. So maybe it’s fair to say that MirrorBrain started with openSUSE in 2005…?

Anyway: if you maintain a database for such a long time, you don’t want to loose data. Downtimes are also not a good idea, but that’s why we have a cluster, right?

While the MirrorBrain database is currently still the biggest one (>105GB in size and ~120 million entries alone in the table listing the files on the mirrors), our new services like Matrix, Mailman3, Gitlab, Pagure, lnt or Weblate are also not that small any more. All together use currently 142GB.

We already upgraded our database multiple times now (starting with version 7. in the past). But this time, we decided to try a major jump from PostgreSQL 11 to 13, without any step in between.

So how do we handle an upgrade of a PostgreSQL database? - In general, we just follow the documentation from upstream - only adjusting the values to our local setup:

Local setup details

  • Our configuration files are stored in /etc/postgresql/ - and symlinked into the current data directory. This makes it not only easier for us to have them in a general backup, we also set their file ownership to root:postgres - editable just by root and readable just for the postgres group (file permissions: 0640).
  • Below the generic data directory for PostgreSQL on openSUSE (/var/lib/pgsql), we have “data” directories for each version: data11 for the currently used PostgreSQL 11 version.
  • A Symlink /var/lib/pgsql/data points to the currently active database directory (data11 in the beginning)

Step-by-Step

Preparation

First let us set up some shell variables that we will use through out the steps. As we need these variables multiple times as user ‘root’ and user ‘postgres’ later, let’s place them into a file that we can refer to (source) later…

cat > /tmp/postgresql_update << EOL
export FROM_VERSION=11
export TO_VERSION=13
export DATA_BASEDIR="/var/lib/pgsql/"
export BIN_BASEDIR="/usr/lib/postgresql"
EOL
Note: DATA_BASEDIR you can get from the currently running postgresl instance with: ps aufx grep ‘^postgres.* -D’

Don’t forget to source the file with the variables in the steps below.

Install new RPMs

Install the new binaries in parallel to the old ones (find out, which ones you need either via rpm or zypper):

source /tmp/postgresql_update
zypper in $(rpmqpack | grep "^postgresql${FROM_VERSION}" | sed -e "s|${FROM_VERSION}|${TO_VERSION}|g")

Initialize the new version

Now change into the database directory and create a new sub-directory for the migration:

su - postgres
source /tmp/postgresql_update
cd ${DATA_BASEDIR}
install -d -m 0700 -o postgres -g postgres data${TO_VERSION}
cd ${DATA_BASEDIR}/data${TO_VERSION}
${BIN_BASEDIR}/bin/initdb .

For the exact parameters for the initdb call, you can search the shell history of the last run of initdb. But we go with the standard setup above.

You should end up in a completely independent, fresh and clean PostgreSQL data directory.

Now start to backup the new config files and create Symlinks to the current ones. It’s recommended to diff the old with the new config files and have a close look at the logs during the first starts. Worst case: the new server won’t start with old settings at all. But this can be found in the log files.

su - postgres
source /tmp/postgresql_update
cd ${DATA_BASEDIR}/data${TO_VERSION}

for i in  pg_hba.conf pg_ident.conf postgresql.conf postgresql.auto.conf ; do 
 old $i
 ln -s /etc/postgresql/$i .; 
 # diff $i $i-$(date +"%Y%m%d")
done

Downtime ahead: do the migration

Next step is to finally do the job - this includes a downtime of the database!

rcpostgresql stop

su - postgres
source /tmp/postgresql_update
pg_upgrade --link             \
 --old-bindir="${BIN_BASEDIR}${FROM_VERSION}/bin"     \
 --new-bindir="${BIN_BASEDIR}${TO_VERSION}/bin"       \
 --old-datadir="${DATA_BASEDIR}/data${FROM_VERSION}/" \
 --new-datadir="${DATA_BASEDIR}/data${TO_VERSION}/"

The –link option is very important, if you want to have a short downtime:

–link link instead of copying files to new cluster

In our case, the operation above took ~20 minutes.

Hopefully you end up with something like:

[...]
Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade so,
once you start the new server, consider running:
    ./analyze_new_cluster.sh

Running this script will delete the old cluster's data files:
    ./delete_old_cluster.sh

Switch to the new PostgreSQL version

Switch to the new database directory. In our case, we prefer a Symlink, which points to the right directory:

source /tmp/postgresql_update
cd ${DATA_BASEDIR}
ln -fs data${TO_VERSION} data

As alternative, you can switch the database directory by editing the configuration in /etc/sysconfig/postgresql:

source /tmp/postgresql_update
echo "POSTGRES_DATADIR='${DATA_BASEDIR}/data${TO_VERSION}'" >> /etc/sysconfig/postgresql

(Maybe you want to edit the file directly instead and set the correct values right at the point.) The prefix in the file should match the ${DATA_BASEDIR} variable.

Start the new server

systemctl start postgresql

Cleanup

Postgres created some scripts in the folder where the pg_upgrade started. Either execute these scripts (as postgres user) directly or use the following commands:

sudo -i -u postgres
source /tmp/postgresql_update
${BIN_BASEDIR}${TO_VERSION}/bin/vacuumdb \
 --all \
 --analyze-in-stages
${BIN_BASEDIR}${TO_VERSION}/bin/reindexdb \
 --all \
 --concurrently

Please note that the two commands above have influence on the performance of your server. When you execute them, your database might become less responsive (up to not responsive at all). So you might want to use a maintenance window for them. On the other side, your new database server will perform much better once you executed these commands. So don’t wait too long.

Check everything

Now it might be a perfect time to check monitoring, database access from applications and such. After that, you might remove the old database directory and de-install the old binaries as well together with an rm /tmp/postgresql_update.

But in general, you can mark this migration as finished.

qView el visor de imágenes rápido y ligero

qView es una aplicación multiplataforma, basada en Qt5 para ver las imágenes de distintos formatos, de nuestro equipo, de manera rápida y eficiente

A la hora de querer echar un vistazo a diferentes imágenes que guardamos en nuestro equipo, queremos acceder rápidamente a las imágenes y que sea capaz de admitir distintos formatos de archivos.

Hace unos días acabo de descubrir la aplicación qView, que está basada en Qt5 y publicada bajo una licencia libre GPLv3 y multiplataforma.

qView es una aplicación sencilla en su forma, una barra de ventana, la imagen que quiere ver y nada más, no hay barras de herramientas que distraigan ni otros accesorios.

qView apuesta por la sencillez, pero también por la potencia, porque a pesar de ser rápida y ligera, esconde un montón de opciones detrás del clic derecho sobre la imagen: podrás rotar, voltear, hacer zoom, abrir imágenes desde una URL, imágenes recientes, de otra ubicación, etc.

qView acepta muchos tipos de imágenes, y las carga rápidamente sin consumir muchos recursos. Además dispone de unas configuraciones de la aplicación para adaptarla a tus gustos o usos. Y con atajos de teclado, que puedes cambiar a tu gusto.

Además de explorar las imágenes de una carpeta simplemente con las teclas de cursor hacia la izquierda y derecha, también podrás configurar que las pase automáticamente, simplemente “dale al play”.

Quizás la quieras probar para tu sistema GNU/Linux u otros y comprobar en primera persona que ¡es lo que estabas buscando! 🙂 No olvides comentarlo!

Enlaces de interés

Telegram Bridge

Motivation I got lucky with my original hackweek project and I have managed to set up my Leap 15.3 based NAS and private cloud running on NextCloud earlier than planned. So I though that as an extra project I will set up a proper system monitoring service. The monit service is very handy (thanks for the idea to Paolo Stivanin) but by default it wants to send emails when something goes wrong.

Setup a Blog With Github Pages and Hugo

GitHub pages are super powerful and very easy to use for creating markdown based static websites. In this post I will walk through how I made this very page. My setup will be two GitHub repositories, one for the source of the page (https://github.com/bzoltan1/blog-source) and the other where the html artifacts are deployed (https://github.com/bzoltan1/bzoltan1.github.io) Here I would like to note that it is possible to use a single repository with two branches, one for holding the the source and the other where the website is deployed.

Private cloud based on openSUSE Leap 15.3 beta and Nextcloud

Motivation I used to have a Synology DS414 server what worked well for about 8 years. Naturally, occasionally I had to change disks in the RAID5 system in it, but other than that it did its job. But regardless of the really smooth user experience and the low maintenance needs I never really liked that system as the Synology Disk Station Manager OS is not like many “real” Linux distributions and the community behind that OS is basically non existent.

Cómic La Jungla del Software de Marelisa Blanco

Hoy me salgo un poco del mundo KDE, temática principal del blog, y me adentro en el mundo del conocimiento libre. En concreto me apetece compatir con vosorso el Cómic La Jungla del Software de Marelisa Blanco, integrante de NoLegalTech, donde nos explica las bases de esta parte fundamental del desarrollo del Software.

Cómic La Jungla del Software de Marelisa Blanco

Uno de los descubrimientos de esta temporada en los podcast de KDE España ha sido conocer a los miembros de NoLegalTech, un equipo de abogadas especializadas en derecho tecnológico que no solo saben de derecho sino que son capave de hablar un idioma entendible por la mayoría de los mortales, algo muy necesario en estos tiempos.

No por nada os aconsejo visitar su más que amena, simpática y clara página web (la cual contiene hasta «Easter Eggs» la mar de divertidos) donde encontraréis toda la información sobre ellas (si, en el momento de escribir estas líneas solo hay mujeres en su equipo).

Pero la razón de esta entrada es recomendaros que leáis y compartáis el siguiente cómic «La Jungla del Software» una creación de Marelisa Blanco, que además de abogada es una excelente «dibujanta» y que, en apenas 36 páginas nos explica mediante dibujitos los diferentes tipos de licencias que existen.

De esta forma hace un repaso a las licencias Creative Commons, las GPL, las MIT, las BSD y las privativas, todo ello con un poco de historia, ilustraciones cookies, muchos conejitos y muchos otros tipos de animalitos.

Aprovecho la ocasión para dos cosas: la primera para volver a poner en el blog sus intervenciones en los podcast de KDE España, tanto en el capítulo titulado «07×03 Software libre y KDE en entornos profesionales: abogacía» como en el segundo, en la que no tuvo mucho tiempo de intervención ya que su jefa Bárbara nos deslumbró con su presencia, y que llevaba por título «07×06 Software libre y abogacía».

Y la segunda, compartir el dibujo que dedicó al blog cuando cumplió recientemente 13 años. ¡Muchas gracias Marelisa!

Apr 5th, 2021

AWS CodeCommit 使用小記

AWS CodeCommit 使用小記


OS: openSUSE Leap 15.2

git: 2.26.2


最近因為使用 GitLab 的關係, 所以有些資料原本是使用 share folder 的方式, 現在也會考慮使用 git 的方式儲存.


今天來寫 AWS CodeCommit 的使用紀錄

目前使用的方式是參考


連接 AWS CodeCommit 有很多方式, 我是採取 SSH Key 的方式, 網路上有人反應這樣的做法比較穩妥, 比較不會出現奇怪的現象.


實作的方式


接下來就讓我們開始吧


首先登入 AWS IAM console

點選左方的 Groups -- > 點選 Create New Group

群組名稱輸入: CodeCommitPowerUser  -- > 點選 Next Step



在 Attach Policy 頁面

搜尋 CodeCommit -- > 勾選 AWSCodeCommitPowerUser

點選 Next Step


檢閱相關設定

點選 Create Group



接下來加入使用者

點選剛剛建立的 CodeCommitPowerUser 群組

在 Users 頁籤 -- > 點選 Add Users to Group



勾選要加入的使用者 -- > Add Users


接下來要將使用者的 SSH Public Key 上傳到 IAM 使用者的 SSH Keys for AWS CodeCommit


點選 IAM console 左方的 Users

點選 剛剛被加入的使用者

點選 Security credentials 頁籤


點選 Upload SSH public key 按鈕



將 SSH 公鑰貼上

點選 Upload SSH public Key





將 SSH key ID 記錄下來, 等等這個 ID 就是 SSH User ID




再來建立 ~/.ssh/config

使用自己習慣的編輯器 建立 ~/.ssh/config 檔案, 內容如下



  • User 後面那串字元, 請換成之前的 SSH key ID

  • IdentityFile 請換成 自己的 SSH Private Key, 如 id_rsa


將 ~/.ssh/config 檔案設定相關權限


> chmod  600  ~/.ssh/config


最後階段, 建立 CodeCommit Repository, 使用 git clone 測試操作


登入 AWS CodeCommit 主控台 https://console.aws.amazon.com/codesuite/codecommit/home


CodeCommit 也是 Region 服務, 所以可以先選取你要建立的 Region, 我這邊的例子是使用 Ohio (  us-east-2 )


點選 Create repository


輸入 儲存庫名稱

點選 Create




建立完成之後, 其實會有不同的頁籤來說明如何連接

點選 SSH 頁籤

展開你要的 OS 選項, 我是用 openSUSE Leap 15.2 , 所以展開 Linux


點選 Step 4 的 Copy

他會複製 git clone ssh 的指令



接下來進行 git clone 的測試


切換到要進行 git clone 的目錄


貼上與執行剛剛複製的 git clone 指令


> git  clone  ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/test20210405


正複製到 'test20210405'...

warning: 您似乎複製了一個空版本庫。


進入到相關目錄

> cd   test20210405/


接下來嘗試建立檔案進行 commit 測試


> echo  "CodeCommit Test"  >  README.md

> git  add  .

> git  commit  -m  "20210405"


[master (根提交) 6381ea1] 20210405

 1 file changed, 1 insertion(+)

 create mode 100644 README.md


> git  push  -u  origin  master


Warning: Permanently added the RSA host key for IP address '52.95.17.51' to the list of known hosts.

枚舉物件: 3, 完成.

物件計數中: 100% (3/3), 完成.

寫入物件中: 100% (3/3), 227 位元組 | 227.00 KiB/s, 完成.

總共 3 (差異 0),復用 0 (差異 0),重用包 0

To ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/test20210405

 * [new branch]      master -> master

分支 'master' 設定為追蹤來自 'origin' 的遠端分支 'master'。



回到  AWS CodeCommit 觀察



這樣又多了一個 git 存儲的去處, 也多向 AWS 服務邁向一步



~ enjoy it



Reference:





Maratona de Inteligência Artificial 2021

Hoje inicia a Maratona de Inteligência Artificial 2021, um evento imprescindível para todos que buscam conhecimento sobre a tecnologia que, não está apenas se infiltrando na vida cotidiana, mas vai transformar indústrias inteiras. Durante duas semanas, os Notáveis I2AI irão nos enriquecer com conhecimentos estratégicos, inovadores, práticos e inspiradores sobre Inteligência Artificial. Abordaremos muito sobre negócios, carreiras e tecnologias. Totalizando 15 horas aulas totalmente gratuitas e com um formato dinâmico, nesta edição a cada dia teremos 2 mestres palestrando, e um espaço para o debate interativo com os 2 convidados do dia! De 05 a 16 de abril, de segunda a sexta-feira, das 8h às 9h30, temos nosso encontro marcado e preparamos um super Certificado de Participação. CLIQUE AQUI PARA INSCRIÇÕES!

Apr 4th, 2021

Linux Connexion con Lina Castro en Podcast Linux #121

Paraece ser que comparto los podcast impares de Juan Febles, y es que su producción es elevada y el tiempo que tengo para el blog limitada. En esta ocasión tengo el placer de presentar «Linux Connexion con Lina Castro» donde se juntan de nuevo dos personas especializados en la difusión del Software Libre, Lina Castro y Juan Febles. No te lo puedes perder.

Linux Connexion con Lina Castro en Podcast Linux #121

Linux Connexion con Lina Castro en Podcast Linux #121

A pesar de que se siempre se necesitan programadores para el Software Libre, estamos en un punto donde la difusión es igual de importante si queremos, no solo llegar a todos los usuarios, sino a conseguir el apoyo de instituciones públicas.

Justo eso es uno de los trabajos que está realizando Lina Castro en el podcast Ubuntu Colombia que combina con su liderazgo de dicha Comunidad, su trabajo como desarrolladora en Ubuntu Touch y la iniciativa #viernesdeescritorio que cada semana nos abre la ventana a decenas de entornos de trabajo GNU/Linux.

Es por ello que es más que interesante escucharla en una charla distendida con Juan Febles de más de una hora que seguro que no os defraudará.

En palabras de Juan:

«¡¡¡Muy buenas amante del Software Libre!!!
Bienvenido a otra entrega de Podcast Linux, la número 121. Un saludo muy fuerte de quien te habla, Juan Febles.

Hoy tenemos a Lina Castro, desarrolladora de software, especializada en aplicaciones móviles como, por ejemplo, Ubuntu Touch. Es líder de la Comunidad Ubuntu Colombia, podcaster en Ubuntu Colombia y entusiasta de GNU/Linux.

Recordar a los oyentes que estamos en una sala Jitsi para esta charla, un servicio libre para videoconferencias, y que este podcast aloja su web en Gitlab, un servicio libre de repositorios git y su contenido en Archive.org, la biblioteca digital libre con licencias Creative Commons.«

Una vez realizada la presentación, y como siempre, os dejo el audio de Linux Connexion con Lina Castro en Podcast Linux #121 para que los podáis disfrutar de este programa de una hora de duración:

Más información: Podcast Linux

Sigue a Podcast Linux

Aprovecho para animaros a seguir Podcast Linux en algunos de los canales de comunicación que tiene: