Pull to refresh
1
Karma
0
Rating

User

Туториал: SvelteKit JWT авторизация

JavaScript *TypeScript *SvelteJS *
Sandbox
Translation

В этой статье рассказывается о том, как внедрить аутентификацию в ваш SvelteKit проект. Это будет JWT аутентификация с использованием refresh токенов для дополнительной безопасности. Мы будем использовать Supabase в качестве базы данных (PostgreSQL), но основы должны быть теми же.

Читать далее
Total votes 4: ↑4 and ↓0 +4
Views 3.1K
Comments 2

Восторг безопасника — технология для шифрования образов контейнеров

Ребреин corporate blog Information Security *
Translation
На днях поступила интересная задачка — необходимо найти способ защитить исходные данные контейнера (читай: не иметь возможности прочитать, что лежит внутри), когда он остановлен. В голову сразу пришла мысль про шифрование, а пальцы начали набирать в гугле заветные слова. Пока разбирался в теме, наткнулся на достаточно интересную статью, которую с удовольствием привожу вам.


Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 9.9K
Comments 11

Как превратить любой скрипт в Telegram-бота

Instant Messaging *System administration *Go *Software Lifehacks for geeks
Tutorial

Если вам нужен простенький Telegram bot, способный выполнять скрипты (написанные на любом языке) и отвечать текстом и картинками, то вам под кат. Там вы найдёте рассказ о бот-движке, который делает то, что вам надо.


Telegram bot

Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Views 24K
Comments 10

Обнаружение лиц в Node.js с использованием Rust и WebAssembly

OTUS corporate blog JavaScript *Programming *Node.JS *Rust *
Translation

В последней статье мы рассказывали, как вызывать функции Rust из Node.js. Сегодня мы расскажем, как написать приложение AIaaS (англ. Artificial Intelligence as a Service — «искусственный интеллект как услуга») на базе Node.js.

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

Однако ни Python, ни JavaScript сами по себе не подходят для разработки ИИ-приложений с большим объемом вычислений. Это высокоуровневые, медленные языки со сложной средой выполнения, в которых удобство использования достигается за счет снижения производительности. Для решения этой проблемы блоки интеллектуальных вычислений в Python оборачиваются в нативные C/C++-модули. Точно так же можно сделать и в Node.js, но мы нашли решение получше — WebAssembly.

Виртуальные машины WebAssembly поддерживают тесную интеграцию с Node.js и другими средами выполнения JavaScript-кода. Они отличаются высокой производительностью, безопасны с точки зрения доступа к памяти, изначально защищены и совместимы с разными операционными системами. В нашем подходе сочетаются лучшие возможности WebAssembly и нативного кода.

Читать далее
Total votes 10: ↑9 and ↓1 +8
Views 3.6K
Comments 3

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

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

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

У нас нет денег и мы все делаем за свой счет, поэтому экономим. Итог — весь миллион клиентов обслуживается на одном сервере, вот на таком — EX-60 на hetzner.
Читать дальше →
Total votes 111: ↑96 and ↓15 +81
Views 112K
Comments 102

Шифруем и перешифровываем LUKS без потери данных

Information Security *

Введение

Если вы когда-либо задумывались о шифровании данных на дисках уже после того, как у вас накопилось их приличное количество, вы, вероятно, расстраивались, прочитав о необходимости переноса данных перед созданием шифрованного раздела и после. Перенос 500 ГБ туда и обратно не представляет никакой особой трудности, такой объем можно временно загрузить даже в облако, но если речь идет о шифровании 6 винчестеров по 4 ТБ каждый, задача заметно усложняется. По какой-то причине, возможность шифрования и перешифровывания томов LUKS без потери данных (in-place re-encryption) слабо освещена в интернете, хотя для этого есть две утилиты: cryptsetup-reencrypt, входящая в состав cryptsetup с 2012 года, и сторонняя luksipc, появившаяся на год раньше. Обе утилиты выполняют, в общем-то, одно и то же — шифруют раздел, если он не был шифрован, либо перешифровывают уже существующий с другими параметрами. Для своих нужд я воспользовался первой, официальной.

Как это работает?

Предположим, у вас типичная разметка диска: один раздел, начинается с 1 МиБ (выравнивание для 4КиБ-секторов), заканчивается в конце диска.
image

Заголовок LUKS располагается в начале, перед зашифрованными данными. Для заголовка требуется минимум 2056 512-байтных секторов, т.е. чуть больше 1МиБ. Места перед началом раздела нам явно недостаточно, поэтому сначала нужно уменьшить размер файловой системы с ее конца, чтобы cryptsetup-reencrypt перенес блоки правее, в конец диска, освободив таким образом место в начале раздела для LUKS-заголовка. Конечный размер заголовка зависит от длины ключа, количества слотов для парольных фраз и прочих параметров, поэтому я рекомендую быть рачительным и отвести под заголовок 4 МиБ.
image
Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Views 33K
Comments 16

Безопасность сетевой инфраструктуры. Расширенные методы взлома и защиты. Видео

Information Security *
Tutorial
Мы решили продолжить нашу традицию публиковать записи наших предыдущих вебинаров для всех желающих с целью повышения уровня осведомленности в ИБ.
Программа курса:

Первое занятие — «Инструментарий пентестера»
Это занятие представляет из себя небольшой обзор истории появления и развития дистрибутива BackTrack и превращением его в Kali Linux.


Читать дальше →
Total votes 29: ↑26 and ↓3 +23
Views 64K
Comments 6

Руководство по шифрованию данных на PHP

Information Security *Website development *Cryptography *PHP *
Tutorial
Translation
От переводчика: в процессе программирования никогда не забываю о том, что я опасно некомпетентен в криптографии, и всем советую исходить из этого тезиса (ну, может быть кроме вас и еще вон того крутого парня). Однако, так или иначе, в процессе работы возникают задачи, связанные с защитой данных, и их надо решать. Поэтому я предлагаю вашему вниманию перевод статьи финского разрабочика Timo H, которая показалась мне достаточно интересной и полезной.

Важный update: в комментариях SamDark сделал замечание, что библиотека Mcrypt давно не поддерживается и имеет ряд недоработок, поэтому рекомендуется использовать OpenSSL. Если требуется переписывать имеющийся код, то может помочь эта статья. Кроме того, есть сведения, что Mcrypt может быть удален в PHP7.

Это краткое руководство о том, как избежать распространенных ошибок с симметричным шифрованием на PHP.

Будем рассматривать случай, когда данные обрабатываются на стороне сервера (в частности, шифрование происходит на сервере, а данные могут быть получены, например, от клиента в виде открытого текста, пароля и т.п.), что является типичным случаем для PHP-приложений.

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

Естественно, рекомендации, приведенные здесь, не являются «единственно возможным способом» организации шифрования на PHP. Цель этого руководства — попытаться оставить поменьше места для ошибок и сложных неоднозначных решений.
Читать дальше →
Total votes 18: ↑13 and ↓5 +8
Views 60K
Comments 14

Облака — белогривые лошадки или безопасный ownCloud для «маленьких» в FreeNAS

Server Administration *Data storage *
Sandbox
image
ownCloud, как утверждает Википедия — это Свободное и открытое веб-приложение для синхронизации данных, расшаривания файлов и удалённого хранения документов в «облаке». И, как мне кажется, довольно интересное решение для организации собственного домашнего облака.

Однако, ownCloud, устанавливающийся в виде плагина в системе FreeNAS, да и просто из коробки, имеет ряд недостатков, от которых хотелось бы избавится даже при использовании дома:
  • Во-первых, устанавливается в связке с SQLite, что подходит только если у вас небольшое кол-во файлов и пользователей, и абсолютно не подходит, если вы планируете синхронизацию с помощью клиента. У меня же хранилище уже расползлось почти на 5Tb и установленный таким образом ownCloud просто отказывался видеть часть файлов. Да и без синхронизации отдача от облака не велика. Заменим базу данных на MariaDB.
  • Во-вторых, отсутствует работа по https, а мне совсем не нравится мысль о том, что кто-то может перехватить мои файлы. Включим https.
  • В-третьих, начисто отсутствует защита от банального подбора пароля методом брутфорса. Защитимся от брутфорса с помощью fail2ban.
  • В-четвёртых, мне лень часто просматривать логи на предмет взлома, но очень хочется оперативно узнавать о таких попытках. Настроим push-оповещения о попытках подбора пароля с помощью сервиса pushover.net.

Как же это всё сделать
Total votes 26: ↑23 and ↓3 +20
Views 59K
Comments 48

Создаём своё первое десктопное приложение при помощи HTML, JS и Node-WebKit

JavaScript *Node.JS *Browsers
Translation
В наше время при помощи JavaScript и HTML можно сделать практически всё. А благодаря Node-WebKit (недавно переименован в NW.js) можно делать даже десктопные приложения, которые выглядят, как нативные и имеют доступ ко всем частям ОС. Сегодня мы покажем, как создать простое десктопное приложение при помощи Node-WebKit, используя jQuery и несколько модулей для Node.js.

Node-WebKit — комбинация Node.js и встроенного браузера WebKit. Код JavaScript выполняется в особом окружении, из которого есть доступ и к стандартному API браузеров, и к Node.js.
Читать дальше →
Total votes 45: ↑40 and ↓5 +35
Views 111K
Comments 39

«Умный дом» собственными руками. Часть 2. Видеонаблюдение

Computer hardware
В прошлой статье (линк) мы ознакомились с теоретической частью построения нашего «умного дома» и определились с используемыми технологиями. Теперь начнем реализацию практической части :)

Первой жертвой нашего интереса станет система видеонаблюдения.
Читать дальше →
Total votes 95: ↑85 and ↓10 +75
Views 94K
Comments 88

SICP теперь по-русски! Часть третья

Programming *
image
Перевод третьей лекции из курса «Структура интерпретация компьютерных программ».

Это самый известный курс по программированию за последние 25 лет; с 1980г читается в MIT, а с недавних пор что-то подобное читается и в Беркли.

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

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

Приятного просмотра!
Читать дальше →
Total votes 98: ↑94 and ↓4 +90
Views 11K
Comments 39

Мониторинг производительности веб-сервиса. Часть I

Lumber room
image Чем качественней налажен процесс разработки, тем реже будут проявляться проблемы с производительностью в релизе. С другой стороны, полностью их не удастся избежать по той банальной причине, что в процессе разработки были сделаны “предположения” относительно условий эксплуатации веб-сервиса, а жизнь постоянно вносит свои коррективы.

От того как часто появляются такие проблемы и как быстро они исправляются зависит многое – удовлетворенность пользователя сервисом, репутация разработчика и т.д. Как можно бороться с проблемами производительности?
Читать дальше →
Total votes 13: ↑8 and ↓5 +3
Views 1.7K
Comments 3

Swiz Framework (краткий обзор)

Lumber room
Swiz это фреймворк для Flex, AIR и Flash который был создан для быстрой разработки RIA приложений. Основные фичи swiz это:

В сравнении с другими фреймворками для Flex:
  • Отсутствие необходимости JEE паттернов
  • Нет необходимости в куче повторяющихся папок
  • Нет кучи копипастеных кусков кода
  • Не обязательно наследовать классы фреймворка

Читать дальше →
Total votes 3: ↑2 and ↓1 +1
Views 638
Comments 4

Автоматизация веб-сервера FreeBSD8 Apache2+Mysql5 Часть 1

Lumber room
Так уж сложилось, что я жутко ленивый. Два года назад когда я приобрел себе VDS и встретился с FreeBSD 7.1 первый раз, убил две недели на настройку всего, что мне нужно было. Сейчас у меня 2*Pentium III 1GHz / RAM 1Гб / 2*SCSI 17Гб, под мои задачи он вполне подходит.

  1. Создание хостов
  2. Ротация логов Apache2
  3. Архивация логов Apache2 и удаление старых логов.
  4. Создание базы данных и добавление нового пользователя с правами только к одной базе, с генерацией нового пароля.


Мой любимый редактор vi. Если кто не знает как с ним работать можно везде где я указал vi заменять на свой ee,mcedit и т.д

Скрипт создания хостов.
Структура на моем сервере следующая, у каждого пользователя в хомдир лежит папка www, выглядит это так.
/home/user/www.
Скрипт внутри папки www создает каталоги с именем хоста.

Пример mk_host.sh domen.ru user
в каталоге /home/user/www будет создана папка domen.ru с директориями

  • cgi-bin
  • html
  • logs
  • shadow


Также будет создан хост в директории Apache2. По моей схеме, для каждого виртуального хоста создается отдельный конфиг.

Смотрим сам скрипт.
Читать дальше →
Total votes 27: ↑21 and ↓6 +15
Views 1.2K
Comments 9

Нюансы и алгоритмы программирования движка для маркетинговых онлайн-исследований

Lumber room
Доброго времени суток, уважаемые хабравчане. Давно меня подмывало написать подобный мануал, и вот, решил таки себя заставить сесть и написать его — поделиться некоторым опытом, который получил во время своих программистских изысканий в сфере маркетинга и о некоторых алгоритмах, заложенных в движок, на котором был реализован не один проект.
Читать дальше →
Total votes 25: ↑17 and ↓8 +9
Views 657
Comments 0

Git для загрузки обновленых файлов на сайт

Lumber room
Не знаю чем вы пользуетесь чтобы залить измененные файлы на сайт, а я раньше делал все вручную. Нудная и дурацкая работа кончено, и в какой-то момент лень, как двигатель прогресса взяла свое. Благо к этому времени я начал разбираться с рельсами, а вместе с ними и с другими прелестями адекватной разработки веб-приложений, в том числе и с VCS. В какой-то момент меня осенило — ведь в Git (Сайт проекта, Википедия) уже есть все для отслеживания изменений, почему бы не начать использовать его для заливки. Все что нужно — SSH и промежуточный репозиторий на том же сервере, недоступный веб-серверу.
Читать дальше →
Total votes 11: ↑8 and ↓3 +5
Views 979
Comments 22

Введение в eBay API

Lumber room
Здравствуйте, к своему огромному удивлению не обнаружил ни одной статьи касательно использования API eBay, хотя тема eBay стала проскакивать в последнее время достаточно часто. Свой цикл статей я бы хотел начать с описания того как получить доступ к API и как написать свой первый скрипт для работы с ним. Итак, начнём.

Прежде всего следует зарегистрироваться в системе, сделать это можно здесь. Процедура совсем несложная, в качестве имя компании я указал individual, хотя наверное, это ни на что не влияет. Далее подтверждаем свой емейл и, наконец-таки, получаем доступ. Далее следует получить два набора ключей, один для так называемой песочницы и второй для приложений, работающих с реальной базой аукционов. Надо сказать, что существует 10 разных версий API:
  • Finding API
  • Shopping API
  • Best Match API
  • Merchandising API
  • Feedback API
  • Trading API
  • Large Merchant Services
  • Client Alerts API
  • Platform Notifications API
  • Research API for eBay

В данной вводной статье я вас познакомлю с одним из методов Shopping API — GetSingleItem, который возвращает информацию по одному лоту.
Читать дальше →

Грязная работа: Вступление. Заправка цветных струйных картриджей HP

Computer hardware
Грязная работа: Вступление. Заправка струйных картриджей от HP

Этим небольшим обзором я хотел бы начать серию рассказов о «грязной» части моей работы, а именно, о следующих моментах:
  • Заправка цветных струйных картриджей HP
  • Заправка тонерных картриджей HP
  • Обзор плоттера Wersacamm SP-540V
  • Обзор плоттера BigPrinter PJ 3216

Читать дальше →
Total votes 60: ↑56 and ↓4 +52
Views 11K
Comments 42

Information

Rating
Does not participate
Registered
Activity