• 3D-принтеры: еще бюджетнее, еще оригинальнее



      3D-принтеров печатающих пластиком ABS и/или PLA все больше и больше. Хотя основных конструкций, по большому счету, всего 2-3. Поэтому создатели новых принтеров стараются реализовать в конструкции некоторую изюминку или просто сделать еще дешевле.
      Читать дальше →
    • Китайцы ворвались на рынок мини-компьютеров



        У Raspberry Pi и Cotton Candy появился китайский конкурент. Компьютер размером с флешку стоит 74 доллара — как раз посередине между Raspberry Pi (25 — 35 долларов) и Cotton Candy (200). Внутри — одноядерный процессор ARM Cortex A8 AllWinner A10 1.5GHz, графический чип Mali 400, 512 мегабайт DDR3 RAM и 4 гигабайта встроенной флеш-памяти. Есть полноразмерный слот USB, microUSB, кардридер micro TF, порт HDMI и беспроводной модуль WiFi 802.11b/g. Размеры «китайца» — 8.8 х 3.5 х 1.2 см, вес — 200 граммов.
        Читать дальше →
      • Пришедшая в негодность патентная система: как мы до такого дошли, и как ее починить

        • Translation


        В системе патентов в США существует фундаментальная проблема.

        Эта проблема — мы.

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

        За последние несколько месяцев эти мнения выросли до яростного вопля, так как патентная система начала негативно влиять на все больше и больше игроков в индустрии: небольшие разработчики стали целью судебных исков от компаний, которые ничего не делают и не производят; Apple, HTC и Samsung не могут сдвинуться места в судебных процессах, связанных с патентами; пара многомиллиардных аукционов по патентам вызвала к жизни неслыханную до селе словесную баталию между Microsoft'ом и Google'ом. Самые пламенные критики открыто заявляют, что любая польза, которую патентная система могла бы принести, сейчас полностью перекрывается издержками, что ресурсы, которые при прочих равных условиях были бы направлены на развитие новых идей теперь тратятся на чрезмерно усердную защиту старого.

        Эти аргументы повторяются так часто и с такой уверенностью, что они стали практически аксиомой, риторическим и интеллектуальным обманом, который редко (если вообще) подвергается сомнению. Но это плохо и неверно — настолько, что ставит под удар любые реальные попытки реформирования системы. Шуметь и злиться — хороший способ привлечь к себе внимание, но ужасный способ чего-либо добиться, особенно если принять во внимание, что большинство бьющих себя в пяткой в грудь лишь повторяют упрощенную версию аргументов, которые повторялись в нашей стране еще со времен, когда Томаса Джефферсона назначили главой Управления патентов.

        Так что давайте начнем с начала. Давайте посмотрим, как работает патентная система, где она особенно дает сбои, и как можно привести ее в порядок. Готовы? Поехали.
        Читать дальше →
      • Актуальные баги IE6

          IE 6

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

          Читать дальше →
        • Простые вещи: Подгрузка через AJAX HTML-кода, содержащего JavaScript.

            При разработке CMS S.Builder наша команда активно использовала AJAX. Теперь вот решили поделиться накопленным опытом. Начнем с этого хабратопика.

            Не буду здесь затрагивать различные фреймворки и библиотеки. Свой код всегда роднее. Для работы с AJAX-ом в S.Builder написана библиотека sbAJAX. Можете качать и пользоваться :). В этом файле есть функция sbEvalJS. Для тех, кто не знает, объясню. При подгрузке через AJAX и вставке на страницу HTML-кода, содержащего JavaScript, JavaScript выполняться не будет или полезут баги. Эта функция как раз решает поставленную задачу.

            Читать дальше →
          • Культура сна

              Давно еще, пока я учился в школе, меня постоянно мучили мысли о том, что я хоть и высыпаюсь, но встаю мучительно и ничего с утра не хочу. Глубоко в душе я знал, что можно иначе, но как сделать так, чтобы ты с утра буквально вскакивал с кровати и шел воротить горы? Начал во всем разбираться, и вот, что из этого вышло.
              Читать дальше →
            • Drupal + Omega + Bootstrap: быстрое создание полностью кастомных тем оформления без верстки (Часть 2. Bootstrap)

              • Tutorial
              Первая часть, введение

              В первой части статьи я рассказал о прекрасном фреймворке Omega для Drupal, который позволяет создавать собственные темы оформления, основанные на сетке (grid), произвольно настраивать и менять расположение и размеры регионов без каких-либо модификаций HTML-кода шаблонов. На этом можно было бы и остановиться, но существует прекрасный мощный CSS-фреймворк Bootstrap, имеющий собственную реализацию сетки, большое количество готовых CSS и JS компонентов, которые очень легко стилизовать, а также огромное сообщество, благодаря которому мы получаем наиболее качественный и «вылизанный» код по сравнению с конкурентами.

              В этой части статьи я расскажу, как привязать Bootstrap к Omega. Но если вас по какой-либо причине не устраивает Bootstrap, то подобным образом можно прикрутить к Omega любой другой фреймворк на ваш вкус. Как и в первой части статьи, я не претендую на какую-то уникальность, просто описываю те вещи, которые можно почерпнуть из документации. Здесь будет много кода и мало картинок.
              Читать дальше →
            • Универсальный код C# под .NET и JavaScript

                Введение


                Приветствую вас, хабравчане. В данном топике я хотел бы осветить подробности разработки на C# под разнородные целевые платформы, в первую очередь такие как .NET и браузер (JavaScript). В качестве примера желающие могут изучить веб-сервис по обработке фотографий gfranq.com, в котором реализована клиентская и серверная обработка фотографий с помощью фильтров, а также функциональность коллажей на основе материала, описанного в данной статье.

                Так как я не умею подбирать картинки для привлечения внимания, то она будет по теме:


                Технические подробности под катом
              • Объектно-ориентированный дизайн… в CSS

                  Предупрежу заранее, что я совершенно не считаю себя экспертом HTML/CSS/JS. Но, как архитектору, мне всегда была интересна организация и систематизация кода в самых разных его проявлениях, в том числе и представленных в виде CSS. Особенно сильно этот интерес был подогрет БЭМом, при первом знакомстве с которым подсознание отреагировало когнитивным дискомфортом. А поскольку БЭМ-стиль в проектах у меня стал появляться все чаще, я почувствовал острую необходимость осмыслить, наконец, свое отношение к организации стилей. Таким образом и появился данный топик-размышление, топик-дискуссия. Я понимаю, что взялся за пограничную задачу, поскольку далеко не всем верстальщикам знакомы тонкости объектно-ориентированного дизайна, а большинство архитекторов не написали ни одного CSS-стиля. И, как результат, мне пришлось неуклюже балансировать, чтобы было понятно всем. Но 'этот риск еще больше подогрел мой интерес к теме :)
                  Читать дальше →
                • Coroutines в PHP и работа с неблокирующими функциями

                  • Translation
                  • Tutorial
                  Одним из самых больших нововведений в PHP 5.5 будет поддержка генераторов и корутин (сопрограмм). Генераторы уже достаточно были освещены в документации и в нескольких других постах (например в этом или в этом). Сопрограммы же получили очень мало внимания. Это гораздо более мощный, но и более сложный для понимания и объяснения, инструмент.

                  В этой статье я покажу как реализовать планировщик задач с использованием корутин, чтобы вы поняли, что с ними можно делать и как их применять. Начнем с нескольких вступительных слов. Если вы считаете, что вы уже достаточно хорошо знаете как работают генераторы и корутины, тогда можете сразу перейти к разделу «Совместная многозадачность».

                  Генераторы


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

                    Вы когда-нибудь задумывались, как устроены вещи, какой путь они проходят от идеи до реализации, насколько просты простые вещи? Насколько просто сделать расческу? А компьютерную мышь? А деревянную компьютерную мышь из цельного бруска красного дерева с ЖК экранчиком, с собственной электронной начинкой и изготовленным и оплетенным специально для нее кабелем? Думаю, вам будет интересен мой путь, который я прошел за 2,5 года создания моей мышки.



                    Читать дальше →
                  • Онлайн-инструменты для кодеров

                      Онлайн-сервисы становятся все популярнее, постепенно усложняя функционал и улучшая интерфейсы. В этой подборке представлены онлайн-инструменты для кодеров.

                      Cloud9


                      «Это Google Docs, только для кода» — так говорят о проекте. Облачный сервис вырос из Mozilla Bespin. Основные фишки: SSH, drag-and-drop и возможность разработки оффлайн.

                      Читать дальше →
                    • RFID-метка на простой логике

                      • Translation
                      Объявлено новое соревнование 7400, и нужно сделать что-то новое. Нельзя ударить в грязь лицом после победы в прошлом году ;)

                      У меня было несколько расплывчатых идей, но их было недостаточно, чтобы вызвать реакцию «Ух ты!» или «Ты маньяк!». Нужно серьезно потрудиться, чтобы оставаться на уровне моей предыдущей разработки — емкостного сканера.

                      Я устроил мозговой штурм с моими товарищами: Педерсеном (Pedersen), Асбьёрном (Asbjørn) и Флеммингом (Flemming), которые тут же придумали множество смешных идей. И вот Флемминг упомянул RFID (он разработчик системы управления доступом, которая основана на RFID). А вот это уже мысль. Конечно, первые мысли были об RFID-считывателе, но мы уже собрали их довольно много, и это было скучно. Однако, появилась идея сделать RFID-метку. Я не знаю, кто упомянул это первым, и, как обычно в мозговом штурме, идеи рождаются коллективным разумом. Итак, решено сделать RFID-метку, собранную исключительно на 7400-ой логике.
                      Много текста и картинок
                    • Четыре паттерна вызова функций в JavaScript

                      • Translation
                      Язык JavaScript был представлен как язык функционального программирования. Причина заключается в том, что функции в JS не просто разделяют логику на операционные блоки, функции являются объектами первого класса, способными создавать другие объекты. Подобная зависимость от функций одновременно является как сильной стороной, так и настоящим проклятием этого языка. Сильная сторона заключается в том, что язык, обладая подобными особенностями, становится легковесным и быстрым (каким JavaScript изначально и видели его создатели). Однако если вы не знаете что делаете — однозначно ждите беды.

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

                      Итак, существует четыре пути вызова функций:

                      • Вызов метода — Method Invocation
                      • Вызов функции — Function Invocation
                      • Вызов конструктора — Constructor Invocation
                      • Вызов apply и call — Apply And Call Invocation

                      Читать дальше →
                    • Как работает оператор delete

                      Пару недель назад мне попалась на глаза книга Стояна Стефанова (Stoyan Stefanov) Объектно-ориентированный Javascript. У книги был настолько высокий рейтинг на Амазоне (12 обзоров на 5 звезд), что я решил просмотреть, нет ли в ней чего-нибудь что можно было бы порекомендовать другим. Мне очень понравилось, как все описывается в разделе про функции, с которого я начал; поток примеров выстроен таким приятным и прогрессивным образом, что даже начинающие очень легко освоят его. Однако практически сразу я наткнулся на интересное заблуждение, описываемое на протяжении целой главы — удаление функций. Есть и другие ошибки (такие как разница между объявлением функции и оператором function), но сейчас мы не будем их обсуждать.

                      Книга утверждает, что «функции работают как обычные переменные — их можно скопировать в другую переменную или даже удалить». И приводится следующий пример:

                      >>> var sum = function(a, b) {return a + b;}
                      >>> var add = sum;
                      >>> delete sum
                      true
                      >>> typeof sum;
                      "undefined"

                      Если не обращать внимания на пару отсутствующих точек с запятой, что еще не так с этим куском кода? Конечно, проблема в том, что удаление переменной sum не должно было пройти успешно; выражение с оператором delete не должно разрешаться в true и typeof sum не должно вернуть «undefined». Все потому, что в яваскрипте нельзя удалять переменные. По крайней мере, те, которые определены таким образом.

                      Так что же происходит в этом примере? Опечатка? Диверсия? Скорее всего нет. На самом деле весь этот отрывок кода скопирован из Файрбага, который Стоян, должно быть, использовал для тестирования по-быстрому. Почти похоже что у Файрбага какие-то свои правила по поводу удаления. Это Файрбаг сбил Стояна с толку! Так что же на самом деле здесь происходит?
                      Узнать скорей!
                    • Использование преимуществ встроенного PHP сервера

                      • Translation
                      • Tutorial
                      Одним из крутейший новшеств в php 5.4 является встроенный сервер, созданный специально для разработки и тестирования. Теперь вы можете писать и тестировать свой код не имея полноценного веб-сервера — просто запустите встроенный сервер, протестируйте свой код, и выключите его, когда закончите.
                      Сервер, так же, предоставляет возможность и для творческого использования. Например, вы можете распространять портативное web-приложение на CD или USB, или даже как десктопное приложение, созданное на PHP без использования GTK или других графических библиотек.
                      Читать дальше →
                    • Новые аттачи в Яндекс.Почте

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

                        Проблема

                        Раньше всю аудиторию Яндекс.Почты мы разделяли на пользователей с флешем и без.

                        С первыми всё было просто: пользователи с установленным флешем прикрепляли файлы к письму через флеш-загрузчик. Он позволял загрузить сразу несколько файлов, определял их размер и контролировал процесс загрузки.

                        А вот с пользователями без флеша (8-10% от дневной аудитории) было сложнее. Мы предлагали им загружать файлы через обычную форму с />. Файлы из неё отправлялись через iframe вместе с содержимым самого письма, и это занимало много времени. Нажав кнопку «Отправить», пользователь долго ждал, пока загрузятся файлы.
                        Читать дальше →