Посты с тэгом uncategorized


Scala Future

Some time ago I had a chance to work with Scala. It is really refreshing after Java. I’ve switched to Java from Python, and it still feels like you need to write a lot of code to do simple things. So when I’ve heard that Martin Odersky himself is going to present the future of Scala on the meetup 7 minutes walk from my office, it was a no-brainer for me to go.

Some key takeaways are:

  • Scala grew in popularity a lot over last few years, which is great.
  • In mid-2016 2.12 release is planned. It will be optimized for Java 8 to run faster.
  • After 2016: Scala 2.13 will be focused on the libraries.
    1. The plan is to revamp collections to make them easier to use, make them more in-line with Spark, and provide better lazy collections (views).
    2. Another idea is to split


Интерпретатор своими руками с помощью Graph-talk

Хочу рассказать о том, как сделать интерпретатор с помощью библиотеки Graph-talk. В качестве примера будет использоваться замечательный язык Brainfuck.

Грамматика языка

Всего в языке имеется 8 команд:

  • «>» — переход к следующей ячейке памяти;
  • «<» — переход к предыдущей ячейке памяти;
  • «+» — увеличить значение в текущей ячейке на 1;
  • «-» — уменьшить значение в текущей ячейке на 1;
  • «.» — вывести значение текущей ячейки;
  • «,» — ввести значение извне в текущую ячейку
  • «[» — начало цикла, выполнить содержимое внутри цикла, если в текущей ячейке не 0;
  • «]» — конец цикла, вернуться на начало с учетом вложенности.

Собственно, это все. Изначально имеется 30 000 ячеек памяти. «Hello, World!» на этом милейшем языке выглядит так:

++++++++++[>+++++++>++++++++++>+++>+&



Django-Rest-Framework Testing Sessions

Прежде всего хотелось бы сказать, что в современных SPA приложения с RESTfull бекендом считается дурной практикой использовать механизм сессий на сервере. Все состояние клиента, мы должны держать на клиенте, но иногда мы имеем, то что имеем.

Из-за этого вылазят всякие проблемы, например с тестированием, даже без django-rest-framework, т.е. обычное django приложение, в котором views работают с сессиями не так-то просто протестировать, вот несколько ссылок:

https://code.djangoproject.com/ticket/11475

https://code.djangoproject.com/ticket/10899

http://stackoverflow.com/questions/4453764/how-do-i-modify-the-session-in-the-django-test-framework

В общем заморочки, но когда мы используем Django-Rest-Framework, а в частности 



Пример работы с естественными языками (Natural Language Processing) на Python

Хорошая статья с примерами и полезными ссылками. Традиционно NLP задачи реализовывались на Java, но Python приобретает все большую популярность в этой области.



PyCharm бесплатно

Вчера пришла новостная рассылка от JetBrains, в которой говорится о том, что теперь есть бесплатная версия PyCharm — Community Edition. Я сам уже три года как пользуюсь Professional Edition, и это замечательный продукт. А для Java я пользуюсь IntelliJ IDEA Очень рекомендую тем, кто пишет на Python, и еще не знаком с PyCharm, попробовать ее. Есть встроенная поддержка Django, virtualenv, Git/HG, тестирования и покрытия кода тестами.



Абсолютное добро: автоматические тесты

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

Для себя я выделил 4 жирных плюса автоматических тестов:

  1. Функциональность, покрытая тестами, гарантированно работает,
  2. и это выясняется очень быстро, а попутно можно делать замеры производительности;
  3. Тестовые инженеры избавлены от рутинной работы и могут ловить действительно сложные ошибки;
  4. Достаточно просто смоделировать стресс-тестирование — просто увеличить количество/интенсивность тестов.


Django Social Auth: авторизация через pop-up

Меня часто спрашивают, как сделать авторизацию с использованием pop-up так, чтобы пользователю не нужно было покидать главную страницу приложения.
Я сделал пример в своей ветке, но также оформил pull request в основную ветку.

Всех с наступающими праздниками!



Django Social Auh и авторизация в приложениях для ВКонтакте: пример

Пример добавлен в мой fork и в главную ветку вот в этом pull request.



Django Social Auth and Facebook Canvas Applications: Example

Illustrating technology described here I’ve added an example code to DSA in this pull request. Enjoy



Простое профилирование Django приложений

Оказывается, профилировать Django приложения очень просто. Для того, чтобы посмотреть SQL запросы, есть замечательный Django Debug Toolbar, а для классического профилирования времени/вызовов есть вот такой рецепт:

  1. Добавляем в requirements.txt django-extensions==0.9
  2. Ставим kcachegrind через порты: sudo port install kcachegrind
  3. Запускаем приложение: ./manage.py runprofileserver —kcachegrind —prof-path=/tmp/my-profile-data
  4. Вызываем интересующие нас view
  5. Запускаем X11, потом kcachegrind и скармливаем ему лог.

Встроенный cProfile мне показался не слишком удобным.