Хабрахабр:
В море синем, как в аптеке, Всё имеет суть и вес - Кораблю, как человеку, Имя нужно позарез. Имя вы не зря даёте, Я скажу вам наперёд: Как вы яхту назовёте, Так она и поплывёт! Как вы яхту назовёте, Так она и поплывёт! Это песня из замечательного советского мультфильма, который был снят в разгар холодной войны. Войны, в которой капиталистическая и социалистическая система вели яростную пропагандистскую и экономическую борьбу за место под солнцем и возможность дальнейшего существования. В этой войне доблестные шпионы сражались на невидимом фронте с коварными разведчиками! Что то не так? Ах, да! Доблестными были именно разведчики, а шпионы были чертовски коварными! Игра слов или умысел пропагандистов? Эта война давно закончилась, но опыт и эффективность ее пропагандистов никуда не делась. Сегодня их знания породили SOPA ? Stop Online Piracy Act А сейчас, уважаемый читатель, я задам несколько вопросов, о которых сегодня обязан задуматься каждый мыслящий человек. 1. Кто и когда решил назвать свободное распространение информации грязным термином ?Пиратство? ? 2. Чем это грозит? 3. Что делать? Всех кто задумался приглашаю под кат
Из ранних обзоров девайсов (а именно Galaxy Nexus) на новой версии Андроида 4.0 (он же ICS, он же ?мороженный бутерброд?) выяснилось, что они не поддерживают такую замечательную фишку, как USB Mass Storage, т.е. использование телефона как флешки, без дополнительных ухищрений. Пользователи андроид-аппаратов, вплоть до версии 3.0 ?Honeycomb? (а, как оказалось, изменения произошли именно в этой версии) знают, что чтобы перекинуть файлы на телефон или с него, достаточно было просто воткнуть его в компьютер без связи с тем какая операционная система или софт на нем установлены. Логично, что новости об исчезновении этой опции в новых версиях не вызвали энтузиазма среди пользователей андроида, и даже заставили многих задуматься о наличии некой проблемы или недоработки. К счастью, один их инженеров Google Дан Морилл (Dan Morrill) в комментариях к гневному посту в reddit, прояснил ситуацию, подробно объяснив о том, что, собственно произошло, и почему. По моему это очень любопытно, так что ниже перевожу перевод его комментариев. Читать дальше →
Доброе утро, Хабр! Мы начинаем вести новую серию постов в блоге, посвящённую лучшим трюкам и приёмам в фреймворке Qt Quick, концентрируя внимание на языке QML. Весь цикл постов пишет Майкл Хассельман. Он работает в Openismus и известен разработкой виртуальной клавиатуры для Nokia N9 (MeeGo Harmattan 1.2). Посты, написанные Хассельманом, должны показать лучшие приёмы разработки в Qt Quick путём изучения того, как использовать основные концепции рационально, и как оградить себя от распространённых ошибок. Сразу стоит отметить, что базовые знания Qt Quick в целом и языка QML в частности, приветствуются. Введение в QML и небольшой урок ? отличный способ освежить или получить эти начальные знания. Введение в язык можно по-шустрому прочитать во время завтрака ? этого будет достаточно для понимания цикла статей, ? а вот урок стоит прочитать внимательно, полностью разобравшись со всеми деталями. Серия постов начнётся на следующей неделе с изучения связывания свойств и демонстрации гибкости и мощности языка. Последующие записи этой серии будут публиковаться в этом же блоге с периодичностью раз в неделю. Посты другого плана, разумеется, никуда не денутся.
В голову случайно пришла идея, которой не могу не поделиться: сервис для народного подсчёта явки на избирательных участках. Назовём это условно РосЯвка. Цель: сделать факты незаконного подмешивания заранее заполненных бюллетеней очевидными на любых выборах, а, следовательно, уменьшить вероятность фальсификации за счёт тех, кто на самом деле не пришёл. Сценарий работы: любой желающий в день выборов встаёт у входа на избирательный участок, заходит на сайт РосЯвки. Сайт видит, что это мобила, определяет участок по GPS, передаёт авторизационный токен. Перед пользователем появляется единственная кнопка: ?+1?. Что с ней делать ? понятно: нажимать каждый раз, когда кто-то заходит. Можно встать прямо у урны и считать число брошенных бюллетеней, держа телефон в кармане. Надоело стоять ? пошёл домой, вместо тебя постоит кто-то другой, со своим телефоном. По завершению сбора данных пользователь получает ссылку на собранную статистику, которой может поделиться в блоге или социальной сети от своего имени. Если набрать критическую массу знающих о проекте активных граждан, в некоторых случаях удастся получить полное покрытие всего дня голосования, плюс иметь возможность усреднять значения, если несколько человек кликало параллельно. Читать дальше →
Хочу представить описание методики защиты корпоративной почты от спама, позволяющей использовать преимущества отдельных инструментов фильтрации адресов, избегая недостатков этих же методов. Можно выделить, что эти приемы можно использовать на SMTP-прокси, закрывающем корпоративный почтовый сервер, находящийся в DMZ. Зачастую администраторы избегают некоторых эффективных приемов фильтрации, из-за недостатков того или иного подхода. Например ? фильтры DNSBL нередко дают ложные срабатывания на те узлы, которые попадают в него по ошибке ? например, в составе всего блока адресов отдельного провайдера. Часто используемый способ фильтрации на основе простого определения PTR-записи тоже имеет свойство давать сбои в случаях, когда записи A и PTR ? не совпадают, или просто возникли проблемы со службой DNS. В этой статье я хочу показать, как разбивать отдельные способы фильтрации на более мелкие и оперировать фильтрацией по совокупности данных об отправляющем узле, а не только по результату одного запрещающего правила. Данная методика существует давно, мне встречались разные реализации этой идеи разными специалистами, а эта вариация в более кратком виде была описана мною еще 5 лет назад в рассылке exim-users@exim.org (статью еще можно найти в архиве рассылки), но, несмотря на простоту реализации и наличие документации, сейчас они применяются почтовыми администраторами нечасто. На примере почты компании ?Horns'n'Hoofs? с доменом hornsnhoofs.com попробуем рассмотреть не выдуманные, а вполне работоспособные ?в бою? приемы фильтрации. Читать дальше →
Почти три месяца назад мы запустили новое интернет-издание для мужчин, аналогичный западному проекту Uncrate, в котором пробуем освещать интереснейшие новинки ? гаджеты, часы, автомобили, мотоциклы, фото- и видеотехнику, кинофильмы, игры и многое другое. Начав с альфа-версии, в которой был лишь поверхностный функционал, мы продумали дальнейший функционал, завоевали место в сердцах лояльных пользователей и, наконец, запустили освеженную версию, озаглавленную бетой. Во избежание неверной реакции хочу добавить, что мы ничего не продаем ? мы размещаем ссылки на интернет-магазины, который либо базируются в России, либо занимаются международной доставкой. Читать дальше →
Готовясь к собеседованию, я решил освежить память да и вообще поискать каверзные и малоизвестные нюансы языка Java. Выборку пяти наиболее интересных на мой взгляд моментов я вам и предлагаю. 1. Нестатические блоки инициализации. Всем, я думаю, известно, что в Java существуют статические блоки инициализации (class initializers), код которых выполняется при первой загрузке класса. class Foo { static List abc; static { abc = new LinkedList(); for (char c = 'A'; c <= 'Z'; ++c) { abc.add( c ); } } } Но существуют также и нестатические блоки инициализации (instance initializers). Они позволяют проводить инициализацию объектов вне зависимости от того, какой конструктор был вызван или, например, вести журналирование: class Bar { { System.out.println("Bar: новый экземпляр"); } } Такой метод инициализации весьма полезен для анонимных внутренних классов, которые конструкторов иметь не могут. Кроме того, вопреки ограничению синтаксиса Java, используя их, мы можем элегантно инициализировать коллекцию: Map map = new HashMap() {{ put("паук", "арахнид"); put("птица", "архозавр"); put("кит", "зверь"); }}; Очень даже мощное средство, не находите? JFrame frame = new JFrame() {{ add(new JPanel() {{ add(new JLabel("Хабрахабр?") {{ setBackground(Color.BLACK); setForeground(Color.WHITE); }}); add(new JButton("Торт!") {{ addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.out.println("Хабрахабр - торт!"); } }); }}); }}); }}; Остальные четыре пункта под катом. Читать дальше →
Идея #1: 1) Клёвый скворечник, который не портит вид города, из материала, который можно легко перекрасить под любую обстановку (примеры скворечников #1, #2 и др.) 2) Возле него есть кормушка, возможно даже поилка с подогревом, чтобы вода зимой не замерзала. 3) Скворечник находится высоко над землёй на дереве или другом высоком объекте. 4) Внизу, на уровне человека стоит приёмник денег + индикатор корма/воды у птицы. 5) Каждый, кто хочет, может положить денюжку (закинуть 5-10 руб.) и дать корм птичкам. 6) Допустим, 10 руб. хватит на 1 день еды и питья. 7) От скворечника идёт сигнал на какой-нибудь сайт, где фиксируется, сколько еды и питья осталось в данном скворечнике и показывается это на какой-нибудь Яндекс.Карте, чтобы каждый желающий смог съездить и покормить птичку. Читать дальше →

Отписаться от этой рассылки