На волне повышенного внимания к мобильному софту, и в частности к App Store, мы тоже решили попробовать свои силы в этой хаотичной, на первый взгляд, массе. iPhone есть, MacBook есть, остается только выбрать что написать. Требования простые: это должно быть просто, это не должно занять много времени и это должно быть дешево. И еще очень хотелось написать такое, что и самим пригодится. Но все пошло не совсем так, как мы предполагали.
Почему после распараллеливания выполнение вашей программы может замедлиться вдвое?
Почему после создания потока перестает работать Ctrl-C?
Представляю вашему вниманию перевод статьи David Beazley «Inside the Python GIL». В ней рассматриваются некоторые тонкости работы потоков и обработки сигналов в Python.
В этой захватывающей статье я расскажу про инструменты, с помощью которых можно писать функциональные тесты для django-проекта. Есть куча разных других способов это делать, но я опишу один — тот, который, на мой взгляд, самый простой. Между делом создадим красивый отчет по code coverage (субъективно — приятнее тех, что делает coverage.py). И еще, в качестве приправы, будет немного болтовни про тестирование.
В блоге Google Web Toolkit появилось сообщение, что разработчики из Гугль смогли прикрутить Quake2 (вернее проект Jake 2 — порт на java) к GWT.
Были использованы следующие технологии: WebGL, Canvas API, html5-тег audio, Local Storage API и WebSockets.
Для того, чтобы заставить работать Jake 2 с GWT, пришлось сделать некоторые доработки:
— Переписать рендеринг под WebGL.
— Переделать работу с сетью (для многопользовательской игры) с UDP на WebSockets.
— Сделать все подгрузки ресурсов асинхронными.
— Сделать реализацию Java NIO буферов в GWT, используя массивы WebGL.
— Реализовать эмуляцию простой файловой системы для сохранения игр.
На сегодняшний день поддерживаются лишь Webkit Nightly Builds (Mac OS X) и Chrome Development Branch.
UPD: Как я вижу, сие можно запустить на AppEngine. Если вдруг кто-то развернет там это приложение и потестит, расскажите потом плиз, насколько это все нагружено, сколько проца/трафика/etc. потребляет. А то интересно, но у самого времени совсем на это нет.
Во время dot com бума мы с друзьями основали стартап, где я был техническим директором. Мы разработали систему управления знаниями. Это была комбинация блогов, wiki, системы управления документами, социальных закладок. Мы начали в 1999, что было несколько рановато для wiki и блогов (Movable Type вышли на рынок в 2001). Социальные закладки, по сути, были точно такими же, как станет впоследствии Delicious. Помимо этих новых и замечательных идей (по крайней мере для 1999 года) у нас было три отличных особенности:
Всему можно было присвоить метки (tags): навыкам, людям, ссылкам, документам, постам в блогах, страничкам в wiki. Что-то, что теперь называется фолксономия. Метки могли соотноситься с другими метками и формировать онтологии. Метки могли ссылаться на другие документы, посты, людей.
Всему можно было поставить свою оценку от 1 до 5.
У нас был умный нечёткий поиск, основанный на метках и оценках. Например, при поиске «люди со знанием Oracle» в выдачу также попадали специалисты по SQL Server'у — например, чтобы укомплектовать команду, если не было свободных гуру Oracle.
У нас были кое-какие деньги — посевные инвестиции, которые мы получили от венчурного фонда, и мы вполне себе счастливо и успешно разрабатывали наше приложение. Мы показали его многим пользователям и получили весьма благоприятные отзывы от больших компаний. Так почему же стартап провалился и я не миллионер?
Я только начал изучать Python. С самого первого знакомства язык порадовал симпатичными конструкциями и синтаксически-гарантированной удобностью к чтению и пониманию кода. В процессе освоения, при написании своего кода, бывает, сомневаюсь в правильности выбранных способов с точки зрения Python-way ( PEP 8 — Style Guide for Python Code, если угодно). Для вникания в идеологию программирования, в Python-сообществе кроме исчерпывающей документации, ко всеобщей радости, накоплено уже немало вспомогательных материалов, таких как статья Python Tips, Tricks, and Hacks, перевод которой недавно появился на Хабре Мне понравилась статья Дэвида Гуджера «Пиши код, как настоящий Питонист: идиоматика Python» (David Goodger «Code Like a Pythonista: Idiomatic Python»). Для лучшего её усвоения решил оформить (в силу умения) полноценный перевод, потом показалось здравой идеей поделиться с Хабром. Пока работал над переводом, пришло понимание, что статья существенно больше, чем показалась при прочтении ее в оригинале, поэтому постить буду частями, чтобы не выпасть из формата Хабра-статьи. Продолжение и окончание перевода.
Уважаемое Хабрсообщество и все интересующиеся языком программирования Python. Я начал переводить весьма интересную книгу Gray Hat Python. Правда, пока я перевел лишь предисловие и первую главу. Начал переводить для себя (поэтому немного коряво), но все таки решил, что нужно делиться. :)
Списки. Свёртка списка (reduce). Прохождение по списку (range, xrange и enumerate). Проверка всех элементов списка на выполнение условия (all и any). Группировка элементов нескольких списков (zip). Еще несколько операторов для работы со списками. Продвинутые логические операции с типом set. Словари. Создание словаря с помощью именованных аргументов. Преобразование словаря в список и обратно. «Dictionary Comprehensions».
Предлагаю читателям «Хабрахабра» перевод статьи «Python Tips, Tricks, and Hacks». Статья будет полезна на начальном и среднем этапах изучения Python.
Хотите писать более лаконичный и читаемый код? Вы хотите уместить как можно больше смысла в одно выражение? Считаете, что прочитать о нескольких уловках лучше, чем провести остаток жизни за чтением документации? Вы обратились по адресу. Мы начнем с маленьких уловок, которые вы уже могли встретить, если немного работали с Python. Но я обещаю, что ближе к концу статьи вас ожидает больше безумных вещей.
Содержание
1. Маленькие уловки. Четыре типа кавычек. Правдивость различных объектов. Проверка на вхождение подстроки. Красивый вывод списка. Целочисленное деление и деление с плавающей точкой. Лямбда-функции. 2. Списки. Генераторы списков и выражения-генераторы.
Проблема секьюрности информации, передаваемой в файлообменных сетях, сегодня стоит очень остро. Популярный пиринговый протокол битторрент не дает практически никаких средств защиты от посторонних глаз, выдавая IP всех пиров как на ладони. The Pirate Bay, помнится, обещал разработать свой собственный анонимный протокол, но, видимо, дело заглохло.
Еще одной проблемой битторрента является частичная централизованность. Нет серверов — нет сети (DHT не в счет, т.к. не полностью самостоятелен). Очевидно, будущее за полностью децентрализованными сетями — сетями третьего поколения. Об одной из таких я и хотел бы рассказать.
Голландские компьютерщики нашли самый дешёвые вариант для серверных стоек. Это стандартные квадратные столики LACK, которые продаются по 5 евро в мебельном магазине IKEA. По счастливой случайности, расстояние между ножками у них составляет 19" — в точности по размеру стандартного серверного юнита. При этом столики отлично крепятся друг с другом, как конструктор Lego.
Проект LACKRack был впервые представлен на компьютерной конференции eth0 несколько дней назад.
P.S. Тема уже обсуждалась на Хабре, здесь просто больше фотографий в качестве DIY-инструкции (под катом).
Без малого год назад, я уже писал (http://habrahabr.ru/blogs/javascript/50544/) о самом коротком способе определение браузера Internet Explorer, но вот некто Aleko нашел еще более короткий вариант:
-[1,]
Всего 5 байт. Пример использования: if(-[1,]){
alert("Not IE!");
}
В этом посте я постараюсь осветить довольно актуальную для стартапа в начале пути тему — «где работать», исходя из ощущений собственной шкуры.
Пролог
В середине июня я послал подальше «офисную» позицию и вместе с другом-технологом засел за давно назревшую идею стартапа (результатами мы скоро похвалимся в отдельном посте).
Зная, что умный стартап должен тратить деньги только на стратегические активы, от мысли об офисе мы отказались сразу. Работа из дома — тоже далеко не самый интересный вариант, нужно выделять рабочее пространство и утихомиривать домашних, иначе продуктивность будет так себе.
Посему, мы притворились студентами в Кремниевой Долине и решили колбасить код и интерфейсы из кафешек. Вот, что получилось.