Search
Write a publication
Pull to refresh
0
0
Евгений @lafayette

User

Send message

10 Git-команд, которые стоит знать разработчику

Reading time4 min
Views92K


В этой статье мы обсудим разные Git-команды, которые могут оказаться полезными для разработчика или специалиста по Big Data. Вы узнаете, как проверять, удалять и приводить код в порядок. А еще рассмотрим способы выхода из Vim и экономию времени с помощью псевдонимов Bash и конфигурации редактора Git.
Читать дальше →

Настройка BGP для обхода блокировок, версия 3, без VPS

Reading time3 min
Views81K

UPDATE: Статья перестала быть актуальной, новую версию читайте здесь.


Зачем всё это делается в принципе и как оно устроено логически — описано в первой и второй статьях.


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


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

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

Разворачиваем виртуалку с Windows с пробросом виртуальной видеокарты с помощью QEMU и Intel GVT-g

Reading time10 min
Views31K

Как заставить Intel GVT-g работать


Всем привет! Intel предложили отличное решение извечной проблемы: "у меня есть ноутбук на Linux и мне надо запускать Windows с аппаратным ускорением, но у меня нет тяжеленного ноутбука с двумя GPU и жидкостным охлаждением". С помощью архитектуры своих GPU или чего-то ещё им удалось сделать так, что вы можете разбить свой встроенный Intel GPU на два или более GPU.


К сожалению, это отнюдь не так просто… Документация слегка устарела, и некоторые вещи ломаются непонятным образом без очевидной причины. Поэтому в данном посте я расскажу вам, как настроить аппаратно ускоренную виртуальную машину с Windows с крутыми быстрыми драйверами virtio и Intel GVT-g.


Для этого вам понадобится более-менее современный GPU (Примечание переводчика: согласно официальной документации, GVT-g поддерживают интегрированные видеокарты, начиная с пятого поколения Intel Core и с четвёртого поколения Xeon).


Windows screenshot

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

42 оператора расширенного поиска Google (полный список)

Reading time15 min
Views329K
Те, кто давно занимается поисковой оптимизацией, хорошо знают об операторах расширенного поиска Google. Например, почти все знают об операторе site:, который ограничивает поисковую выдачу одним сайтом.

Большинство операторов легко запомнить, это короткие команды. Но уметь эффективно их использовать — совсем другая история. Многие специалисты знают основы, но немногие по-настоящему овладели этими командами.

В этой статье я поделюсь советами, которые помогут освоить поисковые операторы для 15 конкретных задач.
Читать дальше →

Генерация фиктивных данных с Mimesis: Часть I

Reading time7 min
Views38K
image

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


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


  1. Сбор необходимой информации.
  2. Постобработка собранных данных.
  3. Программирования генераторов данных.

Эта непростая задача по-настоящему усложняется в тот момент, когда требуется сгенерировать не 10-15 пользователей, а 100-150 тысяч пользователей (или иного рода данные). В этой и двух последующих статьях мы постараемся обратить ваше внимание на инструмент, который в разы упрощает процесс генерации тестовых данных, начальной загрузки базы данных и тестирования в целом.

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

Symfony — комбинируем GridFS файлы с ORM сущностями

Reading time5 min
Views4.8K
В предыдущей статье я писал о загрузке файлов в GridFS. Там мы создали MongoDB документ со свойством $file, аннотированным как @MongoDB\File. Так как ORM сущности я использую чаще, чем ODM документы, я искал простой способ получить доступ к документу из сущности.

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

Настройка FullMesh сети на Mikrotik через EoIP туннели

Reading time11 min
Views42K
Начальная ситуация такая: есть 8 офисов в разных частях страны, надо их свести в единую сеть так, чтобы доступность каждого офиса была максимальной при любых катаклизмах. В качестве роутеров во всех офисах стоят Mikrotik. На основной площадке — CCR CCR1036-12G, на остальных — 1100 AHx2

Во избежание проблем с интернетом было протянуто по 2 канала от разных провайдеров, питание тоже зарезервировали и пришли к вопросу “а какую сеть-то строить?”. Как видно из названия статьи, в итоге решили строить FullMesh.

Эта схема полностью удовлетворяет требованиям руководства — при выходе из строя любого интернет-канала или даже любого офиса сеть остается связной. Остался только вопрос с маршрутизацией. Из вариантов был всеобщий бридж с RSTP, OSPF и статические маршруты. Естественно я в итоге выбрал OSPF — меньше проблем, чем на статике и меньше нагрузки для маршрутизаторов, чем при RSTP.

Сама настройка и готовый конфиг под катом.
Читать дальше →

Symfony — загрузка файлов в MongoDB GridFS

Reading time5 min
Views22K
GridFS — это спецификация MongoDB для хранения больших файлов. В этой статье я расскажу как можно легко загружать файлы в GridFS, а затем извлекать их из базы данных и отображать в браузере.
Читать дальше →

Собираем Docker контейнер с http сервером при помощи Gradle

Reading time3 min
Views21K
imageПривет Хабр!

Возникла такая задача: Сделать простой web — сервер с минимальным числом зависимостей. При этом деплоиться он будет в виде docker контейнера. Для реализации самого сервера буду использовать GrizzlyWebServer. Для сборки Gradle c плагином для docker от Benjamin Muschko (bmuschko).

Такой выбор инструментов не случаен, я занимаюсь разработкой для android и мне ближе Java и Gradle чем что то другое. В этой статье хочу детально описать процесс от написания приложения до запуска в docker, возможные проблемы и их решение.

И так, начнем: сервер.
Читать дальше →

RetroBase — аналог Retrofit для запросов к базам данных

Reading time6 min
Views8.3K
Многие разработчики, используют в своих проектах библиотеку Retrofit, которая позволяет превратить HTTP API в java-интерфейс. Это очень удобно, так как позволяет избавиться от лишнего кода и использовать ее очень легко. Нужно лишь создать интерфейс и навесить несколько аннотаций.

Недавно я занимался разработкой приложения для Android, которому необходимо было делать запросы к базе данных через JDBC- драйвер. Тогда мне пришла идея создать нечто подобное Retrofit только для запросов к базе данных. Так появился RetroBase, о котором я Вам сейчас и расскажу.
Читать дальше →

Эффективное кеширование. От теории к практике

Reading time13 min
Views72K
image

Как правило, статьи о кешировании начинаются за здравие, а заканчиваются LRU кешем. Попробуем переломить эту тенденцию? Начнем с того, чем LRU плох, а закончим за здравие. Я надеюсь.

Вне зависимости от того, строите ли вы хайлоад сервис для миллионов посетителей или проектируете мобильное приложение, пишите операционную систему или СУБД — ключевое звено, влияющее на конечную стоимость системы и на отзывчивость интерфейса/сервиса — это кеш.
Читать дальше →

Свой облачный хостинг за 5 минут. Часть 0: Виртуализация

Reading time4 min
Views36K


Привет Хабр! Я опубликовал уже три части из цикла статей (раз, два, три), а тут часть 0, как снег на голову. Как же так? Всё дело в том, что виртуализация является опциональной при построении нашего хостинга. Эта статья — самодостаточна, она не связана с другими частями из цикла. Вы вообще можете их не читать, если просто хотите разделить ваш выделенный сервер на несколько виртуальных машин.

Всё что я буду рассказывать может выполнить обычный программист в течение 5 минут, просто запустив набор сценариев для Ansible, которые я подготовил специально для вас и выложил на GitHub.
Читать дальше →

Вышел Zabbix 3.0

Reading time7 min
Views108K
Долгожданная версия открытой системы мониторинга Zabbix обещает нам целый ворох новых возможностей, вставая на путь визуального обновления.
Сегодня хочу поделиться с вами тем, что принес релиз, и чем можно начать пользоваться уже сегодня, скачав новую версию с сайта. Мы также будем рады пригласить всех желающих на Zabbix Meetup в Москве, подробности о котором вы найдете в конце статьи.


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

OpenVZ для Debian Wheezy

Reading time2 min
Views11K
Устанавливаем vzctl из стандартного репозитария Debian и запрещаем его обновление, чтобы vzctl от Proxmox не потянул за собой 100500 зависимостей:
apt-get update
apt-get install vzctl
apt-mark hold vzctl

Подключаем репозитарий от Proxmox:
Читать дальше →

Сервер логов Elasticsearch + Logstash + Kibana4 + Beats(windows/linux). Установка и настройка

Reading time10 min
Views104K
Встал вопрос централизованного хранения и обработки журналов с серверов на базе Linux и Windows. Мой выбор пал на продукты от Elastic.
Большинство прочитанных статей на тему установки приложений Elastic показались мне достаточно расплывчатыми и неполными.
Читать дальше →

Форсаж под нагрузкой на Symfony + HHVM + MongoDB + CouchDB + Varnish

Reading time6 min
Views13K


Сегодня хотим рассказать о том, как строили систему, к которой сейчас обращается более 1 млн. уникальных посетителей в день (без учёта запросов к API), о тонкостях архитектуры, а также о тех граблях и подводных камнях, с которыми пришлось столкнуться. Поехали…
Читать дальше →

36 млн запросов в час, 10000+ постоянно работающих клиентов, на одном сервере, nginx+mysql

Reading time5 min
Views116K
Сложилась ситуация, что участвую в проекте, который работает с достаточно большой нагрузкой. Как уже написал — 36 млн запросов в час. Я много чего прочитал и перепробовал за последний месяц, настраивая сервер; хотелось бы просто сжато и компактно выдать тезисно то, что работает хорошо в такой конфигурации.

Первое, что я заметил — множество советов как все настроить под большую нагрузку. Читайте их внимательно, обычно в тексте найдете, что речь про «высокую нагрузку» в 15-20 тысяч клиентов в сутки. У нас клиентов примерно миллион, активных, ежедневных.

У нас нет денег и мы все делаем за свой счет, поэтому экономим. Итог — весь миллион клиентов обслуживается на одном сервере, вот на таком — EX-60 на hetzner.
Читать дальше →

Поднимаем сложный проект на Django с использованием Docker

Reading time10 min
Views76K
Добрый день, коллеги.

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

Исходные данные у нас такие: начинается разработка проекта, в которой планируется «тонкий бэкенд». Т.е. бэк у нас состоит из закешированных страниц (рендерятся любым шаблонизатором), объёмных моделей с сопутствующей логикой (ORM) и REST API, выполняющего роль контроллера. Фактически, View в такой системе редуцировано и вынесено в JS, благо есть разные реакты, ангуляры и прочие вещи, которые позволяют фронтендщикам считать себя «белыми людьми».
Читать дальше →

Беспроводной контроллер бытового кондиционера в OpenHAB по Modbus через RF24Network

Reading time17 min
Views23K

После первой моей статьи про управление кондиционером с помощью контроллера прошло чуть больше 2х лет. За это время идея управлять кондиционером удалённо меня не оставляла и имела несколько перерождений. Главным условием было отсутствие каких-либо проводов до кондиционера.

То есть управление контроллером должно быть беспроводным.

Предыстория


Первым прототипом была Arduino UNO. Команды она принимала по UART и умела включать и выключать кондиционер. Т.к. практического смысла от подключенной к рабочему компьютеру ардуинки было мало, голова все время искала возможность подключить последнюю к домашнему серверу. Прямой видимости от сервера до виновника всех головоломок не было. Максимум это розетка с локалкой все у того же рабочего компа — благо он стоит почти напротив кондиционера. Ethernet-шилда в наличии не было. Но вспомнив что где-то в загашнике валяется не используемый уже давно dsl-модем D-link DSL-2500U как раз с одним портом на борту. Желание дать вторую жизнь железке подтолкнуло к гуглению, которое, в свою очередь, чудесным образом вывело на статью Превращаем ADSL-модем в Ethernet-шилд для Arduino/CraftDuino.

Забегая вперед и пропуская интереснейший процесс создания кастомной прошивки мне-таки удалось заставить модем слушать на нужном порту и «пробросить» через него UART. Таким образом я мог на домашнем сервере отправить команду на включение/выключение в порт на локальный адрес модема, который отправится на подключенную к нему ардуинку.

Но эта статья не об этом. Конечное решение использует протокол Modbus и беспроводную сеть RF24Network. А управляется все в OpenHAB.
Интересно?

Information

Rating
Does not participate
Location
Великий Новгород (Новгород), Новгородская обл., Россия
Date of birth
Registered
Activity