В разделе фотография
Андрей Баксаляр  :: 8 фев, в 06:32

Давно у нас не было годных фотографов с их фотографиями. На этот раз они прямиком из китайских мегаполисов, холодные, ламповые, светящиеся, неоновые! Поехали.

Дженнифер Бин, Шанхай

Дженнифер Бин, Китай, Шанхай

Читать далее »


В разделах программирование и софт
Андрей Баксаляр  :: 25 янв, в 20:19

Как правильно сравнить содержимое вывода какой-то команды с содержимым текстового файла? Например, у нас есть requirements.txt, в котором содержится информация о зависимостях проекта. По сути, содержимое этого файла является записанным выводом команды pip freeze. И вот, по прошествии какого то времени, нам надо сравнить содержимое этого файла с актуальным выводом все той же команды.

Для этого достаточно просто воспользоваться конвейерным механизмом (unix pipes):

$ pip freeze | diff requirements.txt -
3c3
< django-extensions==1.7.1
---
> django-extensions==1.7.4

Что здесь происходит? Во-первых, сначала выполняется pip freeze, вывод которого подается дальше по конвейеру, передача обозначается символом |. Во второй части команды diff принимает первым аргументом файл requirements.txt, а вторым аргументом, обозначенным дефисом -, принимает стандартный ввод, в котором содержится переданная по конвейеру информация из левой части команды (т.е. вывод pip freeze). Программа diff сравнивает два текста и выдает найденную разницу.

Любопытно, что в Linux-е файл тоже может иметь название "-", и тут есть вероятность небольшой путаницы. Из этой ситуации можно выйти элегантным образом, явно указывая bash-у, что это файл, а не stdin:

$ cat ./-
Wow, very strange! Such pipy!

Где вместо точки интерпретатор подставляет текущую директорию. Естественно, можно просто указать полный путь — например, cat /home/andrey/-.

Та же самая техника применяется в тех случаях, когда bash должен отличить название файла от опций, например, ./-e будет рассматриваться именно как название файла -e, а не как опция -e.

К слову, первый пример с конвейером можно реализовать немного по-другому:

$ diff requirements.txt <(pip freeze)
3c3
< django-extensions==1.7.1
---
> django-extensions==1.7.4

Здесь при выполнении интерпретатором сначала «раскрываются скобки», а потом вывод передается по конвейеру в левую часть команды.

Кстати, через конвейеры удобно сравнивать вывод команд и/или файлы не только локальные, но и удаленные. Например, сравнить два файла (локальный и удаленный) можно примерно так:

$ diff requirements.txt <(ssh -A user@host.com "cat /www/project/requirements.txt")

Здесь мы подключаемся к удаленному серверу (естественно, все это должно быть настроено заранее), там выводим содержимое requirements.txt и через конвейер сравниваем это с аналогичным локальным файлом.

Пока комментариев нет, будь первым!


В разделах интернет, кулинария и искусство
Андрей Баксаляр  :: 29 авг 2016, в 03:21

Все, что я хочу сказать по поводу этого видео:

  1. Японцы все еще ненормальные!
  2. Я хочу иметь столько свободного времени!
  3. Какого хрена я смотрю это видео в 3 ночи и где я его вообще откопал?

Пока комментариев нет, будь первым!


В разделах юмор и жизнь
Андрей Баксаляр  :: 11 авг 2016, в 03:46

Немного освежим память классикой баяностроения:

Don't work hard, work intelligent

Ну… или если выйти за рамки еще немного дальше, то:

Don't work hard, work intelligent

Пока комментариев нет, будь первым!


В разделах окружение и будущее
Андрей Баксаляр  :: 31 июл 2016, в 22:24

Здесь даже описывать ничего не нужно. Нужно просто листать и наслаждаться:

Бетонные клетки

Бетонные клетки

Величие и ужас человеческих термитников/ульев/муравейников.

Читать далее »


В разделах программирование и софт
Андрей Баксаляр  :: 20 июл 2016, в 04:58

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

Нечитаемый JSON

И это еще в лучшем случае, т.к. здесь иерархия не такая ветвистая и мало узлов. Бывают случаи, где вывод совершенно нечитаем человеком. И вот в таких случаях можно использовать какой-то инструмент для того, чтобы «причесать JSON» (еще это называют термином pretty print).

Один из нескольких вариантов — замечательная утилита jq, делающая JSON вполне удобочитаемым и визуально структурированным:

Легко читаемый JSON в консоли

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

Вывод отдельной ветки иерархии JSON при помощи jq

В данном примере мы попросили вывести jq лишь необходимую часть JSON, а именно — раздел weather со всем содержимым. Можно фильтровать и дальше по дереву. Например, jq .person.name.surname.

Информация об установке (например, в Ubuntu jq уже есть в репозитариях — sudo apt install jq) и примеры фильтров доступны на официальном сайте jq.


В разделах технологии, наука и общество
Андрей Баксаляр  :: 26 июн 2016, в 13:32

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

Сим играет в шахматы со смертью

Так к чему это я все? Жду не дождусь, когда нейронки доберутся до «симуляторов жизни», например, до Sims! Конечно, перед этим в Sims было бы неплохо добавить взятки, несовершенство законов, коррупцию, семейные кланы, религии и секты, человеческую глупость, отмывание денег, воровство, фальшивые диссертации и прочие документы, доработать такую составляющую, как понты, добавить проституцию и сутенерство, возможность собирать компромат и продавать/принимать наркоту, а также надо бы увеличить цену добычи новых знаний (там все слишком уж легко сделано — потусовался у книжного шкафчика, и поднял скилл за вечер). Чтобы больше приблизить идеализированный мир к настоящему. Ну, к счастью, такие немаловажные факторы, как неугомонная социализация и неуемное спаривание уже есть.

И вот, когда нейронка прогонит пару миллиардов игровых итераций, партий под названием «жизнь», было бы очень интересно посмотреть на добытые дуболомной машинной рутиной рецепты достижения топовых показателей в виртуальной жизни. Думаю, они нас слегка шокируют своей необычностью (или, может, как раз наоборот, одиозной обыденностью?). В любом случае, челюсть у нас гарантированно отвиснет.


В разделе юмор
Андрей Баксаляр  :: 15 июн 2016, в 20:21

В коллапсе цивилизации обязательно будет виновата какая-то подобная хрень, тут к гадалке не ходи. ;)


В разделах юмор, интернет и политика
Андрей Баксаляр  :: 12 июн 2016, в 06:33

Наверняка Дмитрий Анатольевич Медведев уже жалеет, что ведет твиттер. Любой из его последних постов там имеет совершенно фееричные комментарии. Особенно после его меметичного выступления в Крыму. И продолжение постинга «как ни в чем не бывало» без возможности фильтровать адскую «обратную связь» выглядит довольно комично. Хотелось выглядеть модным, прогрессивным и актуальным, но аукнулось в итоге.

Твиты медведева и комментарии к ним


В разделах технологии, дизайн и железо
Андрей Баксаляр  :: 10 июн 2016, в 09:16

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

Почему все микросхемы имеют черный корпус?

И да, действительно, почему пластиковый корпус практически всех микросхем именно черный? Почему не делают (да просто веселья и дизайна ради, скажем), микросхемы, корпус которых имел бы красный, зеленый или серо-буро-малиновый цвет?

Почему все микросхемы имеют черный корпус?

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

Почему все микросхемы имеют черный корпус?

И ты, Денди!

Если попытаться вспомнить, когда в последний раз видел микросхемы другого цвета, первое что приходит в голову — центральные процессоры с металлической крышкой, в которых выбор материала теплоснимателя обусловлен высокой рабочей температурой чипа. Еще вспоминаются первые интегральные схемы Intel, выполненные в белом керамическом корпусе, а также коричневые микросхемы из советского компьютера, который я ковырял в радиокружке. ;)

Почему все микросхемы имеют черный корпус?

Ранние ИС от Intel

Почему все микросхемы имеют черный корпус?

В СССР делали и такие красивые ИС в доширачном стиле

Почему все микросхемы имеют черный корпус?

Гламурные микросхемы Эльбруса-2

Почему все микросхемы имеют черный корпус?

Те самые коричневые корпуса советских микросхем

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

  1. Пластик черного цвета помогает быстрее рассеивать тепло.

  2. «Углерод в черном материале упаковки микросхем позволяет защитить микросхемы от воздействия ультрафиолетового излучения, провоцирующего появление ошибок» — полупроводниковые элементы чувствительны к УФ. Например, те же фототранзисторы — это обычные транзисторы с частично открытым для света корпусом. Поэтому нетрудно представить, что будет при попадании света в сложную интегральную схему, вмещающую миллион-другой транзисторов…

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

  3. «Традиционность» черного цвета корпуса могли породить военные станадрты, обязывающие наносить четкую маркировку (белым по черному, например), которая будет видна даже после использования техники в стрессовых ситуациях (ссылаются, например, на стандарт MIL-STD-883 — метод 2009).

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

Войти через...


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

Популярное


Шоу Дружко 1 май, в 11:16

Пара иллюстраций от Томми Уошбуша 30 апр, в 12:35

По США на товарняках 2 апр, в 14:12

Новое Оно на подходе 30 мар, в 15:45

Пообщался со Стивом Джобсом 10 апр, в 15:41

Соациализируемся


Также найти меня можно в других злачных местах:

Все еще использую электронную почту:
andreybaksalyar@ya.ru