• TgGram — сервис создания сайтов для/из телеграм каналов

      Добрый день.

      Как известно, контент опубликованный в телеграм не индексируется поисковиками. Я разработал сервис, tggram.com, автоматически создающий сайты для телеграм каналов.

      Сразу несколько примеров:

      rdslv.tggram.com
      botcollection.tggram.com
      memefeed.tggram.com

      По желанию, возможен! кастомный домен и уникальный стиль, например:

      startupoftheday.ru
      crazydoge.com
      Читать дальше →
    • Как бесплатно рассказать о своем стартапе в зарубежных СМИ с миллионной аудиторией: сложности и способы их обхода



        Миллионы предпринимателей во всем мире мечтают о том, чтобы об их проекте написали ведущие англоязычные издания. Сегодня я расскажу о сложностях, которые могут возникнуть в попытках реализовать это желание, и том, как их можно обойти.
        Читать дальше →
        • +23
        • 11,5k
        • 1
      • Миллион WebSocket и Go

          image


          Привет всем! Меня зовут Сергей Камардин, я программист команды Почты Mail.Ru.


          Это статья о том, как мы разработали высоконагруженный WebSocket-сервер на Go.


          Если тема WebSocket вам близка, но Go — не совсем, надеюсь, статья все равно покажется вам интересной с точки зрения идей и приемов оптимизации.

          Читать дальше →
        • Лимиты Telegram bot API и работа с ними на Go

          Довольно часто на Хабре появляются статьи о написании бота для Telegram, которые в своем роде, если откинуть уникальность идеи, являются самым обычным туториалом на тему «как получить сообщение от Telegram, обработать его и отправить ответ пользователю». Однако ни в одной из статей, прочтенных мной (конечно же, не берусь утверждать, что прочел их все, но тем не менее) я не встретил упоминания о лимитах отправки сообщений пользователям и как с ними работать. Кого заинтересовал, прошу под кат.
          Читать дальше →
        • Bash-скрипты: начало

          • Перевод
          Bash-скрипты: начало
          Bash-скрипты, часть 2: циклы
          Bash-скрипты, часть 3: параметры и ключи командной строки
          Bash-скрипты, часть 4: ввод и вывод
          Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
          Bash-скрипты, часть 6: функции и разработка библиотек
          Bash-скрипты, часть 7: sed и обработка текстов
          Bash-скрипты, часть 8: язык обработки данных awk
          Bash-скрипты, часть 9: регулярные выражения
          Bash-скрипты, часть 10: практические примеры
          Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

          Сегодня поговорим о bash-скриптах. Это — сценарии командной строки, написанные для оболочки bash. Существуют и другие оболочки, например — zsh, tcsh, ksh, но мы сосредоточимся на bash. Этот материал предназначен для всех желающих, единственное условие — умение работать в командной строке Linux.


          Читать дальше →
        • Как попасть в топ на Kaggle, или Матрикснет в домашних условиях

          Хочу поделиться опытом участия в конкурсе Kaggle и алгоритмами машинного обучения, с помощью которых добрался до 18-го места из 1604 в конкурсе Avazu по прогнозированию CTR (click-through rate) мобильной рекламы. В процессе работы попытался воссоздать оригинальный алгоритм Мактрикснета, тестировал несколько вариантов логистической регрессии и работал с характеристиками. Обо всём этом ниже, плюс прикладываю полный код, чтобы можно было посмотреть, как всё работает.

          Рассказ делю на следующие разделы:
          1. Условия конкурса;
          2. Создание новых характеристик;
          3. Логистическая регрессия – прелести адаптивного градиента;
          4. Матрикснет – воссоздание полного алгоритма;
          5. Ускорение машинного обучения в Python.
          Читать дальше →
        • Система рекомендаций интернет магазина на основе методов машинного обучения в Compute Engine (Google Cloud Platform)

          • Перевод
          • Tutorial
          С помощью сервисов Google Cloud Platform можно создать эффективную масштабируемую систему рекомендаций для интернет-магазина.

          На рынке интернет-торговли сложилась интересная ситуация. Хотя общий денежный поток вырос, увеличилось и количество продавцов. Это привело к тому, что доля каждого магазина уменьшилась, а конкуренция между становится все напряженнее. Один из способов увеличить средний размер покупки (а значит, и прибыль) – предлагать покупателям дополнительные товары, которые могут их заинтересовать.

          Из этой статьи вы узнаете, как на базе Cloud Platform настроить среду для поддержки базовой системы рекомендаций, которую со временем можно будет доработать и расширить.

          В ней описывается решение для сайта агентства по аренде недвижимости, позволяющее подбирать и предлагать рекомендации пользователям.


          Читать дальше →
        • Учебное пособие по Nim (часть 1)

          • Перевод
          • Tutorial
          Примечание от переводчика
          Этот перевод делался по мотивам комментария от пользователя stas3k, в котором он предложил frol перевести две части «Nim Tutorial». Меня это заинтересовало и я перевёл их самостоятельно, в меру своего разумения. Ежели кто найдёт ошибки (они там наверняка есть — глаз под конец совсем уже замылился), сообщайте в личку, буду править.

          Введение


          “Der Mensch ist doch ein Augentier – schöne Dinge wünsch ich mir.”
          (Цитата из песни «Morgenstern» группы «Rammstein». Примерный перевод: «Но человек – глазастый зверь, – мне нужно множество красивых вещей».)

          Это – обучающий материал (tutorial) по языку программирования Nim. Предполагается, что вы знакомы с базовыми концепциями программирования, такими как переменные, типы или команды, но глубокие знания не обязательны. Большое количество примеров по сложным нюансам языка, вы можете найти в официальном руководстве. Все примеры кода в этом документе следуют руководству по стилю языка Nim.
          Читать дальше →
        • Учебное пособие по Nim (часть 2)

          • Перевод
          • Tutorial
          Примечание от переводчика
          Первая часть находится здесь: «Учебное пособие по Nim (часть 1)»

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


          Введение


          «Повторение придаёт нелепости вид благоразумия.» – Норман Вайлдбергер

          (в оригинале: "Repetition renders the ridiculous reasonable." – Norman Wildberger)

          Этот документ является учебным пособием по сложным конструкциям языка Nim. Помните, что этот документ в чём-то устарел, а в руководстве есть гораздо больше актуальных примеров по сложным особенностям языка.

          Читать дальше →
        • Алгоритмы чат бота на базе рекуррентной нейронной сети и расширения языка AIML

            На сегодняшний день остается актуальным создание программ имитирующих общение человека. Простейшей моделью общения является база вопросов и ответов к ним [1]. В данном случае возникает проблема описания базы знаний и реализация программы интерпретатора. Язык разметки базы знаний может включать в себя паттерны вопросов и соответствующие им шаблоны ответов, также предысторию диалогов к ним и название соответствующей темы общения.

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

            Альтернативным вариантом создания программы виртуального собеседника является использование алгоритмов машинного обучения на базе диалогов общения, именно искусственные нейронные сети. Подходящей моделью ИНС является рекуррентная нейронная сеть, способная хранить, обобщать и прогнозировать различные последовательности. В данной работе в качестве элементов последовательности предлагается использовать индексы соответствующие словам в базе знаний вопросов и ответов.
            Читать дальше →
            • +7
            • 25,6k
            • 6
          • Знакомьтесь, линейные модели

              Машинное обучение шагает по планете. Искусственный интеллект, поскрипывая нейронными сетями, постепенно опережает людей в тех задачах, до которых успел дотянуться своими нейронами. Однако не стоит забывать и про простую модель линейной регрессии. Во-первых, потому что на ней построены многие сложные методы машинного обучения, включая нейронные сети. А, во-вторых, потому что зачастую прикладные бизнес-задачи легко, быстро и качественно решаются именно линейными моделями.
              И для начала небольшой тест. Можно ли с помощью линейной модели описать:
              — зависимость веса человека от его роста?
              — длительность ожидания в очереди в магазине в разное время суток?
              — посещаемость сайта в фазе экспоненциального роста?
              — динамику во времени количества человек, ожидающих поезда на станции метро?
              — вероятность, что клиент не оформит заказ на сайте в зависимости от его производительности?
              Как вы догадываетесь, на все вопросы ответ будет «Да, можно». Так что линейные модели не так просты, как может показаться на первый взгляд. Поэтому давайте познакомимся с их богатым разнообразием.
              Читать дальше →
            • Рекомендации на потоке

                Всем привет!

                Сегодня мы расскажем о том, как с помощью потоковой обработки данных можно увеличить качество рекомендаций и снизить время отклика всей рекомендательной системы в 5 раз. Речь пойдет об одном из наших клиентов – сервисе потокового видео Rutube.


                Читать дальше →
              • 93 видео-лекции по Scala

                • Tutorial
                В ходе подготовки спецкурса «Scala for Java Developers» под платформу онлайн-обучения UDEMY, я анализирую другие «лекционные» видео. В библиотеке накопилось какое-то количество ссылок на дельных учебные материалы по Scala (видео на английском).

                Для большинства видео указано количество просмотров. Надо сделать несколько замечаний:
                1. Количество просмотров не является главным критерием качества и полезности видео, но этот может служить каким-то указателем на ценность.
                2. Здесь не все популярное видео, что я встречал, а лишь то, что ценно по моему личному мнению.
                3. Если кто-то знает еще хорошее видео — пишите, добавлю в списки.


                Читать дальше →
                • +17
                • 34,2k
                • 5
              • MapReduce: более продвинутые примеры, попробуем без зауми

                  Чтобы не откладывать в долгий ящик сразу порассказываю несколько других примеров для MapReduce, обещанные в топике "MapReduce без зауми". (Если не понимаете полностью что такое MapReduce — прочитайте тот топик сначала! Без него не разберетесь)

                  Поговорим тут о подсчетах национальностей в городах, средних оценках и приводах учеников, ТИЦ, PageRank, входящих ссылках, нишевых ключевых словах, словах-синонимах, социальных сетях и общих друзьях. Постараемся обойтись без математических знаков и зауми.

                  Однако тема сама по себе сложная и все же напрячь мозги придется. Когда поймете — будет очень просто.

                  Входящие ссылки


                  Допустим у нас есть Интернет. В Интернете есть исходящие ссылки.

                  Допустим на входе у нас есть такие данные об ИСХОДЯЩИХ ссылках, собранные нашим паучком:

                  habrahabr.ru -> thematicmedia.ru, apple.ru, microsoft.com, ubuntu.com, yandex.ru
                  thematicmedia.ru -> habrahabr.ru, autokadabra.ru
                  autokadabra.ru -> habrahabr.ru, yandex.ru


                  Т.е. мы знаем, что Хабр ссылается на Apple, MS, Ubuntu и Яндекс но кто ссылается на Хабр? Да, вопрос примитивный, но все же разложим на MapReduce. Дальше будет интереснее и этот пример понадобится.

                  Читать дальше →
                  • +78
                  • 24,9k
                  • 7
                • Gradle: 5 полезностей для разработчика

                  • Tutorial
                  Привет, Хабр! Настало время, когда можно сказать, что «new build system» Gradle является стандартом отрасли Android-разработки. Инструмент сделан настолько просто и удобно, что большинство разработчиков не испытает трудностей, даже не зная, как он устроен, и какие дополнительные возможности в нём есть — возникающие проблемы легко решаются с помощью 5 минут на StackOverflow, путем копирования «магического кода» в конфигурационные файлы. Возможно, в том числе из-за этого не все разработчики изучают Gradle детально и не знают о многих его полезных возможностях, которые существенно облегчают жизнь.


                  Сегодня рассмотрим пять таких полезностей
                • Теория звука. Что нужно знать о звуке, чтобы с ним работать. Опыт Яндекс.Музыки

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

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



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

                    Поводом для этого поста можете считать то, что мы добавили в приложения Яндекс.Музыки возможность слушать треки в высоком качестве (320kbps). А можете не считать. Итак.
                    Читать дальше →
                  • Функторы, аппликативные функторы и монады в картинках

                    • Перевод
                    Вот некое простое значение:


                    И мы знаем, как к нему можно применить функцию:


                    Элементарно. Так что теперь усложним задание — пусть наше значение имеет контекст. Пока что вы можете думать о контексте просто как о ящике, куда можно положить значение:


                    Теперь, когда вы примените функцию к этому значению, результаты вы будете получать разные — в зависимости от контекста. Это основная идея, на которой базируются функторы, аппликативные функторы, монады, стрелки и т.п. Тип данных Maybe определяет два связанных контекста:


                    data Maybe a = Nothing | Just a
                    

                    Позже мы увидим разницу в поведении функции для Just a против Nothing. Но сначала поговорим о функторах!
                    Читать дальше →
                  • Достаточно Git-а, чтобы быть (менее) опасным

                    imageТы просто-напросто ненавидишь Git? Ты абсолютно счастлив с Mercurial (или, фу, с Subversion), но раз в месяц тебе приходится отважно сталкиваться с Git, потому что каждый, даже его чертова собака, теперь использует GitHub? Тебя терзают смутные подозрения, что половина всех команд Git на самом деле удалят всю твою работу навсегда, но ты не знаешь какие именно и не хочешь проводить три недели, углубляясь в документацию?

                    Хорошие новости! Я написал тебе этот изумительный Интернет-пост. Я надеюсь, что смогу размазать достаточно Git-а по твоему лицу, чтобы понизить вероятность сделать что-то непоправимое, а так же уменьшить твой страх что-то сломать. Этого должно быть также достаточно, чтобы сделать документацию Git немного более понятной; она крайне тщательно и глубоко проработана и очень глупо, если ты все еще не прочитал половину.

                    Я постараюсь излагать коротко, но также, чтобы это было потенциально полезно тем людям, кто вообще никогда не сталкивался с контролем версий, поэтому повсюду будет разбросан 101 совет. Не бойся! Я не думаю, что пользователи Mercurial понятия не имеют, что такое патч.
                    Но подожди! Там еще...
                  • Рецепты под Android: Как вкусно приготовить LayoutManager

                    • Tutorial
                    Привет хабр!

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


                    Читать дальше →
                    • +33
                    • 35k
                    • 4