• Хельсинки. Как найти работу в финской игровой индустрии, начать работать без разрешения и не нарушить российские законы

      В декабре 2018 мы с женой переехали из Санкт-Петербурга в Хельсинки. Уже есть довольно много статей и (видео)блогов о том, как живется в Финляндии и стоит ли сюда переезжать. Вместо этого я бы хотел рассказать ту часть истории, которая связана с самим переездом. Нам пришлось решить кучу вопросов разной степени важности, многие из которых возникали внезапно и не всегда имели очевидное решение. Мы постарались подытожить наш опыт в этом, не побоюсь этого слова, лонгриде. Его нельзя назвать ультимативным гайдом, так как любой опыт всегда индивидуален, но я очень надеюсь, что нам удалось пополнить выдачу гугла новыми ключевыми словами, и хотя бы одному человеку станет проще найти ответы. Здесь вы можете узнать, как можно найти работу в финской игровой индустрии, как начать работать до получения разрешения на работу, как подготовить документы до переезда, что оформить после переезда и какую информацию нужно предоставить российским государственным органам, чтобы не нарушить закон.


      Читать дальше →
    • Джо Армстронг об Elixir, Erlang, ФП и ООП

      • Translation

      В последние несколько дней на Хабре был опубликован ряд статей, общим лейтмотивом которых (особенно в комментариях) стало противостояние тупоконечников с остроконечниками – адепты ФП против ООП, хотя их и призывали не спорить. Иногда обсуждали Erlang, в связи с чем мне вспомнился короткий пост на тему от Джо Армстронга, одного из создателей этого языка, написанный им в конце 2018 года на форуме по Elixir в ответ на вопрос о парадигме языка. Думаю, его комментарий будет интересен.

      Читать дальше →
    • Делаем «умный» контроллер для кондиционера на ESP8266

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

        Задача


        В квартире стоят четыре кондиционера, ими нужно научиться управлять:

        • Из веб-интерфейса (у меня это Home Assistant, крутящийся на отдельном Raspberry Pi, но в идеале хочется простого подключения к любой системе);
        • Голосом (Google Assistant подойдёт, потом подумаем об Алисе);
        • Скриптами;
        • Дёшево...

        Читать дальше →
      • Контактная сварка для аккумуляторов 18650

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


          Читать дальше →
        • Асинхронный Python: различные формы конкурентности

          С появлением Python 3 довольно много шума об “асинхронности” и “параллелизме”, можно полагать, что Python недавно представил эти возможности/концепции. Но это не так. Мы много раз использовали эти операции. Кроме того, новички могут подумать, что asyncio является единственным или лучшим способом воссоздать и использовать асинхронные/параллельные операции. В этой статье мы рассмотрим различные способы достижения параллелизма, их преимущества и недостатки.
          Читать дальше →
        • Что такое «асинхронная событийная модель», и почему сейчас она «в моде»

          Сейчас в тематических интернетах модно слово «Node.js». В этой небольшой статье мы попробуем понять («на пальцах»), откуда всё это взялось, и чем такая архитектура отличается от привычной нам архитектуры с «синхронным» и «блокирующим» вводом/выводом в коде приложения (обычный сайт на PHP + MySQL), запущенного на сервере приложений, работающем по схеме «по потоку (или процессу) на запрос» (классический Apache Web Server).
          Читать дальше →
        • Подключаем онлайн-карты к навигатору на смартфоне. Часть 2 – векторные карты

          • Tutorial

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

          Читать дальше →
          • +10
          • 1.3k
          • 4
        • Получить выписку из Росреестра через ФГИС ЕГРН и python. Часть 1

            Дешевые выписки, что может быть лучше ?


            У Романа Андреевича Карцева есть неплохой монолог про раков вчерашних по 5 руб. и сегодняшних по 3-и. Будем считать, что прошлый пост был про раков по 5 руб. Так как выписка из ЕГРН по 300 руб., хоть и автоматизированная не каждому по карману, если речь идет о массовых запросах.

            В этот раз рассмотрим как получить тот же результат, потратив 400 руб. за 100 выписок из ЕГРН. Наша программа будет выполнять нехитрые манипуляции, заходить на сайт, заполнять за нас все необходимые поля при подаче запроса в Росреестр. Как и в прошлый раз мы не будет использовать api Росреестра.
            Читать дальше →
            • +10
            • 6.5k
            • 7
          • Откуда этот конфиг? [Debian/Ubuntu]

              Цель этого поста: показать технику отладки в debian/ubuntu, связанную с "поиском первоисточника" в системном конфигурационном файле.


              Тестовый пример: после долгих издевательств над tar.gz копией установленной ОС и после её восстановления и установки апдейтов мы получаем сообщение:


              update-initramfs: Generating /boot/initrd.img-4.15.0-54-generic
              W: initramfs-tools configuration sets RESUME=/dev/mapper/U1563304817I0-swap
              W: but no matching swap device is available.
              I: The initramfs will attempt to resume from /dev/dm-1
              I: (/dev/mapper/foobar-swap)
              I: Set the RESUME variable to override this.

              Цель: понять, откуда это значение (U1563304817I0) пришло и как его правильно поменять. Это первый попавшийся пример, не особо интересный сам по себе, но удобный, чтобы показать практические методы работы с Linux.


              Шаг номер 1: Откуда пришёл RESUME?

              Читать дальше →
            • Интересная задачка для интервью, карринг и частичное применение функции

              Хожу по job interview. Где-то скучно, где-то весело. Где-то интересно. На одном из таких меня попросили написать функцию, которая умеет складывать два числа. Я написал:

                it ('should add two numbers', function () {
                  var add = function (a,b) {
                    return a + b;
                  };
              
                  assert.equal(add(2,3), 5);
                });
              


              А если, говорят, сигнатура функции должна быть типа такой: add(num1)(num2)? Не вопрос, говорю. Думая, что хитрый буржуин хочет проверить, знаю ли я про то, что можно возвращать функции из функций, пишу вот такое:

                it ('should be called like add(num1)(num2)', function () {
                  var add = function (a) {
                    return function (b) {
                      return a + b;
                    };
                  };
              
                  assert.equal(add(2)(3), 5);
                });
              


              Читать дальше →
            • Почему Senior Developer'ы не могут устроиться на работу

              • Translation


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


              После первичного созвона меня отправили на сторонний сайт (HackerRank), чтобы я решил три небольших задачки за 1 час. Для меня это был первый подобный опыт. Первые две задачки были простыми, но третья оказалась посложней. Когда время подошло к концу, моё решение не проходило все тесты, а только где-то 8 из 10 необходимых.

              Читать дальше →
            • Взгляд на релокацию в Эстонию изнутри — плюсы, минусы и подводные камни

                Однажды компания Parallels решила пойти навстречу тем своим сотрудникам, которые уже давно работали в компании и не хотели ее менять, но при этом хотели поменять свое местожительство, чтобы быть ближе к Западу, иметь паспорт ЕС и быть мобильнее и независимее в своих передвижениях.

                Так родилась идея расширить географию своего присутствия и открыть R&D центр Parallels в Эстонии.

                Почему Эстония?


                Изначально рассматривались разные варианты, находящиеся не так далеко от Москвы: Германия, Чехия, Польша, Эстония. В пользу Эстонии было то, что почти половина страны говорит по-русски, а до Москвы можно доехать на любом ночном поезде. Кроме того, в Эстонии функционирует очень продвинутая модель электронного правительства, значительно упрощающая все организационные аспекты, и ведется реальная работа по привлечению инвесторов, стартапов и других перспективных проектов.

                image

                Итак, выбор был сделан. А теперь — о релокации в Таллинн устами наших сотрудников, которые рассказывают, какие их ожидания оправдались, а какие – нет, и с какими изначально непрогнозируемыми трудностями им пришлось столкнуться.
                Читать дальше →
              • Подборка рабочих примеров обработки данных

                  Привет, читатель.

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

                  Схема работы с текущим постом унаследуется от моего поста про лучшие блокноты по ML и DS, а именно — сохранил в закладки → передал коллеге.

                  + бонус в конце статьи — крутой курс от ФПМИ МФТИ.

                  image

                  Итак, давайте приступим.

                  Подборка датасетов с рабочими примерами обработки данных:


                  Suicide Rates Overview 1985 to 2016 — сравнение социально-экономической информации с показателями самоубийств по годам и странам.

                  Примеры обработки:

                  Читать дальше →
                • Как попасть на дачу президента в пять часов утра

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


                  Читать дальше →
                • Tic Tac Toe, часть 4: Взаимодействие с бэкендом на Flask с помощью HTTP

                  • Tutorial
                  Tic Tac Toe, часть 0: Сравнение Svelte и React
                  Tic Tac Toe, часть 1: Svelte и Canvas 2D
                  Tic Tac Toe, часть 2: Undo/Redo с хранением состояний
                  Tic Tac Toe, часть 3: Undo/Redo с хранением команд
                  Tic Tac Toe, часть 4: Взаимодействие с бэкендом на Flask с помощью HTTP

                  В этой статье рассмотрим взаимодействие веб-приложения на Svelte из предыдущей статьи с бэкендом на Flask при помощи HTTP запросов. Оказалось, что поднять контейнер с бэкенд приложением на Flask быстрее чем на Boost.Beast, поэтому сделал пример с Flask. Не огорчайтесь, пример с Boost.Beast будет немного позже.

                  Читать дальше →
                • Автоматическая фотостудия, часть 1

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


                    Читать дальше →
                  • SVG индикатор загрузки на Vue.js

                    Привет! Учусь на front-end, и параллельно, в учебном проекте, разрабатываю SPA на Vue.js для back-end, который собирает данные от поискового бота. Бот нарабатывает от 0 до 500 записей, и я должен их: загрузить, отсортировать по заданным критериям, показать в таблице.


                    Ни back-end ни бот, сортировать данные не умеют, поэтому мне приходятся загружать все данные и обрабатывать их на стороне браузера. Сортировка происходит очень быстро, а вот скорость загрузки, зависит о коннекта, и указанные 500 записей могут загружаться от 10 до 40 секунд.


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


                    Чтобы скрасить пользователю ожидание, я решил показать ему процесс загрузки:


                    1. цифрами — сколько % записей уже загружено
                    2. графиком — время загрузки каждой записи
                    3. заполнением — % загрузки. Так как график по мере загрузки заполняет прямоугольный блок, видно, какую часть блока осталось заполнить

                    Вот анимация результата, к которому я стремился и получил:



                    … по-моему, получилось забавно.


                    В статье я покажу как продвигался к результату шаг за шагом. Графики функций в браузере я до селе не рисовал, поэтому разработка индикатора принесла мне простые, но новые знания о применении SVG и Vue.


                    Читать дальше →
                    • +17
                    • 7.8k
                    • 5
                  • Получить выписку ЕГРН из Росреестра с помощью python, минуя api

                      Не первое знакомство с порталом Росреестра


                      Любой юрист когда-либо обращался с запросом в Росреестр (Федеральная служба государственной регистрации, кадастра и картографии). Времена, когда для запроса надо было бежать в отделение Росреестра и подавать запрос на бумаге уходят в прошлое. Росреестр запустил несколько онлайн сервисов, которые можно использовать не выходя из дома. К этим сервисам относится и запрос выписки из Единого государственного реестра недвижимости. Официальный сайт для начала работы.

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

                      Возможно, это удобный способ получения одной или нескольких выписок. Однако, что делать, если необходим пакет выписок ЕГРН? Допустим, вы работаете с недвижимостью или владеете рядом объектов, общее число которых более 10. По общему правилу получать выписку из ЕГРН надо не реже 1 раза в год, чтобы успеть вовремя отреагировать в юридической плоскости на нежелательные изменения в Росреестре, если они возникнут помимо вашей воли.

                      Читать дальше →
                      • +4
                      • 12.2k
                      • 7
                    • ООП с примерами (часть 2)

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

                        Для этого я постарался на более-менее живых примерах объяснить базовые понятия ООП (класс, объект, интерфейс, абстракция, инкапсуляция, наследование и полиморфизм).

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

                        Читать дальше →
                      • Экскурсия по ЦОД МегаФона



                          Не так давно прошла экскурсия, которую устраивал партнер-дистрибьютор — компания OCS в лице менеджера по маркетингу Лизы Цаплиной.
                          Сам ЦОД — это достаточно высокотехнологичное здание с красивым внешнем архитектурным решением, о котором многие уже не раз слышали. Мегафоновский ЦОД в Самаре имеет стандарт TIER III Design, который подтвержден сертификатом.
                          Читать дальше →