Опубликовано 24 июля 2009, 21:44 под Three Days Grace - Get Out Alive

Хорошо, когда ПАРЕНЬ1 умеет убеждать людей в чём угодно; плохо, когда в том же самом он способен убедить себя. Да-да, курение — это не привычка, он может бросить в любой момент, просто это глупо и бессмысленно. Только почему-то стоило взять у него зажигалку и отлучиться на полчаса2, как начинаются попытки прикуривания от плитки и тому подобное. На это смотреть, конечно, не настолько страшно, как на небритых матерящихся девственников, шутящих про секс, но всё равно получается как-то не очень.

Ещё очень плохо программировать на C++. Вот, например, смотрите. У меня есть метод, ресамплящий некоторое изображение до указанного размера, причём, если в качестве одного из измерений передать -1, оно будет пропорционально подогнано под другое:

uint8_t *MovieThumbnail::getRGBThumbnail(int &width, int &height)
{
    if (width == -1)
    {
        width = (int)((float)_avFormatContext->streams[_videoIndex]->codec->width
                      * ((float)height / (float)_avFormatContext->streams[_videoIndex]->codec->height));
    } else if (height == -1) {
        height = (int)((float)_avFormatContext->streams[_videoIndex]->codec->height
                      * ((float)width / (float)_avFormatContext->streams[_videoIndex]->codec->width));
    }
    // А тут ещё страшнее, да-да, там ещё сверху extern "C" {
}

А вот так я его хочу (а почему бы и нет?) использовать:

int width = 400, height = -1;
QImage img(movie.getRGBThumbnail(width, height), width, height, QImage::Format_RGB32);

Как вы думаете, какое значение height уходит конструктору QImage? Вопрос на самом деле риторический — если уж я об этом пишу, то очевидно, что туда уходит -1. В то же время даже такой пролетарский язык как PHP честно делает то, о чём его попросят:

function movie_getRGBThumbnail(&$width, &$height)
{
    $height = 200;
}

function QImage_img($RGBBitmap, $width, $height)
{
    printf("Width = %d\nHeight = %d\n", $width, $height);
}

$width = 400;
$height = 300;
QImage_img(movie_getRGBThumbnail($width, $height), $width, $height);

// Width = 400
// Height = 200

Кстати, в воспетом Пушкиным и Достоевским3 пайтоне4 передачи по ссылке как таковой вообще нет. В фичреквесте 2003 года один из разработчиков умело отнекивается безжизненным примером, предлагая записывать:

function f(&a):
    if (a > 10) then a = 10
    return (a*2)

var = 20
result = f(var)

как

def f(a):
    if a > 10:
        a = 10
    return a, a*2

var = 20
var, result = f(var)

Окончательно убеждаясь в том, что переоценённый набор имитирующих ООП макрорасширений к имитирующим язык высокого уровня макрорасширениям к ассемблеру не позволяет мне писать компактный код, раскопипащиваю:

MovieThumbnail::MovieThumbnail()
{
    _initAv();

    _videoIndex = -1;
    _frameAllocated = false;
}

MovieThumbnail::MovieThumbnail(const char *movieFile)
{
    MovieThumbnail();
    loadFile(movieFile);
}

MovieThumbnail::MovieThumbnail(const char *movieFile, int width, int height)
{
    MovieThumbnail(movieFile);
    setSize(width, height);
}

И снова оказываюсь неправ: g++ ругается на третий конструктор фразой, на которую гугл ничего релевантнее файла-перевода g++ не выдаёт. Удалив его и вызывая второй, получаю ошибку сегментации — первый так и не был вызван.

Дурацкие экзамены!
[1] — ПРИДУМАЙТЕ УЖЕ ЧТО-НИБУДЬ НАКОНЕЦ, НЕВОЗМОЖНО!
[2] — И ещё один миф разрушен: затулинка пол-второго ночи — это абсолютно не страшно. Неадекватных компаний действительно много (особенно для будней), действительно ничего не видно, но на двух несчастных забитых наркоманов, кроме каких-то упоротых чикс, внимания никто не обращает.
[3] — Поскольку молодые люди рюсскую художественную литературу прекратили читать ВООБЩЕ, для поиска подходящих устойчивых выражений приходится использовать Google, и вот что интересно: воспевают, в основном, города
[4] —
Комментарии (6)
anonymous
24 июля 2009, 23:31
S Q #1
в жопу С
в жопу С
s_mordvinov
25 июля 2009, 10:40
S Q #2
Ура! Ты написал про неё! *Боюсь сказать, что это боян*

А где отчёт о затулинка-пати?
Ура! Ты написал про неё! *Боюсь сказать, что это боян*TIRED** А где отчёт о затулинка-пати?
vas3k
25 июля 2009, 15:19
S Q #3
Блять, щас мою статью увидят тысяча читателей зелогина и гордо меня засмеют

Добавлено через 20 минут
А, да, на счет указателей в Python'е. В сях их основная задача - возвращение аргументов из функций. В питоне же я не вижу в них смысла, учитывая, что в нем можно возвращать несколько значений из функции в виде кортежа.
Блять, щас мою статью увидят тысяча читателей зелогина и гордо меня засмеют :-[O:-) Добавлено через 20 минут А, да, на счет указателей в Python'е. В сях их основная задача - возвращение аргументов из функций. В питоне же я не вижу в них смысла, учитывая, что в нем можно возвращать несколько значений из функции в виде кортежа.
themylogin
25 июля 2009, 15:27
S Q #4
В питоне же я не вижу в них смысла, учитывая, что в нем можно возвращать несколько значений из функции в виде кортежа.
http://www.boost.org/doc/libs/1_39_0/libs/tuple/doc/tuple_users_guide.html
<quote>В питоне же я не вижу в них смысла, учитывая, что в нем можно возвращать несколько значений из функции в виде кортежа.</quote> <a href="http://www.boost.org/doc/libs/1_39_0/libs/tuple/doc/tuple_users_guide.html">http://www.boost.org/doc/libs/1_39_0/libs/tuple/doc/tuple_users_guide.html</a> 8-)
vas3k
25 июля 2009, 19:11
S Q #5
http://www.boost.org/doc/libs/1_39_0/libs/tuple/doc/tuple_users_guide.html

Я обычно в таких случаях создавал массив и возвращал указатель на него
<quote><a href="http://www.boost.org/doc/libs/1_39_0/libs/tuple/doc/tuple_users_guide.html">http://www.boost.org/doc/libs/1_39_0/libs/tuple/doc/tuple_users_guide.html</a> 8-)</quote> *THUMBS UP* Я обычно в таких случаях создавал массив и возвращал указатель на него
themylogin
25 июля 2009, 19:28
S Q #6
В питоне же я не вижу в них смысла, учитывая, что в нем можно возвращать несколько значений из функции в виде кортежа.
И ещё раз: здесь как раз тот случай, когда смысл в них всё-таки есть.

Добавлено через 1 минуту
Кстати, в C++ и без всякого буста можно кортеж: вкладывать друг в друга std::pair Какая разница, один чёрт код беспонтовый получается
<quote>В питоне же я не вижу в них смысла, учитывая, что в нем можно возвращать несколько значений из функции в виде кортежа.</quote>И ещё раз: здесь как раз тот случай, когда смысл в них всё-таки есть. Добавлено через 1 минуту Кстати, в C++ и без всякого буста можно кортеж: вкладывать друг в друга std::pair :D Какая разница, один чёрт код беспонтовый получается
Добавить комментарий
Войдите через  Доступные тэги: <b>, <i>, <s>, <u>, <a href="">, <img src="" /> (загрузить), <pre>, <quote>
Навигация
Теги
1nsk C++ E-Business GNU/GPL-софт HTML/CSS ICQ KDE last.fm Linux Linuxnsk Live Lyceum game Microsoft Motivator MySQL P2P Party PHP Python Qt SEO Sibnet thelogin.ru Timelapse Web 2.0 Webstream Windows Wireless А я говорил! Авто Админ Аниме Атмосфера Безобразие Бизнес Блоги Боты Бред Быт Велосипед Весна Вечер Взлом Винил Винтаж Вконтакте Вода Воспоминания Гетто Гламур Гопота Горский Графити Грузовик Дача Двор Девушки Деньги Дизайн Домофон Драки Еда Железо Животные Затулинка Зима Игрушки Игры Идея Интересно Интернет Исследование История Казань Карикатура Квартира Класс Компьютеры Коромшук Коты КПК Кран Красиво Криминал Крыша Курение Лето Литература Лицей НГТУ Лохи Магнитофоны Маркса Мат Математика Машинный перевод Мегафон Менты Метро Мечты Мифы Мне стыдно Мобайл Можга МТС Музыка Мультикасса Мультики Мы помним Надписи Наука НГТУ Недвижимость Непоняятно Новосибирск Носители Ноутбуки Ночь Обидно Обман Образование Общественный транспорт Омск Опечатки Орфография Осень Парк Периферия Пиратство Плохо Погода Поезд Помойка Праздники Презрение Природа Провайдеры Программирование Протест Пьянки Радиотехника Растения Реклама Религия и вера Ретро Рисунок Руины Рэп Салют Серверы Сервис Сериалы Скринкаст Скриншоты Смешно СМИ Снег Собаки Совет Софт Спам Спасём Россию Спецтранспорт Стоп-ляп Страх Стройка Студяга Танцы ТВ Трамваи Транс Транспорт Уважаю Ужас Умный дом Утро Филдрепорты Философия Форум ФПМИ Хикки Хостинг Цитатник Школа 208 ЭГ Эксперимент Юго-Западный
Twitter 24-07-2009
Lorem Ipsum
WANNA MORE DRINK ПАЦАНЫ ВЫРУЧАЙТЕ.
Lorem Ipsum
The Beatles - Birthday - самый первый хардстайл-трек.
Lorem Ipsum
Оказывается какой-то долбоёб регулярно заходит на мою ферму :O.
Lorem Ipsum
Slushai me Mneniyata zabravi. Chui, za sinite skali si pripomni. Nov pat vseki den napred nameri kak obichashe da se katerish. Kotkata v orel dnes prevarni.
Lorem Ipsum
Пацаны, чо я узнал! Форма Бэкуса-Наура - не прихоть Хиценки, она действительно применяется :O (см. yacc).
Lorem Ipsum
Когда мне будет 20 лет, и я смогу просто так выкинуть две тыщи баксов на ебее за этих няшек из альбома, оно будет стоить в десять раз дороже >:o FFFFFFUUUUCK.
Lorem Ipsum
Усилитель НЧ двухтактный и обеспечи- вает выходную мощность - 10...12 Вт, при нелинейных искажениях в 10%.
Lorem Ipsum
Мои родители тряпки ешкув. Нельзя так воспитывать детей.
Lorem Ipsum
FFFFFFFFFFFUUUUUUUUUUUUUUCK.
Lorem Ipsum
чёрт, поцоны! и квеп тоже сотрите мой оттуда.