• Хостинг статических сайтов на AWS

    • Tutorial
    В данной статье я хочу подробно разобрать тему хостинга статических сайтов на AWS. Тему нельзя назвать сильно сложной, но нюансов хватает. Для настройки вручную потребуется организовать взаимодействие 4-5 сервисов, а по дороге порой можно встретить весьма интересные грабли.

    Некоторое время назад существовал официальный туториал по такой ручной настройке. Местами он мог показаться сложным, местами странным. Скорее всего, это была дань универсальности и необходимости продемонстрировать разные варианты хостинга. Однако сейчас туториал кардинально обновлен, и предлагает использовать сервис AWS Amplify для решения такой задачи. С одной стороны, это удобно, но с другой стороны, иногда необходимо разобраться, что же именно происходит “под капотом”. Поэтому здесь мы разберем, как все настроить руками.
    Читать дальше →
    • +36
    • 4.9k
    • 9
  • Краш-курс по интерфейсам в Go

    • Tutorial
    Интерфейсы в Go представляют собой одну из отличительных особенностей языка, формирующих способ решения задач. При схожести с интерфейсами в других языках, интерфейсы Go всё же имеют важные отличия и это поначалу приводит к избыточному переиспользованию интерфейсов и путанице в том, как и когда их использовать. Это нормально, но давайте попробуем разобраться, в чем же особенность интерфейсов в Go, как они устроены, почему так важны и что значит ортогональность интерфейсных типов и структурных типов в Go.

    В этой статье вы узнаете:

    • в чем отличие от интерфейсов в Java
    • важные и неочевидные последствия этих отличий
    • как устроены интерфейсы под капотом
    • вспомним про пустой интерфейс (interface{})
    • затронем сакральную тему про дженерики
    • разберемся, кто и зачем должен создавать интерфейс
    • и постараемся научиться не абьюзить интерфейсы и начать жить

    Header
    (artwork by Svitlana Agudova)
    Читать дальше →
  • Знакомство с Go — пишем граббер веб страниц с многопоточностью и блудницами

    Про язык Go от команды Google слышали, наверное, все. А вот пробовали далеко не все, и очень зря — общение с сусликами Go это море удовольствия, в чем я недавно убедился на собственном опыте.
    Начинать знакомство с новым языком забавнее всего на жизненном примере, поэтому я, не долго думая, взял первую попавшуюся задачу “из жизни, самой первостепенной важности”:

    Есть в интернете сайт http://vpustotu.ru на котором любой желающий может анонимно высказаться о наболевшем. Все высказывания (в дальнейшем буду называть их “цитатами”) сначала попадают в модерацию (аналог “бездны” башорга), где посетители могут оценить полет мысли и проголосовать за цитату в стиле “Ого!” или “Ерунда!”. На странице модерации (http://vpustotu.ru/moderation/) нам показывают случайную цитату, ссылки голосования и ссылку “Еще”, которая ведет на эту же страницу. Пощелкайте, это все очень просто.

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

    В разделе модерации нет прямых ссылок на определенную цитату, единственный способ получить новую цитату – обновить страницу (или перейти по ссылке “еще”, что одно и тоже). Причем вполне возможны повторы, что легко обнаруживается после пары минут агрессивного кликинга.

    Таким образом нужна программа, которая:

    • Должна последовательно обновлять и парсить (разбирать) страницу, записывая цитату.
    • Должна уметь отбрасывать дубликаты.


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

    • Должна останавливаться не только по команде, но и по достижению определенного числа “повторов”, например 500!
    • Так как это, скорее всего, займет некоторое время: необходимо уметь продолжить “с места на котором остановились” после закрытия.
    • Ну и раз уж все-таки это надолго – пусть делает свое грязное дело в несколько потоков. Хорошо-бы в целых 4 потока (или даже 5!).
    • И отчитывается об успехах в консоль каждые, скажем, 10 секунд.
    • А все эти параметры пускай принимает из аргументов командной строки!


    Ну, вроде все понятно. Пусть программа ведет два файла – с цитатами и с некими хешами этих цитат, чтобы не повторяться, и перечитывает файл в начале каждого запуска. Ну а дальше в цикле разбирает страницу, выдергивая все новые и новые откровения, пока не получит ctrl-c по лбу или же не встретит определенное количество повторов. Задача ясна, план есть – поехали!
    Читать дальше →
  • Пишем движок полнотекстового поиска на Go

    • Translation
    Полнотекстовый поиск — один из тех инструментов, которые мы используем практически каждый день, когда ищем какую-то информацию в интернете. Full-Text Search (FTS) — это метод поиска текста в коллекции документов. Документ может ссылаться на веб-страницу, газетную статью, сообщение электронной почты или любой структурированный текст.

    Сегодня мы собираемся написать собственный движок FTS. К концу этой статьи он сможет выполнять поиск по миллионам документов менее чем за миллисекунду. Начнём с простых поисковых запросов, таких как «Выдать все документы со словом cat», а потом расширим движок для поддержки более сложных логических запросов.

    Примечание: самым известным движком полнотекстового поиска является Lucene (а также Elasticsearch и Solr, построенные на его основе).
    Читать дальше →
  • Про фразовые глаголы

      Фразовые глаголы английского языка гораздо проще, чем кажутся. Они работают точно так же, как в русском языке приставки. Выдающийся советский актёр Зиновий Гердт, узнав однажды о недостойном поступке, совершённом знакомым ему писателем, сказал: «Разрешите с вами раззнакомиться». Думаю, мало кто слышал в живой речи глагол «раззнакомиться». Но интуитивно всё равно понятно, что это противоположность «ПО-знакомиться».

      Почему это так легко и понятно? Потому что в раннем детстве мы глубоко усвоили значения русских приставок и с тех пор оперируем ими легко и бессознательно. Так же легко и бессознательно 7-8-летние английские дети оперируют частицами во фразовых глаголах, на ходу сочиняют новые фразовые глаголы, которых нет ни в одном словаре.

      Безответственные преподаватели рекомендуют значения фразовых глаголов «просто запоминать», не пытаясь понять их внутреннюю логику. Это порочная практика: фразовых глаголов только самых распространённых – тысячи. «Выучить» их принципиально невозможно. Вот, скажем, let – это «позволять, пускать». А фразовый глагол «let in on» означает «посвящать в тайну». Запомнить такое способен только человек, который понимает переносные значения частиц, образующих фразовые глаголы.

      Если правильно усвоить эти переносные значения, можно начать понимать даже такие фразовые глаголы, с которыми сталкиваешься впервые. Знание нескольких принципов освобождает от необходимости знания многих фактов.
      Читать дальше →
    • Горутины: всё, что вы хотели знать, но боялись спросить

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

        Что за горутины?

        Горутина (goroutine) — это функция, выполняющаяся конкурентно с другими горутинами в том же адресном пространстве.

        Запустить горутину очень просто:
        go normalFunc(args...)

        Функция normalFunc(args...) начнет выполняться асинхронно с вызвавшим ее кодом.

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

        Сколько вешать в граммах?

        Чтобы было проще ориентироваться, рассмотрим цифры полученные опытным путем.
        Читать дальше →
      • 10 React-компонентов на все случаи жизни

        • Translation
        Я полагаю, что для решения различных задач React-разработки лучше использовать маленькие узкоспециализированные инструменты, а не универсальные решения, предлагаемые библиотеками компонентов. Мне нравится выбирать компоненты самостоятельно, я не люблю читать длинную документацию, и мне хочется избежать бессмысленных обновлений библиотек, после которых в проекте нередко что-то ломается.



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

        Материал, перевод которого мы сегодня публикуем, посвящён рассказу о 10 React-компонентах.
        Читать дальше →
      • Добавляем графики в Notion

        • Tutorial
        Многим не хватает графиков в Notion'e. Поэтому я решил напилить автоматическую штуку для их генерации.

        Вот как это выглядит с моей стороны:

        image
        Всех интересующихся, как это реализовано, прошу под кат.
        Читать дальше →
      • 50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков

        • Translation
        • Tutorial


        Go — простой и забавный язык. Но в нём, как и в любых других языках, есть свои подводные камни. И во многих из них сам Go не виноват. Одни — это естественное следствие прихода программистов из других языков, другие возникают из-за ложных представлений и нехватки подробностей. Если вы найдёте время и почитаете официальные спецификации, вики, почтовые рассылки, публикации в блогах и исходный код, то многие из подводных камней станут для вас очевидны. Но далеко не каждый так начинает, и это нормально. Если вы новичок в Go, статья поможет сэкономить немало часов, которые вы бы потратили на отладку кода. Мы будем рассматривать версии Go 1.5 и ниже.
        Читать дальше →
      • Что же такое этот GraphQL?

        Вашему вниманию предлагаю перевод статьи Sacha Greif "Что же такое этот GraphQL?"


        Если вы такой же, как и я, вы обычно проходите через три этапа, когда узнаёте о новой технологии:


        • Отрицание: Ещё одна JavaScript библиотека?! Зачем? У меня уже есть jQuery!
        • Интерес: Хм, наверное мне следует взглянуть на эту библиотеку...
        • Паника: Помогите! Мне нужно изучить эту библиотеку прямо сейчас, иначе мои знания устареют!

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


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

        Читать дальше →
      • Диздок, или написание проектной документации

        • Tutorial
        Диздок упоминают в разговорах, о нём шепчутся на форумах, примеры его ищут и зелёные новички, и бывалые разработчики. Случается, что под тусклым светом уличного фонаря происходит сделка. Фигура в тёмном капюшоне украдкой передаёт ссылку на «Месть курочки Рябы». Конечно, таинственный гонец не имеет злого умысла, но деяние совершено…


        Читать дальше →
        • +17
        • 83.6k
        • 5
      • Создаем приложение на JavaScript с помощью React Native

        • Translation
        В этом уроке мы будем изучать React Native – фреймворк от компании Facebook для создания нативных приложений под iOS и Android. У него много общего с другим очень популярным фреймворком от Facebook – React Javascript, который предназначен для построения декларативных пользовательских интерфейсов.


        Читать дальше →
      • Как я делал шаблон веб-магазина в Sketch.app для Themeforest. Часть 1: письмо, идея, прототип

          image

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

          Шаблон получился вот такой.

          Дальше я опишу, что и как делал в процессе. Статья традиционно будет в нескольких частях.
          Читать дальше →
        • VAT (НДС) в Эстонии для IT компаний

            Приветствую!

            В продолжение статьи о регистрации безналоговой компании в Эстонии хочу поделиться с Вами информацией связанной с VAT (Value-added tax — аналог нашего НДС).

            Если Вы зарегистрировали, или планируете зарегистрировать компанию в Эстонии для IT бизнеса, а именно для предоставления услуг, Вы с наибольшей вероятностью задумаетесь над вопросом: «А нужен ли мне VAT номер»?

            Исходя из практики и общения с моими клиентами, могу Вам сказать, что Вы не один, кто ищет ответ на этот вопрос.
            Учитывая этот факт я постараюсь дать публичный ответ на этот вопрос здесь, на «Мегамозге».
            Читать дальше →
          • 7 правил создания красивых интерфейсов

            • Translation


            Недавно мы в «Я люблю ИП» закончили курсы по дизайну от trydesignlab.com. И это одна из самых важных статей, которую нам посоветовал ментор в процессе обучения. Именно поэтому мы решили её перевести. Посмотреть все наши работы с курсов можно в ВКонтакте по тэгу #design101@iloveip.

            Вступление


            Сначала о главном. Это руководство не для всех. Это руководство прежде всего для:
            • разработчиков, которые хотят уметь делать хорошие интерфейсы для себя, если вдруг прижмёт;
            • UX-дизайнеров, которые знают, что хороший UX-дизайн продаётся лучше в красивой UI-упаковке.

            Если вы ходили в художественную школу или считаете себя хорошим дизайнером интерфейсов, то скорее всего это руководство покажется вам а) скучным, б) неправильным или даже в) вызывающим раздражение. Это нормально. Просто закройте эту вкладку и двигайтесь дальше.

            А пока давайте я расскажу, что вы найдёте в этой статье.

            Читать дальше →
          • Portaller — теперь с поддержкой Pandora, Spotify, Rdio, Netflix и Amazon Video на всех устройствах

              Привет.
              Хочу рассказать вам несколько интересных новостей о том, что происходит с Portaller — небольшим сервисом для использования Pandora, Spotify, Netflix и еще нескольких сервисов за пределами США.

              Одной строкой, если у вас нет времени идти под кат — кроме Pandora и Spotify теперь поддерживается Netflix и Amazon Video, сервис работает на всех устройствах, включая клиентов на Android (почему на нем такой акцент — читайте ниже) и к нему можно присоединиться на GitHub.

              Читать дальше →
            • 12 сентября. Сан-Франциско. Центр искусств Йерба Буэна. Live-трансляции — чего изволите?



                Хабрачитатель! Это случится сегодня. В День Программиста.
                12 сентября 2012 года. В 21:00 по Москве. В 20:00 по Киеву.

                Продолжая эстафету анонсов live-трансляций — коротко и без хабраката — встречайте:

                Русскоязычные трансляции:





                Англоязычные трансляции:





                Читать дальше →
              • 24 недели Metro-дизайна для Windows Phone | #3 Формирование идей и концепции

                • Translation
                В предыдущей статье "Процесс проектирования приложений для Windows Phone" мы обсуждали важность определения темы вашего приложения для Windows Phone. Этап идей поможет вам усовершенствовать вашу тему и генерировать идеи, которые помогут улучшить пользовательское взаимодействие для этой темы. Мы говорили о выборе в качестве темы пользовательского опыта, такого как обед, бег или плавание, вместо мыслей о приложениях с точки зрения API или RSS-каналов, доступных извне.
                Формирование идей и концепции — это весёлый этап и в него лучше всего играть с другими людьми!
                Читать дальше →
                • +11
                • 2.8k
                • 5
              • Как бы выглядел наш мир, если бы Интернет существовал уже тысячи лет

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



                  Похоже на вирусную рекламу какого то мероприятия, но от этого видео особо не пострадало
                  Читать дальше →