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


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

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

Мотивация: Минутка на подумать





понедельник, 24 октября 2011 г.

Java for fun: Змейка с помощью TDD

Привет. Не так давно в стенах КПИ был проведен наш мастер-класс по Test Driven Development подходу. Из обратной связи стало понятно, что ребятам хотелось бы увидеть процесс TDD разработки от начала и до конца. По этой причине было снято следующее видео. Исходники можно качнуть тут - Snake.rar).

Итак задание:
Реализовать модель змейки (игра на тетрисе). Поле квадратное, любых размеров, змейка длинной в 2 пикселя. На поле со старта появляется 1 камень и 1 яблоко, при съедании яблока змейка удлиняется и тут же появляется еще одно. Если повернуться на 180 градусов, то она умирает. Если съесть себя, камень или стенку - змейка умирает.

Чтобы попробовать змейку был реализован так же консольный контроллер + UI. Текущая картинка поля выводится на консоль (в виде символов), управление клавишами A+Enter - влево, D+Enter - вправо, W+Enter - вверх, S+Enter - вниз. Просто Enter - продвинуться еще на один шаг.

На этом видео можно посмотреть пример "игры".


А вот и видео многочасовой разработки (устраивайся по-уютнее, бери попкорн и айда смотреть :))


Реализация:
В основном по TDD. В некоторых местах были допущены некоторые часто допускаемые ошибки TDD, а в результате использован дебаг - сделано это для того, чтобы показать к чему ведет нарушение базовых правил:
- После каждой итерации красный-зеленый-рефакторинг должен происходить commit в svn.
- Рефакторинг всегда по чуть-чуть, но отдельной итерацией.
- RnD в коде с помощью дебагера.
- Правило "чуть что сразу rollback". Если чувствуешь, что куда-то не туда зашел - rollback. Если поломано больше одного теста - rollback. Если итерация занимает более полу часа - rollback. После rollback'а последних изменений текущую задачу стоит пересмотреть и упростить.

В принципе, все эти правила можно и нужно нарушать, но это не рекомендуется делать на начальном этапе привыкания к TDD.

Вторая часть видео - 

причесывание проекта при свежем взгляде на него через пару дней. Так стоит поступать с любым кодом, который собираешься сдать. нет предела совершенству, но как минимум 1 раз улучить свой проект стоит. В этом заплыве я не брезгую дебагом, и как и в прошлый раз вы можете проследить сколько процесс отладки занимает времени. Тут же использую самописные моки (хотя мог и воспользоваться, к примеру, EasyMock фреймворком - не делал это сознательно, чтобы было понятна суть объектов-имитаторов), Inversion of Control и Dependency Injection. Тут же была добавлена новая функциональность и проведен достаточно непростой рефакторинг - тесты помогли сделать это быстро и без ошибок.

Если удивляет время, затрачиваемое на написание этого проекта (9,5 + 3 часа) , стоит учесть что:
1) написать как можно быстрее - не было целью этой демки.
2) в ходе записи демки я слушал музыку а все пояснения писал текстом в редакторе, чего не делал бы в реальном проекте. В общем кодил с учетом того, что это будут потом смотреть.
3) в целях образования были допущены ошибки, которые привели к последующей отладке.
4) разработка велась в ночное время (с 10 и до 7 утра), потому как в дневное у нас работа :)
В любом случае, задача была бы решена не меньше, чем за один рабочий день (~6 часов) в лучшем случае.

Если у тебя другие идеи на этот счет и ты программируешь на javа. Присылай свою версию игрушки. Сильно на UI не отвлекайся, хочется видеть движок игры. Целью было написание модели игры, а в UI я написал то, что пришло в голову. Так же советую и тебе поступить.

Как засекать время - на твое усмотрение. Меня же интересует больше другие показатели:
1) сколько потребуется времени, чтобы добавить новую фичу не поломав старый код.
2) посмотреть качество (читабельность) кода.
3) как быстро можно улучшить структуру кода (рефакторинг), по замечаниям от читателей, не поломав игру.

Все замечания по видео прошу постить в комменты или почтой.

Спасибо.

P/S/ Исходный код пригодился в будущем нам в проекте codenjoy.com - радовало то, что я открыл запылившийся код, запустил тесты и продолжил работу как будь-то бы и не отвлекался...

среда, 19 октября 2011 г.

Двухдневный тренинг "Test Driven Development in Java" 29-30 октября в Киеве

Приглашаем Вас на двухдневный тренинг "Test Driven development in Java", который состоится 29-30 октября (сб., вс.) в Киеве.

На тренинге учащийся:
  • познакомится с основой TDD на проекте «с нуля»,
  • получит навыки улучшения кода в «legacy» проекте,
  • научится пользоваться «мок-фреймфорками»,
  • получит опыт управлением зависимостями при помощи «dependency injection» и написания модульных тестов в многопоточном приложении,
  • поработает в парах по правилам XP,
  • узнает о разных видах тестов: «unit», «functional», «integration»,
  • познакомится с рядом «antipatterns» и «best practices»,
  • узнает, что такое непрерывная интеграция.

C Вами  будут работать тренеры:
Александр Баглай,  молодой и энергичный тренер. За более чем 7 лет в IT зарекомендовал себя как практик eXtremme Programming. В прошлом – разработчик, сейчас активно занимается подготовкой java специалистов для проектов компании. При этом большое внимание уделяет вопросам качества и поддержки кода, вопросам повышения эффективности разработки, «инфицированию» Test Driven Development подходом, рефакторингом Фаулера и философии ООП. Неоднократно проявлял себя в роли XP-coach и Scrum Master в командах, в которых трудился сам. Открыт новым течениям и помогает коллегам обучаться лучшим практикам. В данный момент в компании выполняет роль Java тренера, занят организацией TechTalk’s собраний и новых тренингов. Будучи тренером, не оставил разработку и ежедневно уделяет время внутренним проектам как разработчик.

Сергей Зеленин - более 13 лет в IT. За это время успел пройти все этапы – от рядового разработчика , через лидера команды, в архитекторы. Сейчас консультирует ряд команд по вопросам повышения эффективности разработки и внедрения. Имеет глубокие познания в ООП. С методологией XP знаком лично – в прошлом был опыт работы в XP команде на протяжении двух лет в роли XP-coach. Test Infected разработчик, организовавший внутри компании периодические вебинары по Test Driven Development. Практикующий Scrum Master.

Продолжительность тренинга - 2 дня (16 часов)

Тренинг будет интересен всем, кто хочет научиться применять TDD: разработчикам, ведущим разработчикам, team lead-ам, системным архитекторам с опытом работы с Java от двух лет, с пониманием принципов ООП.

Программа тренинга:

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

Формат  второго дня в точности совпадает с предыдущим, но тема дня – legacy code. Три специально подготовленных практических задания, совместно с «живым» обсуждением результатов. Практики продемонстрируют, как использовать TDD в условиях сложных, запутанных и, вместе с тем, вполне реальных проектов, с которыми каждый из нас имеет дело каждый день. Научимся добавлять новую функциональность в «legacy» код. Получим рекомендации, как превращать «legacy» код в код, о котором мечтает каждый разработчик, – читабельный и покрытый тестами.

Формат тренинга практическо-теоретический, где вся теория построена на вопросах учащихся, возникающих на практических секциях. 1/3 теории, 2/3 практики: все техники и методики рассматриваются на живых примерах. Учащиеся тренируются в парах в группе (макс. размер группы - 14 человек).

От Вас потребуется наличие собственного ноутбука с предустановленным программным обеспечением:
Стоимость тренинга – 1700 грн. Безналичный расчет. При одновременной регистрации и оплате трех и более участников – скидка 10%.

В стоимость, кроме тренинга, входят:
  • обеды (будет заказана пицца)
  • кофебрейки
  • сертификат об участии в тренинге
Расписание на день:
  • 10:00 – начало тренинга
  • 13:00 – 14:00 обеденный перерыв
  • 19:00 – окончание тренинга
Учиться новому будем в г. Киев, ул. Н. Гринченка, 1. Офис компании «GlobalLogic», GL-Club.

Регистрация тут >>> edu@globallogic.com 

вторник, 18 октября 2011 г.

Java for fun: Пришем Android приложение: Простой диалог

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

Чтобы приложение засветилось вот так



Потребовалось в AndroidManifest.xml добавить атрибут android:theme в тег activity.


А потом подшаманить немного с разметкой

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:padding="10dp" 
    android:background="#DAAA" 
    android:orientation="vertical">

    <LinearLayout       
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:orientation="horizontal">

        <ImageView android:id="@+id/image" 
            android:layout_width="wrap_content"
            android:layout_height="fill_parent" 
            android:layout_marginRight="10dp" 
            android:src="@drawable/android3d"/>

        <TextView 
            android:text="@string/relax_message"
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent"
            android:textColor="#FFF" android:layout_gravity="bottom"/>
    </LinearLayout>

    <Button 
        android:text="@string/ok" 
        android:id="@+id/button_ok"
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent"
        android:width="10px"/>
        
</LinearLayout>

Добавить немного строк

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="relax_message">Сходи отдохни, разомнись...</string>
    <string name="app_name">Напоминалка</string>
    <string name="ok">Иду!</string>
</resources>

И в активити добавить обработчик нажатия кнопки

package com.apofig.reminder;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class ReminderMessageActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        closeActivityOnOkButtonClick();  
    }

    private void closeActivityOnOkButtonClick() {
        findViewById(R.id.button_ok).setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                ReminderMessageActivity.this.finish();
            }
        });
    }
}

Добавить рисунок android3d.png в папку res\drawable\

И запустить :)



И не забыть закоммититься! И пойти размяться! :)

Пока все.

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

Java for fun: Пишем приложение на Android: Первый запуск

Привет.Попишем немного под Android.

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

Итак все начинается с установки окружения. Много времени уделять этому не стану - в сети полно мануалов по установке рабочего окружения. Скажу лишь только, что надо установить Eclipse IDE for Java Developers (у меня Indigo), JDK6, Android SDK, плагин ADT для Eclipse. Ну и все. Если будут с этим проблемы - дай знать, и я напишу мануал на эту тему.

Итак окружение же установлено - будем создавать проект. Открываем рабочий workspace в Eclipse (рабочий workspaсe - вот завернул). Создаем там новый Android проект.



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




Некоторые из них автоматически генерируются системой - нам легче :)

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

Посмотрим насколько самодостаточно генерированное Eclipse приложение - запустим его.

Для начала нам надо подключить телефон через USB кабель к компьютеру и настроить его. После подключения телефон предложит (либо нет) выбрать режим подключения


Так же надо сделать доступной отладку через USB


Добраться до этих двух окошек настроек, должно быть не сложно - после подключения телефона к компьютеру на его task bar (или как он там называется) засветятся две иконки.


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


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


Вообще-то при подключении телефона к компьютеру Windows определит новое устройство, и тут надо бы указать драйвер из папки


А драйвер этот скачивается при обновлении AndroidSDK. Для этого запускаем Android SDK and AVD manager


Потом выбираем драйвер и жмем установить


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

Могут быть трудности типа Windows не может найти драйвер, тогда в свойствах нового неизвестного оборудования (телефон без установленного драйвера в Windows Device Manager будет отмечен как устройство с иконкой - желтый вопросительный знак - вот его свойства и надо посмотреть)


Теперь откроем файл android_winusb.inf на редактирование и добавляем туда две строки одинаковые строки в два раздела (код берется из свойств устройства)


После этого Windows должна найти в папке "...\android-sdk-windows\extras\google\usb_driver" драйвер


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

Хух, после этого всего шаманства можно пробовать запустить Android приложение через Eclipse.


Запуск прокатил не с первого раза, но со второго все получилось.


На экране я заметил вот такую картинку.


Кстати, чтобы сделать скриншот с телефона надо запустить "Dalvik Debug Monitor". Делается это просто запуском команды ddms в консоли


Консольное приложение находится в папке с установленной AndroidSDK


И если оно не запустилось, то вероятно в переменных окружения Windows не прописана переменная ANDROID_HOME


+ в переменной Path не указана папка tools


Если все ок, то увидим окно дебаггера, где выберем подключенное устройство + меню Device->Screen Capture.


А дальше сохраним скриншот


Итак наше приложение работает. Но я хотел диалоговое окно с кнопкой OK, а не окно на весь экран. Исправим!

Вот то, что я хочу сделать :) Только чтобы текст был мой, а не какой-то там "Ой! Ошибка!"


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

Кстати вот книга, в которой я подглядел код для создания диалогового окна. Хороша для новичков.

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

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

Java for fun: Что такое Dependency injection, Inversion of Control и почему это возникло. Часть #5

В прошлом посту мы использовали простую фабрику для создания фонарика с уже вставленными батарейками.

Рассмотрим теперь вариант legаcy code, когда у нас в конструкторе фонарика захардкоджен тип батарейки. Очень неприятный момент потому как классы сцеплены между собой жестко. Усугубим его тем фактом, что менять фонарик нельзя (маленькие рефакторинги допустимы, но как и раньше конструктор фонарика должен в себе содержать вызов конструктора батарейки). Заданием нашим будет проверить этот самый фонарик в отрыве от батарейки которую он упорно инстанциирует.

Вот фонарик.

public class SomeFlashlight implements Flashlight {

    private Battery battery;
    private boolean swithOn;
    
    public SomeFlashlight() {
        this.swithOn = false;
        this.battery = new ChinaBattery(); // обратите внимание на эту наглость!
    }
    
    @Override
    public boolean isShines() {
        return (battery != null) && swithOn;
    }

    @Override
    public void swithOn() {
        if (!swithOn && battery != null) {
            swithOn = battery.getVoltage();             
        }            
    }

    @Override
    public void swithOff() {
        swithOn = false;
    }

}

Как его протестировать со другой батарейкой не добавляя никаких конструкторов, не нарушая инкапсуляцию объекта, изменением модификатора доступа поля battery?

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

public class SomeFlashlight implements Flashlight {

    private Battery battery;
    private boolean swithOn;
    
    public SomeFlashlight() {
        this.swithOn = false;
        this.battery = getBattery(); // вот отсюда ...
    }

    // ... вот сюда инкапсулировали мы зависимость.  
    // protected для того, чтобы можно было субклассировать и переопределить этот метод
    protected Battery getBattery() {
        return new ChinaBattery();
    }
    
...

А переопределять будем уже в тесте вот так

public class TestBaterry {

...

    // внимание! это поле теста
    private Battery battery;
 
    // субклассируем SomeFlashlight и переопределяем в нем getBattery
    class MockedSomeFlashlight extends SomeFlashlight {
     
        @Override
        protected Battery getBattery() {
            return battery;
        }
    }
 
    @Test
    public void testDischargeNewBattery() {
        // устанавливаем себе батарейку такую как захотим
        this.battery = new DisposableBattery();

        // и инстанциируем наш субкласс
        MockedSomeFlashlight flashlight = new MockedSomeFlashlight();
        assertFalse(flashlight.isShines());

        flashlight.swithOn();
        assertTrue(flashlight.isShines());

        flashlight.swithOff();
        assertFalse(flashlight.isShines());

        flashlight.swithOn();
        assertFalse(flashlight.isShines());
    }

...

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

Исходники этого примера можно качнуть тут.

воскресенье, 9 октября 2011 г.

How to: Как установить MsDos/Windows 98 без дискетки

Любое до ужаса простое дело о  превращается в ужас, если установить какое-то ограничение. Простой пример - установка Windows 98. Я его устанавливал наверное сотню раз, что говорить, если я запомнил серийник на память J3QQ4-H7H2V-2HCH4-M3HK8-6M8VW. Ну ладно, не я один такой. Так вот, установить Windows 98 я мог буквально с закрытыми глазами - один раз надиктовывал другу по телефону не видя его монитора. Был у меня так же и диск замечательный. Мультизагрузочный. А теперь его нет. А windows надо установить... В общем задача такая - есть чистый винт и на него надо поставить Windows 98. У меня стоит XP. Задача усложняется тем, что а) у меня нет дискеток, чтобы можно было ее сделать загрузочной  б) у меня нет загрузочного раздела с DOS, чтобы можно было оттуда его скопировать в) у меня нет всяких там дисков "реаниматоров" г) у меня есть интернет и я могу выкачать образ, но нет CD болванок чтобы записать его туда. Но выход есть!!!.. В таких необычных условиях учишься новому.

К примеру я узнал (знал я и раньше, но сегодня опробовал), что Nero может записать загрузочный диск с неким DOS (но не MS) - загрузившись с него можно увидеть все диски с NTFS  + все DC/DVD приводы. Знал бы я это раньше...






Оказывается с помощью UltraISO можно записать обычную загрузочную ISO для CD на DVD болванку и потом успешно с нее загрузиться (именно это было решение моей задачи).




Супер! Теперь осталось установить эту Windows 98 :) Чую сегодня ночь будет долгой....

Подборка #53

Шесть самых дурацких вопросов на собеседовании. Мне понравился про недостатки.

Дальше тут...

                                                                                                                                                                                                                        

Немного про женскую логику на лукоморье...
Логика — мужская наука о законах мышления. По мнению женщин, логика является лженаукой, потому что:
1) забыла почему
2) ну и что тут такого?
3) ты меня совсем не любишь!
4) ы-ы-ы (плачет).


или вот!


Учеными создан новый тип процессора, основанный на женской логике.
Процессор обрабатывает четыре логических значения:
1) И да и нет.
2) Ни да ни нет.
3) Тысячу раз нет.
4) Нет, и не проси!
 
Женская логика - это генератор случайных чисел





О да...

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


Или вот...

В любом разговоре, а в споре и подавно, учитывается прежде всего не логическая, а эмоциональная составляющие. Проще говоря, у кого эмоции сильнее, тот и выиграл спор. Даже самая понятная и простая логическая конструкция, произнесенная мужчиной без использования эмоций, пролетит навылет через женскую слуховую дырку голову и ничего там не зацепит. Самое крайнее проявление эмоций — это использование слёз. Беда вот только в том, что по мнению мужчины слёзы — это признак слабости, а вот в глазах женщины слезы — это неоспоримое доказательство своей правоты (кто первый заплакал, тот и прав, а тот, кто не заплакал — это нападающий, который не прав).

                                                                                                                                                                                                                        


“Делай или не делай, не надо пытаться.”


“Страх - это путь на темную сторону. Страх порождает гнев. Гнев приводит к ненависти. Ненависть приводит к страданиям.

 “Вы найдете только то, что отдадите сами."

3 мудрости от Йоды...

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


Вот так вот... Занимайтесь тем, чем занимаетесь!

                                                                                                                                                                                                                        


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


                                                                                                                                                                                                                        


The internet is for porn :))))




                                                                                                                                                                                                                        

Ну вот не знаю, смотрел я на эту стиралку и ржал пока клип не закнчился, вот такая у меня неадекватная реакция на этот ролик




Немного электрических разрядов...







вторник, 4 октября 2011 г.

How to: Как научиться играть на пианино

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

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

В какой-то момент я твердо решил. Хочу и буду! Тут же (что, кстати, очень любопытно) подруга мне предложила свой синтезатор и я стал пробовать. Ютьюб - началось все с него. Там есть множество мануалов для любого уровня. Единственное, что немного смутило, так это то, что каждый играет так как ему нравится. Найти два мануала, в котором учили бы по одним и тем же нотам анриал. Не точная это наука, музыка :)

Случайно нашел вот такой вот мануальчик и влюбился.





Позже стало интересно, что за программа такая? И оказалось, что есть программа, называемая Synthesia и она позволяет такое чудо вытворять из простого MIDI файла.

Вот демка от разработчкиов программы





 А вот как это выглядит на практике


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

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




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

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

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

Мой следующий шаг я опишу в следующем посте "Музыка - это точная наука".

Публикуемся: Фрирайтинг или как решать те вопросы, которые никак не решаются

"Думать о количестве. Думать о генерировании слов. Рассматривать себя как завод по производству слов и мыслей» Марк Леви




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

«Писательство стимулирует мышление, поэтому, даже если вы не знаете, о чем писать, все равно приступайте к писательству» Барбара Файн Клауз  

Читать дальше...