Сколько раз мне приходилось настраивать GC, чтобы вылечить приложение, у которого время от времени случается приступ, и оно перестает временно выполнять свои функции. Работа, скажу, не самая занимательная и требует хорошего знания матчасти. В данном топике я опишу какие еще есть способы решения данной проблемы.
Маслов Александр @drakmail
SRE
Исключение != ошибка
4 min
29KМногие программисты почему-то считают, что исключения и ошибки — это одно и то же. Кто-то постоянно кидает exception, кто-то через errorHandler превращает ошибки в исключения. Некоторые пытаются увеличить производительность, используя исключения. Но, на самом деле, exception и ошибки — это совершенно разные механизмы. Не надо одним механизмом заменять другой. Они созданы для разных целей.
Когда появился php5 с исключениями, а затем ZendFramework, который всегда кидает исключения — я не мог понять: чем же exception лучше моего любимого trigger_error()? Долго думал, обсуждал с коллегами и разобрался в этом вопросе. Теперь я чётко знаю, где использовать trigger_error(), а где throw new Exception().
В чём же принципиальная разница между ними?
Когда появился php5 с исключениями, а затем ZendFramework, который всегда кидает исключения — я не мог понять: чем же exception лучше моего любимого trigger_error()? Долго думал, обсуждал с коллегами и разобрался в этом вопросе. Теперь я чётко знаю, где использовать trigger_error(), а где throw new Exception().
В чём же принципиальная разница между ними?
+47
Учимся писать userscript'ы
7 min
294KTutorial

В этой статье я хочу поведать о том, что такое юзерскрипты, c чем их едят и, главное, как их готовят!
Внимание: предполагается минимальное знание javascript.
На практике доказано: юзерскрипты может писать человек, не знакомый с программированием, но обладающий усидчивостью и желанием изучить javascript!
О том, что такое javascript и как с ним обращаться, можно узнать на javascript.ru.
+124
Способы обхода паролей BIOS
3 min
572KНевзирая на то, что BIOS является мощным средством защиты, существуют способы обхода установленного в ней пароля.
Иногда любопытные или стремящиеся максимально защитить свои данные пользователи ставят пароли на всём, на чём только можно, но нередко эти пароли ими забываются. Тяжело переносится забытие пароля на BIOS (пароль на загрузку системы), зачастую это может привести к покупке новой материнской платы, однако этого можно избежать воспользовавшись слабостями архитектуры построения ЭВМ и преднамеренно оставленными разработчиками «чёрными ходами».
Иногда любопытные или стремящиеся максимально защитить свои данные пользователи ставят пароли на всём, на чём только можно, но нередко эти пароли ими забываются. Тяжело переносится забытие пароля на BIOS (пароль на загрузку системы), зачастую это может привести к покупке новой материнской платы, однако этого можно избежать воспользовавшись слабостями архитектуры построения ЭВМ и преднамеренно оставленными разработчиками «чёрными ходами».
-18
Создание CCK-мультиполей
3 min
4.3KДанный топик является своеобразным ответом на Нетривиальная задача для Node Reference поля Drupal и Модуль для кулинарного сайта. Но, в отличие от авторов тех двух топиков, я не собираюсь изобретать велосипед и писать свое решение, а просто покажу как эта задача будет решаться в недалеком будущем (да и сейчас вобщем-то уже можно), и что станет стандартом де-факто в Drupal. Почему я так уверенно завляю о стандарте? Все очень просто — речь пойдет о CCK (Content Construction Kit) 3.
+23
Направляем энергию GLPI в свое русло
7 min
101KГде-то 3 месяца назад в нашей фирме поднялся вопрос о регистрации обращений пользователей в IT отдел. Мне было поручено просканить интернет на предмет системы учета заявок, такого себе хелпдеска. Требования были предъявлены следующие:
1. Бесплатность (да-да, платить за эту систему отказались).
2. Возможность сбора статистики (для больших боссов).
3. Сигнал на почту (не только админам, но и пользователям, а так же всем заинтересованным именно в этой заявке лицам).
4. FAQ и база знаний.
Сказано — сделано. Так как все эти системы для меня были в новинку, то по совету на каком то из форумов я выбрала GLPI. Тем более, что эта система обещала облегчить процесс инвентаризации, что является довольно неплохим бонусом!
1. Бесплатность (да-да, платить за эту систему отказались).
2. Возможность сбора статистики (для больших боссов).
3. Сигнал на почту (не только админам, но и пользователям, а так же всем заинтересованным именно в этой заявке лицам).
4. FAQ и база знаний.
Сказано — сделано. Так как все эти системы для меня были в новинку, то по совету на каком то из форумов я выбрала GLPI. Тем более, что эта система обещала облегчить процесс инвентаризации, что является довольно неплохим бонусом!
+22
PyQt4 и QML
6 min
13KСовсем недавно, разработчики фреймворка Qt Software, обрадовали нас появлением GUI, альтернативного стандартному, со своим, довольно несложным, языком разметки — QML.
Связкой QML с основной программой является модуль Qt Declarative. Начиная с версии 4.7 — PyQt4 поддерживает этот модуль.
QML значительно проще и гибче основного GUI, помимо того является и языком программирования, так как позволяет писать функции на javascript. В то время как Python довольно простой и гибкий интерпретируемый язык.
Связкой QML с основной программой является модуль Qt Declarative. Начиная с версии 4.7 — PyQt4 поддерживает этот модуль.
QML значительно проще и гибче основного GUI, помимо того является и языком программирования, так как позволяет писать функции на javascript. В то время как Python довольно простой и гибкий интерпретируемый язык.
+42
Emacs для web-разработчика
3 min
12KПо традиции:
Это мой первый пост, — не судите строго.
Emacs. Про него много сказано. Про него очень много сказано и написано. Про него будет сказано и написано ещё больше.
Любой может настроить «эту ОС» под себя! Я тоже так думал.
Всё оказалось
Смело бросился в бой.
Первое чувство — страх. После пришло удивление — «как великие крутышки и убер программера тут живут!?».
Множество часов Google'ния не дали должного результата, но дали возможность понять — за что же его так любят!
И так! Вот чего я добился:
+7
Консольный cucumber и capybara при помощи Selenium и Hudson
4 min
4.3KTranslation
В наши дни разработчики ПО не могут прожить без их любимых тестовых фреймворков. Но вот чего разрабочики не хотят — так это обеспечивать постоянный запуск этих тестов. Также, команды разработчиков не хотят тратить время на доведение результатов теста до всех.
Появляется все больше и больше полезных приложений, библиотек и плагинов, которые частично облегчают головную боль, возникающую в ходе попыток сделать тесты полезными для всей команды. Примерами прекрасных инструментов, которые есть в нашем распоряжении, могут быть Hudson для непрерывной интеграции, Cucumber для интеграционных тестов и Selenium для автоматизированного тестирования веб-приложений в реальном браузере. Но организация совместной работы всего этого требует все больше и больше настроек и конфигураций на сборочном сервере.
Наша цель — задокументировать шаги, требуемые для преодоления встречающихся препятствий на пути к запуску полного набора тестов Cucumber со сценариями на Selenium на сборочном сервере Hudson.
Появляется все больше и больше полезных приложений, библиотек и плагинов, которые частично облегчают головную боль, возникающую в ходе попыток сделать тесты полезными для всей команды. Примерами прекрасных инструментов, которые есть в нашем распоряжении, могут быть Hudson для непрерывной интеграции, Cucumber для интеграционных тестов и Selenium для автоматизированного тестирования веб-приложений в реальном браузере. Но организация совместной работы всего этого требует все больше и больше настроек и конфигураций на сборочном сервере.
Наша цель — задокументировать шаги, требуемые для преодоления встречающихся препятствий на пути к запуску полного набора тестов Cucumber со сценариями на Selenium на сборочном сервере Hudson.
+18
Временное переключение WIFI в режим точки доступа
3 min
36KПредставьте, что вы поехали в другую страну, у вас собой есть смартфон и вам очень нужно зайти с него в интернет (например синхронизировать контакты или поставить какой-то софт). Какие есть варианты?
— Первый вариант — это мобильный интернет. К сожалению, это не всегда просто и не всегда дёшево.
— Второй вариант — WIFI. Вам повезло, если вы можете подключиться к WIFI там, куда вы прибыли, и в этом случае задача уже решена.
— Третий вариант — LAN. А что если у нас есть только LAN? Самое простое — это захватить с собой из дома небольшую точку доступа, но что если вы её не взяли с собой или у вас её нет? В этос случае вам поможет случайно захваченный с собой ноутбук или нетбук :)
— EeePC 901 с Ubuntu 10.10
— Смартфон
— Локальная сеть
— Получить доступ в сеть со смартфона используя WIFI
— Первый вариант — это мобильный интернет. К сожалению, это не всегда просто и не всегда дёшево.
— Второй вариант — WIFI. Вам повезло, если вы можете подключиться к WIFI там, куда вы прибыли, и в этом случае задача уже решена.
— Третий вариант — LAN. А что если у нас есть только LAN? Самое простое — это захватить с собой из дома небольшую точку доступа, но что если вы её не взяли с собой или у вас её нет? В этос случае вам поможет случайно захваченный с собой ноутбук или нетбук :)
Имеем
— EeePC 901 с Ubuntu 10.10
— Смартфон
— Локальная сеть
Задача
— Получить доступ в сеть со смартфона используя WIFI
+56
Тестирование в Java. TestNG
16 min
240KTutorial

Наверняка все знакомы с таким понятием как test-driven development(TDD). Наряду с ним также существует такое понятие, как data-driven testing(DDT, не в обиду Шевчуку) — техника написания тестов, при которой данные для тестов хранятся отдельно от самих тестов. Они могут храниться в базе данных, файле, генерироваться во время исполнения теста. Это очень удобно, так как один и тот же функционал тестируется на различных наборах данных, при этом добавление, удаление или изменение этих данных максимально упрощено.
В предыдущей статье я рассмотрел возможности JUnit-а. Там примерами такого рода подхода могут служить запускалки Parameterized и Theories, в обоих случаях один тест-класс может содержать только один такой параметризированный тест(в случае Parameterized несколько, но все они будут использовать одни и те же данные).
В этой статье я заострю внимание на тестовом фреймворке TestNG. Многие уже слышали это название, и перейдя на него, вряд ли желают вернуться к JUnit-у(хотя это только предположение).
+22
Критерии оценки сайта
4 min
84KКакой сайт можно считать хорошим, а какой — нет? Есть ли какие-то критерии оценки сайта, определения его качества?
В этой статье мы попробуем разобраться в этих вопросах.
Первым делом необходимо определить критерии, по которым можно будет оценивать сайт, и расставить их в порядке важности.
Почему я расставил критерии именно в таком порядке? Из таких соображений.
В этой статье мы попробуем разобраться в этих вопросах.
Критерии оценки сайта
Первым делом необходимо определить критерии, по которым можно будет оценивать сайт, и расставить их в порядке важности.
- Видимость сайта поисковыми системами
- Удобство использования сайта
- Дизайн сайта
- Функциональность
Почему я расставил критерии именно в таком порядке? Из таких соображений.
-8
Выпущена утилита ioping для тестирования отзывчивости дисковой подсистемы
1 min
5.5KСлучайно наткнулся на свеженаписанную утилиту ioping, написал её русский программист koct9i, пользователь k001 оформил в rpm для fedora 14 . ioping на google code.
А пользователь Grohman собрал ебилд, а LupineDreamer сделал деб-пакет i386 и x64 от magzimko.
Выглядит это дело примерно вот как:
$ ioping -i 0.2 -c 6 -s 1M -S 10M /tmp
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=1 time=0.7 ms
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=2 time=191.3 ms
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=3 time=18.4 ms
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=4 time=12.4 ms
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=5 time=8.4 ms
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=6 time=8.2 ms
А пользователь Grohman собрал ебилд, а LupineDreamer сделал деб-пакет i386 и x64 от magzimko.
Выглядит это дело примерно вот как:
$ ioping -i 0.2 -c 6 -s 1M -S 10M /tmp
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=1 time=0.7 ms
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=2 time=191.3 ms
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=3 time=18.4 ms
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=4 time=12.4 ms
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=5 time=8.4 ms
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=6 time=8.2 ms
+71
Работа с виртуальными машинами KVM. Подготовка хост-машины
7 min
96KВступление

+40
Основы и заблуждения насчет JavaScript
9 min
55KОбъекты, классы, конструкторы
ECMAScript, будучи высоко-абстрактным объектно-ориентированным языком программирования, оперирует объектами. Существуют также и примитивы, но и они, когда требуется, также преобразуются в объекты. Объект — это коллекция свойств, имеющая также связанный с ней объект-прототип. Прототипом является либо также объект, или же значение null.В JavaScript нет привычных классов, но есть функции-конструкторы, порождающие объекты по определенным алгоритмам (см. Оператор new).
Прототипное делегирующее наследование
Классическое наследование очень похоже на то, как люди наследуют гены своих предков. Есть какие-то базовые особенности: люди могут ходить, говорить… И есть характерные черты для для каждого человека. Люди не в состоянии изменить себя — свой класс (но могут поменять собственные свойства) и бабушки, дедушки, мамы и папы не могут динамически повлиять на гены детей и внуков. Все очень по земному.
Теперь представим другую планету, на которой не такое как на Земле генное наследование. Там обитают мутанты с «телепатическим наследованием», которые способны изменять гены своих потомков.
Разберем пример. Отец наследует гены от Дедушки, а Сын наследует гены от Отца, который наследует от Дедушки. Каждый мутант может свободно мутировать, и может менять гены своих потомков. Например у Дедушки был зеленый цвет кожи, Отец цвет унаследовал, Сын тоже унаследовал цвет. И вдруг Дед решил: «надоело мне ходить зеленым — хочу стать сними», смутировал (изменил прототип своего класса) и «телепатически» распространил эту мутацию Отцу и Сыну, вобщем посинели все. Тут Отец подумал: «Дед на старости лет совсем двинулся» и поменял свой цвет в генах обратно на зеленый(изменил прототип своего класса), и распространил «телепатически» свой цвет сыну. Отец и Сын зеленые, Дед синий. Теперь как бы дед ни старался Отец и сын цвет не поменяют, т.к сейчас Отец в своем прототипе прописал цвет, а Сын в первую очередь унаследует от Прототипа Отца. Теперь Сын решает: «Поменяю ка я свой цвет на черный, а моё потомство пусть наследует цвет от Отца» и прописал собственное свойство, которое не влияет на потомство. И так далее.
+148
Упрощаем регистрацию и вход на сайт
7 min
35KTutorial
Представляю вашему вниманию перевод статьи под названием "Innovative Techniques To Simplify Sign-Ups and Log-Ins" от Anthony T. Перевели в компании UXDepot специально для пользователей Хабрахабра с одобрением издания Smashing Magazine.
Существует множество различных способов создания форм регистрации и авторизации. Большинство дизайнеров знакомы с традиционными способами.
Однако, зная и используя некоторые инновационные техники, можно сделать формы понятнее и легче для заполнения.

Форма авторизации на сайте Basecamp
В этой статье мы представляем несколько идей, которые могли бы оказаться полезными для ваших проектов. Но, собираясь использовать их, пожалуйста убедитесь в том, что правильно понимаете контекст, в котором их следует применять. А еще мы будем рады увидеть результаты юзабилити-тестирований, подтверждающие или опровеграющие советы, изложенные ниже.
+227
Текстовые поля: эргономика и дизайн
4 min
13KTranslation

Заполнение текстовых полей относится к числу важных и деликатных моментов работы с веб-сайтами. Нередки случаи, когда пользователи отказываются регистрироваться на сайте, потому что не понимают, как именно нужно правильно заполнять формы регистрации. Учет эргономических аспектов данного элемента интерфейса поможет сделать сайт более удобным и привлекательным для пользователей.
+23
Цветной man или как разукрасить вывод echo
8 min
116KКогда пишешь даже минимальный скриптик, часто используешь echo — подсказки.
Согласитесь "цветной man" ведь намного приятнее читать, так почему бы не раскрасить вывод echo?
это достаточно легко.
Итак…
Задача:
Раскрасить текстовую строку выводимую на экран через команду echo
т.е. раскрасить эти самые подсказки
Согласитесь "цветной man" ведь намного приятнее читать, так почему бы не раскрасить вывод echo?
это достаточно легко.
Итак…
Задача:
Раскрасить текстовую строку выводимую на экран через команду echo
т.е. раскрасить эти самые подсказки
+46
Новый CUBRID 8.4.0: теперь вдвое быстрее
4 min
1.3KTranslation
Дождались! Новая версия СУБД CUBRID 8.4.0 является самой мощной из ранее выпущенных версий, а теперь еще с вдвое ускоренным движком базы данных!
Этот выпуск сочетает повышенную производительностью со множеством новых возможностей, часто запрашиваемых пользователями. Результаты тестов, основыванные на том же сценарии [ссылка на PDF файл отчета на английском], который мы обычно используем для проведения контроля качества новых выпусков, показывают повышенную производительность движка почти в три раза для определенных функций.
Этот выпуск сочетает повышенную производительностью со множеством новых возможностей, часто запрашиваемых пользователями. Результаты тестов, основыванные на том же сценарии [ссылка на PDF файл отчета на английском], который мы обычно используем для проведения контроля качества новых выпусков, показывают повышенную производительность движка почти в три раза для определенных функций.
+4
Обращение зависимостей и порождающие шаблоны проектирования
18 min
13KАннотация
Это третья статья, просвещенная порождающим шаблонам проектирования и связанным с ними вопросами. Здесь мы рассмотрим излюбленные приемы при создании объектов: фабрики,
+39
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity