Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Почему в sublime text перестало работать выделение нескольких строк при нажатии на колесико мыши?

Лучший ответ:
Sublime Text 3 Buld 3114. Выделение работает. Возможно это один из установленных плагинов сломал эту фичу. Попробуй скачать portable версию и проверить. https://www.sublimetext.com/3

Худший ответ:
Выделять также можно при помощи сочетаний Option/Alt+Shift+стрелки, но да, с мышью выйдет побыстрее.
Что делать, если перестала работать какая-то из горячих клавиш клавиатуры, я подробно расписал здесь. На пункты данного ответа-инструкции буду ссылаться в дальнейшем. 
Отличие Вашего случая от описанного там состоит, что проблемы в хоткеях мыши, а не клавиатуры. Действиями, описанными в п.4 определяете команду, которая вызывается нажатием средней кнопки мыши. По умолчанию должно быть drag_select с дополнительной информацией в {фигурных скобках}, вроде такой:command: drag_select {"event": {"button": 1, "x": 915.5, "y": 840.5}}
У Вас выйдет не drag_select, а что-то другое. Меняем сочетание клавиш в плагине, который забрал себе кнопку мыши, — как это делается, см. опять же п.4.
Что делать, если по имени команды никак не получается определить плагин, её использующий. Как в пункте 2 не получится. Сначала Preferences → Browse Packages... → User → в этой папке создаём файл Default (OSX).sublime-mousemap или Default (Linux).sublime-mousemap или Default (Windows).sublime-mousemap в зависимости от Вашей операционной системы.
Затем потребуется установка плагина PackageResourceViewer. После неё Ctrl+Shift+P → PackageResourceViewer: Open Resource (пользуясь fuzzy-поиском достаточно написать prv) → Default → Default (OSX).sublime-mousemap или Default (Linux).sublime-mousemap или Default (Windows).sublime-mousemap в зависимости от Вашей операционной системы. В открывшемся файле смотрим на строки, содержащие "press_command": "drag_select". мне неизвестно, не работает ли у Вас средняя кнопка мыши только когда зажата без других клавиш или же в различных сочетаниях с ней тоже проблемы, может потребоваться скопировать в файл, который мы создали абзацем выше, только{
	"button": "button1", "count": 1,
	"press_command": "drag_select"
},
или же все ограниченные {фигурными скобками} блоки, содержащие drag select. Будьте внимательны с синтаксисом JSON, не опечатывайтесь в [квадратных], {фигурных} скобках и запятых. Лично я себе скопировал весь файл — нечего плагинам менять дефолтные настройки мыши.
Должно заработать.
Спасибо.
Вопрос: Как задать размер массива через аргументы функции?

Лучший ответ:
Выделить память динамически:int * tempArray = malloc(sizeof(int) * n * m);
Только потом не забывайте ее освобождать.

Худший ответ:
В памяти массив все равно одномерный будет, хоть тресни ;) N-мерность нужна для удобства доступа.
Вопрос: Как в VBA дату преобразовать в количество часов?

Лучший ответ:
Может хватит формулы?
Вообще дата в екселе - это дробное число, где целая часть - количество дней от какой-то даты, а дробная - количество секунд или мл.сек. В общем если взять целую часть и умножить на 24 получится количество часов.
Для VBA есть функция DateDiff, которая возвращает разницу между двумя датами в заданных интервалах. Например, чтобы получить разницу в часах между двумя датами:
DateDiff("h", date1, date2)

Худший ответ:
Пусть с опозданием НО...
1. имеем 2 ячейки (А1 и В1) в которых содержатся даты
2. в С1 пишем формулу =В1-А1
3. по ячейке С1 ПКМ-Формат Ячеек - Время - выбираем формат вида 35:00:00
Profit
Вопрос: Как в Yii2 checkbox сделать checked?

Лучший ответ:
Ребята разобрался нужно атрибут 'checked ' с лишним пробелом 
field($model, 'serv1')->checkbox([ 'value' => '1', 'checked ' => true])->label('');?>

Худший ответ:
Если флажок НЕ нужен по умолчанию:...
<?php
$page->text = 'я принимаю пользовательское соглашение';
?>
...
<?=$form->field($model, 'serv1')->checkbox(['uncheck' => $page->text, 'value' => $page->text, 'label' => '$page->text]); ?>
если флажёк НУЖЕН:
--<?=$form->field($model, 'serv1')->checkbox(['checked'=>false])?>
Либо как  сказал Максим Федоров , берём и объявляем в экшене в контроллере.
Вопрос: WordPress + Gulp + PHPStrorm как все запустить?

Лучший ответ:
1) ставишь WP
2) настраиваешь на него Gulp
3) открываешь все это в шторме...
4) сливаешь это все в гит))
в чем трабла? по отдельности есть маны в гугле

Худший ответ:
В PHPStrom есть поддержка и wp, и gulp.
Вопрос: «Философия» всех языков программирования. Миф или реальность?

Лучший ответ:
Философия одна и таже, синтаксис разный. Если дорос до уровня "работаю и получаю деньги" на одном языке программирования то выучить другой не проблема.

Худший ответ:

Действительно ли при изучении одного языка программирования появляется возможность с лёгкостью изучить другой язык? Какие подводные камни могут при этом быть?
нет не появляется
обычно на понятиях "переменная" и "массив" все сходства и заканчиваются
то что вы имеете в виду называется императивное программирование 
и с этой точки зрения большинство языков одинаковые
а в реальности же у каждого языка как раз таки есть своя философия, благодаря которой он сумел найти и занять в этом мире свою нишу. и эту философию постигать бывает довольно сложно, особенно имея серьезный багаж в каком-то другом направлении.
Мозг заточен уже под конкретную философию и когда ты пытаешься ее же переприменить(мозг автоматически это делает) к другому - это, бывает, заканчивается сильным батхертом 
Но не так все печально
тут на помощь приходит опыт который не пропьешь
и он с другой стороны помогает быстрее раздуплиться с тупыми новичковскими проблемами типа запуска, сборки, управление зависимостями, дебаг, деплой, профилирование и все такое
и обычно можно посвятить себя целиком и полностью самому языку (или философии языка если угодно)
Вопрос: Много OR и AND в запросе ActiveRecord?

Лучший ответ:
В sum можно передать yii\db\Expression
Не пробовал, но по идее можно так:$exp= new yii\db\Expression('SUM(score1) as score1, SUM(score2) as score2');
$score1 = Matches::find()->sum($exp);

Худший ответ:
как-то так$scores = Matches::find()
->asArray()
->where(['tour_id' => $matche->tour_id, 'part' => $part])
->andWhere(['user1' => $matche->user1, 'user2' => $matche->user2])
->orWhere(['user1' => $matche->user2, 'user2' => $matche->user1])
->select([new Expression('sum(score1) sum_score1'),new Expression('sum(score2) sum_score2')])
->one();
хотя лучше для этой цели взять просто QueryBuilder, а не AR
Вопрос: Какие есть программы для контроля компьютерного класса?

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



Худший ответ:
www.litemanager.ru/produkts/litemanagerfree
Но или не делайте этого, или доведите до сведения учеников, иначе поедете по 272 статье.
Вопрос: Зачем рисовать с помощью CSS?

Лучший ответ:
В простых случаях да, бывает оправдано. Грубо говоря, если мне нужен кубик, треугольничек или кружок - вполне хорошая практика сделать это на CSS.
Но сейчас нередко наблюдается перегибание палки, когда люди пытаются рисовать на CSS сложные композиции, затейливо комбинируя блоки и трансформации. Это прикольно и интересно со спортивной точки зрения, но на продакшене я бы отбивал за это руки. Это плохо читается, сложно модифицируется и ест больше памяти.
В общем, нет тут однозначного ответа. Использовать можно, но нельзя забывать о чувстве меры.

Худший ответ:
Для общего развития. Вы же курсы смотрите. Целесообразность там на 10м месте.
Вопрос: Как отследить на каких доменах используется моя CMS?

Лучший ответ:
Детский сад, штаны на лямках.
Наивные мечтатели задают этот вопрос уже много лет, но ответ за это время не изменился:
1. Чтобы отсечь нелицензионное использование - никак не отследить. Нулленая версия твоего горе-движка появится в интернете через день после релиза, у которой будет оторваны все проверялки, какие ты только сможешь придумать.
2. Продавать надо не программу а сервис. Размещай свою платформу на своем же сервере и бере помесячную плату за использование. Никаких других вариантов отслеживать использование нет ,и быть не может

Худший ответ:
делайте запрос php - но только по понедельникам с 8 до 9 (день недели и время определяется по домену).
Вопрос: Почему скрипт выпуска сертификата LetsEncrypt не находит сайт?

Лучший ответ:
Есть у меня подозрение что вы не то пишите.
При выходе в панель у вас должна быть аналогичная картинка------------------------------------------------------------------------------------
SiteName        | dbName          |       Type | S | Certificate          | Key
------------------------------------------------------------------------------------
default         | sitemanager0    |     kernel | N |  |
------------------------------------------------------------------------------------
И при указании Enter site name (default): xxxxxxxxxx.com
Вы должны писать то, что находится в первом столбце. Т.е. не url-сайта, а вот это вот "default" или что у вас там.

Худший ответ:
проверь DNS
resolv.conf подправь если что
Вопрос: Как относитесь к курсам на Stepik?

Лучший ответ:
Отличный сервис, очень много курсов от крутых отечественных преподавателей.

Худший ответ:
Отличные курсы.
Вопрос: Какую базу выбрать под большое кол-во данных?

Лучший ответ:
Postgresql с вероятностью 99% потянет, что бы вы там ни напридумывали

Худший ответ:
Для того, что бы ответить на этот вопрос надо понимать как эти данные будут использоваться. 
Я бы не сказал, что + 3Гб в год это большое количество данных. Сколько это записей? Как данные будут запрашиваться?
Вопрос: Реально ли держать сервер у себя дома?

Лучший ответ:
Примите во внимание и обдумайте:
1) Посчитайте затраты на электричество
2) Свет отрубают на 20 минут, в это время скорее всего интернета не будет, упс не спасет, т.к. хаб провайдера на доме все равно обесточен.
3) С трафиком в ~1 тб в сутки получается ммм... ~0.7 Gb в минуту. Больше напяжет, конечно, количество одновременных подключений, нежели нехватка канала.
4) Если вы живете один то это гуд, бо шум от нормального сервака весьма ощутимый.
5) Организация быстрой защиты от ддос затруднена - все таки смена ип в пару минут укладываться не будет, да и невозможно будет отрубить атакующие хосты налету на апноде. А канал ляжет просто мгновенно, у вас же нет резерва откуда взять по каналу.
Вывод: если это сервачек онлайн игрушки приносящий некий доход покрывающий расход и неудобства, при этом нет критичности в пропадании онлайна на полчаса - сутки, то норм, если клиенты не станут вас искать с целью линчевать, знаю я таких геймеров, подсевших ). 
Если это сервер обслуживающий что-либо серьезное, аля бизнес приложения и имеющий серьезную клиентуру - имхо выйдет себе дороже, сидите в облаке.

Худший ответ:
Вот ребята собрали маленький датацентр в квартире: hsdn.org
Можете посмотреть как это все развивалось: gallery.hsdn.org/
Как собирали серверную зону: sobek.su/Media/ файл 	"HSDN Server Room Construction.avi"
Вопрос: Создавать классы для каждого тега, который хочешь стилизовать??

Лучший ответ:
БЭМ методологию посмотрите.или же задать стили, идя по цепочки от родителя до самого элемента
Это каскад, на то они и называются каскадные таблицы стилей.
Каскад мешает использовать элементы повторно, я выдерну кнопку и воткну её в другое место. Там либо нет каскада либо он другой и кнопка выглядит по другому. Если же у неё есть отдельный класс, это расширяет мои возможности повторного использования кода с минимум затрат времени на его редактирование.

Худший ответ:
смотря по какой методологии верстаешь. к примеру у https://ru.bem.info/ также. у каждого элемента должен быть класс и в ксс не должно быть обращений к тегу. только к классу.
Вопрос: Кто в 2016 году использует разрешение 1280 и 1024px на десктопах?

Лучший ответ:
Это те кто не гамится и в основном работает с текстом, например я )
Если следовать вашей логике, то к 2020 году мониторы обязаны быть у всех во всю стену и сенсорные. Проблема с ожирением будет побеждена... попробуйте попрыгать у такого монитора целый день ))

Худший ответ:
Незнаю как метрика но:
- Да это допотопные мониторы (как время летит...помню 1024x768 считался мейнстримом)
- многие понижают разрешение потому что "мелко" и готовы ради этого терпеть размытую картинку на LCD
Вопрос: Как уменьшить потерю пакетов?

Лучший ответ:
Делайте трассировку и ищите на каком хопе потери, затем обратитесь в саппорт владельца с просьбой разобраться

Худший ответ:
Я думаю арендовать свой сервер в Канаде и установить на нём [какое-то] ПО, которое поможет создать канал без потерь пакетов.
Но какое ПО? Подскажите, пожалуйста.  Нет такого ПО. Сама сеть ещё до интернета строилась с обязательным учётом потерь пакетов. Пакеты потерь - это норма. Главное каков уровень этих потерь.
Вопрос: Что ограничивает количество одновременных разговоров через SIP?

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

Худший ответ:
Реализовывал подобную схему, но с виртуальной АТС от дом.ру
Дом.ру мне выдавали 6 каналов, я подключал их в качестве транков на свой астер, а уже к астеру подключал всех внутренних абонентов. Внутренних абонентов было ~30, при этом 6 внешних линий хватало.
По Вашей ситуации: Как именно это организованно у ТТК я не знаю, но, скорее всего, ограничения так же вводятся на стороне провайдера.
Если Вы имеете ввиду, что хотите полностью отказаться от виртуальной АТС и взять только SIP-номер и напрямую подключить его к астеру, то ограничения на сам номер так же делаются на стороне провайдера
Вопрос: Нужна ли программная избыточность, если есть RAID 1?

Лучший ответ:
Избыточности много не бывает. Если можете, храните

Худший ответ:
Ни один из известных типов технологии RAID (разве что только RAIDZ при соблюдении ряда условий) не даёт гарантии целостности и сохранности данных.
Вопрос: RxJava + Retrofit как асинхронно выполнить серию последовательных запросов?

Лучший ответ:
Observable.fromCallable {
    for (i in 1..10000) {
        load_4to_nado(i) 
    }
}
можно как-то так)

Худший ответ:
а точно последовательно надо?
так не взлетит?
Observable result
for(page = 0; page < total/lim; page++){
result.concat....(yuoyapi.apicall.(page))
}
Вопрос: Как убрать shop и product-categoty из URL Woocommerce?

Лучший ответ:
Вообще сильно не рекомендуют  https://docs.woocommerce.com/document/removing-pro...
Но если оооочень  хочется, то действуйте./**
	 * Для термина  - product_cat
	 */
	add_filter( 'request', 'change_requerst_vars_for_product_cat' );
	add_filter( 'term_link', 'term_link_filter', 10, 3 );

	/**
	 * Для типа постов - product
	 */
	add_filter( 'post_type_link', 'wpp_remove_slug', 10, 3 );
	add_action( 'pre_get_posts', 'wpp_change_request' );

	function change_requerst_vars_for_product_cat($vars) {

		global $wpdb;
		if ( ! empty( $vars[ 'pagename' ] ) || ! empty( $vars[ 'category_name' ] ) || ! empty( $vars[ 'name' ] ) || ! empty( $vars[ 'attachment' ] ) ) {
			$slug   = ! empty( $vars[ 'pagename' ] ) ? $vars[ 'pagename' ] : ( ! empty( $vars[ 'name' ] ) ? $vars[ 'name' ] : ( ! empty( $vars[ 'category_name' ] ) ? $vars[ 'category_name' ] : $vars[ 'attachment' ] ) );
			$exists = $wpdb->get_var( $wpdb->prepare( "SELECT t.term_id FROM $wpdb->terms t LEFT JOIN $wpdb->term_taxonomy tt ON tt.term_id = t.term_id WHERE tt.taxonomy = 'product_cat' AND t.slug = %s", array( $slug ) ) );
			if ( $exists ) {
				$old_vars = $vars;
				$vars     = array( 'product_cat' => $slug );
				if ( ! empty( $old_vars[ 'paged' ] ) || ! empty( $old_vars[ 'page' ] ) ) {
					$vars[ 'paged' ] = ! empty( $old_vars[ 'paged' ] ) ? $old_vars[ 'paged' ] : $old_vars[ 'page' ];
				}
				if ( ! empty( $old_vars[ 'orderby' ] ) ) {
					$vars[ 'orderby' ] = $old_vars[ 'orderby' ];
				}
				if ( ! empty( $old_vars[ 'order' ] ) ) {
					$vars[ 'order' ] = $old_vars[ 'order' ];
				}
			}
		}

		return $vars;

	}
	
	function term_link_filter( $url, $term, $taxonomy ) {

		$url = str_replace( "/product-category/", "/", $url );
		return $url;

	}

	function wpp_remove_slug( $post_link, $post, $name ) {

		if ( 'product' != $post->post_type || 'publish' != $post->post_status ) {
			return $post_link;
		}
		$post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );

		return $post_link;

	}

	function wpp_change_request( $query ) {

		if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query[ 'page' ] ) ) {
			return;
		}
		if ( ! empty( $query->query[ 'name' ] ) ) {
			$query->set( 'post_type', array( 'post', 'product', 'page' ) );
		}

	}

Худший ответ:
Пробовали отредактировать пермалинки?
cld.wthms.co/186Rh/17uMcIWD
Вопрос: Откуда взять JS-объект для AJAX?

Лучший ответ:
var formData = {
    data1: 'data 1',
    dataN: 'data N',
}

btn.onmousedown  = function(e) {
    $.ajax({
        type: "POST",
        url: 'url', 
        dataType: 'json',
        data: formData,  // отравляемые данные
        success: function (data, textStatus, jqXHR) {
            //
        },
        error: function(xhr, status, error){
            //
        }
    });
};Чё-то это как-то нудно...
От нудных вещей никуда не деться. Смените деятельность на не нудную.

Худший ответ:
Заменитеdata: formData,
наdata: jQuery("#id_form").serialize(),
где id_form - это id вашей формы
Вопрос: Кем можно пойти работать после программиста?

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

Худший ответ:
1. А почему зрение то падает? Могу предположить ,что ты сидишь в очках или линзах которые тебе прописали перед компом. Только рецепт тебе давали когда ты смотрел на стену в 5 метрах от тебя. А ты смотришь на монитор в  50 см от тебя, а то и ближе. Этого делать нельзя для чтения вблизи тебе нужны другие очки/линзы меньшими диоптриями. 
2. Проводил исследование с расширенным зрачком? Есть спазм аккомодации?
Вопрос: Как с помощью PHP перенести содержимое таблицы из Oracle в MySQL?

Лучший ответ:
Подключить MySQL базу к Oracle через dblink, а потом в оракле:insert into my_table@linked_mysql_db
select * from my_table;
Я бы сначала попробовал так, а если не получится, уже можно попробовать поизвращаться.

Худший ответ:
Если не можете сделать через PHP, то можно сделать dblink в Oracle и из него писать в PHP. Другой вариант, это экспорт и импорт данных. Генерируете инсерты и вливаете в mysql. На мой взгляд, в данной ситуации лучше всего именно dblink.
Вопрос: Как объединить 2-3 системы на одной машине?

Лучший ответ:
Если работаете на Mac то Parallels то что вам нужно. Как виртуалка, только более интегрированная. В самом лютом случае можно открывать окна Windows на столе OS X

Худший ответ:
Только виртуалка в KVM или VirtualBox - ну, если заработает конечно, потому что виртуалки виртуальная видюха (хотя есть вариант с вторым монитором, второй видюхой и прямым ее пробросом в виртуалку). У меня прямой сейчас так работает винда для задач управления доменом через виндовые оснастки и прочего софта типа оутглюка. Правда памяти на компе должно быть как на двух - сколько нужно на линух и сколько на винду. Ну и понятное дело проц с аппаратной виртуализацией.
Вопрос: Хранение html разметки в файлах локализации?

Лучший ответ:
Нет.

Худший ответ:
Хорошо ли? Спорный вопрос, но насколько мне известно, другого варианта из коробки нет. Главное соблюдать 2 правила:
1. Избегать разметки как таковой (div, header и тому подобное) в файлах перевода. Ограничиваться inline-элементами форматирования, такими как strong, sub и тд. Если приходится вставлять большой кусок c более общими тегами, вероятно его стоит разбить на более мелкие фразы.
2. Не забывать выводить правильно с помощью {!! $string !!}
Вопрос: Как оптимизировать график работы на бирже?

Лучший ответ:
Какое самое оптимальное время для работы на бирже? вопрос из области SEO-продвижения.
Такое, при котором время Вашей реакции и конкуренция - уравновешены.
Хотите быстро искать работу -> простые проекты, но высокая конкуренция.
Хотите по-медленнее -> сложные проекты, где мало людей, которые могут их выполнить.Самый простой вариант "застолбить" (при ответах в проекты):
вникайте в задачу/проект и задавайте 4-5 вопросов заказчику по проекту: он поймёт, что Вы "погрузились" больше других в его проблему и после потраченного им времени  при ответе на Ваши вопросы, он 100 раз подумает: выбрать другого или дождаться общения с Вами, как с понимающим человеком (читай: знающим специалистом в данном проекте).

Худший ответ:
Сменить биржу на менее локальную.
Работать с Дальним востоком.
Вопрос: Как привлечь трафик на свой блог?

Лучший ответ:
Для начала сделать сайт нормальный. Тот, что есть на данный момент мягко говоря удручает. Ужасный ШГ. Розовые, уменьшающиеся рамочки при наведении на картинки (АААААААААААА!!!!) Какие то дурацкие теги-лейблы там же -   Uncategorized . Иконка самолетика на превью поста. Я думал это приглашение отправить что-то в телеграмм Дуровский. Мда. Меню в мобильной версии не работает или его просто нет? Зачем тогда появляется кнопка меню? Смесь управляющих элементов на английском с русским выглядит ужасно, надо либо трусы одеть, либо крестик снять. Моя Жизнь в США 
Видно от жизни в США начались проблемы с русским языком, зачем каждое слово с заглавной? 
Пробежался по статьям, стилистика на уровне сочинений:  "как я провел лето в деревне". Читать такое скучно. Если хочешь писать статьи ни о чем, просто о жизни и надеешься привлечь постоянных читателей у тебя есть только один шанс -- научится излагать свои мысли ясно, стебно и свежо, как например hueviebin1 в ЖЖ, который к слову завел за несколько лет огромную армию поклонников за счет одного стеба и хорошего юмора. Кстати, как он сам признавался писать такие статьи он научился на lurkomore, так что возможно будет не лишним потренироваться в написании тамошних статей.
P/S И закажи нормальный сайт фрилансерам, это недорого для новоявленного американца.

Худший ответ:
Писать действительно интересные вещи и проявлять активность в соцсетях и форумах (тематических и нет).
Привлекать посетителей вот так оставляя адрес блога не имеет особого смысла - мало кто пойдет (я точно не пойду) и почти никто не пойдет второй раз. Чтобы возвращались и приводили новых посетителей, нужен интересный и регулярно добавляемый контент.
Вопрос: Почему после запуска js кода не срабатывает медиа-запроc?

Лучший ответ:
Чтобы избежать проблем со специфичностью (а у инлайновых стилей специфичность больше), лучше добавляйте и убирайте элементам классы с помощью classList https://developer.mozilla.org/ru/docs/Web/API/Elem...
А для классов в стилях прописывайте нужные css правила. Возьмите это за правило и избавитесь от таких проблем в будущем.

Худший ответ:
Javascript и медиазапросы в CSS никак не связаны. Они работают независимо друг от друга. Почему думаете что причина в JS?
Вопрос: Как можно экспортировать данные из MySQL?

Лучший ответ:
Судя по тегу "python" вы хотите сделать это с помощью скрипта. Вам нужно изучить принципы работы с базами данных из Python (DB API) для получения данных и работу с библиотекой openpyxl для формирования документа Excel.

Худший ответ:
Можно вытащить данные а потом запихнуть их в xls без всяких промежуточных csv. Смотрите в сторону питоновского модуля xlwt.
А если без питона - то я для подобных вещей использую libreoffice под линуксом. Очень удобно, пишем/рисуем в мастере запрос к БД и потом просто драг-н-дроп в экселевский файл.
Вопрос: В наследство получил 70 GB картинок в 1 папке, раскиданы они по «подпапкам» — это вообще нормально?

Лучший ответ:
запаковать и слить архивом, можно разбить на куски по 1-2 гига.
а вообще - не сказать что это бест практис, но до конкретного файла система по пути все равно достучиться мгновенно. Листинг получить долго, но в веб проектах обычно и не требуется листинг директорий.

Худший ответ:
раскиданы они по «подпапкам» 
Это нормально, ибо если 70GB картинок валялись в одной папке тормозил бы не только ssh но и сайт в целом.
У меня когда-то было такое, и я поступил следующим извращенским путем:
Перелопатил все новости у которых есть ссылка на картинку, и через file_get_contents сохранял куда надо + изменял ссылку на картинку в дб