Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Ну чо, перцы, с релизом меня! Проект теперь доступен на специальном сайте в ретро-разделе "БК 0010-01/0011М". За сегодня набрал 15 просмотров. Редактор пирамидок, выпущенный 3 года назад, на сегодняшний день набрал там уже 16969 просмотров! Чо-то мне подсказывает, что текущая программка столько не наберёт. Ну хрен знает, посмотрим. Желающим могу тоже выслать авторскую версию. Правда, вряд ли она вам будет интересна, если только вы в своё время рубились в игры на БК0010-01, и вам в качестве ностальжи не терпицца поковырять какую-нибудь игру из децтва. А щас надо бухнуть. Ну и можно вернуцца к Рубику и прочим программам, которые я хотел бы написать. Только уже не помню, каким.
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Читаю, тут, короче, эту книженцию. Мне ваще не советовали, мол, книжка не для лохов. Но я ж самый умный. Разве я кого когда слушал? читать дальшеОтфигачил 94 стр из 219. Ну чо могу сказать. Понимать-то я понимаю, чо там написано. Но вот чтобы это применить, надо не один месяц фигачить на С++ каждый день. Тогда появятся проблемы и вопросы, которые там освещаются. А пока тухляк. Хотя, узнал вот про защиту от #include внутреннюю и внешнюю. Внешняя эт когда ты в своём файле пишешь, мол, если этот файл уже включён, то не включать, а если не включён - включить. Чо-то типа такого #ifndef bububu
#include bububu #define bububu
#endif //bububu
Но это ацтой и уже устарело. Гораздо круче внутренняя защита. Когда ты в кажном своём .h файле пишешь:
А у меня ж специальный мастер классы создаёт. То-то я думаю, чо эт он каждый раз хню какую-то пишет в начале и в конце. А оно вон оно что. Век живи - век учись.
Ну ещё много всяких штук там описано. Чую, не единожды придёцца энту книжку читать и вообще лучше отложить на будущее. А пока более децкие почитать. Про базовые понятия С++ и всё такое. Ещё они там про шаблоны вещают и обобщённое программирование. Я ваще не в теме. Ещё про библиотеку STL. Надо бы с ней ознакомиться, чую - дюже полезная штука, но всё как-то руки не дойдут. Эээ, да и книжек по ней я чо-то не встречал. Про Boost встречал, про Qt, про DirectX, OpenGL. Про STL тишина. Хотя все сцут кипятком.
Провёл тут исследование. Юзаю VC++ 6.0 и библиотеку MFC4.2. Она ещё до .NET появилась. Ну и я чо подумал, что может, когда .NET появилась, туда по умолчанию MFC и вошла и теперь ставицца, и мне надо просто на более новую версию перейти и она у всех в Винде уже будет. Хрен там. На работе Семёрка, на ней нашёл только MFC10.0. И если 4.2 от силы пару мегов, то эта уже от 5Мб. Ну и смысл на неё переходить, если один хрен, она не у всех есть, а функционала пока и так хватает.
Намедни вставлял CScrollView во второй проект. CScrollView, читать дальшеКак Вы помните, первая попытка закончилась неудачно - тогда я просто дописал в Class CMуAppView : public CScrollView вместо CView. Всё, естественно, наебнулось. В другой раз я был хитрее - почитал в тырнете, что надо везде по тексту ещё подменить CView CScrollView и это ещё не всё - в функции OnInitialUpdate() надо вызвать SetScrollSizes() и всё будет пучком. Ну, у меня в OnDraw() всё перерисовывает, OnUpdate() не используется ваще. Ни Initial, никакой.
Вооружённый этими знаниями, снова храбро поменял на CScrollView. Вылетело. Добавил в OnDraw() SetScrollSizes() - всё равно вылетает. Добавил фиктивный SetScrollSizes() в OnInitialUpdate() - взлетело! Скроллы прокручиваются, всё круто, но вот засада - мышь возвращает одни не те координаты. Прокручиваешь ты, не прокручиваешь - ткнул в угол окна, всегда буит 0,0. Ну, эт поправимо, думаю. Надо как-то эти координаты преобразовать. Из логицких в физицкие или типа таво. Есть функция DPtoLP. Вроде по смыслу подходит (вот так мы программы и разрабатываем. На интуитивном уровне! ) Воткнул функцию - ничего не изменилось. Полез в тырнет. Не сразу, но нашёл. Оказывается (!) бля, надо перед DPtoLP создать CClientDC dc и вставить вызов OnPrepareDC(&dc); Вот хер догадаешься, мы чо тут, телепаты штоле? После этого всё чудесным образом заработало и стало заебись.
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Справочная система, ссука, всю душу мне вымотала! Ваще, щитаю в создание справки идут те, у кого не хватило амбиций писать собственные программы. А я Программист, Творец! А не писарь какой-нить У нас в России справка никогда не котировалась, потому что все Программисты и Кулибины - всё и так знают.
Короче, в 2001 гаду мне уже доводилось пейсать справку в MS Help Workshop. Запомнилось, что там в файл rtf надо было сноски каким-то хитрым образом вставлять. В 2012м я тоже писал справку, но как - не помню, и почему-то получился файл .chm. И вот, написал я щас rtf файл, ищу в тырнете, как эти сраные сноски расставить. А там - хрень одна! Предлагают воспользоваться MS HTML Help Workshop, а как в просто Help Workshop никто толком и сказать не может, куда тыкать, чтобы эти сноски правильно получились. У меня где-то книжка валяется, но это ж её искать надо. Короче, морально сломался и решил заюзать HTML Help. Тем более, что на сайте MS нашёл энструкцыю, где всё по пунктам, как для дибилов. Сделал, запускаю, почему-то кажет последний топик и всё. Ещё пошукал, нашёл, где товарищ на русском всё объясняет. Оказывается, я в свойствах там где-то не тыкнул топик по умолчанию. Наконец-то получилось. Ура, товарищи. Программа вроде простая, поэтому про неё мало чего в тырнете написано. И сразу парадокс - мало чего написано, поэтому если вдруг чего непонятно, хрен разберёсси.
Также жутко бесит то, что программа же развивается и постоянно в справку надо чо-то новое дописывать. Представляю, как в крупных конторах ибуцца справописы - никто ни хера не знает, а кто знает, не хочет рассказывать, а справку писать надо.
Ваще думал брательнику падруги поручить это для общего развития - полезно для концентрации внимания. Там же все файлики нужно в правильные места повтыкать и в итоге получить не хуйню какую-то, а осмысленный результат. А это возможно, только если все предыдущие шаги проделать правильно. А щас чо-то думаю, нее... не осилит он такое. Впрочем, всё равно надо попробовать. Пусть знает, что в жизни не всё мёдом намазано.
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Я тут почитал книжки про эффективное программирование на С++, улучшение стиля и всё такое. И выяснил, что пишу в стиле старого доброго С. Широко юзаю #define, строки в стиле char[] и прочие такие штуки. Причём, #define юзаю не только для констант, но и для группы констант - например коды цветов кубика от 1 до 6 у меня сделаны именно так. В то время, как давно уже изобрели enum, а после него ещё и map какой-то. Ничего этого я не знаю. Впрочем, это неважно. Главное что есть ты у меня - результат! Работает же, сцуко, чего ещё надо?
Периодически надо что-то добавить, а там if. Добавляю по две-три одинаковых строчки в обе ветки if. Чтоб не сломалось уже работающее, а то в лом снова отлаживать. Ну, правда, если 5-6 строчек, проще уже функцию новую создать и её вызвать в обоих ветках. Раньше я ваще такое щитал недопустимым. А щас - в debug-версии прога занимает у меня 140Кб. В release версии 25Кб. Это ещё не всё. К ним статически приделывается библиотека mfc в 2Мб. 2 миллиона байт! Эти мои 2-3 лишних строчки никто никогда в жизни не заметит.
Щас заканчиваем второй проект, вернёмся к Кубику. Тем более, новые идеи появились. Появились-то они появились, токо я пока не очень понимаю, как их реализовать в программе. Вот как придумаецца что-то конкретное, тогда да. А пока читаем про эффективный С++
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Сначала про Кубик. осторожно, многа букафВот, к примеру, решили мы построить дерево состояний. Сколько начальных (и конечных) состояний у кубика? Наивный четатель сразу скажет - одно! Когда все грани одного цвета! И частично попадёт пальцем в небо. Потому что количество состояний зависит от точки зрения. Если, к примеру, кубик представить, скажем, массивом из квадратиков на каждой грани, то таких состояний окажется 24. Ну, например, одна грань может смотреть в шесть сторон, а 4 прилегающие грани будут ориентированы 4 способами. Итого 6х4=24. Для нас это важно, т.к. допустим, база состояний может занимать 24Гб и та же самая база может быть 1Гб! Разница очевидна. Чтобы сократить базу, надо зафиксировать кубик в пространстве и рассматривать перемещения граней только относительно самого кубика. Раньше я думал, что это можно сделать только для кубика 3х3, т.к. у него есть центральные квадратики, которые типа неподвижны, а в 2х2 таковых не имеется. Но в пятницу на меня снизошло озарение! Если представить любой элемент кубика неподвижным, то остальные крутятся вокруг него. Количество "ходов" в этом случае для кубика 2х2 сокращается с 12 до 6. Для 3х3 с 18 до 12. Что и приводит, по идее, к сокращению базы в 24 раза. Но это ещё не всё! Поскольку этот зафиксированный элемент всегда на одном месте, то можно не кодировать его местоположение в описании состояния кубика. Таким образом, если в кубике 2х2 имеем 24 квадратика 6 цветов, это по 3 бита на цвет. Каждый из 8 подвижных элементов кубика имеет 3 квадратика цвета, саатвецтвина, если мы кодируем 24, то 24х3=72 бита, а (24-1)х3=63 бита, а это, в свою очередь позволяет нам упаковать 1 состояние в 64-битное длинное целое (или как оно там называется) с которыми современные процессоры давно работают. Таким образом, два разных состояния кубика можно сравнить всего за одну операцию! Это здорово упрощает реализацию дерева состояний и поиска в нём.
Правда, несмотря на такие серьёзные прорывы в теории, к появлению алгоритма построения дерева это до сих пор не привело. Но работы ведуцца! ))) Теперь про второй проект. осторожно, ещё больше букафВ принципе, я его почти закончил. Но вот это блядское "почти", наверное, будет преследовать меня всю жизнь. Потому что всегда есть что-то доделать и никогда не знаешь, когда стоит остановиться. Но опыт растёт. Вот, значицца, несколько случаев из практики праграмиста.
Там у меня есть с десяток параметров - масштаб по Х и У, цветность, два вида ширины и формат вывода - я расщедрился, аж 16 флажков - что печатать, а что нет. Ну, хрен знает, чо там этому пользователю в голову взбредёт. На всё есть умолчания, но если они тебе не подходят, и при запуске надо каждый раз настраиваться - это заёбывает. Решил применить проверенное решение - .ini файл. Раньше я получал каталог, откуда запущена программа, добавлял туда имя программы в виде ...+"AppName.ini\0", открывал этот файл, если он открывался и не парился. Но сейчас я смекнул, что это не очень правильно, во-вторых - слишком сложно. Дотёмкал, что возможно это имя файла где-то уже есть. Скорее всего, в объекте Приложения. И, о чудо! Оно действительно там есть. Причём, не только имя exe файла, но ещё и имя ini файла. Не знаю, по каким критериям оно там ращитывается и чем отличается, у меня оба этих имени были одинаковы. И строку ".ini\0" всё равно пришлось прибавлять. И каталог получать. Но всё равно - так правильнее.
Дальше есть функция - GetPrivateProfileString, которая находит и читает строку из ini файла. Решил подробнее про это прочитать, а то какой-то ебаторий - найди файл, открой, прочитай строку, преобразуй в число. Посмотрел сначала объект Приложения. В нём есть функции GetProfileBinary, GetProfileString, GetProfileInt, которые считывают параметры из реестра или ini файла. Но примеры почему-то только с реестром. Это нам не подходит.
Смотрим LoadPrivateProfileString. Вот те на! Написано, что функция устарела не рекомендуется и используется только для старых 16-битных Win98-приложений. И ini файлы тоже устарели, щас рекомендуется пользоваться реестром. У меня внутренний конфликт. С одной стороны - это правильно. Реестр всегда в памяти, чо там прога будет дрочить жёсткий диск, считывать при каждом запуске 10 параметров, открывать-закрывать ini-файл, в то время как она может не только читать из реестра, но и писать в реестр, сохранять своё состояние. Пользователь настроил прогу, закрыл, открыл, а она всё помнит. Круто же! НО!
1) От админов я наслушался всяких страшных историй про криворукие программы, которые лезут в реестр, гадят там, в итоге реестр засирается, и его приходится чистить, а уж если там сломается что, то и Винду переустанавливать. И вообще - чем меньше туда лазишь, тем лучше оно работает.
2) Чтобы прога имела свой раздел в реестре, это надо делать полноценный инсталлятор, полноценное удаление. Стоит ли так задрачиваться из-за проги в 40Кб? Скопировал на диск, запустил, не понравилась - удалил. Никакого гемора.
Оставил пока .ini файл. Зато обнаружил ещё функцию GetPrivateProfileInt, которая тоже устарела, но мне не надо строку в число превращать - она сразу число считывает.
По идее, ini файл надо считывать в объекте Приложения. Но вот незадача - в основном переменные у меня из объекта Вида, а объект Вида из объекта приложения почему-то оказывается недоступен, хотя я пытаюсь к нему достучаться уже после макроса RUNTIME_CLASS, который эти объекты, типа, создаёт. Поэтому я, не долго думая, загрузил инишник прямо в конструкторе Вида. Уж там-то Вид доступен. И ещё одну функцию хотел реализовать, но переменная для неё оказалась из объекта Документа. Это ж чо, подумал я - надо щас или доступ к Документу получать, но это не очень правильно, и если он создан, то поздно переменную инициализировать, а если не создан, то хрен инициализируешь. Второй способ прочитать её в конструкторе Документа. Это ж чо, бля - опять проходить там этот ебаторий с открытием .ini файла? Из-за одной переменной? Нее, на хер, на хер! И не стал эту функцию делать.
Но это ещё не всё. Дело было вечером. Решил я, млин, переименовать своё приложение. Но так, чтобы старое название нигде не осталось с гарантией. А это не так просто, как кажется. Раньше как было? Пишешь компилятору или компоновщику другое имя выходного файла и готово. А тут же ini файл как-то называется, названия классов, ресурсов. Где-нибудь обязательно дерьмо да вылезет. Решил переименовать проект. Ну там, все классы и само приложение. Ооо, это то ещё шоу! В VC++ 6.0, оказывается, нельзя просто так взять и переименовать целый проект. Выручает то, что все эти их dsp, dsw просто текстовые файлы и их можно редактировать. НО! Во всех файлах сразу он заменять не умеет. Искать может, заменять только в одном. Пришлось по одному файлу фигачить. А поскольку файлы переименовываются тоже, а я не отключился от системы контроля версий или как оно там называется SVN или VSS, в общем, он видит, файлы изчезли, вместо них какие-то новые, по содержимому подозрительно похожие на старые, частично это запомнил. Я вижу такое дело, создал новый проект с новым именем, загрузил туда старые файлы и подключил к VSS. А VSS чо-то не ведётся, видит, что это старые файлы. Надо было создать новый проект, подключить его к VSS, а потом уже загрузить новое старое файло и сделать check in. Так я в конце концов и сделал. Но много ругался, хотя, в общем. сам виноват.
Начал читать тут книжку 55 полезных советов для С++. В оглавлении был совет проверить operator= на равенство самому себе. Ну, типа когда присваивание а=а. Я подумал и ввёл у себя такую проверку. Потом ещё подумал - в моём случае ничего особо страшного бы не было. Ну скопировал бы он сам в себя, ну и чо. Но всё равно замечание полезное. Чо ещё - до хрена времени отнимает это программирование. Некогда становится ни в дайрик писать, ни тырнет читать, ни много чего ещё. Но у тебя будет С++. Он заменит тебе всё. Ко мне подруга приезжает, а у меня класс не дописан или функция ошибку выдаёт. И я весь вечер об этом думаю. Хотя ей не говорю, конечно. Я ей про свои мегапрограммы даже не говорил ещё, просто сказал, мол, читаю про программирование.
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Не знаю, рассказывал или нет, по-моему нет. Короче, мне ж ещё в прошлом году, когда вся эта хуйня началась, врачи сказали пить больше воды. Ну там, таблетки прописали мочегонные, а чо гнать-то, если воды нет? Ну и вообще. А ещё на работе в соседней комнате есть кулер и в другой соседней комнате уже есть кулер, а наши просто брали бочку кулерную и из неё наливали. Ну вообще это тяжело из 19л пластиковой бутылки наливать. Руки крепкие нужны и долго всё это происходит.
Дома тоже хуйня - покупал 5л баклажки, но это пока её откроешь, пока нальёшь, потом надо поставить, закрыть, и так несколько раз в день. И вот, поехали мы в Турцию на яхте. Всё никак не напишу, а надо бы. Первый день, закупка продуктов. Капитан хочет купить 20литровые баттлы, потому что они дешевле. Я как представил, как мы их при качке будем наливать, это трындец. Не, говорю, давай хотя бы 10л. А всё оказалось просто. У него бутыль стоит внутри яхты привязанная за горлышко и поэтому не падает. А сверху одета помпа с краником - на кнопку жмёшь и она качает. Оченно мне эта идея понравилась, и я не мог дождаться конца отпуска, чтобы у себя её реализовать. Причём сразу - дома и на работе, т.к. и там и там это будет удобно. Приехал, пошарился по тырнету. На эти помпы есть переходник для 5л канистр, но я так подумал, чо там из 5л накачаешь? Чаще помпу переодевать придётся. И купил домой 19л бочку и две помпы. Турецкие по 900р. (Щас, наверное, запрещены в РФ) Были ещё российские и китайские, подешевле, за 600р вроде. Хотел было их купить, т.к. 900р много за кота в мешке - я ж не знаю, как эти помпы себя проявят и вообще, будет ли это так удобно, как на яхте. Но продавец сказал, что китайские похуже, а российские тоже делаются в Китае и ещё хуже китайских. Поэтому я решил не выёбывацца.
В общем, прижились и дома, и на работе. Некоторые коллеги знали о существовании таких помп и никому в голову не пришло, что их можно к нам на работу купить и поставить. Странно, да? В общем, удобная штука оказалась - гораздо легче через краник чайник наливать, чем изображать из себя Геракла, целясь в чайник 19л бутылью. Дома тоже заебись - не надо постоянно открывать, закрывать, поднимать и всё такое. Вот так выглядит, мож кому пригодится ценная идея
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Читаю надпись на сосисках "усилитель вкуса глютамат натрия". А есть такие, кто "вкус" произносит как "укус". Ну и вообще слова с "в" в начале. Вот они наверное ржачно прочитали бы. Гыгыгы, "усилитель укуса". Сожрал и батарею перекусил пополам!
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Я вот чо подумал-то. Сегодня вдруг с утра. Шо мы вот на катамараны ездим уже пять лет, этот вот шестой год поедем. И из всех, кого мы туда вывозили, никто потом сам туда второй раз не поехал. (А мож поехали и нам не сказали) С нами повторно приезжали, и не раз. Паша, Наташа, а вот чтоб самомим потом съездить, я такого не припомню.
Какой из всего этого следует вывод? Ну, общеизвестная истина, чо. Те, кто хотел, уже давно сам сделал, а те, кто пока не сделал, потому и не сделали, что не хотели. Ты конечно можешь их пнуть, они продвинутся чуток, но как только перестанешь пинать, всё равно остановятся. Хотя, конечно, возможны исключения, шо мол, кого-то подтолкнули, а то он всё не решался, а дальше уж он сам. Но мы пока что на таких не наталкивались, как показывает анализ. Кстати, можно подсчитать, скоко раз и с кем мы там были. Я-таки подсчитал. У меня в Дайре почему-то ацуцтвует одна запись о нашей поездке на 1 день 19.05.2013. Тогда с нами ездила падруга падруги Оля.
Итого, за всё время (5 лет) мы привлекли 19 человек, из которых: 14 приезжали 1 раз 3 приезжали 2 раза 2 приезжали 4 раза Ну а мы с подругой приезжали 12 раз. А всего я там был 23 дня, а подруга 18. Вот такие мы моряки с Москва-реки! Из этих всех вот 14 человек 3 потом пошли с нами на яхте. Короче, ладно, мы отвлеклись. Не получается у нас, пмаешь, привить парусный спорт в массы. Уж если с катамаранами так дело обстоит, чего уж о яхтах говорить. Такие дела, в общем.
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Сегодня пришёл на работу с утра, открываю комп, а там - аж три окошка! 1) Опера предлагает поставить новую версию. 2) Каспер какие-то новости мне в рыло тычет. Средство против планшетов продаёт и предлагает зарегистрироваться. 3) Винда предлагает обновиться до 10. Бесплатно.
Да что ж такое-то бля, совсем они там охуели, что ли? Я вот до этого юзал пирацкого Каспера и проблем не знал. Хотя, конечно, совесть покалывала иногда. Потом, так получилось, что надо было поставить лицуху. Купил лицуху. Что я за это получил? Ебучий магазин softkey начал забрасывать мой ящик всякой хуйнёй, теперь я продлил лицензию, он мне предлагает заново зарегистрироваться. Что за хрень? Я уже зарегился, когда покупал впервые. Сейчас всего лишь ввёл ключ продления, как я думал, а он я не знаю, регистрацию мою проебал штоль куда - предлагает теперь зарегиццо регулярно. Теперь ещё и новости начал показывать.
Винда заебала тоже своей простотой. Бля, ну если я десять раз ответил "нет" на предложение поставить Win10, наверное блядь и в одиннадцатый раз я отвечу то же самое. Сделайте уже какие-то выводы. С Оперой та же хуйня. Если не нужна мне ваша новая версия. Даже бесплатно. Меня старая вполне устраивает. Чо, вот, заёбывать-то?
Надеюсь, на "бесплатный" Линукс эта зараза не перейдёт, потому что это пиздец, бля, будешь сидеть одни рекламные окошки читать.
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Слушал тут Малышеву - программу про здоровье. Она говорит, мол, внезапная агрессивность это может быть опухоль лобной доли мозга.
Это ж чо получается - если человека как следует заебать... он продемонстрирует все признаки опухоли мозга?
Или он буит поначалу так: "Нет, нет, нельзя, так ведут себя те, у кого опухоль, а у меня же всё в порядке, да?..." а потом "А гори оно всё синим пламенем! УМРИ ПАДЛАААА!
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Обычно выражение лица у меня хмурое. Так проще - меньше доёбываться будут. Периодически в лифте или в маршрутке я езжу с компашками щебечущих девиц, которые обсуждают свои проблемы, хихикают и всё такое. Раньше я просто осуждающе хмуро смотрел на них, точнее, сквозь них, ну не в сторону же мне смотреть? И возникало такое чувство - непричастности, чужеродности штоле, диссонанс. И однажды я понял: это я где-то в глубине думаю "какие же они всё-таки дуры!" и с тех пор в таких случаях стал проговаривать это про себя. Становилось легче, я смотрел на них уже с неким оттенком превосходства, при этом лицо чуть разглаживалось. Разглаживалось, потому что на самом деле я так не думаю, но забавно притворяться перед самим собой, что ты такой вот надменный говнюк, в то время, когда ты знаешь, что ты не такой.
И в какой-то момент я понял, что в этой фразе есть некая незаконченность. Полностью она должна звучать так: "какие же они всё-таки дуры, и какой же я всё-таки умный!" - и в этот момент у меня сразу улыбка через всю харю - я стал позитивным членом общества, достигнута внутренняя целостность и гармония! И поскольку надо чаще улыбаться, теперь я проговариваю это про себя каждый раз и при этом счастливо улыбаюсь.
Люди, которые всем улыбаются на улице - теперь я знаю, что они при этом думают.
Если меня прямо спросить, мол, ты правда думаешь, что они дуры, а ты типа сумрачный гений? Я отвечу: конечно нет, и поскоку сам себе уже отвечал, то ответ мне известен заранее. Темы у них самые обычные, сам такое тыщу раз обсуждал. А чо они - бином Ньютона должны обсуждать? Тогда я буду мысленно ругать их за то, что я тупее их. Но это если вдуматься, трезво взвесить факты и всё такое. А вот навскидку, подсознательно штоле, я себе ситуацию представляю так, что они-то, мол, херню мелют, а я всегда думаю о Высоком! Это наверное д'Артаньянство.
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Хочу закодить одну херню, но не знаю, как. Конкретно - панельку для вывода текста. Панельки такие существуют, я сам их видел неоднократно, хоть и не в каждой программе. В том же VC++ 6.0 внизу панель Output. Мне нужно то же самое, токо без вкладок. Чтобы можно было менять размеры и докить. Довольно быстро нашёл, как это сделать ещё во вторник. Сделал на основе CDialogBar, но она не отцепляется от края окна. Целый день читал вчера форумы, нашёл: support.microsoft.com/en-us/kb/185672 Сделал. Должна отцепляться. Программа вылетает, падла, при запуске. *pDockBar=NULL где-то там в глубинах MFC. читать дальшеСегодня ещё посмотрю, мож чо напутал там. Короче, если сделать вот так:
m_wndDialogBar.SetBarStyle(m_wndToolBar.GetBarStyle() | styles ...); а потом DockControlBar(&m_wndDialogBar) - то не вылетает и работает. Узнал случайно - забыл исправить, и оно заработало. Сегодня ещё посмотрю на свежую голову, мож чо напутал, но вроде всё так. Оно и раньше вылетало в этом месте на DockControlBar - до этого у меня были попытки во вторник. На вечер среды ничего не изменилось - стабильность, уже хорошо.
Ну и, обуреваемый сомнениями, я подумал, чо я время трачу, читаю всякую хрень, когда можно спросить у знающих людей. Конечно, рано или поздно я найду, как это обойти или сделать, но нафига тратить время, когда всё уже придумано и не раз. Мне ж не сама по себе панель нужна, а потому что она используется в программе и так было бы удобнее. В общем, морально сломался - зарегился на cyberforum.ru. Там у них всё так пафосно, нахуеверчено пздц, сразу видно, программисты писали. Мне пришло приветственное сообщение - в папке 1 сообщение из 0 допустимых. Папка сразу переполнилась, гыгыгы. Первые два дня и до пяти сообщений вообще минимум прав, потом немножко побольше. Видно, спамеры их совсем зоебали. Ну, я молчу, не они ж ко мне пришли, а я к ним. Вечером, после работы задержался, написал вопрос, думал, приеду домой, а там уже ответ готов. Вопрос-то хуйня, этих панелек в винде полно, она вся из них состоит. Приезжаю домой - 20 просмотров, 0 ответов. На утро ничего не изменилось. Присмотрелся, а там вопросы рядом "как передать переменную INT в String?" "Как из текстового поля получить значение?" дааа, думаю, если тут все такие программисты, ответа придётся ждать долго. Эт я ещё написал в раздел "Visual C++", а есть раздел "C++ для начинающих" - туда я побоялся лезть В общем, чо-то я разочарован этим MFC и вообще программированием. Перестал про палитеку читать, думал программированием отвлекусь, сунулся - а тут тоже говно!
Есть ещё rsdn.ru мож там памогут, ну и панелька - не единственный вариант, можно много чего придумать, просто с ней было бы удобнее. Есть ещё Self-Training Kit по экзамену 70-016, я думал - на хер он мне, оказывается, и его полезно почитать, там тоже инфу можно найти когда какой класс использовать и всё такое. Век живи - век учись updateupdate:Щас на работе переделал - всё работает. Но не меняет размер. Накопал вот это: support.microsoft.com/en-us/kb/143255 Применил - работает! Меняет размер! Охуеть. Причём, как это работает, представляю оччень приблизительно. На уровне "как-то оно там работает и всё". Дома ещё попробую то же самое. Если дома вылетит, а тут нет, тогда жопа. Но в любом случае, к вечеру мы бум знать больше! )))
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Пн Вт оба дня сидел дрючил второй мегапроект. Вроде бы и закончил, но всегда есть над чем поработать, причём, инженерная мысля часто приходит не сразу. читать дальшеВ пн сел переписывать то, что наваял за выходные. А то больно сложно получилось. Как только надо что-то добавить, всё, ступор сразу. Переписал, правда, не до конца. Проще получилось и возможности прибавились. Я бы и дальше писал, но - незаметно подкрался ДР. Я-то праздновать не планировал особо, но подруга хотела, чтоб всё, как у людей. В общем, проще отпраздновать. Сижу я, значит, бухаю, а мысли далеко - в программировании
На следующий день встал, полчаса или час сидел тупел, не мог цикл написать. Ещё прилёг поспал, потом справился. И до позднего вечера снова херачил. Оно вроде и несложно, но когда начинаешь отлаживать, на всякие дебильные ошибки много времени уходит. Пока там докопаешься, что и как. Но опыт быстро приходит, вспоминаю старые трюки и время поиска ошибок неуклонно сокращается. В принципе проект готов, но не мешало бы его чуток улучшить.
Некоторые наблюдения за последнее время. Я ваще до этого много лет мутил на Ассемблере, потом на С немного, Паскаль там и подобное. Но всё это были языки процедурные. И такой подход настолько вошёл в привычку, что трудно мыслить по-другому. Настало время переходить на С++. Читаю, значит, эту объектно-ориентированную премудрость. Умные книжки всякие. Из тех, что были доступны в университетской библиотеке. Афтары, значит, приводят пример. Вот, мол, возьмём строки. В С это будут обычные строки, а в С++ можно сделать умные строки, которые, типа, сами знают свою длину и могут сами себя распечатывать. В разных книжках похожий пример. Я эту муть почитал и говорю - а на хрена нам весь этот огород городить, если мы можем в старом добром С тупо распечатать эти строки? И забил на этот С++, не впечатлился. Кроме того, они ж там втирали про инкапсуляцию, наследование и чо-то там ещё - третий кит ООП. Типа, класс это шаблон для выпекания объектов с данными и кодом для их обработки. Мне и втемяшилось, что класс надо создавать там, где у тебя есть много однотипных объектов. Ну да, встречались у меня в программах объекты, которых много. Но остальных-то - мало. И чо с остальными тогда делать? И вот, через примерно 20 лет я осознал, что класс это не только форма для объектов, а ещё кусок программы, относительно обособленный от других таких же кусков. За счёт чего его можно понемножку менять без особых последствий для всей программы. И сам подход ООП на это и нацелен. Если б я такое прочитал 20 лет назад вместо хуйни про строки, то может вся жизнь по-другому бы сложилась Опыт написания более менее объёмных программ у меня был, и пишутся они как раз по небольшим кусочкам. Таким образом, упрощается развитие ПО, а ПО, что бы там ни говорили, дожно развиваться. Не переписывать же каждый раз заново одно и то же.
Если бы книжка 70-016 попалась мне в 2000-2001 году, тоже мож вся жизнь по-другому бы сложилась
Раньше под каждый проект создавал отдельную рабочую область - Workspace. И потом, как дурак лазил туда-сюда, если надо было подсмотреть, как я там чо сделал. Сейчас в одну область добавил второй проект - жизнь стала намного проще!
Общался с коллегой по работе по поводу С++. Он говорит, писал в универе сначала на С, потом С++ у них был. - Чо, говорю, не тянет временами чо-нить написать? - Ты чо, я уж всё забыл! - Дык я тоже, думаешь, помню? Каждый раз лезу в тырнет, как там этот сраный do-while пишется или чо там? repeat until? Т.е. помню, что там что-то такое есть, но как оно в деталях, хрен знает. Это хорошо, щас тырнет есть, а раньше ваще, по каждой такой херне лезешь в книжку, как дурак. Времени уходило - уйма. Да и щас, в общем, тоже много уходит.
Короче, необязательно знать язык или там уметь чо-то на супермегауровне. Главное - хотеть писать. И остальное всё придёт.
Решил вчера заменить класс CView на CScrollView. Ну и заменил, как сказано в тырнете, class CMyView : public CView на CScrollView. Скомпилилось нормально, без ошибок. Запускаю - вылетает. Что за хрень? Оказывается, надо не в одном месте заменить, а во всём коде упоминания CVIew на CScrollView. Ну кто бы мог подумать?
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
А я вот токо щас заметил, что если нажать Ctrl+B, Ctrl+I, Ctrl+U, Ctrl+S, то в Дайрике шрифт будет жирный, курсив или подчёркнутый. Раньше мышкой тыкал, клавиш не замечал. А мож только недавно сделали. Ну, теперь быстрее получится набирать
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
В общем, короче, замутил я второй проект на С++! Кубик пока не закончен, ну и хуй с ним, логично же, не? Точнее, затык у меня пока возник с Кубиком, там осталось всего ничего - сохранение и Дерево. А второй проект я задумал давно - ещё неделю назад, если не две, и он привлекал своей простотой. Собсно, делать там было особо не хер, потому и решил отвлечься. Проект предназначен для эээ поиска спрайтовой графики в играх для БК. читать дальше. Многа букаф Всё проще, чем кажется. Значит, давно-давно, лет 25-30 назад был такой комп БК 0010-01. И у меня тоже он был. На ём были игры ну и проги всякие. Прошло время, людей пробила ностальгия, и они замутили аж несколько эмуляторов этого компа и образы игр залили в Тырнет. Теперь можно запустить под Виндой эмулятор и это буит, как если бы ты играл на том компе, токо тут возможностей даже больше - можно сохраниться в любой момент, запустить быстрее/медленнее. Ну и короче, года три назад я запилил для этого эмулятора редактор Пирамидок (игра там такая была). Грозился переписать и сами Пирамидки под Винду, но сдулся. А мечта осталась. Так вот, чтобы проще изучать код оригинальной игры, нужно знать, где собсно код, а где картинки. А для этого и пригодицца моя новая программа. Всего и делов-то - отобразить на экран содержимое двоичного файла!
И вот, в эту субботу меня прорвало. Сначала я изучал, как отобразить содержимое на битовый массив в памяти, потом создать контекст, совместимый с контекстом экрана, чтоб по-быстрому на экран вывести, чтоб не моргало. Потом, думаю - хер с ним. Чо нам этот массив - по экрану таскать штоле надо? Отобразил один раз и дело с концом. Не хочешь, чтоб моргало - окно по экрану не дёргай и всё пучком буит. Думаю, надо попытаться для начала хоть как-то отобразить, мож ни хрена и не выйдет. И вот, всю суббоу просидел. Замутил хитрую геометрию, там за один цикл вся эта херня подсчитывается и выводится. А там же надо добавлять постоянно новое и новое. И тут я завис, сидел, втыкал, как же оно у меня работает и как добавить, чтобы ничего не сломалось. Зря я так. Уже в метро потом понял, что можно было и попроще написать. Мож в будущем перепишу. Оно ж как - перед тем, как написать элегантно и кратко, нужно написать хоть как-то, и возможно не один раз, а потом ты конечно въедешь в тему и придут всякие идеи по оптимизации.
Ну вот, целый день в субботу потратил, вечером смотрю - хуйня какая-то получилась. Ни хера там не видно этих спрайтовых картинок, а если и видно, то нужно обладать недюжинной фантазией, чтобы это разглядеть в скопище точек или заранее знать, что оно там есть. Расстроился, думаю, бля, такая идея хорошая была, а в итоге говно получилось. В воскресенье утром иду в расстроенных чувствах. На что задрачивать? В первой проге сложности, вторая говно. Занялся всё-таки второй. Решил уж - доведу хоть до какой=то кондиции, будет более менее законченный проект - там по мелочи надо было доделать. И вот, решил протестировать свою функцию, которая на экране рисовала. А функция-то глючная оказалась! Я её написал вчера и особо не проверял. Кажет и кажет. Так все крутые программисты делают Ладно бы она ничего не рисовала, я бы конечно это заметил и полез чинить, а так она вроде бы рисовала, но коряво, с искажениями. А я чо, в курсе, как там эти спрайты должны выглядеть? Я их видел в последний раз лет 20 назад. В воскресенье я додумался написать простой тест.
Вот вам абстрактное искусство:
Видите? Битики не все прорисовались. Не видите? Ну, а если я вам скажу, шо это строка из 8 байтов, в каждом из которых пересчитываются целые числа: сверху вниз 0, 1, 2, 3 и так далее до 255. И видно, например, что "5" (6я линия сверху) должна состоять из двух битов, а он там куда-то пропал. То же и "9" и "13". Если проще - то картинку по горизонтали пересекают чёрные полосы. Их быть не должно, линии сверху вниз идут непрерывно; как только они кончаются, левее начинается новая. Стал ковыряться. Разобрался. Вот результат:
Уже лучше, но в нижней половине опять херня какая-то. Она должна быть ещё белее. Ещё поковырялся, ещё ошибку исправил. Вот результат:
А как функцию починил - сразу графика засверкала, всё чётко, красиво, видно и идея сразу заебательской показалась - какой я молодец, что до такого додумался - такую программу написать!
Примеры в студию. Вот символы. Слева выглядят, как будто их пытали. Пустое пространство слева - это должна быть карта пирамид, которая в нём угадывается с трудом. Справа всё чётко и карта отлично прорисована.
______________
Ключ было-стало. Я когда в первый раз увидел (слева), подумал, что он типа на чём-то висит, что ли. А справа уже понятно, что это разные картинки были.
А тут мы видим сверху вниз фрагмент кирпичной стены, алмаз, торчащий кинжал, кирка, блеск алмаза вверх, влево, вправо, лестница в одну и в другую сторону (по одной ступеньке), летящий кинжал в разных положениях.
А вот сама игра, чтоб было понятно, об чём речь. Там вы можете найти лестницы, кирки, алмазы и прочее "в действии". Белые цифры это не из игры, это я уже сам потом нарисовал.
В итоге целый день дрючил вторую прогу, до первой руки не дошли. В субботу, кстати, открытие совершил. Оказывается, если на главную панель в программе добавить кнопку, и сделать у себя обработчик события, кнопка прекрасно работает! До этого я думал, что только с меню так можно, а обработчик стандартной панели где-то запрятан, а кнопки же не принято по одной обрабатывать, принято целой кучей сразу. В общем, сделал, и очень прекрасно всё получилось - с кнопками и обработчиками. Со всем остальным ещё предстоит поработать. По каждой функции приходится инфу смотреть. Пока лазил по всяким тырнетам, наткнулся на кучу книжек про С++ и их обсуждение. Вот, к примеру, один перец пишет www.codenet.ru/progr/cpp/ccpp.php Не так крут, говорит, этот ваш С++, как его пытаются изобразить. Серьёзные проекты лучше на С писать, потому что там ошибки легко выловить, а в С++ сам компилятор сложный. А чего я тогда тут дрочусь с С++, спрашивается? С другой стороны, у меня и проекты все - мои собственные, а их я могу на чём хошь писать. Почитал значит список книг про С++ и обсуждение. В общем, книжки 2006, 2002 и прочих лет уже устарели, как щитают тырнет-комментаторы, и надо учить новое. А новое это С++11 и С++14. Видимо С++11 уже тоже устарел, поэтому надо 14й, а скоро выйдет 17й. Это ж получается, надо не работать, а токо сидеть, про С++ читать - изучать новые компиляторы. А жить когда? Ну и собсно, когда писать под эти компиляторы, если всё время надо новые изучать?
Ну пару книжечек я раздобыл, почитаю всё ж - вдруг чо полезное попадётся?
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Ну, точнее пока одного экземпляра. За последнее время я сделал Undo & Redo - вдобавок к мыши сделал нажатия с клавиатуры и чтобы можно было клавиши задавать в .ini файле - сделал пацкаску, которая показывает перспективность следующего хода. Сначала думал - хуйня, потом смотрю, нет, помогает. - сделал функцию "случайные 4 хода", которая разбирает кубик, а ты потом собираешь читать дальше Вот тут-то дерьмо всё и понеслось. Точнее, началось всё с пацкаски. Я хотел всё сделать по-человечески, чтобы текст выводился в отдельную панельку, которую можно скрыть или показать. Хуй там! В этом ёбаном MFC, не знаю, для каких инопланетян его писали, чтобы вывести такую панельку это вообще ёбнуться надо наверное. Ну посидел бы я нескоко часов, а может и дней, сделал бы. Принципиально, то что именно в панельке - это бы ничего не дало - это ж не основной функционал, а всего лишь сраный интерфейс. Причём этот ебучий MFC создан якобы для того, чтобы упрощать создание интерфейса. Местами упрощает, да. Но только местами. А я ещё не уверен, что это полезная функция будет. В общем, почесал репу и сделал тупо вывод в окно. Быстрее и проще. Полезная херня оказалась, как ни странно.
Дальше - больше. Сделал функцию 4 хода и хочется, чтоб можно было регулировать количество ходов. По-моему, это естественно. Также естественно делать это через поле ввода, расположенном на панели инструментов. Ууу, бля, а вы знаете, чо нужно сделать, чтобы разместить на панели инструментов поле ввода? Я уж тут третий вариант пытаюсь провернуть. Причём, я это уже делал пару лет назад и код есть даже, хоть и не совсем такой. Сначала хотел на основную панель поместить. Не заладилось, ладно, сделаем отдельную панель, под неё свой класс напишем. Хуй там! Не работает. Ладно, пусть будет не поле ввода, а комбобокс. Код практически идентичный, как и пару лет назад. Хуй там! Он её просто не показывает, и ошибок не выдаёт. Вот такое дерьмо. Как вообще на таком говне люди ухитрялись чо-то там писать. Щас-то понятно, у всех глаза открылись, кроме меня. АААА! ЯРОСТЬ! ЯРОСТЬ!
Чертвёртый отчаянный шаг - это через диалоговое окно ввести эти сраные данные. Не так удобно, конечно, но лучше, чем через .ini файл. В проге пока не реализовано сохранение имеющихся состояний. Опять же из-за сраного тырфейса. Не могу допетрить, как это поудобнее сделать. Но думаю в ближайшем будущем осилим.
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
У нас везде на работе кресла на колёсиках. И ламинат. Нам маркетологи втирают, что на колёсиках конечно удобнее и всё такое, но я вот чо подумал. Кресло катаицца по полу, и постоянно приходится напрягать мышцы, чтобы остаться в том положении, в котором надо. Напряги конечно не сильные, но они есть, в течение всего дня. Кресло постоянно елозит по полу и так далее. Ещё у него есть откидной механизм - спинка с креслом откидывается назад - чуть забылся и отложил кирпичей, тоже мышцы пресса приходится резко напрягать, чтобы не облокотиться в последний момент.
Мож из-за этого вечером с работы идёшь, будто кирпичи таскал? У всех коллег дома для компов стулья на колёсиках, и они щитают, что так удобнее. А у меня у одного обычный стул - и ничего, дома от усталости не падаю, хотя его приходится (о, ужас!) передвигать. Ну, правда, стул гораздо легче, чем такое кресло, но никакого дискомфорта от того, что его надо двигать, я не испытываю.
А вы чо думаете? Просто некоторые вещи стали настолько привычными, из серии "все знают, что...", что когда задумываешься, что это может быть не так, первое время даже не уверен. Не веришь своим глазам. Ну или жопе, чем мы там сидим
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
У нас на первом этаже открыли кафе. Ну как кафе - просто уголок отгорожен барной стойкой, там можно кофе купить и всё такое. Удивительно то, что мне бы в голову не пришло, что там можно открыть кафе. И из нашей комнаты, где сидит 10 человек об этом тоже никто никогда не думал. Я поделился с коллективом. Босс: - Это надо мыслить по-азербайджански! Блин, как я хочу мыслить по-азербайджански! Мож туда на стажировку съездить? Я после этого ваще задумался открыть в Азербайджане специальный Центр, куда наши будут ездить. А местным там скажу: "Ребята, вам просто надо продавать своё мышление!"
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Эти три дня с субботы по понедельник были не очень продуктивными в плане программирования. За вечера сб и пн удалось реализовать Undo & Redo с запоминанием до 100 ходов и провести очередную небольшую оптимизацию кода. Идеи по оптимизации так спонтанно приходят - вроде ничего, ничего, а потом хоп - "а вот тут можно же..." Undo & Redo оказались в реализации сложнее, чем ожидалось. Вроде херня хернёй, а как начинаешь писать, куча неочевидных моментов всплывает. И не один я так думаю, погуглил уже ))) Это у меня ещё простой случай - однотипные элементы хранятся. читать дальше Пришлось создать ещё один класс - растём! Прикольно наблюдать, как при добавлении очередного класса все остальные классы тоже чуток меняются - где-то кусок кода становится самостоятельной функцией, где-то сами функции чуть меняются. Осталось реализовать ещё сохранение и может, запоминание комбинаций, чтоб не самому крутить одно и то же, а нажал кнопку и оно само. И тогда настанет время переходить к той херне, из-за чего всё и затевалось - дереву решений. Сначала я думал записать всё в базу данных - они как раз заточены под такие штуки - хранение и поиск больших массивов. Но потом подумал, хер ли? Там две таблицы всего, справимся и сами! Ведь есть же шахматные и шашечные программы, там тоже дерево решений - и они обходятся без СУБД! А щас чо-то опять подумал и приуныл - пожалуй, наверное, лучше всё-таки в БД.
Там буит три таблицы. Первая это стек состояний, которые ещё предстоит разветвить в дерево, вторая список вообще всех найденных состояний (из первой потихоньку переписываются во вторую) и третья это связи между этими состояниями (т.к. там многие-ко-многим). С первой и третьей - никаких сложностей, надо только память выделять по мере роста. А вот со второй сложности. Там будет много записей - возможно больше миллиона. Чтобы быстро вставлять - надо писать в конец, тогда массив будет несортированный, и в нём не получится быстро искать. Чтобы быстро искать - нужен сортированный массив, а если он сортированный, в него не получится быстро вставлять - надо будет перемещать элементы.
Варианты решения: 1) Сделать "хоть как-то". Да, мож линейный поиск или вставка в сортированный массив с перемещением кучи элементов за раз. Мож оно не так медленно буит работать, как кажется. 2) Запилить-таки это в базу данных 3) Погуглить и чо-то всё-таки намутить с помощью связных списков индексов и прочей херни. Всего одна сраная таблица, неужто не осилим? Может даже удастся спиздить готовый код. 4) Можно сделать промежуточный вариант - разреженный сортированный массив, он позволяет быстро вставлять в пустые места и не каждый раз перемещать алименты Но тогда он будет занимать гораздо больше места, чем обычный.
В MFC есть класс CArray, но меня смущает, шо там чо-то может не работать сравнение для элементов, которые созданы с помощью конструктора, а у меня именно такие элементы и будут.
update: почитал я про CArray, в общем, это вариант с перемещением кучи элементов за раз. Из плюсов только то, что он сам, типа, растёт и в середину элементы вставляет сам. А сортировку надо самому делать. Зато я сам от себя офигел - залез в исходники MFC (они там прилагаются), позырил всё. Помню, в 2001м пытался я освоить всю эту хрень, читал книжку про Winapi. Там товарищ советовал читать заголовочные файлы, типа много чего можно узнать. Я посмотрел список этих файлов, погрустнел, открыл, посмотрел пару файлов и дальше этого дело не пошло. А щас чо-то чих-пых и всё ясно. Может, одно дело изучать некие заголовочные файлы хуй знает для чего - с неясными намерениями и таким же результатом, и другое - искать конкретное решение среди нескольких возможных вариантов. Когда точно известно, что надо получить, всё как-то проще становится.
Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Ну чо, привезли вино. Звонит мне аж в восемь утра водитель, мол, ща, через полчаса подъеду. А у меня наличных нет. Собрался, пошёл к банкомату, ещё и ёбнулся по дороге - скользко. Дошёл, магаз с банкоматом ещё закрыт, водила уже подъехал. Чо делать? Спрашиваю, мол, есть у тебя карта Сбера? Вот, давай на неё и перекину. Забрал вино, везу в лифте наверх, читаю состав по бумажке. Ёпрст! Пенелопы Круз одна бутылка! Вместо второй всунули какой-то Дорнинг Пфальц. Клуни две и Шевалье де Баяра две. Пенелопы тоже обещали две, а никакого Пфальца в проекте не было. Вот, уже по мелочи, а наебали! Включаю комп, готовлюсь бабло перебросить - человек же ждёт! А потом думаю - чо эт я разогнался, надо сначала посмотреть, чо там в коробке, мож там Букет Кубани какой-нить, а я уже готов деньги отдать за кота в мешке.
Открыл коробку, позырил. Да, Пенелопа и Клуни производства компании Vincente Gandia. Шевалье де Баяр франция, регион Гасконь. Ну ладно, чо там. Перебросил бабло, скоро попробуем, чо за вино такое.