• Простые примеры отправки GET и POST запросов на Java c использованием библиотеки Rest-Assured

    В наше время автоматизаторов всё чаще просят заавтоматизировать не только функциональные тесты для веба с использованием Selenium, но и написать тесты на API. В частности, для веб сервисов архитектуры REST.

    В этой записке я приведу пару простых примеров использования библиотеки Rest-Assured, предназначенной для тестирования REST сервисов. Она поддерживает все типы запросов: POST, GET, PUT, DELETE, OPTIONS, PATCH, HEAD и может быть использована для проверки ответов по посланным запросам.

    В качестве системы сборки я использую Maven, как наиболее простую и удобную. Итак, добавим в pom.xml следующие зависимости:

            <dependency>
                <groupId>io.rest-assured</groupId>
                <artifactId>rest-assured</artifactId>
                <version>3.0.7</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>20180130</version>
            </dependency>
    

    Далее привожу собственно примеры кода. Я думаю, комментарии излишни.
    Читать дальше →
  • Внесение изменений в закрытую ветку реестра windows через powerhell

    Была поставлена задача, внести измения в ветку ресстра windows пользовательских машин, с помощью GPO и скрипта powerhell.

    Закрытая ветка реестра

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs
    Тип данных реестра: String value
    Имя: UXTheme
    Значение: UXTheme.dll


    Открытая ветка реестра

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
    Имя: CWDIllegalInDllSearch
    Значение: 0xffffffff
    Тип данных реестра: DWORD


    Открытая ветка реестра

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
    Имя: SafeDllSearchMode
    Значение: 1
    Тип данных реестра: DWORD


    Читать дальше →
  • Revolver: микро библиотека для frontend на Java Script

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

    Собственно, Revolver — микробиблиотека для frontend (всего чуть более 1500 строк несжатого кода), которая включает в себя API (можете назвать это синтаксический сахар, если вам угодно) для работы с элементами DOM, поддерживающая ряд модулей для создания анимаций и асинхронных запросов.
    Читать дальше →
  • Фрилансерский блокбастер или история одного непростого заказа

    Здравствуйте, меня зовут stalinko и я фрилансер. Работаю в основном через UpWork. В качестве подработки обожаю писать скрейперы. Это такие программы, которые парсят (выкачивают) данные с других сайтов.

    Прилетел мне заказик, вполне стандартный: написать программку, чтобы раз в сутки пробегалась по всем товарам интернет-магазина и сохраняла их в БД клиента. Ну и чтобы эти товары можно было через браузер смотреть, сортировать, фильтровать.

    Заказ стандартный абсолютно. Я оценил его в 8 часов на скрейпер + 8 часов на веб-страничку. Клиент захотел по фиксированной цене работать, поэтому я предложил $700, в итоге сторговались на $600. Заключили контракт, работаю.

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

    Начал писать и тут оказалось, что сайт довольно строго банит скрейперы, если слишком часто посылать запросы. Проблема… Если посылать запросы с задержкой то весь парсинг растянется на пару месяцев, это только первый проход! Что делать?
    Читать дальше →
  • Конвертация формул из MS word в TeX

    Приветствую читателей Хабра!

    На создание статьи меня побудил этот хабропост, в котором рассказывается о методе конвертации файлов из MS Word в LaTeX. Видимо, на набор формул заново занял не малое время, автор делится своими впечатлениями:
    И, конечно, отдельное удовольствие доставил повторный набор формул, изначально представленных в DOC-файле, в командах LaTeX'а.
    Читателям предлагается способ превосходящий по быстроте ручной перенабор формул.
    Читать дальше →
  • Генератор мемов на Ruby для привлечения интереса к языку

    image

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

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

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

    Например так
    image

    Когда сделал через сайт генераторов мемов штук 10 картинок — я понял, что очень все медленно и проблемно, плюс ко всему я сделал только 10 методов ruby, а их еще около 1 000 может наберется. Было принято решение создать свой генератор мемов да и еще интерфейс к этому всему прикрутить и все это сделать с использованием языка Ruby.
    Читать дальше →
  • Автоматическое геотегирование новостных сообщений или как я писал свой диплом

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

    Здесь можно ознакомится с программой. Предупреждаю сразу, программа находиться в режиме тестирования, а так же текст интерфейса написан на украинском языке.



    План

    1. Входные данные.
    2. База данных названий населенных пунктов.
    3. Фильтрация текста.
    4. Поиск названий населенных пунктов в новосном сообщении.
    5. Геотегирование новостного сообщения и генерация карты.
    6. Дополнительные возможности программы.
    Читать дальше →
  • Как из браузера открыть папку в проводнике Windows

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

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

    Вы можете резонно предположить, что есть протокол file:// (я позволю себе использовать здесь и далее слово протокол, хотя правильнее, конечно, схема URI), который позволяет браузерам открывать локальные файлы, но с ним также есть две проблемы:

    1) он не может отобразить список файлов в папке;
    2) такие ссылки нельзя открывать с внешних (не локальных) веб-страниц.

    Чтобы решить данную проблему, мы будем использовать свой протокол с собственным обработчиком. Метод будет работать в Windows и потребует некоторых (очень простых) действий на компьютере.
    Читать дальше →
  • Некоторые простые вещи, которые мигрируют из проекта в проект

    Введение


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


    Вот например некоторые мои вспомогательные классы (код на C#). Все они когда-то были найдены в интернете, скопированы у коллег или написаны мной (я уже не помню). Могут содержать в себе ошибки.


    Потокобезопасный Random


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

    Читать дальше →
  • Отправка голосовых сообщение с помощью vk api

    Всем здравствуйте. Сегодня я попытаюсь как я реализовывал отправку голосовых сообщений в Python с помощью библиотеки vk_api. Взял идею отсюда.

    План


    1. Входим в аккаунт.
    2. Получаем ссылку(url1), на которую будем загружать аудио файл.
    3. Переводим текст в аудио файл (gtts module).
    4. Загружаем файл на url1.
    5. Получаем документ, которой отправим с помощью метода messages.send.

    Config.py


    Для удобства я использую отдельный файл с «конифгом».

    LOGIN = '' # логин от VK
    PASSWORD = '' # пароль от VK
    LANG = '' # Язык, на котором будут голосовые сообщения ru,en, etc.
    

    Приступим к самому коду
    Читать дальше →
  • Экспорт векторов из Sketch App в SVG, проблемы с кодом SVG и отображением иконок в IcoMoon

    Передо мной стояла задача сделать иконочный шрифт из векторов, сделанных в Sketch App, и сгенерировать шрифт на IcoMoon.

    Для этого нужно экспортировать векторные иконки из Sketch App в SVG и добавить их в Iconmoon. Но что-то пошло не так, некоторые иконки имели неожиданный вид.

    image Это то, как отобразил мой SVG IcoMoon.
    image А это то, на что я рассчитывала, глядя в Sketch.

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

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


    Читать дальше →
  • Ключевое слово «volatile» C/C++

    Volatile — ключевое слово языков C/C++, которое информирует компилятор о том, что значение переменной может меняться из вне и что компилятор не будет оптимизировать эту переменную. Примерно такое описание volatile я встречал во многих книгах и туториалах, и каждый раз мне не удавалось понять что же хотел сказать автор. На понимание этого я потратил n-ое количество времени, и вот специально для этого, чтобы упростить жизнь новичкам в понимании этого аспекта, решил написать как раз таки эту статью.
    Читать дальше →
  • Полноценный USB выход на D-link dir-320 A1 на Tomato

    Доброго времени суток всем!

    В этой статье хочу помочь владельцам достаточно популярного, но уже морально устаревшего D-link dir-320 ревизии A1 разобраться как заставить нормально работать USB в роли файлового сервера, т.к. в интернете я не нашел внятной информации как это сделать, и пришлось собирать пазл по кусочкам.

    И так, роутер имеет на себе usb выход, НО… производитель решил, что использовать его нужно только для принт-сервера и не более того. В web интерфейсе родной прошивки можно выбрать только «Настройки принтера». Обновление прошивки ничего не дает.

    Т.к. USB выход есть и он может делать, что либо еще кроме выдачи 5 В, то соответственно проблема только одна и это прошивка. Было решено менять.

    Начнем по порядку, имелся роутер ASUS RT-N12VP без USB выхода, а так же старенький D-link dir-320 A1, цель была следующая, объединить два роутера в одну сеть и иметь сетевой диск.

    Первый подводный камень «сменить прошивку на dd-wrt»

    Читать дальше →
  • Написание декоратора при использовании django-export-import

    Привет, Хабр! Меня зовут Павел Цвилюк, начинающий Python Developer. В ходе работы над одним из проектов я столкнулся с проблемой подключения поискового поля и выгрузки отчётов в exel в административной панели. Их необходимо было регистрировать вместе с моим классом User:

    models.py
    class User(models.Model):
        name=models.CharField(max_length=200)
        surname=models.CharField(max_length=200)
        email=models.EmailField()
        password=models.CharField(max_length=200)
        telephone=models.PositiveIntegerField(max_length=12,blank=True,null=True)

    Так выглядел мой код, когда я попытался изначально зарегистрировать их:

    admin.py
    from django.contrib import admin
    from .models import User
    from import_export import resources
    from import_export.admin import ImportExportModelAdmin
    
    class UsersAdmin(admin.ModelAdmin):
        search_fields = ('name', 'email', 'telephone')
    
    class UsersResource(resources.ModelResource):
        class Meta:
            model = User
            skip_unchanged = True
            fields = ('id', 'name', 'email', 'telephone')
    
    class UserAdmin(ImportExportModelAdmin):
            resource_class = UsersResource
    
    admin.site.register(User, UsersAdmin, UsersAdmin)

    Запустив вышеописанный код я получил следующее:
    admin.site.register(User, UsersAdmin, UserAdmin)
    TypeError: register() takes from 2 to 3 positional arguments but 4 were given
    Читать дальше →
  • Что такое ExecutorService?

    Честно говоря, вопрос этот не слишком новый. Со времени выхода Java 5 и пакета java.util.concurrent.* прошло более 13 лет, но мне, за всю мою десятилетнюю практику, так ни разу и не пришлось столкнуться с этим зверем. Тем не менее, мне этот вопрос несколько раз задавали на собеседованиях и пришлось знакомиться.
    Читать дальше →
  • Выкачиваем фотографии из каждого диалога ВК средствами API

    Иногда бывает полезно выгрузить все фотографии из диалога ВКонтакте, руками это не сделать не просто, поэтому обратимся к API.

    В документации присутствует метод messages.getHistoryAttachments — он нам и нужен. Возвращать он может не только фотографии, но и другого рода документы: аудио, видео и т.д. Но в этом примере будем рассматривать только фотографии.
    Читать дальше →
  • bash редактируем приветствия сервера Linux

    Редактируем стандартное приветствия Linux/Bash


    2018_02_05_16_50_16

    1. Установим дополнительные пакеты «figlet»

    sudo apt-get install figlet -y  

    переходим в каталог суперпользователя…

    cd /root/ 

    Редактируем файл .bashrc
    (добавим дополнения в низ после #fi)

    nano .bashrc
    Читать дальше →