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


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

среда, 31 декабря 2014 г.

Все вопросы по java/j2ee, что ты хотел спросить, собранные в одном месте

Решил рефрешнуть в памяти свои знания по java. Для этого есть классная подборка 400+ вопросов на собеседовании для молодого и не очень java бойца. Называется работа "Java/J2EE Job Interview Companion" автора  Arulkumaran Kumaraswamipillai


Вчера прочел первых 30 страниц. Пока все очень даже ок! Сегодня еще 30.

А как ты готовишься к собеседованиям на java проект?

ПриЁм

среда, 24 декабря 2014 г.

THX-1138

...составьте список прямо сейчас. Каждую мечту. Я хочу быть автором бестселлеров. Я хочу уменьшить свои материальные потребности. Я хочу освободиться от многих неприятностей, жертвами которых я был всю жизнь. Я хочу быть здоровым. Я хочу помочь всем людям вокруг меня или людям, которые приходят в мою жизнь. Я хочу чтобы все, что я делаю, было источником помощи для людей. Я хочу быть рядом только с теми людьми, которых я люблю и которые любят меня. Я хочу иметь время для самого себя.ЭТО НЕ ЦЕЛИ. Это установки. Что мне нужно делать каждый день, чтобы практиковаться следовать этим установкам? Это начинается в тот момент, когда я просыпаюсь: «Кому я могу помочь сегодня?» Спрашиваю я темноту, когда открываю глаза. «Кому бы вы хотели, чтобы я помог сегодня?» Я секретный агент, и я жду своего задания. Готов к приему. Вот как Вы делаете детские шажочки. Вот как Вы, в конечном счете, прибежите к свободе...
Дальше читать сюда. А еще собираюсь посмотреть фильм Джорджа Лукаса про THX-1138, который стремился на свободу. Фильм конечно на любителя, но вот


Какие фильмы порекомендуешь? Что смотрел на тему освобождения от оков системы?

ПриЁм

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

TED Jane McGonigal: Gaming can make a better world

Блин, я каждый день убеждаюсь в том, что есть Вселенский Админ, который видит наши мысли и посылает нам то, что больше всего сейчас надо. Недавно я только писал про то, как в варкрафт играл в психотерапевтических целях, а тут такое. Доклад TED Jane McGonigal: Gaming can make a better world. Смотрим и удивляемся. 


Конспект:

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

Почему мы успешнее в играх, чем в реальной жизни? В чем отличия игры World of Warcraft от реальной жизни, что там возможны эпические победы?

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

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

Всегда есть вдохновляющая история, зачем это все.

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

Все  игроки Мира Варкрафта уже потратили 5,93 миллиона лет на решение виртуальных проблем Азерота. А это соизмеримо с переходом человека из каменного века.

К 21 году, молодой человек в развитой стране проводит за играми 10 000 часов, это столько же сколько он отсидит в школе с 5го по 12й класс и столько же, сколько надо времени, чтобы стать виртуозом в любом деле. Учится он там тому, как стать хорошим геймером.

Так в чем геймеры становятся виртуозами?

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

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

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

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

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

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

Когда-то давно игры были придуманы для того, чтобы избежать голода. Еды не хватало и правитель придумал играть в кости. 1 день люди ели, а другой играли в кости, отвклекаясь от чувства голода. И так они прожили 18 лет. Сейчас мы так же используем игру, чтобы убежать от реальности - мы используем игры, чтобы отвлечься от всего, что не так. Но то что случилось дальше врет все шаблоны - по Геродоту после 18 лет голода страна разделилась на два лагеря, и решили, что тот, кто выиграет на этот раз в кости - пойдет искать себе новую землю для жизни. Половина населения снялась и пошла искать новый мир. Сейчас то же делает варкрафт - ему уже 16 лет...

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

Что думаешь? Поделись

ПриЁм

воскресенье, 21 декабря 2014 г.

Секреты гейм-девелопмента: 47 игровых механик

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

Достижения /Achievement
Определение: Виртуальное или материальное выражение результата выполнения действия. Достижения часто рассматриваются как награда, либо сами по себе
Пример: Медаль, уровень, вознаграждение, очки... наградой будет все, что может считаться таковой.
Механика назначенной встречи / Appointment Dynamic
Определение: Механика, в которой, для достижения успеха, нужно вернуться в игру в определенное время для совершения некоего действия. Механика назначенной встречи зачастую тесно связана с интервальным графиком вознаграждений или механикой избегания (читай ниже).
Пример: Cafe World и Farmville, в которые нужно возвращаться в назначенное время, чтобы сделать что-то хорошее, а если этого не сделать – случится что-то плохое.
Избегание / Avoidance
Определение: Акт стимулирования игрока не наградой, а избеганием наказания. Помогает поддерживать постоянный уровень активности согласно задуманному разработчиком расписанию.
Пример: Нажимайте рычаг каждые 30 секунд во избежание шокового удара.

И так 47 советов! Читаем дальше тут

А какой опыт геймификации у тебя?

ПриЁм

суббота, 20 декабря 2014 г.

Рисовал бэймакса

Скорее срисовывал. Рисовал на обоях :) У нас дома это можно.


Вот просыпаешься утром, на на тебя Беймакс смотрит :)

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

Оригинал взят тут


Спасибо!

пятница, 19 декабря 2014 г.

Варкрафт инсайт

Решил чуть отвлечься и нашел себе Warcraft II. Всю ночь в него играл.


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

Может для кого-то это будет банальным, но меня торкнуло во время игры. Для нормальной полноценной игры, когда ресурсы добываются, оборона держится, контролы атакующих пробивают защиту, заводы работают на апгрейды надо около 50 юнитов. Если юнитов меньше 10, то тут только о первичном сборе материлов можно говорить и волноваться, а не вынесут ли. А теперь во всем этом какая моя роль? Я же не бегаю сам по карте на белом коне, сам добывю золото, сам рублю лес, сам воюю и строю здания? Никак нет. Я даже по полю не бегаю - а сижу наполовину укутанный в одеяло и нажимаю кнопавки клавиатуры. Руковожу в общем. Да переживаю. Да провтыкиваю иногда. Но юниты мне верят и идет в бой. Я выкладываюсь по полной, но не бегаю по полю с языком за плечами. 

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

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


Спасибо Салава, спасибо WarCraft II.

Кстати пару рекомендаций из своей копилки по делегированию:
- Если что-то становится рутиной и кушает много времени, а автоматизировать не получается (а так ли это на самом деле?) напиши job description, распечатай его и положи на стол - кандидат найдется. Может он и автоматизирует? Обычно таски, которые уже приелись лучше делаются новичками - у них там чаще прорыв случается.
- Предлагай поработать за опыт. Волонтерство в наше время в айти очень даже ничего работает. Ребята устроены, имею неплохие зарплаты, а дополнительные опции рядом с твоим делом у них нет, а у тебя пока денег нет :) Вот и договоритесь.
- Если к тебе кто-то обращается с советом что-то исправить, улучшить или дополнить - смело предлагай ему эту задачу. Скорее всего он согласится, потому как идея-то его.
- Делегируй не таску, а ответственность за какое-то целое направление, чтобы человек себя там чувствовал боссом и придумавыл сам себе задачи. А микроменеджмент выкинь на помойку. За всеми не проследишь, только за мотивируешь ребят не работать с тобой.
- О факапах сообщай как о фактах, которые есть в системе, а не о том, что кто-то налажал. А может даже не стоит их озвучивать - момент, когда случился факап не самое подходящее время чтобы проводить ретроспективу. Может быть как-нибудь в будущем, или никогда.
- И вообще рисуй чаще у ребят в голове успех. Каждый хочет сделать свою работу как можно лучше!
- Не лезь с советом, погоди, пока не спросят тебя "а как лучше?" вот тогда и говори, если знаешь. Лидеры выжидают подходящего момента тогда, когда к ним обращаются.

Наверное есть еще 100500 других ркомендаций, но это первое, что пришло в голову, что уже удалось попробовать и что работает.

А как делегируешь ты?
В какие игры играешь, чтобы расслабиться?

ПриЁм

Как выучить java?

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

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

Рекомендации перед стартом по мотивам коучинга других стартующих джава тренинг
Книги:
Мотивирующие доклады - что ждет в компании и как готовиться к этому:
Описание моей программы Java Basic для тех, кто хочет сам менторить или же трейниться.

Процесс, который я рекомендую для менторинга учащегося, как я его называю пинг-понг - минимум времени ментора, максимум пользы трейни.

Пока это все, но дока будет расширяться.

Какие рекомендации новичкам можешь добавить?

ПриЁм

Программа Java Basic

Эту программу я оттачивал на нескольких группах - это ее 5 редакция. Спешу поделиться с теми, кто хочет запускать java тренинг у себя но не знает с чего начать. После java basic хорошо бы углубляться в enterprise мир и набивать шишки с тем же приложением но подключая к нему все более сложные технологии, выводя его в Web.

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

Тренинг состоит из модулей: каждый из которых имеет свою роль и цель.
  • Java Basics 3 дня
    Установим окружение, необходимое для программирование на java. Напишем 4 несложных консольных приложения. Ознакомимся с языковыми конструкциями, используемыми на java. Ознакомимся со средствами для командной работы с кодом (SVN). Получим обратную связь от ментора в виде code review замечаний.

  • OOP Basics 5 дней
    Смоделируем любую выбранную Трейни систему (по-умолчанию это университет) в терминах объектно-ориентированного программирования. Практически овладеем основными понятиями OOP: инкапсуляция, наследование, полиморфизм, интерфейс, агрегация, композиция, абстрактный класс, метод, поле и многие другие. Модель будет представлена в виде UML диаграммы для демонстрации ее коллегам и ментору. Много code review. Много новых терминов. Будем ломать привычки процедурного стиля программирования. Все это позволит научиться думать объектами и абстрагироваться от деталей. Задание будет сформулировано в виде нескольких user stories, отвечающих на вопрос - что я как пользователь будущей системы смогу сделать.

  • Т.к. модель уже готова, то стоит зафиксировать ее в том рабочем состоянии, в котором она находится. Мы научимся дополнять рабочий код таким образом, чтобы он стал самотестирующимся. В этом нам поможет библиотека jUnit. Что такое тест? Как сделать так, чтобы одним кликом можно было сказать, система работает или нет? Как справляться со стрессом в процессе разработки? Все это мы разберем в этом модуле.

  • Если в прошлом модуле мы использовали массивы для агрегации множества однотипных объектов, то теперь мы познакомимся с разными способами хранения информации - Collection, List, Set, Map,... Тесты, написанные в прошлом модуле позволят нам не бояться, что что-то будет поломано - конечный пользователь не заметит перемен. Это называется рефакторинг! Безопасный рефакторинг имеет свои правила. Научимся и этому. Код модели станет чище, более ООП.

  • Немного отвлечемся от нашей модели и углубимся в качественно новый процесс разработки TDD. Если мы раньше писали тест после того как была написана функциональность, то сейчас мы будем писать требование в виде теста до того, как эта функциональность появится. Это перевернет все с ног на голову. Кто-то называет этот способ разработки - программирование для домохозяек - так он упрощает будни программиста. Но на самом деле все не так просто, требуется немало сил, чтобы сломать старые привычки. Это мы и начнем делать. Бинарное сортированное дерево будет нашим подопытным кроликом - в процессе его разработки мы испытаем процесс TDD на себе.

  • После того, как дерево будет реализовано, мы разберем по косточкам наши тесты (функциональные) и выделим ряд их недостатков, а так же рассмотрим альтернативу - тесты модульные. Сделаем ряд превращений нашего дерева так, чтобы было возможным unit тестирование и воспользуемся Mockito фреймворком для написания настоящих! unit тестов. Теперь мы можем вернуться к нашей модели с багажом новых инструментов. В дальнейшем вся твоя разработка будет происходить через TDD с написанием unit тестов.

  • Error handling 3 дня
    Если раньше модель работала в режиме приема идеальных данных, то теперь мы изрядно постараемся и будем передавать на всех все, что только можно передать. Конечно, модель будет вести себя не предсказуемо, а потому мы воспользуемся мощным инструментом, который присутствует в Java наряду с OOP - Exception Handling. Поймем, что такое checked/unchecked exception, что такое error, как обрабатывать исключения (и надо ли вообще) и многое другое. Как это отразится на модели? А ней будет реализована защита от дурака.

  • Java Input/Output 5 дней
    Чтобы наша моделька была полезной - она должна уметь сохранять свое состояние. В качестве альтернативы базе данных мы будем использовать плоские файлы. Как проводить чтение, как проводить запись, множество разных классов для для всевозможных способов чтения/записи - запутаться можно. Но тем не менее мы научимся выбирать именно те классы, которые нам нужны.

А что бы ты хотел добавить в этот план?
Что еще надо знать новичку, изучающем у java?

ПриЁм

четверг, 18 декабря 2014 г.

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

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


А как ты относишься к своему Завтра, Вчера, Сегодня?

ПриЁм

Теликотерапия

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

А еще на этот клип попал. 


Встречал такой эффект, когда что-то пытается до тебя достучаться через других людей?

ПриЁм

вторник, 16 декабря 2014 г.

Мусор в голове


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

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

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

А как ты расчищаешь свои завалы?

ПриЁм

пятница, 12 декабря 2014 г.

Collapse codenjoy уже в эту субботу

Кстати, я жеж был в Одессе на прошлые выходные. Java/Scala Lab. Готовил туда доклад и Codenjoy collapse. Ее я в экспрессе, пока ехал в Одессу наваял за 6 часов.


Правила игры описаны тут.
Попрактиковаться можно вот тут.
Собираемся в эту субботу поиграть.
Если интересует - добавляйся ко мне в скайп.

Какую следующую игрульку ты бы предложил??

ПриЁм

TDD c tetris codenjoy

Вот нашел в складках гугла :) Старое, наше с Серегой Зелениным выступление


Может кому пригодится :)

Что думаешь про TDD? Практикуешь? Хотел бы научиться?

ПриЁм

16 интервью за день

Собеседуем ребят на Java тренинг по GoJava в GoIT. Позавчера у меня было 16 собеседований подряд. Вчера еще 8. 40 минут на каждого гостя. Это даже не собеседования, а консультации. Так, разговаривая с человеком я интересовался несколькими вещами, чтобы понимать будет ли ему комфортно в нашей компании в качестве учащегося, попутно отвечая на любые его вопросы. 

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

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


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

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

А как ты относишься к интервью?
Сколько их у тебя было?
Сколько ты сам проводил?

ПриЁм

Учимся рисовать Спансчоба

Вот класснючий сайт с большой базой рисовалок. От простого к сложному. Я вот за 10 минут нарисовал спанчбоба )


Даже круче, чем в оригинале получился :)

Рисовать просто, если рисовать...

воскресенье, 7 декабря 2014 г.

Максим Дорофеев

Вчера говорил доклад айтишник в Одессе на Java/Scala Lab. И после доклада мне порекомендовали блог Максима Дорофеева. Вот уже воскресенье, мы собрались в онлайне поиграть в Codenjoy collapse а параллельно я слушаю доклад Максима о том, что не стоит делать несколько дел параллельно :)


Так же рекомендую блог Максима

суббота, 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? :)

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

Придумки для айтишников - ITTV

Сейчас работаю в команде с одним чудным генератором идей Владом. Так вот он говорит, бери что-то рабочее с одного домена и тащи в свой. И вот вчера, после игры в Loderunner, естественно было афтерпати и мы с другим моим другом Димой общались обо всяком около-айтишном. И тут пришла идея - а что, если сделать в айти телевидение? В голове сразу зажужжало ITTV, ITTV, ITTV... До вечера успокоиться я уже не мог. Почему?

Этого не делал никто пока. Делают всякие конференции, вебинары, заливают всякие видяшки на ютьюб, обзоры, но чтобы онлайн трансляцию фултайм - такого не встречал. Есть подксты, и радиостанции, это ближе, но как бы тоже не то. Картинки нет. Возьмем например громадське, я не от одного айтишника слышу, что он регулярно донейтит им. Почему бы не сделать то же самое для айтишников? В айти каждый день что-то происходит. Посмотреть только на календарик ДОУ. Не в одном городе - так в другом. И тут причина нумбер ту. 

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


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

Посмотрим...

Жаль домен занят :)

суббота, 25 октября 2014 г.

Как отключить экранную заставку Windows?

Сидим с ребятами играемся в Loderunner. На проекторе один из ноутов вещает игру. Ноут корпоративный с полиси - по таймауту каждые 15 минут включать экранную заставку - отключить никак. Мне приходится вставать и дергать мышкой каждые ~10 минут. Задолбало.Придумал себе квест - из подручных средств автоматизировать этот процесс. 

Дано: 
- ноут с вредной виндой
- бумажка
- мышка
- пластилин/жевачка/много козявок с носа


Подсказка. Мышка оптическая. Кулер ноута дует. 

Enjoy :)

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

Хиппи-мобиль

Хочу такой :)

четверг, 23 октября 2014 г.

Бесплатный java профайлинг

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

Подсчитать, сколько времени выполняется блок кода 
public void someMethod() {
    long time = Calendar.getInstance().getTime().getTime();
    // ... some code ...           
    System.out.println(Calendar.getInstance().getTime().getTime() - time + "ms");
}
Подсчитать сколько раз выполняется метод
public static long count = 0;

public void someMethod() {
    if (count++ % 10000 == 0) System.out.print("+");
    // ... some code ...
}
Подсчитать, кто сколько раз (в каком контексте) вызывал этот метод
public static Map<String, Integer> count = new HashMap<String, Integer>();

public void someMethod() {
    Map<Thread, StackTraceElement[]> traces = Thread.getAllStackTraces();
    for (StackTraceElement[] list : traces.values()) {
        if (list.length == 0) continue;
        boolean mine = list[0].getMethodName().equals("dumpThreads");
        if (!mine) continue;
        StringBuilder builder = new StringBuilder();
        for (StackTraceElement el : list) {
            if (el.getFileName().equals("Thread.java")) continue;
            builder.append(el.getClassName()).append(".")
                    .append(el.getMethodName()).append("():")
                    .append(el.getLineNumber()).append("\n");
        }
        String id = builder.toString() ;
        int n = 0;
        if (count.containsKey(id)) {
            n = count.get(id) + 1;
        }
        count.put(id, n);
    }
    if (count.size() % 10000 == 0) System.out.println(count.toString());
 
    // ... some code ...
}
Тут константа 10000 подбирается вручную, в зависимости от общего количество вызовов в секунду. У меня их очень дофига.
Пользуясь этими тремя методами я увеличил производительность в 300 раз. По хорошему их бы в класс отдельный выделить и повторно использовать. Но то уже потом как-то...