Общее·количество·просмотров·страницы

Java Dev Notes - разработка на Java (а также на JavaScript/Python/Flex и др), факты, события из АйТи

Архив блога

четверг, 29 октября 2009 г.

Использование nginx

Nginx (произносится как Энжин Икс - Engine X)- эффективный веб-сервер (а также прокси-сервер), созданный Игорем Сысоевым для Рамблера. Используется на 3% самых загруженных серверов в мире (См. Википедию).

Ссылки по Nginx:

1) http://sysoev.ru/nginx/ - cтраничка проекта
2) Nginx: the High-Performance Web Server and Reverse Proxy - статья в LinuxJournal
3) Nginx Internals by Joshua Zhu - презентация на SlideShare
4) Разработка модулей для nginx - статья Валерия Холодков для конференции HighLoad++ 2008
5) Введение в nginx - введние от Зеленой Мыши, также есть другие материалы по nginx.
6) Установка и настройка Nginx. Nginx frontend + Apache backend. Установка mod_rpaf - руководство на сайте Server Help - установка и настройка выделенного сервера.


Раздел будет дополняться по мере нахождения новых материалов.

The Joel Test: 12 Steps to Better Code

Тест от Joel Spolsky: 12 шагов к лучшему коду (правда, пост довольно давний - аж от 9 Августа 2000 года).

Ответьте на 12 вопросов:
1) Используете ли вы систему контроля версий?
2) Сборка происходит в одно действие?
3) Проводятся ли ежедневные сборки?
4) Ведется ли баг трекинг (bug database)?
5) Перед написание нового кода происходит фикс багов?new code?
6) Имеется ли расписание разработки, которое к тому же и up-to-date?
7) Есть ли спецификация (спек)?
8) Программисты имеют спокойные условия для работы?conditions?
9) Используются ли лучший инструментарий?
10) Есть ли тестеры?
11) Новые кандидаты пишут код на интервью?interview?
112) Есть и юзабилити-тестирование?

Полная версия находится здесь - The Joel Test: 12 Steps to Better Code
by Joel Spolsky

Прикольное описание вакансии на StackOverflow

Software Developer (Python/Django)
at Playfire.com (Gaming social networking startup!)
London, United Kingdom

Hi! We are an exciting, well-funded web startup looking for an ambitious software engineer who is hungry to build awesome software that millions of people use. Based in Soho, London, we are building the next big thing for millions of gamers around the world, and are looking for an exceptional technical mind to join the team and attack some hard problems in creative ways.

....

Are you the one? You are, if you:

* Love agile development, working independently on your own challenges, and together in a team on the bigger vision
* Are completely fluent in a scripting language such as Python, Perl, PHP or Ruby and have experience with web frameworks and the MVC concept
* Have used MySQL or PostgreSQL extensively and you know your way around Apache, nginx or other server
* It's a bonus if you have good JavaScript skills (we use jQuery)
* Get excited by the idea of scaling web apps to millions of users
* Are the best developer in your peer group, and want to be at a place where you are constantly challenged and pushed to become better
* Get obsessed about the problem you're solving and don't stop until you've cracked it
* Have a thirst to learn new skills and technologies, and can pick things up easily
* Want to have fun building lots of new features and get stuff done
* Are full of positive energy, relish the thought of being part of a small, fast-moving team and enjoy brainstorming about new ideas

Benefits

* Opportunity to become recognised as one of the best in your field, through being a core developer for a high-profile startup
* Relaxed, sociable work environment with lots of freedom and independence
* Building an exciting app that millions of real life people will use and appreciate everyday
* First hand experience of how to start, grow, market and raise funding for startups (perhaps useful for your own company one day)
* Working with awesome technologies (Python/Django/jQuery/Debian/Git)
* As part of one of the top technical teams in the UK, along side super smart people who have a lot of fun, devoid of any politics
* With dual-widescreen monitors, a new computer and a Herman Miller Aeron chair
* In a fun office, with free drinks, in the heart of Soho (there are so many options for lunch it's crazy!)
* A competitive salary and a generous equity stake in the company (you're working hard to make the company successful, so you should share generously in the reward!)

A little more about us

* Backed by some of the most prestigious investors in the world with specific experience in social networks and games (including the founder of Bebo, the former CEO of PlayStation, the founders of Skpe, etc - who you'll likely get to meet)
* Founded by entrepreneurs with a track record for success with internet and video games companies
* 200,000 gamers already using the service!
* We'll be messing around with Facebook Apps, OpenSocial and will be integrating with Xbox Live and other multiplayer services.
* And unlikely many other web businesses, we know exactly how to make money, and steps needed to get us there :)

So, all in all, exciting stuff! We want to hear from you! Details on how to do that are below :-)


По-моему, это просто CRAZY & AWESOME, не так ли?

XMPP - как протокол для клауд-сервисов

Matt Tucker в статье XMPP (a.k.a. Jabber) is the future for cloud services описывает возможное применение XMPP-протокола в качестве протокола для связи между клауд-сервисами.

Для организации двусторонней связи клиент-сервер протокол HTTP подходит плохо, т.к. он спроектирован для случаев, когда инициатива по открытию соединения с севером лежит на клиенте. В случаях, когда инициатива по установке соединения исходит от сервера (примеры: messaging applications, stock qoutes online, онлайновые аукционы и др.), HTTP весьма сложно использовать (в этом случае применяются технологии Comet, Bayeux).

Один из вариантов - отдавать данные от сервера клиенту бесконечно долго ("в час по чайной ложке"), оставляя таким образом соединение открытым. Другой вариант - клиент постоянно опрашивает сервер (так называемый поллинг - polling), запросы происходят с некоторым временным интервалом (5-10 секунд) - если на сервере появляются новые данные, то по AJAX они передаются на клиент. Но при этом на сервер сыпятся сотни тысяч, миллионы запросов, абсолютное большинство из которых абсолютно не нужны (т.е. не несут в себе данных), что является издержкой однонаправленности протокола HTTP.

XMPP же лишен этого недостатка, это двунаправленый протокол, построенный на основе XML, легко расширяемый и доказавший работу при больших нагрузках (сотни тысяч, миллионы пользователей) - например, в GTalk. При его использовании происходит ровно столько запросов, сколько надо для передачи данных.

среда, 28 октября 2009 г.

What is Web 3.0 - by Eric Schmidt

Видео с ответом Эрика Шмидта (CEO Google) на вопрос - что такое Web 3.0?

Веб-два-ноль - это AJAX. Веб-три-ноль:

  • это небольшие приложения, которые работают везде - на серверах, десктопах, мобильных устройствах

  • данные находятся в облаке

  • приложения очень быстрые и настраиваемые

  • приложения распространяются "вирусным" путем - т.е. через социальные сети, виджеты, e-mail и т.д.

Про программирование (с другой стороны Луны)

Еще один пост по мотивам блога Эльдара Мусаева - Как стать хорошим программистом? (часть 3 из 3). Обратная сторона Луны. Точнее, меня заинтересовала только одна часть поста - про социальный статус. Далее приведу некоторые выдержки из поста Эльдара.

В целом программисты – это «синие воротнички» с высокой зарплатой. И обращаются с вами соответственно. Если в России вы работали в науке или преподавании, в университетской среде, то получали вы может и очень немного, но ваша свобода как в распоряжении своим временем, так и в направлении исследований была несравненно выше. Даже если вы подрабатывали консалтингом и проектами на стороне. А свобода – это один из важнейших показателей социального статуса.

Уйдя в программисты, особенно программисты в Америке, все это меняется. Это работа по найму. Это рабочий день с 9 до 5 (а то и с 9 до 9). Это подчинение менеджменту. Это партсобрания, пардон, team meetings, на которых вам втюхивают, как вам повезло и какая классная группа, команда, фирма, на которую вы работаете. Причем делают это так фальшиво и неубедительно, что даже если вы в это и верили, то начнете сомневаться.

В общем, не все так плохо. В конце концов, доходы программистов сравнимы с доходами многих врачей и юристов. Просто надо понимать, что программирование – это не социальный лифт, и стать миллионером (или просто достичь финансовой независимости) в этой профессии ничуть не легче чем в любой другой. И «стекляный потолок» может и выше, чем в многих других областях, но все равно вполне реален и весьма прочен.

Такие дела...

Сколько стоит плохой начальник?

Сообщение по мотивам поста в блоге Эльдара Мусаева. Интересны цифры стоимости плохих начальников, то есть начальников, которых не любят и которым не доверяют их подчиненные.

Ну, отрицательных факторов несколько. Во-первых, это turnover - текучка кадров. Далее, проблемы со здоровьем подчиненных такого начальника. Удивительно, но работа на скотину повышает шансы сердечно-сосудистых заболеваний на одну шестую, и шансы инфаркта на одну треть.

Следующий интересный факт уже касается экономики в целом. Согласно той самой Gallup Inc. - далеко не последний авторитет в подобных вопросах - негативное или отстраненное отношение к работе стоит одной только только американской экономике от $250 до $300 _миллиардов_ в год только в потерянной производительности труда, а если начать считать происходящие из-за этого несчастные случаи, болезни, текучку, пропуски работы и просто воровство, то стоимость легко уходит за триллион долларов в год.

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

воскресенье, 25 октября 2009 г.

JIRA live tour использует jQuery

Как недавно написал Ajaxian, Atlassian создала live tour по Жире. При создании использовалась jQuery. Скринкасты хорошо, но когда имеется ассистант, который показывает использование живого приложения, это круто вдвойне.

понедельник, 19 октября 2009 г.

Как получить заданное количество фидов из блогспота

Чтобы получить заданное количество фидов из блогспота, нужно использовать параметр max-results.

Пример: следующая ссылка выдает три последних фида этого блога:
http://jdevnotes.blogspot.com/feeds/posts/default?max-results=3.

П.С.
Increase Your Recent Posts and Comments to 10 – Blogger Hack - неплохая подборочка хаков блогспота.

четверг, 15 октября 2009 г.

Scaling websites - a bunch of presentations

Презентации про архитектуру нагруженных сайтов, взято из блога Peter Van Dijck, см. его пост A bunch of presentations on scaling websites: twitter, Flickr, Bloglines, Vox and more.


  • Scaling Twitter by Blain Cook

  • Scaling Flickr by Cal Henderson

  • Scalable Web Architectures by Cal Henderson

  • Hardware Layouts for LAMP Installations by John Allspaw

  • LiveJournal's Backend, a History of Scaling by Brad Fitzpatrick

  • How we build Vox by SixApart

  • Scaling Last.fm

  • Scalable Web Architectures with Ruby and Amazon S3 or what we learned building SlideShare

  • YouTube Scalability

  • FrontEnd scaling in Yahoo


и много чего еще. Полезный и очень познавательный пост.

среда, 14 октября 2009 г.

JavaScript Videos

Ролики по JavaScript.

Классное видео - Speed Up Your JavaScript.

The JavaScript programming language by Douglas Crockford:
Part 1, Part 2, Part 3, Part 4.

Advanced JavaScript by Douglas Crockford:
Part 1, Part 2, Part 3.

An Inconvenient API: The Theory of the DOM by Douglas Crockford:
Part 1, Part 2, Part 3.

Douglas Crockford: "JavaScript - The Good Parts"

Douglas Crockford: "Web Forward"

Douglas Crockford: "Ajax Performance"

Nicholas Zakas: "Maintainable JavaScript"

John Resig: "Advancing JavaScript with Libraries": Part 1 and Part 2.

Gopal Venkatesan: "Writing Efficient JavaScript"

вторник, 13 октября 2009 г.

Elevator pitch

Elevator pitch - короткий рассказ о продукте, услуге, или об идее. Фишка заключается в том, чтобы этот рассказ можно было нормально, не торопясь проговорить полностью во время поездке на лифте (лифт по-английски - elevator) и "зацепить" своего собеседника. Т.е. во время рассказа должны быть рассказаны ключевые преимущества, выгоды от пользования продуктом или услугой и.т.д. Длина рассказа должна составлять 150-200 слов, длительность - 30-40 секунд.

Правильно составленный элевейтор питч отвечает на вопросы:
- Какой продукт мы предлагаем.
- Какие преимущества имеет наш продукт.
- Кто мы такие.

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

Элевейтор питч - ключевой эпизод в фильме "Деловая девушка"

Элевейтор питч должен отвечать на 6 вопросов, по версии Business Know-How:

  1. Что такое ваш продукт или услуга - кратко опишите, что вы продаете. Не углубляйтесь в детали.

  2. Каков ваш рынок - кому вы продаете, что это за отрасль, насколько рынок большой.

  3. На чем зарабатываете - опишите наиболее просто, как вы зарабатываете деньги на продукте.

  4. Ваша команда - опишите команду, которая работает с вами. Если у вас есть хорошие советники, которые вам сильно помогли, или административный ресурс - также опишите это.

  5. Ваши конкуренты - опишите конкурентов. У вас их нет? Подумайте снова, и все-таки опишите их. Успешная конкуренция доказывает, что ваш продукт/услуга работает хорошо.

  6. Ваши конкурентные преимущества - просто существовать в отрасли с сильными конкурентами недостаточно. Чем ваша компания отличается, в чем ее преимущество над конкурентами - вы должны это донести. Лучшие каналы продаж? Ключевые партнеры? Продвинутые технологии?


Ваш элевейтор питч должен содержать:

  1. Зацепку. Он должен начинаться с зацепки для инвестора - это может быть вопрос, который привлечет его внимание, и он захочет услышать больше.

  2. 150-225 слов. Длительность питча - не более 60 секунд.

  3. Страсть. Инвестор ожидает энергию и увлеченность от вас.

  4. Вопрос. В конце питча вы должны попросить о чем-то - может быть, провести полную презентацию компании у инвестора, или попросить его взять вашу визитку, или попросить его контактные данные. Придумайте это сами.



9 C's для эффективного элевейтор питч, взято отсюда:

  1. Concise (Краткость). Эффективный э.п. содержит так мало слов, как только возможно, но не меньше.

  2. Clear (Ясность). Никаких акронимов, MBA-словечек и десятидолларовых выражений =) Эффективный э.п. могут понять сразу и без проблем ваши бабушка и дедушка, ваша половинка и ваши дети.

  3. Compelling (Неотразимость). Эффективный э.п. сразу объясняет проблему, которую решает ваш продукт или услуга.

  4. Credible (Достоверность). Эффективный э.п. объясняет, почему вы квалифицированы, чтобы увидеть проблему и построить решение.

  5. Conceptual(Концептуальность). Эффективный э.п. проводится на достаточно высоком понятийном уровне, и не углубляется в ненужные детали.

  6. Concrete (Конкретность). Эффективный э.п. конкретен настолько, насколько это возможно, он практически осязаем.

  7. Consistent (Целостность). Любая версия эффективного э.п. передает одно и то же базовое послание.

  8. Customized (Настройка на аудиторию). Эффективный э.п. учитывает интересы и проблемы конкретной аудитории.

  9. Conversational (Начало диалога). Эффективный э.п. проводится не для того, чтобы закрыть сделку. Он нужен, чтобы "зацепить" инвестора, и продолжить диалог.


Еще ссылки:
The Perfect (Elevator) Pitch от BusinessWeek.

How to Craft a Killer Elevator Pitch That Will Land You Big Business - один из "типсов для жизни" от Dumb Little Man.

Learn how to deliver a masterful Elevator Pitch от StartUp Nation.

Маршрутное обучение - презентация на SlideShare от Алексея Черняка.

И самая классная ссылка в заключении - видео-примеры питчей от TechCrunch - one startup, 60 seconds. Go!

Update, see videos:

Elevator Pitch

How To Craft Your Elevator Speech

понедельник, 12 октября 2009 г.

Change your password day

Австралийское правительство призвало менять пароли как минимум дважды в год. Рекомендации:
- минимум 8 символов;
- применять строчные и прописные символы;
- как минимум одна цифра;
- как минимум одна буква.

Они даже учредили Change Your Password Day =)

Ссылки:

E-security Awareness Week Launch

Обсуждение в группе comp.lang.java.programmer

POX over HTTP

POX - Plain Old XML - обозначает XML документы без различных наворотов, которые добавляет в него, например, SOAP. POX часто используется совместно с REST-сервисами, см например Twitter API, Flickr API. Название POX созвучно с POJO- Plain Old Java Object. POJO тоже появился в ответ на чрезмерную сложность EJB.

POX + REST проще, чем SOAP. Но области применения у них несколько разные. SOAP используется при интеграции enterprise applications, POX + REST используется, чтобы хоть как-то достичь интеграции. Есть сторонники как POX+REST, так и сторонники SOAP.

По-моему мнению, количество клиентов Twitter, Flickr так велико именно потому, что их API очень простой, с ним можно прямо сейчас начать работать, не затрачивая времени на освоение вещей, т.к. осваивать там просто нечего. С SOAP так не получится.

В Сети есть интересные обсуждения этой темы - POX & SOAP & REST.

The War is Over (WS-* vs. POX/HTTP)

SOAP vs. POX vs. REST by Stephan Tilkov

A Brief Introduction to REST at InfoQ

POX-and-SOAP at InterWingly, Sam Ruby

Lessons learned launching a web service by Nelson Minar, опыт, полученный при создании AdWords API.

Больше ссылок по REST:

A RESTful Web service, an example

Digg API

Netlog OpenSocial REST API

Amazon Simple Storage, using the REST API

пятница, 9 октября 2009 г.

Syntax HighLighter

Теперь для блога буду использовать вот этот подсветчик синтаксиса.

При отсылке JSON нужно ставить mime-тип application/json

При отсылке JSON нужно ставить mime-тип application/json, а не text/plain.

Уязвимости, которые возникают при использовании text/plain, описаны здесь и здесь.

Пример кода сервлета, устанавливающего mime и кодировку:

request.setContentType("application/json; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("{any complex JSON piece of data}");
....
 

четверг, 8 октября 2009 г.

36 советов стартапам - от разработки до пиара

Решил перевести статью Алекса Искольда "36 Startup Tips: From Software Engineering to PR and More!". Она уже была переведена на Хабре, но там перевели только первые 8 (с нулевого до седьмого) советов. Остальное решил доделать я сам.

РАЗРАБОТКА (перевод взят с Хабра)

Поскольку программное обеспечение является базисом для любого современного веб-стартапа, то оно должно быть элегантным, простым и шустрым. Вместо того, чтобы нанимать армию кодеров, лучше иметь несколько умных, исполненных энтузиазма программистов, которые любят то, что они делают. Маленькая и влюблённая в своё дело команда может сделать больше, чем целая армия. Даже если компания растёт, всё равно вы можете осилить многие задачи с небольшой командой.

Совет 0: У вас должен быть код
Наличие работающего кода доказывает, что создание всей системы возможно, и что ваша команда способна её создать. Работающий код — это стартовая площадка для запуска вашего бизнеса. Когда код готов, бизнес возможен. В старые добрые времена технологические стартапы получали венчурное финансирование просто под идею, записанную на бумажке, но те времена давно прошли. Сегодня стартапу нужен не только работающий код, но ещё и собранная система, и база активных пользователей, чтобы привлечь венчурный капитал. Разработка софта раньше начиналась после получения денег, а теперь является необходимым условием для их получения.

Совет 1: У вас должен быть сооснователь-технарь
Любой стартап начинается с идеи и нескольких человек. Многие сооснователи стартапов — технари, которые искренне влюблены в технологии и жизнь. Раньше не всегда было так. Всего несколько лет назад команда технических специалистов испытала бы большие проблемы в поисках денег. Была распространена мысль, что только магистр со степенью MBA способен управлять компанией. Сейчас, наоборот, наличие технического сооснователя является достоинством.

Совет 2: Наберите программистов класса A+, которые любят кодировать
До недавних пор создание больших систем напоминало чёрную магию. Разработка софтверных проектов затягивалась на годы и велась большими группами разработчиков, которые с трудом находили общий язык насчёт того, что нужно делать и как именно. В результате получались нестабильные, глючные системы, которые было трудно поддерживать и расширять. Проблема была в том, что в процессе участвовало слишком много людей, не слишком хорошо разбирающихся в программировании. Стартапы не могут позволить себе нанимать программистов классом ниже А+.

Совет 3: Сохраняйте маленькую команду разработчиков и не отдавайте задачи на аутсорсинг
Команда из двух-трёх великолепных программистов может создать практически любую систему, потому что они хорошо делают своё дело, любят создавать программы, фокусируются на цели и не шатаются в стороны. Команда из 20 посредственных программистов далеко не зайдёт. Разработка отнюдь не ускоряется пропорционально количеству программистов. Наоборот, самые лучшие программы сегодня создаются маленькими группами хороших программистов. Чем меньше — тем лучше, этот принцип в равной степени относится и к коду, и к количеству людей, работающих над ним.

Совет 4: Задавай трудные вопросы на интервью
Нет ничего хуже, чем проявить мягкость на интервью с перспективным работником и, как результат, нанять неправильного человека. Это плохо для вас, но, что ещё более важно, это плохо для того человека. В конце концов вы просто разойдётесь. Но лучше всего не делать эту ошибку с самого начала. Так что задавайте побольше технических вопросов на интервью.

Совет 5: Не берите менеджера-нетехнаря
Вам не нужны такие люди в маленькой команде. Если каждый в команде хорошо мыслит, знает что делать и как выполнять задачу, то зачем вам нужен менеджер? Люди, которые пытаются завернуть ваши цели в бумажку из неких сложных процессов, только затормозят и разочаруют вас.

Совет 6: Культивируйте быстроту реакции
Современные стартапы должны двигаться очень быстро. Нет возможности планировать полгода, потому что кто-нибудь другой вас обгонит. Новый подход состоит в создании непрерывного цикла разработки. Конечно, вы осуществляете планирование следующего релиза, но в то же время делаете частые обновления и постоянные апдейты. Надо не кодировать, а ваять.

Совет 7: Не изобретайте заново велосипед
Многие стартапы тонут из-за излишней инфраструктуры. Здесь имеются в виду две вещи: создание своих собственных библиотек или построение собственной масштабируемой системы мирового класса. По первому вопросу: в интернете огромное множество великолепных билиотек с исходными кодами, так что нет смысла создавать свои собственные. Используете вы JavaScript, PHP, .NET, Python или Ruby, скорее всего, уже существуют подходящие вам библиотеки. Повторное написание библиотек — это пустая трата времени, тем более что вряд ли вы напишете их лучше.

ИНФРАСТРУКТУРА - 5 советов(отсюда идет мой перевод)

Сегодня гораздо легче построить масштабируемый веб-стартап благодаря такому хостинг-провайдеру как Rackspace, веб-сервис провайдеру как Amazon, системе аналитики Google Analytics. В этом разделе мы рассмотрим возможные решения с точки зрения стартапа.

Совет 1: Используйте лучшего хостинг-провайдера, какого только можете себе позволить
Как стартап, вы всегда ищите способы снижения издержек. И одной из первых крупных статей сокращения расходов, как кажется, является веб-хостинг. Но экономия на хостинге - ошибка, которая будет стоить вам много времени, которое более ценно, чем деньги, которые вы потратите. Никаких проблем, если вы используете дешевого провайдера во время разработки кода. Но ваша продакшн-версия должна хоститься у мощного и надежного хостера.

Совет 2: Используйте Amazon Web Services
Хотя вам все еще нужен постоянный и надежный хостинг-провайдер, вы должны рассмотреть другую альтернативу, чье значение все более возрастает - веб-сервисы Amazon.com. Это предложение гиганта электронной коммерции должно быть внимательно рассмотрено каждым стартапом при построении инфраструктуры. Четыре сервиса могут особенно упростить построение масштабируемого веб-приложения: Simple Storage Service, Elastic Compute Cloud, Simple DB, and Simple Queue Service.

Совет 3: Используйте Google Analytics - и стандартно, и креативно
Прежде всего, стартапам нужно ИЗМЕРЯТЬ. Результаты измерений полезны для оценок роста и успеха компании. Без измерений трудно понять, что происходит на самом деле. В Google Analytics полно фич, но, самое важное, он имеет API. Это важно потому, что вы можете построить свои инструменты, которые помогут по-разному взглянуть на одну и ту же информацию.

Совет 4: Начните со стандарта, а потом тюнингуйте систему
В 99.9% случаев лучше, если начнете со стандарта, и в 99.9% вы все равно не доходите до конца. Хитрость в том, чтобы идти от стандарта до кастомайза правильным путем. Возможно, наихудшее, что можно сделать, это заранее тюнинговать. Как и преждевременная оптимизация исходного кода, это ведет к уродствам. Зачем гадать заранее, когда вы даже не знаете, что происходит с системой на самом деле?

Совет 5: Наймите или законтрактуйте хорошего системного администратора
Это самое простой совет из этих пяти. Как программирование, развитие бизнеса (привлечение клиентов) и бухгалтерию лучше оставить профессионалам. Я знаю мой путь в Юниксе, я был системным админом 15 лет назад, но все равно мне есть чему поучиться в Юникс. Когда вы вырастите до определенного размера, вам понадобится отдельный сотрудник на администрирование железа и софта.

ПИАР - 11 советов
Пиар - жесткая игра. Когда рынок разогрет, сложно быть замеченным, поскольку сразу много компаний соревнуются за внимание пользователя. Когда рынок остыл, сложно быть замеченным, поскольку люди устали после разогретого рынка. Для стартапов еще сложнее иметь хороший пиар, поскольку они не могут потратить на него много денег. В этом разделе мы рассмотрим, что стартапы должны делать для пиара.

Совет 1: Наймите пиар-фирму
Это может показаться сюрпризом, но вам нужна пиар-фирма. На ранней стадии стартап не всегда может позволить нанять пиар-фирму, но это не значит, что это не нужно. Причина номер один, почему вам нужна пиар-фирма - это из-за ее связей. Они знают людей, потому что это их работа - связи.

Совет 2: Не ожидайте, что пиарщики подробно изучат ваш продукт
Это не их работа. Они - коннекторы, они являются мостом между вами и СМИ. Они отвечают за то, чтобы вы были на первых полосах нужных СМИ. Это их работа. А ваша работа - рассказать про ваш продукт, обяъснить, почему он хорош и почему каждый должен его использовать ;-).

Совет 3: Наймите пиарщиков, которые в теме
Пиар-фирму специализируются на разных отраслях, и не все из них вам подходят. Например, если ваша область - потребительские товары в Интернете, не нанимайте пиарщиков, которые занимаются мобильными технологиями - они не то, что вам нужно. Если вы - интернет-компания, специализирующаяся на потребительских товарах, вам нужна фирма, которая знает блогосферу изнутри, потому что это ваши самые первые потребители.

Совет 4: Анонсируйте ваш продукт на конференции
Причина этого - вы получите гораздо больше внимания от СМИ, если вы анонсируете ваш продукт на конференции, чем в какое-либо другое время. Но конференция должна быть подходящей. Для анонса вы должны сделать две вещи: анонсироватьна специализированной конференции, такой как DEMO или анонсировать на не-стартаперской конференции, которая имеет секцию для объявления новых проектов. Например, на Веб-два-ноль концеренциях (таких как Supernova) обычно анонсируют 10-15 стартапов. Не имеет смысла анонсировать на конференции, в которой нет стартаперского участия, так как не будет подходящего контекста для вашего анонса.

пятница, 2 октября 2009 г.

Список xtypes для ExtJS

Выкладываю список xtypes для контролов ExtJS:



xtype Class
------------- ------------------
box Ext.BoxComponent
button Ext.Button
buttongroup Ext.ButtonGroup
colorpalette Ext.ColorPalette
component Ext.Component
container Ext.Container
cycle Ext.CycleButton
dataview Ext.DataView
datepicker Ext.DatePicker
editor Ext.Editor
editorgrid Ext.grid.EditorGridPanel
flash Ext.FlashComponent
grid Ext.grid.GridPanel
listview Ext.ListView
panel Ext.Panel
progress Ext.ProgressBar
propertygrid Ext.grid.PropertyGrid
slider Ext.Slider
spacer Ext.Spacer
splitbutton Ext.SplitButton
tabpanel Ext.TabPanel
treepanel Ext.tree.TreePanel
viewport Ext.ViewPort
window Ext.Window

Toolbar components
---------------------------------------
paging Ext.PagingToolbar
toolbar Ext.Toolbar
tbbutton Ext.Toolbar.Button (deprecated; use button)
tbfill Ext.Toolbar.Fill
tbitem Ext.Toolbar.Item
tbseparator Ext.Toolbar.Separator
tbspacer Ext.Toolbar.Spacer
tbsplit Ext.Toolbar.SplitButton (deprecated; use splitbutton)
tbtext Ext.Toolbar.TextItem

Menu components
---------------------------------------
menu Ext.menu.Menu
colormenu Ext.menu.ColorMenu
datemenu Ext.menu.DateMenu
menubaseitem Ext.menu.BaseItem
menucheckitem Ext.menu.CheckItem
menuitem Ext.menu.Item
menuseparator Ext.menu.Separator
menutextitem Ext.menu.TextItem

Form components
---------------------------------------
form Ext.FormPanel
checkbox Ext.form.Checkbox
checkboxgroup Ext.form.CheckboxGroup
combo Ext.form.ComboBox
datefield Ext.form.DateField
displayfield Ext.form.DisplayField
field Ext.form.Field
fieldset Ext.form.FieldSet
hidden Ext.form.Hidden
htmleditor Ext.form.HtmlEditor
label Ext.form.Label
numberfield Ext.form.NumberField
radio Ext.form.Radio
radiogroup Ext.form.RadioGroup
textarea Ext.form.TextArea
textfield Ext.form.TextField
timefield Ext.form.TimeField
trigger Ext.form.TriggerField

Chart components
---------------------------------------
chart Ext.chart.Chart
barchart Ext.chart.BarChart
cartesianchart Ext.chart.CartesianChart
columnchart Ext.chart.ColumnChart
linechart Ext.chart.LineChart
piechart Ext.chart.PieChart

Store xtypes
---------------------------------------
arraystore Ext.data.ArrayStore
directstore Ext.data.DirectStore
groupingstore Ext.data.GroupingStore
jsonstore Ext.data.JsonStore
simplestore Ext.data.SimpleStore (deprecated; use arraystore)
store Ext.data.Store
xmlstore Ext.data.XmlStore



Этот список лежит в документации к классу Ext.Component.

четверг, 1 октября 2009 г.

ExtJS - Добавление сабмита по Enter для FormPanel

Для формы регистрации нового юзера на сайте требуется производить сабмит формы по нажатию Enter в любом поле ввода формы. Сама форма появляется в новом окне (т.е. Ext.Window). Требуется добавить обработчик Enter для FormPanel.

Решение: для окна добавляем слушателя на событие show. В слушателе добавляем Ext.KeyMap с обработкой нужной клавиши. Вот что у меня получилось:

 
listeners: {
show: function() {
new Ext.KeyMap(Ext.getCmp('reg-form').body, [{
key: Ext.EventObject.ENTER,
fn: function() {
Ext.getCmp('regform-submit-button').fireEvent('click');
},
scope: this
}]);
}
}


Дополнительно можно почитать пост How to add a keymap to an existing FormPanel in ExtJS, где Jeffrey Phillips рассказывает, как добавить обработчик нажатия клавиши на FormPanel.

Постоянные читатели