ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
| » Клуб программистов. | страница 11 |
|
|
|
|
Железный канал: «Клуб программистов.» |
|
|
|
Grebomet
1470 EGP
      Рейтинг канала: 8(765) Репутация: 261 Сообщения: 4794 Откуда: Питербурх Зарегистрирован: 06.01.2003
 |
|
| za4ot : |
|
Т. е. они не самостоятельные графические библиотеки и им всё равно нужен WinAPI для работы? Или самостоятельные?
|
На винде, естественно, высокоуровневые графические библиотеки все равно используют WinAPI (а иногда и OpenGL/DirectX). На линуксе - X Server и его расширения.
| za4ot : |
|
А как этим миром попытаться управлять из какого-нибудь ЯП? Обязательно нужен игровой 2D, 3D движок или можно как-то по другому?
|
Ну как... Открываешь туториал по опенджиэлю и вперел, на мины и наддолбы.
_________________ Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов. |
|
|
|
AnrDaemon
867 EGP
        Рейтинг канала: 8(805) Репутация: 37 Сообщения: 12340
Зарегистрирован: 17.10.2004
 |
|
| za4ot : |
Очень часто в книжках встречается ситуация когда два предложения не разделены пробелом. Править вручную это очень долго. Вчера попытался написать замену на Perl для своего редактора опечаток. Следуя логике, нужно было добавить пробел после любой точки за которой идет любой символ кроме пробельного. Для этого написал так:
| Код: |
$string =~ s{\.(\S)}{\. $1}g;
# Любая точка после которой идет не пробельный символ заменяется на точку и тот же символ разделенные пробелом. |
Но я не учел, что у нас .fb2 и в конце каждого абзаца перед точкой стоит символ "<". Так что эта замена и туда впихнула пробел. Можно было, конечно, следом применить замену убирающую пробел перед "<", но это ж сколько лишних телодвижений. Пробовал писать по разному. Ничего не помогало.
| Код: |
$string =~ s{\.([^<][\S])}{\. $1}g;
$string =~ s{\.([<{0,0}\S])}{\. $1}g;
$string =~ s{\.(<{0,0}\S)}{\. $1}g;
$string =~ s{\.([[^<][\S]])}{\. $1}g;
# и это даже не все варианты
|
В итоге просто попробовал исключить из класса символ "<" и посмотреть, что из этого выйдет.
| Код: |
$string =~ s{\.([^<])}{\. $1}g;
|
И это сработало. Теперь замена добавляет пробел между предложениями только там где его нет, и не добавляет его перед символом "<".
Вот такую полезную штуку я узнал самостоятельно. Класс содержащий все буквенно-цифровые символы кроме одного, исключая пробельные, описывается классом, в котором исключен именно этот один символ. Т. е. [^символ который нужно исключить]. Как по мне для редактирования .fb2 это архиполезная фича.
|
Есть такие вещи, как lookahead/lookbehind.
То, что ты сделал, добавило пробелы, например, в троеточиях. Не все авторы заморачиваются правильной типографикой, к моему сожалению…
Правильный ответ должен быть примерно таким:
| Код: |
| $string =~ s{\.(?![.\s]|</)}{\. }g; |
Любую точку, за которой не следует точка, пробел или закрывающий тег, заменить на точку с пробелом. Хотя (!), даже если у тебя перед закрывающим тегом появится пробел, это, обычно, нестрашно.
А проблемы начнутся, если у тебя книжка по программированию и точка - это часть кода.
добавлено спустя 6 минут:
| Grebomet : |
|
Для С++ лучше Qt - там все просто и гораздо меньше всякого магического бойлерплейта придется писать.
|
Qt для десктопа не могу советовать. У неё есть несколько проблем, за 30 лет так и не решённых, сколько их ни репортили.
добавлено спустя 2 минуты:
| za4ot : |
|
А как этим миром попытаться управлять из какого-нибудь ЯП?
|
Скомпилируй любую интерактивную демку по любой графической библиотеке.
Я в своё время игрался с DXScene.
_________________ Люблю свободный полёт... :)
Последний раз редактировалось: AnrDaemon (15:37 16-12-2025), всего редактировалось 3 раз(а) |
|
|
|
Grebomet
1470 EGP
      Рейтинг канала: 8(765) Репутация: 261 Сообщения: 4794 Откуда: Питербурх Зарегистрирован: 06.01.2003
 |
|
| AnrDaemon : |
|
Qt для десктопа не могу советовать. У неё есть несколько проблем, за 30 лет так и не решённых, сколько их ни репортили.
|
Да ладно, для того, чтобы по-быстрому накидать прототипчик - самое то.
А что там за проблемы?
_________________ Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов. |
|
|
|
|
|
|
|
|
Железный канал: «Клуб программистов.» |
|
|
| К списку каналов | Наверх страницы |
Цитата не в тему: Какой нах канал сайта? Такие вопросы тока в ЖК! Железный Канал! Медаль ведь железная - значит, в ЖК! (void*)
|
| » Клуб программистов. | страница 11 |
|