• Няш-меш

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

      Я ставлю «блоггер» в кавычки, потому что это слово — фиговый листок. Всякий может скачать PDF закона и убедиться в том, что статья 10² начинается так: «Владелец сайта и (или) страницы сайта в сети «Интернет», на которых размещается общедоступная информация и доступ к которым в течение суток составляет более трёх тысяч пользователей сети «Интернет» (далее — блогер), при размещении и использовании указанной информации, в том числе при размещении указанной информации на данных сайте или странице сайта иными пользователями сети «Интернет», обязан обеспечивать соблюдение законодательства Российской Федерации…».

      Стало быть, это не только блогосферы касается. Такими страницами являются, например, не только все мои блогозаписи на Хабрахабре в этом году (кроме одного малопосещаемого перевода, не дотянувшего до 3000), но также, например, и описание API jQuery, и даже файл README.md в репозитории модуля node-sqlite3, который (в составе npm-пакета) подвергается десяткам тысяч скачиваний ежемесячно:

      [информация о модуле]

      Кроме того, таковы и вообще все-все сколько-нибудь популярные зарубежные сайты (репозитории, магазины, библиотеки, галереи, пособия, СМИ, блоги, игры…) и отдельные страницы, владельцы которых уж конечно не побегут, задрав штаны, регистрироваться в России — и, более того, бережно хранить итоги полугода пристального слежения за всеми своими посетителями для предоставления в органы.

      Закон начинает действовать 1 августа. Осталось 86 дней до превращения ситуации с Интернетом в России в ситуацию совершенно северокорейскую. То есть, хотя во второй половине прошлого года я сравнивал положение дел с Кувейтом ([1], [2], [3]) — простите, был не прав: даже Кувейт для нас ещё очень долго (может быть, даже вечно, вечно!…) будет недосягаемым оазисом относительной свободы Интернета.

      Читать дальше →
    • Java Multicore Programming: Lecture #1

        Добрый день.
        15 мая была проведен первый вебинар (из 16) курса «Multicore programming in Java». Тут я бы хотел опубликовать материалы, упоминавшиеся на лекции: ссылки на источники, термины, картинки, задание. Возможно кто-то сочтет их полезными для себя.

        Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

        Введение




        “Железо”


        Стоит «посмотреть картинки» в следующих источниках

        Читать дальше →
      • Что из себя представляет IPTV Middleware?

          Первым комментарием к моей статье про головную станцию IPTV был «Хотелось бы услышать поподробнее про middleware. Что оно из себя представляет, как работает?». Ну что ж, попробую.



          Middleware — это серверное ПО для управления всеми компонентами комплекса IPTV, это ключевой компонент, так как именно он является лицом всей системы — интерфейсом пользователя (в IPTV его обычно называют «Абонентский портал»).
          Читать дальше →
        • Как воспользоваться вебкамерой в эмуляторе Android


            Многие разработчики, особенно начинающие, пользуются эмулятором Android для создания своих приложений. Это позволяет делать очень многое без подключения телефона. Почти всё. Вот именно это «почти» и относится, например, к вебкамере. Для большинства приложений может быть и достаточно будет такого вида, ведь можно передать «нужное» изображение на обработчик, а окончательно протестировать уже на реальном устройстве. Для приложений которые работают с дополненой реальностью так работать будет совсем не удобно. Хотелось бы иметь видеопоток. В случае если телефона с андроидом под рукой нет — это проблема.
            В прошлой заметке я писал о том, как работают методы распознавания маркера дополненой реальности. Данная статья будет посвящена тому, как воспользоваться вебкамерой в эмуляторе Android.
            Читать дальше →
          • Intel INDE Media Pack

              В прошлый раз в обзорной статье про Intel INDE мы упомянули о Media Pack и его ключевых возможностях. В этой статье мы остановимся на нем более подробно.

              INDE Media Pack — это библиотека, включающая в себя различные компоненты для работы с аудио и видео. С точки зрения реализации, это — надстройка над медиа компонентами Android, использующая аппаратное ускорение для кодирования и декодирования видео. По сравнению с использованием классов для работы с мультимедиа в Android, она гораздо более проста в использовании, разработчику нет нужды разбираться во всех тонкостях работы медиа кодеков, экстрактора, муксера, только для того, чтобы встроить в свое приложение возможность работы с видео.
              Читать дальше →
              • +16
              • 5,2k
              • 7
            • Знакомьтесь, Swift!

              2 июня на конференции WWDC 2014 Apple представила новый объектно-ориентированный язык программирования — Swift. Я думаю, многие уже успели посмотреть, что из себя представляет этот язык (Swift — нововведения), поэтому я не буду останавливаться на нововведениях. Я предлагаю создать простенький проект на языке Swift, чтобы понять на деле основные отличия от привычного Obj-C.


              Читать дальше →
            • Проблемы при верстке сайтов и игр. Особенности сайтов для мобильников

                Привет, Хабра!
                Эта статья является продолжением прошлой статьи (JavaScript to APK. http://habrahabr.ru/company/ifree/blog/214531/). Я попробую дать несколько советов по разработке мобильных сайтов, которые сложились из моего опыта работы над сервисами и продуктами в i-Free.
                image

                Для разработчиков мобильных сайтов все телефоны делятся на три группы:

                • Кнопочные, без поддержки touch-событий
                • С сенсорным экраном, с поддержкой touch-событий
                • Смартфоны


                Откуда в 2014 году берутся старые кнопочные телефоны?

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

                Откуда в 2014 году берутся новые кнопочные телефоны?

                Производство новых J2ME телефонов заполняет низший сегмент рынка. Такие телефоны имеют несколько качественных отличий:

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


                Кто делает сайты для таких телефонов?

                Как правило, это очень крупные компании, которые стараются сделать свои сервисы максимально доступными (например, Google, Yandex, Mail). Цена вопроса в этом случае не имеет значения. Кроме того, во всех телефонах есть стандартные закладки, в которых вшит сайт оператора, производителя или компании вендора. На таких сайтах можно купить различный контент (игры, картинки, мелодии) или оформить какие-либо услуги. Т.к. телефонов производится очень много, то у таких сайтов может быть очень большая нагрузка.
                Читать дальше →
              • MS-DOS — не вопрос! (видео)

                  Ныряем в чистый, добрый MS-DOS. Ведь тут можно делать практически всё, что и в любой другой операционной системе: и в игрушки поиграть, и музыку послушать, и видео посмотреть, и в интернет выйти… Да и сама установка проста как далее-далее-готово. Поэтому я в рамках своей передачи сделал несколько видео об этой ОС. Надеюсь, вам будет интеррресно!


                  По катом ещё два видео - про мультимедиа и интернет
                • XSS-game от Google

                    Google представил игру, заключающуюся в поиске xss-уязвимостей, c целью распространения информации об этом наиболее опасном и распространенном типе уязвимости. Google так серьезно относится к обнаружению уязвимостей, что платит до $7500 за серьезные xss.



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

                    Заметка короткая, под кат не убираю, разомните мозги в этот выходной день! Я вот без подсказок осилил только 1-й уровень, с подсказками дошел до 6-го, дальше пока никак.

                    Ну-ка, сыграем.
                  • Эффект последней строки

                      Copy-Paste
                      Я изучил множество ошибок, возникающих в результате копирования кода. И утверждаю, что чаще всего ошибки допускают в последнем фрагменте однотипного кода. Ранее я не встречал в книгах описания этого феномена, поэтому и решил о нём написать. Я назвал его «эффектом последней строки».
                      Читать дальше →
                    • Зачем нам нужен Rust?

                        Rust — системный язык программирования, который исполняется чертовски быстро, предотвращает почти все падения, а также устраняет неопределённости совместного доступа к данным. Он разрабатывается Mozilla как инструмент для создания обозревателя нового поколения — Servo.

                        Пункты соприкосновения

                        Данное определение языка кажется сказкой, ибо доступные нам прежде инструменты всегда балансировали между скоростью и надёжностью.
                        А что же наяву?
                      • История о том, как я отказался от использования сотового телефона

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

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

                          Надо сказать, что последнее пошло во вред, так как они секунд 10 не могли пошевелиться. Поговаривают, что до сих пор байки про меня в больнице ходят.

                          Меня там же, где я придерживал стену, обработали перевязали и повезли к хирургу. Кровь перестала струится по ногам, это меня немного успокоило.

                          Как вы понимаете, есть и полная версия событий.

                          Вы думаете, этот случай помог переосмыслить жизнь и понять, что все мирское бренно, включая сотовую связь? Не совсем так. Но обо всем по-порядку.
                          Читать дальше →
                        • Управление программными проектами — наизнанку

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



                            Разработка софта (полет на Марс, строительство небоскреба новой спиралевидной формы в Дубае) — это, положив руку на сердце, настолько сложный и полный рисков процесс, что, не имея формально четкого технического задания (в стиле строгого доказательства формулы корней квадратного уравнения через вывод из бинома Ньютона) — можно лишь задекларировать религиозные постулаты (фичи) и сроки (пророчества) и заставить себя и других поверить в них (во веки веков аминь). Поэтому вы обречены каждый раз шагать в туман с молитвенником и компасом — каждый раз надеясь на удачу и… надежных людей в команде.
                            Читать дальше →
                          • Как я поступил на дистанционное образование в магистратуру Walden (США)

                              Вдохновленный постами на Хабре и Лайфхакере решил удаленно получить диплом магистра в области компьютерных наук. После продолжительных поисков выбор пал на университет Walden, Миннесота, США.

                              Финальный список документов, которые в том или ином виде пришлось предоставить:
                              Читать дальше →
                            • Кросспостинг в twitter, facebook, livejournal, vkontakte

                              • Tutorial

                              Когда я писал проект crafthunters.com, я заметил что для раскрутки клиенты используют социальные сети. Пользовались виджетами и лайками, но по хорошему надо было попадать в ленту новостей. Кроме того, популярный вконтакте вывел новости на главную страницу в сентябре. Т.е. для распространения контента надо было адаптировать standalone блог для представления в социальных сетях, используя простую истину: попасть в ленту новостей популярных социальных сетей. Вначале это происходило вручную и приносило более половины траффика. Потом пришла идея это всё автоматизировать.
                              Популярными социальными сетями у нас были:
                              • facebook
                              • вконтакте
                              • livejournal
                              • твиттер

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

                              Далее я хочу представить реализацию кросспостинга под эти четыре социальные сети для asp.net mvc.
                              Читать далее
                            • Хакеркаст (1) из Кремниевой долины. Алексей Федосеев — бывший директор по разработке продуктов Motorola в США, из которой ушёл, чтобы основать стартап 1World Online


                                Добрый день, хабравчане!

                                Рады представить вам наш очередной подкаст — Хакеркаст RusValley.com (коллективный блог обитателей Кремниевой долины), где мы приглашаем в студию предпринимателей из Кремниевой долины и обсуждаем последние IT-новости.

                                Сегодня у нас в гостях Алексей Федосеев — серийный предприниматель из Кремниевой долины. Алексей успешно продал свой предыдущий бизнес 4HomeMedia компании Motorola, в которой работал директором по разработке продуктов и где вынашивал идею своего нового стартапа. На данный момент Алексей привлек уже 1.5 миллиона инвестиций на свой проект 1 World Online.

                                1 World Online — это социльно-исследовательский сервис. Он помогает узнать, что люди реально думают на актуальные сегодня темы, и выдает всю информацию в удобном, логически понятном, структурированном виде. Для этого используются опросы и экспертные мнения.

                                Сервис представляет собой «умный краудсорсинг», саморегулирующийся с помощью обратной связи от участников.
                                Читать дальше →
                                • +16
                                • 5,7k
                                • 2
                              • Будущее Unreal Tournament начинается сегодня: открытая разработка, бесплатность и кроссплатформенность

                                • Перевод
                                image
                                Работа над будущим Unreal Tournament начинается сегодня, и мы (Epic — примечание переводчика) рады заявить о том, что мы будем работать над ним вместе — вместе с вами. Мы знаем, что фанаты любят Unreal Tournament так же сильно, как мы. Мы знаем, что у вас есть интересные идеи и обоснованные мнения по поводу того, в каком направлении должно идти развитие UT, и что должно присутствовать в новой игре. Так давайте рискнём и создадим эту игру вместе, открыто и для всех.

                                Вот план:

                                • Мы создали маленькую команду ветеранов разработки UT, которая начинает работать над проектом уже сегодня.
                                • С первой строчки кода, с первого концепт-арта, с первого дизайнерского решения разработка будет вестись открыто в виде сотрудничества между Epic, фанатами UT и разработчиками UE4. Мы будем использовать форумы для обсуждений и стримы Twitch для регулярных сообщений о ходе работ.
                                • Если вы — желающий участвовать фанат, всё, что вам надо — создать бесплатный аккаунт на форуме и присоединиться к обсуждению.
                                • Весь код и наполнение игры будут доступны для разработчиков UE4 на GitHub (тут я не очень понимаю, имеются ли в виду и те, кто разрабатывает на UE4, но звучит, в любом случае, круто).
                                • Игра будет верна своим корням соревновательного FPS.
                                • Разработка будет фокусироваться на Windows, Mac и Linux.

                                Читать дальше →
                              • Дорог ли native метод? «Секретное» расширение JNI


                                  Для чего Java-программисты прибегают к native методам? Иногда, чтобы воспользоваться сторонней DLL библиотекой. В других случаях, чтобы ускорить критичный алгоритм за счет оптимизированного кода на C или ассемблере. Например, для обработки потокового медиа, для сжатия, шифрования и т.п.

                                  Но вызов native метода не бесплатен. Порой, накладные расходы на JNI оказываются даже больше, чем выигрыш в производительности. А всё потому, что они включают в себя:
                                  1. создание stack frame;
                                  2. перекладывание аргументов в соответствии с ABI;
                                  3. оборачивание ссылок в JNI хендлы (jobject);
                                  4. передачу дополнительных аргументов JNIEnv* и jclass;
                                  5. захват и освобождение монитора, если метод synchronized;
                                  6. «ленивую» линковку нативной функции;
                                  7. трассировку входа и выхода из метода;
                                  8. перевод потока из состояния in_Java в in_native и обратно;
                                  9. проверку необходимости safepoint;
                                  10. обработку возможных исключений.

                                  Но зачастую native методы просты: они не бросают исключений, не создают новые объекты в хипе, не обходят стек, не работают с хендлами и не синхронизованы. Можно ли для них не делать лишних действий?

                                  Да, и сегодня я расскажу о недокументированных возможностях HotSpot JVM для ускоренного вызова простых JNI методов. Хотя эта оптимизация появилась еще с первых версий Java 7, что удивительно, о ней еще никто нигде не писал.
                                  Читать дальше →
                                • JSR 133 (Java Memory Model) FAQ (перевод)

                                    Добрый день.
                                    В рамках набора на курс «Multicore programming in Java» я делаю серию переводов классических статей по многопоточности в Java. Всякое изучение многопоточности должно начинаться с введения в модель памяти Java (New JMM), основным источником от авторов модели является «The Java Memory Model» home page, где для старта предлагается ознакомится с JSR 133 (Java Memory Model) FAQ. Вот с перевода этой статьи я и решил начать серию.
                                    Я позволил себе несколько вставок «от себя», которые, по моему мнению, проясняют ситуацию.
                                    Я являюсь специалистом по Java и многопоточности, а не филологом или переводчиком, посему допускаю определенные вольности или переформулировки при переводе. В случае, если Вы предложите лучший вариант — с удовольствием сделаю правку.
                                    Этот статья также подходит в качестве учебного материала к лекции «Лекция #5.2: JMM (volatile, final, synchronized)».

                                    Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

                                    Ну и да, приходите учиться ко мне!


                                    JSR 133 (Java Memory Model) FAQ


                                    Jeremy Manson и Brian Goetz, февраль 2004

                                    Содержание:
                                    Что такое модель памяти, в конце концов?
                                    Другие языки, такие как C++, имеют модель памяти?
                                    Что такое JSR 133?
                                    Что подразумевается под «переупорядочением» (reordering)?
                                    Что было не так со старой моделью памяти?
                                    Что вы подразумеваете под «некорректно синхронизированы»?
                                    Что делает синхронизация?
                                    Как может случиться, что финальная поля меняют значения?
                                    How do final fields work under the new JMM?
                                    Что делает volatile?
                                    Решила ли новая модель памяти «double-checked locking» проблему?
                                    Что если я пишу виртуальную машину?
                                    Почему я должен беспокоиться?
                                    Читать дальше →