Pull to refresh

Осваиваем Python. Унция ноль. Введение.

Reading time 4 min
Views 126K
Programming *

Предыстория



Присоединяюсь к MaxElc, DarwinTenk и Devgru :) Начинаю цикл статей посвященных Python. Сам я имею некоторый опыт обращения с PHP и Java. Но каждый раз, при относительном освоении какого-то инструмента — оставалось определённое неудовлетворение им, связанное с чем-то конкретным, и поиски продолжались. На сегодняшний день наиболее близко к идеалу в моих глазах стоит Python. Идеал недостижим — это понятно, посему и у Python есть недостатки. Прежде всего — это скорость выполнения, однако, эта проблема решаема несколькими путями и об этом мы обязательно поговорим чуть позднее.
Сам я начал осваивать Python буквально недавно. Начиная этот цикл статей — я преследую несколько целей. Во-первых, это дополнительная само мотивация + интерактивность, во-вторых, опыт. В-третьих, блуждая по просторам рунета — вижу, что Python куда менее популярен, чем в мире. Ситуацию надо исправлять :)
В соответствии с идеологией Python, а именно с тем, что одни из главных его козырей — это быстрота в освоении и скорость разработки, мы достаточно быстро, практически тезисно пронесёмся по основам синтаксиса и построения программ и перейдём к основной цели данного цикла — освоение django.
Итак, мы начинаем.
Читать дальше →
Total votes 90: ↑78 and ↓12 +66
Comments 86

Django + Java = django-jython 1.0.0

Reading time 1 min
Views 3.6K
Python *
Тихо и незаметно зарелизился django-jython версии 1.0.0 — замечателная разработка,
которая позволяет развёртывать приложения django на java серверах приложений.
Читать дальше →
Total votes 31: ↑20 and ↓11 +9
Comments 11

Jython vs Groovy vs JRuby vs …

Reading time 2 min
Views 2.6K
Lumber room
Господа, внезапно — сабж!? Вопрос вызван тем, что какое-то довольно продолжительное время я был вдалеке от Java-технологий, писал на C++ и Python (и продолжаю писать), но один из курсов университета (конкретнее — component based software development) будет требовать либо одного из JVM-based языков (Java отпадает за неинтересностью) либо .NET языков (отпадает по определению так как Windows у меня нет и не будет). Немного изучив вопрос, пришел к выводу что:
  1. Преимущества в пользу Jython — по большому счету, это Python, который я хорошо знаю и люблю, с возможностью использовать Java классы. Но, если верить слухам, сейчас он почти не развивается. Хотя опять же, кому верить-то?
  2. Преимущества Groovy — новый язык, активно развивающийся, комбинирующий в себе достоинства многих языков и парадигм (тот же Python и Ruby в них входят). Недостатки — новый язык, активно развивающийся ;-) Сравнительно мало документации и кода по сравнению с Python
  3. Преимущества JRuby… я что-то весь в затруднениях, но все о нем говорят. Полная совместимость с Ruby, да. Но Руби я все равно не знаю, так что учить с нуля, так же как и Groovy.
А какие еще мнения есть? Я пока еще не совсем понял, что именно мне нужно для этого курса (хотя ясно, что это что-то должно поддерживать хорошую умную компонентную модель для работы в распределенных средах), но язык, в конце концов, вторичен — хочется чего-то интересного, нового и необычного (не сказать “странного”). Кто что думает? Вопрос довольно практический, потому что 18 января надо начинать писать курсовой проект на этом языке, который я выберу — а его надо еще и изучить хотя бы минимально до этого момента ;-)

Пока начал играться с Groovy и он мне, в принципе, нравится — но возможно, я упускаю что-то существенное, ограничивая себя этим языком?

Всем хабралюдям заранее спасибо за мнения!
Total votes 19: ↑14 and ↓5 +9
Comments 77

Компания Microsoft представила поддержку Python в Visual Studio

Reading time 1 min
Views 4.8K
Visual Studio *
image

Компания Microsoft выпустила в режиме бета-тестирования пакет Python Tools for Visual Studio (PTVS), предназначенный для обеспечения поддержки языка Python в интегрированной среде разработки Visual Studio 2010. Код пакета разработан в недрах Microsoft и открыт в рамках лицензии Apache 2.0.

Читать дальше →
Total votes 154: ↑138 and ↓16 +122
Comments 72

Jython-консоль вашего приложения

Reading time 12 min
Views 15K
Java *
Расскажу вам как я использую интерактивную консоль Jython для ускорения разработки Bean'ов в поддерживаемом мной приложении.

Суть вопроса


Каждый кто хоть раз сталкивался с долго разрабатывающимися Java-приложениями, знает, что многие из них очень медленно собираются и стартуют. Не будем обсуждать почему так получается. Это тема отдельной статьи.

По долгу службы пришлось поддерживаю очень древнее приложение с громадной кодовой базой. Хуже всего то, что оно собирается оно от минуты до семи и ещё минуты три стартует. Опять же каждому программисту не сложно представить себе какой ад написать энное количество кода, а затем ловить NullPointerException'ы от внешних сервисов с таким длинным циклом Implement->Compile->Start Deploy->Wait->Smoke->Wait->Test.

Возможен также другой вариант. Есть энное количество кода в классе, который нужно адаптировать под выполнение задачи, близкой уже им выполняемой. А теперь представьте, что этот класс реализован в рамках Java 1.4. Он не работает с Generic'ами, потому что они были добавлены только в Java 1.5. Кроме того программисты, ранее занимавшиеся поддержкой системы, этим активно пользуются и суют в коллекции возвращаемые методами других классов, что не попадя вплоть до анонимных реализаций java.lang.Object.

Поев кактус пару дней я почувствовал, что начинаю сходить с ума от того, что пишу пять-двадцать строк работающего кода в день.
Как я сохранил здравый ум и твёрдую память
Total votes 28: ↑26 and ↓2 +24
Comments 16

Частный случай использования Sikuli для решения проблемы в Facebook

Reading time 3 min
Views 5.7K
Python *
Sandbox
Некоторое время назад Facebook стал использовать решение основанное на NFS для хранения фотографий пользователей. Оно помогает справляться с напором в около 220 миллионов новых файлов занимающих 25TB каждую неделю и в часы пик раздающее более 550 тысяч изображений в секунду [1]. Максимальное количество файлов загружаемых в один альбом было увеличено с 60 до 200 на радость пользователям.

Наличие настроек приватности и то обстоятельство, что свободное место на Picasa благополучно было съедено шедеврами прошлых лет, подтолкнуло меня и некоторых знакомых к попытке использования Facebook в качестве фотохранилища.

Практика, однако, выявила некоторые неудобства сервиса, самым досадным из которых оказалась невозможность удаления альбома после загрузки в него множества фотографий. Всем, кого затронула эта проблема и кому любопытен очередной пример использования замечательного кроссплатформенного инструмента визуальной автоматизации Sikuli посвящается эта статья.
Читать дальше →
Total votes 30: ↑29 and ↓1 +28
Comments 5

Кросс-вмный (CLR/JVM) код на Python

Reading time 4 min
Views 3.4K
Python *Java *.NET *
Это узкоспециализированная короткая заметка про то, как я запинывал write once, run everywhere тесты для библиотеки, портированной с C# на Java, при помощи Python.

Смысл в следующем: есть большая, толстая и красивая библиотека, которая была по коммерческим соображениям портирована с C# на Java. API осталось почти одинаковым, naming conventions естественно сменились при переходе на другой язык. Нам нужно было написать толстую пачку тестов, проверяющих, что клон библиотеки работает идентично оригиналу (тесты на регрессии, иными словами). Для этого сравнивались результаты работы кода библиотек (некие бинарники и xml-метаданные). Тесты были нетривиальные, их было много, и что самое неприятное — они постоянно дописывались с одного конца командой из четырех человек. Некоторое время я старательно портировал их на Java, затем плюнул и предложил команде писать тесты на языке, который сразу можно было бы выполнять на CLR (со старой библиотекой) и на JVM (с клоном). Оказалось, они и сами уже некоторое время думали про Python,
и вот как это получилось.
Total votes 44: ↑43 and ↓1 +42
Comments 10

Взаимодействие интерпретаторов Python-IronPython-Jython

Reading time 2 min
Views 6.6K
Python *
Возникла необходимость в решении такой задачи: как обмениваться данными между разными интерпретаторами Python?! Отыскал несколько решений, но хочу рассказать об одном, на мой взгляд, самом удобном.
Читать дальше →
Total votes 18: ↑17 and ↓1 +16
Comments 11

Использование SikuliX в фоновом режиме на Cloud9

Reading time 3 min
Views 9.8K
Инфопульс Украина corporate blog IT systems testing *Python *
Tutorial
SikuliX (старое название Sikuli) — это инструмент, который позволяет автоматизировать то, что вы видите на экране с помощью визуального распознавания (картинок). На хабре уже есть достаточно информации по нему, но все примеры подразумевают использование реального экрана.

Здесь же я опишу свой опыт использования SikuliX в фоновом режиме на облачной IDE Cloud9. В процессе работы с данным инструментом набил немного шишек, поэтому возможно, мой опыт будет кому-то полезен.

Вариантов использования SikuliX достаточно много, вот некоторые из действий, которые вы можете автоматизировать:
  • Работа с флеш сайтами (и любими другими)
  • Автоматизация браузерных игр (собирать урожай на ферме)
  • Работа с десктопными приложениями
  • Настройка компьютера
  • Разнообразные боты
  • Всякого рода рутинная работа с сайтами/документами
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Comments 1

Celesta и Flute: Создание бизнес-логики в Java-экосистеме

Reading time 28 min
Views 8.2K
Open source *Programming *Java *SQL *
Привет, Хабр! Проект, о котором мы расскажем, с самого начала создавался нами как open-source, но до недавних пор мы использовали его только лишь для своих нужд, не говорили о нём широко и не создавали коммьюнити. Cейчас, спустя несколько лет разработки, мы почувствовали уверенность в том, что настала пора рассказать про него, и надеемся, что он начнёт приносить пользу не только нам.

Ян Андерсон и Джон Лорд

Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Comments 25

Иван Пономарёв и Николай Поташников об отображении табличных данных, Celesta и Flute на jug.msk.ru

Reading time 2 min
Views 2.2K
JUG Ru Group corporate blog Java *
21 сентября 2017 года на встрече московского сообщества Java-разработчиков выступили Иван Пономарёв и Николай Поташников. Иван — с докладом «Скрытая сложность повседневной задачи: отображение табличных данных», совместный рассказ обоих докладчиков — про программные продукты Celesta и Flute открытой платформы для создания бизнес-логики в Java-экосистеме.


Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Comments 0

Мой опыт знакомства и работы с Robot Framework

Reading time 6 min
Views 19K
Maxilect corporate blog IT systems testing *Python *Java *Product Management *
Чуть более года назад я впервые попробовал в работе Robot Framework. За время моего участия в довольно масштабном проекте я испытал на своей шкуре два разных подхода к автоматизации тестирования с помощью этого инструмента: написание тестов на чистом DSL Robot Framework и работу в связке с Python. Если первый путь имеет низкий порог входа, то второй, на мой взгляд, удобнее с точки зрения поддержки крупных проектов. Хотя фундаментальной разницы между подходами нет. Так или иначе, все сводится к поиску библиотек.

Однако об особенностях подходов поговорить стоит.

image
Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Comments 11

Обратной дороги нет: личный опыт тестировщика

Reading time 7 min
Views 38K
Maxilect corporate blog IT systems testing *IT career Lifehacks for geeks Remote work
Хочу рассказать о работе тестировщика с нетипичного ракурса, который вряд ли покажут в учебных заведениях или профессиональной литературе. Становясь профессионалом в этой области, ты неизбежно начинаешь жить концепциями, заложенными в саму основу тестирования. И это очень по-разному отражается на обустройстве жизни. О том, как именно это происходит у меня, под катом.

image
Читать дальше →
Total votes 9: ↑7 and ↓2 +5
Comments 19

Как писать свой процессор или расширяем функционал в NiFi

Reading time 6 min
Views 5.8K
Ростелеком corporate blog Open source *Apache *Big Data *
Recovery mode
Все большую популярность набирает NiFi и с каждым новым релизом он получает все больше инструментов для работы с данными. Тем не менее, может появиться необходимость в собственном инструменте для решения какой-то специфичной задачи.



Apache Nifi имеет в базовой поставке более 300 процессоров.

NiFi Processor это основной строительный блок для создания dataflow в экосистеме NiFi. Процессоры предоставляют интерфейс, через который NiFi обеспечивает доступ к flowfile, его атрибутам и содержимому. Собственный кастомный процессор позволит сэкономить силы, время и внимание пользователей, так как вместо множества простейших элементов-процессоров будет отображаться в интерфейсе и выполняться всего один (ну или сколько напишете). Так же, как и стандартные процессоры, кастомный процессор позволяет выполнять различные операции и обрабатывать содержимое flowfile. Сегодня мы поговорим о стандартных инструментах для расширения функционала.
Читать дальше →
Total votes 14: ↑12 and ↓2 +10
Comments 1