yatsukav
yatsukav
[dev.log]
95 posts
Don't wanna be here? Send us removal request.
yatsukav · 5 years ago
Text
Хакатон Яндекса: когда всё пошло не так
Tumblr media
Примерно за неделю до события бывший коллега скинул вот такую ссылочку: https://vk.com/wall-17796776_8037 и спросил хочет ли кто пойти? Ознакомившись с условиями я понял, что:
потеряю 1 выходной, а не два;
не требуются какие-то узкоспециализированные знания, типа определение событий на видео;
достаточно написать небольшой сервис, чтобы иметь шансы на победу;
ещё ни разу не участвовал в хакатонах и мне интересно как это;
уже ответил “идём”.
На том и порешили.
Добираться в центр Москвы всегда челлендж: никогда не знаешь сколько займёт дорога. В день икс я, как обычно, не угадал и приехал на час раньше. Сотрудник Яндекса провёл в какой-то подвал с пластиковыми партами и бананами на столе у входа. Предложил повесить куртку в гардеробе после чего ушёл встречать других участников. Из гардероба меня выгнала кофе-леди со словами: “это только для детей.” Не со всеми столами рядом стояли розетки и я обрадовался, что пришёл одним из первых. Так как оставалось около часа до начала мероприятия, то можно было успеть подготовить план работ на 2+ человек в виде мини презентации по разработке сервиса поиска рецептов.
Хакатон начался с презентации от разработчиков Алисы. Нам показали на чём можно разрабатывать сервисы, что такое грамматики, как их писать, где хранить данные, ожидаемый опыт пользователя от общения с сервисом. Дали доступ к закрытому API. Перерыв на туалет и 15 минут для объявлений от участников: получение фидбека на свои идеи, поиск людей в команду.
Начали кодить. Я взял на себя задачу сбора данных, а коллега писал фронт для общения с пользователями и формирования запроса к БД. Первая пара часов прошла молча. Когда скраппер был закончен, то сразу стал обкачивать сайт с рецептами. Через пару минут в консоли посыпались стектрейсы — бан. Пришлось подключиться к VPN, включить fake_useragent и добавить секундный crawl delay. Дело пошло, хоть и медленно.
Примерно через час отказала база данных. Она не принимала никаких внешних и внутренних сигналов. Подключение по ssh занимало минуты. Это никак не тянуло на разрешённые 3 секунды тайм-аута. Наверное, зря я понадеялся, что MongoDB на VPS за 30 руб/мес хватит для простого сервиса. Вспомнил, что в Mongo MLAB есть FreeTier на 500 мб: зарегистрировался, ввёл IP 0.0.0.0 в whitelist и не смог подключиться из моего JupyterLab. Пришлось задействовать административный ресурс: нам в компании дают виртуальные тачки под свои некоммерческие цели. Некогда было настраивать авторизацию, поэтому свежеустановленная монга открылась миру. Ситуацию скрасил факт, что при обкачке я сохранял данные одновременно в две бд: удалённую (vps, для навыка) и локальную (docker, для резервирования). В три команды я сделал дамп, отправил его на новый сервер и восстановил базу. Выдохнул и налил чаю.
Tumblr media
Коллега стал тестироваться на реальных данных. И тут произошёл новый факап: я не применил функцию lower() к ингредиентам. В итоге, в базе были и “Яблоко” и “яблоко” и всё это разные сущности. Я стал штудировать документацию и Гугл запросами вида “mongo lower elements in array”. Ничего. Пусто. Были какие-то куски кода на stack overflow со встроенными функциями для node.js, но я понятия не имел, как их заюзать в питоне. Перекачивать сайт не было смысла: с таким crawl delay это займёт более часа. Стоило просто считать все данные и перезаписать их заново, но время подходило к концу и я об этом не думал. Коллега предложил делать capitalize на ингредиентах: так мы потерям в полноте, но будет хоть какая-то выдача. Сойдёт.
Начали изучать выдачу. Ни одного блюда с яйцами на завтрак не оказалось. Надо было изначально искать сайты с простыми рецептами. Уже ничего не поделать. Я открыл Compass и вручную стал просматривать все записи в поисках более/менее простых описаний, чтобы хоть что-то показать на презентации. Волосы на голове медленно поползли вверх. Почти вся база нечитаема: много пропусков, у некоторых слов нет начала или окончания. В итоге, надо было найти не только несколько простых рецептов, но и их текст должен был быть хоть сколько нибудь осмысленным. И я нашёл спасительный банановый смузи.
Tumblr media
После небольшой отладки и хардкода мы удовлетворились результатом. Наступила фаза тестирования на проде. Загрузили код в Яндекс.ОблачныеФункции. Посыпались ошибки от Алисы. Нет нужных библиотек. Организаторы сказали, что Яндекс не умеет в питоновские пакеты: их надо собирать в архив и заливать на сервер самостоятельно. Оооок.
Ошибки на этом не исчезли. Я вспомнил про ограничение в 1кб отправляемых данных. Коллега говорит: “Да неее, это не реально. Не может быть, чтобы здесь текста было больше килобайта.” Сохраняем рецепт на диск, wc -c recipe.txt, 2 килобайта. Как ты мог подвести меня, банановый смузи?
В голове посыпались варианты: разбивать на предложения, добавить переходы “назад”, “повтори”, “далее”. Почему-то вариант просто выдавать название блюда по ингредиентам казался недостойным. В этот момент объявляют, что до конца хакатона осталось 10 минут.
Оставшееся время ушло на причесывание исходников. Я с удовольствием посмотрел презентацию ребят. Целых 22 новых навыка для Алисы. Их отсняли и выложили в чат телеграм.
Послесловие
Хакатон — это весело. Воздух наполнен множеством идей. Ты погружаешься с головой в кодинг, результаты которого сможешь увидеть через несколько часов. Вокруг много людей, которые делают не менее интересные штуки и на них посмотреть чуть ли не желаннее, чем на собственный труд. В работе присутствует эффект домино: одна неверная ошибка наслаивается на другую и это всё может привести к тому, что проект не будет завершен. Чтобы сгладить этот эффект лучше готовиться заранее: составить подробный план, подготовить инфраструктуру, найти нужные библиотеки, ознакомиться с документацией, написать базовые классы и инструментарий. Звучит не честно, но по-другому никак. А самое главное — быть готовым снизить запланированный уровень/фичи проекта вплоть до самого примитивного. Написать хоть что-то всегда лучше, чем не сделать ничего. Хакатон — место, где презентуют рабочие протипы, проверяя их жизнеспособность и востребованность. И, если ты увидел в нём интерес (свой или чужой), то уже после можно дописать.
Tumblr media
1 note · View note
yatsukav · 5 years ago
Text
Итоги 2019
Tumblr media
Подвожу личные итоги 2019 года.
О работе
Переход в Поиск@Mail.Ru для меня стал настоящим испытанием:
Java собирается CMake.
SVN с 30 гб кода и данных.
Отсутствует практика код-ревью, docs-as-code, написание теста на каждый фикс.
Полный хаос в плане коммитов: нормально, что история усеяна однострочниками с именем коммита типа «fix».
Отсутствие хоть сколько-нибудь внятной или актуальной документации.
Классы, размером в тысячи строк кода и вложенными классами.
Методы, размером в сотни строк кода, множеством эффектов и глубиной.
Надо проверять каждый вызываемый метод, так как даже банальный toString() может поменять внутренние флаги объекта.
Тесты проверяют тысячи строк кода, включая вызовы JNI-методов. Если тест упал, то можно проклясть судьбу, пытаясь разобраться в иерархии классов и понять, почему так происходит.
Входные и выходные данные тестов никак не намекают на какую-либо внутреннюю связь.
Ты пишешь код, а через несколько дней снова не разбираешься, что происходит, так как его уже изменили коллеги.
Процесс релиза содержит ~20 шагов, которые все держат в голове. Коллеги вообще всё держат в голове.
Никто не автоматизирует процессы и не волнуется о качестве кода.
Центральная таблица с данными имеет более сотни колонок и нет никакой возможности узнать о природе данных и их взаимосвязи.
Руководство хочет результатов вчера, хотя от твоей работы не сильно что-то зависит: система рабочая и из задач только доведение её до совершества. Складывается ощущение, что тебе не доверяют.
Это давило морально. Каждый день убеждал себя, что всё так лишь из-за того, что я плохо разбираюсь в проекте и прикладной области. Я поставил себе цель в 1 год работы в компании: если, по истечению этого срока, моё мнение не изменится, значит мне нечего здесь делать, так как мои культура и подход к работе не соответствуют этой позиции. Обиднее всего было то, что меня окружали настоящие профессионалы. На каждого из коллег я мог полностью положиться: это люди с богатым опытом и глубокой экспертизой, которые с радостью делились со мной знаниями.
Когда пришло поздравительное напоминание, я понял, что ничего не изменилось — ни внутри, ни снаружи. А значит, не изменится ни во второй, ни в третий год работы, и, возможно, кто-то на моём месте будет полезнее проекту. Жаль. Мне хотелось продолжать, но переживания могут привести к выгоранию или токсичности в отношении коллектива и руководства. Я попросил обратной связи с начальником и пошло-поехало...
Параллельно, увидел должность разработчика в Одноклассниках в отдел Data Mining с требованием к знаниям алгоритмов машинного обучения. Связавшись с их HR, я узнал что это команда Димы Бугайченко. Именно его доклады привели меня в Mail.Ru Group. Мы встретились обговорить эту вакансию. Разговор вышел однобокий: всё отведённое время я спрашивал о их бизнес-процессах, код ревью, документации, мониторинге, инфраструктуре, применяемых алгоритмах и многом другом. Почему-то мне не задали ни одного вопроса и сразу согласились устроить мой переход.
Так, 11 октября, я оказался в ОК. Мои первые задачи чисто инфраструктурные — развёртывание Apache Airflow и переход с Ant на Gradle. И пока это не сильно отличается от задач в Поиске. Вообще, уже почти полтора года как я не программирую, а занимаюсь развёртыванием инфраструктуры, конфигурированием, небольшими фиксами в коде, написанию скриптов на bash, awk и python. Я чувствую, что продолжаю терять свою квалификацию. Но новые коллеги убеждают, что у меня будет возможность разрабатывать новые системы. Они, кстати, оказались настоящими душками: не только хардкорные специалисты, но и с первого дня оказывают мне больше доверия и дружественности. Всё-таки, Mail.Ru Group — удивительная компания: настоящая пристань крутых IT-шников.
О саморазвитии
В феврале я поступил на факультет искусственного интеллекта в GeekBrains. Более подробно свой опыт опишу в отдельной статье, после окончания учебы. Пока могу сказать, что освоил много новых и полезных знаний, но есть много вещей, которые этот процесс омрачают.
Из-за этого я стал резко меньше читать новых книг и уделять времени pet-проектам. Будний день сводится к тому, что я приезжаю с работы, делаю домашние задания и ложусь спать. Но я всё равно нашёл время для того, чтобы поучаствовать в MLBootCamp IX, хоть и без особого результата: 388 место из 551.
Из митапов/конференций был на JPoint, Scala Russia (Tinkoff), Moscow Spark Meetup 9 (особо хорош), ScalaConf 2019 и Dynamic Talk (Grid Dynamics). Сам выступал на мероприятии от GeekBrains для студентов их курсов.
Для коллег на Reading Group подготовил разбор доклада по приближенным соседям. Хардкорный и воодушевляющий опыт.
О семейном
Сделал предложение на воздушном шаре и душевно провёл отпуск с любимой в Чехии. Писать не очень, всё спокойно и это хорошо.
У меня большие надежды на 2020 год и в профессиональном и в личной жизни. Надеюсь, всё будет огонь! Не только у меня, но и у всех-всех.
С наступающим 2020.
0 notes
yatsukav · 6 years ago
Text
Итоги 2018
Tumblr media
Привет. С вами постоянная рубрика «Итоги года». Ещё вчера мне было лень писать хоть что-то на эту тему. Однако, вспомнив предыдущие посты, я уже не могу не составить традиционный текст. Они словно засечки во времени и пространстве из которых вырисовывается некоторая общая линия. И сейчас тот момент, когда я сделаю очередную засечку.
P.S. С фотографиями.
Я разделяю свою рабочую и домашнюю жизнь. Это два мира, которые борются за время, которого всегда мало.
Дома
Tumblr media
Взял квартиру в ипотеку и сделал в ней черновой ремонт. Просторная, с необычной планировкой, на 19 этаже. Не очень далеко от родителей. Относительно рядом с Москвой. И видом на заповедник. Это фантастика. Я рад тому, что могу себе позволить собственное жильё, надеюсь, что так оно и будет в дальнейшем.
Tumblr media
Летом провёл отпуск у родственников жены в Иркутске и под Братском, а потом отправились в Читу, на свадьбу одноклассника. Было приятно отправиться в путешествие на машине, поезде и самолёте, повидать родной город, двор, балкон, друзей. Много вещей тронули меня, родная земля зарядила энергией.
Tumblr media
Прошлогоднее путешествие на яхте так вдохновило меня, что в этом году я прошёл курсы радиооператора и навигатора в английской школе RYA. Это два больших шага на пути к собственной шкиперской корочке.
Tumblr media
Неделю назад у меня произошло пополнение в семье. Красивая четырёхмесячная шотландская кошечка Соля. Первые несколько дней были тяжелыми для нас обоих, но сейчас мы находим общий язык и живём мирно.
Tumblr media
Как обычно, посетил много шоу, концертов, спектаклей, кино, театров, парков и торговых центров. Не так и много выходных удалось провести дома. Это здорово.
На работе
Tumblr media
Моя рабочая жизнь похожа на переходный возраст подростка, когда в статусе контакта хочется поставить «Всё сложно», а по факту всё замечательно.
Летом я уволился. 24 августа провёл последнюю планёрку, а после покинул любимый коллектив, проект и офис. Не хотел. И до сих немного жалею. Причины: высокое давление и непонимание от начальства. Начинал сгорать. Нужно было выполнять по 3-5 задач одновременно и постоянной спешке, огромное количество непрофильной работы по настройке софта и железа, усталость коллег и совершенно неконкурентноспособная заработная плата. Даже при всём этом я сохранял верность проекту в который верил, отказывая всем HR. Пока в один день мне не позвонили и не предложили поговорить о вакансии ведущего разработчика поиска Mail.Ru на крупнейшем в Европе Hadoop-кластере. По-настоящему огромные объёмы данных, крупнейшая и престижная компания с отлаженными бизнес-процессами. А главное, это «Поиск». Я всегда считал, что в поиске работают лучшие умы. Это был шанс оказаться среди них. Нельзя от такого отказываться. Заодно сходил в Kaspersky.Lab. Я успешно прошёл оба собеседования, мне понравились коллеги, руководители, стек технологий. Но задачи показались сложнее в мейле. Так у меня и появилось новое место работы.
После меня из Megaputer Intelligence ушли ещё 2 парней, а потом ещё 3 и проект закрыли. Эта новость сильно потрясла меня. Вот так, труды и знания, ради которых недосыпал, перерабатывал на выходных, постоянно совершенствовался, уходят в никуда. Словно и не было этих трёх лет. Это больно. А на новой работе сплошная рутина над Legacy-проектом, которому уже десяток лет. Нет вызова, челенджей, чего-то математически сложного. Кроме того, из-за дороги и строгого тайм-менеджмента, я стал проводить на работе больше времени. Почти на 4 часа. Мозг офигевает и чувствует себя ненужным. С ��ругой стороны, рабочее место и офис великолепны. К коллегам не придерёшься: они профессионалы с внутренней гармонией. Работают здесь по 7-11 лет. Надеюсь, на то есть причины и для меня прошло ещё слишком мало времени. Очень надеюсь. Из-за всей этой ситуации появляются мысли начать собственное дело, но я даже не знаю что именно и как.
Вот и получается, что внутри у меня буря и много эмоций, а по факту всё хорошо: дом, семья, карьерный и материальный рост. Как у подростка))
В прошлом году я составлял список мини-проектов, которые хотел бы написать ради себя. Сейчас для меня это слишком большая роскошь. Посмотрим что будет дальше.
0 notes
yatsukav · 7 years ago
Text
Dashingo: гобан с душой
Tumblr media
Хочу представить домашний проект, над которым я работал в свободное время последний месяц.
Что это такое?
Если в 2 словах, то я сделал доску для игры в го.
В Японии её называют “гобан”. Вырезают гобан чаще из дерева, но нередко можно увидеть исполнение из ткани, камня и даже бумаги. Он представляет собой игровое поле, полученное пересечением 19, 13 или 9 линий по горизонтали и вертикали. Встречаются доски нестандартных размеров (например, тибетская 17х17) и форм (круглая, прямоугольная.)
На пересечения линий игроки поочерёдно ставят камни. Если один игрок перекрыл своими камнями исходящие линии от камня или группы камней другого игрока, то эти они снимаются с доски. Игра заканчивается, когда оба игрока пасуют. Побеждает тот, кто ограждает наибольшую территорию. Это и есть все правила. Простые, но в тоже время они сделали игру невероятно глубокой и вариативной. А понять это можно, только сыграв самому.
Зачем это нужно?
Мне нравится го. Я начал играть летом 2012 и с тех пор не могу остановиться. Го это целый мир. Здесь есть традиции и философия, буря эмоций и безмятежное спокойствие, сложные задачи и много открытых людей.
Порой вечерами я сижу за компьютером, решая задачи с goproblems.com, а моя четырёхлетняя племянница Даша на это смотрит. Год назад я достал свой гобан, и мы с ней начали расставлять камни на доске. Забавно, что она может показать на них пальцем и спросить: “А это какая форма?” Ума не приложу, где ребёнок услышал эту фразу.
Осенью у меня появился iPad, куда сразу же был установлен iGoban от японской компании Fivestar Interactive. Красивое приложение, которое сразу же оценила племяшка. Теперь ей было уже не до настоящих камней (и слава богу, я боялся, что она их все разобьёт.) Мы начали играть на планшете ровно до того момента, пока он не обновился до iOS 11 и приложение перестало работать. Спасибо, Apple.
Будучи программистом, мне всегда хотелось сделать вклад в развитие игры, объединив оба мои хобби в одно целое. Dashingo это первый шаг в данном направлении: попытка сделать клон того самого iGoban. В идеале, это должно быть веб-приложение, чтобы им мог воспользоваться любой, у кого есть браузер. Опыта работы с JavaScript у меня не было, но в душе всегда хотелось научиться визуализировать свой труд. Определившись с желаниями, меня уже ничего не останавливало.
Что получилось?
Tumblr media
А получилось много полезного опыта. Рабочее, но не до конца доделанное приложение, которое можно потрогать и даже посмотреть под капот.
Репозиторий: https://github.com/yatsukav/dashingo
Сама доска: http://yatsukav.com/dashingo
Что дальше?
Работы ещё очень много:
Добавить RequireJS для поддержки модульности.
Реализовать поддержку досок 13x13 и 9x9.
Воспроизводить звуковые эффекты.
Исправить недочёты интерфейса и текстур.
Улучшить поддержку мобильных устройств.
Однако, над любым проектом можно работать достаточно долго, бесконечно полируя и доводя до совершенства как внешне (user expirience), так и внутренне (architecture). Для разработчика важно уметь вовремя остановиться, даже если это pet project.
Я сделал свои 80% работы за 20% времени. Возможно, я ещё вернусь к этому приложению. Спасибо, что дочитали.
0 notes
yatsukav · 7 years ago
Text
Итоги 2017
Tumblr media
Необычно перечитывать итоги предыдущих лет перед тем, как собрался писать новые. События, которые были в новинку, превратились в повседневность. Ожидания и желания давно воплотились в реальность и стали больше похожи на шаг назад, чем шаг вперёд. Это всё очень радует, ведь прогресс идёт. А в этом посту: мой 5 минутный отчёт за прошедший год.
Цифровая жизнь
Всё больше углублялся в системную backend разработку: архтектура, IoC, паттерны, рефакторинг, ревью кода, собеседования, найм, сопровождение новых сотрудников. При этом никуда не делись задачи в области алгоритмов, структур данных, статистики, машинного обучения и анализа данных. Добавилось много работы DevOps плана: лицен��ии, репозитории, разворачивание и оптимизация кластера, деплой yarn приложений, инструктаж американских коллег, документооборот.
С апреля вступил в должность руководителя отдела из 7 человек. Добавилось много психологической работы с людьми, отстаивание интересов отдела перед руководством, тонкие манипуляции по мотивации и правильному расставлению приоритетов среди моих коллег. Очень надеюсь, что другим нравится мой подход к обязанностям. Мы вместе делаем действительно классные вещи.
Стал много меньше заниматься музыкой и художественным чтением в пользу компьютерных наук и программной инженерии. В конечном счете побеждает то, что дарит больше удовольствия. Продолжаю много работать в своём github репозитории. Посещал конференции от JUG.RU, DCA, Yandex, Mail.Ru Group, Rambler&Co, Sberbank и, возможно, забыл ещё кого. К концу года стал постигать TypeScript, JavaScript и jQuery, так как хочу научиться визуализировать свой труд.
Что я хочу сделать в новом году в области разработки? Для начала, подвести к логическому завершению свои pet-проекты. А также обучить нейронную сеть играть в го. Надеюсь, что ещё останется время для решения задач, чтения книг, получению сертификатов, посещения конференций и прочего, прочего.
Аналоговая жизнь
К сожалению, остальная жизнь превратилась больше в сон между моими цифровыми интересами. Я не прочитал в этом году ни одного художественного произведения, посетил намного меньше спектаклей, мюзиклов, опер и балета (зато больше кино) и был только на одном или двух концертах. В общем-то, большинство самых запоминающихся событий, приходятся на отпуск, так как я не проводил его пассивно.
Летом полетел на 2 недели в Читу, чтобы пройти трансперсональную психотерапию. Не скажу, что я это сделал из-за каких-то внутренних проблем, хотя повседневного стресса хватает. Дело в том, что трансперсоналка позволяет раскрыть глаза на жизнь и увидеть вещи такими, какие они есть. Во время трансов окунаешься и переживаешь свои, тянущиеся с дества, внутренние проблемы, отпукаешь их, принимаешь себя и взрослеешь. Я рад, что в мире есть такое место, в котором помогут прийти к себе.
В сентябре я с девушкой и её родителями на 16 дней отправился в Хорватию. За это время мы побывали в 8 городах и арендовали яхту в чартер на целую неделю, на которой попали в шторм и боком легли на поверхность воды. Не считая приграничного Китая, это моя первая поездка за границу. Она была перенасыщенна эмоциями, событиями и воспоминаниями которые остануться со мной на всю жизнь.
В октябре неделю провёл в компании моей благоверной в Санкт-Петербурге. Тут, конечно, были дворцы, музеи, театры, концерты, торговые комплексы, религиозные сооруженя, много вкусной еды и прогули, что не могло не вызвать восторг. Сам город разочаровал: грязный до отвращения, люди параноидально ловят каждый твой взгляд, много объявлений о проституции, секс-шоп “Розовый кролик” на каждом углу, включая Невский проспект, торговые комплексы с очередями и без навигационных табличек. После Москвы, я бы никогда не хотел жить в Питере.
Ну и, конечно, главное событие года, это моя личная жизнь. Год я начал с недельной поездки в Иркутск, где мы с Машей провели замечательно время в прогулках и поездках по нашим местам. Я познакомился с её родителями, бабушкой и дедушкой. В феврале она приехала ко мне на месяц. Мы сняли квартиру, а все выходные проводили в прогулках по Москве. Честно, я уже хотел никуда не ехать, а просто поваляться дома. 
2 сентября Маша переехала ко мне и с тех пор начинается наша гражданская семейная жизнь. Совместные выходные, стирка, уборка, готовка, ссоры, просмотры фильмов и много любви. У меня в планах ипотека и, как знать, что ещё ;)
Пожелания
Спасибо всем, кто со мной. Ведь, если вы читаете эти слова, значит я вам не безразличен. Хочу пожелать, чтобы ваша жизнь была насыщенной и продуктивной. Идите к новым высотам с внутренней гармонией. С наступающим 2018 годом!
1 note · View note
yatsukav · 8 years ago
Text
Введение в Apache Spark и Машинное обучение
Tumblr media
Эту статью я написал год назад, когда только приступил к изучению данного вопроса. К сожалению, время для её публикации в свой блог я нашёл только сейчас. А ведь тут описывается Spark <1.5, RDD-based MLlib, но и также понятные объяснения что же такое машинное обучение и какие его виды бывают. Под катом можно прочитать содержание, а уже на его основе решить, нужно ли читать, а если нужно, то что именно?
Содержание
Машинное обучение
Примеры машинного обучения
Определение спама
Игра в шахматы
Другие примеры
Виды машинного обучения
Представление данных в машинном обучении
Этапы машинного обучения (Pipeline)
Apache Spark
Подготовка Java-проекта на Spark
Выбор модели
Типы данных
Hello World, ML!
Оптимизация
Полезные обучающие материалы
Машинное обучение
Машинное обучение - обучение на основе некоторых входящих данных (чем больше, тем лучше). При помощи определенных математических алгоритмов компьютер находит закономерности во входящих данных и строит модель (набор коэффициентов).
Примеры машинного обучения
Определение спама
SpamAssasin анализирует входящие письма на предмет того, являются они спамом или нет. Чтобы это определить он имеет набор коэффициентов (ML-модель). Допустим, коэффициенты у него следующие: K1 - наличие слова "виагра" в тексте письма, К2 - на сколько картинок в письме больше, чем текста, К3 - наличие отправителя в локальной адресной книге. В ходе обучения сформировалась такая модел��: K(2, 4, -10) < 8. Это означает следующее: если набор коэффициентов в итоговом письме превышает 8, то письмо следует поместить в папку "СПАМ".
Ситуация 1: К нам пришло письмо от неизвестного отправителя. В нём дважды встречается слово "виагра" и количество картинок больше, чем текста. SpamAssasin даёт оценку: 2*K1 + 1*K2 + 0*K3 = 2*2 + 1*4 + 0 = 8. Это письмо является спамом.
Ситуация 2: Наш приятель прислал письмо, в котором трижды встречается слово "виагра" и прикреплена огромная фотография. SpamAssasin так его оценивает: 3*K1 + 1*K2 + 1*K3 = 6 + 4 - 10 = 0. Так как 0 < 8, то письмо помещается в папку "Входящие".
На деле модель состоит из десятков или сотен коэффициентов, а письмо определяется не только как "Спам", но и "Работа", "Личное", "Интернет-магазины", "Срочное" и др.
Игра в шахматы
Мы подготавливаем базу профессиональных партий в шахматы. Для примера, AlphaGo от Google обучалась на 400 000 партях. После обработки всех партий формируется модель, которая на анализе всех скрытых связей предлагает следующий ход. При этом шахматные правила объяснять не нужно - в процессе обучения программа сама их определяет.
Другие примеры
Распознавание объектов: определить какая машина находится на фотографии (марка и модель). Модель обучается на фотографиях из Google Images. Затем мы ей даём фотографию не из этого списка и просим определить.
Распознавание голоса: подготавливаем банк звуков с буквами и словами, произнесенными разными людьми. Отдаём на обучении. На выходе получаем модель, способную распознать речь.
Синтез речи: задача обратная предыдущей. Входящие данные те же.
Решение задач классификации/кластеризации:
Определить нажмёт пользователь на рекламное объявление или нет.
Определить является ли транзакция видом мошенничества или нет.
Классификация изображений.
Решение задачи регрессии:
Определить курс валюты.
Определить стоимость дома в определенном месте и с определенными характеристиками.
Виды машинного обучения
С учителем - набор данных подаётся вместе с пометкой, что эти данные означают (например, 10 000 писем, часть из которых помечена как "Спам", часть как "Не спам". Алгоритм сам вычисляет вес коэффициентов, анализируя письма.)
Решаемые задачи этого вида обучения:
Классификация (например, исходя из зарплаты, возраста, пола, семейного положения и др. программа решает способен клиент вернуть банку кредит или нет. По этому результату будет вынесено решение о выдаче кредита.)
Регрессия (например, зная значения функции синуса на определенном отрезке, программа может сделать предсказать его значения на другом отрезке. Вместо синуса возможна функция из N-переменных в K-мерном пространстве. Еще пример: в предыдущей задаче определить, какую максимальную сумму банк может позволить взять клиенту в кредит, чтобы он её гарантированно вернул.)
Рекомендательные системы (например, мы оценили 15 фильмов на Кинопоиске. Сайт, на основе наших оценок определил какая смесь жанров нам нравятся. На основе этого, он ищет людей с похожими на наши вкусы, но оценивших большее количество фильмов и предлагает на их основе то, что нам может понравится.)
Без учителя - набор данных без признаков. Программа должна сама найти скрытые связи между ними. 
Решаемые задачи этого вида обучения:
Кластеризация (например, мы передаём программе базу с оценками фильмов от посетителей. На основе этого, программа находит скрытые связи между фильмами и выводит, что оценки зависят не только от жанра, но и от бюджета, актерского состава, года выпуска и режиссера. Исходя из этого мы можем добавить на сайт новую функциональность.)
Уменьшение размерности (задача, обратная кластеризации. Программа определяет, что некоторые параметры зависимы друг от друга, т.е. коррелируют на определенное значение. На основе этого, мы можем обрабатывать, например, не 1000 переменных, а 100, что позволит уменьшить расход памяти и увеличит скорость работы.)
Представление данных в машинном обучении
Tumblr media
Данные, отправляемые на машинное обучение можно представить в виде таблицы, где каждый столбец - характеристика объекта, а строка - сам объект. С математической точки зрения - каждый столбец это ось в многомерном пространстве, а строка - координаты в этом пространстве. При обучении с учителем добавляется еще один столбец, в котором указывается результат, характеризующий объект. На предлагаемом рисунке мы видим объект (человек) с характеристиками (доход, возраст, пол, количество детей, образование) и результирующий столбец - вернул ли данный объект кредит в прошлом. На основе этого можно предсказать, вернёт ли задолженность по кредиту новый клиент.
Все данные должны быть нормализованы, так как на вход обучающего алгоритма подаётся вектор, представляющий из себя массив double[]. Каждый элемент массива - значение характеристики. Если с целыми и дробными числами проблем с нормализацией нет, то как поступить с данными классификации? Классификацию вида регрессии (тощий, худой, стройный, плотный, толстый) можно нормализовать, дав каждому типу определенное значение в пределах от 0 до 1. Но это не работает при классификации равных объектов (Россия, Украина, США, Латвия, Литва, Эстония), иначе получится, что некоторые страны в пространстве координат ближе друг другу, чем другие, а должны быть все равноудалены друг от друга. Эту проблему решают добавление N-мерного вектора, где N - количество классификаторов. Например, для указанного выше списка N = 6. Россия = {1, 0, 0, 0, 0, 0}. Литва = {0, 0, 0, 0, 1, 0}. За счет увеличения мерности пространства мы можем работать с классифицируемыми данными.
Этапы машинного обучения (Pipeline)
Tumblr media
1. Сбор данных
Подготовка достаточной выборки файлов для обучения. Кроме того, данные должны быть разнообразными. Допустим, мы хотим, чтобы программа умела находить танки на изображениях. Мы вышли на полигон с фотоаппаратом и подготовили достаточное количество снимков с самыми разными танками. Но, если эти данные отдать на обучение, то программа научиться определять не танки на изображениях, а определенный тип ландшафта, так как все фотографии были сделаны в определенной местности. Нужно учитывать подобный исход событий.
2. Очистка "мусора" и трансформация
На данном этапе происходит преобразование собранных данных в массив double[] для отправки обучающему алгоритму. В том числе изображений. См. подробнее "Представление данных в машинном обучении". На этом же этапе находят коррелирующие между собой данные и отсеивают их. См. подробнее "Оптимизации". Данный этап занимает до 90% от всего времени исследования.
3. Выбор модели и обучение.
В зависимости от требуемых задач (классификация, регрессия) и технических ограничений (размер кластера, объём данных, сложность данных, наличие учителя) выбирается тип модели, на вход которой подаются трансформированные данные вида double[] и дополнительные параметры (сколько раз/итераций/эпох модель проходит по входящим данным для корректировки веса критериев, сколько шагов линейного градиента и др.)
4. Тестирование модели.
На этом этапе определяют 2 параметра: точность (accuracy) сформированной модели и отсутствие переобученности. Точность измеряют на основе расхождения предсказания с набором тестовых данных. Факт переобученности определяется сравнением точности на тестовых данных и точности на тренируемых данных. 
Если на тестовых данных заметно сильное падение точности, то модель переобучена. При переобученности уменьшают количество итераций обучения на входных данных, либо меняют собранные данные на более разнообразные. 
Желательно, чтобы тестовые данные не совпадали с обучающей выборкой. Если возможности взять тестовые данные нет, то перед обучением часть данных отсеивают и из них делают тестовую выборку. Но это может привести к уменьшению точности формируемой модели. 
Чтобы это избежать прибегают к кросс-валидации (перекрестная проверка.) Для этого входящие данные делят на 5 частей, из которых 4 части идут на обучение 4 моделей, а 1 часть на тестирование. После чего все 4 модели объединяют в одну итоговую. На изображении ниже изображены недообученная, хорошо обученная и переобученная модель.
Tumblr media
5. Внедрение и интеграция модели.
Apache Spark
Подготовка Java-проекта на Spark
Для начала работы нужно создать Maven-проект со следующим pom.xml:
 <?xml version="1.0" encoding="UTF-8"?>  <project xmlns="http://maven.apache.org/POM/4.0.0"           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"           xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">      <modelVersion>4.0.0</modelVersion>      <groupId>my.sparktest</groupId>      <artifactId>ml_test</artifactId>      <version>1.0</version>      <properties>          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>          <spark.version>1.5.0</spark.version>          <spark.scope>compile</spark.scope>      </properties>
     <dependencies>          <dependency>              <groupId>org.apache.spark</groupId>              <artifactId>spark-core_2.10</artifactId>              <version>${spark.version}</version>              <scope>${spark.scope}</scope>          </dependency>          <dependency>              <groupId>org.apache.spark</groupId>              <artifactId>spark-mllib_2.10</artifactId>              <version>${spark.version}</version>              <scope>${spark.scope}</scope>          </dependency>      </dependencies>
     <build>          <plugins>              <!-- need for build jar with deps-->              <plugin>                  <artifactId>maven-assembly-plugin</artifactId>                  <version>2.6</version>                  <executions>                      <execution>                          <phase>package</phase>                          <goals>                              <goal>single</goal>                          </goals>                      </execution>                  </executions>                  <configuration>                      <finalName>ml-${version}</finalName>                      <appendAssemblyId>false</appendAssemblyId>                      <archive>                          <manifest>                              <mainClass>HelloWorld</mainClass>                          </manifest>                      </archive>                  </configuration>              </plugin>              <!-- need for explicit compile settings -->              <plugin>                  <groupId>org.apache.maven.plugins</groupId>                  <artifactId>maven-compiler-plugin</artifactId>                  <version>3.5.1</version>                  <configuration>                      < source>1.8</source>                      <target>1.8</target>                      <encoding>UTF-8</encoding>                  </configuration>              </plugin>          </plugins>      </build>  </project>
Плагин maven-assembly-plugin используется для сборки проекта с зависимостями.
В плагине maven-compiler-plugin указываем используемую версию Java и кодировку документа.
Добавим в проект main:
 public class HelloWorld {      public static void main(String[] args) {          SparkConf conf = new SparkConf();          conf.setAppName("ApacheSparkLocal");          conf.setMaster("local[4]");          JavaSparkContext jsc = new JavaSparkContext(conf);          // Наш код          jsc.stop();      }  }
Выбор модели
Spark.ML реализовал следующие алгоритмы машинного обучения:
Классификация и регрессия
Линейные модели 
SVM (между классифицируемыми данными строится плоскость наиболее удаленная от них)
Logistic regression (данные классифицируются по разным категориям)
Linear regression (по данным строится наиболее приближенная линейная функция)
Наивный алгоритм Байса (текстовая классификация)
Дерево решений
Random Forest
Gradient-Boosted Trees
Изотоническая регрессия (по данным строится наиболее приближенная изотоническая функция)
Коллаборативная фильтрация (рекомендательная система)
Alternating least squares (ALS)
Кластеризация
K-Means (указываем на сколько классификаций следует разбить входящие данные)
Gaussian mixture
Power iteration clustering (PIC)
Latent Dirichlet allocation (LDA)
Streaming K-Means
Уменьшение размерности
Principal component analysis (PCA) (указываем предельную степень корреляции данных. Например, 0.8)
Singular value decomposition (SVD)
Графическое представление некоторых моделей
SVM (Support Vector Machines):
Tumblr media
Красная - изотоническая модель, Зеленая - линейная. Синие точки - набор данных в 2 измерениях:
Tumblr media
Модель на основе дерева решений:
Tumblr media
Модель кластеризации ближайших соседей (K-Means) с K=2,3,4:
Tumblr media
Принцип работы модели кластеризации Gaussian mixture:
Tumblr media
Типы данных
Vector (mllib.linalg.Vectors)
Математический вектор. Реализован в 2 вариантах: плотный (dense) и разряженный (sparse).
Плотный вектор имеет вид [a1, b1, ..., n1], где a1, b1, n1 - координаты каждой точки в N-мерном пространстве.
Разряженный записывается следующим виде: [n, [1, 2, 4, z], [a1, b1, d1, z1]], где N - длина вектора, [1, 2, 4, z] - индексы не нулевых значений вектора, [a1, b1, d1, z1] - не нулевые значения вектора.
Если в следствии трансформации входящих данных имеется большой объём классификаторов (см. 2 этап машинного обучения), то при использовании разряженных векторов уменьшается используемый для расчётов объём памяти. C математической точки зрения разряженный вектор следует использовать, если количество нулей составляет больше половины всех входящих данных.
LabeledPoint (mllib.regression.LabeledPoint)
Названная точка. Используется при обучении с учителем. 
Представляет из себя Map<double, Vector>, где Vector - входящие данные, double - желаемое значение при данном Vector.
Обращение к ключу - LabeledPoint.label(). Обращение к значению - LabeledPoint.features(). Для задач классификации double укзывается, как 1.0, 2.0, 3.0 и т.д.
Для задач регрессии double нормализуют в рамках [0..1].
Rating (mllib.recommendation.Rating)
Оценка продукта Y пользователем X.
Данные типы оборачиваются в объект JavaRDD, наследованный от абстрактного RDD. Это потоко-безопасный тип, с которым работает Spark - разбивает его на задачи, распределяет по кластеру и т.д. Чтобы из List получить JavaRDD нужно написать:  JavaRDD jrdd = jsc.parallelize(new List()); Чтобы из JavaRDD получить List нужно написать: List list = jrdd.collect();
Hello World, ML!
Следующий код, генерирует count-значений синуса. Трансформирует их из List в RDD, случайно разбивает на 2 части (тренировочная и проверочная) и отдаёт на формирование модели линейной регрессии (обучение с учителем). Тренируясь, модель проходит по данным до 100 раз. Затем, мы выводим в консоль данные в следующем виде: X[Y] : Z. Где X - изначальное число (в пределах [-π/2;+π/2]), Y - значение sin(X), Z - предсказание(Y), которое должно быть примерно равным X.
Отдельно отмечу, что это линейная регрессия. То есть мы получаем функцию y = k*x, наиболее близкую к заданным данным. Очевидно, что полученная модель (функция) будет наиболее точна на линейном участке, и наименее точна на изгибах синуса. Если объяснение не понятно, то уделите 5 минут и нарисуйте график по заданным точкам на тетрадном листе. Помимо линейной регрессии существует радиальная, которая больше подходит для этой задачи, но в Spark она не реализована, так как на BigData разница между радиальной и линейной моделями минимальна, но затраты на радиальную существенно выше.
 public class ApacheSparkLocal {      private static List<LabeledPoint> genTrainingSin(int count) {          List<LabeledPoint> result = new ArrayList<>();          for (double i = -Math.PI*0.5; i < Math.PI*0.5; i += Math.PI/count) {              double key = i;              double value = Math.sin(i);              result.add(new LabeledPoint(key, Vectors.dense(value)));          }          return result;      }
     public static void main(String[] args) {          SparkConf conf = new SparkConf().setAppName("Linear Regression Example").setMaster("local[*]");          JavaSparkContext jsc = new JavaSparkContext(conf);
         // Preparing data. List -> RDD          JavaRDD<LabeledPoint> data = jsc.parallelize(genTrainingSin(1000));
         // Split data into training(60%) and test(40%)          JavaRDD<LabeledPoint>[] splits = data.randomSplit(new double[] {0.8, 0.2}, 11L);          JavaRDD<LabeledPoint> training = splits[0].cache();          JavaRDD<LabeledPoint> test = splits[1];
         // Building the model          int numIterations = 100;          final LinearRegressionModel model = LinearRegressionWithSGD.train(JavaRDD.toRDD(training), numIterations);
         // Compute raw scores on the test set          for (LabeledPoint testData : test.collect()) {              double prediction = model.predict(testData.features());              DecimalFormat df = new DecimalFormat("0", DecimalFormatSymbols.getInstance(Locale.ENGLISH));              df.setMaximumFractionDigits(3);              System.out.println(df.format(testData.label()) + testData.features() + " : " + df.format(prediction));          }          jsc.stop();      }  }
Оптимизация
При работе с ML возможны оптимизации следующего рода:
Использование разряженных векторов, вместо плотных, если количество нулей во входных данных больше половины всех данных.
Использование PCA для нахождения корреляций между входными данными и уменьшением их количества.
Указать rdd.persist(StorageLevel.MEMORY_ONLY_SER) для уменьшения нагрузки на gc.
Использование перекрестной валидации, для использования максимального количества обучающих данных.
Полезные обучающие материалы
Лучший обзор Hadoop (Cloudera, MapReduce, Spark, HBase, Kafka, Spark Streaming, Parquet). Хабрахабр
Подробнее про Spark RDD. Хабрахабр
Официальная документация (ENG)
Выступление Игоря Бобака с обзором SparkMLib на конференции по BigData в Минске от 24 ноября 2015 года: часть 1, часть 2. Один из лучших материалов для старта и быстрого освоения терминологии.
ДМК Пресс. Изучаем Spark. Глава 11
Преимущество использования DataSet перед RDD
Материалы по машинному обучению для начинающих. Хабрахабр
ДМК Пресс. Петер Флах. Машинное обучение. Для тех, кто хочет глубже погрузится в эту тематику.
1 note · View note
yatsukav · 8 years ago
Text
Итоги 2016
Tumblr media
Вот уже несколько лет подряд я подвожу итоги года в своем блоге. Не думаю, что этот год должен стать исключением, ведь он на поверку оказался очень хорошим. Под катом мои достижения, как в сфере разработки, так и за ней. Буду краток.
Разработка
Первое, с чего начался год это то, чем закончился прошлый - мои поиски работы. Я хотел не идти в науку, а продолжить заниматься тем, чем болел всю жизнь - программированием. Несколько хороших предложений на Delphi, в том числе в области криптографии, пришлось отклонить - к умирающему лучше не возвращаться. Также что-то мне подсказывало не соглашаться на направления мобильной и веб разработки. Подробнее можно прочитать в предыдущем посте.
С 1 февраля я стал Java разработчиком в Megaputer Intelligence. Первый проект был в области Complex Event Processing / Data Streaming. С апреля переключился на ETL / Machine Learning / Data Mining на Hadoop с использованием Apache Spark. С ноября пытаюсь быть архитектором системы. Проект начали писать практически с нуля и уже в первых числах января будем показывать заказчику.
За время работы я освоился в BigData, много изучил литературы, документации и исходников по Apache Spark, Hadoop, структурам данных, алгоритмам, распределенным вычислениям, получил сертификат по языку Scala, применял методики TDD, RAD, Scrum и советы дядюшки Боба по clean code. С лета начал самостоятельно проводить собеседования. Надеюсь, что все мои начинания в этом году трансформируются в профессиональные знания в следующем.
Вне кода
Первые полгода личной жизнью была работа. Нужно было максимально быстро набрать фору, чтобы не было стыдно за то, что пишу. Сфера всё-таки новая для меня и безумно интересная.
В течении года почти каждые выходные посещал театры либо концерты. За это я благодарен Москве, так как ни в каком другом городе нашей страны нет доступа к высокому искусству такого уровня.
В автобусах и метро, а путь мой на работу составляет до полутора часов, стал читать и слушать художественную литературу.
Летом начал учиться играть на японской бамбуковой флейте сякухти. С перерывами, но продолжаю до сих пор. Изредка беру в руки варган и гитару. Также стал посещать го-клуб “Сенте” и поучаствовал в турнире.
Осенью открыл для себя “Центр О” в котором посетил довольно много психологических тренингов и семинаров: курсы ребёфинга, практические семинары по танатотерапии и регрессии, курс “Путь к себе через голос” Андрея Данилова. Также был на курсе бамбуковой флейте Сергея Емельянова, ознакомительно посещал другие музыкальные практики. 
Это всё очень здорово, интересно, а главное - позволяет обнулиться после рабочего дня. Честно, если бы я занимался только программированием и не разгружал свой мозг чем-нибудь из другой сферы, то давно бы уже заработал себе синдром хронической усталости. А после личностных практик, наоборот, чувствую подъём сил, трезвость ума и уверенность в себе.
Всех с наступающим Новым Годом и успехов в 2017!
0 notes
yatsukav · 8 years ago
Text
Путь к себе через голос
Tumblr media
У меня появляется все больше возможностей для саморазвития, чему можно только радоваться. Я опишу как прошел дорогой, но результативный четырехдневный тренинг Андрея Данилова “Путь к себе через голос”.
Модуль 1
В течении жизни появляются моменты, когда мы себя сдерживаем. Зачастую эти моменты и наше сдерживание представляют собой одни и те же бытовые ситуации. Наша реакция на эту ситуацию это наше воспитание, собственные установки, либо что-то еще. Если прислушаться к нашим чувствам, то когда мы испытываем эмоции, они обязательно находят своё отражение в теле: в виде тепла, холода, дрожи, расслабления или напряжения. Когда мы пытаемся не дать волю какой-то эмоции, то усилие происходит не только в голове, но и на теле. С годами, образовываются мелкие мышечные зажимы (мышцы, которые не расслабляются, а все время напряжены, иначе - физический блок), которые облегчают нам контролировать себя в такие моменты. Со стороны голоса эти зажимы в легких, гортани, челюсти, щеках и губах меняют наш естественный голос, зажимая его и делая плоским. Целью этого тренинга является снятие физических блоков, раскрытие голоса, что позволит повысить качество жизни.
Дыхание
Следует научиться “парадоксальному” дыханию. Парадокс заключается в том, что внешне выглядит словно человек постоянно выдыхает. При вдохе мы наполняем нижнюю часть легких (выглядит, как увеличение живота), при выдохе даём этому воздуху выйти из себя самому, начиная сверху, заканчивая низом, не помогая животом и диафрагмой. Если положить руку на живот, то это будет выглядеть как волна, которая идёт в ноги.
При таком дыхании важно быть полностью расслабленным и не управлять дыханием. Особое внимание следует обратить на челюсть, плечи, диафрагму и колени. Дышать нужно одновременно носом и ртом.
Голос
После правильного дыхания следует правильное звукоизвлечение. Тренироваться следует на открытых гласных: А, О, Э. Чтобы правильно пропевать эти гласные, нужно представить себя в виде колокола, начало которого находится в горле. Звук должен идти внутрь колокола, в глубину. Идеально, если будет ощущение вибрации в животе или ниже, словно говоришь не ртом, а пузом, ногами или всем телом. При этом следует представлять, словно горло опускается и расширяется. Голос будет чуть ниже, обогатится обертонами, но и на бас переходить не стоит. Ни в коем случае не формировать голос во рту или выше.
Простанывание
Заключительной техникой первого дня стала практика, силу которой я могу сравнить с холотропным дыханием. Становимся в расслабленную позу, закрываем глаза, дышим правильно, на выдохе начинаем немного стонать. Не важно какой это будет стон: боли, удовольствия, усталости или чего-то еще. Идём за любой эмоцией, болевым ощущением, движением, добиваясь максимального усиления и переживания, помогая голосом, дыханием и движениями. Техника отличается высокой экологичностью к здоровью и результативностью в работе над собой.
Модуль 2
Танцы
Проделав быстро упражнения на дыхание и голос, начали с танцев. Всего их было три, под разную музыку.
Мелодия 1. Спокойная. Нужно пропевать согласно технике “Голос” гласную и медленно двигаться под музыку. Желательно войти в состояние потока, когда тело само двигается под музыку. Движения должны быть максимально медленными и плавными, а голос не должен сбиваться. Наш танец отражает нас самих наедине с собой.
Мелодия 2. Барабаны. Часть 1. Тоже, что и при первой мелодии, но на этот раз под барабаны. Соблюдать плавность не обязательно. Этот танец характеризует нас в обществе. Часть 2. Если в танцы были прыжки, то это указывает на сильно развитого внутреннего ребенка. Теперь следует станцевать еще раз, но максимально заземлившись (не отрывая ног от пола). Можно постукивать ногой на сильную долю. После танца сравнить ощущения от первой и второй части.
Мелодия 3. Спокойный куплет, динамичный припев. Танец будет отражать нашу реакцию, на события, которые время от времени преподносит жизнь. Самый здоровый танец: замедляемся во время припева и ускоряемся на куплете, стараясь держать свою собственную волну/вибрацию, обращая внимания на сильную долю, не позволяя музыке сбивать нас с ритма.
Эмоциональный портрет личности
Нужно взять лист бумаги и разделить его горизонтально пополам линией. Выше линии писать свои положительные эмоции. От самых слабых (ближе к середине страницы) до самых интенсивных (ближе к верхней границе страницы). Ниже линии написать негативные эмоции. От самых слабых (у линии), до самых сильных (у края). Напротив каждой эмоции поставить гласный звук, которые по личному мнению ей соответствует.
Для самоанализа: если напротив эмоции стоит закрытая гласная (У, И…), то это подавляемая эмоция, которая только добавит новых физических блоков. Эти гласные следует заменить на подходящие открытые (А, О…).
Далее следует пропеть каждую эмоцию соответствующей ей гласной, вызвав её, помогая движением тела и максимально переживая. После пропевания должно быть ощущение, что эмоция полностью вышла. Таким образом мы знакомимся с собой и своими настоящими эмоциями. Важное замечание: никогда нельзя терять равновесие. При любой эмоции нужно крепко стоять на ногах. Начинаем с самых слабых негативных, заканчиваем самыми сильными положительными.
Трансформация эмоций
Бонусная техника. Вызываем (поем) самую сильную негативную эмоцию. Затем обнуляемся, пропевая “У”, и переживаем (поем) самую положительную. Анализируем своё состояние.
Модуль 3
Архетипы
Архетип - некоторый собирательный образ. Обычно это яркие образы из сказок, мифов и былин. Вызов своего тотема очень ресурсное состояние. Индикатором “у меня получилось” будет являться подъём сил после практики. Ещё одна польза от архетипа - состояние потока. Если вы можете отдать себя на власть архетипу, отдавая своему телу принимать все решения, то можете быть уверены, что тело сделает всё правильно и не ошибётся в решениях.
Систему архетипов разработал К. Г. Юнг. Его последователи либо создавали собственные шкалы, либо расширяли классическую систему. Андрей взял за основу шкалу Пирсона - американского маркетолога-психолога, разрабатывающего рекламные компании крупным компаниям.
Из перечисленных архетипов нужно отметить те, которые находят внутри отзвук: Творец, Заботливый, Правитель, Шут, Любовник, Славный малый, Герой, Бунтарь, Маг, Простодушный, Искатель, Мудрец.
Теперь нужно пропеть каждый архетип, вызвав его из себя. Вызов тем лучше, чем больше сил будет после пропевания и чем более независимо от сознания двигалось тело. Небольшие подсказки: мудрец обычно отстранен, маг плавно и размашисто двигается, управляя силами природы…
Тотемы
Животные тотемы в нашей практике тем отличают от архетипов, что охватывают не часть жизни, а всю нашу личность. Предвещая вопросы: тотем не обязательно будет один.
Подбор тотемов заключается в перечислении животных, которые субъективно находят отзвук в душе. Следует рассмотреть каждое семейство животных: кошачьи, верблюжьи, птицы, пресмыкающиеся, членистоногие, насекомые, лошадиные и т.д. Мой выбор, не без помощи группы и Андрея, пал остановился на Соколе и Медведе.
По уже запомнившейся технике, пропеваем каждый тотем, входя в образ резонирующего нам животного. Смотрим разницу в ощущениях между привычной жизнью и сейчас, в состоянии тотема. Кроме того, тотем является экстра ресурсным состоянием. Обязательно должно присутствовать ощущение полноты сил.
Коммуникации
Очень важная для меня практика. Что нужно знать?
Природой заложено самое комфортное состояние для человеческого тела - расслабленное. Агрессия и раздражение всегда тратит много энергии, поэтому если собеседнику подать определенные сигналы, то его подсознание начнет его насильно расслаблять, что очень забавно выглядит со стороны.
Когда собеседник хочет “вампирить” раздражением, агрессией, жалобами или чем-то другим, то нужно замедлять свой ритм. Очень медленно двигать плечами, руками, телом, говорить. Сам голос должен становиться в два раза тише. При этом нужно чувствовать себя, свое тело и свои эмоции. При соблюдении этих правил - нападение собеседника пройдёт мимо нас, а сам он начнет на глазах успокаиваться.
При продуктивном общении, после беседы, оба собеседника должны чувствовать подъём сил. При этом происходит обмен энергии - от себя к собеседнику, снова к себе и снова к нему. В этот момент нужно представлять как эта энергии колесом по кругу проходит через обоих собеседников. Не забываем чувствовать себя.
И важное напоминание: не забываем следить за точкой опоры. Никогда не теряем её.
Сама практика выглядит так: двое становятся друг напротив друга, начинают пропевать одну и ту же гласную, синхронно двигаясь друг с другом. Затем один из них начинает нападать на другого, повышая агрессию, а второй уклоняется от неё. Потом тоже самое, но наоборот. После чего - гармоничный обмен. Практику проводим как со своим, так и с противоположным полом.
Модуль 4
К четвертому дню нужно было подготовить стихотворение и песню.
Стихотворение
Начали с зачитывания стихотворений. Дыхание и голос должны соответствовать упражнениям из первого модуля. При этом не нужно следовать ритму, а максимально его нарушая, словно не читай стихотворение, а говоришь что видишь на ходу с соответствующими паузами или ускорением. В этой практике нужно добиться состояния “потока”, когда речь будет литься сама собой, вместе с ритмом и эмоциями. Мои стихотворения А.С. Пушкина “Зимнее утро” и “Я помню чудное мгновение”.
Песня
То же, что и со стихотворением, но нужно практически сразу входить в состояние потока. Мои песни: Beatles “Yesterday” и ДДТ “Дождь”.
Ораторство
При общении со сцены нужно придерживаться несколько правил:
1. Всегда начинать речь тихо, в пол голоса, и медленно. Это заставит людей прислушаться и привлечет к себе внимание. Но “начало” не должно идти более 2 минут, иначе люди начнут уставать и терять внимание.
2. Сама речь должна идти циклами: 2-5 минут спокойной речи, 2-5 минут эмоциональной, немного громкой с резкими движениями рук. Не следует задерживаться на каком-либо цикле, иначе люди начнут терять интерес.
3. Если чувствуется, что некоторые мышцы зажались, например, правая рука почти не двигается, то нужно их размять, но так, чтобы движения подчеркнули речь. Дрожат колени - подойди к трибуне и оперись о нее. Затекли руки - начни говорить о сложностях и потянись, подчеркивая усилие.
4. Вся речь должна идти в потоке. Сознание нужно чтобы контролировать поток, направляя его, но не управляя речью.
5. Оканчивать речь лучше всего на спокойной ноте. На эмоциональной только тогда, когда нужно оставить людей заведенными.
Бонус: Трансактный анализ
Меня часто раздражают люди, которые словно пытаются заявить миру о себе: кричат всем понятные вещи, пытаются всех собрать и что-то объяснять, хотя это никому не нужно и т.п. В голове сразу возникает вопрос с уставшим голосам: “Ну вот зачем? Всем и так всё ясно.” Между модулями приснился сон с такой же тематикой. Я поделился этим с Андреем. Первое, что он сказал: раздражение это уход энергии. Его, разумеется, не нужно сдерживать, но и не нужно терпеть. Спросил меня, как я отношусь к детям, которые со всей своей наивностью могут подбежать, что-то помочь сделать, что не особо и нужно, рассказывать с умным видом о том как что-то делать, что ты ему сам днем ранее рассказывал (на детей я никогда не сержусь, они только умилять умеют.) После чего сделал простой вывод, люди, которые меня раздражают - имеют доминирующего ребенка внутри себя, а я требую от них взрослости. Всё что нужно - видеть их как детей, тогда всё встанет на свои места. И это правда.
Послесловие
Старался быть максимально кратким, чтобы этот пост в будущем послужил мне шпаргалкой. У меня большая благодарность Андрею и его техникам, так как именно благодаря ему я научился идти в эмоции, освобождать их, открыл путь к своему голосу, источникам энергии и получил больше уверенности в жизни. Этот курс шел параллельно с моими занятиями ребефинга, что усилило и их эффект тоже. Я чувствую, что изменился в лучшую сторону и повзрослел буквально на глазах у самого себя. Это здорово.
P.S. По мере воспоминаний отдельных мелочей и обращений к этой шпаргалке буду корректировать и дополнять текст.
0 notes
yatsukav · 9 years ago
Text
Как я искал работу
Tumblr media
Недавно я окончил своё обучение в аспирантуре, переехал из Дальнего Востока в Москву, точнее, в Балашиху, и приступил к поиску работы. Сложности сопровождались тем, что я стал switcher’ом - не хотел далее продолжать работу на Delphi, с которой я знаком 15 лет, а в game dev мне не попасть, так как для этого нужен опыт в Unity3D. Чтобы решить эти сложности, пришлось досконально изучить вакансии всех направлений.
Сомнения
Первое, с чем я столкнулся при поиске работы - собственные сомнения. Зацикливались они на объёме моих знаний, пустой трудовой книжке, умению ладить с людьми и выборе направления.
Мучился я порой до полуночной бессонницы. Всё свободное время уделял чтению книг по Java, Python, Go, PHP, MySQL, Oracle SQL, TSQL, PosgreSQL. Я владел Delphi практически в совершенстве - от 6 версии, до XE2. И зная сколько в языке есть тонкостей, понимал, что в других их не меньше. Продолжать в старом направлении я не собирался. “Delphi умирает” говорили ещё 10 лет назад. “Delphi мёртв” говорят сейчас. Большинство продуктов, разрабатываемых на нём - проекты, которым более 20 лет. Их, конечно, не мало. Но и я уже 3 года как не касался ни Pascal, ни целевой платформы - Windows.
Вторая моя проблема заключалась в портфолио. Точнее в его отсутствии. За время аспирантуры не было написано почти ни одной строки кода. До этого - лишь учебные и конкурсные проекты. Никаких коммерческих продуктов. Одним из первых вопросов на собеседовании был: “Хотя бы фриланс?” Но по юношеской глупости я не работал над проектами, которые мне не интересны. А интересно было только то, что я сам себе придумывал. Пришлось скриншоты этих проектов вместе с кодом и прикладывать.
Сомнения касались и течения моей жизни последних 8 лет. Инженер радиосвязи, менеджер, диссертация в области методик радиофизических расчетов на железнодорожном транспорте. Я мог с тем же успехом податься в РЖД, в науку, в связь. На чём и настаивали родственники. Только что-то в самой глубине души настаивало, что по жизни я должен заниматься тем, что мне интересно, а не к чему готовила жизнь.
Плюс самоедства заключался в глушении амбиций. Я был готов на любую работу, зная, что за пару лет смогу выучиться предметной области и искать нечто более полноценное.
Рынок труда
Конечно, лучший сайт для программиста - headhunter. Он же hh.ru. На втором месте могу поставить superjob. Вечерами напролёт я изучал описание всех вакансий, особо обращая внимания на приставки Junior и Intern, обделяя различных Senior и Lead.
Из поисков я сделал следующие выводы:
PHP. Довольно легко найти работу. Обычно нужны знания в Yii2. Минимально предоставляемый код работодателю: новостная лента на чистом php с поиском по разделам и тексту.
JavaScript/Frontend. Также много вакансий. Минимальные знания: ООП, vanilaJS, JQuery, HTML5, CSS3. Кое-где требуют Angular.
1С. Самый легкий старт. Вакансий много: от стажера до ведущего. В общем, и обучат, и устроят.
C++. Вакансий море. Во всех областях: программирование микроконтроллеров, графическое ПО на UnrealEngine, десктоп с использованием QT и многое другое. Желательно знать на уровне C++11. Минимальное требование - знать язык. В одной компании меня попросили написать драйвер.
SQL. Моё первое удивление. Есть программисты, которые полностью работают только с БД на их собственном языке. На работу готовы принять, если вы можете составить CRUD и JOIN-запросы любой сложности. Но без знаний PL/T SQL никак и этот пробел нужно будет восполнить. Наиболее востребованы БД Oracle и MSSQL Server. Иногда спрашивают про PosgreSQL.
Android/iOS. В мобильной разработке без опыта никак. Если у вас нет приложений в Google Play/AppStore, написанных на Java, Objective C или Swift, то лучше напишите и опубликуйте их. Вакансий достаточно, но не так, как у языков выше.
C#. Этот язык у нас любят. Он нужен и для Desktop, и для Server и для Unity3D. Очень перспективно его знать. И вакансий самых разных и интересных в достатке.
Python. Найти работу уже заметно сложнее. В 90% случаев нужно знание фреймворка django. Хорошим бонусом будет опыт работы с Flask и SQLAlchemy. Оставшиеся 10% это аналитика с библиотеками numpy и sklearn. Так что, если вы знаете только синтаксис языка, то дорога сюда будет закрыта.
Delphi. Как ни странно, но вакансии есть. В основном - серверные приложения, в связке с MS SQL. Нужны знания работы с потоками, FastReport, OLE-объектами, Webbapp, SQL и проблему 2007 года, когда переходили с ascii на utf-8.
Ruby. Про этот язык могу сказать только то, что 10 лет назад говорили про Delphi. Но если уж кто-то и хочет на нём творить, то без знания Rails навряд ли найдёт себе работу.
Java. К моему удивлению, у топ-1 языка во всех чартах было меньше всего вакансий зимой 2016 года. Тут даже стыдно говорить о количестве этих вакансий. На уровне Scala и Golang. Но если вакансия и есть, то с 90% вероятностью без знаний Spring и Hibernate вас не возьмут.
Other. Была пара вакансий на ActionScript3, Scala, Golang, Haxe, но там требовались только Middle/Senior разработчики с не менее, чем 3-6 летним коммерческим стажем работы.
Собеседования
Собеседования проходили хорошо. Я многому на них учился, после многих была мешанина в голове.
В Светлане-К на должность Delphi-разработчика с окладом в 80к рублей. Проект - их логистическая система (Server app + MS SQL). Я непринужденно общался с главой ИТ отдела в течении 4 часов. Сам не понял, как пролетело время, но мне было очень комфортно. Если бы я искал работу на своём избитом языке, то уверен, что в этой команде мне было бы приятно работать.
В Гроссмейстер тоже был нужен Delphi-программист, который совмещал бы работу с C++ и Oracle-разработчиком. Основное направление - криптография. Им важен был человек, который как сможет разложить ряд Тейлора, определить его сходимость, так и составляя PLSQL выражения. Довольно интересно и научно, но... Delphi.
В Сбербанк требовался Java-разработчик, который хорошо пишет с применением Spring и Hibernate. ЗП 70к рублей + английский + спорт зал. Но им обязательно требовался военный билет, который я не могу получить до осени.
В СберТех (Сбербанк Технологии) условия примерно те же, но они сами обучали работе на Java Pega. Я даже посетил несколько первых занятий. Штат 6к сотрудников. Условия прекрасные - здание и его обстановка, как на фотографиях офисов Google, Яндекс, JetBrains и других. Только предметная область... BPM-системы трудно назвать программированием.
В iSEOn требовался PHP-разработчик. Мне понравилось на втором собеседовании беседа с Ген.директором, который открыто сказал, что им нужен программист, который заинтересован остаться в компании. На меня эти слова сильно подействовали. Ведь PHP - это не то, что я хотел бы делать. Клепать интернет-магазины не мой профиль.
В IronNuts искали мобильного разработчика. Это геймдев студия, которая, вероятно, не могла прокормиться на играх. Иначе зачем им искать кандидатуру на должность в 70к зарплаты, который будет клепать каталоги для мебельных магазинов? Они очень хотели пригласить меня к себе в команду, но у меня сработал тот же рефлекс, что и в iSEOn - чисто мобильная разработка это не моё.
В RURU искали Python-тестировщика. Честно говоря, одно из самых привлекательных предложений. ЗП в 60к, непринужденная работа с языком, который мне нравится. Компания - дочка Вымпелкома и Альфабанка. Хороший старт карьеры.
В MegaputerIntelligence меня собеседовали трижды. Честно говоря, я бы это назвал интеллектуальным изнасилованием. Одну олимпиадную задачу задавали за другой. Проходились комбайном по всем моим знаниям, вытягивая всё и вся. Чем я должен был бы у них заниматься был не в курсе - должность BigData/Streamig/DataMining/Research Java Developer с белым окладом в 90к для меня ничего не говорила. Но... мне так понравилось общаться на пределе своих интеллектуальных возможностей, что я сразу дал согласие на их оффер.
Итого
Работу я искал 2 месяца. С декабря 2015 по февраль 2016. В течении этого времени я испытал букет эмоций. Циклично кружились радость, подавленность, вдохновение, депрессия, торопливость и сомнения. Устроился я 1 февраля и работаю уже более 4 месяцев. Работа связана со стримингом данных, машинном обучении, работой с крупнейшими американскими заказчиками. Мы даже входим в соответствующий топ на 31 строчке. Где 1 строчку занимает IBM. Самое главное, эта работа мне по душе. Во всём обозримом будущем именно этим я и хотел бы заниматься. Судьба это или удача - не знаю.
Будет ли кому интересен мой рассказ о том, как устроена компания, чем я занимаюсь и с какими сложностями сталкиваюсь?
1 note · View note
yatsukav · 9 years ago
Text
Итоги 2015
Tumblr media
Последние пару месяцев я пытался найти время для очередной записи в блог. Вот сегодня я смог. Так уж получилось, что это предновогодний день, поэтому просто вспомню самые яркие моменты моей жизни уходящего года.
Духовный рост
Tumblr media
Зима. Начался год с трансперсональной психотерапии. Это уникальная практика, где группа людей оказывается друг с другом на 2 недели. Почти каждый день мы занимались 2-х часовым холотропным дыханием, давали отзывы друг другу, делились своими мыслями и копались в себе. Всю важность данной процедуры мне тяжело описать словами, ибо ��то будет явно занижение того результата, что данный ретрит даёт. Просветление? Удержание осозанности? Возможность понять себя? Потеря страхов? Преодоление проблем? Возможность стать тем, кем всегда хотел? Нет. Ещё больше. Есть такая цитата:
Жизнь можно начать с чистого листа, но почерк изменить трудно.
– Пауло Коэльо
Так вот, это лучший способ изменить почерк.
Проект 365
Tumblr media
Весна. Началось всё с моего посещения рок-концертов групп Lumen, Louna и Чайф. На одном из них я познакомился с интересными девушками, которым провёл экскурсию по городу и познакомился поближе. Да, Люда, спасибо. Я не только благодарен тебе за поддержку, но и за знакомство с этим замечательным сайтом. Он стал моим ежедневным блогом. Каждый день стал наполнен каким-то особым воспоминанием. Здесь были найдены вдохновение, поддержка и новые друзья. Заходите.
Зентанглы
Tumblr media
Лето. Новое хобби. Я наконец-то научился сносно рисовать. Более того, смог на 2 месяца внедрить ежедневную практику рисования в свою жизнь. Горжусь своими почеркушками и в восторге от этого художественного стиля. Он же, в совокупности с моим участием в проекте подарили новое знакомство – дизайнер-архитектор Мария Решетник. У неё прекрасные завораживающие работы. А наше знакомство стало больше, чем просто дружбой.
Переезд
youtube
Осень. Распрощался с аспирантурой. Жаль, что наука нужна только тому, кто ей занимается. Защищаться не стал. Почему? Возможно, отложил на потом, возможно, сменю тему диссертации, возможно, никогда. Мимоходом стал ближе с Java. Замечательный язык с интересной концепцией. А потом… Наступил момент, которого я давно ждал. Переезд. Мой новый адрес - Московская область, 5км восточнее МКАД, г. Балашиха. Это и круто и отстой одновременно. Тут красиво, хороший климат, большие возможности для развития. Но расстояния по городу больше, ремонт, разборы вещей, новый часовой пояс, отсутствие друзей, поиск работы. Кстати, о работе. Откидываю назад науку, телекоммуникации, железную дорогу. К чёрту! Я хочу быть программистом и буду им. Хочу начать с самых низов - со стажировки, чтобы уверенно идти вверх. Кроме того, амбиции говорят мне устроиться в какую-нибудь именитую организацию. В эту сторону и копаю уже около месяца. Параллельно успел написать несколько проектов на Python, Java, PHP, HTML+CSS. Воскресил свой аккаунт на github. Оказывается это пипец как клёво! У меня много идей под реализацию - целый список! От новых до старых, от простых до сложных, от веба до мобильных приложений. Надеюсь, что в 2016 всё получится, успеется и меня будет ждать успех.
Всем, кто читает эти строки, а также каждому, кто о них даже не знает (но в особенности тебе, мой друг), желаю в новом году не хворать и быть здоровым, не заморачиваться и быть счастливым, не унывать и быть успешным. Спасибо, что ты со мной. До встречи, в новом году!
0 notes
yatsukav · 10 years ago
Text
Что нового? #4
Tumblr media
Настало время очередной рубрики «Что нового?» Сейчас, начав писать эти строки, я испытываю двойственные чувства. В начале июня я хотел сделать запись в эту рубрику, так как считал, что количество новостей просто разрывное. Но смотря на то, что последняя запись была сделана всего 2 недели назад, я останавливал себя. Думал: «Напишу еще через 2 недели.» Прошло 4. И сейчас мне вроде и писать-то нечего. Как же так))
В общем, открываю свои блокноты, дневники, заметки и начинаю вспоминать, что же нового произошло в моей жизни за прошедшее время. 
Начну с того, что открыл для себя игру Alto на смартфоне. Красивый time killer, оригинальный, с простой механикой, миссиями, ачивками, открытием новых персонажей, системой достижений и геометрическим живым миром. Мне нравится та атмосфера, в которую я погружаюсь, запуская эту игру.
Tumblr media
Посмотрел 9 сезонов сериала Доктор Кто. Не мог не посмотреть его. Слишком много шуму вокруг себя создавал этот персонаж. Но я ни капли не пожалел, хоть и по-настоящему интересным сюжет стал только с 6 сезона.
Tumblr media
Прошел весенний сезон аниме. К сожалению, посоветовать почти нечего. Продолжаю смотреть «Импульс мира». Рекомендую «Судьба: Ночь схватки» [TV-2], как один из самых красивых и динамичных сериалов. Приятно было посмотреть «Может я встречу тебя в подземелье?» Ах, да, началась новая арка Fairy Tail.
Начал вести проект 365. И на данный момент не пропустил ни дня. Это один из лучших способов самоконтроля и развития навыка фотографирования. Суть проста — каждый день нужно выкладывать по 1 фотографии. Можно добавить краткое описание. По-моему это лучший сервис для ведения онлайн-дневника.
Открыл для себя Хроники Амбера. Читаю взахлёб. Интересно с самой первой страницы. Прочитал уже 4 тома. Осталось 6, но мне хочется, чтобы эта история не заканчивалась никогда.
Tumblr media
Побывал на дне города в Иркутске. Кому-то может показаться этот праздник банальным, но мне всегда в этот день казалось, что жизнь проходит мимо меня. Происходит большое событие, к которому готовятся, которое празднуют, делятся впечатлениями даже неделю спустя, а я всегда сидел целый день дома. Но не в этот раз. Большие костюмированные колонны городских организаций, громкая музыка, слова поздравлений, тысячи улыбок и погружающая в себя атмосфера праздника. Вечером меня ждал живой концерт Уматурман и 20-минутный салют. Один из самых красивых, которых я видел. Этот день всегда будет ассоциироваться у меня с Иркутском.
Tumblr media
Заказал и получил много классных книг. Духовным и художественным чтивом я обеспечен, чему крайне рад. А еще начал писать перьевыми ручками. Мне по душе такой заскок. К тому же отличная возможность научиться правильно писать. Так, чтобы не было напряжения в кисти. 
Tumblr media
Запустил творческий проект Артмузыка. Два предыдущих поста в блоге об этом проекте. Лишний раз хотелось бы поблагодарить людей, который поддержали мою идею и вылили свои чувства на бумагу. Мне было очень интересно смотреть на ваши работы, сопереживать их, и читать ваши описания к работам. Большое спасибо.
Начал рисовать в технике зентангла, руководствуясь единственной на данный момент в русском сегменте книгой Бекки Крахула «Зентангл. Рисование для релаксации, вдохновения и удовольствия.» Курс рассчитан на 42 дня и 30 из них уже позади. Кроме того, я уже успел поучаствовать в закрытом онлайн проекте «Рисуем в стиле Зентангл», который длился 3 недели. О самой технике, моих переживаниях и результатах — отдельно и немного попозже. Но я рад, что в мою жизнь ворвалось творчество. И тут спасибо Lampogolovii за его Почеркушки, которые так вдохновили меня.
Tumblr media
Кстати, о Почеркушках. Темы работ «Царь», «Свет» и «Пещера». «Пещера» — была последней, десятой, темой в этом сезоне. Надеюсь, что L продлит удовольствие и на третий год. 
Сегодня я узнал, что портал glscene.ru больше не существует. Для меня это сродни трагедии. Ведь с одним простым сайтом у меня ассоциируется значительная часть моей жизни. Чтобы обозначит, насколько важным для меня был этот портал, нужно рассказать немного о себе. С самого детства, с 4х лет, я любил компьютеры. Мимо меня пролетели DOS, Windows 95, 98, Me, 2000, XP... Компьютер был непостижимой магией и мне самому хотелось делать программы для него. Поэтому с 11 лет я попросил у знакомого отца книгу по Visual Basic 4.0 и начал учиться программировать. В 14 лет в одном из журналов Игромании от masterK я узнал о том, что можно делать игры. И существует движок GLScene, в котором всё делается легко и просто. За 2 недели я перелопатил учебник по Pascal и пересел на Delphi. В тот момент glscene.ru еще не существовало. Был сайт krieker (или типа того), на домене 3 уровня с форумом по этому движку. Затем сайт переехал на glscene.ru. Я влюбился в него и в людей, которые на нём общались. Мы делились друг с другом своими разработками, поддерживали общение, вместе вдохновлялись, соревновались, помогали друг другу решать проблемы и находить интересные решения. Я нашел много друзей и вдохновения тут. Когда посещаемость начала падать, а я был среди админов, то начал устраивать конкурсы и высылать призы. Пытался всячески поддерживать интерес к этому ресурсу. Что уж говорить, если меня даже сейчас люди находят и просят помочь с проблемой, а я по памяти подсказываю решение, хотя уже несколько лет не касался этого движка. Окончательно сайт я перестал посещать к середине 2014 года. Он был со мной на протяжении 10 лет. И стольких людей я помню по их придуманным именам. А сейчас это всё словно мертво. Мне не связаться с теми, с кем не создал контактов вне этого сайта. Не прочитать про новые проекты людей, их проблемы, не поучаствовать в решении, чтобы помочь очередной идее воплотиться в жизнь. И это лишнее напоминание про то, что с тех пор я так и не нашел себя в программировании. Чувствую, что похоронен вместе с духом других людей на этом ресурсе. Надо что-то делать... Чтобы освоить что-то новое необходимо потратить уйму времени. Меня всегда это останавливало. Я понимал, что знаю досконально паскаль и сцену. И не хотел начинать с нуля с другим ЯП и движком. Уже нет ни этого движка, ни языка. И, возможно, пора бы уже и начать какие-то телодвижения. Только в какую сторону — не ясно.
0 notes
yatsukav · 10 years ago
Text
Артмузыка #2: Enya — Caribian Blue
Tumblr media
Подошли к концу сроки второй артмузыки. Я удивлен: целых пять работ! Очень приятно, что столько людей отозвалось поучаствовать в творческом ключе. Рекомендую перед просмотром всех работ прослушать исходную композицию (лучше с закрытыми глазами).
youtube
Работы
Cremnezemka
Tumblr media
DrEwan
Tumblr media
Evgynka
Tumblr media
Fen
Tumblr media
Хайде
Tumblr media
Мои комментарии
Cremnezemka
О, акварель! В отличии от прошлой работы появились цвета. Мне кажется, или я вижу дерево с розовой листвой, которую несёт ветер? А сверху всё укрыто золотым сиянием. Нижние линии — это ритм? Нравится блеск, который создают твои краски.
DrEwan
Я явно видел чёрную вуаль и волны, высоко поднимающиеся, как занавески, переходящий в голубой оттенок. Ближе к концу инструменты сыграли так, что казалось, что на сцену начал выдвигаться белый шар. Но его так до конца не вытянули. И хотелось полоску золотистого цвета и зелеными вкраплениями поверх основного мотива. Выполнил в акварели на картоне размером 9×9 см.
Evgynka
В твоих работах мне нравятся мазки, которые создают краски. Уже не знаю дело в красках или кисточке, но смотрится завораживающе. Белые точечки на розовом ты сделала специально или так получилось? Они похожи на звёзды и очень подходят к песне. Мне кажется, что изображен закат на море.
Fen
Новый участник! Приветствую, очень рад видеть твою работу вместе с остальными. Надеюсь, что и в будущем будешь участвовать вместе с нами. Работа получилась эмоциональной. Глубокий голубой, со множествоим видимых мазков, в котором так и хочется утонуть. Как получились круглые еле заметные разводы? Словно капли дождя, падающие в воду.
Хайде
Волшебно! Я бы описал картину, как «Танец звёзд в ночи». Сочетание золотого и чёрного всегда шикарно смотрится. Работа завораживает и от неё трудно оторвать взгляд. Что Вы видели, когда рисовали? Это всё было в движении? Мне очень нравится. И ещё один вопрос: где рисовали?
Комментарии от  Cremnezemka
Я начала рисовать с ритм-линий.) Да это ритм и про дерево всё верно, по крайней мере я его тоже вижу, а выросло оно там само.
DrEwan
Шарику не хватает светотени, ну или просто я такая не внимательная. А полоску света я бы нарисовала на отдельном листке, вырезала и приклеила бы, но это только моё видение.
Evgynka
И прошлый раз и в этот видя твои работы думаю «точно! Я вижу песню!»
Fen
Очень ярко и глубоко, как будто из песни взята лучшее и иллюстрировано)
Хайде
Самая не похожая на другие работы, хотя тесно переплетается с работой DrEwan. Вы оба увидели в песне то, что я не заметила. И это здорово.)
Комментарии от Evgynka
Интересно вес таки как музыка может проявляться в виде образов и цветов! Как ни странно, yо я тоже увидела черный, и даже что-то похожее на ночь! Я пыталась изобразить это в виде белых звездочек на темно-синем фоне, но что то не сильно он темным получился… но в голове возникало именно картина воды и ночи ,но такой не слишком темной, а приятной, летней ночи, я бы сказала! Как раз у Хайде прям таки как я видела черный с переходами в золотистый (я тоже как то упустила его из своего рисунка, но он там точно был!:))) На твой рисунок, Хайде, прям так и хочется смотреть и уходить в глубь вместе с музыкой, очень приятная бархатистая ночь и золотистые нити!!!
Fen Очень четкая передача света голубого в синий, прям так и слышен шум дождя или каплей, стекающих по стеклу:)))) Действительно, самый главный цвет, а мой взгляд, в этой песне как раз синий и голубой. Очень приятно рассматривать все переходы оттенков в твоем рисунке! Супер!
Dr.Ewan Переход от голубого в темно синий и так далее в черный — очень хорошо получится! А белый шар — просто вообще что-то мистическое и такое обволакивающее! Я прям вижу теперь как только слышу мелодию как он плавно появляется! так классно,что ты увидел это!!!
Cremzemka Розовый цвет я тоже увидела, но в твоем рисунке очень четко передан образ как голубоватый пересекается с розовым и как бы нет границ! Очень здоровски получилось,да еще и акварелью! Золотой небосвод можно еще представить как свет луны, такой переливающейся и обволакивающей все остальное! У тебя очень хорошо, на мой взгляд, получилось передать красками движение образов и цвета!!
Жду с нетерпением следующего задания! ^-^
Комментарий от Хайде
Решила не переслушивать много раз, чтоб чётче поймать. Включила и начала рисовать. Центральное движение - это когда во второй половине песни она нарастает и взрывается. Интересное упражнение. Рисовала в обычном пейнте. Первый рисунок был карандашным, но потом решила что чёрный недостаточно насыщенный, и надо переделать. Когда слушаю эту песню, вижу золотой водопад в бесконечном падении, он светит, но не освещает ничего кроме себя, он словно из света и жидкого металла одновременно, падает, и от него разлетаются, расцветают брызги, приходят в самостоятельное движение. Из подсознания вынырнуло что-то связанное со старыми детскими верованиями в сказки.
Послесловие
Я получил большое удовольствие, смотря на присланные работы и прокручивая песню раз за разом, всматриваясь и пытаясь ощутить тоже, что и автор. Почти во всех работах преобладал голубой. Словно морская свежесть. Ещё можно отметить наличие золотого, розового и чёрных цветов. Хотелось бы от всех услышать краткий комментарий по своим работам, если он возможен. Ведь это такой интересный опыт. Ну и комментарии работ других участников, если они вас задели или вызвали какие-то чувства.
0 notes
yatsukav · 10 years ago
Text
Артмузыка #1: Wye Oak – Civilian
Tumblr media
Пару недель назад, на пикабу, наткнулся на интересный пост. Спокойно пропустить мимо глаз такую интересную абстракцию, взятую не с потолка не мог. Я не могу утверждать что такое синестезия: ассоциативный ряд или же физиологическая особенность, но ещё в школе я был твёрдо уверен в некоторых цветах разных букв. Так вот, Если уж эта девушка действительно обладает таким восприятием, то я решил проверить себя. А заодно и всех желающих.
Сначала слушал мелодию из списка (благо, подборка совпадает с моими музыкальными предпочтениями), затем смотрел на картину. Тут не хватает удивленного смайла с восклицанием: «И обожемой!» Ну, действительно цвета на картине, их расположение совпадают с тоном и ритмом песни. Кое что я бы исправил, но в целом всё ок. Новую суперспособность я решил испытать на деле, выбрав песню и сделав по ней рисунок. А чтобы не было скучно, то предложил своим друзьям принять участие в этой затее. Иногда необходимы были дополнительные объяснения. Кто слушает музыку, гуляя по городу меня сразу поймёт. Все замечали, что только стоит надеть наушники с любимым плейлистом, как мир сразу становится другим. Вроде трек треком, но он может звучать грустно, холодно, медленно, замораживающе, отдавать синим оттенком с проблесками солнечных зайчиков, вызывающим трепет. Осталось только нарисовать.
youtube
Работы и комментарии
Conferno
«Когда слушаю этот трек всегда одна картинка: американская ферма и закат. Все в оранжевых цветах.»
Cremnezemka
Tumblr media
DrEwan
Tumblr media
Evgynka
Tumblr media
Хайде
Tumblr media
«Вышло бы что-то розово-золотое, с закатом, фермой и лошадьми. Центральное движение — это когда во второй половине песни она нарастает и взрывается.»
Мои комментарии
Conferno
Саня, ты ленивчик. Но всё равно спасибо за уделенное время. Не знаю, влияет ли жанр (кантри мелодия), но у меня тоже твёрдая ассоциация с американской фермой и оранжевыми тонами.
Cremnezemka
Ты просто разрушила все мои ожидания от нарисованного. Но я не могу не согласиться с твоей работой. Хочется назвать ритмическим рисунком, ибо я явно вижу тут ритм. В моей голове черные лапки тоже крутились по спирали. Ты молодец!
DrEwan
В голову приходила американская красная пустыня, деревянная телега, крутящееся колеса, лошадь гнедой масти, сено, возможно, пшеничные поля. И время ближе к вечеру. Собственно, рисовал, что видел. Возможно, стоит зубной щеткой добавить немного ярких розовых, синих и белых точек по краям, преимущественно сверху.
Evgynka
Работа, которая полностью соответствует моему представлению о рисунке. Мне кажется, что у нас с тобой вышли очень схожие картины. Сочетание синего и желтое рождает небольшое зелёное поле. Очень нравятся мазки на коричневом фоне.
Хайде
Радужная работа без холодных тонов. У нас с Вами одно и тоже словесное совпадение композиции. Не знаю, абстракция ли это, но я вижу небо и залитый красным горизонт. А ещё поля и голую землю. Здорово вышло.
Послесловие
Мне приятно, что на мою просьбу ответило так много людей. Но, так вышло, что каждого пришлось попросить и даже немного уговаривать. Хотя для первого экспериментального раза немножечко можно. Всем спасибо! Если у кого-то возникнет желание присоединиться, развить свои творческие навыки, цветной слух, или просто порисовать в удовольствие, то пишите в комментариях или свяжитесь со мной.
0 notes
yatsukav · 10 years ago
Text
Что нового? #3
Tumblr media
Прошло достаточно времени с последнего поста «Что нового» Почти 2 месяца. За это время набралось достаточно вещей, которые хотелось бы описать в блоге. Или, которые будут описаны позднее, но более подробно. Или недоговорок, которые навсегда останутся со мной. Несколько беспокоит тот факт, что блог потерял свою направленность. Раньше было больше ясности — здесь пишет человек, занимающийся программной разработкой, в частности, игр. Сейчас это нечто всенаправленное и одновременно ни о чём конкретное. Что, в принципе, и отражает текущий этап моей жизни.
Примерно через неделю после выступления Lumen я пошел на концерт Louna. Во всё тот же ночной клуб «Бензин». Планка ожиданий была изначально занижена, ибо память о ненастроенном звуке и плохой работы с толпой прошлого концерта еще не ушла из головы. Однако, в этот раз всё было действительно круто. Жаль, что я не знал ни одной песни, кроме самых старых, но удовольствие и заряд энергии я получил сполна.
Tumblr media
Там же я познакомился с девушками из Читы — Людмилой и Ирой. Было неожиданностью узнать, что в Иркутск ездят даже из соседних регионов, чтобы увидеть любимых артистов. Пообещал им устроить экскурсию по городу на следующий день. И устроил:) Мы замечательно провели время, гуляя по городу. Даже суток не прошло с момента знакомства, а меня не отпускало ощущение, что знаю их вечность. На днях провел вечер с Людой уже в Чите. Она оказалась небольшим открытием, отзеркалившая мой собственный образ жизни. На душе было приятно, а в ногах по утру — боль.
После концерта была аттестация перед кафедрой и учёным советом. Всё прошло довольно гладко, но я снова вынужден менять направление работы. Учитывая, что до окончания аспирантуры осталось всего лишь пол года, не знаю к чему это приведёт.
Решил перейти на перьевые ручки. Не знаю откуда взялся такой позыв, однако, обнаружил в закромах несколько экземпляров с различными системами подачи чернил и тушь. Убедился, насколько каждая ручка уникальна и своеобразна. Также заказал из Японии Pilot Cavalier Deluxe. Надеюсь, что она порадует меня.
Очередная порция почеркушек у Lampogolovii. Темы: «Инструмент», «Под водой», «Лето», «Миллион лет до нашей эры» и «Храм». А еще моя работа на прошлогоднюю тему «Время». Спасибо, конечно, Lampogolovii за интересную идею и тёплую дружественную атмосферу. Раньше я даже представить не мог, что способен выдавить из себя что-то на бумаге. А теперь читаю статьи и смотрю видео по различным техникам.
Tumblr media
 На Ozone и LibeX заказал себе целую стопку книг. Основные темы: арт, дизайн, презентации, випассана, ОШО, буддизм, психология и го. Почти вся литература нехудожественная. С торрентов скачал книги по блюзовым риффам на гитару, а еще приобрел Synthesia. После переезда буду практиковаться на своей midi-клавиатуре. У меня столько творческих планов и идей: рисунки, открытки, карты, арт-буки и арт-дневники, скульптуры, музыка, вырезание из дерева, занятия поингом, книги и рассказы. Просто не представляю как найти время на всё это. Но это и не важно. Главное, что вдохновение в обоих лёгких, а через руки оно находит путь в жизнь. 
Не брился в течении трёх недель. Хотел увидеть себя с бородой. Если лёгкая небритость мне ещё нравилась, но когда растительность начала беспорядочно расти во все стороны, я понял, что это не совсем моё. По крайней мере не сейчас.
На майских праздниках решил капитально обследоваться в диагностическом центре. Теперь я знаю от чего какие симптомы у меня проявляются. Остаётся только заботливее относится к своему здоровью, поддерживая тело в тонусе. Кстати, пользуясь случаем передаю привет моему мозгу:
Tumblr media
0 notes
yatsukav · 10 years ago
Text
Обзор инди-игр #2
Tumblr media
Из области "рекомендую". Игры, которые я не могу не выделить на фоне тысяч других. В них всех есть своя атмосфера, глубокий сюжет, проработанный мир, разнообразие и немного ностальгии. Постараюсь быть кратким (=
Abobos big adventure
Tumblr media
Интересная аркада, эдакая смесь самых известных игр под Dendy, приправленная юмором и хардкором. До конца так и не смог дойти) Повторю попытки уже с геймпадом.
Доступна в вебе, под мак и винду.
Приключения Френки Попохода (Franky The Asswalker)
Tumblr media
Шикарная авторская игра, сделанная в RPG Maker, от нашего соотечественника Kujaku. Перед игроком открывается сказочный мир, невероятно добрый, наполненный юмором, интересными задачками, музыкой из Loco Roco и собственноручно нарисованной графикой. Я уверен, что любому придется этот квест по душе. Время прохождения не займёт больше часа.
Нашел русскую и английскую версии под винду.
Treasure Adventure Game
Tumblr media
Игра - шедевр. Пройдя её, я получил неописуемое удовольствие. Просто невозможно остановиться исследовать этот приключенческий мир вместе с мальчиком и попугаем. Юмор, 8bit графика, большой исследуемый мир, платформер с элементами аркады и квеста и захватывающей сюжетной линией.
Как и предыдущие - полностью бесплатна. К сожалению, доступна только под Windows. Официальная страница с ссылками на скачивание здесь. Игру с русским переводом можно найти на рутрекере. А следить за разработкой HD ремейка можно в специальном блоге.
UnEpic
Tumblr media
Эта игра схожа с предыдущей. Большой проработанный мир с кучей возможностей. Платформер с элементами РПГ про гика, который каким-то невероятным образом попал в игру. И снова юмор, снова 8bit, магазины, магия, загадки, ловушки и затягивающая атмосферность. Доступен перевод на русском и режим мультиплеера.
Купить можно в стиме под любую платформу, узнать больше на официальном сайте.
The Binding of Isaac
Tumblr media
Инди-рогалик о котором не слышал только ленивый. Тот самый пример бесконечного запаса реиграбельности и простой механики.
В стиме доступна классическая версия (мак+вин), а также hd ремейк (мак+вин).
Aquaria
Tumblr media
Одна из первых сыгранных мной инди-игр, как только они стали так называться. Была куплена на второй распродаже Humble Bundle. Это замечательный сказочный платформер, наполненный загадками и интересным сюжетом. Игра длинная, а меня не хватило до конца. Но любому игроку определенно стоит окунуться в этот подводный мир.
Доступна в стиме под винду и мак.
0 notes
yatsukav · 10 years ago
Text
Иди в страх
Tumblr media
Порой смотришь на других людей и диву даёшься: «Почему они это могут, а я нет?» Словно в голове есть какой-то знак: «СТОП». Пытаешься повторить также, а в голове появляются мысли: «Да глупо это... ненужно... зачем... он лучше... я выше этого... он другой... у меня жизнь не такая... я не смогу...» Преодолеваешь их, делаешь шаг к действию, а уже и руки дрожат, комок к горлу подступил, мысли путаются, кровь к лицу приливает. Я, конечно, утрирую. Не всегда все симптомы появляются за раз. И не всегда именно те и так, как я описал. Но почему так происходит?
Введение или структура личности по Фрейду
Tumblr media
Чтобы разобраться стоит обратить внимание на детство. Легче это сделать, если в семье уже есть маленький ребёнок. Когда дитя совсем малое, оно чистое и делает что душа пожелает: попросит кушать, будет рассматривать игрушки, играть с носочками, облегчится прямо у вас на руках, потрогает нож, будет днём спать, а ночью кричать и т.д.
Чтобы уберечь чадо от опасностей родители пытаются научить его ограничивающим правилам: «не делай это; а это делай только так; так поступать нельзя; так вести себя нельзя; не смотри туда; не хоти этого...» Родитель считает правила разумными, основанными на жизненном опыте. Но именно на этом этапе излишняя забота может навредить: «Видишь тот ребёнок испачкался в песочнице? Это же смешно быть таким грязным. Смотри у девочки юбка голубая, о чем только родители думают! А тот мальчик ничего не знает, совсем глупый, с такими даже общаться не стоит.» И вот мы получаем брезгливого, стереотипного интроверта. Все подобные «правила жизни» составляют наше супер эго или идеальную личность. 
Однако, папа с мамой за всем не усмотрят. Обсмеяли девочки, не захотели играть мальчики, обидел юноша постарше. И вот в человеке затаился страх перед женщинами, обида на мужчин и боязнь начальства. Собственно, всё это составляет наше подсознание.
Наше истинное я или эго, то самое про которое говорят «прими себя», находится ровно посередине между супер эго и подсознанием. Если последние два излишне раздуты, то они, словно тиски, будут сдавливать эго в блин.
Так и получается, что людьми руководят их собственные страхи: «найти партнёра, чтобы не остаться в одиночестве», «ругать руководство, так как оно не заботится о нас», «переедать, потому что еда не всегда есть, за неё заплачено», «не увольняться, а то работу нигде не найдёшь.»
Ещё одной особенностью психики является тот факт, что мир мы познаём через себя. Например, если в супер эго будет акцент на торопливость, то человек с этим акцентом будет стараться не только сам делать всё быстро, но и принуждать других, так как считает это правильным.
Грубо страхи можно объединить в группы: страх предательства близким человеком, страх предательства обществом, страх оценки, удерживание эмоций (агрессии, слез, раздражения, обиды), желание манипулировать другими, неуверенность в собственной точке зрения, накопление ненужного и др.
Работу над собственными недостатками я распределяю на три этапа:
Поиск страха поведенческим методом, либо методом психоанализа.
Создание новой привычки (а жить в страхе тоже привычка), трансформация эмоций.
Забвение, или прощание со страхом страха.
Tumblr media
Коротко о методах
Методик работы над собой довольно много. И это хорошо. В сердце каждого человека идёт своя дорога. С другой стороны, все мы люди, а значит уникальных проблем нет. Самые распространённые методы помогут всем. Разница в скорости достижения эффекта.
Поиск
Tumblr media
Поведенческий подход подразумевает под собой повторение действия, которого мы боимся больше всего. На опыте доказать себе, что ничего страшного в этом нет. Страх критики? Одень капюшон, наушники, иди в метро и подпевай вслух, слегка пританцовывая. Потом сними капюшон. Убери наушники. Стеснение и страх людей пропадёт. Повторяй упражнение каждый день. Неуверенность в себе? Ступай в парк, подойди к любому человеку и поговори с ним. О погоде, о моде, о администрации, о чём угодно. Да можешь даже так и сказать, что стесняешься знакомиться и общаться с людьми, а подошел только из-за того, что хочешь доказать себе, что ничего страшного в этом нет.
Психоанализ предполагает уход в воспоминания. Необходимо найти отправную точку от которой пошёл страх или стереотип. А стереотип это страх не соответствовать своему идеалу. Как только точка будет найдена, а находится она обычно в детстве, так мы сразу поймём, какой ненужный груз тащили с собой столько лет.
Удержание
Ну, доказали себе, что страх был в детстве, а сейчас ему быть с нами безосновательно. Даже делая запретное ранее действие видим, что ничего страшного не происходит. Мы свободны? Нет. Образ жизни складывается в привычку. Страх (негативная энергия) будет возвращаться. А нам придется каждый раз от него избавляться снова и снова (трансформировать в позитивную.) Каждый раз мы будем вспоминать и повторять наш опыт работы над этим страхом. Находить новые ответы и подробности. Углубляться в причины. Вернуться в старое русло очень легко. Само тело начнёт идти в отказ новому образу жизни. Ибо непривычно. Страшно. Будут появляться мысли: «А как жить с этим? Неужели я во всём заблуждался? Да зачем оно мне? Надоело следить за собой!» Тут главное продолжать. Ведь мы понимаем, что мы скидываем с себя груз, который держали слишком долго.
Прощание
Очень интересная стадия. Начинается она в тот момент, когда новый образ жизни сформирован: страх больше не имеет прежней руководящей силы, можно спокойно идти ему наперекор. В этот момент мы знаем о нём всё. Можем, как нам кажется, даже другим помочь справиться с этой проблемой. Но страх не ушёл до конца. Каждый раз, мы вспоминаем его: помним, какими были, что переживали, сколько упустили, как долго это всё продолжалось, как много себе доказывали, что не стоит держать это. Начинаем бояться, что страх вернётся снова. Что всё насмарку. Боязнь рецессии. Уже не сам страх на нас давит, а выработанная привычка рефлексии: слежение за собой, сформированное на этапе удержания. Самое время начать доверять самому себе. Перестать следить. Отпустить. Позволить голове начать забывать ненужное. Забыть страх и жизнь в страхе. Забыть долгую и упорную борьбу внутри себя. Хватит уже бояться, хватит сражаться, мы проделали такую большую работу не для того, чтобы навсегда в ней застрять. Пора уже начать жить. Оставить всё позади. И просто жить и дальше. Если что-то произойдёт снова — мы знаем как этим справиться. Сейчас этого нет, а значит и волноваться не о чем.
Tumblr media
0 notes
yatsukav · 10 years ago
Text
Шрифт своими руками
Tumblr media
На что можно потратить день? На хорошую книгу, поездку за город, общение с родными или на создание шрифта. Собственно на последний пункт я потратил своё время. И теперь знаю весь процесс от и до. Для чего может понадобиться собственный шрифт? Наверное, тот кто читает подобные статьи ответ уже знает. Навскидку могу только отметить, что собственный шрифт бесплатен для коммерческого использования, в игровой индустрии может понадобиться для стилизации каких-либо надписей, а студент с шрифтом, основанным на собственном почерке, может забыть о конспектировании лекций!
Инструменты
Лист бумаги (лучше потолще), ручка (карандаш/маркер), Photoshop (или аналог), FontLab Studio (доступен на всех платформах, другие программы не пробовал, может там также), Браузер+Интернет (для создания web-шрифта.)
Исполнение
Я решил создать рукописный шрифт на основе собственного почерка. Забавы ради. Поэтому первое, чем следует заняться - изобразить все н��обходимые символы на бумаге/графической программе. Я фатально ошибся, решив, что достаточно будет символов Aa-Zz, Аа-Яя, 0-9. Из-за этого мне пришлось создавать все пунктуационные и типографические знаки на основе частей букв. Но вернемся к делу. После сканирования получилось следующее:
Tumblr media
Начинаем фотошопить. Обесцвечиваем. Яркость/контраст на 0/+100. Яркость/контраст на -30/+100. И еще 2 раза яркость контраст на 0/+100. Ластиком стираем всё ненужное. Выделяем каждую букву нажимаем Ctrl и левой кнопкой мышки размещаем друг с другом на небольшом расстоянии. Кадрируем изображение.
Как понимаем, после сканирования добиться чистого фона тяжело. Хоть мелкие, размером с пару пикселей, но будут видны черные точки. Начнем их убирать. Дублируем слой. Выделяем весь белый цвет и жмём разок на Delete. Теперь в стилях слоя добавляем обводку на 4 пикселя и ластиком стираем оставшееся. Обводку (из центра) можно растрировать, чтобы сделать символы пожирнее.
Tumblr media Tumblr media
После прошлых манипуляций наши буквы окажутся прилично повреждены. Вооружаемся ластиком с кистью и начинаем всё восстанавливать.
Tumblr media
Отлично. Теперь переходим к непосредственному созиданию прекрасного. Загружаем любой готовый шрифт с интернета. За основу я взял рукописный шрифт Good Vibes Pro.
Удаляем ненужные глифы. Открываем первую букву. Между линий [A] и [C] должны быть верхние точки самых высоких букв. На [D] должны опускаться такие литеры как р, g, q и подобные. Сердцевина находится между [0] и [x]. Если мы выделим в фотошопе нужную букву и скопируем её [Ctrl+C], а потом вставим в FontLab Studio [Ctrl+V], то изображение будет масштабировано под крайние точки того символа, которое уже есть. Good Vibes Pro имел много декоративных элементов, поэтому мне приходилось выделять выпирающие точки и поднимать их до черты. После вставки указываем вертикальными маркерами начало и конец символов. [Ctrl+A] и [Delete] чтобы убрать старое векторное изображение символа. Затем строим новое через Tools -> Background -> Trace. Трассировка не самая точная, из-за чего сплайны приходилось немного править.
Tumblr media
После манипуляций над всеми символами идем в File -> Font Info. Указываем все копирайты и другие нормативные сведение о шрифте. Через Tool -> Quick Test As -> Open Type TT (.ttf) можно посмотреть как смотрится новоиспеченный шрифт. Теперь File -> Generate Font... и вуаля! Наш шрифт готов.
Важно: не забывайте периодически сохраняться.
Результат
Tumblr media
Скачать
Желающие могут воспользоваться моим шрифтом, скачав его.
Интернет
Заходим на прекрасный сайт с созвучным названием: web-font-generator.com, загружаем свой шрифт и пользуемся.
0 notes