Так получилось, что я начал работать с PostgreSQL три года назад и за это время умудрился методично собрать все возможные грабли, которые можно вообразить. И сказать по правде, если бы была возможность поделиться с собой трехлетней давности нынешним горьким опытом, моя жизнь была бы куда проще и нервные клетки целее. Именно поэтому я решил написать абсолютно субъективную статью со сводом правил, которых придерживаюсь при разработке на PostgreSQL. Возможно, кому-то эта статья поможет обойти собранные мной грабли (и наступить на другие, ха-ха!).
Senior software engineer
Несколько неочевидных frontend-хитростей
4 мин
91KТуториал
Под катом вы узнаете о том, как быстро и легко оформить взаимодействие с SVG-иконками, добавить плавный скролл с помощью одного CSS-правила, анимировать появление новых элементов на странице, переносить текст на новую строку с помощью CSS и о новых способах оформления декоративной линии текста.
+22
Все способы вертикального выравнивания в CSS
6 мин
776KЯ думаю, многие из вас, кому приходилось заниматься версткой, сталкивались с необходимостью выравнивать элементы по вертикали и знают, какие сложности возникают при выравнивании элемента по центру.
Да, для вертикального выравнивания в CSS есть специальное свойство
vertical-align
с множеством значений. Однако на практике оно работает совсем не так, как ожидается. Давайте попробуем в этом разобраться.+38
KeyCloak – щит от JBOSS для WEB приложений
24 мин
45KТуториал
Из диалога двух программистов:
— Кажется, у нас дыра в безопасности!
— Слава Богу, хоть что-то у нас в безопасности…
1. Введение
Пару лет назад мы уже затрагивали тему безопасности в веб-приложениях. Тогда в рамках исследовательских работ был реализован собственный Service Provider для интеграции с продуктом Shibboleth по протоколу SAML 2.0.
В сегодняшней статье речь снова пойдет о безопасности веб-приложений. Мы сделаем небольшой обзор продукта KeyCloak (доселе оставленного без внимания сообществом Habr).
В качестве практической ценности будет разобран пример, как защитить простое JEE приложение средствами KeyCloak, а также как осуществить взаимодействие между двумя защищенными приложениями.
+12
Под капотом Redis: Строки
9 мин
31KЕсли вы знаете, почему простая строка `strings` в Redis займёт в оперативной памяти 56 байт — вам, думаю, статья не будет интересна. Всем остальным я попробую рассказать, что такое строки в Redis и почему использующему эту базу данных разработчику важно понимать, как они устроены и работают. Это знание особенно важно, если вы пытаетесь рассчитать фактическое потребление памяти вашим приложением или планируете строить высоко нагруженные системы статистики или учёта данных. Или, как часто бывает, пытаетесь срочно понять, почему вдруг ваш экземпляр redis стал потреблять неожиданно много памяти.
+53
10 советов по использованию ExecutorService
13 мин
153KПредлагаю читателям «Хабрахабра» перевод публикации «ExecutorService — 10 tips and tricks».
Абстракция ExecutorService была представлена еще в Java 5. На дворе шел 2004 год… На секунду – сейчас Java 5 и 6 больше не поддерживаются и Java 7 готовится пополнить список. А многие Java-программисты по-прежнему не в полной мере понимают как работает ExecutorService. В вашем распоряжении множество источников, но сейчас я хотел бы рассказать о малоизвестных тонкостях и практиках по работе с ней.
Абстракция ExecutorService была представлена еще в Java 5. На дворе шел 2004 год… На секунду – сейчас Java 5 и 6 больше не поддерживаются и Java 7 готовится пополнить список. А многие Java-программисты по-прежнему не в полной мере понимают как работает ExecutorService. В вашем распоряжении множество источников, но сейчас я хотел бы рассказать о малоизвестных тонкостях и практиках по работе с ней.
+19
Очень субъективный обзор JS фреймворков. AmpersandJS, часть 0
20 мин
61KОт переводчика: когда я начал разбираться с MVC-фреймворками для фронт-энда, каким-то чудом попалась на глаза эта статья Henrik Joreteg. Сейчас дошли руки перевести ее для Хабра, тем более, что об AmpersandJS на Хабре вообще не слышно. Попробую организовать цикл статей по этому инструменту ребят из &yet, мне кажется, он достоин внимания.
В рамках наших образовательных семинаров я даю краткий обзор JS фреймворков. Я не очень-то хотел публиковать большую часть моих мнений об этих инструментах в Сети, потому что такие вещи, как правило, вызывают бурление масс, обижают людей, и в отличие от разговора с глазу на глаз, в интернет-дискуссиях нет действительно хорошей двунаправленной связи с аудиторией.
Но мне не раз говорили, что мой обзор крайне полезен и помогает получить сжатое и, в то же время, хорошее понимание в вопросе «кто есть кто в JS фреймворках для создания одностраничных приложений». По этому поводу я решил материализовать его и опубликовать как Нечто, но, пожалуйста, помните, что я просто высказываю свое мнение, я не говорю вам, что делать, и вы должны использовать те инструменты, которые лучше подходят вам и вашей команде. Вы можете запросто не согласиться со мной, написать об этом в Твиттере, или, еще лучше, опубликовать отдельный пост, объясняющий вашу позицию.
В рамках наших образовательных семинаров я даю краткий обзор JS фреймворков. Я не очень-то хотел публиковать большую часть моих мнений об этих инструментах в Сети, потому что такие вещи, как правило, вызывают бурление масс, обижают людей, и в отличие от разговора с глазу на глаз, в интернет-дискуссиях нет действительно хорошей двунаправленной связи с аудиторией.
Но мне не раз говорили, что мой обзор крайне полезен и помогает получить сжатое и, в то же время, хорошее понимание в вопросе «кто есть кто в JS фреймворках для создания одностраничных приложений». По этому поводу я решил материализовать его и опубликовать как Нечто, но, пожалуйста, помните, что я просто высказываю свое мнение, я не говорю вам, что делать, и вы должны использовать те инструменты, которые лучше подходят вам и вашей команде. Вы можете запросто не согласиться со мной, написать об этом в Твиттере, или, еще лучше, опубликовать отдельный пост, объясняющий вашу позицию.
Angular.js
за
- очень легко начать использовать. можно просто вставить тег script, добавить немного ng- атрибутов в ваше приложение, и вы волшебным образом получаете нужное вам поведение
- Angular хорошо поддерживается его основной командой разработчиков, многие из которых работают в Гугле на постоянной основе
- большая аудитория/сообщество
+39
10 вещей, которых вы не знали о Java
8 мин
105KПеревод
Итак, вы работаете на Java с самого её появления? Вы помните те дни, когда она называлась «Oak», когда про ООП говорили на каждом углу, когда сиплюсплюсники думали, что у Java нет шансов, а апплеты считались крутой штукой?
Держу пари, что вы не знали как минимум половину из того, что я собираюсь вам рассказать. Давайте откроем для себя несколько удивительных фактов о внутренних особенностях Java.
Держу пари, что вы не знали как минимум половину из того, что я собираюсь вам рассказать. Давайте откроем для себя несколько удивительных фактов о внутренних особенностях Java.
+89
Java logging. Hello World
14 мин
290KВступление
Думаю, ни для кого не секрет, что такое логгеры и для чего они нужны. За время существования java было создано немало фреймворков логгирования. Среди самых известных можно выделить:
- JUL — java.util.logging
- log4j
- JCL — jakarta commons logging
- Logback
- SLF4J — simple logging facade for java
В данной статье будет рассмотрен каждый из указанных выше фреймворков на уровне «hello world». Будут приведены простые примеры использования основного функционала и конфигурирования. Статья не преследует цель сравнения логгеров между собой и выявление лучшего из них, эту возможность автор оставляет за вами, уважаемые читатели. В конце статьи будут приведены источники, где можно получить более детальную информацию по каждому фреймворку. Также перед прочтением данной статьи рекомендую ознакомиться с публикацией «Java Logging: история кошмара», где описана история развития систем логгирования в Java.
+12
Тренды JavaScript на 2015 год
19 мин
112KВсем привет! Мы как-то задумали сделать легкий вводный курс на тему JavaScript и разработки приложений (он, кстати, скоро будет опубликован): и, пока я собирал материалы к нему, как-то само собой выяснилось, что есть довольно много вещей, которые, так сказать, находятся на переднем крае развития JavaScript. Отсюда родилась идея сделать отдельную обзорную статью в жанре «X трендов на год Y по технологии Z».
Многие из тех, вещей, которые я буду описывать, можно попробовать в той или иной степени уже сегодня (собственно, иначе я бы говорил о космическом будущем, а не о трендах). В этом есть несомненный плюс: если у вас будет свободное время (а на праздниках его обычно много), вам будет чем заняться. Да и, в целом, хорошо начинать новый год с расширения своих горизонтов!
+68
Почему вам НЕ стоит использовать AngularJs
12 мин
248KМного времени прошло с момента появления AngularJs (в масштабах веб-технологий конечно). Сейчас в интернетах есть огромное количество постов восхваляющих этот фреймворк до небес, что это манна небесная не иначе, а критики не так уж и много как он того заслуживает. Но такие статьи уже потихоньку начинают появляться, и меня это радует, надеюсь индустрия переболеет ангуляром так же, как переболела MooTools, Prototype, %какой-нибудь новый язык под JVM%, %другая-супер-революционная-технология%. Не знаю почему, но в IT-области такие революционные технологии, которые поднимают шум, а потом пропадают, появляются довольно часто. Хороший разработчик должен уметь отличать очередную модную технологию, от работающего инструмента. И для этого очень важно критически смотреть на вещи. Моя статья — это компиляция самых весомых выводов из других статей, и моих личных умозаключений. Ангуляр создает хороший вау-эффект, когда видишь его впервые: «ух ты, я написал ng-repeat, и реализовал эту логику одними тегами и все само обновляется!», но как только приходится реализовывать реальные приложения, а не очередной TODO-лист, то все становиться очень печально. Сразу хочу сказать, что фреймворк я знаю хорошо, даже больше чем мне хотелось бы его знать, я программировал на нем в течении 2 лет. И для следующего проекта я его точно не выберу, и это хорошо, все мы учимся на ошибках. Так что же не так с ангуляром? Тут нет однозначного ответа, слишком много разных недостатков, которые создают такой облик фреймворку. Если одним словом – непродуманная архитектура. Под катом я привожу конкретику, так что устраивайтесь поудобнее. ДА НАЧНЕТСЯ ХОЛЛИ ВАР!
+179
Курс от Яндекса о том, что должен знать каждый разработчик, который хочет делать большие системы. Модное слово DevOps и другое
5 мин
107KВсю рутину, которую можно отдать роботам, нужно отдать роботам. Большие системы без этого невозможны. В разработке и тестировании очень много похожих задач, которые не требуют высокой квалификации, но отнимают много времени. Человек, который умеет обеспечить разработку, тестирование и деплой – это редкий специалист и его на количество страничек никак не масштабируешь.
В Яндексе тестировщику невозможно без автоматизации. Мы даже развиваем экспериментального робота, который способен брать на себя функциональное тестирование. В какой-то момент мы поняли, что не так много людей осознают, сколько сейчас есть возможностей работать не 12 часов, а головой. Собрав весь свой опыт в тестировании и деплое, мы открыли в питерском офисе Яндекса Школу автоматизации процессов разработки. У нас получилась школа, где каждый, кто пишет код, может получить базовый набор знаний о том, как собрать, запустить и поддерживать сервис в продакшене так, чтобы это стоило недорого.
Курс открывает моя лекция о том, зачем вообще автоматизировать процесс разработки. Из нее вы получите представление о то, что будут рассказывать мои коллеги.
Сейчас занятия закончились, и мы, как и обещали, выкладываем записи лекций, которые перемежаются с мастер-классами, для всех желающих. Понятно, что наш опыт и знания – не 42, но мы надеемся, что они принесут вам пользу.
В Яндексе тестировщику невозможно без автоматизации. Мы даже развиваем экспериментального робота, который способен брать на себя функциональное тестирование. В какой-то момент мы поняли, что не так много людей осознают, сколько сейчас есть возможностей работать не 12 часов, а головой. Собрав весь свой опыт в тестировании и деплое, мы открыли в питерском офисе Яндекса Школу автоматизации процессов разработки. У нас получилась школа, где каждый, кто пишет код, может получить базовый набор знаний о том, как собрать, запустить и поддерживать сервис в продакшене так, чтобы это стоило недорого.
Курс открывает моя лекция о том, зачем вообще автоматизировать процесс разработки. Из нее вы получите представление о то, что будут рассказывать мои коллеги.
Сейчас занятия закончились, и мы, как и обещали, выкладываем записи лекций, которые перемежаются с мастер-классами, для всех желающих. Понятно, что наш опыт и знания – не 42, но мы надеемся, что они принесут вам пользу.
+64
Самопальный фрэймворк Arachnidium для тестирования web и мобильных приложений. Part 2. Немного о настройках
4 мин
4.4KИ снова всем привет!
По итогам опроса, который я оставил в свой предыдущей статье «Самопальный фрэймворк Arachnidium для тестирования web и мобильных приложений. Get started!» большинство проголосовало «ЗА». Что же, show must go on!
В данной маленькой публикации я расскажу о наработке, позволяющей подготовить настройки для кросс-браузерного тестирования вэб-приложений/кросс-платформенного и просто запуска мобильных приложений для выполнения теста — в рамках описываемого фрэймворка. Сразу скажу, что фича может быть воспринята неоднозначно в силу определенных причин. Часть из них вполне объективные и их я назову в самом конце статьи.
Данный пост как-бы визуализирует главу Configuration моей собственной документации (пока это вики странички на github), которую в ближайшее время предстоит актуализировать. Здесь будет представлен простой пример подготовки настройки, а так же пример того, как я предполагаю использовать свой формат в контексте автоматизации тестов при помощи Selenium и Appium. Статья содержит интересное и наглядное, как мне думается, видео.
План:
— Что за проблему я попробовал решить?
— Простая демонстрация
— Демонстрация на примере кросс-браузерного теста
— Чего не хватает
— Анонс
По итогам опроса, который я оставил в свой предыдущей статье «Самопальный фрэймворк Arachnidium для тестирования web и мобильных приложений. Get started!» большинство проголосовало «ЗА». Что же, show must go on!
В данной маленькой публикации я расскажу о наработке, позволяющей подготовить настройки для кросс-браузерного тестирования вэб-приложений/кросс-платформенного и просто запуска мобильных приложений для выполнения теста — в рамках описываемого фрэймворка. Сразу скажу, что фича может быть воспринята неоднозначно в силу определенных причин. Часть из них вполне объективные и их я назову в самом конце статьи.
Данный пост как-бы визуализирует главу Configuration моей собственной документации (пока это вики странички на github), которую в ближайшее время предстоит актуализировать. Здесь будет представлен простой пример подготовки настройки, а так же пример того, как я предполагаю использовать свой формат в контексте автоматизации тестов при помощи Selenium и Appium. Статья содержит интересное и наглядное, как мне думается, видео.
План:
— Что за проблему я попробовал решить?
— Простая демонстрация
— Демонстрация на примере кросс-браузерного теста
— Чего не хватает
— Анонс
+5
Быстрая настройка Grunt для комфортной разработки
7 мин
25KВо время разработки нашего сервиса bitcalm.com, нам потребовалось организовать автоматическую сборку проекта. Перед нами стояла цель улучшить производительность frontend-части нашего приложения, а также оптимизировать процессы разработки и развертывания на сервере.
Основными задачами, которые требовалось решить, стали:
- Объединение и минификация скриптов
- Объединение и минификация стилей
- Сжатие png-изображений
- Создание спрайтов из всех изображений (с возможностью удобного использования и с поддержкой двух видов спрайтов для девайсов с разным PPI)
- Построение разных версий html-документов для разработки и для продакшна
Первые три пункта выглядят достаточно тривиальными, поэтому я постараюсь заострить внимание на работе со спрайтами и на обработке html.
+25
6 ссылок о том, что Google знает о вас
2 мин
447KПеревод
Не желаете ли узнать о том, что Google знает о вас? Вот 6 ссылок, которые покажут вам некоторые данные, собранные гуглом.
1. Ваш профиль в Google
Google создаёт профиль с вашими основными данными – возраст, пол, интересы. Эти данные используются для показа релевантных объявлений. Вы можете просмотреть эту информацию здесь:
www.google.com/ads/preferences
(прим.перев. – в моём случае гугл не блещет информацией. Я не состою в Google+, а по посещённым мною сайтам гугл не смог определить мой пол, а возраст определил в 65+ лет).
1. Ваш профиль в Google
Google создаёт профиль с вашими основными данными – возраст, пол, интересы. Эти данные используются для показа релевантных объявлений. Вы можете просмотреть эту информацию здесь:
www.google.com/ads/preferences
(прим.перев. – в моём случае гугл не блещет информацией. Я не состою в Google+, а по посещённым мною сайтам гугл не смог определить мой пол, а возраст определил в 65+ лет).
+95
Размышления о стандартной библиотеке JavaScript. Core.js
64 мин
103KОдин пацан писал все на JavaScript, и клиент, и сервер, говорил что нравится, удобно, читабельно. Потом его в дурку забрали, конечно.
— С просторов интернета
К чему это я? Занятная штука — JavaScript. Основа современного web и на фронтэнде альтернатив как таковых не имеет.
JavaScript это, в том числе, и стандартная библиотека, о которой здесь и пойдёт речь. Под стандартной библиотекой я подразумеваю модули, конструкторы, методы, что должны присутствовать на любой платформе, будь то браузер или сервер, без лишних действий со стороны программиста, не включая API, специфичный для платформы. Даже если вы пишите не на JavaScript, а на языке в него компилируемом, скорее всего, вам придется иметь дело с его стандартной библиотекой.
Ванильная стандартная библиотека JavaScript, в целом, неплоха. Это не только стандартная библиотека по спецификации языка ECMA-262 актуальных версий — от 3 до черновика 6. Часть API вынесена в отдельные спецификации, например, API интернационализации ECMA-402. Многие возможности, без которых сложно представить JavaScript, например,
setTimeout
, относятся к web-стандартам. Консоль не стандартизована вовсе — приходится полагаться на стандарт де-факто.Вот только не такая уж она и стандартная — везде разная. Есть старые IE, в которых из коробки мы получаем стандартную библиотеку ES3 90-бородатого года даже без
Array#forEach, Function#bind, Object.create
и консоли, и есть, например, Node.js, на которой многие уже вовсю используют возможности грядущего ES6.Хочется иметь универсальную, действительно стандартную библиотеку, как на сервере, так и в любом браузере, максимально соответствующую современным стандартам, а также реализующую необходимый функционал, что (пока?) не стандартизован. Статья посвящена библиотеке core.js — реализация моих соображений по поводу стандартной библиотеки JavaScript. Кроме того, эта статья еще и шпаргалка по современной стандартизованной стандартной библиотеке JavaScript и заметки о её перспективах.
Содержание, или что получим на выходе:
Подходы
-
Часть первая: Костыли
- ECMAScript 5
- ECMAScript 6
- ECMAScript 6: Символы
- ECMAScript 6: Коллекции
- ECMAScript 6: Итераторы
- ECMAScript 6: Обещания
- Mozilla JavaScript: Статические версии методов массива
- Отложенное исполнение: setTimeout, setInterval, setImmediate
- Консоль
-
Часть вторая: Велосипеды
- Классификация данных
- Словари
- Частичное применение
- Форматирование даты
- Объектное API
- Массивы
- Числа
- Экранирование спецсимволов
Заключение
+77
9 основных принципов отзывчивого веб-дизайна
4 мин
129KПеревод
Отзывчивый дизайн — отличное решение проблемы корректного отображения сайта на разных экранах. Однако новичкам зачастую трудно понять основы, обучаясь только по книгам/статьям. С каждым днём появляется всё больше различных устройств, имеющих разные размеры экрана, поэтому создание дизайна в пикселях и только для настольных компьютеров/смартфонов остаётся в прошлом. Именно поэтому сейчас стоит изучить принципы отзывчивого дизайна — дизайна, совмещающего в себе адаптивность и резиновость (если вы ещё не знакомы с адаптивным дизайном, то эта статья будет хорошим выбором для начала изучения).
+55
Протез ноги, вдохновленный горными козлами
1 мин
62KПривет, Хабр!
Название поста поэтичное получилось, не правда ли? И ведь все в нем верно сказано: именно нога горного козла с её копытом стала источником вдохновения для человека, спроектировавшего этот протез.
У всех протезов, управляемых мозгом, работающим с bluetooth и предназначенным для спорта в последние годы был один минус: большая их часть не так чтобы очень удобна для того, чтобы лазать по горам. Студент-дизайнер Кай Лин исследовал искусственные конечности в институте Pratt, когда пришел к этому выводу. И сумел найти решение этой проблемы, элегантное и вдохновленное самой природой.
Под хабракатом — презентация из 20 слайдов.
Klippa — на шведском «взбираться».
Название поста поэтичное получилось, не правда ли? И ведь все в нем верно сказано: именно нога горного козла с её копытом стала источником вдохновения для человека, спроектировавшего этот протез.
У всех протезов, управляемых мозгом, работающим с bluetooth и предназначенным для спорта в последние годы был один минус: большая их часть не так чтобы очень удобна для того, чтобы лазать по горам. Студент-дизайнер Кай Лин исследовал искусственные конечности в институте Pratt, когда пришел к этому выводу. И сумел найти решение этой проблемы, элегантное и вдохновленное самой природой.
Под хабракатом — презентация из 20 слайдов.
Klippa — на шведском «взбираться».
+49
Обзор смартфона на андроид, который работает неделю! Highscreen Boost
4 мин
167KЧто важнее в вашем смартфоне? Может, его большой удобный дисплей? А быть может, его быстрый интернет? Возможно, его фишки и навороты типа камеры? Наверняка, множество приложений для работы и развлечний, которые всегда в вашем кармане? Но уж точно это всё ни к чему, когда ваш смартфон светит красным диодом и пишет «подключите зарядное устройство»!
Так вот. Смартфон на андроид с батареей на неделю? Да!
Так вот. Смартфон на андроид с батареей на неделю? Да!
+33
Р. Курцвейл – Как создать разум (“How to create a mind”). Краткий обзор книги
5 мин
88KРэй Курцвайл (Ray Kurzweil) – довольно интересная личность. Начать хотя бы с того, что он первым в 1965 году придумал делать музыкальные синтезаторы. Он в свое время получил целую серию наград за свои изобретения в различных областях, опубликовал несколько книг (The age of intelligent machines — 1990, The 10% solution for a healthy life -1993, the age of spiritual machines – 1998, The singularity is near — 2005), снял фильм и даже основал (вместе с Google и NASA) Singularity University. Так что когда появилась информация, что он выпускает новую книгу о том, как cделать мозг (How to create a mind – the secrets of human thought revealed), — я тут же сделал предзаказ.
А для тех, кто сомневается, стоит ли покупать и для всех интересующихся предлагаю этакий обзор: а что же именно хотел сказать автор?
+42
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Зарегистрирован
- Активность