• Сугубо ненаучно: 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
              • 20,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-хлетним Хабраразумом, узнаем — какие языки для чего можно использовать.

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

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

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

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

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