суббота, 27 июня 2015 г.

Трудности оглавления в современных редакторах документов


Надо сверстать документ (курсовую работу)

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

Ну думаю, все. Теперь буду фигачить курсовые в markdown и преобразовывать их в удобный для просмотра и печати html. Но тут потребовалась еще одна фича - оглавление. Ну это думаю просто - напишу скриптик (или в интернетиках найду), который пройдется по древу документа и найдет в нем все заголовки и выведет их в стиле.

HEADER1
  header2
  header2
    header3
 
Но все рушится одной маленькой проблемой. Не знаю что на самом деле указано в ГОСТе, но в методических рекомендациях к выполнению работы сказано, что в оглавлении около каждого заголовка должен быть указан номер страницы.
И джаваскриптом этот номер страницы никак не вытащить - он просто не знает в какую страницу попадет заголовок при печати.

Понятное дело, html ориентирован на веб, и со всеми его наворотами к печати не предназначен. И хоть в лепешку разбейся, полноценной верстки документов в нем не добъешься.

Позже всплыла еще одна проблема - невозможно добавить что либо к футеру и хердэру каждой страницы при печати. И их туда автоматически пришивает браузер при печати. И у тебя есть выбор - либо печатаешь без номеров страниц вообще, либо с номерами страниц и дополнительной ненужной хренью, типа url страницы, откуда печатается документ (C://html/...../doc.html), дата печати, заголовок страницы.


Альтернативные редакторы

Ну ладно, получается у нас программная многоножка. Печатаем документ в удобном тебе редакторе в формате markdown, преобразуем в html, а когда хотим сдать документ оформленный по всем ГОСТам - копируем его в какой нибудь Google Docs или Word, оформляем оглавление и нумерацию страниц, печатаем.

Google docs 

Начнем с того что он жутко тормозной и с простейшим документом на 30 страниц на i5 macbook air ворочается кое как. Но это беда всех крупных веб приложений.
И первый наш претендент с оглавлением тоже не справляется. Просто рисует список заголовков, что я сам спокойно делал на чистом js.

Microsoft office online. 

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

iCloud office online (pages)

Также делать оглавление не умеет. Кнопок в нем мало, перекликав все кнопки, ничего похожего на создание оглавление не нашел. И в интернете тоже. Десктопную версию pages ставить не стал. Может она и умеет.

Word mobile preview. 

Уж не знаю, почему они назвали его mobile - ставится он сейчас бесплатно на windows 10 и обладает немножко урезанным функционалом, но при этом очень быстро работает. Кнопки "составить оглавление" обнаружено не было. 

Решение

Остается два варианта - купить полноценный microsoft word (или воспользоваться триалом)
Либо составлять оглавление вручную.

Может я чего то не знаю и существуют простые способы автоматического составления оглавления. Но эти способы очень хорошо запрятаны, что даже после некоторого ресерча на эту тему, эффективного решения найдено не было.
Есть еще всякие open source офисы, но когда я их в последний раз трогал палкой, это была просто куча глючащего кода, которая не могла корректно открыть или сохранить файл в doc формате. Может быть сейчас в них уже можно работать.
Есть еще всякие tex/latex, но у меня нету нескольких свободных месяцев для того, чтобы научиться работе с этим языком.

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

пятница, 26 июня 2015 г.

Косяки android studio

Ставлю андроид студию 1.2.2
Создаю стандартный "hello world" проект
Пытаюсь собрать его, вылезает ошибка

Error:Invalid Gradle JDK configuration found. <a href='#open_external_system_settings'>Open Gradle Settings</a>
Platform SDK does not point to valid JDK (C:/Program Files/Java/jdk1.8.0_25)

Что такое Gradle, я немножечко представляю, но вот почему он не может найти JDK нужной версии, и где вообще этот JDK можно выставить - понятия не имею.

Покопавшись в манах, еще находится информация, что для работы Android Studio, потребуется свежая версия JDK, версии не младше 1.6. У меня уже вроде 1.7 стоит, а он ругается. Как странно, что такая умная IDE, как IDEA, не способна сама докачать все что ей требуется для корректной работы.

Советуется проверить работу команды javac -version. Команда естественно не работает, а чтобы заработало, надо опять шаманствовать. То ли несамостоятельную java в пути прописать, то ли какой другой SDK установить.

Лезем в developer.android.com, натыкаемся на совет установить нужные SDK с помощью
"From Android Studio, select Tools > Android > SDK Manager"
Но, как ни странно, во вкладочке Tools, никакой вкладки Android нету.
Ну ничего, SDK Manager можно найти произведя поиск по диску на предмет "SDK Manager.exe"
SDK Manager находится таким, немножечко странным образом.
Но в нем нельзя установить ничего полезного, что помогло бы Gradle.

Уже отчаявшись, решаю пройти весь путь сначала и скачиваю последнюю версию андроид студии 1.2.2
Устанавливаю, заново скачиваются всякие SDK и о чудо, все начало компилироваться!

Далее включаю немного странным способом дебаг на телефоне (об устройстве и ткнуть пять раз на номер сборки)
Собираюсь и приложение появляется на экране устройства!

Вот такие шаманские действия частенько приходится производить разработчику.



воскресенье, 21 июня 2015 г.


Попытки скомпилировать TressFX. Наткнулся я значит, на замечательную разработку от AMD - TressFX. Скачиваем TressFX 2.0, запускаем демку - работает офигительно быстро и красиво. Пытаемся скомпилировать - ошибка:
fatal error C1083: Не удается открыть файл включение: commctrl.h: No such file or directory
Видим что TressFx собран на 2012 студии. Качаем 2012 студию. Заодно ставим AMD SDK, может поможет. Находим на сайте TressFX 2.2, что тоже неплохо. Компилируем - о чудо, компилируется! Но при запуске выдает ошибку "Failed Creating the Direct3D device (D3D)" D3D - значит что-то с директиксом. Вариантов нету, надо директиксы обновлять. Но обновления не помогают, ошибка не дает запустить. Ошибка не гуглится, а в дебри плюсового кода лесть как то страшно.

Trinus VR + Android + Fibrum VR

Если у вас есть хороший телефон на android и немного лишних денег и желание опробовать виртуальную реальность, вам может помочь

Качаем и ставим клиент и сервер
http://trinusvr.com/download/

У меня самсунг вместо телефона, значит мне еще надо установить дополнительные USB драйвера - с помощью программы Smart Switch PC

Далее заходим в настройки телефона
Выбираем пункт "модем и мобильная точка доступа"
И ставим галочку в чекбокс "USB-модем"

Далее запускаем сервер и клиент на телефоне и нажимаем большие зеленые кнопки так, чтобы они превратились в красные. Если все сделано правильно, картинка начнет передаваться с компа на телефон.

Далее надо программу, которая будет модифицировать картинку из игр и преобразовывать ее в 3D. Один из вариантов таких программ - TriDef

Игры будем запускать с оконном режиме и особом разрешении экрана. У меня телефон galaxy s3 с разрешением 1280×720. Настройки ставим примерно такие. Сенсор отключаю, так как эмуляция мыши работает хреново. Можно было бы попробовать какой нибудь freetrack, но игра должна его поддерживать, а игр с поддержкой его я не знаю




В программе TriDef добавляем желаемую игр, запускаем ее через нее. (при установке TriDef выбираем 3D side by side). Картинка через Trinus передается на телефон, получаем бюджетную версию Oculus rift.

Из игр опробовал в таком виде Skyrim и World of warcraft, обе выглядят впечатляюще. Но совершенно неиграбельно. Во первых задержки при передаче на устройство, даже при usb 3.0 и очень мощных видеокартках довольно высоки. Для простого перемещения по локациям и любования видами этого хватает. Но вот в битвах становится уже совсем некомфортно.

Вторая очень важная проблема - интерфейс игр совершенно не предназначен для VR и обычно слишком мелкий или находится по краям экрана (которые немного обрезаются)

Хорошо подходит связка для просмотра фильмов в 3D.

Kinect

Захотелось значит поиграться с кинектом.
Подключаем kinect for xbox one 2.0 через переходничек за 100$ к современному компу на windows8.

Не работает

Ну мы не отчаиваемся, скачиваем  утилиту проверяющую совместимость компа с кинектом

Оопс! Программа пишет, что подходящих USB не обнаружено. А у нас же целых два USB3.0!
И современная материнка ASUS SABERTOOTH 990FX R2.0

 Как оказалось на ней стоит контроллер ASMedia ASM1042, которой не поддерживается (точнее не поддерживается вся серия контроллеров ASMedia 104x Controller).

Что делать? Либо ставить PCI-E usb плату подходящего производителя. Или использовать другой комп с другой материнкой.