Devdays2h2012 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Идеи проектов)
(Python type checking)
Строка 35: Строка 35:
  
 
=== Python type checking ===
 
=== Python type checking ===
Предлагаю реализовать cli tool для проверки типов в Python проектах. Вдохновиться можно [[http://www.erlang.org/doc/man/dialyzer.html аналогичным]] инструментом из мира Erlang. Основная идея: давайте типизируем __builtin__ и часть стандартной библиотеки, этого должно хватить, чтобы находить ошибки вида <code>map(1, 2)</code> или <code>os.path.exists([])</code>.
+
Предлагаю реализовать cli tool для проверки типов в Python проектах. Вдохновиться можно [[http://www.erlang.org/doc/man/dialyzer.html аналогичным]] инструментом из мира Erlang. Основная идея: давайте типизируем __builtin__ и часть стандартной библиотеки, этого должно хватить, чтобы находить ошибки вида <code>map(1, 2)</code> или <code>os.path.exists([])</code>. Всё, что мы таким образом типизировать не можем считаем значением типа <code>object</code>. Примеры:
 +
 
 +
<pre>
 +
# Type signatures for `os` module.
 +
type(os.path.exists, Function(str, bool))
 +
 
 +
os.path.exists([])  # type: error
 +
os.path.exists("/")  # type: bool
 +
 
 +
os.listdir("/")      # type: object, since we don't know the type of `os.listdir`.
 +
</pre>
 +
 
 +
Можно сразу ориентироваться на Python3 и использовать [[http://www.python.org/dev/peps/pep-3107/ function annotations]] в качестве источника информации о типах:
 +
 
 +
<pre>
 +
def f(x : int) -> float:
 +
    return float(x)
 +
</pre>
 +
 
 +
Paper: [[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.66.699 Experience from Developing the Dialyzer: A Static Analysis Tool Detecting Defects in Erlang Applications]]
  
 
=== stream-lib revisited ===
 
=== stream-lib revisited ===

Версия 17:13, 11 ноября 2012

Идеи проектов

  • Андроид клиент для biletolovilka.ru
  • Сетевые шахматы на троих; бессмысленно и беспощадно.
  • Фреймворк для организации CTF-соревнований
  • Experimental project for http://www.chromeexperiments.com/
  • Just another extension for Chrome

Андроид клиент для biletolovilka.ru

Очень тяжело найти билет в питер в ночь с пятницы на субботу. Однако билеты периодически возвращаются клиентами и очень хочется заменить кнопку F5 на cron-task. Пройдя по ссылки уже становиться понятен юзкейс приложения, и было бы здорово, сделать андроид(multiplatform) клиент с удобным UI'ем.

Мечта меломана

Клиентская и серверная части.

Сервер: - Мониторит аккаунты на youtube, vk - При добавлении трека в аудиозаписи сама добавляет его в музыкальную коллекцию со структурой по папочкам, скачивает обложку, приводит в порядок все тэги автоматически. Использует, например, информацию о длительности . - При добавлении видео в избранное на youtube конвертирует его в mp3, дальше всё аналогично. - Синхронизируется со всеми устройствами. В домашней wifi сетке автоматом синхронизируется со всеми android-девайсами по wifi. При подключении MTP-девайса (плеер) автоматом синхронизируется с ним. Можно в две стороны.


Клиенты: всякие мобильные платформы Обеспечивают синхронизацию с базой на сервере при входе в зону домашнего Wifi или вручную.

Python type checking

Предлагаю реализовать cli tool для проверки типов в Python проектах. Вдохновиться можно [аналогичным] инструментом из мира Erlang. Основная идея: давайте типизируем __builtin__ и часть стандартной библиотеки, этого должно хватить, чтобы находить ошибки вида map(1, 2) или os.path.exists([]). Всё, что мы таким образом типизировать не можем считаем значением типа object. Примеры:

# Type signatures for `os` module.
type(os.path.exists, Function(str, bool))

os.path.exists([])   # type: error
os.path.exists("/")  # type: bool

os.listdir("/")      # type: object, since we don't know the type of `os.listdir`.

Можно сразу ориентироваться на Python3 и использовать [function annotations] в качестве источника информации о типах:

def f(x : int) -> float:
    return float(x) 

Paper: [Experience from Developing the Dialyzer: A Static Analysis Tool Detecting Defects in Erlang Applications]

stream-lib revisited

Для Java [есть] замечательная библиотека, реализующая summary statistics для потоков данных. Было бы здорово реализовать что-то похожее на Python.

Клиент для Google Play

Есть только 2 способа пользоваться Google Play, с телефона, или из браузера, при этом если хочется получить apk файл на компьютер, то единственный способ это вытаскивать его с телефона. Почему бы не написать кросс платформенный клиент с использованием Qt, который позволит качать файлы прямо на ПК(и можно добавить различные возможности). Притом что протокол довольно прост.