Search
Write a publication
Pull to refresh
24
0
jrip @jrip

User

Send message

Gogs: легковесный git-сервис

Reading time5 min
Views66K


В числе самых обсуждаемых последних новостей в сообществе разработчиков были новые тарифы GitHub (см., например, здесь).

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

Некоторые прибегают к альтернативному решению и разворачивают GitLab (или другой git-сервис) на собственном или арендованном сервере.

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

Из сказанного, однако, не следует, что у GitHub на сегодняшний день альтернативы нет. Об одном весьма интересном и перспективном решении мы хотели бы рассказать в этой статье. Знакомьтесь: Gogs. Этот инструмент будет интересен как для индивидуальных разработчиков, так и для небольших компаний.
Читать дальше →

Hello, TensorFlow. Библиотека машинного обучения от Google

Reading time11 min
Views229K

tensorflow


Проект TensorFlow масштабнее, чем вам может показаться. Тот факт, что это библиотека для глубинного обучения, и его связь с Гуглом помогли проекту TensorFlow привлечь много внимания. Но если забыть про ажиотаж, некоторые его уникальные детали заслуживают более глубокого изучения:


  • Основная библиотека подходит для широкого семейства техник машинного обучения, а не только для глубинного обучения.
  • Линейная алгебра и другие внутренности хорошо видны снаружи.
  • В дополнение к основной функциональности машинного обучения, TensorFlow также включает собственную систему логирования, собственный интерактивный визуализатор логов и даже мощную архитектуру по доставке данных.
  • Модель исполнения TensorFlow отличается от scikit-learn языка Python и от большинства инструментов в R.

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


Как работает TensorFlow? Давайте попробуем разобраться, посмотреть и понять, как работает каждая часть. Мы изучим граф движения данных, который определяет вычисления, через которые предстоит пройти вашим данным, поймем, как тренировать модели градиентным спуском с помощью TensorFlow, и как TensorBoard визуализирует работу с TensorFlow. Наши примеры не помогут решать настоящие проблемы машинного обучения промышленного уровня, но они помогут понять компоненты, которые лежат в основе всего, что создано на TensorFlow, в том числе того, что вы напишите в будущем!

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

Как начать разработку крупного, нетипичного проекта. Практическое пособие

Reading time6 min
Views28K

image


Выбор платформы для бекенда

Чтобы создать качественное и производительное Web-приложение, необходимо уделить должное внимание выбору платформы для разработки. Этим нужно заняться сразу же после того, как вы ознакомились, какие задачи должно выполнять это приложение.


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

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

База свободных репозиториев Github доступна через интерфейс BigQuery

Reading time16 min
Views13K

2,8 млн репозиториев, 3 ТБ исходного кода и метаданных




Google в сотрудничестве с Github выложила для общественного пользования полную актуальную базу всех open-source репозиториев через интерфейс BigQuery. (Проверка свободной лицензии осуществляется через API.)

Наборы данных Google BigQuery Public Datasets содержат информацию о более чем 2,8 млн свободных репозиториев, о более чем 2 млрд файлов (исходный код последних версий 163 млн файлов), 145 млн коммитов и т.д. Общий размер базы — около 3 терабайт.

Раньше архивы Github выкладывались на Github Archive. Теперь всё это богатство доступно для полнотекстового поиска и анализа через простые SQL-запросы. Github обещает обновлять наборы данных еженедельно.
Читать дальше →

Современные долгоиграющие смартфоны с большим аккумулятором: сравниваем флагман innos D6000 с аналогами и конкурентами

Reading time7 min
Views19K
Всем привет! В посте о первых итогах выхода бренда innos на российский рынок приводилась информация о том, какие аппараты были куплены вместо innos D6000. Увы, не все дождались нашего аппарата, взяв в итоге другие модели. В силу описанных в том же посте обстоятельств релиз нашей модели немного задержался, и кое-кто не дотерпел до начала продаж. Что же, несостоявшиеся покупатели имели на это полное право. При этом большая их часть, за что им отдельное спасибо, не стала скрывать – что же было куплено в отсутствие официальных innos D6000.

В этом обзоре я сравню innos D6000 с этими самыми «смартфонами-заменителями». Правда, не со всеми. Некоторые товарищи покупали iPhone и Samsung, у которых, как известно, вполне обычные аккумуляторы. Видимо, эти люди хотели или имиджевый аппарат, или долгоиграющий. Второго в наличии не оказалось, ну и чёрт с этой автономкой – возьму просто имиджевый! (Мне такой подход не близок, но он имеет право на существование).



В общем, в этом обзоре я собрал аппараты, купленные людьми вместо innos D6000, с батареями ёмкостью от 4 000 мАч и больше. Подчеркну, что 3 000 мАч в середине 2016 года – уже базовый уровень для типичного современного смартфона. Да, в прошлом году это было несколько больше среднего, но сейчас – уже нет. Скажем, есть масса аппаратов Samsung с такими батарейками, и они ни разу не позиционируются и уж тем более не являются долгоиграющими. То ли дело 4 000 мАч: это уже заметно больше среднего, и такой объём позволяет надеяться на некий дополнительный «кусок» времени работы.
Читать дальше →

Яндекс открывает ClickHouse

Reading time14 min
Views170K
Сегодня внутренняя разработка компании Яндекс — аналитическая СУБД ClickHouse, стала доступна каждому. Исходники опубликованы на GitHub под лицензией Apache 2.0.



ClickHouse позволяет выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. Система способна масштабироваться до десятков триллионов записей и петабайт хранимых данных. Использование ClickHouse открывает возможности, которые раньше было даже трудно представить: вы можете сохранять весь поток данных без предварительной агрегации и быстро получать отчёты в любых разрезах. ClickHouse разработан в Яндексе для задач Яндекс.Метрики — второй по величине системы веб-аналитики в мире.

В этой статье мы расскажем, как и для чего ClickHouse появился в Яндексе и что он умеет; сравним его с другими системами и покажем, как его поднять у себя с минимальными усилиями.
Читать дальше →

После обновления Elite Dangerous игровой ИИ получил возможность неограниченного развития и начал уничтожать игроков

Reading time3 min
Views59K
ИИ самостоятельно создал мощнейшее оружие, буквально разносящее корабли геймеров на куски



Баг в системе игры Elite Dangerous привел к тому, что игровой ИИ стал разрабатывать супер-оружие и уничтожать игроков. Разработчики признали проблему, и начали ее исправлять, постепенно убирая изменения, произведенные ИИ. Началось все после того, как компания-разработчик (Frontier) развернула обновление The Engineers (2.1). Обновление должно было усовершенствовать игровой ИИ, повышая «разумность» NPC. И действительно, «мобы» стали грозными противниками. Более того, обновление открыло возможность для ИИ разрабатывать оружие и оборудование.

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

Работа с реляционными базами данных в Scala

Reading time5 min
Views19K
Добрый день, сегодня хотелось бы рассказать, как наша команда работает с базами данных. У нас в компании в основном используется Oracle и в нашей команде много людей, кто умеет хорошо его готовить. Нам изначально хотелось получить полный доступ к его возможностям: иерархическим запросам, аналитическим функциям, передаче объектов и коллекций, как параметров запросов, и, может быть, если не будет другого способа — хинтам. Модель у нас не очень сложная, поэтому сознательно отказались от ORM.

В качестве основы взяли Apache DbUtils и сделали для него простую обёртку на Scala. Ниже я расскажу, как возможности Scala, особенно её последней версии 2.10, помогли упростить работу с базой данных.

А пытливых читателей, кто дочитает до конца, ждёт сюрприз.
Читать дальше →

DevOps — новый уровень взаимодействия групп разработки и эксплуатации

Reading time6 min
Views16K
Создание приложений — комплексный процесс, который включает в себя несколько элементов: написание кода, тестирование, устранение ошибок, проверку и, наконец, запуск в эксплуатацию. Можно сказать, что в этом процессе участвуют три независимых «государства» — разработчики, тестировщики и сотрудники отдела эксплуатации. Каждая из этих групп выполняет собственные задачи и пользуется разными критериями оценки эффективности своей работы. Для разработчиков — это скорость написания и количество реализованных в программном коде функций, для тестировщиков — число выявленных ошибок, для отдела эксплуатации — стабильность функционирования систем и минимальное количество инцидентов. Подобная модель работы нередко приводит к конфликту интересов: первые стараются как можно быстрее написать код и отдать его на проверку, вторые готовы проверять и тестировать сколь угодно долго, чтобы выявить все баги, а третий с трудом принимает код, поскольку любые изменения влекут за собой потенциальные риски для всей ИТ-инфраструктуры. В итоге весь процесс создания приложений растягивается надолго, что с учетом сложной экономической ситуации совершенно недопустимо, ведь бизнес должен быть максимально гибким и клиентоориентированным, а выпуск новых продуктов и услуг своевременным.


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

Геймерские мыши: что такое и существуют ли они вообще?

Reading time5 min
Views52K
image

Компьютерные игры уже давно стали частью современной культуры, и если для консольного гейминга с девайсами все понятно — для каждой отдельно взятой платформы геймпады одинаковы (у Xbox свои, у PS свои) и со временем эволюционирует только их размер, так как средний возраст игрока постоянно увеличивается. А вот с девайсами для ПК все не так однозначно.

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

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

Стоит сразу сказать, что в рамках игровой индустрии специализированные мыши можно разделить, условно, на две категории: ММО-мыши и все остальные. Отличительными особенностями любой геймерской мыши от обычной можно назвать более качественные материалы, мощную начинку и, конечно же, маркетинг.
Читать дальше →

Websocket в продакшене

Reading time30 min
Views42K
10 месяцев назад я начал делать браузерную игрушку. Выбор пал на cocos js в качестве графики и websocket в качестве общения с сервером. Технология очень понравилась и я на ней организовал всё общение игры с сервером. Использовал для этого эту статью. Но, к сожалению, тот код, который приведен в той статье, нельзя использовать в продакшене. Как выяснилось, уровень проблемы даже не критический, а блокирующий. Всё настолько плохо, что мне пришлось переписывать всё общение с сервером с вебсокетов на longpooling. В итоге я оставил вариант «если у нас браузер не сафари, то использовать websocket, иначе longpolling» и ещё немного ветвления на эту тему.

Так что опыт использования вебсокет в продакшене накопился приличный. И вот недавно случилось событие, которое сподвигло меня написать первую статью на Хабре.
Читать дальше →

Делаем вебсокеты на PHP с нуля

Reading time18 min
Views313K
Некоторое время назад я выбирал библиотеку для работы с вебсокетами. На просторах интернета я натыкался на статьи по интеграции node.js с yii, а почти все статьи о вебсокетах на хабре ограничивались инструкциями к тому, как использовать phpdaemon.

Я изучал библиотеки phpdaemon и ratchet, они достаточно монструозны (причём используя ratchet для отправки сообщения конкретному пользователю рекомендовано дополнительно использовать wamp). Мне не совсем было понятно для чего использовать таких монстров, которые требуют установку других монстров. Почитав исходники этих, а также других библиотек, я разобрался как всё устроено и мне захотелось написать простой вебсокет-сервер на php самостоятельно. Это помогло мне закрепить изученный материал и наткнуться на некоторые подводные камни, о которых я не имел представления.

Так я решил написать необходимый для меня функционал с нуля.

Получившийся код и ссылка на демонстрационный чат в конце статьи.
Читать дальше →

Как устроено обучение самых высокооплачиваемых IT-специалистов – тех, кто должен разбираться в очень дорогом железе

Reading time5 min
Views35K

Есть мнение, что больше всего для развития ИТ в России сделали пираты. Если бы не они, далеко не всякий мог бы позволить себе поковырять офис, фотошоп и поставить какую-нибудь IDE, стоящую довольно больших денег. Но благодаря широчайшему распространению даже редкого ПО половина проблемы — доступ к решениям — снималась. В США, например, просто получить инсталляцию лет 10 назад было не очень-то просто и быстро.

В случае с дорогим «банковским» железом, решениями ядра для операторов, страховых и НИИ есть нюанс. Чаще всего такая железка в России пока только одна, т. к. больше ее себе никто позволить не может (да и максимум на всю страну их надо не более 10 штук), и научиться с ней работать довольно сложно. Это первая проблема.

Вторая — в том, что курсы вендоров ориентированы, естественно, на их железо и ПО и, грубо говоря, выглядят не «как нам настроить правильно СХД для банка», а «почему вам нужно купить наше оборудование». Третья сложность — если вы хотите сравнить 5 железок, придётся пройти 5 курсов, первая половина каждого из которых будет одинаковой.

Ну и, наконец, всё это меркнет в сравнении с тем, что при реально серьёзном карьерном росте надо учиться менеджменту, и это часто очень нетривиально. Заходите под кат, расскажу, как мы решаем эти разные вопросы.
Читать дальше →

Перевод книги Лю Цысинь, «Задача трех тел»

Reading time5 min
Views114K
Приветствую любителей современной научной фантастики и представляю вам книгу китайского писателя Лю Цысинь (劉慈欣): «Задача трех тел (三体)», в переводе которой я участвовал.

image
Читать книгу

Вы не знаете Node: краткий обзор основных возможностей

Reading time20 min
Views87K


Ремарка от автора
Это статья новая, но она не о новых возможностях. Она о core, то есть о платформе и о том что многие кто просто используют grunt, или webpack могут не подозревать, так скзать about fundamentals.

Более подробно читайте:

комментарии rumkin:
habrahabr.ru/company/mailru/blog/283228/#comment_8890604

комментарии Aiditz:
habrahabr.ru/company/mailru/blog/283228/#comment_8890476

комментарии Suvitruf:
habrahabr.ru/company/mailru/blog/283228/#comment_8890430


Идея этой публикации была навеяна серией книг Кайла Симпсона «Вы не знаете JavaScript». Они являются хорошим началом для изучения основ этого языка. А Node — это практически тот же JavaScript, за исключением небольших отличий, о которых я расскажу в этой статье. Весь код, приведённый ниже, вы можете скачать из репозитория, из папки code.

Зачем вообще переживать насчёт Node? Node — это JavaScript, а JavaScript используется почти везде! Мир был бы лучше, если бы большинство разработчиков в совершенстве владели Node. Чем лучше приложения, тем лучше жизнь!

Эта статья представляет собой реалистичный взгляд на наиболее интересные основные возможности Node. Ключевые моменты статьи:

  1. Цикл событий: освежаем ключевую концепцию, позволяющую реализовать неблокирующие операции ввода/вывода.
  2. Глобальный объект и процесс: как получить больше информации.
  3. Эмиттеры событий: интенсивное введение в событийную модель (event-based pattern)
  4. Stream’ы и буферы: эффективный способ работы с данными
  5. Кластеры: форкай процессы как профессионал
  6. Обработка асинхронный ошибок: AsyncWrap, Domain и uncaughtException
  7. Аддоны на C++: внесение своих наработок в ядро и написание собственных аддонов на С++
Читать дальше →

Опасный target="_blank"

Reading time2 min
Views201K
Большинство создают внешние ссылки через target="_blank" и не знают одного интересного нюанса — страница, на которую мы попадем таким образом, получит частичный контроль над ссылающейся на нее страницей через js свойство window.opener.

Через window.opener.location мы сможем сделать редирект на, к примеру, фишинговую страницу. Это своего рода tabnabbing, только более продвинутый. Так как жертва меньше всего ожидает подмены страницы, в открытой ранее, доверенной вкладке браузера.
Читать дальше →

JavaScript по-русски — pycckuu.js

Reading time2 min
Views76K


Вы никогда не задумывались, как выглядит код на JavaScript для программиста, у которого родной язык — английский? Представьте, насколько удобнее им читать и писать код на своем «нативном» языке, насколько ускоряется время разработки и уменьшается количество багов. А ведь использование английского языка как основы для языков программирования не обусловлено ничем, кроме того, что «так исторически сложилось».
Читать дальше →

Щелевая съёмка: реализация на bash (ffmpeg + imagemagick)

Reading time3 min
Views26K
Не помню что и почему я искал в интернете несколько дней назад, но я наткнулся на интересную статью с необычными фотографиями. А позже на еще одну статью, где описывалась реализация алгоритма создания таких фотографий на python. После прочтения меня заинтересовала эта тема и я решил провести вечера майских праздников с пользой для себя, а именно реализовать алгоритм «конвертирования» видео в щелевое фото. Правда, не на питоне, но подручными средствами на bash'е. Но обо всем по порядку.
Читать дальше →

Построение хексапода для тех кто не хочет мастерить, а хочет программировать

Reading time4 min
Views15K
image

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

Краткое предисловие:

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

Другой неприятной стороной было то что в качестве мозгов в основном использовались — если не ардуино, то STM32. Мне же хотелось занимтаься программированием. Научить робота бегать за мячиком, обходить препятсвия, передвигаться по открытомй пространству. То есть то, для чего надо больше чем ардуина. Упирались все желания в деньги, которых мало, и руки, которые кривые. Постараюсь поведать как оба этих препятствия я обошел.
Читать дальше →

Создавая игру Good Cat Gone Bad

Reading time4 min
Views15K
Целевая аудитория: начинающие инди-разработчики игр.

Введение




В основном это список приемов и бесплатных инструментов, которые я использовал при создании мобильного endless runner’а Good Cat Gone Bad, который выйдет в Google Play 4 мая 2016 г.

Игра разрабатывалась как проект-хобби, используя Unity 5, и заняло все это дело около 4 месяцев на постоянной основе (полный рабочий день).
Читать дальше →

Information

Rating
Does not participate
Location
Санкт-Петербург и область, Россия
Date of birth
Registered
Activity