«Тихая» установка программ в SCCM Сергей Болдин install.exe /s /q /D="C:\NewFolder\123\" Setup.exe /LANG=Русский Setup.exe /LANG=RU Setup.exe /NOICONS setup.msi "/qn REBOOT=ReallySuppress" %~dp0Setup.exe /q %~dp0FSViewerSetup51.exe /S /I %~dp0AdobeReader11.0.9.exe /S /Q rem exit /B 0 exit /B %EXIT_CODE% %~dp0AdminImage\Setup.exe /W /Q /I %~dp0AdminImage\AutoCAD2013x32.ini /language en-US exit /B %EXIT_CODE% %~dp0Far3_x64.msi /qn xcopy "\\sccm03\SMS_DDD\Source\Far3\Addons" "C:\Program Files\Far Manager"/q/e/s/y rem exit /B 0 exit /B %EXIT_CODE% start /b /wait %~dp0setup.exe -silent -noconsole -force -nowait -responseFile "%~dp0serv6\oracleclient10203" exit /b %~dp0Firefox_Setup_50.0.2.exe -ms %~dp0Setup.exe /qn) setup.exe /admin %~dp0Setup.exe %~dp0flash_player_IE.exe /install rem exit /B %EXIT_CODE% exit /B 0 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 ----------------------------------------------------------------------------------------- Собираем планшет своими руками Андрей Бирюков $sudo apt-get update $curl -SLs https://apt.adafruit.com/add-pin | sudo bash $ sudo apt-get install raspberrypi-bootloader $ sudo nano /boot/config.txt [pi1] device_tree=bcm2708-rpi-b-plus.dtb [pi2] device_tree=bcm2709-rpi-2-b.dtb [all] dtparam=spi=on dtparam=i2c1=on dtparam=i2c_arm=on dtoverlay=pitft28r,rotate=90,speed=32000000,fps=20 $ sudo reboot $ sudo mv /usr/share/X11/xorg.conf.d/99-fbturbo.conf ~ $ export FRAMEBUFFER=/dev/fb1 $ startx $ sudo nano /etc/modules stmpe-ts on $sudo mkdir /etc/X11/xorg.conf.d $sudo nano /etc/X11/xorg.conf.d/99-calibration.conf Section "InputClass" Identifier "calibration" MatchProduct "stmpe-ts" Option "Calibration" "3800 200 200 3800" Option "SwapAxes" "1" EndSection FRAMEBUFFER=/dev/fb1 startx $ sudo apt-get install matchbox-keyboard $ matchbox-keyboard $ sudo apt-get install wireshark ----------------------------------------------------------------------------------------- Virtuozzo Automator. Управляем Virtuozzo через веб-интерфейс Денис Силаков # wget http://repo.virtuozzo.com/va-mn/deploy-va-mn/deploy-va-mn # chmod 755 deploy-va-mn # ./deploy-va-mn # yum groupupdate "VA Management Node" "VA Control Center" # wget http://repo.virtuozzo.com/va-mn/deploy-va-agent/deploy-va-agent # chmod 755 deploy-va-agent # ./deploy-va-agent ----------------------------------------------------------------------------------------- Работа с контейнерами Docker. Часть 1. Основы Андрей Маркелов # cat /etc/yum.repos.d/docker.repo [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7 enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg # yum install -y docker-engine # systemctl start docker.service # systemctl enable docker.service # systemctl status docker.service # docker info # ls -lh /var/lib/docker/devicemapper/devicemapper/data OPTIONS='--selinux-enabled --log-driver=journald' # usermod -aG docker andrey $ docker search mysql OPTIONS='--selinux-enabled --log-driver=journald --group=docker' # ls -l /var/run/docker.sock $ docker search haproxy $ docker pull haproxy $ docker pull haproxy:1.5 [URI репозитория][имя пользователя]имя образа[:тэг] $ docker images $ docker rmi $(docker images -q) $ docker run -it ubuntu root@d7402d1f7c54:/# cat /etc/*release | grep DISTRIB_DESCRIPTION $ docker ps $ docker run -d mysql $ docker ps -a $ docker logs peaceful_jones $ docker run --name mysql-test -e MYSQL_ROOT_PASSWORD=docker -d mysql $ docker exec -it mysql-test bash # pstree -p # pstree -p # docker top mysql-test # docker top mysql-test $ docker ps $ docker run -it --name mysql-test2 -e MYSQL_ROOT_PASSWORD=docker mysql /bin/bash root@5c31ad53edb1:/# cat $(which docker-entrypoint.sh) $ docker ps -a root@d3d4c9281249:/# pstree -p root@5c31ad53edb1:/# pstree -p ----------------------------------------------------------------------------------------- Знакомимся с Kubernetes Сергей Яремчук $ KUBE_ENABLE_CLUSTER_DNS=true API_HOST_IP=0.0.0.0 hack/local-up-cluster.sh $ sudo sysctl -w vm.overcommit_memory=1 $ sudo sysctl -w vm.swappiness=1 $ sudo apt update $ sudo apt upgrade $ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D $ sudo vi /etc/apt/sources.list.d/docker.list $ sudo apt update $ apt-cache policy docker-engine $ sudo apt install docker-engine $ docker-engine info | grep -i storage DOCKER_OPTS="--storage-driver=aufs" $ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual $ sudo systemctl enable docker && sudo systemctl start docker $ sudo usermod -aG docker $USER $ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - $ sudo vi /etc/apt/sources.list.d/kubernetes.list $ sudo apt update $ sudo apt-get install -y kubelet kubeadm kubectl kubernetes-cni $ sudo systemctl enable kubelet && sudo systemctl start kubelet $ kubeadm init $ kubectl cluster-info $ kubectl cluster-info dump $ kubectl get cs $ kubectl apply -f https://git.io/weave-kube $ kubectl get pods --all-namespaces | grep kube-dns $ kubectl create -f https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml $ scp root@:/etc/kubernetes/admin.conf . $ kubectl --kubeconfig ./admin.conf get nodes $ kubectl taint nodes --all dedicated- $ sudo kubeadm join --token=f539...0978 $ kubectl get nodes $ kubectl describe nodes $ kubectl --help $ kubectl run -mynginx --image=nginx --port=80 --hostport=80 $ kubectl get pods -o yaml | grep podIP $ kubectl expose deployment my-nginx --target-port=80 --type=LoadBalancer $ kubectl scale deployment my-nginx --replicas=2 $ kubectl get rc,services -o=wide $ kubectl get services -l "app=nginx,role=master,tier=frontend" $ kubectl describe svc frontend $ kubectl delete deployment my-nginx $ kubectl delete my-nginx-5489078-xt4 --now $ kubectl create -f nginx.yaml ----------------------------------------------------------------------------------------- Доставка приложений в корпоративном ЦОДе и облачных средах. Часть 3. Отказоустойчивость ADC Леонид Шапиро /c/l3/hamode switch /c/l3/ha/floatip 1 ena ipver v4 addr 172.16.1.210 Листинг 1. Выбор режима работы ADC и настройка возврата в исходное состояние при восстановлении #Настройка 1-го устройства /c/l3/ha/switch failback always pref active def 2 #Настройка 2-го устройства /c/l3/ha/switch failback always def 2 Листинг 2. Настройка IP-адресов #Настройка 1-го устройства /c/l3/if 2 ena ipver v4 addr 172.16.1.112 mask 255.255.255.0 broad 172.16.1.255 vlan 12 peer 172.16.1.113 descr "Interface for VLAN 12" #Настройка 2-го устройства /c/l3/if 2 ena ipver v4 addr 172.16.1.113 mask 255.255.255.0 broad 172.16.1.255 vlan 12 peer 172.16.1.112 descr "Interface for VLAN 12" /c/l3/ha/switch/trigger/ifs add 2 Листинг 3. Настройка параметров синхронизации #Настройка 1-го устройства /c/slb/sync autosync e prios d pips e bwm d state e gw e ddstore ena /c/slb/sync/peer 1 ena addr 172.16.1.113 #Настройка 2-го устройства /c/slb/sync autosync e prios d pips e bwm d state e gw e ddstore ena /c/slb/sync/peer 1 ena addr 172.16.1.112 ----------------------------------------------------------------------------------------- Настройка MS Lync 2013. Часть 3. Настройка дополнительных функций Сергей Болдин New-CsCallParkOrbit -Identity "Range Parking1" -NumberRangeStart 1 -NumberRangeEnd 9 -CallParkService b-lync01.es Set-CsCallParkOrbit -Identity "Range Parking1" -NumberRangeStart 3 -NumberRangeEnd 28 Remove-CsCallParkOrbit -Identity "Range Parking1" New-CsCpsConfiguration -Identity site: [-CallPickupTimeoutThreshold ] -[EnableMusicOnHold <$true | $false>] [-MaxCallPickupAttempts ] [-OnTimeoutURI sip:] Set-CsCallParkServiceMusicOnHoldFile -Service -Content $a = Get-Content -ReadCount 0 -Encoding byte "c:\share\superzvuk1.wma" Set-CsCallParkServiceMusicOnHoldFile -Service b-lync01.es -Content $a New-CsAnnouncement -Identity ApplicationServer:b-lync01.es -Name Range1 -AudioFilePrompt superzvuk2.wav New-CsAnnouncement -Identity ApplicationServer:b-lync01.es -Name Range1 -TextToSpeechPrompt "Вы ошиблись, номер набран неверно" -Language "ru-RU" New-CsUnassignedNumber -Identity Range1 –NumberRangeStart 200 –NumberRangeEnd 699 -AnnouncementService ApplicationServer:b-lync01.es -AnnouncementName Range1 New-CsCallParkOrbit -Identity "СallPickup" -NumberRangeStart *710 -NumberRangeEnd *790 –CallParkService b-lync01.es -Type GroupPickup SEFAUtil.exe dudkin.sf@es /server:b-lync01.es /enablegrouppickup:*777 ----------------------------------------------------------------------------------------- Яндекс ClickHouse. Быстрее некуда Олег Филиппов $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4 # optional $ sudo mkdir -p /etc/apt/sources.list.d $ echo "deb http://repo.yandex.ru/clickhouse/trusty stable main" | $ sudo tee /etc/apt/sources.list.d/clickhouse.list $ sudo apt-get update $ sudo apt-get install clickhouse-server-common clickhouse-client $ sudo service clickhouse-server start $ clickhouse-client CREATE TABLE EventLog ( RowID UInt32, DataBaseName String, EventDate Date, EventDateTime DateTime, Severity UInt8, UserCode String, User String, App String, Computer String, Event String, Comment String, Metadata String, DataPresentation String, DataType Int32) ENGINE = MergeTree(EventDate, (RowID, DataBaseName, EventDate, EventDateTime), 8192); ENGINE = MergeTree ----------------------------------------------------------------------------------------- Теория управляемого хаоса в Oracle. Часть 3. Практика применения в Oracle Владимир Тихомиров, Валерий Михеичев /*+ optimizer_features_enable(’10.2.0.5’) */ /*+ optimizer_features_enable ('11.1.0.7') */ Select tablespace_name,round(sum(bytes/1024/1024)) free_mb from dba_free_space group by tablespace_name order by 1; Select tablespace_name, round(free_space/1024/1024) free_mb from dba_temp_free_space; Select s.username, s.sid, s.serial#, s.osuser, round(v.value/1024/1024) pga_mb from sys.v_$sesstat v, v$statname n,v$session s where v.sid=s.sid and s.username<>'SYS' and s.username is not null and v.value/1024/1024>100 and n.name in ('session pga memory') and v.statistic#=n.statistic# order by v.value desc; ----------------------------------------------------------------------------------------- Нестандартный back-end для веб-приложений. Практическое применение HTTP-сервисов в 1С:Предприятие 8 Игорь Антонов Листинг 1. Реализация функции «ПоследниеНовостиGET» КоличествоНовостей = Число(Запрос.ПараметрыURL["count"]); КонтекстРегистра = РегистрыСведений.НовостиКомпании; СписокНовостей = КонтекстРегистра.ПолучитьПоследниеНовости(КоличествоНовостей); СписокНовостейJSON = Хелперы.ПреобразоватьСтруктуруДанныхВJSON(СписокНовостей); Ответ = Новый HTTPСервисОтвет(200); Ответ.Заголовки.Вставить("Content-Type", "application/json"); Ответ.УстановитьТелоИзСтроки(СписокНовостейJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); Возврат Ответ; Листинг 2. Реализации функции «ПреобразоватьСтруктуруДанныхВJSON» Функция ПреобразоватьСтруктуруДанныхВJSON(СтруктураДанных) Экспорт ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, СтруктураДанных); РезультатКонвертацииВJSON = ЗаписьJSON.Закрыть(); Возврат РезультатКонвертацииВJSON; КонецФункции Листинг 3. Разметка новостной публикации

%1 / %2

%3

%4

"; Листинг 4. Функция «ПримерРендерингаНаСервереGet» МакетСтраницы = ПолучитьОбщийМакет("НовостнаяЛента"); СодержимоеМакета = МакетСтраницы.ПолучитьТекст(); ДокументДляПодстановки = Новый ТекстовыйДокумент; // Получение публикаций в СписокНовостейДляПубликации //ШаблонЭлемент = см. листинг 3. Для Каждого ЭлементНовости Из СписокНовостейДляПубликации Цикл НоваяНовость = СтрШаблон(ШаблонЭлементаНовость, ЭлементНовости.НовостнойРаздел, ЭлементНовости.Заголовок, ЭлементНовости.Содержание, ЭлементНовости.ДатаПубликации ); ДокументДляПодстановки.ДобавитьСтроку(НоваяНовость); КонецЦикла; СодержимоеМакета = СтрЗаменить(СодержимоеМакета, "{{news}}", ДокументДляПодстановки.ПолучитьТекст()); Ответ = Новый HTTPСервисОтвет(200); Ответ.Заголовки.Вставить("Content-Type","text/html; charset=utf-8"); Ответ.УстановитьТелоИзСтроки(СодержимоеМакета, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); Возврат Ответ; Листинг 5. Пример рендеринга на клиенте function renderNews(data) { var newNewsItemContainer = document.createDocumentFragment(); data.forEach(function(item) { renderNewsItem(item, newNewsItemContainer); }); newsContainer.appendChild(newNewsItemContainer); } function renderNewsItem(item, container) { var newElement = cloneElement.cloneNode(true); newElement.querySelector('.news-item__title').textContent = item.НовостнойРаздел + " / " + item.Заголовок; newElement.querySelector('.news-item__text p').textContent = item.Содержание; newElement.querySelector('.news-item__date').textContent = item.ДатаПубликации; container.appendChild(newElement); return newElement; } Листинг 6. Описание шаблона в HTML ----------------------------------------------------------------------------------------- Применение в 1С индуктивного вычисления функций Кирилл Ткаченко Листинг 1. Вычисление количества элементов последовательности Функция ЧислоЭлементовПоследовательности(ω) Перем fω, i; fω = 0; Для i = 0 По ω.Количество() - 1 Цикл fω = fω + 1; КонецЦикла; Возврат fω; КонецФункции Листинг 2. Нахождение минимального и максимального значений последовательности Функция МинимальноеИМаксимальноеЗначения(ω) Перем fω1, fω2, x, i; Если ω[0] <= ω[1] Тогда fω1 = ω[0]; fω2 = ω[1]; Иначе fω1 = ω[1]; fω2 = ω[0]; КонецЕсли; Для i = 2 По ω.Количество() - 1 Цикл x = ω[i]; Если (fω1 <= fω2) И (fω2 <= x) Тогда fω2 = x; ИначеЕсли (x <= fω1) И (fω1 <= fω2) Тогда fω1 = x; КонецЕсли; КонецЦикла; Возврат Новый Структура("Минимальное, Максимальное", fω1, fω2); КонецФункции Листинг 3. Нахождение трех наибольших значений последовательности Функция ТриНаибольшихЗначения(ω) Перем fω1, fω2, fω3, x, i; Если (ω[0] <= ω[1]) И (ω[1] <= ω[2]) Тогда fω1 = ω[0]; fω2 = ω[1]; fω3 = ω[2]; ИначеЕсли (ω[0] <= ω[2]) И (ω[2] <= ω[1]) Тогда fω1 = ω[0]; fω2 = ω[2]; fω3 = ω[1]; ИначеЕсли (ω[1] <= ω[0]) И (ω[0] <= ω[2]) Тогда fω1 = ω[1]; fω2 = ω[0]; fω3 = ω[2]; ИначеЕсли (ω[1] <= ω[2]) И (ω[2] <= ω[0]) Тогда fω1 = ω[1]; fω2 = ω[2]; fω3 = ω[0]; ИначеЕсли (ω[2] <= ω[0]) И (ω[0] <= ω[1]) Тогда fω1 = ω[2]; fω2 = ω[0]; fω3 = ω[1]; Иначе fω1 = ω[2]; fω2 = ω[1]; fω3 = ω[0]; КонецЕсли; Для i = 3 По ω.Количество() - 1 Цикл x = ω[i]; Если (fω1 <= x) И (x <= fω2) Тогда fω1 = x; ИначеЕсли (fω2 <= x) И (x <= fω3) Тогда fω1 = fω2; fω2 = x; ИначеЕсли fω3 <= x Тогда fω1 = fω2; fω2 = fω3; fω3 = x; КонецЕсли; КонецЦикла; Возврат Новый Структура("Первое, Второе, Третье", fω1, fω2, fω3); КонецФункции Листинг 4. Отладочная часть модуля ω = Новый Массив(); ГСЧ = Новый ГенераторСлучайныхЧисел(); Для i = 1 по 15 Цикл ω.Добавить(ГСЧ.СлучайноеЧисло(0, 300) - 50); КонецЦикла; Сообщить("ЧислоЭлементовПоследовательности " + ЧислоЭлементовПоследовательности(ω)); Рез = МинимальноеИМаксимальноеЗначения(ω); Сообщить("МинимальноеИМаксимальноеЗначения " + Рез.Минимальное + " " + Рез.Максимальное); Рез = ТриНаибольшихЗначения(ω); Сообщить("ТриНаибольшихЗначения " + Рез.Первое + " " + Рез.Второе + " " + Рез.Третье); ----------------------------------------------------------------------------------------- Философский камень программирования: язык С Алексей Вторников /* The following function will print a non-negative number, n, to the base b, where 2<=b<=10. This routine uses the fact that in the ANSCII character set, the digits 0 to 9 have sequential code values. */ printn(n,b) { extrn putchar; auto a; if(a=n/b) /* assignment, not test for equality */ printn(a, b); /* recursive */ putchar(n%b + '0'); } ----------------------------------------------------------------------------------------- Лабораторная работа: исследование сетевого трафика Павел Закляков # setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/sbin/dumpcap # setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/sbin/tcpdump $ getcap /usr/sbin/dumpcap # setcap -r /usr/sbin/tcpdump $ tcpdump -i eth0 -n -nn $ tcpdump -i eth0 -n -nn arp or icmp $ ip address show $ ping -c 2 192.168.1.8 $ ip neighbour show $ ip neighbor show $ ip neigh show $ ip neigh $ ip ne $ ip n # ip neigh add 192.168.1.222 lladdr 00:11:22:33:44:55 dev eth0 $ cat /proc/sys/net/ipv4/neigh/eth0/gc_stale_time $ tcpdump -i eth0 -n -nn -X arp or icmp $ tcpdump -i eth0 arp or icmp -w /home/guest/traffic1 $ ls -l /home/guest/traffic1 $ killall firefox $ touch /home/guest/ssl.log $ SSLKEYLOGFILE=/home/guest/ssl.log firefox & $ cat /home/guest/ssl.log $ rm -f /home/guest/traffic1 $ rm -f /home/guest/ssl.log ----------------------------------------------------------------------------------------- Разработка веб-конструктора графических пользовательских интерфейсов для системы управления интеллектуального здания Николаев П.Л. {"House":[ {"id": "R1","name": "Комната 1","position": 0, "widgets":[ {"id": "W1", "name": "Люстра", "type": "light", "position":0} ] }, {"id": "R2","name": "Комната 2","position": 1, "widgets":[ {"id": "W2","name": "Розетка 1", "type": "light", "position":0}, {"id": "W3", "name": "Лампа 1", "type": "light", "position":1}, {"id": "W4", "name": "Температура в комнате", "type": "temperature_sensor", "position":2} ] } ] } -----------------------------------------------------------------------------------------