Избранное

Все заметки

GitHub icon Github

Buffer icon Проекты

Обо мне

Избранное

Backstage WWDC 2019

Вернулся из Сан-Хосе, был на WWDC 2019, хотелось бы поделиться некоторыми деталями от участника.

В марте «выиграл в лотерею» билет на WWDC и начал оформление доков. Об этом можно написать отдельный пост, если интересно, как сейчас в России получить американскую визу (не быстро, но может повезти). Всё успел, в конце апреля уже была готова виза :)

Три перелёта и я в Сан-Хосе. Сама конфа проходила в McEnery Convention Center, в центре города. Как пишет википедия, Сан-Хосе третий по численности населения в штате, после Лос-Анджелеса и Сан-Диего и десятый в США, а так и не скажешь О_о

Регистрация, получения бейджика, подарков и гоу ту презентация. Начало выглядело как-то так:

Вообще, уровень организации конференции просто супер! Всё очень чётко: сессии, доклады, свет, звук, работа волонтеров, приложение с расписанием и новостями, лаборатории, еда/напитки, всё работало, как часы. Было пару раз когда у докладчиков что-то не компилировалось или не получалось подключиться, но на этот случай были записаны специальные ролики в симуляторе с «нормальной» работой приложения (видимо ранее были прецеденты).

Про саму презу Keynote, думаю особого смысла нет говорить, все всё уже двадцать раз рассказали в подробностях. После, когда смотрел запись, не нашёл на ней как зал смеялся после объявления цены на подставку для нового Mac Pro, это было громко, видимо такие звуки приглушают :)

После Keynote, Тим который Кук, вышел к прессе показать новые возможности AR. Выглядело это вот так:

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

Надо сказать, что очереди были везде, из-за большого количества участников: на вход, на доклады, в WWDC Store была отдельная очередь которая начиналась далеко на улице:

После входа в сам магазин, на покупку было ещё 8 очередей с двух сторон, но двигались они достаточно быстро, хотя может мне повезло. Из ассортимента: майки ($35), кепки ($40), свитера ($60), наушники, переходники, зарядки и т. д.

У всех были бейджи, даже у собак :)

Не попал на Bash в четверг :( Был в это время в Сан-Франциско. По фоткам было классно. Жаль конечно...

И немного про доклады. Их было много и темы самые разные. Каждый день с 9 до 17. Много было про SwiftUI и как его использовать, про AR, новые возможности Xcode и iOS 13. На все естественно не было возможности попасть, потому что они шли одновременно в трех залах. Но потом обязательно посмотрю записи.

Ну а сам Сан-Хосе так себе, по сравнению с Сан-Франциско :) Но всё равно очень красиво и интересно.

Про Notion

Я давно слышал про Notion.so, и на VC.ru и в телеграмм-канале его дизайнера читал, зарегался давно, но всё никак попробовать времени не хватало.

Вообще, уже долгое время хочу систематизировать все свои записи, заметки, напоминания и списки в одном месте. Сейчас многое хранится в Pocket, Google Keep, Docs и Drive. Думал развернуть у себя что-то типа MediaWiki, DokuWiki, чтобы был поиск, вложенные страницы, таблицы и вот это вот всё. Но так до этого дело и не дошло. Зато, до Notion добрался.

Если коротко:

сначала не понятно и сложно, потом интересно и многообещающе :)

Это такой инструмент «всё в одном». Действительно, из-за того что возможностей много, не сразу понимаешь, что и как себе организовать, с чего начать. Разработчики это тоже понимают, поэтому у них есть несколько начальных шаблонов. Но никто вас не ограничивает в «творчестве», можно начинать и с чистого листа. Кроме того, появились уже сайты со сторонними шаблонами, которые можно легко к себе продублировать. Также, можно импортировать документы в разных форматах.

Планирую туда перенести базу знаний по своим проектам, также таблицы из Trello, списки задач и диздоки. Ну и личные всякие штуки. Есть мобильные приложения и проги для Windows и MacOS. Ещё удобно отправлять в Notion ссылку на какой-нибудь сайт/статью/видео через встроенную функцию «Поделиться» на Android или iOS, как я делал это с Pocket. Возможностей по внутренней организации и оформлению страниц — море.

Эта штука бесплатна для личного пользования с ограничением в 1000 блоков, всё что больше — платно, $4 в месяц. Если нужен доступ для нескольких пользователей, с обсуждениями и админскими опциями, то $8.

Было бы классно, если была self-hosted версия, как например DokuWiki или Gitlab, но пока отсутствует. Посмотрим, как быстро кончатся «бесплатные» блоки :)

Наставничество

Читаешь новости, блоги, фейсбуки, (не)успешные истории и прочее, и видишь, что многие кто добился успеха, сделали это на своих ошибках. Да, у них всё получилось, набрались опыта, заработали деньги, написали статью, как они через всё прошли и т. д. Но сколько было потрачено времени и сил? Наверно есть ситуации когда это оправдано. Хотя сейчас, с ходу — не назову...

Как пример, образование в университете/институте по IT специальностям, в России. Это же полный провал. Понятно что сейчас информация быстро устаревает, но там же вообще ахтунг. Кто-то скажет, что там дают фундаментальное образование, что там учат учиться! Возможно. Но не 5 лет же! Специалисты выходят не подготовленные к реальной работе. Если ты не начал самообучаться, если не пошел стажироваться в профильную компанию, то такому выпускнику сложно будет найти работу. И работодателю нужно будет учить его с начала. Ценность такого высшего образования сильно преувеличена.

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

У нас почему-то плохо знают (забыли?) про наставничество. Это когда ты хочешь чему-то научиться/добиться и находишь себе опытного в определенной сфере человека, который уже прошел весь путь, который может дать совет, у которого скорее всего тоже был наставник, а у того тоже...:) В общем, человек, который готов помочь и замотивировать. Да, такие есть. Человек может быть наставником и даже не знать об этом. И наверное, наставнику не обязательно быть «профессором» в своей сфере.

У всех профессионалов — есть тренер, а у всех успешных людей — наставник.

Кажется, так это звучит.

Почему же тогда не найти себе наставника? Это сложно?
Нет. Есть онлайн сервисы для наставников и наставляемых.

Может быть стыдно/некомфортно просить такой помощи?
Возможно, для кого-то это так. Ведь в том же IT много интровертов.

Почему у нас это так слабо развито? Почему не говорят в школах и ВУЗах?
Я не знаю :(

Главная мысль:

Хотите быстрее добиться успеха — найдите себе наставника!

И не важно в какой сфере вы хотите развиваться: IT, искусство, продажи, литература. Везде можно найти такого человека.

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

 1 комментарий    3   11 мес   мысли

Unity Mobile Input

Выложил на Github плагин нативного ввода для мобильных устройств. Это небольшая надстройка над стандартным Unity InputField UI. Работает на iOS и Android.

Зачем он нужен:

  1. Нативное поле ввода и клавиатура
  2. Отсутствует раздражающее дополнительное поле над клавиатурой в Android
  3. Для iOS можно добавить кнопку «Готово»
  4. Настройка кнопки Return для клавиатуры: стандартная, далее, готово, поиск
  5. Для работы нужно просто повестить скрипт MobileInput на родной InputField UI

До этого, было временное решение, которое не обладало необходимыми опциями, да и ошибки были. Собственно, на то оно и временное :) Но в Unity до сих пор нет таких возможностей для ввода, поэтому пришлось сделать такой плагин.

В моей версии исправлены ошибки и отрефакторен почти весь код от старого и неподдерживаемого плагина UnityNativeEdit.

Исходники на Github

Unity на Linux

Оно работает!

Всмысле не оболочка Unity, а редактор Unity :)
На выходных решил проверить, как там Ubuntu и всё «вот это вот с ней»... Оказалось, что всё хорошо-то. Всё работает, обновляется, есть куча разного софта, Unity в конце концов.

Последний раз я ставил какой-то Linux года 3-4 назад, но как-то не пошло. Даже не знаю почему. Потом пересел на MacOS и забыл про Linux и Windows. И вот — Ubuntu 16.04 LTS. Полёт нормальный. Оборудование на ноутбуке определилось, тачпад, камера, звук и т. д. Конечно, я сразу загуглил «ubuntu после установки» и проделал несколько настроек, но в целом — всё норм. Почему Ubuntu? Я не разбираюсь в 100500 дистрибутивах, да и не охота как-то, поэтому выбрал, тот что на слуху.

Так вот, по поводу Unity. Оказывается сборки под линукс делаются регулярно. И последняя версия которую я скачал и установил Unity-2017.3.0p2, вполне себе работает. Правда, я пока ничего не пробовал на ней сбилдить, но обязательно проверю :) Версия под линукс всё ещё в бете, поэтому возможны косяки. Но я к этому готов.

VSCode тоже есть под линукс и отлично работает. Думал ещё SourceTree поставить, но разработчики не планируют её выпускать для линукса. Жаль конечно, но на форуме где обсуждалось (и осуждалось) это решение, я нашёл пост про GitKraken. И, он очень даже хорош! Также есть аналог маковского homebrew — linuxbrew.

В общем, линукс — это не страшно и не больно :_) На нём даже игры делать можно...

Библия free2play

Почитал библию free2play. Определенно есть полезная информация. Для тех кто только начинает делать игры — must read, потому что там не только про f2p. Например:

  • с чего начать
  • основное правило: LTV должен быть больше CPI
  • «дефолтные» показатели ретеншн и монетизации
  • игровой цикл: action → reward → investment → trigger
  • игровые сессии и их продолжительность
  • экономика игры

Главы небольшие, читается легко + в каждой главе есть ссылки на другие интересные и полезные статьи, книги и видео на Youtube.

Кликабельные ссылки в TextMeshPro

Как сделать чтобы ссылки в тексте, стали «ссылками» и при клике на них открывалась страница? Просто! Достаточно открыть примеры из TextMeshPro (TMP) и добавить немного кода.

Пускай у нас есть компонент ТМР с текстом, в котором встречаются ссылки на страницы в сети, например: http://mopsicus.ru, www.unity3d.com, и другие. И нужно чтобы это выглядело примерно так, и было кликабельно:

Для этого, находим ссылки в тексте с помощью регулярного выражения, сокращаем их (по желанию) и приводим к формату для обработки ТМР.

// Check links in text
void CheckLinks () {
	Regex regx = new Regex ("((http://|https://|www\\.)([A-Z0-9.-:]{1,})\\.[0-9A-Z?;~&#=\\-_\\./]{2,})" , RegexOptions.IgnoreCase | RegexOptions.Singleline); 
	MatchCollection matches = regx.Matches (textMessage.text); 
	foreach (Match match in matches) 
		textMessage.text = textMessage.text.Replace (match.Value, ShortLink(match.Value));     	
}

// Cut long url
string ShortLink (string link) {
	string text = link;
	int left = 9; 		
	int right = 16; 		
	string cut = "..."; 	
	if (link.Length > (left + right + cut.Length)) 
		text = string.Format ("{0}{1}{2}", link.Substring (0, left), cut, link.Substring (link.Length - right, right));
	return string.Format("<#7f7fe5><u><link=\"{0}\">{1}</link></u></color>", link, text);
}

Как установить подчеркивание, цвет текста и другое смотрите в документации ТМР. Осталось повесить обработчик нажатия и определить на какую ссылку кликнули:

// Get link and open page
public void OnPointerClick (PointerEventData eventData) {
	int linkIndex = TMP_TextUtilities.FindIntersectingLink (textMessage, eventData.position, eventData.pressEventCamera);
	if (linkIndex == -1) 
		return;
	TMP_LinkInfo linkInfo = textMessage.textInfo.linkInfo[linkIndex];
	string selectedLink = linkInfo.GetLinkID();
	if (selectedLink != "") {
		Debug.LogFormat ("Open link {0}", selectedLink);
		Application.OpenURL (selectedLink);        
	}
}

Исходник на Github

Emoji в Unity

Обновлено 1.03.2017
TextMeshPro теперь входит в состав Unity и стал бесплатным!

Как добавить поддержку эмоджи в Unity? К сожалению, решения из коробки нет. Но есть самый лучший ассет для работы с текстом Text Mesh Pro. Да, он не дешевый, но он этого стоит. Может когда-нибудь Unity его купит, и это будет стандартным решением, как они сделали с Anima2D.

В версии TMP, которая скоро должна пойти в релиз, разработчик добавил поддержку Emoji. Точнее, можно делать свои атласы, юникод эмоджи будет автоматически заменяться на картинку. Чтобы были доступны все эмоджи, нужен большой атлас. Я использовал EmojiOne. Также понадобится одна отличная программа — TexturePacker и расширение для Unity TexturePacker Importer.

  1. Загружаем все эмоджи в программу и экспортируем в формат Unity — Texture2D sprite sheet.
  2. После этого меняем Data format на JSON (Array) и делаем экспорт еще раз.
  3. Теперь полученные три файла: Emoji.png, Emoji.json и Emoji.tpsheet загружаем в Unity.

Осталось с помощью TMP Sprite Importer сгенерировать атлас для Text Mesh Pro. В результате, на iOS и Android можно использовать эмоджи.

Бесконечный скроллинг в Unity

Обновлено 07.09.2018
Теперь можно использовать ячейки разной высоты!
Добавил новые демки

Когда делаешь игру под мобильную платформу, пусть Android или iOS, иногда хочется использовать стандартные для этой платформы компоненты, потому что они проверены, оптимизированы и быстро работают. Например, списки. Кто делал в Unity интерфейс с большим количеством прокручивающихся элементов в Scrollrect, наверняка замечали, что после определенного количества, вся эта конструкция начинает притормаживать. Наиболее оптимально использовать т. н. data driving подход, когда количество видимых элементов не меняется, а данные подгружаются динамически в нужную ячейку.

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

Была сделана такая знакомая мобильным разработчикам функция, как pull-to-refresh, также, ячейки можно настраивать как угодно под ваш проект, нужное количество создается автоматически в зависимости от высоты экрана. Единственное ограничение — высота ячейки не динамическая.

Использовать очень легко — все делает один скрипт, вещаем его на Scrollview настраиваем параметры и коллбеки и все. Демо есть. Если будут какие-то вопросы и пожелания, не стесняйтесь писать. Удачи!

Ссылка на Github

Ранее Ctrl + ↓