Category: it

Category was added automatically. Read all entries about "it".

default

Дорога в тысячу ли

Программизма псто.

В интернетах живо обсуждают пост Эрика Ниблера о ranges in C++. Одни радуются что наконец в С++ появляются какие-никакие современные элементы программирования. Другие сокрушаются тем, что современное программирование на С++ - обло, озорно, огромно, стозевно и лаяй.

На своей новой работе я впервые за очень много лет вылез из среды С/С++ и вот что мне подумалось.

С++ это как китайский язык. Надо учить всю жизнь только для того, чтобы оставаться грамотным. Месяц не практиковался в чтении и письме и всё, потом год нагоняешь, а то и рискуешь вернуться откуда начал. При этом из-за сложности языка все силы ума уходят на него, а на другое уже ничего не остаётся. Оттого у фаната С++ вид всегда восторженный и молодцеватый. В то время как в индустрии уже давно космические корабли бороздят просторы, в С++ люди ковыряют мейкфайлы в виме и страшно горды своим эзотерическим знанием.

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

Mirrored from DreamWidth. Comments: comment count unavailable
default

МощнаяОболочка

На прошедших рожденственских каникулах наконец дошли руки посидеть с PowerShell. Тем более что последняя версия мигрировала на .NET Core и полностью кроссплатформенная. Все последующие версии тоже будут только на .NET Core.

У меня мало опыта с .NET, трогал пару раз в прошлом, но несерьёзно, поэтому было интересно что и как там сейчас. Я долго не брался за PowerShell хотя видел как многие пользуются им и фанатеют. Думал, ну может это как VIM: или ненависть или любовь до гроба, посередине почти не бывает. Для меня лично причины игнорировать PowerShell были такие (забегая вперёд, все эти опасения не оправдались):
  1. Странный и слишком избыточный синтаксис, который отпугивает. Кажется что нормальный человек все эти Get-ChildItem и New-ItemProperty (да ещё и с миллионом параметров каждый) никогда не выучит. И руки обломаются писать такую колбасу на каждую ерунду в шелле.

  2. Необходимость серьёзно разбираться с .NET если хочется нормальной производительности.

  3. Лень и сила привычки. Тем более что под Виндой я легко себе могу сделать Linux-подобную среду, а вот наоборот - нет. Поэтому лучше уж сразу инвестировать в bash и GNU toolchain и пользоваться ими везде, чем под каждую платформу учить уникальные вещи.
В качестве упражнения я решил пройти Advent Of Code за один из прошлых годов используя лишь PowerShell. Читать мегабайты мануалов довольно скучно и малопродуктивно, а практические задачи порешать это именно то, что надо. The proof is in the pudding, как говорится.

Итоги:

Ни одно из вышеперечисленных опасений не оправдалось:
  • Несмотря на длинные имена команд, в PowerShell предопределены алиасы на всё что используется чаще всего. Поэтому особо много писать не требуется. В 98% случаев я не пользовался полными именами, хватало алиасов.
  • Множество параметров тоже не пришлось зубрить, т.к. шелл поддерживает Tab-completion. Причём, он довольно умный и сначала предлагает наиболее релевантные параметры.
  • За все 25 задач в Advent Of Code в собственно .NET пришлось залезть лишь пару раз: 1) хотел сделать настоящий двумерный массив, а не jagged array; 2) надо было использовать regexp чуть менее тривиальный.
В целом очень понравилось, буду продолжать пользоваться. Фактически, это полноценный язык программирования с несколько странным синтаксисом. Много хороших заимствований из других скриптовых языков, всё очень удобно. Если уж так получилось что чего-то не хватило, то можно пользоваться любыми .NET классами напрямую, не надо искать никаких левых приблуд.

То, что удивило или не понравилось:
  1. Неожиданностью было то, что округление целых не как в С/С++, а Round half to even. Т.е., число округляется до ближайшего чётного целого. Например, 1.5 и 2.5 будут округлены как 2.

  2. Непоследовательный синтакс для вызовов встроенных шелловских функций и .NET методов. Например:
    PowerShell function call:
    Foo -param1 "a" -param2 "b"
    или с неявными параметрами:
    Foo "a" "b"
    Но при этом:
    $a = [math]::Truncate(7/2)
    Иногда есть скобки, иногда нет.

  3. Недоделанная работа с unsigned integers. Такой код приводит к ошибке: [uint32]$a = 0xffffffff. Обходится это таким уродством: [uint32]$a = "0xffffffff". Надеюсь в будущем исправят.
То, что понравилось:
  1. Новый подход к шеллу: всё объект. Для программиста это родная среда, не надо заниматься утомительным расковыриванием текста как часто приходится делать в bash. Например, чтобы показать в рабочей директории все файлы размером больше 10К, отсорторованными по дате создания:
    gci | where Length -gt 10kb | sort CreationTime
    gci это алиас Get-ChildItem. При этом та же команда Get-ChildItem будет работать на любой древовидной структуре, файловая система или ещё что.

  2. Приятный синтаксический сахар. Например, switch на стероидах:
    switch -file $somePath {
        1     { echo "1" }
        "two" { echo "2" }
        { $_ -like "wtf"}    { echo "hm.." }
        { $_ -in "a",$b,42 } { echo "got $_" }
        default { throw "error: $_" }
    }
    Каждая строка в файле будет обработана в этом switch'е.

    Типа, лямбда:
    $foo = { param($x) $x * 2 }
    &$foo 2
    4
    Можно передавать $foo в другие функции и пр.

  3. Нет 40-летней legacy как в bash. Всё унифицировано, все команды и параметры работают везде одинаково. Поэтому учить приходится довольно мало при кажущемся богатстве синтаксиса и объектов.
В заключение могу сказать что Microsoft провела последние 20 лет в глухой несознанке. Теперь потихоньку начинают выходить из транса.

Mirrored from DreamWidth. Comments: comment count unavailable
default

Андроид для программиста

Как сказал классик, пылесос – для одного, пылесосный завод – для тысяч. Удивительное дело: другая страна, другая эпоха, а как будто ничего не изменилось. У жены обновился телефон, поставился Андроид 9. Включаешь запись звонка - не работает. Просто выпилили нафиг API, как и не было.

Я уже молчу о таком факте что базовая функциональность - записать телефонный звонок - оказалась под запретом во многих странах. А в других её статус непонятен вот производители телефонов и отрубают запись звонков на уровне системы. Но это только в свободных, демократических странах. Под пятой диктатуры в Китае, Пакистане и прочих нехороших местах, все телефоны продаются с опцией записывать звонок без всяких проблем.

В 90-е годы у меня был такой специальный гаджет от Панасоника чтобы отвечать на звонки, с двумя микрокассетами: на одной моё сообщение, а на другой сообщения от входящих звонков. На этой машинке была кнопка записать весь разговор. 20 лет спустя я должен искать какие-то левые приблуды и заниматься хакерством, чтобы эта возможность появилась у меня в телефоне, который, по идее, имеет вычислительную мощность превосходящую ЦРУ-шные секретные сервера в 90-х.

Ну хоть пока FM радио и tethering доступны. Я почитал форумы в интернете, так оказывается в Канаде радио в телефоне нет.

Вот такой прогресс.

Mirrored from DreamWidth. Comments: comment count unavailable
default

Кибернетика - продажная девка мужского шовинизма

Смешная новость: Амазон закрыл проект в котором искусственный интеллект искал подходящих кандидатов на работу, но делал это оскорбительным для женщин образом: Amazon scraps secret AI recruiting tool that showed bias against women.

Слаб ещё искусственный интеллект. Не просекает всю тонкость исторического момента.

P.S. Аналогичный случай был в Тамбове: Tay (bot)

Mirrored from DreamWidth. Comments: comment count unavailable
default

Последнее прибежище программиста...

...китайский хай-тек: https://www.bloomberg.com/news/articles/2018-04-23/sexist-job-ads-show-discrimination-rife-at-china-s-tech-giants

Пока Гугл и Фейсбук искореняют из своих рядов секситов-еретиков, китайцы окучивают нердов самым беспардонным образом. Грубо говоря, обещают красивых баб в офисе. И, главное, нанимают таких!

Mirrored from DreamWidth. Comments: comment count unavailable
default

Тернии и звёзды

На работе, глядя на очередной core dump, подумалось: вот же накосячили! астрономы самые лучшие дебаггеры. В том смысле что не инструмент, а люди, как раньше говорили "калькулятор" - была такая профессия. Если бы была профессия дебаггера, то астрономский склад ума лучше всего подходил бы под это дело.

У них ноль влияния на систему. Только наблюдения и ковыряние в мелких, еле приметных детальках. Вот тут излучение какое-нибудь меньше ожидаемого в девятом знаке после запятой. Это всё неспроста, за этим что-то кроется! И т.п.. Потом эти разрозненные наблюдения надо свести в единую картину и предлагать теорию. Как проверить? Опять по таким же наблюдениям. Короче, адЪ.

Есть похожие навыки в других профессиях. Я как-то был знаком с дорожным полицейским, который выезжает на место проишествия и восстанавливает картину аварии. Он и по жизни обожал всякие паззлы и квесты. Рассказывал про рабочие будни: Вот голова мотоциклиста откатилась на 247 сантиметров под таким-то углом. Значит ускорения было такое вот. Но учитывая что это склон, вносим поправку. А часть заросла травой, значит ещё поправку. Очень аналитический человек.

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

Хорошо, что я не астроном. Могу влиять на события.

Mirrored from DreamWidth. Comments: comment count unavailable
default

Windows 10

Что-то все в ленте о политике, да о политике. Хочется отвлечься на милые сердцу безделицы. Как раз недавно дошли, наконец, руки и поапгрейдил Винду на семейных машинах. Результат поединка: 1.5:1 в мою пользу. :)

Машина №1, лапоть с Windows 8.1, с тачскрином: всё стандартное, минимум установленных программ, никаких кастомизаций - апгрейд прошёл чисто, Винда 10 встала без проблем и всё заработало. 0:1 в пользу Винды.

Машина №2, лапоть с Windows 8.1: огромная куча всякого софта, рабочая лошадка, которая повидала всякое. До апгрейда были траблы с админ эккаунтом, которые, впрочем, были залечены. Оказалось что не совсем. После апгрейда на Вин10 комп окончательно сдох и дальше BIOS'а не бутился. Пришлось прибегнуть к классическому сценарию: format c:. Очко в мою пользу. Счёт сравнялся: 1:1.

Машина №3, десктоп с Windows 7 Pro: самая навороченная машина, чего на ней только не стоит и что я только на ней не вытворяю. Апгрейдить я даже и не пытался ибо уже опытный игрок. Никакой надежды на удачный автоматический апгрейд всё равно не было, т.к. на этой машине система стоит на быстром, но маленьком SSD диске, а всякое юзеровское барахло на большом, но медленном HDD диске. (При такой конфигурации Винда не умеет апгрейдиться, от слова совсем.) Присудить себе целое очко было бы незаслуженно, поэтому только 0.5, т.к. всё равно пришлось немного поплясать с бубном.

В ходе установки на десктоп выяснилось что если Винда 7 могла встать на разные диски (система на одном, а ProgramData и Users - на другом), то Винда 10 таких вольностей не позволяет. Users ещё можно вынести на другой диск, а ProgramData ни в какую. Сама Microsoft об этом стыдливо умалчивает, а только лишь рекомендует всё ставить на один диск, т.к. universal apps могут себя чувствовать плохо на разных дисках. В 21 веке выдвигать такие требования это, извините, какой-то позор.

Второй позор это новый интерфейс, который оставляет впечатление недоделанного продукта. Часть настроек доступна в новом интерфейсе, но все оставшиеся только в классическом. Если уж задумали перевести систему на новый интерфейс, то надо было это делать последовательно, чтобы все окна были по новой технологии. А получилась какая-то сборная солянка. При этом часто вылазит давняя проблема мелкомягких - окна которым невозможно менять размер. Вот так и сидишь за 29" монитором и крутишь скролл-бар в окошечке 250x100 пикселей. И хорошо ещё если прокрутка есть, а то может и не быть:

WinX Notifications

Стартовое меню, которым так хвалились стало хуже чем в Вин7. Судите сами:

Windows 7: всё что есть в меню и многое другое находится поиском:
Win7 Search

Windows 10: а хрен вам поиск. Ешьте что дают:
WinX Search

Windows 7: ширина меню:
Win7 Start

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

Windows 10: какая такая ширина? Думали что если можно раздвигать меню, то наступила вам сладкая жизнь? Наивные!
WinX Start

Свои же системные элементы не влазят по ширине! Я не знаю в каком Бангалоре они нанимали дезайнеров, но даже линуховские десктопы до такого не опускаются в наше просвещённое время. Хоть какой-то юзабилити должен быть или где?

Пришлось доставать из закромов StartIsBack:
WinX SiB

В заключение. Я всё понимаю что под капотом там революционные изменения, прогресс идёт семимильными шагами и космические корабли бороздят просторы. Кернел, какого не видывали, API - умереть не встать, и всё такое прочее. Но этого всего пользователь не видит. А корявый интерфейс видит. С победой мобильных девайсов и тач-скринов все забили на хороший интерфейс, это не секрет. Но Microsoft это не все, надо же держать марку в конце концов.

П.С. Отдельно доставляет то что горячие клавиши для переключения раскладок клавиатуры Винда так и не может запомнить между ребутами. Как отшибло память начиная с XP, так это всё до сих пор и тянется. Наверное девелопер, который эту фичу писал уволился или на пенсию вышел, да так и унёс с собой секрет верескового мёда сохранения настроек пользователя.

Mirrored from DreamWidth.
default

Маленькие хитрости

Если вы любите передачи радиостанции 103.FM и при этом хотите их слушать оффлайн (например, в транспорте) не спешите проклинать криворуких программистов наваявших радиостанции уебсайт. Программы из архива станции можно скачивать в несколько простых шагов:
  1. Скачиваем интерпретатор PHP для Винды и раззиповываем в любую директорию. Особо продвинутые могут добавить директорию в переменную среды %PATH%. Кул хацкеры могут даже создать ассоциации для .php файлов.

  2. Редактируем php.ini и включаем расширения curl и sockets. Проверяем что расширения подгружены: "php -m".

  3. Копируем в любое место чудо-скрипт AdobeHDS.php. Читаем документацию.

  4. Если есть желание, то можно поставить адд-он для FireFox, который распознает линк на F4M manifest. Если нет FF или просто лень, то линк можно выковырять руками из developer tools браузера.

  5. Запускаем AdobeHDS.php с URL манифеста. По желанию можно указать другие полезные параметры: имя выходного файла, кол-во параллельных потоков для скачивания, стирать ли промежуточные файлы или нет и пр. и пр.

  6. Открываем получившийся файл в любимом плеере и наслаждаемся передачей без обрывов сети или на смартфоне в поезде. Дополнительный бонус: можно прокручивать рекламу и не терять связь, как это часто происходит в уебанском плеере на сайте полюбившейся радиостанции.
Примеры использования AdobeHDS.php можно посмотреть тут: Adobe HDS Downloader. Там же можно задать вопрос автору.

Mirrored from DreamWidth.
default

Хозяйке на заметку или ад — это другие

Если вас раздражают стили журналов в которых хочется оставить коментарий, то не отчаивайтесь. Есть простой способ это поправить. Надо в адресную строку браузера добавить параметр: style=mine.

Чтобы каждый раз это не писать руками (переключая раскладку!), я завёл себе bookmarklet:

javascript:location.search='?style=mine'+(location.search?('&'+location.search.substr(1)):'');

Заведите себе закладку, но вместо адреса пропишите код указанный выше.

Теперь если надо отобразить любую страницу ЖЖ в своём стиле, то достаточно просто кликнуть на закладку и страница перегрузится с радующими глаз фонтами и стилями.

Mirrored from DreamWidth.
default

Только бездельник не пахнет никак

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

Как обычно бывает в таких случаях, конкуренты, проигрывая на рынке, переносят борьбу в залы суда. При всей позорности такой тактики, она часто помогает добиться немалых успехов. Хотя такого гиганта как Microsoft судами разорить тяжело, но задержать продукт на несколько критических месяцев вполне можно. Обычно иски против больших фирм, котрые у всех на слуху, горячо поддерживаются всякого рода группами полезных идиотов - антиглобалистами, борцами с капитализмом и пр. Так что шумиха в прессе получается ещё более эффектной.

Microsoft пошла на соглашение с судом и опубликовала документацию для "скрытых" функций. Без смеха этот документ читать тяжело, т.к. из него явно видно что а) это просто отмазка, ничего ценного чего бы средней руки специалист не знал и раньше там нет, и б) идиоты, которые проглотили эту отмазку в качестве соглашения, лишний раз показали каков уровень компетенции судебной системы в индустриальных делах. Скорее всего, с нынешним иском Оперы против мелкомягких получится нечто похожее.