Как стать автором
Обновить
1
Карма
0
Рейтинг

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

  • Подписчики
  • Подписки

Три интересные задачи на знание SQL

MySQL *
image

Буквально несколько часов назад, после внимательного изучения комментариев вот к этому топику я был несколько удивлен что многие не очень любят использовать условия HAVING и похоже другие возможности СУБД. Скажу прямо — мне очень понравилась обсуждение простейшего и не работающего запроса, в результате которого многие узнали для себя много нового и познавательного (это мое личное мнение). Поэтому я решил сделать вот что — вывести три моих самых любимых задачи по знанию SQL (MySQL) на суд общественности.

Данные задачи абсолютно реальные, и в отдаленном светлом прошлом действительно имели место, и были благополучно решены жертвой некоторого количества рабочего времени и нервных клеток. Я уверен на 100% что они актуальны и по сей день, и будут актуальны еще долго. Сложными их назвать нельзя, но и очень простыми тоже (в зависимости от уровня подготовки конечно).

Читать дальше →
Всего голосов 62: ↑43 и ↓19 +24
Просмотры 27K
Комментарии 82

Правила Ярослава Грешилова

GTD *
Сегодня наткнулся во френдфиде исследователя фонда inVenture Ярослава Грешилова на 9 интереснейших правил проектной работы. Оговорюсь, что далеко не со всем здесь согласен, но пища для размышлений тем не менее превосходнейшая. Привожу здесь в удобном для чтения виде.

UPD от Ярослава: «Это не «правила Ярослава Грешилова», а правила *для* Ярослава Грешилова. И направлены они вовсе не на проектную работу, а на то, чтобы не потерять себя. Обсуждение того, что происходит с проектами при применении этих правил, не входило в мою задачу.»


Правило первое: работать имеет смысл не «над проектами», а «с людьми». Проекты всё равно имеют свойство со временем мутировать до неузнаваемости, а вот люди, как правило не меняются.

Например, работа над разными проектами за последние три года с одним моим другом имеет такие объективные итоги: из четырёх проектов завершено — ноль, денег заработано — близко к нулю, времени потрачено — довольно много, собственное развитие — существенное, отношения с человеком — улучшаются и развиваются, желание и дальше делать что-то вместе — только растёт.

О чём это говорит? О том, что наше с ним взаимодействие — для обоих является пространством попробовать что-то непросчитываемое, то, что мы раньше не делали, толком никому не нужное. Получается не так много, но это наш способ развивать друг через друга и через то, что мы делаем. Казалось бы, после четырёх «неудач» нужно любые совместные инициативы рубить ещё на этапе обдумывания. Однако сотрудничество с этим человеком кажется мне одним из наиболее перспективных направлений жизни :-)

Правило второе: нельзя полностью растворяться в том, что ты делаешь, и ассоциировать себя с этим делом. Мои проекты — это не я. Они — лишь средство моего движения, самовыражения, исследования этого мира.

В этом смысле всегда помогает заниматься несколькими малосвязанными друг с другом вещами одновременно. Необходимость постоянного переключения из одной действительности в другую позволяет удерживать самоидентификацию «над ними» и требует постоянного вопрошания «А я-то здесь кто?»
Читать дальше →
Всего голосов 70: ↑58 и ↓12 +46
Просмотры 620
Комментарии 32

Азбука WEB-разработчика

Разработка веб-сайтов *
Перевод
Небольшой список, самых, на мой взгляд, полезных сайтов для любого WEB-разработчика, интересующегося сферой веб дизайна, верстки и программирования. Думаю каждый среди этого списка найдет для себя сайты, которые надолго войдут в его ленту RSS.

AA List Apart




A List Apart содержит лучшие советы и мнения от лидирующих умов индустрии.
Читать дальше →
Всего голосов 140: ↑132 и ↓8 +124
Просмотры 13K
Комментарии 47

DooPHP — молодой и очень высокопроизводительный PHP фреймворк!

PHP *
DooPHP
Doo фреймворк — один из быстрейших, если не самый быстрый из доступных PHP фреймворков. Он помогает разработчикам на всех стадиях создания web 2.0 сайтов.
Вольный перевод вводного текста и диаграммы тестов производительности.
Нафига ещё один фреймворк?
Всего голосов 67: ↑51 и ↓16 +35
Просмотры 4.2K
Комментарии 71

Где растут деньги (как мы зарабатываем на Клумбе)

Я пиарюсь
Как и большинство людей, я долгое время не представлял, что в интернете можно зарабатывать. Два года назад пришел работать в интернет-компанию, и удивился — можно. К сожалению, про зарабатывание денег на интернет-проектах очень мало пишут. Людей, которые действительно зарабатывают в нашем интернете, мало, а зарабатывающих не на баннерах — единицы, и все молчат, как партизаны.

А время идет, опыт накапливается, хочется им делиться. Расскажу, как мы учимся зарабатывать на нашей Клумбе.


Читать дальше →
Всего голосов 138: ↑121 и ↓17 +104
Просмотры 59K
Комментарии 82

Создание слайдеров с анимированной прокруткой, используя Javascript

JavaScript *
В этой статье я хотел бы поделиться своими практическими наработками в создании анимированных слайдеров, используя JavaScript.
Читать дальше →
Всего голосов 66: ↑64 и ↓2 +62
Просмотры 12K
Комментарии 48

Веб-аналитика: анализируй это! Часть 3. Базовые метрики

Веб-аналитика *
Предыдущие части:
Часть 1. Вступление
Часть 2. Сбор данных

Пришло время поговорить о метриках — тех величинах, которые считает любая система статистики. Начнем с прямых метрик — тех, которые можно посчитать легко и без применения формул.
Читать дальше →
Всего голосов 34: ↑31 и ↓3 +28
Просмотры 14K
Комментарии 21

RentACoder vs oDesk

Фриланс
В последние дни вышла пара блогов о RentACoder. Хотелось бы сравнить эту систему с другой — oDesk — что бы начинающие фрилансеры знали с чего начинать

Сразу оговорюсь — я не являюсь ни сотрудником RentACoder ни oDesk, и все нижеизложенное является исключительно моим мнением основанным на собственном опыте

image vs image

Читать дальше →
Всего голосов 57: ↑50 и ↓7 +43
Просмотры 9.3K
Комментарии 72

Структуры данных: бинарные деревья. Часть 1

Алгоритмы *

Интро



Этой статьей я начинаю цикл статей об известных и не очень структурах данных а так же их применении на практике.

В своих статьях я буду приводить примеры кода сразу на двух языках: на Java и на Haskell. Благодаря этому можно будет сравнить императивный и функциональный стили программирования и увидить плюсы и минусы того и другого.

Начать я решил с бинарных деревьев поиска, так как это достаточно базовая, но в то же время интересная штука, у которой к тому же существует большое количество модификаций и вариаций, а так же применений на практике.
Читать дальше →
Всего голосов 110: ↑101 и ↓9 +92
Просмотры 314K
Комментарии 53

Как правильно говорить с «трудным» клиентом

GTD *
Многим из нас время от времени попадаются «привередливые», «неадекватные» и «трудные» заказчики, партнёры, начальники, подчинённые и т.д. В этом посте я расскажу:
  • Как добиться своего в конфликтных ситуациях
  • Как вести разговор, не вызывая негативной реакции собеседника
  • Как держать конфликтную ситуацию под контролем
  • Как не допустить развития конфликта и как его устранить
Читать дальше →
Всего голосов 96: ↑87 и ↓9 +78
Просмотры 38K
Комментарии 81

Последняя проверка перед запуском сайта

Разработка веб-сайтов *
Перевод
Запуск сайта ответственное мероприятие, надеюсь что этот список контрольных вопросов позволит ничего не упустить из виду.

Читать дальше →
Всего голосов 103: ↑86 и ↓17 +69
Просмотры 3.9K
Комментарии 33

Чеклист запуска сайта

Разработка веб-сайтов *

Этот чеклист будет полезен всем, кто запускает сайты или следит за этим увлекательным процессом. Ничего не пропустите!
Читать дальше →
Всего голосов 168: ↑140 и ↓28 +112
Просмотры 22K
Комментарии 70

17 usability tips to make your CMS rock

CMS *
image
К вашему вниманию перевод статьи Патрика Кеннеди о том, какой должна быть удобная система управления контентом.

Более чем вероятно, что в вашей CMS будет множество проблем с юзабилити, если вы будете использовать ее в сыром виде. Участвуя в проектах, в которых на меня было возложено внедрение таких систем — систем управления веб-сайтами, интранет-порталами и вики, я заметил, что в их пользовательских интерфейсах есть ряд ключевых областей, требующих исправления с точки зрения удобства использования.
Читать дальше →
Всего голосов 59: ↑50 и ↓9 +41
Просмотры 1.6K
Комментарии 29

Сортировка миллиона 32-битных int'ов в 2 мегабайтах памяти на Питоне

Python *
Мой перевод статьи Гвидо ван Россума:

Меня тут в шутку спросили: смогу ли я отсортировать миллион 32-битных int'ов в 2 мегабайтах памяти на Питоне. Во время размышления, мне пришло в голову задействовать механизм ввода-вывода с использованием буферной памяти.

Вообще, это именно шуточный вопрос — одни только данные займут 4 мегабайта, при условии бинарного представления! Правда, можно пойти на хитрость — взять файл, содержащий миллион 32-битных int'ов. Как же отсортировать их, используя минимальное количество памяти? Это должна быть какая-то разновидность сортировки слиянием, в которой небольшие куски данных сортируются и записываются во временный файл, после чего происходит слияние временных файлов для получения окончательного результата.

Вот мое решение:
Читать дальше →
Всего голосов 84: ↑79 и ↓5 +74
Просмотры 7.6K
Комментарии 60

Превьюшки дизайнов — 2

Я пиарюсь
MakePreview.com - сервис для вебдизайнеров

В сентябре прошлого года я под действием очередного wow-импульса сделал веб-утилитку, хотя ладно, чего уж там — Сервис MakePreview.ru! — который решал одну маленькую, но надоедливую проблему: декоративное обрамление дизайна сайта окном браузера (самизнаетеоткого пошла такая мода, в историю вопроса углубляться не буду).

Так вот, все это время я не спеша совершенствовал сервис...
Всего голосов 83: ↑73 и ↓10 +63
Просмотры 677
Комментарии 90

Использование составных ключей для манипуляции данными в memcached

Разработка веб-сайтов *
Часто, при работе с memcached, возникает ситуация, когда необходимо удалить данные в самых различных местах. Например, при добавлении нового комментария, необходимо обновить не только кеш самих комментариев этой страницы, но и ленты комментариев на главной странице, списока комментариев пользователя, счетчика комментариев пользователя, общего счетчика комментариев сайта, счетчика комментариев статьи и т.д. Можно запомнить все ключи этих данных и множество раз вызвать delete() с этими ключами.

<?php
$cache->delete('comments_art123');
$cache->delete('comments_tape');
$cache->delete('comments_user123');
$cache->delete('comments_counters_art123');
$cache->delete('comments_counters_user123');
......
?>


* This source code was highlighted with Source Code Highlighter.


Как известно, memсached хранит данные плоско, то есть одному ключу соответствует всегда одно значение. Вложенных ключей не существует. Так же нет возможности удалить группу ключей, скажем по маске. Хорошо бы было, если бы можно было сделать, например, так: $cache->delete('comments*'); Но так нельзя.

Но если нельзя, но очень хочется, то можно ;)
Читать дальше →
Всего голосов 36: ↑26 и ↓10 +16
Просмотры 2.6K
Комментарии 52

Redis — высокопроизводительное хранилище данных

Разработка веб-сайтов *
Бодрый день, хаброчеловеки!

Что такое Redis?


Redis — это высокопроизводительное нереляционное распределённое хранилище данных. В отличие от Memcached, который может в любой момент удалить ваши данные, вытесняя старые записи новыми, Redis хранит информацию постоянно, таким образом он похож на MemcacheDB.

Чем Redis отличается от существующих решений?


API для работы с Memcached (MemcacheDB) позволяет хранить массивы, но эти массивы будут сериализованы и сохранены как строки, таким образом атомарные операции над такими массивами не возможны.
Redis позволяет хранить как строки, так и массивы, к которым можно применять атомарные операции pop / push, делать выборки из таких массивов, выполнять сортировку элементов, получать объединения и пересечения массивов.

Производительность


110000 запросов SET в секунду, 81000 запросов GET в секунду на Linux-сервере начального уровня (тесты).

Высокая скорость работы Redis обеспечивается тем, что данные хранятся в оперативной памяти и сохраняются на диск либо через равные промежутки времени, либо при превышении определённого количества не сохранённых запросов. Из этого вытекает, что используя Redis, вы можете потерять результаты нескольких последних запросов, что вполне приемлимо для большинства веб-приложений, учитывая, что обращение к Redis по скорости сравнимо с обращением к оперативной памяти. Тем не менее, потерь можно избежать через избыточность — Redis поддерживает неблокирующую master-slave репликацию.

Sharding


Redis, как и Memcached, может работать как распределённое хранилище на многих физических серверах. Такой функционал реализуется в клиентских библиотеках, и к сожалению, «из коробки» этот функционал реализован пока только в Ruby API, однако это не мешает вам хешировать ключ самостоятельно и получать ID сервера, к которому с этим ключом обращаться.

API


API доступно для следующих языков:
  • Ruby
  • Python
  • PHP
  • Erlang
  • Tcl
  • Perl
  • Lua
  • Java


API для PHP доступно как в виде модуля, написанного на C, так и в виде PHP5 класса, который общается с Redis-сервером через сокеты, таким образом не требуется устанавливать модуль.
Кроме того существует PHP5 класс от отечественного разрабочика (с именем, заслуживающим доверия. Я серьёзно.) — IMemcacheClient. (Спасибо DYPA за наводку)

Перспективы развития


Разработка ведётся очень активно, комиты происходят почти каждый день, сейчас доступна версия Redis 0.900 (1.0 release candidate 1), которая очень скоро станет версией 1.0
В ближайшем будущем авторы обещают внедрить разные интересные фичи, в том числе и сжатие данных.

Лицензия и поддерживаемые платформы


Redis — написан на ANSI C и работает на большинстве POSIX-систем (Linux, MacOS X). Это бесплатное открытое ПО под BSD лицензией =)

Up: Rediska — удобный PHP-клиент для key-value базы Redis. Оф.сайт.
Всего голосов 79: ↑75 и ↓4 +71
Просмотры 98K
Комментарии 126

phpFastCGI: настоящий FastCGI для PHP

PHP *
— Добрый день. Вы наверняка уже наслышаны о протоколе FastCGI, он связывает Веб-сервер и сервер приложений, его реализации есть во множестве языков. Однако, в PHP реализация FastCGI до недавних пор была представлена лишь патчем PHP-FPM, который фактически не давал прироста производительности перед mod_php, поскольку он, вопреки идеологии FastCGI, перезапускает скрипт каждый раз заново. Идеология FastCGI подразумевает единовременную инициализацию приложения при запуске (подгрузку нужных классов, соединение с базой данных, и т.д.), и выполнение запросов один за другим.
phpFastCGI — правильная реализация FastCGI, которая позволяет добиться немыслимой производительности.
Разработка идёт очень активно, и новые фичи появляются очень быстро.
Страничка проекта — phpfastcgi.googlecode.com
Пример простого приложения — code.google.com/p/phpfastcgi/source/browse/trunk/example.php
В действии пример можно увидеть здесь — ya-tv.ru/phpfastcgid (может переодически лежать, это нормально, идёт тестирование). Страничка-пример легко выдерживает 5,000 запросов в секунду всего на 20-ти воркерах.
Проект пока в стадии тестирования и живёт только в SVN.
Приглашаю всех заинтересовавшихся принять в нем посильное участие!
$ svn checkout phpfastcgi.googlecode.com/svn/trunk phpfastcgi

Читать дальше →
Всего голосов 80: ↑74 и ↓6 +68
Просмотры 9.8K
Комментарии 197

Что ожидается в App Engine

Google App Engine *
  1. Сервис для работы с большими файлами.
  2. Поддержка работы с входящей почтой
  3. XMPP API.
  4. Поддержка функций отображения (mapping) наборов данных (datasets).
  5. Курсоры для запросов к базе — преодоление лимита в 1000 записей.
  6. Система предупреждений (alerts) об исключительных ситуациях (exceptions) в пользовательских приложения.
  7. Дамп и восстановление системы хранения.
Источник: App Engine Product Roadmap

мои комментарии...
Всего голосов 37: ↑32 и ↓5 +27
Просмотры 544
Комментарии 34

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность