Porucha telekomunikací: Koncepty komunikace přenášené prostřednictvím softwarově definovaného rádia

Original page: https://sethares.engr.wisc.edu/telebreak.html

Porucha telekomunikací: Koncepty komunikace přenášené prostřednictvím softwarově definovaného rádia

od C. R. Johnson, Jr. a W. A. Sethares

Základní principy telekomunikací zůstaly od dob Shannona téměř stejné. Co se změnilo a stále se mění, je způsob, jakým jsou tyto principy rozmístěny v technologii. Jednou z hlavních probíhajících změn je přechod od hardwaru k softwaru – a Porucha telekomunikací tento trend odráží tím, že se zaměřuje na návrh digitálního softwarově definovaného rádia.

Porucha telekomunikací pomáhá čtenáři vytvořit kompletní digitální rádio, které zahrnuje každou část typického digitálního komunikačního systému. Kapitolu po kapitole čtenář vytváří Matlab realizaci různých částí systému a zkoumá přitom klíčové myšlenky. V poslední kapitole čtenář „složí vše dohromady“, aby vytvořil plně funkční přijímač, i když není určen k provozu v reálném čase. Porucha telekomunikací zkoumá telekomunikační systémy z velmi konkrétního hlediska: konstrukce funkčního přijímače. Toto hledisko poskytuje pocit návaznosti na studium komunikačních systémů.
“Bezdrátovému telegrafu není těžké porozumět. Obyčejný telegraf je jako velmi dlouhá kočka. V New Yorku zatáhnete za ocas a v Los Angeles to mňouká. Bezdrát je stejný, jen bez kočky.” – Albert Einstein

Here’s why we think this is the best way to learn about Telecommunications systems:

Porucha telekomunikací je jediný kompletní dostupný text návrhu softwarového rádia – naučte se komunikační systémy stavbou přijímače.

Jsou pokryty všechny části systému – včetně kódování, synchronizace a ekvalizace – části, které jsou obvykle vynechány v raných kurzech. Podívejte se na celý obrázek.

Analýza je omezena na minimum – zaměřte se na učení prostřednictvím experimentu. Porucha telekomunikací není nesrozumitelná masa vzorců bez relevance. Prozkoumejte každý kousek praktickým způsobem.

Předpoklady se liší od většiny standardních textů — nekladou důraz na stochastické procesy, a proto mohou být použity dříve ve výuce.

Slyšeli jste o Nejprve zpracování signálu (od McClellan, Schafer a Yoder)? Porucha telekomunikací  je něco jako „Digital Communications Second“. (Kdybychom byli chytřejší, mohli bychom to nazvat “DC Second.”)

Všechny tyto záhadné části systému (jako Phase Locked Loops, Costas Loops, obnova časování maximalizace energie, řízené rozhodování a ekvalizace pomocí nejmenších čtverců) jsou všechny řešeny jedním jednotným způsobem – pomocí optimalizace gradientu. Po přečtení Porucha telekomunikací zjistíte, že už nejsou tak záhadní.

Ale neberte nás za slovo… zde je několik věcí, které říkají ostatní:

Porucha telekomunikací je strukturován jako cibule – ve vrstvách. První kapitola představuje náčrt digitálního rádia; první vrstva cibule. Druhá kapitola loupe cibuli a odhaluje další vrstvu, která vyplňuje detaily a demystifikuje různé části designu. V následujících kapitolách se pak znovu vracejí ke stejným myšlenkám, přičemž každá vrstva přidává hloubku a přesnost. První funkční (i když idealizovaný) přijímač se objevuje v kapitole 9. Poté jsou idealizující předpoklady postupně odstraněny ve zbývajících kapitolách, což vyvrcholí sofistikovaným softwarově definovaným návrhem rádia v poslední kapitole. Tyto vrstvy jsou:

Zde je poměrně podrobná verze obsahu. Pokud jste instruktor a uvažujete o přijetí Porucha telekomunikací pro třídu, mohl by vás zajímat náš rap „to the instructor“.

Dělá se vám zevnitř nevolno, když přemýšlíte o Fourierově transformaci? Nyní můžete zazpívat své potíže s písní Fourier Transform 

Porucha telekomunikací je navíc dodáván s  dýňově oranžovým CD-ROM, který obsahuje všechny programy Matlab, kompletní sadu slidů přednášek a dva, počítejte, dva kompletní inženýrské texty v plné délce ve formátu .pdf. Zmínili jsme video ekvalizéru v reálném čase a v reálném životě? A taky pár VELKÝCH písniček…
Klikněte sem a stáhněte si téměř kompletní, mírně předběžnou kopii Porucha telekomunikací. Pozor – je velký (asi 32 MB), takže stahování může chvíli trvat. Kliknutím sem přejdete na web Amazon.com, kde si můžete koupit pěknou novou kopii, čerstvou z tiskových strojů Prentice-Hall.

Pro ty, kteří již svůj výtisk dostali, zde je několik chyb, které se vloudily do prvního vydání. Slibujeme, že je opravíme, jakmile to bude možné.

 

Stručná historie mechanických kalkulaček

Original page: http://www.xnumber.com/xnumber/mechanical1.htm

Část I
Věk Polymathů

od
James Redin


“Protože není hodné vynikajících mužů ztrácet hodiny jako otroci v práci vypočítavosti, která by byla bezpečně svěřena komukoli jinému, kdyby byly použity stroje.”

Gottfried Wilhelm von Leibniz – 1685


Úvod

Účelem tohoto dokumentu je stručně popsat nejběžnější neelektronická počítací zařízení v historickém kontextu a vytvořit zdroj odkazů na další stránky na internetu související s tímto tématem. Cesta začíná před 2500 lety s Abacusem a končí před 30 lety představením prvních elektronických kalkulaček.

Pro usnadnění stahování byl dokument rozdělen do tří částí: Část I popisuje vývoj počítacích zařízení až do vynálezu stupňovitého kola od Leibnize. Část II pojednává o hlavních událostech v průběhu 19. století a část III shrnuje vývoj kancelářských strojů až do 60. let, kdy se na trhu objevily první elektronické kalkulačky.


Počitadlo

Matematický pojmy a jejich potomci, aritmetické operace, byly považovány za po tisíce let čistě intelektuální cvičení, které nemohly být reprodukovány nebo provádí pomocí umělého artefakt. Dokonce i Počitadlo, který se objevil v Malé Asii před 2500 lety a dodnes se používá, je spíše jen zařízením na pomoc paměti než skutečným počítacím strojem.

Počitadlo je důmyslný počítací zařízení na základě relativních poloh dvou sad kuliček pohybujících se na paralelních řetězců. První sada obsahuje pět korálků na každé struně a umožňuje počítání od 1 do 5, zatímco druhá sada má pouze dvě korálky na šňůrku představující čísla 5 a 10. Zdá se, že systém Abacus je založen na radixu pěti. Použití radixu pět dává smysl, protože lidé začali počítat předměty na prstech.


Antikythérská  kalkulačka

Kalkulačka AntikythiraNěkdy, mezi 100 př.nl a 65 př.nl, řecká loď přepravující náklad bronzových a mramorových soch a dalších artefaktů z Rhodosu do Říma se potopila blízko pobřeží Antikythéry, malého řeckého ostrova. Zůstal na dně moře pod 140 stopami vody po dvě tisíciletí, dokud jej v roce 1901 neobjevili domorodí potápěči hub.

Pozůstatky, uchovávané v Národním muzeu v Aténách, zahrnují starověký převodový mechanismus, nyní známý jako Antikythérská kalkulačka.

Toto zajímavé zařízení, složené z 32 ozubených kol, připomíná mechanismus hodin z 18. století a sloužilo k výpočtu pohybů Slunce a Měsíce.


Napierovy kosti

Dalším zajímavým vynálezem jsou Napierovy kosti, chytrý nástroj pro násobení, který v roce 1617 vynalezl matematik John Napier (1550-1617) ze Skotska.

Tyto  kosti  jsou sada  svislých obdélníkových tyčí, každá z nich rozdělena na 10 čtverců. Horní čtverec obsahuje číslici a zbývající čtverce obsahují prvních 9 násobků číslice. Každý násobek má své číslice oddělené diagonální čarou. Když je číslo sestrojeno uspořádáním tyčí vedle sebe s odpovídajícími číslicemi nahoře, pak jeho násobek lze snadno získat čtením odpovídající řady násobků zleva doprava a sečtením číslic nalezených v rovnoběžnících tvořených úhlopříčkou. linky. Není divu, že John Napier je také vynálezcem logaritmů, konceptu používaného ke změně násobení na sčítání.

Napierovy kosti byly velmi úspěšné a byly široce používány v Evropě až do poloviny 60. let 20. století.

Logaritmy byly také podkladem pro vynález logaritmického pravítka od Williama Oughtred (1574-1660), Anglie, v 1633.


Design Leonarda da Vinciho

N Povaha má nespočet příkladů mechanických řešení praktických problémů, takže není žádným překvapením, že  první pokus  navrhnout počítací stroj pravděpodobně provedla master obráběcích artefaktů,  Leonardo da Vinci  (1452-1519).

Leonardo da Vinci získal mnoho ze svých důmyslných nápadů pečlivým pozorováním mechaniky pohybů živých organismů. Je zajímavé, že příroda nevyvinula kolo jako řešení tohoto problému; že řešení bylo ponecháno na lidské vynalézavosti. Je zajímavé poznamenat, že kolo bylo základem většiny mechanických zařízení používaných k replikaci myšlenkového procesu zahrnutého v aritmetických operacích. Jak řekl George Chase [1]: „Historie mechanických výpočetních strojů je ve své podstatě příběhem číselného kola a zařízení, která jím otáčejí, aby registrovaly digitální a desítkové hodnoty.“


Schickardův stroj

Ton nejprve počítací stroje byly postaveny nadaných matematiků pohyboval intenzivním přáním zjednodušit opakující se charakter aritmetických operací.

První známý sčítací stroj vyrobil Wilhelm Schickard (1592-1635). V roce 1623 Schickard, polyhistor a tehdejší profesor na univerzitě v Tübingenu ve Württembersku, nyní součástí Německa, navrhl a zkonstruoval mechanické zařízení, které nazval počítací hodiny. Artefakt, který byl schopen sčítat a odečítat až šestimístná čísla, byl založen na pohybu šesti promáčknutých kol ozubených přes „zmrzačené“ kolo, které při každém úplném otočení umožnilo kolu umístěnému vpravo otočit se o 1/10 celé otočit se. Přepadový mechanismus zazvonil na zvonek. Funkce přidávání byla navržena tak, aby pomohla provádět násobení pomocí sady Napierových válců obsažených v horní polovině stroje. Podle jeho poznámek byl prototyp tohoto stroje zničen požárem. Zdá se, že v té době existoval další prototyp, ale nikdy nebyl nalezen.

Schickard, přítel velkého astronoma Johannese Keplera (1571-1630), mu  v letech 1623 a 1624 poslal několik dopisů, ve kterých stručně popsal jeho vynález. Schickard a jeho rodina nepřežili dýmějový mor a jeho podrobné poznámky zůstaly neznámé, dokud je v roce 1935 a 1956 neobjevil historik Franz Hammer. Matematik Bruno Von Freytag z univerzity v Tübingenu je použil při rekonstrukci stroje v roce 1960. Jedna jednotka je v Deutsches Museum v Mnichově.


Pascaline

Pascaline Slide ShowBlaise Pascalovi (1623-1662) bylo pouhých 18 let, když  v roce 1642 počal Pascaline. Předčasně vyspělý francouzský matematik a filozof Pascal ve věku 12 let zjistil, že součet úhlů v trojúhelníku je vždy 180 stupňů. Později položil základy pro teorii pravděpodobnosti a významně přispěl k vědě hydrauliky. Pascaline, postavený v roce 1643, byl možná prvním mechanickým přikládacím zařízením skutečně používaným pro praktické účely. Postavil jej Pascal, aby pomohl svému otci Etienne Pascalovi, výběrčímu daní, s únavnou činností při sčítání a odečítání velkých posloupností čísel. Stroj se však obtížně používal a pravděpodobně nebyl příliš užitečný kvůli francouzskému měnovému systému, který neměl základ 10. Libra měla 20 solů a sol měla 12 denierů.

Pascal si nebyl vědom Schickardova stroje a jeho řešení nebylo tak elegantní a efektivní. Jak řekl Paul E. Dune, „kdyby si Schickardovy nápady našly široké publikum, nebyl by vynalezen Pascalův stroj.“

Byl postaven na mosazné obdélníkové skříni, kde sada ozubených ciferníků pohybovala vnitřními koly tak, že plné otočení kola způsobilo, že se kolo nalevo posunulo o jednu desetinu. Přestože první prototyp obsahoval pouze 5 kol, pozdější jednotky byly postaveny se 6 a 8 koly. K otáčení číselníků byl použit čep. Na rozdíl od Schickardova stroje se kola pohybovala pouze ve směru hodinových ručiček a byla navržena pouze pro sčítání čísel. Odečítání bylo prováděno použitím těžkopádné techniky založené na přidání devítkového doplňku.

Přestože stroj v té době přitahoval velkou pozornost, nedočkal se širokého přijetí, protože byl drahý, nespolehlivý a také náročný na použití a výrobu. Do roku 1652 bylo vyrobeno asi 50 kusů, ale prodalo se méně než 15 kusů. Zpočátku měl Pascal o svůj vynález velký zájem a v roce 1649 pro svůj nápad dokonce získal „privilegovanou“ ochranu (středověký ekvivalent patentu), ale jeho zájem o vědu a „materiál“ skončil, když se stáhl k jansensistovi. klášter v roce 1655 soustředil veškerou svou pozornost na filozofii. Zemřel v roce 1662.

Během období 30 let po Pascalově vynálezu postavilo několik lidí počítací stroje založené na tomto návrhu. Nejznámější byl sčítací stroj Sira Samuela Morlanda (1625-1695) z Anglie. Tento stroj vynalezený v roce 1666 měl duodecimální stupnici založenou na anglické měně a vyžadoval zásah člověka, aby se dostal do nosiče zobrazeného na pomocném číselníku.

Je zajímavé, že ještě na začátku 20. století několik společností představilo modely založené přímo na Pascalově návrhu. Jedním z příkladů je Blesková přenosná sčítačka představený v roce 1908 společností Lightning Adding Machine Co. z Los Angeles. Dalším příkladem je Addometer představený v roce 1920 společností Reliable Typewriter and Adding Machine Co. z Chicaga. Žádný z nich nedosáhl komerčního úspěchu.


Leibniz stupňovitý buben

Psal se rok 1672, kdy se slavný německý polymatik, matematik a filozof Gottfried Wilhelm Von Leibniz (1646-1716), spoluvynálezce diferenciálního počtu, rozhodl postavit stroj schopný provádět čtyři základní aritmetické operace. Inspirací mu bylo zařízení na počítání kroků (krokoměr), které viděl na diplomatické misi v Paříži.

Stejně jako Pascal byl i Leibniz zázračné dítě. Ve věku 8 let se naučil latinu a druhý doktorát získal, když mu bylo 19. Jakmile se dozvěděl o Pascalově návrhu, vstřebal všechny jeho detaily a vylepšil design tak, aby umožňoval násobení a dělení. V roce 1674 byl jeho návrh hotov a stavbu prototypu zadal řemeslníkovi z Paříže jménem Olivier.

Osazením Počítadlo, jako Leibniz nazývá svůj stroj, který se používá speciální typ zařízení pojmenovanou osazením bubnu nebo Leibniz Kolo což byl válec s devíti zuby ve tvaru tyče s rostoucí délkou rovnoběžně s osou válce. Když se buben otáčí pomocí kliky, běžné desetizubé kolo, upevněné přes posuvnou osu, se otáčí od nuly do devíti poloh v závislosti na své relativní poloze k bubnu. Stejně jako v zařízení Pascal je pro každou číslici jedna sada koleček. To umožňuje uživateli posouvat mobilní osu tak, že když se buben otáčí, generuje v běžných kolech pohyb úměrný jejich relativní poloze. Tento pohyb pak zařízení převádí na násobení nebo dělení v závislosti na tom, kterým směrem se stupňovitý buben otáčí.

Neexistuje žádný důkaz, že by kdy byly vyrobeny více než dva prototypy tohoto stroje. I když byl Leibniz jedním z nejvýznamnějších polyhistorů své doby, zemřel v chudobě a bez odměny. Jeho stroj zůstal na půdě univerzity v Göttingenu, dokud jej v roce 1879 nenašel dělník, když opravoval netěsnost ve střeše. Nyní je ve Státním muzeu v Hannoveru; další je v Deutsches Museum v Mnichově.


Výpočet zařízení v průběhu 18. století Pascal je a vzory Leibniz byly základem pro většinu mechanických kalkulátorů postavených během 18-tého  století. Giovanni Poleni  vyrobený v roce 1709, v roce 1725 Lépine, Antonius Braun v roce 1725, Jacob Leupold roku 1727, Hillerin de Boistissandau v roce 1730, CL Gersten v roce 1735, Jacob Isaac Pereire v roce 1750, Phillip Mathieus Hahn v Německu v roce 1773. Charles, třetí hrabě Stanhope, Anglie, v roce 1775; Johan Helfreich Müller v roce 1783, Jacob Auch v roce 1790 a Reichhold v roce 1792. [4].

Zvláštní pozornost si zaslouží farář Phillip Mathieus Hahn (1730-1790), který v roce 1773 vyvinul první funkční kalkulačku založenou na Leibnizově stupňovitém bubnu. Hahnův kalkulátor měl sadu 12 bubnů v kruhovém uspořádání ovládaných klikou umístěnou v ose uspořádání. Hahn tyto stroje vyráběl až do své smrti v roce 1790, ale jeho dva synové a jeho švagr Johann Christopher Schuster ve výrobě pokračovali pravděpodobně až v roce 1820.

Na konci 18. století byly počítací stroje stále kuriozitami používanými spíše pro účely zobrazování než pro skutečné použití. Omezení způsobená technologií znemožnila splnit Pascalův sen udělat z nich praktické výpočetní zařízení.


Referenční zdroje
Internetové zdroje

Copyright © James Redin – Upraveno: 20. srpna 2018.

Budování webových služeb způsobem REST

Original page: http://xfront.com/REST-Web-Services.html

Roger L. Costello

Nejprve poskytnu stručný úvod do REST a poté popíšu, jak budovat webové služby ve stylu REST.

Co je REST?

REST je termín, který vytvořil Roy Fielding ve svém Ph.D. disertační práce [1] k popisu stylu architektury síťových systémů. REST je zkratka pro reprezentativní státní převod.

Proč se tomu říká Representation State Transfer?

Web se skládá ze zdrojů. Zdroj je jakákoliv položka zájmu. Například Boeing Aircraft Corp může definovat zdroj 747. Klienti mohou k tomuto zdroji přistupovat pomocí této adresy URL:

http://www.boeing.com/aircraft/747

Reprezentace ze zdroje je vrácena (např Boeing747.html). Reprezentace umístí klientskou aplikaci do stavu. Výsledkem toho, že klient projde hypertextovým odkazem v Boeing747.html, je přístup k dalšímu zdroji. Nová reprezentace umístí klientskou aplikaci do ještě jiného stavu. Klientská aplikace tedy mění (přenosy) stav s každou reprezentací prostředků –> Přenos reprezentativního stavu!

Zde je vysvětlení Roye Fieldinga o významu reprezentativního převodu státu:

„Representational State Transfer má vyvolat představu, jak se dobře navržená webová aplikace chová: síť webových stránek (virtuální stavový stroj), kde uživatel postupuje aplikací výběrem odkazů (přechodů stavů), což má za následek další stránka (představující další stav aplikace) je přenesena k uživateli a vykreslena pro jeho použití.”

Motivace pro REST

Motivací pro REST bylo zachytit vlastnosti webu, díky kterým byl web úspěšný. Následně se tyto vlastnosti používají k vedení vývoje webu.

REST – architektonický styl, nikoli standard

REST není standard. Neuvidíte, že W3C vydává specifikaci REST. Neuvidíte IBM, Microsoft nebo Sun prodávat vývojářskou sadu nástrojů REST. Proč? Protože REST je jen architektonický styl. Tenhle styl nemůžeš zkrotit. Můžete to pouze pochopit a navrhnout své webové služby v tomto stylu. (Analogický s architektonickým stylem klient-server. Neexistuje žádný standard klient-server.)

Přestože REST není standard, používá standardy:

  • HTTP
  • URL
  • XML/HTML/GIF/JPEG/atd (Reprezentace zdrojů)
  • text/xml, text/html, image/gif, image/jpeg, atd (MIME Typy)

Klasický REST systém

Web je REST systém! Mnoho z těchto webových služeb, které používáte již mnoho let – služby objednávání knih, vyhledávací služby, online slovníkové služby atd. – jsou webové služby založené na REST. Bohužel jste používali REST, budovali REST služby a ani jste o tom nevěděli.

REST se zabývá “velkým obrazem” webu. Nezabývá se detaily implementace (např. používání Java servletů nebo CGI k implementaci webové služby). Podívejme se tedy na příklad vytvoření webové služby z „velkého obrázku“ REST.

Webové služby skladu dílů

Parts Depot, Inc (fiktivní společnost) nasadila některé webové služby, aby svým zákazníkům umožnila:

  • získat seznam dílů
  • získat podrobné informace o konkrétní části
  • odeslat nákupní objednávku (PO)

Podívejme se, jak je každá z těchto služeb implementována klidným způsobem.

Získejte seznam dílů

Webová služba zpřístupní adresu URL zdroje kusovníku. Klient by například použil tuto adresu URL k získání seznamu dílů:

http://www.parts-depot.com/parts

Všimněte si, že „jak“ webová služba generuje kusovník, je pro klienta zcela transparentní. Klient ví pouze to, že pokud odešle výše uvedenou adresu URL, vrátí se dokument obsahující seznam dílů. Vzhledem k tomu, že implementace je pro klienty transparentní, může Parts Depot upravit základní implementaci tohoto zdroje, aniž by to mělo dopad na klienty. Toto je volné spojení.

Zde je dokument, který klient obdrží:

<?xml version="1.0"?>
<p:Parts xmlns:p="http://www.parts-depot.com" 
         xmlns:xlink="http://www.w3.org/1999/xlink">
      <Part id="00345" xlink:href="http://www.parts-depot.com/parts/00345"/>
      <Part id="00346" xlink:href="http://www.parts-depot.com/parts/00346"/>
      <Part id="00347" xlink:href="http://www.parts-depot.com/parts/00347"/>
      <Part id="00348" xlink:href="http://www.parts-depot.com/parts/00348"/>
</p:Parts>

[Předpokládejme, že prostřednictvím vyjednávání obsahu služba určila, že klient chce reprezentaci ve formátu XML (pro zpracování mezi stroji).] Všimněte si, že seznam součástí obsahuje odkazy na získání podrobných informací o každé součásti. Toto je klíčová vlastnost REST. Klient přechází z jednoho stavu do druhého tak, že prozkoumá a vybere z alternativních adres URL v dokumentu odpovědi.

Získejte podrobná data dílů

Webová služba zpřístupňuje URL pro každý zdroj součásti. Zde je příklad, jak klient požaduje část 00345:

http://www.parts-depot.com/parts/00345

Zde je dokument, který klient obdrží:

<?xml version="1.0"?>
<p:Part xmlns:p="http://www.parts-depot.com"   
        xmlns:xlink="http://www.w3.org/1999/xlink">
      <Part-ID>00345</Part-ID>
      <Name>Widget-A</Name>
      <Description>This part is used within the frap assembly</Description>
      <Specification xlink:href="http://www.parts-depot.com/parts/00345/specification"/>
      <UnitCost currency="USD">0.10</UnitCost>
      <Quantity>10</Quantity>
</p:Part>

Znovu pozorujte, jak jsou tato data propojena s dalšími daty – specifikaci této části lze nalézt procházením hypertextového odkazu. Každý dokument s odpovědí umožňuje klientovi procházet a získat podrobnější informace.

Odeslat PO

Webová služba zpřístupňuje adresu URL pro odeslání objednávky. Klient vytvoří dokument instance PO, který odpovídá schématu PO, které Parts Depot navrhl (a zveřejnil v dokumentu WSDL). Klient odešle PO.xml jako datovou část HTTP POST.

Služba PO odpoví na HTTP POST s URL na odeslanou PO. Klient tak může objednávku kdykoli poté načíst (pro aktualizaci/editaci). PO se stala informací, která je sdílena mezi klientem a serverem. Sdíleným informacím (PO) je přidělena adresa (URL) serverem a jsou vystaveny jako webová služba.

Logické adresy URL versus fyzické adresy URL

Zdroj je koncepční entita. Reprezentace je konkrétním projevem zdroje. Tato adresa URL:

http://www.parts-depot.com/parts/00345

je logická adresa URL, nikoli fyzická adresa URL. Není tedy třeba, aby pro každou část byla například statická HTML stránka. Ve skutečnosti, pokud by existoval milion částí, pak by milion statických HTML stránek nebyl příliš atraktivní design.

[Podrobnosti implementace: Parts Depot by mohl implementovat službu, která získává podrobná data o konkrétním dílu pomocí Java Servlet, který analyzuje řetězec za názvem hostitele, používá číslo dílu k dotazu na databázi dílů, formuluje výsledky dotazu jako XML a pak vraťte XML jako datovou část odpovědi HTTP.]

Pokud jde o styl, adresy URL by neměly odhalovat použitou techniku implementace. Musíte mít možnost svou implementaci změnit, aniž byste ovlivnili klienty nebo měli zavádějící adresy URL.

Charakteristika webových služeb REST

Zde jsou vlastnosti REST:

  • Klient-Server: styl interakce založený na stahování: náročné reprezentace vytažení komponent.
  • Bezstavový: každý požadavek od klienta k serveru musí obsahovat všechny informace nezbytné k pochopení požadavku a nemůže využívat žádný uložený kontext na serveru.
  • Cache: pro zlepšení efektivity sítě musí být možné odezvy označit jako cacheable nebo non-cacheable.
  • Jednotné rozhraní: ke všem zdrojům se přistupuje pomocí obecného rozhraní (např. HTTP GET, POST, PUT, DELETE).
  • Pojmenované zdroje – systém se skládá ze zdrojů, které jsou pojmenovány pomocí URL.
  • Vzájemně propojené reprezentace zdrojů – reprezentace zdrojů jsou vzájemně propojeny pomocí URL, což umožňuje klientovi postupovat z jednoho stavu do druhého.
  • Mezi klienty a zdroje lze vložit vrstvené komponenty – prostředníky, jako jsou proxy servery, cache servery, brány atd., aby podpořili výkon, bezpečnost atd.

Principy návrhu webových služeb REST

1. Klíčem k vytvoření webových služeb v síti REST (tj. webu) je identifikovat všechny koncepční entity, které chcete vystavit jako služby. Výše jsme viděli několik příkladů zdrojů: seznam dílů, podrobná data dílů, nákupní objednávka.

2. Vytvořte URL pro každý zdroj. Zdrojem by měla být podstatná jména, nikoli slovesa. Nepoužívejte například toto:

http://www.parts-depot.com/parts/getPart?id=00345

Všimněte si slovesa, getPart. Místo toho použijte podstatné jméno:

http://www.parts-depot.com/parts/00345

3. Rozdělte své zdroje do kategorií podle toho, zda klienti mohou pouze obdržet reprezentaci zdroje, nebo zda klienti mohou zdroj upravit (přidat k němu). V prvním případě zpřístupněte tyto prostředky pomocí HTTP GET. Pro pozdější zpřístupnění těchto zdrojů pomocí HTTP POST, PUT a/nebo DELETE. 4. Všechny zdroje dostupné přes HTTP GET by měly být bez vedlejších efektů. To znamená, že zdroj by měl pouze vracet reprezentaci zdroje. Vyvolání prostředku by nemělo vést k úpravě prostředku. 5. Žádný muž/žena není ostrov. Stejně tak by žádná reprezentace neměla být ostrovem. Jinými slovy, umístěte hypertextové odkazy do reprezentací zdrojů, abyste klientům umožnili získat další informace a/nebo získat související informace.6. Navrhněte postupné odhalování dat. Neodhalujte vše v jediném dokumentu s odpovědí. Chcete-li získat další podrobnosti, zadejte hypertextové odkazy. 7. Zadejte formát dat odezvy pomocí schématu (DTD, W3C Schema, RelaxNG nebo Schematron). U služeb, které vyžadují POST nebo PUT, poskytněte také schéma pro určení formátu odpovědi. 8. Popište, jak mají být vaše služby vyvolány pomocí dokumentu WSDL nebo jednoduše dokumentu HTML.

Souhrn

Tento článek popsal REST jako architektonický styl. Ve skutečnosti je to architektonický styl webu. REST popisuje, proč web dobře funguje. Dodržování zásad REST zajistí, že vaše služby budou dobře fungovat v kontextu webu. V příštím článku budu psát o vývoji webu pomocí principů REST.

Potvrzení

Děkuji Robertu Leftwichovi a Philipu Eskelinovi za velmi užitečné komentáře při vytváření tohoto dokumentu.

Reference

[1] http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm

REC Studio 4 – překladač zpětného inženýrství

Original page: http://www.backerstreet.com/rec/rec.htm

REC Studio je interaktivní dekompilátor.
Čte spustitelný soubor Windows, Linux, Mac OS X nebo raw a pokouší se vytvořit reprezentaci kódu a dat používaných k vytvoření spustitelného souboru ve stylu C.
Byl navržen pro čtení souborů vytvořených pro mnoho různých cílů a byl zkompilován na několika hostitelských systémech.

REC Studio 4 je kompletní přepis původního dekompilátoru REC. Využívá výkonnější analytické techniky, jako je částečné Single Static Assignment (SSA), umožňuje načítání souborů Mac OS X a podporuje 32 a 64 bitové binární soubory.
Přestože je stále ve vývoji, dosáhlo fáze, díky které je užitečnější než staré Rec Studio 2.

Stránky Rec Studio 2 jsou zde.

Funkce

Jak již bylo zmíněno, Rec Studio 4 je stále ve vývoji. Většina funkcí nezávislých na cíli byla dokončena, jako například:

  • Multihost: Rec Studio běží na  Windows XP/Vista/7, Ubuntu Linux, Mac OS X.
  • Podpora symbolických informací pomocí Dwarf 2 a částečné rozpoznání  formátu PDB společnosti Microsoft.
  • C++ je částečně rozpoznáno: pozměněná jména generovaná gcc jsou demanglována, stejně jako je respektována dědičnost popsaná v dwarf2. C++ je však velmi široký a obtížný jazyk, takže některé funkce, jako jsou šablony, pravděpodobně nebudou nikdy podporovány.
  • Typy a definice prototypů funkcí lze specifikovat v textových souborech. Některá standardní rozhraní Posix a Windows API jsou již k dispozici v balíčku Rec Studio.
  • Je podporována interaktivita omezená na definici sekcí, štítků a vstupních bodů funkcí. Bude potřeba jej vylepšit, aby podporoval definici typů a parametrů funkcí v programu.

Tato tabulka ukazuje funkce specifické pro cíl, které byly dosud implementovány:

 

Vlastnosti x86 (ia32) x86_64 Mips PowerPC mc68k ARM
Rozebíratel Hotovo Hotovo Hotovo Hotovo Hotovo Plánová
PE COFF nakladač Hotovo Hotovo n/a n/a n/a n/a
ELF nakladač Hotovo Hotovo Hotovo Hotovo Hotovo Plánová
COFF nakladač Hotovo n/a n/a n/a Hotovo n/a
Mac OS X nakladač Hotovo Hotovo n/a Plánová n/a Plánová
Dwarf2 symbolické informace Hotovo Hotovo Hotovo Hotovo n/a Plánová
COFF symbolické informace Plánová n/a n/a n/a Plánová n/a
Volací konvence Probíhá Probíhá Probíhá Plánová Plánová Plánová
32 a 64 bitů Probíhá Probíhá n/a n/a n/a n/a
Plovoucí bod Plánová Plánová n/a n/a n/a n/a
Windows ladicí program Probíhá Plánová n/a n/a n/a n/a
Gdb ladicí program Probíhá Probíhá n/a n/a n/a n/a

Zdroje REC nejsou ve veřejné doméně.

Ačkoli REC dokáže číst spustitelné soubory Win32 (aka PE) vytvořené Visual C++ nebo Visual Basic 5, existují omezení produkovaného výstupu. REC se pokusí použít jakékoli informace obsažené v tabulce symbolů .EXE. Pokud byl soubor .EXE zkompilován bez ladicích informací, pokud byl použit formát databázového souboru programu (.PDB) nebo Codeview (C7), nebo pokud byla povolena možnost optimalizace kompilátoru, nebude vytvořený výstup příliš dobrý. Spustitelné soubory Visual Basic 5 jsou navíc kombinací kódu podprogramu a dat formuláře. Pro REC je téměř nemožné určit, která je která. Jedinou možností je použít soubor .cmd a ručně určit, která oblast je kód a která oblast je data.

V praxi pouze spustitelné soubory C produkují smysluplný dekompilovaný výstup.

Reference

Několik dalších dekompilátorů je dostupných z různých zdrojů. Seznam najdete na mé stránce reverzního inženýrství.

Spíše překvapivě je vnitřní architektura dekompilátoru velmi podobná architektuře kompilátoru. Pro oba existuje kvalitní literatura. Stránka Poznámky k návrhu obsahuje informace o problémech, se kterými se autor dekompilátoru potýká, když se pokouší dekompilovat o něco složitější programy, než jsou jednoduché testy jednotek. Dekompilace stránka obsahuje odkazy a dokumentaci vztahující se k dekompilátory obecně.

Disertační práce Mika van Emmerika významně pokročila v oblasti dekompilace tím, že nastínila řešení základních problémů při dekompilaci binárních programů.

Disertační práce Cristiny Cifuentes Reverzní kompilační techniky podrobně popisuje teorii a implementaci dekompilátoru dcc pro 8086 DOSových programů.

Stránka Wotsit obsahuje odkazy na specifikace formátů objektových souborů jako COFF a ELF.

Některé koncepty související s analýzou kódu jsou popsány na stránkách referenčního ladicího programu.

Další základní knihy, které jsem během vývoje použil, jsou:

  • „Překladače – principy, techniky a nástroje“, Aho, Sethi, Ullman, 1986 Addison-Wesley Publishing Co. ISBN 0-201-10088-6.
  • „Pokročilý design a implementace kompilátoru“, Steven Muchnick, 1997 Morgan Kaufmann Publishers, ISBN 1-55860-320-4.
  • „Jak fungují debuggery – Algoritmy, datové struktury a architektura“, Jonathan Rosemberg, 1996 John Wiley and Sons, ISBN 0-471-14966-7.

Demontáž používané v REC byly převzaty z různých zdrojů. Soubor copyrite v distribuci má seznam kreditů pro každý z disassemblerů používaných v REC. Zbytek kódu jsem napsal sám během posledních 25 let. Ve svém volném čase budu nadále vylepšovat REC, ale nemohu zaručit, že mohu opravit chyby nebo přidat nové funkce, procesory nebo hostitele.

Zřeknutí se odpovědnosti

O zákonnosti dekompilace se hodně diskutuje. Nástroje dekompilátoru jsou k dispozici pro různé platformy již dlouhou dobu. Dekompilátory spolu s dalšími nástroji, jako jsou debuggery, binární editory, disassemblery atd., by se měly používat pouze v případě, že vlastník programu má zákonné právo provádět zpětnou analýzu programu.

Soudy USA a dalších zemí stanovily, že je legální používat dekompilátory podle ustanovení o spravedlivém použití autorského zákona.

Chcete-li zjistit, kdy je legální používat dekompilátor, měli byste si přečíst text následujících případů:

Také přečíst diskusi o zákonnosti pomocí emulátoru spustit binární program na jiného hostitele.

Backer Street Software nepodporuje použití nástrojů zpětného inženýrství pro nezákonné účely.


Copyright © 1997 – 2015 Backer Street Software – All rights reserved.

Dějiny:

9. března 2011  Verze 4.0 Beta: Kompletní přepsání dekompilátoru pro podporu modernějších architektur (soubory MachO, x86_64).
2. července 2007  Verze 2.2: Opravená dekompilace nezpracovaných binárních souborů prostřednictvím souborů .cmd. Částečně implementované šíření registrových konstant. Opraveno mnoho 68k chyb.
6. května 2007  Verze 2.1: Přidána zpět možnost +dávka do RecStudia; použijte Ndisasm pro i386; lepší izolace importovaných dat pro binární soubory Windows
20. září 2005  Verze 2.0d: Další opravy chyb za 68k
6. září 2005  Verze 2.0c: Podpora pro soubory Linux .o a vylepšená podpora pro 68k
15. srpna 2005  Verze 2.0b: Vydání údržby. Podpora pro binárky kompilované Watcom a široké řetězce
1. srpna 2005  Verze 2.0a: Vydání údržby. Opravené pády, vylepšená kvalita se spustitelnými soubory Windows
30. května 2005  Verze 2.0: Windows GUI a interaktivní dekompilace
19. září 2000  Verze 1.6: Přidána podpora pro SPARC.
16. března 1999  Verze 1.5d: Obnovená detekce switch(). Přidána podpora pro big-endian MIPS.
6. března 1999  Verze 1.5: Podpora pro import/export informací v souborech Win95; nahradil GNU disassemblery freewarovým zdrojem; opraveno mnoho pádů
22. listopadu 1998  Verze 1.4a: Opravena nekonečná smyčka při dekompilaci souborů Win95; přidány prototypové soubory Windows
15. listopadu 1998  Verze 1.4: Přidána možnost prohlížeče v interaktivním režimu a generování stránky HTML
30. července 1998 
Verze 1.3b: Údržba: opraveny pády a různé problémy v 68k.
15. února 1998  Verze 1.3: Přidány cíle Motorola 68000 a PowerPC.
7. prosince 1997  Verze 1.2: opraveno uživatelské rozhraní PC. Nyní můžeme načíst 16bitové spustitelné soubory DOSu. Další opravy chyb.
26. října 1997  Verze 1.1: podpora více cílů (386 + R3000), načítání souborů ELF a PE, opraveno několik chyb.
6. října 1997  Portováno na Windows v režimu konzoly (recr4kpc.zip) a na SunOS (recr4ks4.tar.gz)
20. září 1997  Vytvořeno pro zpřístupnění recr4kl.zip.

CSS obrázkové mapy

Original page: https://frankmanno.com/ideas/css-imagemap/

Frank Manno

Image MapsNíže je ukázková obrázková mapa, která je

Byla zveřejněna alternativa k pouze obrázkovým mapám CSS. Pokud hledáte snazší způsob vytváření obrázkových map zahrnujících jeden obrázek, možná vás bude zajímat četba CSS Image Maps, Redux

vytvořena výhradně pomocí CSS a XHTML. I když jsem přidal podporu pro Javascript (názvy položek jsou jednoduše zobrazeny pod obrázkem), v tomto příkladu jsem ji deaktivoval — narazil jsem na trochu problém, když je povoleno JS a zakázáno CSS (další podrobnosti níže).

Prvotní nápad přišel z příspěvku na blogu, který jsem si přečetl na blogu Giny Trappini, Scribbling.net. Její příklad byl dobře udělaný, ale chtěl jsem se pokusit o totéž (nebo podobné) pouze pomocí CSS.

Pak jsem našel odkaz na stránku The Daily Kryogenix (prostřednictvím příspěvku Giny), který vedl k obrázkové mapě, která používala lehčí DHTML a používala <title> značku k zobrazení poznámek o aktivním  bodu. Stále poněkud závislý na Javascriptu/DHTML.

Nakonec jsem se rozhodl využít  techniku posuvných dveří Douga Bowmana v  kombinaci s definičním seznamem (<dl></dl>).

Technika posuvných dveří vám umožňuje zahrnout všechny efekty převrácení obrázku do jednoho souboru obrázku a využít background-position vlastnost CSS k „posunutí“ obrázku v libovolném směru. Přidáním :hover efektu do vašeho CSS (v tomto případě do <a> tagu obsaženého v <dd> tagu) můžete posunout obrázek na požadovanou pozici.

Co jsem udělal, bylo vytvoření obrázkové mapy ve Photoshopu. Jak můžete vidět na tomto obrázku, mapa se skládá ze 3 kopií stejného obrázku, z nichž každá má jiné značení. Horní (1 ze 3) jednoduše označuje aktivní body čísly a prostřední a spodní obrázky (2 a 3 ze 3) obsahují efekty převrácení (bílá průhlednost). Možná se divíte, proč je efekt převrácení rozdělen do dvou samostatných obrázků. Důvodem oddělení je překrývání sousedních položek (tj.: monitor, notebook a disketa na stole). Namísto kolize mezi dvěma položkami byly efekty převrácení pro sousední položky rozděleny do více kopií stejného obrazu.

V zásadě to funguje tak, že název aktivního bodu položky umístíte do tagu definition-term (<dt></dt>) vašeho seznamu a za ním následuje popis do tagu definice-popis (<dd></dd>). CSS pak skryje definiční výraz (který se skutečně používá, když je CSS zakázáno), stejně jako popis definice (zobrazí se po najetí myší na kotvu) a zobrazí popis definice (v tomto případě popis aktivního bodu). (s), které jste vybrali pro svou obrázkovou mapu), a absolutně umístí a zobrazí popis při přejetí přes aktivní bod (také definovaný v CSS).

Kód také elegantně degraduje. <img> Tag, který zobrazuje verze, která není mapována mapy obrazu je skryta za použití CSS. Pro ty, kteří mají vypnuté CSS, se namapovaná verze obrázku (3dílný obrázek) nezobrazí, protože je součástí  background vlastnosti CSS. Spíše se zobrazí nenamapovaná verze spolu s nestylovaným seznamem definic. Pokud máte rozšíření Web Developer pro Firefox, pokračujte a deaktivujte styly. Získáte lepší představu o degradaci.

Ukázka kódu je zobrazena níže (zobrazit zdroj pro úplné CSS a XHTML):

CSS:

dd#monitorDef{ top: 65px; left: 114px; }
dd#monitorDef a{ position: absolute; width: 73px; height: 69px; text-decoration: none; }
dd#monitorDef a span{ display: none; }
dd#monitorDef a:hover{ position: absolute; background: transparent url(office.jpg) -109px -317px no-repeat; top: -10px; left: -5px; }

dd#monitorDef a:hover span{
 display: block;
 text-indent: 0;
 vertical-align: top;
 color: #000;
 background-color: #F4F4F4;
 font-weight: bold;
 position: absolute;
 border: 1px solid #BCBCBC;
 bottom: 100%;
 margin: 0;
 padding: 5px;
 width: 250%;
}

HTML:


<dl id="officeMap">
 <dt id="monitor">1. Monitor</dt>
 <dd id="monitorDef"><a href="#"><span>Here's my 17" Monitor.  I wish I had an LCD!</span></a></dd>
 <dt id="phone">2. Phone</dt>
 <dd id="phoneDef"><a href="#"><span>Does this thing ever stop ringing?</span></a></dd>
 <dt id="case">3. PC Case</dt>
 <dd id="caseDef"><a href="#"><span>This is my crazy Linux box! Gotta love that Linux...</span></a></dd>
 <dt id="notebook">4. IBM ThinkPad</dt>
 <dd id="notebookDef"><a href="#"><span>Here's my Linux notebook.  Some crazy coding going on.</span></a></dd>
 <dt id="floppy">5. External Floppy Drive</dt>
 <dd id="floppyDef"><a href="#"><span>Floppy Drive.  Ancient... I know!</span></a></dd>
</dl>

Funkční příklad si můžete prohlédnout níže (obrázek níže byl převzat z  The Daily Kryogenix):

I když to nemusí být „nejideálnější“ řešení, určitě rozšiřuje výše uvedené příklady. Naprosto se mi líbil Ginin nápad, a proto jsem se jej pokusil rozšířit. Bohužel se současnými omezeními CSS (stejně jako některých prohlížečů) jsem nebyl schopen plně replikovat přesnou funkčnost příkladu Giny.

Zde je příklad, který využívá CSS i Javascript. Jeden problém, na který jsem narazil, je, když je zakázáno CSS, ale je povolen Javascript. Se seznamem definic se stane něco divného. Pokud víte, jak to opravit, dejte mi vědět. Rád bych, aby to fungovalo.

Podařilo se mi narazit na další pokus o obrázkovou mapu založenou na CSS, která vypadá opravdu skvěle. Bohužel kvůli omezením IE (konkrétně pouze s podporou :hover vlivu na <a> tag) není kompatibilní s různými prohlížeči (zatím!).

Pokud máte nějaké dotazy, obavy a/nebo návrhy na zlepšení, neváhejte mi poslat poznámku: frankmanno [-at-] gmail [-tečka-] com nebo zanechte komentář na mém blogu.

Příklady byly úspěšně testovány v Safari, Firefox (Mac/Win), IE6/Win a Opera 7.5/Mac. Z nějakého zvláštního důvodu verze Javascript funguje v IE5/Mac, zatímco verze bez Javascriptu ne.

Copyright © 2004-2021 Frank Manno