Как стать автором
Обновить

Комментарии 62

> cat ~/id_rsa.pub >> ~/. ssh /authorized_keys

Сдается мне, тут есть пара лишних пробелов. Ну и к тому же, можно же просто cp/mv сделать (у вас же в authorized_keys на RPi ключей других нет? т.е. файл либо пустой, либо его вообще нет там.).
Можно, конечно, и скопировать. Привычка, просто. На реальных серверах добавлять приходится.
Мне, кстати, еще и запуск sudo java не очень нравится… Неужели в RPi нельзя просто добавить пользователя в нужные группы, и нужен рут?
А еще есть замечательная команда ssh-copy-id, которая копирует указанный (или дефолтный) публичный ключ на указанную машину в правильное место.
Увы, она есть не везде.
Да и на целевой машине подразумевает только openssh, и её «правильное место» — это захардкоденное ~/.ssh/
Но в очень многих случаях — да, срабатывает.
ssh-copy-id должен присутствовать на клиенте. Для целевой машины он не нужен.

По сути он выполняет следующее:
umask 077
test -d ~/.ssh || mkdir ~/.ssh
cat >> ~/.ssh/authorized_keys && (test -x /sbin/restorecon && /sbin/restorecon ~/.ssh ~/.ssh/authorized_keys >/dev/null 2>&1 || true)" || exit 1

Т. е. дописывает публичный ключ в ~/.ssh/authorized_keys и устанавливает корректный контекст selinux и права на директорию и файл, если их не существовало до этого.
Да, речь именно про клиента.
Не на всех системах, поддерживающих openssh, есть ssh-copy-id (а тут не только linux, но и та же макось, к примеру)
И не на всех целевых системах ключи должны лежать в ~/.ssh/authorized_keys (например, могут лежать в /etc/dropbear/authorized_keys).
Поэтому эту команду можно выполнять с мыслью «если повезёт — получится сразу», будучи готовым вручную копировать нужные ключи.
Хм… Нетбук — настольная система?
Ну, у меня не было другой системы с частотой близкой к 1 Гц.
Ну тут дело не только в частоте, но и в архитектуре тоже, и нетбук сам по себе на настольную систему мягко говоря не катит.
<irony>Тут такие нетбуки пошли, у меня вот в планшете количество кеша L2 2 мегабайта(Atom Z3470, 1.86GHz), а в настолке(AMD A6 5400k, разогнанный до 4.3GHz) — только один метр.</irony> Правда настолка ощутимо быстрее, с этим ничего не поделаешь.
Очень интересует работа с usb bluetooth адаптером из под java на Pi. Может кто нибудь сталкивался?
Простите мой хранцузский, но по-моему крутить Java на Raspberry Pi — это шиза. Даже нет, шЫза. Вы же всю производительность на нет сводите. Зачем?
Обычный средний VDS на 512 Mb ничем не мощнее. С такой логикой там тоже Java не надо ставить.
Вообще-то, не надо. А Вы сомневались?
У меня на VDS c 512М вполне себе неплохо работает Tomcat и пара приложений (ок, это оффтопик, но оно работает). А насчет Raspberry — как ее владелец говорю — НЕОЖИДАННО! Т.е. ожидал от статьи с таким заголовком в финале увидеть что-то вроде: «Вердикт: деццкая игрушка годная лишь для моргания светодиодами». И хотел было уже начать опровергать, спорить, доказывать… Но нет. Точнее, да. Это действительно работает, и работает, черт побери, отлично (разумеется, с учетом того, на каком железе оно работает).
Я знаю что работает и отлично работает. У меня несколько проектов на Java тоже крутятся на VDS 512M и никаких тормозов я не замечаю.
Моим первым компьютером был 486-ой, 66 Мгц с 8Мб памяти. И проработал я на нем несколько лет, учился программировать тоже на нем.
И этот компьютер отлично справлялся со многими задачами.
Плюс однажды пришлось программировать микроконтроллер на ассемблере. Там знаешь цену каждому такту. А так-как программа была не сложная, то оказалось, что 20 МГц — это тоже очень много. Но этот контроллер управлял вполне реальным оборудованием.
Поэтому оценить 700 МГц у RPi — это я могу))), то что это очень мощное оборудование, вполне с вами согласен.
Таки может оказаться что на таких ресурсах можно и видео с 2-3-х камер в реальном времени сжимать в h264 (если написать на ассемблере). Только тсс.., надо ведь и более мощные конфигурации продавать
и тут мы вспоминаем, что 700 мгц арма и 700 мгц пентиума, немного разные величины
Тоже сравнил Tomcat на XS виртуалке Azure и Raspberry, разницы в работе нет, но в цене явный выигрыш, либо 15$ в месяц за облако, либо 35$, но один раз и Raspberry навсегда твоя собственность. Хотя Tomcat всё-таки до памяти прожорлив, сейчас пробую заменить его Jetty.
Скажите честно, а каков «overhead» по сравнению со скомпилированным C++ кодом? 100%, 1000%?
На десктопах, соглашусь, неважно за 0.01 секунду «деньги переведутся со счёта на счёт» или за 10 -клиент обождёт, главное — безопасность.
Но на встраиваемом решении, где главное выжать из железяки всё возможное в условиях экономии питания — не проще ли будет заплатить (программисту или вложив в себя покупкой курсов)?
Нет, академическую ценность статья имеет несомненно, вон люди и ubuntu запускали на ATMEGA-процессоре…
Просто разработчики процессоров всячески оптимизируют каждый милливатт, каждый микрон, а тут бац — python с java-ой (не в обиду поклонникам этих языков) — ой, малинка много «кушает»…
Не выдумывайте оверхед в 1000% процентов, там JIT компиляция. Да, она сама по себе сожрет ваты на старте, но у вас какое-то ложное представление об устройстве java
Нет, академическую ценность статья имеет несомненно, вон люди и ubuntu запускали на ATMEGA-процессоре…
Точнее сказать, linux там запускался на arm, который эмулировался на atmega, т. к. у последнего нет mmu и он чуток восьмибитный.
И кстати, еще. Raspberry Pi позиционировали как одноплатный дешевый компьютер для обучения? Так вот, насчет Java и т.п… В середине 90-х я работал на первой своей работе (сорри за тавтологию) в качестве программиста. Только-только после школы. И основной парк машин в нашем отделе составляли 486-е. Был даже один P-I (ежу понятно, у насяльника). Мне же этот самый насяльника выдал… AT286 (весь софт наш узкоспециализированный писался под DOS, так что это неважно). Я же, естественно, попытался противиться такой дискриминации. НО! Сэнсей, как и положено сэнсею, огрел меня бамбуковой палкой по тыкве и сказал: там, на 486 и пнях работают просветленные. Да, там все то же самое — но отладка быстрее. А там, где быстрее отладка — меньше думаешь над кодом.

К чему это? Java-кодеров — таки да, нужно учить на RPi. Быстрее придет понимание «как там внутри байтики шевелятся».
Главное, чтобы когда научили, не забыли воды в бассейн налить
Если у человека есть интерес к тому, «как шевелятся байтики», он разберется в этом хоть на суперкомпьютере. А если интереса к этому нет, то совершенно точно это вызовет только снижение его собственной эффективности как разработчика — я очень хорошо помню, какое это было «удовольствие» — делить Android Framework на куски для того, чтобы на машине с 1Гб оперативки Эклипс вообще загрузил хоть что-то. И ловить ошибки компиляции из-за опечатки в имени недогруженного класса… Я в тот момент этот Андроид почти ненавидел. Интересно мне стало, когда памяти в машине стало 4 Гб :)

Метафора в тему: я сегодня учил трехлетнюю дочь ножницами пользоваться. У нее есть «безопасные» пласмассовые ножницы, которые больше рвут, чем режут, и есть более опасные — металлические. Так вот, нравиться ей стало только когда я ей позволил резать металлическими. Потому что инструмент должен быть удобным. Иначе даже самая интересная работа — чистая пытка.
Производительность Java при грамотно написанной программе отличается от нативно компилированного кода процентов на 10.
У меня на 6 распберрях вполне шевелится Hadoop с HDFS, проблема с долгим стартом решается реюзом JVM. Так что вполне можно там жабу гонять. Более того — я на этом всем запускал PhantomJS, и гонял сборку видеороликов для нашего проекта — и тоже работало более чем ок.
НЛО прилетело и опубликовало эту надпись здесь
это на генетическом уровне, да ;)

пан Стецько побіг до сусіда на страшне волання й бачить — той пиляє мотузкою шию москалеві. То пан Стецько й каже сусідові:
— Пане Вуйко, це ж можна зробити швидше сокиркою тюк — й все!
— Ні, пане Стецько, а чого б не попилять, якщо маю час та натхнення?
1. Oracle Java SE Embedded (в отличие от OpenJDK), действительно, представляет собой оптимизированный под ARM порт JDK, включая С1 (aka Client) JIT компилятор. Тот же самый, что на «большой» Java, только с ARM бэкендом. Поэтому и производительность соответствующая.
Не знаю, как сейчас, но раньше он обгонял Dalvik VM в 2-3 раза на идентичном железе.

2. На слово «java» в cpu features даже не смотрите, оно ничего не значит. Вернее, оно означает, что процессор поддерживает технологию Jazelle DBX, которая безнадежно устарела еще лет 8 назад. Никакая JVM с JIT компилятором ее не использует.
Последние версии Oracle Java SE Embedded уже включают в себя и С2.
Так что всё как у больших. ;)

Согласно этой статье, в C2 под Paspberry PI всё-таки есть некоторые проблемы.
устарело
круть, чо! А для чего делали? Для кластеров армовых?

В статье сказано, что проблемы именно с ARMv6, а с ARMv7 всё ок.

Ещё вопрос: ты не знаешь, бывает ли HotSpot С1/C2 в OpenJDK для ARM?
1. Не игнорируйте InterruptedException. Восстановите статус прерывания с помощью Thread.currentThread().interrupt();
Почитать об этом можно в статье «Теория и практика Java: Работа с InterruptedException».

2. Пробовали запускать tomcat на raspberry pi.
Запуск с установленным приложением (war-файл примерно 40 MB: wicket, spring etc) — 1 час.

К примеру,
на cubieboard2 запуск того же war-файла — 2 минуты.
wandboard или odroud u2 — 1 минуту
Intel процессор — 30 секунд.

что-то вы не то говорите
я свой проект на спринге стартую на своей малинке примерно за 120 секунд на оракловой жабе 8, на опенждк время увеличивается в 4 раза до 450 секунд
попробуйте поставить на свою малинку оракловую jdk
Проверил конфиги, видимо, по запарке не ту jdk указал.

На rapsberry pi jdk:
java version «1.7.0_07»
OpenJDK Runtime Environment (IcedTea7 2.3.2) (7u7-2.3.2a-1+rpi1)
OpenJDK Zero VM (build 22.0-b10, mixed mode)

На других платах:
java version «1.7.0_40»
Java(TM) SE Embedded Runtime Environment (build 1.7.0_40-b43, headless)
Java HotSpot(TM) Embedded Server VM (build 24.0-b56, mixed mode)

Спасибо, попробую прогнать тесты еще раз.
С другой стороны, для наших задач Odroid на Exynos 4412 лучше подходит.
3. Управление внешним оборудованием при помощи java и raspberry pi — реальная и вполне легко решаемая задача (чем я и собираюсь заняться в дальнейшем).

А что за оборудование? Мне просто кажется, что если чем-то в реальном времени управлять, то GC будет преподносить неприятные сюрпризы.
В общем будет интересно узнать чем дело кончится.
Датчики, контроллеры, электродвигатели, камера.
В общем хочется сделать свой «умный дом». Очередной велосипед, конечно, но интересно.
К времени отклика подобная система не критична.
Да и вообще управление портами ввода/вывода обычно это операция, которая не требует динамического выделения памяти. Разве что, в данном случае, для обработки Action'ов от портов ввода, но это надо проверить.
Для работы с внешними устройствами с I2C, SPI, UART интерфейсами, а также с GPIO пинами гораздо удобнее использовать Java ME Embedded, у которой есть DAPI (Device Access API) У Oracle есть отличный Getting Started Guide для версии Java ME Embedded 3.3 docs.oracle.com/javame/config/cldc/rel/3.3/rasp/gs/pdf/getstart_raspi.pdf. Во первых, в Java ME уже давно есть Hard Float, во вторых размер рантайма в 10 раз меньше чем у Java SE и VM оптимизирована для гораздо более слабого железа. Java SE Embedded имеет смысл использовать, если вы хотите сделать клиентское приложение на Java FX например.
В принципе с GPIO из Java можно работать как с обычными файлами. А Pi4J без поддержки 1-wire довольно бесполезен, даже простой термодатчик не повесить.
Ещё вопрос по GPIO, может кто поможет? У Raspbian'а не хватает одного модуля для работы 1-wire почему-то, который есть в других сборках. Исходники я нашёл, а вот как собрать и добавить в ядро я не знаю, OS я знаю только как пользователь. Может быть кто-то может помочь? Я тогда напишу подробнее.
Я об этом и говорил в общем, но там есть одна проблема, в этой сборке поддерживается только один пин для 1-wire — GPIO-4, т.к. он там жутко захардкожен, хотя причин для этого нет. Есть более изящное решение, с настраиваемым пином или несколькими пинами. Но его нужно собрать, а я не умею и даже не знаю где почитать.
Ну а для разумного числа термодатчиков только один он и нужен. Они же все в параллель включаются. Например, у меня сейчас 6 датчиков и буду ещё добавлять. Там, конечно, важно как именно проводку для них делать, но это уже другая история. Резюме: для термодатчиков в доме одного пина вполне достаточно. А для плат с реле я повесил платку расширения на I2C и в итоге у меня управляемых 32 реле, хотя можно и больше сделать. Кстати, такое решение ещё и не требует запуска джавы под рутом (ну не люблю я, когда приложения под рутом бегут).
Здравствуйте!
У меня нет пока такой штуки… Но чтобы не покупать её зря, не могли бы люди, у которых она есть мне кое-что подсказать?
На ней есть порт ввода-вывода. Торренты, датчики температуры и мигания светодиодами это конечно хорошо…
Но на какой максимальной скорости с ним можно работать? Например, из под той же Java… То есть, можно ли туда подцепить быстродействующий АЦП и обрабатывать в Pi данные в режиме реального (или почти..) времени? Или всё быстродействие уходит на Линукс..?
Простите за вопрос, если что)
Первая ссылка в google для «raspberrypi gpio performance».

Получается на C — 5 — 20 Mhz, на Python, bash, perl — 30-40 khz

На java:
Java + OpenJDK 7 + ZeroVM = 5 kHz
Java + OpenJDK 7 + JamVM = 10.75 kHz
Java + OpenJDK 7 + Avian = Error; untested
Java + OracleJDK 8 (ea) + HotspotVM = 153 kHz
Java + OracleJDK 7u10 + HotspotVM = 161 kHz (on soft-float Debian «Wheezy»)
Native C + WiringPi = 7 MHz

Можно еще по UART или SPI данные передать/принимать — будет быстрее и меньше нагрузки.
Спасибо! Гугл — хорошо, но хотелось услышать лично от владельцев…
Маловато будет… Разочарован, если честно.
Неужели из ГигаГерцовой мощи нельзя выделить хотя бы 50-100 МГц на порты…
А если снести все надстройки, Линуксы и т.д., и писать код непосредственно контроллера, тоже такая засада?
На hackaday была статья как из rapsberry сделать FM-трансмитер. hackaday.com/2012/12/10/transmit-fm-using-raspberry-pi-and-no-additional-hardware/
Там как раз частота 100Mhz.

Кстати, а для чего вам такая? Может проще воспользоваться SPI или специализированную микросхему подключить.
Вот это уже другое дело!)
Подумываю потихоньку собирать свой SDR приёмник, заодно поучиться.
Там надо быстродействующиее АЦП и быстро перемножать.
Не знаю, заменит ли эта штука по быстродействию хоть как-то ПЛИС, от этого и интересно стало)
Для меня это было бы оптимальным вариантом. Когда надо — слушаешь эфир. Вставил флэшку и вот тебе качалка торрентов, например…
А если бы таких скоростей можно было бы добиться в Java программе, да на Линуксе, да с остальными плюшками типа передачи на большой комп по сети — вообще сказка!)
Я, кстати, из статьи не понял немного — там можно только одним пином дёргать или менять произвольные данные на всём порту? И как там дела с приёмом данных от порта?
Вообще, я всё больше хочу эту штуку..;)
Можно попробовать для таких целей Beagleboard-xM beagleboard.org/Products/BeagleBoard-xM, у нее на борту как раз DSP процессор есть.
И цена…
Сейчас вот наткнулся на такой вариант — www starterkit ru/html/index.php?name=shop&op=view&id=99
По совсем демократичной цене…
Изучаю)
Не поверите, я эту плату сегодня утром заказал. :)
На Freescale iMX6Solo помимо кучи интерфейсов, есть еще и e-ink интерфейс.
Значит это судьба) надо брать!
А где заказывали? У этих же ребят? Когда обещается доставка? Ещё какие-нибудь дополнительные модули не заказывали?
Первый раз заказываю на www.starterkit.ru
Пока пришло только подтверждение, т.к. заказывал в субботу.

Интересно, когда HolaDuo-PC, SK-iMX6-SODIMM и модули появятся в продаже.
— Freescale iMX6Solo (2 ядра ARM Cortex-A9 1000МГц) DDR3-1066 1024Мбайт SATA разъем
— SK-iMX6-SODIMM (формат sodimm)
— Hola-IEB – интерфейсный модуль расширения
— Hola-FEB – FPGA модуль расширения
— Hola-VCEB – модуль расширения видео захвата
— Hola-AEEB – модуль расширения дополнительных Ethernet подключений

Да. Тоже читал про вторую плату. Но, думаю, ещё не скоро они её выпустят… Пока изготовление, пока отладка…
Да и цена конечно будет выше.
Как раз пока потренируемся на этой платке, а там и видно будет, стоит ли покупать другую…
Я бы Вам с удовольствием плюсов наставил за такое терпение к новичку, но у меня кармы нет (:
Java + JNI + Native C = ??

Думаю, что каждый язык должен решать свою задачу. Дрыгать ногой по GPIO — это не Java должна делать. Натив отлично справится. А вот управлять этм процессом на высоком уровне успеет и Java.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.