Byl vydán Mozilla Firefox 159.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 159 bude brzy k dispozici také na Flathubu a Snapcraftu.
Nasazení softwaru, který nyní používá ve svých autech pro čínský trh, zvažuje automobilový koncern Volkswagen také v Evropě, kde by se mohl používat v budoucích vozech značek Volkswagen, Škoda a Cupra. Základem pro budoucí evropské modely by se mohla stát takzvaná China Electronic Architecture, elektronická architektura vyvinutá pro čínské modely ve spolupráci s tamní automobilkou Xpeng.
Vedoucím brněnské pobočky Red Hatu se stal Radek Vokál [LinkedIn].
Open source download manager Fatrat povstal z popela. Autor k dvacetiletému výročí projektu přidal do vínku podporu nejnovější knihovny libtorrent, rozhraní portoval na QT6, došlo k nahrazení podpory java rozšíření pythonem. Webové rozhraní bylo přepsáno s podporou mobilních zařízení. Aplikaci je taktéž možno zkompilovat bez podpory GUI. Více informací v releases.
Zranitelnost Broccoli2Shell (CVE-2026-111497) v kompresní knihovně Brotli se netýká pouze Node.js. Ohroženy jsou také aplikace využívající HTTP. Knihovnu používají webové prohlížeče, servery i řada dalších aplikací a technologií, například také Python nebo Bun. Identifikace všech zranitelných komponent může být obtížná, protože knihovna bývá součástí dalších softwarových balíčků nebo je přímo začleněna do spustitelných souborů aplikací.
Quad9, švýcarský celosvětově působící neziskový poskytovatel DNS, od 24. listopadu 2026 ukončí své služby ve Francii kvůli soudnímu sporu s katarskou televizní stanicí beIN. Ta požadovala blokování domén, které podle ní nelegálně zpřístupňují sportovní přenosy. Francouzský soud Katarům vyhověl a nařídil (🇫🇷, PDF) Quad9 blokaci zavést, pod hrozbou pokuty 1000 eur denně. Provozovatel příkaz odmítá s tím, že blokace
… více »Článek na blogu APNIC vysvětluje, jak správně vytvářet a používat ASPA záznamy — podepsané objekty v RPKI, které uvádějí, kteří poskytovatelé směrování jsou pro dané autonomní číslo (ASN) oprávněni. Síťoví operátoři je mohou využít k ověřování tras BGP a k odhalování úniků tras či podvržených tras.
Byla vydána (𝕏) verze 8.0.0 open source programu pro prolamování hesel hashcat (GitHub, Wikipedie). Přehled novinek v příspěvku v diskusním fóru a pdf.
Byla vydána (𝕏, Bluesky) nová verze 2026.3 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem 6 nových nástrojů v oficiálním oznámení na blogu.
// Include the library code:
#include <*iquidCrystal.h>
#include <*neWire.h>
#include <*allasTemperature.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2
// #define TEMPERATURE_PRECISION 9
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
// set value
byte data[9];
byte termometr[8] = {B00100, B01010, B01010, B01110, B01110, B11111, B11111, B01110};
byte maximmetr[8] = {B00000, B00000, B00100, B01010, B00000, B01010, B00100, B00000};
void setup() {
// set up the LCD's number of columns and rows:
lcd.createChar(0, termometr);
lcd.createChar(1, maximmetr);
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.write(byte(0));
lcd.setCursor(0, 1);
lcd.write(byte(1));
// Start up the library
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
// první čidlo DS18S20
lcd.setCursor(1, 0);
if (sensors.getTempCByIndex(0) > 100) {
lcd.setCursor(0, 0);
}
if ((data[1] >> 7) == 1) { //zobrazení záporných hodnot
data[0] = ~data[0];
lcd.print("-");
}
else {
lcd.print(" ");
}
if (sensors.getTempCByIndex(0) < 10) { // posun o jedno desetinné místo
lcd.setCursor(3, 0);
lcd.setCursor(2, 0);
lcd.print(" ");
}
lcd.print(sensors.getTempCByIndex(0));
lcd.setCursor(6, 0);
lcd.print((char)223);
lcd.print("C");
// druhé čidlo DS18S20
lcd.setCursor(9, 0);
if (sensors.getTempCByIndex(1) > 100) {
lcd.setCursor(8, 0);
}
if ((data[1] >> 7) == 1) { //zobrazení záporných hodnot
data[0] = ~data[0];
lcd.print("-");
}
else {
lcd.print(" ");
}
if (sensors.getTempCByIndex(1) < 10) { // posun o jedno desetinné místo
lcd.setCursor(11, 0);
lcd.setCursor(10, 0);
lcd.print(" ");
}
lcd.print(sensors.getTempCByIndex(1));
lcd.setCursor(14, 0);
lcd.print((char)223);
lcd.print("C");
}
Řešení dotazu:
// Nastavení proměnných pro minimální teploty
float LowTempMin;
float LowTemp1;
float LowTemp2;
// Min teplota pro první sensor DS18S20
if (sensorOne < LowTemp1) {
LowTemp1 = sensorOne;
}
// Min teplota pro druhé sensor DS18S20
if (sensorTwo < LowTemp2) {
LowTemp2 = sensorTwo;
}
// Min teplota pro oba sensory DS18S20
if (LowTemp1 < LowTempMin) {
LowTemp1 = LowTempMin;
}
else {
LowTempMin = LowTemp2;
}
Když obdobný kód použiji pouze pro jedno čidlo, tak to funguje náramně. Trošinku to jaksi nechápu, proč pro jedno ano a pro dvě už ne.
// Min teplota pro oba sensory DS18S20
if (LowTemp1 < LowTemp2) {
LowTempMin = LowTemp1;
}
else {
LowTempMin = LowTemp2;
}
#include <*iquidCrystal.h>
#include <*neWire.h>
#include <*allasTemperature.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
byte data[9];
byte termometr[8] = {B00100, B01010, B01010, B01110, B01110, B11111, B11111, B01110};
byte maximmetr[8] = {B00000, B00000, B00100, B01010, B00000, B01010, B00100, B00000};
void setup() {
lcd.begin(16, 2);
lcd.createChar(0, termometr);
lcd.createChar(1, maximmetr);
lcd.write(byte(0));
lcd.setCursor(0, 1);
lcd.write(byte(1));
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float sensorOne = sensors.getTempCByIndex(0);
lcd.setCursor(1, 0); // udržet jedno desetinné místo
if (sensorOne > 100) {
lcd.setCursor(0, 0);
}
else if (sensorOne < 100) {
lcd.home();
lcd.write(byte(0)); // obnovit symbol teploty
}
if ((data[1] >> 7) == 1) { // zobrazení znaménka mínus
data[0] = ~data[0];
lcd.print("-");
}
else {
lcd.print(" "); // nezobrazení znaménka plus
}
if (sensorOne < 10) { // udržet jedno desetinné místo
lcd.setCursor(2, 0);
lcd.print(" "); // nezobrazení znaménka plus
}
if (sensorOne < 0) { // udržet jedno desetinné místo
lcd.setCursor(1, 0);
lcd.print(" "); // smazat předchozí znaménko mínus
}
if (sensorOne <= -10) { // udržet jedno desetinné místo
lcd.setCursor(1, 0);
}
lcd.print(sensorOne);
lcd.setCursor(6, 0);
lcd.print((char)223);
lcd.print("C");
// second sensor DS18S20
float sensorTwo = sensors.getTempCByIndex(1);
lcd.setCursor(9, 0); // udržet jedno desetinné místo
if (sensorTwo > 100) {
lcd.setCursor(8, 0);
}
if ((data[1] >> 7) == 1) { // zobrazení znaménka mínus
data[0] = ~data[0];
lcd.print("-");
}
else {
lcd.print(" "); // nezobrazení znaménka plus
}
if (sensorTwo < 10) { // udržet jedno desetinné místo
lcd.setCursor(10, 0);
lcd.print(" "); // nezobrazení znaménka plus
}
if (sensorTwo < 0) { // udržet jedno desetinné místo
lcd.setCursor(10, 0);
lcd.print(" "); // smazat předchozí znaménko mínus
lcd.setCursor(9, 0);
lcd.print(" "); // smazat předchozí znaménko mínus
}
if (sensorTwo <= -10) { // udržet jedno desetinné místo
lcd.setCursor(9, 0);
}
lcd.print(sensorTwo);
lcd.setCursor(14, 0);
lcd.print((char)223);
lcd.print("C");
// Nastavení proměnných pro min a max teploty
float LowTempMin;
float LowTemp1;
float LowTemp2;
// Min teplota pro první sensor DS18S20
if (sensorOne < LowTemp1) {
LowTemp1 = sensorOne;
}
// Min teplota pro druhé sensor DS18S20
if (sensorTwo < LowTemp2) {
LowTemp2 = sensorTwo;
}
// Min teplota pro oba sensory DS18S20
if (LowTemp1 < LowTemp2) {
LowTempMin = LowTemp1;
}
else {
LowTempMin = LowTemp2;
}
// Max teplota pro oba sensory DS18S20...
lcd.setCursor(2, 1);
lcd.print(LowTempMin);
lcd.setCursor(6, 1);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(10, 1);
lcd.print(LowTemp2);
lcd.setCursor(14, 1);
lcd.print((char)223);
lcd.print("C");
}
float LowTempMin; float LowTemp1; float LowTemp2;musí být mimo loop(), a v setup() bych jim přiřadil nějaké vysoké číslo, jinak mají výchozí tu nulu.
#include <*iquidCrystal.h>
#include <*neWire.h>
#include <*allasTemperature.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
byte data[9];
byte termometr[8] = {B00100, B01010, B01010, B01110, B01110, B11111, B11111, B01110};
byte maximmetr[8] = {B00000, B00000, B00100, B01010, B00000, B01010, B00100, B00000};
float LowTemp1 = 127;
float LowTemp2 = 127;
float LowTempMin = 127;
float HighTemp1 = 127;
float HighTemp2 = 127;
float HighTempMax = 127;
void setup() {
lcd.begin(16, 2);
lcd.createChar(0, termometr);
lcd.createChar(1, maximmetr);
lcd.write(byte(0));
lcd.setCursor(0, 1);
lcd.write(byte(1));
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float sensorOne = sensors.getTempCByIndex(0);
lcd.setCursor(1, 0); // udržet jedno desetinné místo
if (sensorOne > 100) {
lcd.setCursor(0, 0);
}
else if (sensorOne < 100) {
lcd.home();
lcd.write(byte(0)); // obnovit symbol teploty
}
if ((data[1] >> 7) == 1) { // zobrazení znaménka mínus
data[0] = ~data[0];
lcd.print("-");
}
else {
lcd.print(" "); // nezobrazení znaménka plus
}
if (sensorOne < 10) { // udržet jedno desetinné místo
lcd.setCursor(2, 0);
lcd.print(" "); // nezobrazení znaménka plus
}
if (sensorOne < 0) { // udržet jedno desetinné místo
lcd.setCursor(1, 0);
lcd.print(" "); // smazat předchozí znaménko mínus
}
if (sensorOne <= -10) { // udržet jedno desetinné místo
lcd.setCursor(1, 0);
}
lcd.print(sensorOne);
lcd.setCursor(6, 0);
lcd.print((char)223);
lcd.print("C");
// second sensor DS18S20
float sensorTwo = sensors.getTempCByIndex(1);
lcd.setCursor(9, 0); // udržet jedno desetinné místo
if (sensorTwo > 100) {
lcd.setCursor(8, 0);
}
if ((data[1] >> 7) == 1) { // zobrazení znaménka mínus
data[0] = ~data[0];
lcd.print("-");
}
else {
lcd.print(" "); // nezobrazení znaménka plus
}
if (sensorTwo < 10) { // udržet jedno desetinné místo
lcd.setCursor(10, 0);
lcd.print(" "); // nezobrazení znaménka plus
}
if (sensorTwo < 0) { // udržet jedno desetinné místo
lcd.setCursor(10, 0);
lcd.print(" "); // smazat předchozí znaménko mínus
lcd.setCursor(9, 0);
lcd.print(" "); // smazat předchozí znaménko mínus
}
if (sensorTwo <= -10) { // udržet jedno desetinné místo
lcd.setCursor(9, 0);
}
lcd.print(sensorTwo);
lcd.setCursor(14, 0);
lcd.print((char)223);
lcd.print("C");
// Nastavení proměnných pro min a max teploty
// Min teplota pro první sensor DS18S20
if (sensorOne < LowTemp1) {
LowTemp1 = sensorOne;
}
// Min teplota pro druhý sensor DS18S20
if (sensorTwo < LowTemp2) {
LowTemp2 = sensorTwo;
}
// Min teplota pro oba sensory DS18S20
if (LowTemp1 < LowTemp2) {
LowTempMin = LowTemp1;
}
else {
LowTempMin = LowTemp2;
}
// Max teplota pro první sensor DS18S20
if (sensorOne < HighTemp1) {
HighTemp1 = sensorOne;
}
// Max teplota pro druhý sensor DS18S20
if (sensorTwo < HighTemp2) {
HighTemp2 = sensorTwo;
}
// Max teplota pro oba sensory DS18S20
if (HighTemp1 < HighTemp2) {
HighTempMax = HighTemp1;
}
else {
HighTempMax = HighTemp2;
}
lcd.setCursor(2, 1);
lcd.print(LowTempMin);
lcd.setCursor(6, 1);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(10, 1);
lcd.print(HighTempMax);
lcd.setCursor(14, 1);
lcd.print((char)223);
lcd.print("C");
}
// Max teplota pro první sensor DS18S20
//CHYBNÝ TEST: je teplota senzoru jedna menší než aktuální nejvyšší teplota
if (sensorOne < HighTemp1) {
//ano, pak ulož do nejvyšší hodnoty aktuální
HighTemp1 = sensorOne;
}
// Max teplota pro druhý sensor DS18S20
if (sensorTwo < HighTemp2) {
HighTemp2 = sensorTwo;
}
jak vidíš nemůže to fungovat, musíš tam obrátit znamínko rovnosti na sensorOne > HighTemp1
. Ta znaménka jsem v nedočkavosti neotočil a hodnoty jsem nastavil na:
float LowTemp1 = 127; float LowTemp2 = 127; float LowTempMin = 127; float HighTemp1 = -55; float HighTemp2 = -55; float HighTempMax = -55;a hůž to krásně funguje. Mockrát díky. Jenom jestli mohu poprosit abych tomu více porozumněl. Proč nemohou být proměnné bez počáteční hodnoty popř. jen nuly? Vím, že to nefunguje, ale nějak si to neumím zdůvodnit. V každém případě mám radost a děkuji všem za pomoc.
Tiskni
Sdílej: