Вкалывают роботы, а не человек *facepalm
Вконтакт, Facebook — PHP
ЖЖ — Perl
Twitter — Ruby (Rails)
Куда.Яндекс — Python (Django)
Как видите не в языке дело.
Движки же в большинстве своем позволят сделать только очередной никому ненужный клон :)
Big Street — хабраклон.
Купить Хабрахабр.
Ну вот правда, зачем плодить клонов?
О. Любимая тема — раз в несколько месяцев обязательно всплывает.
Хотя на самом деле уже как-то даже и несмешно совсем. Уже 2009 год приближается, а народ меняться не желает. Коллеги, пора бы уже понять, что сейчас рулят танковые клинья и ковровые бомбардировки... брр... что так или иначе будущее за стандартизацией веба. Если уж и своенравный микрософт это признал.
Стандарты — это не только зеленая валидаторная галочка, но и семантика, а также следование здравому смыслу. Оборачивать список-менюшку в дивы, также плохо и неправильно, как и использование таблиц для лейаутов. Теги должны соответствовать тому, для чего они используются. Именно об этом нам уже какой год талдычат парни из w3c. Да, согласен сначала было сложно отказаться от топорных, но проверенных временем решений вроде несущей конструкции из невидимой таблицы, но сейчас-то все техники вылизаны — бери, используй, и даже на старый ие можно не бросать гневные взгляды, т.к. и там все работает.
Дальше нас ждет HTML5 c его <video>, <footer> и прочими радостями жизни :) Глупо уже холиворить, лучше потратить пару дней на ликвидацию пробелов в образовании и работать в соответствии с духом времени.
А я еще про микроформаты не сказал. Вот где семантика!
С поддержкой докачки. $filename — путь к файлу. $name — под каким именем отдаем юзеру.
Хотя на самом деле вся ваша проблема в заголовках:
Content-type: application/octet-stream
$fsize = filesize($filename); $ftime = date("D, d M Y H:i:s T", filemtime($filename)); $fd = @fopen($filename, "rb"); if (!$fd){ header ("HTTP/1.0 403 Forbidden"); exit; } if (!empty($HTTP_SERVER_VARS["HTTP_RANGE"])) { $range = $HTTP_SERVER_VARS["HTTP_RANGE"]; $range = str_replace("bytes=", "", $range); $range = str_replace("-", "", $range); if ($range) { fseek($fd, $range); } } else { $range = 0;}$content = fread($fd, filesize($filename)); fclose($fd); if (isset($range)) { header("HTTP/1.1 206 Partial Content"); } else { header("HTTP/1.1 200 OK"); } header("Content-Disposition: attachment; filename=" . $name); header("Last-Modified: " . $ftime); header("Accept-Ranges: bytes"); header("Content-Length: " . ($fsize - $range)); header("Content-Range: bytes " . $range . "-" . ($fsize - 1) . "/" . $fsize); header("Content-type: application/octet-stream"); print $content;exit;
Под curl переделайте только :)
Складывается ощущение, что "дизайнер" макось не видел в принципе. Мак — это красота в простоте, а там что?
Ребята, а еще есть мегашикарнейший Питон. Запишите его тоже в холивар :)
Может быть название сменить?
Ruby — весьма популярный язык программирования. Я сначала решил, что вы для Rails чат сделали :)
Посмотрите на ImageMagick. Не фотошоп, но мощнее GD.