ACTIVITIES
Development of an Android application, intended for the Play Store.
-
In Dart/Flutter
-
GUI proptotype in C++/Qt
-
Functional prototype in php/SQL
-
Purpose still confidential.
-
Further deployment foreseen for the Apple & Microft App Stores as well.
In the context of learning Qt.
-
A few additional explorations and experiments like:
-
original orthogonal object persistence mechanism,
-
multithreading,
-
portability (tested on Windows, macOS, android, linux....)
-
Qt
-
Qtr/C++ with cmake/ninja
-
Coursera example builds, and runs (cf link), on:
-
Windows
-
macOS
-
Android
-
Ubuntu
-
RedHat
-
FreeBSD
-
-
Visual C++, g++, clang
-
Environment: Perforce on a NAS, installed with Docker.
-
Learning QML, developing an application on Android (iOS planned later)
Embedded development learning (early stage)
-
Arduino MKR1000 / MKR1400 (so still quite high level so far)
-
C++/11
-
Projects so far:
-
lot of small explorations
-
protothreads, interruptions
-
small web server allowing to control the hardware, interruptions, protothreads and connections
-
small clock/chrono/alarm, with NTP sync (still in development, if it is worth to continue: not much to learn anymore from this project so far)
-
-
To do list
-
environments: python, assember
-
hardware: STM32F103C8T6, ESP8285, ATTINY85
-
SQL
-
Refreshed some practice, while helping a student for his end of term paper, with the following SQL. Not extraordinary, but it provides an idea of what I'm able to do (or not):
select distinct
a.id_member,
-- all other needed fields : name...
from matchs m,
members a,
time t
where
m.id_match = 2 -- !! here variable with id match ###########
and a.function = 'Referee'
and ( m.id_referee1 = 0 or m.id_referee2 = 0 ) -- only matches without two referees
and ( select count(*) from availability -- referee availability
where d.date=m.date
and a.id_member= d.id_member
and ( ( d.hour*60
between m.hour*60+m.minute and (m.hour+2)*60+m.minute-1)
or ( (d.hour+1)*60-1
between m.hour*60+m.minute and (m.hour+2)*60+m.minute-1)
)
) = if( m.minute != 0, 3, 2) -- 2 slots if match starts at xx:00, otherwise 3 slots
-- but if should be still checked if there is no already assigned match in conflict
and not exists(select mm.id_match
from matchs mm,
time t,
hall s1,
hall s2,
settings p
where mm.id_match != m.id_match -- other match
and a.id_member in ( mm.id_referee1 , mm.id_referee2 ) -- assigned to this referee
and m.date = mm.date
and a.id_travel_type = t.id_travel_type
and s1.id_hall = t.id_hall_1
and s2.id_hall= t.id_hall_2
and p.nom='preparation_delay'
-- travel before
and ( ( t.id_hall_1= mm.id_salle
and t.id_hall_2= m.id_salle
and (mm.hour+2)*60+mm.minute+t.time +s1.access_time+s2.access_time
<= m.hour*60+m.minute - p.value
)
or
-- travel after
( t.id_hall_1 = m.id_hall
and t.id_hall_2 = mm.id_hall
and (m.hour+2)*60+m.minute+t.time +s1.access_time+s2.access_time
<= mm.hour*60+mm.minute - p.value
) )
)
order by m.id_match
![](https://static.wixstatic.com/media/835989_39f2fd5fb36d40a28d6b0a19df464e27~mv2.jpg/v1/fill/w_72,h_31,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/835989_39f2fd5fb36d40a28d6b0a19df464e27~mv2.jpg)
![](https://static.wixstatic.com/media/835989_d7e800cd4cd94d99910da97d50b59bd5~mv2.jpg/v1/fill/w_122,h_122,al_c,q_80,usm_0.66_1.00_0.01,blur_3,enc_auto/835989_d7e800cd4cd94d99910da97d50b59bd5~mv2.jpg)
![](https://static.wixstatic.com/media/835989_a0b6aa91b1cb4d349884852694301246~mv2.jpg/v1/fill/w_122,h_122,al_c,q_80,usm_0.66_1.00_0.01,blur_3,enc_auto/835989_a0b6aa91b1cb4d349884852694301246~mv2.jpg)
![](https://static.wixstatic.com/media/835989_23ae4918cb674f1b830a9b86e1e57f8b~mv2.jpg/v1/fill/w_122,h_122,al_c,q_80,usm_0.66_1.00_0.01,blur_3,enc_auto/835989_23ae4918cb674f1b830a9b86e1e57f8b~mv2.jpg)
![](https://static.wixstatic.com/media/835989_2f62949666ef4bdbb42c5f61bf1fa1d3~mv2.jpg/v1/fill/w_122,h_122,al_c,q_80,usm_0.66_1.00_0.01,blur_3,enc_auto/835989_2f62949666ef4bdbb42c5f61bf1fa1d3~mv2.jpg)
![red-blue-11x11-minmax-minmax.JPG](https://static.wixstatic.com/media/835989_11ad0c06c5cd41c1924821e7b9c26167~mv2.jpg/v1/fill/w_281,h_175,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/red-blue-11x11-minmax-minmax_JPG.jpg)
![Menu-Player1.JPG](https://static.wixstatic.com/media/835989_95ca5385bde344d2ac0be81cae9c00f1~mv2.jpg/v1/fill/w_225,h_175,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/Menu-Player1_JPG.jpg)
![Prefs.JPG](https://static.wixstatic.com/media/835989_ebf5aada7bd24afd82191330da9b9dd8~mv2.jpg/v1/fill/w_268,h_175,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/Prefs_JPG.jpg)
![Params.JPG](https://static.wixstatic.com/media/835989_0e4802550c084ba184867e9689e0d25a~mv2.jpg/v1/fill/w_246,h_145,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/Params_JPG.jpg)
![blue-pink-50x50-rand-rand.JPG](https://static.wixstatic.com/media/835989_cf3d21d7f3804643aad99b89e3264822~mv2.jpg/v1/fill/w_325,h_145,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/blue-pink-50x50-rand-rand_JPG.jpg)
![5x5.JPG](https://static.wixstatic.com/media/835989_110826e79fb04d8a93e7631140c304d0~mv2.jpg/v1/fill/w_235,h_145,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/5x5_JPG.jpg)
![Menu-File.JPG](https://static.wixstatic.com/media/835989_81727398e48d45b5baf19a53e8e5aa9e~mv2.jpg/v1/fill/w_256,h_175,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/Menu-File_JPG.jpg)
![Menu-Game'.JPG](https://static.wixstatic.com/media/835989_bcbc1634969840dcaa0f0316e68ade9f~mv2.jpg/v1/fill/w_267,h_185,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/Menu-Game'_JPG.jpg)
![diamon-11x11-heuristic.JPG](https://static.wixstatic.com/media/835989_a72088b7a43f4835a4a43c2884e8d72c~mv2.jpg/v1/fill/w_269,h_185,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/diamon-11x11-heuristic_JPG.jpg)
![WhatsApp Image 2020-10-09 at 12.14.28.jp](https://static.wixstatic.com/media/835989_c8994e80e86f40ff9f11adfde4c66efc~mv2.jpeg/v1/fill/w_108,h_54,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/WhatsApp%20Image%202020-10-09%20at%2012_14_28_jp.jpeg)
![macos.JPG](https://static.wixstatic.com/media/835989_d05cae3b576f4a368880bda87b73e3fb~mv2.jpg/v1/fill/w_78,h_59,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/macos_JPG.jpg)