Как стать автором
Обновить
51
0
Олег Андреев @oleganza

Пользователь

Отправить сообщение

Почему циклы должны умереть

Время на прочтение3 мин
Количество просмотров3.3K
Всем привет,

Прочитав недавнее обсуждение по поводу PHP, обнаружилось, что много людей боятся рекурсии как огня. Таковой миф нужно разоблачить!

Сегодня мы обоснуем, почему циклы это плохо, и почему их надо замочеть. В процессе мы будем пейсать на православном языке Хаскель, который очень непонятен. Вас предупредили!

Читать дальше →
Всего голосов 103: ↑55 и ↓48+7
Комментарии209

«Стихотворный» скрипт для музыкальных клипов на Youtube

Время на прочтение1 мин
Количество просмотров767
На сайте Youtube можно найти музыкальные клипы практически любой популярной группы. Для тех, кто регулярно слушает музыку таким образом, появилась приятная возможность просмотра текста песен на той же странице.

Такая опция реализована в виде простенького скрипта Greasemonkey. Он создаёт на страничке дополнительное окошко, куда автоматически подгружаются слова песни. Пользователь может даже вручную указывать источник текстов (говорят, лучше всего подходит lyrics.astraweb.com). Конечно, автоматическая загрузка слов возможна только в том случае, если в описании видеоклипа указаны автор и название песни.

Чтобы пользоваться скриптом, нужно установить в браузере Firefox расширение Greasemonkey.



via Google Operating System
Всего голосов 22: ↑18 и ↓4+14
Комментарии12

Объявлены победители YouTube Video Awards 2006. Все ролики-победители

Время на прочтение1 мин
Количество просмотров702
Конкурс лучших видео-материалов, проходивший на сайте YouTube, завершён. Победителями признаны:

1) самый креативный — Here It Goes Again by OKGo


Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии16

Постраничная навигация с MySQL при большом количестве записей

Время на прочтение7 мин
Количество просмотров40K
Рано или поздно многие крупные проекты сталкиваются с проблемами производительности при постраничной навигации по записям. Некоторые из них решают эту проблему ограничением количества доступных для просмотра записей (скажем, не больше 1000). Вполне приемлемое решение. Но в этом случаем могут возникнуть проблемы с индексированием сайта сторонними поисковиками, которые и представляют наибольшую угрозу. В этой статье я хотел бы отказаться от привычной для всех панели навигации вида «1..2..3..4..» в пользу простой «вперед… назад» (будет проще объяснить), но это не проблема реализовать подобное и с первым вариантом.
Более точно определить тему, назвав, какое количество записей считать достаточно большим для появления тормозов, не получится, так как эта цифра для всех разная и сильно зависит от того, насколько быстрые у Вас жесткие диски, сколько памяти, и какая часть Ваших данных уже закеширована в ней и тд. Но если Вы и Ваши сервера ощущают, что n-ная страница при выводе даётся тяжелее первой, и при этом не знаете, что с этим делать – статья для Вас. Но для начала, я хотел бы на пальцах объяснить, почему ОНО работает медленно.

Кстати, тест происходит на виртуальной машинке, работаю я с СУБД под рутом, версия MySQL – 5.0.32.
Читать дальше →
Всего голосов 139: ↑135 и ↓4+131
Комментарии81

Варианты проектирования БД

Время на прочтение1 мин
Количество просмотров9.9K
Все люди, вовлеченные в проектирование различных БД, думаю, нередко задаются вопросом о нужной структуре. На данный момент, есть два варианта хранения данных, каждый из которых, в свою очередь, имеет ряд своих недостатков.

1. Объединенное хранение

Например, есть таблица типов объектов (ObjectsTypes), таблица самих объектов (Objects) и их свойств (ObjectsFields). По желанию, можно хранить еще и типы полей-свойств, это не принципиально.
Связи между таблицами определены однозначно (объект имеет один тип (typeID) и ряд свойств, связанных с родительским объектом полем objectID), между объектами связь осуществляется и с помощью древовидной структуры (родитель ← ребенок) и путем заведения отдельной таблицы (ObjectsRelations) для сетевой структуры, в которой дочерний элемент может иметь несколько родительских.

2. Индивидуальное хранение

Если представлять эту реализацию на примере, то для хранения блогов нужна таблица Blogs с полями, относящимися к нему, таблица BlogsTopics, хранящая посты и их свойства, таблица BlogsVotes, содержащая все пользовательские голоса и т.д. Можно до бесконечности развивать этот пример — смысл такого хранения в том, что для каждого типа данных создается своя таблица (если нужно, то несколько).

Я считаю, что для индивидуальных решений, например, для системы Хабры, идеально подошел бы второй вариант, а первый можно использовать в коммерческих решениях (как, собственно, многие и делают).
Хотелось бы услышать неозвученные мной доводы в пользу каждого из методов.
Всего голосов 30: ↑26 и ↓4+22
Комментарии51

Евангелие от GUID

Время на прочтение6 мин
Количество просмотров52K
Разбираясь с новым Visual C# 2008 (он настолько бесплатный для начинающих разработчиков, что я не удержался), нашел новое для себя слово в науке и технике — GUID.

Привожу пример интересной, как мне кажется, статьи, призывающей использовать глобально-уникальные идентификаторы во всех сферах народного хозяйства. Статья, в основном про .NET и прочий микрософт, но, думаю, будет полезна многим здесь, ибо реализации GUID есть почти во всех современных БД и языках (включая mySQL и PHP ;).

ПС: Если будет интересно, то выложу перевод второй части, где автор отвечает на комменты к первой статье.
Евангелие от GUID
Всего голосов 1: ↑1 и ↓0+1
Комментарии9

Проблема длинного кода

Время на прочтение1 мин
Количество просмотров545
длинный-длинный-длинный-длинный-длинный-длинный-длинный-длинный-длинный-длинный-длинный-длинный код в тэге <pre> заползает на правую колонку


Чинится очень просто:

pre {
    white-space: pre-wrap; /* Последние Opera, Firefox, Safari, Chrome*/
    white-space: -o-pre-wrap; /* Старая Opera (8?) */
    word-wrap: break-word; /* IE 5.5+ */
}


А тем временем, баг с широкими картинками был исправлен в CSS самого Хабра. Теперь нет нужды в UserCSS.

Обновлено: Баг исправлен. Рад видеть, что мои замечания не пропадают даром.
Всего голосов 59: ↑53 и ↓6+47
Комментарии19

Io Language: Система сообщений

Время на прочтение5 мин
Количество просмотров1.9K
Сегодня продолжим цикл статей, начатый достопочтенным semka. Поговорим о сообщениях.

В Ио нет вызовов функций, но есть посылка сообщений. У сообщения могут быть аргументы (почти как аргументы функции), но аргументы сообщений не выполняются перед посылкой.
Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии20

Io programming language

Время на прочтение3 мин
Количество просмотров8.9K
По факту защиты мной диплома образовалось некоторое свободное время и я таки решил собраться и написать про эту чудесную штучку.
Мы в последнее время видим всплеск интереса ко всяким языкам очень высокого уровня, с анонимными функциями, каррингом, мапом/фолдом, метапрограммированием и прочим блэкджэком. Слава богу, я считаю.
Задачи усложняются и если люди применяют относительно низкоуровневые средства разработки зачастую наступает ситуация, когда набор абстракций оказывается мал в рамках решаемой задачи, примерно так появляется «спагетти» и велосипеды. Хорошего мало. Хотя умалять роль низкоуровневого программирования не хочется совершенно, по понятным причинам.

Совсем недавно, в 2002 году, бравый американец Стив Декорте понял, что ему как-то все вокруг не нравится. Ну то есть нравится, но как-то по частям. Нравится Smalltalk своей Ъ-ООП природой, нравится Lisp своей системой метапрограммирования и общей мегаизвратностью, нравится Self своими прототипами, нравится Lua, потому что маленькая и клево встраивается куда угодно. А вот что бы все и сразу — что-то не то. Погоревал бравый американец, да и наколбасил свой собственный язык программирования — Io.

Io


Io это маленький, полностью объектно-ориентированный язык программирования с динамической типизацией и развитой системой метапрограммирования, анонимными функциями и вытекающими отсюда плюшками. Кроме того, Io невероятно прост, как в синтаксисе, так и внутри. Существуют всего две сущности: объекты и сообщения. На этом базисе построено все остальное. Вообще весь язык следует дзенскому духу минимализма и простоты.
В Io нет понятия класс, только объект. Объект может быть склонирован и изменен, таким образом мы получаем другой объект (Это и есть прототипы). Все типы данных, значения и прочая — объекты.

Ну что, поехали.
Читать дальше →
Всего голосов 109: ↑109 и ↓0+109
Комментарии136

Io Language: Синтаксис

Время на прочтение4 мин
Количество просмотров3.7K

В продолжение серии статей про Io, хотелось бы отдельно остановиться на синтаксисе языка.
В двух словах синтаксис Io можно описать так: простой, но странный. Многих удивит такой подход, но, спешу заверить, как и в Lisp, синтаксис неудобен только при взгляде со стороны. С эстетической точки зрения можно отдельно выделить тот факт, что многие прогаммы на Io внешне кажутся излишне разреженными, на экране остается много «лишнего», незаполненного полезным кодом места, это ощущение меня не покидает довольно давно, я пока не придумал, как полностью избавиться от этого вывиха мозга, я просто придумал для себя некоторые правила оформления кода, при соблюдении которых эффект значительно сморщивается:
  • Длина строки не должна превышать 80 символов (Привет, text mode!)
  • Между клонированием объекта и описанием тела нового должна быть пустая строка
  • Методы и свойства группируются
  • Без лишней необходимости скобки на новую строку не переносятся


Ну что, поехали. Вынос мозга №2.
Читать дальше →
Всего голосов 50: ↑45 и ↓5+40
Комментарии17

Io Language: Объектная система

Время на прочтение4 мин
Количество просмотров2K

Введение


Продолжая писать про io, совершенно необходимо остановиться отдельно на устройстве объектной системы этого чудесатого езычка. Главная проблема в том, что даже если вы «знаете» ООП, вполне может сложиться ситуация, что вы просто не поймете, как оно устроено в io. Сейчас под ООП почему-то подразумевается модель Java, чаще всего. C++ нельзя назвать объектно-ориентированным языком, потому что он язык поддерживающий парадигму ООП, но это не его основная парадигма. Java больше подходит под гордое звание Ъ-ООП языка, но вот беда, ООП диктуемое Java-like языками довольно извращено. Изначально принципы ООП зарождались в Smalltalk'е и там все выглядело несколько иначе, объекты общались друг с другом не посредством вызова методов, а посредством передачи друг другу сообщений, мне до сих пор странно, почему же от этой модели ушли, ведь такое построение позволяет ввести прозрачную параллельность в язык без костылей. Посмотрите на нынешние круто параллелящиеся языки, тот же Erlang например, там все сделано через сообщения. Опять же нагородили огородов из RPC, COM и прочего dbus'а. А ведь как все хорошо начиналось.
Читать дальше →
Всего голосов 46: ↑43 и ↓3+40
Комментарии72

Создание программ для Mac OS X. Часть 1: вступление и Objective-C

Время на прочтение10 мин
Количество просмотров72K

Вступление


Я думаю все слышали про Mac OS X как операционную систему для дизайнеров и домохозяек. Но хочется рассказать про средства разработки для OS X, а то хорошие программы пишут, а на чем — никто не знает.

Сразу скажу, что не буду рассказывать про кроссплатформенные фреймворки и тулкиты(такие как Qt) или про создание консольных приложений, я расскажу про то, что в плане создания приложений отличает Mac OS X от других операционных систем, а именно — фреймворк Cocoa. Оговорюсь сразу, что буду стараться избегать сравнений с другими фреймворками, я хочу просто рассказать про Cocoa.
Читать дальше →
Всего голосов 96: ↑90 и ↓6+84
Комментарии91

Эмоциональный обзор Ruby 1.9

Время на прочтение2 мин
Количество просмотров2.6K
Прошло уже около двух месяцев с выхода интерпретатора языка программирования ruby версии 1.9. Вторая нечётная цифра здесь, как и у многих других open source проектов, означает нестабильную, экспериментальную версию, способ опробовать «wild and weird ideas». Ниже приведён краткий обзор этих экспериментальных изменений с точки зрения человека хорошо знакомого с предыдущими версиями. Выбор для обзора ограничен не их важностью (очень важная вещь — улучшенная поддержка юникода, например, пропущена), а интересом, которые они вызвали у автора.
Читать дальше →
Всего голосов 31: ↑29 и ↓2+27
Комментарии78

Ruby медленнее PHP? Уже нет!

Время на прочтение1 мин
Количество просмотров4.1K
В одной, не давно обсуждавшейся статье, одной из причин перехода с Ruby на PHP было то, что «PHP — IT’S SMALL AND FAST» (PHP – маленький и быстрый).
Так ли это? Судя по данным одного авторитетного в этой области сайта – уже нет.
Сравнение по результатам прохождения стандартного набора тестов PHP и Ruby Core 1.9.0 говорит само за себя.
PHP vs Ruby
Вывод – по производительности PHP и Ruby Core 1.9.0 примерно равны (где-то быстрее Ruby, где-то PHP).
Читать дальше →
Всего голосов 21: ↑17 и ↓4+13
Комментарии156

Информация

В рейтинге
Не участвует
Откуда
Paris, Франция
Дата рождения
Зарегистрирован
Активность