"… Узок круг LabVIEW-программистов. Страшно далеки они от народа..." (с) ;)
На самом деле я как-то сразу не определился с форматом статей, а потом со временем напряжёнка была.
Моя задумка была провести параллели с традиционными языками настолько, насколько возможно (ну то есть объявление переменных, циклы, ветвления и т.д.), и шаг за шагом показать, что в LabVIEW многие вещи значительно проще и нагляднее, и то, что эта среда не только для лабораторных работ годится, да вот руки не дошли.
А так хорошее дело затеяли, коллега. Нас уже по-крайней мере двое. ;)
Не очень понял, что подразумевается под «такой же софтиной»? Если что-то типа клиента Skype, то на LabVIEW конечно и буду шаманить. Ну а сама по себе LabVIEW на С++ писана.
Ну уж, «быдлоязык»… На самом деле как правило проще делать на том, на чём привык. А так все языки хороши, только выбирай…
Вот, например, для меня проще всего вот так:
Три щелчка мышкой, да десяток нажатий на клавиши — и всё пучком!
Использовалась вот эта библиотечка.
На самом деле там программирования и нет почти как такового. Программирование заключается просто в записи позиций и путей перемещения между ними.
Пару лет назад такой аттракцион на базе робота KUKA в Ганновере на выставке показывали, и любой желающий мог прокатиться: www.youtube.com/watch?v=xa4FQ8KO1c8
Забавным является то, что робот KUKA управляется компьютером на базе Windows. (там, правда VxWorks поверху, так что это Windows реального времени. Раньше был Win95, ну а сейчас XP).
ТТХ робота вот, например
Он может перемещать до тонны с точностью 0,2 mm.
Ну просто выбор несколько неожиданный, да ещё и с высунутым языком… А так общественность уже много раз проходила через выбор тестовых картинок. Обычно фотка «Lena Söderberg» используется для всяких тестов: en.wikipedia.org/wiki/Lenna. Ну а для разнообразия можно было необрезанную фотку взять. Ссылка на неё есть вот здесь www.ee.cityu.edu.hk/~lmpo/lenna/Lenna97.html примерно посередине (на работе лучше не открывать ;) ).
Кошмар, куда мир катится… Уж лучше подсчитать сколько энергии или тепла можно выработать, если использовать эти боеголовки в мирных целях, например в ядрёных электростанциях. А деньги, вкладываемые в ВПК, пустить на исследования для обеспечения безопасности этих станций, чтобы не было катастроф типа чернобыльской и чтобы атмосферу не засирать. Вот не живётся мирно людям ну никак, блин.
Да нет, я не совсем это имею в виду. Разобраться-то во всём можно, просто это надо ещё и сделать. Поработать с металлом, моторы привинтить… А у меня обе руки честно говоря слегка из жо… и притом обе левые… Соответственно и времени на это уйдёт прорва. А готовые наборы, даже игрушечные, весьма ценой своей кусачие…
Завтрак готовить… Я так думаю, стоимость пищевых продуктов, которая уйдёт на отладку, будет немаленькая… У меня вот мечта сделать робота, чтобы кофе привозил: тележка на колёса, пара камер и манипулятор, выехал в коридор, проехал до конца, нашёл кофеварку, сварил кофе, привёз мне. По пути поздоровался с коллегами, запоминая тех, кого увидел… Никакого интеллекта, чистая автоматика, голосовые команды и машинное зрение. В принципе и библиотеки все есть, но, блин, механика — вот в неё всё упирается…
Довольно эмоционально, но в общем верно. Даже по отношению к обычным рутинным задачам.
Если серию цитат продолжить, то в своё время Генри Форд сказал: «нет такой вещи, которую нельзя было бы улучшить»… С другой стороны, точку приложения силы надо тоже выбирать сообразно возможностям. А то ведь недолго и пупок надорвать «делая лучше чем Yahoo»…
«со временем это переростает в ночные посиделки до 4 утра и подъем в 12:00...» — абсолютно верное замечание. Но я бы назвал это «начальными флуктуациями системы» Через некоторое время всё придёт в норму, энтропия достигнет макисмума, и организьм сам будет решать, когда ему удобно ложиться и вставать.
Чтобы хорошо проснуться, надо хорошо и правильно заснуть (ну это в пред. топике уже обсуждали)
А мой принцип прост — вставать вообще без будильника, если позволяют условия. Потому что хороший программист — это прежде всего хорошо выспавшийся программист ;).
Если уж надо непременно встать рано, то я делаю вот как:
— не оставлять никаких дел на утро
— если дела остались, то не полениться и с вечера сделать чек-лист (ну, допустим это командировка — взять паспорт, билеты, зарядники, и т.д.) Утром чек-лист выполняется на полном автопилоте с установкой галочек.
— я завожу два будильника — на мобильнике и на пальме. Это выключает страх что «будильник не сработает». Сначала звенит мобильник (инженеры постарались — громкость нарастает плавно и так просто его не вырубишь). Звонок мобильника подсознательно включает режим ожидания «щас пальма зазвонит» Затем звенит пальма — там написано какого хрена я сегодня должен так рано встать.
— ну и контрастный душ — тёплая и прохладная вода попеременно (без издевательств над организмом ессно)
Затем на автопилоте — приготовленный с вечера список, чашка кофе с лимончиком — и день начался.
Где-то так.
Тема действительно актуальная. В принципе уже почти всё написано выше.
Я вот обычно стараюсь не оставлять «сложных» проблем на конец дня. Ближе к концу дня просто прерываю работу, и делаю несколько простых рутинных вещей — типа правлю очевидные некритические баги и т.д. Помогает голове разгрузиться. Про то «что делают две амёбы после деления» тоже была пара комментов… ;)
У меня есть ещё вот какой способ (ногами не пинайте — придумал сам): после того, как легли в постель, закройте глаза и мысленно представьте, что вы лежите развернувшись на 180 градусов. Ну то есть там где голова, там теперь ваши ноги и наоборот. Хорошо делать упражнение лёжа на боку и обязательно мысленно привязываясь к предметам в комнате, но не должно быть физической привязки типа тикающих часов, яркого света луны из окна или руки, касающейся стены или тумбочки. Допустим я лежу на правом боку и у меня дверь перед лицом а окно за спиной. Теперь я мысленно переворачиваю всё тело и окно оказывается у меня перед лицом, а дверь за спиной (виртуальное тело по-прежнему на правом боку). Всё. Стараетесь мысленно удерживать это ощущение как можно дольше, мысленно передвигаясь по предметам в «перевёрнутой» комнате. Я так думаю, что это в некоторой степени помогает остановить внутренний диалог. Если сразу заснуть не удалось — резко открываете глаза, удивляетесь истинному положению вещей, потом повторяете. Вырубает моментально. Кстати, можно и методику 5-4-3-2-1 в инверсном пространстве применить — эффект может ещё круче получиться.
Первое
Как уже говорилось, это дело вкуса. Я предпочитаю выделять такие поля жирным шрифтом. Другим цветом тоже можно, но это не должно вызывать отторжения (ну, то есть совсем уж кислотные цвета не стоит использовать). Кроме того, при выделении цветом надо учитывать то, что пользователь может сменить палитру (конечно, если приложение само по себе допускает смену цветов окошек)
Второе
По мере возможности я стараюсь делать валидацию по мере ввода. Например, если вводимое значение должно лежать в определённом диапазоне, то уже по мере ввода при выходе за данный диапазон возникает небольшая подсказка, в которой объясняется что не так, либо программа сама корректирует значение. Конечно, это требует некоторых трудозатрат на этапе программирования — опрос контрола по мере ввода, подсказка не должна беспокоить, окошко не должно терять фокус ввода, и т.д. Если времени на разработку отведено немного, то можно делать валидацию и после ввода, выдавая сообщение (человеческим языком) и возвращая пользователя на то поле, которое вызывает ошибку. Глобальная цель, которой я обычно стараюсь следовать — минимизировать количество телодвижений пользователя для заполнения формы.
Третье
Если программа имеет свой интерфейс — то это хорошо. С другой стороны современные средства скинования позволяют изменить приложения до неузнаваемости и зачастую в ущерб юзабилити. То есть всё хорошо в меру. Я могу порекомендовать подумать над своим стилем, который не будет идти вразрез с идеологией Виндовс, но тем не менее будет немного отличаться (в смысле цветового решения, например, или самодельных иконок). Небольшой документ, опысывающий принципы построения интерфейса также хорош, если в команде работает несколько разработчиков. Нет ничего хуже плавающего размера кнопок или разного расположения, когда один разработчик ставит кнопки в порядке OK/Cancel, а другой Cancel/OK, и.т.д.
Я, собственно, не хотел бы огрничиться одной обзорной статьёй, но сделать небольшой цикл — что-то типа серии «уроков» на тему программирования в LabVIEW. В следующей статье мы познакомимся со средой — как там всё устроено, затем пробежимся по переменным, затем основные управляющие структуры, принципы построения GUI, и т.д. Всё будет излагаться «от простого к сложному» с примерчиками. Моя цель — показать то, что писать программы с этой штукой тоже вполне возможно.
В приведённной статье Википедии есть несколько неточностей.
Впрочем по первым двум пунктам в некоторой мере согласен.
Продукт действительно закрытый и компания NI сама себе устанавливает стандарты. Зато продукт в постоянном развитии. :)
Активация продукта начиная с восьмёрки действительно представляет некоторую проблему и головную боль, особенно если нет соединения с интернетом. Кстати, активация практически ничем не отличается от активации WinXP, даже проще. При наличии интернета всё происходит автоматически.
А вот третий пункт — неправда. Докупать ничего не надо, если работа идёт на LabVIEW Pprofessional Development System (в основном все работают на ней). А LabVIEW Run-Time библиотека изначально бесплатна. Имеется также возмоность запускать LabVIEW приложение без инсталляции Run-Time, хоть с флешки и без прав администратора. Платными являются только некоторые специальные библиотки (для обработки изображений, DSC и некоторые другие).
Я могу ещё пару недостатков добавить:
— Run-Time весьма «увесиста» — под сотню мегабайт в полном комплекте
— Порой не хватает производительности — иногда приходится «узкие» участки прописывать на Си
— Ошибки и баги в среде разработки — нередкое явление. На версиях 6.0 и 8.0 было почти невозможно работать.
На самом деле я как-то сразу не определился с форматом статей, а потом со временем напряжёнка была.
Моя задумка была провести параллели с традиционными языками настолько, насколько возможно (ну то есть объявление переменных, циклы, ветвления и т.д.), и шаг за шагом показать, что в LabVIEW многие вещи значительно проще и нагляднее, и то, что эта среда не только для лабораторных работ годится, да вот руки не дошли.
А так хорошее дело затеяли, коллега. Нас уже по-крайней мере двое. ;)
Если присмотреться, то он один к одному соответствует коду, приведённому автором поста:
IChatMessage *message;
pSkype->SendMessage(_bstr_t(L«echo123»), _bstr_t(L«test»))
Так что колдовства и нет никакого в общем-то…
Вот, например, для меня проще всего вот так:
Три щелчка мышкой, да десяток нажатий на клавиши — и всё пучком!
Использовалась вот эта библиотечка.
Пару лет назад такой аттракцион на базе робота KUKA в Ганновере на выставке показывали, и любой желающий мог прокатиться:
www.youtube.com/watch?v=xa4FQ8KO1c8
Забавным является то, что робот KUKA управляется компьютером на базе Windows. (там, правда VxWorks поверху, так что это Windows реального времени. Раньше был Win95, ну а сейчас XP).
ТТХ робота вот, например
Он может перемещать до тонны с точностью 0,2 mm.
Статья в Википедии
Ещё одна статья
Если серию цитат продолжить, то в своё время Генри Форд сказал: «нет такой вещи, которую нельзя было бы улучшить»… С другой стороны, точку приложения силы надо тоже выбирать сообразно возможностям. А то ведь недолго и пупок надорвать «делая лучше чем Yahoo»…
А мой принцип прост — вставать вообще без будильника, если позволяют условия. Потому что хороший программист — это прежде всего хорошо выспавшийся программист ;).
Если уж надо непременно встать рано, то я делаю вот как:
— не оставлять никаких дел на утро
— если дела остались, то не полениться и с вечера сделать чек-лист (ну, допустим это командировка — взять паспорт, билеты, зарядники, и т.д.) Утром чек-лист выполняется на полном автопилоте с установкой галочек.
— я завожу два будильника — на мобильнике и на пальме. Это выключает страх что «будильник не сработает». Сначала звенит мобильник (инженеры постарались — громкость нарастает плавно и так просто его не вырубишь). Звонок мобильника подсознательно включает режим ожидания «щас пальма зазвонит» Затем звенит пальма — там написано какого хрена я сегодня должен так рано встать.
— ну и контрастный душ — тёплая и прохладная вода попеременно (без издевательств над организмом ессно)
Затем на автопилоте — приготовленный с вечера список, чашка кофе с лимончиком — и день начался.
Где-то так.
Я вот обычно стараюсь не оставлять «сложных» проблем на конец дня. Ближе к концу дня просто прерываю работу, и делаю несколько простых рутинных вещей — типа правлю очевидные некритические баги и т.д. Помогает голове разгрузиться. Про то «что делают две амёбы после деления» тоже была пара комментов… ;)
У меня есть ещё вот какой способ (ногами не пинайте — придумал сам): после того, как легли в постель, закройте глаза и мысленно представьте, что вы лежите развернувшись на 180 градусов. Ну то есть там где голова, там теперь ваши ноги и наоборот. Хорошо делать упражнение лёжа на боку и обязательно мысленно привязываясь к предметам в комнате, но не должно быть физической привязки типа тикающих часов, яркого света луны из окна или руки, касающейся стены или тумбочки. Допустим я лежу на правом боку и у меня дверь перед лицом а окно за спиной. Теперь я мысленно переворачиваю всё тело и окно оказывается у меня перед лицом, а дверь за спиной (виртуальное тело по-прежнему на правом боку). Всё. Стараетесь мысленно удерживать это ощущение как можно дольше, мысленно передвигаясь по предметам в «перевёрнутой» комнате. Я так думаю, что это в некоторой степени помогает остановить внутренний диалог. Если сразу заснуть не удалось — резко открываете глаза, удивляетесь истинному положению вещей, потом повторяете. Вырубает моментально. Кстати, можно и методику 5-4-3-2-1 в инверсном пространстве применить — эффект может ещё круче получиться.
Первое
Как уже говорилось, это дело вкуса. Я предпочитаю выделять такие поля жирным шрифтом. Другим цветом тоже можно, но это не должно вызывать отторжения (ну, то есть совсем уж кислотные цвета не стоит использовать). Кроме того, при выделении цветом надо учитывать то, что пользователь может сменить палитру (конечно, если приложение само по себе допускает смену цветов окошек)
Второе
По мере возможности я стараюсь делать валидацию по мере ввода. Например, если вводимое значение должно лежать в определённом диапазоне, то уже по мере ввода при выходе за данный диапазон возникает небольшая подсказка, в которой объясняется что не так, либо программа сама корректирует значение. Конечно, это требует некоторых трудозатрат на этапе программирования — опрос контрола по мере ввода, подсказка не должна беспокоить, окошко не должно терять фокус ввода, и т.д. Если времени на разработку отведено немного, то можно делать валидацию и после ввода, выдавая сообщение (человеческим языком) и возвращая пользователя на то поле, которое вызывает ошибку. Глобальная цель, которой я обычно стараюсь следовать — минимизировать количество телодвижений пользователя для заполнения формы.
Третье
Если программа имеет свой интерфейс — то это хорошо. С другой стороны современные средства скинования позволяют изменить приложения до неузнаваемости и зачастую в ущерб юзабилити. То есть всё хорошо в меру. Я могу порекомендовать подумать над своим стилем, который не будет идти вразрез с идеологией Виндовс, но тем не менее будет немного отличаться (в смысле цветового решения, например, или самодельных иконок). Небольшой документ, опысывающий принципы построения интерфейса также хорош, если в команде работает несколько разработчиков. Нет ничего хуже плавающего размера кнопок или разного расположения, когда один разработчик ставит кнопки в порядке OK/Cancel, а другой Cancel/OK, и.т.д.
Впрочем по первым двум пунктам в некоторой мере согласен.
Продукт действительно закрытый и компания NI сама себе устанавливает стандарты. Зато продукт в постоянном развитии. :)
Активация продукта начиная с восьмёрки действительно представляет некоторую проблему и головную боль, особенно если нет соединения с интернетом. Кстати, активация практически ничем не отличается от активации WinXP, даже проще. При наличии интернета всё происходит автоматически.
А вот третий пункт — неправда. Докупать ничего не надо, если работа идёт на LabVIEW Pprofessional Development System (в основном все работают на ней). А LabVIEW Run-Time библиотека изначально бесплатна. Имеется также возмоность запускать LabVIEW приложение без инсталляции Run-Time, хоть с флешки и без прав администратора. Платными являются только некоторые специальные библиотки (для обработки изображений, DSC и некоторые другие).
Я могу ещё пару недостатков добавить:
— Run-Time весьма «увесиста» — под сотню мегабайт в полном комплекте
— Порой не хватает производительности — иногда приходится «узкие» участки прописывать на Си
— Ошибки и баги в среде разработки — нередкое явление. На версиях 6.0 и 8.0 было почти невозможно работать.