IT Блог

Документации и переводы

Статьи на технические темы

Невозможно исправить ошибки, у вас отложены (held) битые пакеты

Когда терминал выдаёт что-то подобное: Невозможно исправить ошибки, у вас отложены (held) битые пакеты, или когда система linux не может найти какие-либо библиотеки, то нужно посмотреть в каком репозитории они лежат и добавить в /etc/apt/sources.list необходимые репозитории.

Например, когда я пытался запустить nodejs, терминал выдал следующее:

$ sudo apt-get install nodejs curl https://www.npmjs.org/install.sh | sudo sh
Пакеты, имеющие неудовлетворённые зависимости:
 nodejs : Зависит: rlwrap но он не может быть установлен
E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.

После добавления в /etc/apt/sources.list ссылки на репозиторий http://ftp.de.debian.org/debian у меня пакет nodejs, наконец-то, загрузился:

$ sudo nano /etc/apt/sources.list

Добавляем...


Адаптация картинок под разрешения с высокой плотностью пикселей

Данный код позволяет подставлять увеличенные в два раза картинки для экранов, разрешения которых имеют высокую плотность пикселей.

.selector {background: url(../path_to_image/image.png) no-repeat; width: 10px; height: 10px;}

@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) {
 .selector {background-image: url(../path_to_image/image_2x.png); background-size: 100%;}
}

Если требуется использовать фоновый паттерн (повторяющийся узор), то код перепишется следующим образом:

.selector {background: url(../path_to_image/image.png) repeat;}

@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) {
 .selector {background-image: url(../path_to_image/image_2x.png); background-size: 10px 10px;}
}

Можно рассмотреть более сложный случай: адаптация изображений, которые выравниваются по центру в блоке:

.form_c .forms {display: block;position: relative;width: 70px;}
.form_c .feedback {background:...

linebreak in admin django. Разделить на строчки поле TextField в админке или вывести html в ячейке таблицы при редактировании списка объектов

Рассмотрим ситуацию, когда нужно вывести список доменных имён в списке объектов.

Допустим, мы хотим вести учёт пользователей, которые имеют свои доменные имена.

class Person(models.Model):
    name = models.CharField('Имя', max_length=255)
    domains = models.TextField('Доменные имена')

Теперь, если мы хотим видеть эту информацию в списке просмотра объектов Person, то у нас будет следующее:

@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
    list_display = ('name ', 'domains')

И создадим несколько пользователей с несколькими доменными именами, которые записываются каждый с новой строки. Мы увидим, что в админке они отображаются строчкой. Чтобы они были каждый домен с новой строки, можно поступить двумя способами.

1-ый способ: Настройка поля в admin.py

# admin.py...

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

Список содержит применяемые мною библиотеки, плагины, скрипты и т. д. Это не весь список, но может кто-то найдёт что-то для себя полезное:

jquery-autotab-master - настройка перехода фокуса на следующее поле по нажатию клавиши tab

jquery.scrollTo - плавная перемотка страницы до указанного элемента.

Селекты с автокомплитом

chosen - http://harvesthq.github.io/chosen/

typeahead - https://github.com/twitter/typeahead.js

jquery ui - https://jqueryui.com/autocomplete/

Ну и любимая блоггерами строчка подобных постов: список будет пополняться :)


javascript как узнать время в определённом городе

Есть сервис, позволяющий узнать время в городе http://time.is/ru/widgets

Например, для Иркутска будет вставка такого скрипта:

<a href="http://time.is/Shelekhov" id="time_is_link" rel="nofollow">Шелехов:</a>
<span id="Shelekhov_z41b"></span>
<script src="http://widget.time.is/t.js"></script>
<script>time_is_widget.init({Shelekhov_z41b:{time_format:"hours:minutes"}});</script>

Ниже показан рабочий пример скрипта:


ChoiceField with empty value, select default value django. Вставить пустое значение в тег селект

Если мы имеем дело с обычно формой ​forms.Form (и в особом случае при использовании forms.ModelForm, см. ниже) и хотим иметь пустое значение при выборе в селекте, то нам нужно позаботиться о создании пустого значения вручную.

Для того, чтобы вставить пустое значение в тег селект, можно использовать два варианта: либо на уровне серверной части, либо на клиентской.

На уровне Django

1-ый способ - с использованием ChoiceField

class MyForm(forms.Form):
SERVICES = ((REG_IP, u'Регистрация ИП'),
            (REG_OOO, u'Регистрация ООО'))
SUBJECTS = ((SERVICE, u'Услуга'),
            (PARTNERSHIP, u'Сотрудничество'),

blank_choice = (('', '--- Выберите значение ---'),) 
service = forms.ChoiceField(choices=blank_choice + SERVICES)
subject = forms.ChoiceField(choices=blank_choice + SUBJECTS)

2-ой...


reverse url admin django. Получить путь объекта в представлениях и шаблонах для изменения в админке

Получить путь (url) объекта в представлениях и шаблонах для изменения в админке не сложно. Достаточно знать синтаксис первого аргумента метода reverse. Для того, чтобы что-то сделать с объектом из админки нужно сначала написать "admin:app_model_", где app - приложение, где находится необходимая модель, model - сама модель. И выбрать необходимое действие:

  • add - добавить новый объект.
  • change - изменить объект.
  • changelist - открыть список объектов.
  • history - открыть историю изменения объекта.
  • delete - удалить объект.

Ниже я привёл примеры, которые наглядно это дело отображают (обратите внимание, что некоторые урлы требуют id объекта).

В представлениях (во вьюхах)

instance = Model.objects.get(id=1)  # Найдём...

Проверка на наличие внешнего ключа foreign key. Ошибка DoesNotExist

Если проверить наличие внешнего ключа поля ForeignKey у экземпляра модели, которая не имеет этот внешний ключ, то выйдет ошибка: DoesNotExist, так как у модели нет этого атрибута. Это не тот случай, когда модель имеет атрибут, но его значение None, поэтому нам выводится ошибка, что атрибут не найден.

Допустим имеется класс Person, содержащий поле school, которое является внешним ключом класса School.

Пусть в базе данных существует person с id=1 без school:

person = Person.objects.get(id=1)
if person.school:
   # to do something

Получим DoesNotExist.

Используя встроенную функцию hasattr(obj, 'field'), получим False, если в БД отсутствует...


Растянуть текст по длине блока

Есть несколько способов растянуть текст по ширине блока или страницы адаптивным образом.

1. Использование css-трансформации scale

Данный код позволяет менять размер шрифта в зависимости от ширины браузера:

<!-- test.html -->
<div class="test">Произвольный текст</div>
// script.js
var $window = $(window), $body = $('body'), $wrap = $('.wrap'), defaultWidth = 1000;
     
$window.resize(function () {
    $wrap.css({transform: 'scale(' + $window.width() / defaultWidth  + ')'});
    var height = $wrap.outerHeight(true);
}).resize();
/* styles.css */
.test {font-size: 72px;}

Немного доработав код, вы можете растянуть текст не только на всю длину страницы, но и на длину конкретного блока.

2. Использование параметра font-size

Есть ещё другой способ заставить шрифт растягиваться...

Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.

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

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте

Выберите валюту для отображения денежных единиц