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

Материал из SEWiki
Перейти к: навигация, поиск
(Python type checking)
(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>. Всё, что мы таким образом типизировать не можем считаем значением типа <code>object</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>
 
<pre>

Версия 17:29, 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.
signature(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) 

P. S. Создатели dialyzer написали 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, который позволит качать файлы прямо на ПК(и можно добавить различные возможности). Притом что протокол довольно прост.