Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

понедельник, 28 апреля 2014 г.

Почему в сутках 24 часа?

Когда-то давно, жил был главный Админ. Он был занят своими разными проектами, один из которых назывался Земля. Там копошились всякие разные тварючки и все им было хорошо, только одним все никак, все не то. Обращались они часто к Админу с запросами. Всякими разными...

Ночи тогда не было. Был только день. И день был всего 6 часов. Но людям это не нравилось, они хотели больше отдыхать. И Админ настроил им Ночь, сказав, что она будет длиной как день - 6 часов... 

Проходило время - все живые организмы перестроились, только вот этим болтливым, все никак не привыкнуть. Мало им было 6 часов дня - не хватало этого, чтобы завершить все свои дела перед отходом ко сну. Больше хотели....

И изменил им Админ на Админке своей сутки c 12 до 24 часов. И прошло еще время и все животные перестроились... Только вот люди все никак не успокаиваются. Запрос за запросом: "MOAR!" - хотят больше часов в сутках. Но Админ понял, что это не решение и больше не стал ничего менять... 

И жил в это время один мальчик. Он был не такой как все. Почему-то он хотел чтобы часов в сутках было меньше....

Конец!

суббота, 26 апреля 2014 г.

Третий модуль Эриксоновского Гипноза от Вячеслава Гончаренко

Сегодня состоялся первый день третьего модуля Эриксоновского Гипноза Вячеслава Гончаренко. Разбирались с Метафорами и Теллисторингом. Я теперь не только умею вводить, проводить и выводить из транса, но еще и вести по нему с поддерживающими метафорами. 

Много экспериментировали друг на дружке, прорабатывая свои цели. Цели выбирали не критичные но желанные - я выбрал "купить мотоцикл", "написать и издать книгу" и "мой инфобизнес". Самое прекрасное - это то, что "ничего делать не надо", потому как "хочет не клиент - хочет бессознательное" оно же и руководит по жизни, а сознание лишь переживает/волнуется за все это. Так что пару фоновых процессов исполнения желаний запустили и посмотрим на результат. Как минимум вчера проходя домой пешком мимо книжного магазина я зашел и купил книгу о том, как писать книги. Причем это было сделано так легко. Уже предвкушаю :)  

Некоторые инсайты случались прям на тренинге во время транса. Пройдет еще некоторое время, пока я облеку в слова то, что мне открылось. Но это уже было здорово.  

Пока рано еще что либо (сознательно) выводить - но точно знаю что если, этот тренинг остановить, он уже мне очень помог. Так, что если есть желание пообщаться на эту тему, попробовать (могем сами попрактиковаться или же познакомлю с Вячеславом). Пиши в комменты.

Дальше практика-практика и еще раз практика... 

Ах да! Совсем забыл. Прогуливаясь вчера пешком (ага, я хоть и 10 000 шагов не сделал вчера, но 8000 получилось) из тренинга домой я наблюдал за своими мыслями. 

Одна из них была реакцией на покупку книги, которая стоила дороже, чем я (думал что) мог себе позволить - покупать тренинги и книги за свои деньги - это поможет быть более требовательными при составлении моей карьерной лестнички, как в плане что делать так и в плане сколько это будет стоить. Если все время кушать все только бесплатное, то и результат будет соответствующий... Но если вкладывать в свои знания/опыт ресурсы (не только время но и деньги) - это уже пахнет бизнесом со всеми вытекающими... 

Вторая была о другом - поставил http://endomondo.com и теперь прогулка пешком из другого конца города стала в кайф. Казалось бы простые циферки о маршруте (сколько шагов, какая скорость, какой километраж и другие показатели) - а так включило. Сколько новых мест я видел по дороге, сколько мыслей провел в голове. Маме, вот, позвонил. Если раньше я переживал за то, что 2 часа в день на дорогу - это слишком много, то теперь я знаю - 2 часа в день на дорогу пешком, если ты это выбрал сам, по маршруту, по которому раньше не ходил - это инвестиция. 

Третья была о том, что если я думаю сейчас так, а потом вдруг что-то узнаю новое и буду думать на 180 градусов в другую сторону и это вовсе не значит, что я заблуждался, то.. то... то... тороролололо :)  ...то все люди, которые сейчас думают иначе - не стоит их менять/переучивать - завтра я что-то новое узнаю и буду сам так думать. Не долго, но на время... Куда более интересная задача - объединить несколько теорий в одну и быть свободным менять вектор мыслей на 360 градусов. Хоть на время...  Так что в любых спорных ситуациях брать таймаут на подумать... 

И вообще в любых непонятных ситуациях - идти спать. Утро вечера мудренее...

пятница, 25 апреля 2014 г.

"Есть один супермотив - соревнования" Андрей Анистрат


Все, пошел я побежал... Беру какой-то шагометр, посмотрим, что из этого получится...

Кстати по городу бежать мне не ок, фу фу фу (типа отмазка). Есть голосеевский лес рядом - туда хочу. Вот туда и побегу... Но как телепортироваться туда? Такси! Точно!! Все ушел ребята...

...пришел :) http://www.endomondo.com/ прикольная штука все трекает/записывает...

Ежедневное ретро. Пять почему

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


Я просыпаюсь утром, ноут под боком, я его открываю и пока ем - уже прочитаю всю почту. Потом первая задача, вторая. Обед любимая жена принесет в комнату к рабочему месту. Третья таска, пару митингов. Вот уже вечер. Четвертая таска - увлекло. 2 часа ночи. Ой! Пора спать. Выключаю ноут и байки.

Так может происходить днями напролет. Бывало даже, что неделю не выходил из дому. А зачем? Все есть, что надо под боком. 

Это не ок. Это очень не ок. Идей и работы над ними всегда будет больше, чем часов в дне, а потому стоит себя лимитировать.

Один из хороших способов, которым пользуюсь - не заканчивать сегодня на зеленой полосе, то есть оставлять задачу незавершенной. Если задачу завершить сегодня - завтра на утро получаем лень, но если надо что-то доделать, какой-то финальный штрих - завтра сутра встанешь бодрячком и сразу за дело. Это один. И он не помогает от переработки и как следствие выгорания.

Два поможет - я взял его из книги REMOTE вчера. Периодически мониторить себя во второй половине дня с вопросом "а день сегодняшний по результативности он уже ок, или еще не ок?" Если ок - все, больше ничего не делаем. Если не ок - задаем себе "пять почему".


Допустим во второй половине понимаешь, что день в трубу и уже поздно что либо догонять. Нет, можно конечно, но уже себе во вред (и здоровью и качеству результата). Диалог:
- А день сегодняшний по результативности ок?
- НЕТ.
- Почему?
- (например) много митингов было, все как-то ни о чем конкретном
- Почему?
- Я с утра не придумал основную задачу на сегодня
- Почему?
- С самого утра мне позвонили на мобильный, я ответил, попросили срочно ответить на письмо, ответил и там понеслось - вместо определения главной задачи на день, я пошел по почте, скайпу, и нашел себе еще купу мелких (и казалось бы важных задач). Наверное надо сутра выключить мобильный и интернет в доме.
- Почему?
- Меня это может выбить из колеи что-то что происходит до того, как я распланировал свой день. Возможно мне стоит планировать его еще с вечера. 
- Почему?
- Если нет приоритета заранее, то спроссоня может показаться, что я делаю что-то ценное, а на самом деле просто реагирую.
- Почему?
- Обычно занимаюсь много чем.
- Почему? 
- На пересечении находятся интереснейшие идеи, которые потом требуют реализации моими руками.
- Почему? 
- Потому что не научился делегировать
- Почему?
- Просто недостаточно опыта. Наверное стоит делать это каждый день. 

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


Но это мой путь (причем актуальный на момент написания), а у тебя это может быть что-нибудь другое. Я задал больше, чем 5 почему - это допустимо. Почему рекомендуют ограничиваться 5ю - потому, что с помощью этого вопроса можно уйти далеко в детство и найти там какую-то детскую травму :) Это не цель ретроспективы дня. Немного больше узнать о себе - да, но не делать работу психолога.

Как-то так.

среда, 23 апреля 2014 г.

Поиск

Вот нарисовал


Как-то так :)

Как я кодю - проект PhotoSlider [Web/Java/Maven/Jetty/Spring/WebDriver]

В прошлом много всяких кодинг-отчетов писал. Пользовался при этом скриншотами и текстом. Но хочется пойти дальше. Было несколько попыток снимать видео того, что происходит на экране пока я кодю - судя по отзывам весьма успешные.

Ценность какая в этом всем? Я бы с удовольствием по-подглядывал как кто-то делает свою работу. Уверен, что есть ребята, которым это так же интересно. А так как правило "будь источником изменений, которые хочешь увидеть" работает, то начну (или продолжу) с себя.

Я люблю много фоткать, особенно, когда какие-то вылазки за город по абсолютно рендомному маршруту. Так вот самая боль - это то, что массу фоток потом хочется описать и выложить в блоге. Но это время. Да, можно выложить все фотки на пикаске и под каждой откомментить что-либо. Но это по моему не то - хочу, чтобы отчет был у меня в том месте, где я скажу, а не где-то там на гугле. Потому приходится выравнивать фоточки в HTML редакторе блога, миксовать их с текстом, перечитывать, поправлять. Это рутина. Ее либо автоматизировать стоит, либо ускорить. Вот потому я и начал писать свой проектик. Кроме того свой pet-проектик всегда можно расширить и дополнить теми фичами, которые хочется именно тебе, а не искать/ждать выхода плагинов на какой-то платформе (тот же гугл/блогспот). Да и развиваю навыки кодописательства с каждым таким домашним проектиком. И конечно же могу пошарить все, что узнал сам на страничках в блоге. Пусть эти посты кого-то вдохновят на личные подвиги.

Итак один рывок вчера сделал - проект уже можно задемить. Есть 4 часа видео, которое конечно же raw не стоит выкладывать (я жеж говорил, что хочу совершенстоваться), а потому я буду выкладывать его частями после монтажа. Почему монтажом заниматься важно? Потому что в ходе монтажа ты получаешь обратную связь о том, как стоило писать видео - и это повлияет на качеству будущих записей. Уверен когда-нибудь я смогу выкладывать raw и без монтажа - и он будет классный. А пока так. 

И да, если я сегодня что-нибудь выложу - потом к этому более вероятнее вернусь.

Продолжение обязательно следует. Отпиши пожалуйста +1 в коммент, если это интересно - подлей масла в огонь :).

понедельник, 21 апреля 2014 г.

За Ангелом

Сегодня утром всякие-разные социальные короткометражки. И нашел вот эту.


Больше прислушиваться к внутреннему голосу, он концентрирует мое внимание на том, что мне сейчас стоит сделать. 

Вчера у меня был необычный день. Я начал его с просмотра отчетов Ильи Варламова. После нескольких часов я понял, что тоже так хочу. Африки и спонсоров у меня пока нет, но есть две ноги, рюкзак, фотик и моя любознательность. Тут как раз (случайно ли) попалась вот эта статья, там из всех всех строк меня зацепила именно: "Мы набираем силу, когда... гуляем (не путайте с «бежим на работу» или идем в магазин, а именно гуляем без всякой определенной цели);" Выглянул в окно и понял, какой прекрасный солнечный день! Фотик в руки и вперед по воле Ангела. Без цели. Просто выйти из дому, а там пусть подсказывает внутренний голос, что делать дальше.

5я школа... Парк Шиллера... Стрийская... Сады на Цветочной... Где-то среди буков... На Цецино... 


Просмотреть 2014-04-19 Прогулка на Цецино на карте большего размера

5 часов пешком. 550 фоток. 55 видяшек. 45 собак. 3 покормил. 17 облаяли. 1 пожалел. 2 кошки. 10 кур. 1 коза. 3 вгорку. 2 вниз. 1 дождь. 30 людей. 1 влюбленная пара. 1 девочка на влике. 1 мужик с топором. 1 вопрос "а чё фоткаешь". 1 родственник. 1 мужик с перегаром. 10 провожающих взглядов. 1 ручеек. 17 улиток. 1 слизняк. 72000 глотков свежего воздуха. 3 заброшенных дома. 5 табличек - продается. 2 магазинчика. 1 литр живчика. 500 грамм боржоми. 1 кг овсяного печенья. Половину отдал. 2 заката. 1 телевышка. 15 минут читал книгу. 3 звонка по телефону: "ты где?" 1 скорая помощь. 2 мусорные машины. 1 автобус домой. 1 галочка в истории.

Фотки с подробным описанием будут позже (хочу написать аппку, с помощью которой будет удобно писать фото-отчеты). А на случай, если что-то пойдет не так - вот 5 часов за 5 минут, старательно упакованный CamtasiaStudio (100 раз всех благ ее разработчикам, она стоит тех денег, что за нее отдал).

воскресенье, 20 апреля 2014 г.

Как узнать человека?

Я сталкивался с несколькими рекомендациями. Проранжирую их по глубине, для себя:
1. Послушай, что он говорит о себе
2. Послушай, что о нем говорят другие люди
3. Послушай, как он сам отзывается о людях/вещах вокруг него


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


Вот ролик красивый нашел пока искал картинку, пусть тут побудет...


Эти советы уже раньше слышал вот тут


А тут есть текст и оригинал

А вот еще статья сегодня попалась. Уверен не случайно.  

суббота, 19 апреля 2014 г.

Больше обратной связи

...после которой еще можно что-то исправить.

Открыл для себя, что в сети полно вправляющих моцк роликов... Так, посмотреть со стороны... Кое-что понять. Немного сделать иначе...

пятница, 18 апреля 2014 г.

Как наладить обмен опытом через Wiki/Blog внутри команды

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

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

Если у тебя родилась идея "а не поднять ли нам в команде форум/вики/блог" подумай, не даром к тебе эта идея пришла - может ты хочешь (и готов уже) делиться накопленными знаниями? Почему-то мысль эта выбрала тебя, а не кого-то из команды. Может быть пришло время?...

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

Тогда можно поговорить за лично за твои выгоды. Когда-то я писал об этом. К тому добавлю не много: все кто начал и продолжил бложить сейчас говорят "да! мне помогло". Кому в чем, но всем +1 к решению их задач. 

Если все же отвечать на вопрос "как оживить коммуникацию через постинг внутри команды". Я бы поднял вики. На вики сам постил бы всякие полезности: что я знаю про проект, как что настроить, где что засетапить. При каждом вопросе ко мне "а как это делается" - давал бы линк: "на почитай, будут вопросы - подходи". Если 1 раз задали вопрос - для меня это как красная тряпка теперь - надо потратить чуть больше времени и записать, потому что на 90% вероятно спросят еще раз. Когда спросят еще раз - время окупается. А если не спросят, то я сам буду немного более активно делиться знаниями, ведь мне по времени теперь это уже ничего не стоит. Я скажу: "а тебя это интересует? оооо, у меня как раз есть на эту тему пост на нашем вики, хочешь дам?". И все :)

Если ты хочешь чтобы что-то работало в команде/компании - самое первое, что надо сделать, понять зачем это тебе самому. Потом начинать практиковать. А наработки повторно (и публично) использовать. Если оно на самом деле полезно - оно как бацилла разойдется по умам коллег. Если нет - будет полено как минимум одному тебе.   

Не убедил? Мне кажется полезность "запостить о знаниях" доказали миллионы блоггеров и пра-блоггеров и пра-пра-блоггеров и пра-пра-пра-блоггеров и их пра-пра-пра....  


Сейчас у тебя просто есть масса возможностей сделать это легко. 

Хм. Вспомнилось. Стоим с другом на тротуаре, общаемся. Проезжает резко машина мимо нас. Опасно едет, подумал я. Друг говорит - а представляешь, если бы что-то у него за рулем пошло что-то не так, то нас всех тут размазало бы по стенке и все наши идеи, все проекты, все все все бы вдруг перестало существовать. А мне почему-то было спокойно - как минимум частичка меня есть в моем блоге. И если сейчас бабахнет метиорит в то место, где сижу, то может быть этого поста читатель не заметит, но он сможет прочитать все, чем я успел поделиться. 

А еще приятно, когда ребята, которых я не знаю, еще с моего поза-поза прошлого проекта говорят при знакомстве - "А это ты! Оу! А я по твоему мануалу поднимал проект в самом начале. Мы его чуть правда переписали, но было очень полезно. Спасибо!". Писал я его 4 года назад.  

Если что-то придумал (и/или советуешь кому-то) - начинай пользоваться этим сам. Выгоду позже осознаешь. Сейчас достаточно того, что идея выбрала тебя - это уже зацепка. 

четверг, 17 апреля 2014 г.

Форматы ивентов по обмену опытом - Дискуссионный клуб на тему (часть 1)

Формат достаточно не сложный для реализации, требует всего лишь 1 организатора, знающего правила (описанные тут ниже) и группы ребят 5+ человек.

В цель Организатора входит рассказ про то, как это будет происходить, и модерация по времени, а так же организация пространства: флипчартная бумага и маркеры (поклеить на стену или поставить на стол), расположение столов так, чтобы было удобно мигрировать от стола к столу. Так же очень хорошо, если Организатор будет фотографировать ивент, а потом напишет отчет по нему. 

Формат служит сразу нескольким целям:
- нетворкинг (познакомить) ребят
- обменяться идеями, относительно заданной темы
- актуальных тем может быть несколько
- инициировать изменения на заданную тему в будущем

Формат может скушать достаточно большую аудиторию от 10 человек до 30 (и даже больше), т.к. подразумевает делегирование части организационной работы так называемым Хостам. Не требует от Организатора senior-ных навыков в теме собрания. 

Хост - человек, который записывает все-все идеи за одним из столов и потом презентует их всех участникам. На каждую тему-стол по одному хосту. Хост следит за тем, чтобы не было холиваров (и банит их), перефразирует понятое и без критики записывает идею на бумагу. Как можно больше идей. Любых, даже самых бредовых. Лучше +5 таких себе идей, чем 1 жирный холивар. 

Сценарий:

15 мин - Пока все собираются, организатор встречает новоприбывших, пишет на клейкой бумаге имя и клеит на грудь на видном месте. Ценность - чтобы другие ребята смелее обращались к коллегам по имени (не "эй ты", а "Владислав" или "Влад" - как Автору больше нравится). 

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

5 минут - Пока перерыв каждый может добавить свою тему или проголосовать за уже объявленную тему. У каждого участника есть два голоса. Организатор пару раз спрашивает всех "кто еще не проголосовал двумя точками - сделайте это?" После подсчитывает количество голосов по каждой теме и выводит лидеров из расчета 1 тема приблизительно на 5 участников. 15 человек - 2-3 темы самое оно. 


5 мин - Организатор рассказывает про правила игры, что будет и как себя стоит вести. Приблизительно так: "У нас будет несколько столов, за каждым столом обсуждается конкретная тема. Вы можете поделиться всем чем знаете за одним столом и если тема для вас исчерпана - перейти к другому. Я буду тут с вами следить за временем"

5 мин - Организатор озвучивает тему и спрашивает, кто готов быть хостом? Самые активные ребята соглашаются и Организатор рассказывает про правила игры в брейнсторминг: "Все идеи клевые. Каждая идея может быть с виду немного тютю, но ценность в том, что он может натолкнуть другого участника на новую, более реалистичную идею. Недопустима критика, и уж тем более холивары. Хосты, пожалуйста, проследите за этим. Ваша задача как можно быстрее нагенерить как можно больше идей. "

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

30 мин - Участники брейнстормят, Организатор следит за временем, Хосты записывают идеи и следят за критикой участников.

5 мин - Перерыв 

N*15 минут - По очереди от каждого стола Хосты рассказывают про идеи, которые они записали со слов Участников. Организатор следит за тем, чтобы не было холиваров. Все дискуссии после Demo. Если Хост затрудняется ответить что там было записано - автор идеи берет слово на минуту и рассказывает в чем суть. После перечисления всех идей одной командой Организатор может разрешить желающим поделиться еще одной идеей, которая появилась - на это дается не более 30 секунд (т.е. кратенько).

5 мин - Перерыв 

Как-то так :)

С кем поведешься от того и наберешься

Вчера у нас состоялась спонтанная айти тусовка в Черновцах. Вечером, после работы собрались друзья из разных компаний в пабе Гамбринус и после неформального нетворкинга и серии 1ту1 вопросов "как дела? что нового?" мы решили сделать небольшой дискуссионный клуб. Темы выбрали 2. Нас было 15 умничек. Одна из тем была "Как хендлить большой поток информации от коллег на работе, сохраняя при этом поток", а вторая "Как заниматься тем, что нравится, но при этом оставаясь в теме нужд проекта". Чуть позже опишу, что услышал по этим двум темам, но сейчас хочется поделиться впечатлениями о самом ивенте. 


Для начала поделюсь зачем мы это все с друзьями сделали. Нам часто этот вопрос задавали ребята, которых мы пригласили. Какая ваша выгода в этом? Зачем вы это делаете? Конечно же ответ - "просто так", не прокатит. Все все делают для (или во имя) чего-то :) Итак мой личный интерес к этому. Я долго жил в Черновцах, работал несколько лет в айти компании, которая можно сказать, меня вырастила. Потом переехал в Киев и там продолжил работу. За это время научился всяким разным инструментам коммуникации/обмена опытов у айтишников. 

Форматов до пупка: хакатоны, воркшопы, семинары, вебинары, мастерклассы, дискусионные клубы, тренинги, питчи, лайингтоки, просто доклады в команде/в компании/на конференции, всякие там посиделки, брейнсторминги, доджо, всякие спаринги, и еще купа того, что мы сами придумали. Каждый день есть возможность сходить на какой-то ивент. А если ивента нет, то просто написав в соцсети "ребята, я буду делать сегодня то-то там-то" собрать несколько однодумцев. Вдвоем и то веселее! А если соберется трое!! :)

Может показаться, что это преимущество миллионника. Нет! Я как только приехал в Киев, то мой круг внимания был сосредоточен на команде из 7 человек. Это были самые близкие мне люди. И я очень расстраивался, когда они уходили в другую компанию. Все те отношения, что я выстраивал - все они, получается, на свалку? В Черновицких компаниях не было такой динамичности, как в Киевских. Пришлось вырастать. Стал чертить круги по-больше - не "я и команда", а "я и компания", "я и вся Украинская айти тусовка". И вдруг оказалось, что никто никуда не делся - все остаются как и раньше в том же городе, в тех же соцсетях, в том же скайпе. И это даже здорово, что они уже в другой компании - есть шанс обменяться опытом, узнать как теперь что-то делается еще где-то. Я понял фишку! И тут понеслась...


Конференции, всякие-там волонтерства, небольшие клубы по интерсам, организация своих каких-то клубчиков по интересам вначале неуверенно, для своих, потом все смелее и смелее. Было это приблизительно так: первый техток в компании (я участник), первая конференция (я участник), первый доклад (я докладчик) внутри компании, первые 10 докладов, первый тренинг, первая аудитория на 50 человек, на 300, первая миниконференция, первый придуманный формат... Много подглядывал за тем, кто уже проводит ивенты - просто участвуя как участник или волонтер. И вот тут я должен сказать, что милионник со своей отлаженной экосистемой и уже существующими юзергруппами все же был большим мне пинком под зад. С кем поведешься от того и наберешься.

Итак опыт жизни в большом городе нужен, чтобы понимать как что работает и научиться генерить подобное самому. После понимания некоторых основных принципов нетворкинга становится все равно какой по величине город тебя принял пожить. Даже в самом небольшом селе - 1000 человек, найдется 10 айтишников. Так же в самом маленьком областном центре - 1000 айтишников, думаю легко! Знать их всех по именам. Вот то, чему я учусь и в чем вижу суть IT. Знать. 

Теперь у меня есть выбор. Либо продолжать делать то, что делаю и дальше но в Киеве, а в Черновцы возвращаться раз в год только, чтобы повидать родню и друзей. Либо возвращаться в Черновцы в активном режиме и проводить всевозможные ивенты, чем показывать пример того, что может быть вокруг - такой пример, как мне его показывают в Киеве каждый день другие организаторы. Обмениваться IT-вирусом. 

Спасибо Лине и Валерке - нашлись ребята которые поддержали эту идею. Мы вместе спланировали и решили провести на очередной наш приезд совместный нетворинг-IT-ивент. Конечно же мы не тешим себя иллюзиями, что вот так вот с первого раза будет все. Ничего подобного не происходит. Чтобы все более не менее стало на рельсы - подобных ивентов надо провести 10-15. Так что на каждый наш приезд мы будем делать это снова и снова, интереснее и интереснее. Просто потому что мы можем. А там как пойдет. 

Итак, зачем мы это делали? А зачем ты пришел бы на этот ивент? Один из ответов был - "чтобы не было скучно". Вот и мы так же оргаем что-то, чтобы не было скучно. 

Мне кажется, что вчера было весело. Хотя бы потому, что ребята не хотели расходиться, тогда как было уже 23:00 :)


Что дальше? Ну как минимум будем проводить это дело и дальше. Попутно у нас есть черновицкий IT скайп чатик в котором можно поспамить :) на тему "а че бы такого интересного сделать". Так же в фоне будем предлагать ребятам проводить что-то на тему своих увлечений, а если что-то уже подобное происходит, то предлагать проводить это на уровне города. Просто потому, что это можно сделать. 
Как-то так. 
Если кто хочет повторить подобный подвиг несколько рекомендаций: 
- Придумай тему, которая была бы интересна ребятам вокруг. Напиши кратенький абзацик. 
- Выбери формат, который больше всего подойдет для проработки этой темы. Например то, что делали мы - дискусионный клуб с выписыванием интересных тем на доску, голосованием за самые живые темы, после 15 минутный брейнсторминг и презентация результатов командами, с последующим обсуждением. (Больше форматов опишем позже). 
- Собери всех, кому это может быть интересно во всех соцсетях: скайп, фейсбук, твиттер, вконтакты, гугл+, и т.д. Дублируй информацию по всем каналам связи, потому как не каждый пользуется тем, что удобно тебе. Может кому позвонить стоит. Попроси ребят, кто увидел объявление сказать то же своим коллегам, кому это будет интересно.
- Создай при этом формочку регистрации, на которой все зарегаются. Кто-то может не зарегаться, но сказать в какой-то сетке, что "я пойду" - добавь его сам в форму.
- Анонсить лучше за 2 недели до начала ивента. Так же повторить информирование за неделю. И за пару дней до начала. Айтишники обычно сверхактивные, и вечера и выходные очень шустренько планируют. 
- Зная, сколько человек будет - за пару дней до начала найди паб (мы нашли его за 2-3 часа), в котором можно будет заказать вкусняшек и забукать какой-то из его залов полностью на весь вечер. Чтобы вам не мешала музыка или другие разговаривающие. В Черновцах нам приглянулся Гамбринус. 15 человек комфортно вместит. Интерьер приятный. Цены очень даже ОК. Надо будет больше - найдем еще. Места дофига. 
- Какая выгода пабу? Дофига клиентов. Сразу скажи, что мы рассчитываем на 15 человек, с орг.взносом 50 грн. 750 грн минимум потратим, а там как пойдет дальше. Если им это ок. Скажи что вы будете: мувать столы как вам нравится, просить выключать музыку, громко общаться, обязательно задержитесь до 23 :), и так далее... 
- По мере проведения ивентов, ты будешь больше знать, что обычно может пойти не так - не парься, если что-то пошло не так. Подумайте с ребятами, что бы сделать вместе, чтобы исправить ситуацию. Каждый раз что-то будет не так - от всего не застрахуешься. Вопрос в том, как вы выкрутитесь.
- Проведи его! 
- Собери фидбек у ребят и напиши отчет после.
- Соберитесь еще раз
Как-то так :) 
 

вторник, 15 апреля 2014 г.

Как эффективно учить Java. Часть 2

В прошлый раз я писал несколько рекомендаций с чего начать при изучении java. Теперь опишу о том, что делать если уже начал... Был диалог в скайпе с коллегой, Другом. С его позволения, перенесу его в блог.

Очень рад, что ты так активно участвуешь в жизни нашего проекта, но я знаю что в сутках 24 часа, 8 из которых сон и если отдавать время чему-то, то от чего-то другого оно убавится. От этого там будут результате не такие, какие могли бы быть. "закон сохранения времени" - называй его так, если хочешь. Я же хочу, чтобы у тебя были результаты самые лучшие. 

Так что, если ты готов наблюдение 1 - все время на java. Если в лоб, то это означает перестать делать что-то из того чем ты еще увлекаешься и сосредоточиться на java. Но если не в лоб, то можно комбинировать и кормить сразу несколько проектов выбирая из них те задачи, которые требуют кодинга - а кодить уже на java. И да, это тебе решать, т.к. ответственность за принятое решение на тебе. Я лишь рекомендую рассмотреть другой вариант. Все время на java.

Наблюдение 2 - много практики (собственно вот зачем тебе время). Практика должна быть разной, лучше узнать еще 5 разных фактов и попробовать их, чем углубиться на 3 дня в какую-то дырку... Чуть поковырял, прочитал, чуть проковырял, прочитал, проковырял, прочитал...
Ковырять тут надо много, чтобы ты понимал сколько - в 10 раз больше, чем ты сейчас это делаешь. "Все время на java" - вот откуда это.

Крепатура, скрип костей - вот, что должно быть в начале тренинга, но ближе к его концу (через пол года) будет уже нормой. Ты легко возьмешь 10x если будешь покушаться на эту высоту. Магия в том, что привыкаешь к этой нагрузке и следуюбщий барьер снова 10x. И когда его делаешь - то в результате ты будешь уже 100x от начальной отметки. Но если ты работаешь в системе +10 +10 +10 - то за две итерации ты будешь всего лишь на 30, тогда как мог на 1000. Не скорость, а ускорение - скорость изменения твоей скорости. Или даже скорость изменения ускорения, если пожелаешь. 

В общем держись мысли, что то как ты сейчас делаешь, если ритм комфортный, значит ты не трейнишься - надо снова взять 10x. Сделать может быть при этом 1,5x, поскрипеть, но блин. Развитие происходит в напряжении, не в комфорте.  А вообще вообще стоит миксовать ибо в комфорте ты можешь задуматься, а оно мне надо вообще. Напряг, торможение, напряг, торможение... Все ускоряясь и ускоряясь...

Теперь дальше. 3 - то что тебе советуют, ответственность на тебе - ведь ты выбрал это. 
Кто-то книгу, Кто-то предлагает программу пройти, я тут про 10х говорю. Мы говорим о том, что сработало бы у нас и возможно немного на других. Но это может сработать не так у тебя
результат будет весьма любопытный, и ты тому Автор. Потому держи ответственность за то будешь ли ты работать когда-нибудь в большой компании на крутом java проекте возле себя.  Никому не отдавай ее.

4 - будь готов принять самое неприятное. Имей план Б, Ц, Д, Е, ...

5 - Проходи больше собеседований (проси друзей сделать это), всяких моковых экзаменов в сети великое множество. Как можно больше фидбека по поводу дырявости твоих знаний предмета. Тут же их закрывай. На собеседования всегда ходи с листочком - все записывай, что не знаешь. Потому тебе надо в голове держать 10x планку - если ты нифига не знаешь, значит надо записывать каждое слово! Если ты думаешь, что ты почти понял все (комфорт и все такое), значит в этот момент началась потихоньку устаревание того, что ты наизучал. Я когда-то кодил на Делфи, но сейчас я уже ее помню многое из того, что делал. Надо время. Если не пользуешься (постоянная практика) тем, что знаешь - вскоре это растворится в буднях. Говорят - опыт не пропьешь? Ну скорее всего да, но его можно захламить чем-то что ты собираешь каждый день... 

Кстати, я уже говорил, что pet project это очень здорово - позволяет тебе активнее тратить время на тренинг. Пусть каждодневный твой "хлам" помогает тренингу, придмывай что из того что ты делал или делаешь можно автоматизировать. 

Резюме: ускорение + напряжение + много практики на малеикх заданиях + достаточный отдых + планы Б, В, Г + собеседования + тесты + постоянное закрываение дырок в знаниях....  Скорее даже постоянный поиск дырок, а потом закрываение. Если ты не видишь дырку, не значит что ее нет. Твои знания, как губка боб :) напрочь дырявые, как и мои. Просто помни про это всегда. 

6 - Будь готов к откату. В какой-то момент тренинга (с напряжением) все внутри воспротивится, настроение упадет, появятся мысли заняться чем-то другим, вдруг покажется что оно приоритетнее, и ты откатишься. Возможно это уже и случилось, посуди сам. И если переваришь этот бунт подсознания, все пойдет дальше. Ты увидишь новые горизонты, новые возможности. Но бунт будет. Будет не бунт а БУНТИЩЕ. Причем порой очень коварные :) а иногда тупо лень.  Если ты не прошел этот урок - будет откат до предыдущих настроек. Если прошел, значит ты вышел на 10х и теперь ты можешь сознательно делать то, что хочешь. Это твоя новая вершина, которая уже дается без труда. Как понять что ты откатился? Обычно откат закрепляется хорошей байкой по этому поводу. Серия оправданий, которые подтверждают, что то, что не получилось - это ОК. 
"У меня есть дела по важнее"
"Мои сильные стороны в другом" :) (это лично моя любимая - часто ей пользуюсь)

Я еще пока с этим сам не особо разобрался, но есть то что ты делаешь, а что-то ты не делаешь.  И это живет своей жизнью, независимо от ХОЧУ/НЕ ХОЧУ, НАДО/НЕ НАДО, ДОЛЖЕН/НЕ ДОЛЖЕН. Ты что-то выбрал делать и делаешь. Хочешь 10x - выбрал и вперед. Не взобрался, откатился? - придумал удобные няшные отмазки - ты выбрал это. Везде выбор. Потому включай ребенка. Ребенок всегда хочет впитывать знания как губка. Он не думает, а делает. Но ребенок любит переключаться с одного на другое. А это может показаться не ок. Но это ок! Вплетай все в свой джава тренинг. Программирование оно прикладное. Просто кодить - это не очень интересно (такая себе отмазка всплыла), значит будем кодить свои самые интересные хобби-проекты. Хожу в библиотеку? Закодю что-то на тему библиотеки. Че-то по таймменеджменту пробую? Намучу програмульку. Рисую? Тоже можно придумать помощника. Да что угодно. 100 проектов можно начать и просто переключаться с одного на другой. Как ребенок. Скучно в одном - фигачишь другой. Только теперь у тебя весь твой день наполнен будет практикой кодинга. Короче берешь то, что тебе мешает и делаешь так чтобы помогало.

Если ты поставишь цель типа "За N дней сделать х10" - тут есть подвох. Если N выбираешь ты, то это может быть никакое не 10x. "За 365 дней сделать 10x" - это не 10x ;) 10x - это сделать то же, но в 10 раз быстрее!  Вот поставь себе сейчас комфортную цель по твоему проекту. Джава тренинг чего-то там. А?

Допустим это - "за 5 дней пройти все 30 примеров кода - откомпилить и запустиь + модифицировать и посмотреть, что получится" Это комфортно, да? Допустим ответ "не очень, ведь надо параллельно еще читать и ...." Ок! :) Это только что была отмазка. Короче сделай это сегодня до полуночи. Не знаю как. Если ты это сделаешь, то спасешь 1 котенка. Возможно сейчас ты ощущаешь прилив сил и бодрости, это ок. Но будь готов к откату завтра.

Если ты еще тут, в скайпе, значит работает другая отмазка. Я на твоем бы месте вообще выключил его физически. Так же выключил бы все странички в браузере, все фейсбуки, все все все... Как на хакатоне. Только 1 окно гугла, и 1 окно IDE.

А закон сохранения времени - его можно хачить. У тебя в сутках 240 часов ;) когда сделаешь первый скачок 10x поймешь о чем я.

Вот интересная статья в догонку Джон Резиг: Пишите код каждый день

Живите рядом с местом работы

Я знаю, что такое жить в 5 минутах от офиса. Раньше я жил на сырце и каждый день тратил 1 час в одну сторону. Это 2 часа в день * 22 рабочих дня * 11 рабочих месяцев в году = 484 часа. Что такое полтыщи часов?

484 часа в дороге за год - это 20 полных суток из 365 которые у меня есть! Это 5,5% моей жизни. А если отнять сон, то вообще 8,3% от времени бодрствования. Это почти 3 рабочих месяца (если по 8 часов в день). Не убедил? Ок, давай еще чуть. Что такое 3 рабочих месяца?

Это 13-я, 14-я и 15-я твои зарплаты - ты их недополучишь, если будешь жить в большом городе далеко от места расположения офиса. Это все те новые начинания, на которых у тебя так часто не хватает времени. Это три месяца на свои любимые проекты, которые пылятся на полке.

Вот такая вот примитивная математика.

Сделать другу не удобно

Сегодня случилось собеседование java. Я не задавал вопросы по java как это обычно бывало в прошлом. А напрямую стал делать неудобно. В общем как сказал один мой учитель "Самый лучший учитель - это с которым трудно. Если все просто, то толку мало" И это так. В моей жизни сейчас я вижусь с друзьями не так как это было раньше. Дружеских связей в моей жизни стало больше в 100 раз и естественно страдает время уделяемое каждому Другу. Бывает раз в два месяца. Так вот за этот один раз я буду жалить, уж простите. Жалить в позитивном смысле. Катализ - вот слово, которое больше подходит. Сюсюкаться не вижу больше смысла. Сюсюкаться - в смысле слушать отмазки и говорить что-то вроде "как я тебя понимаю". Пару часов за два месяца это бесценно, чтобы тратить его на поддержания состояния нормальности людей (в том числе и себя), которые тебе дороги. Но с другой стороны, так как после этого отойду еще на 2 месяца, то могу позволить себе нечто, что не могу позволить в обычном режиме. Недавно друг, наслушавшись меня за один день все же сделал мне замечание - значит я перебрал. Но это была стука вместе. Мабуть я перегнул. И ладненько! Друга в горы бери, что называется. Быт с ним дели и пусть вам будет взаимно неудобно. 


Кстати, а что если делать подобные коучинги, но в походных условиях? Выбраться куда-то в горы, там разбить палатку и несколько дней коучиться с клиентом? Хм.... Интересно. Надо подумать. 

Хочешь попробовать такое - пиши плиз в личку. 

Так, я хотел написать пост с темой "Как эффективно учить Java. Часть 2" а получилось совсем другое. Ща поправим...

понедельник, 14 апреля 2014 г.

Как заниматсья любимым делом?

В последнее время часто спрашиваю ребят об их хобби. Хобби разнообразнейшие. Сколько людей - столько увлечений. Каждый делает это по какой-то понятной только ему одному причине, причем часто неосознанно. Часто - слышу "мне это просто нравится". Люблю быть тем, кто вытягивает это понимание и помогает осознать его. Я не эксперт в том, что выбрал делать ты, но немного научился вытаскивать из себя информацию по своим увлечениям и проделывая то же для друзей я научился чему-то, что поможет.  

Это был контекст. А теперь пару мыслей в помощь.

Тебе нравится что-то делать? Подумай о том, а почему ты это делаешь? Почему именно так? Как ты к этом пришел? Попробуй сформулировать ту ценность, которой служишь делая это. Напиши на эту тему 1000 слов сегодня. Где-то в этом тексте описании будет что-то очень емкое, что выведет  тебя на другой уровень понимания.

Например можно воспользоваться методикой 5 почему: 
А за какую работу я с удовольствием возьмусь?  
Что-то новое для меня. То чего я еще не делал раньше. Что-то, в процессе чего я научусь новому. 
Почему я люблю изучать новое? 
Потому что это дает мне возможность этим новым делиться с другими ребятами, кто стал на тот же путь. А те, кто просто наблюдает за моей деятельностью - тем могу показать пару фокусов, удивлять. 
Но почему для меня важно удивлять/помогать? 
Все дело в творчестве, я люблю когда у собеседника появляется огонек в глазах, когда приходит "ой, а я тоже так хочу/могу/буду!"  
А зачем мне это? 
Что-то внутри меня радуется, когда я спустя несколько недель вижу друга, который увлеченно расскажет что он сделал то то и вот то то... 
А почему это важно мне?
Если так случится - я узнаю от него что-то новое :) А это вероятно вдохновит и меня сделать что-то еще. Так же я буду знать, с чем смогу обратиться к другу - если он все же доведет это до какой-то практической реализации и то же смогут сделать и все мои другие друзья - сделать то, что они хотят быстрее, качественнее. А я сам на пересечении этого всего найду свой тот проект, который буду делать сам. 

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

После того, как картина немного прояснится пора переходить ко второму этапу "Я вещаю!" Тут стоит всем-всем рассказывать о том, что ты новое узнал и что ты готов делать эту работу и для них тоже. Для этого стоит использовать любой повод

Тебя спрашивают как дела? Отвечай не что-то вроде "да, норм, а ты как?", а "ой! замечательно, я вот сейчас занимаюсь ....... а еще ...... и теперь если ты или кто-нибудь другой захотите, то ........ в общем как-то так :)" Пусть это будет какой-то заготовленный текст, где кратко в нескольких предложениях будет описано все то, что ты нового о себе узнал и чем выбрал заниматься. 

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

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

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

Пусть люди понимают, что ты даешь им новую возможность при этом не прося ничего взамен. Просто новая возможность. Бесплатно. За спасибо. 

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

Посты-заметки стоит постить в стиле "как вы можете сделать то же что и я, но сами". Не просто фотки еды, которую приготовил, выставлять каждый день, а рассказать как им приготовить то же самое. Не просто картину нарисованную показать, а рассказать как нарисовать ее читателю. Не просто прокатиться по маршруту, а рассказать о том, как ты выбрал его и как готовился. И так далее... 

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

Это для старта. Дальше уже все зависит. 

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

Что делать, если ребенок порисовал стены?

Порисуй с ним. 

Аист выбрал тебя не просто так, а потому что посчитал, что ты лучше всех познакомишь нового человека с этим миром. 


Подглядывай за ребенком и многому сам научишься...

А обои переклеим. 

Посмотри на дедушек и бабушек, как они относятся к своему внуку/внучке. Быть может у тебя есть брат или сестра, а может даже несколько. Твои родители воспитали вас всех (уж точно они в этом опытнее тебя). Твои родители увидели результат своего воспитания спустя 20 лет - у них было много времени чтобы еще раз все обдумать. Теперь они знают, как стоило вести себя с тобой. И у них есть шанс, который они на внуках и реализуют. По моему, бабушек и дедушек эволюция придумала за тем, чтобы дать пример молодым родителям как стоит вести себя с детьми. 

Бабушка и дедушка позволяет ребенку многое, чего не позволяет молодой родитель. Почему так? Что они знают? А Японцы? Почему им запрещено критиковать за что-либо ребенка до 5 лет? 

Пусть рисует. Расслабься. Все будет хорошо. Лучше спроси у него, что он думает по этому поводу. 

Общение с окружающей реальностью

Ребята. Родилась еще одна маленькая (но далеко идущая) лаборатория успеха. Спасибо!

Все просто!

Давай вместе?

Андрей, спасибо за яркие метафоры и картинку!


А вот то, что улыбнуло сегодня


пятница, 11 апреля 2014 г.

Вебинар по рефакторингу

Ребята привет.

Код я пишу давно. Пишу его не только для того, чтобы побыстрее программа заработала. Пишу его еще для себя, как читателя, чтобы глядя на него немного позже можно было разобраться, что имел ввиду и быстро (а главное без вреда для работоспособности) внести правки. Так же не исключаю, что с моим кодом часто имеют дело другие люди - им меня понять еще сложнее. Потому код приходится причесывать. Имя этому процессу рефакторинг.

Сам по себе рефакторинг опасен. А потому без армии маленьких помощников тут никак. Имя им - тесты. Unit-тесты. Их тоже можно написать как-нибудь. Ну а можно задуматься о б их рефакторинге. "Тесты как документация" - возможно ты слышал раньше это громкое заявление. Рефакторинг в тестах в основном служит этой цели. Как этого добиться? Рассмотрим. 

На вебинаре на примере рефакторинга реального кода одного из моих проектов мы рассмотрим:
+ рефакторинг кода при поддержке тестов
+ рефакторинг тестов с целью "тесты как документация"
+ основные типы рефакторингов (production кода и кода тестов)
+ основные антипаттерны
+ рекомендации с чего начать рефакторинг в своем проекте
+ зацепим OOP и SOLID принципы
Ну и конечно же главный вопрос о том, как это все поможет заработать больше.

Как это будет происходить?
- start: code review -> WTF -> рефакторинг -> goto start
   (тут буду много рассказывать {и рисовать} почему так, а не иначе, параллельно с кодингом)
- ближе к концу секция вопросов/ответов
   (тут ты сможешь задать вопрос и получить на него ответ)
- и в конце ссылки на полезное чтиво
   (а так же запись вебинара для личного использования)

Язык программирования - Java

Среда разработки - Intellij IDEA

Стоимость вебинара - 70 грн

Продолжительность вебинара - 1,5-2 часа.

От тебя на это время потребуются - компьютер с интернетом, наушники и (возможно) попкорн.

Дата проведения уточняется - в ближайшие неделю-две

Форма предварительной регистрации - >>> вот тут <<< (зарегистрируйся, чтобы быть в курсе) Поторопись! 

Деньги, собранные от участников вебинара пойдут на покупку планшета Samsung Galaxy Note Pro 12.2 мне на день рождения. А нужен он мне для того, чтобы чуть чаще заниматься мультипликацией в блоге. Не так давно я держал подобный планшет в руках и весь наэлектризовался от возможностей, которые он мне открывает.

Ну а 10% от прибыли - уйдет на благотоврительность. 

Как-то так

среда, 9 апреля 2014 г.

Raspberry Pi - Ставим Linux/Java. Моргаем светодиодом

В прошлом посту я сделал обзор покупки и обещал, что будет продолжение.

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

Сегодня у нас в компании состоялся сходнячок на тему Raspberry Pi. Каждый показал свои наработки. Через часик ребята собрались и разбежались. Остались двое я и Артем. У Артема опыта с Raspberry Pi поболее будет, а потому он мне помог собрать все. Конечно же мой комп показывал свои какие-то приколы, но за 3 часа мы его убедили, что светодиодом моргать надо так, как хотим мы! Кто тут главный, а?!


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

Итак у нас есть пустая флешка. Нам понадобится программа Win32DiskImager и образ Raspbian (взято тут). 

Запускать программу стоит из под Администратора, иначе ошибки будут.


Флешку берем чистую, закатаем на нее образ. 


После стоит подождать, пока не закончится запись... Это продлится минут 5 не больше. 



Дальше у нас есть несколько вариантов. Если у нас есть монитор, то мы можем подключиться к нему через HDMI и включить Raspberry Pi и увидеть на экране, как разворачивается Linux. 

Но представим, что у нас нет никакого HDMI кабеля и монитора (мы пользовались проектором, который потом перестал показывать картинку {наверное из за битого провода}).  

Будем подключаться специальным образом к консольке Linux. В этом нам поможет USB-кабель для TTL-консоли. Подключать его стоит аккуратно и вот так - крайний ряд, счет ведем от угла, 3, 4, 5 пины - черный, белый и зеленый соответственно.


Подключаем к usb, вставляем флешку, включаем питание (через microUSB) RaspberryPi (красная лампочка должна гореть).


На компе (Windows) нужно установить драйвер от Prolific. После его установки он появится в диспетчере устройств. Тут надо обратить внимание под видом какого порта он появился.


Потом понадобится нам Putty чтобы подключиться. Выбираем Serial, указываем порт COMn, где n - номер из диспетчера устройств, скорость - 115200.


После подключения мы должны увидеть консоль. Но это не мой путь, поскольку Windows8 не скушала драйвер от Prolific, и я не смог подключиться через него. Печалька. Надеюсь у тебя получится.

Я сделал то же на компе с Windows7 - все установилось без проблем и в консоли увидел вот что.

Uncompressing Linux... done, booting the kernel.
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.10.25+ (dc4@dc4-arm-01) (gcc version 4.7.2 20120731 (prerelease) (crosstool-NG linaro-1.13.1+bzr2458 - Linaro GCC 2012.08) ) #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014
[    0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[    0.000000] Machine: BCM2708
[    0.000000] cma: CMA: reserved 16 MiB at 1b000000
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 113792
[    0.000000] Kernel command line: dma.dmachans=0x7f35 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708.boardrev=0xe bcm2708.serial=0xe27dc0f5 smsc95xx.macaddr=B8:27:EB:7D:C0:F5 sdhci-bcm2708.emmc_clock_freq=250000000 vc_mem.mem_base=0x1ec00000 vc_mem.mem_size=0x20000000  dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 448MB = 448MB total
[    0.000000] Memory: 431652k/431652k available, 27100k reserved, 0K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xdc800000 - 0xff000000   ( 552 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xdc000000   ( 448 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0xc0008000 - 0xc05727b4   (5546 kB)
[    0.000000]       .init : 0xc0573000 - 0xc0597424   ( 146 kB)
[    0.000000]       .data : 0xc0598000 - 0xc05d0870   ( 227 kB)
[    0.000000]        .bss : 0xc05d0870 - 0xc067c3e0   ( 687 kB)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] NR_IRQS:330
[    0.000000] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 4294967ms
[    0.000000] Switching to timer-based delay loop
[    0.000000] Console: colour dummy device 80x30
[    0.000000] console [tty1] enabled
[    0.001183] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=10000)
[    0.001250] pid_max: default: 32768 minimum: 301
[    0.001722] Mount-cache hash table entries: 512
[    0.002538] Initializing cgroup subsys memory
[    0.002647] Initializing cgroup subsys devices
[    0.002689] Initializing cgroup subsys freezer
[    0.002725] Initializing cgroup subsys blkio
[    0.002886] CPU: Testing write buffer coherency: ok
[    0.003366] Setting up static identity map for 0xc0406048 - 0xc04060a4
[    0.005199] devtmpfs: initialized
[    0.019623] NET: Registered protocol family 16
[    0.025603] DMA: preallocated 4096 KiB pool for atomic coherent allocations
[    0.026724] bcm2708.uart_clock = 0
[    0.028455] hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.
[    0.028511] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    0.028551] mailbox: Broadcom VideoCore Mailbox driver
[    0.028650] bcm2708_vcio: mailbox at f200b880
[    0.028756] bcm_power: Broadcom power driver
[    0.028797] bcm_power_open() -> 0
[    0.028826] bcm_power_request(0, 8)
[    0.529548] bcm_mailbox_read -> 00000080, 0
[    0.529592] bcm_power_request -> 0
[    0.529818] Serial: AMBA PL011 UART driver
[    0.529983] dev:f1: ttyAMA0 at MMIO 0x20201000 (irq = 83) is a PL011 rev3
[    0.872118] console [ttyAMA0] enabled
[    0.898069] bio: create slab  at 0
[    0.903403] SCSI subsystem initialized
[    0.907381] usbcore: registered new interface driver usbfs
[    0.913102] usbcore: registered new interface driver hub
[    0.918680] usbcore: registered new device driver usb
[    0.925274] Switching to clocksource stc
[    0.929621] FS-Cache: Loaded
[    0.932793] CacheFiles: Loaded
[    0.948598] NET: Registered protocol family 2
[    0.954022] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[    0.961293] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[    0.967819] TCP: Hash tables configured (established 4096 bind 4096)
[    0.974292] TCP: reno registered
[    0.977552] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.983462] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.990204] NET: Registered protocol family 1
[    0.995140] RPC: Registered named UNIX socket transport module.
[    1.001206] RPC: Registered udp transport module.
[    1.005932] RPC: Registered tcp transport module.
[    1.010682] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.018034] bcm2708_dma: DMA manager at f2007000
[    1.022856] bcm2708_gpio: bcm2708_gpio_probe c05a5e50
[    1.028312] vc-mem: phys_addr:0x00000000 mem_base=0x1ec00000 mem_size:0x20000000(512 MiB)
[    1.037698] audit: initializing netlink socket (disabled)
[    1.043376] type=2000 audit(0.890:1): initialize[    1.205646] VFS: Disk quotas dquot_6.5.2
[    1.210045] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    1.218891] FS-Cache: Netfs 'nfs' registered for caching
[    1.225629] NFS: Registering the id_resolver key type
[    1.230933] Key type id_resolver registered
[    1.235146] Key type id_legacy registered
[    1.239950] msgmni has been set to 875
[    1.245824] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[    1.253679] io scheduler noop registered
[    1.257642] io scheduler deadline registered (default)
[    1.263238] io scheduler cfq registered
[    1.267382] bcm2708_fb_debugfs_init: could not create debugfs entry
[    1.274966] BCM2708FB: allocated DMA memory 5b400000
[    1.280124] BCM2708FB: allocated DMA channel 0 @ f2007000
[    1.291686] Console: switching to colour frame buffer device 82x26
[    1.301884] uart-pl011 dev:f1: no DMA platform data
[    1.308225] kgdb: Registered I/O driver kgdboc.
[    1.314879] vc-cma: Videocore CMA driver
[    1.320248] vc-cma: vc_cma_base      = 0x00000000
[    1.326259] vc-cma: vc_cma_size      = 0x00000000 (0 MiB)
[    1.333023] vc-cma: vc_cma_initial   = 0x00000000 (0 MiB)
[    1.348942] brd: module loaded
[    1.358592] loop: module loaded
[    1.363377] vchiq: vchiq_init_state: slot_zero = 0xdb000000, is_master = 0
[    1.372525] Loading iSCSI transport class v2.0-870.
[    1.379986] usbcore: registered new interface driver smsc95xx
[    1.387574] dwc_otg: version 3.00a 10-AUG-2012 (platform bus)
[    1.594889] Core Release: 2.80a
[    1.599394] Setting default values for core params
[    1.605442] Finished setting default values for core params
[    1.812346] Using Buffer DMA mode
[    1.816942] Periodic Transfer Interrupt Enhancement - disabled
[    1.824071] Multiprocessor Interrupt Enhancement - disabled
[    1.830930] OTG VER PARAM: 0, OTG VER FLAG: 0
[    1.836563] Dedicated Tx FIFOs mode
[    1.842120] dwc_otg bcm2708_usb: DWC OTG Controller
[    1.848348] dwc_otg bcm2708_usb: new USB bus registered, assigned bus number 1
[    1.856973] dwc_otg bcm2708_usb: irq 32, io mem 0x00000000
[    1.863801] Init: Port Power? op_state=1
[    1.869000] Init: Power Port (0)
[    1.873652] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    1.881937] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.890589] usb usb1: Product: DWC OTG Controller
[    1.896672] usb usb1: Manufacturer: Linux 3.10.25+ dwc_otg_hcd
[    1.903902] usb usb1: SerialNumber: bcm2708_usb
[    1.910587] hub 1-0:1.0: USB hub found
[    1.915727] hub 1-0:1.0: 1 port detected
[    1.921854] usbcore: registered new interface driver usb-storage
[    1.929673] mousedev: PS/2 mouse device common for all mice
[    1.937208] bcm2835-cpufreq: min=700000 max=700000 cur=700000
[    1.944519] bcm2835-cpufreq: switching to governor powersave
[    1.951579] bcm2835-cpufreq: switching to governor powersave
[    1.958497] cpuidle: using governor ladder
[    1.963844] cpuidle: using governor menu
[    1.969013] sdhci: Secure Digital Host Controller Interface driver
[    1.976473] sdhci: Copyright(c) Pierre Ossman
[    1.982151] sdhci: Enable low-latency mode
[    2.029306] mmc0: SDHCI controller on BCM2708_Arasan [platform] using platform's DMA
[    2.039794] mmc0: BCM2708 SDHC host at 0x20300000 DMA 2 IRQ 77
[    2.047028] sdhci-pltfm: SDHCI platform and OF driver helper
[    2.054171] ledtrig-cpu: registered to indicate activity on CPUs
[    2.063758] hidraw: raw HID events driver (C) Jiri Kosina
[    2.078060] usbcore: registered new interface driver usbhid
[    2.085157] usbhid: USB HID core driver
[    2.095003] TCP: cubic registered
[    2.101764] Initializing XFRM netlink socket
[    2.109488] NET: Registered protocol family 17
[    2.115469] Key type dns_resolver registered
[    2.124430] Indeed it is in host mode hprt0 = 00021501
[    2.131412] VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5
[    2.160089] registered taskstats version 1
[    2.169691] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[    2.189668] Waiting for root device /dev/mmcblk0p2...
[    2.271484] mmc0: read SD Status register (SSR) after 6 attempts
[    2.283986] mmc0: new high speed SDHC card at address b368
[    2.291625] mmcblk0: mmc0:b368 NCard 14.8 GiB
[    2.299705]  mmcblk0: p1 p2
[    2.379334] usb 1-1: new high-speed USB device number 2 using dwc_otg
[    2.387425] Indeed it is in host mode hprt0 = 00001101
[    2.590113] usb 1-1: New USB device found, idVendor=0424, idProduct=9514
[    2.598383] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    2.607916] hub 1-1:1.0: USB hub found
[    2.613493] hub 1-1:1.0: 5 ports detected
[    2.899484] usb 1-1.1: new high-speed USB device number 3 using dwc_otg
[    3.020030] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00
[    3.028431] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    3.040281] smsc95xx v1.0.4
[    3.107861] smsc95xx 1-1.1:1.0 eth0: register 'smsc95xx' at usb-bcm2708_usb-1.1, smsc95xx USB 2.0 Ethernet, b8:27:eb:7d:c0:f5
[    6.593574] EXT4-fs (mmcblk0p2): recovery complete
[    6.703930] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    6.715143] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    6.724829] devtmpfs: mounted
[    6.729895] Freeing unused kernel memory: 144K (c0573000 - c0597000)
[    8.404766] udevd[156]: starting version 175
[   10.551303] bcm2708-i2s bcm2708-i2s.0: Failed to create debugfs directory
[   16.829010] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[   17.336842] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[   23.153129] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
 
Raspbian GNU/Linux 7 raspberrypi ttyAMA0

raspberrypi login:

Но я ничего не смог набрать с клавиатуры - консоль зависала. В попытке решить этот вопрос я случайно поломал USB-кабель для TTL-консоли он как-то очень сильно оттопырено торчал из ноута, а я был очень неаккуратным. Так что будь внимательнее с торчащими из ноута дивайсами...

Что делать? HDMI провода нет. Но у Raspberry Pi есть еще один видеовыход - простой желтенький тюльпанчик. За него-то я и подключился к проектору. 




Поклеил на шкаф детским пластелином ватман и получил картинку! Более приятную, чем в консоли Putty - с малинкой


После минутки распаковки я увидел установочное меню.


Если ты вдруг не увидел такого меню, а у меня загрузилась GUI - не переживай. Ты можешь найти эти свойства в настройках PaspberryPi в меню "Пуск" либо выполнив в консоли sudo raspi-config

Итак в программе настройки стоит выбрать первый пункт меню 1. Expand filesystem - я так понимаю, чтобы вся моя флешка была использована под раздел. 

Ах да! Клавиатура нужна тоже :) Ее можно воткнуть в любой USB порт.


Клава тут же заработала. И я выбрал все таки первый пункт меню.



Говорит после перегрузки все сделает, оки, верю!

Идем дальше по меню - зайдем в Advanced


Так, как я поломал USB-кабель для TTL-консоли, то надобно включать другой способ доступа к Raspberry Pi - а именно по сетке через SSH. Включим его тут.




Так же включим SPI - понадобится позже.




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



Вообще эта конфигурационная тула может быть запущена из консоли в любое время с помощью команды sudo raspi-config



Если в основном меню нажать Esc то выйдешь в консоль Linux


Для выключение Paspberry Pi достаточно выполнить команду sudo halt и подождать завершения. Выключать питание при включенной Linux не стоит (хотя можно на свой страх и риск) - говорят от этого порой флешка страдает так, что ее нельзя потом использовать для этих целей - только как попсовую флешку.  


Так, после остановки системы можно выключить питание и включить обратно. Так бы хотелось иметь на платке кнопку ресет, а то уже предвкушаю отломанный microUSB и чтобы этого не случилось, лучше отключать USB провод от блока питания а не от Raspberry Pi. 

Итак мы включились. Вышли из меню. Видим командную строку. Сейчас нам надо настроить сетку. Для этого в консоли пишем команду sudo nano /etc/network/interfaces

Мы увидим содержимое конфиг файла


Нам надо строчку iface eth0 inet dhcp заменить на вот эти строки (взято тут)
auto eth0
iface eth0 inet static
    address 192.168.1.111
    netmask 255.255.255.0
    gateway 192.168.1.1
    # network 192.168.1.0
    # broadcast 192.168.1.255


Далее жмакаем Ctrl-X , Y, Enter  - файл сохранится

Далее выполняем команду sudo service networking restart

После этого можно проверить командой ifconfig изменения

Теперь можно подключать Ethernet провод к рабочему компу. После подключения в настройках сетевых устройств



В свойствах Ethernet контроллера


Прописываем в Ipv4


192.168.1.100
255.255.255.0


При этом у меня начались глюки с инетом, и я его от греха подальше вообще отключил, а Ethernet включил



Raspberry Pi сразу зажег свой желтый светодиод....


Супер! Осталось совсем не много! :)

Кстати, если немного отвлечься, и выделить в настройках сетевых адаптеров wireless (через который у тебя инет ловится) и ethernet (что кабелем к малинке подключен) и настроить мост, то на малинке появится инет  


После удаления моста все вернется восвояси.


Но нам надо подключиться к Raspberry Pi через SSH. Для этого нам поможет либо уже привычная Putty. Подключаемся через SSH (22 порт) к 192.168.1.111 (если что не получается - отключаем/включаем Ethernet). Логин/пароль - pi/raspberry




И опля! Мы в консоли!


Теперь надобно установить java. Делаем это командой sudo apt-get install oracle-java7-jdk устанавливаем java. После можно попробовать командой java -version получить версию java.  


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


Создадим тут (/home/pi/) папочку java и на время переключимся на написание проектика

Создадим пустой java maven проект и исправим его pom.xml


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>jpio</groupId>
    <artifactId>jpio</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>com.pi4j</groupId>
            <artifactId>pi4j-core</artifactId>
            <version>1.2-SNAPSHOT</version>
            <exclusions>
                <exclusion>
                    <groupId>com.pi4j</groupId>
                    <artifactId>pi4j-native</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <repositories>
        <repository>
            <id>oss-snapshots-repo</id>
            <name>Sonatype OSS Maven Repository</name>
            <url>https://oss.sonatype.org/content/groups/public</url>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </snapshots>
        </repository>
    </repositories>

    <build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>

                    <archive>
                        <manifest>
                            <mainClass>com.apofig.raspberry.demo.Main</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <finalName>jpio</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
                        <phase>package</phase> <!-- bind to the packaging phase -->
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

Так же добавим класс

package com.apofig.raspberry.demo;

import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;

public class Main {

    public static final int LONG = 800;
    public static final int SHORT = 300;

    public static void main(String[] args) throws InterruptedException {

        System.out.println("Hello world !!!");

        GpioController gpio = GpioFactory.getInstance();
        GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, "MyLED", PinState.HIGH);

        pin.high();
        Thread.sleep(SHORT);
        pin.low();
        Thread.sleep(SHORT);

        pin.high();
        Thread.sleep(SHORT);
        pin.low();
        Thread.sleep(SHORT);

        pin.high();
        Thread.sleep(SHORT);
        pin.low();
        Thread.sleep(LONG);

        pin.high();
        Thread.sleep(LONG);
        pin.low();
        Thread.sleep(LONG);

        pin.high();
        Thread.sleep(LONG);
        pin.low();
        Thread.sleep(LONG);

        pin.high();
        Thread.sleep(LONG);
        pin.low();
        Thread.sleep(LONG);

        pin.high();
        Thread.sleep(SHORT);
        pin.low();
        Thread.sleep(SHORT);

        pin.high();
        Thread.sleep(SHORT);
        pin.low();
        Thread.sleep(SHORT);

        pin.high();
        Thread.sleep(SHORT);
        pin.low();
        Thread.sleep(SHORT);

        gpio.shutdown();
    }
}

Билдим проект командой mvn package



А потом файлик jpio.jar в папке target переписываем на Raspberry Pi


Запустить на выполнение можем командой sudo java -jar java/jpio.jar


При этом светодиод замаргает, если мы его подключим. Как? Вот как, обязательно последовательно через сопротивление (резистор)


Тут для удобства я красненьким нарисовал как в монтажке внутри проходят проводники, а желтым показал нашу цепь. Синий - GND (Земля), Красный - #18 нога. С нумерацией ног тут туго, она не совсем соответсвует нумерации ног в коде, так что надо быть осторожным и перед тем как что-то к чему-то подключать сперва попробовать мультиметром.

Шлейф уходит к плану Rospberry Pi - там тоже важно не ошибиться с ключем.


Если все будет ок, то светодиод заморгает ...---...  и напишет в консоли Hello world!!!

Но если в консоли написало ощибку
Unable to determine hardware version. I see: Hardware   : BCM2835  - expecting BCM2708 or BCM2709.


Я нашел пост с решениями, но реально помогло после таких действий/
1) обновление операционки (я не уверен что оно надо было, но все же накатил)
sudo apt-get update
sudo apt-get dist-upgrade

2) обновление в pom.xml версии pi4j-core до 1.2-SNAPSHOT с последующей пересборкой mvn clean package и заливкой на сервер в ~/java

Пока все.

Если тебе понравился этот пост. Ты можешь помочь проекту. Все, Чем ты поделишься пойдет на покупку новых запчастей с подробным описанием тут, в блоге хода экспериментов.

Спасибо за твой интерес!

Продолжение как всегда следует....