• Новые бесплатные онлайн курсы от Stanford

      В начале текущего учебного года Stanford организовал 3 бесплатных онлайн курса (основаные на трёх стационарных курсах Стэнфорда): Machine learning, Artificial intelligence и Introduction to Database. Все курсы идут с видео лекциями и домашними заданиями. Для курсов Artificial intelligence и Introduction to Database предусмотрены ещё и экзамены. После успешного окончания любого из курсов будет выслан сертификат (digital-signed pdf) от преподавателя.

      И вот, были анонсированы ещё несколько онлайн курсов, которые будут стартовать в январе/феврале 2012 года.

      У нас есть замечательный шанс послушать некоторые знаменитые Стэнфордские курсы, записывайтесь!

      Update Спасибо recky, который заметил, что добавились ещё несколько курсов. Один из CS секции — по криптографии, и два из Entrepreneurship секции:

      UUpdate продолжают радовать, новый доступный курс:

      Читать дальше →
    • Нифига себе сходил за хлебушком, или история одного взлома

        Всё началось с того, что ко мне (как к фрилансеру) обратились за помощью и попросили настроить exim4 так, чтобы почтовая рассылка не попадала в спам. Даже заботливо ссылку прислали на замечательную статью.

        Работы на пару часиков включая обновление DNS, но не тут то было. Залогинившись под рутом я включил свой любимый screen по привычке командой screen -x и лицезрел прелюбопытнейшее действо в любимой многими папке /dev/shm. Злоумышленник не удосужился прикрыть сессию screen, либо всё еще работал в ней. И тут начинается квест:

        Первое, что я сделал — просмотрел, чем же занимался злоумышленник:

        Читать дальше →
      • Realplexor: производительный Comet-сервер с API для PHP и Javascript (realtime)

          Dklab Realplexor — это Comet-сервер, позволяющий держать одновремено сотни тысяч долгоживущих открытых HTTP-соединений с браузерами пользователей. JavaScript-код, запущенный в браузере, подписывается на один или несколько каналов Realplexor-а и вешает обработчик на поступление данных. Сервер может в любой момент записать сообщение в один из таких каналов, и оно будет моментально передано всем подписчикам (хоть одному, хоть тысяче), в режиме реального времени и с минимальной нагрузкой для сервера.

          Хотя идейным вдохновителем Realplexor-а был предыдущий проект, dklab_multiplexor, код Realplexor-а не имеет с ним практически ничего общего. Поэтому я и решил сменить название. Несопоставимы также возможности продуктов (см. ниже), да и размер кода увеличился в 7 раз.

          Realtime-направление сейчас довольно активно развивается на Западе, и в нем особенно выделяется продукт Tornado — событийно-ориентированный веб-сервер на языке Python. Правда, Tornado — это не столько Comet-сервер, сколько инструмент, с помощью которого можно запрограммировать «в том числе» и Comet-сервер. Ключевые слова: Comet, Push Server, Long polling, JavaScript, XMLHttpRequest.

          Главные преимущества Realplexor-а:
          • простота использования: наличие API для JavaScript, API для PHP (в будущем — и для других языков);
          • простота конфигурирования;
          • широкий функционал (либо отстутствующий, либо недоступный напрямую в аналогах).

          Лучше один раз увидеть...


          Я сделал отдельную онлайн-песочницу, чтобы продемонстрировать функционал нового Realplexor-а и то, для чего вообще нужны Comet-серверы (кстати, это физически тот же самый демон Realplexor-а, что использует мой новый стартап РуТвит). Песочница реализует что-то типа многоканального чата: зайдя, вы получите как будто бы 2 независимых «браузера», запущенных на разных компьютерах.
          • Верхний «браузер» отображает каналы — в них моментально появляются новые сообщения, как только кто-то их туда отправляет на стороне сервера. Конечно же, эту страницу могут просматривать одновременно сотни тысяч пользователей, и они все будут видеть одно и то же (реализовано с использованием Realplexor JavaScript API). Можно «на лету» добавлять новые каналы (подписка) или скрывать уже имеющиеся (отписка).
          • Нижний браузер содержит формы, позволяющие добавлять сообщение в произвольный канал, указав его имя. Форма AJAX-ом отправляется на сервер, и уже там PHP-скрипт записывает в Realplexor полученный текст через PHP API. (И да, так можно чатиться.)
          По умолчанию на странице открыто 3 канала с именами Alpha, Beta и RuTvit. Но, конечно, вы можете закрыть эти каналы и открыть новые. Вот, например, страница с единственным открытым каналом по имени Habrahabr: http://rutvit.ru/realplexor/demo?ids=Habrahabr.



          Песочница демонстрирует следующие функции Realplexor-а:
          Читать дальше →
        • Линейная алгебра для разработчиков игр

          • Translation
          • Tutorial
          Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
          Читать дальше →
        • Обзор свежих материалов, август 2011

            Этот материал продолжает серию ежемесячных обзоров свежих статей по теме интерфейсов, новых инструментов и коллекций паттернов, интересных кейсов и исторических рассказов. Из лент нескольких сотен тематических подписок отбирается примерно 5% стоящих публикаций, которыми интересно поделиться. Предыдущие материалы: апрель 2010-июль 2011.



            Читать дальше →
            • +58
            • 645
            • 7
          • Пять способов вызвать функцию

            • Translation
            Мне часто приходится сталкиваться с JavaScript-кодом, ошибки в котором вызваны неправильным понимаем того, как работают функции в JavaScript (кстати, значительная часть такого кода была написана мной самим). JavaScript — язык мультипарадигменный, и в нем имеются механизмы функционального программирования. Пора изучить эти возможности. В этой статье я расскажу вам о пяти способах вызова функций в JavaScript.
            Читать дальше →
          • The Cocoa Environment. Part 1

            Многие об этом говорят, но какое на самом деле место занимает Cocoa environment в жизни IOS и MacOS, да и вообще что это за такая уличная магия?

            Поприветствуйте Cocoa!


            Cocoa — это основная среда приложений для Mac OS X (есть еще Carbon, но эта среда используется в основном только для поддержки кода написанного для Mac OS 9.) и единственная среда приложений для операционных систем IOS. Она состоит из набора объектно-ориентированных библиотек, исполняющей среды и среды разработки.
            Большинство программ, которые используют пользователи Mac OS X (например, Mail или Safari), а тем более, пользователи IOS, это программы, написанные с помощью Cocoa.
            Ну а для создания приложений под Cocoa используется знаменитый Xcode.

            Как и с чем?


            Как и во всех средах приложений, Cocoa имеет два мира: мир runtime'а и
            Читать дальше →
            • +31
            • 8.9k
            • 9
          • Введение в Core Graphics на iOS

            Недавно обнаружил, что на хабре нет статей по работе с Core Graphics в iOS, также как не нашел подобных статей на русском языке. На сайте Apple для разработчиков есть документация по работе с 2D графикой в iOS — Core Graphics Framework Reference, включающее 400 страниц документации, полезной в качестве справки, но не дающей начального представления о работе с видами и рисованием. Поэтому я решил написать вводную статью по работе с 2D графикой в iOS.
            Читать дальше →
          • Текстурирование спрайтов с помощью (dis)placement map


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

              Если коротко, то технология позволяет иметь одну отрендеренную анимацию и накладывать на нее разнообразные скины, тем самым получая внешне различные объекты.

              Суть в том, что в изучаемой мной игре есть большое количество анимированных спрайтов человечков (как я изначально считал — заранее отрендеренных). Человечки разные (по-разному одетые, разных цветов и т.п.).
              Читать дальше →
            • Как делали новый дизайн сайта Expression Engine

              • Translation
              • Tutorial
              Представляю вашему вниманию перевод статьи "Redesigning the ExpressionEngine Site" от Jesse Bennett-Chamberlain. Перевели в компании UXDepot. Специально для пользователей Хабрахабра с одобрением издания Digital Web Magazine.


              Офицер-пограничник на границе между США и Канадой: «Вы направляетесь по делам или же отдыхать, сэр?»
              Я: По делам.
              Офицер: Уточните причину, пожалуйста.
              Я: Я веб-разработчик и еду на встречу со своим клиентом в штате Орегон для обсуждения проекта.
              Пограничник: Как называется компания вашего клиента?
              Я: «pMachine».
              Пограничник: Вы везете какие-либо сайты с собой?
              Я: *недоумевающий взгляд*
              Пограничник: В вашей машине есть какие-либо сайты, сэр?
              Я: Хмммммм… нет, сайты сейчас на серверах. В машине я ничего не везу.
              Пограничник: Тогда как вы хотите показать их вашему клиенту?
              Я: Хмм… вообще-то я просто еду на встречу с клиентом для обсуждения сайта, пока я ему ничего не везу.
              Пограничник: Хорошо, тогда наслаждайтесь поездкой, сэр.

              (30 секунд молчания)

              Хизер: В следующий раз скажи, что мы едем на отдых.
              Читать дальше →
            • Вышел WordPress 3.1 «Reinhardt»


              Стал доступен долгожданный релиз WordPress! WordPress 3.1 с кодовым именем «Reinhardt» назван в честь джазового гитариста Джанго Рейнхардта (Django Reinhardt). Версия 3.1 доступна для загрузки, либо вы можете обновить её из админки.
              Читать дальше →
            • Анимированные баннеры на Javascript — это просто*

                *) На самом деле все равно сложно, но зато проще, чем было раньше.

                История началась с постановки задачи: нужно сделать анимированный баннер с примерно тридцатью объектами средствами HTML+javascript за один день. За день, конечно, баннер сделан не был, а был сделан за два усилиями трех человекодней. После выполнения задания осталась библиотека пакетной анимации, которую я назвал Scenario. О её доработанной версии я и хочу рассказать.

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

                Запуск сценария из любого места предельно прост:

                var newScenario = [...];
                $.scenario(newScenario, {
                    complete: function(time) {
                        alert('Готово!');
                    }
                });

                Осталось только разобраться, что писать вместо трех точек в примере :)
                Читать дальше →
              • Работаем с jQuery Templates

                  Введение


                  Плагин jQuery Templates – это «движок шаблонов», работающий на стороне клиента как расширение jQuery.

                  Этот плагин помогает показать в браузере данные, которые находятся в объектах и массивах JavaScript, избавляя вас от рутинных операций по созданию HTML-кода, экранированию специальных символов и т.п. Кроме того, он обладает очень интересными возможностями – например, позволяет обновлять созданный с его помощью HTML-код при изменении исходных данных.

                  Разумеется, jQuery Templates – не единственный и не первый «движок шаблонов», но у него есть большое преимущество перед альтернативными вариантами – поддержка со стороны jQuery Team. Это позволяет нам не бояться того, что этот плагин окажется заброшенным, и различные проблемы, возникающие при выходе новых версий браузеров, придется решать своими силами.

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

                  Читать дальше →
                • Автоматизированная проверка PHP кода при комитах

                    В свое время работая в узком кругу программистов, отдельными задачами и даже проектам, мы не задумывались о проблемах связанными с текучкой кадров. Точнее думать — думали, но ни каких мер не применяли, да и в целом коллектив был сплоченный никто не уходил и никого «не уходили». С ростом внутренних проектов и корпоративных клиентов, штат начал разрастаться и казалось, что все отлично — нас больше, значит будем больше успевать и делать, но не тут то было. Мы начали тратить кучу времени на “бесполезные” обсуждения, проверки, излишние проектирование и т.д, больше всего раздражает — это проверка кода. И тут я начал думать, что “мудрые и древние” наверняка решали эти проблемы с сотнями, тысячами программистов, неужели мы не справимся? Я решил провести эксперимент, под названием “автоматизированная проверка стиля кода при комитах”. Для большинства из Вас это не новость и наверняка вы этим пользуетесь, но поделиться опытом внедрения думаю, не будет лишним.
                    Читать дальше →
                  • Приложения iPhone с открытым кодом

                      В данной статье речь пойдет о приложениях с открытым кодом, которые размещены в App Store. Мы будем рассматривать только приложения которые одобрены компанией Apple и опубликованы. Начинающие разработчики могут изучать их код для повышения своих навыков.

                      Читать дальше →
                    • Делаем SMS-сервис «на коленке»

                        Привет!

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

                        Задача перед мини-стартапом стояла простая:
                        • Создать прикольную штуку на «коленке» за минимум времени
                        • Потратить на запуск меньше 1000 рублей (время не считается)
                        • Собрать работающий монетизируемый сервис

                        UDP: в комментах ещё есть статистика во время хабраэффекта и феерический конец истории от агрегатора.
                        Читать дальше →
                      • Ethernet термометр на основе Arduino

                          Arduino

                          О цифровых термометрах на основе Arduino было сказано немало. Все они либо подключались к компьютеру, либо выводили температуры сразу на дисплей.
                          Но мне был нужен уличный термометр, который автономно и отправляет данные на сайт. Итак, приступим.
                          Читать дальше →
                        • Пример использования хуков (hooks) в git

                            Для того чтобы познакомиться с механизмом хуков в git, достаточно просто начать их использовать и посмотреть как оно работает, и как оно устроено внутри.
                            Хуки в git это некие скрипты, срабатывающие на определенные события, по сути своей являются их обработчиками. Расположены они в каталоге .git/hooks.

                            простой пример обработчика...
                          • Yota + Eeebuntu

                              Вчера купила-таки себе Yota-модем. Повлияло два обстоятельства — снижение цены н самсунговский донгл с 4500р до 1990р, а также то, что коллега принес на работу свежеприобретенный ноутбук с WiMAX'ом — и мальчики целый день вместо работы тестировали скорость соединения :) Оказалось — сеть вполне ловится. В результате по дороге домой я заехала в магазин и купила йота-модем. Черный — под цвет моего 901-го. Сразу заставить заработать «бешеный софт» (madwimax) не удалось — поэтому ниже опишу последовательность действий, приведшую меня к успеху.
                              Читать дальше →
                            • Трёхмерные здания из OpenStreetMap

                                image

                                Да, OpenStreetMap и его сообщество могут и такое!

                                Участник Komzpa (скажем ему спасибо) создал сторонний 3D-рендерер на основе Mapnik'а, который поддерживает даже сложные формы зданий. Останкинская башня (а информация о ней хранится уже в базе данных самого OSM) нарисована участником Hind (и ему скажем спасибо) и выглядит как настоящая (имхо), даже тень отбрасывает!

                                Чтобы создать трёхмерное здание, надо задать высоту в этажах в специальном теге «building:levels». Сейчас очень мало зданий имеют проставленную этажность, но вы можете исправить эту ситуацию!

                                Подробности и обсуждение на форуме.

                                Другие 3D-рендереры: glosm и MapSurfer.NET