Founders at Work: Stories of Startups Early Days

Founders at Work: Stories of Startups Early DaysПришла на днях. Офигенная книжечка. Сборник интервью с кучей деятелей стартапов. Для мотивации - самое оно. Что особенно понравилось - относительно непринужденная атмосфера самих интервью, так что создается впечатление, что сидишь с ними за бокалом пива, а они выпили на 3 больше - и рассказвыют тебе истории своего боевого прошлого.

Спасибо Крису за совет.

Список жертв:

David Heinemeier Hansson
37signals, создатель Ruby on Rails

Charles Geschke
Основатель Adobe

Ron Gruner
Основатель Alliant Computer и Shareholder.com

Steve Wozniak
Основатель Apple

Philip Greenspun
Основатель ArsDigita

Evan Williams
Основатель Blogger.com и Odeo

Craig Newmark
Основатель Craigslist

Joshua Schachter
Основатель Del.icio.us

Joe Kraus
Основатель Excite и JotSpot

Blake Ross
Создатель Firefox

Caterina Fake
Основатель Flickr

Joel Spolsky
Основатель Fog Creek Software

Paul Buchheit
Создатель Gmail

Ray Ozzie
Основатель Groove Networks и Iris Associates

Sabeer Bhatia
Основатель Hotmail

James Hong
Основатель HotorNot

Mitch Kapor
Основатель Lotus

Bob Davis
Основатель Lycos

Arthur van Hoff
Основатель Marimba

Mark Fletcher
Основатель ONElist и Bloglines

Ann Winblad
Основатель Open Systems и Hummer Winblad

Max Levchin
Основатель PayPal

Mike Lazaridis
Основатель Research in Motion

Mena Trott
Founder of Six Apart

Dan Bricklin
Основатель Software Arts и создатель VisiCalc

James Currier
Основатель Tickle

Mike Ramsay
Основатель TiVo

Steve Kaufer
Основатель TripAdvisor

Paul Graham
Основатель Viaweb и Y Combinator

Brewster Kahle
Основатель WAIS, Internet Archive и Alexa Internet

Steve Perlman
Основатель WebTV

Tim Brady
Первый сотрудник Yahoo!

Новый дизайн

Дизайн нарисовал Никита (Спасибо огромное!), решивший поэксперементировать в трэшевом стиле. А мне идея понравилась, да и вышло очень даже.

Сверстал я правда, немного через жопу, но я легких путей никогда не искал.

Как вам, уважаемые? Может косяки я где не заметил?

Javascript альтернативы php функций.

January 19, 2008 Web разработка

Нашел файл - библиотеку функций, альтернатив php’шным на javascript’е. От элементарных вроде strtolower до адских вроде soundex:

function soundex( str ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // *     example 1: soundex('Kevin');
    // *     returns 1: 'K150'

    var i, j, l, r, p = isNaN(p) ? 4 : p > 10 ? 10 : p < 4 ? 4 : p,
    m = {BFPV: 1, CGJKQSXZ: 2, DT: 3, L: 4, MN: 5, R: 6},
    r = (s = str.toUpperCase().replace(/[^A-Z]/g, "").split("")).splice(0, 1);
    for(i = -1, l = s.length; ++i < l;){
        for(j in m){
            if(j.indexOf(s[i]) + 1 && r[r.length-1] != m[j] && r.push(m[j])){
                break;
            }
        }
    }
    return r.length > p && (r.length = p), r.join("") + (new Array(p - r.length + 1)).join("0");
}

Полный список:

  • addslashes
  • array_chunk
  • array_combine
  • array_diff
  • array_diff_assoc
  • array_key_exists
  • array_pop
  • array_push
  • array_search
  • array_shift
  • array_sum
  • array_unique
  • array_unshift
  • base64_decode
  • base64_encode
  • basename
  • checkdate
  • chr
  • count
  • crc32
  • date
  • empty
  • end
  • explode
  • function_exists
  • htmlentities
  • implode
  • include
  • include_once
  • in_array
  • is_array
  • is_numeric
  • levenshtein
  • ltrim
  • md5
  • nl2br
  • number_format
  • ord
  • printf
  • rand
  • reset
  • rtrim
  • soundex
  • sprintf
  • stripslashes
  • strip_tags
  • strlen
  • strpos
  • strrpos
  • strtolower
  • strtoupper
  • str_pad
  • str_repeat
  • str_replace
  • str_rot13
  • trim
  • ucfirst
  • ucwords
  • utf8_decode
  • utf8_encode
  • wordwrap

Я постоянно что-нибудь такое в гугле ищу, может и вам пригодится.

Jquery comet да и просто comet

November 9, 2007 Web разработка

Comet - это архитектура веб-приложений, в которой сервер посылает данные клиенту (обычно браузеру) асинхронно. При использовании comet клиент не должен периодически опрашивать сервер для проверки наличия обновлений. Таким образом экономится трафик и уменьшается нагрузка на сервер (не нужно выдавать клиенту пустые ответы о том, что обновлений нет). При классическом подходе для уменьшения нагрузки обычно увеличивают таймаут между опросами сервера, но тогда возникает другая проблема - клиент получает данные с задержкой. В архтектуре comet данные клиенту посылаются сразу, как только они обновились.

Теоретически, comet - это лишь идея, которая не подразумевает конкретных способов реализации. Я приведу примеры двух способов, которые взяты отсюда, но переписаны с prototype’а на jquery.

1. Скрытый iframe. (forever-frame)

Смысл: на странице создается невидимый iframe, в котором в бесконечном цикле выводятся методы обновляющие данные на странице.

Пример был взят элементарный: клиенту передается текущее время на сервере:

В iframe выводится:

while(1) {echo '<script type="text/javascript">';

echo 'comet.printServerTime('.time().');';

echo '</script>';

flush(); //шлем

sleep(1); //процессор отдыхает

}

Скачать пример

Естественно, при таком использовании в крупных проектах возникает немало проблем, одна из которых - огромное число открытых одновременно соединений. Популярные http серверы были написаны с расчетом на класическую архитектуру web (от которой ajax в плане нагрузки на сервер в общем-то не сильно отличается), потому в крупных comet проектах обычно используются другие серверы. Например Caplin Liberator, который работает с финансовыми приложениями и способен держать на соединении 10,000 пользователей, посылая им до 4,000,000 сообщений в секунду.

Другая проблема: фаерволы и прокси. Многие прокси буферизируют сообщения так, что они передаются клиенту тогда когда набирают определенный объем. Фаерволы часто настроены так, что обрывают слишком длительные соединения.

2. Jquery Comet. (long-polling)

Смысл: используются длительные запросы к серверу, клиенту информация выдается как только она обновится. При ошибке или после успешного запроса серверу посылается повторный.

while ($currentmodif <= $lastmodif) // check if the data file has been modified

{

sleep(1); //разгружаем процессор

clearstatcache();

$currentmodif = filemtime($filename);

}

send_data_to_client();

Пример - простенький чат (немного глючненький, простите), который общается с сервером по типу comet.

Такой вариант - более жизненный чем предыдущий (iframe). При более-менее частом обновлении данных серьезных проблем он не создает, в тоже время снижая количество запросов и трафик сервера. Выводы полезности такого подхода и графики латентности запросов описаны в этой статье.

Скачать 2й пример

Статья о comet на википедии
Comet Daily

Свадьба

У меня завтра мама с отчимом женятся. Захотелось им, и все тут.

Они вместе уже года два и вот решились.

По этому поводу я сегодня подстригся! А стригла меня девочка у которой размер груди - шестой или седьмой (я не шарю сколько это, но они были просто огромные). Такие себе СИСИ. Они настолько никуда не помещались, что она постоянно терлась ими об меня.

К чему я это?

К тому, что прийдя домой, я вспомнил о том немногом, что мне удалось восстановить с моего предыдущего убитого судьбой жесткого диска.

Кто помнит, а может кто не застал, встречайте мои эксперименты полугодичной давности, повышающая либидо головоломка - evecanvas.

Клацать надо на ромбики слева, а не на самом поле. Такой алгоритм.

Получится только в фаерфоксе.

ПосвежееДальше