Тем кто интересуется поисковиками и понимает по-английски будет интересно послушать лекцию одного из лучших гугловских инженеров. В аудитории якобы было столько народу, что Дональду Кнуту пришлось сидеть на полу.
http://doubleclix.wordpress.com/2010/11/11/google-a-study-in-scalability-and-a-little-systems-horse-sense/
Там есть и видео в формате MMSH который на windows наверное будет играться сам, а на Linux потребует установки, например, vlc.
Не понимаешь английский? Продолжай косить его в универе.
16 ноября 2010
11 ноября 2010
Практика 11 ноября
Разминка
У вас есть таблицы A(id) и B(a_id, b). Какие из этих запросов найдут те A.id, которые НЕ упоминаются в B.a_id ?
Слайды
(полноэкранные)
У вас есть таблицы A(id) и B(a_id, b). Какие из этих запросов найдут те A.id, которые НЕ упоминаются в B.a_id ?
- SELECT id FROM A WHERE id NOT IN (SELECT a_id FROM B)
- SELECT id FROM A EXCEPT SELECT a_id AS id FROM B
- SELECT id FROM A LEFT OUTER JOIN B ON (A.id = B.a_id)
WHERE B.a_id IS NULL
Слайды
(полноэкранные)
09 ноября 2010
Идея курсовой, а то и диплома, для любителей карт и crowdsourcing
У меня есть слабость к (географическим) картам, и я в свободное время вожусь с открытым картографическим проектом OpenStreetMap. Суть его в том, что пользователи несколькими способами рисуют карты, нанося дороги, реки, дома, достопримечательности и так далее, а результат под свободной лицензией принадлежит всему миру. Его можно например закачать на навигатор и использовать для ориентирования.
Помимо всего прочего, на карту можно наносить Points Of Interest -- магазины, аптеки, рестораны и прочие заведения, которые могут быть людям интересны. У нас в России с такими заведениями есть проблема: они быстро исчезают и заменяются другими. Магазин, просуществовавший три года, можно считать старожилом.
Для того чтоб информация на карте была постоянно свежей, нужно её постоянно поддерживать. Нужно добавлять новые заведения и сообщать об исчезновении старых. Для этого даже заведён специальный сайт OpenStreetBugs, на котором несложно сообщить об изменениях, но всё равно нормальному человеку нужно на этот сайт хотя бы заходить. Я с трудом представляю себе толпу энтузиастов, каждый день топающую на OpenStreetBugs вместо контактега или жежешечки.
Кстати о контактеге. Туда-то все топают каждый день и порой даже оттуда не вылезают. И более того, многие услужливо заносят туда кое-какую географическую информацию: кто точное место жительства, кто неточное, кто название ВУЗа или места работы. По этой информации можно понять, в каком районе человек может быть если не экспертом по части заведений, но по крайней мере может по дороге домой что-нибудь посмотреть.
Соответственно идея инженерная: сделать приложение для контактега, которое будет раз в день (иначе надоест) спрашивать пользователя "скажи, кафе 'Сачок' ещё работает или уже склеило ласты?". И две кнопки -- "да" и "нет". Ответ нужно записывать где-нибудь на server-side и потом обрабатывать. Если 10 человек скажут что "Сачок" накрылся, значит он наверное и правда накрылся и можно уведомить об этом смотрителя Петродворцового района на OpenStreetMaps/Bugs.
А идея математическая такая: я конечно не буду счастлив отвечать на вопросы про Купчино, где я почти никогда не бываю и даже про те места, где я бываю, я не буду счастлив отвечать 10 раз подряд. Нужна такая модель, которая будет разумно составлять пары (пользователь, POI) и показывать их. Учитывать географические данные пользователя. Учитывать как часто его уже спрашивали об этой точке. Учитывать насколько устарели данные об этой точке. Учитывать то что часто спрашивать нельзя и выбирать только наиболее актуальные вопросы.
Если кому интересно этим заняться, под моим руководством или под чьим-то ещё, feel free.
Помимо всего прочего, на карту можно наносить Points Of Interest -- магазины, аптеки, рестораны и прочие заведения, которые могут быть людям интересны. У нас в России с такими заведениями есть проблема: они быстро исчезают и заменяются другими. Магазин, просуществовавший три года, можно считать старожилом.
Для того чтоб информация на карте была постоянно свежей, нужно её постоянно поддерживать. Нужно добавлять новые заведения и сообщать об исчезновении старых. Для этого даже заведён специальный сайт OpenStreetBugs, на котором несложно сообщить об изменениях, но всё равно нормальному человеку нужно на этот сайт хотя бы заходить. Я с трудом представляю себе толпу энтузиастов, каждый день топающую на OpenStreetBugs вместо контактега или жежешечки.
Кстати о контактеге. Туда-то все топают каждый день и порой даже оттуда не вылезают. И более того, многие услужливо заносят туда кое-какую географическую информацию: кто точное место жительства, кто неточное, кто название ВУЗа или места работы. По этой информации можно понять, в каком районе человек может быть если не экспертом по части заведений, но по крайней мере может по дороге домой что-нибудь посмотреть.
Соответственно идея инженерная: сделать приложение для контактега, которое будет раз в день (иначе надоест) спрашивать пользователя "скажи, кафе 'Сачок' ещё работает или уже склеило ласты?". И две кнопки -- "да" и "нет". Ответ нужно записывать где-нибудь на server-side и потом обрабатывать. Если 10 человек скажут что "Сачок" накрылся, значит он наверное и правда накрылся и можно уведомить об этом смотрителя Петродворцового района на OpenStreetMaps/Bugs.
А идея математическая такая: я конечно не буду счастлив отвечать на вопросы про Купчино, где я почти никогда не бываю и даже про те места, где я бываю, я не буду счастлив отвечать 10 раз подряд. Нужна такая модель, которая будет разумно составлять пары (пользователь, POI) и показывать их. Учитывать географические данные пользователя. Учитывать как часто его уже спрашивали об этой точке. Учитывать насколько устарели данные об этой точке. Учитывать то что часто спрашивать нельзя и выбирать только наиболее актуальные вопросы.
Если кому интересно этим заняться, под моим руководством или под чьим-то ещё, feel free.
29 октября 2010
Вот как нужно работать в университете
http://googleappengine.blogspot.com/2010/10/research-project-appscale-at-university.html
Коротко содержание: ребята плакали-плакали что у них нет подходящей кластерной инфраструктуры для их проектов, а потом посмотрели на гугловский App Engine, им понравилось и они за два года сделали себе такой же, но с открытым кодом. И теперь счастливы. Один доцент и несколько аспирантов и студентов. Безо всяких там Интелов. Что-то мне подсказывает, что с трудоустройством у них проблем не будет.
А у нас, мать-перемать, кто только не крутится вокруг матмеха, а толком даже расписания нормального на сайте нет. Не стыдно?
Коротко содержание: ребята плакали-плакали что у них нет подходящей кластерной инфраструктуры для их проектов, а потом посмотрели на гугловский App Engine, им понравилось и они за два года сделали себе такой же, но с открытым кодом. И теперь счастливы. Один доцент и несколько аспирантов и студентов. Безо всяких там Интелов. Что-то мне подсказывает, что с трудоустройством у них проблем не будет.
А у нас, мать-перемать, кто только не крутится вокруг матмеха, а толком даже расписания нормального на сайте нет. Не стыдно?
28 октября 2010
Практика 28 октября
Разминка
SELECT a, SUM(b) AS foo FROM Table1 GROUP BY a
1.
a foo
------
1 2
2 6
2.
a foo
------
1 2
2 2
Слайды
полноэкранные
Вопрос 1. Что получится в результате выполнения запроса?
Table1
a b c
---------
1 1 1
2 3 4
1 1 7
2 3 8
SELECT * FROM Table1 GROUP BY a
- Будет напечатана вся таблица
- Для каждого значения "a" посчитают сумму в столбцах "b" и "c"
- Запрос не выполнится потому что не используются агрегатные функции
- Запрос не выполнится потому что в SELECT используются недопустимые в данном случае атрибуты
Вопрос 2. А с этим запросом и такой же таблицей что будет?
SELECT a, SUM(b) AS foo FROM Table1 GROUP BY a
1.
a foo
------
1 2
2 6
2.
a foo
------
1 2
2 2
полноэкранные
16 октября 2010
Дни Суперкомпьютерных технологий в офисе Intel
Звучит громко, в реальности наверное будет поскромнее, но наверное всё равно интересно. Обратите внимание что требуется регистрация.
14 октября 2010
Практика 14 октября
Разминка
Вопрос 1. Сколько строк будет в результате SELECT'а?
Вопрос 1. Сколько строк будет в результате SELECT'а?
CREATE TABLE Автомобиль(
рег_номер CHAR(6) PRIMARY KEY, марка VARCHAR(20))
INSERT INTO Автомобиль (рег_номер, марка)
VALUES ('м000ск', 'Субару')
INSERT INTO Автомобиль (рег_номер, марка)
VALUES ('м001ск', 'Cубару')
INSERT INTO Автомобиль (рег_номер, марка)
VALUES ('м002ск', 'Subaru')
SELECT * FROM Автомобиль WHERE марка = 'Субару'
Вопрос 2. Сколько будет в результате выполнения запроса если в таблице N строк?
CREATE TABLE Foobar (id INT PRIMARY KEY, value INT)
SELECT * FROM Foobar f1 JOIN Foobar f2 ON (f1.id = f2.id)
- 0 строк
- N строк
- N*N строк
- Заранее неизвестно
- Запрос не выполнится
Слайды
Подписаться на:
Сообщения (Atom)