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


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

суббота, 29 ноября 2014 г.

Доклад "У тебя получITся" в месте с GoIT

Привет!

Совсем скоро, 3 декабря в "Часописе" будем вместе с GoIT помогать молодым ребятам войти в айти :) Если ты только собираешься устроиться - приходи, тебе будет интересно и полезно. Особенно, если ты выбрал для себя Java.

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

Если не получается - не беда. Вот запись с ивента 26го ноября.

Приходи! Давай учиться вместе. 

Как сделать слайдкаст (часть 2)

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

# грузим в переменную a аудиофайл
a = DirectShowSource("доклад.mp3")

global fps = 30.0 # количество кадров в секунду в результирующем клипе
global tempo = 120.0 # на сколько % ускоряем клип

# глобальные переменные, в них будем хранить счетчик фреймов
global frame_start = 0  
global frame_end = 0 
 
# функция перевода времени мин-сек в фреймы с учетом частоты кадров и ускорения клипа
function toFrame(int min, int sec) {
    return Round((min*60 + sec)*fps*100/tempo)
}

# функция загрузки слайда в ряд фреймов длинной min-sec
function loadSlide(string name, int min, int sec) {
    global frame_start = frame_end 
    global frame_end = toFrame(min, sec)
    slide = ImageSource(name, fps=fps, end=frame_end - frame_start)
    # это хак для отладки - выводит дебаг-строчку прямо на видео в левом верхнем углу
    # slide = slide.Subtitle(String(frame_start) + "-" + String(frame_end), text_color=$000000, size=60, first_frame=0)
    return slide
}  
 
# загрузим первый слайд в переменную i сделав из него видеоряд длинной в 2 минуты 3 секунды
i = loadSlide("Slide (1).jpg", 2, 3)
 
# так же для второго слайда и так далее
i = i + loadSlide("Slide (2).jpg", 2, 26)
i = i + loadSlide("Slide (3).jpg", 5, 41)
i = i + loadSlide("Slide (4).jpg", 7, 38)
i = i + loadSlide("Slide (5).jpg", 11, 30)
i = i + loadSlide("Slide (6).jpg", 20, 43)
i = i + loadSlide("Slide (7).jpg", 29, 13)
i = i + loadSlide("Slide (8).jpg", 29, 23)
i = i + loadSlide("Slide (9).jpg", 33, 40)
i = i + loadSlide("Slide (10).jpg", 36, 15)
i = i + loadSlide("Slide (11).jpg", 36, 25)
i = i + loadSlide("Slide (12).jpg", 39, 12)
i = i + loadSlide("Slide (13).jpg", 40, 38)
i = i + loadSlide("Slide (14).jpg", 42, 21)
i = i + loadSlide("Slide (15).jpg", 43, 5)
i = i + loadSlide("Slide (16).jpg", 43, 19)
i = i + loadSlide("Slide (17).jpg", 48, 53)
i = i + loadSlide("Slide (18).jpg", 55, 54)
i = i + loadSlide("Slide (19).jpg", 58, 32)
i = i + loadSlide("Slide (20).jpg", 60, 13)
 
# ресайзим слайды
i = i.LanczosResize(764, 480)
 
# чтобы секономить время слушателя, включаем скорость 'tempo'%
a = a.TimeStretch(tempo=tempo)
 
# и в конце концов смерджим два потока и возвращаем этот результат
AudioDub(a, i)


Enjoy!

вторник, 25 ноября 2014 г.

Хакерспейс


Я в нашем небольшом корпоративном островке свободы - хакерспейсе. Мы его пол года с Вовой вынашивали и вот, появился наш уголок в тренинг зоне, куда постоянно приходят любознательные ребята, чтобы сделать что-то удивительное. Люди + Место + Хобби - так мы окрестили то, чем мы занимаемся. 

Чем ребята там только не занимаются и TEDы смотрят, и 3D принтеры разбирают/чинют/собирают, и проводят тренинги по Embedded, и нетворкинговую соцсетку пишут, и окулюсом смотрят и еще много всякого. Радует то, что этот уголок растет. Надеюсь в новом году у нас появится своя отдельная лаборатория! Вот там и развернемся! 

Ах да! Мне нравится это движение по одной простой причине - тут не нужен менеджмент. Ребята делают это на пике вершины своих потребностей (по Маслоу) - удовлетворяют творчество и конечно же самоорганизовываются. 

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

И это радует! 

Отчет о встрече "РекрутЁры и ПрограммЁры" №3

Не так давно анонсировал встречу под кодовым названием РекрутЁры и ПрограммЁры. Идея поводить подобные встречи регулярно зародилась после того, как Вика Придатко раз пригласила в гости и собрала коллег-рекрутеров для того, чтобы ответить на их технические вопросы не техническим (человеческим) языком. Я даже отзыв в LinkedIn за это заработал :) Первая встреча была у Вики дома, а вторая в Хакерспейсе Hacklab - ее посетили уже трое разработчиков. Каждый раз мы чудненько проводили время. После этого была длительная пауза и теперь мы намерены собираться каждый месяц.


Как это происходило? В нашем распоряжении было всего 3 часа, 15 минут из которых ушли на сборы - айтишники как всегда, любят задержаться. Ничего - сам такой. После рассказали про формат, заем мы это делаем и каким будут следующие 3 часа, а еще очень важно, что привезут пиццы - я наверное это за встречу раз 20 повторил. Сразу после вступления ребята по очереди стали рассказывать про себя, с каким вопросом пришли и в чем могут помочь. 


Вопросы мы с Линой внимательно записывали. И пока это делали ребята самоорганизовались в небольшие группки по интересам. Тем временем приехала пицца и группках стало совсем уютно. 


Вопросы поднимались интересные. Самый яркий по моему - "программисты, почему вы так выделываетесь и перебираете соцпакетами". Да, есть такое... Все вопросы мы выписали на доску и после проголосовали тремя точками.


Вопросы:
- какой язык программирования круче и почему **
- почему не хотят брать молодняк и что сделать, чтобы его взяли ****
- cocos2d - что за библиотечка и зачем она нужна
- какие технологии набирают популярность - что нужно заказчикам *******
- как систематизировать знания и углубиться в ИТ-технологии *******
- как работать с льюдьми в компании и за ее пределами
- что может улучшить и упростить инфраструктуру, в которой работает HR *
- всегда отвечайте - люди хотят фидбек *
- какой ваш позитивный опыт общения с HR - существует ли дружба между HR и DEV
- почему программисты выделываются? **
- какие 2 трудности в работе вы можете выделить
- популярно о scrum/agile *****
- .net e,bedded STL Boost OpenCV *****
- API, AJAX, WTF ***
- интерфейс и абстрактный класс *
- что такое rubby/python **
- что такое JavaFX **
- что такое Hadoop **
- QT, XML, OpenGL **

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


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

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

На будущее: 
= как-то спрашивать подтверждения участия, а то пришло в два раза меньше ребят чем зарегалось, а мы пиццы поназаказывали :)  
= больше времени на ивент, 3 часа очень мало. 
= попросить кого-то пофоткать в фоне - и фоткать и вести сложно

Если тебе нравится подобный ивент и ты еще не зарегистрирован - регистрируемся тут http://bit.ly/1zzAEtd. Если ты уже зарегистрирован, то обязательно получишь уведомление. Так же у нас на фейсбучике появилась группа https://www.facebook.com/reqdev

Если хочешь провести нечто подобное у себя, вот небольшой чеклист:
за неделю-две:
- выбрать Субботу
- найти помещение (какой-то коворкинг), подойти и договориться, забранировав время. 
- сделать форму регистрации (для сбора контактов - телефона и email) и написать анонсик
- попросить попиарить ивент друзей
- следить за формой регистрации и всем, кто зарегался отправлять email с деталями
- если email не дошел - написать смску, уточнить email
в день ивента:
- купить по дороге соку и стаканчики 
- за час до начала собраться в коворкинге  напарником обсудить адженду
- попросить работников коворкинга собрать денег на входе - чтобы выйти в ноль надо по 100 грн - 50 коворкингу и 50 на пиццы. 
- заказать пиццы на условленное время
- встретить гостей и поклеить их имена на видное место :) очень приятно было, когда ребята обращались к друг другу по имени 
- вступительное слово - сказать, поблагодарить
- дальше по адженде
- немного пофоткать для отчета (или лучше много)
- встретить пиццы и рассчитаться за них
- дальше по адженде
- закрыть ивент, провести гостей
- прибраться 

Спасибо всем за участие! И особенно Лине и Вике. Даже такой небольшой ивентик самому очень сложно без друзей проводить. 


пятница, 21 ноября 2014 г.

"Не рычите на собаку" Карен Прайор

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

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

Конечно же в видео все немного утрировано, а потому продолжим с книгой...
Продолжение следует

среда, 19 ноября 2014 г.

Встреча "Рекрутёры и Программёры" #3

Вот, собираемся. Уже в эту субботу. Регистрируемся тут http://bit.ly/1zzAEtd
Рекрутеры и программисты как две половинки одного целого, только иногда забывают это :) Будем устранять! Для этого и собираемся.
Будет весело, полезно и питательно!

понедельник, 17 ноября 2014 г.

Slidecaster на javascript

Сегодня будем писать слайдкастер. Эту такая штука, которая в браузере позволит совместить слайды с аудио. Вместо того, чтобы писать avisynth скрипт вручную, дергая постоянно virtualdub, я буду загружать весь контент в браузер и мышкой мувать ползунки - где когда какой слайд начать. Удобно - я такую фичу на SlideShare видел. Хочу такую же! Бесплатно и для всех докладчиков.

В начале реализаици любой фичи идет ее декомпозиция на подзадачи, каждая из которых гуглится - т.е. решение можно за 5-10 минут найти в сети и попробовать у себя в интеграции с существущим кодом. Самое первое, что мне приходит в голову - это сделать банальный прогрессбар и научиться управлять им со скрипта. Вперед! Гуглим что-то типа "jquery progressbar" и смотрим что предлагает гугл. И первый же пример мне подходит! берем волшебный copy past driven development и копируем исходник себе в файлик 1.html, оставляя пометку // спасибо за http://jqueryui.com/progressbar/ чтобы не терять связь с автором.

Вот он код. Что я сделал - поменял заголовок. У нас жеж наше приложение. Добавил комментарий и пути к скриптам сделал абсолютными.
<!doctype html>
<-- thanks for http://jqueryui.com/progressbar/ -->
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Slidecaster</title>
    <link rel="stylesheet" href="https://code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
    <script src="https://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
    <script>
        $(function() {
            $( "#progressbar" ).progressbar({
                value: 37
            });
        });
    </script>
</head>
<body> 
    <div id="progressbar"></div>
</body>
</html>
Вот как это выглядит

Сразу после этого я создам git репозиторий в той же папке что и скрипт и отправлю изменения в файловый рай.

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

Задачу так же можно дробить. Для начала просто отрисую поверх прогрессбара дивчик. Потом научусь его мувать. Потом свяжу позицию с состоянием на прогрессбарчике. Вроде как не дробится больше.

Что надо сделать - добавить новый дивчик, задать ему стиль.
<!doctype html>
<!-- thanks for http://jqueryui.com/progressbar/ -->
<html lang="en">
<head>
    ...
    <script>
     ...
    </script>
    <style>
        .move {
            width: 2px;
            height: 40px;
            background-color: black;
            cursor: e-resize;
            position: absolute;
        }
    </style>
</head>
<body> 
    <div id="progressbar"></div>
    <div class="move"></div>
</body>
</html>
Идем дальше. Дивчик надо заставить муваться. Для понимания как это сделать гуглим "jquery drag div" и первая же статья наша. Добавили в скрипт строчку
$(".move").draggable();
Но теперь надо ограничить передвижения дивчика. Как? Гуглим "jquery draggable only x" и первый же ответ stack overflow наш. Добавляем вызов функции draggable один параметр
$(".move").draggable({ axis: "x" });
Еще один маленький штришок - надо сделать чтобы дивчик мувался по прогрессбару а не под ним. Добавим еще одну строчку.
$(".move").css("top", $("#progressbar").position().top - 5);
$(".move").height($("#progressbar").height() + 10);
Как это делается я помню, так как неоднократно делал уже. Но если че загуглить можно было бы по "jquery position get/change". Надо бы сохраниться! И посмотреть как это выглядит.


Следующий шаг - влиять на прогрессбар. И тут начинается самое интересное, поскольку оказывается, что тот прогрессбар, который предоставляется jquery немного не попиксельно перемещается. Вот как-то так изменилась функция.
$(function() {
    $("#progressbar").progressbar({  
        value: 0,  // позицию по умолчанию в ноль - там где и курсор
        max: $("#progressbar").width()     // количество делений прогрессбара такое же как и ширина 
    });
    $(".move").css("top", $("#progressbar").position().top - 5);
    $(".move").height($("#progressbar").height() + 10);
    $(".move").draggable({ axis: "x" }); 
   
    // добавили новый обработчик драга дивчика при его перемещении - меняется и состояние прогрессбара
    var drag = function(event){
        var pos = $(".move").position().left - $('#progressbar').position().left;
        $("#progressbar").progressbar("value", pos);
    };
       $('body').bind('drag', drag);
});
Посмотреть как это выглядит можно по этой линке или ниже в iframe.


Продолжение следует! А пока можешь погуглить в чем дело :)

воскресенье, 16 ноября 2014 г.

Доклад "Айтишник"

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

Изначально у меня было 5 минидокладов на темы, которые меня сейчас драйвят, но любые поделки стремятся собраться в паззл. За 2 часа до доклада я нарисовал первый слайд и дал название презентации - Айтишник. Доклад поможет прояснить в каких напрвлениях, кроме знания технологий стоит развиваться специалисту, чтобы через пару лет в индустрии он мог наслаждаться ее дарами полностью. 

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


Спасибо за твои комменты!

Рисовать просто - у тебя получится

Меня после доклада спрашивали, а как ты научился так рисовать? Камон! Каждый из нас умеет рисовать, но остановился в развитии где-то на уровне 6-летнего ребенка. Спасибо Наташе Трениной и ее тренингу Doodle Time - теперь я продолжил свое развитие в этом направлении у меня уже опыт 7-летнего ребенка. 

Алгоритм простой как двери.  Допустим ты хочешь нарисовать свою презентацию. Допустим слайд номер 5 у тебя - про нетворкинг. 

Делай раз - какое одно-два слова якорят текущий твой слайд? Сеть. Какие ассоциации приходят? Паук. Много мушек. Тут важно, что ассоциация у тебя может быть какой угодно - презентация ведь твоя. Допустим это паутина, а в углу сидит паук...

Делай два - гуглим по этим ключевым словам. Паук + паутина. Только на англиском. Добавляем к этому всему слово "doodle". И смотрим все рисунки, которые находим - что-то должно зцепиться за глаз. Выбираем то, что сами сможем срисовать - не слишком сложное, что-то дял нашего 6-летнего ребенка-художника. Значит гуглим "spider web doodle" в картинках и видим вот что 


Мне понравился вот этот милый паучок. И не сложно и симпатично


Делай три - срисовываем это. Срисовать можно подглядывая. Срисовать можно просто записав на планшет в качестве подложки исходную картинку. Если планшета с гарфическим пером нет, а я рекомендую обзавестись Samsung Galaxy Note Pro 12.2. Можно распечатать на принтере картинку и подложить под чистый листочик A4 - сквозь которого будет виден контур. Но лучше, конечно же срисовать "на глаз" - так больше + к опыту. Планшет же сохраняет все в векторной графике, так что можно рисовать одним цветом а потом разрисовать, нарисовать линию и стереть ее, если неудачная и так далее...


Внимание! Во-первых видео ускорено в 10 раз. Во вторых я пока рисовал раз 80 жмакал Ctrl-Z на планшете - линии выходили неудачные и кривые. То, что рисуется на видео - это лишь удачные штрихи вошедшие в продакшен. Это еще одна классная фича планшета. А вторая его классная фича - это запись того, как я рисую. Но пойдем дальше.

Паучка нарисовал, Теперь можно посмотреть на картинку и решить, чего в ней не хватает. А потому

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

Делай пять - разукрась в цвета. Так же итеративно. По чуть-чуть. Цветовую палитру выбери такой, чтобы от слайда к слайду сформировать у читателя привычку - заголовок синим, основной текст черным, герой зеленым, антигерой красным и так далее... Все на глаз, пока тебе самому не понравится. Можно показать кому-то, но лучше не стоит - поскольку замечаний будет масса - 6-летнего ребенка покритиковать любой может, а вот подбодрить...

Делай шесть - не заморачивайся и быстрее отправляй в продакшен. Если один слайд выглядит неуклюже, то 10 слайдов в том же стиле выглядят как стильная задумка. Просто нафигачь 20 слайдов как нибудь. Потом отложи на день, а после возьми снова в руки исправь детали. После можно сразу в продакшен :)

Делай семь - с презентацией надо выступить. А после выступления обязательно выложить ее в сеть. Если на конференции тебя посмотрели 100 участников, то в сети тебя увидят 1000. Конференция - как способ вытащить из тебя инфу - весь сок в сети.

Как-то так. 

Зачем тебе выступать на конференциях?

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

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

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

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

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

Организатор спрашивает как дела и говорит, что компания с удовольствием компенсирует тебе поездку на конференцию, а так же жилье. Спасибо! Приятно... 

День до доклада. Все перепроверяешь. Дополнить не чем. Да и не стоит уже ничего менять. Просто лечь спать пораньше и выспаться. 

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

1 час до доклада. Вот он мой зал. Вот он какой-то докладчик, который рассказывает что-то. Через один доклад будет мой. Присяду-ка я как все, осмотрюсь. Ребята вроде нормальные, вопросы адекватные. Всячески примеряешь себя на месте докладчика и незаметно растворяешься в то ли его, то ли своем докладе. 

5 минут до доклада. Объявлен перерыв. Большая часть участников вышли. К тебе подошел организатор, нацепил на тебя микрофон - проверка звука. Копирование презенташки с флешки. Хорошо, что я взял дубликат. Проверка презентора - все работает. Вот и люди подтягиваются. Даем им 2 минуты, чтобы собраться.

"Привет Ребята. Меня зовут .........................................................................."

10 минут после доклада. Тебя окружают слушатели. Задают какие-то вопросы. Говорят, что классный доклад. Ты отвечаешь почти на автопилоте, собирая свои вещи. "Где я был все это время?" - кажется меня отключили. Слегка пьянит. Но это нормально - за время доклада из за того, что говорить приходилось громко и много твои легкие перегоняли большее количество кислорода и ты получил небольшую гипервентиляцию - кислорода в крови стало чуть больше и страх куда-то отошел. Случилось это после первых минут доклада и не отпускает до сих пор. Ты не можешь успокоиться, включена передача "Остапа понесло". Но это не волнует. Ни что ты говоришь, ни откуда берешь слова, ответы.  

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

И ты молодец!

Как сделать слайдкаст

Есть аудиозапись доклада в mp3 и есть слайды в формате ppt. Из ppt можно проэкспортить слайды в png/jpeg и дальше с ними мы будем работать. Итого у нас есть папка с файлами доклад.mp3 и Slide1.jpg - Slide20.jpg. Как из них сделать слайдкаст? Слайдкаст - это видеозапись выступления, где слышно докладчика, но видно только его слайды. Slideshare имеет такую фичу в платной версии, но мы жеж умнички? - сами все сделаем (а чуть позже доберутся руки и фичу-намучу). 

Итак. Раньше мы уже проходили avisynth и я надеюсь без особого труда будет его установить на комп и создать в той же папке файлик с расширением 1.avs и содержимым
Внимание! Существует более удобная версия скрипта. Смотрим тут

# грузим в переменную a аудиофайл
a = DirectShowSource("доклад.mp3")

# загрузим первый слайд в переменную i сделав из него видеоряд с частотой 23.976 и длинной 2080 кадров
i = ImageSource("Slide1.jpg", fps=23.976, end=2080)

# так же для второго слайда и так далее
i = i + ImageSource("Slide2.jpg", fps=23.976, end=888)
i = i + ImageSource("Slide3.jpg", fps=23.976, end=1614)
i = i + ImageSource("Slide4.jpg", fps=23.976, end=1733)
i = i + ImageSource("Slide5.jpg", fps=23.976, end=2533)
i = i + ImageSource("Slide6.jpg", fps=23.976, end=1126)
i = i + ImageSource("Slide7.jpg", fps=23.976, end=3953)
i = i + ImageSource("Slide8.jpg", fps=23.976, end=1566)
i = i + ImageSource("Slide9.jpg", fps=23.976, end=2442+1770)
i = i + ImageSource("Slide10.jpg", fps=23.976, end=2000)
i = i + ImageSource("Slide11.jpg", fps=23.976, end=1800)
i = i + ImageSource("Slide12.jpg", fps=23.976, end=1800)
i = i + ImageSource("Slide13.jpg", fps=23.976, end=2240+172)
i = i + ImageSource("Slide14.jpg", fps=23.976, end=29779-27730)
i = i + ImageSource("Slide15.jpg", fps=23.976, end=31942-29779)
i = i + ImageSource("Slide16.jpg", fps=23.976, end=36023-31942)
i = i + ImageSource("Slide17.jpg", fps=23.976, end=39666-36023)
i = i + ImageSource("Slide18.jpg", fps=23.976, end=42056-39666)
i = i + ImageSource("Slide19.jpg", fps=23.976, end=44356-42056)
i = i + ImageSource("Slide20.jpg", fps=23.976, end=49302-44356)
i = i + ImageSource("Slide21.jpg", fps=23.976, end=52906-49302)

# ресайзим слайды
i = i.LanczosResize(764, 480)

# чтобы секономить время слушателя, включаем скорость 150%
a = a.TimeStretch(tempo=150.0)

# и в конце концов смерджим два потока
AudioDub(a, i)

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

Что может смутить в скрипте, так это magic numbers указанные в аргументе параметра end функции ImageSource. Подбирается он вручную (пока) с помощью VirtualDub прослушивая доклад с целью поиска места, где слайд надо переключить. На будущее я хочу сделать либо кликер с возможностью трекать милисекунды когда был переключен слайд, либо сделать такую же фичу, как в SlideShare, где все на драгэндропе.


Пользоваться сторонними сервисами, типа SlideShare программистам я не рекомендую и вот почему. Когда-то я воспользовался этой фичей у SlideShare и даже очень обрадовался что есть такая фича. Запостил в блоге embed и радовался каждому 1000-му просмотру. Но потом slideshare захотел денег и просто изъял видяшку из эфира оставив только ppt. Всю работу похерили - обидно. С тех пор я решил, что весь контент буду хранить у себя на блоге+дропбокс. С ним тоже были проблемы, но после проплаты готового аккаунта все наладилось :) Отвлекся я. Что хотел сказать - если ты программист, то будет любопытно написать свой аналог, который потом сможешь кастомизировать как хочешь. А если выбрал использовать чужой сервис - будь готов к будущим неожиданностям.

Как-то так


пятница, 14 ноября 2014 г.

Как сделать чтобы тренинг приводил к изменениям?

Сегодня получил картинку, не могу не откомментить. 


Все правда, но...

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

Что может помочь?
- фан, игры, а значит безопасность в процессе делания ошибок
- тренер в сторонку, а команда думает и решает сама (хоть так хочется ей помочь)
- цикл Коулба или провести ребят через грабли, на которые ранее наступал тренер
- Эриксоновский гипноз
   - чтобы не говорить того, что помешает ребятам развиваться (фуу...)
   + чтобы говорить ребятам те слова, которые поддержат их в будущем, когда тренера рядом не будет (о, так лучше!) 
- понимание, где и когда инструменты понадобятся в будущем
- искреннее желание тренера помочь группе научиться научиться, а не срубить бабла с трендовой штуки. Желание тренера изменить мир у лучшему.
- фидбек участников и полная переработка тренинга под новую группу (и так раз 5)

Как-то так. 

понедельник, 10 ноября 2014 г.

Лидер в тебе

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

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


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

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

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


(продолжение следует... )
((как тебе новый стиль постов?))

суббота, 8 ноября 2014 г.

Жаренные вареники

"Чтобы вареники точно сварились надо их еще и пожарить" (с) Саня


Один день дома без любимой жены и чуть не спалил кухню :)

А жаренные вареники с картошкой очень мне ням-ням. Еще бы сметанку...

суббота, 1 ноября 2014 г.

Хочешь обрадовать java разработчика? Скопируй ему в c:\windows\system32 java.exe

Вчера битый час долбались с напарником, чтобы понять почему у него джава одной версии, хотя JAVA_HOME + Path указывают на другую.
Оказывается, кто-то установил в c:\windows\system32 джаву. Наверное прошлый владелец компьютера.
Одна хорошая команда помогла.
for %i in (java.exe) do @echo.   %~$PATH:i
В результате она выведет месторасположение первого найденного java.exe
Для linux команда
which java
Как потом вытравить всю джаву из папки c:\windows\system32 ? Перезаписали из jdk/bin все файлы поверх тех, что были в c:\windows\system32 а потом F9-C-C в Far и удалили идентичные.
А ты куда устанавливаешь свою java? :)