RSS
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 41
[>] Опыт использования MVVM в реальных проектах
habra.14
habrabot(difrex,1) — All
2014-11-25 16:30:02


Мы продолжаем выкладывать видео выступлений с нашей первой конференции мобильных разработчиков [\#MBLTDev][1]. Следующий доклад — от iOS-разработчика компании «Одноклассники» Юрия Буянова «Опыт использования MVVM в реальных проектах».




[Презентация. ][2] Доклад был посвящён практическим аспектам разработки iOS-приложений с использованием архитектуры MVVM. В частности рассматривались способы осуществления навигации и реализации списков в рамках такой архитектуры. Для слушателей, незнакомых c предметом, в начале доклада было сделано небольшое введение в MVVM и ReactiveCocoa. Также были показаны слайды с белочкой, совушкой и единорогом. [Читать дальше →][3]

[1]: http://mbltdev.ru
[2]: http://www.slideshare.net/elegion/mbltdev-mvvm
[3]: http://habrahabr.ru/post/244065/#habracut

[>] Обходим защиту iOS клиента Dropbox
habra.14
habrabot(difrex,1) — All
2014-11-25 18:30:02


![][1] Что в первую очередь сделает iOS разработчик, если перед ним встанет задача спрятать пользовательские данные от любопытных глаз? Конечно же, встроит экран парольной защиты. Особо хитрый разработчик даже не будет хранить установленный пользователем пароль в _NSUserDefaults_, а аккуратно спрячет его в связку ключей — в этом случае приложение в глазах как его, так и заказчика, сразу же перемещается в разряд «сверхзащищенных». Мы не будем углубляться в описание опасностей хранения ключа в открытом доступе — ведь есть гораздо более интересный способ обхода такой защиты. [Читать дальше →][2]

[1]: //habrastorage.org/files/23a/6a2/b10/23a6a2b1037742d884a9fd8cbcbb283e.png
[2]: http://habrahabr.ru/post/244143/#habracut

[>] Многозадачность в ядре Linux: workqueue
habra.14
habrabot(difrex,1) — All
2014-11-25 19:00:03


Продолжаем тему многопоточности в ядре Linux. В прошлый раз я рассказывала про прерывания, их обработку и tasklet’ы, и так как изначально предполагалось, что это будет одна статья, в своем рассказе о workqueue я буду ссылаться на tasklet’ы, считая, что читатель уже с ними знаком. Как и в прошлый раз, я постараюсь сделать мой рассказ максимально подробным и детальным. Статьи цикла:

1. [Многозадачность в ядре Linux: прерывания и tasklet’ы][1]
2. **Многозадачность в ядре Linux: workqueue**
3. Protothread и кооперативная многозадачность





[Читать дальше →][2]

[1]: http://habrahabr.ru/post/244071/
[2]: http://habrahabr.ru/post/244155/#habracut

[>] [Перевод] Распознаем штрихкоды на изображениях с помощью Python и OpenCV
habra.14
habrabot(difrex,1) — All
2014-11-25 20:00:04


_От переводчика: мы в компании [Энтерра][1] очень любим алгоритмы компьютерного зрения. Работаем чаще всего с OpenCv. Время от времени нам пишут разные разработчики с вопросами: «А как лучше начать работать с OpenCv?» или «Какую интересную задачу можно просто решить с помощью OpenCv?» В связи с чем мы решили перевести очень хорошую статью, которая будет полезна всем, кто интересуется компьютерным зрением._ ![][2] Черная Пятница близко. Толпы злых покупателей. Рой одинаковых теток среднего возраста, готовых сожрать практически всё, что угодно, в ближайшем супермаркете — главное, что со скидкой 75%. Они выстроятся в очереди перед дверьми магазинов в полночь Дня благодарения. Они будут ломиться внутрь, стучать в запертые двери кулаками и головами, пока не сплющат друг друга и не разобьют руки в кровь, став похожими на зомби из «28 дней спустя». Но вместо человеческой плоти, они жаждут удовлетворить инстинкт покупателя. Их боевые кличи о скидках и распродажах достигают небес. А их громовая поступь способна привести к землетрясению на Великой Равнине. Естественно, от СМИ помощи не жди — они будут смаковать каждую подробность. От обмороженных семейств, ночевавших в палатке на морозе, до старой леди, растоптанной охотниками за скидкой в момент, когда открылись двери. Что-то похожее случилось с галлимимусом в «Парке Юрского периода». А она просто хотела купить Halo для девятилетнего внука Тимми, чьи родители забыли это сделать в прошлом году. В Wal-Mart. Во время Черной Пятницы. И я обязан спросить: весь этот хаос и бедлам стоят того? **Чёрт возьми, нет!** Любая покупка, которую я совершу в эту Черную Пятницу, будет сделана совершенно безопасно с помощью ноутбука. Но если вы решите выйти в реальный мир и вступить в схватку с охотниками за наживой, **вам в первую очередь понадобится загрузить код из [оригинального поста][3]**. Просто представьте, как глупо вы будете выглядеть, стоя в очереди в ожидании свободной кассы – только для того, чтобы после сканирования штрихкода последнего сезона «Игры Престолов» выяснить, что в Target его можно купить на 5 долларов дешевле? Собственно, далее я покажу, как можно обнаружить штрихкод на изображении, используя только Python и OpenCV. [Читать дальше →][4]

[1]: http://www.enterra-inc.com/
[2]: http://habrastorage.org/files/c3e/8ef/0e4/c3e8ef0e415d46cd81d8e4f6c29b33c1.jpg
[3]: http://www.pyimagesearch.com/2014/11/24/detecting-barcodes-images-python-opencv/
[4]: http://habrahabr.ru/post/244163/#habracut

[>] Атака на банкомат с помощью Raspberry Pi
habra.14
habrabot(difrex,1) — All
2014-11-25 20:00:04


[![image][1]][2] Что только не делают с банкоматами: их выдирают из стены, привязав тросом к автомобилю, сверлят, взрывают и режут ([иной раз][3] в здании Госдумы). По [статистике EAST][4], преступники стали реже использовать скимминг, предпочитая траппинг и физические диверсии. Немало хлопот специалистам по безопасности доставляет и еще один новый тренд — вирусные атаки на банкоматы. Тут и Trojan.Skimer, и Backdoor.Ploutus, и совсем свежий зловред Tyupkin, и другие «приложения», известные и не очень. Малварь загружается в компьютер банкомата, как правило с внешних носителей, и используется для несанкционированной выдачи денег или перехвата карточных данных. Еще один способ атаки описали эксперты Positive Technologies Ольга Кочетова и Алексей Осипов на конференции по компьютерной безопасности [Black Hat Europe 2014][5], проходившей в октябре в Амстердаме. [Читать дальше →][6]

[1]: http://habrastorage.org/getpro/habr/post_images/52b/b27/198/52bb27198d188a9ebed80df37be7ec83.jpg
[2]: http://habrahabr.ru/company/pt/blog/244159/
[3]: http://www.interfax.ru/business/403416
[4]: http://www.plusworld.ru/daily/obem-bankomatnogo-skimminga-v-evrope-dostig-shestiletnego-minimuma/
[5]: https://www.blackhat.com/eu-14/
[6]: http://habrahabr.ru/post/244159/#habracut

[>] Злоумышленники используют CVE-2014-6332
habra.14
habrabot(difrex,1) — All
2014-11-25 21:00:04


Недавно мы [писали][1] про новую опасную уязвимость CVE-2014-6332 в Windows, которая присутствовала (MS14-064) в библиотеке OleAut32.dll, а точнее, в функции _OleAut32!SafeArrayRedim_. Эта функция используется движком VBScript (vbscript.dll) для run-time изменения размера массива в формате SAFEARRAY. В самой _SafeArrayRedim_ содержалась уязвимость, которая позволяла внутри функции модифицировать поле размера массива, а потом возвращать результат неуспешности операции, что приводило к увеличению размера буфера с точки зрения самой структуры. Подробнее см. [здесь][2]. ![][3] В силу того, что эксплойт для этой уязвимости (Windows OLE Automation Array Remote Code Execution Vulnerability), фактически, может оперировать памятью напрямую, из-за порчи структуры заголовка буфера функцией ОС, ему не нужно прибегать к операциям срабатывания уязвимости типа _use-after-free_, вся эксплуатация сводится к последовательному исполнению нескольких функций, которые помогают запустить процесс из функции VBScript в обход DEP & ASLR. [Читать дальше →][4]

[1]: http://habrahabr.ru/company/eset/blog/243281/
[2]: http://securityintelligence.com/ibm-x-force-researcher-finds-significant-vulnerability-in-microsoft-windows#.VHRdClWsWPU
[3]: //habrastorage.org/files/735/b53/311/735b533113b246389d159fad77d1c8de.jpeg
[4]: http://habrahabr.ru/post/244115/#habracut

[>] [Из песочницы] Как я гонял Балду на Visual Basic for Applications для MS Access
habra.14
habrabot(difrex,1) — All
2014-11-26 13:30:04


Не помню, что меня так заело. Наверно, кто-нибудь обыграл меня в Балду с разгромным счетом (ее онлайн-вариант есть на Одноклассниках, Mail.ru и в куче других мест). Короче, я принял вызов. В прошлый раз так было с программкой для разгадки СУДОКУ. Но там все оказалось заметно проще. ![image][1] _Балда, она же Волшебный Квадрат. Игроки добавляют на каждом шагу по одной букве, чтобы получилось осмысленное слово как можно большей длины._ [Читать дальше →][2]

[1]: http://habrastorage.org/files/0ba/1a0/9f7/0ba1a09f7281454dafcc2e1efa955bb9.png
[2]: http://habrahabr.ru/post/244217/#habracut

[>] Решетчатое наследование
habra.14
habrabot(difrex,1) — All
2014-11-26 13:30:04


Наследование, при кажущейся простоте, часто приводит к сложным, сопротивляющимся изменениям структурам. Иерархии классов растут как самый настоящий лес. Целью наследование является привязка кода (набора методов) к минимальному набору свойств сущности (как правило — объекта), которые он обеспечивает и которые ему требуются. Это упрощает повторное использование, тестирование и анализ кода. Но наборы свойств со временем становятся очень большими, начинают пересекаться нетривиальным образом. И в структуре классов появляются миксины и прочее множественное наследование. Внести изменения в глубине иерархии становится проблематично, приходится думать заранее о «внедрении зависимостей», разрабатывать и использовать сложные инструменты рефакторинга. Возможно ли всего этого избежать? Стоит попытаться — пусть методы будут привязаны к множеству характерных свойств объекта (тегов), а иерархия наследования выстраивается автоматически по вложенности этих множеств. Пусть мы разрабатывает иерархию для игровых персонажей. Часть кода будет общая для всех персонажей — она привязана к пустому набору свойств. Код, отвечающий за их отображение будет представлен в виде вариантов для OpenGL и DirectX разных версий. Что-то будет зависеть от расы персонажа, что-то от наличия и вида магических способностей и тп. Теги персонажа первичны. Они перечисляются явно, а не наследуются. А реализация наследуется в зависимости от набора тегов (по вложенности). Таким образом умение стрелять из ПЗРК не окажется у кенгуру, потому что его унаследовали от пехотинца. Идея такого подхода была предложена Дмитрием Кимом. Автор не стал ее воплощать в код, я попробую исправить это упущение. Реализация такого подхода на Clojure, как обычно, на [github][1]. [Читать дальше →][2]

[1]: https://github.com/potan/grid-inheritance.clj
[2]: http://habrahabr.ru/post/242649/#habracut

[>] Как найти любовь или приключения с помощью crate.io и kibana
habra.14
habrabot(difrex,1) — All
2014-11-26 16:00:03


Про результативность, качество и КПД сайтов знакомств можно спорить, можно искать 101 повод чем лучше в клубе/баре/\_дополнить\_варианты\_/парке искать знакомства. То что еще лет десять-пятнадцать назад вызывало смех — теперь мейнстрим. Так не проще ли попытаться использовать еще одну возможность для поиска и общения в интернет с переходом к знакомству в жизни… ![][1] Гиковский вариант технологии поиска, скринкаст приложения под катом. В конце статьи ссылка на архив с работающим приложением под Apache License v2.0 и небольшим набором данных для примера. [Читать дальше →][2]

[1]: //habrastorage.org/files/532/4ca/109/5324ca10992d452cb3a656f12fe25bc4.png
[2]: http://habrahabr.ru/post/244193/#habracut

[>] [Из песочницы] Компьютер из маленьких фей
habra.14
habrabot(difrex,1) — All
2014-11-26 16:00:03


(Вычислительная машина с универсальной архитектурой) ![][1] _Сказка ложь, да в ней намек…_ • Найти Декарта; • В стране Лилипутов; • Бактериологическая почта; • Арифмометр в юбке; • Компьютер из маленьких фей.

#### Найти Декарта

До нас дошла история, что известный философ в поисках свободного времени для размышлений и способа решения бытовых трудностей записался в армию. Там, между переходами, он, бывало, забирался в слегка протопленную голландскую печь, где, наконец, мог найти уединение со своими мыслями. Как и многие математики, Декарт питал взаимную слабость к общению с юными особами, одной из которых, чье имя слишком известно, чтобы о нем здесь упоминать, как-то, случайно проезжая мимо лагеря, захотелось повидаться со своим другом-философом. Но как его отыскать? Палаток было больше тысячи – за вечер все не обойдешь, да и титул не позволял. Надеюсь, читатель простит мне некоторые неточности в знании военного уклада, но пусть армия состояла из десяти полков, каждый полк из десяти батальонов, а в каждом батальоне было десять рот по десять человек и ротным во главе. [Читать дальше →][2]

[1]: //habrastorage.org/files/780/6dd/a6c/7806dda6cc6842d599c5c78e559f835f.png
[2]: http://habrahabr.ru/post/244221/#habracut

[>] Facebook обновил пользовательское соглашение и собирается передавать данные третьим лицам
habra.14
habrabot(difrex,1) — All
2014-11-26 18:30:02


Если вы пользуетесь Facebook, вы наверняка уже видели сообщение о том, что с 1 января в силу вступает новое пользовательское соглашение. Мы уже привыкли к таким обновлениям: то Гугл, то MS, то Apple (прямо в айфоне) выкатывают новые «terms» и просят поставить галочку. И мы, не задумываясь, ставим. А зря! В этом обновлении много интересного: [Подробности][1]

[1]: http://habrahabr.ru/post/244255/#habracut

[>] [Перевод] Исследование в Mathematica: Бенедикт Камбербэтч успешно пародирует других актеров, но может ли он одурачить компьютер?
habra.14
habrabot(difrex,1) — All
2014-11-26 23:00:03


_Перевод поста Риты Крук (Rita Crook) "[Benedict Cumberbatch Can Charm Humans, but Can He Fool a Computer?][1]"._ Вышедший на этой неделе, весьма ожидаемый, в прокат фильм "[Игра в имитацию][2]" (_The Imitation Game_) рассказывает о жизни Алана Тьюринга (100-лет со дня рождения которого совпали с 22-м днем рождения системы _Mathematica_ — подробнее см. пост Стивена Вольфрама [Happy Birthday, Alan Turing][3]). Центральной темой фильма являются машины Тьюринга. Интересно, что в 2007 году компания Wolfram Research объявила [приз][4] за доказательство универсальности 2,3 машины Тьюринга. Конечно же, [промоушн-видео][5] Бенедикта Камбербэтча, в котором он имитирует голоса и поведение других известных актеров многим понравилось. Но мне захотелось выяснить, сможет ли функционал _Mathematica_ из области [Machine Learning][6] распознать его голос, или же он сможет «одурачить» и компьютер тоже. [Читать дальше →][7]

[1]: http://blog.wolfram.com/2014/11/26/benedict-cumberbatch-can-charm-humans-but-can-he-fool-a-computer/
[2]: http://www.kinopoisk.ru/film/635772/
[3]: http://blog.wolfram.com/2010/06/23/happy-birthday-alan-turing/
[4]: http://blog.wolfram.com/2007/10/24/the-prize-is-won-the-simplest-universal-turing-machine-is-proved/
[5]: https://www.youtube.com/watch?v=CwpQp-pDS8I
[6]: http://www.wolfram.com/mathematica/new-in-10/highly-automated-machine-learning/
[7]: http://habrahabr.ru/post/244293/#habracut

[>] Программируем арт: openFrameworks — первый контакт
habra.14
habrabot(difrex,1) — All
2014-11-27 17:30:03


![][1] Когда вы последний раз программировали на C++? Может быть это ваша каждодневная работа, а мой последний (до вчерашнего дня) проект на С++ был в далеком 2000 году — дипломный проект на базе Visual Studio 4.2 (хорошая, кстати, система была), и с тех пор перешёл в веб-разработку — скриптовые языки. То есть сейчас я — начинающий на C++, но это не помешало мне за пару часов развернуть инфраструктуру, сделать и собрать мультимедийное приложение на C++, которое визуализирует музыку с разными эффектами. И в этом мне помогли:

* открытый фреймворк для создания интерактивных приложений — openFrameworks
* бесплатное IDE Code::Blocks

Что получилось — можно посмотреть в спойлере, ниже. А начиналось всё так — после очередного прослушивания музыки от одного композитора из Самары, я подумал — было бы интересно попробовать сделать визуализацию музыки, и обратился к Денису Перевалову (кто не первый год занимается созданием разнообразных интерактивных арт/перформанс систем) — он мне ответил, что это делается без проблем на базе openFrameworks и что в примерах к его книге (а он автор книги по openFramework), есть реализация такой задачи. То есть мне нужно было _всего лишь_ — установить фреймворк, доработать и собрать пример на С++… Об этом процессе — установке, настройки, и кратком описании openFrameworks и будет эта статья. **openFrameworks** — это система с помощью которой можно запрограммировать интерактивное мультимедийное приложение, то есть арт, [перформансы][2] и т.п., она бесплатная, открытая и кроссплатформенная система (linux, mac, win), и так же есть версии для ARM (к примеру для RPi), и сборки для iPhone и Android. Кстати на КДПВ — одна из [инсталляций][3] на базе openFrameworks (Семь Видеогидов. выставлено на ВДНХ в экспозиции Политехнического музея. Москва, 2014).








[Читать дальше →][4]

[1]: //habrastorage.org/files/6c4/40b/1e0/6c440b1e0ee1438f935943c463a12404.jpg
[2]: http://habrahabr.ru/post/217565/
[3]: http://kuflex.com/Museum-Guides
[4]: http://habrahabr.ru/post/244265/#habracut

[>] SSLR: Screen Space Local Reflections в AAA-играх
habra.14
habrabot(difrex,1) — All
2014-11-27 19:00:02






Привет, друг! В этот раз я опять подниму вопрос о графике в _ААА_-играх. Я уже разобрал методику **HDRR** (не путать с HDRI) [тут][1] и чуть-чуть поговорил о коррекции цвета. Сегодня я расскажу, что такое **SSLR** (так же известная как SSPR, SSR): _Screen Space Local Reflections_. Кому интересно — под кат. [Читать дальше →][2]

[1]: http://habrahabr.ru/post/238425/
[2]: http://habrahabr.ru/post/244367/#habracut

[>] [Из песочницы] Elementary OS. Наводим чистоту и порядок в Applications
habra.14
habrabot(difrex,1) — All
2014-11-28 00:30:08


Здравствуйте! Когда впервые зашла на хабр, поняла, что я дома. Home, Sweet Home.… Всё не решалась написать. Вот, решилась! Пишу. Хорошо иль плохо, но пишу. ![][1] Меня всегда удручал беспорядок в [… всюду, не люблю беспорядок… ] в меню приложений Mandriva, Suse, Ubuntu, Elementary OS (Решила перечислить их в порядке использования. Пишу и ностальгирую). Конечно, ситуация одинакова для поголовного большинства дистрибутивов, так как информацию о том, как и где показывать программу прописывают сами создатели этих программ в \*.desktop файлах. И многих из них похоже не волнует тот беспорядок, который происходит от такого отношения к логике построения навигации. Решила я это исправить. Давно давно давно, страшно давно. И через время, давно… таки исправила. А вам решила и собралась показать вообще только сейчас. [Подробненько][2]

[1]: //habrastorage.org/files/d36/ad6/67a/d36ad667a52444bca7ce9048bd6d4aaf.jpg
[2]: http://habrahabr.ru/post/242751/#habracut

[>] Креативное программирование: openFrameworks — установка и пример визуализации музыки
habra.14
habrabot(difrex,1) — All
2014-11-28 05:00:02


![][1] Когда вы последний раз программировали на C++? Может быть это ваша каждодневная работа, а мой последний (до вчерашнего дня) проект на С++ был в далеком 2000 году — дипломный проект на базе Visual Studio 4.2 (хорошая, кстати, система была), и с тех пор перешёл в веб-разработку — скриптовые языки. То есть сейчас я — начинающий на C++, но это не помешало мне за пару часов развернуть инфраструктуру, сделать и собрать мультимедийное приложение на C++, которое визуализирует музыку с разными эффектами. И в этом мне помогли:

* открытый фреймворк для создания интерактивных приложений — openFrameworks
* бесплатное IDE Code::Blocks










А начиналось всё так — после очередного прослушивания музыки от одного композитора из Самары, я подумал — было бы интересно попробовать сделать визуализацию музыки, и обратился к Денису Перевалову (кто не первый год занимается созданием разнообразных интерактивных арт/перформанс систем) — он мне ответил, что это делается без проблем на базе openFrameworks и что в примерах к его книге (а он автор книги по openFrameworks), есть реализация такой задачи. То есть мне нужно было _всего лишь_ — установить фреймворк, доработать и собрать пример на С++… Об этом процессе — установке, настройки, и кратком описании openFrameworks и будет эта статья. **openFrameworks** — это система с помощью которой можно запрограммировать интерактивное мультимедийное приложение, то есть арт, [перформансы][2] и т.п., она бесплатная, открытая и кроссплатформенная система (linux, mac, win), и так же есть версии для ARM (к примеру для RPi), и сборки для iPhone и Android. Кстати на КДПВ — одна из [инсталляций][3] на базе openFrameworks (Семь Видеогидов. выставлено на ВДНХ в экспозиции Политехнического музея. Москва, 2014). [Читать дальше →][4]

[1]: //habrastorage.org/files/6c4/40b/1e0/6c440b1e0ee1438f935943c463a12404.jpg
[2]: http://habrahabr.ru/post/217565/
[3]: http://kuflex.com/Museum-Guides
[4]: http://habrahabr.ru/post/244265/#habracut

[>] Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д
habra.14
habrabot(difrex,1) — All
2014-11-28 08:30:03


![image][1] Всем привет, у меня таки возникло непреодолимое желание поделиться с миром своим достижением. Достижением является танк, который рулится по WiFi с геймпада, транслирует на пульт видео в реальном времени, передает с пульта и на пульт звук, а также имеет пушку с лазерным прицелом, из которой можно в кого-нибудь пострелять. Этот пост будет первым тестовым, дабы понять, интересно ли такое кому-нибудь, кроме меня, в нем опишу общее строение, используемые технологии и устройства. [Читать дальше →][2]

[1]: http://habrastorage.org/files/a3a/a1f/b87/a3aa1fb871f14c6cb866f1c81f5949e9.jpg
[2]: http://habrahabr.ru/post/244407/#habracut

[>] [Перевод] Выразительный JavaScript: Проект: Игра-платформер
habra.14
habrabot(difrex,1) — All
2014-11-28 12:00:03




#### Содержание



* [Введение][1]
* [Величины, типы и операторы][2]
* [Структура программ][3]
* [Функции][4]
* [Структуры данных: объекты и массивы][5]
* [Функции высшего порядка][6]
* [Тайная жизнь объектов][7]
* [Проект: электронная жизнь][8]
* [Поиск и обработка ошибок][9]
* [Регулярные выражения][10]
* [Модули][11]
* [Проект: язык программирования][12]
* [JavaScript и браузер][13]
* [Document Object Model][14]
* [Обработка событий][15]
* [Проект: игра-платформер][16]
* Рисуем на Canvas
* HTTP
* Формы и поля ввода
* Проект: Paint
* Node.js
* Проект: веб-сайт по обмену умениями
* [Песочница для кода][17]

_Вся наша жизнь – игра. Ийен Бэнкс, «Игрок»_ Впервые я увлёкся компьютерами, как и большинство детей, через компьютерные игры. Меня затянуло во вселенную симулированных миров, которыми можно было управлять, и в которых рассказывались истории – мне кажется больше потому, что в них был дан простор моему воображению, чем из-за реальных возможностей, которые они предоставляли. Никому бы не пожелал карьеру игрового программиста. Как и в музыкальной индустрии, несоответствие между количеством молодых людей, желающих попасть туда и реальным спросом на них, создаёт нездоровую среду. Но написание игр для развлечения – это очень здорово. В этой главе мы изучим реализацию простого платформера. В платформерах (или «прыгай и беги») от игрока требуется двигать фигурку по (обычно) двумерному миру, который мы видим сбоку, и часто перепрыгивать через разные штуки. [Читать дальше →][18]

[1]: http://habrahabr.ru/post/240219/
[2]: http://habrahabr.ru/post/240223/
[3]: http://habrahabr.ru/post/240225/
[4]: http://habrahabr.ru/post/240349/
[5]: http://habrahabr.ru/post/240813/
[6]: http://habrahabr.ru/post/241155/
[7]: http://habrahabr.ru/post/241587/
[8]: http://habrahabr.ru/post/241776/
[9]: http://habrahabr.ru/post/242609/
[10]: http://habrahabr.ru/post/242695/
[11]: http://habrahabr.ru/post/243273/
[12]: http://habrahabr.ru/post/243277/
[13]: http://habrahabr.ru/post/243311/
[14]: http://habrahabr.ru/post/243815/
[15]: http://habrahabr.ru/post/244041/
[16]: http://habrahabr.ru/post/244405/
[17]: http://eloquentjavascript.net/code
[18]: http://habrahabr.ru/post/244405/#habracut

[>] IPv6 под прицелом
habra.14
habrabot(difrex,1) — All
2014-11-28 12:00:03


![][1] Казалось бы, зачем сейчас вообще вспоминать про IPv6? Ведь несмотря на то, что последние блоки IPv4-адресов были розданы региональным регистраторам, интернет работает без каких-либо изменений. Дело в том, что IPv6 впервые появился в 1995 году, а полностью его заголовок описали в RFC в 1998 году. Почему это важно? Да по той причине, что разрабатывался он без учета угроз, с той же доверительной схемой, что и IPv4. И в процессе разработки стояли задачи сделать более быстрый протокол и с большим количеством адресов, а не более безопасный и защищенный. [Подробности][2]

[1]: //habrastorage.org/files/0bf/a14/ef5/0bfa14ef5a0d4731bee42c2e80f78614.jpg
[2]: http://habrahabr.ru/post/244383/#habracut

[>] [Перевод] Пальчиковые деревья (часть 2. Операции)
habra.14
habrabot(difrex,1) — All
2014-11-28 15:00:03


Статья будет состоять из 3х частей: [Пальчиковые деревья (часть 1. Представление)][1] Пальчиковые деревья (часть 2. Операции) Пальчиковые деревья (часть 3. Применение)

#### Пальчиковые Деревья как Последовательности

![][2] _В первой части статьи мы рассмотрели пальчиковые деревья как перспективную структуру в качестве немутабельных последовательностей. И научились создавать пальчиковые деревья. Хочу заметить, научились создавать так, что стало принципиально невозможно построить неправильные деревья. Теперь наша задача научится работать с пальчиковыми деревьями как с последовательностями: научится присоединять к началу и концу последовательности, научится легко отделять от обоих концов последовательности, а также соединять несколько деревьев в одно._ [Читать дальше →][3]

[1]: http://habrahabr.ru/post/240783/
[2]: //habrastorage.org/files/2d6/b7a/e92/2d6b7ae9214d47f6b9eac851893f3b25.png
[3]: http://habrahabr.ru/post/243205/#habracut

[>] Ресурсы для изучения Wolfram Language (Mathematica) на русском языке
habra.14
habrabot(difrex,1) — All
2014-11-28 17:00:03






На протяжении довольно долгого времени я и мои коллеги, участники [Русскоязычной поддержки Wolfram Mathematica][1], занимались разработкой и коллекционированием полностью бесплатных и качественных ресурсов на русском языке, которые позволили бы любому желающему научиться программировать на языке Wolfram Language (Mathematica) самостоятельно. Думаю, что пришла пора рассказать об этом на Хабрахабре, создав статью о разрабатываемой коллекции ресурсов, которая будет постоянно расширяться и пополняться, и будет служить, по сути, русскоязычным аналогом [страницы][2] "_Where can I find examples of good Mathematica programming practice?_" на сайте Mathematica at StackExchange.com. [Читать дальше →][3]

[1]: http://vk.com/wolframmathematica
[2]: http://mathematica.stackexchange.com/questions/18/where-can-i-find-examples-of-good-mathematica-programming-practice
[3]: http://habrahabr.ru/post/244451/#habracut

[>] 84% сайтов на WordPress могут быть взломаны: что дальше?
habra.14
habrabot(difrex,1) — All
2014-11-28 17:00:03


[![image][1]][2] Если вы часто читаете IT-новости, то наверняка уже устали от страшилок об очередной уязвимости, которая нашлась в популярной OS / СУБД / CMS / кофеварке. Поэтому данный пост посвящен не самой уязвимости, а наблюдению за тем, как люди регируют на неё. Однако сначала — несколько слов о «виновнице торжества». Критическая уязвимость популярном блоговом движке WordPress была найдена в сентябре финскими специалистами из компании с весёлым названием [Klikki Oy][3]. Используя эту дыру, хакер может вести в качестве комментария к блогу специальный код, который будет выполнен в браузере администратора сайта при чтении комментариев. Атака позволяет скрытно перехватить управление сайтом и делать разные неприятные вещи под админским доступом. [Читать дальше →][4]

[1]: http://habrastorage.org/getpro/habr/post_images/f3c/a34/5cc/f3ca345cc7ed3cf2bb0e3396a0596528.png
[2]: http://habrahabr.ru/company/pt/blog/244447/
[3]: http://klikki.fi/adv/wordpress_press.html
[4]: http://habrahabr.ru/post/244447/#habracut

[>] Поднятие chroot-«виртуалки» с ubuntu для сборки пакетов
habra.14
habrabot(difrex,1) — All
2014-11-28 17:30:03


Приветствую. На днях надоело для сборки пакетов ходить по ssh на разные машинки и решил поднять парочку у себя. Расскажу о граблях, которые собрал по дороге и о костылях, которые смастерил. Все действия выполнялись на Arch linux, но действия по настройке chroot-виртуалок и schroot должны быть очень схожими. Всё, что описано далее, разумеется, разбросано по всей сети. Но проб и ошибок по пути много. [Прошу под кат][1]

[1]: http://habrahabr.ru/post/244373/#habracut

[>] [Из песочницы] Код, которого нет
habra.14
habrabot(difrex,1) — All
2014-11-28 18:30:02


Привет, хабравчане! Около года назад Хабр захлестнула волна постов на тему "[%string% в N строчек на JavaScript][1]". Уже и не вспомню, чем все закончилось, но началось все с [Excel в 30 строк][2]. Следом появилось много и других интересных вариаций на эту тему, даже [игра в ноль строк на JS][3], но это уже совсем другая история… Как я ни старался придумать что-то еще более компактное — ничего не выходило. Тогда было принято решение посмотреть на проблему под другим углом. Примерно в этот момент в голове промелькнул вопрос: а можно ли «сколлапсировать» код так, чтобы его не было _вообще_? Я попробовал добавить немного магии и вот что у меня получилось. ![image][4] [Сим салабим!][5]

[1]: https://www.google.com/search?q=habrahabr+javascript+%D1%81%D1%82%D1%80%D0%BE%D0%BA&oq=habrahabr+javascript+%D1%81%D1%82%D1%80%D0%BE%D0%BA&aqs=chrome..69i57j69i59j69i60j69i64.463j0j7&sourceid=chrome&es_sm=93&ie=UTF-8
[2]: http://habrahabr.ru/post/202304/
[3]: http://habrahabr.ru/post/203048/
[4]: http://habrastorage.org/files/93e/471/415/93e471415bf243a1b8163255f2992b0e.jpg
[5]: http://habrahabr.ru/post/243351/#habracut

[>] Sync, share & secure – три в одном с помощью Acronis Access 7
habra.14
habrabot(difrex,1) — All
2014-11-28 20:30:04


Всё, что связано с корпоративной безопасностью, обычно противоречит удобству использования. Либо пользователи недовольны сложными схемами по защите контента, либо ИТ-служба – тем, что пользователи вот-вот разнесут важные данные по всему интернету через почтовые сервисы и Dropbox. Громкие утечки данных у многих на слуху. Про пикантные фотографии знаменитостей, украденные из iCloud, слышал каждый, но, когда речь идет о серьезном бизнес-контенте, в ходу более изощренные схемы. Так, недавно Касперский [обнаружил][1] случай, когда хакеры очень избирательно охотились за топ-менеджерами крупных компаний: заражали их девайсы через внешне безобидные обновления, которые загружались при подключении к wi-fi в дорогих отелях. ![][2] Поскольку мы в Acronis заняты безопасностью данных, то у нас уже довольно давно есть продукт, позволяющий «убить сразу двух (и даже трёх) зайцев»: [Читать дальше →][3]

[1]: http://www.theguardian.com/technology/2014/nov/10/hotel-wi-fi-infected-business-travellers-asia-kaspersky
[2]: //habrastorage.org/files/63f/6be/a3c/63f6bea3cd10434ab07c9821297905af.png
[3]: http://habrahabr.ru/post/244449/#habracut

[>] [Из песочницы] RTKLib – Сантиметровая точность GPS/ГЛОНАСС в пост-обработке
habra.14
habrabot(difrex,1) — All
2014-11-28 21:00:03







Здравствуйте! К сожалению, я не нашел на Хабре упоминаний о замечательной библиотеке для обработки сырых измерений – RTKLib. В связи с этим рискнул написать немного о том, как с её помощью можно получить сантиметры в относительной навигации. Цель простая – обратить внимание общественности. Сам я только недавно начал работать с этой библиотекой и был поражен её возможностями для простых смертных. В интернете достаточно много информации о практических примерах, но хотелось попробовать самому — и вот результат. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/244475/#habracut

[>] [Из песочницы] Стэнфордские курсы «Разработка iOS приложений» — неавторизованный конспект лекций на русском языке и 2015?
habra.14
habrabot(difrex,1) — All
2014-11-29 01:30:04


![][1] Я разместила иконки курсов Стэнфордского университета по разработке приложений на iOS в обратном хронологическом порядке. На первом месте стоит иконка Swift — нового языка программирования для создания приложений на iOS, объявленного на WWDC 2014. Его официальный релиз состоялся осенью 2014 года. Кроме Swift реализована новая версия iOS — iOS 8. Уже известно, что Стэнфордский университет [запустит зимой 2015 года новый курс CS193P][2] с неизвестным пока названием (может быть будет что-то вроде «Developing iOS 8 Apps for iPhone and iPad»). Лектор тот же — профессор Paul Hegarty. Кроме того, [Apple упоминала о включении Swift в учебные программы Стэнфорда][3], California Polytechnic Institute и других. Поэтому есть большая вероятность, что там будет Swift, но не как лидирующий, а наряду с Objective-C, потому что пока команде Apple не удалось вывести Swift на технологический уровень. Но в любом случае, там будет все об iOS 8. В традиции Стэнфорда выкладывать этот курс на iTunes U в виде бесплатного курса обучения, но делают это они со сдвигом во времени, чтобы не мешать платному обучающему процессу, так что в феврале-марте 2015 года (как это было в 2013 году) можно ожидать постепенное появление лекций на iTunes U. Надо сказать, что те, кто хоть раз использовали предыдущие версии стэнфордского курса CS193P для самообучения, конечно, ждут это событие с нетерпением. А предыдущих версий курса CS193P с профессором Paul Hegarty в качестве лектора было несколько. [Читать дальше →][4]

[1]: //habrastorage.org/files/d21/39b/d3d/d2139bd3dfcf4b8986ab425fb21b96bb.jpg
[2]: http://cs.stanford.edu/courses/schedules/2014-2015.winter.php
[3]: https://www.apple.com/swift/
[4]: http://habrahabr.ru/post/244353/#habracut

[>] Забавные баги
habra.14
habrabot(difrex,1) — All
2014-11-29 12:00:03


Баги — сленговое обозначение ошибки в системе или программе. Конечно, баг — это плохо. Искать баг — еще хуже. Они могут быть как безобидными (но назойливыми), так и весьма катастрофическими, последствия которых могут привести к финансовым потерям, очернению репутации и даже к трагическим случаям. Однако не все баги такие. Есть и те, от которых Вы бы не стали пучками вырывать у себя на голове волосы или разбивать монитор компьютера подручными предметами. Они скорее заставят Вас посмеяться, ну или же хотя бы улыбнутся. Именно о таких багах и пойдет речь. ![][1] [Читать дальше →][2]

[1]: //habrastorage.org/files/3bd/fc2/6fd/3bdfc26fda414ccf901a39e867de809d.jpg
[2]: http://habrahabr.ru/post/244479/#habracut

[>] Эквализация гистограмм для повышения качества изображений
habra.14
habrabot(difrex,1) — All
2014-11-29 14:30:04


Всем привет. Сейчас мы с научным руководителем готовим к изданию монографию, где пытаемся простыми словами рассказать об основах цифровой обработки изображений. В данной статье раскрывается очень простая, но в тоже время очень эффективная методика повышения качества изображений – эквализация гистограмм. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/244507/#habracut

[>] Фабричный метод без размещения в динамической памяти
habra.14
habrabot(difrex,1) — All
2014-11-29 15:00:02


У классической реализации фабричного метода на C++ есть один существенный недостаток — используемый при реализации этого шаблона динамический полиморфизм предполагает размещение объектов в динамической памяти. Если при этом размеры создаваемых фабричным методом объектов не велики, а создаются они часто, то это может негативно сказаться на производительности. Это связанно с тем, что во первых оператор `new` не очень эффективен при выделении памяти малого размера, а во вторых с тем что частая деаллокация небольших блоков памяти сама по себе требует много ресурсов. Для решения этой проблемы было бы хорошо сохранить динамический полиморфизм (без него реализовать шаблон не получится) и при этом выделять память на стеке. Если вам интересно, как это у меня получилось, добро пожаловать под кат. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/244497/#habracut

[>] Несколько фактов о фроде
habra.14
habrabot(difrex,1) — All
2014-11-29 19:30:02


![][1] Нас в [Web-payment.ru][2], сайте о платежных системах, очень беспокоят темпы роста мошенничества с банковскими картами. В России убытки от мошеннических операций с 2006 по 2013 год выросли в 10 раз (по отчетам FICO)! В 2012 году по отчетам Cybersource 2013 электронное мошенничество стоило индустрии интернет-коммерции 3.5 миллиарда долларов, и это только в США. Что составляет 0.9% от оборота. Две причины, по которым 0.9% — неприемлемо большая цифра:

* Потеря 0.9% от доходов [составляет][3] одну восьмую часть среднего по индустрии показателя чистой прибыли (6.8%). Без мошенничества, сфера Интернет-торговли станет прибыльнее почти на 13%.
* Бизнес мог бы реинвестировать эту прибыль, используя способы, которые помогли бы клиентам и экономике. Например, предложение более низких цен или наем большего количества сотрудников.

Страдает репутация продавцов, они вынуждены делать возвраты и выделять ресурсы для работы со своими худшими клиентами. Покупатели получают повышение цен, остаются недовольны длинными страницами оформления заказа и дольше ждут их доставки. [Читать дальше →][4]

[1]: //habrastorage.org/files/cd0/21b/78e/cd021b78ec0a429ca3353fbc3b9a51e4.png
[2]: http://web-payment.ru/
[3]: http://www.inc.com/best-industries-2012/judith-ohikuare/ecommerce.html
[4]: http://habrahabr.ru/post/244301/#habracut

[>] Inversion of Control: Методы реализации с примерами на PHP
habra.14
habrabot(difrex,1) — All
2014-11-29 19:30:03




> О боже, ещё один пост о Inversion of Control

Каждый более-менее опытный программист встречал в своей практике словосочетание Инверсия управления (Inversion of Control). Но зачастую не все до конца понимают, что оно значит, не говоря уже о том, как правильно это реализовать. Надеюсь, пост будет полезен тем, кто начинает знакомится с инверсией управления и несколько запутался. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/244517/#habracut

[>] Git и Microsoft SQL Server
habra.14
habrabot(difrex,1) — All
2014-11-30 00:00:02


Привет всем! В [предыдущем посте][1] было рассказано о трудностях, которые испытывают разработчики при написании SQL-кода (причём актуальны эти проблемы не только для MS SQL Server). Здесь же рассказ о том, как использовать Git для версионного контроля кода SQL Server с помощью [SQLFuse][2]. Принцип тот же, что и с обычными файлами, но есть некоторые особенности. ![][3] [Читать дальше →][4]

[1]: http://habrahabr.ru/post/227185/
[2]: http://sqlfuse.org
[3]: //habrastorage.org/files/cfe/2e9/6dc/cfe2e96dc68547c4870cb30e669aeb80.jpg
[4]: http://habrahabr.ru/post/240019/#habracut

[>] [Из песочницы] Модификация исходного кода android-приложения с использованием apk-файла
habra.14
habrabot(difrex,1) — All
2014-11-30 00:00:02


Так уж получилось, что приложение для чтения комиксов и манги, которое я использую на своем android-смартфоне, после обновления стало показывать рекламу в конце каждой главы комикса. Данное приложение пару лет назад было доступно на Google Play (платная версия которого и была мной куплена), но было удалено в силу «нарушения авторских прав», после чего ушло в подполье и стало распространятся через сайт разработчика. Увы, достойных альтернатив этому приложению на android и iOS я не нашел, но и смотреть рекламу особо не было желания, тем более я уже покупал версию без рекламы. Сам разработчик почему-то не сделал возможности отключить ее, а на просьбы добавить такую возможность не отозвался. Поэтому пришлось искать альтернативные методы ее отключения. Первое, что пришло в голову, это то, что android-приложения пишутся на java, а значит есть вероятность, что автор не обфусцировал свое приложение и его можно попытаться декомпилировать. Немного подумав, я приступил к работе. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/244457/#habracut

[>] [Перевод] Многоликие функции Swift
habra.14
habrabot(difrex,1) — All
2014-11-30 02:00:03


Русский перевод очень полезной статьи [Natasha Murashev][1] [The Many Faces of Swift Functions][2]. Хотя у _Objective-C_ синтаксис выглядит несколько странно, по сравнению с другими языками программирования, синтаксис **метода** — прост и понятен. Вот небольшой экскурс в прошлое:

+ (void)mySimpleMethod
{
// метод "класса"
// нет параметров
// нет возвращаемых значений
}

- (NSString *)myMethodNameWithParameter1:(NSString *)param1 parameter2:(NSNumber *)param2
{
// метод "экземпляра"
// первый параметр - типа NSString указатель,
// второй параметр - типа NSNumber указатель
// должен вернуть значение типа NSString указатель
return @"hello, world!";
}


В противоположность этому, синтаксис _Swift _выглядит в большинстве случаев также, как и в других языках программирования, но временами он может быть более сложным и запутанным, чем в _Objective-C_. Прежде чем я продолжу, я хочу прояснить разницу между** «методами»** и **«функциями»** в _Swift_, так как я повсеместно буду использовать оба этих термина в этой статье. Вот определение «методов», данное в книге [Apple «Swift Programming Language»][3]: [Читать дальше →][4]

[1]: https://twitter.com/NatashaTheRobot
[2]: http://www.objc.io/issue-16/swift-functions.html
[3]: https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html
[4]: http://habrahabr.ru/post/244487/#habracut

[>] [Перевод] Выразительный JavaScript: Рисование на холсте
habra.14
habrabot(difrex,1) — All
2014-11-30 02:30:02




#### Содержание



* [Введение][1]
* [Величины, типы и операторы][2]
* [Структура программ][3]
* [Функции][4]
* [Структуры данных: объекты и массивы][5]
* [Функции высшего порядка][6]
* [Тайная жизнь объектов][7]
* [Проект: электронная жизнь][8]
* [Поиск и обработка ошибок][9]
* [Регулярные выражения][10]
* [Модули][11]
* [Проект: язык программирования][12]
* [JavaScript и браузер][13]
* [Document Object Model][14]
* [Обработка событий][15]
* [Проект: игра-платформер][16]
* [Рисование на холсте][17]
* HTTP
* Формы и поля ввода
* Проект: Paint
* Node.js
* Проект: веб-сайт по обмену умениями
* [Песочница для кода][18]

_Рисование — это обман. М.К.Эшер_ Браузеры позволяют нам рисовать графику разными способами. Проще всего использовать стили для расположения и расцветки стандартных элементов DOM. Так можно добиться многого, как показал пример игры из предыдущей главы. Добавляя частично прозрачные картинки узлам, мы можем придать им любой нужный вид. Возможно даже поворачивать или искажать узлы через стиль transform. Но такое использование DOM – не то, для чего он создавался. Некоторые задачи, типа рисования линии между двумя произвольными точками, крайне неудобно выполнять при помощи обычных элементов HTML. Есть две альтернативы. Первая – SVG, масштабируемая векторная графика, также основанная на DOM, но без участия HTML. SVG – диалект для описания документов, который концентрируется на формах, а не тексте. SVG можно встроить в HTML, или включить через тег ``. Вторая альтернатива – холст (canvas). Холст – это один элемент DOM, в котором находится картинка. Он предоставляет API для рисования форм на том месте, которое занимает элемент. Разница между холстом и SVG в том, что в SVG хранится начальное описание форм – их можно в любой момент сдвигать или менять размер. Холст же преобразовывает формы в пиксели (цветные точки растра), как только нарисует их, и не запоминает, что эти пиксели из себя представляют. Единственным способом сдвинуть форма на холсте является очистить холст (или ту часть, которая окружает форму) и перерисовать её на другом месте. [Читать дальше →][19]

[1]: http://habrahabr.ru/post/240219/
[2]: http://habrahabr.ru/post/240223/
[3]: http://habrahabr.ru/post/240225/
[4]: http://habrahabr.ru/post/240349/
[5]: http://habrahabr.ru/post/240813/
[6]: http://habrahabr.ru/post/241155/
[7]: http://habrahabr.ru/post/241587/
[8]: http://habrahabr.ru/post/241776/
[9]: http://habrahabr.ru/post/242609/
[10]: http://habrahabr.ru/post/242695/
[11]: http://habrahabr.ru/post/243273/
[12]: http://habrahabr.ru/post/243277/
[13]: http://habrahabr.ru/post/243311/
[14]: http://habrahabr.ru/post/243815/
[15]: http://habrahabr.ru/post/244041/
[16]: http://habrahabr.ru/post/244405/
[17]: http://habrahabr.ru/post/244545/
[18]: http://eloquentjavascript.net/code
[19]: http://habrahabr.ru/post/244545/#habracut

[>] Всемирный день информационной безопасности
habra.14
habrabot(difrex,1) — All
2014-11-30 07:00:04


[![][1]][2] Сегодня мы с большой радостью поздравляем людей, стоящих на страже нашей с вами безопасности. Не тех, что в униформе с погонами, а повелителей эвристики, неутомимо борющихся с мировым злом в виде троянов, вирусов, эксплойтов и прочих зловредов. Мы поздравляем всех специалистов по информационной безопасности с их законным праздником! Если бы не вы, информационные сети давно бы захлебнулись в эпидемиях всевозможной цифровой заразы. Вы ежедневно оберегаете наши компьютеры и всевозможные гаджеты от несметного числа троянов и вирусов. Благодаря вашим трудам, всемирная гидра сетевого криминала не может развернуться во всю ширь. Хотя и наворотила эта рептилия немало. Чем запомнился нам год, прошедший с прошлого Дня информационной безопасности? Увы, но за это время нам пришлось столкнуться с некоторыми очень серьёзными проблемами. Да и вообще список событий оказался весьма впечатляющий. Вот лишь некоторые из них. [Читать дальше →][3]

[1]: //habrastorage.org/files/848/229/56d/84822956d8b348ada870319ecd99df45.jpg
[2]: http://habrahabr.ru/company/mailru/blog/244535/
[3]: http://habrahabr.ru/post/244535/#habracut

[>] Краткая история хакерства. Рассказ от руководителя информационной безопасности Яндекса
habra.14
habrabot(difrex,1) — All
2014-11-30 15:30:03


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




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

[1]: http://habrahabr.ru/post/244559/#habracut

[>] [Перевод] «Математика – один из видов искусства»: пост к столетию со дня рождения Мартина Гарднера
habra.14
habrabot(difrex,1) — All
2014-11-30 18:00:03






_Перевод поста Эда Пегга Младшего (Ed Pegg Jr) "[Martin Gardner’s 100th Birthday][1]"_ _Я думаю, содержание этого поста будет интересно всем, кто любит математику и ее красоту, всем, кто знаком с замечательными книгами и задачами Мартина Гарднера, а также будет полезно учителям, школьникам и студентам. Все ссылки в данном посте ведут на сайты [Wolfram Demonstrations Project][2] (коллекция бесплатных интерактивных демонстраций, созданных пользователями системы _Mathematica_ на языке Wolfram Language с помощью технологии [Computable Document Format][3] (CDF), при этом для вас доступны исходные коды всех демонстраций, а значит, вы можете каждую из них скачать, изучить и изменить под себя) и [Wolfram MathWorld][4] (крупнейшая и самая авторитетная онлайн-энциклопедия по математике)._



[Читать далее...][5]

[1]: http://blog.wolfram.com/2014/10/21/martin-gardners-100th-birthday/
[2]: http://demonstrations.wolfram.com/index.html
[3]: http://www.wolfram.com/cdf/
[4]: http://mathworld.wolfram.com/
[5]: http://habrahabr.ru/post/244563/#habracut

[>] Поиск на сайте своими руками
habra.14
habrabot(difrex,1) — All
2014-11-30 18:00:03


![][1] Наверное, многие когда-нибудь задумывались, как сделать поиск на сайте? Безусловно, для крупных сайтов с большим количеством контента поиск является просто незаменимой вещью. В большинстве случаев пользователь, впервые посетив Ваш сайт в поисках чего-либо важного, не станет разбираться в навигационных панелях, выпадающих меню и прочих элементах навигации, а в спешке попытается найти что-нибудь похожее на поисковую строку. И если такой роскоши на сайте не окажется, либо он не справится с поисковым запросом, то посетитель просто закроет вкладку. Но статья не о значении поиска для сайта и не о психологии посетителей. Я расскажу, как реализовать небольшой алгоритм полнотекстового поиска, который, надеюсь, избавит начинающих разработчиков от головной боли. [Читать дальше →][2]

[1]: //habrastorage.org/files/a19/0af/f04/a190aff046d545b58baacc9601b77f2f.jpg
[2]: http://habrahabr.ru/post/244561/#habracut

[>] [Перевод] Обработка ошибок в Swift — меч и магия
habra.14
habrabot(difrex,1) — All
2014-11-30 23:30:04


Если издали видно общую картину, то вблизи можно понять суть. Концепции, которые казались мне далекими и, прямо скажем, странными во время экспериментов с Haskell и Scala, при программировании на Swift становятся ослепительно очевидными решениями для широкого спектра проблем. Взять вот обработку ошибок. Конкретный пример – деление двух чисел, которое должно вызвать исключение если делитель равен нулю. В Objective C я бы решил проблему так:

NSError *err = nil;
CGFloat result = [NMArithmetic divide:2.5 by:3.0 error:&err];
if (err) {
NSLog(@"%@", err)
} else {
[NMArithmetic doSomethingWithResult:result]
}


Со временем это стало казаться самым привычным способом написания кода. Я не замечаю, какие загогулины приходится писать и как косвенно они связаны с тем, что я на самом деле хочу от программы: _Верни мне значение. Если не получится – то дай знать, чтобы ошибку можно было обработать._ Я передаю параметры, разыменовываю указатели, возвращаю значение в любом случае и в некоторых случаях потом игнорирую. Это неорганизованный код по следующим причинам:

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

Каждый из этих пунктов – источник возможных багов, и все эти проблемы Swift решает по-своему. Первый пункт, например, в Swift вообще не существует, поскольку он прячет под капотом всю работу с указателями. Остальные два пункта решаются с помощью перечислений. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/244575/#habracut

[>] [Из песочницы] Запуск приложений в Android Virtual Device на удаленном Linux-сервере
habra.14
habrabot(difrex,1) — All
2014-12-01 12:00:03


В процессе работы над одним проектов возникла ситуация, когда необходимо проводить в автоматическом режиме ряд операций из мобильного приложения. Поскольку набор входных данных, которые вводит пользователь для работы приложения меняется, была необходима реализация, которая позволила бы имитировать действия пользователя. Более того, необходимо было, чтобы приложение запускалось автоматически на удаленном linux-сервере, выполняло действия и сохраняло результаты. О том, как решал данную задачу, я и хочу рассказать читателям. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/244443/#habracut

[>] [recovery mode] Free для ленивых
habra.14
habrabot(difrex,1) — All
2014-12-01 12:00:03


![image][1] (типичное утро понедельника) Однажды, я решил сделать маленький костылик, чтобы не пичкать свой код free вызовами. Было решено написать аналог auto-release pool’a для чистого С (который может далее быть портирован куда угодно). [Читать дальше →][2]

[1]: http://habrastorage.org/getpro/habr/post_images/1b3/06a/e22/1b306ae22c8541c24ea0b1ca0478daff.jpg
[2]: http://habrahabr.ru/post/244617/#habracut

[>] Скрытые камеры и их обнаружение, жучки, локпикинг, клонирование ключей, RFID и магнитных карт
habra.14
habrabot(difrex,1) — All
2014-12-01 13:00:03


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

[1]: //habrastorage.org/files/282/2cb/0b1/2822cb0b19e041a0a03eaf1062aa2caa.jpg
[2]: http://habrahabr.ru/post/244453/#habracut

[>] ЭкаунтоЛогика 1.0
habra.14
habrabot(difrex,1) — All
2014-12-01 15:00:03


![][1] Хочу поделиться с уважаемой публикой. Год-полтора назад я выступал на Хабре с предложениями о создании сетевой бухгалтерии нового типа. Найти человека, который бы воплотил идею в программном коде, не удалось (кто бы сомневался?), и через некоторое время я дошел до такой степени отчаяния, что решился написать программный код самостоятельно. Сказано – сделано: изучил язык программирования, насколько это оказалось в моих слабых бухгалтерских силах, и написал. Ниже предлагается синопсис того, что в итоге данной интеллектуальной эпопеи получилось – во всяком случае, того, как это задумывалось. Надеюсь, специалисты в области бухгалтерского софта смогут оценить новизну реализованной в программе методологии – хотя понимаю: это заведомо сложней, чем позубоскалить над усилиями новичка-«программиста». [Читать дальше →][2]

[1]: //habrastorage.org/files/e5d/6ce/bea/e5d6cebea6614c4985091d7b4adfe53b.png
[2]: http://habrahabr.ru/post/244465/#habracut

[>] [Из песочницы] Вероятностное программирование
habra.14
habrabot(difrex,1) — All
2014-12-01 15:30:03




### Вступление

Эта публикация является первой частью краткого вступления с иллюстрациями в _вероятностное программирование_, которое является одним из современных прикладных направлений машинного обучения и искусственного интеллекта. Во время написания этой публикации я с радостью обнаружил, что на Хабрахабре совсем недавно уже была [статья о вероятностном программировании с рассмотрением прикладных примеров из области теории познания][1], хотя, к сожалению, в русскоговоряющем Интернете пока мало материалов на эту тему. Я, автор, Юра Перов, занимаюсь вероятностным программированием в течение уже двух лет в рамках своей основной учебно-научной деятельности. Продуктивное знакомство с вероятностным программированием у меня сложилось, когда будучи студентом Института математики и фундаментальной информатики Сибирского федерального университета, я проходил стажировку в Лаборатории компьютерных наук и искусственного интеллекта в Массачусетском технологическом институте под руководством профессора Джошуа Тененбаума и доктора Викаша Мансингхи, а затем продолжилось на Факультете технических наук Оксфордского университета, где на данный момент я являюсь студентом-магистром под руководством профессора Френка Вуда. Вероятностное программирование я люблю определять как _компактный_, _композиционный_ способ представления _порождающих вероятностных моделей_ и проведения _статистического вывода_ в них с учетом данных с помощью обобщенных алгоритмов. Хотя вероятностное программирование не вносит много фундаментального нового в теорию машинного обучения, этот подход привлекает своей простотой: «вероятностные порождающие модели в массы!»

### «Обычное» программирование

Для знакомства с вероятностным программирование давайте сначала поговорим об «обычном» программировании. В «обычном» программировании основой является алгоритм, обычно детерминированный, который позволяет нам из входных данных получить выходные по четко установленным правилам. [Читать дальше →][2]

[1]: http://habrahabr.ru/post/242993/
[2]: http://habrahabr.ru/post/244625/#habracut

[>] «Защита от дурака» или как запретить изменение/удаление важных папок
habra.14
habrabot(difrex,1) — All
2014-12-01 16:30:03


Доброе время суток. Исторически так сложилось, что для своих мелких проектов держу виртуалку. Однако, так как я не использую ее ресурсы на 100%, решил не жадничать и пустил похоститься несколько друзей. Сайтов не много, деньги за хостинг не беру, поэтому ставить что-то вроде cpanel счел перебором. К тому же я их тех, кто предпочитает настраивать все вручную. Структуру выбрал следующую:

/home/hostuser/vhosts/sitename.ru/{tmp,web,logs}


И тут возник вопрос: как запретить пользователю удалять/переименовывать папки в sitename.ru? Если будет отсутствовать папка _web_, то и apache и nginx выдадут предупреждение, но все-равно загрузятся. Но если удалить/переместит папку _logs_, то и apache и nginx не запустятся из-за ошибки (по мне довольно странное поведение). Папка _hostuser_ полностью принадлежит данному пользователю и его личной группе (_hostuser:hostuser_), а это означает, что при желании он сможет удалить любую внутреннюю папку/файл, даже если она будет принадлежать суперпользователю. Так как же запретить удаление/перемещение, чтобы пользователь (случайно или специально) не сломать весь хостинг? [Читать дальше →][1]

[1]: http://habrahabr.ru/post/243889/#habracut

[>] Rust: абстракции и безопасность, совершенно бесплатно (видеозапись с выступления на митапе Saratov Open-IT)
habra.14
habrabot(difrex,1) — All
2014-12-01 17:00:04


Привет. В прошлую субботу я выступал с докладом на очередном митапе [Saratov Open-IT][1], где я рассказал про Rust — многообещающий системный язык программирования, разрабатываемый Mozilla Research и сообществом, и про то, какие проблемы он решает и какие у него есть особенности и инфраструктура. Надеюсь, что моё выступление будет интересно сообществу, поэтому выкладываю его здесь. (видео не вставлено в пост через тег <video> потому что он не работает с конкретной временной меткой; длительность — примерно полтора часа) [Больше про Rust и про сам доклад][2]

[1]: http://open-it.pro/
[2]: http://habrahabr.ru/post/244537/#habracut

[>] Офис на Linux — мой опыт
habra.14
habrabot(difrex,1) — All
2014-12-01 20:30:03




#### Предисловие

Возникла у меня с полгода назад задачка: быстро и с минимальными затратами организовать работу аудиторской фирмы после переезда и резкого расширения штата сотрудников. Имелся десяток стареньких компьютеров, NAS c RAID-массивом, около ста тысяч рублей денег на всё про всё. Надо было умудриться купить ещё несколько компьютеров и сделать так, чтобы «тормоза», к которым сотрудники уже почти привыкли, хотя бы не усилились. Появились и рабочие места вне офиса, по области, с не очень-то «толстым» каналом в Интернет. Плюс ко всему имелось пожелание улучшить безопасность: новые сотрудники должны быть ограничены в доступе к некоторым базам данных, не могли скопировать базы к себе на «флэшку» и т.п. Понятно, что в такой (впрочем, как почти в любой) фирме всё вертится вокруг 1С (в данном случае — 8.2). Используются файловые базы данных, это для заказчика весьма важно. Узкое место здесь — сеть. Ну, предположим, заменить 100-мегабитное оборудование на гигабитное несложно, но есть ещё и вопрос безопасности: файлы в общем доступе — хорошая дырка. А ведь есть ещё и удалённые рабочие места. Очевидно, что я стал смотреть в сторону терминального доступа. Покрутив в голове и электронных таблицах различные варианты коммерческих терминальных серверов известных фирм я понял: в бюджет не уложиться. Зато, как я помнил, 1с версии 8.3 существует в виде «нативной» реализации под Linux, при этом конфигурации от 8.2 с ней вполне совместимы. Проведя пару экспериментов дома, я решился и вышел к заказчику с предложением: «делаем терминальное решение полностью на Linux!» Заказчик отреагировал здраво: «хоть на чёрте лысом делай, но чтоб в понедельник всё работало!» И я взялся за работу. В статье я вольным стилем и кратко опишу, как я решал задачу. Не претендую на то, что сделал всё правильно и хорошо, однако задача решена и пользователи довольны. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/244703/#habracut

[>] Уязвимость отказа в обслуживании в OpenVPN
habra.14
habrabot(difrex,1) — All
2014-12-01 23:00:02


![image][1] В OpenVPN < 2.3.6 обнаружена уязвимость, которая позволяет аутентифицированным клиентам удаленно уронить VPN-сервер, т.е. выполнить атаку отказа в обслуживании. Уязвимость заключается в некорректном использовании assert(): сервер проверяет минимальный размер control-пакета от клиента именно этой функцией, из-за чего сервер аварийно завершится, если получит от клиента control-пакет длиной менее 4 байт. Следует отметить, что для совершения атаки достаточно установить коммуникацию через control channel, т.е. в случае с TLS, сам TLS-обмен. VPN-провайдеры, которые реализуют аутентификацию с использованием логина/пароля и общего TLS-ключа, подвержены уязвимости еще до стадии проверки логина и пароля. Уязвимость имеется во всех версиях OpenVPN второй ветки, т.е. начиная, как минимум, с 2005 года. Ветка OpenVPN 2.4 (git master), на которой основаны мобильные клиенты, не подвержена данной уязвимости. [Читать дальше →][2]

[1]: http://habrastorage.org/getpro/habr/post_images/06b/cc7/5f5/06bcc75f50a2233855423947e9f808d9.png
[2]: http://habrahabr.ru/post/244705/#habracut

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 41