• Кто может стать тестировщиком?

    Как стать тестировщиком? Кто может стать тестировщиком? Эти вопрос волнуют как Руководителей компании, желающих создать отдел тестирования на основе своих сотрудников, так и специалистов, которые не могут должным образом оценить свое соответствие данной специальности.
    Читать дальше →
  • История жизни небольшой студии графики на примере 12-ти дискового RAID6 хранилища и Ceph

    В этой статье я хотел бы поделиться опытом увеличения производительности файлового хранилища для рендерфермы и нескольких рабочих станций в небольшой студии графики.
    Читать дальше →
  • Как вручную установить Oracle Java на Debian или Ubuntu

    Доброго времени суток всем читающим!


    Меня часто спрашивают о том, как же установить JDK на ос Линукс, чаще всего это дистрибутив Ubuntu или же другие дистрибутивы основанные на Debian.


    Так же у многих в последнее время возникает проблема с установкой JDK через терминал с помощью apt-get install в связи с разного рода ошибками. Чтобы не

    Читать дальше →
  • Управление качеством работы подрядчика

    Сервис, точнее его качество, как известно, это не то что может оставаться незыблемым, это то что надо постоянно проверять и сверять с заказанным эталоном.

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

    Можно конечно надеяться на работу самого подрядчика и не проверять его. Когда такой подход приносит ценность и можно ли вообще не контролировать подрядчика? Предоставляемое им качество?
    Читать дальше →
  • Автоматическое восстановление последней сохраненной конфигурации в роутерах Mikrotik

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

    А вот в Микротиках, такой функции в базе нет, хотя давно известна примета: «удаленная настройка роутера — к долгой дороге». И даже роутер под боком очень легко превратить в «кирпич до резета».

    Как то ни странно — не нашел ни одного мануала на этот счет, пришлось делать ручками.
    Читать дальше →
  • Дизайн и архитектура простого годного текстового редактора — 1

    Предыстория


    Был я, были мои отношачи с embedded, было отсутствие идеального клона vi (честно говоря, не сильно и искал). И я решил начать проект iv. Идея: инимальный легкий редактор на C++, поддерживающий ощутимое подмножество функционала vim. За исключением языка, не являющегося C, ориентируюсь на философию suckless.org.


    Речь в данной серии постов будет идти о выборе underlying data structures для iv.
    Не претендую на научную ценность, главная цель — экспрессия на Интернеты кучи мыслей о проекте.


    Что делать?


    Нулевой вариант будет, конечно, std::list<char> —

    Читать дальше →
  • Ещё раз об OpenSSL

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

    В этой статье будут рассмотрены известные вопросы генерации ключей, а также менее известный вопрос шифрования файлов больших объемов. О сертификации здесь не будет речи.
    Читать дальше →
  • Односторонний ping в Windows

    Недавно столкнулся на работе со странной проблемой.

    Выездная бригада должна была проверить сеть на объекте, подключив 2 ноутбука (А и B)к разным её частям. Картина предстала следующая:

    A> ping IP_B - успешно
    B> ping IP_A - успешно
    A> ping IP_B - с этого момента всегда "превышен интервал ожидания"

    Естественно, ноутбуки были немедленно соединены напрямую, но ситуация не изменилась. После ping с ноутбука B, он переставал отвечать на ICMP запросы других узлов сети. При этом сам B пинговал и получал ответы от всех исправно.

    Бригада справилась и без ноутбуков, которые с виноватым видом вручили мне: «Посмотри. Сломали может чего...»
    Читать дальше →
  • Сравнение Yii2 и Laravell 5.5

    Множество споров


    В настоящее время, в интернета множество споров на эту тему, и почти каждый заканчивается тем, что каждому свое. Но никто не хочет пояснять, что к чему и каждому конкретно. Замысловатая фраза, но я попробую пояснить. Существует множество споров какой фреймворк все же лучше. В итоге, каждый спор заканчивается, так или иначе, словами, что каждый хорош для своих целей. И часто возникает вопрос: «Каких же конкретно целей?». Попробуем разобраться.
    Читать дальше →
  • Простые примеры отправки 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.
    

    Приступим к самому коду
    Читать дальше →