Завела блог, в котором буду писать посты на английском: http://ego-machine-en.blogspot.com
Чтобы удивиться, достаточно одной минуты; чтобы сделать удивительную вещь, нужны многие годы.
вторник, 2 апреля 2013 г.
пятница, 13 апреля 2012 г.
пятница, 30 сентября 2011 г.
Template instantiation library
На конференции по математике речь зашла о програмировании. Один из участников спросил не знаю ли я как сделать "библиотеку из шаблонов", так как он использует свой шаблон только с определенным количеством типов.
Я написала ему вот такой вариант:
a.h:
instantiation.cpp:
main.cpp
Компиляция:Я написала ему вот такой вариант:
a.h:
#pragma once
#include <iostream>
#include <algorithm>
template <class T>
class A
{
int size;
T* a;
public:
A(int s): size(s), a(new T[s]) { std::cerr << "A::A(int s)\n";} ;
~A() { std::cerr << "A::~A()\n"; delete [] a; }
A(const A& source):
size(source.size), a(new T[source.size])
{
std::cerr << "A::A(const T&)\n" ;
std::copy(source.a, source.a + source.size, a);
}
bool compare(const T* with, int s) {
std::cerr << "A::compare(const T&)";
if (size == s)
return std::equal(a, a + size, with);
return false;
}
};
#include "a.h"
template class A<int>;
#include <iostream>
#include "a.h"
using namespace std ;
extern template class A;
int main()
{
typedef A<int> IntA ;
IntA ia(5) ;
IntA ia1 = ia;
int* a = new int[5];
ia.compare(a, 5);
delete [] a;
}
$ g++ -fno-implicit-templates -c main.cpp
$ g++ fno-implicit-template -c instantiation.cpp
$ g++ main.o instantiation.o
Я мало сталкивалась с шаблонами, поэтому с радостью услышу критику такого подхода.
вторник, 23 августа 2011 г.
Капитан спешит на помощь.
Навеяно вот этим:
В Яндексе используются протоколы маршрутизации – внутренний протокол OSPF и внешний протокол BGP. Из-за ошибки информация обо всех внешних маршрутах оказалась во внутренних таблицах маршрутизации. Это примерно на три порядка больше маршрутов, чем обычно. Протокол OSPF не рассчитан на такое количество. В результате у всех маршрутизаторов кончилась память, и они перестали работать. Нарушилась работа сети, и через несколько минут Яндекс стал полностью недоступен.
Текст новости.
четверг, 4 августа 2011 г.
WTF на WTFе сидит и WTFом погоняет
Вот в таком приходится копаться.
Виртуальные функции -- это для девочек.
Father, I need your help.
Очень дружелюбные.
Виртуальные функции -- это для девочек.
class A{
public:
void f() {/* code */}
};
class B: public A{
public:
void f() {/* code */}
};
// a is a pointer to A
B* b = dynamic_cast<B*>(a);
b->f();
Father, I need your help.
class A{
public:
void a() {/* code */}
void b() {/* code */}
// c, d, e
void f() {/* code */}
};
class FeaturedA: public A{
public:
void a() {A::a()}
void b() {A::b()}
// c, d, e
void f() {A::f()}
void feature_1() {/* code */}
void feature_2() {/* code */}
void feature_3() {/* code */}
};
У класса много друзей (в среднем 9-10) и все они ведут себя по-свински вот так:
Не паниковать!
А платят нам за строчки.
Страшно выглядит? Это нормали к граням кубика. Связка "for-resize", меня добила.
Нам преподаватель по програмированнию рассказывал, что когда програмистам платят в зависимости от количества написанных строк, то они ставят фигурные скобки на следующей строчке :). Так что если написать, например, вот так:
то заплатят меньше.
Для наглядности?
Мотивы к использованию такой конструкции мне совсем не понятны:
Что такое жидкость?
Разноцветные.
Цитата из документации:
P.S. Код подсвечивался при помощи Pygments.
P.P.S. Спасибо Hades за картинку в тему.
class Plant{
FlowerBed bed;
Flowers flowers;
public:
void plant(){
// ...
Flowers toPlant = chooseFlowers(bed.size, bed.type)
// ...
}
};
class FlowerBed{
Size size;
Type type;
// Time to make friends;
friend class Plant;
};
Не паниковать!
/*
* Part of a library
*/
int A::someGreateMethod(){
// code
if (condition)
return value;
else{
// OOPS something wrong
abort(); // Time to start panick
return 0; // Original comment for this line is:
// "This line add to avoid compiler warning".
// Hm, after this he cares about warnings 0_o
}
}
// in class definition
vector< vector<int> > index (6);
// in constructor of this class
for (int i = 0; i < 6; i++)
index[i].resize(3);
index[0][0] = -1;
index[0][1] = 0;
index[0][2] = 0;
index[1][0] = 1;
index[1][1] = 0;
index[1][2] = 0;
index[2][0] = 0;
index[2][1] = -1;
index[2][2] = 0;
index[3][0] = 0;
index[3][1] = 1;
index[3][2] = 0;
index[4][0] = 0;
index[4][1] = 0;
index[4][2] = -1;
index[5][0] = 0;
index[5][1] = 0;
index[5][2] = 1;
Страшно выглядит? Это нормали к граням кубика. Связка "for-resize", меня добила.
Нам преподаватель по програмированнию рассказывал, что когда програмистам платят в зависимости от количества написанных строк, то они ставят фигурные скобки на следующей строчке :). Так что если написать, например, вот так:
vector <vector <int> > index (6, vector<int> (3, 0));
Для наглядности?
Мотивы к использованию такой конструкции мне совсем не понятны:
class A{
void someFunction(){
A* a = this;
}
};
Что такое жидкость?
bool isFluid(int color) {
if (color == 0 || color > 80)
return false;
return true;
}
Разноцветные.
Цитата из документации:
In config file you can set colors of compounds. If you do not want to do it, then this color will be generate automatically.Ага, автоматически и без участия мозга человека:
color of voxel-compound is 8.59771e+08
P.S. Код подсвечивался при помощи Pygments.
P.P.S. Спасибо Hades за картинку в тему.
вторник, 22 февраля 2011 г.
Мойте руки перед едой.
На работе проходят недели компьютерной грамотности. В кафетериях развешены напоминалки ("Блокируйте компьютеры перед уходом", "Используйте надежные пароли для защиты ваших данных", "Вступайте в ряды красной армии" ):
Что в переводе означает:
Мне понравился вот этот кусочек памятки:
Beispiel:Sichere passwörter.Gute und leicht zu merkende Passwörter finden Sie, wenn Sie sich aus Ihrer eigenen Lebensgeschichte einen Satz uberlegen, die Anfangsbuchstaben der Wörter nehmen und ein Sonderzeichen beifügen.
Ich ging mit Gabi 1993 nach Afrika! Passwörter: IgmG1993nA!
Пример:Безопасные пароли.Хороший и простой для запоминания пароль можно получить из собственной биографии. Составьте предложение, описывающее событие из жизни, возьмите начальные буквы слов этого предложения, добавьте специальный символ.
В 1993 году я ездил с Машей в Ростов! Пароль: V1993isMevR!
среда, 1 декабря 2010 г.
В четверг, 2-го декабря в 18:00 на ВМК состоится доклад одного из основных разработчиков Tor Эринн Кларк на тему “Проект Тор: Анонимность онлайн”.
Подробности.
Подробности.
Подписаться на:
Сообщения (Atom)