среда, 23 мая 2018 г.

mbti

В свое время был я на одном недельном тренинге, и один день там был посвящен человеческим типам, ну типа кто есть интроверты и экстраверты. Сейчас нашел у себя этот тест, и решил перенести результат в блог, а бумагу выкинуть нафиг. Вдруг когда-нибудь пригодится чтобы вспомнить кто же по типу MBTI (Майерс-Бриггс Типовой Индентификатор). Кстати результат по мне был довольно интересный, и мне очень понравилось реальное различие типов на примере одного из заданий. Суть задания заключалась в том чтобы придумать внутри своей группы как круто развлечься, при этом бюджет абсолютно никак не ограничен. Я уж и не помню как там делили группы - вроде как на экстравертов и интровертов, но в итоге получилась реально такая картина, что одни продумывали детали - это и кто будет ведущий на шоу (Иван Ургант и Павел Воля), и сколько тонн элитного бухла будет, и что на утро будет боржоми для поправки состояния (ага, унесло в алкогольную тему). У вторых это было общими фразами но все гораздо эпичнее - эксклюзивный остров, карнавал, наряды - никакой конкретики, но все очень круто.

Ну а теперь к результатам теста - по результатам самооценки у меня тип ISTP - Интроверт предпочитающий ощущения, а по результатам теста INTJ - интроверт предпочитающий интуицию - вот такая противоречивая личность.

Что касается описания типов, то тут я думаю всегда срабатывает эффект Барнума (есть фильм "Величайший шоумен" про него) - грубо говоря так что если вам сказали что это описание про вас - то вы будете верить что это так и есть и находить каждому слову в описании нужные подтверждения в вашей жизни. Есть еще эффект пророчества, ну и конечно что эффект плацебо - все где-то близко. Такие дела.

суббота, 14 апреля 2018 г.

Создание Андроид приложения на HTML5, CSS3 и JavaScript

Захотелось мне портировать свой калькулятор пиццы на андроид, и решил я поискать, возможно ли сделать андроид-приложение на основе html и js. Оказывается это вполне возможно, и существует несколько способов, на ютубе есть много различных инструкций, я же воспользовался этой:

Сделал я все так же как и показывается в видео. Были некоторые трудности с установкой Android Studio но погуглив все решается, а переустановка решила некоторые другие проблемы 
Кроме того, в видео не сказано, но для того чтобы сменить иконку приложения, я заменил стандартные файлы иконок с рожей андроида в папках с проектом на свои, размер в размер. И еще есть возможность поменять тему - чтобы, например, не было сверху лишних полос с текстом, и ваше приложение было на весь экран. Тема настраивается в AndroidManifest.xml
Скачать готовый apk можно тут https://vk.com/doc10758598_463459588 (удалить расширение del  и оставить только apk)
Еще один момент: ID настраиваемое в MainActivity.java должно настраиваться не на RelativeLayout, а на компоненте WebView (то что ниже на черном фоне это текст из видео, но у него в примере webView, а у меня pole) 


WebView web = (WebView)findViewById(R.id.pole);
web.getSettings().setJavaScriptEnabled(true);
web.setWebChromeClient(new WebChromeClient());
web.loadUrl("file:///android_asset/www/index.html");

понедельник, 9 апреля 2018 г.

Работа с серверами WinCC через инженерную станцию

В Simatic Manager есть возможность создания системы: "инженерная станция--сервер--резервный сервер--клиенты". Такая система позволяет делать изменения в проекте WinCC на ходу, без потери связи, и не ограничивая технологический процесс. Кроме того все управление осуществляется от инженерной станции - что очень удобно: открываешь проект WinCC на инженерке (правой кнопкой и open object), меняешь его как надо, а затем делаешь прогрузку (PLC-->Download) по изменениям (Changes).
Сейчас я напишу как это было сделано у нас, возможно это не самый правильный способ, но он работал.


  1. В первую очередь нужно настроить связь со всеми компьютерами сети, возможно придется все запихивать в отдельную рабочую группу. Чтобы поменять рабочую группу, нужно в свойствах компьютера, на вкладке имя компьютера изменить рабочую группу. Кроме того нужно выставить права на возможность чтения и записи в расшаренные папки. Уже на этом этапе можно определить папки под проекты и расшарить их
  2. У нас все было организовано через мультипроект, но суть не меняется, поэтому добавляем в мультипроект новый проект, а в этот проект нужно добавить Simatic PC Station
  3. В конфигурации добавленной станции нужно добавить 2 позиции: первая WinCC Application, вторая IE General, где в свойствах прописываем MAC адрес нашего сервера 
  4. Автоматически создается объект (OS), который можно переименовать (например 777). При открытии объекта запускается WinCC, где и создаются все картинки. В свойствах объекта нужно указать на второй вкладке путь на сервер, куда нужно будет прогружать проект. Эта папка должна быть заранее создана и расшарена с полным доступом для инженерной станции. Опция Standby-OS пока будет недоступна, потому что в ней нужно указать резервный сервер, который будет создан позднее. Внимание! mcp файл не нужно создавать, он создается автоматически. Готовый проект тоже не нужно вручную копировать, т.к. все скопируется автоматически при прогрузке сервера 
  5. На стороне сервера нужно заренее создать расшаренную папку с полными правами доступа для инженерной станции, куда будет сохраняться проект. Возможно понадобится сделать импорт станции, для этого нужно в трее найти редактор конфигуратора станций, где сделать импорт файла .xdb, который находится в папке проекта на инженерной станции в папке XDBs 
  6. Клиенты в проект можно добавить как Insert New Object -> OS (Client). В них настраивается путь, так же как настраивается пусть в настройках сервера Target OS. Возможно еще по-другому сделать: на клиентском компьютере при открытии WinCC создать новый клиентский проект, а в настройках Server Data (правой кнопкой --> Loading) нужно открыть путь до .pck файла в проекте на сервере, который находится в папке Packages. но при таком способе в самом проекте не будут отображаться клиенты

вторник, 27 марта 2018 г.

Как подружить telnet и vbs

Иногда бывает необходимо автоматизировать некоторые действия при подключении к оборудованию посредством telnet. Иногда требуется выполнить перезагрузку роутера, или, например, в моем случае, мне понадобилось узнавать температуру, которую показывал датчик, подключенный к UPS фирмы APC. Данную температуру можно узнать подключившись к нему через веб, но ради этого приходилось открывать браузер, вводить адрес и данные авторизации. Все это было не очень быстро. Решено было подключаться через телнет, оттуда узнавать узнавать температуру и выводить данную температуру во всплывающем окне.

Для этого был придуман такой способ как парсинг полученных данных из файла через vbs скрипт. Идея такая - скрипт авторизуется через телнет, вводит необходимую команду для получения температуры, все это записывается в текстовый файл на диске, потом этот файл открывается, там находит температуру, и эту температуру выводит в окно.

Ниже идет сам скрипт с подробным описанием, что и для чего и как используется:

' первые две строчки запускают телнет
Set obj = CreateObject("WScript.Shell")
obj.Run "telnet 192.168.0.1 -f c://tlnt.txt"
' -f означает что нужно сохранить весь лог команд в файл на диске

WScript.Sleep 750
'даем время скрипту для открытия 750 мс

obj.SendKeys "login{ENTER}"
' для авторизации набираем логин и пароль и жмем enter
' команда obj.SendKeys эмулирует нажатие соответствующих кнопок

WScript.Sleep 150
' после каждого ввода желательно подождать
obj.SendKeys "password{ENTER}"
WScript.Sleep 200
obj.SendKeys "uio -st{ENTER}"
' эта команда для отображения данных с датчика
WScript.Sleep 150
obj.SendKeys "exit{ENTER}"
' это чтобы закрыть окно телнета
WScript.Sleep 50obj.SendKeys "{ENTER}"

' следующие строки идут для извлечения данных из текстового файла
Dim temp, txt, str
Set fso = CreateObject("Scripting.FileSystemObject")
Set fl = fso.OpenTextFile("C://tlnt.txt", 1, False,0)
' открываем файл который был создан ранее

txt = fl.ReadAll
' считываем все что в нем записано
str = InStr(LCase(txt), "u1")
' ищем в тексте запись u1 (в нижнем регистре, потому что LCase), потому что после него данные с температурой.
' в окне терминала это выглядит примерно так U1:31.0C:OKU2:NA
' InStr возвращает число, которое показывает где в тексте найдена искомая комбинация

temp = Mid(txt,str+3,4)
' извлекаем данные с температурой. str+3 - т.к. сами цифры идут третьи по счету' а 4 это сколько символов нужно

fl.Close
' закрываем файл

obj.Popup Date & " " & Time & vbCrLf & "Температура в комнате PLC " & temp & " °C", 120, "Внимание!", 64
' выводим окно с датой и временем, а на следующей строке текст + температура + °С' 120 - это время в секундах через которое окно закроется, Внимание - заголовок окна, и 64 код иконки в окне

Можно добавить звуковое оповещение, которое проговорит сколько градусов
Set say = CreateObject("sapi.spvoice")
say.Speak "Температура " & temp & " градусов" 

понедельник, 26 марта 2018 г.

Преобразование vbs to exe

На самом деле это не совсем преобразование, а заключение vbs скрипта в оболочку exe. Данная статья - это вольный перевод статьи, которая называется Step-by-Step to wrap a vbs into an .exe (wrap переводится как оборачивание). От себя добавлю, что мне она помогла, поскольку программа, которая должна была запускать мой скрипт, не воспринимала файлы vbs, только exe и bat - но вызывать скрипт из батника получалось не очень красиво, а сделать exe-шник таким способом оказалось довольно просто.

В данном способе используется Iexpress 2.0, для того чтобы заключить vbs в оболочку .exe. Iexpress 2.0 это стандартное приложение, которое есть во всех Win XP и Win 7 и 10. Как только вы создаете экзешный пакет, у вас также генерируется .SED файл, который появляется в той же директории, что и сам экзешник и является настройками для Iexpress.exe. Данный файл можно отредактировать в блокноте (от себя: для того чтобы настроить параметры запуска экзешника, статья как это сделать есть у автора по ссылке, постом ниже). После настройки SED файла, вы можете использовать его для быстрой генерации, используя опцию при запуске Iexpress, отметив  Open Existing Self Extraction Directive file - то есть использовать существующий файл директив. Это будет очень полезно если вы поменяете несколько строк в скрипте, и вам тогда не придется проходить по всем пунктам заново, чтобы собрать пакет еще раз через Iexpress 2.0.

И так, что мы делаем:
  1. Жмем на меню пуск, жмем выполнить, вставляем в это поле iexpress, и жмем OK. Запускается IExpress Wizard. 
  2. В окне привеетствия Welcome to IExpress 2.0 выбираем Create new Self Extraction Directive file и жмем далее Next. 
  3. На следущей странице Package purpose выбираем Extract files and run an installation command и жмем далее Next. 
  4. На странице Package title вбиваем название нашего проекта и жмем далее Next. 
  5. На следующей странице Confirmation prompt нужно выбрать No prompt и жмем далее Next. 
  6. Отказываемся от показа лицензии Do not display a license на на странице License agreement page, жмем далее Next. 
  7. Следующая Packaged files страница, где нажимаем на кнопку Add, чтобы добавить скрипт. Во всплившем окне выбираем директорию, где расположен файл vbs
  8. После того как все добавили жмем далее Next. 
  9. На странице Install Program to Launch нужно ввести c:\windows\system32\wscript.exe "yourVBS.VBS" в поле Install Program (в некоторых случаях строка может быть такой: c:\windows\system32\cscript.exe "yourVBS.VBS". Post Install Command оставляем по умолчанию как <None>  и жмем далее
  10. После этого идет предупреждение Show window, в котором нужно выбрать Hidden и нажать Далее Next. 
  11. На странице Finished message page, выбираем No message и далее Next. 
  12. Потом идет Package Name and Options, где нужно указать путь и имя пакета, который в конце будет сформирован. Отмечаем оба чекбокса, а на предупреждении жмем Да Yes а потом снова далее Next. 
  13. В конфигурации перезагрузки Configure restart нужно выбрать No restart и нажать далее Next. 
  14. В предпоследнем окне мы как раз и выбираем куда сохранить тот самый SED файл, поэтому отмечаем Save Self Extraction Directive (SED) file: и нажимаем Next. 
  15. Последняя страницу Create package, жмем Next. Когда файл будет создан нужно нажать Готово Finish
  16. Ваш файл будет создан с заданными именем и расширением EXE