PowerShell и систематизация файлов

Дурацкое название, но что-то лучше ничего не придумалось.

Очень быстро покажу пару скриптов, которыми я постоянно пользуюсь для поддержания моей коллекции обоев с deviantArt в относительном порядке.

Для начала, хочется заметить, что в общем случае имя файла генерируется сервером в виде my_picture_s_name_by_awesome_me.jpg, т.е. название + by + имя пользователя, приведённое к виду, пригодному для сохранения в любой файловой системе.

Итак, хранятся все картинки в одной папке – новые в корне, старые – рассортированные по авторам. От скрипта требуется умение автоматически распихивать файлы заданного вида по папкам. Решается тривиально (скрипт был написан очень давно, когда v1.0 только-только вышла и я ещё почти ничего о нём не знал):

$files = Get-ChildItem -Filter "*_by_*.???" | where {$_.GetType() -eq [System.IO.FileInfo]}
$myRegEx = New-Object System.Text.RegularExpressions.Regex('.+_by_(.+)\..{3}', [System.Text.RegularExpressions.RegexOptions]::IgnoreCase)
foreach ($f in $files) {
	$dir = Join-Path $f.Directory $myRegEx.Split($f.Name)[1]
	$destination = Join-Path $dir $f.Name
	if (-not (Test-Path $dir)) { New-Item -ItemType Directory -Path $dir | Out-Null }
	Move-Item -Path $f.FullName -Destination $destination -Force
}

Второй скрипт пришлось придумать только что, поскольку буквально на прошлой неделе к некоторым файлам зачем-то стали приписывать некий набор символов. Пока что я не знаю, зачем он нужен и какой у него формат, эмпирически же известно, что это семисимвольный довесок, начинающийся на d2x или d2y. Пока что будем его обрезать:

ls | where {$_.FullName -Match '.+\-[a-z0-9]{7}\.[a-z]{3,4}'} |
ren -NewName {$_.FullName -Replace '(.+)(\-[a-z0-9]{7})(\.[a-z]{3,4})','$1$3'}

RavenDB, dynamic и Excel

Интро

Уже давно хотелось пощупать главное нововведение .NET 4 – DLR, да и RavenDB выглядит очень аппетитным, а собранные вместе в одном месте дают возможность реализовать очень интересные штуки. Да и на чём потренироваться у меня есть – мой список дисков, который я веду в Excel. Давно уже хочется отказаться от таблиц и использовать что-то более гибкое.

Итак, далее последует примерный конспект моих мытарств в освоении всего нового, а именно – как работать с приложениями MS Office напрямую, основы использования динамических объектов и работа с RavenDB. На всякий случай, я использовал MS Office 2010 RTM x64, Visual Studio 2010 RTM и RavenDB build 101 (начал я с 100, но там был баг с загрузкой индексов).

Читать далее

Firefox 4

Последние полнедели я живу с ночной сборкой того, что к концу года выйдет под именем Firefox 4. Поскольку буквально на днях должен состояться релиз первой публичной беты, я решился перейти на ночные сборки вместо стабильной версии. Пара багов и неработающих функций то тут, то там меня не особенно пугает, а общее впечатление уже сейчас очень положительное.

Про все новые поддерживаемые стандарты и технологии писали уже неоднократно, да и мне сейчас гораздо важнее совсем другое – нововведения, делающие жизнь конечного пользователя комфортней.

Итак, первое, что бросается в глаза – скорость. Скорость загрузки, отрисовки страниц (в т.ч. при прокручивании), сложных веб-приложений, использующих JavaScript. Несмотря на то, что код только-только дорос до более-менее стабильного состояния, уже сейчас заметна разница в старте приложения по сравнению с текущей стабильной веткой. Конечно, до Chrome ещё далеко, но по крайней мере, уже не возникает раздражения при постоянном пользовании программы (и это с учётом того, что у меня стоит множество расширений для Firefox).

Второе – то, что я ждал больше всего – новый интерфейс.

Его сильно переработали и теперь он очень хорошо вписывается в окружение Windows 7. Aero Galss, Aero Peek (хотя всё ещё используется один процесс :(), закладки сверку, аппаратное ускорение отрисовки примитивов, использование DirectWrite для типографики… Это просто сказка какая-то 🙂

Конечно, даже с учётом того, что сборка довольно стабильная, проблем всё же слишком много для использования обычным пользователем: изменившаяся система расширений ломает большинство из них, аппаратное ускорение работает не всегда (и иногда делает невозможным просмотр некоторых страниц, как говорят), бывают проблемы с отрисовкой самого интерфейса, временные затыки при долгой работе, настройки интерфейса не сохраняются при закрытии и т.д. и т.п.

Ещё не все нововведения, анонсированные для 4й версии реализованы, что несколько расстраивает. Так, главная кнопка приложения попала в транк лишь пару недель назад (а переехала на положенное место и того позже). Кнопки Обновить/Отменить всё ещё отдельные, как в прототипах для 3.7 (а не интегрированы в адресную строку). Закладки для веб-приложений тоже ещё не реализованы (а я уже так привык к ним, когда пользовался прототипом на предыдущих версиях). Менеджер аккаунтов тоже ещё не готов (сейчас он ничем не отличается от предыдущих версий). Новый менеджер расширений готов лишь на половину (совсем нет страницы поиска, процесс установки/обновления никак не показывается). Ну и т.д. и т.п.

Но лично для меня – стабильная работа (пока ещё ни одного вылета), DirectWrite и новый интерфейс вполне достаточны, чтобы пребывать в восторге и пользоваться сырым продуктом на постоянной основе.

Чудо, что зовётся AdBlock

Думается, что все более-менее “продвинутые” пользователи знают, что одним из первых расширений для Firefox стоит ставить AdBlock Plus. Все знают, что парой щелчков мыши (добавлением подписки) можно избавить себя от подавляющего большинства рекламы в сети. Причём, в любом её проявлении.

Естественно, нельзя сделать абсолютно универсальный инструмент, поэтому иногда придётся дотачивать его под себя. Обычно, это сводится к добавлению простеньких правил для блокирования URL определённого вида, но иногда этого недостаточно.

И вот здесь большинство пользователей сдаётся. Мало кто догадывается, знает и тем более использует расширенные возможности по блокированию и скрытию контента. Особенно мне хочется остановиться на скрытии элементов с помощью CSS-селекторов.

Зачем это надо? Например, иногда бывает проще скрыть элемент, в котором показывается реклама, чем блокировать сотню ссылок, откуда она подтягивается. Или чтобы подправить вид сайта после отсекания некоторых элементов дизайна xD

Для примера, возьмём всеми [не]любимый bash.org.ru. Вот как он выглядит в девственном виде, как его задумали создатели:

Вот так сайт видят пользователи IE

А вот так после включения AdBlock со стандартными правилами:

А так видят сайт большинство пользователей Firefox

Не очень эстетично, правда? А если мы нажмём [Ctrl]+[Shift]+[E] и добавим новое правило скрытия элементов вида bash.org.ru##div.q>div:first-child:not(.vote), то в результате увидим вот это:

А вот так видят этот сайт... педанты

Вот ещё несколько полезных примеров:

icanhascheezburger.com##div#toprightad
icanhascheezburger.com##div#rightskyad
icanhascheezburger.com##div#leftcolumnad

mail.ru##div.rb_body
mail.ru##div.mf_smsTop

iphones.ru##div.rc10
iphones.ru##div#sidebar>noindex:last-of-type
iphones.ru##div#sidebar>noindex:nth-of-type(2)

rutracker.org##div[id^="bn-"]
rutracker.org##div.tCenter

urod.ru##a[href^="http://loadpartners.com"]
r.radikal.ru##embed#id_flbaner
exler.ru##td#Counter
exler.ru##div[id^="Banner"]

membrana.ru##body>table>tbody>tr>td>table+table
umap.ru##td.column-right>div:nth-of-type(3)

##div.item-body>div>a[href*="d.techcrunch.com/ck.php"]>img

Особенно радует, что использовать можно практически все возможности, предоставляемые CSS3. Подробности – в документации по AdBlock.

Office Live

Ура, товарищи! Чудо свершилось и буквально только что Office Live стал доступен для использования.

К сожалению, все мои опасения по поводу ограниченности функционала для работы с японскими текстами (из того, что мне больше всего нужно) подтвердились. 🙁

Просмотр - хорош; редактирование - так себе

Как видно, просмотр всё так же хорош, как и раньше, а вот создавать новые (или редактировать уже существующие) документы – нельзя 🙁