• Интернет-магазин. Начало работы

      Привет, хабранарод!
      Писал я давно когда-то про osCommerce небольшую статейку, меня даже просили выложить свою сборку. Если кому она до сих пор нужна — у меня осталась, могу куда-нить положить. Но, наевшись с ОСК, решили написать свою систему. При помощи CakePHP. Об этом хорошо поведал товарищ neudor, с которым на пару мы это дело разрабатывали. В данный момент он несколько отошел от работы с магазином, поэтому я выхватываю у него эстафетную палочку вести цикл статей, посвещенный разработке ПО для интернет-магазина, а также непосредственно организации самой работы, службы доставки, регистрации, налогах. В общем полный FAQ «от и до» — что ждет начинающего предпринимателя, если он решится открыть полностью легальный бизнес в России, с выкладкой затрат в денежном и временном эквиваленте. Итак, сегодня я расскажу о стороне вопроса, не касающейся технической реализации…
      Читать дальше →
    • 10 шагов для добавления сайта в Яндекс.Новости и Google News

        Яндекс.Новости и Google News являются крупнейшими новостными агрегаторами в России. Так, по данным TNS Russia в июне 2009 года Яндекс.Новости в день посещало чуть более 1,1 миллиона человек. Представьте, какой трафик на сайт могут дать подобного рода системы. И в отличие от, например, News2 и Smi2, новости попадают туда автоматически. Причем, для Google News не нужно совершенно ничего делать — главное, чтобы ваш сайт индексировался Гуглом. Для Яндекса нужно делать полнотекстовый фид со некоторыми тонкостями.
        Читать дальше →
      • Наборы команд должны быть свободны: доводы за RISC-V

        • Перевод
        Примечание переводчика. В оригинале статьи авторы (один из них — пионер RISC-процессоров Д. Паттерсон) аргументируют необходимость развития открытых ISA (instruction set architecture, наборов команд процессоров) и продуктов на их основе. В качестве аргументов выдвигается стимулирование развития тех областей вычислительной техники и экономических ниш, в которых коммерческие компании не заинтересованы или же недостаточно гибки. Они напоминают об успехах открытых стандартов и свободного программного обеспечения.

        На расширенную версию этой статьи (а также на контр-статью от представителей ARM и контр-контр-параграф от авторов!) я наткнулся в августовском выпуске Microprocessor Report (MPR). Доступ к MPR ограничен и распространяется только на подписчиков, однако в открытом доступе есть оригинальный отчёт, размещённый на сайте университета Беркли. Его перевод я и предлагаю далее.

        Instruction Sets Should Be Free: The Case For RISC-V by Krste Asanović and David A. Patterson. EECS Department, University of California, Berkeley — Technical Report No. UCB/EECS-2014-146 www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-146.html

        Copyright notice and disclaimers
        Перевод делается с любезного разрешения авторов.

        Copyright © 2014, by the author(s).
        All rights reserved.
        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission.

        Мнение авторов может не совпадать с мнением переводчика. Я также буду благодарен за любые неточности, замеченные в переводе, и уточнения к его содержанию.

        Читать дальше →
      • Папа, а почему на ноль делить нельзя?

        Моя трёхлетняя дочка София в последнее время частенько упоминает «ноль», например, в таком контексте:
        — Соня, вот ты вроде сначала не послушалась, а затем послушалась, что же получается?..
        — Ну… ноль!

        Т.е. ощущение отрицательных чисел и нейтральности нуля уже имеет, о как. Скоро поинтересуется: почему же это на ноль делить нельзя?
        И вот решил я простыми словами записать всё, что я ещё помню про деление на ноль и всё такое.
        Читать дальше →
      • Серьезное проектирование серьезного магазина. Часть 1. Исследуем и продумываем функционал

        • Tutorial
        Не так давно я писал статью про проектирование больших сайтов на примере социальной сети со схожим названием: «Серьезное проектирование серьезных сайтов». Сегодня я хочу поговорить про одну из основных сфер нашей деятельности – электронную коммерции, а именно про проектирование интернет-магазинов.

        Это цикл статей больше специалистов, значительно более углубленно, чем все мои прошлые статье в этой области. В статье я расскажу про крупнейшие интернет-магазины США, Китая, России и Украины, расскажу как маркетинг влияет на проектирование, покажу подробный Mind Map гипермаркета, опишу 57 основных модулей интернет-магазинов для внешней (покупательской) части и более 50 модулей для внутренней части (административной), покажу интерфейсы магазинов и еще много полезного.

        Интернет-магазинами и технологиями продаж в Интернете лично я занимаюсь с далекого 2005 года. За годы работы мое мнение по этому вопросу сильно эволюционировало. Когда-то я думал, что интернет-магазин – это довольно простой сайт с точки зрения разработчика или маркетолога, мне казалось, что все магазины похожи друг на друга и достаточно один раз получить пул знаний, который потом можно будет использовать многие годы без особых изменений, ведь интернете-магазин – это только тип сайта для продажи товаров и на первый взгляд нет ничего сложного в том, чтобы разработать очередной магазин со схожим функционалом, но с другими товарами. На самом деле все значительно сложнее и чем больше я узнаю про интернет-магазины, тем больше понимаю, что в этом вопросе невозможно знать все, даже одна мелочь в интерфейсе может изменить прибыль магазина на тысячи долларов, а для больших игроков эта «мелочь» может стоить миллионы. Именно эта особенность электронной коммерции делает требования к сайтам и специалистам, которые их делают, безумно высокими. Чуть ниже я покажу много интересных цифр, которые докажут мое утверждение.

        Ранее я уже писал статью про технологию проектирования больших сайтов, которая, кстати, имела очень большую популярность в русскоязычном и англоязычном сегменте Интернета: «Серьезное проектирование серьезных сайтов». Проектирование интернет-магазина хоть и имеет сходную последовательность действий, описанную мной в прошлой статье, но сама технология все таки сильно отличается, поэтому давайте рассмотрим это в мельчайших подробностях. По ходу статьи я буду ссылаться на свою прошлую, чтобы не повторяться, а в этой сделаю упор именно на различия.
        Mind Map
        Читать дальше →
      • 30 полезных сервисов для веб-разработчика

          Решил собрать сервисы, которые могут быть полезны веб-разработчикам и дизайнерам. Буду рад, если кто-то найдет для себя полезный сервис. Осторожно, под катом куча картинок!
          Читать дальше →
        • Автоматизация тестирования. Начало пути

          Добрый день, Хабр!

          Темой сегодняшней статьи будет автоматизация функционального тестирования веб-приложений. Точнее говоря, не сама автоматизация, как вид тестирования, а быстрый старт в этом, безусловно, увлекательном деле.
          Многие тестеры, занимающиеся проведением функционального и регрессионного тестирования, рано или поздно приходят к мысли об автоматизации процесса, т.к. совершенно точно можно сказать, что выполнение одних и тех же регрессионных кейсов со временем ужасно надоедает.
          Статья рассчитана на людей, которые только-только подходят к этой мысли и не знают думают, с чего бы им начать свой путь в автоматизации.
          Кого заинтересовало, прошу под кат.
        • Балансировщики нагрузки в Microsoft Azure

          • Перевод
          Microsoft Azure предлагает сервис балансировки нагрузки для виртуальных машин (IaaS) и облачных служб (PaaS), запущенных в облаке Microsoft Azure. Помимо прочих достоинств, балансировка нагрузки позволяет масштабировать ваши приложения и дает возможность мягче реагировать при возникновении ошибки или отказа.

          Службы балансировки нагрузки могут быть задействованы как с помощью настроек на портале управления Microsoft Azure, так и с помощью сервис-модели вашего приложения. Как только размещаемая служба с одной или несколькими конечными точками публикуется в облако, она автоматически настраивается на использование балансировщика нагрузки, предоставляемого платформой Microsoft Azure. Чтобы получить все плюсы эластичности и масштабируемости вам необходимо иметь хотя бы две виртуальных машины, настроенных на одну и ту же конечную точку.

          Диаграмма на рисунке ниже показывает пример приложения, расположенного в Microsoft Azure, которая использует балансировщик нагрузки для адресации входящего трафика (по адресу/порту 1.2.3.4:80) на три виртуальных машины, слушающих 80й порт (кликабельно).


          Далее перечислены основные возможности балансировщика нагрузки в Microsoft Azure
          Читать дальше →
          • +12
          • 5,8k
          • 1
        • Готовим IndexedDB



            На Хабре уже рассказывали про IndexedDB — стандарт хранения больших структурированных данных на клиенте. Но это было давно и API сильно изменился. Несмотря на это в поиске статья всплывает одной из первых и вводит в заблуждение многих, кто начинает пытатся работать с этой технологией. Поэтому я решил написать новую статью с информацией об актуальном API.
            Читать дальше →
            • +26
            • 43,7k
            • 8
          • Обзор мультифакторной аутентификации в облаке Microsoft Azure

              В систему безопасности Microsoft (тогда еще Windows) Azure недавно была внедрена новая функциональность – мультифакторная проверка подлинности. МПП, понятное дело, нужна для того, чтобы выстроить дополнительный контур защиты вокруг учетной записи либо облачных сервисов как Microsoft, так и решений сторонних компаний или приложений и сервисов, которые используют в качестве системы аутентификации сервис Microsoft Azure Active Directory. Можно защищать и локальную инфраструктуру – например, наш Multifactor Authentication Server можно интегрировать в контур RADIUS. Интересно? Под катом – описание решения ситуации, когда нам нужно защитить доступ в подписку Azure не только логином и паролем, и немного про то, куда идти за более сложными вещами.
              Читать дальше →
            • Об особенностях реализации префиксного энтропийного кодирования для больших алфавитов

                Думаю, всем читателям хабра хорошо известны алгоритмы энтропийного сжатия с использованием префиксных кодов (алгоритмы Шеннона-Фано, Хаффмана и др.). Особенностью этих алгоритмов является тот факт, что длина кода определённого символа зависит от частоты этого символа в закодированном сообщении. Соответственно при декодировании сообщения необходимо иметь таблицу частот. Данная статья посвящена рассмотрению малоизученной, но важной задачи – передаче частот исходного алфавита.
                Читать дальше →
              • Математические выражения в .NET (разбор, дифференцирование, упрощение, дроби, компиляция)

                  Мне со школьных времен был интересен алгоритм вывода аналитических производных и упрощения выражений. Данная задача была актуальна впоследствии и в вузе. Тогда-то я реализовал ее, только получилось все не так, как хотелось: вместо кода IL у меня просто генерировался C# код в текстовом виде, сборки не выгружались, ну и к тому же не было возможности вывода производных в аналитическом виде. Однако потом я решил все-таки реализовать такую библиотеку, так как интерес остался. Стоит отметить, что таких библиотек в интернете большое количество, но нигде я не нашел именно этапа компиляции выражений в IL код, т.е. по сути везде выполняется интерпретация, которая не столь эффективна, в отличие от компиляции. Ну и к тому же я это разрабатывал чисто для себя, для изучения новых технологий, особо не надеясь, что результат моих трудов может где-нибудь потребоваться. Для нетерпеливых: исходники, программа.

                  Используемые программы и библиотеки


                  1. GOLD Parsing System — IDE для написания грамматик и генерации кода лексеров и парсеров под различные языки (C, C#, Java, JavaScript, Objective-C, Perl, Python, Ruby и др.). Основана на LALR парсинге.
                  2. Visual Studio 2010
                  3. GOLD.Engine — сборка под .NET, подключаемая для взаимодействия со сгенерированными таблицами.
                  4. NUnit — Открытая среда юнит-тестирования приложений для .NET.
                  5. ILSpy — OpenSource дизассемблер под .NET.

                  Этапы, на которые я разбил весь процесс:
                  1. Построение дерева выражения
                  2. Вычисление аналитической производной
                  3. Упрощение (симплификация) выражения
                  4. Обработка рациональных дробей
                  5. Компиляция выражения

                  Читать дальше →
                • Windows Azure Pack — что за зверь и с чем его есть?

                  Всем согревающий привет от Лорда Огня!
                  В этот замечательный, солнечный и морозный (ух! — лад-хлад!) день уж очень хочется рассказать про что-нибудь облачное (банально, не правда ли? — смайл).
                  Вот как раз на тему облачности думаю я пора рассказать про такую интересную штуку как Windows Azure Pack! Это как WIndows Azure, только как-бы «у вас в кармане»! Интересно? Тогда милости прошу продолжить чтение!



                  Читать дальше →
                  • +9
                  • 28,6k
                  • 6
                • Делаем вебсокеты на PHP с нуля

                  Некоторое время назад я выбирал библиотеку для работы с вебсокетами. На просторах интернета я натыкался на статьи по интеграции node.js с yii, а почти все статьи о вебсокетах на хабре ограничивались инструкциями к тому, как использовать phpdaemon.

                  Я изучал библиотеки phpdaemon и ratchet, они достаточно монструозны (причём используя ratchet для отправки сообщения конкретному пользователю рекомендовано дополнительно использовать wamp). Мне не совсем было понятно для чего использовать таких монстров, которые требуют установку других монстров. Почитав исходники этих, а также других библиотек, я разобрался как всё устроено и мне захотелось написать простой вебсокет-сервер на php самостоятельно. Это помогло мне закрепить изученный материал и наткнуться на некоторые подводные камни, о которых я не имел представления.

                  Так я решил написать необходимый для меня функционал с нуля.

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

                    Этот вопрос уже давно подробно изучен, и наиболее широкое распространение получил метод полярных координат, предложенный Джорджем Боксом, Мервином Мюллером и Джорджем Марсальей в 1958 году. Данный метод позволяет получить пару независимых нормально распределенных случайных величин с математическим ожиданием 0 и дисперсией 1 следующим образом:
                    алгоритм марсалья marsaglia
                    где Z0 и Z1 — искомые значения, s = u2 + v2, а u и v — равномерно распределенные на отрезке (-1, 1) случайные величины, подобранные таким образом, чтобы выполнялось условие 0 < s < 1.
                    Многие используют эти формулы, даже не задумываясь, а многие даже и не подозревают об их существовании, так как пользуются готовыми реализациями. Но есть люди, у которых возникают вопросы: «Откуда взялась эта формула? И почему получается сразу пара величин?». Далее я постараюсь дать наглядный ответ на эти вопросы.

                    Читать дальше →
                  • CBOR — новый бинарный формат представления данных

                    Concise Binary Object Representation (сжатое бинарное представление объекта) — формат данных, который был спроектирован таким образом, чтобы обеспечить максимально простой код реализации, формирования компактных выходных данных и возможность расширения формата без необходимости обмена информацией о версии.

                    Стандарт формата CBOR был официально анонсирован комитетом IETF в октябре 2013 года в новом документе RFC 7049, авторами которого являются Carsten Bormann и Paul Hoffman. Взглянув на имя первого автора, можно предположить другую причину происхождения аббревиатуры для названия формата, но возможно это просто совпадение. Формат CBOR получил MIME-тип application/cbor.

                    На данный момент существует, вероятно, сотни всевозможных бинарных форматов для представления структурированных данных, ряд которых стандартизирован, популярен и широко применяется (например, BER и DER для ASN.1, MessagePack и BSON). Все существующие стандарты решают поставленные перед ними задачи, и CBOR здесь не исключение. К формату было предъявлено семь важных требований, и, поскольку ни один из существующих форматов в полной мере не мог им удовлетворить, был создан новый (да, тут напрашивается картинка ).

                    Читать дальше →
                  • «С тебя игра за 100 баксов!» или почему Indiegogo вообще не Go-Go

                      Около месяца назад, параллельно со стартом кампании на Indiegogo, я написал на Хабрахабр статью Тяжкое бремя одинокого Indie. За прошедшее время я получил большое количество положительных отзывов и слов поддержки в отношении игры над которой я работаю, и от хаброюзеров, и просто от людей которые видели (успели в первую неделю) проект на индигого. Так почему же, не смотря на такой положительный feedback, кампания по сбору средств была полностью провальной?



                      Предлагаю вам насладиться собранной мною коллекцией замечательных грабель, на которые я наступил.
                      Читать дальше →
                    • Ускоряем Update и Delete операции для Entity Framework

                        У ORM Entity Framework есть Ахиллесова пята. Состоит она в том, что из CRUD операций только лишь Create и Read выполняются оптимально. Для Update и Delete в варианте из коробки мы сначала должны прочитать целиком запись из БД и лишь потом можем её обновить. И, да, чтобы удалить запись мы тоже должны её сначала прочитать.

                        Т.е. несчастный программист должен писать что-то вроде
                        using (var ctx = new ShopEntities())
                        {
                            foreach (var u in ctx.Users)
                            {
                                ctx.Users.Remove(u);
                            }
                            ctx.SaveChanges();
                        }


                        Но с выходом пакета EntityFramework.Extended ситуация в корне меняется.
                        Читать дальше →
                      • Windows Phone — DataTemplateSelector

                        В этой статье я расскажу что такое DataTemplateSelector, как создавать абстрактные и пользовательские классы DataTemplateSelector в Windows Phone 8. Что же такое DataTemplateSelector? — это класс который обеспечивает выбор DataTemplate, основанного на объекте данных и элементе, связанным с данными (msdn). Иными словами, если у вас есть допустим ListBox, и вы хотите в нем отображать, одновременно, более чем один DataTemplate (стиль отображения) для разных данных, тогда вам нужно использовать DataTemplateSelector с помощью которого вы сможете создать собственную логики для выбора DataTemplate.Для лучшей ясности рассмотрим как реализовать абстрактный класс DataTemplateSelector.Сейчас создадим абстрактный класс (для тех кто не знает какой класс называется абстрактным читать msdn) который является производным от ContentControl в нем с помощью виртуального метода SelectTemplate будет обеспечиваться логика для возврата соответствующего шаблона, и перегрузим OnContentChanhed который исходит от базового класса.
                        Читать дальше →
                        • +15
                        • 6,9k
                        • 3
                      • Machine Learning. Курс от Яндекса для тех, кто хочет провести новогодние каникулы с пользой

                        • Tutorial
                        Новогодние каникулы – хорошее время не только для отдыха, но и для самообразования. Можно отвлечься от повседневных задач и посвятить несколько дней тому, чтобы научиться чему-нибудь новому, что будет помогать вам весь год (а может и не один). Поэтому мы решили в эти выходные опубликовать серию постов с лекциями курсов первого семестра Школы анализа данных.

                        Сегодня — о самом важном. Современный анализ данных без него представить невозможно. В рамках курса рассматриваются основные задачи обучения по прецедентам: классификация, кластеризация, регрессия, понижение размерности. Изучаются методы их решения, как классические, так и новые, созданные за последние 10–15 лет. Упор делается на глубокое понимание математических основ, взаимосвязей, достоинств и ограничений рассматриваемых методов. Отдельные теоремы приводятся с доказательствами.



                        Читает курс лекций Константин Вячеславович Воронцов, старший научный сотрудник Вычислительного центра РАН. Заместитель директора по науке ЗАО «Форексис». Заместитель заведующего кафедрой «Интеллектуальные системы» ФУПМ МФТИ. Доцент кафедры «Математические методы прогнозирования» ВМиК МГУ. Эксперт компании «Яндекс». Доктор физико-математических наук.
                        Содержание и видео всех лекций курса