You are viewing [info]dzhonover's journal

Pain of Salvation

May 2011

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
293031    

Syndicate

RSS Atom
Powered by LiveJournal.com

Previous 10

Jan. 7th, 2020

hj

Обращение к читателю этого ЖЖ. Нота согласия.

     Давно хотел написать подобный пост, но все не доходило до действия. Что же, вот и выдался случай.
7 фактов об этом ЖЖ:
Открыть список )


DZhon`s LJ © 2007-2010, Eugene

May. 15th, 2011

Pain of Salvation

Куда приводит unsigned.

Сейчас поведаю об одной истории картечи в ногу (конечно же, речь о C++).

Пусть есть цикл, по которому нужно пройтись в обратном порядке. Случай не применим к итераторам, т.е. нужен счетчик.
Вариант 1: for(unsigned int moment = (time_block_size_ - 1); moment > -1; --moment)
Хороша попытка, но во время сравнения -1 будет приведен к unsigned и.. тело цикла не выполнится ни разу.
Вариант 2: for(unsigned int moment = (time_block_size_ - 1); moment >= 0; --moment)
Вроде бы все хорошо, но и теперь undefined behavior после того, как счетчик уменьшится с нулевого значения.

Сухой остаток:
for(int moment = (time_block_size_ - 1); moment >= 0; --moment)  -- безотказный вариант.

Как итог, могу сказать, что unsigned типы таят в себе большую опасность при неявном преобразовании от соответствующего signed аналога, поэтому иной раз стоит задуматься, так ли они нужны ? А нужны они, на мой взгляд, только в побитовых операциях, поскольку четко отражают семантику сдвига (старший бит не сохраняется, в отличии от сдвига signed значения). Однако и тут наиболее лучшим способом можно обойтись std::bitset, который на стадии компиляции определяет свой размер, либо boost::dynamic_bitset из Boost или QBitArray из Qt. Предпочтительнее, конечно, вариант от boost, поскольку имеется более широкий интерфейс (в том числе, перегружены сдвиговые операции).

Mar. 24th, 2011

Pain of Salvation

Демотивация

 sharpc.livejournal.com/67583.html — Если ознакомиться со всеми материалами по данной ссылке, то выводы для тех, кто себя считает даже начинающими программистами, будут неутешительными. Перекос в сторону C++/Windows, конечно же на лицо, но тем не менее.

Mar. 10th, 2011

Pain of Salvation

Плохой хороший дизайн.

Заметка иллюстрирует, как бездумное использование паттернов проектирования может превратить проект в лабиринт, даже Hello World. 

http://www.phppatterns.com/docs/design/hello_world_in_patterns

Mar. 6th, 2011

Pain of Salvation

Pascal.

      На хабре за него уже просят прощения при изложении алгоритмов! Пруф. А интересно, снижается ли количество загрузок PABC.NET ?

Feb. 18th, 2011

Pain of Salvation

Техническое.

      По настоятельным рекомендациям [info]bravit  начал бороться с «brain damage», полученным от Subversion, с помощью переключения на Hg. Пруфы: hginit.com.

Feb. 17th, 2011

Pain of Salvation

Рабочее.

      Понимаю, что отсутствие курса по DSP на прикладной математике вносит определенные прорехи в практических знаниях, а вот курсы матстата и функционального анализа заставляют испытывать уверенность при чтении связанной литературы. Да, разрешили пользоваться оплаченным аккаунтом к ieeexplore.ieee.org. На первый взгляд, очень интересная библиотека... Последний месяц прошел под постоянным овладеванием новыми инструментами (QNX, boost, Qt), что загоняет мысли в нескончаемый круговорот.
     Как бы попасть летом в Крым опять, почему-то эти мечты всплыли именно сейчас.
Tags: ,

Jan. 5th, 2011

Pain of Salvation

Программизмы.

      Ровно две статьи в этом месяце не оставили меня равнодушным:

Dec. 28th, 2010

Pain of Salvation

Мысли.

 После двух дней протягивания СКС в одиночку, с утра до вечера, думается мне, что жизнь становится одним большим кошмаром в бело-оранжевом цвете. Надо выспаться и забыть то, что закрыто за пластиком розеток и кабель-каналов.
Tags:

Dec. 23rd, 2010

Pain of Salvation

Диплом.

     Выдали диплом бакалавра, с излишней торжественностью и каким-то ощущением мимолетности мероприятия. С удивлением обнаружил, что, оказывается,  [info]bravit читал нам целый год ООП и С++ !

Previous 10