Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.
Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.
V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.
Oficiální ceny Raspberry Pi Compute Modulů 4 klesly o 5 dolarů (4 GB varianty), respektive o 10 dolarů (8 GB varianty).
Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
RS232 podle specifikace do vzdálenosti 15 metrů při přenosové rychlosti do 20kb/s, což vyplývá z povolené kapacity kabelu 2500pF. V praxi jsou dosahovány výsledky mnohem lepší (115200kb/s při vzdálenosti až 50 metrů), díky použití kabelů s kapacitou pod 1000 pF. Rozhraní RS232 je relativně málo odolné proti rušení...
http://www.hw.cz/docs/rs485/rs485.htmlRS422/RS485 do 1200 metru, pricemz na RS485 lze povesit vice zarizeni. Komunikacni linky jsou galvanicky oddelene, takze vam toho pri nejakych problemech moc neshori.
Prevodnik RS232<->RS485 lze vyrobit i podstatne levneji, ovsem nutnosti byva ovladani vysilace signalem RTS, ale s tim pod linuxem nemam zkusenost a zajimalo by mne, s jakou odezvou je mozne ho ovladat, nebot pod nejmenovanym operacnim systemem se chova dost nevypocitatelne.
while(1) { /*Wait for TSR*/ if(ioctl(fd, TIOCSERGETLSR, &lsr) == -1) { printf("ioctl() error %d occured (%s)\n", errno, strerror(errno)); return -1; } if(lsr & TIOCSER_TEMT) break; }Pak teprve je možné změnit stav RTS a tím přepnout modem z vysílání na příjem.
int iFlags = TIOCM_RTS; ioctl(fd, TIOCMBIS, &iFlags);a deaktivuje takto:
int iFlags = TIOCM_RTS; ioctl(fd, TIOCMBIC, &iFlags);kde
fd
je file descriptor daného otevřeného portu.
root# setserial /dev/ttyS0
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
Nastavení parity explicitně na 1 lze chápat jako přidání jednoho stopbitu navíc, nicméně dva stopbity by měly stačit, takže snad ani není potřeba to dělat. Nastavit ji na 0 by teoreticky šlo softwarově, kdyby počet bitů ve slovu byl nižší než 8. Paritu lze také při příjmu ignorovat. Ale netuším, v jaké aplikaci je nutné nastavovat paritu na fixní hodnotu.
include/linux/serial_reg.h
Takže test na chybu parity by se dal udělat jako#include<linux/serial_reg.h> int lsr; ioctl(fd, TIOCSERGETLSR, &lsr); if (lsr & UART_LSR_PE) parity_error();
#define UART_LCR_SPAR 0x20 /* Stick parity (?) */Nevíte někdo, proč je v tom komentáři otazník?
#!/usr/bin/env python import base64, MySQLdb, os, sys from MySQLdb.cursors import Cursor,BaseCursor,DictCursor password_base64 = 'aowfowefwe=\n' # plaintext heslo nechci ukazovat password_plain = base64.decodestring(password_base64) db = MySQLdb.connect(db='moje_db', passwd=password_plain ) c = DictCursor(db) db_command = 'select * from tabulka' c.execute(db_command) while True: answer = c.fetchone() if not answer: break print answer #Udelej neco s temi daty c.close() db.close()Takže když už jsou data k dispozici, je potřeba je nasypat do otevřeného a patřičně nastaveného sériového portu. Ukázka pro inspiraci může vypadat následovně:
#!/usr/bin/env python import tty, os fd = os.open('/dev/ttyS0', os.O_RDWR | os.O_SYNC) attr = tty.tcgetattr(fd) attr[tty.IFLAG] = tty.IGNPAR | tty.IGNBRK | tty.INPCK | tty.IMAXBEL | tty.IXOFF attr[tty.LFLAG] = tty.ECHOKE attr[tty.OFLAG] = tty.ONOCR attr[tty.CC][tty.VMIN] = 0 attr[tty.CC][tty.VTIME] = 5 attr[tty.ISPEED] = tty.B19200 attr[tty.OSPEED] = tty.B19200 attr[tty.CFLAG] = tty.B19200 | tty.PARENB | tty.PARODD | tty.CSTOPB | tty.CS8 attr[tty.CFLAG] |= tty.CLOCAL | tty.CREAD | tty.HUPCL tty.tcflush(fd, tty.TCIOFLUSH) tty.tcsetattr(fd, tty.TCSANOW, attr) # Ted se neco zapise do portu ... # a pak se port zavre os.close(fd)Podotýkám, že jsem neměl možnost nic vyzkoušet, takže nevím, jestli to funguje.
Tiskni
Sdílej: