Корпоративная система управления идентификационной информацией на базе FreeIPA Леонид Кантер acl internal { 127.0.0.1; ::1; 192.168.0.0/16; 172.30.0.0/15; 172.27.224.0/24; }; # firewall-cmd --add-service=dns # firewall-cmd --add-service=kerberos # firewall-cmd --add-service=kpasswd # firewall-cmd --add-service=http # firewall-cmd --add-service=https # firewall-cmd --add-service=ntp # firewall-cmd --add-service=ldap # firewall-cmd --add-service=ldaps # firewall-cmd --runtime-to-permanent # firewall-cmd --list-services # yum install freeipa-server # ipa-server-install --domain=corp.example.com --realm=CORP.EXAMPLE.COM --setup-dns --no-forwarders --mkhomedir --idstart=10000 --dirsrv-cert-file auth.crt --http-cert-file auth.crt --dirsrv-cert-file intermediate.crt --http-cert-file intermediate.crt --ca-cert-file ca.crt # ipa hbacrule-show allow_all # yum install ipa-client # ipa-client-install --domain=corp.example.com --hostname=idp.corp.example.com --no-nisdomain --mkhomedir [puiterwijk-ipsilon] name=Copr repo for ipsilon owned by puiterwijk baseurl=https://copr-be.cloud.fedoraproject.org/results/puiterwijk/ipsilon/epel-7-$basearch/ skip_if_unavailable=True gpgcheck=1 gpgkey=https://copr-be.cloud.fedoraproject.org/results/puiterwijk/ipsilon/pubkey.gpg enabled=1 enabled_metadata=1 # yum install ipsilon ipsilon-authgssapi ipsilon-saml2-base ipsilon-authpam ipsilon-base ipsilon-tools-ipa ipsilon-saml2 ipsilon-authform ipsilon-filesystem ipsilon-infosssd # ipa hbacrule-show allow_ipsilon urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified # kinit username@CORP.EXAMPLE.COM # yum install ipsilon-client # ipsilon-client-install --saml-idp-metadata \https://idp.corp.example.com/idp/saml2/metadata --auth-location /site --hostname site.corp.example.com ----------------------------------------------------------------------------------------- Apache Mesos. Знакомимся с конкурентом Kubernetes и Docker Swarm Денис Силаков # rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesospehere-el-repo-7-1.noarch.rpm # yum install mesos mesosphere-zookeeper # echo 1 > /var/lib/zookeeper/myid # echo 10.0.3.4 > /etc/mesos-master/ip # echo 10.0.3.4 > /etc/mesos-master/hostname # echo 'zk://10.0.3.4:2181,10.0.3.3:2181,10.0.3.2:2181/mesos' > /etc/mesos/zk server.1 = 10.0.3.4:2888:3888 server.2 = 10.0.3.3:2888:3888 server.3 = 10.0.3.2:2888:3888 # echo "2" > /etc/mesos-master/quorum # systemctl disable mesos-slave # systemctl start mesos-master # systemctl start zookeeper # rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesospehere-el-repo-7-1.noarch.rpm # yum install mesos # echo 10.0.3.5 >> /etc/mesos-slave/ip # cp /etc/mesos-slave/ip /etc/mesos-slave/hostname # systemctl disable mesos-master # echo "zk://10.0.3.4:2181,10.0.3.3:2181,10.0.3.2:2181/mesos" > /etc/mesos/zk # yum install docker # echo "docker,mesos" > /etc/mesos-slave/containerizers # echo '5mins' > /etc/mesos-slave/executor_registration_timeout # systemctl start mesos-slave ----------------------------------------------------------------------------------------- Реализация классического метода «Шифр четырех квадратов» в 1С Кирилл Ткаченко Перем Размер, Алфавит, Матрица; Процедура Инициализация() Размер = 5; Алфавит = "ABCDEFGHIJKLMNOPRSTUVWXYZ"; КонецПроцедуры Функция ОграничитьсяАлфавитом(текст) Перем ТекстПрописные, Результат, Символ, i; Результат = ""; ТекстПрописные = ВРег(текст); Для i = 1 По СтрДлина(ТекстПрописные) Цикл Символ = Сред(ТекстПрописные, i, 1); Если Найти(Алфавит, Символ) <> 0 Тогда Результат = Результат + Символ; КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции Функция Дополнить(текст) Перем Врем, Результат, Символ, i; Результат = ""; Врем = текст + Алфавит; Для i = 1 По СтрДлина(Врем) Цикл Символ = Сред(Врем, i, 1); Если Найти(Результат, Символ) = 0 Тогда Результат = Результат + Символ; КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции Процедура СоздатьМатрицу(пароль1, пароль2) Перем ПарольДляМатрицы1, ПарольДляМатрицы2; Перем i, j; Матрица = Новый Массив(Размер + Размер, Размер + Размер); ПарольДляМатрицы1 = Дополнить(ОграничитьсяАлфавитом(пароль1)); ПарольДляМатрицы2 = Дополнить(ОграничитьсяАлфавитом(пароль2)); Для i = 0 По Размер - 1 Цикл Для j = 0 По Размер - 1 Цикл Матрица[i][j] = Сред(Алфавит, i * Размер + j + 1, 1); Матрица[i + Размер][j + Размер] = Сред(Алфавит, i * Размер + j + 1, 1); Матрица[i][j + Размер] = Сред(ПарольДляМатрицы1, i * Размер + j + 1, 1); Матрица[i + Размер][j] = Сред(ПарольДляМатрицы2, i * Размер + j + 1, 1); КонецЦикла; КонецЦикла; КонецПроцедуры Функция Зашифровать(текст) Перем Результат, ТекстДляМатрицы; Перем x1, y1, x2, y2; Перем i, j, k; Результат = ""; ТекстДляМатрицы = ОграничитьсяАлфавитом(текст); Если СтрДлина(ТекстДляМатрицы) % 2 <> 0 Тогда ТекстДляМатрицы = ТекстДляМатрицы + "X"; КонецЕсли; Для k = 1 По Цел(СтрДлина(ТекстДляМатрицы) / 2) Цикл Символ1 = Сред(ТекстДляМатрицы, 2 * k - 1, 1); Символ2 = Сред(ТекстДляМатрицы, 2 * k, 1); y1 = 0; x1 = 0; y2 = 0; x2 = 0; Для i = 0 По Размер - 1 Цикл Для j = 0 По Размер - 1 Цикл Если Матрица[i][j] = Символ1 Тогда y1 = i; x1 = j; КонецЕсли; Если Матрица[i + Размер][j + Размер] = Символ2 Тогда y2 = i + Размер; x2 = j + Размер; КонецЕсли; КонецЦикла; КонецЦикла; Результат = Результат + Матрица[y1][x2] + Матрица[y2][x1]; КонецЦикла; Возврат Результат; КонецФункции Функция Расшифровать(текст) Перем Результат, ТекстДляМатрицы; Перем x1, y1, x2, y2; Перем i, j, k; Результат = ""; ТекстДляМатрицы = ОграничитьсяАлфавитом(текст); Если СтрДлина(ТекстДляМатрицы) % 2 <> 0 Тогда ТекстДляМатрицы = ТекстДляМатрицы + "X"; КонецЕсли; Для k = 1 По Цел(СтрДлина(ТекстДляМатрицы) / 2) Цикл Символ1 = Сред(ТекстДляМатрицы, 2 * k - 1, 1); Символ2 = Сред(ТекстДляМатрицы, 2 * k, 1); y1 = 0; x1 = 0; y2 = 0; x2 = 0; Для i = 0 По Размер - 1 Цикл Для j = 0 По Размер - 1 Цикл Если Матрица[i][j + Размер] = Символ1 Тогда y1 = i; x1 = j + Размер; КонецЕсли; Если Матрица[i + Размер][j] = Символ2 Тогда y2 = i + Размер; x2 = j; КонецЕсли; КонецЦикла; КонецЦикла; Результат = Результат + Матрица[y1][x2] + Матрица[y2][x1]; КонецЦикла; Возврат Результат; КонецФункции Процедура ПечатьДвумерногоМассива(массив) Перем Результат; Перем i, j; Результат = ""; Для i = 0 По массив.Количество() - 1 Цикл Для j = 0 По массив[0].Количество() - 1 Цикл Результат = Результат + " " + массив[i][j]; КонецЦикла; Результат = Результат + "" ""; КонецЦикла; Сообщить(Результат); КонецПроцедуры Процедура Главная() Перем пароль1, пароль2; Перем СтрокаИсходная, СтрокаЗашифрованная, СтрокаРасшифрованная; Инициализация(); пароль1 = "Example"; пароль2 = "SAMAG"; СоздатьМатрицу(пароль1, пароль2); СтрокаИсходная = "http://samag.ru/"; СтрокаЗашифрованная = Зашифровать(СтрокаИсходная); СтрокаРасшифрованная = Расшифровать(СтрокаЗашифрованная); Сообщить(Алфавит); Сообщить(пароль1); Сообщить(пароль2); ПечатьДвумерногоМассива(Матрица); Сообщить(СтрокаИсходная); Сообщить(СтрокаЗашифрованная); Сообщить(СтрокаРасшифрованная); КонецПроцедуры Главная(); ----------------------------------------------------------------------------------------- Олимпиада по программированию: разбираем задачу, выбираем подход и язык для решения Оксана Селендеева, Андрей Лозицкий #include using namespace std; bool neravenstvo(long long x, long long y, long long p, long long q, long long r) { return (p*r >= x) && (q*r - p*r >= y - x); } int main() { long long x, y, p, q, t; cin >> t; for(int i = 0; i < t; ++i) { cin >> x >> y >> p >> q; if(!neravenstvo(x, y, p, q, 1e9)) { cout << -1 << endl; continue; } for(long long r = 1; r <= 1e9; ++r) { if(neravenstvo(x, y, p, q, r)) { cout << q*r – y << endl; break; } } } } #include using namespace std; bool neravenstvo(long long x, long long y, long long p, long long q, long long r) { return p * r >= x && q * r - p * r >= y - x; } int main() { int t; cin >> t; for(int i = 0; i < t; ++i) { long long x, y, p, q; cin >> x >> y >> p >> q; long long l = -1; long long r = 1e9; if (!neravenstvo(x, y, p, q, r)) { cout << -1 << endl; continue; } while (r - l > 1) { ll m = (l + r) / 2; if (neravenstvo(x, y, p, q, m)) { r = m; } else { l = m; } } cin << r * q - y << endl; } return 0; } #include using namespace std; int main() { int t; cin >> t; for(int i = 0; i < t; ++i){ int x, y, p, q; cin >> x >> y >> p >> q; if (p == 0) { cout << (x == 0 ? 0 : -1) << endl; continue; } if (p == q) { cout << (x == y ? 0 : -1) << endl; continue; } int r1 = (x + p - 1) / p; int r2 = ((y - x) + (q - p) - 1) / (q - p); cout << (q * max(t1, t2) - y) << endl; } } ----------------------------------------------------------------------------------------- Что должен знать и уметь системный администратор. Часть 3. Другие способы администрирования Сергей Болдин Enable-CsUser –Identity "Андреев Андрей Андреевич" –RegistrarPool srv-s4b.dd.org –SipAddress sip:andreev.aa@dd.org Set-CsUser -Identity andreev.aa@dd.org –LineURI tel:1112233 Add-ADGroupMember "IT Department" -Members andreev.aa Get-ADGroupMember "IT Department" get-adcomputer "BUH-MASHA" | Disable-ADAccount Get-ADUser sadmin -properties name, title, employeeid, physicaldeliveryofficename, telephonenumber, proxyaddresses, mail | select name, title, employeeid, physicaldeliveryofficename, telephonenumber, proxyaddresses, mail Remove-CMDevice –DeviceName MININT-DGF34K Get-CMDevice | where {$_.name –like ‘MININT*’} | Remove-CMDevice -Force AdobeReader11.0.9.exe /S /Q Far3_x32.msi /qn FirefoxSetup.exe –ms xcopy "\\pc111\install\Far3\Addons" "C:\Program Files\Far Manager" /q/e/s/y reg add "HKU\.DEFAULT\Keyboard Layout\Preload" /v 1 /t REG_SZ /d 00000409 /f reg add "HKU\.DEFAULT\Keyboard Layout\Preload" /v 2 /t REG_SZ /d 00000419 /f SELECT DISTINCT SystemName, MachineID, PortName00, Name00, Status00, Nom_Kab, Inv_Nom, Password, Department, Description FROM dbo.PRINTER_DEVICE_DATA WHERE PortName00 (like '192.168.18.%') sp_addlinkedserver 'ConnectAD', 'Active Directory Service Interfaces', 'ADSDSOObject', 'adsdatasource', SELECT * FROM openquery (ConnectAD, 'SELECT Name, department, mail, physicalDeliveryOfficeName, telephoneNumber FROM ''LDAP://DC=ASD,DC=OWN'' WHERE objectClass = ''User'' AND objectCategory = ''Person'' ORDER BY Name'), ----------------------------------------------------------------------------------------- Генератор псевдослучайных чисел на основе линейного конгруэнтного метода в 1С Кирилл Ткаченко Перем семя; Функция ЛКГ() семя = (214013 * семя + 2531011) % 2147483648; Возврат Цел(семя / 65536); КонецФункции Процедура Игра(номерИгры) Перем буквыКарт; Перем буквыМасти; Перем карты; Перем картыРез; Перем карта, масть; Перем i; Перем инд; Перем Рез; буквыКарт = "A23456789TJQK"; буквыМасти = "♣♦♥♠"; карты = Новый Массив(52); картыРез = Новый Массив(52); Для i = 0 По 51 Цикл карта = Сред(буквыКарт, Цел(i / 4) + 1, 1); масть = Сред(буквыМасти, (i % 4) + 1, 1); карты[i] = карта + масть; КонецЦикла; семя = номерИгры; Для i = 0 По 51 Цикл инд = ЛКГ() % (52 - i); картыРез[i] = карты[инд]; карты[инд] = карты[51 - i]; КонецЦикла; Рез = ""; Для i = 0 По 51 Цикл Рез = Рез + " " + картыРез[i]; Если (i + 1) % 8 = 0 Тогда Рез = Рез + "" ""; КонецЕсли; КонецЦикла; Сообщить(Рез); КонецПроцедуры Игра(1); Игра(617); ----------------------------------------------------------------------------------------- Проверка работоспособности алгоритмов определения изменения агрегатного состояния металла Шкундин С.З., Колистратов М.В., Белобокова Ю.А. h = ones(7,7) / 49; %размер маски Im = imfilter(Im,h); … sx0=[];spr0=[];K0=[]; … %диапазон яркости изображения [0 1] % step_expoz – уровень смещения яркости for step_expoz=-0.4:0.1:0.4 … Z=Im(:,:,1)+step_expoz; %определение площади поверхности sx(x)=S_Im(Z,1); %метод триангуляции spr(x)=S_perimetr(Z,1); %метод рассечения sp(x)=S_Im_pr(Z,1); %метод площадок %накопление данных sx0=[sx0 ;sx]; spr0=[spr0 ;spr]; K0=[K0 ;K]; end -----------------------------------------------------------------------------------------