Pull to refresh
0
0

User

Send message

Урок matte painting

Reading time1 min
Views28K

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

Во вложении четыре части, у кого диалап — можно не заходить :):)

Читать дальше →
Total votes 193: ↑180 and ↓13+167
Comments94

Как научить ИИ делать продуманные ошибки

Reading time3 min
Views1.7K
Разработчики компьютерных игр подняли интересную тему для обсуждения: как повысить реалистичность искусственного интеллекта, который действует безошибочно. Проблема в том, что во многих компьютерных играх правильный ход или решение просчитывается слишком просто для мощнейших процессоров современных ПК. Например, в виртуальном бильярде компьютер никогда не ошибается и всегда рассчитывает идеальную траекторию шара. Такая же плачевная ситуация в шахматах.

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

Другими словами, обычное ухудшение качества игры ИИ не является достаточно реалистичным. Оно не доставляет удовольствия игроку.

Из этого положения есть один выход. Нужно сделать так, чтобы компьютер играл в полную силу, но при этом сдавал игру. Как в спорте — ряд мелких, на первый взгляд, случайных просчётов, которые ведут к проигрышу или значительно увеличивают шансы противника. То есть ИИ должен делать умные, продуманные ошибки.
Читать дальше →
Total votes 102: ↑95 and ↓7+88
Comments45

Лучшие практики в области проектирования Новостных Социальных сетей

Reading time8 min
Views2.8K
Каким образом вы можете получать ежедневные новости в эти дни? Ну… может быть посещением ваших любимых сайтов и блогов, но это неэффективно, поскольку эти блоги не обладают жесткой сортировкой обновлений. Возможно, вы подпишитесь на них с помощью RSS, который поставляет все новые статьи прямо к вам, но в этом случае вам придется самостоятельно разбираться со всеми новыми статьями, чтобы найти то, что интересно вам. Другим вариантом сегодня было бы посетить новостную социальную сеть.

Агрегаторы ссылок Социальных новостных сайтов, основная функция которых заключается в том, чтобы собирать и обмениваться интересными ссылками. Это может быть сделано путем представления ссылки пользователем или автоматически в системе. Аспект агрегирования является лишь его частью, хотя, этот аспект также сортирует ссылки. Опять же, это может быть сделано путем голосования пользователей и некоторыми механическими алгоритмами (хотя в данном случае можем ли мы действительно назвать это «социальный» новостной сайт?). Конечный результат такой же, однако: самые интересные ссылки выходят в топ, эта особенность делает социальные новостные сайты большой альтернативой RSS.

В этой статье я оформил витрину из некоторых нынешних социальных новостных сайтов, которые будут определять тенденции и закономерности в конструкции и предложат некоторые наилучшие практики необходимые при проектировании таких объектов. Давайте начнем с рассмотрения четырех популярных социальных новостных сайтов, и увидим сравнения в этих образцах.

Изучить опыт Новостых социальных сетей
Total votes 27: ↑23 and ↓4+19
Comments14

Создан боевой летающий робот, самостоятельно принимающий решения об обстреле целей

Reading time1 min
Views3.7K
Сайт CyberSecurity.Ru поведывает, что оборонный подрядчик Northrop Grumman представил военной общественности свою последнюю роботизированную военную разработку — беспилотный боевой самолет X-47B Unmanned Combat Air System, который производителем назван «самым развитым летающим роботом в мире».

[X-47B, летающий боевой робот]

Названы три основных отличия X-47B от прочих существующих беспилотников.

Во-первых, X-47B способен взлетать и садиться не только на взлётные полосы аэродромов, но также и на авианесущие крейсеры, что значительно сложнее.

Во-вторых, роботосамолёт может автономно стыковаться с военным авиазаправщиком в воздухе и получать топливо самостоятельно.

В-третьих, X-47B обладает совершенной системой ведения боя, которая позволяет ему атаковать не только наземные цели, но также и воздушные объекты — например, другие самолёты.

В качестве вооружений самолёт может нести большие станковые пулемёты и набор крылатых ракет класса «воздух-земля» и «воздух-воздух».

Тот же сайт поведывает, что в этом кибернетическом самолёте и ещё одна особенность, которую не назвали в числе основных, но которая оказалась военным интересна: X-47B обладает автономной системою ведения огня.

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

Читать дальше →
Total votes 124: ↑101 and ↓23+78
Comments156

SOCKS через SSH — не только для ICQ

Reading time1 min
Views31K
Сегодняшние проблемы с аськой напомнили об одном простейшем способе запуска SOCKS-прокси. Многие этот способ знают, но подозреваю, что не все, поэтому решил поделиться.

Итак, что нужно:
a) SSH-клиент (любой, под Linux или под Windows, главное, чтобы он позволял задавать нужные нам параметры, под Windows вполне подойдет putty)
b) Доступ на любой сервер по ssh (в случае с аськой помогает любой буржуйский хостинг).

Читать дальше →
Total votes 31: ↑28 and ↓3+25
Comments42

Запись ликбез-вебинара про Закон о защите персональных данных

Reading time1 min
Views3.9K
Сегодня мы провели вебинар, посвященный пресловутому Закону о защите персональных данных (РФ). Ведущий вебинара Евгений Царев (автор более 10 исследований, 50 статей и 300 публикаций и комментариев в СМИ по информационной безопасности) рассказал о новых моментах в законодательстве, а также ответил на множество вопросов участников.

Запись и презентация в открытом доступе доступны по ссылке.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments1

Быстрая реализация инкрементального бэкапа на Amazon S3

Reading time6 min
Views23K
После переезда моего сайта с shared-хостинга на виртуальный сервер в облаке вплотную встал вопрос об архивации данных: если раньше о ежедневном бэкапе беспокоился хостер, то теперь эти заботы целиком легли на плечи администратора. Так как хранить большие архивы на своем сервере не только небезопасно, но и (иногда) накладно, было решено копировать основную массу файлов на сервис S3 от Amazon. Под катом описывается мой способ реализации инкрементального бэкапа. Способ достаточно нубовский, но желающие повторить его без труда найдут пути тонкой настройки под свои нужды.
Читать дальше →
Total votes 41: ↑39 and ↓2+37
Comments23

Events bubbling и events capturing

Reading time5 min
Views64K
intro
Представьте, что на странице есть два блока, и один вложен в другой, как это показано на рисунке. В разметке страницы это выглядит так:
   <div id="block_outer">
      <div id="block_inner"></div>
   </div>

А теперь представьте, что к блоку #block_outer привязано событие onClickOuter, а к блоку #block_inner, соответственно, событие onClickInner. И ответьте на вопрос, как сделать так, чтобы при клике на блок #block_inner, событие onClickOuter не вызывалось? И будет ли оно вообще вызвано? И если будет, то в каком порядке события будут вызываться? И знаете ли вы, как работает метод jQuery.live или подобные в других библиотеках (events delegation в ExtJS, например)?
Если я хоть немного заинтересовал, добро пожаловать под кат.
Total votes 93: ↑87 and ↓6+81
Comments21

Получение экземпляра класса запроса по сигнатуре его интерфейса

Reading time7 min
Views12K
Не так давно на Хабре была опубликована статья (ссылка на топик) моего коллеги AlexanderByndyu, описывающая уход от использования Repository в сторону применения связки QueryFactory + классы запросов Query. При этом в комментариях разгорелся весьма интересный диспут, касающийся целесообразности приведенного в статье решения. Было достаточно много интересных отзывов, среди которых особенно выделялись высказывания о том, что, дескать, QueryFactory не нужен и является лишней обузой, мешающей безболезненному добавлению, изменению и удалению классов запросов. В данной статье я хочу показать подход, который позволяет избавиться от применения QueryFactory, через активное использование IoC контейнера. Данную организацию работы со структурой классов запросов мы использовали в одном из наших недавних проектов, где в качестве IoC использовался Castle.Windsor.
читать далее
Total votes 23: ↑18 and ↓5+13
Comments25

Знаешь ли ты JAVA, %username%? Часть вторая

Reading time5 min
Views51K
JAVA Evil EditionВ начале января я написал пост с интересными тестовыми задачками по Java. Он вызвал достаточно большой интерес, интересные задачки еще остались, поэтому продолжим.

Сразу отвечу на некоторые вопросы, ответы на которые могли затеряться в комментах.
Во-первых, спрашивали, что почитать по теме. Очень рекомендую эту книжку. На русском не встречал, но читается она почему-то гораздо легче большинства книг по программированию, так что для большинства это не должно стать проблемой. Во-вторых, спрашивали где взять таких задачек. Тут что-то конкретное не посоветую, задачи из разных источников, в том числе некоторых нефришных наборов тестов, поэтому как вариант можно обратить внимание на источники, ссылки на которые есть в комментах к первой части статьи.

Так получилось, что в данную часть попали более легкие задачи, так что результаты должны быть лучше. Итак, очередной тест под хабракатом (Осторожно, во второй половине ответы и пояснения).
Читать дальше →
Total votes 72: ↑65 and ↓7+58
Comments28

Непрерывная интеграция на примере Hudson

Reading time10 min
Views33K
Все мы прекрасно понимаем, что тестирование является неотъемлемой частью жизненного цикла разработки ПО. Чем чаще мы тестируем наш код, тем быстрее мы сможем обнаружить ошибку, вкравшуюся в него в ходе разработки, и быстрее её исправить. При этом стоит понимать, что тестирование крайне желательно проводить в окружении, максимально близком к боевому (ОС, ПО, Hardware, Нагрузка), что бы иметь возможность обнаружить ошибки, которые не проявляются на сервере разработки, но могут появиться в бою. Компануя два вышесказанных тезиса вместе мы получаем концепцию, называемую Continuous Integration.

Суть CI заключается в постоянной (например, после каждого commit'а) сборке и тестировании разрабатываемого ПО в максимально приближенной к боевой среде с целью как можно более раннего обнаружения ошибок и оповещения о них разработчиков. Сама идея CI принадлежит Martin Fowler, подробно описавшему её в своей статье.

Для автоматизации процесса непрерывной сборки существуют готовые решения (Hudson, CruiseControl), интеграцию одного из которых (Hudson) я и опишу в этой статье.

Читать дальше →
Total votes 40: ↑38 and ↓2+36
Comments21

Grails, jQuery, AJAX: делаем anchor-навигацию. Часть 1

Reading time5 min
Views17K

AJAX и все, все, все


В предыдущей серии мы делали простенькое Grails-приложение с использованием jQuery, а также решили для себя, что использовать jQuery в Grails можно и даже нужно. Обсудим более серьезные вещи, которые можно сделать с такой связкой.

Нетрудно заметить, что все больше сайтов используют AJAX и частичные обновления страниц, причем в невероятном количестве. В частности, «начиненные» AJAX ссылки могут использоваться для внутренней навигации по странице, переключения каких-то вкладок. Это хорошо тем, что
А) меньше данных нужно перегонять от сервера — только нужный кусок страницы и
Б) веб-страницы часто загружают просто гигантские CSS и JavaScript-файлы, которые при AJAX-обновлении можно повторно не загружать.

Итак, очень распространено построение приложений по сценарию: одна большая «стартовая» страница, загружающая весь JavaScript-код и CSS и более мелкие «внутренние» функциональные блоки, загружаемые через AJAX. С этим есть ряд проблем:
  1. В результате AJAX-действий внутреннее состояние страницы не отражено в адресной строке браузера.
  2. Как следствие, внутренние страницы не могут быть запомнены в закладки, нельзя «отправить ссылку другу».
  3. Не работает Back/Forward навигация в браузере, т.к. AJAX-ссылки не попадают в историю браузера.
Однако крупные сайты нашли некое «хакерское» решение, которое мы сейчас рассмотрим и напишем небольшой свой собственный аналог на Grails и jQuery.
Читать дальше →
Total votes 43: ↑37 and ↓6+31
Comments51

Удачная модель ветвления для Git

Reading time10 min
Views980K
Перевод статьи Vincent Driessen: A successful Git branching model

В этой статье я представляю модель разработки, которую использую для всех моих проектов (как рабочих, так и частных) уже в течение года, и которая показала себя с хорошей стороны. Я давно собирался написать о ней, но до сих пор не находил свободного времени. Не буду рассказывать обо всех деталях проекта, коснусь лишь стратегии ветвления и управления релизами.



В качестве инструмента управления версиями всего исходного кода она использует Git.

Читать дальше →
Total votes 180: ↑171 and ↓9+162
Comments105

Gradle: Better Way To Build

Reading time5 min
Views113K
Ни один проект с использованием платформы Java (и не только) не обходится без инструментов сборки (если только это не «Hello, world!»). Рано или поздно, но собирать дистрибутив руками надоедает. Да и компилировать из консоли было бы неплохо, если в проекте используется несколько разных IDE. А перед сборкой дистрибутива было бы здорово проставить номер версии в его имени. И unit тесты прогнать — не зря же Kent Beck книжки пишет. А там и Continues Integration на горизонте маячит. И здорово было бы научить CI сервер это все делать самостоятельно. Одним словом, есть уйма задач.

Раз есть задачи, то есть и решения. Думаю, большинство разработчиков хоть раз, но сталкивались с Ant. Очень многие используют Maven. Есть другие, не такие распространённые инструменты: GAnt, Buildr, и др. Каждый из них обладает набором своих плюсов и минусов, но сегодня я хочу представить вам кое-что новенькое. Gradle.
Читать дальше →
Total votes 39: ↑39 and ↓0+39
Comments14

Телевизионные развлечения

Reading time6 min
Views8.3K
Все началось с того что нам привезли несколько тюнеров PBI DCH-4000P-S42 Вот таких приблизительно:



По характеристикам сие чудо китайской промышленности приближается к профессиональным тюнерам, но при несопоставимо низкой цене. Изначально предполагалось использовать эти тюнера для замены зоопарка, который начинался Openbox-ами и Glob-ами и заканчивался Vantag-ами, а также для реализации DVB-C по HFC и некоего подобия DVB-S при помощи Митрис-а. Беглое изучение документации показало что кроме требуемых от него изначально (и не интересных) выходов ASI,SDI, A/V, RGB, CVBS, XRL оное еще умеет и IP input or output with UDP/RTP (optional) а также Multicast and Unicast on IP что уже намного интереснее и профильнее как бы. Есть такое профессиональное заболевание – обязательно потрогать ручками что-то, где есть хотя бы намек на сетевые возможности.

Читать дальше →
Total votes 41: ↑39 and ↓2+37
Comments25

Реализация PubSubHubbub-подписики в Java-приложении на App Engine

Reading time7 min
Views2.6K
PubSubHubbubРазбираясь с обозначенной в заголовке темой, попутно обнаружил, что в рунете она раскрыта довольно слабо, хотя с момента представления данного протокола прошло уже много времени. Хочу слегка заполнить этот небольшой пробел, поделившись опытом.
Напомню кратко, что PubSubHubbub (PuSH) — это протокол, предложенный Google и призванный сделать более эффективным процесс доставки данных по каналам типа RSS от издателей к подписчикам. Центральное место в схеме, обеспечивающей работу протокола, отводится независимым хабам, выполняющим роль посредников между непосредственными источниками данных и конечными их получателями. При этом, хаб оповещает всех зарегистрированных у него подписчиков канала о поступлении новых данных сразу после их появления, одновременно передавая новую порцию данных.
Таким образом, если вы создаете приложение, занимающееся обработкой фидов в формате RSS или Atom, то можете заметно облегчить себе жизнь, возложив «черную» работу на хаб. Конкретные плюсы такой схемы:
  • возможность «интеграции» множества внешних каналов в единый поток данных общего формата, поступающий на вход приложения: хаб может позаботиться об этом;
  • отсутствие необходимости отделения новых данных от старых: хаб доставит только новые;
  • не нужно постоянно отслеживать канал на предмет новых данных: хаб сам сообщит когда надо;
  • минимальное время с момента публикации до момента оповещения вашего приложения.

Другими словами, вы можете получить оперативную доставку данных, заметно сэкономив как на объеме входящего трафика, так и на процессорном времени приложения. Для приложений на App Engine, ограниченных квотами, эти моменты могут оказаться принципиальными. Кроме того, вы сэкономите свое время, поскольку придется написать меньший объем несложного кода.
Ниже приведены минимально необходимые фрагменты кода на Java, которые были успешно мною опробованы на одном из хабов. Кода совсем немного и он несложный.

Читать дальше →
Total votes 24: ↑22 and ↓2+20
Comments20

Введение в разработку USB периферии

Reading time4 min
Views49K
Последние полгода я участвую в разработке первого в своей жизни USB-устройства и прикладного ПО к нему, и сейчас хочу поделиться своим пониманием того, как там всё работает: микроконтроллер, драйвер, прикладное ПО. Также затрону вопрос о выборе идентификаторов VID/PID. Список полезных ссылок для желающих более подробно разобраться в теме прилагается.
Читать дальше →
Total votes 103: ↑103 and ↓0+103
Comments109

Все о 960gs — отличном css-фреймворке для построения модульных сеток

Reading time6 min
Views54K


Я хочу дать исчерпывающее описание замечательному фреймворку для построения модульных сеток 960gs. Недавно где-то в комментариях сказали, что 960gs сложнее в понимании, чем blueprint, что меня удивило. Я не хочу заниматься сравнением этих фреймворком, хотя бы потому, что они выступают в разных весовых категориях, однако, для построения модульной сетки ничего легче и проще в понимании, чем 960gs я не видела.


Читать дальше →
Total votes 127: ↑112 and ↓15+97
Comments83

Information

Rating
Does not participate
Location
Россия
Registered
Activity