Опыт обновления 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];
}
-----------------------------------------------------------------------------------------