Как стать автором
Обновить
22
0

Пользователь

Отправить сообщение

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

Уровень сложностиСложный
Время на прочтение4 мин
Количество просмотров4.7K

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

Читать далее
Всего голосов 5: ↑1 и ↓4-3
Комментарии10

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

Время на прочтение4 мин
Количество просмотров6.7K

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

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

Читать далее
Всего голосов 10: ↑6 и ↓4+2
Комментарии4

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

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

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

Время на прочтение11 мин
Количество просмотров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 данные.
Читать дальше →
Всего голосов 109: ↑82 и ↓27+55
Комментарии122

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

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

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


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

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

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

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

Время на прочтение2 мин
Количество просмотров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 в своем приложении.
Читать дальше →
Всего голосов 38: ↑18 и ↓20-2
Комментарии12

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

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

image

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

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

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

Информация

В рейтинге
4 300-й
Откуда
Бобруйск, Могилевская обл., Беларусь
Дата рождения
Зарегистрирован
Активность