Pull to refresh
Александр Лебедев @Amikkoread⁠-⁠only

Разработчик

Send message

Простой пример использования WCF в Visual Studio 2010. Часть 1

Reading time10 min
Views95K
Вас ожидают две части:



Прошло много времени с тех пор, как я написал оригинальный пост Простой пример использования WCF. Это было еще до выхода Visual Studio 2008, и с тех пор многое изменилось. Поскольку множество людей по-прежнему задают вопросы в комментариях к тому посту, давайте посмотрим, что в настоящее время мы должны сделать, чтобы поднять и запустить службу (service), а также обратиться к ней из клиентского приложения.
Читать дальше →
Total votes 58: ↑48 and ↓10+38
Comments19

Проблемы передачи списка перечислений или Почему абстракции «текут»

Reading time7 min
Views5.9K
Все нетривиальные абстракции дырявы

Джоэл Спольски – Закон дырявых абстракций


А иногда дырявятся и довольно простые абстракции

Автор этой статьи



Большинство современных разработчиков знакомы с «законом дырявых абстракций» по знаменитой заметке Джоэла Спольски с одноименным названием. Заключается этот закон в том, что как бы ни был хорош протокол взаимодействия, фреймворк или набор классов, моделирующих предметную область, рано или поздно нам приходится спускаться на уровень ниже и разбираться с тем, как же эта абстракция устроена. Внутреннее устройство абстракции должно быть проблемой самой абстракции, но возможно это только в наиболее общих случаев и лишь до тех пор, пока все идет хорошо (*).

Когда-то давно, в «небольшой» мелкомягкой компании решили, а почему бы нам не «абстрагироваться» от местоположения объекта и сделать сам факт того, является ли объект локальным или удаленным, лишь «деталью реализации». Так появились технологии DCOM и ее наследник .NET Remoting, которые скрывали от разработчика, является ли объект удаленным или нет. При этом появились все эти «прозрачные прокси», которые позволяли работать с удаленным объектом, даже не зная об этом. Однако, со временем выяснилось, что эта информация архиважна для разработчика, поскольку удаленный объект может генерировать совершенно другой перечень исключений, да и стоимость работы с ним несравнимо выше, чем взаимодействие с локальным объектом.

Читать дальше →
Total votes 51: ↑44 and ↓7+37
Comments47

Функциональное программирование для всех

Reading time33 min
Views353K

Доброго времени суток. Это статья — перевод заинтересовавшего меня поста в блоге аспиранта Университета штата Нью-Йорк в Стоуни-Брук. Статья в доступной форме описывает основные концепции функционального программирования, их преимущества и недостатки. Думаю она будет полезна широкому кругу читателей, которые сомневаются, нужно ли им углубляться в мир функционального программирования или нет. Пожелания, предложения и замечания по переводу и терминологии принимаются по личной почте.

Мнение переводчика может иногда не совпадать с мнением автора, но переводить статью было крайне занимательно.

UPD: альтернативный вариант перевода вы можете найти на rsdn (спасибо flamingo за ссылку).
Читать дальше →
Total votes 188: ↑181 and ↓7+174
Comments151

Установка и настройка SVN (сервер+клиент)

Reading time6 min
Views313K
По просьбам трудящихся, а так же учитывая, что есть статья по установке SVN (правда +Trac) под Linux, решил написать краткое описание установки и настройки SVN для Windows.
Ничего нового для людей, хорошо знающих и работающих с SVN, здесь не будет. Цель статьи — помочь некоторому проценту новичков, пребывающих на Хабре, таки осилить изучение этой системы контроля версий.
Читать дальше →
Total votes 75: ↑66 and ↓9+57
Comments37

Доброе утро или опыт использования «умного» будильника

Reading time4 min
Views100K
Приятный сон, утро, звонок будильника… Думаю, каждый из нас сталкивался с тем, что пробуждение бывает разным. Бывают дни, когда встаешь, делаешь все на автопилоте, твоя голова пуста, а в душе живет ненависть ко всей Вселенной и человечеству. В такие дни бывают самые тяжелые утренние часы: работа с утра совершенно не идет, в голове пусто, ни с кем не хочется ни то что разговаривать, но даже видеть. А бывают совсем другие дни. В эти дни встаешь легко, мозг сразу начинает работать, дела спорятся с самого утра.

По натуре я типичная «сова» и, как и для многих «сов», утро для меня является, скажем так, не очень приятным временем суток. Однажды, после очередного тяжелого пробуждения, я, сидя на работе, и листая интернет с чашкой кофе в руке, пытаясь прийти в себя, подумал: «А может, хватит уже мучиться? Может, пора что-то сделать?» Я прикинул, что когда я просыпаюсь в состоянии зомби, то теряю пару часов времени, чтобы настроиться на рабочий лад (я специально приезжал на работу на час раньше, чтобы к началу рабочего дня быть более-менее в форме), плюс настроение с утра влияет на то, как проходит мой день. Так я стал искать решение проблемы своего тяжелого пробуждения.

Читать дальше →
Total votes 62: ↑54 and ↓8+46
Comments63

Новые «Трансформеры»

Reading time3 min
Views37K
В рамках Всемирного мобильного конгресса компания ASUS продемонстрировала обновлённую серию планшетных компьютеров Transformer. Выпуск сразу нескольких планшетов для ASUS уже привычное дело. В прошлом году появились первый Transformer, модели Eee Pad Slider и Eee Pad Slate. В декабре 2011 представили Eee Pad Transformer Prime TF201 – логичное развитие гибридного нетбука-планшета. Спустя всего несколько месяцев компания ASUS анонсирует выход ASUS Transformer Pad Infinity и ASUS Transformer Pad 300.

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

image

Подробности
Total votes 11: ↑10 and ↓1+9
Comments25

Java сертификация. Подготовка к SCJP

Reading time5 min
Views71K
В этом месяце я сдавал экзамен SCJP. В этом топике я расскажу о подготовке и экзамене.
В основном для тех, кто собирается сдавать и кому нужно больше информации об этом.

Уточнение


Так как Sun'a больше нет, то и экзамена SCJP тоже нет. Теперь он значится так:
1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam.
прочитать об экзамене и посмотреть задачи
Total votes 89: ↑84 and ↓5+79
Comments43

Подготовка к экзамену Oracle Certified Professional Java Programmer — Часть 1

Reading time8 min
Views58K

Предисловие



Хочу продолжить делиться приобретенными знаниями и своими впечатлениями от подготовки к экзамену. Огромное спасибо всем тем, кто дал рекомендации к нулевой части этой серии! Сегодня я поговорю еще немножко о модификаторах доступа и их взаимоотношениях с наследованием и пакетами, рассмотрю varargs и перечисления, а также массивы и способы их инициализации. Я надеюсь, что хабражители снова откликнутся и дополнят то, о чем я забыл упомянуть или попросту не знал.

Продолжаем готовиться к экзамену под катом.

Читать дальше →
Total votes 45: ↑38 and ↓7+31
Comments30

Подготовка к экзамену Oracle Certified Professional Java Programmer

Reading time6 min
Views26K

Предисловие



На 16 декабря сего года я назначил себе прохождение экзамена Oracle Certified Professional Java Programmer. Он же Sun Certified Programmer в прошлом. Кроме того я подтолкнул к этому важному шагу еще троих своих товарищей. Начинаем готовиться. Пока вяло, но все же… И чтобы систематизировать получаемые знания, я решил периодически составлять «выжимки» — краткое содержание того, что нашел, прочитал или испытал на собственной шкуре. То, что вы читаете в данный момент — выжимка за номером ноль. Надеюсь, что это поможет кому-то избежать покупки дорогостоящих книг и перелистывания огромного количества статей. Готовлюсь я, кстати, по книге Sun Certified Programmer for Java 6: Study Guide за авторством Kathy Sierra и Bert Bates. Хорошая книга, отличный автор, легкий язык. Рекомендую.

Обращаю внимание, что я не претендую на полное описание всего того, что нужно знать перед экзаменом. Без помощи хаброжителей я подобную работу проделать не смогу, просто потому, что я еще не сдавал сам экзамен. Многое из приведенного ниже может показаться кому-то примитивным. Однако, как показывает практика нарешивания тестов, дьявол кроется именно в деталях. Будем считать это попыткой сжато изложить необходимое от правил именования идентификаторов до подводных камней перегрузки методов при наследовании и далее. Кроме того, я надеюсь подчерпнуть что-то полезное из комментариев людей, которые этот путь уже прошли. В лучшем случае на Хабре появится successfull story с полным описанием того, как все начиналось, росло и развивалось. Поскольку по задумке публиковаться все будет в реальном времени, — раз в двое суток примерно, — то те, кому предстоит сдавать экзамен смогут сравнивать по датам свой темп обучения с нашим и проходить чекпоинты намного быстрее.

Читать дальше →
Total votes 52: ↑46 and ↓6+40
Comments25

Java сертификация — прохождение SCJP и SCBCD

Reading time8 min
Views84K
Не нашел на хабре статей, в которых бы авторы описывали сертификации по Java и делились своим опытом подготовки и ощущениями от сдачи.
В некоторой степени хотел бы заполнить пробел этой статьей. Под катом – мое мнение по вопросу – сдавать или не сдавать сертификации, краткий обзор сертификаций по Java, а так же собственный опыт и ощущения от регистрации, подготовки и сдачи Java сертификаций SCJP и SCBCD.
читать далее
Total votes 46: ↑44 and ↓2+42
Comments24

Фотореалистическое изображение облака при помощи JavaScript и трёхмерных CSS-преобразований

Reading time1 min
Views9.7K
Эта картинка, если на первый взгляд, выглядит фотографией реального облака в реальных небесах:

[облако]

Тем не менее на сайте «CSS3D Clouds» объёмное облако вращается, реагируя на движения мыши, и может быть заново (иначе) сгенерировано в любой момент. Ведь на деле оно является итогом применения JavaScript и трёхмерных CSS-преобразований к нескольким копиям одной и той же картинки облака: из них, как из вокселей, формируется более крупное облако.
Total votes 85: ↑70 and ↓15+55
Comments42

Дорабатывать или переписывать

Reading time3 min
Views17K
Основная мысль этой статьи: переписывайте с нуля работающий и внедренный проект только под дулом пистолета.

Если вы так не считаете, приглашаю прочитать мои скромные доводы на эту тему.
Total votes 184: ↑151 and ↓33+118
Comments182

Введение в CSS3 Grid Layout. Работаем с сетками

Reading time10 min
Views113K
Update: Часть сведений в данной статье устарели. Рекомендую свежие материалы на css-live.ru.

Введение


intuition game grid

Модуль CSS3 Grid Layout — это один из самых интересных, на мой взгляд, модулей в семействе CSS3. Официальная история модуля в виде черновика спецификации насчитывает сегодня чуть менее года. О предварительном анонсе еще с названием CSS Grid Alignment на TPAC 2010 Владимир Юнев писал еще в декабре 2010. Надо также отметить, что с чуть другим названием и несколько отличным синтаксисом, но с той же сутью, он был заявлен в качестве WD еще в 2007г. Сегодня работы по доводке модуля идут полным ходом, предварительная реализация уже есть в Internet Explorer 10 и есть надежда, что поддержка новых возможностей также появится в будущих версиях других популярных браузеров.

Зачем нужен Grid Layout?


Задача, которую решает модель CSS3 Grid Layout, очень проста и понятна любому веб-верстальщику (да и не только ему): предоставить удобный механизм расположения контента по виртуальной сетке.

В отличие от старых табличных подходов, основанных на использовании table, здесь не замусоривается семантика документа и представление четко отделено от содержания. В отличие от различных вариаций блочной верстки со становящимися при сколь-нибудь сложной структуре безумными и многоэтажными float'ами в сочетании с вручную просчитанными отступами, здесь описание стилей становится тривиально простым и прозрачным. В отличии от абсолютного позиционирования с привязкой к координатам, здесь сохраняется гибкость. В отличие от популярных сегодня css/js-библиотек для разметки по сетке путем указания соответствующих классов (взять хоть те же bootstrap или yui css grids), здесь не замусоривается привязка классов.

Сплошное удовольствие! Осталось только дождаться широкой поддержки :) Впрочем, если вы планируете делать приложения в стиле Metro для Windows 8 на html/js, ключевые возможности, описываемые в модуле CSS3 Grid Layout, уже работают — и можно двигаться вперед, используя удобные и практичные механизмы.
Читать дальше →
Total votes 98: ↑92 and ↓6+86
Comments74

CSRF уязвимости на примере ХабраХабра

Reading time3 min
Views30K
Уязвимости уже нет — её исправили задолго до появления этого топика.

Очень часто многие веб-разработчики забывают о существовании этого метода взлома, а некоторые даже не знают о нём.

К сожалению, подобные уязвимости встречаются даже в таких крупных системах, как ХабраХабр.



Читать дальше →
Total votes 369: ↑356 and ↓13+343
Comments67

Защищаем сайт от атак на примере ХабраХабра

Reading time5 min
Views16K


Рано утром Хабр «выкатил» своё новое обновление, и я с чистой совестью достаю эту статью из черновиков.
Вчера у меня случился epic fail и этот топик частично, включая строчку об апдейте выше, попал в паблик на пару секунд. За эти секунды топик успело плюсануть несколько человек.
Ещё раз, теперь публично, прошу прощения у администрации!
Совет остальным — НИКОГДА не храните в черновиках информацию вроде этой.


В последнее время в сети Интернет можно найти очень много пособий для «Начинающих хакеров», в которых подробно описываются все основные методы взлома сайтов. Думаете, веб-разработчики стали от этого умнее и предприняли все возможные методы для защиты? Я так не думаю.

В настоящей статье я хочу ещё раз поведать разработчикам о том, как ломают сайты, а чтобы вам не было скучно, я попутно буду ломать Хабр и подробно описывать, как я это делал. Мы рассмотрим такие интересные штучки, как «Активная XSS в профиле», «Бесконечное обнуление кармы», «Публикация топиков со значком 'Из песочницы'», «CSRF через Flash и дыру в Internet Explorer 6» и многое другое.

Все уязвимости уже исправлены. Ну или почти все. Поэтому, если вы найдёте очередную дыру, то пишите на support@habrahabr.ru — миф о том, что эту почту никто не читает всего лишь миф.
Читать дальше →
Total votes 256: ↑240 and ↓16+224
Comments82

Декораторы в JavaScript

Reading time3 min
Views9.4K
С давних времён использую декораторы в JavaScript. Недавно увидел хабротопик про примеси, который натолкнул меня на мысль поделиться собственным опытом, ибо технологии немного похожие.

Что меня не устраивает в известных реализациях?


Реализации, предлагаемые по первым ссылкам в Google, работают не тем образом, как это работает в Python. Во многих статьях предлагается создать объект, заполнить его поля функциями и осуществлять вызовы отдекорированных через эти поля.
На первой странице есть несколько ссылок, где используются методы, сходные с моими,
Есть ещё много реализаций, но они мне неинтересны.
Расскажу наиболее правильную с моей точки зрения.

Нормальный декоратор


Итак, что такое декоратор?
Декоратор, это функция, которая добавляет функции-аргументу функционала.
Читать дальше →
Total votes 31: ↑28 and ↓3+25
Comments16

Нововведения в jQuery 1.6

Reading time4 min
Views7.2K
jquery
Совсем недавно (3 мая) был зарелизен jQuery 1.6 и вот что нового появилось в этой js-библиотеке давайте и посмотрим.

Самое «веселое» то, что в новом релизе есть важные изменения, которые несовместимы с предыдущими версиями jQuery. И в результате при переходе на новую версию, вполне возможно, что придётся просматривать и изменять уже существующий код.
Читать дальше →
Total votes 157: ↑156 and ↓1+155
Comments46

jQuery Deferred Object (подробное описание)

Reading time7 min
Views121K
31 января вышел релиз jQuery 1.5, одним из ключевых нововведений которого стал инструмент Deferred Object. Именно о нём я и хочу рассказать подробнее в этой статье.

Эта новая функциональность библиотеки направлена на упрощение работы с отложенными (deferred) вызовами обработчиков (callbacks). Deferred Object, аналогично объекту jQuery, «цепочный» (chainable), но имеет свой набор методов. Deferred Object способен регистрировать множество обработчиков в очередь, вызывать зарегистрированные в очереди обработчики и переключать состояние на «завершено» или «ошибка» для синхронных или асинхронных функций.
Подробности и примеры далее
Total votes 98: ↑95 and ↓3+92
Comments16

Красивые подсказки для jQuery Validation с помощью qtip

Reading time4 min
Views20K
Привет Хабр!
Хочу поделиться способом организации красивых подсказок для плагина валидации на jQuery. Для этих целей будем использовать еще один плагин создания красивых информационных сообщений — qtip.


Читать дальше →
Total votes 26: ↑7 and ↓19-12
Comments5

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity