понедельник, 28 октября 2013 г.

Регулярные выражения в NotePad++

Допустим мы хотим из текста, оформленного как страница HTML, получить нормальный текст. Мы загружаем страницу в редактор NotePad++ и видим громадное количество операторов к примеру
(.*?)  а в поле замены вставляем \1

и тогда текст вида TЕКСТ превращается в ТЕКСТ.

Пояснения: в строке поиска все символы кроме .*? и (.*?) являются константами. Они должны просто совпасть. Символы .*? говорят о том, что имя класса может быть любым, знак вопроса говорит о том, кавычки справа надо брать ближайшие. Во втором случае надо не только взять текст между символами ><, но и поместить в буфер номер 1. Об этом говорят скобки. В поле замены мы ссылаемся на этот буфер при помощи слэша и номера буфера.  

четверг, 24 октября 2013 г.

Предложение with

Предложение with

Итак есть шанс, что вы уже знаете о предложении with, но возможно что некоторые этого еще не знают. Давайте осознаем реальность, предложение with сохраняет нам кучу времени и существенно уменьшает наш код. Толко представте себе - вы на python открываете файл и хотите в нем что-то сохранить. Обычно вы должны сделать так:
file = open('file.txt','w')
file.write("freepythontips.wordpress.com")
file.close()
А что если пока вы пишите в файл, случиться прерывание, тогда файл не будет правильно закрыт. Я знаю как много трудностей это принесет. Такое случилось однажды со мной; я выполнял программу сбора данных по Интернету. Программа работала около трех часов и неожиданно из-за сбоя прекратила работу. Файл с результатами был испорчен и мне пришлось все повторить. Обратите внимание на этот момент. Что вы должны сделать, что бы застраховаться от таких неожиданностей? Во-первых вы можете обернуть ваш код в выражение try-except, а еще лучше использовать предложение with. Давайте сначало поговорим о выражении try-except. Обычно вы делаете примерно так:
try:
    file = open('file.txt','w')
    file.write(data)
except:
    # выполните что-то при прерывании программы
finally:
    # here comes the trick. Финальные предложения.
    # Они выполняются даже в случае если произошло прерывание
    # и выполнилась обработка этого прерывания. Сдесь мы можем закрыть файл    
    file.close()
Теперь давайте посмотрим на предложение with. При его использовании вы обычно делаете следующее:
with open('file.txt','w') as file:
    file.write(data)
Обратите внимание, при использовании предложения with вы не должны закрывать файл явно. Это произойдет автоматически при окончании записи в файл.

 

вторник, 22 октября 2013 г.

CSS: каскад, специфичность и наследование

Перевод статьи Николаса Галлахера «CSS: the cascade, specificity, and inheritance», переводчик — heljoshin

CSS: каскад, специфичность и наследование

Краткая статья, содержащая основные понятия о каскаде, специфичности и наследовании в CSS.

Что такое каскад?

Каскад — это механизм, определяющий какие стили должны быть применены к данному элементу, основываясь на правилах, полученных из различных источников.
Каскад учитывает такие правила как: значимость, происхождение, специфичность и очередность источников устанавливающих стиль. Данный механизм присваивает приоритет каждому правилу. Когда несколько правил применяются к данному элементу, то правило с наибольшей значимостью станет приоритетным. Результатом является четкое определение роли данного элемента или сочетания элементов.

Браузеры применяют следующую логику при сортировке:
  1. Найти все декларации, применяющиеся к данному элементу или группе элементов, и относящиеся к определенному типу.
  2. Сортировать декларации в соответствии с их приоритетом (обычный или важный) и происхождением (автор, пользователь или пользовательский агент). По нисходящей приоритетности:
    1. пользовательская декларации типа !important
    2. авторские декларация типа !important
    3. обычные авторские декларации
    4. обычные пользовательские декларации
    5. декларации пользовательского агента
  3. Если декларации обладают одинаковым приоритетом и источником, то следует сортировать их по специфичности селектора.
  4. Наконец, если декларации обладают одинаковым приоритетом, источником и специфичностью, то сортировать их следует по порядку положения в таблице стилей – последний элемент в списке имеет самый высокий приоритет.

Что такое специфичность?

Специфичность — это метод разрешения конфликтов в пределах каскада.
Специфичность рассчитывается своим собственным способом, базируясь на значимости 4 различных категорий. Например, в CCS2 для представления этих категорий использовались буквы a, b, c, и d, где каждая по умолчанию имела значимость равную 0.
  • a равняется 1, если декларация указана в атрибуте стиля HTML ("инлайн-стили"), а не в селекторе, при помощи CSS-правила.
  • b равен количеству атрибутов ID в селекторе
  • c равен количеству других атрибутов и псевдо-классов в селекторе
  • d равен количеству элементов и псевдо-элементов в селекторе
Специфичность высчитывается путем сложения результатов всех 4 данных. Селекторы с более высоким показателем имеют приоритет.
Например, селектор #id .class[href] element:hover содержит:
  • 1 ID (b равен 1)
  • 1 класс, 1 селектор атрибута, и 1 псевдо-класс (c равен 3)
  • 1 элемент (d равен 1)
Таким образом, элемент имеет специфичность равную 0,1,3,1. Следует отметить, что селектор, содержащий один лишь ID (0,1,0,0) будет иметь больший приоритет, чем любой другой, пусть даже последний имеет большее количество других атрибутов или элементов (например: 0,0,10,20). Это одна из причин, почему многие современные архитектурные шаблоны CSS не используют ID для стилизации.

Что такое наследование?

Наследование отличается от каскада и включает в себя дерево DOM.
Наследование — это процесс, при котором элементы наследуют значения свойств от своих предков в дереве DOM. Некоторые свойства, например, color, автоматически наследуется дочерним элементом. Каждое свойство определяет, будет ли оно автоматически унаследовано.
Значение inherit может быть задано для любого элемента, что заставит последний наследовать значение свойства родительского элемента, даже если свойство обычно не наследуется.

О значении !important

Написанное выше должно сделать очевидным тот факт, что «!important» отдельное понятие применительно к специфичности, которое никак не влияет на специфичность селектора правила.
Декларация !important имеет больший приоритет, чем обычные декларации (см. ранее описанную логику сортировки каскада), даже чем декларации, содержащиеся в атрибуте style.

Адрес оригинала http://css-live.ru/articles/css-kaskad-specifika-i-nasledovanie.html 


Вменяемый урок о специфике работы CSS

 Метки урока:css

Поговорим о специфике работы CSS

 Если вы часто используете CSS, то наверняка вам будет полезно знать о специфике его работы. Настоящий мастер в первую очередь должен знать именно это, а потом уже как позиционировать и оформлять элементы. Так же, если вы когда-то использовали ключевое слово important!, то эта статья так же для вас.

Как браузер читает CSS

В первую очередь вам необходимо знать, каким образом браузер читает CSS код. Делает он это сверху вниз, проходясь последовательно по каждой строчке:
/*Строка 10*/
ul li a {
 color: red;
}

/*Строка 90*/
ul li a {
 color: blue;
}


Правило написанное на строке 10, будет заменено на строке 90. В результате цвет ссылки будет синим. Правила с одинаковыми селекторами, которые находятся ближе к концу файла имеют больший приоритет.
Тот же самый принцип работает при последовальном подключении CSS файлов:


Специфика

Всё вышеперечисленное имеет место быть в том случае, если вес ваших селекторов одинаков. Если же вы приписываете ID, классы или вложенность элементов, то тут включается CSS специфика.
Существует 4 категории составляющих веса селектора: строчные стили, ID, классы и простые элементы. Как оценивать вес? Расклад такой:
  • ID-шки весят 100 очков
  • Классы весят 10 очков
  • Элементы весят по 1 очку
Зная это, рассчитаем приоритет селектора:
#content .sidebar .module li a

100 + 10 + 10 + 1 + 1 = 122 (ID, 2 класса, 2 элемента)
Запомните:
  • ID весит больше всего по сравнению с классами и элементами, поэтому вы должны ограничить использование ID в ваших стилях до минимума;
  • В случаях, когда селекторы весят одинаково, порядок их применения будет такой: последний селектор имеет больший приоритет;
  • Стили списанные в HTML самые козырные, так как они ближе всех к элементу;
  • Единственный способ переопределить встроенные стили, это использовать ключевое слово !important;
  • Псевдо-классы и атрибуты весят так же, как и обычные классы;
  • Псевдо-элементы весят, как обычные элементы;
  • Универсальный селектор (*) не весит ничего.

Примеры:

 ul li a {
 color: red;
}
Общий вес данного селектора 3 очка, так что добавив класс другой селектор будет иметь приоритет повыше.
.content #sidebar {
 width: 30%;
}
Данный селектор весит 110 очков из-за ID и класса.
.post p:first-letter {
 font-size: 16px;
}
Этот селектор весит 12 очков, так как псевдо-элемент :first-letter и тэг параграфа весят по одному баллу.
p {
font-family: Helvetica, arial, sans-serif;
}
Этот селектор весит всего 1 очко. Подобный тип селектора должен быть написан в верхней части страницы. При написании основных стилей, которые в дальнейшем могут быть переопределены для конкретных областей.
Запомните, что для переопределения ID-шки, вы должны написать 256 классов для одного элемента:
#title {
 font-weight: bold;
}

.home .page .content .main .posts .post .post-content .headline-area .wrapper /* ... etc. ... */ .title {
  font-weight: normal;
}
Только так второй селектор перебьёт первый.

Итог

Конечно теоретическая специфика CSS это далеко не самый важный аспект. Однако, зная эти правила можно ускорить работу над сайтом.

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: http://www.webdesignerdepot.com/2013/04/how-to-use-css-specificity/
Перевел: Станислав Протасевич
Урок создан: 7 Мая 2013




 


среда, 16 октября 2013 г.

Backup MS SQL на сетевой диск

Имеем базу MS SQL, размер 150 Гбайт и растет дальше. Обязательно нужен бэкап. Пока делали на этой же машине. Но диски маленькие(300Гб) и некуда писать бэкап. Появилась идея писать его на сетевой расшаренный диск. Вот тут-то и началось. Шара находится в одной сетке, а сервер в другой, да еще и демозоне. Решение такое:
  1. В шаре(это Linux Samba) заводится учетка с паролем.
  2. Между шарой и сервером в файрволе пробивается канал по сети.
  3. На сервере создается такая же учетка с тем же паролем.  
  4. На сервере в службах открываем службы MSSQL и Client. В свойствах этих служб в папке Log On вводим запуск служб от имени нашей учетки и ее пароль.
  5. Запускаем службы.
  6. На сервере в SQL открываем учетку из windows. Ей даем права на создание бэкапа.
  7. Входим на сервер под созданной учеткой.
  8. Мэпируемся к шаре, если все срослось, то пароль не спросят, они совпали.  
  9. На сервере запускаем программу osql с именем учетки и паролем
  10. В ней выполняем две команды
    USE master
    EXEC sp_addumpdevice 'disk', 'Nw1', '\\London\Backup\Nw1.bak'

    Где:
    Nw1 - название удалённого устройства. М.б. названо любым именем
    London - имя компьютера
    Backup - имя расшаренной папки
  11. Создаем командами T-SQL новый device см. выше
  12. Входим в Studio и создаем бэкап на дисковое устройство Nw1 шару.
  13. При создании JOB для бэкапа входить в сервер нада под той самой учеткой!  
  14. Это не обязательно! Главное, что бы учетки на шаре и сервере имели одно и то же имя и пароль!

И все.

X-Plane 11, 12 - любитель, Фото любитель со стажем

Постоянные читатели

Архив блога