Pull to refresh
  • by relevance
  • by date
  • by rating

Исследование: трафик с умных камер помогает преступникам определить, когда хозяев нет дома

Information SecurityResearch and forecasts in ITVideo equipmentSmart House
image

Исследование Лондонского университета королевы Марии (QMUL) и Китайской академии наук показало, что некоторые популярные модели умных камер фактически могут помогать преступникам, сигнализируя о том, что владелец покинул дом. В ходе работы изучили данные, предоставленных крупным китайским производителем камер.

Подобные камеры позволяют пользователям контролировать свои дома удаленно, но исследователи выяснили, что трафик, генерируемый устройствами, может раскрывать информацию, нарушающую конфиденциальность.
Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Views3.6K
Comments 17

Ученые создали новый класс «паттернов Тьюринга» в колониях кишечной палочки

Popular scienceBiotechnologies

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

Читать далее
Total votes 7: ↑7 and ↓0 +7
Views1.3K
Comments 1

Ученые выяснили, как мозг укрепляет воспоминания во время сна

Research and forecasts in ITPopular scienceBrain

Исследователи из Университетов Бирмингема (Великобритания) и Людвига-Максимилиана (Германия) выяснили, что сочетание активации определенных паттернов во время сна позволяет мозгу фиксировать воспоминания.

Читать далее
Total votes 12: ↑12 and ↓0 +12
Views3.2K
Comments 2

Прошу помощи ссылками по ООП в PHP

PHP
Господа PHP-разработчики и «претендующие», прошу — поделитесь ссылками на ресурсы, где можно подчерпнуть знания, помогающие добиться хорошего понимания ООП в PHP. А именно, на те сайты где много рассказывается о паттернах (маперы, фасады, фабрики и т.д.) и уровнях абстракции (не скажу точнее, т.к. сам сомневаюсь в собственной интерпретации термина).
Так же, возможно, на скрипты (движки) чего-либо, разработанные с применением описанных подходов.
Total votes 41: ↑23 and ↓18 +5
Views7.1K
Comments 98

Азбука хорошего разработчика. Книжки для чтения

Professional literatureReading room
Часто разработчиков нужно направить, поскольку они не имеют понятия о том, что им нужно изучить для повышения своего уровня. В этой заметке я опишу источники знаний, в моем понимании, необходимые для этой цели. Пишу в порядке, в котором я их предлагаю читать.

Паттерны проектирования

Википедия — там, в принципе, на хорошем уровне все описано и приведены примеры на разных языках.
Базовая книга – классика:
«Приемы объектно-ориентированного проектирования. Паттерны проектирования» — читал книгу давно, и раза 3. Вам того же советую. Даст возможность понимать большое количество терминов, произносимых другими разработчиками.

Рефакторинг

«Рефакторинг. Улучшение существующего кода» — вероятно, эта книга сделала революцию в написании кода. Читается быстро и интересно. Методы рефакторинга должны отложиться в голове до конца жизни. Ваш код отныне будет лучше. В книге есть упоминание про юнит тестинг.
Читать дальше →
Total votes 73: ↑72 and ↓1 +71
Views1.6K
Comments 66

Пространство имён в Javascript-коде 2

Website development
Прочитав заметку об использовании пространств имён в Javascript коде мне захотелось поделиться подходом, который использую я. Он изобретён не мной, конечно, но, возможно кто-то о нём не знает. Этот подход отличается от предложенных в той статье тем, что позволяет кроме функций и данных видимых снаружи, также определять данные и функции локальные для пространства имен и невидимые снаружи.

Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Views7.1K
Comments 42

Проектирование баз данных. Паттерн Компоновщик (Composite)

SQL
Web 2.0 победоносно шагает по виртуальному миру. Социальные сети растут как грибы после дождя. Теперь в одном месте вы можете хранить свои фото, видеозаписи, писать блоги и слушать музыку. Все это можно комментировать, класть в избранное, копировать… Возможностей много, контент социальных сетей разнородный и разнообразный, и в этом их преимущество.

А теперь представьте себе структуру БД какого нибудь «Вконтакте». Представили? И что вы видите? Множество таблиц с данными? А что еще? Множество таблиц для связей много-ко-многим! Необходимых, с точки зрения реляционной БД, но лишних с точки зрения логики. Но это еще не все. Среди полей таблиц мы видим огромное количество «лишних» полей, являющихся всего лишь внешними ключами, служащими для связей один-ко-много, так же необходимых с точки зрения реляционной теории, но абсолютно бесполезных с точки зрения логики.
Читать дальше →
Total votes 51: ↑47 and ↓4 +43
Views13.2K
Comments 98

Как правильно работать с фрилансерами

Freelance
Мой опыт показывает, что больше всего вопросов у людей возникает по поводу работы с фрилансерами без оглядки на то, что фрилансер пропадет или элементарно «кинет».

Действительно, довольно актуальный вопрос для заказчиков. Никто не хочет терять свое время и связываться с недобросовестными фрилансерами.

Иногда мне задают вопросы в духе «как вообще можно работать с командой фрилансеров? Ведь они же постоянно пропадают/срывают сроки и т.д.».

На самом деле — работать с фрилансерами — не так сложно и опыт последних 3 лет в роли менеджера фриланс-команды говорит о том, что это вполне возможно. За это время нас «кинул» только один фрилансер — он просто пропал. Вопрос конечно решили своими силами, но эксперименты с малоизвестными личностями решили больше не проводить.
Дальше интереснее
Total votes 53: ↑43 and ↓10 +33
Views5.1K
Comments 114

Серверная валидация пользовательских данных

.NET

Доброго времени, хаброчеловеки!


Мне хотелось бы поднять тему серверной валидации пользовательских данных. Поискав на хабре топики данной тематики и погуглив, пришёл к выводу, что люди часто изобретают свои собственные велосипеды для реализации механизма валидации. В данной статье хочу рассказать о простом и красивом решении, которое успешно применяется в нескольких проектах.
мне интересно, что дальше...
Total votes 72: ↑62 and ↓10 +52
Views7K
Comments 66

Паттерны дизайна веб-форм: формы подписки

Interfaces
Translation
Это перевод довольно новой статьи, которая вышла 4 июля 2008 года. Если вы уже читали ее, то навряд ли найдете что-то новое, но для тех, кто не знаком с оригиналом в статье найдется масса интересного. Сначала я хотел перевести и подписи к картинкам, но позже понял, что не стоит этого делать, так как статья ориентирована на грамотного читателя, который способен сам определить простейшие фразы.

UPD: Опубликована вторая часть статьи habrahabr.ru/blogs/ui_design_and_usability/45680


Когда вы хотите увеличить доход вашего сервиса вы должны увеличить количество заполнений ваших веб-форм. Даже, если, на первый взгляд, у вас есть какие-то революционные идеи для того чтобы удивить посетителей, недостаточно просто добавить возможность регистрации на вашем сайте. Для того, чтобы сервис достиг максимальных посещений мы, дизайнеры, должны предоставить пользователю хорошие решения (good user experience). Мы должны завлечь их, описать им, как работает сервис, объяснить им, почему стоит заполнить форму и описать выгоду, которую они от этого получат. И, конечно, мы должны сделать их участие максимально простым.

Тем не менее, разработка дизайна веб-форм — это не простое дело. И здесь есть одна простая причина: никто не любит заполнять формы — ни в оффлайне ни в онлайне. Следовательно, как дизайнеры, мы обязаны найти дизайнерские решения, чтобы сделать заполнение форм делом простым, интуитивным и безболезненным.

Но как на самом деле мы находим такие решения? Где в разметке должна располагаться ссылка на форму? Какой у нее должен быть дизайн? Как мы должны выделить подписи, и какое выравнивание у них должно быть? Какие паттерны дизайна применяются в современных веб-сайтах? Это именно те вопросы, которые мы задавали себе. И чтобы получить ответы мы провели наше обозрение.

Ниже мы представляем результаты обзора по текущим паттернам дизайна веб-форм — результат анализа ста популярных веб-сайтов, в которых веб-формы (должны бы) многое значат. Мы решили начать с форм регистрации. Ниже мы представляем первую часть наших исследований, вторая часть результатов обозрения будет опубликована на следующей неделе [прим. перев. — перевод второй части будет позже].
Читать дальше →
Total votes 96: ↑90 and ↓6 +84
Views6.6K
Comments 50

Page-View паттерн в Javascript

Lumber room
AJAX
Представьте себе, как построена незамысловатая онлайн-фотогалерея. По-простому говоря, это две отдельные страницы: список всех фотографий и просмотр отдельно взятой фотографии. При переходе от одной странице к другой пользователю приходится ожидать полной перезагрузки страницы. Интерактивность теряется.

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

У такого подхода есть недостатки:
  • Сложная логика JavaScript.
  • Не работает навигация браузера back/forward.
  • У отдельных фотографий нет своего адреса URL для прямого перехода.
Последние два недостатка сводятся к первому путем ещё большего усложнения JavaScript-кода. В статье я покажу, как разработать приложение простой фотогалереи с применением паттерна Page-View. Основное преимущество подхода — хорошо масштабируемый объектно-ориентированный JavaScript-код.

Читать дальше →
Total votes 14: ↑12 and ↓2 +10
Views559
Comments 14

Программирование — это не Дженга

Lumber room
Translation
Чувствуете ли вы себя игроком в Дженгу (игра, в которой игроки попеременно добавляют по одному элементу к возводимой конструкции, проигрывает тот, чье действие приведет к её разрушению), когда программируете? Насколько легко вносить изменения в ваши программные системы? Опасаетесь ли вы, что после внесения изменений ваш код неожиданно перестанет работать? Если вы утвердительно ответили на один из этих вопросов — это явный признак некачественно спроектированного кода, который приводит к замедлению вашей работу уже на следующий день после его появления. А приходилось ли вам когда нибудь разрабатывать код, который сложно было понять уже на следующий день? Мне посчастливилось присутствовать на многих презентациях Боба Мартина (Uncle Bob) и мне очень нравится та часть его выступления, где он спрашивает слушателей, сталкивались ли они с существенным замедлением скорости разработки из-за плохого кода. Когда большинство слушателей поднимали руки, он спрашивал: «Так зачем же вы его так написали?».

Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Views1K
Comments 7

Implementing FSM

Website development
В статье рассказывается о разработанной автором миниатюрной Java библиотеке, позволяющей коротко и наглядно определять конечные автоматы. Библиотека, назовем ее AkerFSM, доступна в Google Code.
В первой части статьи сформулированы предпосылки и требования к библиотеке. Во второй части приводится абстрактный пример использования библиотеки. В третьей части рассмотрены важные моменты устройства самой библиотеки. Четвертая часть посвящена рассмотрению упрощенного примера из реальной жизни, в котором с помощью конечного автомата задается поведение одного из контроллеров в GWT-приложении.

Читать дальше →
Total votes 25: ↑21 and ↓4 +17
Views14.2K
Comments 31

Об использовании паттернов

Lumber room
К сожалению, иногда приходится наблюдать случаи, когда люди, прошедшие паттерны проектирования в институте в рамках курса программирования, или же прочитавшие книжку с паттернами сразу после учебника по программированию, начинают применять их в работе буквально с первого класса. Иногда это даёт результат, чаще всего с паттернами Singleton (хотя бы знают про double locking idiom). Но чаще всего возникает ситуация, когда человек применяет паттерн просто для того, что его применить. И это плохо.

Для начала, что такое паттерн? Можно перевести как «образец», «пример», «модель», но мне больше всего нравится слово «шаблон» или же «шаблон проектирования». Потому что любой паттерн это не образец, с которого надо копировать ваш код. Это образец оформления кода, которому надо следовать. Разница такая же, как между образцом документа, который висит на стене, и шаблоном документа в MS Word / OpenOffice Writer, который используется для единообразного оформления (отступы, шрифты, оформление абзацев).

Читать дальше →
Total votes 23: ↑15 and ↓8 +7
Views1.7K
Comments 24

Микропаттерны оптимизации в Javascript: декораторы функций debouncing и throttling

JavaScript
Декораторы функций позволяют добавить дополнительное поведение функции, не изменяя ее. Сигнатура оригинальной и декорированной функции полностью совпадают.
Читать дальше
Total votes 74: ↑72 and ↓2 +70
Views52.4K
Comments 28

Реализация паттерна декоратор на JS

JavaScript
Суть паттерна в том, что есть класс с фактической функциональностью (компонент) и опциональными классами-обертками, которые дополняют основной функционал (декораторы). А фишка в том, что декораторов может быть сколько угодно, совмещаться они могут в произвольном порядке и (поскольку требуют от компонента только интерфейса) — могут работать с разными компонентами.

Безусловно, реализовать что-то похожее можно даже за счет только лишь того, что функции в JS являются объектами первого уровня, но мне бы хотелось поделиться реализацией весьма близкой к ГОСТу GoF'у.

UPD: ссылка на рабочий пример, спасибо Barttos.

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

Читать дальше →
Total votes 46: ↑39 and ↓7 +32
Views5.1K
Comments 97

Dependency injection для Scala: Cake Pattern

Website development
Я совсем недавно начал изучать Scala. Для тех, кто еще не в курсе, что это за язык, небольшая выдержка с официального сайта:

Scala — лаконичный, элегантный и статически типизированный язык программирования, который сочитает в себе возможности обьектно-ориентированного и функционального языка. Scala полностью совместима с Java.

Сегодня я хотел бы показать вам, как, используя богатые выразительные способности этого языка, решить проблему, актуальную для любого более-менее крупного проекта, а именно работу с зависимостями компонентов или dependency injection. Последние несколько лет я использовал spring ioc для решения этой проблемы, однако у этого фрэймворка есть несколько недостатков, самый очевидный из которых это сборка приложения из компонент в runtime и наличие xml-дескрипторов (да, конечно можно использовать и autowiring и аннотации, но и у этих возможностей есть свои серьезные проблемы).
Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Views13.2K
Comments 2

Сказки о СУБД

Lumber room

Введение


Часто, когда произносится термин «СУБД», под ним понимается только реляционная СУБД (здесь и далее по тексту будем считать термины синонимами) — это вызвано прежде всего тем, что большинство СУБД на рынке сейчас являются именно реляционными. Реляционная модель ориентирована на организацию данных в виде двумерных таблиц, а ее реализация опирается на работы Эдгара Кодда1. Реляционная модель — это хорошо и плохо: хорошо в следствии простоты реализации, плохо с точки зрения работы с объектно-ориентированными языками программирования.
Табличка сарказм.
Total votes 24: ↑20.5 and ↓3.5 +17
Views689
Comments 18

Memcached. Как найти ключи по паттерну?

Website development
Доброе утро|день|вечер|ночь, %username%!

При использовании Memcached, иногда могут возникнуть вопросы: «А как посмотреть все ключи Memcached?» или «Как найти все ключи по маске „*“ или „sql_*“ ?»
Вот тогда открываются мануалы и начинается поиск такой функции, но, к сожалению, такой не оказывается :-(
Потом начинается Гугление… И там особо ничего нет :-(
А потом начинается поиск незадокументированных возможностей :-) и тут «Ура! Нашел!»

Читать дальше →
Total votes 61: ↑39 and ↓22 +17
Views8.3K
Comments 44

Шпаргалка по паттернам проектирования из книги Gang of Four Design Patterns for .NET 2.0

.NET
Просто список примеров реализации паттернов на C#, более-менее хорошо сформатированных.
Делал для себя, но может быть кому-нибудь пригодится.

image

depositfiles.com/files/gl3ux6p07
2u.ifolder.ru/16126054
fileland.ru/file_id-248997
foldo.ru/38053i807d/Pattierny_kratko.doc.html
Total votes 61: ↑40 and ↓21 +19
Views16.2K
Comments 22