Search
Write a publication
Pull to refresh
4
0
Сергей @HSerg

Разработчик

Send message

Введение во фреймворки (Часть 2)

Reading time6 min
Views12K
Тестирование
Часть 1

Второе поколение фреймворков

Это поколение является промежуточным уровнем фреймворков автоматизированного тестирования, среди них могут быть и достаточно простые фреймворки, а могут быть и достаточно хорошо спроектированные. Подобные фреймворки должны рассматриваться в случае, когда поддержка автотестов является важным фактором. Хорошее понимание этого поколения фреймворков является важным, так как на концепциях фреймворков этого уровня основываются фреймворки третьего поколения.
К фреймворкам второго поколения относятся фреймворки ориентированные на данных и фреймворки использующие функциональную декомпозицию. Большинство фреймворков этого уровня являются гибридами и используют оба подхода, но так как возможно использование только одного из них, то эти подходы будут рассмотрены независимо друг от друга.
Читать дальше →

Введение во фреймворки (Часть 1)

Reading time5 min
Views23K
Автоматизированное тестирование
Автоматизированное тестирование (АТ) наиболее эффективно, когда реализовано с помощью фреймворка. Несмотря на то, что в АТ термин фреймворк зачастую используется для описания совокупности объектов, которая формирует инструмент модульного тестированиия, эта статья будет в основном сфокусирована на фреймворках другого рода. Мы обсудим типы фреймворков, которые могут быть определены как совокупность абстрактных понятий, процессов, процедур и сред, с помощью которой автоматические тесты проектируются, создаются и реализуется. Кроме того, это определение фреймворка включает в себя физические объекты, используемые для создания тестов и их реализации, а также для организации логического взаимодействия между компонентами.
Автоматизированное тестирование (и, следовательно, фреймворки) развивалось годами, формируясь и усложняясь с каждой новой фазой эволюции. Эти фазы могут быть описаны в терминах трех поколений, каждое из которых обладает набором недостатков и преимуществ, благодаря которым каждое из них остается актуальным, несмотря на новые разработки. Представленные ниже понятия обычно используются для автоматизации функционального тестирования, но в некоторых случаях их можно применить и для решения задач модульного тестирования.
Читать дальше →

Пакетное преобразование видео для бытовых плееров

Reading time5 min
Views9.8K
Обладание большой видеотекой сегодня не редкость, и обычно в нее стараются собрать все в самом лучшем качестве. Однако другая сторона медали — несовместимость со старыми бытовыми проигрывателями, древними ноутбуками и прочими портативными гаджетами.

Я столкнулся с этим по банальной причине бытового комфорта.
Читать дальше →

Зачем ITIL обычному среднестатистическому администратору (10-500 ПК)

Reading time4 min
Views94K
Привет. Сразу скажу, что тема применима не только к администраторам, но и к фрилансерам, аутсорсерам.
Прошёл на днях тренинг «HF421S, ITIL Foundation for IT Service Managment», под впечатлением несу Прометеев огонь в массы.
Надеюсь, большинство знает, что такое ITIL, для остальных выдержка из вики:
ITIL (произносится как «айти́л», англ. — библиотека инфраструктуры информационных технологий) — библиотека, описывающая лучшие из применяемых на практике способов организации работы подразделений или компаний, занимающихся предоставлением услуг в области информационных технологий.

Бытует мнение, что ITIL это серьёзно, сложно и запутано, необходимо только очень большим компаниям, а большинство справляется со всем «на коленке», держит в памяти, и это нормально и удобно.
Отнюдь.
Следование принципам ITIL помогает в первую очередь администратору компании любого размера работать спокойно, стабильно, спланировано. Это просто.
Краеугольный камень здесь.

SQLite и UNICODE

Reading time10 min
Views61K
Первая часть — вводная.
Вторая часть — быстрый старт.
Третья часть — особенности.

Несмотря на то, что эта тема затрагивалась на Хабре и раньше, некоторые ключевые вещи не прозвучали. В этой статье делается попытка «закрыть тему». Замечания по дополнению/исправлению приветствуются.

Читать дальше →

Протоколирование: рекомендации по трассировке

Reading time10 min
Views23K
В данной статье я хочу поделиться своими мыслями/наблюдениями/рекомендациями относительно реализации такой важной задачи при разработке ПО как протоколирование. В Интернете существует множество статей описывающих инструменты для протоколирования, но очень мало информации о том, какие именно события, и какую информацию, нужно записывать в протокол работы программы.
Читать дальше →

Компания Atari в партнёрстве с Microsoft запустила свои старые игры в онлайн

Reading time1 min
Views4.1K
Сегодня издатель и разработчик компьютерных игр Atari выложил специально адаптированные для веб-браузеров игры Atari Arcade. Среди тайтлов есть Asteroids, Centipede, Combat, Lunar Lander, Missile Command, Yars Revenge, Pong и Super Breakout, а другие будут добавлены позже. Техническим партнёром выступила Microsoft, что, естественно, привело к тому, что наилучшие впечатления от игры можно получить на Internet Explorer 10 под Windows 8 с тачевым управлением.
Пользователи других браузеров будут видеть рекламу. Pong на Chrome 22 под Windows 7 работал сносно, хотя потом повис, и вкладка упала. Игры тут.
Разработчикам за js-либами и сэмплами прямиком сюда.

Почему важно делать эскизы, прежде чем переходить к прототипу

Reading time5 min
Views56K
Вольный перевод статьи о том, почему важно делать эскизы-зарисовки, прежде чем приступать к проектированию интерфейсов. Мне, как менеджеру проектов и, частично, проектировщику интерфейсов — статья показалась очень полезной. Крайне рекомендуется к прочтению всем участникам проектных команд.



Читать дальше →

Автоматизация ИТ процессов в условиях низкой мотивации и/или квалификации исполнителей

Reading time7 min
Views9.7K
Основная сфера моей работы на протяжении 16 лет – автоматизация деятельности предприятий. Поскольку начиналось все еще в 1996 году, в небольшом городе и в отсутствии литературы по программированию персональных компьютеров – то все делалось методом проб и ошибок или «методом научного тыка». Времена поменялись, появилось множество методик (сам ими не пользуюсь) по автоматизации, внедрению и поддержке ПО для автоматизации деятельности.
Читать дальше →

Список Full-Mesh VPN решений

Reading time2 min
Views236K

Введение


Многие интересуются Full-Mesh (или P2P) VPN, хотят использовать их для игр с друзьями, для связи удаленных офисов, серверов, да для чего угодно. Обычные VPN, вроде OpenVPN или PPTP, пропускают весь трафик через центральный сервер, а Full-Mesh соединяются непосредственно с нодами, зачастую пробивая NAT.
Читать дальше →

Шрифт «Ораниенбаум» теперь доступен на сайте Google Web Fonts

Reading time1 min
Views7.3K
Напоминаю, что в начале августа я сообщил Хабрахабру о выходе бесплатного шрифта «Ораниенбаум», имеющего нижеследующий вид:

[Ораниенбаум (внешний вид)]

Знайте же, что теперь этот шрифт принят на сайте Google Web Fonts, что позволяет вам выбирать необходимые символы и тем оптимизировать размер файла шрифта, поставляемого читателю сайта.

Практика рефакторинга в больших проектах

Reading time4 min
Views15K
Некоторое время назад я попал в геймдев, где столкнулся с проектами по 2 млн. строк кода, которые пишут десятки программистов. При таких масштабах кодобазы возникают проблемы неведомого мне ранее характера. Об одной и них я хочу вам сейчас рассказать.

Итак, представьте себе следующую ситуацию. Так уж случилось, что вам надо отрефакторить очень большой кусок кода, целую подсистему. Строк, эдак, на 200К. Причем рефакторинг явно выглядит очень крупным, затрагивающим базовые концепции, по которым построена ваша подсистема. Фактически надо переписать всю архитектуру, сохранив бизнес логику. Такое бывает, если, например, вы сделали один проект и у вас впереди новый, и вы хотите в нём исправить все ошибки прошлого. Допустим, по первым прикидкам, на рефакторинг надо месяца 2, не меньше. В процессе рефакторинга всё должно работать, в том числе нельзя мешать другим программистам добавлять новые фичи и чинить баги в подсистеме. Часто такой рефакторинг бывает насколько сложен, что совершенно невозможно замерджить старый код в новый, а также невозможно выкатить результат по частям. Фактически вам надо заменить двигатель самолёта на лету.

Примеры из практики, как моей, так и моих коллег:
  • Переделать всю работу с базой данных с чистого JDBC на Hibernate.
  • Переделать архитектуру сервиса с отсылки-приёмки сообщений на удалённый вызов процедур (RPC).
  • Полностью переписать подсистему трансляции XML файлов в рантайм объекты.


Что делать? С какой стороны подойти к проблеме? Ниже представлен набор советов и практик, которые нам помогают справиться с этой проблемой. Сначала более общие слова, а потом конкретные методики. В общем-то ничего сверхъествественного, но кому-то может помочь.
Читать дальше →

Классный оконный менеджер — Awesome WM

Reading time4 min
Views168K
imageЗдравствуйте! Прочитав недавно статью про оконные менеджеры в Linux, мне захотелось рассказать всем о менеджере, который был там упомянут — «awesome».
Это тайлинговый windows manager для unix (linux, freebsd, openbsd, netbsd).
Читать дальше →

Руководство по форматированию CSS

Reading time3 min
Views12K
По мере того как мы подводим итоги недавнего опроса по сортировке CSS свойств у нас появляется более серьезные вопросы о стиле форматирования CSS. Сортировка свойств это всего лишь один шаг на вашем пути к завершенной стратегии форматирования стилей. Название класса — это часть стратегии. Распределение — часть стратегии. Комментарии, отступы, структура файла… все это формирует руководство по форматированию CSS.

Давайте рассмотрим существующие практики форматирования.
Читать дальше →

Обзор инструментов для визуального сравнения и разрешения конфликтов слияния

Reading time6 min
Views144K
На хабре уже было много статей о распределенных системах управления версиями (DVCS), их сравнений, а также сравнений GUI-клиентов для них. Также были обсуждения плагинов к IDE для работы с git и mercurial. Но практически не было информации об инструментах визуального сравнения и разрешения конфликтов слияния.

diff and merge
Недавно я «перескочил» с mercurial (который до сих пор считаю более удобным и логичным) на git, потому что, подавляющее большинство проектов, которые мне интересны, используют git и хостятся на github. В связи с этим, встал вопрос о пересмотре арсенала инструментов, в частности вопрос выбора инструмента визуального сравнения и слияния (diff and merge). Дабы восполнить недостаток информации на хабре, я решил написать этот мини-обзор. Как говориться — по горячим следам.

Под катом Вы также найдете примеры настроек Git для использования с DiffMerge и WinMerge под Windows. Думаю многим сэкономит время.
Читать дальше →

Реализуем RESTful Web Service на java

Reading time8 min
Views186K
Добрый день всем хаброжителям!

Поводом к написанию статьи послужило, то что к моему большому удивлению на хабре я не нашёл статьи о реализации RESTful Web Service на Java, может, конечно, плохо искал. Да написано про RESTful web services очень много, но как то вот так, чтобы простенько с примерами кода, рабочий сервис, не так уж и легко найти и не только на хабре…

Вообще с REST я познакомился совсем недавно, не больше месяца назад. Так что буду очень благодарен за советы, поправки и критику!

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

По моему первому впечатлению: действительно вещь очень удобная, а главное очень простая, ещё и если использовать JSON, а не XML, ну по крайней мере мне так показалось после опыта работы с SOAP и WSDL. Ну, да об этом я думаю и так все знают, кто хоть немного работал с веб сервисами.

Так что, кто заинтересовался реализацией, прошу под кат
Читать дальше →

How it's made для программистов. Серия №2

Reading time2 min
Views4.3K
Cлышали ли вы об Open Source проектах, написанных на Java? А интересно ли вам узнать как они работают?



Если ваш ответ на последние два вопроса положителен, то неважно, слышали или нет вы о Queuepy до сих пор. Далее нам по пути.
Читать дальше →

Backdoor в вашем приложении на Java

Reading time2 min
Views7.3K
Я недавно наткнулся на статью, описывающую простейший грувлет, позволяющий исполнить любой код на Groovy у Вас на сервере. Мне это показалось очень удобным для организации отладочного бэкдора.

Проблема в то, что грувлеты — это всё таки сервер, а у нас есть еще толстый клиент на Swing. Для него мне хотелось бы сделать нечто похожее, но встраивание какого нибудь embedded Jetty или Tomcat только для этого в клиент выглядело как то слишком.

По счастью, мне попалась на глаза и другая статья — про наличие в стандартной библиотеке Java простейшего веб сервера. Вот им то я и решил воспользоваться.
Читать дальше →

Опасности метода finalize

Reading time3 min
Views22K
Во время написания статьи про использование фантомных ссылок, мне потребовалось сослаться на неудобства возникающие при работе с методом finalize. К тому же, считаю, что данный топик будет полезен всем начинающим java разработчикам, а некоторые пункты будет не лишним вспомнить и матерым программистам, ведь использовать метод finalize очень просто, чего не скажешь о поиске последсвий этого. Даже если вы твердо убеждены никогда не использовать метод finalize, это еще не значит, что ваши предыдущие коллеги их не использовали, и вам не надо понимать как они работают.
Читать дальше →

Разработка технического задания (ТЗ) на программный продукт с точки зрения заказчика

Reading time7 min
Views61K
За время своей работы мне удалось взглянуть на процесс разработки технических заданий на программные продукты с нескольких точек зрения. С точки зрения аналитика – непосредственного исполнителя работ, с точки зрения руководителя проекта со стороны исполнителя, организующего процесс создания ТЗ, с точки зрения руководителя группы разработчиков, реализующих эти самые ТЗ, а также с точки зрения заказчика системы, впоследствии принимающего решение по разработанному ранее ТЗ.

Надо сказать, что у каждой из этих заинтересованных сторон свои требования и свое видение того, каким должно быть «хорошо написанное ТЗ». Например, у заказчика и исполнителя могут быть совершенно противоположные мнения на этот счет. Исполнитель может быть заинтересован в максимально подробном ТЗ для того, чтобы максимально формализовать свои обязательства по функционалу создаваемого решения. При этом заказчик, который точно не определился с параметрами будущей системы или у которого «ветер в голове», может требовать более общих формулировок, описания системы крупными мазками для того, чтобы потом попытаться включить в рамки оговоренного бюджета новые требования. Конечно же, при другом «менталитете» заказчика и исполнителя все может быть с точностью до наоборот. Сейчас мне хотелось бы остановиться именно на разработке ТЗ с точки зрения его заказчика, рассмотрев возможные ситуации, цели и тактики поведения.
Читать дальше →

Information

Rating
6,428-th
Registered
Activity

Specialization

Specialist
Lead