Pull to refresh
22
0

User

Send message

Трассировка сервисов через очередь сообщений. OpenTelemetry, NATS

Level of difficulty Hard
Reading time 4 min
Views 4.5K

Это небольшой гайд о том, как обеспечить наблюдаемость в вашей событийно-ориентированной облачной системе.

Читать далее
Total votes 5: ↑1 and ↓4 -3
Comments 10

Гайд по поиску и устранению утечек памяти в Go сервисах

Reading time 4 min
Views 6.7K

Привет меня зовут Игорь и я профессионально занимаюсь веб разработкой с 2005 года, раньше это называлось "веб-мастер", а сейчас full-stack developer.

На данный момент я tech lead в одной классной команде и иногда мне приходиться писать много текста в confluense, что бы не объяснять всё дважды и заодно приумножить knowledge base компании. Этот гайд мои "заметки на полях" в ходе исследования одного инцидента.

Читать далее
Total votes 10: ↑6 and ↓4 +2
Comments 4

6 советов для создания сложных AJAX сайтов

Reading time 4 min
Views 40K
Все мы знаем множество преимуществ использования AJAX: пользователям не нужно ждать загрузку новой страницы, действия выполняются в фоновом режиме, в результате чего можно обеспечить гораздо более динамичный user experience. Идеи вроде бы просты, но создать сложное AJAX веб приложение достаточно тяжело. Я создал свой блог на основе AJAX, у меня есть несколько советов и я хочу поделиться с вами своим опытом. Надеюсь я помогу вам избавиться от некоторых проблем в будущем!
Читать дальше →
Total votes 43: ↑32 and ↓11 +21
Comments 16

Как узнать, что ваш PHP сайт был взломан

Reading time 11 min
Views 134K
Сайт моего друга недавно был взломан, на нем была запущена старая версия IP.Board, в которой есть уязвимость локального внедрения кода (local file inclusion). Этот пост не будет посвящен IP.Board или другому php коду, он покажет, как найти потенциально вредоносный php код на ваших серверах. Наконец, покажу пример того, что злоумышленники могут загрузить на взломанный сайт.

Проверьте логи доступа


Что бы с чего-то начать, я бы хотел поделиться некоторыми записями из журнала доступа (access log) взломанного сайта моего друга.

IpreMOVED - - [01/Mar/2013:06:16:48 -0600] "POST /uploads/monthly_10_2012/view.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
IpreMOVED - - [01/Mar/2013:06:12:58 -0600] "POST /public/style_images/master/profile/blog.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"

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

Два файла выше это загруженные взломщиком скрипты, как они туда попали, большой роли не играет, так как код на любых двух серверах, вероятно, будет различным. Тем не менее, в данном конкретном примере, уязвимость в устаревшей версии IP.Board была использована, и атакующие смогли добавить свои собственные скрипты в директории доступные для записи, такие как пользовательский каталог загрузки и каталог, в котором IP.Board хранит кэшированные изображения темы оформления. Это общий вектор атаки, много людей изменяют права на эти каталоги на 777 или дают им доступ на запись, подробнее об этом чуть позже.

Рассмотрим подробнее приведенные выше строки журнала, ничего не цепляет вас?

Обратите внимание, что в журнале доступа POST запросы, а не GET запросы.
Скорее всего, злоумышленники хотели сделать журнал доступа более неприметным, так как большинство журналов не сохраняют post данные.
Читать дальше →
Total votes 109: ↑82 and ↓27 +55
Comments 122

Простой пример использования библиотеки Volley

Reading time 4 min
Views 54K
Я уверен вы, еще не слышали слово «Volley», это библиотека, представленная на Google I/O 2013 Ficus Kirkpatrick.

Для чего библиотека Volley?


Volley это библиотека, которая делает сетевые приложения для Android проще и, самое главное, быстрее.

Она управляет обработкой и кэшированием сетевых запросов, и это экономит драгоценное время разработчиков от написания одного и того же кода сетевого запроса/считывания из кэша снова и снова. И еще одно преимущество, меньше кода, меньше количество ошибок :)

Обычно мы пишем один и тот же код сетевого запроса в AsyncTask, логику обработки ответа от Web API и отображения его в View. Мы должны заботиться об отображении ProgressBar/ProgressDialog внутри OnsourceExecute() и OnPostExecute(). Я знаю, что это не трудная задача, но все же рутинная. Иногда бывает скучно, даже когда определен базовый класс для управления ProgressBar/ProgressDialog и многими другими вещами. Так что теперь можно сказать, Volley может быть мощной альтернативой AsyncTask.
Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Comments 14

HttpRequest — библиотека для простой работы с HTTP протоколом

Reading time 2 min
Views 30K
https://github.com/Garik-/http-request

Очень часто в коде можно встретить такие строки:

$result = file_get_contents("http://geocode-maps.yandex.ru/1.x/?geocode=".urlencode("Москва"));

$handle = fopen("http://www.example.com/", "rb");
$result = fgets($handle);

  • Не важно человеку, что директива allow_url_fopen может быть отключена на сервере.
  • Не важно, что на сервере установлена библиотека cURL, которая без проблем скачает 100 МБ файл.
  • Не важно, какой ответ вернет сервер, 200, 301, может 404, может 502?
  • Не важно, то что сеть не идеальная среда и ответ может придти частично или его вовсе не будет продолжительное время. Скрипт попросту подвиснет в ожидании на неопределенное время или вернет не корректный результат.

try {
    $http = HttpRequest::get("http://geocode-maps.yandex.ru/1.x/?format=json",array("geocode"=>$city))->acceptJson();
    $json = $http->ok() ? json_decode($http->body()) : null;
} catch (HttpRequestException $e) {
    exit($e->getMessage());
}

Теперь это действительно не важно.

Библиотека Http Request основана на одноименной библиотеке Kevin Sawicki, которая должна быть хорошо известна Android разработчикам, ведь её использует сам GitHub в своем приложении.
Читать дальше →
Total votes 38: ↑18 and ↓20 -2
Comments 12

Мы выпустили diafan.CMS 5.0

Reading time 3 min
Views 9.7K
Разработка 5-ой версии diafan.CMS стала для нашей компании тяжелым испытанием, так как в достаточно сжатые сроки реализовать огромное количество пожеланий наших пользователей было непросто. Но в план мы уложились и, как должны были, 1 апреля выпустили пятую версию, о чем я с гордостью всем и сообщаю, правда с небольшим опозданием.

image

Как бы это пафосно не звучало, но мы считаем, что знакомство с нашей CMS будет полезно всем, кто так или иначе касается создания сайтов. Конечно, для разных сайтов есть разные подходящие решения, где-то достаточно ВордПресса, а где-то не обойтись без Битрикса, но мы уверены, что ниша, которую мы пытаемся занять, на рынке CMS есть, и мы там очень хорошо смотримся. Причем, если несколько лет назад мы позиционировались как простая CMS для сайтов-визиток и «даже» небольших магазинов, то сегодня наша CMS позволяет делать вообще почти все, включая серьезные магазины, а среди отзывов пользователей есть восторженные заявления, что мы гораздо лучше большинства конкурентов.
Читать дальше →
Total votes 9: ↑5 and ↓4 +1
Comments 15

Изучаем протокол MMP (Mail.ru агент) и пишем альтернативный клиент

Reading time 4 min
Views 25K
Не для кого не секрет, что «Mail.ru Агент» стал довольно популярным IM проектом. Здесь вам и поддержка ICQ, XMPP, голосовых звонков и даже отправка SMS, только вот компания Mail.ru совсем забыла о разработчиках.
Официальная документация протокола обмена данными Mail.ru Агент описывает версию протокола 1.7 реализованную в 2008 году. На данный момент сервер использует протокол версии 1.24.
Читать дальше →
Total votes 52: ↑42 and ↓10 +32
Comments 48

Information

Rating
Does not participate
Location
Бобруйск, Могилевская обл., Беларусь
Date of birth
Registered
Activity