• Google Glass можно будет носить вместе с обычными очками/стеклами



      На Хабре неоднократно появлялись новости об «умных» очках от Google. И в большинстве случаев речь шла о том, что стекол в таких очках не будет. Понятно, что выглядит вся эта система без стекол довольно странно, плюс ко всему возникает вопрос — как носить этот мини-ПК людям, которые носят очки в силу проблем со зрением? На днях разработчики устройства успокоили всех носителей обычных очков: Google Glass можно носить прямо на оправе таких очков.

      Читать дальше →
    • ArnoldC: язык программирования из цитат Шварценеггера

      image

      Доброго времени суток, Хабр. Думаю многие люди, хоть каким-то боком относящиеся к программированию хоть раз в жизни слышали об эзотерических языках программирования. Тот же Brainfuck.

       ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
       .>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
       ------.--------.>+.>.
      

      От одного только вида бросает в дрожь, но кто же мог подумать, что найдется человек, который сможет создать язык программирования из цитат известного голливудского актера.
      Финский программист Лори Хартикка (Lauri Hartikka) опубликовал на Github описание и компилятор языка программирования ArnoldC. В качестве команд в ArnoldC используются цитаты героев Арнольда Шварценеггера.
      Читать дальше →
    • Паралич анализа: вы знаете слишком много, чтобы просто писать код

      • Перевод

      Это перевод статьи Analysis Paralysis: Over-thinking and Knowing Too Much to Just CODE Скотта Хансельмана за 30 марта.

      Прочитал сегодня пост на ArsTechnica «Я знаю слишком много чтобы программировать быстро. Что мне делать?» — это обзор вот этого вопроса на StackOverflow:

      Я стал замечать, что чем более опытным я становлюсь, тем больше времени у меня занимает выполнение проектов или задач. Я не теряю квалификацию от возраста, нет. Проблема в том, что я вижу слишком много способов чему-то сломаться. А количество потенциальных ошибок и просто нюансов, о которых мне известно, становится всё больше и больше.

      Простой пример: раньше я просто записывал данные в файл. Теперь я думаю о правах доступа, занятии файла другим приложением, многопоточности, атомарных операциях, фреймворках, разных файловых системах, количестве файлов в директории, предсказуемых названиях временных файлов, качестве моего ГПСЧ, отключении электричества во время любой операции, адекватном API для моего кода, нормальной документации и так далее.

      Это просто бомба, прямо про меня. Я тоже недавно задумывался, а не от возраста ли появляются такие проблемы, но я просто не настолько стар. Проблему создаёт огромный опыт вкупе со слишком глубоким обдумыванием задачи. Я опытнее многих, но, очевидно, не настолько опытный, чтобы не страдать от паралича анализа.
      Читать дальше →
    • Теплый ламповый текстовый интерфейс. Просто о простом

        Периодически просматривая топики на хабре, постоянно ловлю себя на мысли, что ещё чуть-чуть и какой-нибудь нейроинтерфейс в ноутбуке станет реальностью. В работе постоянно натыкаюсь на то, что современные люди не очень понимают и любят простую командную строку. А читать мануалы им тем более лень.
        Но в моей практике часто случается так, что нужна небольшая утилита, выполняющая одну или две функции. А где именно она будет выполняться — неизвестно. Это может быть Windows, это может быть исключительно терминальный линукс, загрузочная медия — что угодно. Я не программист, но иногда бывает нужно облегчить жизнь себе или другим. И желательно как можно более наглядно. Сначала я пробовал делать просто консольные утилиты. Собственно, с этого, наверное, начинают все. Но очень быстро оказалось, что средствами printf/sprintf/puts и прочими (а пишу я на С) не очень удобно форматировать текст, выводить какую-то информацию. Окно с постоянным «скроллингом» выглядит не очень красиво, и если информации много — абсолютно нечитаемо. Тогда я вспомнил про ncurses.

        Читать дальше →
      • Асинхронность: назад в будущее


          Асинхронность… Услышав это слово, у программистов начинают блестеть глаза, дыхание становится поверхностным, руки начинают трястись, голос — заикаться, мозг начинает рисовать многочисленные уровни абстракции… У менеджеров округляются глаза, звуки становятся нечленораздельными, руки сжимаются в кулаки, а голос переходит на обертона… Единственное, что их объединяет — это учащенный пульс. Только причины этого различны: программисты рвутся в бой, а менеджеры пытаются заглянуть в хрустальный шар и осознать риски, начинают судорожно придумывать причины увеличения сроков в разы… И уже потом, когда большая часть кода написана, программисты начинают осознавать и познавать всю горечь асинхронности, проводя бесконечные ночи в дебаггере, отчаянно пытаясь понять, что же все-таки происходит…

          Именно такую картину рисует мое воспаленное воображение при слове “асинхронность”. Конечно, все это слишком эмоционально и не всегда правда. Ведь так?.. Возможны варианты. Некоторые скажут, что “при правильном подходе все будет работать хорошо”. Однако это можно сказать всегда и везде при всяком удобном и не удобном случае. Но лучше от этого не становится, баги не исправляются, а бессонница не проходит.

          Так что же такое асинхронность? Почему она так привлекательна? А главное: что с ней не так?
          Назад в будущее...
        • Опросы про языки программирования (+ обновление)



            Давно на Хабре не было опросов про популярность языков программирования. Идея опроса возникла из спора о популярности языка D в топике о новых возможностях C++. Существующие рейтинги: RedMonk, TIOBE, LangPop.com слишком косвенно меряют непонятно что.

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

              Месяц назад я увидел интересный пост про PHP-шелл без единого буквенно-цифрового символа и сильно захотел понять, что же он делает. Кому интересно — под кат!
              Читать дальше →
            • Как я не взломал «Хабрахабр» или 10+ активных XSS

                image
                Увидев как все ринулись искать XSS на прекрасно-синем Хабрахабре решил попытать свое счастье. POST-овые self-xss, бесполезные во многих контекстах и векторах, начиная с фильтрации в самых популярных браузеров (chrome/safari/ie etc) и заканчивая сложностью их же применения и эксплуатации было решено оставить остальным первопроходцам и отправиться на поиски чего-то более стоящего.
                Читать дальше →
              • Lock-free структуры данных. Основы: откуда пошли быть барьеры памяти

                • Перевод

                Как только я заинтересовался lock-free алгоритмами, меня стал мучить вопрос – а откуда взялась необходимость в барьерах памяти, в «наведении порядка» в коде?
                Конечно, прочитав несколько тысяч страниц руководств по конкретной архитектуре, мы найдем ответ. Но этот ответ будет годен для этой конкретной архитектуры. Есть ли общий? В конце концов, мы же хотим, чтобы наш код был портабелен. Да и модель памяти C++11 не заточена под конкретный процессор.
                Наиболее приемлемый общий ответ дал мне мистер Paul McKenney в своей статье 2010 года Memory Barriers: a Hardware View of Software Hackers. Ценность его статьи – в общности: он построил некоторую упрощенную абстрактную архитектуру, на примере которой и разбирает, что такое барьер памяти и зачем он был введен.
                Вообще, Paul McKenney – известная личность. Он является разработчиком и активным пропагандистом технологии RCU, которая активно используется в ядре Linux, а также реализована в последней версии libcds в качестве ещё одного подхода к безопасному освобождению памяти (вообще, о RCU я хотел бы рассказать отдельно). Также принимал участие в работе над моделью памяти C++11.
                Статья большая, я даю перевод только первой половины. Я позволил себе добавить некоторые комментарии, [которые выделены в тексте так].
                Передаю слово Полу
              • Ослабленный SSL в android устройствах?


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

                  Итак, по словам автора приложения APRSdroid, начиная с Android 2.3 при установке SSL-соединения вместо использовавшейся ранее комбинации алгоритмов шифрования и хэширования AES256 и SHA1 первой стала предлагаться значительно более слабая комбинация из RC4 и MD5.
                  Почитать пост с описанием этого открытия вы можете по ссылке.
                  Оставляя за скобками мотивы разработчиков android установить приоритет именно для этих алгоритмов, я хочу рассказать чем плох RC4 в качестве основного метода шифрования и чем это чревато для SSL.
                  Читать дальше →
                • Wi-Fi Mesh сети для самых маленьких



                    Недавним постом мы выяснили, что довольно большая часть от аудитории хабра не знает о том, что такое Mesh сети, постараемся это исправить.

                    Сегодня мы поговорим о:
                    • Что такое Mesh Wi-Fi
                    • Полноценная Mesh Wi-Fi сеть
                    • Зачем такие сети нужны
                    • Какие проблемы решает эта технология
                    • Плюсы и минусы Mesh сетей
                    • Какие технологии и протоколы используются
                    • Сравнительная таблица Mesh протоколов
                    • Mesh сети и органы власти

                    Читать дальше →
                  • Детальный ликбез про корпоративный бэкап, как сравнивать системы + пара практических советов


                      Cистема резервного копирования может работать вот так

                      Чем корпоративный бэкап отличается от домашнего?
                      Масштаб — инфраструктуры до петабайта. Скорость – тысячи транзакций в секунду, поэтому, например, нужно уметь забирать бэкап из базы данных на лету, не останавливая запись. Зоопарк систем: рабочие машины, мобильные телефоны и планшеты, профили людей в «облаке», копии баз данных CRM/ERP, все это на разных ОС и в тяжелых разветвленных системах.

                      Ниже я расскажу про решения от IBM, EMC, CommVault, Symantec и то, что они дают как бизнесу в целом, так и IT-отделу. Плюс о некоторых подводных камнях.

                      Давайте посмотрим на эти особенности бэкапа в обычных российских компаниях. В том числе таких, которые бэкапятся только на случай изъятия оборудования.
                      Читать дальше →
                    • Шифрования сообщений вконтакте методом AES для браузеров Chrome и Firefox

                      image

                      После скандала с PRISM вопрос безопасности данных стал еще актуальней чем был, и даже если вы не секретный агент, то ваша личная переписка, должна соответствовать своему названию, и по умолчанию должна быть закрыта от доступа третьих лиц. Взяв это за аксиому это принцип, я занялся разработкой дополнений для браузеров для работы с популярной в странах СНГ социальной сетью вконтакте методом AES.
                      Читать дальше →
                    • ПриватБанк обвинил украинского программиста во взломе своего Android-приложения

                        КПИшник Алексей Мохов, бывший сотрудник украинского Samsung и Viewdle, нашел уязвимость в Android-приложении «Приват24». ПриватБанк ответил неожиданно, обвинив программиста в попытке украсть средства со счетов клиентов банка.
                        image
                        Читать дальше →
                      • Сортировка методом StackSort

                          Несколько дней назад на xkcd.com был опубликован комикс о неэффективных методах сортировки. Alt-текст к нему рассказывал о сортировке методом StackSort, который заключается в том, чтобы скачать со StackOverflow блоки кода, которые можно найти по запросу «сортировать список» и запускать один за другим, пока не найдётся работоспособный вариант. Бред? Ещё бы не бред! Встречайте на Гитхабе реализацию StackSort на JavaScript.
                          Читать дальше →
                        • Коктейли ко дню программиста

                            Здравствуй, Хабр!

                            Осталось несколько дней до дня программиста и, конечно, в эту 13-ю пятницу, многие из пользователей хабра буду отмечать этот праздник. Буду отмечать и я.

                            По случаю профессионального праздника, мне бы хотелось поделиться с хабравчанами рассказом о своём небольшом кулинарном проекте, который удалось реализовать буквально накануне. Думаю из названия поста уже стало понятно, что это — коктейли для программиста. Кажется, до этого момента IT и миксологию еще никто не пытался объединить, а потому у меня есть некоторая надежда на успех моего начинания.

                            Все началось вот с чего: моя супруга увлекается кулинарией и ведет небольшой кулинарный блог. В прошлом году на мой день рождения она пригласила к нам в гости на кухню настоящего бармена из барного startup-проекта БАРаДОМа.нет. С момента знакомства с Артёмом (барменом который превратил мой день рождения в домашнюю барную вечеринку), у меня появилась идея: найти рецепты (или придумать самим) коктейлей, которые бы вписались в IT-тематику.

                            Итогом нескольких дней активной переписки с Артёмом стала вот такая небольшая коктейльная карта:

                            • Ruby
                            • Python
                            • Суровый Perl
                            • JMP (aka Assembler)
                            • Profit!
                            • Epic fail
                            • Memory leak


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

                            Чин-чин!
                          • Путь к Selenium 3.0

                            Selenium 2 был выпущен в июле 2011 года. Прошло уже два года, но какие это были два года! Интеграция с WebDriver API-интерфейсами, которые были важным дополнением в Selenium 2, в настоящее время являются основой для стандарта W3C, изменения, написаные при поддержке Google, Mozilla и Opera. Было сделано 34 релиза, с официальной поддержкой Java, C#, Python, Ruby и JavaScript, и благодаря нашему сообществу написаны привязки для Perl, PHP и других языков. Изменения в коде вносились 57 различными авторами и еще множество других учавствовало в интернет-форумах, предлагая помощь и советы.

                            Пока все это происходило, мир изменился, и теперь пришло время для проекта Selenium смотреть дальше в будущее. И с большим удовольствием я теперь могу сказать, что мы работаем в направлении Selenium 3.
                            Читать дальше →
                          • Первые несколько миллисекунд HTTPS соединения

                            • Перевод
                            После нескольких часов чтения обзоров, Боб с нетерпением нажал на кнопку перехода к оформлению заказа на галлон цельного молока, и…
                            Воу, что только что произошло?


                            Интересно? Прошу под кат
                          • Немножко анонимен

                              Обсуждение анонимности нужно начинать не со слов прокси/тор/впн, а с определения задачи: анонимно подключиться к чужому серверу по SSH это одно, анонимно поднять свой веб-сайт это другое, анонимно работать в инете это третье, etc. — и все эти задачи решаются по-разному. Эта статья о задаче «анонимно работать в интернете как пользователь».

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

                              Во-первых, нужно адекватно оценивать потенциального противника. Если вы хотите быть «анонимным», значит вы пытаетесь избежать возможности связывания вашей активности в интернете с вашим физическим расположением и/или настоящим именем. Обычные пользователи и так не имеют возможности вас отслеживать (технически, социальные методы когда по вашему нику на форуме легко гуглится ваш аккаунт в соц.сетях со всеми личными данными мы здесь не рассматриваем). Ваш провайдер/соседи могут иметь возможность прослушать большую часть вашего трафика, но, как правило, вы им не интересны (да, соседи могут украсть ваши пароли, но заниматься отслеживанием вашей активности или вашей деанонимизацией они не станут). Что же касается владельцев используемых вами ресурсов (веб-сайтов, прокси/vpn-серверов, etc.) то у них в распоряжении множество средств по отслеживаю вас (DNS-leaks, Flash/Java-плагины, баннерные сети, «отпечатки браузера», множество разных видов кук, etc.) плюс серьёзный коммерческий интерес к тому, чтобы надёжно вас отслеживать (для таргетирования рекламы, продажи данных, etc.). Ну а правительство и спец.службы могут получить доступ и к данным, которые на вас собирают веб-сайты, и к данным, которые собирают провайдеры. Таким образом получается, что те, кто имеют возможность и желание вас отслеживать — имеют доступ к большинству возможных каналов утечки.

                              Во-вторых, каналов утечки информации очень и очень много. И они очень разнообразны (от внезапно отключившегося VPN до получения реального IP через Flash/Java-плагины браузера или отправки серийника на свой сервер каким-нить приложением при попытке обновления). Более того, регулярно обнаруживаются (и создаются) новые. Поэтому попытка блокировать каждый из них в индивидуальном порядке, уникальными для каждого методами, просто не имеет смысла, всё-равно что-то где-то протечёт.

                              В-третьих, при «работе в интернете» используется не только браузер — большинство пользуются так же IM, торрентами, почтой, SSH, FTP, IRC… при этом часто информация передаваемая по этим каналам пересекается и позволяет их связать между собой (.torrent-файл скачанный с сайта под вашим аккаунтом грузится в torrent клиент, ссылка пришедшая в письме/IM/IRC открывается в браузере, etc.). Добавьте сюда то, что ваша ОС и приложения тоже регулярно лазят в инет по своим делам, передавая при этом кучу деанонимизирующей вас информации…

                              Из всего этого логически следует то, что пытаться добавить «немножко анонимности» путём использования браузера со встроенным Tor, или настройкой торрент-клиента на работу через SOCKS — нет смысла. Большинство вас не сможет отследить и без этих мер, а тех, кто имеет возможности и желание вас отследить эти меры не остановят (максимум — немного усложнят/замедлят их работу).
                              Читать дальше →
                            • Почему изучать TDD трудно и что с этим делать. Часть 2

                              • Перевод
                              Продолжение. Начало здесь.

                              Как все это использовать?


                              Хороший вопрос. Мы остановились на том, что TDD помогает четко определить границы текущей задачи, дает простой способ одновременной работы с мелкими деталями, относящимися к проблеме, и предоставляет быструю обратную связь с кодом, сообщая, насколько удачно получившееся решение. Именно эти факты помогут нам преодолеть трудности в изучении этой техники.
                              Читать дальше →
                              • +16
                              • 18,6k
                              • 6