Python - самый популярный язык программирования после Java, C, C++ (именно в таком порядке).
Источник - http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Программирование, машинное обучение, и жизнь
Python - самый популярный язык программирования после Java, C, C++ (именно в таком порядке).
Источник - http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Наконец-то я понял, почему пишут так
def item_view(request, id):
item = get_object_or_404(Item, id=id)
if request.method == 'POST':
form = ItemForm(request.POST, instance=answer)
if form.is_valid():
form.save()
return HttpResponseRedirect(item.get_absolute_url())
else:
form = ItemForm(instance=item)
return render('item.html', {'item': item, 'form': form})
и не пишут вот так
def item_view(request, id):
item = get_object_or_404(Item, id=id)
if request.method == 'GET':
form = ItemForm(instance=item)
elif request.method == 'POST':
form = ItemForm(request.POST, instance=answer)
if form.is_valid():
form.save()
return HttpResponseRedirect(item.get_absolute_url())
return render('item.html', {'item': item, 'form': form})
Второй вариант хоть и более выразительный, но не учитывает такие http methods как HEAD. А HEAD частенько шлются всякими программами и фейсбуками про постинге ссылки (чтобы проверить, что ссылка действительно рабочая).
Я наблюдаю разительное отличие между блогами программистов и блогами других людей. Независимо от первоначальных причин по которым программисты начали вести блог, главное что они делают через блоги - говорят с другими программистами.
Не выражают свои эмоции, не самовыражаются, не зарабатывают, не продвигают, не продают. А продолжают традицию обмена новыми идеями, полученным опытом. Раньше ученые писали друг другу бумажные письма, а теперь удобно писать одно электронное “письмо” всем, кто подписан на Atom/RSS.
По крайней мере это справедливо для блогов, которые читаю я.
Upd. “Обсуждения через блоги” Ивана Сагалаева
Короткая мысль:
Базовых принципов построения сложных систем немного. MVC, разделение на шаблоны и логику, разделение на сервера приложений и сервера данных, … А вот инструментов для реализации каждого из принципов очень много. Много редакторов, шаблонных языков, key-value datastores, веб-фреймворков, инструментов тестирования разного уровня, систем контроля версий, языков программирования.
Мало пользы в поиске идеального для всех инструмента, еще меньше - в отстаивании позиции, что найденный инструмент - идеальнее всех остальных. Лучше стараться понимать на практике базовые принципы, а инструменты выбирать подходящие лично вам по эстетическим, практическим и прочим любым другим причинам.
Первый use-case использования документоориентированных БД, который не дает мне покоя.
Рендеринг шаблонов сейчас может быть очень быстрым, а умная инвалидация кеша все еще остается очень непростой.
Источник - http://codeascraft.etsy.com/2010/05/19/mongodb-at-etsy/
http://codeascraft.etsy.com/ - компания Etsy делится своим опытом в разработке, мониторинге и прочих областях
http://www.laughingmeme.com/ - когда-то был архитектором Flickr’a, а теперь работает VP of Engineering at Etsy
Внес небольшие изменения в код этого блога. Заметил, что Akismet (сервис проверки на спам, которым обрабатывались все входящие комментарии) перестал пропускать однострочные короткие комментарии. Отключил проверку на спам, вместо этого добавил Recaptcha. Если есть какие-то замечания - пишите в комментарии к этому посту или на roman.vorushin@gmail.com.
Upd. Комментарии уже давно переехали на Disqus и полет нормальный.
В новом проекте я много работаю в роли дизайнера-юзабилиста-фронтендщика. Пишу html, css, javascript. Думаю страницами, действиями, приоритетами. Хочу поделиться тем, что я успел увидеть глазами дизайнера в оформлении шаблонов страниц сайта.
В случае статического сайта каждая страница - это один html файл. Это очень удобно. Хочешь поправить главную страницу - открывай start.html, профиль - profile.html и т.д. Поэтому всё (или почти всё), что относится к текущей странице, должно быть в одном файле шаблона. Даже javascript код лучше не выносить в отдельный файл, если он относится к дизайну-юзабилити страницы (а не к супер-сложной технологии, которую понимают только программисты). Исключения - методы или свойства моделей, возвращающие часто встречающиеся элементы (например, у меня в профайле есть свойство profile_link, которое собирает полное имя из first_name, last_name и оборачивает его в <a></a>), удобные фильтры и повторяющиеся виджеты (в виде отдельных файлов, добавляемых через {% include %} или inclusion tags - последние удобны тем, что их можно параметризовать).
У меня есть больной вопрос, мои уважаемые читатели.
Я давно читаю блог команды 37signals Signal vs. Noise и я завидую тому, как много внимания они уделяют дизайну. Они рекомендуют использовать команды из 1 дизайнера и 2 программистов. Причем дизайнер сам правит шаблоны.
Я никогда еще не работал с такими дизайнерами. Возможно ли это в xUSSR? Получалось ли у вас работать таким образом? Или дизайнер рисует красивый PSD, его отдают верстальщику, а программисты потом пытаются полученные html/css встроить в приложение? Или все-таки существую дизайнеры, которые так же плотно работают над проектом, как программисты?
Знакомые ищут team lead для нового проекта в Москве. Python, lean development, agile. Проект околосоциально-политический, использующий краудсорсинг. Нужно набрать небольшую мобильную команду (2-3 человека) и сделать прототип за 1.5 месяца. Зарплата + equity. Обращайтесь к alex.shevchenko@sciworth.com (один из основателей Sciworth Labs, в которой я сейчас работаю).
Акио Морито - руководитель и со-основатель компании SONY. Интересная история жизни удивительного человека. Я даже задумался - а не купить ли следующим ноутбуком Sony Vaio (вместо макбука, который служит мне уже третий год).
Вот пара цитат про путешествия. Семейный подход к образованию (притом что большинство детей училось в лучших университетах):
Мой отец следовал примеру своего отца. Он часто говорил, что никакие деньги в мире не могут дать человеку образование, если только он сам не захочет сесть за книги и прилежно учиться. Но деньги позволяют получить один из видов образования — это образование, которое дают путешествия.
И после того как Морита пожил в США, а его дети отучились в разных странах мира:
Мне тоже многое дал опыт учебы моих детей. Прежде всего я пришел к выводу о том, что контакты с другими культурами показывают островитянину-японцу, что он, японец, находится на земле в меньшинстве. Он учится не только ценить свои характерные черты японца, но и понимать, что именно ему следует приспосабливаться к остальному миру, а не мир должен приспосабливаться к нему. Йосико говорит, что одну из важных вещей необходимо понять и усвоить: «иностранцы» не одинаковы, они поддерживают разные идеи, исповедуют разные религии, у них разное прошлое. Таким образом, наша поездка за границу избавила семейство Морита от предрассудков, и мы прекрасно себя чувствуем в любой части мира, хотя наш настоящий дом — Япония.
Спасибо akve за такой подарок на ДР!
Пожалуй самый известный мне мощный ход в стартап-проектах - “компактные спецназ-команды”. Компактные = не больше 10 человек. Спецназ - где каждый участник десятерых стоит. Примеры: серверная команда youtube из 9 человек (на момент покупки гуглом), reddit (3 человека), github (их было вначале от 2 до 4 человек), stackoverflow (всех победили втроем, после получения инвестиций их стало уже 27), friendfeed (начали вчетвером, а на момент покупки фейсбуком их было 12).
“Три мушкетера”, дуэль д’Артаньяна и де Жюссака
Эта борьба в конце концов вывела де Жюссака из терпения. Разъяренный тем, что ему не удается справиться с противником, которого он счел юнцом, он разгорячился и начал делать ошибку за ошибкой. Д’Артаньян, не имевший большого опыта, но зато помнивший теорию, удвоил быстроту движений. Жюссак, решив покончить с ним, сделал резкий выпад, стремясь нанести противнику страшный удар. Но д’Артаньян ловко отпарировал, и, в то время как Жюссак выпрямлялся, гасконец, словно змея, ускользнул из-под его руки и насквозь пронзил его своей шпагой. Жюссак рухнул как подкошенный.
Одним из осознанных направлений моего развития, как разработчика, я вижу скорость. Делать за месяц то, что раньше делал за год. В этом направлении я вижу два главных аспекта: развитие мышления и овладение наиболее эффективными инструментами.
Неделю назад приехали в Киев из Крыма, все это время обустраивались, только сегодня я выбрался поработать в гостеприимный офис Comindwork. Киев очень радует - красивые улыбчивые люди, мало пробок и толкучки, всё близко.
Последние две недели я не программировал (неделю жили в палатке, неделю обустраивались), и сегодня наблюдал постепенный набор скорости: сначала вообще ничего не понятно в проекте, потом сделал одно маленькое исправление, второе-третье, о, процесс уже пошел!, еще лучше, ага - сложное место и снова размышлений на полчаса-час, бинго! эврика! тыц-тыц-тыц, еще тыц-тыц-тыц, ага, а сейчас протестируем, тут поправим, работает! И так хорошо от того, что сделал что-то полезное!
Я давно уже заметил, что созидательный труд отвечает на многие мои экзистенциональные вопросы. Косить ручной косой траву на даче, мыть посуду, программировать новый сервис - от всего этого мне становится лучше и в жизни моей появляется больше смысла! Похоже ответ на вопрос “Каков смысл жизни?” - это не набор слов, а незря прожитая жизнь.
А про Киев подробнее я напишу попозже, пока я слишком влюблен в него, чтобы быть хоть немного объективным :) Киевляне, привет!
Пару дней назад увидел в комментариях на хабре фразу “И тогда я понял, что умными рождаются, а не становятся”. Мне эта фраза близка тем, что сейчас, к примеру, я читаю блоги действительно умных талантливых программистов, некоторых знаю лично. И ощущение - между нашими способностями лежит огромная пропасть. Я толком ничего не знаю, а они - “боги, вырезанные из камня” (с) Бойцовский клуб.
А поскольку у меня этим летом много времени для размышлений - в прогулках, поездках - то я начал вспоминать что я успел накопать на тему “Умными-талантливыми становятся или рождаются”. Чтобы не забыть, пишу этот пост. Он может оказаться несколько сумбурным, но уже лучше пусть он будет, потому что уже завтра утром я могу все забыть и начать думать какую-то другую мысль.
Если вы давно хотели попробовать писать юнит-тесты для своих проектов, но не могли пересилить лень, стремление к простоте или что-то еще, то у меня есть совет для вас. Попробуйте написать юнит-тесты для API - тех вьюх, которые не открыть в браузере, не протестить глазами и мышкой. Особенно это касается API, которое вызывается из сторонней системы (например из вашего приложения ВКонтакте). Локальные тесты позволят быстро выявить кучу ошибок, снизят время тестирования в сложной внешней системе, а также (о радость для искателей простоты и неизбыточности!) - будут логичными и простыми.
Я первый раз по-настоящему оценил юнит-тесты, когда писать веб-сервис для банка. Сейчас пишу приложение для ВКонтакте, и сначала забыл про тесты, в результате много раз обновлял приложение, много всего выводил в консоль. А как напишешь новый код - опять что-то не работает! И не посмотреть красивое сообщение об ошибке, которое рисует django, когда тестируешь странички веб-сайта! Написал тесты, всего 21 строчку, и процесс пошел в разы быстрее.
Цитата из “Автобиографии” Ганди:
“Such service can have no meaning unless one takes pleasure in it. When it is done for show or for fear of public opinion, it stunts the man and crushes his spirit. Service which is rendered without joy helps neither the servant nor the served. But all other pleasures and possessions pale into nothingness before service which is rendered in a spirit of joy.”
Несмотря на то, что написано в доинтернетовскую эпоху, применимо и к веб-сервисам. Радует душу? Спрограммируешь и люди будут рады. Не радует? Шансы невелики.
Все больше пишу на Javascript - сначала jQuery для всяких формочек, потом Google/Yandex Maps, сейчас большой проект с Canvas. Среди друзей больше всего работал с JS Дима Смолин, на днях обсуждали с ним слабые места Javascript:
объявление переменных через var приводит к страшным ошибкам в коде (если забудешь var)
итераторы по массивам довольно неудобные, но это решается библиотеками
очень странные соглашения по работе оператора ==
местами черезчур агрессивное приведение типов друг в друга, типа превращений строки в число и обратно
конечная запятая в словаре или массиве сводит с ума некоторые браузеры
необязательная “;” в конце строки
А плюсы огромные: компактное мощное ядро языка, V8, Canvas и т.д.
В конце весны мы отвезли все пожитки на склад, оставили только то, что влезет в нашу небольшую машину и уехали из Москвы в Крым. Поселились в Новом Свете (это красивый поселок у моря, окруженный горами и заповедником с можжевеловой рощей). Планируем жить тут до середины сентября. А поскольку валяться на море месяцы напролет не интересно, мы продолжаем работать. Янка развивает свой проект Серебро Непала, я программирую - скоро анонсирую один проект на Geodjango, один большой проект начал делать с Толиком Востряковым и есть еще много идей и предложений.