Работа с MS SharePoint 2016. Часть 2. Совместное редактирование документов Сергей Болдин ----------------------------------------------------------------------------------------- Наладка брандмауэра Windows в режиме повышенной безопасности Игорь Орещенков PS C:\> Get-NetConnectionProfile PS C:\> Set-NetConnectionProfile -InterfaceIndex 14 -NetworkCategory Private PS C:\> Set-NetFireWallProfile -Profile Public -LogAllowed True -LogBlocked True -LogIgnored True -LogMaxSizeKilobytes 4096 -LogFileName "%systemroot%\system32\LogFiles\Firewall\pfw-public.log" C:\> netsh wfp capture start C:\> netsh wfp capture stop C:\> auditpol /set /subcategory:"Filtering Platform Packet Drop" /success:enable /failure:enable C:\> auditpol /set /subcategory:"Отбрасывание пакета платформой фильтрации" /success:enable /failure:enable C:\> auditpol /get /subcategory:"Filtering Platform Packet Drop" C:\> auditpol /set /subcategory:"Filtering Platform Packet Drop" /success:disable /failure:disable ----------------------------------------------------------------------------------------- Рекурсивный поиск в глубину в 1С на примере решения головоломки «Отшельник» Кирилл Ткаченко Перем Колышек, Пусто, СимволовПоГоризонтали, Направления; Перем ИгровоеПоле, ЧислоПроверок; Процедура ИнициализацияКонстант() Колышек = "x"; Пусто = "-"; СимволовПоГоризонтали = 12; Направления = Новый Массив(); Направления.Добавить(-1); Направления.Добавить(-СимволовПоГоризонтали); Направления.Добавить(1); Направления.Добавить(СимволовПоГоризонтали); КонецПроцедуры Процедура ИнициализацияПеременных() ЧислоПроверок = 0; ИгровоеПоле = "..........." "..........." "....xxx...." "....xxx...." "..xxxxxxx.." "..xxx-xxx.." "..xxxxxxx.." "....xxx...." "....xxx...." "..........." "..........." ""; КонецПроцедуры Процедура ЗаменитьСимволНаПоле(Позиция, НовыйСимвол) ИгровоеПоле = Лев(ИгровоеПоле, Позиция - 1) + НовыйСимвол + Прав(ИгровоеПоле, СтрДлина(ИгровоеПоле) - Позиция); КонецПроцедуры Функция МожноХодить(Позиция, Направление) ЧислоПроверок = ЧислоПроверок + 1; Возврат (Сред(ИгровоеПоле, Позиция, 1) = Колышек) И (Сред(ИгровоеПоле, Позиция + Направление, 1) = Колышек) И (Сред(ИгровоеПоле, Позиция + 2 * Направление, 1) = Пусто); КонецФункции Процедура СделатьХод(Позиция, Направление) ЗаменитьСимволНаПоле(Позиция, Пусто); ЗаменитьСимволНаПоле(Позиция + Направление, Пусто); ЗаменитьСимволНаПоле(Позиция + 2 * Направление, Колышек); КонецПроцедуры Процедура ОтменитьХод(Позиция, Направление) ЗаменитьСимволНаПоле(Позиция, Колышек); ЗаменитьСимволНаПоле(Позиция + Направление, Колышек); ЗаменитьСимволНаПоле(Позиция + 2 * Направление, Пусто); КонецПроцедуры Функция Решить() Перем Позиция, Направление, ЕстьРешение, КолышковНаПоле; КолышковНаПоле = 0; ... Возврат Ложь; КонецФункции Для Позиция = 1 По СтрДлина(ИгровоеПоле) Цикл Если Сред(ИгровоеПоле, Позиция, 1) = Колышек Тогда ... КонецЕсли; КонецЦикла; КолышковНаПоле = КолышковНаПоле + 1; Для Каждого Направление из Направления Цикл ... КонецЦикла; Если МожноХодить(Позиция, Направление) Тогда СделатьХод(Позиция, Направление); ЕстьРешение = Решить(); ОтменитьХод(Позиция, Направление); Если ЕстьРешение Тогда Сообщить(ИгровоеПоле); Сообщить(""); Возврат Истина; КонецЕсли; КонецЕсли; Если КолышковНаПоле = 1 Тогда Сообщить(ИгровоеПоле); Сообщить(""); Возврат Истина; КонецЕсли; Процедура Главная() ИнициализацияКонстант(); ИнициализацияПеременных(); Если Не Решить() Тогда Сообщить("Нет решения."); Сообщить(""); КонецЕсли; Сообщить("Число проверок: " + ЧислоПроверок); Сообщить(""); КонецПроцедуры ----------------------------------------------------------------------------------------- Опыт использования Skype for Business для организации научных онлайн-конференций в УрО РАН Алексей Григорьев, Александр Матвийчук, Алексей Белоусов Пример 1. Скрипт для резервного копирования конфигурации Skype for Business # Back up the Central Management store configuration #(topology, policies, and configuration settings ) $BackupConfigFileName = $Path + '\Config' + $date + '.zip'; if((Export-CsConfiguration -FileName $BackupConfigFileName) -eq $null) { Write-Host "Export-CsConfiguration is successful to " $BackupConfigFileName } #Back up Location Information service data $BackupLisConfigFileName = $Path + '\E911Config' + $date + '.zip'; if((Export-CsLisConfiguration -FileName $BackupLisConfigFileName) -eq $null) { Write-Host "Export-CsLisConfiguration is successful to " $BackupLisConfigFileName } #Back up Response Group configuration $BackupRgsConfigFileName = $Path + '\RgsConfig' + $date + '.zip'; if((Export-CsRgsConfiguration -Source $RgsSource -FileName $BackupRgsConfigFileName) -eq $null) { Write-Host "Export-CsRgsConfiguration is successful to " $BackupRgsConfigFileName } #Back up User Data (Contact lists and ..) $BackupUserDataFileName1 = $Path + '\UserData_' + $UserPoolName + ' ' + $date + '.zip'; if((Export-CsUserData -PoolFqdn $UserPoolName -FileName $BackupUserDataFileName1) -eq $null) { Write-Host "Export-CsUserData is successful to " $BackupUserDataFileName } ----------------------------------------------------------------------------------------- Программный комплекс для автоматической связи с платформой BOINC Павел Поваляев sudo add-apt-repository ppa:ondrej/php -y sudo apt-get update sudo apt-get install -y git apache2 python-pip m4 pkg-config autoconf automake perl libtool build-essential libssl-dev mysql-server libmysqlclient-dev libmysqld-dev curl libcurl4-openssl-dev software-properties-common python-software-properties php5.6 php5.6-mysql libapache2-mod-php5.6 php5.6-mbstring php5.6-simplexml git clone https://github.com/BOINC/BOINC.git BOINC-server cd BOINC-server ./_autosetup 1>../server-autosetup.log 2>../server-autosetup-error.log ./configure --disable-manager --disable-client 1>../server-config.log 2>../server-config-error.log make 1>../server-make.log 2>../server-make-error.log ./tools/make_project --db_passwd='123123' --db_user='root' --delete_prev_inst --drop_db_first --url_base="http://unixubuntu.my-BOINC-test-project.com" testappw chmod –R 755 html/* Order deny, allow Deny from all Require all denied Order allow, deny Allow from all Require all granted root@BOINCserver:/home/BOINCadm/projects/meapp> cat meapp.httpd.conf >> /etc/apache2/httpd.conf root@BOINCserver:/home/BOINCadm/projects/meapp> /etc/init.d/apache2 restart sudo htpasswd -c html/ops/.htpasswd admin read -p "url to server: http://" -e BOINC_URL BOINC_URL="http://$BOINC_URL" read -p "project_name: " -e BOINC_NAME read -p "password for admin web-page: " -e ADMIN_PASSW echo "url: $BOINC_URL" echo "project_name: $BOINC_NAME" dpkg -s lsb-release >/dev/null 2>/dev/null || sudo apt-get -y install lsb-release LINUX_DIST=$(lsb_release -a 2>/dev/null | grep "Distributor ID:") python -c "exec(\"f=open(''${BOINC_NAME}'.httpd.conf', 'r')\\nf2 = open('BOINC.httpd.conf', 'w')\\nfor line in f: f2.write(line.replace('Order deny,allow', '').replace('Order allow,deny', '').replace('Allow from all', 'Require all granted').replace('Deny from all', 'Require all denied'))\")" sudo sh -c "cp BOINC.httpd.conf /etc/apache2/BOINC.httpd.conf" sudo sh -c "echo 'Include BOINC.httpd.conf' >> /etc/apache2/apache2.conf" ----------------------------------------------------------------------------------------- Лабораторная работа: исследуем inode. Часть 3. Завершение Павел Закляков $ dd if=/dev/zero of=disk100ext2 bs=1024 count=100000 $ dd if=/dev/zero of=disk100ext4 bs=1024 count=100000 $ mkfs -t ext2 -I 128 disk100ext2 $ mkfs -t ext4 -I 256 disk100ext4 $ mkfs -t ext2 -O ^ext_attr disk100ext2 $ dumpe2fs disk100ext2 $ dumpe2fs disk100ext4 $ sudo mount -o loop disk100ext2 /mnt/ext2 $ sudo mount -o loop disk100ext4 /mnt/ext4 $ mount $ df -i $ touch /mnt/ext2/file0 $ touch /mnt/ext4/file0 $ echo hello > /mnt/ext2/file1 $ echo hello > /mnt/ext4/file1 $ sudo umount /mnt/ext2 $ sudo umount /mnt/ext $ ls -lisa /mnt/ext2 $ ls -lisa /mnt/ext4 $ stat /mnt/ext2/file0 $ stat /mnt/ext2/file1 $ stat /mnt/ext4/file0 $ stat /mnt/ext4/file1 $ lde -i 12 disk100ext2 $ lde -i 13 disk100ext2 $ lde -i 12 disk100ext4 $ lde -i 13 disk100ext4 $ lde -i 14 disk100ext2 $ debugfs disk100ext2 debugfs: stat file0 debugfs: stat <12> debugfs: imap file0 debugfs: cat <13> debugfs: dump <13> file1-out debugfs: quit $ cat file1-out $ dumpe2fs disk100ext2 debugfs: imap file1 $ od -t x1 disk100ext2 -j 268800 -A d -N 128 $ od -t x1 disk100ext2 -j 268904 -A d -N 4 $ od -t d disk100ext2 -j 268904 -A d -N 4 $ od -t ax1 disk100ext2 -j 528384 -A d -N 1024 $ ls -Z /mnt/ext2/file1 $ getfacl /mnt/ext2/file1 $ od -t ax1 disk100ext2 -j 528384 -A d -N 1024 $ setfacl -m u:root:r-- /mnt/ext2/file1 $ getfacl /mnt/ext2/file1 $ od -t ax1 disk100ext2 -j 528384 -A d -N 1024 $ sudo /bin/mount -o loop,user_xattr,acl disk100ext2 /mnt/ext2 $ ls -l /mnt/ext2/file1 $ sudo setcap cap_sys_admin+ep /mnt/ext2/file1 $ getcap /mnt/ext2/file1 $ od -t x1 disk100ext2 -j 268840 -A d -N 4 $ od -t d disk100ext2 -j 268840 -A d -N 4 $ od -t a disk100ext2 -j 529408 -A d -N 1024 $ date -R $ rm /mnt/ext2/file1 $ rm -rf ~/dir1 $ history -c ----------------------------------------------------------------------------------------- Модифицированный алгоритм триангуляции Делоне Теплов А.А., Майков К.А. Xmin ← M[0] for i ← 1 to lenght(M) – 1 if Xmin › M[i] Xmin ← M[i] Xmax ← M[0] for i ← 1 to lenght(M) – 1 if Xmax < M[i] Xmax ← M[i] Ymin ← M[0] for i ← 1 to lenght(M) – 1 if Ymin › M[i] Ymin ← M[i] Ymax ← M[0] for i ← 1 to lenght(M) – 1 if Ymax < M[i] Ymax ← M[i] for points to points # Если точка лежит на оси координат между I и IV четвертями if point.x ≥ Xc and point.y = Yc point.angle ← 0 # Если точка лежит строго в I четверти else if point.x > Xc and point.y > Yc foundation ← |point.x – Xc| perpendicular ← |point.y – Yc| point.angle ← arctg(perpendicular/foundation) # Если точка лежит на оси координат между I и II четвертями else if point.x = Xc and point.y > Yc point.angle ← p/2 # Если точка лежит строго в II четверти else if point.x < Xc and point.y > Yc foundation ← |point.y – Yc| perpendicular ← |point.x – Xc| point.angle ← p/2 + arctg(perpendicular/foundation) # Если точка лежит на оси координат между II и III четвертями if point.x < Xc and point.y = Yc point.angle ← p # Если точка лежит строго в III четверти if point.x < Xc and point.y > Yc foundation ← |point.x – Xc| perpendicular ← |point.y – Yc| point.angle ← p + arctg(perpendicular/foundation) # Если точка лежит на оси координат между III и IV четвертями if point.x = Xc and point.y < Yc point.angle ← 3p/2 # Если точка лежит строго в IV четверти if point.x > Xc and point.y < Yc foundation ← |point.y – Yc| perpendicular ← |point.x – Xc| point.angle ← 3p/2 + arctg(perpendicular/foundation) for i ← 0 to length(Points) – 1 draw(Xc,Yc,Points[i].x, Points[i].y) Graham(Q) Пусть p0 – точка из множества Q с минимальной координатой. Пусть ‹p1, p2,...,pN› – точки множества Q, отсортированные в порядке возрастания полярного угла. Push(p0,S) Push(p1,S) for i=2 to N do while угол, образованный точками NextToTop(S), Top(S) и pi, образуют не левый поворот # при движении по ломаной, образованной этими # точками, движение осуществляется прямо или вправо do Pop(S) Push(pi,S) return S -----------------------------------------------------------------------------------------