• Сугубо ненаучно: Tarantool 1.6 vs Golang (по скорости)

      Зачитался я последнее время про Tarantool, интересно стало. Идея хорошая — код рядом с базой данных, хранимка в такой быстрой Redis-подобной среде.


      И что-то задумался — мы вот сейчас используем активно на работе Golang, собственно, мысль пришла что на Go написано много всего, в т.ч. и встраиваемых баз. А что если сравнить, например, Go+LevelDB (собственно, можно было бы и любую другую) против Tarantool. Тестировал еще Go+RocksDB, но там оказалось все немного сложнее, а результат примерно тот же на небольших данных.


      Тестировал простую задачу — HTTP сервер, при запросе — записать ключик в базу, достать его же по имени (без всяких проверок на race), отправить назад простенький JSON из этого value.


      Сравнил: go+leveldb, tarantool, go+go-tarantool, nginx upstream tnt_pass

      Читать дальше →
    • extsrc.js — загружаем все скрипты асинхронно и уже после отрисовки страницы (даже с document.write)

        Хочу Вам рассказать о штуке, которую я изобрел сегодня, чтобы ускорить процесс загрузки сайтов. Все вы знаете, что <script src="..."></script> задерживает отрисовку страницы, пока не загрузится этот скрипт. Если их десятки — это может сереьезно замедлить работу сайта — в результате пользователь 20 секунд пялится на пустую (или недорисованную) страницу из-за какого-нибудь тупящего социального виджета (умножить на десяток этих виджетов).

        Не правда ли было бы круто, если бы можно было сказать <script extsrc="..."></script> ("extsrc" = "грузи потом"), чтобы скрипты загружались после того как страница отрисована?

        Все бы хорошо, но есть document.write… Сегодня я наконец решил его проблему — представляю extsrc.js — скрипт, который запустит все скрипты после отрисовки страницы (даже если они содержат document.write — и правильно отрисуется все).

        Результат? Супер-быстрая загрузка страниц, даже если там море всяких внешних скриптов.

        Использование:

        Заменяем <script src="..."> на <script extsrc="...">.

        Итого получается:

        <script src="http://whiteposts.com/extsrc_js/extsrc.js"></script>
        <script extsrc="..."></script>
        

        все остальное под катом
      • StyleBot

          Отличное новое расширение для Chrome — ставим, нажимаем на иконку, кликаем (не)угодные элементы (или пишем свой CSS-селектор) и применяем к ним новые стили — от сокрытия до изменения цветов, размеров и вообще всего, что CSS позволяет; сохраняется автоматически и применяется при следующем заходе тоже.



          Скачать
          Домашняя страница проекта StyleBot

          Кстати, сам примененный CSS можно открыть (кнопка «Edit CSS»), так что верстальщикам тоже, думаю, пригодится.
        • Evercookie — самые устойчивые куки

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

            Удалить это куки практически невозможно! (Все возможно, конечно, но слишком много мороки)

            Куки хранятся в:
            • HTTP Cookies;
            • Local Shared Objects (Flash);
            • Сохранение куки в значениях RGB автосгенерированных и форсированно кэшированных PNG с использованием HTML5 canvas;
            • Сохранение куки в Web History;
            • HTML5 Session Storage;
            • HTML5 Local Storage;
            • HTML5 Global Storage;
            • HTML5 Database Storage через SQLite.

            При удалении из одного из этих мест кука автоматически восстанавливается из оставшихся. Работает даже если пользователь сменит браузер (через Local Shared Objects из Flash).

            Описание (на английском) и демо: http://samy.pl/evercookie/.
            Попробуйте удалить куки, почистить систему и зайти назад.



            Как пользоваться?
            Читать дальше →
          • MapReduce: более продвинутые примеры, попробуем без зауми

              Чтобы не откладывать в долгий ящик сразу порассказываю несколько других примеров для MapReduce, обещанные в топике "MapReduce без зауми". (Если не понимаете полностью что такое MapReduce — прочитайте тот топик сначала! Без него не разберетесь)

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

              Однако тема сама по себе сложная и все же напрячь мозги придется. Когда поймете — будет очень просто.

              Входящие ссылки


              Допустим у нас есть Интернет. В Интернете есть исходящие ссылки.

              Допустим на входе у нас есть такие данные об ИСХОДЯЩИХ ссылках, собранные нашим паучком:

              habrahabr.ru -> thematicmedia.ru, apple.ru, microsoft.com, ubuntu.com, yandex.ru
              thematicmedia.ru -> habrahabr.ru, autokadabra.ru
              autokadabra.ru -> habrahabr.ru, yandex.ru


              Т.е. мы знаем, что Хабр ссылается на Apple, MS, Ubuntu и Яндекс но кто ссылается на Хабр? Да, вопрос примитивный, но все же разложим на MapReduce. Дальше будет интереснее и этот пример понадобится.

              Читать дальше →
              • +78
              • 24,9k
              • 7
            • MapReduce или подсчеты за пределами возможностей памяти и процессора (попробую без зауми)

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

                Сразу скажу — топик — для тех, кто не разобрался что такое MapReduce. Для тех, кто разобрался — полезного тут ничего не будет.

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

                Сначала опишу как она рождалась (подход был неправильный), а потом как надо правильно делать.

                Как посчитать все слова в Википедии (неправильный подход)


                А родилась она, как и, наверное, везде — для подсчета частоты слов, когда обычной памяти не хватает (подсчет частоты всех слов в Википедии). Вместо слова «частота» тут скорее должно быть «количество вхождений», но для простоты оставлю «частота».

                В самом простом случае мы можем завести хеш (dict, map, hash, ассоциативный массив, array() в PHP) и считать в нем слова.

                $dict['word1'] += 1

                Но что делать когда память под хеш кончится, а мы посчитали только одну сотую всех слов?

                Читать дальше →
              • Будущее интерфейсов


                  Можно смотреть примерно с 2:40.
                  До 6:30 показываются технологии, которым 15 лет, но которые до сих пор толком не используются. После 6:30 идет уже новинка в духе «Особого Мнения» (Minority Report).

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

                  Читать дальше →
                • Правильный инструмент: подбор CMS

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

                    Поскольку сам я готовым CMSками не пользуюсь — я точно сказать и не могу — нужно ли это будет кому-то.

                    Пробуйте, голосуйте, читайте результаты.

                    Пишите в комментариях если какие-то CMS я упустил и может какие-то вопросы, которые следовало бы добавить о системах управления сайтами.



                    Читать дальше →
                  • Правильный инструмент

                      Некоторое время назад я натолкнулся на сайт "TheRightTool" — эдакий рейтинг языков программирования на соответствие разным утверждениям, например: «На этом языке легко писать эффективный код». Сразу понятно, что такой рейтинг очень полезен (хотя интерфейс у них — беда — на третьем вопросе мне надоело переставлять языки).

                      Я попытался на своем блоге дать ссылки на автоперевод, но понятное дело, что он оставляет желать лучшего. Но ведь русские (вполне возможно) больше всех знают о языках программирования! А больше всего программистов на Хабре.

                      Итак, сегодня в течение часиков пяти мне было заняться нечем, так что, дорогой Хабр, встречай русский аналог (на слабеньком VPS, так что рано или поздно сдохнет под Хабраэффектом — извиняйте, ставьте закладку, заходите завтра):



                      Надеюсь скоро мы, коллективным 4-хлетним Хабраразумом, узнаем — какие языки для чего можно использовать.

                      Читать дальше →
                    • «Сложный пароль» в расшифровке не нуждается

                        Проскочил тут топик про «сложные» пароли. К сожалению, смотрю, многие серьезно восприняли этот «метод»…

                        Использование карточек шифрования не является надежным методом! Как правильно заметили в комментариях там — «это в войну наши деды использовали»… Но использовали более совершенные методы.

                        Приведенный в той статье метод использовать НЕЛЬЗЯ ни в коем случае(!), пароли по этому методу полностью расшифровываемые, Вы просто отдадите их злоумышленникам на блюдечке! И сейчас я это докажу…

                        Читать дальше →
                      • У Вас WiFi? Тогда Google едет к Вам

                          У Гугл опять прокол с частной жизнью граждан. В Германии обнаружилось, что фургончики Street View сканируют беспроводные сети и записывают MAC-адреса частных пользователей. Что жутко в этой истории — так это факт того, что чтобы они ни делали с ними — это все равно будет страшно.

                          Если опубликуют — это неприятно и проблематично. Как говорят исследователи информационной безопасности — существует статистическая возможность связать MAC-адрес с записями в социальных сетях.

                          Если не опубликуют — еще проблематичнее — ведь не знаешь для чего именно эта информация собиралась.

                          Читать дальше →
                        • McAfee увел в бесконечную перезагрузку миллионы чистых компьютеров

                            Выпущенный сегодня апдейт (McAfee DAT 5958) к антивирусу McAfee приводит к бесконечным перезагрузкам на Windows XP SP3, считая svchost.exe (Services) — вирусом.

                            В бесконечный ребут ушли PricewaterhouseCoopers New York (только там — сотни тысяч компьютеров), кампусы колледжей, госпитали, использующие медицинское ПО для Windows, и множество других компаний по всему миру.

                            Черный юмор, но Mcafee — первый антивирус, официально признавший винду вирусом.

                            Лечение антивируса - под катом
                          • Будущее Photoshop: Content-aware fill

                              Что Photoshop грядущий нам готовит — скорее всего в CS5, но может немного позже. Видео на английском, но, в принципе, и так все понятно должно быть. Хотите стереть дерево, чтобы никто не заметил? Нет проблем, пара кликов. Никаких больше clone tool. Хотите дорисовать панораму до углов? Нет проблем, те же пара кликов и пустые места сами дорисовались. Собственно, продолжение развития идеи PatchMatch.

                              Самые впечатляющие вещи после 2:50 и до конца ролика. Для несведущих в английском — работа идет с одним слоем и объекты(дерево, дорога, пустые куски в панораме) удаляются(закрашиваются и дорисовываются) Photoshop'ом в автоматическом режиме.



                              Еще примеры и про технологию — под катом
                              Читать дальше →
                            • MongoDB vs MySQL (vs Cassandra): А теперь чуть более правильный ответ

                                Собственно, сегодня был запощен топик "Сравниваем производительность MongoDB и MySQL на простом примере", в котором указывалось, что MongoDB превышает по производительности MySQL в разы. Хех, когда такое пишут — я сразу лезу проверять и сомневаться. Я полез в исходники оригинального теста (спасибо за публикацию). И как оказалось автор оригинального топика сделал ошибку в три символа и на самом деле не все так:
                                1. В оригинале: MongoDB быстрее MySQL пишет в 1.5 раза (ДА, правда у меня в 3 раза)
                                2. В оригинале: MongoDB быстрее MySQL читает в 10 раз (НЕТ, на самом деле — MongoDB примерно на равных плюс-минус 10-30%)
                                3. InnoDB vs MyISAM — плюс-минус (в оригинале не тестировалось)
                                Сравнение здесь происходит только как key-value storage (запись-чтение по primary key).


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


                                А теперь подробнее об ошибке…
                                Читать дальше →
                              • Пробуем TorrentStream — смотрим торренты онлайн

                                  Собственно, про топик-ссылку "On-line кинозал по протоколу p2p" про torrentstream.org. Скачал попробовать. Интересно.

                                  Что это? Просмотр фильмов в .torrent прямо в браузере, прямо по ходу скачивания.

                                  Коротко: в принципе работает; лучше чем uTorrent Stream; только Windows (Linux и Mac порты уже в разработке); удобства только только для FireFox; сам плеер работает и в IE и в Chrome тоже (ниже опишу как); качать надо довольно немаленький .exe (32mb); антивир — в комментах проверили KIS — норм все; плеер не понимает клавиатуры; есть подозрения про будущее проекта (слово «монетизация» слишком часто на сайте употребляется).



                                  Качать: сам плагин 32МБ (или прямая ссылка на скачивание), надстройка для FireFox для удобства.

                                  Внутри TorrentStream прямо рай для IT-шника кстати — сам написан похоже на Python 2.5 + wxWidgets + libvlc + Tribler (внутри немного покопаюсь в топике). Скомпилен py2exe. Есть еще какие-то куски от Lua — не понятно чего делающие. Собственно в распакованном виде: 26мб — только библиотеки Python+wxWidgets + 51МБ библиотеки libvlc (кодеки).
                                  Читать дальше →
                                • Вышел PyPy 1.2 и ускорил Python в разы!

                                    Вышел PyPy 1.2. Основное отличие — наличие JIT компилятора.
                                    Чтобы долго не объяснять что это и зачем — простой тест:

                                    cnt = 10 * 1000 * 1000
                                    for _ in xrange(cnt): 
                                        i = i + 1


                                    5.8млн операций сложения в секунду на обычном СPython 2.6 (python test.py)
                                    42.5млн операций в секунду на PyPy 1.2 (pypy test.py)
                                    WinXP SP3, Core2Duo.

                                    Да, в 7 раз быстрее он тест сделал! И это не только на синтетическом тесте: «django» в 3 раза быстрее, «n-body» в 7 раз быстрее… Я не знаю что такое тест «richards», но он теперь вообще в почти 12 раз быстрее. Смотрите результаты сами.

                                    Читать и качать (из раздела "«JIT compiler» version"). 64-bit версии пока нет. А unladen-swallow нервно курит... Под катом еще несколько невероятностей (stackless, «песочница для python кода»)…
                                    Читать дальше →
                                  • Unlimited Detail — интересно, но есть у меня вполне конкретные сомнения…

                                      Несколько дней назад проскочило видео по Hacker News (и спасибо ayambit за напоминание о них на Хабре) про компанию Unlimited Detail, которая обещает сделать самые современные карточки NVidia и ATI бесполезными и рендерить сцены в миллиарды точек на обычном процессоре (CPU), без 3D ускорения(!) вообще. Превышая возможности современных видеокарт в сотни раз (тысячи, по заявлениям авторов, которые я ниже оспорю).

                                      Если кто еще не видел:



                                      Сначала на всякий случай о том чего это такое, а потом о том, что у меня, как у программера, сомнения вызывает, что на нетбуках без 3D карт, скоро будут в Crysis 3 играть…

                                      (дальше очень много слов и технических деталей)
                                      Читать дальше →
                                    • Global Illumination на GPU

                                        Ну что, господа любители V-Ray / Mental Ray… CryTek решили поиздеваться… Если раньше на один кадр с технологией подобной «global illumination» (отражения света) Вам требовались часы или сутки, то теперь оно может появиться и на Ваших экранах… со скоростью 120 fps! То, что мы видели только на пре-рендеренных вещах, уровнях, играх с запеченным освещением от Illiminate Labs (Mirror's Edge) — теперь будет real-time:

                                        CryEngine 3 — Global Illumination with Light Propagation Volumes

                                        (Смотреть такое, конечно же, в HQ и Full Screen)

                                        Примерно с 1:00 начнется Manhattan Apartment, где показывается изменение освещенности в реальном времени и динамический Global Illumination.
                                        Читать дальше →
                                      • Google AdSense и WebMoney

                                          Оказывается, Google собирает от издателей AdSense идеи до 15 декабря. В частности, одна из идей — поддержка выплат в WebMoney.

                                          Официальное сообщение от Google. (в самом низу)

                                          Поддержать идею можно здесь.

                                          Среди других идей — CSS, минимальные цены, фильтры…
                                          Читать дальше →
                                        • Вот этим мне и не нравится зона.рф

                                            Только что пришло письмо от Ру Центра об официальном старте зоны…
                                            image

                                            .עז?

                                            А ты уже зарегистрировал домен россия.עז?

                                            А сколько еще будет проблем сисадминам с DNSами, SMTP/POP'ами, да и вообще всем нам IT-шникам.

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