LINUX.ORG.RU

Сообщения Alexey-ZAR

 

Разъясните механизм template в С++

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

Во-первых, если у меня в двух файлах A.cc и B.cc есть объявления (реализации) классов типа такого

class A{
private:
int n;
public:
A():n(0){}
A(int N):n(N){}
// можно еще какую-нибудь фигню приписать
};

тогда линковшик начнет ругаться, что, в принципе, и понятно.

С template-ами ситуация совсем иная. Отправить объявление типа:

template<class T>
class A{
private:
T n;
public:
A():n(0){}
A(T N):n(N){}
// можно еще какую-нибудь фигню приписать
};

в два различных файла, и там и там сделать A<int> -- и все будет прекрасно работать.

Соответственно, вопрос в том, а как оно так сделано?

>>>

Alexey-ZAR
()

Compiz и видео: синева на месте тени

При включенном компизе и просмотре видео, если какое-либо окно перекрывает окно проигрывателя, на месте где должна быть тень от окна или прозрачность, появляется синева. Есть ли возможность вылечить это? Как-то раз получилось так, что синева не появилась, но что за магические действия я до этого предпринял, я не помню.

ПС. Интегрированный чип Intel (915, вроде как), драйвер от того же intel.

>>>

Alexey-ZAR
()

LaTeX: Формирование библиографии, upper- & lowercase

Среди статей, которые должны попасть в библиографию, есть несколько в названиях которых содержатся сокращения, так что они должны писаться с заглавной буквы, например CFD. Когда все это добро из *.bib файла вставляется в итоговый pdf, то все буквы, кроме первой, в названии статьи становятся lowercase, т.е. вместо CFD получаем cfd. Вопрос: как сохранить uppercase?

>>>

Alexey-ZAR
()

Ubuntu: экран ноута

Поставил Ubuntu 8.04, по сравнению с тем, что было в 7.10 появилось некоторое количество плюсов. В частности, сразу заработал звук (я так понимаю, спасибо свежему ядру), hibernate, suspend.

Теперь о минусах. Он один, но большой: изображение на экране блеклое. Т.е. яркость экрана стоит 60 или 80%, иными словами она такая, как будто ноут работает в режим power save или word processing, хотя подключен к сети, а батарея вообще вынута. Клавишами с ноута яркость не регулируется: картинка то появляется, дескать, яркость должна меняться, а она не меняется.

Причем, если перезгружаться из виндов в Ubuntu, то видно по splash-у убунтовскому, что в самой начальной стадии загрузки яркость падает. При перезагрузке яркость остается все на том же низком уровне, даже когда идут сообщения BIOS и появляется окно GRUB. Восстанавливается она только если загрузить винду, которая определит, что режим работы maximum perfomance и яркость должна быть 100%.

Как бороться с этой фигней?

>>>

Alexey-ZAR
()

Собрать boost под Вынями

Есть одна open source библиотека для помогающая эффективно реализовать FE, называется DEAL.II, под линуксом собирается без проблем, в Винде ругается на отсутствие boost.

Скачал исходники boost (48 метров, ужас). В Винде имею MinGW с установленным MSYS, а также gcc-4.1 (g++ той же версии). Попытка вызвать configure ни к чему хорошему не привела.

Building Boost.Jam with toolset gcc... ./configure: cd: /c/Documents: No such file or directory
./configure: cd: ./tools/jam/src: No such file or directory
tools/jam/src//bjam
Unicode/ICU support for Boost.Regex?... not found.
Backing up existing Boost.Build configuration in user-config.jam.3
Generating Boost.Build configuration in user-config.jam...
Generating Makefile...

Никакой Makefile не сгенерировался.

Вопросы следующие: а нужно ли его собирать вообще? что если включить директории boost в поиск для заголовочных файлов (кстати, как это сделать?) там ведь все равно темплейты везде, которые полностью засунуты в заголовочные файлы (более или менее), так что при сборке DEAL.II может прокатить (хочется верить, попытка не пытка, как говорится).

Если у кого есть опыт сборки сего дела под винды - прошу поделиться.

PS. Желание сделать это дело работоспособным под вынь исходит не от меня, но сделать это очень желательно.

>>>

Alexey-ZAR
()

Замена WinVista на WinXP при имеющемся Linux

Имеется ноут, с которым шла предустановленная Vista. Сделал ошибку, что сразу не снес, теперь эту ошибку хочу исправить. Однако, уже успел dual boot-ом поставить Ubuntu (полностью Win сносить не стал, ибо не все hardware в Linux-е работает, да и работа зерьезным образом завязана на MS Office).

Теперь задача: надо вместо Vista поставить XP (спасибо Acer - вложил в комплект и его вместе с ноутом), но так, чтобы не порушить Linux, а то в нем уже много чего нужного установлено и вновь все переустанавливать нет никакого желания.

Как я понимаю, загрузчик WinXP все равно затрет GRUB, как потом быстро вернуть GRUB наместо, заодно перенастроив его под вновь установленную систему?

>>>

Alexey-ZAR
()

Вопрос про конструктор С++: массив объектов

Предположим, есть класс

class A;

Скажем, нас интересует конструктор A(int k). Теперь, нужно работать с массивом объектов A:

A* ar;

ar = new A[sz_a_num];

Получается, что ведь не только выделится память, но и запустится конструктор для каждого объекта (тот, который по умолчанию). А как запустить тот конструктор, который нужно? Неужели только через указатели? Отдельная проблема состоит в том, что желательно передать разные параметры разным объектам.

>>>

Alexey-ZAR
()

Emacs: автозавершение (code completion)

Можно это как-нибудь приделать? Чтобы по

this->

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

this->load_

после этого жму волшебное сочетание клавиш и оно дополняется до

this->load_data_from_file

Пробовал использовать TAGS с M-Tab но оно как-то странно работает: не хочет подставлять поля структуры как минимум и, по-моему, не понимает this. Возможно, что при запуске etags надо указать какие-нибудь спец параметры для этого, если так, то прошу просветить.

>>>

Alexey-ZAR
()

Кто имел дело с ntlmaps?

Короче, универский провайдер поставил хитрую систему для прохода в Интернет. Браузеры легко настраиваются с помощью скрипта (т.е. указывается URL со скриптом и все работает), а вот Synaptic не поддерживает такого дела. Как выход: использование ntlmaps, в конфиге которого прописываются настройки соединения.

Проблема вот какая: есть 2 компа, конфиг server.cfg почти один и тот же - разные только имя пользователя и пароль. На одном Synaptic заработал, на втором - ни фига.

Прописал в firefox подключение через ntlmaps вместо авто-скрипта: на одном компе он сразу коннектится, а на другом выбрасывает окно для ввода имени и пароля.

Спрашивается, шо за фигня?

>>>

Alexey-ZAR
()

C: а корректен ли такой код (всего одна строчка)?

Код такой

const double PI = 4.0 * atan(1.0);

gcc на него ругается (предупреждением), но все же компилит. Watcom ругается и не компилит. Основная идея его использования: вычислить выражение раз при запуске программы, а потом запретить его изменение.

PS. Естественно, в начале файла стоит #include <math.h>

Использовать вот так

#define PI (4.0 * atan(1.0))

плохо, т.к. будет вычисляться функция каждый раз при использовании константы.

Кто знает, на сколько это корректно?

>>>

Alexey-ZAR
()

Загаловки сообщений в Evolution с IMAP gmail.com

Если отправитель имеет честь именоваться по-русски, то (обращаю внимание!) в списке сообщений отображается вот такая гадость: =?KOI8-R?Q?=F7= ну и так далее. В тексте сообщения отображается все корректно: имя отправителя выглядит нормально (правда, не всегда, сообщение с vkontakte.ru имя выглядит нормально, а в сообщении с mail.ru вот эта гадость так и осталась, причем она попортила не только имя, но и обратный адрес). При этом, тема сообщения в списке отображается правильно, без всяких выкрутасов.

Где что не так с кодировкой? Причем оно как-то на столько рендомно криво, что я не пойму где править.

>>>

Alexey-ZAR
()

Как правильно установить патченную freetype (Ubuntu)

Как правильно в Ubuntu установить freetype, чтобы шрифты были "как в Винде"? Можно получить пошаговую инструкцию? Начиная с того, откуда загрузить, какие волшебные команды ввести?:) Не хотелось бы при этом ломать пакетную систему, т.е. желательно, чтобы apt потом видел, что установлена другая версия библиотеки, чтобы не было проблем с последующими обновлениями (иными словами, меня несколько беспокоит результат работы ``make install'' в этой системе).

PS. Ubuntu Gutsy 7.10, для предыдущей версии решение в интернете нашел, а вот для Gutsy что-то никак пока.

>>>

Alexey-ZAR
()

Ошибка при запуске Photran (Eclipse)

Скачал Linux-GTK полную версию Photran, но в окне программы вместо
виджетов с отображением проекта и некого Welcome (не знаю, что там
должно быть) выдается такая вот ошибка:

java.lang.ClassNotFoundException: org.eclipse.core.runtime.Plugin
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleL oader.java:434)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.ja va:369)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.ja va:357)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClass Loader.java:83)
at java.lang.ClassLoader.loadClass(libgcj.so.81)
at org.eclipse.core.runtime.Platform.getPlugin(Platform.java:736)
at org.eclipse.core.internal.preferences.legacy.InitLegacyPreferences.init(InitLeg acyPreferences.java:43)
at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper.applyRunt imeDefaults(PreferenceServiceRegistryHelper.java:146)
at org.eclipse.core.internal.preferences.PreferencesService.applyRuntimeDefaults(P referencesService.java:337)
at org.eclipse.core.internal.preferences.DefaultPreferences.applyRuntimeDefaults(D efaultPreferences.java:163)
at org.eclipse.core.internal.preferences.DefaultPreferences.loadDefaults(DefaultPr eferences.java:236)
at org.eclipse.core.internal.preferences.DefaultPreferences.load(DefaultPreference s.java:232)
at org.eclipse.core.internal.preferences.EclipsePreferences.create(EclipsePreferen ces.java:307)
at org.eclipse.core.internal.preferences.EclipsePreferences.internalNode(EclipsePr eferences.java:543)
at org.eclipse.core.internal.preferences.DefaultPreferences.node(DefaultPreference s.java:150)
at org.eclipse.core.internal.preferences.legacy.PreferenceForwarder.getDefaultPref erences(PreferenceForwarder.java:130)
at org.eclipse.core.internal.preferences.legacy.PreferenceForwarder.getString(Pref erenceForwarder.java:636)
at org.eclipse.ui.internal.intro.impl.model.IntroModelRoot.loadTheme(IntroModelRoo t.java:260)
at org.eclipse.ui.internal.intro.impl.model.IntroModelRoot.loadChildren(IntroModel Root.java:177)
at org.eclipse.ui.internal.intro.impl.model.AbstractIntroContainer.getChildren(Abs tractIntroContainer.java:78)
at org.eclipse.ui.internal.intro.impl.model.IntroModelRoot.loadModel(IntroModelRoo t.java:150)
at org.eclipse.ui.internal.intro.impl.model.loader.BaseExtensionPointManager.loadM odel(BaseExtensionPointManager.java:95)
at org.eclipse.ui.internal.intro.impl.model.loader.ExtensionPointManager.loadCurre ntModel(ExtensionPointManager.java:61)
at org.eclipse.ui.internal.intro.impl.model.loader.ExtensionPointManager.getCurren tModel(ExtensionPointManager.java:73)
at org.eclipse.ui.intro.config.CustomizableIntroPart.init(CustomizableIntroPart.ja va:151)
at org.eclipse.ui.internal.ViewIntroAdapterPart.init(ViewIntroAdapterPart.java:156 )
at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:343)
at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:227)
at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.j ava:592)
at org.eclipse.ui.internal.Perspective.showView(Perspective.java:2086)
at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1027)
at org.eclipse.ui.internal.WorkbenchPage.access$19(WorkbenchPage.java:1008)
at org.eclipse.ui.internal.WorkbenchPage$19.run(WorkbenchPage.java:3684)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3681)
at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3657)
at org.eclipse.ui.internal.WorkbenchIntroManager.createIntro(WorkbenchIntroManager .java:173)
at org.eclipse.ui.internal.WorkbenchIntroManager.showIntro(WorkbenchIntroManager.j ava:120)
at org.eclipse.ui.internal.WorkbenchWindow$18.runWithException(WorkbenchWindow.jav a:2146)
at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.j ava:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3296)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2974)
at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:8 01)
at org.eclipse.ui.internal.Workbench$25.runWithException(Workbench.java:1342)
at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.j ava:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3296)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2974)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2309)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.jav a:106)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169 )
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(Ecl ipseAppLauncher.java:106)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLa uncher.java:76)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
at java.lang.reflect.Method.invoke(libgcj.so.81)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
at org.eclipse.equinox.launcher.Main.main(Main.java:1148)

Подозреваю, что для работы Eclipse-у нужно поставить какую-нибудь
особую java (дистрибутив Ubuntu 7.10, для java стоит всё только
дефолтное, дополнительного ничего не ставил).

>>>

Alexey-ZAR
()

Emacs: как сделать сглаживание в шрифтах?

Собственно, сабж. Иначе оно там выглядит все сильно коряво, приходится использовать запуск с -nw, чтобы в терминале запускался, где шрифты более или менее (gnome-terminal). Система Ubuntu 7.10, Freetype пока еще не крутил/не пересобирал, в основных программах, вообще говоря, шрифты выглядят вполне сносно (за исключением OO, конечно).

>>>

Alexey-ZAR
()

Форматированный вывод в gfortran (ищется аналог опции -vms интеловского ifort)

Есть, скажем, такая функция задания форматирования для вывода:

format('+12f10.4')

Теперь вопрос, как в gfortran-е сделать так, чтобы первый символ в строке форматирования (в данном случае "+") воспринимался как командный (в данном случае он означает, что начать вывод в той же строке, что и предыдущий, начинать с первой позиции). Все это интересует в отношении вывода в терминал. Т.е., попросту говоря, нужно, чтобы в терминале обновлялась некоторая информация, новая должна писаться поверх старой.

В принципе, подобное поведение для компиляторов Фортрана было by default много-много лет: если посмотреть книжки по F77, то там отводится довольно много места обсуждению этого вопроса. Но на современых не все так просто.

Интеловский компилятор имеет опцию -vms, которая позволяет проделать этот трюк, что же касается gfortran-а, то поиск с google-ом не дал результата вообще никакого, я даже не смог найти ни одной ссылки по обсуждению этого вопроса (может, я, конечно, не умею правильно искать).

>>>

Alexey-ZAR
()

Что нужно прикрутить к Rythmbox чтобы играл AAC?

Сабж. Обнаружил разве только плагин к BMP (или как он теперь называется) в репах для этого формата, а хочется прикрутить в Rythmbox, ибо музыка в полном беспорядке, без коллекции не обойтись.

>>>

Alexey-ZAR
()

Как перенести VBA макросы из Excel в OO

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

Сама таблица замечательно открылась в OO, но вот с макросами проблема: они используют объекты, которые доступны только в Excel, в OO, видимо, используются другие (все в принципе элементарно: нужны объекты для доступа к листам и ячейкам, ну и еще, похогут понадоиться объекты для доступа к графикам).

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

>>>

Alexey-ZAR
()

Emacs: переключиться в режим f90 при открытии файла *.f95

Собственно, сабж. На файл *.f90 он этот режим запускает сам, а вот на *.f95 приходится руками дописывать M-x f90-mode.

>>>

Alexey-ZAR
()

HSDPA USB modem

Есть такая вот штуковина http://www.huawei.com/mobileweb/en/products/view.do?id=282 зовется HUAWEI HSDPA USB modem. Я с такими раньше не работал, поэтому на всякий случай в кратце поясню: берется Сим-карта от телефона, оператор которого поддерживает GPRS-3G-HSDPA, вставляется в эту коробку, коробка подключается к компу. В Винде при этом возникает работаеющая программа, в которой надо нажать кнопку Connect и радоваться жизни)))

Перелезаю с винды на Ubuntu (единственный в этой местности доступный дистр, и то, благодаря шиппингу), хочется заставить работать его и там. Ubuntu 7.10, свеже поставленная (без Интернету пока, сами понимаете, есть только то, что на CD). Вот тут http://www.itp.tuwien.ac.at/~mattems/blog/2007/08/16 говорится, что сей модем должен сам запускаться нормально в Линуксе. Как USB-девайс действительно запускается, а вот что касаемо модема, что-то пока не разобрался.

На данный момент, должен признаться, что в этом вопросе в Линуксе я полный нуб, раньше только по Ethernet-у подключал (а там, сами понимаете, проблем нет в принципе), да и перерыв в работе с Линуксом в 2 года сказывается: уже многое забылось.

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

>>>

Alexey-ZAR
()

RSS подписка на новые темы