weranda: В том, что пиксель чему-то равен (например, 1/90"), и точно не миллиметру.
Будут проблемы, когда будете экспортировать в формат, который требуют печатники.
Да и на личном принтере 1:1 проверить будет тяжеловато.
Ingernirated:
> У HTTP подобной привязки нет.
Разумеется, надо придумать схему URL’а, чтобы было что-то типа modemhttp://1234567/index.html. Но к протоколу HTTP это никакого отношения не имеет.
UPD. Есть кивок в адрес DNS и виртуального хостинга — поле Host:. Если нечто подобное проработать на телефонных модемах — и Host: тоже можно приплести.
Ingernirated:
> если серверный порт это 80, то какой порт на компе принимает от него данные?
Решает клиентская TCP-подсистема.
> и как так вышло, что скайпу вбили 80-ый порт по умолчанию, если знали, что это серверный порт?
Просто забито в настройках по умолчанию. Видимо, посчитали, что этот порт часто пробрасывают.
> но по сути, если скайп не запущен, сервер же будет работать?
Разумеется. Если сервер запустили первым, обломается уже Скайп. Почему я говорю именно про Vertrigo — это тестовый HTTP-сервер, который пускают, когда надо что-то отладить.
> просто странно, что в некоторых статьях описывали, как убрать скайп с 80 порта, а не просто не запускать его.
И сервер нужен, и Скайп нужен. Просто у Скайпа это настраивается, но почему-то стоит по умолчанию вот такое безобразие. Особенно бесит, когда сервер говорит: кто-то слушает 80. А кто — непонятно.
> а когда делают запрос на сайт, апач сам решает по какому протоколу будет щас происходить обмен данными?
Читай статью Джоэла Спольского «Марсианские наушники», желательно в профессиональном переводе (в книге Спольского). Перевод на Хабре, к сожалению, слаб.
Решают они вместе, и важная часть протокола — договориться, какой версией пользоваться.
> а когда делают запрос на сайт, апач сам решает по какому протоколу будет щас происходить обмен данными?
Это протоколы разного уровня: TCP — транспортный, HTTP — представления данных/прикладной. Причём никак друг с другом не связанные: TCP спроектирован так, что может работать только поверх IP. У HTTP подобной привязки нет.
HTTP может быть (реально не бывает, но теоретически может) по модемной связи без всякого TCP.
Поверх TCP можно сделать FTP, ICQ и многое что ещё.
Леха Ярков: Но там обсуждается другой вопрос: в Юниксе некоторые программы могут слушать порты 0…1023 только с админскими правами, как запустить Апача.
Ingernirated: Леха Ярков:
Проброшенный порт — договорённость с охранником: всех, кто к токарю, провести. Про бутылку он, впрочем, умолчит: не его дело.
UPnP — администратор гаражного кооператива, который мало того, что выдаст свободный гараж, так ещё и охранника проинструктирует.
Леха Ярков:
Там же написано: Will use 3000 if available, otherwise fall back to a random port
Это значит: если гараж 123 занят, мы селимся в соседний, например, 124.
И сколько раз было: Vertrigo не запускается, потому что какой-нибудь паршивый Скайп без спроса решил прослушать 80-й порт.
Ingernirated:
> задать ей порт, который уже использует другая программа
Если хотя бы одна программа подключается (клиент) — всё будет работать как ни в чём не бывало.
Если обе слушают (серверы) — вторая просто не сможет открыть порт на прослушивание.
Точно так же мы вдвоём можем прийти с бутылками в гараж и рассчитывать, что токарь сделает деталь. А двух токарей в одном гараже быть не может. Точнее, могут, но согласованно (например, по общей договорённости или у одного работодателя), и дополнительная часть протокола — отличить одного токаря от другого. Или не надо отличать, мы разговаривает с администратором, который и раздаёт задания двум токарям…
Ingernirated:
> зачем не онлаин играм и даже не сетевым порты?
Играм мало на что, зато порты требуют защиты от копирования, службы печати, СУБД и многое другое. Сетевой порт — самый кроссплатформенный метод межпроцессной коммуникации (даже дисковые файлы — менее кроссплатформенный метод, не говоря об именованных потоках, оконном сообщении WM_COPYDATA, мьютексах и прочем).
> и как взаимодействует порт и протокол?
Никак. Вот ты узнаёшь: токарь в 123-м гараже, дай ему бутылку.
123-й гараж — порт. Дать бутылку — протокол.
Можно прийти с бутылкой в 125-й гараж, и обитатель этого гаража — если он там есть — даст бутылкой по голове, или разопьёт, но деталь не выточит. Можно прийти в 123-й гараж без бутылки, а он откажется или сделает на отвяжись. Токарь может арендовать 234-й гараж (и также требовать бутылку), потому что свой 123-й в ремонте.
Umid: Я старый олимпиадчик-самоучка тех времён, когда все спортивные ЯП были под стандартный режим ДОС, ни про какой STL не было и речи, и потому 50% задач были хорошо налаженным перебором. Посмотрите мой ответ Как найти минимальное время которое удовлетворяет условие? — я смотрю на задачу и вижу: ну перебор перебором! И наперебирался так, что побил рекорд по этой задаче.
Динамическое программирование я узнал в университете применительно к теории управления: начинать надо именно с задач теории управления, а уж потом расширять метод на всякое там сходство строк.
А ещё «я шёл сквозь ШАД». Алгоритмы вёл хорошо знакомый мне Медведев (один из пионеров киевского олимпиадного движения).
WayMax: Слишком мало писал настоящий действующий софт, если так доволен редактором.
Есть куча задач, которые редактор не делает, потому что не обязан.
Обрати внимание, я назвал Embarcadero «идеальным» — просто потому, что редко когда простейшие задачи нельзя сделать через редактор.
Откровенно странно. Часы высшей точности как раз должны быть монотонными, ибо используются в играх, медиаплеерах и прочем добре, где важны микросекунды.
Допустим, есть такое дерево.
В промышленном коде лучше всего либо XML, либо многоуровневая блочная структура, напоминающая XML.
В учебном коде можно попроще: либо «Q вопрос узел+, узел−», либо «A ответ». То есть:
Функцию readLine описывать не буду. Принцип легко переносится на двоичный файл. Хотя этот принцип не столь расширяем, как XML.