LINUX.ORG.RU

Мой первый скриншот на LOR


0

0

Вот - даю на ваш суд.

Систему собирал частично по LFS частично сам. Вот - собрал и теперь готовлюсь ко второму курсу, учу С++, изобретаю велосипеды (в данном случае мне в голову пришла интересная идея, как можно минимизировать обращения к памяти у класса CString). По ходу дела нашёл баг во FluxBox-е, теперь думаю, чтобы с ним сделать? :-) Баг наглядно демонстрируется на скине, достаточно взглянуть на часы. Если кому-нибудь не лень, можете баг-репорт отправить, у меня пока скилла в английском хватает только на чтение man-ов. По той-же причине комменты в программе на русском.

★★★★★

Проверено: Demetrio ()

ничё так гламурненько=)

anonymous
()

Во флуксе можно текст в пунктах меню, которые включены (например, что панель сверху справа) раскрасить в цвет, отличный от белого?

anonymous
()

темновато, а так вроде ниче...

gh0stwizard ★★★★★
()
Ответ на: комментарий от anonymous

> А что с часами? Их размер фиксированный или что?

Да, при смене длины строки, описывающей дату длина кнопки не меняется и строка либо висит посередине либо не вписывается. Видимо для простых часов это не актуально, но мне такие нравятся, не надо вспоминать, какой сегодня день :-)

Legioner ★★★★★
() автор топика
Ответ на: комментарий от anonymous

> Во флуксе можно текст в пунктах меню, которые включены (например, что панель сверху справа) раскрасить в цвет, отличный от белого?

Если я правильно понял, то за это отвечает строка в файле темы

menu.hilite.textColor

Legioner ★★★★★
() автор топика

даа, офигеть, yet another CString =))) а чо бушь делать когда unicode понадобиться? куда свой char* запихаешь и сишные вызовы ANSI строк :)

anonymous
()
Ответ на: комментарий от anonymous

а чё за CString такой?
Чем std::string неустраивает?

stalkerg ★★★★★
()

Понравилась шкура оперы. И Vista-like цвет заголовков окон. :)

anonymous
()

Шрифт в виме (особенно комментарии), наикорявейшие aqua-like
кнопочки и скроллы, шкура в xmms и самое главное - маленькая
корзинка в углу - все это очень гармонирует между собой.
Так гармонирует, так гармонирует, что мне аж дурно становится.

grob ★★★★★
()

лучше бы английский учил. нет, правда. а то появляются потом такие вот "праграмысты" ни бе ни ме ни кукареку с комментариями на русском - хоть вешайся :-/

// wbr

klalafuda ★☆☆
()

Действительно, корзина заставляет ржать!

kaN5300
()

ААА я ору. Особенно сравнение строк str1/2 А потом ты их слажуеш. А нельзя было сложить а потом делать проверку!!!

DarkAnthey
()

1. пара memory leaks с первого взгляда, не exception-safe код. 2. чтобы new возвращала 0, а не кидала std::bad_alloc надо писать new (std::nothrow) some_type(some_ctor_args); 3. конструктор из SStrData уж точно стоит сделать explicit.

AnToXa
()

Корзина это у Оперы, я на неё внимания не обратил :-) Действительно не гармонирует =) Сейчас уберу.

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

2DarkAnthey Не совсем понял, в чём дело. Я сначала сравниваю, чтобы не делать лишних действий, т.к. поле str_data может указывать в NULL при пустой строке.

2AnToXa Пожалуйста, поподробнее, очень интересно. Люблю когда мой код критикуют =) 1. Во-первых где memory leaks? Старался писать изо-всех сил без всяких утечек. 2. Вот это не знал, спасибо. 3. Не знаю такого. Щас почитаю.

А что такое exception-safe код? Т.е. если произошло исключение, надо чтобы всё нормально работало и дальше? Я думал, что исключение это аварийная ситуация. По крайней мере если памяти не хватает.

И ещё. Целесообразно ли писать реализацию коротких методов в объявлении класса? Насколько я понимаю, компилятор сам будет короткие методы как inline компилировать, а внешний вид заголовка это (имхо) портит.

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Legioner

> И ещё. Целесообразно ли писать реализацию коротких методов в объявлении класса?

иногда

> Насколько я понимаю, компилятор сам будет короткие методы как inline компилировать, а внешний вид заголовка это (имхо) портит.

нет, так делать он не будет.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от Legioner

>А что такое exception-safe код?

Все исключения должны быть отловлены, не критичные должны быть обработаны и управление возвращено программе. Критичные должны быть отловлены, после чего организован корректный выход из программы.

Nagwal ★★★★
()

Кстати, поздравляю с первым скриншотом! =)

php-coder ★★★★★
()

А нафига надо было создавать структуру, когда можно в классе все это хранить? Если ты хочешь сделать так, чтобы узнать сколько классов ссылается на данную строку - зачем? Подумай, что произойдет, если будет обращение двух классов одновременно к одной и тойже области памяти? Опять же, ежели нужно это знать - используй контейнер std::list.

Ну насчет использования исключений - вопрос спорный, потому как лучшее - типа враг хорошего.

anonymous
()
Ответ на: комментарий от anonymous

>А нафига надо было создавать структуру, когда можно в классе все это хранить? Если ты хочешь сделать так, чтобы узнать сколько классов ссылается на данную строку - зачем?

Ну у меня была такая идея: если выполняется a=b где a и b одного класса, то не выполнять заранее копирования самих строк а просто присвоить у класса a внутренний указатель на структуру класса b. Что-то реляционное в общем. А копирование выполнять тогда, когда оно действительно надо. В некоторых ситуациях это может, на мой взгляд, повышать производительность, например когда функция возвращает значение типа CString, то не будет происходить бесполезных копирований. Но мне уже кажется, что я везде неправ. В общем всем спасибо за критику, буду исправляться и читать Страуструпа (йад пить не буду).

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Legioner

> Ну у меня была такая идея: если выполняется a=b где a и b одного класса, то не выполнять заранее копирования самих строк а просто присвоить у класса a внутренний указатель на структуру класса b. Что-то реляционное в общем. А копирование выполнять тогда, когда оно действительно надо. В некоторых ситуациях это может, на мой взгляд, повышать производительность, например когда функция возвращает значение типа CString, то не будет происходить бесполезных копирований. Но мне уже кажется, что я везде неправ. В общем всем спасибо за критику, буду исправляться и читать Страуструпа

все понятно, кроме одного: чем с практический точки зрения не устраивает std::string из STL?

> (йад пить не буду).

это удел бездарных анонимусов.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

> все понятно, кроме одного: чем с практический точки зрения не устраивает std::string из STL?

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

Legioner ★★★★★
() автор топика

Ну черт с ним с std::string, но раз уж сел писать нормальный класс для строк и решил трахаться с reference counter'ами, так почему бы веревки не делать тогда? У тебя overhead в operator+ черти какой получается и по времени и по памяти.

eyescream
()
Ответ на: комментарий от Legioner

В общем понятно, что ты хотел написать. Не стоит так делать. Ты заранее не сможешь сказать когда у тебя будет копирование + как ты думаюшь как в этом случае будет выглядеть this? В общем хошь строковой класс написать - стукни в аську 177925266.

anonymous
()
Ответ на: комментарий от Legioner

1. если второе new кинет exception, то результат первого new никогда не буддет освобожден. 2. пожалуйста, почитайте вообще про общую форму operator new 3. explicit - значит что конструктор не будет вызван для обеспечения неявного приведения типов.

exception-safety вообще большая тема, существуют три "степени" exception safety guarantees, почитайте Саттера, можно начать отсюда http://gotw.ca/gotw/index.htm

писать реализацию можно где угодно, в теле класса ее написать не всегда возможно, про inline также почитайте у саттера(Herb Sutter) или мейерса(Scott Meyers).

AnToXa
()

да, и еще :)

ref-counted strings(и вообще containers в смысле стандарта C++) вообще довольно проблематично заставить корректно работать в multithreaded среде без значительного оверхеда.

AnToXa
()
Ответ на: комментарий от AnToXa

Точно! полностью согласен, да и сразу же будут траблы с использованием критических секций и обработки ошибок с памятью. Еще один вопрос, а как тогда будет выглядеть конструктор присваивания и копирования? Помоему это будет не благодарное занятие.

anonymous
()

за флюкс 5, за все остальное 3.

n1tro
()

Надо было прямо в теле использовать конструкцию из try, catch, throw.. и освободить res_data, либо через throw передавать в EString указатель на res_data и освобождать его в рамках EString...

MiracleMan ★★★★★
()

за арию - респект! а так, то это наверное также твой последний скрин Ж) ужас! ты глаза на ночь в баночку майонезную ложишь? Ж)

da_fault
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.