RSS
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 41
[>] Проверка симулятора The Powder Toy
habra.14
habrabot(difrex,1) — All
2014-12-24 12:00:03


![][1] The Powder Toy является песочницей со свободной физикой, которая имитирует давление и скорость воздуха, тепла, тяжести и бесчисленное количество взаимодействий между различными веществами. Игра предоставляет различные строительные материалы, жидкости, газы и электронные компоненты, которые могут быть использованы для построения сложных машин, оружия, бомб, реалистичной местности и почти всего, что угодно. Вы можете просматривать и воспроизводить тысячи различных сделанных построек. Вот только в игре оказалось не всё так замечательно: для небольшого проекта размером в ~350 файлов было получено довольно много предупреждений статического анализатора. В этой статье будут описаны наиболее интересные места. [Читать дальше →][2]

[1]: http://habrastorage.org/getpro/habr/post_images/b22/589/97d/b2258997d5c59bcef83381ef300e86be.gif
[2]: http://habrahabr.ru/post/246641/#habracut

[>] Вышла новая версия 14.2 компонентов DevExpress для VCL
habra.14
habrabot(difrex,1) — All
2014-12-24 13:00:04


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

[1]: http://habrastorage.org/getpro/habr/post_images/177/2b6/518/1772b6518ae05a8b7dd78f9af0059fe5.png
[2]: http://habrahabr.ru/post/246603/#habracut

[>] [Перевод] Решение задачи «AAAAAA» с Facebook Hacker Cup методом динамического программирования на B-Prolog
habra.14
habrabot(difrex,1) — All
2014-12-24 14:30:03


Есть много материала по решению запутанных задачек на Прологе (например, [страница Hakan Kjellerstrand о B-Prolog][1]). Однако часто приводятся задачи, которые либо создавались для решения вручную (имеют маленькое пространство поиска), либо изначально ориентированы на решение при помощи логического программирования. Я хочу показать мое решение на Прологе задачи AAAAAA с первого раунда Facebook Hacker Cup 2014. Задача имеет достаточно большое пространство поиска и создана с прицелом на решение опытными спортивными программистами на распространенных языках программирования. [Читать дальше →][2]

[1]: http://www.hakank.org/bprolog/
[2]: http://habrahabr.ru/post/246657/#habracut

[>] [Перевод] Именованные параметры в современном C++
habra.14
habrabot(difrex,1) — All
2014-12-24 15:00:03


Из Википедии: "_Именованные параметры в языках программирования означают поддержку указания явных имен параметров в вызове функции. Вызов функции, принимающей именованные параметры, отличается от обычного вызова функции, в котором передаваемые аргументы ассоциируются с параметрами функции лишь только по их порядку в вызове функции_" Давайте посмотрим на пример:

createArray(10, 20); // Что это значит? Что за "10" ? Что за "20" ?
createArray(length=10, capacity=20); // О, вот теперь понятнее!
createArray(capacity=20, length=10); // И наоборот тоже работает.


И еще один пример на выдуманном псевдо-языке:

window = new Window {
xPosition = 10,
yPosition = 20,
width = 100,
height = 50
};


Этот подход особенно полезен для функций с большим количеством опциональных параметров, при вызове которых нужно изменить лишь некоторую часть дефолтных значений. Некоторые языки программирования поддерживают именованные параметры (C#, Objective-C, ...), но не С++. В этом посте мы рассмотрим пару классических способов эмуляции именованных параметров в С++, ну и попробуем придумать что-то новое. [Читать дальше →][1]

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

[>] Фишки языка D
habra.14
habrabot(difrex,1) — All
2014-12-24 15:30:05


Очень радует, что на Хабре появляются статьи о языке D. Но, на мой взгляд, переводы хелпа и статей для чуть больше, чем для новичков не дают ничего в плане популяризации языка. Думаю, искушённой публике лучше представлять, пусть более сложные, но какие-то интересные вещи — фишки. Большинство из того, что можно назвать фишками D, есть и в других языках, но многое в D реализовано более эффектно и эффективно, на мой вкус во всяком случае. В D есть много интересного, о чем стоит рассказать, и начну я в этой статье с функций, но не совсем обычных. [Читать дальше →][1]

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

[>] [Перевод] Конвейер обработки текста в Sphinx
habra.14
habrabot(difrex,1) — All
2014-12-24 17:00:04


Обработка текста в поисковом движке выглядит достаточно простой снаружи, однако на самом деле это сложный процесс. При индексации текст документов должен быть обработан стриппером HTML, токенайзером, фильтром стопслов, фильтром словоформ и морфологическим процессором. А ещё при этом нужно помнить про исключения (exceptions), слитные (blended) символы, N-граммы и границы предложений. При поиске всё становится ещё сложнее, поскольку помимо всего вышеупомянутого нужно вдобавок обрабатывать синтаксис запроса, который добавляет всевозможные спец. символы (операторы и маски). Сейчас мы расскажем, как всё это работает в Sphinx.

# Картина в целом

Упрощённо конвейер обработки текста (в движке версий 2.х) выглядит примерно так: ![][1] Выглядит достаточно просто, однако дьявол кроется в деталях. Есть несколько очень разных фильтров (которые применяются в особом порядке); токенайзер занимается ещё чем-то помимо разбиения текста на слова; и наконец под «и т.д.» в блоке морфологии на самом деле находится ещё по меньшей мере три разных варианта. Поэтому более точной будет следующая картина: ![][2] [А теперь перейдём к деталям][3]

[1]: //habrastorage.org/files/a7e/c78/da8/a7ec78da80c0478990cc94c385f1891a.png
[2]: //habrastorage.org/files/12d/9f1/74f/12d9f174fa5e40438f4d99489315d073.png
[3]: http://habrahabr.ru/post/246679/#habracut

[>] Так может ли NFC Кольцо Всевластья разблокировать Android-телефон?
habra.14
habrabot(difrex,1) — All
2014-12-24 19:00:03


Короткий ответ — да. Летом прошлого года на кикстартере начался [сбор средств на NFC-кольца][1] ([пост на гиктаймс][2]). Создатели не обещали ничего супер-инновационного, но скомпоновать известные, но не популярные штуки во что-то удобное и привычное — тоже хорошая идея. Неудивительно, что сбор, хотя и прошёл не особо заметно, но всё-таки успешно завершился. Целый год ребята писали письма про свои затруднения, про битвы и победы, про падения и взлёты. ![][3] В итоге, долгожданное письмо, пара недель ожидания, скрашенных Почтой России и отсутствием трекинга, и вот вожделенный конверт у меня в руках. [Читать дальше →][4]

[1]: https://www.kickstarter.com/projects/mclear/nfc-ring
[2]: http://geektimes.ru/post/188470/
[3]: //habrastorage.org/files/b1c/609/6e6/b1c6096e64e84e149896ca90f0917d02.png
[4]: http://habrahabr.ru/post/246611/#habracut

[>] Встреча настоящих .Net хардкорщиков. CLRium #2. Москва, Питер + online
habra.14
habrabot(difrex,1) — All
2014-12-24 19:30:03


![][1] Я не люблю заезженное слово «конференция». Это — встреча разработчиков с общими интересами, которые хотят послушать о трюках, которые позволяют обходить правила, установленные в.Net Framework, которым интересна тема использования меняющих и создающих языки, тулов. А также, что можно получить если знаешь как компилировать и декомпилировать приложение. Об этом не говорят. Потому что разговор на эту тему слишком долгий чтобы уместить в формат одного часа стандартного выступления на конференциях. Я пробовал выступать на .NEXT, и помимо положительных отзывов были «галопом по Европам». Согласен, за час не уложиться. Добро пожаловать в полный формат! Я надеюсь, в вашей памяти теплится еще прошлый CLRium и сейчас никто не отчаивается и яро смотрит на технологии и все с удовольствием готовы их поглощать. Я помню и время от времени поглядываю на ваши многочисленные отзывы, которые греют мое желание провести все еще раз. Причем на этот раз — с хорошей и полезной практикой. Теперь у нас целых два дня. Причем вы можете купить билет как на один, так и на оба дня. Первый день — как в прошлый раз: много хардкора, не практичного, но очень интересного… Позволяющего еще лучше понять как все работает и как этим можно воспользоваться… Тем со временем еще немного накидаю. **Много мяса на любителя**. И второй — практика. Второй длиннее первого. На час =). Во второй день будет очень много **Roslyn**, JetBrains **Nitra **(он же N2, он же Nemerle2)? **RyuJIT**, **.Net Framework open sourced**. Вот честно, я бы сам сходил

# Почитать и зарегистрироваться



* [Ссылка на регистрацию в Питере][2], 15 мая
* [Ссылка на регистрацию в Москве][3], 24 апреля
* На **онлайн вещание** из другого города можно купить билет с любой из ссылок выше
* [Дамп ваших отзывов с прошлого раза][4] если остались (ну… мало ли) какие-то сомнения

![cool][5] _Примеры статей и полный список тем выступлений — под катом_ [Читать дальше →][6]

[1]: http://habrastorage.org/getpro/habr/post_images/4c4/d7e/445/4c4d7e445390935ae351a0bd5cbcfa99.png
[2]: http://braingems.timepad.ru/event/172083/
[3]: http://braingems.timepad.ru/event/172055/
[4]: https://docs.google.com/spreadsheets/d/1r7w2iya5H0ZNGUbL11Srgyed2krc3CQyCzdx9hlkflU/edit#gid=0
[5]: http://habrastorage.org/files/6e9/787/21a/6e978721a17f4a79a43c9ad6145a7699.png
[6]: http://habrahabr.ru/post/246665/#habracut

[>] RealSense вебинар. Для тех, у кого есть вопросы
habra.14
habrabot(difrex,1) — All
2014-12-24 20:30:02


![][1]Технология Intel RealSense продолжает развиваться, а это значит, что количество людей, использующих её в своих приложениях, также неуклонно увеличивается. Мы понимаем, что и у начинающих разрабатывать новые виды интерфейсов, и уже накопивших некоторый опыт, например, участвуя в [конкурсе Intel RealSense App Challenge][2] (на котором, кстати, в этом году блестяще выступают российские программисты), постоянно появляются вопросы, на которые не всегда можно найти ответы. Чтобы облегчить вашу работу и помочь в том же конкурсе, мы устраиваем специальный вебинар. Еще одна приятная тема для обсуждения: на смену бета-версии вышел финальный релиз [Intel RealSense SDK 2014 Gold][3] — ее мы тоже обязательно затронем. [Зарегистрироваться на вебинар][4]. Приглашаем на вебинар и тех, кто ни разу не использовал технологию RealSense, но хочет попробовать — для таких мы разыграем камеру RealSense. [P.S.][5]

[1]: //habrastorage.org/files/77a/7ba/166/77a7ba166df2460eb58423e4c9065507.jpg
[2]: http://habrahabr.ru/company/intel/blog/230969/
[3]: https://software.intel.com/en-us/intel-realsense-sdk/details
[4]: https://attendee.gotowebinar.com/register/3746456492626697474
[5]: http://habrahabr.ru/post/246593/#habracut

[>] [Из песочницы] Network UPS Tools (NUT) на CentOS и Windows с отправкой смс через smstools+playsms
habra.14
habrabot(difrex,1) — All
2014-12-24 22:30:03


В условиях ограниченного бюджета небольшой компании, скромный терминальный сервер 2003 получал бесперебойное электричество от Ippon Smart Winner 1500, который управлялся стандартной утилитой. Не могу чего-то сильно плохого сказать про этот ИБП и его монструозную утилиту управления с анимацией тока. Гудит вполне на свои деньги. Со временем, windows пришлось обременить парой виртуальных машин Vmware, а парк пополнился парой небольших линуксовых серверов с АТС, Jabber и прочими офисными радостями. Соответственно, возникло желание тоже управлять их питанием от Ippon, ибо заявлена поддержка \*nix. [Читать дальше →][1]

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

[>] Регистрация оффшорной компании в Белизе
habra.14
habrabot(difrex,1) — All
2014-12-25 00:00:03


_Я горжусь тем, что плачу налоги в Соединенных Штатах. Правда, я бы гордился не меньше за половину суммы. (с) Артур Годфри_ Пару месяцев назад я писал на Хабре [о регистрации компании в Эстонии.][1] Сегодня же, я хочу поделиться опытом регистрации компании в Белизе, рассказать пару юридических тонкостей, и сказать несколько слов о применении такой компании. **Краткая характеристика:** Белиз является оффшорной юрисдикцией, и находиться в списке оффшорных зон Украины, России, Белоруссии и Казахстана. Налогообложение оффшорных компаний в Белизе нулевое. Отсутствует требования по ведению и подаче финансовой отчетности и проведению аудита компании. Акционером или директором компании может быть как юридическое так и физическое лицо независимо от места регистрации или гражданства. Требований к количеству акционеров или директоров в Белизском законодательстве нет. В Белизе (не публичный) регистр акционеров компании. **Ежегодные пошлины:** $100 — если уставной капитал не превышает $50,000 и все акции компании имеют номинальную стоимость. (т.е. если капитал заявлен и не внесен) $1,000 — если уставной капитал превышает $50,000; $350 — если уставной капитал не превышает $50,000 и некоторые или все акции компании не имеют номинальной стоимости; и если уставного капитаал нет и все акции не имеют номинальной стоимости. $4,000 — если компания имеет статус “public investment company” Пошлины платятся в следующем году, после года в котором была зарегистрирована компания, **до 31 Июля.** Если Вы просрочили оплату ежегодной пошлины, ее размер увеличивается на 10% и дается новый срок — **до 31 Октября.** Если же Вы не оплатили пошлину до 31 Октября, ее размер увеличивается на 50%. **Что нужно сделать, чтоб зарегистрировать компанию?** [Читать дальше →][2]

[1]: http://habrahabr.ru/post/244445
[2]: http://habrahabr.ru/post/246713/#habracut

[>] Мясо на любителя. Конференция CLRium #2. Москва, Питер, online
habra.14
habrabot(difrex,1) — All
2014-12-25 12:00:03


![][1] Я не люблю заезженное слово «конференция». Это — встреча разработчиков с общими интересами, которые хотят послушать о трюках, которые позволяют обходить правила, установленные в.Net Framework, которым интересна тема использования меняющих и создающих языки, тулов. А также, что можно получить если знаешь как компилировать и декомпилировать приложение. Об этом не говорят. Потому что разговор на эту тему слишком долгий чтобы уместить в формат одного часа стандартного выступления на конференциях. Я пробовал выступать на .NEXT, и помимо положительных отзывов были «галопом по Европам». Согласен, за час не уложиться. Добро пожаловать в полный формат! Я надеюсь, в вашей памяти теплится еще прошлый CLRium и сейчас никто не отчаивается и яро смотрит на технологии и все с удовольствием готовы их поглощать. Я помню и время от времени поглядываю на ваши многочисленные отзывы, которые греют мое желание провести все еще раз. Причем на этот раз — с хорошей и полезной практикой. Теперь у нас целых два дня. Причем вы можете купить билет как на один, так и на оба дня. Первый день — как в прошлый раз: много хардкора, не практичного, но очень интересного… Позволяющего еще лучше понять как все работает и как этим можно воспользоваться… Тем со временем еще немного накидаю. **Много мяса на любителя**. И второй — практика. Второй длиннее первого. На час =). Во второй день будет очень много **Roslyn**, JetBrains **Nitra **(он же N2, он же Nemerle2)? **RyuJIT**, **.Net Framework open sourced**. Вот честно, я бы сам сходил

# Почитать и зарегистрироваться



* [Ссылка на регистрацию в Питере][2], 29 — 30 мая
* [Ссылка на регистрацию в Москве][3], 3 — 4 апреля
* На **онлайн вещание** из другого города можно купить билет с любой из ссылок выше
* [Дамп ваших отзывов с прошлого раза][4] если остались (ну… мало ли) какие-то сомнения

![cool][5] _Примеры статей и полный список тем выступлений — под катом_ [Читать дальше →][6]

[1]: http://habrastorage.org/getpro/habr/post_images/4c4/d7e/445/4c4d7e445390935ae351a0bd5cbcfa99.png
[2]: http://braingems.timepad.ru/event/172083/
[3]: http://braingems.timepad.ru/event/172055/
[4]: https://docs.google.com/spreadsheets/d/1r7w2iya5H0ZNGUbL11Srgyed2krc3CQyCzdx9hlkflU/edit#gid=0
[5]: http://habrastorage.org/files/6e9/787/21a/6e978721a17f4a79a43c9ad6145a7699.png
[6]: http://habrahabr.ru/post/246665/#habracut

[>] Мясо на любителя. Встреча .Net сообщества на CLRium #2. Москва, Питер, online
habra.14
habrabot(difrex,1) — All
2014-12-25 13:30:03


![][1] Я не люблю заезженное слово «конференция». Это — встреча разработчиков с общими интересами, которые хотят послушать о трюках, которые позволяют обходить правила, установленные в.Net Framework, которым интересна тема использования меняющих и создающих языки, тулов. А также, что можно получить если знаешь как компилировать и декомпилировать приложение. Об этом не говорят. Потому что разговор на эту тему слишком долгий чтобы уместить в формат одного часа стандартного выступления на конференциях. Я пробовал выступать на .NEXT, и помимо положительных отзывов были «галопом по Европам». Согласен, за час не уложиться. Добро пожаловать в полный формат! Я надеюсь, в вашей памяти теплится еще прошлый CLRium и сейчас никто не отчаивается и яро смотрит на технологии и все с удовольствием готовы их поглощать. Я помню и время от времени поглядываю на ваши многочисленные отзывы, которые греют мое желание провести все еще раз. Причем на этот раз — с хорошей и полезной практикой. Теперь у нас целых два дня. Причем вы можете купить билет как на один, так и на оба дня. Первый день — как в прошлый раз: много хардкора, не практичного, но очень интересного… Позволяющего еще лучше понять как все работает и как этим можно воспользоваться… Тем со временем еще немного накидаю. **Много мяса на любителя**. И второй — практика. Второй длиннее первого. На час =). Во второй день будет очень много **Roslyn**, JetBrains **Nitra **(он же N2, он же Nemerle2)? **RyuJIT**, **.Net Framework open sourced**. Вот честно, я бы сам сходил

# Почитать и зарегистрироваться

![][2]

* [Ссылка на регистрацию в Питере][3], 29 — 30 мая
* [Ссылка на регистрацию в Москве][4], 3 — 4 апреля
* На **онлайн вещание** из другого города можно купить билет с любой из ссылок выше
* [Дамп ваших отзывов с прошлого раза][5] если остались (ну… мало ли) какие-то сомнения

![cool][6] _Примеры статей и полный список тем выступлений — под катом_ [Читать дальше →][7]

[1]: http://habrastorage.org/getpro/habr/post_images/4c4/d7e/445/4c4d7e445390935ae351a0bd5cbcfa99.png
[2]: //habrastorage.org/files/c62/e85/f6b/c62e85f6b85a481682cf2eaf51aff8f4.jpg
[3]: http://braingems.timepad.ru/event/172083/
[4]: http://braingems.timepad.ru/event/172055/
[5]: https://docs.google.com/spreadsheets/d/1r7w2iya5H0ZNGUbL11Srgyed2krc3CQyCzdx9hlkflU/edit#gid=0
[6]: http://habrastorage.org/files/6e9/787/21a/6e978721a17f4a79a43c9ad6145a7699.png
[7]: http://habrahabr.ru/post/246665/#habracut

[>] Нестандартный Top10 событий в сфере IT-безопасности 2014 года
habra.14
habrabot(difrex,1) — All
2014-12-25 14:00:02


![][1]В нашей рабочей терминологии есть одно устоявшееся английское выражение «threat landscape». На русский язык оно нормально не переводится (ландшафт угроз, ага). Если все предельно упростить, то это такая штука, на основе которой компании делают выбор: закупить еще железа или потратить деньги на защиту существующей инфраструктуры. Зависимость тут прямая: если ваши поезда постоянно сходят с рельс, то решается это вовсе не закупкой новых локомотивов. Оценивать ландшафт (ну вот, опять) по шкале от приветливого до угрюмого можно по-разному. Вот, например, версия от наших экспертов по безопасности: [итоги 2014-го][2], [прогноз на 2015-й][3] и, для любителей цифр, [цифры][4]. А что думают сами компании? Мы их регулярно об этом спрашиваем (подробнее [тут][5]), но в этом году решили использовать еще один нестандартный метод. Отслеживанием всех значимых новостей в сфере IT-безопасности у нас занимается редакция сайта [Threatpost][6]. Мы решили отобрать 10 событий уходящего года (для версии сайта на [английском][7]) по единственному критерию: популярности соответствующих статей. И получили интересный набор новостей, актуальный для айтишников, наших нынешних и потенциальных клиентов и безопасников. В нем абсолютно нет политики (то есть историй про Сноудена и NSA), и довольно мало тем стратегического плана. Зато на первый план вышли проблемы, которые необходимо учитывать при оценке этого самого ландшафта уже сейчас. Подробнее – под катом. [Читать дальше →][8]

[1]: http://habrastorage.org/files/a40/4f3/bc1/a404f3bc16fe493688f47d07eafc41db.jpg
[2]: http://securelist.ru/analysis/ksb/24603/kaspersky-security-bulletin-2014-razvitie-ugroz-v-2014-godu/
[3]: http://securelist.ru/analysis/ksb/24575/kaspersky-security-bulletin-2014-prognozy-na-2015-god/
[4]: http://securelist.ru/analysis/ksb/24580/kaspersky-security-bulletin-2014-osnovnaya-statistika-za-2014-god/
[5]: http://business.kaspersky.ru/obzor-riskov-it-bezopasnosti-2014-nikomu-poshhady-net/2099/
[6]: http://threatpost.ru/
[7]: http://threatpost.com/
[8]: http://habrahabr.ru/post/246745/#habracut

[>] Простое решение для использования ЭЦП
habra.14
habrabot(difrex,1) — All
2014-12-25 14:00:02


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

[1]: http://habrastorage.org/getpro/habr/post_images/034/6fb/33e/0346fb33e0de9e0289bcbacb19074c81.png
[2]: http://habrahabr.ru/post/246467/#habracut

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


Доброго времени суток, хабр! В этом посте я хочу рассмотреть некоторые особенности языка D, на примере создания структуры алгебраического вектора. В посте **не** рассматриваются вопросы линейной алгебры или другой математики. Стоит напомнить, что в отличии от C++ в D классы и структуры имеют разное логическое предназначение и устроенны они по разному. Структуры не могут наследоваться, в структурах нет никакой другой информации, кроме полей (в классах есть таблица виртуальных функций, например), структуры хранятся по значению (классы всегда ссылками). Структуры прекрасно подходят для простых типов данных. [Читать дальше →][1]

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

[>] Scapegoat-деревья
habra.14
habrabot(difrex,1) — All
2014-12-25 15:30:03


![][1]Сегодня мы посмотрим на структуру данных, называемую Scapegoat-деревом. «Scapegoat», кто не в курсе, переводится как «козёл отпущения», что делает дословный перевод названия структуры каким-то странным, поэтому будем использовать оригинальное название. Деревьев поиска, как вы, возможно, [знаете][2] есть очень много разных видов, и в основе всех их лежит одна и та же идея: "**А хорошо бы при поиске элемента перебирать не весь набор данных подряд, а только какую-то часть, желательно размера порядка log(N)**". Для этого каждая вершина хранит ссылки на своих детей и какой-то критерий, по которому при поиске точно понятно, в какую из дочерних вершин надо перейти. За логарифмическое время это всё будет работать тогда, когда дерево является сбалансированным (ну или стремится к этому) — т.е. когда «высота» каждого из поддеревьев каждой вершины примерно одинакова. А вот способы балансировки дерева уже у каждого типа деревьев свои: в красно-чёрных деревьях в вершинах хранятся маркеры «цвета», подсказывающие когда и как нужно перебалансировать дерево, в АВЛ-деревьях в вершинах хранится разница высот детей, Splay-деревья ради балансировки вынуждены изменять дерево во время операций поиска и т.д. Scapegoat-дерево тоже имеет свой подход к решению проблемы балансировки дерева. Как и для всех остальных случаев он не идеален, но вполне применим в некоторых ситуациях. К достоинствам Scapegoat-дерева можно отнести:

* Отсутствие необходимости хранить какие-либо дополнительные данные в вершинах (а значит мы выигрываем по памяти у красно-черных, АВЛ и декартовых деревьев)
* Отсутствие необходимости перебалансировать дерево при операции поиска (а значит мы можем гарантировать максимальное время поиска O(log N), в отличии от Splay-деревьев, где гарантируется только амортизированное O(log N))
* Амортизированная сложность операций вставки и удаления O(log N) — это в общем-то аналогично остальным типам деревьев
* При построении дерева мы выбираем некоторый коэффициент «строгости» α, который позволяет «тюнинговать» дерево, делая операции поиска более быстрыми за счет замедления операций модификации или наоборот. Можно реализовать структуру данных, а дальше уже подбирать коэффициент по результатам тестов на реальных данных и специфики использования дерева.

К недостаткам можно отнести:

* В худшем случае операции модификации дерева могут занять O(n) времени (амортизированна сложность у них по-прежнему O(log N), но защиты от «плохих» случаев нет).
* Можно неправильно оценить частоту разных операций с деревом и ошибиться с выбором коэффициента α — в результате часто используемые операции будут работать долго, а редко используемые — быстро, что как-то не хорошо.

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

[1]: //habrastorage.org/files/6c6/cbb/e62/6c6cbbe624b140e9b12dc4e4466f2e99.png
[2]: http://habrahabr.ru/post/66926/
[3]: http://habrahabr.ru/post/246759/#habracut

[>] Изменение ролей пользователей 1С 8 (файловый вариант)
habra.14
habrabot(difrex,1) — All
2014-12-25 15:30:03


Небольшая вводная: системный администратор уволился, пароль не оставил. Изменения в законодательстве, необходимо обновить 1С. Вариантов несколько: сбросить список пользователей, сбросить пароль администратора или узнать его с помощью брутфорса. Мы пойдем другим путем — сделаем пользователя с известным нам паролем — администратором. [Читать дальше →][1]

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

[>] Первые шаги к онлайн-офису на Linux или как мы портировали под Mono (о сложностях и их решениях)
habra.14
habrabot(difrex,1) — All
2014-12-25 15:30:03


![][1] Вчера мы выпустили [ONLYOFFICE][2] под Linux и спешим поделиться не только новостями, но и полезной информацией для тех, кто, как и мы, 5 лет назад оказался в собственной ловушке под названием «ASP.Net» Попытки портировать приложение на Unix с использованием проекта Mono мы начали предпринимать еще 4 года назад, однако, долгое время у нас ничего не получалось, поскольку на тот момент Mono сильно отставал по функционалу при портировании с .Net под Windows. В частности, в Mono была сильно урезана поддержка wcf, а также плохо работал asp.net mvc. Впрочем, к счастью разработчиков все эти годы проект Mono активно развивался — добавилась поддержка .Net 4.0 и .Net 4.5, так что весной 2013 мы решили возобновить работу. Здесь мы расскажем о том, с какими проблемами столкнулись в процессе портирования облачного офиса под Mono, как их решили, что имеем в итоге, и как один инициативный пользователь уже через пару часов после релиза обернул всё в Dockerfile. [Читать дальше →][3]

[1]: //habrastorage.org/files/8df/c2c/653/8dfc2c653e344c9cb5f94281cdc2aee3.jpg
[2]: http://www.onlyoffice.com/ru
[3]: http://habrahabr.ru/post/246777/#habracut

[>] Первые шаги к онлайн-офису на Linux или как мы портировали под Mono (о сложностях и их преодолении)
habra.14
habrabot(difrex,1) — All
2014-12-25 17:00:03


![][1] Вчера мы выпустили [ONLYOFFICE][2] под Linux и спешим поделиться не только новостями, но и полезной информацией для тех, кто, как и мы, 5 лет назад оказался в собственной ловушке под названием «ASP.Net» Попытки портировать приложение на Unix с использованием проекта Mono мы начали предпринимать еще 4 года назад, однако, долгое время у нас ничего не получалось, поскольку на тот момент Mono сильно отставал по функционалу при портировании с .Net под Windows. В частности, в Mono была сильно урезана поддержка wcf, а также плохо работал asp.net mvc. Впрочем, к счастью разработчиков все эти годы проект Mono активно развивался — добавилась поддержка .Net 4.0 и .Net 4.5, так что весной 2013 мы решили возобновить работу. Здесь мы расскажем о том, с какими проблемами столкнулись в процессе портирования облачного офиса под Mono, как их решили, что имеем в итоге, и как один инициативный пользователь уже через пару часов после релиза обернул всё в Dockerfile. [Читать дальше →][3]

[1]: //habrastorage.org/files/8df/c2c/653/8dfc2c653e344c9cb5f94281cdc2aee3.jpg
[2]: http://www.onlyoffice.com/ru
[3]: http://habrahabr.ru/post/246777/#habracut

[>] [Из песочницы] База данных простых чисел
habra.14
habrabot(difrex,1) — All
2014-12-25 18:30:02


Давеча снова увлекся простыми числами. Манит меня их тайна. Написал алгоритм, похожий на решето Эратосфена. За 3 часа программа нашла 700 тысяч первых простых чисел. А мне надо хотя бы 14 миллионов простых чисел, чтобы перемножив их, получить число с количеством десятичных цифр, равным 100 миллионам штук. Из статьи [«Еще раз о поиске простых чисел»][1], написанной пользователем [Bodigrim][2], узнал о существовании быстрой программы [primegen][3], которая работает используя [решето Аткина][4]. Установил ее в виртуальной машине LUbuntu (VirtualBox). Действительно, **primegen очень быстро работает!** Тогда встал вопрос, как сохранить 14 миллионов простых чисел? Можно просто каждое простое число записать в файл как int32. А если простое число будет больше мощности 32-х бит? [Читать дальше →][5]

[1]: http://habrahabr.ru/post/133037/
[2]: http://habrahabr.ru/users/bodigrim/
[3]: http://cr.yp.to/primegen.html
[4]: http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%88%D0%B5%D1%82%D0%BE_%D0%90%D1%82%D0%BA%D0%B8%D0%BD%D0%B0
[5]: http://habrahabr.ru/post/246789/#habracut

[>] [Перевод] Проектирование RESTful API с помощью Python и Flask
habra.14
habrabot(difrex,1) — All
2014-12-26 00:00:03


В последние годы REST (REpresentational State Transfer) стала стандартной архитектурой при дизайне веб-сервисов и веб-API. В этой статье я покажу вам как просто создавать RESTful веб-сервисы используя Python и микрофреймворк Flask.

## Что такое REST?

Характеристика системы REST определяется шестью правилами дизайна:

* **Клиент-Сервер**: Должно быть разделение между сервером, который предлагает сервис и клиентом, который использует ее.
* **Stateless**: Каждый запрос от клиента должен содержать всю информацию, необходимую серверу для выполнения запроса. Другими словами, сервер не обязан сохранять информацию о состоянии клиента.
* **Кэширование**: В каждом запросе клиента должно явно содержаться указание о возможности кэширования ответа и получения ответа из существующего кэша.
* **Уровневая система**: Клиент может взаимодействовать не напрямую с сервером, а с произвольным количеством промежуточных узлов. При этом клиент может не знать о существовании промежуточных узлов, за исключением случаев передачи конфиденциальной информации.
* **Унификация**: Унифицированный программный интерфейс сервера.
* **Код по запросу**: Сервера могут поставлять исполняемый код или скрипты для выполнения их на стороне клиентов.

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

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

[>] Настольная игра для самых маленьких программистов (от 7 лет)
habra.14
habrabot(difrex,1) — All
2014-12-26 12:30:04


Мы тут весь год общались с детскими психологами и вообще много думали о теме детского образования. Как один из результатов — сделали игру на развитие логики. ![][1] В общем, юному программисту нужно будет написать стек действий для **таксиста**. Чтобы довезти пассажира куда надо с первого раза. Сразу говорю — можно играть и с 4-5 лет. Как обычно, если ребёнок — сын инженера, смело вычитайте 2 года из минимального возраста. [Читать дальше →][2]

[1]: //habrastorage.org/files/c45/eb0/082/c45eb008241e42f5a8b72a52e740dc52.jpg
[2]: http://habrahabr.ru/post/246795/#habracut

[>] Опыт создания домашнего Wi-Fi маршрутизатора. Часть 2. Установка и настройка ПО
habra.14
habrabot(difrex,1) — All
2014-12-26 12:30:04


![][1] И снова здравствуйте! В [первой части][2] статьи я рассказывал о «железной» составляющей будущего роутера. Поскольку без софта даже самое расчудесное железо, естественно, работать не будет, следовательно требовалось снабдить аппарат соответствующей программной «начинкой». Когда я затевал всё это движение, я предполагал, что будет непросто. Но не предполагал, что настолько. В одном из [комментариев][3] к предыдущей части статьи я клятвенно пообещал рассказать о нижеследующем «к выходным». Благоразумно умолчал к каким именно. :-) Тут ещё умудрился прихворнуть не вовремя, но всё-таки сдерживаю своё обещание. Итак… [Поехали!][4]

[1]: //habrastorage.org/files/1f5/83c/a2e/1f583ca2e55244bd9007a1bbca9c6f8f.jpg
[2]: http://habrahabr.ru/post/245421/
[3]: http://habrahabr.ru/post/245421/#comment_8172877
[4]: http://habrahabr.ru/post/245809/#habracut

[>] Mail.Ru объявляет о начале закрытого бета-тестирования двухфакторной аутентификации
habra.14
habrabot(difrex,1) — All
2014-12-26 16:00:02






Хабр, привет! Мы рады поделиться с вами отличными новостями: мы давно работаем над реализацией двухфакторной аутентификации в сервисах Mail.Ru и сейчас, накануне Нового года, внезапно готовы начать закрытое бета-тестирование. Приглашаем к участию всех желающих. В нашей реализации в качестве второго фактора выступает код, отправленный по SMS на номер телефона, подключенный к аккаунту. Начать закрытое бета-тестирование двухфакторной аутентификации мы решили с Почты — это один из ключевых для нас сервисов, который также наиболее критичен с точки зрения защиты пользовательских данных. Как мы уже сказали, мы также работаем над тем, чтобы поддержать ее и на других проектах Mail.Ru. Именно поэтому в заявке на участие в тестировании мы просим вас указать, какими продуктами вы пользуетесь, и будем предоставлять к ним доступ по мере готовности. Любую обратную связь по работе двухфакторной аутентификации можно присылать на адрес . Первым откликнувшимся бета-тестерам мы готовы предоставить доступ еще до Нового года, чтобы вы успели потестировать функционал во время праздников. [][2]

[1]: https://hackerone.com/mailru
[2]: http://habrahabr.ru/post/246607/#habracut

[>] Bluetooth и другие способы взлома наручников
habra.14
habrabot(difrex,1) — All
2014-12-26 18:30:02


В уходящем году одним из главных бумов IT-индустрии стали гаджеты, которые по-русски лучше всего назвать «наручными». С одной стороны, шагомеры и другие сенсоры персональной физической активности стали всё чаще делать в виде браслетов — такова, например, эволюция популярного трекера Fitbit. С другой стороны, старая гвардия тоже включилась в борьбу за человеческие запястья, выпуская умные часы: тут и Android Wear, и Apple Watch, и Microsoft Band. Сегодня мы поговорим о некоторых опасностях этой моды. [![image][1]][2] Нет, мы вовсе не против здорового образа жизни. Мы даже поддерживаем идею о том, что 1 января лучше не объедаться салатами перед телевизором, а вместо этого принять участие в одном из [новогодних забегов][3]. Однако многие отправятся на такие забеги или тренировки с модными фитнесс-браслетами и другими трекерами. Авторы рекламных статьей, расхваливающих эту бижутерию, обычно не задаются вопросами типа «как здесь набрать пароль?» или «где здесь выключатель?». Между тем, эти вопросы вскрывают целый ворох проблем безопасности, которые несёт миниатюризация наручных компьютеров. [Читать дальше →][4]

[1]: http://habrastorage.org/getpro/habr/post_images/dfa/194/6df/dfa1946dfdb689c64299e3e37eeaec6e.jpg
[2]: http://habrahabr.ru/company/pt/blog/246855/
[3]: http://newrunners.ru/mag/novyj-god-beguna-olive-ili-zhizn/
[4]: http://habrahabr.ru/post/246855/#habracut

[>] Встраивание электронной подписи в системы с WEB-интерфейсом с помощью браузерного плагина и openssl
habra.14
habrabot(difrex,1) — All
2014-12-26 19:30:02


![][1] Несколько лет назад нашей компанией был выпущен продукт [Рутокен Плагин][2], который предназначен для встраивания ЭЦП в системы с web-интерфейсом. Основываясь на полученном опыте интеграции продукта в реальные проекты мне хочется отметить, что нередко разработчики для реализации серверной части предпочитают использовать поддерживающий российские криптоалгоритмы openssl. В данной статье будет расписана типичная схема подобной интеграции, основанная на следующих сценариях использования плагина:

* Регистрация на портале (с выдачей сертификата или по имеющемуся сертификату)
* Строгая аутентификация на портале
* Электронная подпись данных и/или файлов в формате CMS
* Шифрование данных и/или файлов в формате CMS

Данные сценарии предполагают клиент-серверное взаимодействие, написание клиентских скриптов на JavaScript и соответствующих им серверных вызовов openssl. Подробности под катом. [Читать дальше →][3]

[1]: //habrastorage.org/files/fe6/ac6/b87/fe6ac6b878504ec5ac7aca2a9bdf73b4.jpg
[2]: http://www.rutoken.ru/products/all/rutoken-plugin/
[3]: http://habrahabr.ru/post/246861/#habracut

[>] [Перевод] Как я получил медаль за код
habra.14
habrabot(difrex,1) — All
2014-12-27 06:00:03


![][1] В 2005 мой отряд Нацгвардии отправили в Ирак в рамках операции «Освобождение Ирака». Моей армейской специальностью была 92А, что означает специалист по логистике и запасам. Мои задачи состояла в том, чтобы заказывать запчасти для механиков, забирать их, возвращать старые, разбираться с опасными материалами, отправлять и принимать транспортные средства и обслуживать лицензии. И много чего ещё. В общем, в то время вся система крутилась на ULLS-G (Unit Level Logistics System – Ground, система логистики уровня отряда – наземная), которую потом уже сменила SAMS-E (Standard Army Maintenance System – Enhanced, расширенная стандартная система обслуживания армии), которая – так получилось – использовала в качестве бэкенда Oracle. По сравнению с SAMS-E, система ULLS-G выглядела как динозавр. Я много её использовал за 4 года, проведённые на службе. И это было ужасно. ULLS-G работала под MS-DOS (угу), и большинство компьютеров, которые я использовал, работали под MS-DOS (это был 2000 год). Когда мы прибыли на место дислокации, большинство компьютеров уже работали под WinXP/2K, поэтому можно было запускать ULLS-G в режиме совместимости с MS-DOS. [Читать дальше →][2]

[1]: //habrastorage.org/files/b11/ca2/fc2/b11ca2fc22064925a5f67f41bb9a1364.png
[2]: http://habrahabr.ru/post/246885/#habracut

[>] Почему вам НЕ стоит использовать AngularJs
habra.14
habrabot(difrex,1) — All
2014-12-27 18:30:04


Много времени прошло с момента появления AngularJs (в масштабах веб-технологий конечно). Сейчас в интернетах есть огромное количество постов восхваляющих этот фреймворк до небес, что это манна небесная не иначе, а критики не так уж и много как он того заслуживает. Сразу хочу сказать, что фреймворк я знаю хорошо, даже больше чем мне хотелось бы его знать, я программировал на нем в течении 2 лет. И для следующего проекта я его точно не выберу. Так что же не так с ним? Тут нет однозначного ответа, слишком много разных недостатков, которые создают такой облик фреймворку. Если одним словом – непродуманная архитектура. Распространенная практика в мире ангуляра — решать проблемы, которые сам себе же и создал. Хотя на самом деле этой проблемы можно было бы и избежать, если хорошо спроектировать архитектуру. **И ЭТОТ ПАТТЕРН ЕСТЬ ПРАКТИЧЕСКИ В КАЖДОМ АСПЕКТЕ ФРЕЙМВОРКА.** Под катом я приведу много конкретных примеров, так что устраивайтесь поудобнее. [Читать дальше →][1]

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

[>] NORD POS. История о том, зачем мне нужен был ещё один форк Openbravo POS
habra.14
habrabot(difrex,1) — All
2014-12-28 01:30:02




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

В [прошлой статье][1] я рассказал читателям краткую историю десяти лет развития проекта Openbravo POS. В течении 7 лет я принимал активное участие в нём и совместно с другими участниками разрабатывал систему управления торговой точкой с открытым исходным кодом. Но в этом году я решил перенести все свои накопленные наработки в самостоятельный проект [nordpos.mobi][2] и развивать их уже в рамках собственного форка, созданного на базе открытого исходного кода Openbravo POS. ![][3]

#### Истоки

Ключевой причиной остановки развития Openbravo POS, стал фактический уход из проекта её основателя Эдрина Ромера, он полностью переключился на разработку коммерческой версии Openbravo Web POS и с 2010 года к исходному коду оригинальной версии больше не прикасался. По этому больших надежд на возрождение проекта я не питал, а необходимость в развитие приложения у меня была. [Читать дальше →][4]

[1]: http://habrahabr.ru/post/245765/
[2]: http://nordpos.mobi/
[3]: //habrastorage.org/files/494/4d9/750/4944d97509b34746bea5ca0747c68a71.jpg
[4]: http://habrahabr.ru/post/246919/#habracut

[>] Anonymous слил большой список паролей, кредитных карт, а также фильм “The interview” от Sony
habra.14
habrabot(difrex,1) — All
2014-12-28 04:00:04


![][1] Несколько часов назад пользователь под логином Anonymous написал в [твиттере][2], что был украден большой список аккаунтов, с Amazon, PlayStation, XBox Live, Hulu Plus, Walmart и других магазинов и сервисов. [Читать дальше →][3]

[1]: //habrastorage.org/files/a2e/70a/e9d/a2e70ae9d6fc4205bc66248d6897ac47.jpg
[2]: https://twitter.com/AnonymousGlobo
[3]: http://habrahabr.ru/post/246929/#habracut

[>] Docker, SkyDNS и SkyDock — быстро и удобно
habra.14
habrabot(difrex,1) — All
2014-12-28 14:30:03


Не так давно начал изучать, что такое [docker][1], который уже успел нашуметь по всему миру. Не буду вдаваться в философские изыски «а зачем оно надо?», или «фи, это просто очередной модный тренд!», или «кто же такой сырой продукт выпускает?». Я просто хочу дать краткие советы, как можно быстро в домашних условиях пощупать, что такое docker, используя такие блага и удобства как [SkyDock][2] и [SkyDNS][3]. Данная заметка рассчитана на людей, у кого мало времени, чтобы читать горы статьей на английском (или не знают английского), но есть небольшие познания в том, что такое консоль и как установить docker самостоятельно.

docker pull crosbymichael/skydns
docker pull crosbymichael/skydock
docker run -d -v /var/run/docker.sock:/docker.sock --name skydock crosbymichael/skydock -ttl 30 -environment dev -s /docker.sock -domain docker -name skydns
docker run -d -p 172.17.42.1:53:53/udp --name skydns crosbymichael/skydns -nameserver 8.8.8.8:53 -domain docker
, но за такими подробностями придется всё же залезть под хабракат.



[Хочу подробней!][4]

[1]: https://www.docker.com/
[2]: https://github.com/crosbymichael/skydock
[3]: https://github.com/skynetservices/skydns1
[4]: http://habrahabr.ru/post/246933/#habracut

[>] Assembler в 30 строк на Excel
habra.14
habrabot(difrex,1) — All
2014-12-29 06:30:05


В заголовке порядок слов не перепутан. ![][1] Живет в Венгрии юный программист Адам Кисс. Он участвует в чем-то типа онлайн-олимпиады KöMaL. Для решения заданий по информатике предлагается использовать несколько обычных языков программирования: С, С++, Python и некоторые другие. В одном из заданий требовалось написать Сапер и бота для игры в него. Такая задача очень легко решается средствами табличного процессора — того же Excel, например, и пачки макросов. Однако же, макросы использовать нельзя. Адам выкрутился необычным способом: реализовал в книге Excel простенький виртуальный компьютер, который программируется на Ассемблере — Excembler. [Читать дальше →][2]

[1]: //habrastorage.org/files/d7b/259/084/d7b25908471e4d0e9d82cd16c3abce7b.png
[2]: http://habrahabr.ru/post/246975/#habracut

[>] Грязные трюки с макросами C++
habra.14
habrabot(difrex,1) — All
2014-12-29 12:30:03


В этой статье я хочу сделать две вещи: рассказать, почему макросы — зло и как с этим бороться, а так же продемонстрировать пару используемых мной макросов C++, которые упрощают работу с кодом и улучшают его читаемость. Трюки, на самом деле, не такие уж и грязные:

* Безопасный вызов метода
* Неиспользуемые переменные
* Превращение в строку
* Запятая в аргументе макроса
* Бесконечный цикл

Заранее предупреждаю: если Вы думаете увидеть под катом что-то крутое, головоломное и сногсшибательное, то ничего такого в статье нет. Статья про светлую сторону макросов. [Читать дальше →][1]

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

[>] Играем с генетическими алгоритмами
habra.14
habrabot(difrex,1) — All
2014-12-29 13:00:02


Одним субботним декабрьским вечером сидел я над книгой [The Blind Watchmaker][1] (Слепой Часовщик), как на глаза мне попался невероятно интересный эксперимент: возьмём любое предложение, например Шекспировскую строку: _Methinks it is like a weasel_ и случайную строку такой же длины: _wdltmnlt dtjbkwirzrezlmqco p_ и начнем вносить в неё случайные изменения. Через сколько поколений эта случайная строка превратится в Шекспировскую строку, если выживать будут лишь потомки более похожие на Шекспировскую? Сегодня мы повторим этот эксперимент, но в уже совершенно другом масштабе. ![][2] Структура статьи:

1. [Что такое генетический алгоритм][3]
2. [Почему это работает][4]
3. [Формализуем задачу со случайной строкой][5]
4. [Пример работы алгоритма][6]
5. [Эксперименты с классикой][7]
6. [Код и данные][8]
7. [Выводы][9]

**Осторожно трафик!** [Читать дальше →][10]

[1]: http://www.amazon.com/The-Blind-Watchmaker-Evidence-Evolution/dp/0393315703
[2]: //habrastorage.org/files/991/97f/0b3/99197f0b3ead4309b22346b16b2a5e8c.jpg
[3]: http://habrahabr.ru/post/246951#what_is_genetic_algorithm
[4]: http://habrahabr.ru/post/246951#why_does_it_work
[5]: http://habrahabr.ru/post/246951#formalization
[6]: http://habrahabr.ru/post/246951#example
[7]: http://habrahabr.ru/post/246951#experiments
[8]: http://habrahabr.ru/post/246951#source_code
[9]: http://habrahabr.ru/post/246951#conclusions
[10]: http://habrahabr.ru/post/246951/#habracut

[>] Ребята, я пролюбил authstring
habra.14
Difrex(difrex,2) — All
2015-01-20 11:51:03


Всем привет!

Кто-нибудь фетчит эту эху? У меня тут жд сгорел, а конфиг клиента ii я не забекапил -- похерил строку авторизации на spline.

Напишите мне в джаббер difrex@jabber.ru или me@difrex.ru

[>] Критическая уязвимость в PolarSSL
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:05


![image][1] В популярной на мобильных устройствах библиотеке шифрования PolarSSL была обнаружена уязвимость, позволяющая удаленно выполнить произвольный код через специальным образом подготовленный сертификат. Уязвимость заключается в ошибке при обработке полей ASN.1 сертификата: в функции asn1\_get\_sequence\_of(), указатель на связный список asn1\_sequence не инициализируется, что может привести к вызову функции polarssl\_free() с неинициализированным указателем и, в конечном итоге, к выполнению вредоносного кода. Уязвимость проявляется в момент анализа сертификата, а значит, вредоносный код может быть выполнен как на стороне клиента, так и на стороне сервера. [Читать дальше →][2]

[1]: https://polarssl.org/img/polarssl_logo.png
[2]: http://habrahabr.ru/post/248287/#habracut

[>] Ubuntu Make — разработчику в помощь
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:05


![][1] Появилось желание познакомиться с разработкой под android. Скачал Android Studio, распаковал и удалил. Решил поискать другие варианты установки. В процессе поиска наткнулся на Ubuntu Make (он же Ubuntu Developer Tools Center в прошлом), и в этой небольшой заметке хочу рассказать вам о нем. [Читать дальше →][2]

[1]: //habrastorage.org/files/889/9f0/da7/8899f0da7a4e4aa29a059c31f510a658.png
[2]: http://habrahabr.ru/post/248249/#habracut

[>] [Перевод] Категории, большие и малые
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:05


_Это четвертая статья в цикле «Теория категорий для программистов»._ Понять пользу категорий можно изучая различные примеры. Категории бывают всех форм и размеров и часто появляются в самых неожиданных местах. Мы начнем с самых простых.

#### Без объектов

Самая простая категория — без объектов и, как следствие, без морфизмов. [Читать дальше][1]

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

[>] Pivotal прекращает разработку Groovy & Grails с 31 марта
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:05


![][1] Bad news everyone! Компания Pivotal, спонсировавшая разработку Groovy & Grails последние годы, [объявила][2] о прекращении спонсирования проектов начиная с 31 марта. Релизы Groovy 2.4 и Grails 3.0 будут последними релизами под крылом Pivotal. [Читать дальше →][3]

[1]: //habrastorage.org/files/e2c/50d/84b/e2c50d84bc7c42358c05202299b4c2b0.png
[2]: http://blog.pivotal.io/pivotal/news-2/groovy-2-4-and-grails-3-0-to-be-last-major-releases-under-pivotal-sponsorship
[3]: http://habrahabr.ru/post/248227/#habracut

[>] Создаём окружение для PyQt5 в Linux MInt (Ubuntu)
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06


![image][1] ![image][2] ![image][3] Давно уже до пятой версии обновился Qt и вместе с ним PyQt, но найти информацию по ним в русскоязычном сегменте — задача не из простых. Под катом подробный туториал для тех, кто только начинает знакомиться со связкой Qt + python3. Цель: собрать и настроить окружение, пройти путь от установки PyQt5 и создания формы в Qt Designer до запуска переносимого бинарника под Windows (да, всё верно, разрабатываем под Mint, собираем для linux и windows). [Читать дальше →][4]

[1]: https://www.python.org/static/img/python-logo.png
[2]: http://habrastorage.org/getpro/habr/post_images/a22/122/644/a221226446afedd055b333e560e6474f.png
[3]: http://habrastorage.org/getpro/habr/post_images/fed/8fb/6d0/fed8fb6d091b7ea35ff82ae956cf2f3e.png
[4]: http://habrahabr.ru/post/248189/#habracut

[>] Расследование Яндекса: full disclosure о вирусе на Facebook
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06


В середине декабря в российском сегменте Facebook можно было наблюдать массовое заражение пользователей вирусом, который распространялся посредством спам-рассылок личных сообщений и публикаций со ссылками на якобы приватное видео. По [информации СМИ][1], Facebook справился с угрозой и заблокировал распространение вредоносных сообщений. Однако позже мы обнаружили дальнейшее распространение ряда вредоносных ссылок и решили разобраться в том, как работает эта атака, чтобы защитить от неё пользователей Яндекс.Браузера. СМИ сообщали, что виной всему было вредоносное расширение YouTurn для браузера Chrome, которое пользователю предлагалось установить, если он переходил по ссылке, полученной от своего зараженного друга. Но мы выяснили, что в рамках этого заражения использовалось несколько расширений. YouTurn, кстати, 16 декабря уже было удалено из ChromeStore. ![image][2] Все они были одинаково устроены, но распространялись под разными названиями и в разное время через фишинговые ресурсы, похожие на страницу Facebook и размещённые на Amazon S3. Интересно, что помимо механизмов распространения они подгружали во все вкладки браузера рекламные баннеры с сомнительным содержимым и предоставляли доступ к аккаунту зараженного пользователя внутреннему приложению с некоторым ID, которое Facebook тоже заблокировал. Итак, таким ли безобидным был этот «вирус», и что в нём было нового? [Читать дальше →][3]

[1]: http://top.rbc.ru/technology_and_media/16/12/2014/54903a742ae596fb3cd189bb
[2]: http://habrastorage.org/files/d69/d4e/59a/d69d4e59a680429f85cc5034e7ee57f8.png
[3]: http://habrahabr.ru/post/248225/#habracut

[>] Krita: координаты Грина или как сделать из дракона кенгуру
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06


На днях была выпущена уже вторая [бета-версия][1] Криты 2.9. Этой статьей я хотел бы начать рассказ о том новом функционале, который ждет пользователей в предстоящем релизе. Одной из самых интересных функций этого релиза является преобразование клеткой. Оно позволяет изменять форму объектов без внесения искажений в изображение. О нем и пойдет сегодня речь… ![][2] [Читать дальше →][3]

[1]: https://krita.org/item/krita-2-9-beta-2-is-out/
[2]: //habrastorage.org/files/803/422/285/803422285bd748f1bc85c2bcc8eab357.jpg
[3]: http://habrahabr.ru/post/248113/#habracut

[>] PHDays V: обнаружение ботнетов, трюки с NFC и соревнования «социальных инженеров»
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06


[![image][1]][2] Пятый международный форум по практической безопасности Positive Hack Days состоится 26 и 27 мая 2015 года в московском Центре международной торговли. На конференции, организованной компанией Positive Technologies, соберутся ведущие специалисты по киберзащите и элита хакерского мира, представители государственных структур и руководители крупного бизнеса, молодые ученые и журналисты. В начале декабря стартовал прием заявок от желающих выступить на PHDays V, и сейчас мы анонсируем первую группу участников, попавших в основную техническую программу форума. [Читать дальше →][3]

[1]: http://habrastorage.org/getpro/habr/post_images/a65/14f/4ed/a6514f4ed8615808227404cf1b3acfb0.jpg
[2]: http://habrahabr.ru/company/pt/blog/248205/
[3]: http://habrahabr.ru/post/248205/#habracut

[>] Clojure — трансдьюсеры, редьюсеры и прочая муть
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06


![][1] В последнее время определенную известность получили [transducers][2] — новая фишка из еще не вышедшей Clojure 1.7. На момент написания статьи актуальна Сlojure 1.7-alpha5, но уже успело появиться изрядное количество портов трансдьюсеров на разнообразные языки: [Python][3], [Ruby][4], [JavaScript][5], [PHP][6], [Java][7], [C++][8], [Lua][9], [Erlang][10]. И… это, по правде говоря, немного обескураживает. Ведь довольно давно (еще в Clojure 1.5) добавили библиотеку [reducers][11]. Так вот про редьюсеры никто особо не говорил, никуда ничего не портировал, хотя, вроде как, делают они схожие вещи… Или нет? Давайте разберемся, для чего нам в Clojure понадобились все эти reducers & transducers (они нам правда нужны?), как они работают, как их использовать… И выясним наконец, не пора ли выкидывать reducers на свалку. [Сворачиваемся...][12]

[1]: //habrastorage.org/files/ad6/d73/4fe/ad6d734fe68142f39603c9688b28f972.jpg
[2]: http://clojure.org/transducers
[3]: https://bitbucket.org/sixty-north/python-transducers
[4]: https://github.com/cognitect-labs/transducers-ruby
[5]: https://github.com/jlongster/transducers.js
[6]: https://github.com/mtdowling/transducers.php
[7]: https://github.com/cognitect-labs/transducers-java
[8]: https://github.com/kirkshoop/transducer
[9]: https://github.com/gordonbrander/transducers.lua
[10]: https://github.com/sfwc/erlang-transducers
[11]: http://clojure.org/reducers
[12]: http://habrahabr.ru/post/247889/#habracut

[>] Tree — убийца JSON, XML, YAML и иже с ними
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06


Здравствуйте, меня зовут Дмитрий Карловский и я… много думал. Думал я о том, что не так с XML и почему его в последнее время променяли, на бестолковый JSON. Результатом этих измышлений стал новый формат данных, который вобрал в себя гибкость XML, простоту JSON и наглядность YAML. ![image][1] Tree — двумерный бинарно-безопасный формат представления структурированных данных. Легко читаемый как человеком так и компьютером. Простой, компактный, быстрый, выразительный и расширяемый. Сравнивая его с другими популярными форматами, можно составить следующую сравнительную таблицу:




































































































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

[1]: http://habrastorage.org/getpro/habr/post_images/f34/fa4/c61/f34fa4c61f8e636a0d83a4d70eebb58b.png
[2]: http://habrahabr.ru/post/248147/#habracut

[>] [Перевод] Наследие Якоба Бернулли в Wolfram Language (Mathematica)
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06






_Перевод поста Олександра Павлыка (Oleksandr Pavlyk), «[Jacob Bernoulli’s Legacy in Mathematica][1]». Скачать перевод в виде документа Mathematica, который содержит весь код использованный в статье, а также дополнительные материалы, можно [здесь][2]._ 16 января 2015 г. исполнилось 360 лет со дня рождения [Якоба Бернулли][3]. **In[1]:=** Якоб Бернулли стал первым математиком известнейшей [семьи Бернулли][4], к которой принадлежат многие известные математики XVII и XVIII веков. Математическое наследие Якоба Бернулли очень богато. Он ввел так называемые **_числа Бернулли_** ([Wiki][5] / [MathWorld][6]), нашел решение _**дифференциального уравнения Бернулли**_ ([Wiki][7] / [MathWorld][8]), изучал _**процесс Бернулли**_ ([Wiki][9] / [MathWorld][10]), доказал _**неравенство Бернулли**_ ([Wiki][11] / [MathWorld][12]), вычислил _**число e**_ ([Wiki][13] / [MathWorld][14]), а также выявил **_слабый закон больших чисел_** (теорема Бернулли) ([Wiki][15] / [MathWorld][16]). [Читать дальше →][17]

[1]: http://blog.wolfram.com/2015/01/15/jacob-bernoullis-legacy-in-mathematica/
[2]: http://goo.gl/QdXwuz
[3]: https://ru.wikipedia.org/wiki/%D0%91%D0%B5%D1%80%D0%BD%D1%83%D0%BB%D0%BB%D0%B8,_%D0%AF%D0%BA%D0%BE%D0%B1
[4]: https://ru.wikipedia.org/wiki/%D0%91%D0%B5%D1%80%D0%BD%D1%83%D0%BB%D0%BB%D0%B8_(%D1%81%D0%B5%D0%BC%D1%8C%D1%8F)
[5]: https://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%B0_%D0%91%D0%B5%D1%80%D0%BD%D1%83%D0%BB%D0%BB%D0%B8
[6]: http://mathworld.wolfram.com/BernoulliNumber.html
[7]: https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%91%D0%B5%D1%80%D0%BD%D1%83%D0%BB%D0%BB%D0%B8
[8]: http://mathworld.wolfram.com/BernoulliDifferentialEquation.html
[9]: https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%91%D0%B5%D1%80%D0%BD%D1%83%D0%BB%D0%BB%D0%B8
[10]: http://mathworld.wolfram.com/BernoulliTrial.html
[11]: https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D1%80%D0%B0%D0%B2%D0%B5%D0%BD%D1%81%D1%82%D0%B2%D0%BE_%D0%91%D0%B5%D1%80%D0%BD%D1%83%D0%BB%D0%BB%D0%B8
[12]: http://mathworld.wolfram.com/BernoulliInequality.html
[13]: https://ru.wikipedia.org/wiki/E_(%D1%87%D0%B8%D1%81%D0%BB%D0%BE)
[14]: http://mathworld.wolfram.com/e.html
[15]: https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BA%D0%BE%D0%BD_%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%B8%D1%85_%D1%87%D0%B8%D1%81%D0%B5%D0%BB
[16]: http://mathworld.wolfram.com/WeakLawofLargeNumbers.html
[17]: http://habrahabr.ru/post/248173/#habracut

[>] Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 2 из 6
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06


Давайте знакомиться, это я. ![][1] То есть, модель моей башки, отрендеренная в программе, которую мы сделаем за ближайшие час-два. В прошлый раз мы нарисовали проволочную сетку трёхмерной модели, в этот раз мы зальём полигоны. Точнее, треугольники, так как OpenGL практически любой полигон триангулирует, поэтому ни к чему разбирать сложный случай. Напоминаю, что этот цикл статей создан для _самостоятельного_ программирования. Время, которое я здесь привожу — это не время чтения моего кода. Это время написания вашего кода с нуля. Мой код здесь только для того, чтобы сравнить ваш (рабочий) код с моим. Я совсем не являюсь хорошим программистом, поэтому ваш код может быть существенно лучше моего. Любая критика приветствуется, любым вопросам рад. **Пожалуйста, если вы следуете этому туториалу и пишете свой код, выкладывайте его на github.com/code.google.com и им подобные и давайте ссылки в комментариях! Это может хорошо помочь как и вам (другие люди могут чего посоветовать), так и будущим читателям.** [Читать дальше →][2]

[1]: http://habrastorage.org/getpro/habr/post_images/b58/d5f/0e8/b58d5f0e8f7de59bcad1354b0fc92a35.png
[2]: http://habrahabr.ru/post/248159/#habracut

[>] [Из песочницы] Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 1 из 6
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06




# Постановка задачи

Цель этого цикла статей — показать, как работает OpenGL, написав его (сильно упрощённый!) клон самостоятельно. На удивление часто сталкиваюсь с людьми, которые не могут преодолеть первоначальный барьер обучения OpenGL/DirectX. Таким образом, я подготовил краткий цикл из шести лекций, после которого мои студенты выдают неплохие рендеры. Итак, задача ставится следующим образом: не используя никаких сторонних библиотек (особенно графических) получить примерно такие картинки: ![][1] _Внимание, это обучающий материал, который в целом повторит структуру библиотеки OpenGL. Это будет софтверный рендер, я не ставлю целью показать, как писать **приложения под** OpenGL. Я ставлю целью показать, **как сам OpenGL** устроен. По моему глубокому убеждению, без понимания этого написание эффективных приложений с использованием 3D библиотек невозможно._ [Читать дальше →][2]

[1]: http://habrastorage.org/getpro/habr/post_images/d1b/019/154/d1b019154c65deedcc6e6f66f33951de.png
[2]: http://habrahabr.ru/post/248153/#habracut

[>] Как подружить QML с чужим OpenGL контекстом. Часть II: Загружаем QML
habra.14
habrabot(difrex,1) — All
2015-01-20 12:00:06


В данной статье я попытаюсь рассказать о том как загружать QML в случае, если у вас, по какой-то причине, нет возможности использовать [QQuickView][1], а необходимо работать непосредственно с [QQuickWindow][2]. В моем случае, таковой причиной являлось то, что с [QQuickRenderControl][3] умеет работать только QQuickWindow. В вашем же случае, таковой причиной может быть например то, что вам понадобилось загружать QML не из какого либо файла, а например из памяти, что открывает возможность генерации QML «на лету», или запроса содержимого QML, или его части, у пользователя — занятно, не так ли? [Читать дальше →][4]

[1]: http://doc.qt.io/qt-5/qquickview.html
[2]: http://doc.qt.io/qt-5/qquickwindow.html
[3]: http://doc.qt.io/qt-5/qquickrendercontrol.html
[4]: http://habrahabr.ru/post/248103/#habracut

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 41