Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Создам новую тему. Перекинь из той темы начало разговора сюда.
ЦитатаPeter ()
Даже во взрослых языках всегда стараются максимально СНИЗИТЬ количество параметров функции или процедуры,
Я согласен. Вообще у меня этот вопрос зародился давно. Еще когда Гарик возмущался по поводу ограниченного количества параметров в написание плагина. Была мысль ему пояснить как это обойти, но не стал. В интернете таких примеров нет.
Суть вопроса не столько в количестве параметров, сколько в отображении их в окне помощника.
Это я уже понял, потому и показал тебе картинку. Окно помощника сделать-то несложно... Но, вот помощника ЧЕГО? Кто будет обрабатывать:
Цитатаmishem ()
CallPlagin
В NB нет такой команды. Сделать это командой плагина, но вот что будет делать плагин со всеми этими параметрами? Или ты планируешь запихнуть в одну строчку кроме параметров, ещё и целый скрипт? Чтобы потом из плагина отправить его обратно в интерпретатор?
Вот это - точно "в обход".
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Сделать это командой плагина, но вот что будет делать плагин со всеми этими параметрами?
Можно что сделать, все эти параметры скидывать в переменную. А обрабатывать уже будет Call. Команда Call вообще может просто обрабатывать скрипт НБ без всяких параметров.
Допустим, мы создали список параметров и значений плагином. Можно плагином их распарсить в переменные, а можно сложить просто в одну переменную.
Далее мы пишем скрипт где первой строчкой идет команда StrParse которая создаст массив, а далее уже по накатанной...
Ты можешь сказать что это все можно сделать и НБ. Можно, но это будет разово. Так как мы к примеру сегодня можем создать переменную с перечнем параметров, но у нас не будет их описания. Завтра уже забыл что, где и зачем.
Можно к примеру сделать две команды. Одна создать параметры. Мы создаем параметры и описание к ним. Сохраняем эти параметры к примеру в файл где они идут как комментарий в первой строке. Далее открываем этот файл в редакторе функций или даже лучше в обычном редакторе НБ и уже пишем весь нужный нам код с учетом тех параметров который создал плагин. Без добавления новых параметров. Сохраняем в файл.
Вторая команда, указываем файл. В первой строке читаются параметры если их нужно редактировать, то есть открывается окно помощника и указываются значения. Или просто эта команда выполняет скрипт из файла.
Гм.... mishem, по-моему ты слишком увлекся "обходами".
К тому же, для твоей задумки вовсе не нужен плагин, ты можешь написать такую "напоминалку" сам в NB. И все остальное - тоже.
Но, попробуем заслушать "начальника транспортного цеха". Может я чего-то недопонимаю.... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
К тому же, для твоей задумки вовсе не нужен плагин, ты можешь написать такую "напоминалку" сам в NB. И все остальное - тоже.
Я думал об этом. Что то не срослось. Не помню уже что.
ЦитатаPeter ()
А комментарии для чего придумали?
Комментарий, описание функции. Описание параметров не удобно.
Ну вот к примеру я функцию делал. Попробуй разобраться. Скопируй, сохрани в файл и открой командой Call
Код
{NeoBook Function} Version=5,80 Language=NeoBook Comment=Пишем через разделитель | по порядку| Обычное состояние кнопки Для всех кнопок|1 верхний цвет градиента|2 нижний цвет градиента| Подсветка когда поподает кнопка в фокус мыши|3 верхний цвет градиента|4 нижний цвет градиента| Нажата кнопка|5 верхний цвет градиента|6 нижний цвет градиента||Активная кнопка. Выглядет постоянно нажатой| Обычное состояние|7 верхний цвет градиента|8 нижний цвет градиента| Подсветка|9 верхний цвет градиента|10 нижний цвет градиента| Нажата|11 верхний цвет градиента|12 нижний цвет градиента||13 Вертикальная разделительная линия первый цвет|14 второй цвет|15 Горизонтальные линии для всех цвет верхней линии|.16 цвет нижней линии|.17 Горизонтальная линия активной цвет верхней линии|.18 цвет нижней линии Param=[%Name_Button]|Text|Имена кнопок по порядку через запятую: Param=[%Height_Button]|Text|Через запятую высота кнопок / растояние от верха: Param=[%Container]|Text|Имя контейнера с тремя прямоугольниками: Param=[%Rectangle]|Text|Имена трех прямоугольников в контейнере через запятую: Param=[%Color]|Text|Цвета для кнопок через разделитель см. Комментарий: Param=[%SaveFile1]|FileName|Путь к файлу для первой кнопки (bmp): Param=[%SaveFile2]|FileName|Путь к файлу для всех остальных кнопок (bmp): Param=[%SaveFile3]|FileName|Путь к файлу для активной первой кнопки (bmp): Param=[%SaveFile4]|FileName|Путь к файлу для активной остальных кнопок: {End} Loop "1" "4" "[%i]" ExtractFilePath "[%SaveFile[%i]]" "[%FilePath]" FolderExists "[%FilePath]" "[%Result]" If "[%Result]" "=" "False" CreateFolder "[%FilePath]" EndIf EndLoop
На много было бы удобней если все параметры существовали бы. Неужели никогда не сталкивался с подобной ситуацией, когда есть много параметров, и их на много удобней просто в функции реализовать? Не хочешь читать хелп?
Класс!!! Вместо того, чтобы вспомнить и ещё раз попытаться (ведь работа с простым текстовым файлом - стихия NB), нужен плагин.
Тут не плагин нужен, а - УТИЛИТА!
Цитатаmishem ()
Попробуй разобраться. Скопируй, сохрани в файл и открой командой Call
Попробовал... Скопировал... Сохранил в файл... Открыл командой Call... Мало чего понял... Откуда мне знать твои задумки? Нагромоздил всякой всячины, и мне - разбирайся, мол!
Цитатаmishem ()
На много было бы удобней если все параметры существовали бы.
Да не будут они существовать эти параметры как параметры! Тебе по-любому придется парсить текст КОДОМ NB. Ты запутаешься в этих:
Цитатаmishem ()
Сохраняем в файл.
Вторая команда, указываем файл.
Цитатаmishem ()
Неужели никогда не сталкивался с подобной ситуацией, когда есть много параметров, и их на много удобней просто в функции реализовать?
Сталкивался, и именно когда делал плагин (потому и показал картинку). Но, только есть большая разница - в плагин я отправляю все гуртом (командой плагина), и в нем уже обрабатываю входные параметры и применяю их, а у тебя все нужно делать скриптом NB, и чем тут может помочь плагин никак не могу понять.
Ну хоть убей! - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
и чем тут может помочь плагин никак не могу понять.
Дать возможность вносить изменения в окне помощника.
Если сделать в НБ, нужно запустить утилиту, что то скопировать, что то вставить... В итоге по любому откажешься от этой утилиты. Нет возможности все делать оперативно.
Плагином можно сделать так, что бы при щелчке по команде открывалось окно помощника. Наверно все таки ты правильно подметил, это все только ради описания параметров.
То есть сделать практически все тоже самое что делает Call, только с возможностью отображения больше 9ти параметров. Не хочешь читать хелп?
что бы при щелчке по команде открывалось окно помощника.
ВОТ! При щелчке по КАКОЙ команде? Если щелкнуть по Call, то вылезет окошко NB-помощника.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
При щелчке по команде плагина. Именно для этого и нужен плагин. Что бы можно было указать больше 9 параметров.
Только эти параметры не будут параметрами НБ. Так как НБ не понимает больше 9 параметров.
В плагине создать что то свое, что бы можно было указать больше 9. Выше я тебе описывал наиболее простой вариант подхода к этому делу. Но может быть у тебя есть свой взгляд как лучше это реализовать.
Вот! Чтобы вылезло окошко плагина нужно делать собственную Call, но с другим названием. И вот тут начинаются варианты. По сути, два разных пути: 1 - делать полный аналог штатной со всеми "внутренностями", т.е. функционалом. Теоретически такое возможно, а практически... Только ради удобства редактирования параметров?... Гм... Суеты на 100 (если не на 1000) рублей, а смысла и пользы - на рубль
2 - делать полный аналог штатной, но уже не со всеми "внутренностями", т.е. просто вызвать обычную необушную команду Call и запихнуть в неё "составные" параметры.
И снова суеты на 50 рублей, а смысла и пользы - на тот же рубль.
В принципе, есть ещё и третий "гибридный" вариант, но ... Не бум о грустном...
Но, тут нужно учитывать вот-что: когда ты прописываешь в скрипте NB Call, то NB автоматически включит эту функцию в проект, если же делать аналог в плагине, то функцию уже нужно вкладывать в проект вручную. Помнится была какая-то тема на эту тему ( ) типа, чтобы NB парсила и функции на предмет выявления использования команды Call в других функциях, но не знаю реализовано это или нет.
Цитатаmishem ()
бы можно было указать больше 9.
Напрямую параметров все-равно можно не больше 9, и без разницы - плагин или сама NB. Просто нужен трюк - в 1 параметр запихнуть несколько "подпараметров".
Цитатаmishem ()
я тебе описывал наиболее простой вариант подхода к этому делу.
Если честно, то я его не до конца понял. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Чтобы вылезло окошко плагина нужно делать собственную Call, но с другим названием.
Долго я думал, и получается что это самый лучший вариант (для нас).
ЦитатаPeter ()
Только ради удобства редактирования параметров?...
Не ради удобства. Все это нужно ради большого количества параметров. Не хватает 9. Лично мне очень часто не хватает, не знаю как другим. Порой в сторону функций даже не смотришь, только из за того что не хватает параметров.
Для рАзового варианта можно в один параметр засунуть несколько и распарсить после, но функция чем и хороша, то что ее делаешь для последующего использования в других проектах. А при таком подходе, я тебе уже выше показал что получается. Думаешь я сейчас помню что там городил? Примерно помню, посидеть пару часов, все вспомнится, но на хрена тогда такая функция?
А если бы были все параметры по отдельности, все делалось бы за считанные минуты, без лишней головной боли.
Все это нужно ради большого количества параметров. Не хватает 9.
Ё-моё! В то время как весь программерский мир стремится к минимуму параметров, русские необукеры мечтают об обратном. mishem, я уж лет 9 точно, как ковыряю Delphi, пересмотрел кучу всяких исходников (в т.ч. и VCL), примеров, и т.п., но функций или процедур более, чем с 3-4 параметрами чего-то не припоминаю. А в NB вообще представить функцию, которую:
Цитатаmishem ()
для последующего использования в других проектах
даже с 9 параметрами, лично мне не удается. Можно чего-то нагородить в одном проекте, но вот применять это позже и для других проектов. Ну не умещается это у меня в голове! Ну, хоть убей!
Цитатаmishem ()
это все мечты.
Да чисто технически это... гм... можно реализовать, только знаешь ЧТО будет? После одного единственного использования отправится (как показывает опыт) это добро на пыльную полку "до лучших времен".
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Можно чего-то нагородить в одном проекте, но вот применять это позже и для других проектов. Ну не умещается это у меня в голове! Ну, хоть убей!
Понимаешь, в НБ под функцией совсем другое понятие, во всяком случае у меня.
Выше функция которую я тебе дал, рисует кнопки. Бегло я сейчас насчитал 26 параметров. Я уложил это все в 9 параметров, но ничего не понятно. Сейчас я еще помню что к чему, и то уже надо разбираться, да и вводить значения начну, запутаюсь. Не говоря уже о том, что бы дать ее кому то использовать.
Я не знаю как это в делфи может называться. Модуль, класс... В принципе даже можно сравнить с инспектором объектов где указываются параметры.
Я просто программно создаю объект, параметры которого могут меняться в самом проекте не один раз, не говоря уже о том что бы перенести в другой проект.
Можно конечно все это создавать в подпрограмме, но опять же, я пытаюсь что то найти новое и свести к минимализму.
Кстати эти 26 параметров, можно было бы уложить в 13, и было бы все понятно, но опять, 13, не 9.
Были моменты, когда все просчитал, все подогнал, и все равно выходит 10 параметров. Как не крути, а один деть некуда. Плевался, клава улетала, и все бросал. Только из за одного параметра который не умещается. И ничего сделать нельзя.
Я тебе говорю, у меня эта мысль давно в голове сидит. Но если я тебе не могу объяснить на русском, то как объяснить это разработчикам на английском? Не хочешь читать хелп?
не это бред, запутаешься в этих параметрах. лучше тогда создавать переменные с осмысленными названиями, а в функции получать их значения с nbGetVar Как задавать вопросы
mishem, никто это использовать не будет, и такие вещи делаются по-другому. Во-первых, нужно четко понять, что в небушном SDK есть ограничение в 10 параметров на команду, и никаким плагином это ограничением не преодолеть. Другое дело, что в один параметр можно запихать т.н. пары подпараметров (сколько угодно) как это сделано в том же NeoBookDBPro, например. Но, все равно в одну команду можно будет запихать максимум 9 групп пар подпараметров (10 - имя функции). В результате ты получаешь ту же самую необушную функцию, но с "составными параметрами" и с тем же ограничением в 9 параметров. ВСЕ!!! БОльшего тут не сделать, и нет никакого смысла громоздить плагин только ради удобства заполнения пар подпараметров, описание которых все-равно никуда не приткнуть так, чтобы можно было прочитать и "вспомнить", потому-что в самой функции они все-равно не будут прописаны, и универсального решения тут не будет, хранить их можно только в отдельном файле и плагин тут не нужен, а нужна просто самостоятельная утилитка, которую ты можешь сделать и в NB - заполнил параметры, скопировал в буфер, вставил в первый параметр необушной функции, затем - второй, третий.. хоть все 9 раз. Ты с не меньшим успехом можешь просто написать себе в блокноте обычную памятку с описанием функции и ее параметров.
26 кнопок... Если не хватает тебе одной функции, то сделай две, не хватает две - сделай три, но никто не пихает в одну функцию подобный функционал (хорошо сказал, неправда ли? ). Сильно сомневаюсь в том, что ты сам воспользуешься подобной функцией больше одного раза, а уж кто-то другой на 1000% пользоваться не станет. Просто потому-что подобная задача рАзовая, да и решить её можно иначе.
Для сведения: в плагине делаются подобные "пары", действительно для удобства и "экономии параметров" (которых не должно быть больше 10), но при этом есть одно стратегическое отличие - плагин "знает", что должно прилететь в этом параметре, и соответственно знает как это окучивать, и каждая такая конструкция - рАзовая. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Единственное что мне лично не хватает в описании параметров функции так это типа Список
По сути, это как-раз то, о чем и толковал mishem. Если быть точнее, то не просто "список", а "список строк", но это более "объемный объект", чем необушный ListBox. К тому же, это все можно реализовать и собственными средствами NeoBook, и именно поэтому разработчики его не добавили как тип параметра. Типы параметров необушных функций нужны самой NB, а не пользователю, т.к. в конечном итоге обрабатывать параметр все-равно надо скриптом NB, и для этого тип параметра не имеет никакого значения. В скриптах все - строки. Единственный тип параметра, который имеет реальный смысл - VARIABLE (переменная), т.к в этом случае NB передаст в функцию имя переменной, а не ее содержимое. Все остальные "типы" - те же я..., только вид сбоку. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Если быть точнее, то не просто "список", а "список строк", но это более "объемный объект", чем необушный ListBox.
мне как раз списка и не хватает. сразу поясню, что, в некоторых функциях я использую метки перехода соответственно один из параметров(обычно первый) функции отвожу под название меток. соответственно при вызове нужно указывать название и список из названий был бы кстати. особенно когда функция не находится в папке Functions.
Во "взрослых" языках программирования использовать объекты в качестве параметра можно, но, все-равно, конкретное решение будет зависеть от конкретной задачи. В любом случае, обработка "списка" будет производится в теле (коде) функции, и остается только-лишь нужным образом сформировать и передать параметры. "Список" (для долговременного хранения) можно изобразить в виде файла (со списком строк), и в качестве параметра просто передать имя файла, а если оперативно, то в виде массива, и передать просто имя массива в качестве параметра. Но, опять-таки, все зависит от того, что и как требуется окучить.
Цитатаponand ()
особенно когда функция не находится в папке Functions
А это совсем непонятно. Функию можно вызвать из любой папки, необязательно всегда только из папки Functions, команде Call нужно только имя файла функции. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Во "взрослых" языках программирования использовать объекты в качестве параметра можно, но, все-равно, конкретное решение будет зависеть от конкретной задачи. В любом случае, обработка "списка" будет производится в теле (коде) функции, и остается только-лишь нужным образом сформировать и передать параметры.
Вы немного меня не правильно поняли, не хватает списка в режиме редактирования свойств, вызываемой функции в редакторе кода.
ЦитатаPeter ()
А это совсем непонятно. Функцию можно вызвать из любой папки, необязательно всегда только из папки Functions, команде Call нужно только имя файла функции.
открыть для просмотра через F11 получается только из папки Functions
Сообщение отредактировано ponand - Чт, 05 Февраля 2015, 22:06
не хватает списка в режиме редактирования свойств, вызываемой функции в редакторе кода.
Ну, думаю, дело это поправимое. Я уж предлагал мишему (да что-то он не проникся) - сделать (хоть в той же NB) утилитку для редактирования, поместить её в "Инструменты" NB, и работать через буфер обмена. В конечном итоге, передаваемый в функцию параметр все-равно надо окучивать кодом самой функции, и неважно в каком именно "редакторе" этот параметр создается. Разумеется, все это в том случае, когда строка "списка" (параметра) должна идти в виде типа "параметр=значение[#13]параметр=значение", примерно как в NeoBookDBPro. А если все это нужно только как "памятка" (параметр=описание), то это, пардон, гм... Дипломатично выражаясь, перебор. Но даже и это можно сделать.
Цитатаponand ()
открыть для просмотра через F11 получается только из папки Functions
Ну, я не знаю... Совершенству предела нет! Ну, не могут же разрабы NB предусмотреть "предпочтения" всех пользователей. На мой взгляд (а у меня было с чем сравнивать) в NB вообще все организовано на порядок удобнее, чем у "конкурентов".
После F11 нужен всего-лищь один "лишний" клик мышкой по указанной стрелкой кнопке.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
А если все это нужно только как "памятка" (параметр=описание), то это, пардон, гм... Дипломатично выражаясь, перебор.
думаю, так бы хватило значение[#13]значение[#13]значение[#13]значение[#13]значение[#13]значение просто ограничить выбор значения в параметре функции списком из комментария.
ЦитатаPeter ()
После F11 нужен всего-лишь один "лишний" клик мышкой по указанной стрелкой кнопке
думаю, так бы хватило значение[#13]значение[#13]значение[#13]значение[#13]значение[#13]значение
Тогда я вообще ничего не понимаю... А что мешает взять и написАть так? Какая разница как будет выглядеть "список": "вертикально" или "горизонтально"? По-любому нужно парсить параметр потом. В чем проблема?
Я бы вообще применил в качестве разделителя строк запятую или точку с запятой (просто писанины меньше). Ну если только:
Цитатаponand ()
просто ограничить выбор значения в параметре функции списком из комментария.
Иными словами, нужно чтобы некий код проанализировал описание параметра (функции), и вытащил из него названия "строк", или "значения", а потом ещё и подставил все это в строку параметра, а если содержимое "строки" не совпадает, то, например, выдал бы сообщение?
Ну, если так... Хотя и это можно сделать (теоретически той же утилиткой), но это уже ... гм... Однако, до чего ж мы так дойдем?
Самое интересное то, что анализировать в коде самой функции "список" (и соответствия строк) нужно в любом случае.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться