Programozás - kezdő

Milyen webes technológiát választanál ${current_year}-ban?

A kérdés kifejtve: zöldmezős web UI projekthez milyen technológiát választanál és miért? Bármilyen vélemény, tapasztalat, stb jöhet. Nem kell megijedni, ha esetleg flame vihar alakul.

Személy szerint a Java közeli dolgokat kedvelem leginkább, és nagyon nem szeretem a dinamikusan típusos nyelveket. Ezért a JavaScript leváltásán gondolkodom. A szokásos megközelítésem, hogy szerver oldalon fut a UI logika is, és a JS tényleg csak egy vékony megjelenítő réteget ad (mint például ebben a technológiában: https://vaadin.com/ ). A UI vanilla HTML "kézzel" írva, szerver oldali template-tel készül a letöltött változat, és azonosítók szerint JS-hez linkelve kapja a dinamizmust ha kell.

De elgondolkodtam rajta, hogy egy elkövetkező projekten szakítok ezzel a megközelítéssel, és heavyweight klienst írok, ami egy API-n kommunikál a szerverrel - ahogy az szokásos. De azért JS-ben nem programoznék, ott még nem tartunk :-). Vagy valamelyik típusos plusz réteget adó változatot választanám (pl. TypeScript és társai), vagy pedig Java-t interpretálnék a JS engine-en belül valamelyik transpiler megoldással. De az utóbbit még sosem csináltam, ezért kérdezem, hogy van-e valakinek tapasztalata ilyennel?

A szerver felől jövő eseményeket mindenképpen kezelni kell, erre a long polling-hoz képest van valami modernebb megoldás már?

Tehát alapvetően a kliens oldali programnyelv, keretrendszer és a szerverrel való kommunikáció módja (milyen fajta kapcsolat, lekérés HTTP,WebSocket stb és hogyan van kódolva az adatcsere(XML, JSON, Java szerializáció, kézzel tákolt, executable JS)) az amire kiváncsi vagyok.

Tudom, hogy manapság nem divatos a megközelítésem, ezért aztán a teljesen eltérő megközelítésekre is kiváncsi vagyok, illetve a durva kritikát is tűröm. \Flame ON, kezdődhet szócsata! Popcornt mindenki készítse be!

Python program adatrögzítő SQL-be

Sziasztok!

 

Ti hogyan raknátok be egy adatrögzítő eredményeit egy SQL DB-be Python programmal?

Van esetleg valakinek erre bevált profi megoldása?

 

 

Az adatok kb.  így jönnek soros porton keresztül:

[]
['DHTxx', 'test!']
[]
[]
['Humidity:', '44.80%', 'Temperature:', '24.70°C', '76.46°F', 'Heat', 'index:', '24.40°C', '75.91°F']
[]
['Humidity:', '44.80%', 'Temperature:', '24.70°C', '76.46°F', 'Heat', 'index:', '24.40°C', '75.91°F']
[]
['Humidity:', '44.80%', 'Temperature:', '24.70°C', '76.46°F', 'Heat', 'index:', '24.40°C', '75.91°F']
[]
['Humidity:', '44.80%', 'Temperature:', '24.70°C', '76.46°F', 'Heat', 'index:', '24.40°C', '75.91°F']

Sajnos persze lehet adatvesztés, korrupt betűk stb..

 

Jelenleg ez a kis script-et tákoltam össze. Kiírja az adatokat, de nem tudom hogy lehet ezt szépen átrakni egy DB-be, hogy

- megmaradjon a két tizedes  + a mértékegységek is

- Hiba esetén csak dobja el a sort, ne rögzítsen semmit.

- User/Pass login a DB-be.

 

#!/usr/bin/env python3
import serial
import time

ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
ser.flushInput()
humidity = 0
temperature = 0
heatIndex = 0

while True:
ser_bytes = ser.readline()
#decoded_bytes = float(ser_bytes[0:len(ser_bytes)-2].decode("utf-8"))
decoded_bytes = ser_bytes[0:len(ser_bytes)-2].decode("utf-8")
#print(decoded_bytes)
list = decoded_bytes.split()
print(list)
time.sleep(5)
#humidity = list[0:2]
#temperature = list[3]
#heatIndex = list[6]
#print('Páratartalom:' + humidity)
#print('Hőmérséklet:' + temperature)
#print('HeatIndex:' + heatIndex)

Később majd a DB-ből szeretnénk web-es chartot rajzolni az adatokból.

emelt szintű érettségi vizsga , informatika

Sziasztok

Jelentkezni fogok  informatika BSC képzésre,  viszont nincsen meg a kötelező 2 tárgyból az érettségim csak 1-ből. Az eddig olvasottak alapján úgy látom, hogy érettségi vizsgát kell tennem emiatt. Mivel 2005 előtti az érettségim ezért minden képen emelt szintű érettségit kell tennem.

Van aki csinált ilyen érettségit, vagy tervezi? Mik a tapasztalatok?

Hogyan a legérdemesebb felkészülni? Mi a legjobb könyv vagy online adatbázis?

Egy kevés informatikai tudással rendelkezem.

Linkek:

https://www.felvi.hu/felveteli/jelentkezes/aktualis/gyakori_kerdesek_2020?itemNo=2

https://www.oktatas.hu/kozneveles/erettsegi/altalanos_tajekoztatas/emelt_vizsgatargyak2020

update:

Ahová szeretnék menni az a "mérnökinformatikus" szak , ott meg van adva milyen tantárgyakból kell  2 db az egyik a matematika és mellette lehet választani vagy fizika vagy informatika,informatika ismeretek, informatikai alapismeretek, távközlési ismeretek a leírás szerint.

 

üdv Kepe

Fibaro HC2 és Virtual Device

Sziasztok,

Nagyon rookie vagyok programozásban, és jól jönne egy öreg róka segítsége.

Adott egy HC2, amiben egy LUA kód kellene, hogy vezéreljen egy Squeezeplayer-t az alábbi URL-ek elküldésével, ezt a VD-t használnám pl. egy mozgásérzékelővel, hogy fel/le kapcsolja a playert:

http://192.168.X.X:9000/status_header.html?player=b8:27:eb:XX:XX:XX&p0=play

http://192.168.X.X:9000/status_header.html?player=b8:27:eb:XX:XX:XX&p0=pause

Valaki tudna nyújtani egy segítő kezet?

Webes alap portkonfig - html, php, javascript, snmp

Sziasztok!

 

Egy viszonylag egyszerű weboldalt szeretnék összedobni, ahol a megadott IP-című eszközök port státuszait látom snmpget segítségével, illetve adott esetben snmpset-et UP-ba illetve DOWN-ba tudom tenni az operational statust.

Sajnos HTML, PHP és JavaScript kódokat inkább csak olvasni/értemezni tudom, illetve ha kell valamit módosítani a meglévő kódon.

Maga az SNMP kérés működik php-vel, de sík vagyok a többi részéhez.

Próbaképpen összeraktam egy statikus oldalt.
A táblázat egy létező 48 portos switch. Értelemszerűen megjelennének az adott portok állapotai és ettől függően a gombok BE vagy KI kapcsolhatnák a portot.

A felső php rész csak egy teszt, kipróbáltam a lekérést vele. Az eredmény 1 ha a port UP, 2 ha DOWN de van 3 és 4 állapot is (azok most nem lényegesek).
Pontosabban az snmpget által visszaadott érték:

STRING: 2

Valahogy úgy kellene megoldani a dolgot, hogy egy táblázatban lássam az adott portok aktuális állapotát.
Több eszköz esetén valószínűleg kézenfekvőbb lenne tömböket és ciklusokat használni - amennyiben erre van lehetőség -.
Ilyen apróságok jutottak eszembe, hogy az UP-ban lévő portok cellájának a háttérszíne zöld, a többi más színű.
Mivel alapvetően C-ben programozok, így a JS közelebb állna hozzám, de ahhoz meg mindenféle könyvtárak kellenek (mivel alapból nincs snmp library) ellenben a php-val. Php esetén a legnagyobb gondom az, hogy adatbázist kellene mögé rakni és windows szerveren fut az egész így fogalmam sincs hogyan kell :D LAMP-ot szoktam összedobni ha kellett valamihez de ez a Windowsos környezet eléggé ismeretlen.

 

Szóval jah... vannak hiányosságok bőven de ha valakinek van kedve játszani, szívesen veszem a segítséget. Ha a végére kijön valami használható, természetesen a köz javát szolgálja.

 

Az egész apropója egyébként az, hogy portsecurity van a cégnél olyan szinten, hogy egyszerűen a nem használt portok tiltva vannak. A lényeg az, hogy emiatt sokkal könnyebb ilyen formában hibát keresni és ki/bekapcsolgatni a portokat. Az eszközök döntő többségének webes felülete is van viszont sokkal egyszerűbb az egész ha egy helyen van és nem kell egyesével az eszközökben futkosni. Van felügyeleti rendszer (Observium) de az csak read-only (más a célja, másra is használjuk).

 

Szóval most itt tartok:

<!DOCTYPE html>
<html lang="hu">

<head>
	<title>Gombócoskáposzta</title>
	<meta charset="UTF-8">
	<style>
table, th, td {
  border: 1px solid black;
  border-collapse: collapse;
}
th, td {
  padding: 0px;
  text-align: center;    
}
</style>
</head>
<body style="background-color:white;">
<?php
$test = snmpget("1.1.1.1", "public", "1.3.6.1.2.1.2.2.1.8.8");
$txt = "proba";


echo $txt;
echo "<br>";
echo $test;
echo "<br>";

?>

<table style="width:100%">
  <tr>
    <th>Switch</th>
    <th colspan="48">1.1.1.1</th>
  </tr>
  <tr>
    <td><b>Port</td>
    <td><b>1</td>
    <td><b>2</td>
	<td><b>3</td>
    <td><b>4</td>
	<td><b>5</td>
    <td><b>6</td>
	<td><b>7</td>
    <td><b>8</td>
	<td><b>9</td>
    <td><b>10</td>
	<td><b>11</td>
    <td><b>12</td>
	<td><b>13</td>
    <td><b>14</td>
	<td><b>15</td>
    <td><b>16</td>
	<td><b>17</td>
    <td><b>18</td>
	<td><b>19</td>
    <td><b>20</td>
	<td><b>21</td>
    <td><b>22</td>
	<td><b>23</td>
    <td><b>24</b>
	<td><b>25</td>
    <td><b>26</td>
	<td><b>27</td>
    <td><b>28</td>
	<td><b>29</td>
    <td><b>30</td>
	<td><b>31</td>
    <td><b>32</td>
	<td><b>33</td>
    <td><b>34</td>
	<td><b>35</td>
    <td><b>36</td>
	<td><b>37</td>
    <td><b>38</td>
	<td><b>39</td>
    <td><b>40</td>
	<td><b>41</td>
    <td><b>42</td>
	<td><b>43</td>
    <td><b>44</td>
	<td><b>45</td>
    <td><b>46</td>
	<td><b>47</td>
    <td><b>48</b></td>
  </tr>
  <tr>
    <td>Státusz</td>
    <td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
  </tr>
  <tr>
    <td>Duplex</td>
    <td>F</td>
    <td>H</td>
	<td>F</td>
    <td>F</td>
	<td>F</td>
    <td>F</td>
	<td>F</td>
    <td>F</td>
	<td>F</td>
    <td>H</td>
	<td>U</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>F</td>
    <td>H</td>
	<td>F</td>
    <td>F</td>
	<td>F</td>
    <td>F</td>
	<td>F</td>
    <td>F</td>
	<td>F</td>
    <td>H</td>
	<td>U</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
  </tr>
  <tr>
    <td>Sebesség</td>
    <td>10</td>
    <td>100</td>
	<td>100</td>
    <td>Gi</td>
	<td>10Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>100</td>
	<td>110</td>
    <td>Gi</td>
	<td>130</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>10</td>
    <td>100</td>
	<td>100</td>
    <td>Gi</td>
	<td>10Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>100</td>
	<td>110</td>
    <td>Gi</td>
	<td>130</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
	<td>Gi</td>
    <td>Gi</td>
  </tr>
   <tr>
    <td>Op. status</td>
    <td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
	<td>U</td>
    <td>D</td>
	<td>D</td>
    <td>U</td>
	<td>U</td>
    <td>U</td>
  </tr>
  <tr>
    <td>Engedélyezés</td>
    <td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">KI</button></td>
    <td><button onclick="document.location = '#'">KI</button></td>
	<td><button onclick="document.location = '#'">KI</button></td>
    <td><button onclick="document.location = '#'">KI</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">UP</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">DO</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">DO</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">DO</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">DO</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">DO</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">UP</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">DO</button></td>
	<td><button onclick="document.location = '#'">DO</button></td>
    <td><button onclick="document.location = '#'">UP</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">KI</button></td>
    <td><button onclick="document.location = '#'">KI</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">KI</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">KI</button></td>
    <td><button onclick="document.location = '#'">KI</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
	<td><button onclick="document.location = '#'">BE</button></td>
    <td><button onclick="document.location = '#'">BE</button></td>
  </tr>
</table>

</body>

</html>

Több soros sztringet szétvágni szabvány shellben

Sziasztok, a szabvány shell parancssorában viszek be egy többsoros szöveget:

user@host~: sh -c 'a=" asdf

> mnb"'; a=${a#*d}; echo "$a";'

ez jól működik, viszont egyelőre sehogy sem tudom megoldani, hogy a \newline-nál csapjon le ebből a többsoros szövegből.

Szerintetek hogy tudnám ezt kifejezni szabvány shell-ben?

gitea + 2FA

Hali,

 

Van egy gitea telepítés, ahol próba képpen bekapcsoltam a 2FA-t.

A telefon szépen dobja a kódokat, mégsem tudok vele commit-olni, hanem a kötelezően genrált fix token a jelszó (tehát semmit sem ér az egész).

Mi a trükk?

PlayStore/AppStore 1st app

Van két alakuló appocska, ami felkerülhetne pár hónap múlva Az androidos illetve iOS app storeokba. Nem egy nagy durr, de pár dollárra állítanám be, hátha hoz valamit a koyhára, ezt jelenleg nagyon nehéz megbecsülni, de vélhetően aprópénzt pizzára. Milyen jogi keretekben induljon el az ember ha maga űzi szabadidejében ezt a sportot? Aki csinál ilyesmit az beszámolhatna a hivatali hercehurca pozitív és negatív oldaláról, meg hogy ő hogyan csinálta anno és mit csinálna másképp ha most ő lenne az én helyemben. All feedback welcome.

Felmerült, hogy az első verzió csak menjen fel szépen ingyen és akkor lehet az appokat nyomon követni, hogy hányan és milyen rendszerességgel használják, és akkor tisztábban lát az ember, de az egyik app esetében valszeg egyből fizetősben lenne érdemes indulni.

Első körben a jogi keretre gondoltam, de akinek egyéb technikai tapasztalata van azonos app két storeban futtatásával, az se tartsa magában. (most per pill tök függetlenül, két külön app a külön platformon)