понедельник, 30 марта 2015 г.

Cygwin, groff, cyrillic (russian) fonts.

So, the aim is to get pretty-printed pdf, created with groff + ghostscript under Сygwin environment.

What we have in certain:
  • cygwin, more precisely - cygwin64 under Windows 8.1
  • groff 1.22.2, coming with cygwin
  • ghostscript 9.15 (solely to make PDF from PostScript), coming with cygwin
Here are the problems step by step:

I. To make groff create acceptable doc with cyrillic characters in it, we should get to groff input something very one-byte-sized, for example, in KOI8-R encoding for Russian text. And as standart preparation, we need to prepare groff-input with preconv. And so we go:
$ cat $some_file | iconv -f UTF-8 -t KOI8-R | preconv -e KOI8-R | groff $params
First occured problem was that preconv did not support KOI8-R and he told this something like "unsupported encoding" or alike (I did not exactly remember).
Appeared, that preconv was build (was run) without iconv support (you can see it if you run "preconv -v"). And it happened because when installing groff there were not iconv-devel package installed in cygwin.
So, first problem was solved by installing iconv-devel and then reinstalling groff.

Now,

$ iconv -f UTF-8 -t koi8-r examples/example.tr | preconv -e KOI8-R > output.preconv

should work quite well.


II. Then we need to pipe preconv output to groff and should fill those $params from example above.

$ iconv -f UTF-8 -t koi8-r examples/example.tr | preconv -e KOI8-R | groff -Tps -mru > output.ps

Basically we do not need to have lots of params as it will be in real cases. -Tps says to generate PostScript output, and -mru asks to preprocess with ru.tmac macros file.

Okay, in most cases groff will say that he can't find ru.tmac. (troff: fatal error: can't find macro file ru). That is because he do not have it =). But I do have! The only thing to do when you find tmac you need is to put it in proper directory, for example /usr/share/groff/site-tmac/



III. Ok, let me see for result now (iconv -f UTF-8 -t koi8-r examples/example.tr | preconv -e KOI8-R | groff -Tps -mru > output.ps):

:33: warning: can't find special character `u0424'
:33: warning: can't find special character `u0430'
:33: warning: can't find special character `u043C'
[ and so on ]

It means, that groff does not understand russian symbols. That is very pity. More formally, groff does not have metrics for russian fonts. But I do have! I have metrics for Times fonts and I need to put them into /usr/share/groff/current/font/devps, replacing already existing. My metrics are in devps.tar attach.

Now, command

$ iconv -f UTF-8 -t koi8-r examples/example.tr | preconv -e KOI8-R | groff -Tps -mru > output.ps

should finish silently (in UNIX that means that everything is very OK).


IV. Now we have a output.ps - PostScript file. So, a lot of applications are capable of dealing with postscript files - printing, viewing, converting. We will try to create PDF file from that output.ps and will use quite native GhostScript toolchain.

First lets try basic ps2pdf utility (which is just wrapping over gs with several parameters):

 # looks easily to understand
 $ mv output.ps input.ps

 $ ps2pdf input.ps output.pdf

I have it finished with no messages (quite Ok?, hm). Lets try to open PDF with your loved pdf-viewer.
=(, no any russian symbols are visible.

Then I spent a lot of time to discover the root of the problem. I think some details would be good.

Ghostscript is supplied with set of "builtin" fonts. Many popular fonts (Times, for example) are just mapped to those builtin ones. But there is the problem: those fonts basically does not support cyrillic glyphs.
¡No problema!: just install ghostscript-fonts-std package and we have standard cyrrilic fonts available for Ghostscript. But this works ok on "good" platforms and not very good in Cygwin.
Moreover, just installing fonts is not enough and will work only if you delete "builtin" font-files from ghostscript distribution. But this is not very good way (will affect your karma).

How it happens on, for example, Debian: when installing ghostscript-fonts-std, package also creates /etc/fontmap.d/ghostscript/10gsfonts.conf file, which contains Fontmap content for fonts in /usr/share/fonts/Type1/ (path may slightly differ - check yourself).
During install, package runs update-gsfontmap, which copies content of all /etc/fontmap.d/*.conf into single /var/lib/ghostscript/Fontmap, and this file, in order, is looked up by Ghostscript (that is not the only file looked up by Ghostscript, but it is one of the first and better to make Ghostscript find what it needs just now).
Problem is that in Cygwin 10gsfonts.conf is not created. Moreover, Cygwin does not have update-gsfontmap utility. It is pity.

To solve issue I created correct Fontmap for files in /usr/share/fonts/Type1/ and put it in this directory. I append this Fontmap file here, but it contains absolute paths, so it may need correction.

After that,

$ ps2pdf input.ps output.pdf

works like a charm. PDF is finally cooked.


Mission complete. World is saved.

Some files I mentioned:
Cyrrilic font metrics
Fontmap
example.tr (example file for groff)
input.ps (resulting post-script file)
output.pdf (resulting pdf)



среда, 18 июля 2012 г.

Disable AutoSlow Keys in gdm

Now it's Linux Mint Maya (-> Ubuntu -> Debian)

Sometimes during work slow key are suddenly on. That means, that to print a symbol you must hold on a keyboard button for a few seconds, it's a bit annoying. For the first few times it's not even annoying - it looks like keyboard is down.

So, the source of troubles is accessibility possibilities of Gnome Desktop Manager or, shortly, gdm. It wait while you hold shift button for more than 10 seconds and then enables slow keys. You can revert this process by holding shift button for more than 10 seconds again, but it's not as much interesting.

To disable accesibilities you can try:

1. GNOME: Press Alt+F2, enter gconf-editor. Navigate to /desktop/gnome/accessibility/keyboard, uncheck “enable” to disable all accessibility options.
it cames from here: http://dimedroll.com/linux/ubuntu-linux/disable-slow-keysasdf

2. gconftool-2 -s -t bool /apps/gdm/simple-greeter/settings-manager-plugins/a11y-keyboard/active true
it cames from here: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=657969



Both methods didn't help in my situation. So, I installed lightdm (sudo apt-get install lightdm) and made it default DM. Then reboot (not a best way, but fastest) and problem is gone.

понедельник, 16 июля 2012 г.

Making Huawei e171 to work

Now it's OpenSuSE 12.1 and usb 3g modem from greatly loved Huawei of E171 model.

1. This stick recognized as sd storage at first. To make it work we need usb_modeswitch (I see no other way). It can be taken here:
http://www.draisberghof.de/usb_modeswitch/

Usual makeinstalling and usb is recognized as modem! (Even without replugging). I got 4 /dev/ttyUSB*, where * in (0,1,2,3).

2. Now, we want to make it work without usb_modeswitch in order to take this USB to any beer-drinking-linux-friend without usb_modeswitch installed.

we need minicom program installed.

type "minicom -s" in terminal, com-terminal is up, enter port settings, press "A" (to enter device) and enter /dev/ttyUSB0 here. Save settings as dfl end exit, modem then should be initialized. It may even report "ERROR', this was not much problem for me.

Press "Ctrl-A-Z" and enable local echo.

Input "ati0", if reported - then connection is ok. If not - try /dev/ttyUSB1 (2,3), it may help.

By the way, you may try to unlock your modem (in fact, if it's not e171), but you should google for it.


 AT^CARDLOCK?

Will tell you if your modem locked or not:

^CARDLOCK: 2,10,0

"2" on first place means "unlocked"
"10" means - 10 tries to unlock.



So, back to work - our aim is to disable cdrom mode at all. This is done by:
AT^U2DIAG=0
or by 
at+zcdrun=8
or by 
AT+ZCDRUN=E


But, in fact, nothing of this works for E171.


Not a happy end, huh? I'm working to find out solution.


Upd.


Here we have another usefull info: http://forum.ubuntu.ru/index.php?topic=185146.0 , this gives us next commands:

AT^SETPORT?
- Shows current configuration

AT^GETPORTMODE
- Shows settings codes

AT^SETPORT="A1,A2;1,2,3,7,A1,A2"
- Sets default configuration. Use it on your own risk, better to substitute parameters for this command with output from 
AT^SETPORT? 

AT^SETPORT="A1,A2;1,2,3,7"
- Disables CD + SD

AT^SETPORT="A1,A2;1,2,3,A2"
- Disables NDIS and CDROM - only modem and SD are left

AT^SETPORT="A1,A2;1,2,3"
- Modem only

AT^SETPORT="A1,A2;2,7"
- Disable CD + SD + modem  in Win7, NDIS mode only left

AT^SETPORT="A1;2,7"
- CD + NDIS
It's sad, but this doesn't help too =). Working futher.

воскресенье, 15 июля 2012 г.

LaTeX Super Short manual

This is about how to start using LaTeX ASAP. I'm using Mint Linux (which is Ubuntu, which is Debian).

First, install. I will install TeXMaker editor to shorten WYSIWYG and it will install LaTeX from dependancies. So you got it, I think.
sudo apt-get install texmaker
Then, some packages for russian language:
sudo apt-get install texlive-lang-cyrillic
Then, it possibly will need to update language.dat file:
sudo update-language
 Ок, now. You may run texmaker. It's user friendly =).
The very simple TeX source is:

\documentclass{book}
\begin{document}
This is Russia!!!
\end{document}
In TeXMaker press F1 to see pdf-ed document from this source.

 To enable russian language (we installed lang-packages earlier):

\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\begin{document}
Это Россия!!!
\end{document}


That is all for the now. It's not a tutorial.

вторник, 1 декабря 2009 г.

Покорение собачек и китайских флешек.

Предыдущий пост не такой уж и длинный и, чтобы быть в курсе, надо его помнить.

Итак, имею флешку "USB Flash Storage", что уже о многом говорит (о коммунистическо-красном лейбле "РЖД" я вообще почти промолчал).  Используя нехитрую программу ChipGenius разузнал VID и PID флешки, а так же, что более фажно, чипсет: Alcor AU6983. Дальше проще: нашёл утилу перепрошивки, там за пару кликов и 15 минут перепрошил и убедился в горькой своей правоте - на флешке 493мб (вместо китайцами обещаных 4гб =) ). Слава богу, одной проблемой меньше.

P.S. До нормальнопрошивки флешки загрузка системы начиналась, но уходила в Kernel Panic, видимо из-за кривизны получающейся в результати китайских махинаций ФС.

Далее работал в VMWare. Загрузил там с iso Puppy Linux, долго тыкал различные варианты создания загрузочной флешки и пытался загрузить в починяемый мною комп родственника. Тут я, признаюсь, скорее всего затупил, но об этом позже, а пока я Паппи'ка загрузить так и не смог. 

Качнул по рекомендации интернетов прогу UNetBootin (Windows-версию, простите грешного, но существует версия под Linux, я уверен, не менее простая и удобная) и создал загрузочную флешку используя тот же самый iso Puppy-431 и ту же любимую флешку Alcor. Загрузиться не удалось опять.

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

Далее всё пошло как по маслу: Puppy грузится, настраивается, а я грежу установкой его на свой домашний комп, ибо даже ВыньХРю на нём работает очень неспеша на всех 256мб ОЗУ.

Что дальше? Либо я напишу об установке Puppy на свой "сервер"(а может и не Puppy, может я расковыряю debian от всего лишнего или познакомлюсь со знаменитым Gentoo, ибо давно пора), либо я, как и обещал, поизучаю LinuxFromScratch (http://www.linuxfromscratch.org), либо... Собственно это пока всё. До скорого.

воскресенье, 29 ноября 2009 г.

Первый шаг. Эпиграф.

Я давно понял, что всё что я делаю необходимо документировать. Особенно сложные и несразу запоминающиеся вещи. А в данный момент я, пожалуй, серьёзнее всего занимаюсь изучением UNIX ( в частности Linux ) систем и даже иду по пути создания собственного дистрибутива.

Я не полный ноль в UNIX-мире, но считаю себя скорее новичком, чем опытным пользователем.

Дома у меня стоит Ubuntu ( линуксоиды ( те что "красноглазики" ) обычно уже здесь начинают ругаться, дескать дистрибутив для домохозяек, но это пусть ) и имею коллекцию VMWare-образов таких систем как Debian, Puppy Linux, Lubuntu, Backtrack ( backtrack на диске, ибо на виртуальной машине проку от него мало ).

В блоге ( если руки не опустятся продолжать его вести ) я собираюсь выкладывать интересные ссылки, мои достижения и проблемы, интересные мне новости.

Из текущего на уме у меня есть следующий опыт: сестра мне подарила флешку на 4 гб ( с фирменным лейблом РЖД ), но на самом деле на флешку влезает только 512 мб, остальное становится мусором - интернеты говорят, что это хитрые китайцы научились прошивать флешки так, чтобы система думала, что их объём значительно больше, - за что китайцам отдельный поклон; так вот, на эту флешку я решил залить себе линукс, который бы грузился с USB, благо этим сейчас материнские платы не удивишь, выбор свой остановил на Puppy Linux, за его стройность и резвость; для этого я создал vmware-систему, в которой с iso-образа загрузил Puppy, в эту систему я подключил вышеописанную флешку и успешно ( по заявлениям Щеночка ) установил на эту флешку линукс.

Так вот, при попытке загрузиться с этой флешки меня послали в лес со словами "This usb-driver is not bootable". Вот такие пироги.

До скорых встреч, я надеюсь что вернусь.