Посты с тэгом 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


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!» на этом милейшем языке выглядит так:

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



Интерпретатор своими руками с помощью 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 приобретает все большую популярность в этой области.



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

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



PyCharm бесплатно

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



PyCharm бесплатно

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



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

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

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

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