No designově vypadají dobře. na straně klienta/prohlížeče je to kódování děsný guláš, ale pozor, pokud je to dobře udělané na straně serveru, tak to nemusí být tak strašné, tam to může být úplně jinak, stačí šikovné rozdělení na moduly a jejich pospojování při requestu.
Příspěvky odeslané z IP adresy 91.139.9.–
Dobré by bylo vědět jaký simulátor to máš (odkud jsi ho stáhl).
No nejsem si jist jak ten problém vypadá, zda se ti čísla zobrazují jen na 1. místě nebo zda ti prosvítají mezi pozicemi.
mělo by to být
nastav pozici
pošli číslo
počkej malou chviličku
vymaž číslo (00/FF)
a to celé opakovat pro další pozice pozice 2. = 0xFB, 3.= 0xFD a pozice 4.= 0xFE
pokud bys na to použil subrutinu případně pro načítání obsahu z paměti lze to čekání vynechat, využije se trvání instrukcí pro skoky do rutiny nebo na přípravu dalšího čísla.
Bohužel, naše školství v této oblasti momentálně spí, na středních školách se vyučují hlavně věci jako web design, tvorba webu (dnes zvládne šikovnější žák základní školy), pak věci kolem HW klasických PC a sítí případně ještě MCU, ale kromě několika oborů na VŠ chybí povědomí o dalších možnostech a výuka jejich programování a použití. Vytvářejí ajtáky co sice rozumějí administraci PC a sítí, ale s HW si už moc neporadí jakýkoliv problém se zařízením (často poměrně drahým) řeší jeho výměnou.
Nad vodou to drží nestoři z 70-80. let 20.století, kdy nebyl přístup k západním součástkám a bylo třeba si poradit s náhradami, které občas neodpovídali originál součástkám a bylo nutné dělat natvrdo určité úpravy.
Navíc tehdy ještě u nás neexistoval internet, takže se informace sháněli kde se dalo, tenkrát jsme se s kamarádem ze studií museli spolehnout na katalog součástek RVHP, ARadio a konzultace v servisu (myslím že to byla tehdá firma Consul servis opravy počítačů).
Zrovna letos jsem se ze zvědavosti koukal na 3 zařízení co jsme vyřazovali nebo opravovali (NVR, Switche Zyxel a Cisko, tiskárna štítků), všechny měli 1-3 FPGA obvody obvykle XILINX Spartan + 1-2 CPU/MCU.
#6 remmidemmi
Jedna věc je HW, schémata, zapojení, DPS zde bych výrazný bezpečnostní problém neviděl, navíc i zde lze použít jisté bezpečnostní prvky, ke kterým se BigBrother nedostane.
A druhou věcí je SW tzn. specifické naprogramování, museli by mít přístup i k tomuto.
Toto může být, ale také důvodem proč jsou v některých oborech dále, je to v podstatě oficiální průmyslová špionáž, divím se, že to ještě amíci nezatrhli jako Huawei a podobné Aktivity čičiny a spol.
Hm pěkná zásobička.
Jinak čipy byly aktuální někdy před 15lety, odpovídají tomu i podklady a nástroje, např odpovídající compilery nejnovější z r.2009 pro WinXP / WinVista.
Zkus se zeptat nebo nabídnout na MCU.cz nebo https://forum.mcontrollers.com/
#14 Navara
Ahoj, zase jsem týden nebyl, tak přicházím s křížkem po funuse.
Variantou by možná bylo vytvořit si v TTratovaKolej proměnou pro MDIchild, kam se při otevření uloží a při zavření uvolní daná instance MDIchildu, pak ti při smazání stačí otestovat proměnou a v případě že existuje instance jí zavřít.
Budeš pak mít křížové propojení MDIchild Tratovou kolejí, kdy o soběbudou navzájem vědět.
S MDI jsem zatím nedělal, ale u jiného programu mi toto fungovalo na několik subformů.
#2 peter
ahoj díky za aspoň nějakou reakci, to co pužíváme momentálně na ty věci okolo výrobních strojů - tikety a dokumentaci, tak je řešené pevným layoutem a dynamickou aktualizací vybraných sekcí layotu, cca 2 statické a 6 dynamických částí, aktualizuje se vždy jen co je potřeba, obvykle se spouští 2 Ajax dotazy jeden na data a druhý na stav stránky, kde pak je kam ty data jdu a které sekce layoutu mají být aktivní případně speciální nastavení jako např. CSS styl (změnou třídy).
Původní autor využíval k zabezpečení obfuskaci a komprimaci JS, a jednu z vlastností jQuery, kdy obsah nahraný přes $element.html(data) není vidět v kodu stránky, tvrdil, že v rámci interní sítě je to dostačující.
Hoj, dostal jsem v práci za úkol rozšířit jednoduchý firemní intranet, zatím jen pár stránek v procedurálním PHP.
Jsem na začátku co použít za prostředí pro Front end a Back end, nebo nějaký vhodný CMS.
Co potřebuji u CMS by bylo potřeba snadné doplňování vlastních knihoven a modulů (widgetů / adonnů) na obou stranách, např. vlastní Systém Tiketů, správa uživatelů a přístupů k jednotlivým sekcím sytému, zobrazování dokumetů jako směrnice, návody nebo technická dokumentace a další, vše v několika stromových strukturách, obsah pro informační panely (cyklické zobrazování několika stránek s dynamicky měněným obsahem, např. stránka s tím co se aktuálně vyrábí na které lince).
Nebo zda si to vytvořit od podlahy sám a jakou kombinaci frameworků použít pro Backend a Frontend
Composer, Nette, Symphony, Node.JS, React atd..
Aktuální stránky využívají na straně serveru procedurální PHP s mySQL databází a na straně klienta JS+jQuery a komunikace AJAX.
#55 hlucheucho
Myslím, že jsou situace pro které se ten tvůj algoritmus hodí například jiné pro jiné různé kombinace než je toto postupné rozsvěcení a zhasínání, ale zrovna u tohoto zadaní se to dá řešit jednodušeji.
U té mojí varianty nemusí hlídat žádné cykly, jediné ošetření u změny stavů led je případ, kdy by zhasly všechny, což asi nechce
;podprogram změny stavu portů
AKCE:
MOV A, STAV1 ;aktuální stav 1.sady LED z paměťového místa nebo registru
RL A ;posuň stav doleva stav D7 do D0
XRL A,#1 ;změň stav D0
MOV STAV1, A ;ulož nový stav 1.sady LED
MOV A, STAV2 ;aktuální stav 2.sady LED z paměťového místa nebo registru
RR A ;posuň stav doprava stav D0 do D7
XRL A,#128 ;změň stav D7
MOV STAV2, A ;ulož nový stav 2.sady LED
;---volitelná část test na zhasnutí stav $FF (oba ho mají ve stejném cyklu)
INC A ;když je zhasnuto $FF, tak +1 znuluje A
JZ AKCE ;opakuj posun aby se rozsvítily D0 a D7
DEC A ;*1) vrácení stavu
;--- konec testu zhasnutí
MOV P1, A ;*2) v A je stále STAV2 pošli na odpovídající PORT
MOV A, STAV1 ;*1)načti znovu STAV1 a pošli na odpovídající PORT
MOV P0, A ;*2) a pošli na odpovídající PORT
RET
;*1) při použití registrů pro stavy vynechat
;*2) - - - / / - - - a na porty poslat přímo dané registry MOV PX, RX
Trošku zmatek v pojmech, dle mého nepotřebuješ BIOS ale firmware a tam by bylo dobré vědět pro jaký BIOS základní desky. Tedy pokud to chceš mít upgradovatelné a ne natvrdo 1 verzi přímo v BIOSu.
Také není info zda systém je 8 nebo 16bitový, že je 8bitová ISA karta neznamená, že to běží na 8-bitovém PC
Nejlepší by bylo zájemcům poslat aspoň základ a ať naprogramují třeba 1 - 2 funkce, obvykle detekci karty a základní inicializaci, k tomu moc informací vědět nepotřebují a mělo by to být otestovatelné, dále v závislosti na firmware by měl být vytvořen též nějaký driver nebo přímo ovládací soft, nejde jen o BIOS+FW.
Myslím, že tohle jsi měl mýt vymyšleno dříve než jsi to začal nabízet a uzavírat smlouvy.
#6 oxidián
Řekl bych, že je pro ně čeština na analýzu trošku těžká proto jí moc nedělají, viz translatory před érou strojového učení, Dnes translatory využívají výkonné servery se strojovým učením, které mají za sebou dlouhodobou analýzu velkého množství textů a jejich lidských překladů do různých jazyků.
#22 oxidián
pokud je poslední pixel a odpovídá
yCurrent := pFirstByte+stride-4;
tak první pixel další by měl být
yCurrent := pFirstByte+stride;
EDIT:
resp spíš yCurrent := pFirstByte+stride-3;
ještě pozor, je třeba zjistit zda je šířka width dělitelná těmi kroky, jinak nutno počítat se zbytkem.
#18 oxidián
DWORD a integer jsou stejně velké a můžeš je rovnou použít i v mém příkladu - velikostně jsou zaměnitelné. Rozdíl je pouze v tom že DWORD je neznaménkový v rozsahu 0....4G-1 a integer je znaménkový což určuje nejvyšší bit v rozsahu -2G...2G-1.
Pak by mělo jít i jednoduché přetypování hodnoty
císloInteger := integer(pointerDWORD^);
zítra mám volno můžu se na to kouknout.
Dále co se týče délky šířky řádku, můžeš řešit buď pomocí cyklu jako v příkladech nebo si načteš scanline další řádky a budeš porovnávat s pointerem na pixel.
Sory za spamování, nebyl jsem na PC, kde jsem přihlášený, takže nešlo editovat.
Jinak myslím, že metoda bitmap.canvas.pixels[X,Y] to řeší efektivněji, respektive má v sobě vše ošetřeno od barevné hloubky po odpovídající načtení barvy, vrací TColor což je v podstatě DWORD..
#2 gna
Souhlasím, pokud tam má i datetime, lze použít, trošku bordel mu to udělá při přechodu z letního na zimní čas, kdy se opakuje jedna hodina, ale pochybuju že bude resetovat počítadlo v noci mězi 2-3h.
Podobně by šlo použít i ID, ale to už nemusí být v některých situacích tak úplně košer.
Tak to mám vyřešené díky, bylo to v pochopení rozdílu mezi čistým array [] a arraylistem {}
Funguje mi to v testu takto, a je to přesně ten způsob který jsem potřeboval pro většinu dat.
list2={}
for (r=2020;r<=2022;r++){
list2[r] = {}
for (m=1;m<=12;m++){
list2[r][m] = {min:r-m, max:r+m}
}
}
a=list2[2020][12].min
if (a) { //TEST
console.log(a)
} else {
console.log("nedefinovaný index")
}
#6 peter
dík, vyzkouším, to je přesně to co jsem potřeboval, ještě otázečka, myslíš že by se daly použít místo roku měsíce a dne použít proměnné, případně řádka textu ze souboru.
Když by to jinak nešlo vygeneruji si ty pole rovnou v exportu a do JS vložím jako include.
#3 hlucheucho
no o chart.js vím.
Vytvoření grafů pomoc HTML5 a canvasu pro mě není problém.
Problém je organizace vstupních dat v JS bo nepoužívám DB a server.
Kopii originálních dat importují laboranti z csv (pouze čtení) uložených na výrobním serveru, do excelu kvůli potřebě doplňování:
- chybějících časů (výpadky el., údržba serveru, apod) - automatika při importu
- kontrolních záznamů
- poznámek k údajům mimo limity
Organizace je v ročních sešitech s listy po měsících a skupinách senzorů.
Jednoduché měsíční grafy nejsou problém udělat v excelu problémem je množství dat (pro každý senzor a veličinu cca 9000 ůdajů/měsíc - potřeba rozdělení např po týdnech nebo dekádách) a grafy mezi roky např, vybraný sensor, měsíc a za každý rok. A navíc tak aby to zvládl obsluhovat laik, tzn nějaký formulář s výběrem senzorů, období, rozložení senzor/měsíce, měsíc/senzory. Navíc tak, aby se to dalo tisknout.
Ahoj,
řeším grafické rozhraní pro několik sensorů a přemýšlím, jak zorganizovat načítaná data resp. zda použít
vícerozměrné pole nebo strukturu nebo objekt-třída, návrhy případně s ukázkou implementace plnění a přístupu k datům
Co se týče dat tak tam jde např. o limity hodnot (teploty, vlhkost) rok a měsíc tzn sensor, rok, měsíc, minT, maxT [, minV, maxV]
případně data: Senzor. rok, mesic, den, hodina a 12 (T) nebo 24 (T+V) hodnot (měření v 5min intervalu)
za nasměrování předem děkuji.
Co se týče výpočtů, tam záleží zda z toho potřebuješ už přesné hodnoty, nebo zda by to nemohlo zpracovávat cílové zařízení.
Pokud potřebuješ, aby se to zpracovalo v MCU, šlo by použít výpočty int s ukládáním pozice desetinné čárky - zde by záleželo na požadované přesnosti. Nebo opravdu zvolit cestu s MCU obsahujícím FPU jednotku.
#13 Honza
Ahoj, koukal jsem se na ten excel, máš tam chybku u těch Tlakových kompenzačních konstant jsou kromě P5 a P6 všechny ostatní znaménkové, tzn P2 P7 P8 a P11 by měli být záporné a ještě upravená hodnota tzn. pro 1B hodnotu, když je větší než 127, tak ~hodnota - 1
#11 Jan
Nejdříve by ses měl naučit základy Assembleru + a organizaci paměti a až poté se pokoušet si hrát s nějakým low-level programováním.
1) or al,1 - logický součet nastaví nejnižší bit,
ta skupina instrukcí znamená načtení 32bitového controlního registru CR0, následné nastavení bitu pro privilegovaný přístup a vrácení zpět do CR0
2) Align je zarovnání adresy umístění kodu/dat v paměti na daný počet Bajtů
tzn aling 16 značí, následující kód nebo data budou uložena na adrese končící .....0000
#1 arden89
pro příště vkládej kód pomocí menu "<?"
1. na začátku procedury, je potřeba vložit do proměnné Zacatek ukazatel na první prvek (ideálně jako vstupní parametr procedury), ten si musíš v programu nějak zapamatova jinak to ztrácí smysl.
2. a v prvním while bys měl testovat Pomocna^.Dalsi <> nill
#19 ZAČÁTEČNÍKDE
no na program se ti podívám dnes nebo zítra večer, včera to nešlo stáhnout.
Každopádně vytvoření složky má několik předpokladů:
1) složka nesmí v daném umístění již existovat
2) musí existovat ..
3) a být správně zadaná existující cesta nadřazeného adresáře
nebo sem dej kod co ti nefunguje a lidi ti to opraví, ale nikdo ti tu nebude vytvářet celý kod od začátku
na většinu práce s adresáři, má delphi 2 funkce např na to vytváření lze použít CreateDir nebo MkDir. U MkDir by to mělo dokonce vyhodit chybu. Každopádně něco by ti to mělo hlásit abys věděl v čem je problém.
#12 ZAČÁTEČNÍKDE
takhle se moc nenaučíš, v tom odkazu máš všechny funkce ohledně adresářů, tak si to vyzkoušej, od výpisu aktuálního adresáře přes změnu cesty po vytvoření nového, v první řadě bych nejdříve zkusil nastavit cestu na C:\Program Files\Raven\Star Trek Voyager Elite Force následně vytvořit ten nový adresář, ono ti to ten adresář možná někde tvoří, ale jinde než chceš.
#9 ZAČÁTEČNÍKDE
vše je v online dokumentaci, stačí se správně zeptat
#1 TomTom
asi budeš muset použít mezistupeň nejdříve zkopírovat data do textového souboru .csv a až ten pak otevřít v excelu.
pozor oddělovač by se neměl nacházet ve vlastních datech jinak to bude dělat neplechu, např pokud bude oddělovač pomlčka a budeš mít nastaven formát data a času na rr-mm-dd, tak se mlže stát že ten datum bude rozložen do více sloupců.
Myslel jsem i na další varianty
spočítání znaků a slov, alokace pole na pointery a pole pro kopii věty, kopie věty s nahrazením delimiterů a uložením začátků slov do pole pointerů opět 3 průchody počítání/kopírování/náhrada delim s uložením pointerů
další 2 průchodový algoritmus byl se zásahem do původního
1 průchodové varianty by se také našly ví o dvou
- alokovat pole pointerů a cílového řetězce určité velikosti a rovnou kopírovat, nahrazovat delimitery a ukládat pointery, při překročení kapacity pole pointerů nebo cíle realokovat na vyšší kapacitu
- struktura 2x char** první ukazuje na slovo, druhý na další strukturu opět s alokací a realokací cílového řetězce
jako představit si to dokážu, ale jde občas o ty operace a pointery.
#11 Kit
souhlasím, včera jsem ty pointery vyřešil mám to hotové bez struktury jen holé
pointer1+slovo0 , pointer2+slovo1....pointer poslední+slovo předposlední , pointer=0 slovo poslední
samozřejmě s uložením startovního pointeru pro další práci a následné uvolnění
#9 Kartmen
ORM je v podstatě mapování zdroje na cíl, u jednoduchého přímého bez kontrol to je otázka chvilky, u složitějšího s kontrolami to může trvat déle podle množství kontrol,
Co se týče řešení, tak záleží na předpokládaném procentu chybovosti, u nízké chybovosti bych udělal import bez kontrol a až u nepovedených importů bych záznam prohnal kontrolou nebo zkopíroval do chybové tabulky, kde by se provedli opravy a následně do importovali,
EDIT: Případně zvolit default hodnoty naimportovat a pak záznamy vyfiltrovat podle těch default hodnot a zkontrolovat.
#3 fix
Jen by se to mělo řešit křížovou tabulkou
v tabulce filmy jen ID a název
- 1 | Titanic
- 2 | Machři
- 3 | Indiana Jones
- 4 | Harry potter
přidat tabulku FilmZanr, kde budou propojené filmy s žánry
....ID_filmu | ID_zanru
- 1 | 5
- 2 | 1
- 2 | 7
- 3 | 9
- 4 | 8
- 4 | 10
to samé pak na např na herce a štáb
ID_filmu | ID_funkce | ID_Clovek - v tabulce funkcí třeba scénář, režie, kamera, herec atd
- v další tabulce mít lidi od filmu
- případně ještě jeden sloupec pro herce koho ve filmu představují, bud jako přímou hodnotu nebo zas přes tabulku
#15 MilanL
Jinak každý má svůj způsob práce.
Já se např nejdříve soustředím na funkčnost a až pak na refactoring a optimalizaci.
Ted jak jsem to procházel jsem přišel na další optimalizaci přibližně 1/3 řádek u Loadu a 1/2+ u čtení klíčů by se dala zredukovat.
Hlavní je co největší čitelnost a přehlednost kodu, alespoň pro autora, abys i za 5 let věděl co jak a proč jsi dělal.
Cest je vícero, záleží co ti vyhovuje a na tom jak s těmi objekty chceš pracovat. Někdy stačí nastavení a výchozí zpracování provést hned v konstruktoru jindy je lepší si ty fáze práce rozložit, obvykle není problém construktor přetížit a udělat jeden základní jen vytvoření objektu a druhý rovnou se zpracováním.
Každopádně bych zpracování oddělil do samostatné metody, tzn
construktor(owner) - vytvoří objekt
constructor(owner, FilePathName) - vytoří objekt nastaví file a přesměruje např na Load
SetFile(FilePathName) - samostatné nastavení souboru
Load - načtení a zpracování souboru
Já mám podobně načítání configurace v delphi z INI file
v construktoru nastavím cestu a název souboru a příznak stavu /ne/načteno
pak mám funkce
fromCFG a toCFG, první načítá druhá ukládá nastavení
funkce mají kolem 100 řádek rozdělených podle sekcí INI po cca 25-30 řádkách
celkem asi 40 klíčů ve 3 sekcích, na načítání klíčů mám podle typu proměnné přetíženou metodu ctiKlic(sekce,klic,proměnná), která vrací zda se povedlo nebo nepovedlo načíst
projdu všechny klíče a pokud se nepovedlo načíst vše co je potřeba, spustí se konfigurační dialog.
#44 klimenko
Hezký, aspoň že jsi na to přišel, jinak měl jsem to už v té první odpovědi #2, že máš zkontrolovat řídící vstupy.
#2 MilanL
ahoj, bez kodu a schémátka, to bude asi těžký, pokud má ten pin také něco spínat jako reakce na nějaký vstup, tak bude nejspíš problém v tom.
Jinak já jsem se díky tomu z reakcí na to schémátko, také dozvěděl pár nových věcí, za což jim (HU a Jerrymu) děkuji.
Mám několik nápadů co bych si pro sebe a domů chtěl stvořit, tak aspoň vím na co si dát majzla, zatím to připravuji na vývojovém kitu, hodit se to bude až budu navrhovat konečné cílové schéma..
#1 Tereza Černá
no nevím není vidět program takže nevím jestli ty řádky jsou definicí funkcí nebo jejich voláním.
typoval bych že chyba bude u varargin(:) nebo u sum ( : , ...)
to lze podle mě použít při definici funkce, ale už ne při jejím volání tam je třeba mít skutečný předdefinovaný objekt/pole. proto ta chybějící reference nebo pole.
MATLAB neznám tak nevím co dovoluje a co ne odhaduji podle typu chyby a vzhledu řádek
#5 klimenko
pak bych tedy ještě zkontroloval vstupy, jestli ti tam něco po tom resetu neleze.
Zkusil bych po resetu nastavit RB na výstup a znulovat a následně 3-5s pauzu před dalším zpracováváním, tím odhalíš, zda to dělá reset nebo nějaký stav na vstupech.
Když v zapojení s oddělenýn napájením ti to funguje a se společným ne, tak je tam u toho napájení něco špatně.
#1 JM
kod ti tu nikdo dělat nebude, v podstatě je to pro laika na 5-10 min hledání pomocí strejdy Googla
1) vytvořit/otevřít XML soubor
2) otevřít csv soubor
3) pomocí cyklu procházet csv řádku po řádce
4) pomocí funkcí PHP nebo vlastních rozparsovat řádku CSV na jednotlivé údaje
5) uložit údaje z dané řádky dle požadované struktury do XML
variantou je zjištění struktury dle prvního řádku csv
další variantou/doplňkem je případná kontrola hodnot
tak jsem ještě trošku pohledal, zkus tohle
https://stackoverflow.com/questions/29510540/adding-a-mouselistener-mouseevent-to-each-object-in-an-objects-list
#1 Gesler
tak jak to máš to asi nebude fungovat nebo jen na ten poslední.
navíc to přiřazuješ tomu tmp, nejsem si jist u javy jestli to funguje takto. zkusil bych to přímo
místo
tmp.setOnMouseDragged(new EventHandler<MouseEvent>() {
dát
circles[i].setOnMouseDraged.....
případně si vytvořit vlastní třídu
class MyCircle extends Circle
s tím draged eventem
#9 krpik
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
Call conecDB()
Form1.DateTimePicker1.CustomFormat = "yyyy-MM-dd"
Form1.DateTimePicker1.Format = DateTimePickerFormat.Custom
Form1.DateTimePicker2.CustomFormat = "yyyy-MM-dd"
Form1.DateTimePicker2.Format = DateTimePickerFormat.Custom
Dim cmd As New MySqlCommand("
SELECT sum(ROUND(s.celkovacena,2)) AS suma, hotovost
FROM platby
WHERE (hotovost = 1 or bezhotovost = +)
and placeno = 1 and storno = 0
and cas BETWEEN '" & Form1.DateTimePicker1.Text
& "' AND '" & Form1.DateTimePicker2.Text & "'
GROUP BY hotovost ", connDB)
cmd.ExecuteNonQuery()
Dim i As MySqlDataReader = cmd.ExecuteReader()
While i.Read()
if i("hotovost")=1 then
//nebo ="1"//
Label3.Text = i("suma")
else
Label5.Text = i("suma")
End While
i.Close()
Catch ex As Exception
MessageBox.Show(ex.ToString)
connDB.Close()
connDB.Dispose()
End Try
End Sub
navíc pokud budeš dělat DPH pro víc sazeb, tak to budeš muset opět nějak rozlišit
jako SQL ti vše spočítá, ale je zbytečné na každou věc dělat extra query.
#6 Borisek
no pokud nejde čeština, je potřeba to překódovat.
např. https://stackoverflow.com/questions/9844250/not-able-to-send-utf-8-email-using-delphi-indy
#4 Borisek
nejdřív stačí zjistit jestli ti login projde true nebo false
jinak zkus tohle, je tak krok po kroku sledování těch fází spojení
http://www.ararat.cz/synapse/doku.php/public:howto:smtpsend
nebo podle verze delphi použij indy
#6 peter
jo ty chyby znám snažím se si to hlídat, navíc sublime si to hned páruje takže dáš začáteční závorku je jedno jakou a hned to udělá i koncovou a ty vkládáš mezi ně, to samé u uvozovek a apostrofů. Jen při přidání doprostřed hotové řádky podle umístění to někdy udělá trošku jinak než člověk potřebuje.
horší je že si nemůžu zvyklnout na == v podmínkách furt tam cpu = a pak se divím jak to blbne, protože to neohlásí chybu, není to syntaktická chyba.
dík za rady.
#17 KIIV
kdyby jen konvence ale i způsob zacházení s daty
#1 Petr35
doplnění #16 syscall volání pro výpis na obrazovku a exit je pro LINUX
a je to na předem definované pole, pokud by byl nějaký jiný vstup ze souboru nebo terminálu, bylo by potřeba, to upravit
celé mi to trvalo necelých 30 minut, algoritmus byl vymyšlený za chvilku, nejvíc času mi zabrala úprava syntaxe pro nasm a následně nastavení kompilace na x86-64,
drobná oprava měnil jsem pojmenování rutiny pro ten převod čísla zapoměl jsem změnit u cyklu loop
loop _toDec má být _HEXtoDec
tDend:
#1 Petr35
měl jsem dnes chuť to zkusit vytvořit
použit online kompiler
https://www.tutorialspoint.com/compile_assembly_online.php
případné nastavení kompilace v Project-Compile options:
nasm -f elf64 *.asm; ld -m elf_x86_64 -s -o demo *.o
section .text global _start ;must be declared for using gcc _start: ;tell linker entry point mov rdi, poleA ;pointer poleA mov rsi, poleB ;pointer poleB mov rcx, lenA ;prvků v poli A call _hamming ;vrátí počet rozdílů v RAX mov rdi, msgK ;adresa pro převod HEX na DEC od konce dec rdi ;-1 znak odřádkování mov rcx, lenmsg ;znaků pro číslo (aktuálně 32 lze zvýšit) call _HEXtoDec ;převod HEX na DEC, RAX číslo, RDI cíl, RCX max číslic ;vrátí v RDI začátek čísla mov rdx, msgK ;vezme adresu konce sub rdx, rdi ;odečte adresu začátku => RDX délka zprávy mov rcx, rdi ;začátek zprávy
mov rbx, 1 ;file descriptor (stdout)
mov rax, 4 ;system call number (sys_write) int 0x80 ;call kernel
mov rbx, 0
mov rax, 1 ;system call number (sys_exit)
int 0x80 ;call kernel _hamming: ; vstup ESI a EDI pointery na pole, ECX velikost poleA xor rax,rax ;počítadlo hammL: mov rbx, qword [rdi] cmp rbx, qword [rsi] je hammL2 inc rax hammL2: add edi, 8 add esi, 8 loop hammL ;opakuj pro prvky pole ret ;RAX počet rozdílů ;převod čísla HEX na DEC-string _HEXtoDec: ;RAX = value, RDI = dest od konce, RCX = dest size
and rax, rax jz tDend mov rdx, 0 mov rbx, 10 div rbx add rdx, 0x30 mov [rdi], dl dec rdi loop _toDec tDend: ret ; v RDI začátek section .data poleA dq 1, 0, 0, 1, 0 lenA equ ($ - poleA) / 8 poleB dq 1, 1, 0, 1, 1 lenB equ ($ - poleB) / 8 msgZ times 32 db 0x20 msgK db 0x0A lenmsg equ msgK - msgZ
mov
Totální nepochopení programování a algoritmů.
Neschopnost si cokoliv najít sám a opsat to správně z knížky,
Mě to připadá spíš jako úkol do školy.
V příkladu jsou věci co by student měl znát po pár základních lekcích.
V pythonu nedělám a nevšiml jsem si řešení od GNA, ale všechny chyby od překlepu v Importu přes špatné uvozovky po chyby v odsazení jsem měl vyřešené za necelých 5 minut.
#10 Lisiak46
ahoj.
Počet kombinací ty podmínky sníží hodně, ale stále je tu časová otázka generování kombinací a jejich testování.
Rychlost by hodně záležela od způsobu generování kombinací. Jde o to, že pokud bys šel sekvenčně kombinace po kombinaci, lze některé vyřadit rychle, ale u jiných pak musíš analyzovat celý řádek.
Např pokud by sis generování 2x32b => 64b rozložil ,a generování 8B (8x 8b), celkem rychle vyřadíš kombinace, kdy se 1B skládá ze 4 stejných párů 00000000, 01010101, 10101010, 11111111 a B před končí nebo B za začíná stejným párem, navíc se v tomto případě dá přeskočit relativně velká část kombinací v závislosti na pozici výskytu. U dalších bys pak musel porovnávat konce a začátky sousedících B., kolik stejných je na konci jednoho a na začátku druhého
#1 juraj175
pokud jde o vzdálenost mezi pozicí, tak jde o celkem jednoduchý výpočet vycházející z pythagorovi věty, jen aplikované na 3D
tzn
vzdálenost^2=(o1.X-o2.X)^2+(o1.Z-o2.Z)^2+(o1.Z-o2.Z)^2
https://forum.unity.com/threads/distance-between-two-objects.37918/
a zbytek lze udělat při jednom z těch průchodů výpisu pole, do jedné proměnné sčítat do dalších dvou proměnných hledat minima maxima, porovnáš číslo odpovídajícím způsobem s aktuálním minimem nebo maximem a když se splní podmínka dáš do proměnné novou hodnotu, následně po výpisech pole vypíšeš dané hodnoty součtu, vypočteš průměr, a pak min max.
Ty postupy jsou určitě k nalezení na netu, rozdíl u arduina je pouze v potřebě směrování výstupu na serial port.
#5 Lisiak46
to vypadá jako oprava starých fotografií, chtělo by to více řádků okolo pokud chybí řádek dole tak 3-5 nad a pokud není úplně dole tak pár 1-3 pod. Pak by se dala provést nějaká analýza po blocích XxX pixelů s různými úrovněmi překrývání a tím najít v rozumném čase několik nejpravděpodobnějších kombinací.
#2 hlucheucho
Záleží jestli jsou ty funkce povolené, pokud to má jako úkol tak nejspíš ne.
#1 nika
základem je procházet původní řetězec znak po znaku a přes podmínky detekovat zda je znak číslo, na začátku si vytvoříš nějako dočasnou proměnnou vynulovanou, když v řetězci najdeš číselný znak, vynásobíš dočasnou 10 a přičteš číselnou hodnotu znaku, když dojdeš na nečíselný znak uložíš dočasnou hodnotu do pole pro výsledky a vynuluješ a takto pokračuješ dokud nedojdeš na konec řetězce.
Tohle je základní algoritmizace. Také jde na internetu najít spoustu řešených příkladů i zde na programujte foru už to určitě bylo.
#7 gna
já myslím, podle jeho popisu co mu to dělá, že mu to upraví pozice, aby se prvky v řádku vešlí na řádku, ale nepřizpůsobí se jejich velikosti, takže ty componenty se překrývají jen nevím v jaké míře, znamená to, že první label začíná klasicky vlevo, první text pole už začátkem překrývá, ten první label, druhý label leze do prvního text pole a druhé text pole do druhého labelu atd.
hodil by se výřez screenu
#2 m6692
pro začátečníka stačí i zdarma kurzy, hlavní je si to i hned zkoušet. Placené se vyplatí až budeš mít alespoň nějaký základy.
Zkus třeba
https://www.itnetwork.cz/cplusplus
mají tam části co jsou free a i placené e-learningy a dokonce ted zrovna se slevou.
#1 PetrJansky
je třeba ukázat (ne Screen, ale přes tlačítko <? přímo kód daný úsek kódu) , část/funkci načítání a část/funkci porovnávání, může to být třeba jen typový nesoulad při uložení nebo porovnávání ať už u indexu/ukazatele nebo obsahu.
#1 oxidián
hele ty různé významy a kontexty nejsou tak odlišné od češtiny.
Jinak na tuhle analýzu už by to chtělo pracovat s DB,
K jednotlivým slovíčkům bych nadefinoval indexy kontextů v rámci slovních spojení
K testům bych přidal indexy kontextů tech slovíček v rámci té fráze.
Pak můžeš vyhodnotit i jednotlivá slovíčka z fráze, např odpovídá sloveso a rod a neodpovídá čas apod.
#4 PascalMlaskal
To jsou základy programování, stačí si najít nějaký jednoduchý tutoriál na internetu.
Když necháš někoho udělat za sebe tyhle jednoduché školní úlohy, tak se nic nenaučíš, a později až budeš potřebovat něco složitějšího, tak s tím nehneš už vůbec. Také jde o školu případně obor co děláš, někde je programování jen okrajově, aby studenti měli základní přehled jak to vlastně funguje, jinde se jde hlouběji.
Je to také cesta k rozvoji analytického a tvůrčího myšlení.
#3 Pavelv
Souhlasím s Kitem
Na editaci můžeš ještě zkusit Sublime text.
RRDTool jsem chtěl také navrhnout, má to výhodu pevně nastavené velikosti DB, nevýhodou je, že starší data jsou postupně průměrována za delší a delší období.
Dnes by pro šikovnějšího programátora neměl být tvorba grafů problém v OpenCL, viděl jsem webově řešenou správu cesty zpracování vody pro výrobu schema zařízení v DB (pozice případně rozměry ikon prvků, definice linek propojení a kontrolních bodů) při kliknutí na kontrolní bod se zobrazí popup graf nebo tabulka.
#5 hlucheucho
takže taková kombinace původního a mého co?
ono ty subselecty si v podstatě také dělaj dočasné tabulky, ale nejspíš jen v paměti takže to může být rychlejší, než to vytvoření klasické dočasné tabulky.
Zkus srovnat časy provedení.
#1 hlucheucho
je třeba tam mít navíc to Measifno začátek konec, když je tam ten between na čas?
zkusil bych to nějak takhle
select Teploty.[Datum a čas], Teploty.pec1, Teploty.pec2
from Teploty
where (DATEDIFF(second,
(select min([Datum a čas]) from
(select [Datum a čas] from Teploty
join #MeasInfo ON
[Datum a čas] >= zacatek AND [Datum a čas] <= konec
where Teploty.[Datum a čas] between '2020-04-01 13:43:25' and '2020-04-01 13:44:00'
)
), [Datum a čas]) % 5) = 0;
#5 solide
není možné, že jsi ten disk naklonoval už s těmi problémi co ti dělá windows?
jinak jsem na takový problém, že by naklonovaný disk s Win nefungoval zatím nenarazil, windows jsou vázané na Mainboard, obvykle pokud nemáš přenositelnou licenci se dokonce ukládá win licence do BIOSu, a licence se ověřuje/aktivuje online přes MS databázi. Takže pokud naklonuješ disk a vložíš ho do PC kde byl původní, neměl by být žádný problém.
Jinak ti nezbyde než si udělat zálohu dat a win přeinstalovat načisto.
#3 MP1999
ahoj, základem bude knihovna cert viz.
https://docs.oracle.com/javase/7/docs/api/java/security/cert/package-summary.html
co se týče práce, záleží kde chceš mít uložený ty přihlašovací data a zda bude více uživatelů, případně zda ten přístup tokenem jen pro sebe jako admina nebo i pro další uživatele.
co se týče stránek k certifikátům v javě, tak skoro vše se týká bud podepisování aplikace nebo javascriptu.
#1 MP1999
měl by sis něco zjistit o těch certifikátech jak to vlastně funguje.
Hlavně jde o to jestli to USB je opravdu přímo TOKEN nebo jen fleshka s nahranými certifikáty.
Každopádně se takto ty certifikáty co jsi psal nepoužívají - jsou to el.podpisy, používají se spíš jako druhý faktor ověřování, kdy se například pošle elektronicky podepsaný login, ten může být případně i statický tzn nějaká řetězcová konstanta v programu.
Také jde o rozsah pole a jeho hodnot, v některých případech, když hodnota součtu bude uvnitř intervalu hodnot pole, by se mohlo vyplatit i najít, pomocí algoritmu půlení, v poli nejbližší číslo menší nebo rovno hodnotě součtu a hledat pak v tomto redukovaném rozsahu pole.
já to psal narychlo, ted mi došlo, že jsem do toho lámání nezapočítal rozdělení jedné řady, takže máte pravdu vychází to na těch 34 :(
u rozdělení na elementární části lze v podstatě vyjít i z celkového počtu, je potřeba X*Y-1
Zajímavější by byla otázka rozdělení tabulky na nejmenší možný počet čtverců případně čtverců nějaké minimální / maximální velikosti, nebo na obdélníky s daným poměrem stran
#1 Marek
nevhodné použití rekurzivity, při stejných hodnotách neúměrný počet vnoření > vysoká režie na rekurzivní volání jak časová tak paměťová na lokální proměnné.
jednoduchý cyklus bude několikanásobně rychlejší.
rekurzivitu bych využil až v případě rozdělení do vláken ale i tam bych si pohlídal urověň vnoření.
EDIT: pokud to opravdu potřebuješ řešit rekurzivně tak máš 2 možnosti
- jít z obou konců zároveň počet rekurzivních volání jde na 1/2
- půlením tam, ale stoupá časová režie na výpočty pozic intervalů, vyhodnocování jde po větvích, max počet souběžnách vnoření = log2(n)
druhou cestou je vytvoření funkce, která ti vrátí seznam lokálních zdrojů ODBC
neco jako je zde: https://communities.actian.com/s/article/Can-I-get-a-list-of-ODBC-Data-Sources-through-Visual-BasicNET6951
#1 krpik
záleží jak moc to chceš zabezpečit.
Já to měl udělané tak, že jsem měl ty údaje connect stringu v INI souboru (jmého a heslo jsem měl zašifrované malou interní funkcí), do comboboxu jsem načetl jen seznam DB a po výběru jsem si načetl z INI daný connect string
Tedy tohle není jednoduché udělat ani programově natož přímo pomocí SQL, důležité tam je to "nesmí být podobný", jde o úroveň podobnosti, to je skoro na AI.
jeden příklad za všechny stačí přehodit slovosled, např:
Excel práce s DATETIME
Jak použít DATETIME v Excelu
texty nejsou stejné, úroveň podobnosti je cca 40%, významová shoda je kolem 90%
#3 Jataky
hm teď jsem na to koukal mám tam u zpárování v ON navíc 1 písmenko místo .id_filtr jsem tam psal id_filtry, jinak by to fungovat mělo
jinak je to totéž co to tvoje, navíc mám ošetřené stavy, kdy u některé položky jeden z typů nakup_vymena N V chybí.
a ještě ten 3. řádek s WHERE by měl být jako poslední, dělal jsem to na rychlo bez možnosti vyzkoušení.
#1 Kenvelo
Řekl bych, že základní princip programování je stejný, jen je potřeba brát v úvahu HW a Systémové možnosti zařízení.
U HW jde o druh a typ procesoru velikosti a druhy pamětí apod,
Systémové možnosti závisí na platformě operačního systému, trošku jinak se programuje pro Windows, Windows S/RE, linux (různé distribuce), IOS, Android atd.
Vetšinou je třeba použít odpovídající knihovny případně si knihovnu udělat.
#1 Jataky
ty 2 dotazy musíš dát jako sub selecty a nad nimi udělat slučovací, hodím ti základ, jen pak možná bude potřeba ošetřit některé stavy.
SELECT id_filtr, COALESCE(A.suma,0)-COALESCE(B.suma,0) as rozdil
FROM zmeny_filtry S
WHERE nakup_vymena="N" or nakup_vymena="N"
LEFT JOIN
(SELECT id_filtr, sum(kusy) as suma FROM zmeny_filtry
WHERE nakup_vymena="N" group by id_filtr) A
ON S.id_filtry=A.id_filtry
LEFT JOIN
(SELECT id_filtr, sum(kusy) as suma FROM zmeny_filtry
WHERE nakup_vymena="V " group by id_filtr) B
ON S.id_filtry=B.id_filtry
COALESCE(A.suma,0)-COALESCE(B.suma,0) as rozdíl
coalesce udělá to, že pokud v A nebo B subselectu nebude hodnota pro dané ID, tak místo NULL použije hodnotu 0