программирование скрыть подчинённые тэги

Страницы: | 1 | 2 | 3 |

Surface Book 2 не подключается к WiFi-сети — скрипт для перезапуска адаптера

14 января 2020 // Хельги

Симптомы

Ноутбук Surface Book 2 не переподключается автоматически к некоторым беспроводным сетям. Возможно, этой же проблеме подвержены другие ноутбуки и планшеты Surface с беспроводным адаптером Marvell Avastar.

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

Обходной маневр

Открыть Device Manager, найти устройство Marvell AVASTAR Wireless-AC Network Controller, в контекстом меню нажать Disable device, потом Enable device. После этого ноутбук подключится к сети.

PowerShell-скрипт для автоматизации

Чтобы не открывать каждый раз Device Manager, можно сделать PowerShell-скрипт и запускать его в один клик.

Выяснение InstanceId. Сначала потребуется выяснить InstanceId адаптера на ноутбуке. Для этого запускаем PowerShell и вводим команду Get-PnpDevice:

   PS C:\Users\helgi> Get-PnpDevice -FriendlyName "*Marvell*Wireless*" | ft -wrap -autosize friendlyname, instanceid
   
   FriendlyName                                   InstanceId
   ~~~~~~~~~~~~                                   ~~~~~~~~~~
   Marvell AVASTAR Wireless-AC Network Controller PCI\VEN_11AB&DEV_2B38&SUBSYS_045E0009&REV_00\4&32FA7CC7&0&00E0

Точное название адаптера можно посмотреть в Device Manager.

Скрипт. Создаем где-нибудь в удобном месте (например, в C:\scripts) файл Restart-Marvell.ps1:

 #
 # Disable, then enable Marvell AVASTAR Wireless-AC Network Controller
 #
 
 Disable-PnpDevice -InstanceId "PCI\VEN_11AB&DEV_2B38&SUBSYS_045E0009&REV_00\4&32FA7CC7&0&00E0" -confirm:$false
 Write-Host 'Adapter disabled'
 sleep 1
 
 Enable-PnpDevice -InstanceId "PCI\VEN_11AB&DEV_2B38&SUBSYS_045E0009&REV_00\4&32FA7CC7&0&00E0" -confirm:$false
 Write-Host 'Adapter enabled'
 sleep 1
 
 Write-Host -NoNewLine 'Press any key to continue...'
 $null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown')

InstanceId в скрипте (PCI\VEN_11AB&DEV_2B38&SUBSYS_045E0009&REV_00\4&32FA7CC7&0&00E0) заменяем на тот, который был получен при помощи команды Get-PnpDevice.

Ярлык для быстрого запуска. Создаем в удобном месте (на Рабочем столе или в папке Quick Launch) ярлык на PowerShell.exe, в поле Target в окне свойств прописываем:

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe C:\scripts\Restart-Marvell.ps1

Там же нажимаем Advanced и ставим галку Run as Administrator — без этого не получится остановить и запустить адаптер и будут сыпаться ошибки. То же будет и при простой попытке запустить сам файл скрипта.

Готово. Теперь вместо кликов в Device Manager можно запустить этот ярлык, подтвердить запуск от имени администратора и нажать любую клавишу, когда скрипт отработает.

Тэги: powershell, surface, советы
Написать комментарий

Надо ли учиться программировать?

15 мая 2012 // Хельги

Джефф Этвуд убеждает, что всем подряд учиться программировать не надо. Он сравнивает работу программиста с работой сантехника: важная профессия, но именно профессия, а не что-то, что должен освоить каждый.

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

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

Хотя я полностью согласен с Этвудом в том, что скрипт-кидди, прочитавшие книгу «Освой самостоятельно за 24 часа», и на основании этого считающие себя программистами, принесли миру вреда больше, чем пользы, у этой медали есть и другая сторона.

Она заключается в том, что опытные, профессиональные люди, прекрасно разбирающиеся в своей области, сидят перед компьютером и выполняют рутинные, однообразные операции. Они не могут помыслить о том, что в «ворде» есть макросы, или просто боятся их.

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

Разумеется, решение не в том, чтобы вернуть в винду QBASIC. Но как в конце восьмидесятых — начале девяностых QBASIC (плюс немного пакетных файлов) был приемлем как средство автоматизации, так и сейчас есть подходящие средства, хотя бы вордовские макросы или, ещё лучше, маковский «автоматор».

Тезис «программирование — вторая грамотность», по-моему, остаётся верным и сейчас.

Тэги: программирование, ссылки
Написать комментарий

Верхние Лужицы и Нижние Лужицы

19 апреля 2012 // Хельги

Вот такой фрагмент кода на C#:

var c = CultureInfo.GetCultureInfo("hsb");
var dt = new DateTime(2011, 2, 20, 15, 30, 0);
var fmt = dt.ToString("g", c);
DateTime pdt;

if (!DateTime.TryParse(fmt, c, DateTimeStyles.AllowWhiteSpaces, out pdt))
    Console.WriteLine("failed");

напечатает failed только для следующих культур: hsb, hsb-DE, dsb и dsb-DE. В fmt оказывается строчка 20. 2. 2011 15.30 hodź. для hsb или 20. 2. 2011 15.30 goź. для dsb.

Для всех остальных культур дотнет успешно парсит им же самим сформированную строку.

Да, hsb и dsb — это верхнелужицкий и нижнелужицкий языки.

Тэги: c#, wtf, работа, язык
Написать комментарий

Перово, «Икея» и программирование

4 января 2012 // Хельги

Месяц назад случился очередной переезд, правда, недалеко: из Новогиреева в Перово. Смешно, но я, кажется, привыкаю: по крайней мере последние два переезда были не такими и болезненными.

Для новой квартиры пришлось собрать некоторое количество икеевской мебели. Так вот, коллеги программисты, икеевские инструкции — всем нам образец.

Вне зависимости от того, что мы делаем: «коробочную» программу, информационную систему для «операторов» или внутренную автоматизацию для своих же, — всегда, абсолютно всегда идеальную программу портят пользователи. Даже если пользователи — это мы же.

И получается так, что совершенство системы (внутреннее или внешнее) никем не оценено и бесполезно, если пользователи не могут ей, эм, пользоваться. Приходится им помогать, отвлекаясь от увлекательных технических деталей и переключаясь на такие скучные, унылые вещи как эргономика (= простота пользования) и инструкции по эксплуатации.

А «Икея» нашла способ сократить свои расходы, предлагая покупателям самим собирать столы и стулья. То есть перевернула всё с ног на голову: сделала процесс сборки простым, в том числе благодаря качественным инструкциям. Плюс каждый человек, вкрутивший три самореза по этой инструкции, теперь может считать себя крутым сборщиком мебели.

Нам, программистам, тоже надо бы так.

Редакция от 23 февраля 2012
Тэги: всё равно что пожар, программирование
Написать комментарий

Ohloh не обманет

13 марта 2011 // Хельги

Скрипт для русификации справки трака

14 февраля 2011 // Хельги

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

Чтобы не заменять страницы справки на переведённые по одной, можно воспользоваться таким shell-скриптом:

#!/bin/sh
env=/path/to/trac/env
for page in `trac-admin $env wiki list | tail -n +4 | cut -f1 -d' '`
do
    wget http://trac.edgewall.org/wiki/TranslationRu/${page}?format=txt \
        -O $page -o /dev/null
    if [ "`stat -c %s $page`" -ne "0" ]
    then
        trac-admin $env wiki import $page $page
        echo $page downloaded
    fi
done

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

Тэги: sh, trac
Написать комментарий

Квайн на питоне

3 сентября 2010 // Хельги

Я тут внезапно сообразил, что за всю жизнь на разу не писал квайна. Поэтому сел и написал вот такой вот на питоне:

CODE = """
import sys
out = sys.stdout.write
out('CODE = ""' '"' + CODE + '"' + '""')
out(CODE)
"""
import sys
out = sys.stdout.write
out('CODE = ""' '"' + CODE + '"' + '""')
out(CODE)

Запустить

Он дубовый (можно найти поинтереснее), но честный, без использования repr или исходного кода.

Тэги: python
Комментарии (2)

order of the stick скачать

7 июля 2010 // Хельги

Допустим, вы хотите почитать на досуге, скажем, в метро, комикс The Order of the Stick. Для этого нужно выкачать его целиком. Что вы предпочтёте — короткий скрипт на любимом языке или wget -r -A=gif?

Я выбрал скрипт на питоне, вышло 30 строчек.

from urllib import urlopen, urlretrieve
from os.path import exists
from os import rename
import re

urlt = "http://www.giantitp.com/comics/oots%04d.html"
regexp = r'<IMG src=\"(\/comics\/images\/\w+.gif)"'

for i in range(1, 740):
    print "%4d =>" % i,
    outf = "%04d.gif" % i
    if exists(outf):
        print "already downloaded"
        continue
    
    pageurl = urlt % i
    h = urlopen(pageurl)
    data = h.read()
    mo = re.search(regexp, data)
    if not mo:
        print "can't find gif in page"
        continue
    
    imgurl = "http://www.giantitp.com" + mo.group(1)
    print imgurl,
    urlretrieve(imgurl, "temp.file")
    rename("temp.file", outf)
    print "- saved to", outf

Тэги: python
Написать комментарий

Глючит буфер обмена в Visual Studio 2010

28 мая 2010 // Хельги

Симптомы такие: в «студии» при нажатии Ctrl+C в буфер ничего не копируется, так что нажатие Ctrl+V ничего не вставляет. То же самое и Ctrl+X: текст из редактора исчезает, но в буфере ничего нет, приходится отменять.

Microsoft Connect предлагает выключить расшаривание буфера обмена в RDC, во всех видах. Я закрыл два подключённых RDC, и мне действительно помогло.

Тэги: visual studio, работа, советы
Написать комментарий

Замена тернарной операции для python 2.4

2 февраля 2010 // Хельги

В питоне начиная с версии 2.5 появилась тернарная операция с синтаксисом true_value if condition else false_value. Синтаксис немного непривычный, да и по разным причинам иногда приходится писать так, чтобы работало и на версии 2.4.

А вот сейчас, читая исходники плагина MasterTickets к траку, я увидел отличную замену тернарной операции: condition and true_value or false_value. Как я сам не додумался до такой простой вещи?

Порядок операндов ?: сохранён, да и логика вполне прозрачна.

Замечание

eSyr обратил моё внимание вот на что: если true_value вычислится в ложное значение (0, пустая строка, пустой список), то в итоге выражение вычислится в false_value.

Так что это удобный хак, но не более.

Редакция от 12 февраля 2010
Тэги: python, trac
Написать комментарий

Страницы: | 1 | 2 | 3 |