Pull to refresh
0
0
encore @encore

User

Send message

Величественные пески: Пустынные дюны, вид из космоса

Reading time6 min
Views1.9K
imageСегодня же пятница? Тогда почему бы не отвлечься на научно-популярную фото-статью о том, что занимает четвертую часть суши нашей планеты?

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

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

Оригинал статьи на wired.com
Перевод статьи на translated.by
Над переводом работали



А оформленная статья, как обычно, под катом
Total votes 84: ↑76 and ↓8+68
Comments29

IMDb исполнилось 19 лет

Reading time2 min
Views2.1K
17 октября 2009 года сайт Internet Movie Database (IMDb) встречал посетителей праздничным логотипом. Крупнейшей базе с фильмографической информацией и старейшему в мире краудсорсинговому веб-проекту исполнилось 19 (девятнадцать) лет. По меркам интернета это очень почтенный возраст. Проект появился на восемь лет раньше Google и на пять лет раньше Yahoo. Он даже старше, чем первый веб-браузер. Основатель Кол Нидхэм (Col Needham) рассказывает, как такое получилось.

Дело в том, что 17 октября 1990 года Нидхэм опубликовал первые Unix-скрипты для поиска по огромному архиву фильмографической информации, собранной в рамках USENET-группы rec.arts.movies (аналог нашего ФИДО). А там было, ни много ни мало, более 23 000 записей о 10 000 фильмах.

Хотя само название IMDb появилось только четыре года спустя, но рождение проекта произошло именно в тот день.
Читать дальше →
Total votes 70: ↑62 and ↓8+54
Comments29

Flash + вКонтакте API

Reading time12 min
Views1.6K

По шагам описаны регистрация и создание flash приложения под социальную сеть вКонтакте, использующего вызовы вКонтакте API. Написан AS3 класс-обёртка для вКонтакте API.
Приложение, процесс создания под катом.
Читать дальше →
Total votes 35: ↑31 and ↓4+27
Comments12

Знакомство с Adobe Pixel Bender (Часть 1)

Reading time4 min
Views9.6K
Технология Pixel Bender была разработана в лаборатории Adobe, для создания фильтров предназначенных для обработки видео и изображений. Фильтры Pixel Bender(PB) могут использоваться в программных продуктах: Adobe Flash, Adobe Flex, Adobe Photoshop, Adobe After Effects. По своей сути, PB предоставляет возможность программным способом обрабатывать изображения с поддержкой аппаратного ускорения. Он хорош тем, что позволяет обработать каждый пиксель поэтапным обходом изображения.
Pixel Bender Toolkit абсолютно бесплатен, скачать его можно по следующей ссылке labs.adobe.com/technologies/pixelbender. PBT(Pixel Bender Toolkit) включает в себя: интегрированную среду разработки с поддержкой родного си-подобного языка и граф-языка, примеры фильтров, документацию.
Создание фильтров делится на 3 этапа:
  • Разработка алгоритма
  • Запись алгоритма в PBT
  • Экспорт в байт-код

Читать дальше →
Total votes 45: ↑37 and ↓8+29
Comments31

Система контроля доступа на cakePHP.

Reading time9 min
Views1K
Как вы знаете существуют различные системы контроля доступа.
Некторые из них простые, реализованные только на основе сессий, другие же сложные, такие как ACL. Каждая из них имеет свои плюсы и минусы. Простые системы легки в понимании и в обращении, но при увеличении количества привелегий и необходимости их динамического изменения будут возникать и соотвествующие трудности, ACL же довольно громоздка, не столь гибка и сложна в понимании. Долгое время использовав обе системы, пришел к выводу, что нужно разработать свою систему контроля доступом, которая бы имела следующие возможности:
  • простота понимания и простота исполнения
  • динамическое сосздание групп\ролей и перемещение юзера по ролям\группам
  • юзер может состоять в любом количестве групп\ролей
  • легкое, быстрое и понятное изменение доступа
  • минимизация кода при использовании системы
  • мимнимизация размера таблиц связанных с контролем доступа
  • минимизация количества запросов к БД


Читая существующие топики о системах разделения доступа часто натыкался на коментарии: «Зачем городить огород, если есть ACL». Сразу же отвечу чем меня не устраивает ACL.
  • сложность понимания
  • юзер не может быть в нескольких группах одновременно
  • при необходимости ограничения доступа отдельныи юзерам сильно раздуваются таблички (необходимо хранить id каждого юзера )
  • сложность с перемещением юзеров по группам
  • отсутсвие кеширования
  • необходимость делать визуализацию для работы с группами и правами
  • своя тельняжка ближе к телу (в том смысле, что свой код легче потдерживать)


Читать дальше →
Total votes 15: ↑11 and ↓4+7
Comments10

Перенос сайта на новый домен

Reading time3 min
Views1.8K
Склейка домена обычно происходит при необходимости переехать с одного домена на другой, например, при покупке нового более красивого адреса или попадания в бан одной из поисковых систем старого. Иногда же клеят в корыстных целях чтобы получить чужой тИЦ/PR, но сейчас о первом случае.

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

Самым же неправильным методом переноса сайта на новый домен с минимальной потерей посетителей, на мой взгляд, будет следующий:
Читать дальше →
Total votes 62: ↑52 and ↓10+42
Comments16

Интервью с Ильей Сегаловичем (Яндекс)

Reading time13 min
Views6.4K
Не так давно мы собрали вопросы Илье Сегаловичу (iseg) – директору компании «Яндекс» по технологиям и разработке. Редакция Хабра выбрала самые интересные из вопросов, а Илья Сегалович на них ответил, да и как ответил!

Новые технологии появляются с завидной регулярностью. Успеваете ли Вы внедрять их, всегда ли стремитесь использовать новые технологии или же используете те, которые проверены временем?
Надеюсь, вопрос не про средства разработки ПО, а про технологии, используемые в интернет-сервисах. Мы живем по принципу «наименьших усилий с наибольшей отдачей». Как только мы видим, что «технологическое» (здесь это слово используется как противопоставленное «ручному») решение может оказаться полезным, пусть в самом первом приближении, мы стараемся дать его пользователю.

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

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

Мы часто и довольно нахально «вываливаем» на широкую публику то, что до нас никто (в наших масштабах) не делал: будь то полностью «автосклеивающая» адресная книга, или автоматические биографии в Новостях, или автоподбор ключевых слов на Директе.

Остальные интересные вопросы и очень подробные ответы
Total votes 104: ↑97 and ↓7+90
Comments37

Flex Data Binding Tricks

Reading time9 min
Views5.5K
Меньше года назад меня вовлекли в проект, для которого необходимо было писать клиента на Flex. Так как я был новичком в этом деле, то в процессе работы я находил что-то новое и совершенно неизвестное мне. В то время я и открыл для себя Flex Data Binding (связыванием данных). Я думаю, что каждый, кто работает с Flex очень скоро сталкивается с Data Binding.
Связывание данных заключается в том, что мы можем с легкостью связывать два объекта (источника данных) между собой, что позволяет поддерживать их синхронизацию. Примером может служить связывание между собой элементов пользовательского интерфейса путем создания некоторых правил поведения, что способствует созданию более интерактивного пользовательского интерфейса.
Имея некоторый опыт в этой области, я решил разобрать все типы механизма связывания данных во Flex. Думаю эта статья будет интересна не только новичкам, но и профессионалы почерпнут из неё что-нибудь для себя.
Ещё больше о data binding
Total votes 25: ↑25 and ↓0+25
Comments19

Какая боль! Толпы против Веб — 2:0. Эпизод два — клоны заходят в полдень

Reading time5 min
Views554
Продолжаем warstory оптимизации PHP+mySQL сайта редчайших слов. Одним майским днем, копаясь в словах, мне пришла в голову мысль — расставить под этими словами textbox'ы — использовать [модный для Web 2.0] crowdsourcing. Заполняй чем хочешь, только про это конкретное слово. Но, должно было работать collaborative — как Google Docs — если ты и еще кто-то редактируют слова на одной и той же странице — изменения будут отображаться одновременно. Или, например, кто-то редактирует слово «google» на странице Гугла, а на странице TechMeme, к примеру, есть тоже слово «google» — и им в real-time покажутся эти изменения со страницы Гугла [это необязательно понимать]. Знал бы я какие последствия эта веселая задумка на mySQL окажет позже…

Сделать это оказалось несложно: prototype.js — в руки, ajax — каждые 10 секунд, смотрим в базе что менялось за последние 10 секунд, делаем пересечение со словами на текущей странице, отправляем js highlight effect и новый текст — вуаля. Людей было, но мало кто что-то вводил, тогда я придумал повесить в уголок страницы блок «только что было сказано». Например: «На странице 'fibonacci.com' только что было сказано, что 'fibonacci' → 'crazy math scientist'». Это уже значительно заинтересовало людей и заполняемость выросла в разы. Все видели движения на сайте и сами вовлекались.

Собственно, я сделал достаточно функционала для довольно забавной игрушки — «войны сайтов редкими словами», авто-категоризатор, синонимизатор и т.п. Я сидел мирно редактировал «живой» сайт, загружал новый файл, если видел ошибку — исправлял, не переживая, что это кто-то может видеть. Не подозревал я, что уже тысячи людей видят это. После очередной ошибки в названии функци что-то произошло… я не смог загрузить на FTP index.php… это был TechCrunch....
Читать дальше →
Total votes 98: ↑84 and ↓14+70
Comments43

Настройка Apache2.2+Nginx+eAccelerator+SVN+Trac на медленном VDS — часть вторая

Reading time3 min
Views1.6K
Первая часть

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


С Subversion и Trac пришлось помучаться — здесь напишу финальный, заработавший вариант.

UPD: Рекомендуется сначала попробовать поставить из репозитория, указав соответствующий источник

apt-get install subversion


Subversion — руководствовался в основном этим.

Читать дальше →
Total votes 17: ↑14 and ↓3+11
Comments9

Настройка Apache2.2+Nginx+eAccelerator+SVN+Trac на медленном VDS — часть первая

Reading time4 min
Views2.9K
Вторая часть

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


Итак, досталась мне хиленькая VDS от FirstVDS — с Debian и ISPManager.
Попытки оптимизировать ее работу вылились в следующее:

1. Оптимизация Apache и установка Nginx
2. Установка eAccelerator

Ну и для души —

3. Установка SVN
4. Установка Trac.

Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments19

Поиск — это просто

Reading time3 min
Views3.6K
Google, конечно, ищет хорошо, но корпоративные ресурсы вывешивать на открытый доступ нельзя, покупать google-mini с его ограничениями тоже не вариант. А поиск по базе внушительных размеров(4 гигабайта текстов, по которым и необходим поиск) надо. А если добаить к поиску по тексту еще и поиск по каким-то параметрам, то тут и google-mini не поможет и совсем страшно становится.

Но не стоит паниковать! На помощь нам приходит Sphinx — поисковый движок с открытым исходным кодом, который можно прикрутить практически к чему угодно не прилагая особых усилий

Читать дальше →
Total votes 93: ↑90 and ↓3+87
Comments124

Первые, но нелегкие шаги во Flex

Reading time7 min
Views5.7K
Не так давно я начал свое знакомство с Flex Builder 3. Поскольку с программированием я дружу давно и по-всякому, проблем с задачами типа «Hello, world», сортировка массива и «а как сделать, чтобы изображение по кнопке ползало» не было. Однако я встретился с задачами, которые при внешней своей простоте простых решений в среде Flex не имели.

Именно о них и пойдет речь дальше.
Total votes 36: ↑31 and ↓5+26
Comments24

Система Webmoney интегрируется в социальные сети

Reading time1 min
Views711
WebMoney Transfer объявила о запуске принципиально нового и уникального продукта под брендом Keeper Embedded. Это бизнес-платформа для блогов, социальных сетей, онлайн-игр, сообществ, web 2.0 проектов.

Участники любого сообщества и социальной сети, будь то «Хабрахабр», Facebook или World of Warcraft, теперь могут одним нажатием мышки связать свой существующий WM-кошелек с аккаунтом в нужной им социальной сети.

После этого становится возможным проведение микроплатежей и взаиморасчётов внутри коммьюнити. Например, таким образом владельца «Хабрахабра» или Livejournal могут наладить автоматические платежи в пользу самых активных участников коммьюнити на сайте или организовать систему взаиморасчётов за карму. Весь биллинг берёт на себя WebMoney Transfer. Размер денежной комиссии и технические вопросы решаются в договорном порядке. По умолчанию владельцы сообщества получают процент от всех исходящих платежей своих юзеров.

В качества образца уже создан первый плагин Webmoney для социальной сети Facebook.
Total votes 42: ↑39 and ↓3+36
Comments35

Что не охраняется копирайтом?

Reading time7 min
Views17K
Неоднократно в своем блоге мы останавливались на вопросах авторского права. А сегодня давайте поговорим о тех вещах, на которые оно не распространяется. Знать о них в последнее время становится все более необходимо.

Дело в том, что современный копирайт дает правообладателю очень большой объем полномочий: он может ходатайствовать перед судом о наложении ареста на «пиратские» экземпляры произведений, требовать «компенсации», минимальный размер которой ограничен десятью тысячами рублей, и пользоваться другими мелкими привилегиями, на которые так богата четвертая часть Гражданского кодекса. Поэтому часто при возможных спорах потенциальный истец, считая свои права нарушенными, объявляет их именно «авторскими правами», не имея к этому никаких оснований.

Что такое творчество?
Читать дальше →
Total votes 70: ↑66 and ↓4+62
Comments26

Нечёткий поиск в тексте и словаре

Reading time13 min
Views260K

Введение


Алгоритмы нечеткого поиска (также известного как поиск по сходству или fuzzy string search) являются основой систем проверки орфографии и полноценных поисковых систем вроде Google или Yandex. Например, такие алгоритмы используются для функций наподобие «Возможно вы имели в виду …» в тех же поисковых системах.

В этой обзорной статье я рассмотрю следующие понятия, методы и алгоритмы:
  • Расстояние Левенштейна
  • Расстояние Дамерау-Левенштейна
  • Алгоритм Bitap с модификациями от Wu и Manber
  • Алгоритм расширения выборки
  • Метод N-грамм
  • Хеширование по сигнатуре
  • BK-деревья
А также проведу сравнительное тестирование качества и производительности алгоритмов.
Читать дальше →
Total votes 171: ↑170 and ↓1+169
Comments33

Обфускация JavaScript

Reading time5 min
Views195K
В статье собраны всем известные методы и предельно извращенные. Эту статью я решил написать после недавнего прочтения поста в блоге Badass JavaScript и решил её дополнить своими находками.

Первый способ


Он всем известен — обфускация минимизаторами такими как JS Packer, JSmin, YUI Compressor, Closure compiler или можно просто пугуглить «JavaScript Obfuscator» и найдется ещё сто штук разных обфускаторов.
Они превращают существующий код
function MyClass(){
    this.foo = function(argument1, argument2){
        var addedArgs = parseInt(argument1)+parseInt(argument2);
        return addedArgs;
    }
    var anonymousInnerFunction = function(){
        // do stuff here!
    }
}

В какой-то такой вид:
function MyClass(){this.foo=function(c,b){var d=parseInt(c)+parseInt(b);return d};var a=function(){}};

Или такой:
var _0xd799=["\x66\x6F\x6F"];function MyClass(){this[_0xd799[0]]=function (_0xefcax2,_0xefcax3){var _0xefcax4=parseInt(_0xefcax2)+parseInt(_0xefcax3);return _0xefcax4;} ;var _0xefcax5=function (){} ;} ;

Или вот такой:
eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('4 0="3 5!";9 2(1){6(1+"\\7"+0)}2("8");',10,10,'a|msg|MsgBox|Hello|var|World|alert|n|OK|function'.split('|'),0,{}))

Но ничего не стоит его восстановить с помощью jsbeautifier.org либо просто убрать eval и получить исходный код, многое потеряем, но смысл кода восстановим. Ну и с первого взгляда мы видим, что перед нами JavaScript.

Все это были цветочки под катом жесткие методы обфускации.
Читать дальше →
Total votes 171: ↑165 and ↓6+159
Comments85

Полнотекстовый поиск в InnoDB

Reading time12 min
Views37K
Привет, Хабрачитатель!
Полнотекстовый поиск данных в InnoDB – это известная головная боль многих разработчиков под MySQL / InnoDB. Для тех, кто не в курсе дела я объясню. В типе таблиц MyISAM есть полноценный полнотекстовый поиск данных, однако сама таблица исторически имеет ограничения, которые являются принципиальными в отдельных проектах. В более «продвинутом» типе таблиц InnoDB полнотекстового поиска нет. Вот и приходится мириться бедным разработчикам либо с ограничениями MyISAM, либо с отсутствием поиска в InnoDB. Я хочу рассказать о том, какие есть способы организовать полноценный поиск в InnoDB без магии и исключительно штатными средствами. Также будет интересно сравнить скоростные характеристики каждого способа.
Читать дальше →
Total votes 79: ↑73 and ↓6+67
Comments55
1
23 ...

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Registered
Activity