• Самый мягкий и пушистый путь в Machine Learning и Deep Neural Networks

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

      Не все так страшно! Собрать нейронную сеть из базовых моделей может любой, кто сколько-то знаком с программированием. И даже не обязательно учить Python, всё можно сделать на родном JavaScript. Как легко начать и зачем машинное обучение фронтендерам, рассказал Алексей Охрименко (obenjiro) на FrontendConf, а мы переложили в текст — чтобы названия архитектур и полезные ссылки были под рукой.

      Spoiler. Alert!


      Этот рассказ:

      • Не для тех, кто «уже» работает с Machine Learning. Что-то интересное будет, но маловероятно, что под катом вас ждут открытия.
      • Не о Transfer Learning. Не будем говорить о том, как написать нейронную сеть на Python, а потом работать с ней из JavaScript. Никаких читов — будем писать глубокие нейронные сети именно на JS.
      • Не о всех деталях. Вообще все концепции в одну статью не поместятся, но необходимое, конечно, разберем.
      Читать дальше →
      • +42
      • 18,5k
      • 4
    • 22 сайта для программиста, которые помогут заговорить на английском

        Хабр, привет!

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

        Приступим!

        Учить лексику


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

        ЛеоПереводчик

        С этим плагином удобно переписываться с коллегами. Он автоматически переводит непонятные слова и выражения. Незаменимый инструмент, когда нет времени на доскональные переводы и нужен срочный ответ.
        Читать дальше →
      • JPEG 2000, JPEG-XR и WebP в стране упущенных возможностей

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



          Попробуем разобраться, почему JPEG 2000, JPEG-XR и WebP все еще пасут задних, и действительно ли они такие классные, как заявлено.
          Читать дальше →
        • Проксируем файлы из AWS S3 средствами nginx

            Казалось бы, задача реализации фронтенда для AWS на nginx звучит как типовой кейс для StackOverflow — ведь проблем с проксированием файлов из S3 быть не может? На деле выяснилось, что готовое решение не так-то просто найти, и данная статья должна исправить эту ситуацию.



            Зачем это вообще может понадобиться?


            1. Контроль доступа к файлам средствами nginx — актуально для концепции IaC (инфраструктура как код). Все изменения, связанные с доступом, будут вноситься только в конфигах, которые лежат в проекте.
            2. Если отдавать файлы через свой nginx, появляется возможность их кэшировать и сэкономить тем самым на запросах к S3.
            3. Подобный прокси поможет абстрагироваться от типа хранилища файлов для разных инсталляций приложения (ведь помимо S3 существуют и другие решения).
            Читать дальше →
          • Опусы про Его Величество Клей. Часть третья — полиуретан vs космический холод

            • Tutorial
            Посвящается всем туристам-водникам, рыбакам и морякам, которым удалось или не удалось (но, надеюсь, удастся после прочтения статьи) заклеить дыры на своих ПВХ судах, ибо не Десмоколом единым...

            Полиуретаны вошли в мою жизнь еще в раннем детстве, когда я с жаром доказывал мамке, что выгоднее купить дорогие кроссовки от Белкельме с полиуретановой подошвой, а не лидские с разлазящимся непонятным пластиком (позднее, кстати, «лидские» исправились), просто потому что «полиуретан — вечный». В принципе так оно и было, кроссовки изнашивались до трухи, а подошва, подошва выглядела как в день покупки. Второе «открытие» этого важного класса полимеров для меня состоялось тогда, когда я познакомился с водным туризмом и такой штукой, как пробоина на «шкуре» из ПВХ. До сих пор помню заповедь тренера, м.с. Вячеслава Антоновича Бажанского — «Десмокол-создан для байдарки, как птица для неба».

            Так что, друзья, сегодня вашему вниманию очередная, третья статья из «клеевой» серии. Посвящена она полиуретанам. Если хотите узнать, как отмыть монтажную пену, чем намертво заклеить пробитую рыбацкую пвх лодку и какой уплотнитель сохраняет эластичность при температуре жидкого азота — идем под кат, там все есть!

            Узнать, что это за полиуретан такой!
          • Несколько сетей для энтузиастов

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

              Фактически эта публикация краткий дайджест статей на Хабре о технических хобби, в основном, на грани IT, программирования и радиолюбительства.

              И первым в списке станет популярный Народный мониторинг.


              The Hitchhiker's Guide to the Habr
            • Множество профессий сегодня не требует регулярного присутствия на территории работодателя — ни в его офисе, ни даже в стране. А значит, находясь в России, трудиться можно на компанию из США или Европы. Но получив преимущество в разнице курсов валют, можно проиграть гораздо больше — из-за разницы в законах и неправильного оформления документов. Попробуем разобраться со всеми ошибками валютного договора.
              Подробности — под катом
            • Знакомство с простейшей нейронной сетью и ее пошаговая реализация

              Однажды я наткнулся на книгу под названием «Создай свою нейросеть», под авторством Тарика Рашида. В отличие от многих других книг по нейронным сетям, в этой все подавалось простым языком, c достаточным количеством примеров и советов

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

              image
              Читать дальше →
            • Типичные ошибки при работе с PostgreSQL. Часть 1

                Чуть более месяца назад в Москве состоялась крупнейшая конференция постгресового сообщества PGConf.Russia 2019, собравшая в МГУ свыше 700 человек. Мы решили выложить видео и расшифровку лучших докладов. Выступление Ивана Фролкова с разбором типичных ошибок при работе с PostgreSQL было отмечено лучшим на конференции, поэтому мы начнем с него.

                Для удобства мы разбили расшифровку на две части. В этой статье речь пойдет о непоследовательном именовании, о constraints, о том, где лучше сосредоточить логику — в базе или в приложении. Во второй части будут разобраны обработка ошибок, конкурентный доступ, неотменяемые операции, CTE и JSON.



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

                Главный вывод, который я смог сделать из того, что я видел, довольно неожиданный: фактически любое приложение при должной настойчивости можно заставить работать. Был замечательный проект (я не могу упоминать все компании, с которыми мы работали), в котором еще более замечательное приложение создавало таблицы миллионами. Выглядело это так: в понедельник система работает неплохо, а уже в пятницу она практически не работает. На выходные дни запускают VACUUM FULL, и в понедельник она опять работает хорошо. Оказывается, над PostgreSQL можно вот так издеваться, и всё это довольно долго будет жить и работать. Другой товарищ сделал странную вещь: у него всё было построено на триггерах, процедур не было вообще. То есть большую часть таблиц трогать нельзя, сделать что-либо не получалось, но и эта база жила.
                Читать дальше →
              • Как основать производственный кооператив. Руководство для  фрилансера в ИТ-сфере (перевод)

                Привет, Хабр! Представляю вашему вниманию перевод статьи "A Technology Freelancer's Guide to Starting a Worker Cooperative " от Tech Co-op Network (North American Technology Worker Cooperatives).



                Примечание переводчика


                Для многих «кооператив» это что-то про строительство, гаражи или сельское хозяйство. Тем не менее, по этой модели в мире организованы многие компании в разных областях
                https://ru.wikipedia.org/wiki/Кооператив

                В последнее время я интересуюсь вопросами кооперации в ИТ и считаю, что, при определенных условиях, данная модель имеет существенные преимущества.



                А что думаете вы?

                • насколько данная модель применима в условиях России?
                • Какие плюсы и минусы?
                • Есть ли среди нас те, у кого был успешный или не успешный опыт создания ИТ-кооператива

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

                Содержание


                Зачем создавать производственный кооператив группе фрилансеров?
                Что такое производственный кооператив?
                Как создать производственный кооператив в сфере IT?
                Истории от производственных кооперативов технической сферы

                Зачем создавать производственный кооператив группе фрилансеров?


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

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

                Читать дальше →
              • Настройка MongoDB ShardedCluster с X.509 аутентификацией

                Всем доброго времени суток! Недавно жизнь подкинула автору увлекательную работу по развертыванию MongoDB кластера с настройкой репликации и шардирования, а также аутентификации c использованием x.509 сертификатов. В данной статье я в первую очередь хотел бы изложить свои мысли и поделиться полученными опытом. Так как некоторые вещи оказались не тривиальными и сделать их с первого раза не удавалось, то думаю мои пошаговые инструкции могут пригодиться для освещения вопроса тем кто только знакомится с шардированием данных и работой с MongoDB в целом.
                Также я буду очень рад увидеть рекомендации по добавлению/изменению конфигурации кластера и просто вопросы или критику по самой статье или по сути вопроса.
                Читать дальше →
              • Разработчик! Прекрати считать себя недостаточно хорошим специалистом, это неправда

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


                  Стив поверил в себя, так и ты поверь

                  Все дальнейшие рассуждения, советы и пояснения строятся на одном простом факте: очень часто при трудоустройстве через Crossover выходцев из СНГ мы сталкиваемся с ситуацией, когда специалист заявляется на позицию с более низкими требованиями по сравнению с его реальной квалификацией. То есть представители русскоязычного IT-сообщества систематически себя недооценивают. И это — массовая проблема.
                  Читать дальше →
                • Переписываем приложение под Blockchain

                    Before and after


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


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


                    В последнее время по роду деятельности мне довелось поработать с несколькими проектами связанными с криптовалютой и blockchain-технологиями. Познакомившись ближе с Ethereum и его идеологией децентрализованных приложений (ĐApp) я просто заболел этой идеей: никакой цензуры, никто не может прикрыть ваш бизнес, никто не может конфисковать ваши средства, невозможно просто взять и выключить сервер на котором работает ваше приложение. В определенный момент я пришёл к выводу, что именно в такой среде мой проект может иметь шансы на жизнь.


                    Итак, взглянем на фронт работ.

                    Читать дальше →
                  • Эксперименты с контрактами Solidity в тестовой сети Rinkeby блокчейна Ethereum



                      Эта статья представляет собой небольшое практическое руководство, которое поможет вам быстро настроить среду разработки смарт-контрактов на языке Solidity для блокчейна Ethereum. Вы опубликуете первый контракт, сохраните его в тестовом блокчейне Rinkeby и научитесь вызывать методы контракта. Это будет ваш первый шаг на пути создания децентрализованных приложений DApp (Decentralized Application).

                      Несмотря на обилие книг, статей и руководств, посвященной теме этой статьи, новичку довольно трудно приступить к публикации контрактов и работе с ними. При попытке что-то сделать по книгам, руководствам и статьям нередко оказывается, что примеры не работают, а команды возвращают непонятные ошибки. Я попытаюсь в некоторой степени упростить первый этап освоения, отразив в этой статье свой опыт изучения Ethereum.

                      При погружении в эту тему я использовал приложение (браузер) Mist в среде Microsoft Windows, а также интерфейс командной строки Geth узла Ethereum в среде Ubuntu. В этой статье мы расскажем о работе с Geth, а также немного о том, как вызывать методы контрактов из Node.js.

                      С благодарностью приму замечания и пожелания по дальнейшим статьям про блокчейн Ethereum, разработку контрактов на языке Solidity и приложений DApp.
                      Читать дальше →
                    • GitLab CI для непрерывной интеграции и доставки в production. Часть 1: наш пайплайн



                        Итак, GitLab CI: что можно ещё рассказать о нём? На хабре уже есть статьи про установку, про настройку раннеров, про командное использование, про GitLab Flow. Пожалуй, не хватает описаний того, как используется GitLab CI в реальном проекте, где задействовано несколько команд. А в современном мире разработки ПО это действительно так: ведь есть (как минимум) разработчики, тестировщики, DevOps- и релиз-инженеры. С подобным разделением на команды мы работаем уже несколько лет. В этой статье я расскажу о том, как мы, используя и улучшая возможности GitLab CI, реализовали и применяем в production для коллектива из нескольких команд процессы непрерывной интеграции (CI) и отчасти доставки приложений (CD).
                        Читать дальше →
                      • Наш опыт с Kubernetes в небольших проектах (обзор и видео доклада)

                          Дмитрий Столяров (Флант) с докладом про Kubernetes на RootConf, РИТ++ 2017

                          6 июня на конференции RootConf 2017, проходившей в рамках фестиваля «Российские интернет-технологии» (РИТ++ 2017), в секции «Непрерывное развертывание и деплой» прозвучал доклад «Наш опыт с Kubernetes в небольших проектах». В нём рассказывалось об устройстве, принципах работы и основных возможностях Kubernetes, а также о нашей практике использования этой системы в небольших проектах.

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



                            На конференции HighLoad++ 2016 руководитель разработки «М-Тех» Вадим Мадисон рассказал о росте от системы, для которой сотня микросервисов казалась огромным числом, до нагруженного проекта, где пара тысяч микросервисов — обыденность.

                            Тема моего доклада — то, как мы запускали в продакшн микросервисы на достаточно нагруженном проекте. Это некий агрегированный опыт, но поскольку я работаю в компании «M-Tех», то давайте я пару слов расскажу о том, кто мы.

                            Если коротко, то мы занимаемся видеоотдачей — отдаём видео в реальном времени. Мы являемся видеоплатформой для «НТВ-Плюс» и «Матч ТВ». Это 300 тысяч одновременных пользователей, которые прибегают за 5 минут. Это 300 терабайт контента, который мы отдаем в час. Это такая интересная задача. Как это всё обслужить?

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

                              UPD: так как тема хорошо зашла и показала наличие спроса на такой сервис, буду развивать его дальше. Завел паблик вконтакте для сбора фидбека и публикации информации об обновлениях https://vk.com/sightsafari

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

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



                              Подумав немного, я решил взяться за эту задачу сам. Как всегда, общая идея алгоритма довольно проста, но дьявол кроется в мелочах. А в случае навигации, мелочи могут быть довольно существенны и с риском для здоровья, ведь вряд ли какой-нибудь турист обрадуется, когда навигатор в поисках достопримечательностей заведет его в дебри полузаброшенной промзоны ради маленькой мемориальной таблички (тру стори, один раз так и случилось).

                              Описание алгоритма и примеры работы под катом, ссылка в конце.
                              Читать дальше →
                            • Погружение в разработку на Ethereum. Часть 1

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

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