Страницы
пятница, 21 ноября 2008 г.
Сеть Кохонена
Для своего проекта, я занимаюсб генетическими алгоритмами, решил попробовать модификацию, в которой индивиды кластеризуются по значению генов. Колега подсказал использовать для этого нейросеть Кохонена. По его словам она быстрее C-means и менее прожорлива к памяти. После ковыряния выснилось, что данная сеть плохо работает с маленькими входными векторами. В одной из книг рекомендуют размер векторов больше 60.
четверг, 13 ноября 2008 г.
Различия шабонов C++ и D 2.x
В программировании шаблонов D и C++ есть несколько отличий. Само слово template в D означает не совсем то что в C++.
например шаблон такого класса в C++
template < T1,class T2>
class Pair
{
T1 first;
T2 seccond;
};
Для начала....
Ключевое слово template в означает в плюсах начало объявления какого-то шаблона. В D это слово означает начало блока зависящего от параметров шаблона. в этом блоке, может находится как код функций, зависящих от параметров шаблона, так и объявление класса.
tempalte TypeBlock(T1,T2)
{
class Pair
{
T1 first;
T2 seccond;
}
}
Этот же класс можно записать короче.
class Pair(T1,T2)
{
T1 first;
T2 seccond;
}
Для записи шаблона класса, функции, структура или метода ключевое слово template не нужно. Оно может понадобиться только тогда, когда вам необходимо объявить несколько типов, которые зависят от параметров шаблона.
tempalte TypeBlock(T1,T2)
{
class A
{
T1 first;
T2 seccond;
}
class B
{
void show(T1 a,T2 b)
{
write(a+b);
}
}
}
Здес ябъявляются два класса, A и B. Они оба зависят от Типов-параметров шаблона.
Также, такие "шаблоны", могут понадобится для подмешивания типов-mixin.
tempalte VarA(T)
{
T a;
}
struct B
{
mixin VarA!(int);
}
struct C
{
mixin VarA!(float);
}
void main()
{
B b;
b.a=10;
C c;
C.a=0.5;
}
При помощи ключевого слова mixin, можно "подмешать" содержимое шаблона в код.
например шаблон такого класса в C++
template < T1,class T2>
class Pair
{
T1 first;
T2 seccond;
};
Для начала....
Ключевое слово template в означает в плюсах начало объявления какого-то шаблона. В D это слово означает начало блока зависящего от параметров шаблона. в этом блоке, может находится как код функций, зависящих от параметров шаблона, так и объявление класса.
tempalte TypeBlock(T1,T2)
{
class Pair
{
T1 first;
T2 seccond;
}
}
Этот же класс можно записать короче.
class Pair(T1,T2)
{
T1 first;
T2 seccond;
}
Для записи шаблона класса, функции, структура или метода ключевое слово template не нужно. Оно может понадобиться только тогда, когда вам необходимо объявить несколько типов, которые зависят от параметров шаблона.
tempalte TypeBlock(T1,T2)
{
class A
{
T1 first;
T2 seccond;
}
class B
{
void show(T1 a,T2 b)
{
write(a+b);
}
}
}
Здес ябъявляются два класса, A и B. Они оба зависят от Типов-параметров шаблона.
Также, такие "шаблоны", могут понадобится для подмешивания типов-mixin.
tempalte VarA(T)
{
T a;
}
struct B
{
mixin VarA!(int);
}
struct C
{
mixin VarA!(float);
}
void main()
{
B b;
b.a=10;
C c;
C.a=0.5;
}
При помощи ключевого слова mixin, можно "подмешать" содержимое шаблона в код.
Чего по настоящему мне не хватетает в D
После использования C++, Python, Lisp мне по настоящему не хватает нескольких вещей:
Ключевые аргументы методов/функций
Специфика моей деятельности такова, что код написанный мною, используется только мною. Я привык к таким аргументам и без них как то не уютно.
Множественное наследование
Ну тут ничего не попишешь. Раз нет, так нет. Жить конечно можно, но все равно, как то не так. :(
Распределенная запись класса
Что я под этим имею ввиду. Когда в С++ или Lisp я описываю класс, то его описание и реализация находится, обычно, в нескольких файлах. Я знаю, что в D для этого можно использовать mixin, но все же хотелось бы иметь это встроенным в язык.
GUI в комплекте
Было бы неплохо, если бы вместе с phobos поставлялось что то, на подобии Tkinter.
Ключевые аргументы методов/функций
Специфика моей деятельности такова, что код написанный мною, используется только мною. Я привык к таким аргументам и без них как то не уютно.
Множественное наследование
Ну тут ничего не попишешь. Раз нет, так нет. Жить конечно можно, но все равно, как то не так. :(
Распределенная запись класса
Что я под этим имею ввиду. Когда в С++ или Lisp я описываю класс, то его описание и реализация находится, обычно, в нескольких файлах. Я знаю, что в D для этого можно использовать mixin, но все же хотелось бы иметь это встроенным в язык.
GUI в комплекте
Было бы неплохо, если бы вместе с phobos поставлялось что то, на подобии Tkinter.
Впечатление от Asus 50N
Устанавливал Mandriva 2008 Powerpack на вышеупомянутый ноутбук. Все стало замечательно,
в комплекте шли фирменные дрова для видео. со звуком проишлось пошаманить- прописать
options snd-hda-intel model=lenovo
в файл /etc/modprobe.d/alsa-base
в комплекте шли фирменные дрова для видео. со звуком проишлось пошаманить- прописать
options snd-hda-intel model=lenovo
в файл /etc/modprobe.d/alsa-base
Ошибка в tcl/tk для D
В привязке tcl/tk для языка d есть один баг. в модуле tcl.d функция
alias int (Tcl_ObjCmdProc) (ClientData clientData,Tcl_Interp *interp, int objc, Tcl_Obj * objv);
хотя надо
alias int (Tcl_ObjCmdProc) (ClientData clientData,Tcl_Interp *interp, int objc, Tcl_Obj ** objv);
Из за этого невозможно (без извратов) получать параметры в callback вызовах.
alias int (Tcl_ObjCmdProc) (ClientData clientData,Tcl_Interp *interp, int objc, Tcl_Obj * objv);
хотя надо
alias int (Tcl_ObjCmdProc) (ClientData clientData,Tcl_Interp *interp, int objc, Tcl_Obj ** objv);
Из за этого невозможно (без извратов) получать параметры в callback вызовах.
портирование с Dmd 2.x на gdc 0.24
Пришла идея: портировать dkinter с dmd 2.018 на gdc 0.24. посмотрел список отличий, написал Makefile. как ни странно все скомпилялось нормально, пришлось правда переписать foreach и убрать writeln. Но это мелочи. Но когда дело дошло до компиляции exapmple, посыпались ошибки линковки. причем в документации к gdc ни слова про специфичные флаги линковки. От сюда делема- чем заменить флаг -lib от dmd2.018 в gdc.
Tkinter + Dmd = Dkinter
Написал обетку для tcl/tk. При создании старался сделать похожим с Tkinter, но то что считал неудобным сделал по своему.
Пока реализовано 5% функционала, но уже можно клепать мелкие проги.
В отличии от dsource/projects/dtk это привязка не распределенная, вызываются функции напрямую из libtk. имеются мелкие примеры.
git clone git://github.com/lysevi/dkinter.git
Пока реализовано 5% функционала, но уже можно клепать мелкие проги.
В отличии от dsource/projects/dtk это привязка не распределенная, вызываются функции напрямую из libtk. имеются мелкие примеры.
git clone git://github.com/lysevi/dkinter.git
Интервью со Столлманом
http://www.oslinux.ru/node/200
Прочитал интервью. Столлман все таки фанатик своего дела. Не то чтобы это плохо, или хорошо. Просто по моему опыту бытия, мир невозможно разделить на белое и черное. Мир скорее серый, и не пользоваться той же Mandriva или RedHat из-за того, что в ней закрытый софт, это полнейший бред. без него конечно жить можно, но многим пользователям необходим нормальный Flash а не открытый, но работающий кое-как (сам не пользовался, но судя по комментариям на linux.org.ru это именно так). тоже самое касается и других форматов, созданных в закрытом виде.
Прочитал интервью. Столлман все таки фанатик своего дела. Не то чтобы это плохо, или хорошо. Просто по моему опыту бытия, мир невозможно разделить на белое и черное. Мир скорее серый, и не пользоваться той же Mandriva или RedHat из-за того, что в ней закрытый софт, это полнейший бред. без него конечно жить можно, но многим пользователям необходим нормальный Flash а не открытый, но работающий кое-как (сам не пользовался, но судя по комментариям на linux.org.ru это именно так). тоже самое касается и других форматов, созданных в закрытом виде.
Автор дракулы
Посмотрел фильм BBC "Величайшие книги- Дракула." В нем разные люди (Сценаристы,критики и.т.д.) рассказывают свое впечатление и историю создания этой книги. Главное в том, что все поступки, которые считались пороками в 19 веке, сейчас не только не зазорны, но и притягательны. Автор сценария к фильму "Дракула Брема Стокера" сказал, что автор романа не захотел бы жить в нынешнем мире. Как оказалось, роман разошелся большим тиражём, но не принес автору ни большой славы, ни денег. А умер автор, в одну неделю с гибелью Титаника, и последнее событие затмило первое.
Руский язык на сайте Commander Stalin
http://commanderstalin.sourceforge.net/cstalin_rus_index.html
Игра происходит в Советском Союзе правит Сталин. Игрок является Сталин. Оно должно организовать государство, индустриализации и превратить его в крупной державы. Это должно эффективно управлять своими ресурсами, что создает широкую социальную базу поддержки (работников), запуск существующей промышленности и развития науки и техники.
Если вы заранее в игре оставаться у власти, как великий вождь. Но вещи не заканчиваются здесь. Советский Союз сейчас сверхдержавой и тени мировой войны угрозу для мира. Несмотря на ваши мирные намерения, Вы будете нападению со стороны нацистской Германии. Там ничего не может сделать вас о нем, кроме оборону.
Игра происходит в Советском Союзе правит Сталин. Игрок является Сталин. Оно должно организовать государство, индустриализации и превратить его в крупной державы. Это должно эффективно управлять своими ресурсами, что создает широкую социальную базу поддержки (работников), запуск существующей промышленности и развития науки и техники.
Если вы заранее в игре оставаться у власти, как великий вождь. Но вещи не заканчиваются здесь. Советский Союз сейчас сверхдержавой и тени мировой войны угрозу для мира. Несмотря на ваши мирные намерения, Вы будете нападению со стороны нацистской Германии. Там ничего не может сделать вас о нем, кроме оборону.
Ошибка в ксписке инициализации.
есть такой код
class ScalarType
{
public:
ScalarType(T v):value(value),
Type(t)
{};
T value;
}
В нем искал ошибку около часа. дело в том, что в списке инициализации вместо value(v), стоит value(value). Компилятор даже не ругнулся, ведь с точки синтаксиса здесь все коректно.
class ScalarType
{
public:
ScalarType(T v):value(value),
Type(t)
{};
T value;
}
В нем искал ошибку около часа. дело в том, что в списке инициализации вместо value(v), стоит value(value). Компилятор даже не ругнулся, ведь с точки синтаксиса здесь все коректно.
Профессиональный программистский фольклор
Пространство - иллюзия, дисковое пространство – тем более.
Компьютер - устройство разработанное для ускорения и автоматизации человеческих ошибок.
Введите любое 11-значное простое число, чтобы продолжить...
Reset - не кнопка, а горькая необходимость.
Любая программа, которая успешно прошла тестирование, устарела.
Бывало ли, что Вы переставали думать, а затем забывали перезапуститься?
Если что-то у Вас получилось кривовато, назовите это бета-версией.
“Это не - дефект, это скрытая и редко используемая характеристика”.
Многозадачная работа допускает совершение нескольких ошибок одновременно.
Природа ненавидит уравнения с дифференциалами второго порядка.
Не позволяйте компьютеру догадаться, что вы спешите.
Нажмите все клавиши, чтобы продолжить...
Нажмите любую клавишу, чтобы продолжить или любую другую, чтобы выйти.
“Стать программистом и никогда не увидеть мир”.
Независимое программное обеспечение не будет работать с ЛЮБЫМ программным обеспечением.
Дефектная программа является абстрактным теоретическим понятием.
Дефекты - дети глюков!
Слон – это Мышь, сделанная по государственному заказу.
43-й Закон компьютерной обработки: Все что может испортиться, испор….
Компьютер - устройство разработанное для ускорения и автоматизации человеческих ошибок.
Введите любое 11-значное простое число, чтобы продолжить...
Reset - не кнопка, а горькая необходимость.
Любая программа, которая успешно прошла тестирование, устарела.
Бывало ли, что Вы переставали думать, а затем забывали перезапуститься?
Если что-то у Вас получилось кривовато, назовите это бета-версией.
“Это не - дефект, это скрытая и редко используемая характеристика”.
Многозадачная работа допускает совершение нескольких ошибок одновременно.
Природа ненавидит уравнения с дифференциалами второго порядка.
Не позволяйте компьютеру догадаться, что вы спешите.
Нажмите все клавиши, чтобы продолжить...
Нажмите любую клавишу, чтобы продолжить или любую другую, чтобы выйти.
“Стать программистом и никогда не увидеть мир”.
Независимое программное обеспечение не будет работать с ЛЮБЫМ программным обеспечением.
Дефектная программа является абстрактным теоретическим понятием.
Дефекты - дети глюков!
Слон – это Мышь, сделанная по государственному заказу.
43-й Закон компьютерной обработки: Все что может испортиться, испор….
настрйка GPRS в Linux вместе с Nokia 6120
для начала необходимо установить wvdial
шаг 1
запускаем wvdialconf от прав root
sudo wvdialconf
после открываем файл /etc/wvdial.conf и изменяем до следующего вида(данные для Мегафон-кавказ)
[Dialer Defaults]
Init1 = ATZ
Init2 = AT+CGDCONT=,,"internet";
ISDN = 0
Modem Type = USB Modem
ISDN = 0
Stupid Mode = 1
Phone = *99#
Modem = /dev/ttyACM0
Username = user
Password = user
Baud = 460800
после чего запускаем wvdial и наслаждаемся $)
шаг 1
запускаем wvdialconf от прав root
sudo wvdialconf
после открываем файл /etc/wvdial.conf и изменяем до следующего вида(данные для Мегафон-кавказ)
[Dialer Defaults]
Init1 = ATZ
Init2 = AT+CGDCONT=,,"internet";
ISDN = 0
Modem Type = USB Modem
ISDN = 0
Stupid Mode = 1
Phone = *99#
Modem = /dev/ttyACM0
Username = user
Password = user
Baud = 460800
после чего запускаем wvdial и наслаждаемся $)
Подписаться на:
Сообщения (Atom)