Viac

Dotaz na ESRI Silverlight API 3.1, úpravy, aktualizácia problémov v zadanom kóde


Pomocou ESRI Silverlight API 3.1, .NET Framework 4.0, ArcGIS Server 10.0

Existuje spôsob, ako aktualizovať atribút v kóde za sebou bez cyklovania cez featureLayer.Graphics? Alebo spôsob, ako zavolať FeatureLayer.Update bez straty vykonaných úprav? Nemôžeme pevne kódovať naše vrstvy do xAML, pretože potrebujeme, aby boli dynamické.

V ideálnom prípade by sme chceli spustiť niečo podobné ako QueryTask a vracať sadu funkcií, z ktorých by sme mohli aktualizovať atribúty.

Aby sme to obišli, pokúsili sme sa použiť funkciu FeatureLayer where a update. Pre tento test je na mojej mape iba jedna FeatureLayer.

Kde a aktualizácia úspešne reviduje vrstvu tak, aby mala jeden záznam -

FeatureLayer testLayer = (ESRI.ArcGIS.Client.FeatureLayer) featureLayer; testLayer.UpdateCompleted + = UpdateTask_ExecuteCompleted; testLayer.Where = "TEST_ID = 12345"; testLayer.Update ();

// Aktualizácia udalosti

private void UpdateTask_ExecuteCompleted (odosielateľ objektu, System.EventArgs args) {foreach (GraphicsLayer graphicsLayer v testEditor.GraphicsLayers) {if (graphicsLayer je FeatureLayer) {FeatureLayer featureLayer = graphicsLayer ako FeatureLayer; foreach (Grafický prvok v featureLayer.Graphics) {if (Convert.ToInt32 (feature.Attributes ["TEST_ID"]) == 12345) {feature.Attributes ["NAME"] = "Premenovaný"; }}}}

Tento obslužný program udalostí bude prechádzať cez moju vrstvu funkcií - teraz bol dopytovaný na 1 záznam a aktualizoval atribút názvu.

Problém v tomto okamihu je, že na svojom displeji mám teraz zobrazený iba jeden záznam. Ak resetujem klauzulu where na „1 = 1“ a spustím aktualizáciu, stratím úpravy.

Pred resetovaním vrstvy, ktorá uloží moju úpravu, môžem SaveEdits. Ale dúfam v riešenie, ktoré stále umožní používateľovi uložiť všetky úpravy naraz, keď budú hotové. Existuje spôsob, ako aktualizovať a udržiavať moje úpravy?

Toto všetko je riešenie kvôli tomu, že nie je možné dopytovať, aby bola funkcia upravená. Ak existuje spôsob, ako to dosiahnuť bez iterácie cez každú grafiku, bolo by to ideálne riešenie. Chýba nám tu celkový obraz?


No všetko naše hľadanie a skúšanie vecí za posledné dva týždne sa nakoniec vyplatilo a zistili sme, ako upraviť atribúty dopytovanej funkcie pomocou služieb funkcií Silverlight API / .NET / LINQ / REST.

Uverejňujem sem kód pre prípad, že by s týmto problémom bojoval niekto iný. Trochu zložité je, že dopytovaný objekt (FeatureSet Graphic) sa líši od FeatureLayer Graphic objektu, takže je potrebné načítať ID objektu z dopytovaného objektu a použiť ho na volanie LINQ na získanie objektu z kolekcie FeatureLayer.Graphics.

private void QueryTask_ExecuteCompleted (odosielateľ objektu, ESRI.ArcGIS.Client.Tasks.QueryEventArgs args) {FeatureSet featureSet = args.FeatureSet; if (featureSet! = null && featureSet.Features.Count> 0) {FeatureLayer featureLayer = null; foreach (GraphicsLayer graphicsLayer v rackEditor.GraphicsLayers) {if (graphicsLayer je FeatureLayer) {featureLayer = graphicsLayer ako FeatureLayer; }} foreach (grafický prvok v featureSet.Features) {object id = feature.Attributes [objId]; string carId = feature.Attributes ["F_ID"]. ToString (); Grafická grafika = (z a v featureLayer.Graphics, kde a.Attributes ["F_ID"]. ToString () == carId vyberte a) .FirstOrDefault (); graphic.Attributes ["NAME"] = "Premenovať LINQ"; }}}

Opravte problémy, ktoré blokujú inštaláciu alebo odstránenie programov

Poznámka: Tieto kroky použite pre programy Windows. Ak máte problémy s aplikáciou získanou z Microsoft Store, choďte na Riešenie problémov s aplikáciami z Microsoft Store.

Poradca pri riešení problémov s inštaláciou a odinštalovaním programu vám pomôže automaticky opraviť problémy, keď máte zablokovaný prístup k inštalácii alebo odstráneniu programov. Opravuje tiež poškodené kľúče registra.

Najskôr si budete musieť stiahnuť nástroj na riešenie problémov.

Ak vidíte Stiahnutie súboru keď začnete sťahovať, vyberte Bež alebo Otvorené.

Nástroj na riešenie problémov poskytuje kroky, ktoré musíte dodržiavať. Ak program nie je uvedený v možnostiach odinštalovania, zobrazí sa výzva na zadanie kódu produktu daného programu. Na prístup k kódu budete potrebovať nástroj na čítanie súborov MSI, ktorý je zvyčajne k dispozícii IT profesionálom. Kód produktu nájdete v tabuľke vlastností súboru MSI.


44 Odpovede 44

Stretol som sa s tým párkrát a stále zabúdam, čo to spôsobuje. Narazil som na to, keď som premenoval priestor mien na svojom kóde za súborom, ale nie v mojom XAML.

Skontrolujte teda, či ste urobili to isté.

The menný priestor a trieda mená sa musia zhodovať, pretože sú súčasťou čiastočnej triedy

Akcia zostavy pre súbor .xaml musí byť tiež nastavená na „Stránka“, pri presúvaní súboru xaml medzi projektmi sa toto nastavenie stratí (minimálne vo verzii VS 2010).

Pre tých, ktorí nemajú žiadne chyby v režime ladenia, ale robiť majú zadanú chybu v režime Release (a napriek tomu projekt beží v poriadku), je tu niečo jednoduché na vyskúšanie:

  1. Otvorte súbor XAML zodpovedajúci urážlivému súboru xaml.cs.
  2. Vykonať úpravy - akékoľvek úpravy, napríklad pridať niekde priestor
  3. Uložte súbor a zatvorte ho

Táto metóda sa mi osvedčila vo VS 2015 a podľa ďalších používateľov aj v rokoch 2017 a 2019

  1. Prejdite do adresára riešení
  2. Odstráňte priečinok obj
  3. Prebudujte riešenie

S touto chybou som sa stretol počas refaktoringu, kde som premenoval niektoré súbory / priečinky a bolo potrebné znovu vygenerovať prexisiting * .g.cs súbory.

Má to veľmi konkrétny dôvod a je to v nastaveniach projektu. Zvyčajne sa to stane vždy, keď sa pokúsite pridať ovládací prvok / okno WPF do knižnice alebo projektu triedy .NET 2.0. Príčinou tejto chyby je, že projekt nevie, že buduje ovládací prvok alebo okno WPF, a preto sa ho pokúša vytvoriť ako projekt C # 2.0.

Riešenie spočíva v úprave súboru .csproj. Pravým tlačidlom myši kliknite na projekt spôsobujúci problém a vyberte možnosť „Uvoľniť projekt“. Kliknite pravým tlačidlom myši na nenaložený projekt a vyberte príkaz „Upraviť .csproj“. Otvorí sa súbor .csproj a vy si môžete pozrieť XML. vyhľadajte nasledujúci riadok:

Je to blízko konca súboru a jediný riadok, ktorý máte, je pravdepodobne

Toto hovorí programu Visual Studio, aby projekt postavil ako projekt .NET 2.0. Čo chceme urobiť, je povedať Visual Studio, že toto je vlastne projekt WPF, takže musíme pridať nasledujúci riadok:

Tento riadok povedie Visual Studio, aby projekt postavilo ako projekt WPF. Teraz by mal váš súbor .csproj dole vyzerať takto:

Uložte súbor .csproj, kliknite naň pravým tlačidlom myši v aplikácii Solution Explorer a vyberte kompiláciu „Znova načítať projekt“ a to je všetko, všetko je hotové!


Existuje niekoľko dôvodov, prečo sa nemôžete pripojiť k serveru SQL Server:

A) Nepripúšťa vzdialené pripojenia

B) Existuje brána firewall alebo čokoľvek iné, čo zabraňuje pripojeniu vzdialených počítačov

C) Nemáte spustenú službu SQL Browser

1) Vo vzdialenom počítači otvorte cmd a spustite príkaz ping win2k8-01. Mali by ste dostať odpovede z počítača. ak nie, nastal problém so sieťovým pripojením

2) Skontrolujte, či je vo vašom počítači spustená služba „SQL Browser“ (Služby, Nástroje pre správu, Ovládací panel). Ak nie je nastavený, typ spustenia sa nastaví automaticky a spustite ho. To umožňuje vzdialeným počítačom získať informácie o dostupných inštanciách a spôsobe pripojenia k nim. Ak máte pochybnosti, pozrite sa sem

4) Skontrolujte, či váš server umožňuje vzdialené pripojenie. Ak to chcete urobiť, otvorte SSMS, pripojte sa k serveru, kliknite pravým tlačidlom myši, otvorte Vlastnosti a na karte „Pripojenia“ vyhľadajte „Povoliť vzdialené pripojenia“. uistite sa, že je táto možnosť začiarknutá. Ak máte pochybnosti, pozrite sa sem

5) Zakážte bránu firewall v počítači (brána firewall systému Windows alebo ľubovoľná brána firewall tretích strán, napríklad antivírusový softvér)

Skúste sa pripojiť pomocou rovnakej konfigurácie pripojenia, ktorá fungovala vo vašom lokálnom počítači. Teraz by to malo fungovať.

Ak sa nemôžete pripojiť pomocou programu Excel, mali by ste sa pokúsiť pripojiť pomocou iného nástroja zo vzdialeného počítača (do tohto počítača môžete nainštalovať SSMS a pokúsiť sa pripojiť).

Toto by malo fungovať. ak nie dajte mi vedieť, čo zlyháva.

Ak to funguje, znova povolte bránu firewall a skúste sa pripojiť znova. Ak nemôžete, musíte nakonfigurovať bránu firewall tak, aby umožňovala pripojenia na server SQL Server. Urobte to a skúste to znova. Nezabudnite povoliť pripojenie k prehliadaču SQL Server na porte UDP 1434, okrem portu inštancie DB na TCP.


Hlavné funkcie vo vzore brány API

Brána API môže ponúkať viac funkcií. V závislosti od produktu, ktorý môže ponúkať bohatšie alebo jednoduchšie funkcie, sú však najdôležitejšími a základnými funkciami pre každú bránu API nasledujúce vzory návrhu.

Reverzné smerovanie proxy alebo brány. Brána API ponúka reverzný proxy server na presmerovanie alebo smerovanie požiadaviek (smerovanie vrstvy 7, zvyčajne požiadavky Http) na koncové body interných mikroslužieb. Brána poskytuje pre klientske aplikácie jeden koncový bod alebo adresu URL a potom interne mapuje požiadavky na skupinu interných mikroslužieb. Táto funkcia smerovania pomáha oddeliť klientske aplikácie od mikroslužieb, ale je tiež veľmi vhodné pri modernizácii monolitického rozhrania API tak, že sa brána API umiestni medzi monolitické rozhranie API a klientske aplikácie. Potom môžete stále pridávať nové API ako nové mikroslužby. staršie monolitické API, kým sa v budúcnosti nerozdelí na mnoho mikroslužieb. Kvôli API Gateway si klientske aplikácie nevšimnú, či sú použité API implementované ako interné mikroslužby alebo monolitické API a čo je dôležitejšie, pri vývoji a refaktorovaní monolitického API na mikroslužby vďaka smerovaniu API Gateway klientske aplikácie nebude ovplyvnená žiadnou zmenou URI.

Ďalšie informácie nájdete v informáciách o smerovaní brány.

Agregácia požiadaviek. Ako súčasť vzoru brány môžete agregovať viac požiadaviek klientov (zvyčajne HTTP), zacielených na viaceré interné mikroslužby do jednej žiadosti klienta. Tento vzor je obzvlášť vhodný, keď stránka alebo obrazovka klienta potrebuje informácie z niekoľkých mikroslužieb. S týmto prístupom klientská aplikácia odošle jednu požiadavku na bránu API, ktorá odošle niekoľko požiadaviek do interných mikroslužieb a potom agreguje výsledky a odošle všetko späť do klientskej aplikácie. Hlavnou výhodou a cieľom tohto návrhového vzoru je znížiť konverzáciu medzi klientskými aplikáciami a rozhraním back-end API, čo je obzvlášť dôležité pre vzdialené aplikácie mimo dátového centra, kde žijú mikroslužby, ako sú mobilné aplikácie alebo požiadavky prichádzajúce z aplikácií SPA, ktoré pochádzajú z Javascript vo vzdialených prehľadávačoch klienta. Pre bežné webové aplikácie, ktoré vykonávajú požiadavky v prostredí servera (napríklad webová aplikácia ASP.NET Core MVC), tento vzor nie je taký dôležitý, pretože latencia je oveľa menšia ako pri vzdialených klientskych aplikáciách.

V závislosti od produktu API Gateway, ktorý používate, môže byť schopný vykonať túto agregáciu. V mnohých prípadoch je však flexibilnejšie vytvárať agregačné mikroslužby v rámci rozsahu brány API, takže agregáciu definujete v kóde (t. J. C # kód).

Ďalšie informácie nájdete v informáciách o agregačnom vzore brány.

Prierezové záujmy alebo vyloženie brány. V závislosti na vlastnostiach ponúkaných každým produktom API Gateway môžete z jednotlivých mikroslužieb do brány odložiť funkčnosť, ktorá zjednoduší implementáciu každej mikroslužby konsolidáciou prierezových problémov do jednej úrovne. Toto je obzvlášť vhodné pre špecializované funkcie, ktoré môžu byť zložité na správnu implementáciu v každej internej mikroslužbe, ako je napríklad nasledujúca funkčnosť.

  • Autentifikácia a autorizácia
  • Integrácia vyhľadávania služieb
  • Uloženie odpovede do pamäte cache
  • Zopakujte zásady, prerušovač obvodu a QoS
  • Obmedzenie rýchlosti a škrtenie
  • Rozdelenie výkonu
  • Protokolovanie, sledovanie, korelácia
  • Hlavičky, reťazce dotazov a transformácia nárokov
  • Zoznam povolených adries IP

V závislosti na každej implementácii môžu produkty API Gateways ponúkať oveľa viac prierezových problémov, ale to sú najbežnejšie funkcie. Napríklad Azure API Management ponúka väčšinu z týchto funkcií a mnoho ďalších pokročilých funkcií, ktoré sú veľmi užitočné pre komerčné API. Pre jednoduchšie prístupy je však ľahká brána API, ako je Ocelot, dosť flexibilná, pretože ju môžete nasadiť do svojho vybratého prostredia (ľubovoľného orchestrátora) spolu s vašimi mikroslužbami.

Ďalšie informácie nájdete v informácii o vzore vykládky brány.

Odkazy na vzory

Brána API

Vzor agregácie a zloženia


ESRI Silverlight API 3.1 vyhľadáva, upravuje, aktualizuje problémy v pozadí - Geografické informačné systémy

OAuth 2.0 je priemyselný štandardný protokol pre autorizáciu. OAuth 2.0 sa zameriava na jednoduchosť vývojárov klientov a zároveň poskytuje špecifické autorizačné toky pre webové aplikácie, desktopové aplikácie, mobilné telefóny a zariadenia obývacej izby. Táto špecifikácia a jej rozšírenia sú vyvíjané v rámci pracovnej skupiny IETF OAuth.

Otázky, návrhy a zmeny protokolu by mali byť prediskutované v zozname adresátov.

OAuth 2.0

Mobilné a iné zariadenia

    - Odporúčania pre použitie OAuth s natívnymi aplikáciami - Odporúčania pre použitie OAuth s aplikáciami založenými na prehliadači (napr. SPA) - OAuth pre zariadenia bez prehliadača alebo bez klávesnice

Token a správa tokenov

    - RFC 7662, na určenie aktívneho stavu a metainformácií tokenu - RFC 7009, na signalizáciu, že predtým získaný token už nie je potrebný - RFC 7519

Objavenie a registrácia

    - RFC 8414, pre klientov na objavovanie koncových bodov OAuth a funkcií autorizačného servera - RFC 7591, na programové registrovanie klientov OAuth - experimentálny RFC 7592 na aktualizáciu a správu dynamicky registrovaných klientov OAuth

Experimentálne a koncepty

Nižšie uvedené špecifikácie sú buď experimentálne, alebo sú v stave konceptu a sú stále aktívnymi položkami pracovnej skupiny. Pravdepodobne sa zmenia skôr, ako budú finalizované ako RFC alebo BCP.


Nemyslím si, že je to samo osebe použitie abstrakcií. Existujú ďalšie dve možné vysvetlenia. Jedným z nich je, že abstrakcie sú niekedy netesné. Ak budete mať dojem, či už máte pravdu, alebo nie, že nerozumiete základným zásadám, mohlo by to v rozhovore pôsobiť zle.

Ďalším možným vysvetlením je efekt fanboy. Ak nadšene hovoríte o LINQ a opakovane ho uvádzate v rozhovore so spoločnosťou, ktorá ho nepoužíva a nemá v súčasnosti žiadne plány, vzbudzuje to dojem, že by ste boli nespokojní alebo dokonca nespokojní s prácou so staršími technológiami. Môže tiež vzbudzovať dojem, že vaše nadšenie pre jeden výrobok vás zaslepilo alternatívami.

Ak si skutočne myslíte, že by ste boli spokojní v obchode, ktorý nie je LINQ, skúste sa opýtať, čo to je robiť použite a podľa toho prispôsobte svoje odpovede. Ukážte im, že aj keď uprednostňujete LINQ, ste kompetentní používať akékoľvek nástroje, ktoré máte k dispozícii.

Niektorí programátori .NET, najmä tí, ktorí pochádzajú buď z klasického prostredia VB / ASP alebo C ++, nemajú radi nové veci ako LINQ, MVC a Entity Framework.

Na základe toho, čo som pozoroval, je pravdepodobné, že bývalí VB'ers v tejto skupine stále používajú vrstvy prístupu k dátam a iný kód pôvodne napísaný pred 10 a viac rokmi. Budú tiež používať staré módne slová ako „n-tier“ a podobne a v skutočnosti nebudú vôbec nič rozumieť ničomu nad rámec .NET Framework 2.0, ani sa o tom nebudú chcieť dozvedieť.

C ++ majú tendenciu byť akademicky zameraní programátori, ktorí milujú kódovanie skvelých algoritmov, aj keď to znamená opätovné vynaliezanie kolieska. Neznášajú, v závislosti na čomkoľvek, čo sami nedodali. Niekoľko z týchto ľudí tiež poteší, že sa opýtaní cítia menejcenní, najmä tí, ktorí majú menej tradičné vzdelanie.

Je pravdepodobné, že pri pohovoroch narazíte na takéto organizácie. Ale narazíte tiež na ľudí, ktorí používajú novšie metódy. Nenechajte sa odhodiť niekoľkými zlými rozhovormi.

Spoločnosť Microsoft má dlhú históriu príchodu s horúcimi novými technológiami a potom na ne zabudne 5, 10 alebo 20 rokov. LINQ môže pre niektorých ľudí vyzerať ako iný. Všimnú si, že Microsoft nemôže zastarať SQL, ale LINQ by mohol nasledovať Silverlight. Takže ste mohli vidieť paranoju spôsobenú ťažkými skúsenosťami, alebo len ľudí, ktorých zanechala moderná technológia a ktorí sa na ne pohoršujú.

Nemá zmysel vytiahnuť kód „z police“, ak dosahuje rovnaké ciele bez ďalších nákladov?

Vždy sú tu ďalšie náklady.

Krivka učenia pre veci z police je vždy k dispozícii. Bolesť so získavaním aktualizácií (a závislostí) tu je vždy. Neschopnosť skrutkovať sa s vnútornosťami je tu vždy.

Pre LINQ platí skutočne iba prvé. Mnoho ľudí považuje „divne“ vyzerajúci kód za ťažko čitateľný a laditeľnejší. Syntax typu sql je do značnej miery persona-non-grata každého profesionálneho koncertu, na ktorom som pracoval, pretože vyšiel. LINQ to SQL (a ďalšie zdroje údajov) majú množstvo metód getchas a obmedzené možnosti optimalizácie.

Toto sú všeobecné argumenty proti nástrojom tretích strán a špecificky proti LINQ. Všetko, čo bolo povedané, LINQ je prekliatý užitočný nástroj a vo väčšine situácií by sa mal uprednostňovať. Plač, ktorý tu nie je vynájdený, a abstrakcie by sa nemali uprednostňovať, silno zaváňa poznávacou disonanciou.

Nevedia / nemôžu sa naučiť LINQ, ale sú to „zjavne“ dobrí vývojári, takže LINQ sa nesmie vyplatiť. Je to obyčajná pasca.

Mali by ste zvážiť ešte niečo, že vaše nadšenie pre skvelú novú technológiu môže spôsobiť, že sa ľudia budú cítiť nepríjemne a nebudú vás chcieť. „Neposilňujete“ ich, pretože túto technológiu poznáte vy, nie oni. Aj keď si to sami neuvedomujú, možno hľadajú kandidátov, ktorí posilnia to, do čoho už toľko času investovali.

Chcete prezentovať postoj, ktorý hovorí: „Nech robíte čokoľvek, chcem vám pomôcť dosiahnuť to.“ Namiesto podtextu, ktorý hovorí: „Možno robíte veci zle a dokážem ma mať pri sebe. to. “

Môj pohľad na toto (a TBH hádam preto, že nikto z nás nevie povedať, na čo si títo anketári mysleli) je, že často idete na pohovor vysvetliť, prečo by vás mali zamestnať zapadnúť do ich tímu, spôsobu práce.

Môžete byť dokonalým vývojárom, bohom rockového štartovacieho kódu, ale to neznamená absolútne nič, ak to, čo chcete robiť (zdôraznené tým, že prehnane a nadšene hovoríte o niektorých skvelých technologických gubbinoch), jednoducho o nich hovorí a že by ste ich neurobili. zapadajú do toho, čo chcú. Ak majú starý systém prístupu k údajom, ktorý sa z akéhokoľvek dôvodu nedá upgradovať, nepotrebujú niekoho, kto by zabudol, ako ho udržiavať. Ak vyvíjajú nové veci a naozaj chcete umiestniť túto skvelú novú technológiu všade, je zrejmé, že budú mať veľký problém s budúcou údržbou kódu a / alebo školením zamestnancov.

Ako freelancer je to oveľa väčší problém, ak by si najímali permie. Vďaka tomuto oprávneniu nie sú školenie a vývoj nových spôsobov práce zlé veci, v rámci existujúceho kódexu a postupov - budete tu ešte dlho, aby ste veci zlepšili. S freelancerom skutočne nedávajú žart, čo chcete, vy ste tu len na to, aby robili svoju prácu tak, ako to chcú, a nie je to vaša práca, aby ste robili niečo iné. (nesúhlasím - stálym zamestnancom)

Pravdepodobne to nemá nič spoločné so samotným LINQ, odmietol som kandidáta, ktorý sa objavil, a vysvetlil, o koľko lepšie by bolo všetko napísané v Haskelli. Nerobíme Haskell. To isté platí pre každú technológiu, ktorú spoločnosť nepoužíva, zvyčajne nie je problém, ak ju spomeniete ako niečo dobré. Problém nastáva, keď ste ním príliš nadšení a nadšení.

Od tých, ktorí nepoužívajú Linq, som počul jednu oprávnenú obavu, ktorú si beriem k srdcu: „To, že implementáciu nevidíte, ešte neznamená, že nie je drahá.“

Použite nasledujúci úryvok:

LINQ iniciované tu sa krútia. Prečo? Pretože to, že tento kód vyzerá pekne a elegantne, ešte neznamená, že nie je strašne neefektívny. Count () s predikátom vyhodnotí všetky spočítateľné všetky prvky jeho nadradených prvkov a zhrnie časy, ktoré predikát vrátil. Takže nielenže je to N ^ 2 (keď inputList a otherInputList majú zhruba rovnakú mohutnosť N), je to aj absolútne najhorší prípad N ^ 2 KAŽDÝ prvok otherInputList je prekonaný pre KAŽDÝ prvok vstupu. Prvým krokom je namiesto toho použitie Any () namiesto Count, pretože to je to, čo chcete vedieť, a ukončí sa hneď, ako bude známe, že odpoveď je „áno“. Nastavenie sady HashSet, ktorá ukladá odlišné hodnoty otherInputListObject. OtherProperty vám môže pomôcť tiež, prístup sa stane O (1) namiesto O (N), takže pri počiatočných nákladoch na lineárne nastavenie zredukujete celú operáciu na lineárnu v najhoršom prípade zložitosť namiesto kvadratickej najlepší prípad zložitosť.

Vidíme teda, že tieto pekné elegantné metódy majú za sebou vážne náklady, a ak neviete, aké sú tieto náklady, môžete veľmi jednoducho OAlgoritmus zložitosti (môj G-D) do výkonného centrálneho správcu súborov vášho potenciálneho zamestnávateľa alebo na stránku hlavného pristávacieho portálu, keď nabudúce budú možno potrebovať vylepšenie. To, že vás vyhodia, keď to urobíte, nevráti to, čo ste urobili, ale nenajme vás, ak si myslia, že to urobíte, by tomu zabránilo. Aby ste sa tomu vyhli, musíte dokázať, že sa mýli, diskutovať o tom, čo tieto metódy robia (to znamená, že musíte vedieť sami seba) a ich zložitosť a ako dospieť k odpovedi v efektívnom (NlogN alebo lepšom) čase.

Ďalším problémom je starý dobrý argument „Keď je vaším jediným nástrojom kladivo“. Posaďte sa na miesto anketára, ktorý vedie pohovor s týmto fanúšikom Linqa. Kandidát má Linq rád, chce ho používať a myslí si, že je to najlepšia vec vôbec. Dokonca by sa mohlo zdať, že kandidát bez neho nedokázal programovať, pretože každý daný problém s programovaním bol vyriešený pomocou Linq. Čo sa stane, keď sa to nedá použiť? Veľa kódu .NET 2.0 stále existuje, že ak by sa inovoval, vyžadovalo by to bolestivé upgrady serverov, užívateľských pracovných staníc atď., Takže môžete používať všetky svoje fantastické rozšírenia. Ako anketár by som sa vás snažil prinútiť, aby ste preukázali, že viete efektívne kódovať alebo použiť triediace metódy 2.0, ak by ste museli, bez ohľadu na to, ako veľmi s vami súhlasím, že knižnice Linq a podobné metódy rozšírenia sú pekné sladký. Anketár, ktorý to nevidí, sa možno nebude obťažovať, keď sa vás snaží prinútiť, aby ste preukázali nadanie pre čokoľvek iné, čo bude predpokladať, že na to nemáte, a choďte ďalej.

Tento sa trochu predĺžil, ale niekomu by mohol pomôcť, tak to nechám.

V skutočnosti som sa stretol s niečím podobným a minulý mesiac som absolvoval niečo cez 20 pohovorov (mix telefónu a tvárou v tvár). Určite sa dialo niečo neočakávané, na čo som si nedokázal celkom priložiť prst.

Jednou z vecí, ktoré som si všimol, však bolo, že veci, ktoré boli zvyčajne stredobodom cyklov pohovorov za posledných päť alebo šesť rokov, rozhodne neboli diskutované alebo im nebol daný krátky časový posun. Veci ako základy OOP analýzy / dizajnu, vzory (dizajnové aj architektonické), niektoré pokročilejšie / na abstrakciu orientované funkcie .net (vrátane lambdas alebo LINQ konkrétne, generík, serializácie / dátovej väzby a podobne) a dokonca aj zvyčajne horúca téma uprednostňovanej metodiky (zdá sa, že nikoho príliš nezaujíma agilný vs. vodopád alebo aká agilná príchuť) a nástrojov alebo výberu ORM alebo preferovaných spôsobov spolupráce alebo riadenia zdrojov. V niektorých prípadoch vôbec neuvádzané, takmer vo všetkých zjavne bez obáv.

V niekoľkých rozhovoroch a rôznych nepríbuzných firmách v nepríbuzných odvetviach sa pozornosť sústredila na tieto línie:

Zvláštna fixácia na zastarané / nemoderné konvencie a obmedzenia „späť do doby kamennej“. Rovnako ako vývoj primitívnej webovej aplikácie vo VS2003 so zoznamom absurdných obmedzení, ktoré ďalej zakazujú použitie rozsahu explicitných funkcií v ére .net. akoby to bol skutočný ukazovateľ schopnosti moderných vývojárov. schopnosť pamätať si paradigmu a obmedzenia spred 9 rokov, ktorá je ďalej ochromená nereálnymi / svojvoľnými obmedzeniami. Ďalšie miesto bolo veľmi prenasledované témou zvykových zbierok, približne predgenerických zbierok. Na inom mieste bola ukážka kódu triedneho modelu, ktorý som načmáral, pretože som nepoužíval kaskádové konštruktory (zdalo sa, že si neuvedomujú podporu inicializácie vlastnosti pri deklarácii, ktorá podľa potreby stačila). Iné miesto bolo veľké na delegátov a nepáčila sa mi moja odpoveď, že som ich často vyhlasoval, ale vďaka Action & lt> a Func & lt> ich už prakticky nikdy nemusím vyhlasovať.

Extrémne zameranie na konkrétne podrobnosti implementácie v mikrokozme a / alebo konfiguračných nastaveniach, dokonca aj v prípade technológií, ktoré sa zameriavajú na agnostickosť platformy alebo protokolu (tj. Celý bod NEMUSÍ byť fixovaný na konkrétnu implementáciu alebo konkrétne použitie, ale skôr na opätovné použitie. / opätovné použitie / rozšíriteľnosť / podľa potreby integrácia).

Ochota špecifikovať / dohliadať na / preskúmanie kódu / a inak zaradiť prácu do az pobrežného tímu a nekódovacie schopnosti súvisiace s tým.

Používanie konkrétnych verzií produktov / platforiem / modulov / atď. Do niekedy absurdnej miery „Takže. Použili ste verzie 1, 2 a 4? Ale nie 3, hm? Hmmm. ". Zdá sa, že na stupni používania nezáleží iba na tom, či ste niečo používali alebo nepoužívali vôbec, a konkrétnu vec, ktorú tiež požadujú. Zdalo sa, že sa nepočítajú žiadne náhrady, dokonca ani v prípade širšie používaného a plne funkčného konkurenčného produktu.

Oveľa väčšie zameranie na to, „ako dobre zapadnete do nášho tímu„ nad “, ste skutočne dobrí ako vývojári softvéru“ alebo „máte schopnosti a skúsenosti na to, aby ste spoločnosti pridali hodnotu a pomohli nám dodať kvalitu výrobok "alebo dokonca" ste nebezpečný idiot, ktorý príde a zruinuje obchod ". V niektorých prípadoch bol môj životopis braný ako samozrejmosť a dokonca aj takzvaná „obrazovka s technológiou“ alebo technický rozhovor predstavovali hodnotenie osobnosti oveľa viac ako hodnotenie zručností. Dokonca aj na relatívne krátkodobé pracovné miesta, kde by ste boli a odišli pred dvoma sezónami.

Zdá sa, že spoločnosti sa tentoraz oveľa menej zameriavali na riešenie konkrétnych technických problémov, na začatie nových zelených polí alebo na veľké vývojové projekty 2.0 alebo na uvedenie konkrétneho produktu na trh, aby využili vznikajúci trend alebo príležitosť alebo obvyklé veľké výkopy. . Opakujúcou sa témou, ktorú som si všimol najmenej na 15 miestach, bolo to, že malá skupina 3 - 5 vývojárov, ktorí väčšinou prežili pád trhu v roku 08, dokázali za posledných asi 3 roky zomlieť výrobok. a našli nejaký úspech alebo ich spoločnosť ako celok zažíva boom a najímajú si nových ľudí, aby držali krok s rastúcimi požiadavkami na funkcie alebo aby riešili / prekonali chyby v dizajne, ktoré zabudovali do týchto systémov, alebo aby prevzali vyššie uvedené platformy zadarmo tím, ktorý ho postavil na uskutočnenie „ďalších projektov“. Podrobnosti sa líšili a vyskytli sa aj výnimky, ale to bolo tentokrát všeobecné položenie krajiny.

Ale. ak o tomto podnikaní viem niečo, je to, že je to cyklické. Keď nabudúce hľadám nový koncert, nebudem prekvapený, či sa hra ešte raz zmenila. Musíte zostať mentálne flexibilní, aktívne počúvať, vyhýbať sa absolútnym výrokom, ak sú zbytočné, ale nebuďte ako lasička a nevychádzajte ako jednorozmerní ľudia (idiot) fanatik, ani žiadúci), ani ako bytie tiež dobré (môže to byť hrozivé a stáť vás to koncertom).

Stačí upraviť prístup a nabudúce sa pokúsiť poskytnúť odmeranejšiu odpoveď. uveďte niekoľko rôznych spôsobov, ako by ste mohli pristúpiť k problému. ale aj keď je to len znalost vedomostí, konaj, akoby si o tom skutočne myslel a zdôvodnil to na mieste. Zdá sa, že je to pokornejšie a menej zastrašujúce alebo spochybňujúce.

Samozrejme, Murphyho zákon je taký, aký je, hneď po ďalšom rozhovore, keď prestanete byť „vášnivým pre môjho súčasného obľúbeného technologického chlapíka“ a zaujmete vyváženejší postoj, ktorý vás bude hladiť po brade, je koncert, ktorý vy by dostali ste sa, keby ste boli bláznivý fanatik. )


Posilnenie integrovaného environmentálneho modelovania návrhom rozhraní orientovaných na zdroje ☆

Integrované environmentálne modelovanie naberá na sile pri riešení veľkých vedeckých výziev, ako je monitorovanie prostredia na zisťovanie zmien a predpovedanie environmentálnych podmienok spolu s dôsledkami pre spoločnosť. Takéto výzvy možno vyriešiť iba multidisciplinárnym prístupom, v rámci ktorého sa vzájomne prepoja sociálno-ekonomické, geopriestorové a environmentálne informácie. Existujúce riešenia však nemožno hladko integrovať a súčasné paradigmy interakcie bránia bežnému použitiu existujúcej technológie. Predovšetkým je stále ťažké získať prístup a spojiť sa s harmonizovanými údajmi a algoritmami spracovania, ktoré poskytujú rôzne environmentálne informačné infraštruktúry. V tomto príspevku preberáme nový prístup k integrovanému environmentálnemu modelovaniu založený na poňatí vzájomne prepojených zdrojov na webe. Predstavujeme návrhové postupy pre vytváranie rozhraní orientovaných na zdroje, ktoré sú poháňané protokolom interakcie založeným na kombinácii platných väzieb na zlepšenie integrácie zdrojov, spolu s príslušnými odporúčaniami na implementáciu. Navrhovaný prístup orientovaný na zdroje poskytuje riešenie vyššie identifikovaných problémov, stále si však vyžaduje intenzívne vytváranie prototypov a experimentovanie. Diskutujeme o ústredných otvorených otázkach a predstavujeme plán budúceho výskumu.

Hlavné prvky

► Rozhrania orientované na zdroje na prepájanie environmentálnych zdrojov a modelov. ► Dizajnové postupy pre vytváranie rozhraní orientovaných na zdroje. ► Implementačné odporúčania pre vzájomne prepojené zdroje.


23 odpovedí 23

Jon, tvoj zoznam je veľmi obsiahly a umožnil by rozšíriť SO v podstate o akúkoľvek funkcionalitu, ktorú si dokážeš predstaviť.

Osobne by som si vystačil s oveľa skromnejším API. V skutočnosti by pre mňa bola najdôležitejšia vlastnosť spôsob, ako získať zástupcu používateľa na základe používateľského mena, e-mailu alebo OpenID. Za extra kredit mohli vhadzovať aj zaslúžené odznaky, ale to je pre mňa menej dôležité.

Prečo by to mohlo byť výsledkom toľkej výhry: Pred niekoľkými rokmi sa veľa hovorilo o centralizovaných online systémoch pre správu reputácie, ale nič sa skutočne nechytilo. Systém reputácie SO považujem za dokonalý východiskový bod, minimálne pre programátorskú / geekovú komunitu, aby sa lopta rozbehla.

Predstavte si, že váš osobný blog alebo webová aplikácia má prístup k skóre reputácie SO každého používateľa. Môžete povoliť používateľom s rep> = 50, aby používali HTML v komentároch, ktoré môžete dať používateľom s rep> = 1 000 automatickým prístupom moderátora na vašich fórach, môžete nastaviť vyššiu prioritu pri chybových tiketoch odoslaných používateľmi s vysokými rep. Atď. , „SO rep“ by sme mohli zmeniť na defacto štandard pre „geek cred“ online.

Funguje to rovnako ako Gravatar, keď sa zaregistrujete na webe, automaticky skontroluje zodpovedajúce skóre reputácie SO a zobrazí ho na stránke profilu používateľa webu.

There would have to be a system in place to ensure that these API requests didn't overload the SO server, but I'm sure that wouldn't be a problem, given the people who run this place.

For the moment I have scraping the HTML with the Reputation Tracker and it would be better with an API for sure.

Thing what would be great:

  • Get your reputation count
  • Get your last reputation variation and a link to the question/answer that has been modified.
  • Get comments after yours own comment

Maybe something like this :

I encourage people to edit this post to add information or change the format It's just a draft.

I just sent this email to Jeff. I'll let you know how he responds:

Hello Jeff & Team,

Sometime last night/early morning a change was made to the user profile page that limited the displayed answers to only the 100 highest-ranked. I'm the author of a service that enables users to track what caused their reputation to change, and the new changes have broken the way I captured data from the site.

In addition to the movement to remove the 100-answer limitation, I'd like to also view this as an opportunity to push for a Stack Overflow API. It would save bandwidth on both our ends if the information I needed could be obtained in a condensed, easily parse-able format. I've examined the JSON used to generate the table to the right of the reputation graph and, while it's promising, it's much too limited to replace the lost functionality, in my opinion. For example, it's not possible to get the actual score of a post or track when they are added or deleted. A more generalized API that can hook into a wider array of profile and post data would be greatly appreciated.

I know I speak for many members of the Stack Overflow community when I say that I'm excited at the possibilities for third-party expansion of the functionality and usability of Stack Overflow. However, what we need most at this time is a way to efficiently and reliably access the data needed to power our tools and services.

I hope I can look forward to working with you and my fellow developers to make Stack Overflow the best place to not only ask and answer questions, but for willing members to use our time and talents to give back and improve what the site has to offer.

Thank You.


5. Generic GML Browser

In order to test both the cascading GML analysis and the lazy integration strategy, we have implemented a simplistic GML to SVG transformation. The main idea is to visualize the geometric constructs and provide easy acess to the the non-geometric properties of the features. Transformation are done on GML instances, and the SVG application can not load data from other sources. However, this is made to outline strategies for handling instance documents, when there are mapping files present.

By accessing a mapping file, constructed using the cascading method presented above, the transformation stylesheet can convert any valid GML 2.x instance document into a SVG document, see generictool . It is however required that the cascading analyzis succeeded in identifying the elements in the GML application schemas describing a document. The structure of the final SVG-document, is identical to the GML file, in terms of nesting of features and feature collections. If the transformation comes over unknown elements, it will not continue parsing the sub-tree of this element.

Figure 9: Utilizing dictionary to parse arbitrary GML

Styling of the different features, has not been an issue in this work. Therefore, we have only introduced a very limited way of styling, only making it possible to apply one style for all features from one namespace. This is of course not adequate if more than one type of feature from a namespace is integrated into a vocabulary. The OneMap GML editor, presented at SVG Open 2003 [18] , is a lightweight SVG editor for editing and displaying GML 2.1 compliant data. The server converts GML to SVG, for the client to display it and offer editing possibilites. One of the stated challenges for further work, was to develop a more robust method regarding what kind of data the application was able to utilize and edit. By implementing the next editor version, using the principles described in this article, the editor will be able to handle arbitrary GML, as opposed to only utlizing a specifically created GML format.

The integration example from the preceding section, has integrated features from ordnance survey, GML2 spec example, Norkart a OneMap. Applying the SVG transformation on these data, results in a map containing all integrated feature, see integratedsvg .

Figure 10: Integrated GML transformed to SVG

The styling is as simple as possible, allowing users to specify custom styles for each namespace present. This file is the specified when converting. All namespaces, that has not been applied a user style, will get a default style. The style to specify is identical to the value of the SVG style attribute, and is applied to all features using a named class.If the user wants to specify a custom style, a style as that listed underneath, will be stored in a separate file, then the filename is passed to the transformation as a command line argument.

Even though the GML to SVG transformation can be applied to all GML 2.x data, that there is a mapping file available for, the integration namespace has introduced an attribute that can be used on a feature collections, representing a feature layer, e.g. roads alebo rivers ( integratedsvg ).

Figure 11: SVG integrated layer visibility

It is pretty trivial to draw the geometries of GML in SVG, considering that most geometry types in instance documents are original GML elements. The transformation do however also map the non-spatial element types and values, into the SVG file, making it possible for users to review their GML data. By clicking on the different features, information stored in the features, toghether with the type information, can be accessed ( finfo ). As for now, the feature type information given is pretty thorough, maybe a bit to extensive for an ordinary viewer, but as a valuable supplement for companies wanting to review their GML data, not having a proprietary viewer.

Figure 12: Feature information window

For quick viewing of GML data, the transformation can be applied to a type-mapped file, without the need of any styling at all. Default styling will then be applied to all features. Top10nl example data, will e.g. be converted into a SVG file, as shown in figure top10_svg .

Figure 13: Ordnance survey data with default styling


Monday, April 4, 2011

Disasters and maps

7 February 2011 marked the second anniversary of the worst bushfire tragedy in Australian history - 173 people died and 414 were injured as the result of infernos raging around the State of Victoria. The Black Saturday Bushfire was a very traumatic event for many Australians, those directly affected by the fires but also those thousands who got emotionally and personally involved in post event forensic studies, clean up, counselling, rebuilding, Royal Commission and general assistance through voluntary work or collection of donations. The whole nation felt the pain and helplessness in the wake of such an enormous tragedy.

After a period of a relative calm over the last two years Australia has been struck again by several major natural disasters, such as flush floods in Queensland and Victoria, tropical cyclone Yasi, or bushfires in Western Australia. Events like these bring online crowds of people: those caught inadvertently in the incidents, or those concerned about safety of their family members and friends, but above all, “curious onlookers” from around the world who just would like to know what is happening. All those people are looking for basic information, such as maps of places to identify where “these things” reported in commercial and social media are happening, as well as anything that relates to progress of the event, likely scenarios it may evolve into and the impact on people, infrastructure and the surrounding environment.

In the first instance they turn to official sites run by State authorities - those that issue the alerts and warnings - and of course the Australian Bureau of Meteorology. When they can’t find what they are looking for, or the information is not in the format that is meaningful, they turn to online search engines seeking more details about the event. It is therefore not a coincidence that during the times of natural disasters the traffic to sites providing information on maps goes through the roof. A question comes to mind if there really is enough tools in the public domain to keep general public fully informed. Has anything changed since Victorian bushfires of 2009?

In an ideal world, all the relevant information would be provided by the authorities, along with alerts, warnings, evacuation orders, road closures and detour routes, situation briefs etc. And through all possible channels: online, stationary and mobile phones, radio and TV, and in all formats: text, audio and video broadcasts and online streaming, printed as well as static and interactive maps, and above all, web services for republishing the information through media and social channels. But that is still only a distant dream. The reality is that information is very fragmented, differs in formats and content from State to State and ultimately in reliability, accuracy and timeliness.

So, what information is actually available, in spatial format, to an average person interested in a particular event? Let’s start with bushfire related information as there is quite a few resources available.

Detection of fire hotspots from satellites has been around for quite a while and Australia has two systems delivering such information that pre-dates Victorian bushfires of 2009: Geoscience Australia’s Sentinel and Landgate’s FireWatch. Both are using data obtained from the NASA Earth Observation Satellites Terra and Aqua which pass over Australia up to three times a day (although a revisit of the same area is only two times a day). Although data has some limitations, like timeliness due to infrequent revisit cycle or inability to detect hotspots through thick smoke and clouds, these applications provide excellent location reference for larger fire outbreaks throughout Australia. Geoscience Australia publishes the data in KML, WFS and WMS formats. I use those in my Hazard Monitor Bushfire Incidents map to publish an alternative view of the information. FireLocator from PitneyBowes provides yet another version of the same data in Silverlight format and with Bing Map in the background.

North Australia Fire Information is an application dedicated to monitoring fires in the northern part of Australia. In addition to satellite detected fire hotspots it also includes information on fire scars from past bushfires. Some of the information available on this site can be accessed in KML and WMS formats.

State authorities responsible for emergency alerts and response to natural disasters are publishing on their respective websites summaries of information on the latest incidents. Victorian Country Fire Authority (CFA) publishes a summary of incidents in a tabular format and on a Google Map. The information is also available as RSS feeds (locations are not georeferenced, hence cannot be directly imported into maps).

In NSW Rural Fire Service (RFS) publishes its version of summary of incidents - as a list and a map. Georeferenced RSS feed is also provided.

Both Bushfire Inci de nts map and FireLocator (developed in late 2009) are using the above feeds to display information about the latest incidents on the maps. During the peak of Victorian bushfires Google released its own application that mapped these feeds and showed satellite imagery of smoke and cloud cover.

Tasmania Fire Service (TFS) is another agency that publishes fire incidents information and a map as well as distributes the information via RSS (non-georeferenced) and KML. And South Australian Country Fire Servic e (CFS) publishes map and incidents in a similar fashion to already mentioned States (their RSS feed is also not georeferenced).


There are no interactive maps with the latest incidents for Queensland and Western Australia and those states do not publish RSS feeds in the format that could be easily reused for displaying the information in third party mapping applications.

The most recent additions to the list of online bushfire related information sources are BushfireConnect and everymap.com.au. Built with Ushahidi, these online mapping applications aim to publish information supplied by the public located in the affected areas, either by lodging reports online, or via SMS or Twitter (ie. crowd sourcing). They also republish RSS alerts from State authorities. Not the easiest and the most intuitive tools to use but these initiatives are attempting to engage a wider community in reporting of incidents so, deserving all the support.

At the time of major disasters media and private individuals create maps and various applications to share the information about a particular event. Examples include a Black Saturday feature created by ABC that allows users to explore timeline of events on an interactive map, or Google’s MyMap version created by a private individual as a static record of events (presented here on aus-emaps.com shareable map).


Pozri si video: ESRI Silverlight API - Editing1 (Október 2021).