Home
Привет тут [entries|friends|calendar]
saterenko

[ userinfo | livejournal userinfo ]
[ calendar | livejournal calendar ]

Были получены исходники 3300 глобальных интернет-проектов [23 Sep 2009|12:38pm]

Про сабж можно почитать на хабре: http://habrahabr.ru/blogs/infosecurity/70330/.

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

post comment

Диван лучше табуретки [21 Aug 2009|03:45pm]

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

Во вторник его отвезли в больничку. Не смотря на то, что дорога была близкая, ехал он долго. Четырежды хозяин останавливался, остужал двигатель и доливал холодной воды в радиатор. А сегодня его забрали, здорового и бодренького. Заправили полный бак бензина и поехали кататься. Кататься просто так, а не по делам. Видимо хозяин соскучился, ведь старый диван всегда лучше новой табуретки :)

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

post comment

Хроники Перевёрнутого мира: мошенничество [13 Aug 2009|01:21pm]
В обычной жизни, если совершается преступление, то устанавливать личность преступника, собирать доказательную базу, возбуждать уголовное дело — как бы задачи правоохранительных органов. В Перевёрнутом мире найти преступника и собрать доказательства — дело потерпевших или публики. Всё, что может потом сделать МВД — проверить собранные факты и отказать в возбуждении уголовного дела.

читать далее
post comment

Посоветуйте доку по socket [31 Jul 2009|08:35pm]
Посоветуйте хорошую книгу (описание, документацию) по сокетам на русском или английском, только не поверхностную. Хочется получить ответы, на такие вопросы как:
-- как устроена пресылка информации на низком уровне?
-- можно ли одновременно писать в "два конца" и как это отрабатывается?
-- можно ли, получив часть данных, отказаться от получения остальных пакетов и послать сразу ответ?
-- что будет если на запрос сразу ответить, не получив все данные и закрыть сокет?

В общем я осознал, что знания библиотечных функций мне мало, хочется фундаментальных знаний...
7 comments|post comment

Так ли страшен серый волк? [28 Jul 2009|10:16am]

Исследовал тему хранилищ типа ключ/значение и обратил внимание, что все тесты на производительность сетевых хранилищ производились в однопоточном режиме. Типа “Tokyo Cabinet крутая бибилиотека, выдаёт порядка 17К запросов в секунду на дисковой базе данных, но через сеть (Tokyo Tyrant) всего 1.6К запросов в секунду”, а потом “latency — это зло”. Но почему-то не видел многопоточных тестов, как это бывает в реальных web-приложениях со множеством фронтендов. И не видел клиентских библиотек, работающих по событийной схеме, а не по схеме “послал запрос, жду ответа, ненавижу latency”. Ведь в этих случаях latency будет не так страшна, или я где-то не прав?

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

post comment

Российская география [27 Mar 2009|11:12am]

Гео-база maxmind окончательно задолбала своими приколами, когда треть Москвы определяется как область в Великобритании. Могу себе представить как она определяет географию для других городов России. В поисках нормальной базы ip-адресов России нашёл ipgeobase.ru. Бесплатная, поддерживаемая, актуальная база для России. Но когда дело дошло до парсинга, меня её формат взбесил. Вместо того, чтобы сделать так, как делают те же maxmind, где последовательно располагаются блоки адресов, они реализовали структуру со множественными вложениями, парсер для которой, без поллитра не напишешь.

Поломав голову над парсером, я его родил и решил выложить доработанный скрипт для тех, кому не хочется мучаться самому :)

Скачать скрипт можно тут: ipgeobase.php.gz.

Для работы скрипта нужен файл cidr_ru_block.txt из архива db_files.tar.gz. Запускаться скрипт должен в том же каталоге, что и cidr_ru_block.txt. После работы скрипта появляются 3 файла: ipgeobase-states.dat, ipgeobase-cities.dat, ipgeobase-ips.dat.

В ipgeobase-states.dat храняться области в формате [идентификатор области]\t[название области].
В ipgeobase-cities.dat храняться города в формате [идентификатор города]\t[идентификатор области]\t[название города].
В ipgeobase-ips.dat храняться диапазоны ip-адресов в формате [IP от]\t[IP до]\t[идентификатор области]\t[идентификатор города].

При повторном запуске скрипт начитывает данные из ipgeobase-states.dat и ipgeobase-cities.dat (если они есть). Таким образом, при появлении новых городов или областей, идентификаторы “старых” записей не изменятся. IP храняться в виде беззнакового 32-битного числа.

Как-то так, надеюсь кому-то мой труд облегчит жизнь :)

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

6 comments|post comment

Такси в День Святого Валентина [15 Feb 2009|12:52pm]

Вчера возникла необходимость воспользоваться такси для поездки от дома до The Real McCoy на Баррикадной. Google запросу “такси москва” выдал кучу предложений.

В одном месте на звонок не ответили, но перезвонили через 20 минут и, не представившись, спросили зачем звонили. Это было неожиданным, потому что на сайте был указан “многоканальный телефон”, а на деле оказался мобильный частного таксиста.

Вторым сайтом был www.500-50-50.ru. Вот эти ребята натурально удивили и порадовали. Приятная девушка приняла заказ. Секунд через 10 пришла SMS-ка о том, что заказ принят, с указанием куда и в какое время подать такси. Такси было заказано на 18:30. В районе 16:30 часов пришла SMS-ка с указанием модели машины, госномером, именем водителя и его мобильным телефоном. В 18:25 пришла SMS-ка о том, что такси ждёт у подъезда. Доехали без приключений. Через минуту после приезда пришла SMS-ка со “спасибками”, указанием стоимости поездки (290 рублей) и указанием что на накопительный счёт капнуло 14 рублей. В общем, молодцы, порадовали.

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

post comment

Пулированный связный список [04 Feb 2009|11:01am]

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

Основная идея, заложенная в реализацию — это использование пула выделенной памяти. Моя библиотека, реализующая пул памяти, не подразумевает повторное использование памяти, которая была освобождена всвязи с удалением элемента. Писать универсальную библиотеку, которая позволяла бы использовать память повторно, не посчитал целесообразным, потому как под разные данные выделяется память разного размера и контроль за свободными кусками снизит производительность пула. В случае со связными списками, мы имеем дело с кусками памяти одного размера, а потому проблем с контролем освобождённых кусков памяти нет.

Читать запись полностью » )

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

post comment

Мыслим перпендикулярно [30 Jan 2009|10:16am]

Продолжаем тему Битовых головоломок. Anight предложил интересную идею как можно реализовать поиск данных по битовым маскам. Сначала я не понял о чём мне говорят, но когда до меня дошло, я в очередной раз порадовался простоте и элегантности решения от anight-а.

Теперь о самом решении. Задача стоит в том, чтобы максимально быстро выбрать набор данных, удовлетворяющих некоторому набору признаков, представленных в виде битовой маски. Далее предполагается, что мы работаем со 128-битным регистрами sse.

Мои идеи крутились вокруг деления битовой маски на куски по 128 бит и последовательной проверки каждого слова на соответствие поисковой маске. В результате получается матрица размерностью ceil(размер битовой маски / 128) по ширине и длинной в количество записей.

Новая идея в том, что мы строим матрицу, где строке соответствует один бит из битовой маски, а в столбцах у нас записи. Таким образом, у нас одно слово описывает один бит у 128 записей. Получается, что за одну операцию мы проверяем один бит у 128 записей. Если у нас n бит в маске, то мы проверим 128 записей за n операций. По-моему красиво :)

Из плюсов вижу более компактное хранение (у нас не будет неиспользуемых бит в слове, если размер битовой маски не кратен 128) и большую скорость работы (мы проверяем только значимые биты, например, если у нас битовая маска 150 бит, то в первом варианте нам нужно 2 проверки на каждую запись, т.е. 256 операций на 128 записей, а во втором нам нужно 150 операций для проверки 128 записей). Из минусов вижу только более сложное формирование данных и поиска.

ИМХО красивая реализация :)

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

6 comments|post comment

Битовые головоломки [29 Jan 2009|09:56am]

Давненько я тут не писал, совсем разленился… Решил написать о чём болит голова второй день…

Всё началось с того, что решил подумать, как ускорить перебор среди элементов со множеством полей. Можно по каким-то полям сделать индекс, но покрыть индексами всё не получается. Таким образом, в некоторых случаях, придётся использовать тупой перебор.

Первое что приходит в голову для ускорения перебора — использование битовых операций. Сформировал маску и пошёл AND-ом по списку, красота. Но когда наткнулся на необходимость проверить что значение больше (или меньше) заданного, впал в ступор. Если диапазон значений меньше или равен количеству бит в целом, никаких проблем нет, а если диапазон шире, ступор.

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

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

6 comments|post comment

ICQ to Jubber [23 Jan 2009|12:22am]
Аська совсем упала, а потому альтернативный gtalk становится основным, пишите на saterenko <на> gmail <точка> com
post comment

Генератор словоформ на основе aspell [28 Dec 2008|12:11pm]

В своё время я достаточно долго искал словари для использования их в контексте. В результате написал на php скрипт для генерации словоформ русского языка на основе словаря aspell. Кому надо, может скачать архив.

В архиве словарь aspell для русского языка в формате utf-8 и два скрипта, которые генерируют словоформы с разным форматом вывода. В результате получается порядка 1.3М словоформ.

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

post comment

HTTP в качестве внутреннего протокола [25 Dec 2008|01:21pm]

Занимаюсь сейчас разработкой контекстного демона. И, по привычке, начал реализовывать собственный протокол общения с демоном. Потом вспомнил статью, в которой говорилось о преимуществах использования протокола HTTP для внутреннего протокола общения.

В результате перешёл на использование HTTP. Для себя я выделил следующие преимущества. Во-первых, при использовании HTTP, у меня есть возможность использовать огромное количество готового программного обеспечения для создания инфраструктуры. Тот же nginx можно прикрутить в качестве балансировщика. Во-вторых, теперь никаких telnet-ов для тестирования, можно использовать любой браузер. В третьих, такой демон можно легко, без переработок, использовать в качестве сервиса с доступом по HTTP.

Рекомендую подумать на эту тему :)

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

post comment

Ротация данных в многопоточной среде [24 Dec 2008|01:36pm]

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

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

Читать запись полностью » )

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

post comment

Контекстные головоломки [23 Dec 2008|07:33pm]

Сейчас ломаю голову как показывать баннеры в контекстной сети. Вопрос делится на два возможных варианта: показ рекламы в контекстной сети на подобии Adsense, бегун или директ (где выбирается заданное количество объявлений подходящих по ключевым словам для данной страницы) и показ в контекстной сети на подобии videoclick или автоконтекста бегуна (где линкуются ключевые фразы на странице, при наведении на которые, показывается реклама).

В обоих вариантах есть общие вещи, но есть и различия. В первом варианте кампании не конфликтуют друг с другом, а просто выбираются на основе каких-то приоритетов (скорее всего по ECPM, количеству заработанных денег за тысячу показов), а во втором легко может произойти конфликт, когда одна или более кампаний “дерутся” за одно слово или фразу.

Читать запись полностью » )

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

post comment

Счётчики в многопоточной среде [22 Dec 2008|09:30am]

Не в первый раз задумываюсь о том, как организовать обработку счётчиков в системе управления рекламой. Сейчас я попытаюсь систематизировать свои мысли в этой области.

Я вижу два подхода к решению задачи хранения счётчиков. Первый подход — это хранение относительного количества показов, кликов и т.п., которые были совершены с некоторого момента времени (например, с последнего перечитывания данных из базы данных). Второй подход — это хранение абсолютного количества показов, кликов и т.п., которы были совершены за всё время. Рассмотрим эти подходы подробнее.

Читать запись полностью » )

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

post comment

Есть ли жизнь за отсечкой [19 Dec 2008|01:11pm]

Мне Denis, в комментария на тему Приоритетные очереди 2, подсказал отличную тему, как бороться с перекрутами в системах управления рекламой, о чём сегодня и поговорим…

Проблема такая существует, и она отражается не только на амбициях программиста, который хочет сделать идеальную систему, работающую как швейцарские часы, но и на бизнесе, которому перекрут обходится в некоторую копеечку (рекламодателю сложно доказать что он должен оплатить перекрут, а площадке сложно объяснить почему ему не заплачено за сверх-показы).

Читать запись полностью » )

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

post comment

Приоритетные очереди 2 [18 Dec 2008|11:06am]

Почитал, подумал и пришёл к следующим мыслям.

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

Читать запись полностью » )

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

post comment

Приоритетные очереди [17 Dec 2008|11:21am]

Не первый раз сталкиваюсь с задачей, для которой я пока не придумал красивого и простого решения… Речь идёт о приоритетных очередях.

Для решения проблемы с выбором баннера, который надо показать на площадке, я знаю два решения. Первое решение — подсчёт суммы приоритетов всех баннеров, расстановка весов каждому из баннеров, а потом, случайным образом (с учётом приоритетов) выбор баннера. Такой вариант не нравится большим количеством вычислений и тем, что баннеры выбираются случайным образом, а не равномерно (на большом трафике статистика нормальная, но хочется иметь нормальную статистику и на маленьком трафике). Второй вариант — очереди. Формируется циклическая очередь, по которой бегаем. Математики мало, но есть свои проблемы.

Читать запись полностью » )

Запись опубликована Записки программиста.Вы можете оставить комментарии здесь или тут

post comment

театр [09 Dec 2008|08:58am]
Вчера ходили в Моссовет на "Ledies night" с Гошей Куценко... Рекомендую... Хрошее настроение обеспечено, давно так не смеялся! Особенно девушкам понравится, под конец там стриптиз ;)
post comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]

Advertisement