Pull to refresh
Андрій @walkman7 read-only

Розробник

Хостинг сайта на Imgur

Reading time 6 min
Views 2.2K
ITSumma corporate blog Hosting Website development *Browsers Software


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

Если вкратце, то экспериментальный инструмент Web2img сначала перекодирует файлы вашего веб-сайта в формат изображений (для размещения на хостинге), а затем преобразует эту картинку в JS-скрипт для выполнения в браузере на лету (через service worker). Таким образом, контент сайта загружается с Imgur прямо в браузер.
Читать дальше →
Total votes 19: ↑19 and ↓0 +19
Comments 2

Traefik, docker и docker registry

Reading time 14 min
Views 19K
*nix *DevOps *
Tutorial

Под катом вы увидите:

• Использования Traefik в качестве обратного прокси для маршрутизации трафика внутрь docker контейнеров.

• Использование Traefik для автоматического получения Let’s Encrypt сертификатов

• Использование Traefik для разграничения доступа к docker registry при помощи basic auth

• Все перечисленное выше будет настраиваться исключительно внутри docker-compose.yml и не потребует передачи отдельных конфигурационных файлов внутрь контейнеров.

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

Помимо этого в интернете мало информации на тему использования traefik для контроля доступа к docker registry. Описанную ниже технику можно использовать для контроля доступа к любому приложению, реализующему Rest API.

Читать далее
Total votes 12: ↑12 and ↓0 +12
Comments 14

ВКонтакте снова выкладывает KPHP

Reading time 13 min
Views 47K
VK corporate blog Open source *PHP *Programming *Compilers *
Привет! Сейчас будет дежавю.

Мы снова выложили на GitHub наш PHP-компилятор — KPHP. Он проделал большой путь, и чтобы рассказать о нём, сначала телепортируемся на шесть лет назад.

Поясню для тех, кто не в теме: платформа ВКонтакте изначально была написана на PHP. Со временем нас перестала устраивать производительность, и мы решили ускорить VK. Сделали компилятор — KPHP, который поддерживал узкое подмножество PHP. Это было давно, и с тех пор мы о нём не рассказывали, так как KPHP почти не развивался до 2018-го года.

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

А теперь — телепортация.

delorean
Читать дальше →
Total votes 150: ↑145 and ↓5 +140
Comments 184

Лёгкие приложения Linux для старого железа

Reading time 7 min
Views 31K
VDSina.ru corporate blog Configuring Linux *Open source *Software Desktop PC's

Окружение Xfce

Любую систему можно разогнать, есть стандартные способы оптимизации десктопа: минимум софта в автозагрузке, preload, оптимальное зеркало для пакетов, apt-fast вместо apt-get, настройки для оптимизации отдельных приложений и так далее.

Но всё это мелкие оптимизации по сравнению с фундаментальными столпами:

  1. Лёгкий дистрибутив
  2. Легковесное окружение рабочего стола
  3. Быстрый софт

Это в первую очередь актуально для старого железа, хотя в принципе на каждом ПК мы хотим, чтобы система работала максимально эффективно, разве нет? Даже на современном многоядерном CPU больно видеть запуск программы в несколько секунд или задержку интерфейса 100-200 миллисекунд после нажатия по клавиатуре. Всё должно реагировать мгновенно, со скоростью человеческого восприятия. В нативных приложениях нет места лагам, как у веб-интерфейсов.

Поэтому — легковесное окружение и быстрый софт.
Читать дальше →
Total votes 52: ↑50 and ↓2 +48
Comments 43

Понимаем планы PostgreSQL-запросов еще удобнее

Reading time 4 min
Views 13K
Тензор corporate blog PostgreSQL *SQL *Database Administration *Data visualization *
Полгода назад мы представили explain.tensor.ru — публичный сервис для разбора и визуализации планов запросов к PostgreSQL.



За прошедшие месяцы мы сделали про него доклад на PGConf.Russia 2020, подготовили обобщающую статью по ускорению SQL-запросов на основе рекомендаций, которые он выдает… но самое главное — собирали ваши отзывы и смотрели за реальными use case.

И теперь готовы рассказать о новых возможностях, которыми вы можете пользоваться.
Читать дальше →
Total votes 25: ↑25 and ↓0 +25
Comments 10

Юрист, ставший кошмаром компании DuPont

Reading time 27 min
Views 380K
Health Ecology
Translation
Роб Билот работал корпоративным адвокатом восемь лет. Затем он взялся за судебный иск, связанный с окружающей средой, перевернувший всю его карьеру – и вскрыл бесстыдную историю химического загрязнения, длившуюся десятилетиями.

image

Всего лишь за несколько месяцев до того, как стать партнёром в юридической фирме Taft Stettinius & Hollister, Роб Билот ответил на телефонный звонок от фермера, занимавшегося разведением скота. Фермер Уилбур Тенант [Wilbur Tennant] из Паркерсбурга в Западной Виргинии рассказал, что его коровы дохнут. Он решил, что виной тому компания-химический гигант DuPont, до недавнего времени хозяйничавшая на участке в Паркесбурге, превышающем Пентагон по площади в 35 раз. Тенант пытался заручиться помощью местных властей, но у DuPont весь город был в кармане. Его просьбы с презрением отвергли не только юристы Паркерсбурга, но и его политики, журналисты, доктора и ветеринары. Раздосадованный фермер говорил с сильным акцентом, выдававшим в нём жителя региона Апалачиа. Билот пытался понять, что говорит фермер. Он, возможно, бросил бы трубку, не упомяни фермер имени бабушки Билота, Альмы Холланд Уайт.
Total votes 119: ↑116 and ↓3 +113
Comments 147

Какие английские слова IT-лексикона мы неправильно произносим чаще всего

Reading time 5 min
Views 165K
EPAM corporate blog Learning languages
Пока пара новых статей на технические темы еще в процессе написания, я решил опубликовать небольшой лингвистический материал. Достаточно часто замечаю, что коллеги, у которых английский язык — не родной, неправильно произносят некоторые характерные для IT сферы слова. И дело здесь не в том, насколько аутентично произносятся отдельные звуки, а именно в транскрипции. Регулярно встречал ситуации при общении с носителями, когда неправильно произносимое слово приводило к недопониманиям.

Дальше я приведу несколько наборов слов, сгруппированных по типовым ошибкам. К каждому слову будет приложена транскрипция, приблизительная транскрипция на русском и ссылка на более детальную информацию в словаре. Так как большинство IT компаний все-таки работает с Северной Америкой, то транскрипции будут из US English.
Читать дальше →
Total votes 309: ↑308 and ↓1 +307
Comments 486

Подборка полезных слайдов от Джулии Эванс

Reading time 1 min
Views 52K
FirstVDS corporate blog Programming *
Translation
Перевели новую порцию слайдов. Права доступа в Unix, файловые дескрипторы, потоки, магия proc. И на закуску пара советов о том, как общаться, когда ты не согласен. А вдруг пригодятся =)



Читать дальше →
Total votes 115: ↑111 and ↓4 +107
Comments 42

Debian + Postfix + Dovecot + Multidomain + SSL + IPv6 + OpenVPN + Multi-interfaces + SpamAssassin-learn + Bind

Reading time 27 min
Views 25K
Configuring Linux *Instant Messaging *DevOps *
Данная статья о том как настроить современный почтовый сервер.
Postfix + Dovecot. SPF + DKIM + rDNS. С IPv6.
С шифрованием TLS. С поддержкой нескольких доменов — часть с настоящим SSL сертификатом.
С антиспам-защитой и высоким антиспам-рейтингом у других почтовых серверов.
С поддержкой нескольких физических интерфейсов.
С OpenVPN, подключение к которому через IPv4, и которое даёт IPv6.

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

В статье отсутствуют попытки пояснить каждую деталь. Пояснение идёт к тому, что настроено не стандартно или важно с точки зрения потребителя.
Читать дальше →
Total votes 34: ↑30 and ↓4 +26
Comments 31

2 минуты с Webpack tree-shaking и re-export

Reading time 5 min
Views 6.3K
JavaScript *
Sandbox

Вступление


Позвольте мне начать. У нас был монолитный фронтэнд с большим наследием. Сервисы жили в одних файлах с компонентами. Всё было вперемешку и с лозунгом на фасаде: “Пусть всё будет под рукой – так легче найти, что надо". И не важно, что длина файла 200+, 300+, 500+ или даже больше строк кода.


Цель


Cделать всё читабельнее, меньше и быстрее.


Реализация


Разделить всё, что возможно на файлы и золотая пуля здесь это принцип единственной ответственности. Если у нас есть компонент и чистые функции внутри файла, мы их разделим.


С приходом ES6+, стало возможно использовать import … from синтакс – это отличная фича, ведь мы можем также использовать export … from.

Total votes 15: ↑13 and ↓2 +11
Comments 5

Как я хакера ловил

Reading time 6 min
Views 123K
Information Security *Reverse engineering *Social networks and communities
Sandbox

Аннотация


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

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

Введение


Одним февральским вечерком я был занят поиском места для романтичного свидания со своей возлюбленной. Через какое-то время мое внимание привлек сайт milleniumfilm.ru, не доступный в настоящее время. Сайт предоставлял услуги аренды небольших кинозалов для частного просмотра. Красивые картинки, умеренные цены, есть онлайн поддержка, одно но: данные банковской карты предлагалось ввести на не защищенной странице этого же домена. Насторожившись, я написал в техподдержку сайта, и мошенники не заставили себя долго ждать — поняв, что я достаточно технически грамотен послали меня на 3 буквы. Конечно, мошенникам нет смысла тратить на меня время, но зачем так грубо? — В любой ситуации нужно оставаться Человеком.

С отзывами о сайтах такого же плана можно ознакомиться тут: zhaloba-online.ru. Некоторые из них даже до сих пор работают.

Взлом


Чувствуя вселенскую несправедливость, с целью установления личности злоумышленника и пресечения его деятельности, я принялся изучать сайт на предмет уязвимостей.
Читать дальше →
Total votes 311: ↑305 and ↓6 +299
Comments 274

Приложение в строке меню для macOS

Reading time 10 min
Views 6.8K
Swift *Development for MacOS *
Tutorial
Translation
Приложения, размещенные в строке меню, уже давно известны пользователям macOS. У некоторых из этих приложений есть «обычная» часть, другие размещены только в строке меню.
В этом руководстве вы напишете приложение, которое показывает во всплывающем окне несколько цитат известных людей. В процессе создания этого приложения вы научитесь:

  • назначать иконку приложения в строке меню
  • делать приложение размещенным только в строке меню
  • добавлять пользовательское меню
  • показывать всплывающее по запросу пользователя окно и прятать его, когда необходимо, используя Event Monitoring

Замечание: это руководство предполагает, что вы знакомы со Swift и macOS.
Поехали!
Total votes 22: ↑22 and ↓0 +22
Comments 2

Размыкаем замыкания и внедряем Dependency Injection в JavaScript

Reading time 5 min
Views 19K
Developer Soft corporate blog JavaScript *Programming *Designing and refactoring *Node.JS *
Tutorial

image


В этой статье мы рассмотрим, как писать чистый, легко тестируемый код в функциональном стиле, используя паттерн программирования Dependency Injection. Бонусом идет 100% юнит-тест coverage.

Читать дальше →
Total votes 36: ↑34 and ↓2 +32
Comments 17

Ликбез по электротравмам (часть вторая): лонгрид о первой помощи и реанимации

Reading time 13 min
Views 35K
Pult.ru corporate blog Gadgets Popular science Physics Health
По многочисленным просьбам, рассказываем о первой помощи при поражении электрическим током. Напомню, что мы намеренно коснулись этой темы в связи с участившимися сообщениями в СМИ об электротравмах, полученных при использовании смартфонов, наушников и др. гаджетов. В пособиях, статьях и учебниках предлагаются различные алгоритмы и методики оказания такой помощи. Это создает проблемы для людей, оказывающих помощь, которые порой не могут решить, как на самом деле правильно. Ситуация в очередной раз демонстрирует, что медицина вторая по точности наука после богословия.



При этом большинство людей хотят четко представлять “как правильно” и “как эффективно”, а не додумывать и спорить, автор какого пособия прав и чей преподаватель. Под катом вас ждёт лонгрид о первой помощи при электротравме с упором в сердечно-легочную реанимацию (с которой больше всего путаницы). Запихнуть всё в одну статью будет тяжело, поэтому в данный момент мы обойдемся первой помощью для взрослых, ещё один материал я посвящу возрастным особенностям.
Total votes 73: ↑69 and ↓4 +65
Comments 114

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

Reading time 15 min
Views 206K
Media management *Search engine optimization *
Tutorial
Translation
Те, кто давно занимается поисковой оптимизацией, хорошо знают об операторах расширенного поиска Google. Например, почти все знают об операторе site:, который ограничивает поисковую выдачу одним сайтом.

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

В этой статье я поделюсь советами, которые помогут освоить поисковые операторы для 15 конкретных задач.
Читать дальше →
Total votes 127: ↑124 and ↓3 +121
Comments 40

Небольшая заметка про wildcard сертификаты Let’s Encrypt

Reading time 2 min
Views 21K
Hosting System administration *DevOps *
Все уже, наверное, в курсе про такую организацию как Let’s Encrypt. С некоторых пор там можно получить и wildcard сертификат. В этой короткой заметке я опишу пару не очень очевидных моментов, с которыми столкнулся.
Читать дальше →
Total votes 22: ↑18 and ↓4 +14
Comments 17

Git: советы новичкам – часть 3

Reading time 6 min
Views 64K
Playrix corporate blog Git *

В финальной части нашей серии статей о работе с Git мы продолжим разговор о ветках, рассмотрим особенности работы с командой push и расскажем, что такое rebase. Первую и вторую статьи серии вы можете прочитать по ссылкам.
Читать дальше →
Total votes 55: ↑55 and ↓0 +55
Comments 24

Создаём динамическую обложку ВКонтакте

Reading time 5 min
Views 113K
Programming *Java *Image processing *VK API *
В последнее время всё большую популярность обретают различные интерактивные способы завлечь аудиторию и привлечь к себе больше внимания. Тут и боты для социальных сетей и мессенджеров, и другие решения, придающие «уникальности». Среди них можно выделить и динамические обложки для сообществ, официально поддерживать которые ВКонтакте начали в марте.

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


На примере моего пустого сообщества-песочницы
Читать дальше →
Total votes 45: ↑42 and ↓3 +39
Comments 46

Простейший HTTP сервер на Golang и Elixir. Сравнение производительности

Reading time 10 min
Views 31K
High performance *System Analysis and Design *Erlang/OTP *Go *Web services testing *

image
Пару недель назад, я решил взять простейший пример HTTP сервера на Go и измерить его производительность. Потом я смело взял Phoenix, прогнал на тех же тестах, и расстроился. Результаты были не в пользу Elixir/Erlang (45133 RPS у Go и всего 3065 RPS у Phoenix). Но Phoenix — это тяжело. Надо что-то хотя бы примерно равное по простоте и логике разработки тому, что есть на Go: когда есть путь — "/" и handler для него. Логичной аналогией мне показалось решение cowboy + plug, где у нас есть Router, который так же ловит "/" и отвечает на него. Результаты убили — Elixir/Erlang опять оказался медленнее:


Golang
sea@sea:~/go$ wrk -t10 -c100 -d10s http://127.0.0.1:4000/
...
  452793 requests in 10.03s, 58.30MB read
Requests/sec:  45133.28
Transfer/sec:      5.81MB

elixir cowboy plug
sea@sea:~/http_test$ wrk -t10 -c100 -d10s http://127.0.0.1:4000/
...
  184703 requests in 10.02s, 28.57MB read
Requests/sec:  18441.79
Transfer/sec:      2.85MB

Как жить дальше? Две недели я не спал и не ел (почти). Все, во что я верил все эти годы: совершенство vm erlang, ФП, зеленые процессы, было растоптано разорвано, сожжено и пущено по ветру. Немного отойдя от шока, успокоившись, и подтерев сопли я решил разобаться, в чем дело.

Читать дальше →
Total votes 55: ↑44 and ↓11 +33
Comments 42

Удаленная переустановка Linux по ssh без доступа к консоли

Reading time 7 min
Views 53K
Configuring Linux *Server Administration *
Sandbox
Понадобилось мне переустановить сервер, который как бы хостился у знакомых знакомых. Там был сильно устаревший Debian, а, самое главное, система стояла на обычных разделах без lvm и пространство было распределено очень не оптимально. Физический доступ получить к нему было практически нереально, местного админа попросить что-то сделать было можно, но занять это могло неделю. Виртуальный KVM у сервера был, но извне на него попасть было нельзя; у как бы хостера не было лишних IP-адресов, а внутрь его сети попасть было невозможно. Надо было переустановить сервер из-под работающей системы по ssh. Ага, давайте поменяем ротор у турбины не выключая, потом её перезапустим и будет она с новым ротором работать!
Читать дальше →
Total votes 111: ↑110 and ↓1 +109
Comments 70

Information

Rating
Does not participate
Date of birth
Registered
Activity