17 февраля 2012 г.

Английский - это сложно?

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

Ребенок года в 4 уже может вполне сносно объясняться и слушать. Я по-английски, может знаю раза в полтора больше него (слов), но я не могу так складно и быстро строить предложения. К чему это я? К тому что, 4 года взрослому человеку (на самом деле 6 месяцев, если с погружением) достаточно, чтобы научится свободно излагать любые мысли.

При изучении языка есть 4 направления:
     1. Чтение
    Сначала нужно много читать, лучше начиная с адаптированных версий и детских книг. Главная ошибка - читают что-то неинтересное или уже ранее прочитанное на своем языке. Это путь в никуда. Таким образом снижается интерес и как следствие - мотивация.
    Благодаря чтению развивается лексический запас. Также следует посмотреть в сторону профессиональной литературы (ну в своей области). Подобная литература сильно проще живого английского. Используются одни и те же простые грамматические конструкции, ограничен набор используемых слов.


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

     3. Письменная речь
    И только на этапе письменной речи нужно всерьез браться за грамматику. Просто вызубрить её и всё. Других способов нет.

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

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

     4. Устная речь
    Самое сложное – устная речь. Сложность в том, что нужно ставить произношение. Здесь без преподавателя не обойтись.

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

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

    Естественно, разделение не обязательно такое явное, можно смешивать.



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

    P.S. Материалы, которыми я в данный момент пользуюсь:

    16 февраля 2012 г.

    Религия Mercurial

    Обращение к новообращенному)

    Вряд ли ты ранее работал с системами контроля версий.

    Терминология:

    Репозиторий (Repository)
    Папка с вложенной папкой .hg, в которой хранится вся история проекта за все время. Все репозитории равнозначны в распределенных системах контроля версий (Mercurial, Git)
    Центральный репозиторий
    репозиторий, который принято считать центральным, на который обычно отсылают локальные изменения.
    Локальный репозиторий
    репозиторий проекта у тебя на компе.
    Коммит (Commit)
    снапшот текущего состояния файлов в локальный репозиторий, сейв.
    Ревизия (Revision, rev)
    результат коммита, имеет номер и уникальный хеш. Номер иногда может не совпадать, поэтому особо на него не расчитывай
    Пуш (Push)
    отсылка всех локальных ревизий на центральный сервер
    Бранч (Branch)
    ветка кода. Может идти отдельно, параллельно другой ветке. Как правило все бранчи равнозначны. Обычно ветка образуется, когда несколько человек работают над проектом. Бранчи - вещь очень мощная и меркуриал отлично с ними работает. Ничего специально делать не нужно, они создаются сами.
    Мержинг (Merge)
    Процесс слияния веток. Делается вручную, когда возникает необходимость слить изменения с другим разработчиком.
    Конфликт (Conflict)
    при совместном редактировании одной и той же строки или части файла двумя людьми, система не может определить, какой считать правильным. Такие ситуации решаются вручную с помощью инструментов сравнения. При правильном подходе возникает крайне редко. Обычно конфликты решаются автоматически.
    Пул (Pull)
    загрузка появившихся ревизий с центрального репозитория.
    Апдейт (Update)
    переключение между ревизиями. В один момент времени активным может быть только одна ревизия, либо последняя "Working Directory"

    Прими пару рекомендаций:

    1. Коммить локально после закрытия бага или выполнения таска. Ну или в любой ситуации, где, как в играх, хочется сохраниться.
    2. В конце дня, если последний коммит был удачным - пуш его в центральный репозиторий.
    3. Главное правило - все коммиты, и локальные и, тем более последний в пуше - ОБЯЗАТЕЛЬНО должны собираться и сильно желательно - запускаться и работать.
    4. Иногда возникает необходимость закоммититься локально, но проект не собирается. Тогда нужно это обязательно указать в комментарии к коммиту, типа: "Не собирается сборка такая-то, на ревизию не обновляться"
    5. К любому коммиту должен быть осмысленный комментарий, желательно с номером закрытого таска (или нескольких мелких). Такой, чтобы любой человек, работающий над проектом смог понять, что это за коммит. Первая строка в комментарии самая важная, старайся в ней отразить главный смысл. Последующие строки, если они потребуются, могут раскрывать суть более подробно.
    Во имя репозитория, коммита и корректного мержа, Аминь!

    11 февраля 2012 г.

    Старт проекта "Умная библиотека"

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

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

    Пока ТЗ не составлено, но в целом программа будет в виде веб-службы и клиента на ExtJS4.

    При разработке будем стараться использовать самые "правильные" технологии и подходы к проектированию. TDD, DDD, XP и прочие страшные слова.

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

    Цель проекта - прокачка скилов и получение опыта разработки на всех слоях и этапах.

    Адрес проекта : https://code.google.com/p/smart-library/