• Продвижений мобильных игр. Провал №3


    Добрый день! Меня зовут Денис и я разработчик игр…

    Предыстория


    Около года назад у меня возникла (как мне казалось) гениальная идея мобильной игры с учетом, что основной аудиторией будут дети. Идея заключалась в том, что ты управляешь котенком, который летит, уклоняясь от препятствий в виде разного рода летательных объектов: самолеты, вертолеты, астероиды, ракеты и т.п.
    Читать дальше →
  • Не хотел, а сделал. Тайм киллер на Unity3d за пару вечеров

    Доброго времени суток! Получая профессию инженер-программист не имел совершенно ни какого опыта разработки игр, решил восполнить пробел и приобщиться к этой теме. Выбирая, с чего начинать, взгляд мой пал на Unity3d, так как этот игровой движок дружит с языком программирования C#, который я, в свою очередь, сейчас изучаю. Так сказать, совместил приятное с полезным. Обсуждая эту тему с коллегами по работе, неожиданно родилась идея простой до безобразия игры — на экране находится квадрат, стороны которого имеют разные цвета, сверху на него падают кубы цветов совпадающих с цветами его сторон, нужно тапом по левой и правой стороне экрана вращать разноцветный квадрат и ловить кубы правильного цвета. Поймал правильной стороной — плюс одно очко, не правильной — проиграл. Окрестили это первым словосочетанием пришедшим в голову — Color Cube. Сказано — сделано.

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

    Читать дальше →
  • Разработка под Symbian: SDK

    Речь пойдет о платформе Series 60, позже переименованной в S^1.

    Это обзорная статья, если немного сумбурная — извините. Только-только исправил все ошибки в postinker elf2e32, её описание и ссылка на гитхаб — в конце статьи.
    image
    Читать дальше →
  • NPM 5 — кратко о том, что принесла новая версия

    NPM 5 — кратко о том, что принесла новая версия

    31 мая все пользователи пакетного менеджера NPM (а им пользуется примерно 60% всех разработчиков на JavaScript, что составляет в сумме более 8 миллионов человек) наконец-то получили возможность обновить его до 5 версии. Что же принесла нам новая версия? Давайте быстро пробежимся по основным моментам.
    Читать дальше →
  • Стоит ли учиться на компьютерного лингвиста? Личный опыт

    image

    В далеком 2012 году, я, только что сдав ЕГЭ (на то время баллы были хорошими), подала документы в университет на бакалаврскую программу «Фундаментальная и прикладная лингвистика». Я не понимала, что это такое, чему нас будут учить, кем я потом буду. Меня привлекло сложное название программы и описание в буклете абитуриентов. Да, в общем, я отучилась 4 года и до сих пор не поняла, правильный ли выбор я сделала.

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

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

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

    Человек, допустим, шарит в морфологии, синтаксисе, семантике, социолингвистике и других аспектах языка. Его не пугают такие понятия, как синтагматика и парадигматика, онтологии и тезаурусы, пропозиция, когнитивизм, прагматика и так далее. Знает английский язык и в идеале еще плюсом 1-2 других иностранных языка (в моем случае это заброшенные напрочь немецкий и испанский). И вот мы получаем лингвиста. Прикладного. Который знает, как теорию можно применить на практике.
    Читать дальше →
  • Создаём свой оверлей DonationAlerts

    Если вы уже знаете, что такое DonationAlerts, прыгайте в следующий абзац.

    Вкратце, DonationAlerts — это сервис позволяющий отправлять в стрим на YouTube или Twitch сообщения за денюжку, которые показываются поверх стрима и проговариваются ботом.

    Оверлей DonationAlerts выглядит так:

    image

    Эта веб-страница вставляется в стрим и зелёный фон вырезается. (Картинку можно менять)
    Мне оверлей не понравился и я начал перерывать их сайт в поисках API, чтобы сделать свой.
    Когда я понял что API нет, я написал в поддержку, и… они ответили с подробной «документацией».
    Читать дальше →
  • Интеграция тикет системы OTRS с Asterisk средствами Ruby

    Имея сравнительно небольшой опыт работы с PBX Asterisk и не имея практического опыта работы с OTRS, я некоторое время доводил интеграцию этих систем до ума. Первая документация по интеграции, которую мне доводилось прочесть, использовала старую версию OTRS и работала через SOAP интерфейс. Это конечно меня не радовало и я продолжил поиск уже по документации OTRS. Как оказалась данная система кроме SOAP имеет и REST API. Который я как раз и использовал. Я не стану рассказывать, как настраивается OTRS и Asterisk, и расскажу про сам процесс интеграции.

    Со стороны Asterisk будет использоваться AGI интерфейс для работы с внешним скриптом, экстеншены будут написаны на AEL. Я не много пишу на ruby, по этому мой выбор пал именно на этот язык программирования.
    Читать дальше →
  • Применение политик между лесами Active Directory

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

    Недавно мне задали интересный вопрос – как будут применяться политики при использовании компьютеров в одном Active Directory домене пользователями из другого домена, при условии, что между доменами есть доверительные отношения, но они находятся в разных лесах. Я понял, что я знаю, как оно должно быть в теории, но ни разу не проверял, как оно себя поведёт на самом деле. Самый простой способ убедиться в своей правоте или ошибке – проверить. Ниже диаграмма простой тестовой среды:


    Поиграв с настройками политик, я узнал несколько забавных вещей. Если вам интересно, как будут вести себя политики пользователя из домена Users.org и пользовательская секция политик компьютера из домена Computers.com при совместном использовании, добро пожаловать под кат.
    Читать дальше →
  • Чистим телефоны от скобок, тире в Битрикс24

    Всем привет! Решил поделиться небольшим полезным скриптом для Bitrix24. Часто бывает, что при импорте заносятся телефоны со скобками, тире и прочее: +7 (999) 123-33-44


    Битрикс24 при звонках распознает номера формата 79991233344. И потому появляется куча дубликатов, неразберихи и каша. Простой скрипт на php проходит по всем контактам и "чистит их".


    Читать дальше →
  • А все ли утверждения SEO справедливы?



    В сети опубликовано очередное исследование ряда вопросов по SEO. Заснятые на скриншоты наблюдения наверняка известны мастерам поискового продвижения. Но есть факты, что рассмотрены в интересном ракурсе.
    Подробнее
  • Эра Python. Начало


    Недавно, со сменой руководства, наша кафедра взяла курс на усиление и развитие базы программирования сразу в нескольких предметах, которые мы преподаем. Конкретней – был введен новый для нас язык программирования Python. Не скажу, что это далось быстро и безболезненно, но со временем я оценила простоту и легкость обучения, а главное, широту использования данного языка.

    Боюсь вызвать (или нет?) очередную волну холивара, но старый добрый и любимый до сих пор во многих школах и ВУЗах (наш не исключение) Pascal, мягко говоря, не подходит для неокрепшей психики студентов, которым с первого курса преподают программирование на этом языке. И, что печально, но легко объяснимо, несчастные дети не понимают, зачем им это чудо нужно и где они его будут применять в реальной жизни. Да-да, я в курсе, что в мире чистый Pascal не используется, а предназначен в основном для знакомства с азами программирования. Но скажите, зачем из пяти лет обучения, студенту тратить полгода или год (зависит от фантазии лектора) на это самое ознакомление на примере мертвого языка, который после придется априори забыть, если можно сразу изучать перспективный и, главное, широко используемый язык программирования?
    Как мы поступили? Продолжение под катом
  • Как восстановить файлы после шифрования вируса-шифровальщика WannaCry

    Добрый день, Хабражители. На Хабре много писали как защититься от WannaCry. Но почему-то нигде не осветили как произвести возврат зашифрованных данных. Хочу восполнить этот пробел. И немного пролить свет на то, как как мы это делали в нашей «всем известной» компании, участвующей в логистике. Это больше инструкция для наших администраторов ИБ.

    Восстановление после шифрования данных


    Это не Расшифровка, а именно Восстановление. И работает только в том случае если включено теневое копирование в windows, т.е. данные можно восстановить с точек восстановления самой windows.

    image
    Читать дальше →
  • Миграция Redmine на новую версию и одновременно в Docker

    Возникла необходимость поставить на Redmine, которым мы пользуемся уже несколько лет, плагин для agile. Redmine хоть и старый (версия 2.4), но в доке от RedmineUP(redmine_agile) указано, что он поддерживает версии с 2.1 по 3.3. То есть должен встать. Но не тут то было.


    Читать дальше →
  • Посмотрим на rx.Single в RxJava?

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

    А чем Single отличается от Observable ?


    Конечно, у него нет всех методов, которые есть у Observable. Subscriber у Single также отличается тем, что содержит только два метода, а не три. Думаю, что все отличия в плане реализации вы сможете найти в документации.

    Возникает вопрос:
    чем вызваны такие изменения ?

    Ответ тут очевиден: Single (что можно даже и из названия понять) содержит только один элемент, в отличии от Observable.

    Кто-то подумает и скажет
    пффф, ну и что? А я буду использовать всегда Obsevable, пусть в нем будет только один элемент.

    По-моему мнению, в этом ничего страшного нет, но есть ли какие-то минусы от такого использования?

    • Если вы знаете, что вы будете работать только с одним элементом, то в использовании Observable нет нужды или, как говорят, overkill;
    • Также нужно понимать, что Observable более тяжеловесный, чем Single (а поговаривают, что Single даже быстрее);

    Говоришь Single, хм...


    В single возможны две ситуации:

    • одно значение
    • exception

    Тут важно понимать, чего вы пытаетесь добиться, или какая ваша политика? Если вы считаете, что пустой результат для вас это нормально, то, скорее всего, Single вам не подойдет, но если это не так, и вы знаете, что результат обязательно должен быть, то Single это то, что вам надо. Кстати, стоит отметить, что у Single нет метода empty(). Это я на всякий случай решил сообщить.
    Читать дальше →
  • Установление соединения Java с MySQL 6.0.6

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

    Начнем с того, что убедимся, какая версия mysql прописана в dependencies:

    <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>6.0.6</version>
            </dependency>
    </dependencies>
    

    Первое что я сделал — это попал на FabricMySQLDriver, он напрочь отсутствует в новых классах работающих с 6ым mysql.

    Получил ошибку «cannot resolve symbol FabricMySQLDrive».

    Спустя 30 минут нашлось решение:

    Connection connection = null;
    Driver driver;
    
    try   {
           driver = new com.mysql.cj.jdbc.Driver();
           DriverManager.registerDriver(driver);
           }
           catch (SQLException e1) {
                    System.out.println("Драйвер не зарегистрировался");
    		return;
    	}
    

    Читать дальше →
  • Проверка пустых полей формы: универсальный способ

    Те, кто занимается созданием сайтов, в какой-то момент сталкиваются с необходимостью проверки заполнения пользователем полей формы, размещённой на сайте. Для этого создаётся какой-то вариант проверки пустых полей, который используется в своих проектах. Но для каждого случая количество полей, которые необходимо проверить, может быть разным. Это приводит к тому, что созданный вариант проверки необходимо изменять в зависимости от конкретных условий, и в дальнейшем у нас появляется уже несколько его модификаций.
    Читать дальше →
  • Molecule — тестируем роли Ansible

    Доброго времени суток. На Хабре не раз упоминался ansible, но статей о тестировании его ролей при помощи molecule мной обнаружено не было, однако Я нахожу данный фреймворк крайне удобным и хотел бы поделиться этим с аудиторией Хабра.
    Но для начала немного о том, чем я пользовался прежде.
    Читать дальше →
  • Вы не знаете npm

    image

    Перевод и небольшое творческое переосмысление доклада Ashley Williams(человека из команды разработчиков npm) с конференции JavaScript fwdays'17, которая прошла 22 апреля 2017 года в Киеве, Украина. Целью статьи я не ставил дословно перевести выступление Ashley, для вас будет представлена выжимка основных моментов, а именно – фишки npm, о которых не все знают, но знать о которых полезно каждому. В подвале я оставлю ссылку на страницу выступления на сайте frameworksdays.com, где вы сможете найти видео выступления, презентацию и контакты самой Ashley, если они вам понадобятся.
    Читать дальше →
  • Ошибки в управлении стартапом

    9 причин провала:

    1. Расчет на поддержку, которой может не быть


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

    Стартап может рассчитывать на:
    Читать дальше →
  • Общий вид дерева, реализация и не только

    Многие, наверное, пытались найти построение дерева общего вида, но поисковик находил только бинарные… Двоичное дерево поиска, обход двоичного дерева и многие другие алгоритмы.
    Да, действительно, дерево общего вида нигде не используется, обход медленный, варианты использования небольшие.

    Так вот, я задался этим вопросом и теперь поясню как все-таки дерево строится. Итак, в идеале структура дерева общего вида должна хранить три переменные:
    Читать дальше →