Хабрахабр:
Доброго всем дня! Недавно я писал о кастомизации заголовка окна в Mac OS X и получил реквесты написать поподробнее о взаимодействии Qt и Cocoa. Думаю, тему можно немного развернуть и написать об интеграции приложений, написанных с помощью Qt, в среду Mac OS X. Оговорюсь, что используется в данном случае Qt for Cocoa, если возьмёте Qt for Carbon, то и работать придётся только с карбоном. Но он морально устарел, и использовать его стоит только в крайних случаях. Обычная Qt-программа имеет ряд несостыковок с Apple HIG. Точнее, может иметь, так как не всем программам нужен дополнительный функционал. Например, не любой программе надо иметь бэдж поверх значка в доке, расширять меню дока или выносить/дублировать некоторые функции в маковское меню. Но что делать, если такой функционал нужен? Если нужно отображать в доке количество уведомлений (а-ля скайп), обрабатывать клик по иконке в доке, добавлять свои пункты меню в док, да ещё и иметь нормальное меню, в общем, сделать так, чтобы программа смотрелась как родная в Mac OS? Что-то из этого можно сделать с помощью штатных или полудокументированных функций Qt, а что-то ? только с использованием Cocoa и, соответственно, Objective-C? Что же делать? Нам поможет Objective-C-plus-plus!
Организация пригласила потенциальных работников для решения визуальный задачи (код размещен на веб-сайте) Задача была также опубликована в социальных сетях, блогах и форумах. Как заявил пресс-секретарь кампании, данный тест направлен на повышение значимости GCHQ у целевой аудитории, что иначе было бы трудно сделать. ?Целевой аудиторией для этой конкретной кампании являются те, которые не могут быть привлечены традиционными методами рекламы и могут не знать, что GCHQ набирает для данной работы сотрудников?, сказал собеседник агентства. ?Их навыки могут идеально подходить для нашей работы, и все же они не могут понять, как они могли бы применить их к рабочей среде, особенно там, где они имеют возможность внести свой неоценимый вклад? Конкурс начался в тайне 3 ноября и продлится до 12 декабря. Читать дальше →
в прошлые выходные, неожиданно, поступило приглашение от организаторов встречи ТОП блогеров Рунета, представителей СМИ и IT сообщества с разработчиками Универсальной Электронной карты. Попросили пригласить с собой ведущих авторов на Хабре. Ожиданий никаких не испытывал, идти было, если честно, не охота. После долгих раздумий, решил-таки извлечь какую-то выгоду и согласиться на встречу, т.к. наконец-то появился повод пообщаться с хабравцами, да и себя показать, на других посмотреть тоже прельщало. Читать дальше →
Захотел я однажды вычислить квадратный корень с помощью нормальных алгоритмов Маркова (НАМ). Кратко о НАМ: Существует список замен одной подстроки на другую, называемых правилами Ищем с начала списка первое правило которое можем применить и применяем его для первого вхождения Если такое правило было обнаружено, то возвращаемся к предыдущему пункту и просматриваем список правил сначала Если правило было заключительным, то завершаем работу Если больше нет правил, которые мы можем применить, то завершаем работу Итак, вроде бы все просто? Однако, как писать программы на НАМ? Для себя я сделал примерно такой план: Пытаемся написать обычный алгоритм использующий только строки Следим за тем, чтобы последние замены не пересекались с первыми Переворачиваем алгоритм и записываем с конца к началу Итак, вернемся к вычислению квадратного корня. Мы будем использовать ?детский? метод (он же арифметический), который основывается на том простом факте, что квадрат числа ? это сумма нечетных чисел от 1 до 2n-1: 1 = 12 = 1 1 + 3 = 22 = 4 1 + 3 + 5 = 32 = 9 Читать дальше →
В своей книге Парадокс выбора (?The Paradox of Choise? by Barry Schwartz) Барри Шварц приходит к интересному выводу относительно осуществления выбора человеком: ?Люди выбирают не на основе того, что важнее, а основываясь на том, что легче всего оценить.? Здравый смысл подсказывает, что из всех вариантов вы должны выбрать тот, который наиболее важен для вас, хотя на самом деле люди обычно выбирают тот, который удобен для них, легок в понимании. Очень часто мы делаем это, потому что не хотим тратить время на исследования, разбираясь в вопросе для принятия обоснованного решения. Политики редко избираются на основе того, что большинство людей проводят исследования о их политических программах. Они избираются потому, что люди запомнили сообщение, которое политики распространили, и потому, что они слышали об этом политике раньше. Читать дальше →
Давным-давно, когда небо было голубым, а трава зеленой АТС были аналоговыми, работали они очень просто: нужно связать двух абонентов ? нет проблем, взяли замкнули линию первого на линию второго, и все дела. Вариант, конечно, очень упрощенный, но в общих чертах так все и было. Примечательно в данном случае то, что между абонентами постоянно поддерживалась линия связи. Даже если они оба молчали, были заняты не только те линии, что ведут от абонентов к их АТС, но и линии между самими АТС. Читать дальше →
Возможно, многие из вас задавались вопросами вроде ?А что будет, если кто-то подложит к моему приложению неправильную версию библиотеки??. Вопрос хороший, а ответ на него и некоторые другие вы найдёте в этом топике. Для затравки задачка: пусть есть два интерфейса и класс, реализующий один из них: public interface A { //... } public interface B { //... } public class C implements A { //... } А также класс, в котором есть метод foo, перегруженный для A и B. Этот метод вызывают от экземпляра класса C: public class CompatibilityChecker { public String foo(A a) { return "A"; } public String foo(B b) { return "B"; } public static void main(String[] args) { CompatibilityChecker checker = new CompatibilityChecker(); System.out.println(checker.foo(new C())); } } Вполне очевидно, что выведется ?A?. Не менее очевидно, что если сказать, что C implements A, B, то получится ошибка компиляции (тем, кому последнее не очевидно, могу порекомендовать почитать про то, как происходит выбор методов. Например, в стандарте в разделе 15.12.2 или в более просто описывающих местах). Но вот что произойдёт, если мы перекомпилируем только C.java, а потом запустим CompatibilityChecker из уже имеющегося класс-файла, является уже более сложным вопросом. Заинтересованы? Прошу под кат! Читать дальше →
В моём предыдущем топике я старался показать, как метод Viola Jones работает, с помощью каких технологий и внутренних алгоритмов. В данном посте, дабы не прерывать цепочку, будет также много теории, будет показано за счет чего можно улучшить и до того прекрасный метод. Если здесь описать еще и программную реализацию, то будет огромное полотно, которое читать будет очень неудобно, и смотреться это никак не будет ? решено разбить объем информации на два отдельных поста. Ниже ? теория, мало картинок, но много полезного. Заинтересованных прошу под кат

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