Oct 26

Те, кто ставит wine отсюда (http://wine.budgetdedicated.com/apt/) могли заметить, что в последней версии не совсем корректно работает winecfg.

Как видите, вместо русских символов отображаются одни точки. Когда я это в первый раз увидел - мысль была одна - wine’у шрифтов не хватает. Скопировал с соседней машины (там Windows XP) директорию fonts в wine и все чудесным образом заработало. Сегодня вот решил докопаться, какого шрифта ему не хватает. Оказалось, как я и предполагал, ему нужен был шрифт Tahoma. Выложил я его у себя. Для ленивых - вот скриптец, который все сделает за вас:

wget http://fxposter.org/linux/tahoma.ttf
mv tahoma.ttf ~/.wine/drive_c/windows/fonts/

Теперь мне winecfg показывает это:

Enjoy :)

written by FX Poster \\ tags: , ,

Oct 26

Вот сайтик - смотрим, выбираем, думаем.

Особенно хочется отметить эти графики: Python vs PHP, Python Psyco vs PHP. Замечу, что Psyco - это не какая-то особая реализация питона, а просто питоновский модуль (обычный набор py-файлов). Подробнее читать здесь. К слову - на PHP такой “внутренний оптимизатор” сделать просто невозможно, из-за ограничений самого PHP.

written by FX Poster \\ tags: , ,

Oct 25

Вышел новый проприетарный драйвер для видеокарт ATI под линукс. Изменений много, некоторые очень “вкусные”, решил поставить.

Для начала качаем сам драйвер. После закачки я вспомнил, что где-то читал, как ставить проприетарные ATI’шные драйвера на Linux. Порылся в интернете - нашел заветную статью. В общем-то почти ничего не изменилось, но некоторые пункты убрались, а кое-что прийдется добавить.

Для начала ставим нужные для генерации deb-пакетов файлы:

sudo apt-get install module-assistant build-essential fakeroot dh-make debconf libstdc++5

Делаем наш файл выполняющимся и генерируем пакеты:

chmod a+x ati-driver-installer-8.42.3-x86.x86_64.run
./ati-driver-installer-8.42.3-x86.x86_64.run --buildpkg Ubuntu/7.10

Если у вас не убунта - списов всех дистрибутивов, для которых генерируются пакеты можно посмотреть, набрав в консоли:

./ati-driver-installer-8.42.3-x86.x86_64.run --listpkg

Ставим пакеты:

sudo dpkg -i xorg-driver-fglrx_8.42.3-1_i386.deb fglrx-kernel-source_8.42.3-1_i386.deb fglrx-amdcccle_8.42.3-1_i386.deb

Затем, по мануалу, “компилируем модули ядра”:

sudo module-assistant prepare,update
sudo module-assistant build,install fglrx-kernel
sudo depmod

Обновляем xorg.conf:

sudo aticonfig --initial

И ребутимся. Вот и все. После всех этих манипуляций результат в glxgears (тестилка OpenGL) возрос с 1800 fps до 2700 fps.

Тем, кому нравится compiz/beryl прийдется сделать еще одно - добавить (или изменить, если уже есть) в /usr/bin/compiz строку

WHITELIST="nvidia intel ati radeon i810 fglrx"

Либо запускаем compiz так:

SKIP_CHECKS=yes compiz

PS. До этого у меня стояли стандартные для убунту и дебиана OpenSource’ные драйвера. Тем, кто уже поставил старые fglrx-драйвера - когда будете ставить новый драйвер - выполните 1 и 7 инструкцию отсюда.

written by FX Poster \\ tags: ,

Oct 25

Ну вот нахера, скажите мне, мне, знающему очень даже неплохо SQL учить этот галимый Visual FoxPro?  Нет, я все понимаю - он несложный, его выучить можно быстрее чем тот же MySQL, с его помощью можно быстро писать законченные desktop-приложения, но… Просто когда сидишь над этим FoxPro по 8 часов подряд, пытаясь сделать хоть что-то по лабораторной работе, а в итоге нихера не получается… И так у всего потока практически. по-моему это уже немного не мои проблемы, а самого FoxPro и препода, который нам его читает.

Ну это так… Накипело.

На самом деле я против FoxPro в рамках учебной программы ничего не имею (если рассмартивать его просто как “еще одну СУБД”), в отличии от тотального большинства моих одногрупников. Ну поставили нам его в программу - фиг с ним, лабы сдадим и забудем. Я также вполне нормально отношусь к тому, что нам запрещают использовать SQL, хотя СУБД его нормально поддерживает, - преподаватель всегда прав. :) Да, и еще - я не пытаюсь сравнивать, в отличии от все того-же большинства одногрупников, FoxPro с тем же MySQL - они сделаны для разных задач и… в принципе я считаю, что каждая из этих СУБД имеет место быть (хотя иногда мой мозг выступает категорически против FoxPro).

Мне не нравятся совершенно другие вещи:

  1. FoxPro пришел к нам из доса, и в нем до сих пор есть куча комманд, которые сейчас уже особого смысла не имеют. Например, работа со связями или с окошками. То есть, многие действия можно выполнить как минимум двумя разными способами, причем способы, которые пришли из доса явно функциональнее. Самая главная проблема, что способы вообще несовместимы. Хотите построить меню define’ами (препод сказал, что типа за это больше всего баллов) - стройте также и все остальное (формочки всякие и прочее), а вот построить удобным построителем форму и добавить туда define’ами меню не получится никак.
  2. Я не любитель работать с формами. Вообще. А здесь еще, к тому же, сама работа с формами несколько “кривоватая”. :)
  3. Индексирование и связывание глючит. И, похоже, не только у меня. Правда отдельные личности сумели вроде как с этим ужиться. А сегодня препод вообще выдал “если у вас связывание много-ко-многим - фильтрация данных может глючить” - я был очень рад после этих слов! Тем не менее, лабу сдать все равно нужно. :(

Раздражает глючность и несбалансированность самого FoxPro. Причем раздражение начинается только тогда, когда посидишь над ним часиков 5, и за это время решишь две простенькие задачи. Да, потом эти задачи ты будешь решать быстро, но пока вьедешь, как и что…

Одно радует - в MSDN все-таки можно найти хорошие примеры кода, которые быстро все обьясняют. :)

written by FX Poster \\ tags:

Oct 23

На Windows я пользовался очень долго Total Commander’ом и до ужаса к нему привык. От файлового менеджера мне требуется немного: приятный внешний вид, эргономичность, две панели, наличие закладок и удобная работа с ftp (поддержка списка ftp-серверов с сохранением паролей хотя бы).

  1. mc - наверное, самый известный среди линуксоидов файловый менеджер, имеет консольный интерфейс, гибкую систему настроек (правда прийдется в файлах покопаться самому), есть закладки, в том числе в них можно вносить ftp-сервера (формат стандартный ftp://login:password@server.name). Раздражает 2 момента: chown и chmod не рекурсивные, а набирать каждый раз в строке напрягает очень (особенно без autocomplete) и, собственно, “консольность” (кто переходил от FAR’а к Total’у меня поймут). В общем - для консольщиков - в самый раз.
  2. Krusader - двухпанельный ФМ для KDE. Отличается большим количеством настроек, интегрируется с KDE и берет оттуда привязки к файлам, есть закладки и можно определить поистине огромное количество hotkey’ев. Очень порадовало наличие перехода в root-mode по хоткею и возможность вместо коммандной строки вставить консоль, пусть и небольшую - мне удобно, когда просто нужно сделать sudo chmod и не хочется переключаться в root-mode. Но есть один минус, портящий многие плюсы - работа с ftp реализована ужасно - нет списка ftp-серверов, нельзя внести в закладки ftp-сервер (у него пароль “сьедается”), так еще и пароли не сохраняются, даже если выбрать галочку “сохранять пароль”.
  3. Gnome-Commander - ФМ под Gnome. Функций мало, настраиваемость нулевая, внешний вид убогий, вот только работа с ftp нормальная (её бы Krusader’у впихнуть). Умлияет “поддержка” плагинов - есть 2 плагина и больше их становится не собирается. Хороший пример программы, в которой все вроде бы и есть (то есть по всем важным пунктам устраивает), но пользоваться которой вообще не хочется.
  4. Tux Commander - изначально создавался под Gnome (без некоторый библиотек Gnome’а не хочет работать с ftp), имеет красивый внешний вид, кдобную работу с ftp (опять же, если библиотеки установишь), достаточно эргономичен. В общем, придраться особо не к чему. Но только на первый взгляд… Второй взгляд наступает, когда пытаешься открыть какой-нибудь файл и вылезает окошко с предложением добавить обработчик этого файла. По умолчанию привязок файлов к программам нет вообще, что меня очень угнетает - задалбывает чуть ли не для каждого файла добавлять новые правила его открытия.

Больше достойный файловых менеджеров я не обнаружил. Может кто поделится ссылками - буду благодарен. Пока что вывод напрашивается такой: чтобы покрыть стандартную функциональность Total Commander’а нужно поставить как минимум 2 хороших ФМ для Linux, а если учитывать то, что под Total еще и существует огромное количество плагинов - можно с уверенностью сказать, что Linux в плане файловых менеджеров просто отстой.

Вот если бы скрестить Krusader и Tux Commander… Эх, мечты, мечты…

written by FX Poster \\ tags: ,

Oct 23

Начнем издалека… Есть в C++ встроенный тип size_t, который является “целым типом без знака, используемым реализацией для индексирования массивов” © Страуструп. То есть, если вы работаете с индексами в массивах и их длинами, то в общем-то “правильнее” использовать не int, что в большинстве случаев и делается, а именно size_t (для длин можно еще использовать ptrdiff_t - тип, который возвращает операция вычитания двух указателей). Вчера эта “правильность” для меня вышла боком…

size_t length;
...
for(size_t i = 0; i < length; ++i) {
    double x = 2 * (i - length / 2) / length;
    ...
}

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

size_t length;
...
for(size_t i = 0; i < length; ++i) {
    double x = 2 * static_cast<double>(i - length / 2) / length;
    ...
}

потому что при делении двух целых чисел у нас тоже целое будет, а мне нужно было как раз вещественное.

Но это еще ладно. После этого я отдал свой кусок лабораторной (мы ее пишем парами) своей девушке (а я как раз с ней пишу). Когда она добралась до этого кода и стала тестить его - у нее стали получаться какие-то странные, неправильные числа. Долгое время я копался в коде и не мог понять, в чем проблема, а потом до меня наконец-то дошло - разность двух беззнаковых чисел также будет беззнаковая (т.е. число -1 будет на самом деле 0xFFFFFFFF), после чего код превратился в такой:

size_t length;
...
for(size_t i = 0; i < length; ++i) {
    double x = 2 * static_cast<double>(static_cast<int>(i) - static_cast<int>(length) / 2) / length;
    ...
}

После чего я на всякий случай еще полчаса проверял небольшую программу на вот такие ошибки - на всякий случай. К счастью, таких больше не нашлось, но неприятный осадок остался.

Выводы: или пишите не особо заморачиваясь на правильности употребления типов (везде используйте int и double, например), или пишите семантически правильно, но не делайте таких ошибок, как я… Может, конечно, это только я такой, но мне лично сложно было именно по коду определить, что результат будет получаться не такой как я хочу.

PS. Я теперь немного понимаю, почему в Java нет unsigned типов. :) 

written by FX Poster \\ tags:

Oct 18

Те, кто читают меня довольно давно, знают, что я отношусь к той категории программистов, которые любяят и умеют использовать то, что было сделано раньше - фреймворки, библиотеки и т.д. Так вот, сегодня я поведу разговор о целесообразности использования Zend Framework при построении сайта по схеме MVC и о целесообразности его использования вообще.

Zend Framework в MVC

Для начала - моя цитата:

А я все больше склоняюсь к Django. :)
А по поводу ZF меня все больше посещают такие мысли: стройным и красивым он кажется только на первый взгляд и именно из-за того, что у нас по сути получается набор классов, которые нам самим предложено связывать. Другие фреймворки нам предоставляют уже готовую структуру каталогов и некоторые “настройки по умолчанию”, а в Zend’е это все нужно делать самому. И в итоге после настройки фреймворка под себя он все больше становится “некрасивым” и похожим на другие фреймворки. :)

Вот это моя позиция. Могу добавить еще одно - для того, чтобы юзать этот фреймворк, прийдется еще достаточно много всего под него дописать.

Zend Framework как библиотека классов

А вот как библиотеку классов ZF использовать не только можно, но и нужно. Я вот на себе прочувствовал, насколько удобно работать с почтой через Zend_Mail по сравнению со стандартными функциями imap_*. Да и Zend_Db и Zend_Log юзать достаточно удобно.

Писал недавно скрипт, который загружает файлы с POP3-сервера, парсит их и загружает в бд. Сначала написал просто функциями стандартными, а потом переписал с использованием ZF - код стал намного боле красивым, более легким в понимании и сократился в 2 раза. Так что в этой ипостаси ZF, на мой взгляд, идеальное замена многих модулей стандартной библиотеки PHP. Также радует наличие во фреймворке работы со всякими Web-сервисами - Amazon, del.icio.us, Flickr, и это еще не полный список, к тому же разработчики ZF планируют развивать фреймворк именно в этом направлении.

Для себя я вывод относительно ZF сделал такой - иметь на своем серваке однозначно. Даже если если я не буду его использовать для MVC - я буду использовать отдельные его части внутри самого сайта, благо, с этой задачей ZF справляется на отлично.

written by FX Poster \\ tags: , ,

Oct 18

А вот и новая убунта. Начинаем качать. :)

UPD. Кому нужны DVD: Ubuntu и Kubuntu.

written by FX Poster \\ tags: ,

Oct 17

Почитал статью. Сказать, что ошарашен - значит не сказать ничего. Что, неужели все действительно так плохо?

written by FX Poster \\ tags:

Oct 17

Поставил новую “сюсю”. Завтра все равно собираюсь ставить Gutsy, а пока от нечего делать решил посмотреть, что из себя представляет новое (а точнее - очередное) детище Novell.

Особо расписывать впечатления не хочется - не впечатлен я “сюсей”. Yast пиарили, а на деле - средненькая такая прога. Сборище всего в одном месте, причем некторые вещи отнюдь не лучшего качества - например, работа с пакетами на мой взгляд, ужасно неудобна, нелогична и непонятна. Особенно после APT’а и Synaptic’а. Да и вообще - смысл Yast’а непонятен - половина его возможностей есть, например, в стандартном KDE’шном Control Center, да, есть и дополнительные вещи, но их мало и в большинстве случаев существуют программы, которые выполняют те же самые действия (networkmanager), а некоторые действия можно просто произвести вручную (sudoers поправить, например).

Еще хочу сказать, хоть это и может показаться странным, но переход Ubuntu -> OpenSUSE ощущается явно - как-то слишком много различий. Не знаю, может это только кажется на первый взгляд, но пока что мнение сложилось именно такое.

В общем, на мой взгляд, средненький такой дистрибутивчик. Если и вам не понравится - попробуйте поставить Ubuntu, Debian или Alt Linux - мне они нравятся гораздо больше.

PS. А вот переходы Alt Linux <-> Ubuntu/Debian как-то воспринимались мной в свое время нормально. :)

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

UPD. Ах да, и еще - здесь ужаснейшие шрифты стоят…

written by FX Poster \\ tags: , , , ,