"Правильные" IDE, как альтернатива ArduinoIDE

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Новички постоянно спрашивают об альтернативе нашему убогому ИДЕ.
Альтернативы есть. И я предлагаю поделиться опытом.

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

Начну с того, что я потратил некоторое время на анализ плагина к Эклипс.
Новый плагин - версия 3. Поначалу просто праздник, но при компиляции для ЕСП8266 обнаруживается глюк, которого не было во 2.0 версии.
Так все прекрасно и монитор порта и менеджер платформ и библиотек. И управление проектами.

Сейчас я открою глаза многим, на удивительный факт! ;)))
Visual Studio Code, VSCode (существует и под Линукс) и имеет Афффигенный плагин для ардуино!
Не стану расписывать - я в восторге.
Вот реально удобно. Особенно наличие управления проектами. Монитор порта - очень скромный, но никто не мешает запускать внешний.
На линуксе мне миникома хватает за глаза, на Винде - есть свои темы, тотже путти.
Это тот же движок на котором написана Андроид Студия. Кто в курсе - поймет. Плагины на него есть подо все.
Он, конечно,  свободно распространяемый. Хоть и от Микрософта. И даже Ардуино плагин тоже от МС. ;)))

Это вообще сейчас модная штука. Мой сын на нем скрипты под Микротик пишет, и такой плагин тоже есть...(плагин сам выгружает скрипт из роутера и пишет его обратно) вообще очень "горячая" вещь, вот правда хорошая, хоть и от Микрософт! ;))
-------------------

Вот такая затравочная тема.
 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Да, я проверял пока только под Линухом, но полагаю, что в "родной стихии" программа от МС будет работать еще лучше! ;))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

wdrakula пишет:

Сейчас я открою глаза многим, на удивительный факт! ;)))

Действительно, открыл. Надо попробовать.

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Энтот Ардуино-плагин исходники как-то курочит? Т.е. созданное в VSCode можно отдать со всеми /src FLProg-еру чтобы он просто тыкнул в .ino, скомпилил его, залил и узбагоился?

b707
Offline
Зарегистрирован: 26.05.2017

sadman41 пишет:

Энтот Ардуино-плагин исходники как-то курочит? Т.е. созданное в VSCode можно отдать со всеми /src FLProg-еру чтобы он просто тыкнул в .ino, скомпилил его, залил и узбагоился?

никак не курочит. Главный .ino файл и все .cpp .h остаются совместимыми с Ардуино, их можно в любой момент перетащить в Ардуино ИДЕ или FLProg

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

sadman41 пишет:

Энтот Ардуино-плагин исходники как-то курочит? Т.е. созданное в VSCode можно отдать со всеми /src FLProg-еру чтобы он просто тыкнул в .ino, скомпилил его, залил и узбагоился?

речь у меня идет не про ситемы, в которых можно программировать контроллеры, а ИСКЛЮЧИТЕЛЬНО про совместимые с Ардуино ИДЕ системы. Более того, многие из них хотят видеть установленную Ардуино ИДЕ, и "паразитируют" на ней.

Так что вопрос, который ты задал, неуместен. И Эклипс плагин и VSCode экстеншн, пользуются структурой Ардуино ИДЕ, причем второй почти что полностью... я не проверял возможность подхватывать платформы из <sketchbook>/hardware  и библиотеки из <sketchbook>/library. Но скетчи просто берешь из скетчбука, причем я одновременно открывал и в ИДЕ и в VSCode... Каждый, однажды открытый скетч, VSCode помнит с платой и портом. Об этом многие плачут, кому нужно одновременно программировать два контроллера в сопряжении, часто ESP  и Avr.

Конечно Эклипс - очень крут по возможностям, но есть досадные мелочи, которые убивают.

Хотя в Аднроид разработке, Студия, основанная на том же движке, вытеснила практически полностью Еклипс. Поверь - вполне честно вытеснила! Дело в том, что это движок на NodeJS, следовательно кросплатформенный. Микрософт поняла, что есть Линукс и Макось и всю мощь своего девелопмента направила (о Б..же! Наконец-то!) на кросплатформенную разработку. А, что ни говори, программы писать они все-таки умеют!

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

wdrakula пишет:
программы писать они все-таки умеют!
Раньше линуксоиды говорил, что только облака рисовать :)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Я, с тех пор как перешел на Visual Studio + Visual Micro, ни разу не запускал стандартное Arduino IDE. 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

DetSimen пишет:

Я, с тех пор как перешел на Visual Studio + Visual Micro, ни разу не запускал стандартное Arduino IDE. 


дед, ты про честное пиратство, а я про официально свободное ПО, пусть и от Микрософт. ;))))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

нет.   я чесно купил Visual Micro, в прошлом году по акции за $15. 

у моего сына есть почта в домене .edu  

вот скудентам на почту с таким доменом высылали код, для вдвое меньшей цены.  Я и хапнул. :) 

За $30 то я, канеш, никогда бы не купил.  У мня стока и денег то нету. :)  

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

круто, но я не пользуюсь виндой. Тебе, конечно, верю! VSCode, он же и в моем мире существует тоже. ;))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

нет.   я чесно купил Visual Micro, в прошлом году по акции за $15. 

у моего сына есть почта в домене .edu  

вот скудентам на почту с таким доменом высылали код, для вдвое меньшей цены.  Я и хапнул. :) 

За $30 то я, канеш, никогда бы не купил.  У мня стока и денег то нету. :)  

Да ну, тут каждый чих в платном разделе поболее тянет )))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ua6em пишет:

Да ну, тут каждый чих в платном разделе поболее тянет )))

Дак я поэтому в платном разделе и не чихаю. Дорого. 

b707
Offline
Зарегистрирован: 26.05.2017

wdrakula пишет:

я не проверял возможность подхватывать платформы из <sketchbook>/hardware  и библиотеки из <sketchbook>/library.

 

и библиотеки и платформы подхватываются полностью. Пишу в VSCode, например, для STM32

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Не знаю .. пробовал Эклипс - тормознуто и даже очень. Надо будет попробовать, спасибо.

Сам, видимо по привычке, всё пишу в kwrite, компиляю sh-файлами, стыренными с ИДЕ, как-то привык уже. То, что пишу для сына или на публику - тестирую всегда в Ардуино ИДЕ. В основном работаю с 1.6.4, но и 1.8.5 тоже пользую периодически. Все эти подсказчики по функциям, правильности писания кода .. достают больше чем помогают: могу набирать код по 3 клавиши в сек, часто пишу "блоками" целиком if(){}else{} и т.д. .. пока оно сообразит что тут все верно .. уже 3-4 строки новых. Смысл? kwrite вполне покрывает мои нужды как редактор текста..

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

ua6em пишет:

Да ну, тут каждый чих в платном разделе поболее тянет )))

Дак я поэтому в платном разделе и не чихаю. Дорого. 

)))

 

salik
Offline
Зарегистрирован: 12.12.2018

Для Visual Studio интересными плагинами не поделитесь?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

salik пишет:

Для Visual Studio интересными плагинами не поделитесь?

сообщение #7

salik
Offline
Зарегистрирован: 12.12.2018

Не, с VISUAL MICRO то все понятно. Я вот собираю студию под себя и может кто какие полезные плагины установил для редактирования , подскажите названия пожалуйста.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

оне и так хорошо вместе работають, прям искаропки

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

Что то не понятно как в vscode плагин arduino установить из командной строки.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

А такой вопрос, PlatformIO норм вещь? Visual studio слишком огромное.

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

У платформ-ио своё представление об организации структуры директорий, отличающееся от ардуиновских hardware libraries, но привыкнуть можно.
Если использовать для esp8266, то к сожалению sdk у платформ-ио отстает, сейчас 2.5.0-2.5.0-beta2 несмотря на то что уже вышли 2.5.0-beta3 и 2.5.0

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Алексей. пишет:

Что то не понятно как в vscode плагин arduino установить из командной строки.

Разберётесь - поделитесь с сообществом

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

ua6em пишет:

Алексей. пишет:

Что то не понятно как в vscode плагин arduino установить из командной строки.

Разберётесь - поделитесь с сообществом

Поясню с чем связан вопрос: различные приложения любят в домашнюю директорию пользователя положить свою каку, arduino vscode platformio androidstudio не отличаются в этом плане от остальных, поигравшись в разные ide домашняя директория пользователя становится сильно засраной, для избежания этого я запускаю их в докере, окружение изолировано, дальше этого окружения уже не нагадить.
Про командную строку спрашивал, чтоб при построении образа сразу установить все prerequisites и плагины в том числе, ну раз нет api для установки плагинов, придется покликать маусом немножко.
Очень удивлен был когда запустил vscode и увидел, что без libasound2 она работать не будет, забавно, а звук то ей зачем?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Алексей. пишет:

ua6em пишет:

Алексей. пишет:

Что то не понятно как в vscode плагин arduino установить из командной строки.

Разберётесь - поделитесь с сообществом

Поясню с чем связан вопрос: различные приложения любят в домашнюю директорию пользователя положить свою каку, arduino vscode platformio androidstudio не отличаются в этом плане от остальных, поигравшись в разные ide домашняя директория пользователя становится сильно засраной, для избежания этого я запускаю их в докере, окружение изолировано, дальше этого окружения уже не нагадить.
Про командную строку спрашивал, чтоб при построении образа сразу установить все prerequisites и плагины в том числе, ну раз нет api для установки плагинов, придется покликать маусом немножко.
Очень удивлен был когда запустил vscode и увидел, что без libasound2 она работать не будет, забавно, а звук то ей зачем?

перевести бы еще с "птичьего" на разговорный русский

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Докер - это система изоляции типа механизма FreeBSD jail. Вот человек хочет образ докера разворачивать и конфигурировать (настраивать в нём IDE) автоматически, скриптами.

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

Что такое загаживают домашнюю директорию пользователя
arduino создает директорию .arduino15, vscode - .vscode, platformio - .platformio и ещё какую то Documents
Что такое запуск в изолированном окружении - аналог запуска на виртуальной машине, то что делают приложения на гостевой ОС, никак не повлияет на хостовую ОС.
Использование докера немножко отличается от виртуалки в привычном понимании, подробнее на хабре есть несколько статей.

bwn
Offline
Зарегистрирован: 25.08.2014

sadman41 пишет:

Докер - это система изоляции типа механизма FreeBSD jail. Вот человек хочет образ докера разворачивать и конфигурировать (настраивать в нём IDE) автоматически, скриптами.

О КАК! Я думал, это грузчик в порту. До чего техника дошла.))))

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Алексей. пишет:

Что такое загаживают домашнюю директорию пользователя
arduino создает директорию .arduino15, vscode - .vscode, platformio - .platformio и ещё какую то Documents
Что такое запуск в изолированном окружении - аналог запуска на виртуальной машине, то что делают приложения на гостевой ОС, никак не повлияет на хостовую ОС.
Использование докера немножко отличается от виртуалки в привычном понимании, подробнее на хабре есть несколько статей.

Алексей! Я не могу тебе ответить, потому, как подобной херней не страдаю. Плагины ты ставишь  из VSCode, из Адроид Стдии, из Netbeans, из Эклипса, если еще им пользуешься. Большинство систем имеют свой механизм uninstall. Использовать докер для порядка в домашнем каталоге, с моей т.з. - неуместно... ну про пушку и воробьёв ты слышал? ;)) Но у каждого свои представления об удобстве.

Мои основные рабочие инструменты - Андроид Студия и Нетбинс... Сейчас мне стал интересен VSCode, я с удивлением обнаружил движок как в А.Студии. А по уровню удобства ИДЕ ничего сравнимого со Андроид Студией мне не встречалось. Вот и подумал, что это стоит моего внимания. Пока - очень здорово! Из-за дурацкого решения в экосистеме Ардуино со структурой инклюдов и библиотек, не аккуратно отрабатывается переход по файлам, на точку определения символа. Но он и в Эклипс плагине тоже не точно отрабатывается. Автодополнение, автоформатирование  и подсказки в стиле Студии - это просто праздник.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Я добавлю про всякие нездоровые идеи ;)). Мы делаем себе девелоперскую машину в погоне за все утолщающимися ИДЕ и фреймворками.

Мы ставим ССД и кучу памяти, нам уже мало core i5 с четырьмя ядрами. Чтобы наше ИДЕ грузилось и работало быстрее.

Чтобы на витрбоксе поднять еще три-четыре-пять разных ОС для тестов. И чтобы они грузились не более 30 секудн.

И ты, Алексей, предлагаешь поступиться производительностью ради фетиша аккуратности? ;))) (шутка). Нет. Спасибо.

 

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

wdrakula пишет:
И ты, Алексей, предлагаешь поступиться производительностью ради фетиша аккуратности? ;))) (шутка). Нет. Спасибо.

Я вообще-то не предлагал ничего ;-) Только спросил как сделать и для чего мне это нужно.
Согласен, любая надстройка над системой снижает производительность, об оценке производительности можно говорить с цифрами если они есть.
К сожалению я не нашел способа измерить скорость сборки в vscode.
На холодном i3-4010U CPU @ 1.70GHz с 4G памяти и ССД, визуально разницы не заметил.
wdrakula пишет:
Чтобы на витрбоксе поднять еще три-четыре-пять разных ОС для тестов. И чтобы они грузились не более 30 секудн.

Смешно...
Запуск контейнера в докере на порядок превосходит загрузки полноценной ОС в ВМ.
Для гуёв используются иксы хостовой ОС, в контейнере их просто нет, доступ к иксам через сокеты для локального межпроцессного взаимодействия.

Ещё один важный момент, когда требуется код передать вместе с исходниками, необходимо передавать с тем окружением, в котором выполняется сборка.
И ещё, если при сборке сначала выполняется сборка тулчейнов, которые зависят от линукс-хедерсов, и исходники тулчейнов для сборки на хостовой ОС ещё не пропатчены, они просто не собираются.
Я налетел на это, когда после смены ОС с 16-й убунты на 18-ю при сборке openwrt пакет e2fsprogs отказался собираться, а на 16-й всё прекрасно собиралось.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Алексей. пишет:

Я налетел на это, когда после смены ОС с 16-й убунты на 18-ю при сборке openwrt пакет e2fsprogs отказался собираться, а на 16-й всё прекрасно собиралось.

нас, собирателей openwrt -  добавилось )))

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Алексей. пишет:

wdrakula пишет:
Чтобы на витрбоксе поднять еще три-четыре-пять разных ОС для тестов. И чтобы они грузились не более 30 секудн.

Смешно...
Запуск контейнера в докере на порядок превосходит загрузки полноценной ОС в ВМ.

ОФФТОП. и своей же теме ;)))

Виртбокс не к тому был, а к тестам на разных платформах кросплатформенных приложений. У меня на виртбоксе разные версии винды... вынужденно.

А так - ты все правильно написал, я же и не спорю ни разу. Мне, в моей практике докер не нужен, но тебе - вероятно нужен.

Я единственную тему придумал - пересборку версий ОС для ARM проще сделать в контейнере, вероятно. Но например Армбиан дает сразу образ виртуалки со всеми тулчейнами... Они перейдут на контейнеры - и мы перейдем... ;)) Armbian уже начал, но еще не все готово.

Abbat
Abbat аватар
Offline
Зарегистрирован: 23.08.2017

wdrakula пишет:

Сейчас я открою глаза многим, на удивительный факт! ;)))
Visual Studio Code, VSCode (существует и под Линукс) и имеет Афффигенный плагин для ардуино!

Пробовал. Всё прекрасно, но непонятно как (для отладки) поместить .hex или .elf файл в папку с проектом.

Может кто подскажет?

Abbat
Abbat аватар
Offline
Зарегистрирован: 23.08.2017

Можно ручками перетащить файл  c:/Users/****/Documents/PlatformIO/Projects/190406-104547-nanoatmega328/.pioenvs/nanoatmega328/firmware.elf

в папку с проектом, но это совсем не комильфо. Может скриптик какой у кого имеется?

 

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

1. тут речь не о Платформио а о Ардуино плагине. Это разные вещи.

2. Нихера не понял: hex или elf получатся у тебя в результате компиляции твоей программы.

3. Для воровства чужого кода придуманы другие средства ;))). Я таких плагинов не искал, уж прости.

Abbat
Abbat аватар
Offline
Зарегистрирован: 23.08.2017

То-то, что не понял!

Так ведь и я о плагине. Поясню: в результате компиляции скетча получается что? - правильно, загрузка в Ардуинку, ну или проверка его. скетча, на "вшивость". Загружаются в Ардуинку машинные коды т.е., которые представляются в файле hex -формата. Во его то мне и интересно получить в папке со скетчем - для отладки, например, Proteus-ом. Elf-файл тоже можно ипользовать для отладке (и даже лучше!). Плагин, конечно, генерит  эти два файла, но хранит их в своих внутренних каталогах. У меня в c:/Users/****/Documents/PlatformIO/Projects/190406-104547-nanoatmega328/.pioenvs/nanoatmega328/firmware.elf.

Вопрос в том, как перенести этот файл в папку со скетчем.(можно ручками, но хочется, что после компиляции файлик уже находился в папке со скетчем. Про воровство - я не понял: что и у кого. Замнём!

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

1. Платформио, это ДРУГОЙ плагин. Тоже хороший, и про Ардуино. но ДРУГОЙ, это ясно?

2. Пиши скрипт, руками по клавишам, не тупи. Весна действует?

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

Видимо нет понимания того что делаем, какие плагины используем, да и вообще чем отличаются эти два плагина.
Если по теме, то плагин ардуино именно использует апи командной строки ардуино-иде, без ардуино-иде (в отличии от платформ-ио) он не работает.
Как указать директорию для билда в свойствах - укажите для скетча в  .vscode/arduino.json свойство output,
например "output": "/tmp/my-sketch" и после сборки ищем свои эльфы и хексы в указанной директории.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Алексей. пишет:

Кстати, Алексей. Я рылся по плагинам от скуки и нашел вот прям Docker плагин для VSCode.

Поскольку я не использую докер я не могу судить о полезности, но тебе стоит посмотреть. Вроде все, что ты хочешь.

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

Если вы об этих экстеншенах, то это немножко не то, это инструмент для удобного пользования докером, создание и управление образами в ide vscode.
Мне нужно было обратное, построить образ, указав согласно инструкций с visualstudio, установить саму иде с нужными мне плагинами.
Образ немножко ридонли, т.е. всё что вы выполняли с диском в запущенном контейнере, после завершения выполнения контейнера слегка сдувается.
Запуская контейнер, каждый раз получаем один и тот же набор файлов, установленных пакетов и т.п. что было указано при построении образа.
Если необходимо сохранять результаты работы программ, то самое простое решение это использование волюмов (volumes). При запуске контейнера указываем директорию (которую хотим сделать общей) хостовой ОС и точку монтирования в гостевой ОС.

VSCode для плагинов и настроек использует домашнюю директорию пользователя, для настроек вполне логично, а для кода совсем не очевидно.
Если была бы возможность сразу после установки пакета vscode, установить и плагины, то настройки я как нибудь добавил в образ при построении.

Abbat
Abbat аватар
Offline
Зарегистрирован: 23.08.2017

Спасибо, Алексей! Ваш совет помог. Меня смущало лишь то, что в родном файле arduino.json

{
    "board": "arduino:avr:pro",
    "configuration": "cpu=16MHzatmega328",
    "sketch": "Device.ino",
 }

не было свойства output.

Путь к elf-файлу как от плагина PlatformIO мной приведёл лишь для примера. Прошу простить, что ввёл кого-то в заблуждение

Топикстартеру - хамские ответы никого не украшают

 

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

Первая ссылка в поиске vscode arduino build path указывает на проект vscode-arduino, там и описаны свойства.

Feofan
Offline
Зарегистрирован: 28.05.2017
Доброго времени.
Не могу понять - почему в заклвдке Problems идет ругань на 3-ю строку: <identifier "Serial" is undefined> при "C_Cpp.errorSquiggles": "Enabled" в settings.json.
void setup()
{
  Serial.begin(38400);
  Serial.println("\nGo...");
}

void loop() {}

Что не так?

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

А под давлением? Например вот так:

extern HardwareSerial Serial;
void setup()
{
  Serial.begin(38400);
  Serial.println("\nGo...");
}

void loop() {}

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Feofan пишет:

Доброго времени.
Не могу понять - почему в заклвдке Problems идет ругань на 3-ю строку: <identifier "Serial" is undefined> при "C_Cpp.errorSquiggles": "Enabled" в settings.json.
void setup()
{
  Serial.begin(38400);
  Serial.println("\nGo...");
}

void loop() {}

Что не так?

Закладка Problems это быстрая оценка модулем "С/С++" без специфики сборки Ардуино. Я не нашел способа настроить модуль так, чтобы там не появлялись несуществующие ошибки. Просто ждем, когда Микрософт сама поправит баги ;)))). И VSCode и модуль С/С++ и модуль Arduino - все авторства Микрософт.

"Надо ж дать" (с) ;))))

честно признать - меня тоже раздражает, но ничего не поделать. Что-то удобно смотреть в Ардуино иде, что-то в Ардуино модуле к ВСКоду, что-то в Платформио.

Мне в стандартной ардуино ИДЕ не автодополнения не хватает, честно говоря, но автоперехода на объявления и определения в библиотеки и другие подключаемые файлы, подсказок по аргументам. Это в примитивном АВР я помню все библиотеки наизусть. Писать под ESP - совсем другое дело. Да и под СТМ тоже. Там объем информации уже не удерживается в голове, нужен хелп под рукой. То есть помнишь, что "что-то такое есть", но конкретное имя, объявление и аргументы - уже с трудом.

Feofan
Offline
Зарегистрирован: 28.05.2017
Цитата:
А под давлением
так-то оно не ругается.
Update
Понятно. Забить.