Скрипт конвертирования файлов xls в xlsm

##############################
# Скрипт для конвертирования файлов *.xls -> *.xlsm
##############################
cls
#Подключаем сборку для того, чтобы выбрать с ее помощью тип сохраняемого файла
Add-Type -AssemblyName Microsoft.Office.Interop.Excel
#Выбираем тип сохраняемых файлов
$xlFixedFormat = [Microsoft.Office.Interop.Excel.XlFileFormat]::xlOpenXMLWorkbookMacroEnabled
#Путь к папке с xls-файлами
$Path2xls="\\server\share"
#"Запускаем" Excel (создаем COM-объект Excel.Application)
$objExcel=New-Object -comobject Excel.Application
#Отключаем уведомления пользователя (например, о перезаписи файла)
$objExcel.DisplayAlerts=$False
#получим все xls-файлы в папке
$xlsFiles=@(dir (Join-Path $Path2xls "*.*") -Filter *.xls -Include *xls)
#Для каждого xls-файла в папке...
for ($i=0; $i -lt $xlsFiles.Length; $i++) {
    Write-Progress -Activity "обрабатываем файл $($xlsFiles[$i])" -PercentComplete ([Math]::Round($i*100/$xlsFiles.Length))
    #Start-Sleep -Milliseconds 1
    #
    #выполняем открытие файла ("Рабочей книги") в Excel
    $objWorkbook=$objExcel.Workbooks.Open($xlsFiles[$i].FullName)
    $NewFileName=Join-Path $xlsFiles[$i].DirectoryName "$($xlsFiles[$i].BaseName).xlsm"
    $objWorkbook.SaveAs($NewFileName, $xlFixedFormat);
    #Закрываем книгу Excel
    $objExcel.Workbooks.Close()
    #
}
#
#Выходим из Excel (вернее даем команду на выход из Excel)
$objExcel.Quit()
#обнуляем объект
$objExcel = $null
#запускаем принудительную сборку мусора для освобождения памяти и окончательного завершения процесса
[gc]::collect()
[gc]::WaitForPendingFinalizers()
#

Как стать программистом

Люди, желающие сменить профессию и попробовать себя в новой области, часто интересуются программированием. Умение писать код — востребованный на рынке IT-технологий навык, который помогает пользователям компьютера и в бытовых ситуациях.
 
С ЧЕГО НАЧИНАТЬ ИЗУЧЕНИЕ ПРОГРАММИРОВАНИЯ
 
Освоение новой области начинается с основ, иначе человек станет простым кодером, пишущим по шаблону и не понимающим алгоритмов действий. В дополнение к этому, для полноценного изучения программирования требуется как минимум среднее знание английского, ведь большинство обучающих курсов и школ — англоязычные.
 
Сначала изучается работа операционных систем: Windows, Mac, Linux, Android и iOS. Это поможет определиться с направлением работы, с какой ОС человеку интереснее работать. Особое внимание уделяется фреймворкам и API. Обучение основам продолжается введением в компьютерные науки. Курсы по этой дисциплине проходят на Coursera и Udacity.
 
Изучение самого программирования начинается со структуры данных, SQL, паттернов и алгоритмов. Без них написание софта превратится в бездумное кодирование. На этом этапе ученик запоминает виды алгоритмов и структур данных (начиная с реляционных). Знания закрепляются тематической литературой, курсами Coursera и MIT. Теперь ученик переходит к системам версионного контроля и репозиториям кода.
 
Получив базовые знания, человек переходит к изучению языков программирования ООП: C++, Python и Java. Дальнейшей работе поможет ведение в технологии:
 
        * HTML;
        * CSS;
        * JavaScript;
        * TCP;
        * Sockets;
        * HTTP;
        * REST;
        * Ruby;
        * Rack;
        * Sinatra;
        * Rails.
 
Желательно соблюдать такой порядок изучения, для постепенного перехода от «базовых» языков к. Полученная теория закрепляется практикой с помощью обучающих онлайн-игр Bit's Quest (практика по JavaScript) и Ruby Warrior (урок по Ruby).
 
ПРОДВИНУТОЕ ИЗУЧЕНИЕ ПРОГРАММИРОВАНИЯ
 
Языки — инструмент, с помощью которого создаётся софт. Чтобы научиться правильно пользоваться инструментом, требуются углубленные знания компьютерных технологий и отдельных областей математики. Так, базовые знания дискретной математики помогают в понимании работы алгоритмов. Онлайн-лекции по этой дисциплине проводит университет MIT.
 
Невозможна работа программиста и без знаний криптографии. Введение в алгоритмы шифрования помогает создавать защищённые приложения и не ошибаться в выборе стойкого алгоритма. Лекции по криптографии можно найти на Coursera.
 
Последние штрихи в самообразовании по программированию: создание компиляторов, изучение параллельного программирования и искусственного интеллекта. Курсы по первым двум дисциплинам проходят на Coursera.
 
Получив хорошую теоретическую базу, можно переходить к углубленному изучению языков. На этом этапе ученик пробует писать коды на разных языках и находит наиболее удобный для себя инструмент. Завершается обучение получением навыка тестирования кода.
 
ВЫБОР ОНЛАЙН-ШКОЛ ПРОГРАММИРОВАНИЯ
 
Кроме литературы и обучающий статей, курс самообразования включает сервисы, предназначенные для обучения программированию.
 
Бесплатные онлайн-школы:
 
        * Code.org: обучение JavaScript. Уровень: для начинающих. Поддерживает русский язык.
        * Codecombat: JavaScript. Подходит для начинающих. Имеется русский язык.
        * Hello Processing — скринкаст, заточенный под изучение JavaScript. Рассчитан на начинающих.
        * Code Avengers: обучение CSS3, HTML5 и JavaScript. Уровень: для начинающих.
        * Codecademy: API, jQuery, PHP, Ruby, Python и т.д. Уровень: от начинающего до среднего.
        * Treehouse: Android, Database, Rails, UX и т.д. Уровень: от начинающего до углубленного. Курсы платные, но имеется триал-версия обучения.
        * Code School: CSS3, jQuery, iOS, Rails, Ruby и Ruby on. Уровень: от среднего до углубленного. Большинство уроков платные.
 
ПЕРСПЕКТИВЫ КАРЬЕРЫ ПРОГРАММИСТА
 
Конечная цель обучения: получение интересной работы в области IT-технологий. Специальность программиста останется востребованной ближайшие два десятка лет — компаниям постоянно требуется разработка приложений и игр, устранение ошибок в уже созданном софте.
 
На выбор места работы влияет зарплата и востребованность знаний конкретного языка и сфера деятельности компании. В фирмах, специализирующихся на разработке ПО, лучшие для программистов условия труда и выше зарплата.
 
Средняя зарплата разработчиков в российских компаниях (в год):
 
        * Mail.ru Group: $39,000;
        * Kaspersky Lab: $32,000. Компания разрабатывает ПО для защиты компьютера от киберугроз;
        * российское отделение Intel: $29,000;
        * Яндекс: $27,000.
 
Зарплата в инженер-программистов в иностранных компаниях:
 
        * eBay: $120,000. Компания специализируется на интернет-торговле;
        * Google: $119,000;
        * Facebook: $118,000;
        * Amaya Gaming Group: $94,000. Канадская компания, занимающаяся проектами в сфере онлайн-гемблинга. Программисты Amaya разрабатывают клиентские программы для игры в покер, казино и т.д.
        * Alibaba Group: $31,000. Китайская компания, специализация которой — интернет-торговля.
 

Android, rxJava. Подписка на уход приложения в background и возвращение обратно

Актуально для приложений с несколькими Activity, когда надо отслеживать уход всего приложения в background и возвращение обратно

Код на Kotlin, но все достаточно прозрачно. На Java будет так же.

class MyApplication: Application() {
    companion object {
        val onForeground: PublishSubject<Boolean> = PublishSubject.create()      //Отсюда получаем true/false в зависимости от состояния приложения
        val stateSubscription: PublishSubject<Boolean> = PublishSubject.create() //Сюда пихаем true/false от своих Activity
        private var currentState = false
    }
 
    override fun onCreate() {
        super.onCreate()
        stateSubscription.debounce(2, TimeUnit.SECONDS).filter { b -> b != currentState }.subscribe { b -> currentState = b;onForeground.onNext(b) }
    }
}
 
class MyActivity:: AppCompatActivity() {
    override fun onResume() {
        super.onResume()
        MyApplication.currentActivity.onNext(true)
    }
    override fun onPause() {
        super.onPause()
        MyApplication.currentActivity.onNext(false)
    } 
}
 

Собственно вместо true/false в onResume/onPause никто не мешает пихать this/null

В java v8 перестал запускаться iDRAC v5. Как починить?

После установки JRE v8 перестала запускаться консоль KVM на старых серверах Dell c iDRAC v5.
Оказалось, причина в том, что в JRE v 8 по умолчанию заблокированы некоторые устаревшие протоколы безопасности, которые использует в своей работе iDRAC v5. Для того, чтобы восстановить работоспособность консоли, нужно разрешить SSLv3, RC4, MD5withRSA, удалив их упоминание в параметре jdk.tls.disabledAlgorithms =…
Аналогичным образм необходимо поступить с MD5 в параметре jdk.certpath.disabledAlgorithms=...

 Для внесения необходимых изменений в настройки безопасности Java необходимо будет отредактировать файл 
  • C:\Program Files (x86)\Java\jre1.8.0_XX\lib\security\java.security 



Скрипт изменения содержимого ярлыка.

Данный скрипт позволяет вносить исправления в ярлыки. Это может потребоваться в том случае, если объект, на который ссылался ярлык, по каким-то причинам «перехал» и ссылка стала недействительной. Или для приведения ярлыков к общему стандарту, так, например, в нашей организации пользователи использовали ярлыки ссылающиеся на одни и те же документы в расшаренных папках двумя разными способами: \\servername\sharename\filename и \\DFSRoot\sharename\filename из-за чего возникали проблемы с относительными ссылками в документах Excel (из-за того, что база гиперссылки, не заданная явным образом, зависила от пути к документу при его открытии).


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

Контроллер PlayStation 3 и Windows 10

 Всем известно, что для подключения контроллера PlayStation 3 или X-Box к PC необходимо использовать утилиту DS3 Tool, которая устанавливает в систему необходимые для работы контроллера драйвера. Однако, при подключении к Windows 10 возникли некоторые проблемы: дело в том, что Windows 10 не позволяет установить эти самые драйвера корректно.
 
Для того, чтобы Windows установила необходимые драйвера, нужно отключить проверку подписи драйверов. Существует два способа: через командную строку или через GUI. Ниже привожу оба.

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