| Повече ▼

Защо контекстното меню не се показва?


Опитвам се да създам и покажа контекстно меню за arcmap desktop 10.2. Следвах стъпките в връзката, предоставена от esri, която обяснява, че трябва да отменя OnContextMenu. Не съм сигурен дали постъпвам правилно и се нуждая от вашата помощ.

Това, което направих, беше, че получих същия код, който е предоставен на уеб страницата и го поставих в моя проект, но нищо не се случва, когато щракна с десния бутон върху картата. Сигурен съм, че пропускам нещо ... трябва ли да регистрирам контекстното меню някъде?

Аз съм нуби, това е очевидно от другите ми въпроси, чета много, но става много объркващо, така че имам нужда от някой, който да опрости малко нещата.

Ето моето разбиране за това какво трябва да направя и ме поправете там, където греша. Според връзката, предоставена по -долу, има два начина да покажете контекстно меню. или чрез внедряване на ITool.OnContextMenu в случай, че искам менюто да се показва за конкретен инструмент, или чрез внедряване на IDocumentEvents.OnContextMenu, което и в двата случая събитието OnContextMenu автоматично ще се задейства, когато потребителят щракне с десен бутон върху активния изглед.

Изпълнението на събитието също е предоставено в линка, който копирах и поставих във VStudio ... сега идва частта, в която съм объркан. как да накарам събитието да се задейства?. Когато стартира arcmap на проекта, щраквам с десния бутон върху активния изглед, но не се появява меню. трябва ли сам да създавам менюто, използвайки формуляри на windows?

http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#//0001000004p9000000

Актуализация, ето част от кода, искам да започна да слушам тези събития OnMouseDown и OnContextMenu в тази част

публичен клас PTCExternalComponent: BaseTool, ISchematicXmlGenerate, ISchematicXmlUpdate {private Application _application; public void GenerateXmlData (низ диаграмаName, низ диаграмаClassName, ref обект xmlSource, ref bool отмяна) {cancel = false; опитайте {var app = NEAutomation2.Application.Instance (). IApplication; var nameofActivetool = app.CurrentTool.Command.Name; var activeTool = (ITool) app.CurrentTool; var toolIndex = app.CurrentTool.Index; //((IToolbarControlEvents).OnItemClick(ss); // activeTool.OnMouseDown (0, 0, 0, 0); var diagramGenerator = DiagramGenerationFactory.GetDiagramGenerator (diagramName, diagramClassName); if (diagramGenerator == null) ("Невъзможно да се намери генератор на диаграма за тип диаграма [" + diagramClassName + "]", вярно);} иначе {bool отменен; var diagram = diagramGenerator.GenerateDiagram (анулиран); var sxg = нов SchematicXmlGenerator (диаграма, невярно) ; // за отстраняване на грешки if (diagram! = null) xmlSource = sxg.GenerateDiagramXml ();}} catch (Exception e) {Logger.ShowMessageDialog ("Възникна изключение при опит за генериране на диаграма от тип" + diagramClassName + "; Изключение " + e. y) {// правете неща тук хвърляйте нов NotImplementedException ();} обект ISchematicXmlGenerate.Applica tionHook {get {return _application като AppRef; } задайте {_application = value като Application; }} Остатък от кода…

Внедряването на BaseTool е стар между другото, има доста неща, които ще трябва да направите, за да накарате ArcMap да „види“ инструмента. бих силно препоръчвам създаване на нов проект, започващ като добавка на ArcGis, което е налична опция, ако имате инсталиран ArcObjects SDK ... това свършва трудната част за вас. Ако решите да го направите по този начин, ще бъде много по-лесно, тъй като всичко идва предварително свързано и ще трябва да внедритеISchematicXmlGenerate, ISchematicXmlUpdateна всичкото отгореESRI.ArcGIS.Desktop.AddIns.Tool.

Ако искате да продължите с това, което имате, мога да ви дам пример за функции от един от старите ми инструменти, нареченEddie_Livesвпространство за имена HandiToolBar:

[Guid ("e272d412-85b4-4c5c-bfcf-33dee1dd3003")] [ClassInterface (ClassInterfaceType.None)] [ProgId ("HandiToolBar.Eddie_Lives")] публично запечатан клас Eddie_Lives: BaseTool {Регистрация # ComRegisterFunction ()] [ComVisible (false)] static void RegisterFunction (Тип registerType) {// Изисква се за ArcGIS Компонент Категория Регистратор поддръжка ArcGISCategoryRegistration (registerType); } [ComUnregisterFunction ()] [ComVisible (false)] static void UnregisterFunction (Тип registerType) {// Изисква се за ArcGIS Component Category Register Поддръжка ArcGISCategoryUnregistration (registerType); } #region Генериран код от регистъра на ArcGIS категория компоненти ///  /// Задължителен метод за регистрация на ArcGIS категория компоненти - /// Не променяйте съдържанието на този метод с редактора на кодове. ///  частна статична празнота ArcGISCategoryRegistration (Тип registerType) {низ regKey = string.Format ("HKEY_CLASSES_ROOT  CLSID  {{{0}}}", registerType.GUID); MxCommands.Register (regKey); } ///  /// Задължителен метод за отписване на категорията на компонентите на ArcGIS - /// Не променяйте съдържанието на този метод с редактора на кодове. ///  частна статична празнота ArcGISCategoryUnregistration (Тип registerType) {низ regKey = string.Format ("HKEY_CLASSES_ROOT  CLSID  {{{0}}}", registerType.GUID); MxCommands.Unregister (regKey); } #endregion #endregion

Очевидно ще трябва да генерирате свой собствен GUID, защото този вече е зает.

След това в инициализатора на класа:

обществен Eddie_Lives () {base.m_category = "моите инструменти"; // локализируема текстова база.m_caption = "Еди, редакторът."; // localizable text base.m_message = "Отваря интерфейса на eddie editor."; // localizable text base.m_toolTip = "Отваря интерфейса на eddie editor."; // локализируема текстова база.m_name = "Еди живее!"; // уникален идентификатор, който не може да се локализира (напр. "MyCategory_ArcMapTool") опитайте {// // TODO: ако е необходимо, променете името на ресурса // // низ bitmapResourceName = GetType (). Име + ".bmp"; base.m_bitmap = Properties.Resources.Eddie.ToBitmap (); //base.m_cursor = нов System.Windows.Forms.Cursor (GetType (), GetType (). Име + ".cur"); } catch (Exception ex) {System.Diagnostics.Trace.WriteLine (напр. Message, "Invalid Bitmap"); }}

base е свойство на BaseTool, което внедрявате.

След това в заменен клас OnCreate:

публично заместване void OnCreate (обект кука) {m_application = hook като IApplication; // Деактивиране, ако не е ArcMap if (hook is IMxApplication) {base.m_enabled = true; // активирайте инструмента

След като прескочите всички тези обръчи, можете да добавите компилираната dll (след като е регистрирана с помощтаC: Program Files (x86) Common Files ArcGIS bin ESRIRegAsm.exe) към ArcMap и инструментът ще бъде достъпен в диалоговия прозорец за персонализиране, поставете го в лентата с инструменти и вашите събития трябва да се задействат. Com типовете се заменят с добавки, което означава, че този код определено ще има ограничен живот преди вас трябва да създадете добавка, само за да я накарате да работи.


Как да премахна елемент от контекстното меню?

Инсталирах програма, наречена Aptana Studio 3. Той добави елемент от менюто в контекстното меню (ако щракна с десния бутон, виждам опция "Aptana Studio"). Как мога да премахна ръчно това от менюто си?

Търсих високо и ниско и не мога да намеря начин да премахна нещата от Aptana от моя Firefox. Може би това е така, защото съм на Firefox 4. Това, което направих, е, че съм влязъл в него

След това потърсих Aptana и има 3 елемента, които са изброени. Прикачих екранна снимка.

Въпросът ми сега е как мога да премахна тези елементи, защото може би това ще премахне опцията от менюто ми.


Зависи как дефинирате превключвател на контекст.

В традиционния смисъл това означава запазване на всички регистри/cpu състояние, промяна на mmu състоянието и след това отиване на друго място, за да отговорите на повикването и след като приключи, възстановете всичко.

Не е необходимо да запазвате цялото състояние за всички операции. Например заключване на mutex трябва да провери дали друга нишка/процес не използва mutex и след това да го маркира.

В едноядрен cpu можете да направите това, като гарантирате, че няма да се случват прекъсвания по време на операцията на mutex, а след това по силата на преминаване на точката на прекъсвания, която е деактивирана, знаете, че вие ​​сте единственият, който докосва mutex в този момент. Единственият начин, по който друга нишка може да бъде в средата на операцията за заключване, е ако тя отново активира прекъсвания или контекстът е изключен, защото мютексът вече е бил взет. И двата сценария и къде в кода могат да се случат са под пълен контрол на кода на ядрото.

Като казах всичко това, запазването на контекста не е толкова скъпо. По -скъпата част са всички пропуски в кеша, които ще се случат, когато потокът от инструкции отиде в студената памет.


Има различни места, където контекстното меню може да се задейства (ако щракнете с десния бутон върху папка, ще получите различни опции, ако щракнете с десния бутон върху файл). Променливата тип контролира това поведение в библиотеката и можете да се позовавате на тази таблица, за да определите типа:

Име Местоположение Действие
ФАЙЛОВЕ HKEY_CURRENT_USER Софтуер Класове * черупка Отваря се във файл
ДИРЕКТОР HKEY_CURRENT_USER Software Classes Directory shell Отваря се в директория
DIRECTORY_BACKGROUND HKEY_CURRENT_USER Software Classes Directory Background shell Отваря се на фона на Директорията
КАРВАНЕ HKEY_CURRENT_USER Software Classes Drive shell Отваря се на дисковете (помислете за USB)


1 отговор 1

Можете да разберете (част от) контекста, в който се намирате, като:

Това само по себе си ще ви помогне да определите къде се намирате (контекстуално казано). Определянето къде трябва да бъдете е друга история. Всяка операция, която правите в Blender, изисква да сте в правилния контекст. Начинът, по който мисля за контекста, е в какъв прозорец (контекст) се извършва операцията, когато извършвате действието, като щракнете с мишката? Може също да се наложи да се обърнете към приложния програмен интерфейс (API) или друга информация, но едно нещо, което намерих за помощ, е да знаете какви контексти съществуват!

И лесният начин да разберете това е:

Това издава полезна грешка:

TypeError: bpy_struct: item.attr = val: enum "?" не е намерено в ('VIEW_3D', 'TIMELINE', 'GRAPH_EDITOR', 'DOPESHEET_EDITOR', 'NLA_EDITOR', 'IMAGE_EDITOR', 'SEQUENCE_EDITOR', 'CLIP_EDITOR', 'TEXT_EDITOR', 'NODE_EDITOR', 'NODE_EDITOR' ',' OUTLINER ',' USER)

Е, има вашите типове контекст. . .

Не знам дали това е отговорило успешно на въпроса ви, тъй като все още не пиша приставки, но може да има нещо, което да ви помогне да преодолеете текущия проблем в него.


2 отговора 2

Ето контекста на съвета, който дадох преди за този цитат

За да избегна получаването на неща, които не исках, инсталирах изрично приложенията на KDE.

pacman -S плазмена работна област плазмен десктоп системни настройки kwin kdelibs kdebase-kdialog kde-gtk-config systemd-kcm kdesu krename kate kwrite retext kdegraphics-okular xdg-utils plasma-nm drkonqi kdeplasma-addons kscreen ksshaskpass ksysguard пожарник lib gnupg kdeutils-kgpg gnome-themes-standard xclip print-manager

Инсталирането на пакети изрично по този начин ще остави системата ви с отхвърлени пакети, които могат да ви създадат проблеми в бъдеще. например тук във вашия случай

kdebase kdegraphics-okular kdebase-keditbookmarks kdeutils-kdf kdemultimedia-kmixkdebase-keditbookmarks kdeutils-kdf kdemultimedia-kmix kdebase-lib kdeutils-kgp

се заменят с по -нови пакети.

Така че, за да инсталирате KDE правилно, трябва или да използвате -мета пакети или групи. Силно препоръчвам подхода на пакета -meta, тъй като групите не могат да наложат инсталирането на пакети, когато се разширяват или променят.

Ако настоявате да настроите системата си, използвайте групите и трябва да извършите почистването сами, но все пак много по -добре от много ниското ниво, което правите в момента.


Данните сами по себе си са просто шум.

В долната част на пирамидата имате всичките си необработени данни-римове и купчини необработени, удобни за компютъра факти, намиращи се в бази данни и електронни таблици. Разбира се, това е потенциална златна мина, но всяка мина съдържа много повече шлака, отколкото руда.

В епоха, когато са необходими само два дни за генериране на толкова данни, колкото човечеството натрупа от зората на цивилизацията до 2003 г., много предприятия са в опасност да се задушат под тежестта на собствените си данни и нямат служители с усъвършенствани умения за анализ на данни, за да мини го.

& ldquoData става все по -централно място при вземането на бизнес решения и се разширява до хора с малко или никакво обучение по използване и тълкуване на данни, & rdquo казва бизнес консултантът Бари Девлин.

Днес данните пристигат в различни формати, които след това се съхраняват в множество сложни системи или се разпространяват в различни отдели. Ето защо три от четири фирми казват, че искат да бъдат управлявани от данни, но по-малко от 30 процента всъщност са успешни в това.

Суровите данни имат ограничена бизнес стойност без контекст, тъй като не успяват да дадат на служителите необходимия опит, за да разберат какво е това, кога се е случило, къде се е случило, какво още се случва и т.н. Хвърлянето на необработени данни към вашите служители не им позволява да ги използват в пълния си потенциал - данните трябва да бъдат обработени за анализ, в противен случай те ще останат до голяма степен безполезни.


Отговори Ƒ ) 

Здравей AryaFathi
Поздравления! Аз съм Виджай, независим съветник. За начало, моля, изпълнете следните стъпки и ме уведомете (може да се наложи да направите последната точка)

1. CTRL+SHIFT+ESC, за да стартирате диспечера на задачите
Намерете Windows Explorer в раздела Процеси & gt Щракнете с десния бутон & gt Крайна задача
Сега в горната част Файл & gt Изпълнете нова задача & gt Поставете explorer.exe и Enter

3. Прегледайте по -долу помощта на Microsoft
Поправете File Explorer, ако не се отваря или стартира - https://support.microsoft.com/en-us/help/408737.

4. Причината за този проблем може да бъде разширения на черупки на трети страни. За да се отървете от разширението виновен, можете да изтеглите ShellExView. ShellExView е безплатно приложение на трета страна, което може да се използва за управление, деактивиране и активиране на всички разширения на черупката, които имате на вашия компютър

Стартирайте ShellExView, като щракнете с десния бутон върху приложението с име shexview и щракнете върху Изпълни като администратор

Ще бъдете запознати със списък на всички разширения на черупката, инсталирани на вашия компютър, след като програмата приключи с компилирането му. След като видите списъка, щракнете върху Опции & gt Филтриране по тип разширение & gt Контекстно меню.

В новосъставения списък ще видите записи с розов фон. Всички тези записи са разширения на обвивка, инсталирани на вашия компютър от приложения на трети страни.

Задръжте натиснат клавиша Ctrl и кликнете върху всеки от записите „розов фон“, за да ги изберете.

След като всички записи „розов фон“ са избрани, щракнете с десния бутон върху тях и щракнете върху Деактивиране на избраните елементи, за да ги деактивирате.

Щракнете върху Опции & gt Рестартирайте Explorer. Опитайте да щракнете с десния бутон върху работния плот и File Explorer не трябва да се срива повече.

След като отстраните проблема, следва да идентифицирате виновника и да го деактивирате завинаги. За да направите това, ще трябва:

Щракнете с десния бутон върху някое от разширенията на обвивката „розов фон“, които сте деактивирали, и щракнете върху Разрешаване на избрани елементи, за да го активирате.

Щракнете върху Опции & gt Рестартирайте Explorer, щракнете с десния бутон върху работния плот и вижте дали File Explorer

Ако File Explorer не се срине, продължете да повтаряте стъпки 1 и 2, като всеки път активирате различно разширение на обвивка на трета страна, докато File Explorer се срине и не започнете да изпитвате проблема отново.

Разширението на обвивката на трета страна, което сте активирали точно преди върнатия проблем, е виновникът. Можете да продължите и да активирате всички разширения на черупката „розов фон“, които сте деактивирали, с изключение на това, тъй като това е виновникът. Дръжте това разширение на обвивката деактивирано завинаги-всъщност се препоръчва да деинсталирате приложението на трета страна, което е инсталирало това разширение на обвивката на вашия компютър. (Източник-https://appuals.com/file-explorer-crashing-afte.)

5. Ако нищо не работи, бих препоръчал да извършите ъпгрейд за ремонт на Windows 10. Ремонтът на надстройката поправя всички грешки в Windows и запазва всички файлове, приложения и настройки. (Няма да загубите никакви данни, докато архивирането е добра идея) По -долу е добро ръководство за извършване на ъпгрейд на ремонт

Уведомете ме, ако имате нужда от допълнителна помощ по този въпрос. Ще се радвам да ви помогна.

Отказ от отговорност - Това е уебсайт, който не е Microsoft. Изглежда, че страницата предоставя точна и безопасна информация. Внимавайте за реклами на сайта, които могат да рекламират продукти, често класифицирани като PUP (потенциално нежелани продукти). Внимателно проучете всеки продукт, рекламиран на сайта, преди да решите да го изтеглите и инсталирате.


Предсказване просто казва това нещо ще се случи в бъдеще. Това може да се основава на научни познания, опит или нещо друго.

Учените прогнозираха земетресението преди десетилетие.

Той прогнозира, че няма да успее на теста, защото не отговори на половината от въпросите.

Гадателят предсказа, че ще получи чудо.

Можете да кажете, както прави тази статия, че

Този ефект е известен като гравитационна леща и е един от прогнози на общата теория на относителността на Алберт Айнщайн.

Няма грубост или нюхален нюанс, който да придава на научните прогнози. Може да се окажат грешни, но винаги са подчинени на научния метод.

Не само мога вие го използвате, но „предсказване“ е обичайната дума за описание на значението на теорията - в бъдещето или в миналото.

Думата "предсказване" се използва рутинно в науката, макар и с малко по -различно значение от конвенционалната употреба.

Обикновено, когато казваме „предсказване“, имаме предвид, че вярвате, че нещо ще се случи в бъдеще. Това би могло да се основава на някакъв обоснован анализ: „Известният икономист д -р Джоунс прогнозира, че борсата ще скочи с 500 пункта до август“. Или може да е свръхестествено: „Пророк Даниил предсказа падането на Вавилон чрез божествено откровение“.

Думата може да се използва с това значение в науката. "Геологът прогнозира земетресение."

Но също така може да се използва, за да означава, че нещо е следствие от теория. "Прогнозата на теорията на относителността на Айнщайн е, че всеки опит за измерване на скоростта на светлината във вакуум винаги ще даде един и същ резултат, независимо от относителните движения на източника и наблюдателя."

Казвам, че това е малко по -различно от конвенционалното определение, защото ученият не казва непременно, че вярва, че прогнозата е вярна. Той казва, че ако теорията е вярна, тогава този резултат ще се случи. В реалния живот учените често формулират теории, в които имат малко или никакво доверие, само за да имат някакъв стандарт, срещу който да се тестват. Например, един учен може да каже, че нямам представа дали магнитно поле ще повлияе на тази химическа реакция. Така че нека формулираме теорията, че скоростта, с която се образува утайката, не се влияе от магнитните полета. Можем да проверим тази теория чрез и т.н.

Учените рутинно говорят за „предсказанията на теорията“, тоест какви експериментални резултати трябва да очакваме, за да видим дали теорията е вярна. Това обикновено се използва като тест за валидността на една теория: ако при извършване на експериментите прогнозите се окажат неверни, тогава теорията трябва да бъде променена или отхвърлена. Ако прогнозите се окажат верни, тогава теорията може да е вярна. (Не можем да кажем, че теорията е доказана като вярна: може да изглежда, че тя е вярна само в някои случаи.) Ако не можем да правим каквито и да било изпитани прогнози въз основа на теория, се казва, че тази теория е слаба. Често се казва, че такива и такива не са легитимна научна теория, защото не водят до каквито и да било изпитани прогнози.

Казвам, че това е различно от конвенционалното определение. Някой може да отговори, че хората често се съмняват в прогнозите, че например много хора се съмняват в прогнозите на екстрасенсите. Но разликата е, че при конвенционалната употреба човекът, който прави прогнозата, вярва, че това е вярно. (Или поне твърди, че вярва, че е вярно. Дори най -лошият шарлатански екстрасенс не казва: „Наистина не вярвам, че тази прогноза е вярна. Това е просто нещо, което съм измислил за забавление.“)


Как контекстът ще премести IoT от интелигентни устройства в интелигентна общност

„Когато бъде разработен общ език за устройства и приложения, които да говорят помежду си без човешка намеса, възможностите на IoT ще бъдат умножени“.

С неотдавнашната експлозия от новини и актуализации относно Интернет на нещата (IoT) и неговия все още напълно определен потенциал да промени драстично начина на функциониране на света, хората биха могли да бъдат накарани да вярват, че тази технология едва е достигнала технологичен пейзаж.

Сензори и монитори обаче са налични от десетилетия и са широко разпространени за постигане на по -ефективни системи в промишлените вериги за доставки. Едва сега от мащаба и свързаността на устройствата той всъщност се нарича „интернет на нещата“.

Така че с тази промяна идва необходимостта от усъвършенствани стандарти и способността машините да могат да извличат контекст от непрекъснат поток от данни. Тъй като много заинтересовани страни сега проектират технологични платформи, за да възприемат IoT, те стоят на повратна точка.

Огромни данни

Според анализаторска фирма IDC, световните разходи за IoT ще достигнат близо 1,3 милиарда долара през 2019 г. от 698,6 милиарда долара през 2015 г. Този ръст се случва, тъй като праговете са намалени, тъй като устройствата стават по -евтини, по -практични и по -мощни.

Нещата станаха по-умни в ерата на изкуствения интелект, алгоритмично управляваната софтуерна мощ и големите данни. С всички тези фактори заедно се генерира огромно количество данни, но предприятията са задържани от неспособността им да генерират полезна информация от тези данни.

Но IoT доказва силата си в някои области. Сред най -ранните процъфтяващи области бяха сензорите за определяне на метеорологичните модели и сензорите за трафик, които да следят скоростта и плътността на трафика и да помагат на хората да планират пътувания.

Освен това, селското стопанство и хранително-вкусовата промишленост използват широко етикетите за радиочестотна идентификация (RFID) за добитъка. Въпреки че много от тези инициативи са ограничени в географски обхват, те са видели справедливо ниво на стандартизация и това е ключов фасилитатор към напредъка.

Общности на нещата

Следващата стъпка е да обедините тези изолирани схеми в общности от неща. За да стане това реалност обаче, трябва да се свърши повече работа по отношение на това как общностите и устройствата в тях взаимодействат и как информацията се споделя.

С появата на нови по -широки и по -стандартизирани платформи организациите бързо ще стигнат до точка, в която може да се извлече информация, която може да се предприеме от информационните потоци, които IoT им подава. Това изисква контекстът да се извлича от данни и взаимодействия.

Пример защо контекстът е толкова важен може да се види с интелигентно етикетиране на дрехи. С интелигентните етикети дрехата може да предава данни от етикета си към пералня, така че пералнята да може да избере правилната настройка според това от какво е направена. Това подчертава необходимостта устройствата и нещата да могат да предават информация & ndash или контекст & ndash помежду си.

Машинно обучение

За да стане IoT широко разпространено, машините и устройствата трябва да могат да вземат решения самостоятелно. Това зависи от способността им да извличат контекст чрез машинно обучение. Когато това бъде постигнато, това ще позволи на хората да бъдат извадени от уравнението, което води до стойност и ефективност на разходите.

Например в селското стопанство сензорите вече могат да извлекат контекст от RFID тагове, монтирани на животни, за да предупреждават собствениците, когато едно животно се е отклонило от пасището, намалявайки времето, прекарано в наблюдение на стадата.

Ако това може да бъде допълнително развито в производствената, енергийната и нефтената и газовата промишленост, сензорите и другите устройства, които събират данни, ще могат да съпоставят информацията, за да управляват по -добре запасите и да позволят превантивна поддръжка на скъпо оборудване без работници на място.

Освен това градовете ще станат по -интелигентни, замествайки сегашните изолирани системи, които не могат ефективно да си говорят помежду си и блокират управлението на услугите по интегриран начин.

Всичко това разчита на контекста & ndash, позволяващ на машините и устройствата да извеждат значение от потоци от данни от различни системи. Когато се разработи общ език за устройства и приложения, които да говорят помежду си без човешка намеса, възможностите на IoT ще бъдат умножени.

Когато това се случи, обществото ще може да премине отвъд концепцията за интелигентни потребителски устройства към интелигентната общност.

Източник от Giri Fox, директор на техническите служби, Rackspace