Опыт обновления CentOS 6 до CentOS 7 с сохранением всех настроек и параметров конфигурации Денис Силаков # yum install http://repo.virtuozzo.com/vzlinux/6/x86_64/updates/Packages/v/vzlinux-release-6-8.vl6.9.x86_64.rpm # yum distro-sync # yum install vzupgrade # vzupgrade check --skip-vz # vzupgrade install --device /dev/cdrom --skip-license-upgrade --skip-vz --add-repo vzlinux7=http://repo.virtuozzo.com/vzlinux/7/x86_64/os # mkdir /mnt/storage/upgrade_pkgs0 # ln -s /mnt/storage/upgrade_pkgs0 /var/lib/upgrade_pkgs0 # rpm -e --nodeps vzlinux-release # yum install https://mirror.yandex.ru/centos/7/os/x86_64/Packages/centos-release-7-4.1708.el7.centos.x86_64.rpm # rm -f /etc/yum/protected.d/systemd.conf # yum distro-sync # rpm -qa | grep vl6\|el6 ----------------------------------------------------------------------------------------- Как взламывают веб-приложения Антон Карев
----------------------------------------------------------------------------------------- Применение функций обработки строк C для управления буквенно-цифровыми дисплеями Татьяна Колесникова #include #include // подключение заголовочных файлов #include #include #include #include #include // заголовочный файл для работы с функциями обработки строк void e ( ) // подпрограмма формирования тактового сигнала на линии Е дисплея {PORTC |= 1<<0; // устанавливаем «1» на выводе PC0 микроконтроллера _delay_ms(200); // задержка PORTC &=~ (1<<0); // устанавливаем «0» на выводе PC0 микроконтроллера _delay_ms(200); } // задержка int main() // начало программы { int len, i; char s[]="New String"; // текст строки для вывода на дисплей DDRD=DDRC=0xff; // инициализация портов PD и PC PORTD=PORTC=0x00; // порты PD и PC работают на вывод данных e ( ); PORTC &=~ (1<<6); // RS=0 (прием команд) e ( ); PORTD=0b00001111; // включение дисплея e ( ); PORTD=0b00110100; // установка 8-разрядной шины e ( ); PORTD=0b00000001; // очистка дисплея и установка курсора в нулевую позицию len=strlen(s); // определяем длину строки // и записываем полученное значение в переменную len e ( ); PORTC |= 1<<6; // RS=1 (прием данных) for (i=0;i #include #include #include #include #include void e ( ) {PORTC |= 1<<0; // устанавливаем «1» на выводе PC0 микроконтроллера _delay_ms(200); // задержка PORTC &=~ (1<<0); // устанавливаем «0» на выводе PC0 микроконтроллера _delay_ms(200); } // задержка int main() {int len1, len2, i; char s1[]="Stroka"; // строка 1 char s2[]="Vuvod texta"; // строка 2 char s3[]="Obzor knigi"; // строка 3 DDRD=DDRC=0xff; // инициализация портов PD и PC PORTD=PORTC=0x00; // порты PD и PC работают на вывод данных e ( ); PORTC &=~ (1<<6); // RS=0 (прием команд) e ( ); PORTD=0b00001111; // включение дисплея e ( ); PORTD=0b00110100; // установка 8-разрядной шины e ( ); PORTD=0b00000001; //очистка дисплея и установка курсора в нулевую позицию e ( ); PORTD=0b00111000; // установка 2-строчного режима e ( ); PORTD=0b10001001; // выбор адреса ячейки памяти DDRAM (10 позиция 1 строки) e ( ); PORTC |= 1<<6; // RS=1 (прием данных) strcpy(s1,s2); // копируем строку s2 в строку s1 len1=strlen(s1); // определяем длину строки s1 for (i=0;i #include #include #include #include #include // заголовочный файл для работы со строковыми функциями #include // подключение заголовочного файла для работы с функцией free void e ( ) {PORTC |= 1<<0; // устанавливаем «1» на выводе PC0 микроконтроллера _delay_ms(200); // задержка PORTC &=~ (1<<0); // устанавливаем «0» на выводе PC0 микроконтроллера _delay_ms(200);} // задержка int main() { int len, i; DDRD=DDRC=0xff; // инициализация портов PD и PC PORTD=PORTC=0x00; // порты PD и PC работают на вывод данных e ( ); PORTC &=~ (1<<6); // RS=0 (прием команд) e ( ); PORTD=0b00001111; // включение дисплея e ( ); PORTD=0b00110100; // установка 8-разрядной шины e ( ); PORTD=0b00000001; //очистка дисплея и установка курсора в нулевую позицию e ( ); PORTD=0b00111000; // установка 2-строчного режима e ( ); PORTD=0b10001001; // выбор адреса ячейки памяти DDRAM (10 позиция 1 строки) e ( ); PORTC |= 1<<6; // RS=1 (прием данных) char str[]="0123456789"; // исходная строка char *str2; // переменная, в которую будет помещен указатель на дубликат строки str2=strdup(str); // дублирование строки str len=strlen(str2); // определяем длину строки str2 for (i=0;i #include #include #include #include #include void e ( ) {PORTC |= 1<<0; // устанавливаем «1» на выводе PC0 микроконтроллера _delay_ms(200); // задержка PORTC &=~ (1<<0); // устанавливаем «0» на выводе PC0 микроконтроллера _delay_ms(200);} // задержка int main() { int len, i; DDRD=DDRC=0xff; // инициализация портов PD и PC PORTD=PORTC=0x00; // порты PD и PC работают на вывод данных e ( ); PORTC &=~ (1<<6); // RS=0 (прием команд) e ( ); PORTD=0b00001111; // включение дисплея e ( ); PORTD=0b00110100; // установка 8-разрядной шины e ( ); PORTD=0b00000001; // очистка дисплея и установка курсора в нулевую позицию e ( ); PORTD=0b00111000; // установка 2-строчного режима e ( ); PORTD=0b10000000; // выбор адреса ячейки памяти DDRAM (1 позиция 1 строки) e ( ); PORTC |= 1<<6; // RS=1 (прием данных) char str[]="012/345678/9091"; // исходная строка char razdelitel[]="/"; // разделитель char probel[]=" "; // пробел char *str2; // переменная, в которую будет заноситься указатель на новый фрагмент строки len=strlen(str); // определяем длину строки str for (i=0;i>> 32)); result = 31 * result + (name != null ? name.hashCode() : 0); result = 31 * result + (type != null ? type.hashCode() : 0); result = 31 * result + (label != null ? label.hashCode() : 0); return result; } @Override public String toString() { return "FilterType{" + "id=" + id + ", name='" + name + '\'' + ", type='" + type + '\'' + ", label='" + label + '\'' + '}'; } } public class ProductColor { private long id = 0; @SerializedName("remote_id") private long remoteId; private String value; private String code; private String img; public ProductColor() { } public ProductColor(long id, String value) { this.id = id; this.value = value; } public long getId() { return id; } public void setId(long id) { this.id = id; } public long getRemoteId() { return remoteId; } public void setRemoteId(long remoteId) { this.remoteId = remoteId; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getImg() { return img; } public void setImg(String img) { this.img = img; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ProductColor that = (ProductColor) o; if (id != that.id) return false; if (value != null ? !value.equals(that.value) : that.value != null) return false; if (code != null ? !code.equals(that.code) : that.code != null) return false; return !(img != null ? !img.equals(that.img) : that.img != null); } public boolean equalsColors(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ProductColor that = (ProductColor) o; if (id != that.id) return false; if (value != null ? !value.equals(that.value) : that.value != null) return false; return true; } @Override public int hashCode() { int result = (int) (id ^ (id >>> 32)); result = 31 * result + (int) (remoteId ^ (remoteId >>> 32)); result = 31 * result + (value != null ? value.hashCode() : 0); result = 31 * result + (code != null ? code.hashCode() : 0); result = 31 * result + (img != null ? img.hashCode() : 0); return result; } @Override public String toString() { return "ProductColor{" + "id=" + id + ", remoteId=" + remoteId + ", value='" + value + '\'' + ", code='" + code + '\'' + ", img='" + img + '\'' + '}'; } } public class Filters { public Filters() { } public Filters(List filters) { this.filters = filters; } public List getFilters() { return filters; } public void setFilters(List filters) { this.filters = filters; } } public interface FilterDialogInterface { void onFilterSelected(String filterUrl); void onFilterCancelled(); } ----------------------------------------------------------------------------------------- Разработка методов демпфирования колебаний с помощью точечных стационарных демпферов. Часть 1. Колебания струны Троенко С.Ю.; Поваляев П.П. Листинг 1. Прямой расчет в функции GetU() for (int n = 0; n <= N; n++){ U[0, n] = 0; U[M, n] = 0; } for (int m = 1; m <= M; m++) { U[m, 0] = GetH0(m * h); GetG(m, 0); U[m, 1] = U[m, 0] + tau * GetH1(m * h) + S / 2.0 * (GetH0((m + 1) * h) – 2 * GetH0(m * h) + GetH0((m – 1) * h)) + tau * tau / 2.0 * G[m, 0]; } for (int n = 1; n <= N – 1; n++){ for (int m = 1; m <= M – 1; m++) { GetG(m, n); U[m, n + 1] = 2 * U[m, n] – U[m, n – 1] + S * (U[m + 1, n] – 2 * U[m, n] + U[m – 1, n]) + tau * tau * G[m, n]; } } Листинг 2. Обратный расчет в функции GetP() P[0, N] = -U[2, N] / (2.0 * a * h); P[M, N] = -U[M – 2, N] / (2.0 * a * h); P[1, N] = -1.0 / (2.0 * a * h) * (U[3, N] – U[1, N]) + 2 * h / (a * tau * tau) * (U[1, N] – U[1, N – 1]); for (int m = 2; m <= M – 2; m++) { P[m, N] = 1 / (a * h) * U[m, N] + 2 * h / (a * tau * tau) * (U[m, N] – U[m, N – 1]) – 1 / (2.0 * a * h) * (U[m – 2, N] + U[m + 2, N]); } P[M – 1, N] = 1 / (2.0 * a * h) * (U[M – 1, N] – U[M – 3, N]) + 2 * h / (a * tau * tau) * (U[M – 1, N] – U[M – 1, N – 1]); P[0, N – 1] = S * P[1, N]; P[M, N – 1] = S * P[M – 1, N]; for (int m = 1; m <= M – 1; m++) { P[m, N – 1] = 2 * P[m, N] + S * (P[m – 1, N] – 2 * P[m, N] + P[m + 1, N]) – 2 * h / (tau * tau) * (U[m, N] – U[m, N – 1]); } for (int n = N – 2; n >= 1; n--) { for (int m = 1; m <= M – 1; m++) P[m, n] = 2 * P[m, n + 1] – P[m, n + 2] + S * (P[m – 1, n + 1] – 2 * P[m, n + 1] + P[m + 1, n + 1]); P[0, n] = S * P[1, n + 1]; P[M, n] = S * P[M – 1, n + 1]; } P[0, 0] = 0; P[M, 0] = 0; for (int m = 1; m <= M – 1; m++){ P[m, 0] = P[m, 1]-P[m, 2]+S / 2.0 * (P[m – 1, 1] – 2 * P[m, 1] + P[m + 1, 1]); } Листинг 3. Вычисление градиента (для двух демпферов) LW1[0] = tau * tau / 2.0 * P[m1, 1]; LW2[0] = tau * tau / 2.0 * P[m2, 1]; for (int n = 1; n <= N – 1; n++){ LW1[n] = P[m1, n + 1] * tau * tau; LW2[n] = P[m2, n + 1] * tau * tau; } Листинг 4. Расчет оптимального управления for (int n = 0; n <= N; n++){ W1[n] = W1_k[n] – alpha * LW1[n]; W2[n] = W2_k[n] – alpha * LW2[n]; } -----------------------------------------------------------------------------------------