• Множество JS-пакетов в одном репозитории

      image


      Хабрадевелоперам, привет! Не так давно мы начали разрабатывать комплексный проект, у которого есть или планируется несколько видов фронт-енда, множество сервисов бэк-енда, интерфейс командной строки, демоны и много ещё чего. У всего этого в свою очередь есть шареный код, а совершенно новые приложения должно быть возможным собирать из имеющихся кирпичиков простым и понятным образом.


      Если не занудствовать с терминологией, мы делаем платформу. Платформу для визуального программирования под DIY-электронику.


      Несмотря на то, что проект находится на ранней стадии, кодовая база уже грозилась превратиться в кашицу. Чтобы это присечь, мы перевели проект на так называемый monorepo-подход. На Хабре не оказалось материалов на эту тему, поэтому попытаюсь восполнить пробел.

      Читать дальше →
    • Espruino: JavaScript в микроконтроллере

        image

        «Зачем?», «Что за бред?», «Извращение!», «Фу-фу-фу» — вот некоторые из многих высказываний, которые мы услышали, когда выпустили плату Iskra JS на ядре Espruino.

        Зачем


        Когда правильный электронщик слышит, что что-то сделано на Arduino, температура его тела поднимается примерно на полградуса: «взяли годный микроконтроллер и вместо того, чтобы фигак-фигак и регистрами выжать из него все соки, опошлили всё на свете… нет слов, одна ненависть».

        Но ведь можно пойти ещё дальше. Взять микроконтроллер Cortex M4, который в десятки раз богаче того, что стоит на той же Arduino Uno, запихнуть туда интерпретатор JavaScript и делать проекты на JavaScript!

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

        Читать дальше →
      • Сделаем GCC C++ для AVR и Arduino лучше?



          Привет хабраплюсплюсовцам!

          Хочу разобрать проблему компилятора avr-g++, из-за которой в разных дискуссиях про AVR и Arduino звучит «С++ — это не для микроконтроллеров, C++ жрёт память, C++ генерирует раздутый код — пишите на голом C, а лучше на ASM».

          Для начала давайте разберёмся, в чём же преимущество C++ перед C. Концепций, которые добавляет C++ много, но самая значимая и самая эксплуатируемая — это поддержка ООП. Что такое ООП?
          • Инкапсуляция
          • Наследование
          • Полиморфизм


          Использование первых двух пунктов в C++ «бесплатно». Никакого преимущества программа на чистом C перед программой на C++ с инкапсуляцией и наследованием не имеет. Картина меняется, когда мы подключаем к действу полиморфизм. Полиморфизм бывает разным: compile-time, link-time, run-time. Я говорю о классическом run-time, т.е. о виртуальных функциях. Как только в своих классах вы начинаете добавлять виртуальные методы, чудесным образом растёт потребление как Flash-памяти, так и SRAM.

          Почему так происходит и, что с этим можно было бы сделать, расскажу под катом.
          Читать дальше →
        • Отображаем данные из Serial в Chrome Application



            Здравствуй, Хабр!

            Хочу поделиться опытом создания небольшого приложения для Google Chrome, которое взаимодействует с последовательным портом.

            Краткая предыстория. Много раз мне хотелось, чтобы компьютер и подключенная к нему Arduino работали, как единая система, в которой микроконтроллер был бы посредником для общения с датчиками и исполнительными устройствами, а компьютер — большой удобной консолью.

            Чтобы это произошло, на компьютере нужно либо по хакерски сидеть в консольном терминале, либо писать какую-нибудь небольшую GUI’шку. Даже самая примитивная GUI’шка требует каких-то непропорциональных усилий для своего создания. Нужно выбрать framework, реализовать кучу побочной GUI-логики, скомпилировать под всевозможные платформы, разобраться с зависимостями, запаковать .exe, проверить на маке и венде и т.д.

            Давно слышал, что API для приложений Google Chrome даёт доступ к Serial. Захотел попробовать и заодно освоить создание Chrome-приложений как таковое. Получился Serial Projector — замена штатному Serial Monitor для Arduino IDE.

            Суть проста до безобразия: приложение на весь экран отображает последнюю текстовую строку, пришедшую через последовательный порт. Это позволяет, например, выводить показания устройства крупно и няшно. Может оказаться полезным для всяких выставок, презентаций, инсталляций.

            Подробности исходного кода и демонстрация работы — под катом.
            Читать дальше →
          • История появления Амперки


              Хабраридерам, привет!

              У блога нашей компании вскоре истекает оплаченный период. Мы определённо до его конца не успеем подготовить какой-нибудь интересный и небанальный материал о DIY-электронике. Поэтому, пользуясь случаем, расскажу лучше о том, как появилась Амперка, и как мы пришли к тому, что имеем сейчас и почему мы вечно ничего не успеваем.

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

              Читать дальше →
            • Arduino в руках дизайнеров

                Недавно в Британской Высшей Школе Дизайна прошла предварительная защита проектов на курсе промышленного дизайна. Студенты представили концепты проектов умных устройств, которые будут доводиться до ума, а именно до готовности к серийному производству.

                Как-то сама собой в течение последнего года-полутора сложилась дружба между Британкой и Амперкой. И вот Амперку пригласили на защиту, за что большое спасибо. Мы с радостью пришли, посмотрели, пофоткали. Хочу поделиться с вами увиденным. Мне проекты показались крайне интересными с той точки зрения, что они нисколько не претендуют на хардкорность электронной начинки и программирования, но в результате всё равно получились интересные, забавные, утилитарные вещи. А всё потому, что перед реализацией проводился анализ существующих проблем быта и находились изящные способы их решения.

                Представляю вашему вниманию короткий обзор 9 проектов, которые презентовались на защите.

                Читать дальше →
              • Ino — работа с Arduino из командной строки

                  imageХабрадевелоперам, привет!

                  Те, кто работал с Arduino, знает, что для его программирования существует специальная Arduino IDE. По сути это блокнот с двумя кнопками: «прошить» и «послушать через serial». Блокнот подходит для написания маленьких программок-экспериментов, но выбешивает при написании чего-то большего.

                  Многие привыкли работать в своих любимых Visual Studio, Eclipse, KDevelop и т.п. Я сам — убеждённый фанат Vim’а, окна терминала и кнопок Alt+Tab. Давно хотелось, чтобы сборка проектов для Arduino была такой же простой, как в официальной IDE, а вот их ужасный редактор на глаза больше не попадался. Тем более, что язык «Arduino» несмотря на позиционирование как отдельного, простого языка программирования — это не что иное, как C++. А собирается всё в конечном итоге инструментами avr-gcc.

                  Для решения проблемы Амперкой был создан Ino.
                  Читать дальше →
                • Обзор GTUG-проектов на GDD Moscow 2011

                    Всем привет!

                    В прошедший понедельник состоялся Google Developer Day Moscow 2011. Помимо разнообразных интересных докладов о современных технологиях разработки, отдельная секция на мероприятии была посвящена проектам GTUG-команд.

                    Неожиданно для нас Google пригласил Амперку принять участие в этом событии и оказать поддержку некоторым GTUG-проектам. О том, что в итоге получилось, можно прочитать под катом.
                    Читать дальше →
                  • Обратная связь от сервопривода или «забиваем гвозди»


                      Всем хабраконструкторам, привет!

                      Пришла мне как-то в голову дурацкая мысль: собрать девайс, который бы молотком забивал гвозди. Просто ради демонстрации работы сервопривода. Алгоритм простой: даём команду на поднятие молотка, ждём пока он поднимется, отпускаем молоток; и так пока гвоздь не будет забит. Но как узнать, что молоток поднялся и что гвоздь забит, не пользуясь дополнительными датчиками? Спросить у «глупого» сервопривода! Как именно это сделать — об этом и пойдёт речь в статье.
                      Читать дальше →
                    • Каталог Arduino-проектов

                        Всем хабраумам привет!

                        Как одного из людей, стоящего за Амперкой у меня часто спрашивают: «А что, что можно сделать из этого твоего Arduino?». И я начинаю ковыряться у себя в голове, вспоминая клёвые гэджеты, на которые натыкался в сети. Интересных поделок же действительно много, но они разбросаны по сети, а хотелось бы зайти куда-то и увидеть всё сразу. Так родилась идея сайта-каталога, и в итоге, после месяца эпизодической фоновой работы родился каталог… та-да… Arduino проекты.
                        Читать дальше →
                      • Антипаттерн settings.py



                          Хабрапитонерам привет!

                          Время от времени я сталкиваюсь с паттернами разработки, которые существуют не потому что они хорошо решают какую-то проблему, а потому что так сделано в популярном фреймворке X, следовательно, думают многие — это хорошо.

                          Сейчас я хочу понегодовать на паттерн «все настройки — в settings.py». Понятно, что популярность он набрал благодаря Django. Я то и дело встречаю в проектах, никак не завязанных на этот фреймворк ту же самую историю: большая кодовая база, маленькие, хорошенькие никак не связанные друг с другом компоненты, и нате вам: все дружно из произвольных мест лезут в волшебный недомодуль settings за своими константами.

                          Итак, почему же такой подход на мой взгляд отвратителен.

                          Читать дальше →
                        • Ethernet-лампа для Continuous Integration и не только

                            image Всем хабрапользователям привет! Не так давно был запущен проект Амперка. Интерес был проявлен заметный, поэтому мы продолжаем развиваться. И это наш первый пост в корпоративный блог.

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

                            Этот гаджет — лампа, которая светится разными цветами в зависимости от сообщений, идущим к ней по локальной сети. Зачем это нужно? Лично мне, как участнику команды из четырёх программистов, эта штуковина нужна для индикации работы Continuous Integration сервера. Сервер, конечно, умеет при провале сборки посылать уведомления на e-mail и в jabber, но это скучно и не удобно: нет способа взглянуть куда-нибудь и мгновенно понять что происходит с проектом: всё в порядке, всё плохо или вот прям сейчас идёт сборка.

                            Проблема не новая. Я несколько раз читал как народ изголялся, прикручивая к компьютеру светофор, лава-лампы и usb-мигалки. Захотелось сделать что-то простое, что можно принести в офис, воткнуть в хаб и всё! И чтобы оно работало и без бубна. Что ж, попробуем!

                            Нам понадобится Ардуино, Ethernet Shield для него, бракованый светильник из Леруа-Мерлен, три светодиодные ленты разных цветов, горсть мелочёвки и запас терпения.
                            Читать дальше →
                          • Амперка — магазин Arduino

                              image
                              Многие на Хабре знают, что такое Arduino. Собственно, ему посвящён отдельный блог. Некоторые даже успели возненавидеть его за то, что для любой примитивной штуковины мигающей лампочками вместо пары транзисторов за пять копеек, народ за основу берёт эту платформу.

                              Не буду рассуждать на эту тему. Скажу лишь, что некоторое время назад меня так же заинтересовала эта игрушка. Однако когда я решил приобрести себе такую, стало понятно, что это не тривиально. Лучшее, что предлагалось в российских магазинах на тот момент — реплика оригинального Ардуино, с 100% предоплатой, с доставкой Почтой России. Да и ассортимент аксессуаров сильно отставал от европейских. Поэтому в итоге я сделал заказ в немецком магазине с доставкой через UPS. Переплата за доставку была ощутимой.

                              Я поэкспериментировал с платформой, понял, что это на самом деле — крутотень. Показал друзьям — они одобрили. Вспомнил про интерес, любовь и ненависть на Хабре и подумал: «А почему бы не попробовать продавать их в России? Ну или в Москве для начала».
                              Читать дальше →
                            • Vim и кириллица: парочка приёмов

                                image

                                Раньше для редактирования обычных русскоязычных текстов, я обычно откладывал Vim в сторонку и прибегал к помощи других редакторов. Причиной этому была парочка очень неприятных косяков:
                                1. На каждый чих приходилось сто раз переключать раскладку, чтобы корректно ввести пару команд и вернуться обратно. Например, замена буквы-опечатки в только что написанном слове, выливалось в: switch → добраться до буквы, нажать r → switch → [нужная буква] → switch → A → [пишем дальше]. Ад!
                                2. Штатный spell checker букву «ё» не любил и любое слово с её участием предлагал заменить на аналог через «е». А я ё люблю, меня это расстраивало.

                                И вот, наконец, я нашёл решение обеим проблемам. Сижу сейчас и набираю этот текст в Vim. Любопытно, что оба барьера обходятся штатными средствами, без дополнительных плагинов. Поскольку материалов на английском и на них основанных куда больше чем исконно русских, найти эту информацию мне было не просто. Поэтому хочу поделиться ей с теми кому интересно.
                                Читать дальше →
                              • Комикс «О планировании и покере»

                                  Не так давно для раскрутки одного из своих проектов я использовал отдельный блог на котором выложил несколько комиксов про программистов. Каждая история — это миниатюра на тему какого-нибудь распространённого fail'а среди разработчиков. Кампания прошла, хостинг почти закончился, а мультики забавные получились. Поэтому решил я эти работы перевести на русский и запостить на Хабре.

                                  Я не буду после комикса приводить аналитическую писанину, как я делал на блоге: здесь публика поумнее и сама способна сделать выводы.

                                  Первый комикс — эксклюзив: он нигде ни разу не публиковался

                                  image

                                  Что думает публика?
                                • Обзор систем сборки SCons и Waf

                                    image

                                    Я — разработчик и в качестве основного языка последние пару лет использую Python. Однако время от времени появляются задачи, когда нужно писать на C/C++. Существуют разные системы, с помощью которых можно собирать такие проекты. Классикой являются make и autotools. Я же хочу заострить внимание на таких альтернативах, как SCons и Waf. Целью поста не является доказательство того, что они лучше или хуже make. Хочется просто провести короткий экскурс, чтобы стало приблизительно понятно что это, зачем это и как с этим начать работать.

                                    Чтобы разговор был предметным, предлагаю рассмотреть системы на практике. Я решил использовать простенький проект, в котором необходимы типовые, но не всегда тривиальные задачи сборки. Будем делать простенький web-сервер, цель которого: выдавать статичную страницу, которая готовится в отдельном html файле, но которая в итоге должна быть встроена в исполняемый файл. То есть на стадии сборки по html-коду должен быть собран исходник с си-кодом. В качестве серверной библиотеки используем mongoose, исходники которого положим внутрь проекта и будем собирать их в статическую библиотеку, которую в последствии будем прилинковывать к исполняемому файлу. Думаю, задача понятна.

                                    Читать дальше →
                                    • +10
                                    • 12,5k
                                    • 9