• Нужно ли чистить строки в JavaScript?

      Что? Строки могут быть «грязными»?

      Да, могут.

      //.....Какой-то код
      console.log(typeof str); // string
      console.log(str.length); // 15
      console.log(str); // "ччччччччччччччч"
      

      Вы думаете, в этом примере строка занимает 30 байт?

      А вот и нет! Она занимает 30 мегабайт!
      Читать дальше →
    • Оптимизация работы с прототипами в JavaScript-движках

      • Translation
      Материал, перевод которого мы сегодня публикуем, подготовили Матиас Байненс и Бенедикт Мейрер. Они занимаются работой над JS-движком V8 в Google. Эта статья посвящена некоторым базовым механизмам, которые характерны не только для V8, но и для других движков. Знакомство с внутренним устройством подобных механизмов позволяет тем, кто занимается JavaScript-разработкой, лучше ориентироваться в вопросах производительности кода. В частности, здесь речь пойдёт об особенностях работы конвейеров оптимизации движков, и о том, как осуществляется ускорение доступа к свойствам прототипов объектов.


      Читать дальше →
    • Лучше, быстрее, мощнее: styled-components v4

      • Translation
      Автор материала, перевод которого мы публикуем сегодня, хочет представить сообществу веб-разработчиков бета-версию библиотеки styled-components v4. Он, выступая от лица создателей библиотеки, говорит, что теперь в styled-components имеется новое глобальное API для работы со стилями и нативная поддержка свойств as и ref. Библиотека пошла по пути отказа от .extend, она совместима со StrictMode React v16 и стала лучше, быстрее и мощнее.


      Читать дальше →
    • Идея сингулярности перед Большим взрывом устарела

      • Translation

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

      Почти все слышали о Большом взрыве. Но если попросить разных людей, от обывателей до космологов, закончить предложение: «Вначале было…», вы получите множество различных ответов. Один из наиболее распространённых – «сингулярность», то есть, момент, когда вся материя и энергия Вселенной сконцентрировались в одной точке. Температура, плотность и энергия были бы сколь угодно, бесконечно большими, и это могло совпадать с зарождением самого пространства и времени.

      Но эта картина не просто неверна, она уже лет 40, как устарела! Мы совершенно уверены в том, что с горячим Большим взрывом не было связано никакой сингулярности, и у пространства и времени могло вообще не быть момента зарождения. Вот, что нам известно, и откуда.
      Читать дальше →
    • Построение гибких PHP приложений

      • Translation
      Эра фулстэк фрэймворков в прошлом. Современные разработчики фрэймворков разделяют свои монолитные репозитории на компоненты с помощью ответвлений в Git, позволяя разработчику выбрать то, что действительно необходимо его проекту. Это означает, что вы можете построить свое приложение на топовых Zend Service Manager, Aura Router, Doctrine ORM, Laravel (Illuminate) Eloquent, Plates, Monolog, Symfony Cache или любых других компонентах, которые можно установить через Composer.

      image
      Читать дальше →
    • Спортивный анализ данных, или как стать специалистом по data science

        Меня зовут Пётр Ромов, я — data scientist в Yandex Data Factory. В этом посте я предложу сравнительно простой и надежный способ начать карьеру аналитика данных.

        Многие из вас наверняка знают или хотя бы слышали про Kaggle. Для тех, кто не слышал: Kaggle — это площадка, на которой компании проводят конкурсы по созданию прогнозирующих моделей. Её популярность столь велика, что часто под «кэглами» специалисты понимают сами конкурсы. Победитель каждого соревнования определяется автоматически — по метрике, которую назначил организатор. Среди прочих, Kaggle в разное время опробовали Facebook, Microsoft и нынешний владелец площадки — Google. Яндекс тоже несколько раз отметился. Как правило, Kaggle-сообществу дают решать задачи, довольно близкие к реальным: это, с одной стороны, делает конкурс интересным, а с другой — продвигает компанию как работодателя с солидными задачами. Впрочем, если вам скажут, что компания-организатор конкурса задействовала в своём сервисе алгоритм одного из победителей, — не верьте. Обычно решения из топа слишком сложны и недостаточно производительны, а погони за тысячными долями значения метрики не настолько и нужны на практике. Поэтому организаторов больше интересуют подходы и идейная часть алгоритмов.



        Kaggle — не единственная площадка с соревнованиями по анализу данных. Существуют и другие: DrivenData, DataScience.net, CodaLab. Кроме того, конкурсы проводятся в рамках научных конференций, связанных с машинным обучением: SIGKDD, RecSys, CIKM.

        Для успешного решения нужно, с одной стороны, изучить теорию, а с другой — начать практиковать использование различных подходов и моделей. Другими словами, участие в «кэглах» вполне способно сделать из вас аналитика данных. Вопрос — как научиться в них участвовать?
        Хардкор
      • Распознавание изображений. Алгоритм Eigenface

          Введение



          Я продолжаю серию статей посвящённую тематике pattern recognition, computer vision и machine learning. Сегодня я вам представляю обзор алгоритма, который носит название eigenface.



          В основе алгоритма лежит использование фундаментальных статистических характеристик: средних (мат. ожидание) и ковариационной матрицы; использование метода главных компонент. Мы также коснёмся таких понятий линейной алгебры, как собственные значения (eigenvalues) и собственные вектора (eigenvectors) (wiki: ru, eng). И вдобавок, поработаем в многомерном пространстве.
          Как бы страшно всё это не звучало, данный алгоритм, пожалуй, является одним из самых простых рассмотренных мною, его реализация не превышает нескольких десятков строк, в тоже время он показывает неплохие результаты в ряде задач.

          Мне не страшно.
        • Разговорный английский за месяц

            Перепечатано с моего ЖЖ.

            Решился написать про свой опыт изучения английского в экстремально короткие сроки (1 месяц) — вдруг кому пригодится. Также выдам немного инфы про то, как собеседовался за границу.

            Читать дальше →
          • На кого ориентироваться, разрабатывая сайт

              Разрабатываем сайт?


              Итак, вы решили разработать супер-мега-крутой сайт для русскоязычной аудитории. Вы определились с тематикой, дизайном и прочая-прочая. Но вот интересный вопрос — под какие браузеры писать, использовать ли JavaScript и Cookies и т.д. Конечно же для этого есть статистика.
              Вот решил сделать небольшую выборку статистики за последние несколько месяцев, любезно предоставленную SpyLog'ом
              Читать дальше →
            • Last.fm — для музыки, Alexa.com — для сайтов. Что еще?

                … а еще есть подобные проекты для софта!

                В наше время, когда люди поголовно помешаны на приватности, существует множество живых сервисов, для работы с которыми надо добровольно установить программу (караул, троян!), отсылающую в БОЛЬШУЮ БАЗУ разную вполне себе приватную информацию. Казалось бы, идея создания такого сервиса обречена на провал, но нет, пользователей у этих сервисов хватает. Почему же? Да потому что можно интересную статистику получать :)

                Я решил рассмотреть 4 сервиса, накапливающих данные об используемом пользователями ПО.

                Первичная цель таких проектов — накопление данных от максимального числа пользователей с целью анализа этих данных и выделения наиболее популярных программ из сотен тысяч существующих. Вторичная цель — объединение людей в группы по предпочитаемому ими ПО с целю решения общих проблем и создания тематического IT-комьюнити.
                Читать дальше →
              • Пентест на стероидах. Автоматизируем процесс

                  С данной темой доклада я выступал на CodeFest. А здесь я перескажу словами, что, как и зачем.


                  Доклад довольно поверхностный и не требует практически никакой квалификации в области ИБ. Был рассчитан на целевую аудиторию (веб-разработчики, тестировщики (не на проникновение), сисадмины и т.д.). Все довольно просто: несколько утилит, запустили, подождали, разбираем отчет.

                  Видеоприглашение на конференцию:

                  Читать дальше →
                • Постраничная навигация с MySQL при большом количестве записей

                    Рано или поздно многие крупные проекты сталкиваются с проблемами производительности при постраничной навигации по записям. Некоторые из них решают эту проблему ограничением количества доступных для просмотра записей (скажем, не больше 1000). Вполне приемлемое решение. Но в этом случаем могут возникнуть проблемы с индексированием сайта сторонними поисковиками, которые и представляют наибольшую угрозу. В этой статье я хотел бы отказаться от привычной для всех панели навигации вида «1..2..3..4..» в пользу простой «вперед… назад» (будет проще объяснить), но это не проблема реализовать подобное и с первым вариантом.
                    Более точно определить тему, назвав, какое количество записей считать достаточно большим для появления тормозов, не получится, так как эта цифра для всех разная и сильно зависит от того, насколько быстрые у Вас жесткие диски, сколько памяти, и какая часть Ваших данных уже закеширована в ней и тд. Но если Вы и Ваши сервера ощущают, что n-ная страница при выводе даётся тяжелее первой, и при этом не знаете, что с этим делать – статья для Вас. Но для начала, я хотел бы на пальцах объяснить, почему ОНО работает медленно.

                    Кстати, тест происходит на виртуальной машинке, работаю я с СУБД под рутом, версия MySQL – 5.0.32.
                    Читать дальше →
                  • MySQL Performance real life Tips and Tricks

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

                      В последнее время приходится достаточно часто заниматься оптимизацией производительности сайтов. И как правило «бутылочным горлышком» в производительности работы этих сайтов является именно БД, ошибки как в архитектуре так и в выполнении запросов. Начиная от неправильной расстановки индексов, либо совершенным их отсутствием, неправильным (неэкономным) выбором типов данных под определенное поле, заканчивая абсолютно нелогичной архитектурой БД и такими же нелогичными запросами.

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

                      Читать дальше →
                    • Habrahabr: Просмотр предыдущего комментария в дереве

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

                        UPD: Решил все вопросы с юзабилити и зарелизил версию 0.2. Надеюсь на ваш фидбек.

                        UPD 2: Оказалось работает и в Opera.

                        А вижу я его так
                      • Чат 2.0 или как быстро знакомиться с новыми людьми

                          Чего не дают социальные сети? Не знаю как вам (у кого-то такой проблемы точно нет), но мне периодически не хватает возможности быстро найти собеседника. Допустим вы хотите прямо сейчас пообщаться с человеком на какую-то заданную тему, возможно чтобы это был человек схожий с вами по интересам и каким-то другим произвольным параметрам. Как вы будете решать эту задачу сейчас? Вы можете зайти в ЖЖ, Вконтакте, Хабр или аську, делать поиск и отправлять сообщения понравившимся людям. Иногда вам ответят сразу, иногда через какое-то время, иногда вообще не ответят. Вы можете зайти в IRC или любой веб-чат и попытаться привлечь внимание к своей персоне — это может сработать, но часто люди отвлечены на общую болтовню и не расположены для приватных серьезных бесед. А вы хотите коммуникации тет-а-тет прямо сейчас, без лишних поисков.
                          Как это могло бы работать?

                          Все помнят как работают интернет-шашки? Вася запустил шашки в Москве, а Петя в Австралии, они автоматически соединяются друг с другом и начинают играть. Поскольку игра входит в стандартную поставку WinXP, желающих играть очень много и заявки удовлетворяются почти мгновенно.

                          Ну… идея уже понятна: а что если сделать чат, который бы работал по такому же принципу? Допустим я хочу поговорить о политике (смысле жизни, компьютерах, линуксах, литературе), я отмечаю галочкой соответствующую тему (или набор тем), выбираю язык и жму кнопку. Где-то, за три тысячи километров от меня, Вася выбрал такую же тему и мы соединяемся для чата. При подборе собеседника можно дополнительно анализировать его профайл: возраст, пол, интересы, город. Например, я хочу поговорить только с молодой девушкой или только с человеком, список интересов которого совпадает с моим не менее чем на 70%.

                          Конечно, для того чтобы это работало, необходимо огромное количество активных пользователей. Без них, Вася, будет ждать собеседника очень долго. Можно реализовать это не только в виде отдельного сайта, но и как апплеты для известных соц сетей: аудитория большая, профайлы с необходимой информацией уже есть. Зарабатывать можно ненавязчивым баннером в окне чата + платные недорогие аккаунты без рекламы.

                          Как вам идея? Может быть аналоги уже давно существуют, а я, по своей серости, не знаю?
                          Открыт для сотрудничества по этому вопросу ;)

                          UPD: Идея именно об организации быстрого (близкого к мгновенному) подбора собеседника для разговора тет-а-тет на заданную тему. Это похоже на кнопку «Мне повезет» в Google: вы не тратите время на ковыряние результатов, а сразу попадаете на какой-то конкретный сайт. Плюс ваш «результат» будет гарантированно готов для разговора_прямо_сейчас. Чего не добьешься в аськах, форумах и сайтах знакомств.
                        • Победа российской команды на C.I.P.H.E.R. 4

                            Команда HackerDom из Уральского государственного Университета заняла первое место на C.I.P.H.E.R.
                            4 — ежегодных международных соревнованиях по CTF, проводимых Ахенским Техническим Университетом. В этом году в соревновании участвовали 32 команды, включая пять российских.
                            Игра проходила в ночь с 1 на 2 августа, с 22.00 до 5.00 (GMT+5) по сети Интернет. На игре командам выдавался образ для виртуальной машины с установленной ОС и игровыми сервисами, которые содержали различного рода уязвимости: слабые пароли, ошибка конфигурации, переполнение буфера, SQL и PHP инъекции, XSS, недостаточная фильтрация входных параметров с дальнейшим выполнением произвольных команд и др. Игра также включала задание, в котором требовалось выявить информацию, скрытую при помощи стеганографии. В качестве ОС использовался Linux Ubuntu, а сервисы были написаны на различных языках программирования: Python, PHP, Perl, Haskel, C.
                            Читать дальше →
                          • Заключаем договор на создание технического задания

                              Кому интересен договор на сайт, смотрим тут: Договор навороченный, Договор простой (удален автором).

                              Этот топик про более редкую ситуацию, когда перед собственно проектом нужно сделать ТЗ, а это большая и серьезная работа. На нее нужен договор и цена.
                              Читать дальше →