вторник, 2 апреля 2013 г.

Новый блог

Завела блог, в котором буду писать посты на английском: http://ego-machine-en.blogspot.com

пятница, 13 апреля 2012 г.

пятница, 30 сентября 2011 г.

Template instantiation library

На конференции по математике речь зашла о програмировании. Один из участников спросил не знаю ли я как сделать "библиотеку из шаблонов", так как он использует свой шаблон только с определенным количеством типов.
Я написала ему вот такой вариант:

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;
    }
};
 
instantiation.cpp:
#include "a.h"

template class A<int>;
main.cpp
#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ом погоняет

Вот в таком приходится копаться.

Виртуальные функции -- это для девочек.
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) и все они ведут себя по-свински вот так:
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 г.

Мойте руки перед едой.

На работе проходят недели компьютерной грамотности. В кафетериях развешены напоминалки ("Блокируйте компьютеры перед уходом", "Используйте надежные пароли для защиты ваших данных", "Вступайте в ряды красной армии" ):

На столах лежат вот такие памятки:


Мне понравился вот этот кусочек памятки:
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.
Beispiel:
Ich ging mit Gabi 1993 nach Afrika! Passwörter: IgmG1993nA!
Что в переводе означает:
Безопасные пароли.
Хороший и простой для запоминания пароль можно получить из собственной биографии. Составьте предложение, описывающее событие из жизни,  возьмите начальные буквы слов этого предложения,  добавьте специальный символ.
Пример:
В 1993 году я ездил с Машей в Ростов! Пароль: V1993isMevR!

среда, 1 декабря 2010 г.

В четверг, 2-го декабря в 18:00 на ВМК  состоится доклад одного из основных разработчиков Tor Эринн Кларк на тему “Проект Тор: Анонимность онлайн”.

Подробности.

среда, 18 августа 2010 г.

Пост радости


just_for_funНаличие на амазоне бесплатной доставки по Европе не может не радовать. Я смогла заказать книжку, которую давно хотела купить, но стоимоть ее доставки в Россию превышала стоимость книги.
Иногда меня посещала мысль, что можно прочитать книжку на русском, но она в спешке убегала, когда я смотрела на обложку русскоязычного издания:

понедельник, 10 мая 2010 г.

Тема для latex beamer

Я раньше брала темы для beamer с этого сайта. Единственный недостаток большинство тем отличаются только деталями, поэтому визуально воспринимаются как одинаковые. Как оказалось, многие люди реагируют на одинаковые темы, как девушки на одинаковые платья. Поэтому я решила поискать альтернативные темы оформления презентаций.

Тема Torino (с этого блога) понравилась мне своей цветовой гаммой. Но я ее немного переработала под себя. Изменения коснулись только файла beamercolorthemechameleon.sty. Была добавлена строчка, которая выставляет в зеленый цвет заголовки блока:

\setbeamercolor*{block title}{fg=chameleongreen3}


А строка, соответствующая оформлению заглавной страницы (fg=шрифт, bg=фон ):
\setbeamercolor*{palette quaternary}{fg=white, bg=chameleongreen1}

Была заменена на:
\setbeamercolor*{palette quaternary}{fg=chameleongreen1}

Так же я заменила логотип. И вот что получилось:

заглавный слайд

слайд с блоками

среда, 21 апреля 2010 г.

Как облегчить учет финансов


qrcodeЕсть люди, которые ведут строгий учет своих трат. Они собирают чеки, создают огромные экселевские таблицы или пользуются системами YourMoneySaver, которые позволяют облегчить задачу траты времени в пустую контроля траты денег. А насколько это было бы им легче, если бы на чеках были, например, QR коды, в которых содержится информация о сделанной покупке. Для того чтобы занести данные о покупке, достаточно было бы просто считать код.

четверг, 8 апреля 2010 г.

РусКрипто CTF(2)

Забыла написать.

Было бы здорово, если бы флагами был не просто md5, а префикс+md5, например, FLGd41d8cd98f00b204e9800998ecf8427e.

А то мы теперь гадаем был ли Serial Number флагом, который мы не заметили или нет. А если был, то будь он с префиксом, его бы точно не пропустили.

вторник, 6 апреля 2010 г.

РусКрипто CTF

В прошедшие выходные я в составе команды  Bushwhackers ездила на РусКрипто CTF'2010 . Мы заняли там 3 место.  Для нас это был первый опыт участия в реальном (а не проводимом нами в закоулках лабы) CTF, так что я считаю, что мы справились достойно. 

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

Спасибо огромное организаторам, было здорово, будем ждать разбора полетов.

P.S.
CTF переводится как  Capture the flag. Про формат соревнований можно прочитать, например, на википедии (смотрим секцию computer security).
P.P.S.
Видео с Ctfа
Фотки

вторник, 30 марта 2010 г.

Презентация в LaTeX. Beamer.

Я расскажу как создавать презентации в LaTex, с использованием пакета beamer.
Начнем создавать презентацию.
Заглавный слайд ( в тексте презентации после значка % даются некоторые комментарии ):
\documentclass{beamer}
\usepackage[english,russian]{babel}
\usepackage[utf8]{inputenc}
% Стиль презентации
\usetheme{Warsaw}
\begin{document}
\title{Все что вы хотели знать о сферическом коне в вакууме, но боялись спросить}  
\author{Олень Северный}
\institute{Научно исследовательский институт физико-матетматических проблем}
\date{Москва, 2010} 
% Создание заглавной страницы
\frame{\titlepage} 
% Автоматическая генерация содержания
\frame{\frametitle{Содержание}\tableofcontents} 
\end{document}
Слай помещается в следующие переменные окружения:
\frame{}
или
\begin{frame}
\end{frame}
Про помощи \usetheme задается тема оформления презентации:

\usetheme{Warsaw}

А вот как можно вставлять изображения в презентацию:
\begin{frame}{Вот он наш герой}
 \begin{center}
  \includegraphics{Sphere_horse.jpg}  
 \end{center}
\end{frame}
Добавим динамики в презентацию.
Создадим следующий слайд:

\begin{frame}{Высказывания о коне}
\pause
\begin{block}{Дарт Херохито}
 "Так вот ты какой, северный олень!"
\end{block} \pause

\begin{block}{Кавалерия Новодворская}
 "Сферический конь борозды не портит"
\end{block} \pause

\begin{block}{Русская женщина}
 "Да я его на скаку!"
\end{block}
\end{frame}

При помощи окружения block можно визуально выделить блоки на слайде. выглядит этот слайд так:

При помощи \pause добиваемся следующего эффекта: сначала слад пустой, при нажатии, например, пробела, появляется первая цитата, при следующем нажатии -- вторая. Эта техника называется наложением.  По предложенному коду генерируется 4 слайда: пустой, с 1 цитатой, с 2-мя и с 3-мя. При просмотре они "накладваются" друг на друга, что создает эффект появления блока.

В beamer есть еще один способ работы с оверлеями -- <>;. Считаем, что оверлеи пронумерованны, тогда команде можно перодать список верлеев для которых она применяется. Например, \item<4-> говорит, что на 4-м оверлее, появится пункт перечисления, а \color<3->{green}, что с 3 по последний оверлей, текст, на который указывает эта команда будет расскрашен в зеленый.

\begin{frame}
% еще один способ "озаглавить" слайд
\frametitle{А знаете ли вы, чтo ...}
%подзаголовок
\framesubtitle{Наука о коне}
\begin{itemize}
 \item<5->; \color<5>;{red} Сферический конь не испытывает трения о воздух. 
 \item<3-> \color<4>;{yellow} Эталон сферического коня находится во французской палате мер и весов.
 \item<2->; \color<3>;{green} Русская женщина может остановить на скаку сферического коня в вакууме только при наличии трёх или более высших образований. Размер и форма этих образований не имеет значения.
 \item<4->; \color<4->;{blue} Столица России, Москва, расшифровывается именно, как «модель сферического коня в вакууме».
 \item<1->; \color<1-3,5>;{brown} Чтобы сесть на сферического коня верхом, нужно найти седловую точку
\end{itemize}
\end{frame}
Этот код сгенерирует следующий набор оверлеев:










Слайд с библиографией:

\begin{frame}{Сферический список литературы в вакууме}
 \begin{thebibliography}{10}
\beamertemplatebookbibitems
\bibitem{LurkHorse}
{\sc Lurkmore}, {\em Сферический конь в вакууме}.
\bibitem{AbsHorse}
{\sc Абсурдопедия}, {\em Сферический конь в вакууме}.
\end{thebibliography}
\end{frame}





Текст презентации latex и pdf: Sphere_horse.tex, Sphere_horse.pdf.


Полезные ссылки:
BeamerGuide
Как выглядят различные стили оформления
Иля Шутов "Свободный софт в научной области".

вторник, 23 марта 2010 г.

Win? Fail!

if (c->&gt;pi_is_dynamic)
unwi_put_dynamic_unwind_info (c->&gt;as, pi, c->&gt;as_arg);
else if (pi->&gt;unwind_info);
{
mempool_free (&amp;dwarf_cie_info_pool, pi->&gt;unwind_info);
pi->&gt;unwind_info = NULL;
}

воскресенье, 27 декабря 2009 г.

Запрещенные пароли твиттера

view-source:https://twitter.com/signup

twttr.BANNED_PASSWORDS = ["111111","11111111","112233","121212","123123","123456","1234567","12345678","131313","232323","654321","666666","696969","777777","7777777","8675309","987654","aaaaaa","abc123","abc123","abcdef","abgrtyu","access","access14","action","albert","alexis","amanda","amateur","andrea","andrew","angela","angels","animal","anthony","apollo","apples","arsenal","arthur","asdfgh","asdfgh","ashley","asshole","august","austin","badboy","bailey","banana","barney","baseball","batman","beaver","beavis","bigcock","bigdaddy","bigdick","bigdog","bigtits","birdie","bitches","biteme","blazer","blonde","blondes","blowjob","blowme","bond007","bonnie","booboo","booger","boomer","boston","brandon","brandy","braves","brazil","bronco","broncos","bulldog","buster","butter","butthead","calvin","camaro","cameron","canada","captain","carlos","carter","casper","charles","charlie","cheese","chelsea","chester","chicago","chicken","cocacola","coffee","college","compaq","computer","cookie","cooper","corvette","cowboy","cowboys","crystal","cumming","cumshot","dakota","dallas","daniel","danielle","debbie","dennis","diablo","diamond","doctor","doggie","dolphin","dolphins","donald","dragon","dreams","driver","eagle1","eagles","edward","einstein","erotic","extreme","falcon","fender","ferrari","firebird","fishing","florida","flower","flyers","football","forever","freddy","freedom","fucked","fucker","fucking","fuckme","fuckyou","gandalf","gateway","gators","gemini","george","giants","ginger","golden","golfer","gordon","gregory","guitar","gunner","hammer","hannah","hardcore","harley","heather","helpme","hentai","hockey","hooters","horney","hotdog","hunter","hunting","iceman","iloveyou","internet","iwantu","jackie","jackson","jaguar","jasmine","jasper","jennifer","jeremy","jessica","johnny","johnson","jordan","joseph","joshua","junior","justin","killer","knight","ladies","lakers","lauren","leather","legend","letmein","letmein","little","london","lovers","maddog","madison","maggie","magnum","marine","marlboro","martin","marvin","master","matrix","matthew","maverick","maxwell","melissa","member","mercedes","merlin","michael","michelle","mickey","midnight","miller","mistress","monica","monkey","monkey","monster","morgan","mother","mountain","muffin","murphy","mustang","naked","nascar","nathan","naughty","ncc1701","newyork","nicholas","nicole","nipple","nipples","oliver","orange","packers","panther","panties","parker","password","password","password1","password12","password123","patrick","peaches","peanut","pepper","phantom","phoenix","player","please","pookie","porsche","prince","princess","private","purple","pussies","qazwsx","qwerty","qwertyui","rabbit","rachel","racing","raiders","rainbow","ranger","rangers","rebecca","redskins","redsox","redwings","richard","robert","rocket","rosebud","runner","rush2112","russia","samantha","sammy","samson","sandra","saturn","scooby","scooter","scorpio","scorpion","secret","sexsex","shadow","shannon","shaved","sierra","silver","skippy","slayer","smokey","snoopy","soccer","sophie","spanky","sparky","spider","squirt","srinivas","startrek","starwars","steelers","steven","sticky","stupid","success","suckit","summer","sunshine","superman","surfer","swimming","sydney","taylor","tennis","teresa","tester","testing","theman","thomas","thunder","thx1138","tiffany","tigers","tigger","tomcat","topgun","toyota","travis","trouble","trustno1","tucker","turtle","twitter","united","vagina","victor","victoria","viking","voodoo","voyager","walter","warrior","welcome","whatever","william","willie","wilson","winner","winston","winter","wizard","xavier","xxxxxx","xxxxxxxx","yamaha","yankee","yankees","yellow","zxcvbn","zxcvbnm","zzzzzz"];

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

Совершенно бесплатно и очень необходимо

Я очень редко пользуюсь аськой. Такие вот сообщения символизируют:

" _Р (15.12.2009 09:10)
Здравствуйте! Вас приветствует Российское посольство компании icq (icq.com).

За последнюю неделю нами была замечена активность Вашего номера в массовых нежелательных рассылках и рассылки ненормативных, и просто нецензурных сообщений, предположительно, он был взломан злоумышлениками и используется в незаконных целях.
Но так как ответственность за номер несёте Вы (в том числе и административную), то за все рассылки отвечаете тоже Вы, и никто другой.

Ваш номер не единственный, таких как Вы, более 500.000, поэтому Вам выдан личный идентификационный код: 70+201041+1212
Поэтому, Ваш номер временно заблокирован, для его разблокировки, сразу же после открытия сообщения отправьте SMS с текстом 70+201041+1212 на номер 2810. ("+" обязателен, пробелов между "+" и числами быть НЕ должно!)

Это SMS-сообщение СОВЕРШЕННО БЕСПЛАТНО, так как отправив его, Вы подтверждаете свои права владения на этот номер, свою личность.

В противном случае Ваш номер будет навсегда заблокирован через 1 час без дальнейшей возможности разблокировки или регистрации нового номера.
После отправки сообщения, Вам придёт код, запомните его и не давайте НИКОМУ, это предотвратит дальнейший взлом номера.

С уважением,
Администрация сайта и служба безопасности icq.com. "

С уважением, Администрация Всея Руси и Чебурашка.

воскресенье, 13 декабря 2009 г.

Есть инвайты на googlewave в количестве 22-х штук. Отдам в хорошие руки.


p.s. Пишите в комменты

p.p.s Просто так раздавать скучно. Буду отдавать за нелепые слова и фразы. Например, "пошли уходить", "макияжиться".

Free as in freedom


Выход Gnome из GNU Project.
Кратко: Филипп Ван Хуф, один из разработчиков Gnome, поднял на голосование вопрос о выходе Gnome из Gnu Project. Причиной такого решение стало то, что Ричард Столлман хочет, чтобы проект Gnome подчинялся правилам, согласно которым не допускается пропаганда проприетарного ПО. В частности, он предлагает фильтровать сообщения, публикуемые на Planet Gnome.


Мне кажется, что это совсем не согласуется с лозунгом GNU. Свобода должна относится не только к программному обеспечению. Как у Чехова: "В человеке все должно быть прекрасно: и лицо, и одежда, и мысли." А тут получается, что под прикрытием идеи, Столлман хочет оганичивать то, что за что борется -- свободу.




суббота, 21 ноября 2009 г.

Поиск по коду ядра

На этом сайте можно поискать что-нибудь в коде ядра и получить хорошо структурированный вывод, например, find_task_by_vpid
Ну, и grep Вам в помощь тоже :)