• История одного cover letter

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


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


    Читать дальше →
  • React-redux, connect по-новому, разделение отвественности в компонентах

    При написании SPA с помощью связки react-redux, для работы с redux используют функцию connect в файле react компонента для проброски стейта и «диспатча». Вся боль в том, что «коннекторы» и «диспатчеры» многие описывают там же, в компоненте. В этой статье я опишу connect по новому, и покажу простой способ разделения кода.
    Читать дальше →
  • Hellow hubr из esp32 с исползованием Platformio и framework espidf

    1 Start


    Приветствую %user% в данной статье мы быстро пробежимся о том как собрать и настроить корабль для путешествие в дивный чудный мир iot на esp32 .


    1.1 Используемые П.О и устройства


    • Kubunty 18 ->
      Linux x 4.15.0-39-generic #42-Ubuntu SMP Tue Oct 23 15:48:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
    • Текстовый редактор Atom
      Atom: 1.26.1
      Electron: 1.7.11
      Chrome: 58.0.3029.110
      Node: 7.9.0
    • Toolchain разработки PlatformIO
      Home 1.0.6
      Core 3.6.2a2
    • TTGO MINI32 V2.0 ESP32

    1.2 Первоначальная настройка


    Начнем с установки текстового редактора Atom:


    wget -O atom-amd64.deb https://atom.io/download/deb

    Gdebi

    программа для установки deb пакетов. Преимущество её в том, что она может устанавливать deb пакеты, используя автоматическое разрешение зависимостей (автоматически загружает и устанавливает необходимые пакеты). И ещё не нужно запускать Центр приложений Ubuntu для установки загруженного deb пакета в графическом режиме, а для этой цели используется легковесный конкретный инструмент.


    Далее установим gdebi которую мы будем использовать для установки ранее загруженного пакета Atom. А также clang.


    sudo apt install gdebi-core clang 

    Используем gdebi для установки пакета с зависимостями .


    sudo gdebi atom-amd64.deb 

    Проверим на работоспособность командой atom в консоле


    Platformio настройка


    1.Для начала устоновим нужные пакеты в атом для этого
    надо перейти Menu: Edit > Preferences > Install
    2.Провести поиск пакета platformio-ide
    3.Установить кликнув install .


    Ещё один способ установки ввести в командную строку


     apm install platformio-ide 

    Также можно посмотреть, установилось ли или нет командой :


     apm list 
     apm list | grep platformio 
    Читать дальше →
  • Установка SQLite.Swift (CocoaPods)

    Введение


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

    Предисловие
    При написании своего приложения для IOS было необходимо использовать существующую таблицу. Само приложение очень простое. Существует некая таблица с определенным количеством строк и столбцов. Каждому столбцу соответствует свое текстовое поле (TextField). Пользователь вводит число в любой TextField нажимает «Готово» и во всех остальных текстовых полях автоматически подгружаются значения из таблицы. В случае если такого числа нет, то необходимо выполнять интерполяцию чисел взятых из двух ближайших строк.
    Приложения простое, вот только возникла проблема: как связать базу данных и Swift.

    Читать дальше →
  • Студент в ИТ: учиться нельзя работать

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

    Мне никогда не сиделось на месте, и к окончанию второго курса я успела побывать в роли официанта, администратора, пораздавать предвыборные газеты и поварить пельмешки на дегустацию в супермаркете (до сих пор считаю, что это была первая и лучшая работа). Но в скором времени я поняла, что пора включать мозг, а не только обаяние, и принялась искать работу по специальности бизнес-аналитика.
    Читать дальше →
  • Опыт создания игры для Android в одиночку с нуля и как ее зафичерили на Google Play

    Привет! Меня зовут Ибрагим, я — начинающий инди-разработчик. У меня всегда было желание заняться программированием, но меня отпугивала сложность и неопределенность выбора (что именно изучать и делать). И лишь 2 года назад я все-таки преодолел этот психологический барьер, смог высвободить достаточно времени, и решил уже основательно подойти к задаче. Я был решительно настроен найти и освоить профессию, от которой я бы получал кайф.

    Сужать круг поиска, чем именно заниматься, было тяжело. Знакомых в этой области не было, поэтому решил отталкиваться от каких-то общих соображений. Так как в приоритете было в первую очередь найти что-то интересное, выбор пал на геймдев. Понравилась идея для начала сделать простенькую 2D-игру под Android и выложить на Google Play.
    Читать дальше →
  • Как Telegram-бот поборол дизайнерскую прокрастинацию и помог увеличить доход digital-агентства­

    Основатель digital-агентства Роман Квартальнов делится простым решением, которое помогло сделать производственные процессы прозрачными, дало возможность в любой момент времени оценить себестоимость проекта и компании целиком, а также экономить около 1 000 000 рублей на сборе отчетов с сотрудников.

    Знаете ли вы себестоимость работы вашей компании? Можете за 3 минуты получить доступ к информации о выполненной работе за вчера? А за неделю?

    Четыре года назад я открыл свою компанию. На старте у нас была небольшая команда. Очевидно, что чем меньше людей, тем лучше у них получается работать слаженно, быть единым организмом. К концу первого года мы начали активно масштабироваться и столкнулись с проблемами роста. В определенный момент мы просто потеряли контроль над процессами внутри компании и начали принимать решения хаотично. Есть такой термин – «хаотичное управление», его можно трактовать так: руководитель не имеет возможности прогнозировать риски, постоянно тушит пожары и не разбирается почему они происходят. У такого подхода есть 2 пути развития:

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

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

    Читать дальше →
  • Мерещится: ждать ли «криптовалюту» ко второму чтению «О цифровых активах»?

    «Не случайно мы встретились с вами здесь 7 ноября, в канун Революции!, — выдала на конференции по блокчейн в Санкт-Петербурге Элина Сидоренко, руководитель рабочей группы по оценкам рисков оборота криптовалюты Госдумы, — Самое время совершить переворот относительно стандартов работы на крипто рынке и стать примером для всех остальных стран». Как именно совершать переворот — спикер не уточнила. Но предупредила, блокчейн — хорошо, а вот децентрализация может довести до абсурда — появления сразу нескольких жен у участников крипто-сообщества в самых разных городах мира. Что называется: на пальцах о технологичном.
    Читать дальше →
  • Оптимизация скриптов с Webpack SplitChunksPlugin

    В этой статье я бы хотел поделиться своим опытом по разбиению бандлов для многостраничного сайта с помощью Webpack 4. Cначала создадим для каждой страницы свою точку входа. Рассмотрим на примере 4 страниц:


    const path = require("path");
    
    const PATHS = {
      src: path.resolve(process.cwd(), "src"),
      dist: path.resolve(process.cwd(), "dist")
    };
    
    module.exports = {
      entry: {
        common: `${PATHS.src}/js/common`,
        index: `${PATHS.src}/js/index`,
        contacts: `${PATHS.src}/js/contacts`,
        about: `${PATHS.src}/js/about`,
      }
    }

    При сборке для каждой страницы будет создан свой бандл. В точку входа common я вынес общие скрипты для всех страниц. Чтобы подключить наши бандлы на страницы воспользуемся плагином Webpack'a HtmlWebpackPlugin.


    Рассмотрим на примере:


      module.exports = {
      ...
      plugins: [
        new HtmlWebpackPlugin({
          filename: `${PATHS.dist}/index.html`,
          template: `${PATHS.dist}/index.html`,
          chunks: ["index", "common"]
        })
        ...
      ]
      ...
    };
    Читать дальше →
  • Как девочки помогли мне подружится с Django

    В данной статье я бы хотел поделиться опытом изучения языка программирования Python в целом и фреймворка Django в частности (с нуля, или почти с нуля).


    Немного истории


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


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


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

    Читать дальше →
  • Настройка IPTV от Ростелеком на роутерах MikroTik

    В свое время когда я купил роутер MikroTik, передо мной кроме базовой настройки инета встала задача обеспечить работу IPTV, до того момента у меня был установленный Ростелекомом D-link. Сама базовая настройка инета на микротике заняла у меня примерно 10 минут, а вот с IPTV пришлось повозиться. Все мануалы прочитанные мной тогда не учитывали многих моментов, до которых я дошел расковыряв настройки многострадального D-link-а и без которых работать в данной схеме ТВ нормально не будет. В этой статье я хочу обозначить полученную мной универсальную инструкцию в данной ситуации.
    Читать дальше →
  • Про социальные лифты. Конкурс «Лидеры России»

    Данная заметка является последствием прочтения недавней статьи на Хабре: “Карьерные стероиды. Лифты”. Спасибо автору. Прекрасная мотивация. Решил и я попробовать один из лифтов. Тот самый конкурс «Лидеры России» (конкурс управленцев).

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

    Читать дальше →
  • Настройка связки php-fpm + nginx под WSL

    Я — виндузятник и всячески увиливаю от окончательного перехода на Linux на своём PC не смотря на все его преимущества. Поэтому последние пару лет для создания локальных площадок под проекты использовал Docker for Windows. Не сказать что штука сверхстабильная, но существенных проблем не вызывала, пока на одном проекте на Laravel площадка не стала вести себя странно: часть запросов (и всегда разная часть) возвращались с ошибкой. Скрипт не мог открыть файл кэша.

    Бесполезно потратив изрядное количество времени на поиск причины решил в данном случае отказаться от Docker и развернуть площадку под WSL в ручном режиме.
    Читать дальше →
  • SoapUI, Postman и Katalon Studio: Обзор 3 лучших инструментов для тестирования API

    За последние пять лет, по данным Google Trends, значительно вырос интерес к тестированию API. Такая тенденция отражает сдвиг парадигмы в сторону web и мобильных приложений, а также разделение серверных служб и пользовательских интерфейсов.

    Чтобы помочь вам разобраться, какие же все-таки инструменты лучше всего подходят для автоматизации тестирования API, в этой статье для вас будет представлены обзор и сравнение трех популярных инструментов для тестирования API: SoapUI, Postman и Katalon Studio. SoapUI и Postman специализируются исключительно на тестировании API, в то время как, Katalon Studio предоставляет полный набор инструментов для тестирования API, Web и мобильных приложений.

    Katalon Studio


    Katalon Studio — это интегрированная среда для создания и выполнения тестирования при работе с API, Web и мобильных приложениями. Имеет богатый набор инструментов для тестирования и поддерживает множество платформ, включая Windows, Mac OS и Linux. Интегрируя движки от Selenium и Appium со всеми необходимыми компонентами, встроенными ключевыми словами и шаблонами, Katalon Studio предоставляет уникальную среду разработки как для тестировщиков, так и для разработчиков, занимающихся тестированием API и веб-автоматизации. Вот некоторые примечательные особенности инструмента:

    • Обработка API, Web и мобильных тестов на разных платформах
    • Возможность для тестировщики и разработчиков легко делиться и совместно работать над тестами
    • Сотни встроенных ключевых слов для создания тестов
    • Поддержка AssertJ для создания гибких проверок с использованием BDD стиля
    • Интеграция с другими инструментами ALM и интеграционного тестирования CI / DevOps

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

    1. Блокчейн — не то же самое, что эпоха интернета в середине 90х

    Хотя между состоянием интернета в середине 90х и блокчейном на сегодняшний день определённо есть сходства, отличия гораздо резче. Во-первых, интернет был создан в основном для связи. Именно человеческая потребность в связи обеспечила возможность централизации данных за последнее десятилетие.

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

    Цель блокчейна — противостоять текущей проблеме централизации данных. Таким образом, блокчейн, скорее, эволюция интернета, а конкретно — инфраструктуры данных, чем новый интернет. Его цель — создать децентрализованную систему данных, которую одному человеку взломать или использовать в своих целях не под силу.
    Читать дальше →
  • Настройка APC Smart UPS 1000 в Ubuntu server 14.04 LTS и установка модуля Webmin

    Началось все с того, что у меня сгорел служивший верой и правдой много лет Back-UPS 500VA. Не беда, подумал я и заменил его на APC Smart UPS 1000, что для моего сервера оказалось гораздо лучше. Сразу скажу, изначально сервер работал на форточках и проблем с бесперебойником не было. После замены ИБП и окончательно-бесповоротном переходе на Ubuntu я задался вопросом: собственно, как мониторить состояние сети электропитания и состояние бесперебойника? Погуглив некоторое время, я наткнулся на несколько инструкций по подключению бесперебойников к никсовым машинам, но почему-то они все были про Back UPS и USB. В частности, меня натолкнуло на написание этой статьи аналогичная статься на Хабре «Начальная настройка ИБП APC в Linux с точки зрения чайника».

    Но у меня же старенький тысячник с ком-портом и про USB он и слыхом не слыхивал.
    Читать дальше →
  • Навигация в Android: от UX до реализации. Часть 1

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

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

    В этой серии статей мы поговорим об этих проблемах и рассмотрим основные решения. Если вас заинтересовала эта тема, то прошу под кат
    Читать дальше →
  • Asterisk на Mikrotik. Обновленная настройка

    На написание этой заметки (статьей не назовешь, ибо все уже давно разжевано в статье Asterisk на Mikrotik) меня толкнули изменения в интерфейсе Winbox, а так же изменения репозиториев OpenWRT в связи с помещением в архив устаревших версий, на которые ссылается оригинальный пост. Начну с истории: у меня на работе имеется виртуальная АТС, на которую я без стеснения привязал SIP-клиент на телефоне. По правилам провайдера доступ для внутренних звонков не блокируется, но доступ наружу, хоть и можно подключаться с любой точки мира, блокируется при частой смене IP, чего избежать на мобильном устройстве проблематично. Пересмотрев всевозможные варианты я остановился на поднятии у себя дома Asterisk на моем Mikrotik RB2011UiAS-RM. Благодаря инструкции от shadowalone я миновал львиную долю танцев с бубном, но в связи с устаревшими ссылками пришлось-таки заняться мелким шаманством. Итак:
    Читать дальше →
  • Удаление директории в PHP

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

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

    В сети советуют написать функцию, которой в качестве аргумента будет передаваться путь к директории, которую нам необходимо удалить. В теле функции необходимо организовать листинг содержимого директории, в рамках которого осуществляется проверка — является ли файл директорией. Если файл является директорией, то по данному условию функция вызывает себя. Это необходимо для зачистки вложенных директорий, и это будет работать на всех уровнях вложенности. В ином случае, для файла применяется функция unlink() — она предназначена для удаления файла. За рамками данной проверки на последнем шаге мы удаляем директорию.
    Читать дальше →