Хотите выучить английский?

Хотите выучить английский? Так я подскажу как. Чтобы освоить какой-либо навык — им нужно очень часто пользоваться. Общаться с «носителями языка». И если в «нашем мире» с этим могут быть некоторые трудности, так я приглашаю вас в другое измерение. Правда, чтобы туда попасть, понадобится довольно мощный компьютер.

Требования могут показаться «драконовскими», но что поделать, иные измерения требуют иного оборудования.

64-bit Windows 7 SP1, Intel i3-6100 / AMD FX4350, 8 GB ОЗУ, NVIDIA GTX 960 / AMD Radeon R9 290 4 GB видеопамяти, от 10 мб/с подключение к Интернету.

Говорю я об измерении https://www.sansar.com/ Как вы понимаете основной язык — английский. И конечно же приглашаю в виртуальный офис компании hapticpower, реализующей новое поколение систем виртуальной реальности (https://www.hapticpower.com/). Ссылочка: https://atlas.sansar.com/experiences/shkolns-7787

Система также совместима с комплектами Oculus. Ну и скриншотик — это я там стою, получаю ценное задание 

Посвящение в студенты в формате «Что? Где? Когда?»

Однажды мне приснился сон, в котором ко мне явился сам первый магистр игры Александр Друзь. Я его видел также явно, как компьютер, за которым пишу эту статью. Стоим мы с ним на телепередаче и он мне говорит, чтобы я шел развивать направление «Что? Где? Когда?» в колледже, в котором работаю. Думаю, что сегодняшняя реализация игры в Колледже  агротехнологий и природообустройства, посвященная дню первокурсника, несомненно понравилась бы первому магистру.

Как специалист смею заметить, что технически — это лучший вариант проведения «Что? Где? Когда?», который мне приходилось видеть в городе. И подготовила её президент студенческого самоуправления КАТиП Силаева Анастасия Витальевна совместно с участником совета студенческого самоуправления Ермоловичем Александром Николаевичем.

Труд, который проделали ребята, просто титанический, Оформление, увлекательные вопросы, таймеры времени и много другое. Спасибо большое за это мероприятие. Именно так и должно проходить «Что? Где? Когда?». Колледжу очень повезло со столь ответственным и технически подкованным президентом!

Читать дальше …

Мир Профтеха 2019

На ежегодном фестивале «Мир профтеха» студенческий клуб «Эврика» вел «стрим» на youtube, организовал фотопечать с использованием разработанного приложения на Unity, способное распознавать лица и накладывать «маски» профессий, а также раздавал буклеты с QR-кодами нашего android-приложения дополненной реальности.

Большое спасибо Фомину Андрею и Лоншакову Владимиру. Готовлю благодарственные письма с уникальными номерами, которые мы занесём в нашу базу учета грамот и благодарностей (gramota.makson.ru)

Фотографии с мероприятия по традиции находятся в нашем виртуальном музее: http://museygapk.tk/mir-profteha-2019/

Видеонарезки здесь: http://museygapk.tk/videonarezki-mir-profteha-2019/

Измеряем реальную ёмкость поддельной китайской флешки.

Как-то физически сломалась у меня флешка на 64 гигабайта, заказанная на Aliexpress. Ну что ж, случается. Закажем другую. Тем более, что и по привлекательной цене нашёл со скидкой (288 рублей за 64 Gb), и компактная такая, и даже usb 3.0. Ладно, заказываю, через три недели приходит.

Всё работает, определяется, начинаю скидывать информацию, доходит до определённого момента — стоп. Дальше не копирует. Странно. Отформатировал — нет эффекта. Попробовал программу для низкоуровневого «форматирования» — HDD Low Level Format Tool. Не помогло.

Ладно, скачиваю программу H2testw 1.4 (https://www.usbdev.ru/files/h2testw/) для того, чтобы узнать реальный размер флешки (очень рекомендую эту программу), и что же я вижу? Всего 16 гигабайт, вместо 64! Ну и по скорости передачи USB 3.0, естественно, никаким и не пахнет.

Открыл спор на Aliexpress, приложил скриншоты. В местном магазине coxo.ru flash-накопитель A-DATA UD230 стоит 219 рублей. При этом не надо ждать три недели и тратить своё время на выяснение ёмкости. Привоз вторник и пятница. Есть над чем задуматься.

Но что делать с китайской флешечкой? Преобразовать её в 16-гиговую и ждать положительного решения по спору. Для преобразования нам понадобится бесплатная программа MiniTool Partition Wizard (https://www.partitionwizard.com/free-partition-manager.html).

Запускаем её и выбираем Disk & Partition manager. 

В открывшемся окне нажимаем правой кнопкой мышки на наименовании флешки и выбираем Delete, тем самым удалив раздел.

Далее снова нажимаем правой кнопкой по флэхе и выбираем Create New Partition. Указываем размер, который выяснили при тестах программой H2testw. На всякий случай я указал чуть меньше, чем есть.

Единственное что, наверное лучше выбрать fat32 вместо ntfs в качестве файловой системы. NTFS — журналируемая и больше изнашивает флэшку, хотя в ней нет ограничения на 4 гигабайта файла, как в Fat32. Можно выбрать нежурналируемый extfat, в котором нет ограничения на 4 гб, но не все устройства его понимают.

Далее нажимаем кнопку Apply, ждём. Всё, готово. У нас теперь есть флэшка чуть меньше, чем на 16 гигабайт. Проверяем её снова программой H2testw — на этот раз никакие ошибки не обнаружены, ура.

Я попытался вынуть микросхему (уверен там как раз таки есть пометка о 16 гигабайтах ёмкости, но она сидит настолько плотно, что даже пинцетом не удалось. В общем опасайтесь подделок и мошенников. В заключении ссылка на продавца, где ни в коем случае ничего нельзя покупать. Мошенники. https://ru.aliexpress.com/item/33007154231.html?spm=a2g0s.9042311.0.0.3bef33edzUzbi9 

Unity Vuforia и кнопочка «выход»

Случилось сегодня приложение для дополненной реальности тестировать на смартфоне, семейства Samsung, у которого сенсорные кнопки для закрытия приложения, отображения списка открытых приложений отсутствовали как класс. Может быть каким-то хитрым жестом руки это всё и работает, но я так сходу не разобрался.

А стало быть срочно следует добавить в приложение кнопочку «Выход». И сделать это очень просто — создаём C# «Exit» скрипт со следующим кодом:

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Exit : MonoBehaviour
 {
void OnGUI()
          {
if (GUI.Button(new Rect(10, 70, 50, 30), «Выход»)) {
Debug.Log(«Clicked the exit button»);
Application.Quit();
          }
     }

 }

Теперь перетащим его на ARCamera в Unity и перекомпилируем приложение. Готова кнопочка, даже работает. 🙂

 

Размещаем сайт на VPS с нуля. Часть 7. Получаем SSL: не очевидная проблема.

В настоящее время сайты массово переходят на протокол https. HTTPS (аббр. от англ. HyperText Transfer Protocol Secure) — расширение протокола HTTP для поддержки шифрования в целях повышения безопасности. Данные в протоколе HTTPS передаются поверх криптографических протоколов SSL или TLS. В отличие от HTTP с TCP-портом 80, для HTTPS по умолчанию используется TCP-порт 443.

Если сайт не использует HTTPS, то современный браузер выдаёт сообщение «подключение к сайту не защищено». Кроме то в кабинете вебмастера нам будут настойчиво использовать шифрование. Для использования HTTP нам понадобится SSL-сертификат. Сертификат можно купить (оплата ежегодная) или взять свободно предоставляемый от компании https://letsencrypt.org/.

Мы воспользуемся вторым вариантом. Нам понадобится certbot. В Debian 9 он уже должен быть в репозиториях, а значит соединяемся с нашим сервером по putty и вводим команду:

apt-get install certbot

После установки бота получим сертификат на домен virtuatouch.ru командой (соответственно домен virtuatouch.ru меняется на ваш)

certbot certonly —webroot -w /var/www/virtuatouch.ru -d virtuatouch.ru -d virtuatouch.ru

у нас запросят e-mail и… всё это может закончиться былинным отказом. А дело в правилах ЧПУ, которые мы прописывали в 6-й часте.

У меня бот заработал только после того, как открыл lighttpd.conf — nano /etc/lighttpd/lighttpd.conf и убрал правила, удалил этот блок:

$HTTP[“host”] =~ “virtuatouch.ru” {
url.rewrite-final = (
# Exclude directories
“^/(wp-admin|wp-includes|wp-content)/(.*)” => “$0”,
# Exclude root php files
“^/(.*.php)” => “$0”,
# Handle permalinks and feeds
“^/(.*)$” => “/index.php/$1”
)
}

Перезапустил lightttpd командой systemctl restart lighttpd после чего снова запустил

apt-get install certbot

Всё прошло хорошо и в папке /etc/letsencrypt/live/virtuatouch.ru появились файлы сертификатов. Однако к этому каталогу мы должны предоставить доступ для lightttpd. Пропишем следующие команды:

chown :www-data /etc/letsencrypt
chown :www-data /etc/letsencrypt/live
chmod g+x /etc/letsencrypt
chmod g+x /etc/letsencrypt/live

ighttpd требует, чтобы сертификат и закрытый ключ были в одном файле. Стало быть их нужно объединить командой:

cat /etc/letsencrypt/live/virtuatouch.ru/privkey.pem /etc/letsencrypt/live/virtuatouch.ru/cert.pem > /etc/letsencrypt/live/virtuatouch.ru/merged.pem

Файлы privkey.pem и cert.pem будут объединены и сохранены как merged.pem.

Возвращаемся к редактированию конфигурационного файла lighttpd.conf

nano /etc/lighttpd/lighttpd.conf

прописываем

$SERVER[«socket»] == «:443» {
ssl.engine = «enable»
ssl.ca-file = «/etc/letsencrypt/live/virtuatouch.ru/chain.pem»
ssl.pemfile = «/etc/letsencrypt/live/virtuatouch.ru/merged.pem»

$HTTP[«host»] == «virtuatouch.ru» {
ssl.ca-file = «/etc/letsencrypt/live/virtuatouch.ru/chain.pem»
ssl.pemfile = «/etc/letsencrypt/live/virtuatouch.ru/merged.pem»
}

}

Опционально можно задать принудительное использование HTTPS.

$HTTP[«scheme»] == «http» {
$HTTP[«host»] =~ «.*» {
url.redirect = («.*» => «https://%0$0»)
}
}

Можно также вернуть наши правила для ЧПУ ссылок для WordPress. !Да решение ну очень «не промышленное», но иного я пока что не нашёл. Как найду — обязательно напишу, или напишите Вы в комментариях!. 

Сохраняем файл и перезапускаем lightttpd.

systemctl restart lighttpd

Сертификат выдаётся на 90 дней! После чего, где-то за неделю, нужно обновление. Это осуществляется командой:

certbot renew

После чего вновь используем команду:

cat /etc/letsencrypt/live/virtuatouch.ru/privkey.pem /etc/letsencrypt/live/virtuatouch.ru/cert.pem > /etc/letsencrypt/live/virtuatouch.ru/merged.pem

По большому счету надо бы обновления сертификатов автоматизировать, используя crontab. Но из-за конфликта с правила для ЧПУ-ссылок WordPress пока оставляю так.

 

C#-скрипт для дополненной реальности. Автофокусировка камеры.

Если Вы работаете с плагином Vuforia для дополненной реальности в Unity, то этот скрипт может оказаться весьма полезен. Он отвечает за автофокусировку камеры. Выбираем ARCamera — AddComponent — New script, добавляем под именем, например, CameraFocusController и вводим этот код:

 

using UnityEngine;
using System.Collections;
using Vuforia;

public class CameraFocusController : MonoBehaviour
{

// code from Vuforia Developer Library
// https://library.vuforia.com/articles/Solution/Camera-Focus-Modes
void Start()
{
var vuforia = VuforiaARController.Instance;
vuforia.RegisterVuforiaStartedCallback(OnVuforiaStarted);
vuforia.RegisterOnPauseCallback(OnPaused);
}

private void OnVuforiaStarted()
{
CameraDevice.Instance.SetFocusMode(
CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
}

private void OnPaused(bool paused)
{
if (!paused) // resumed
{
// Set again autofocus mode when app is resumed
CameraDevice.Instance.SetFocusMode(
CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
}
}
}

Компилируем, пробуем под ОС Андроид. Всё должно получиться. 🙂

Размещаем сайт на VPS с нуля. Часть 6. Установка WordPress.

Ну что ж, теперь у нас есть web-сервер lighttpd, интерпретатор php, сервер-баз данных maridb, ftp, припаркованное доменное имя. Всё готов для установки WordPress!

Заходим на ru.wordpress.org и скачиваем архив с вышеуказанной cms. Распакуем скачанный архив и перейдём внутрь распакованной папки. Перейдём в папку WordPress. Собственно всё вот эти файлы сейчас уже можно «залить» по ftp, но мы сделаем немного не так. Выделим их и снова сожмём в архив tar. Для этого я воспользуюсь программой 7-zip.

Далее через FileZilla отправляем архив tar по ftp в папку virtuatouch.ru. Открываем putty, подключаемся к нашему серверу. Переходим в директорию virtuatouch.ru

cd /var/www/virtuatouch.ru

Далее распаковываем tar-архив:

tar -xvf wordpress.tar

Заходим по адресу virtuatouch.ru и видим стандартную установку WordPress. Сервер базы данных оставляем как localhost. Имя пользователя — phpmyadmin. Пароль пользователя — тот, который мы указывали в этой заметке: https://makson.ru/razmeshhaem-sajt-na-vps-s-nulya-chast-4-ustanavlivaem-mysql-mariadb-i-phphmyadmin/

А вот имя базы… Базу придётся создать, можно через phpmyadmin. Опять же мы это делали здесь: https://makson.ru/razmeshhaem-sajt-na-vps-s-nulya-chast-4-ustanavlivaem-mysql-mariadb-i-phphmyadmin/

 

После соединения с базой данных wordpress попросит указать логин и пароль администратора сайта. Вводим данные ии.. установка закончена? Ну почти..

Ссылки на новости/статьи по умолчанию вордпресс формирует как http://имясайта/?p=1, а если мы хотим, чтобы в ссылки было название статьи, типа https://makson.ru/razmeshhaem-sajt-na-vps-s-nulya-chast-5-parkovka-domennogo-imeni/ — это уже называется Человеко-Понятные УРЛ (ЧПУ). Отвечают за это правила, прописанные в файле .htaccess системы WordPress. Вот толкьо правила эти воспринимаются веб-сервером apache, а у нас lighttpd.

Но нас это не остановит. Заходим через putty в наш веб-сервер и прописываем:

nano /etc/lighttpd/lighttpd.conf

Находим

server.modules = (
«mod_access»,
«mod_alias»,
«mod_compress»,
«mod_redirect»,
«mod_rewrite»,
)

Добавляем внутри фигурных скобок строку «mod_rewrite», чтобы получилось так:

server.modules = (
«mod_access»,
«mod_alias»,
«mod_compress»,
«mod_redirect»,
«mod_rewrite»,
)

далее в конце файла прописываем такие правила:

#Permalink settings

$HTTP[«host»] =~ «virtuatouch.ru» {
url.rewrite-final = (
# Exclude directories
«^/(wp-admin|wp-includes|wp-content)/(.*)» => «$0»,
# Exclude root php files
«^/(.*.php)» => «$0»,
# Handle permalinks and feeds
«^/(.*)$» => «/index.php/$1»
)
}

Сохраняем файл и перезапускаем lighttpd.

systemctl restart lighttpd

 

Теперь в WordPress можем перейти в Настройки — Постоянные ссылки. В группе Общие настройки выбираем Произвольно. В строке ввода вводим /%postname%/ Всё должно заработать.

Ну и что на этом всё? Сайты открываются, php работает, MySQL есть, phpmyadmin тоже.. Ан нет. Во-первых у нас еще нет SSL-сертфиикатов для протокола HTTPS, а они нужны. И нет автоматического резервного копирования. А оно тоже очень требуется.

Так что ещё будут как минимум две статьи.

Размещаем сайт на VPS с нуля. Часть 5. Парковка доменного имени.

То, что наши php-файлы открываются по Ip-адресу сервера — это, конечно, хорошо. Но ещё лучше, если наши странички будут открывать по доменам.

При покупки доменного имени следует обращать внимание не только на непосредственно его стоимость регистрации, но и на стоимость продления. Многие компании (например 2domains, nethouse и др.) условно регистрирует имя в зоне ru за 100 р, а продлевают за 500.

Благо сейчас довольно безболезненно можно перенести домен от одного регистратора к другому (я так и сделал, перейдя от 2domains.ru к atname.ru).

По наиболее приемлемым ценам доменные имена продлевает уже упомянутый выше atname.ru и вполне адекватные цены у eternalhost.net

Домен можно вообще бесплатно зарегистрировать в зоне tk, через сайт freenom.com О том, как это сделать можно посмотреть, к примеру, у меня на Youtube: https://youtu.be/e7vhV6oHdWM

Но как «прикрепить» его к нашему VPS? Для начала создадим директорию отдельного сайта. В качестве примеру я буду использовать имя virtuatouch.ru

Соединяемся с нашим vps через putty и открываем для редактирования файл  lighttpd.conf

nano /etc/lighttpd/lighttpd.conf

в самом конце файла прописываем:

$HTTP[«host»] == «virtuatouch.ru» {
server.document-root = «/var/www/virtuatouch.ru»
}

Теперь создадим директорию:

mkdir /var/www/virtuatouch.ru

Перезапустим lighttpd

systemctl restart lighttpd

На всякий случай

chown www-data:web /var/www/ -R

Далее нам нужно сделать так, чтобы при наборе virtuatouch.ru пользователю предоставлялся ip-адрес нашего сервера. Я предлагаю использовать DNS Yandex.

DNS (англ. Domain Name System «система доменных имён») — компьютерная распределённая система для получения информации о доменах. Чаще всего используется для получения IP-адреса по имени хоста (компьютера или устройства).

Нам понадобится почта от yandex.ru. Авторизовываемся в почте и переходим по ссылке https://connect.yandex.ru

Во вкладке Вебмастер выбираем «Добавить домен» Далее я ввожу virtuatouch.ru

После чего вхожу в личный кабинет того регистратора, через которого была произведена регистрация. В моём случае это atname.ru. В личном кабинете выбираю перейти к управлению — virtuatouch.ru — управление ДНС-серверами/делегирование. В графе ДНС1 ввожу: ns1.reg.ru ДНС2: ns2.reg.ru

Теперь, когда мы нажмём на наименование домена в личном кабинете регистратора, в почявившемся окне станет доступен пункт Управление зоной ДНС. Нажмём по нему.

Yandex-connect Требует подтверждения прав на домен, возвращаемся в https://connect.yandex.ru нашего добавленного домена и выбираем способ подтверждения DNS. Добавьте в DNS-записи сайта virtuatouch.ru TXT-запись yandex-verification: тут код

Воспользуемся этим. Для этого в Управление зоной ДНС регистратора пропишем примерно так:

Теперь в connect.yandex.ru нажимаем «проверить». Однако для обновления ns-записей домена должно пройти определённое время. Следует набраться терпения.

После подтверждения в дальнейшем мы изменим dns от reg на dns yandex и настроим домен на ip-адрес нашего vpn.

После подтверждения делегируем домен на серверы Яндекса. Для этого в кабинете регистратора (в моём случае atname.ru) следует выбрать «мои домены» — virtuatouch.ru — управление ДНС-серверами/делегирование. В графе ДНС1 ввожу: dns1.yandex.net в графе ДНС2: dns2.yandex.net

В Яндекс.Коннект перейдём в раздел управление DNS нашего домена. Выберем «Добавить DNS-запись». Введём следующие значения:

Добавим также запись CNAME, чтобы наш домен открывался и с www.

Странно, но корректно виртуальные хосты у меня заработали только после перезагрузки, командой reboot.