[Перевод] Ошибочное понимание принципа DRY |
Я знаю, о чём вы подумали: «Ещё одна скучная статья про DRY? Нам их мало, что ли?».
Возможно, вы правы. Но я встречаю слишком много разработчиков (junior и senior), применяющих DRY так, словно они охотятся на ведьм. Либо совершенно непредсказуемо, либо везде, где можно. Так что, судя по всему, в интернете никогда не будет достаточно статей о принципе DRY.
Если кто не знает: принцип DRY — это "Don't Repeat Yourself" (не повторяйся), и впервые о нём упомянуто в книге The Pragmatic Programmer. Хотя сам по себе этот принцип был известен и применялся задолго до появления книги, однако в ней ему было дано название и точное определение.
Итак, без лишних рассуждений отправимся в путешествие по чудесной стране DRY!
Читать дальше ->
Метки: author AloneCoder разработка веб-сайтов анализ и проектирование систем php it- стандарты блог компании mail.ru group dry никто не читает теги |
Книжная распродажа |
Метки: author ph_piter профессиональная литература блог компании издательский дом «питер» книги |
Frontend на CodeFest: React, Javascript и лучшие практики |
|
Let's Encrypt отложил выпуск wildcard-сертификатов из-за проблем безопасности |
|
[Перевод] Бенчмарк нового тензорного процессора Google для глубинного обучения |
|
Выпуск#12: ITренировка — актуальные вопросы и задачи от ведущих компаний |
Метки: author reci программирование занимательные задачки блог компании spice it recruitment spiceit it ренировка задачи для собеседований |
Тренинг FastTrack. «Сетевые основы». «Основы коммутации или свитчей». Часть вторая. Эдди Мартин. Декабрь, 2012 |
|
Две модели лучше одной. Опыт Яндекс.Переводчика |
|
Две модели лучше одной. Опыт Яндекс.Переводчика |
|
Две модели лучше одной. Опыт Яндекс.Переводчика |
|
[Из песочницы] Как сделать адекватное отображение horizontal scroll bar в QTreeWidget с одной колонкой |
Привет, Хабр.
В этой статье я решил оставить решение проблемы непонятного поведения QTreeWidget – GUI компонента кроссплатформенного фреймворка Qt. Проблема, мне кажется, актуальная, потому что вопрос задаётся на многих форумах, но верного решения не приводится. Впрочем, если я ошибаюсь, НЛО мне об этом сообщит.
В Qt есть компонент QTreeWidget, предназначенный для древовидного отображения информации. Элементом или узлом дерева может быть текст с картинкой, или же другой виджет.
В ходе эксплуатации этого компонента у некоторых пользователей возникает проблема, когда текст элемента или узла не помещается в ширину виджета, и компонент при этом не позволяет пользователю скролить содержимое влево/вправо чтобы тот мог прочитать текст целиком. Вместо этого появляется троеточие в конце текста. Проблема встречается в случаях использования виджета с одной колонкой, или с несколькими (тогда проблема возникает в последней колонке).
Никакое свойство класса QTreeWidget или его предков не даёт возможности активировать автоматическое изменение размера области просмотра колонки. Так что, если вы тоже столкнулись с этим недоразумением, прошу под кат.
Читать дальше ->
Метки: author Princess_York графический дизайн qt qtreewidget qtreewidget horizontal scroll bar |
Страх публичных выступлений |
|
Страх публичных выступлений |
|
Страх публичных выступлений |
|
Пунктирные вау-эффекты: о магии простыми словами |
Метки: author sfi0zy разработка веб-сайтов javascript svg анимация вау-эффект |
Пунктирные вау-эффекты: о магии простыми словами |
Метки: author sfi0zy разработка веб-сайтов javascript svg анимация вау-эффект |
Пунктирные вау-эффекты: о магии простыми словами |
Метки: author sfi0zy разработка веб-сайтов javascript svg анимация вау-эффект |
[Перевод] Метод Бенджамина Франклина для чтения книг по программированию |
class User < ApplicationRecord
attr_accessor :remember_token
before_save { self.email = email.downcase }
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
has_secure_password
validates :password, presence: true, length: { minimum: 6 }
# …далее ещё 30 строчек...
end
|
[Перевод] Метод Бенджамина Франклина для чтения книг по программированию |
class User < ApplicationRecord
attr_accessor :remember_token
before_save { self.email = email.downcase }
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
has_secure_password
validates :password, presence: true, length: { minimum: 6 }
# …далее ещё 30 строчек...
end
|
[Перевод] Метод Бенджамина Франклина для чтения книг по программированию |
class User < ApplicationRecord
attr_accessor :remember_token
before_save { self.email = email.downcase }
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
has_secure_password
validates :password, presence: true, length: { minimum: 6 }
# …далее ещё 30 строчек...
end
|