Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Filip Jirsák

Stran: 1 ... 50 51 [52] 53 54 ... 375
766
Vývoj / Re:Hledání a nahrazování pomocí JavaScriptu
« kdy: 05. 01. 2022, 16:30:08 »
On ale nechce homeless detekovat jako home.
Jedině v případě, že „homeless“ i „home“ jsou v seznamu zadaných tokenů. Jinak v zadání není nic o tom, že se mají nahrazovat jen celá slova, ani nic o tom, že tokeny nemohou obsahovat mezery, pomlčky, podtržítka, znaky s diakritikou…

Jak jsem psal, největší problém je správně specifikovat zadání. Řešení už pak bude snadné.

767
Vývoj / Re:Hledání a nahrazování pomocí JavaScriptu
« kdy: 05. 01. 2022, 16:17:23 »
...
Zadání je naprosto jasné a tvoje řešení nesmyslně komplikované.

Ne, ze zadání nebylo jasné, čím se má nahrazovat. Dalo se chápat tak, že v textu „<a href="/user/john">@john</a >“ chce nahrazovat „@john“, „@johnathan“ a „@sarah“, ale není řečené čím – dalo by se předpokládat nějaké zobrazované jméno, přezdívka, celé jméno nebo něco takového.

Moje řešení je na pár řádek JavaScriptu. Nějak optimalizovat počet průchodů stringem nedává smysl, bavíme se o implementaci v JavaScriptu. Použití regulárních výrazů by to jen zkomplikovalo, musíte řešit escapování znaků. Navíc nic jako „hranice slova“ vám nijak nepomůže, protože nevíme nic o těch textech – jestli tam hranice slova mají nějaký význam nebo ne. Každopádně pořád je moje „komplikované“ řešení dalek olepší, než vaše neexistující řešení.

768
Vývoj / Re:Hledání a nahrazování pomocí JavaScriptu
« kdy: 05. 01. 2022, 16:09:41 »
Obecně řešení pana Jirsáka není dobře (v textu nahradím řetězec X za Y, čímž v něm vznikne řetězec Z, který je v seznamu tokenů pro další zpracování).
Nenazýval bych „není dobře“ něco, co splňuje zadání. To, že zadání nespecifikovalo chování v této situaci je chyba zadání, ne řešení :-)

Než jsem vám stihl odpovědět, že máte neúplné zadání, tak jste si našel odpověď. Zrada, proč vaše zadání nebude fungovat je nejasná definice chování replace. Ono #home je substringem #hometown a tudíž by se to nejspíš mělo zacyklit. Tak zní zadání.
Kam chodíte na to zacyklení? Když mám seznam náhrad a procházím ho od začátku do konce, nemůže dojít k zacyklení, protože dojdu na konec toho seznamu náhrad. K zacyklení by mohlo dojít tehdy, pokud bych se na konci seznamu náhrad vrátil zase na začátek a začal nahrazovat vše znova (dokud v poslední obrátce došlo k nějakému nahrazování). To je ale nesmysl. Něco takového by se dělalo jedině v případě, že by se v makra v náhradách měla zase rozvinout. Ale tam je možnost zacyklení z definice a musí si to pohlídat autor těch maker (a je to špatný návrh). A kdyby to přeci jen bylo někde potřeba, omezí se tam počet zanoření maker – pokud by se mělo celé nahrazování opakovat třeba po 11, vypíše se chyba, že je možné zanořit max. 10 úrovní maker.

769
Vývoj / Re:Hledání a nahrazování pomocí JavaScriptu
« kdy: 05. 01. 2022, 15:51:34 »
ano, a skoncis v nekonecnej slucke...

Kód: [Vybrat]
<a href="/user/john">
     <a href="/user/john">
           <a href="/user/john">
                 <a href="/user/john">...</a>
           </a>
     </a>
</a>
Ne, neskončím. Když nahrazuju @john za john, nemůžu skončit v nekonečné smyčce. Dokonce neskončím v nekonečné smyčce ani při nahrazování @john ta @john, protože všechny funkce replaceAll() ve všech jazycích si vždy pamatují pozici, kde text nahradily naposledy, a pokračují dále, takže se nezacyklí.

Keby to bolo take lahke tak sa tu nepytam.
Nejkomplikovanější na tom evidentně bude zadání. Když chcete něco nahrazovat v textu, dejte sem příklad vstupu a odpovídajícího výstupu.

Pokud máte problém s tím, že chcete nahrazovat @john → xxx@johnxxx a @johnatan → xxx@johnatanxxx, ale když už jednou nahradíte @johnatana, nechcete to pak znovu nahrazovat jako @johna, pak si prostě místo nahrazování jenom zapamatujte pozice, kde se má něco nahradit, a náhradu proveďte až na konec. To zapamatování pozic je nejjednoduší udělat tak, že si vytvoříte seznam, kde se budou střídat textové části a náhrady, a v příštím kole budete nahrazovat jen v textových částech.

Začnete tedy se vstupem:

Kód: [Vybrat]
[
  "@john and @johnathan went to see @sarah in their #hometown to look at her new #home.",
]

Nahradíte @johnathan:

Kód: [Vybrat]
[
  "@john and ",
  {replace: "@johnathan"},
  " went to see @sarah in their #hometown to look at her new #home.",
]

Pokračujete náhradou @john ve zbývajících textech,

Kód: [Vybrat]
[
  {replace: "@john"},
  " and ",
  {replace: "@johnathan"},
  " went to see @sarah in their #hometown to look at her new #home.",
]

Na závěr pole projdete, texty necháte jak jsou a objekty označující náhradu nahradíte nahrazujícím textem. A pak už jen pole spojíte do stringu.

Celé to samozřejmě děláte tak, že pole nahrazovaných textů je seřazené podle délky od nejdelšího, jak jsem psal na začátku.

770
Vývoj / Re:Hledání a nahrazování pomocí JavaScriptu
« kdy: 05. 01. 2022, 13:35:46 »
Seřadit tokeny od nejdelšího po nejkratší a pak jeden po druhém nahrazovat.

771
Hardware / Re:Flash disk se zabezpečením
« kdy: 05. 01. 2022, 13:33:40 »
Flash disk, který potřebuje pro zabezpečení speciální software, je dobrý akorát tak k tomu, aby se k datům nedostal někdo, když flashku někde ztratíte. Jinak ji můžete používat jen na zařízení, kterému důvěřujete a víte, že tam není keylogger – a to už můžete použít normální flashdisk a na něm použít třeba VeraCrypt.

Pokud to myslíte se zabezpečením vážně, je potřeba, aby se bezpečnostní kód zadával přímo na tom flash disku. A pak samozřejmě také záleží na tom, jak je zabezpečený samotný flash disk. Tam se můžete řídit certifikacemi (taková zařízení ale nebudou levná), případně recenzemi. Já jsem si kdysi na základě článku Test bezpečných flash disků: Slib ochrany dat naplní jen málokterá USB klíčenka vybral Corsair Padlock 2.

Ale pokud vám jde jenom o případnou ztrátu a víte, že tam nebudete mít nějaká citlivá data, stačí asi cokoli s libovolným zabezpečením – akorát je dobré si pohlídat, zda tam není nějaká banální chyba jako že se to dá odšifrovat továrním heslem 0000. A nebo použít ten VeraCrypt.

772
Vývoj / Re:Chování seznamu v Pythonu
« kdy: 05. 01. 2022, 11:57:16 »
Nastudujte si rozdíl mezi předáváním hodnotou a referencí. Hodnota je samotný údaj (třeba číslo), reference je jenom odkaz do paměti, kde je ta hodnota uložená. Kdyby se pole předávalo hodnotou, znamená to, že se musí celé pole zkopírovat – což by u velkého pole trvalo nějakou dobu a navíc byste potřeboval paměť pro dvě kopie pole. Když někam předáte referenci, zkopíruje se jenom a reference (odkaz do paměti, což je jen nějaké číslo). Pak ale máte dva (nebo více) odkazů na stejné místo paměti – a když v té paměti něco změníte, změní se ten údaj, ať se na tu paměť díváte přes kteroukoli referenci.

773
Software / Re:Jak klient volí z více A záznamů v DNS?
« kdy: 04. 01. 2022, 18:19:46 »
Klient to volí, jak chce. Není na to žádný standard ani příznak.

Obvykle je to tak, že klient postupuje od začátku seznamu. Pokud počítá jen s jedním záznamem, použije ten první a pokud něco selže, vrátí chybu. Pokud je klient schopen pracovat s více záznamy, vyzkouší první záznam, když je neúspěšný, zkusí druhý záznam atd. Co je „neúspěch“ záleží na klientovi – neúspěch může být to, že se nepodaří sestavit TCP/IP spojení, ale neúspěch také může být, že při HTTPS komunikaci vrátil server kód 500 (není to obecné pravidlo, prohlížeče se tak nechovají, ale v některých aplikacích může v některých případech takové chování dávat smysl).

Toho využívají DNS servery a pokud chtějí dělat rozvažování zátěže, mění pořadí záznamů v odpovědi. Asi nejjednodušší je round robin – server má DNS záznamy nějak seřazené a při každé odpovědi klientovi (nebo jednou za čas) přesune první záznam v seznamu na poslední místo. Nebo může DNS server dávat na začátek seznamu DNS záznamy serverů, které jsou ke klientovi síťově blíž. Případně se to dá různě kombinovat, na začátku seznamu budou round robinem točené záznamy pro servery, které máte blízko, na konci seznamu pak budou jako záložní servery někde daleko.

Tj. pokud chcete do pořadí DNS záznamů dávat nějakou logiku, řeší se to na serveru a předpokládá se, že klient bude záznamy brát od začátku.

774
Server / Re:Gmail zahazuje maily?
« kdy: 04. 01. 2022, 11:18:49 »
chybová hláška je identická jako v prvním příspěvku tohoto vlákna. Stejně tak je to napsané v mém předchozím příspěvku. Omlouvám se, křišťálovou kouli mám rozbitou, abych si zjistil, že si nepřečteš celou diskuzi na kterou reaguješ.
Já jsem ten předchozí příspěvek četl, ale nebylo z něj zřejmé, že dostáváte identický chybový kód se stejným textem.

V tom případě ale nevím, proč se ptáte, v čem je problém, když je to v té chybové zprávě napsané. Doména, ze které e-maily posíláte, má špatnou reputaci – asi z ní bylo dříve zasíláno velké množství spamu. Když se zaregistrujete do Postmatser Tools, uvidíte, jak moc špatnou reputaci vaše doména má.

775
Vývoj / Re:Odesílá php mail() přímo cílovému SMTP?
« kdy: 04. 01. 2022, 08:55:05 »
Dá se to i pěkně schematicky znázornit, jak e-mail putuje:

MUA odesílatele → MTA → MDA → poštovní schránka (ze které si jej vyzvedne MUA adresáta)

Případně těch MTA může být několik za sebou:

MUA odesílatele → MTA → MTA → MTA → MDA → poštovní schránka.

776
Vývoj / Re:XSD a "dedicnost" minInclusive, maxInclusive
« kdy: 03. 01. 2022, 15:50:33 »
To bylo první, co mne napadlo – proč to tak vlastně chcete. Odvozování typů se v XML schématu používá pro jednodušší vytvoření a správu schématu (abyste se nemusel opakovat), nevyjadřuje to nic o vztahu objektů ve schématu. Napadá mne jako příklad, že chcete mít možnost někde zadat den v týdnu v rozsahu 0–6 nebo v rozsahu 1–7. To by se ale v XML schématu nevyjadřovalo pomocí odvozování typů, ale pomocí elementu choice, ve kterém by bylo na výběr z těch dvou typů.

Základy XSD se dají načíst u Jirky Koska: XML schémata. Nic, co by šlo víc do hloubky, ale neznám – ani v angličtině. Pak už je potřeba jít přímo do specifikace, kde ale většinou chybí „proč“, takže je to na studium dost obtížné.

777
Vývoj / Re:XSD a "dedicnost" minInclusive, maxInclusive
« kdy: 03. 01. 2022, 15:17:41 »
Ahoj,
mam v XSD typ NumericWeekdayT s restriction minInclusive a maxInclusive. Z nej mam extended type WeekdayT. U toho bych ale chtel mit jiny hodnoty pro minInclusive a maxInclusive. Jakpak se to da udelat?

Pomocí restriction se to odvodit nedá, protože tím říkáte, že na odvozený prvek platí stejná omezení, jako na rodičovský, plus případně nějaká další. Vy ale chcete navíc povolit i hodnotu 0, která v rodičovském prvku povolená není.

Napadá mne jenom jinak uspořádat tu hierarchii – vytvořit jeden rodičovský typ, na který nastavíte nějaká společná omezení, a od něj pak oddědit NumericWeekdayT a WeekdayT.

778
Vývoj / Re:Odesílá php mail() přímo cílovému SMTP?
« kdy: 03. 01. 2022, 10:16:23 »
Ať tak nebo tak, mail odesílaný z domény x.y musí odesílat server (ne nějaká aplikace), který má přímý i reverzní záznam v DNS, zná klíč pro DKIM, má IP adresu, která je v SPF, spravuje fronty, přijímá zprávy o nedoručení atd.
Když něco odesílá e-mail, je to klient – navazuje SMTP spojení k serveru. Server (třeba Postfix) je také aplikace, a jakákoli aplikace může odesílat e-maily přímo cílovým serverům z počítače, který je uvedený v SPF, má správný reverzní záznam. Jenom ta aplikace musí umět e-mail podepsat pomocí DKIM. Teda ona by se o to aplikace mohla pokoušet i bez toho všeho, ale pak by e-mail byl s velmi vysokou pravděpodobností vyhodnocen jako spam. No a pak je samozřejmě nutné vyřešit to, že se e-mail nemusí podařit odeslat na první pokus (tj. nějaká fronta zpráv).

Vedle plnohodnotného klienta, který umí e-maily odesílat přímo cílovým serverům, existuje i „hloupý“ klient, který umí e-mail předat jenom nějakému chytřejšímu serveru (smart relay) a nic jiného neřeší. Takovýhle hloupý klient je třeba v poštovích klientech (Thunderbird, Outlook), je v PHP na Windows (implementace funkce mail()) nebo to existuje jako samostatná aplikace (např. sSmtp). Pro tuhle komunikaci od hloupého SMTP klienta k chytrému se nově používá port 587 (dříve se používal také port 25). Smart relay samozřejmě nemůže rozesíla te-maily pro každého, kdo mu e-mail předá – toho by okamžitě začali zneužívat spameři. Musí nějak poznat „své“ hloupé klienty, kterým důvěřuje, že nebuduo rozesílat spam. Dříve bylo běžné, že smart relay dovoloval posílat e-maily všem počítačům z místní sítě, nyní to obvykle bývá chráněné navíc ještě jménem a heslem – aby to útočník, který napadne nějaký počítač v místní síti a chce rozesílat spam, neměl tak jednoduché.

Pro někoho může být matoucí, že to, co se obvykle nazývá e-mailový server (třeba ten Postfix) obvykle plní úlohu klienta i serveru. Ale je to poměrně jednoduché, ta strana, která e-mail přes SMTP odesílá, je vždy klient; ta, která přes SMTP e-mail přijímá, je vždy server.

Klidně by bylo možné v PHP implementovat plnohodnotného SMTP klienta, ale proč by to někdo dělal?

779
Server / Re:Reverzni proxy - jake pouzivate checky?
« kdy: 15. 12. 2021, 18:35:11 »
Problem je snad jasny ne? Jednoducha demonstrace pomoci pingu:
1] kazdy backend v danem poolu je kontrolovan pingem
2] z nejakeho duvodu prestane ping fungovat (napr. nedomyslena uprava na FW)
3] kontroly na proxy selzou pro vsechny backendy -> odpojeni vsech backendu

Ale pritom aplikace je funkcni.

Backup parametr mi nepripada jako rozumne reseni takoveho problemu.
Problém
Teď už je problém jasný. Rozumné řešení je oprava kontroly nebo backendu tak, aby kontrola neselhávala, když je backend funkční. Pokud z nějakého důvodu nechcete/nemůžete použít rozumné řešení, je podle mne backup přesně to, co hledáte – jeden nebo více backendů zduplikujete v konfiguraci jako backup, a když všechny primární servery budou označené jako nefunkční, začne nginx posílat požadavky na backup (což budou shodou okolností ty samé backend servery). Řešení je to sice zvláštní, ale nevidím důvod, proč by nemělo fungovat (v rámci limitů toho, že nechcete rozumné řešení).

Jinak v případě (falešného) výpadku všech primárních backendů směrovat veškerý provoz na jediný backend mi nepřipadá jako dobrý nápad. Pokud tam ten load balancer nemáte jen tak pro legraci, ten jediný backend zátěž neustojí a odpadne nebo bude odpovídat velmi pomalu (čímž se teda konečně srovná stav hlášený kontrolou se skutečným stavem).

780
Server / Re:Reverzni proxy - jake pouzivate checky?
« kdy: 15. 12. 2021, 16:09:46 »
Je mozne nastavit, aby v pripade, ze check backendu bude ve stavu FAIL a toto se stane na vice backendech, aby alespon jeden backend zustal pripojeny na proxy bez ohledu na to, zda je check OK ci FAIL? Tzn, aby proxy nevyradila veskere backendy z dane skupiny.
Vy rovnou navrhujete řešení. Lepší by bylo napsat, jaký problém řešíte. Možná je dobré řešení úplně jiné než to, co navrhujete. Např. nginx má pro servery příznak backup, kterým můžete označit záložní servery, které se použijí v případě, kdy není žádný z primárních serverů dostupný. Což se používá pro servírování ochuzených stránek nebo lepších chybových stránek v případě, kdy celý backend selže. Možná je to řešení vašeho problému.

Stran: 1 ... 50 51 [52] 53 54 ... 375