Search
Write a publication
Pull to refresh
10
0
Фёдор @krox

Специалист в области IT

Send message

Python-digest #32. Новости, интересные проекты, статьи и интервью [6 июля 2014 — 13 июля 2014]

Reading time3 min
Views14K
Очередной выпуск новостей из мира Python. Мы продолжаем собирать для вас интересную информацию о любимом языке программирования и близлежащих технологиях.
Перейти к дайджесту

15 малоизвестных команд Linux

Reading time3 min
Views318K
Каждому разработчику в определенной степени следует овладеть навыками работы в терминале. Физически находиться у компьютера не всегда возможно, поэтому приходится подключаться удаленно. И действительно, GUI-программы вполне могут с этим с правиться, но зачастую они работают медленнее, чем получение доступа через тот же терминал (в конце концов, это лишь обмен текстом).
Читать дальше →

Метапрограммирование с примерами на JavaScript

Reading time15 min
Views43K
Эта статья, еще одна попытка переосмысления метапрограммирования, которые я периодически предпринимаю. Идея каждый раз уточняется, но в этот раз удалось подобрать достаточно простых и понятных примеров, которые одновременно очень компактны и иллюстративны, имеют реальное полезное применение и не тянут за собой библиотек и зависимостей. В момент публикации я буду докладывать эту тему на ОдессаJS, поэтому, статью можно использовать, как место для вопросов и комментариев к докладу. Формат статьи дает возможность более полно изложить материал, чем в докладе, слушатели которого, не освобождаются от прочтения.

UPD: Обновленная видеоверсия статьи на Youtube (лекция записана в Киевском политехническом институте 18 апреля 2019 года в рамках курса «100 видео-лекций по программированию»):

Читать дальше →

Расширенный материал по Java 8

Reading time4 min
Views52K
Не секрет, что многие Java-программисты, начиная свой путь в индустрии, уделяют большое внимание «тяжелым» технологиям — OpenJPA, Spring, JAX-RS, EJB, WS-*,… Это дает возможность как скорее влиться в современные корпоративные проекты, так и максимизировать скорость роста зарплаты.

Многие из них в конце концов «спускаются» до технологий лежащих в основе указанных фреймворков — JDBC, Servlet API, NIO/NIO.2. Однако прискорбно, что зачастую не остается время на детальное изучение самого языка и возможностей платформы.

Речь идет не о тонкостях или экзотике, а о том, что составляет существенную часть работы фреймворка: Servlet-контейнер использует множественные ClassLoader-ы, JPA2-провайдер использует манипулирование байткодом, абсолютное большинство библиотек используют Reflection API, всеобщее использование Generics только «усугубилось» с появлением функциональных интерфейсов (java.lang.function.*) и лямбд.

На недопонимание изначальной платформы (ClassLoader, Reflection API) накладываются «новвоведения» Java 5 (Generics), а теперь еще и Java 8 (методы в интерфейсах, ссылки на методы, лямбды, Stream API, JSR 308: Pluggable Type Systems). Надо обратить внимание на то, что Generics + Java 8 — это не просто языковые фичи, это частично переход к функциональному стилю программирования.

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

Я собрал определенное количество полезных (на мой взгляд) ссылок по следующим темам
  1. Методы в интерфейсах, ссылки на методы, множественное наследование
  2. Лямбды (Project Lambda)
  3. Stream API
  4. Функциональные алгоритмы
  5. Аннотации
  6. Генерики
  7. Reflection API
  8. Загрузка классов

Надеюсь кто-то сочтет их полезными.
Читать дальше →

Django widgets и еще пара трюков

Reading time7 min
Views26K


Все знают что Django это замечательный фреймворк для разработки, с кучей мощных батареек. Лично для меня, при первом знакомстве с django все казалось крайней удобным — все для удобства разработчика, думалось мне. Но те кто с ним вынужден работать в течении долгого времени, знают, что не все так сказочно, как кажется новичку. Шло время проекты становились больше, сложнее, писать вьюшки стало неудобным, а разбираться во взаимоотношении моделей становилось сложнее и сложнее. Но работа есть работа, проект был большой и сложный, и, ко всему прочему необходимо было иметь систему управления страниц как в cms, и, вроде бы, есть замечательный django cms, к которому всего и надо что написать плагинов. Но оказалось, что можно сделать весь процесс несколько более удобным, добавив пару фич и немного кода.
Читать дальше →

Работа с геолокациями в режиме highload

Reading time6 min
Views60K
При разработке ПО часто возникают интересные задачи. Одна из таких: работа с гео-координатами пользователей. Если вашим сервисом пользуются миллионы пользователей и запросы к РСУБД происходят часто, то выбор алгоритма играет важную роль. О том как оптимально обрабатывать большое количество запросов и искать ближайшие гео-позиции рассказано под катом.

image
Читать дальше →

Программируем квадрокоптер на Arduino (часть 1)

Reading time18 min
Views378K


Здравствуйте, хаброжители!
В этой серии статей мы с вами приоткроем крышку квадрокоптера чуть больше, чем этого требует хобби, а также напишем, настроим и запустим в воздух собственную программу для полетного контроллера, которым будет являться обычная плата Arduino Mega 2560.

У нас впереди:
  1. Базовые понятия (для начинающих коптероводов).
  2. PID-регуляторы с интерактивной web-демонстрацией работы на виртуальном квадрокоптере.
  3. Собственно программа для Arduino и настроечная программа на Qt.
  4. Опасные тесты квадрокоптера на веревке. Первые полёты.
  5. Крушение и потеря в поле. Автоматический поиск с воздуха средствами Qt и OpenCV.
  6. Окончательные успешные тесты. Подведение итогов. Куда дальше?

Материал объемный, но постараюсь уложиться в 2-3 статьи.
Сегодня нас ожидает: спойлер с видео, как наш квадрокоптер полетел; базовые понятия; PID-регуляторы и практика подбора их коэффициентов.
Читать дальше →

Обзор наиболее интересных материалов по анализу данных и машинному обучению №2 (16 — 23 июня 2014)

Reading time4 min
Views13K

В очередном обзоре наиболее интересных материалов, посвященных теме анализа данных и машинного обучения, достаточно большое внимание уделено популярному набору алгоритмов машинного обучения Deep Learning и его практическому применению. Несколько статей посвящено тому какие есть пути для собственного развития как специалиста по анализу данных и машинному обучению. Также несколько статей касаются такой темы как Data Engineering и рассматривают такие популярные продукты как Cassandra и Apache Kafka. Но начинается данный выпуск с обзора стартующих в ближайшее онлайн-курсов, связанных с темой анализа данных и машинного обучения.
Читать дальше →

Вводная по сложным запросам в SQLAlchemy

Reading time7 min
Views98K

Во время посещения PyConRu 2014 я, с удивлением, узнал, что достаточно большая аудитория python-разработчиков не использует SQLAlchemy в качестве основного инструмента для работы с базой данных. Порассуждав на данную тему после Light Talks с коллегами было принято решение — во чтобы то ни стало написать статью о том, что же можно делать со всей мощью SQLAlchemy.


Обычно в написании сайтов не требуется чего-нибудь этакого от штатного ORM. А если и требуется, то хватает замены на нештатный или прочтения основной части документации. И, как правило, голову ломать над сложными запросами не приходится. Достаточно много различных ORM предлагают классические схемы One-2-Many, One-2-One, Many-2-Many, и т.д. Для обычных запросов и связей этого вполне достаточно. К сожалению, в больших проектах не обходится без частных случаев и программисты при сложных запросах пишут либо raw sql, либо полагаются на то, что им предлагает базовый функционал ORM. Это выглядит не совсем красиво или создает достаточно большую нагрузку на базу данных.

Понятно, что в погоне за скоростью выполнения сценариев, можно пожертвовать красотой кода, но что если скоростью можно пренебречь, а вот кроссплатформенностью — нет? Да и не хочется в python коде видеть что-то кроме python кода. А что если хочется на полную катушку использовать любимый ORM (для меня SQLAlchemy) и не писать raw sql запросы?
Читать дальше →

Django на production. uWSGI + nginx. Подробное руководство

Reading time7 min
Views225K
Перед вами руководство по настройке production окружения для Django. Здесь будут описаны необходимые шаги по настройке Django, uWSGI и nginx. Руководство охватывает все три компонента — полный стек серверного ПО для веб-приложений.

Подразумевается, что вы используете Unix-подобную операционную систему и менеджер пакетов, эквивалентный aptitude. Найти эквивалент aptitude почти для любой операционной системы, в том числе и для Mac OS X, для вас не составит никакого труда.

Руководство написно для версий Django 1.4 или выше. Если вы используете более раннюю версию, то вам придется самостоятельно найти wsgi модуль для нее. Также вы заметите, что файловая структура проекта будет немного отличаться от представленной здесь.

Общая идея


Веб-сервер может по запросу отдавать пользователям файлы из своей файловой системы, однако он не может напрямую работать с Djangо приложениями. Веб-серверу нужен интерфейс, который будет запускать Django приложение, передавать ему запрос от пользователя и возвращать ответ.

Для выполнения этих задач был разработан Web Server Gateway Interface — WSGI — стандарт взаимодействия Python программ и веб-сервра.

uWSGI — одна из реализаций WSGI. В этом руководстве мы установим и настроим uWSGI для создания Unix сокета и взаимодействия с веб-сервером по протоколу WSGI.
Читать дальше →

Логирование сообщений с Easylogging++

Reading time7 min
Views22K

Система логирования — незаменимый инструмент для протоколирования работы приложений. Для тех, кто не хочет реализовывать его самостоятельно, на C++ уже существует бессчётное количество готовых библиотек (Log4cplus, Apache log4cxx, Boost.Log и тд.), однако Easylogging++ отличается простотой использования и компактностью, не требует сторонних библиотек или инсталляции. Весь её код содержится в одном единственном заголовочном файле, который просто необходимо включить в код приложения.

Данная статья предлагает краткий обзор функционала Easylogging++ и примеры использования этой библиотеки.
Читать дальше →

Дайджест статей по анализу данных №2 (26.05.2014 — 8.06.2014)

Reading time5 min
Views20K
Добрый день, уважаемые читатели.
Представляю вашему вниманию дайджест новостей и полезных материалов из мира анализа данных. Предыдущий дайджест пользовался большой популярностью и поэтому я решил сделать их регулярными. Периодичность таких подборок будет 1 раз в 2 недели.

В сегодняшней подборке вы узнаете что общего у статистики и науке об анализе данных, как можно выявить ложную корреляцию, а также какие алгоритмы правят современным миром. Помимо этого вы получите небольшие шпаргалки по методам машинного обучения и NoSQL базам данных, ну и еще много чего интересного.

Читать дальше →

Django tips & tricks

Reading time9 min
Views52K
Приветствую!

В этом посте — небольшие советы по работе с Django, которые могут пригодиться начинающим разработчикам. Как я хотел бы знать это в начале моего пути освоения Django!..
Рассматривать эти советы следует с долей критицизма. Буду рад, если вы найдёте неточности / лучшее решение, или предложите свои «фишки» для django, которых нет в документации.

Итак, начнём издалека, а уж потом перейдём к деталям.

Читать дальше →

Геодезия: по полю на «питоне»

Reading time5 min
Views15K
image

Доброго времени, Хабр!
Немного истории: в ходе учебы программированию, искал я себе реальную задачу, да такую чтобы с пользой. Нашел. Увидел как знакомый геодезист, на работе, считает объем земельного участка. Очень долго и нудно…

Геодезический расчет объемов:
При возведении жилых сооружений, высокотехнологичных помещений, автомобильных и железных дорог, а так – же в целях определения объемов строительных материалов и подсчета объема земляных работ, требуется помощь геодезистов. Они “отстреливают” территорию, разбивая всю площадь на так называемую геосетку, далее полученые точки из прибора выгружаются в autoCAD и высчитывают объем всей территории. Ниже пример геосетки:

image
Читать дальше →

YARG — open-source библиотека для генерации отчётов

Reading time11 min
Views36K
Практически каждый разработчик, создающий информационные системы, сталкивается с необходимостью формирования различных отчетов и печатных форм. Это характерно и для большинства приложений разработанных на нашей платформе. Например, в системе, над которой я работаю в настоящее время, их 264. Для того чтобы не писать каждый раз логику формирования отчетов с нуля, мы разработали специальную библиотеку (под катом будет объяснено, почему нам не подошли существующие). Называется она YARG — Yet Another Report Generator.
YARG позволяет:
  • Генерировать отчет в формате шаблона или конвертировать результат в PDF;
  • Создавать шаблоны отчетов в привычных и распространенных форматах: DOC, ODT, XLS, DOCX,XLSX, HTML;
  • Создавать сложные XLS и XLSX шаблоны: с вложенными областями данных, графиками, формулами и т.д.;
  • Использовать в отчетах изображения и HTML-разметку;
  • Хранить структуру отчетов в формате XML;
  • Запускать standalone приложение для генерации отчетов, что делает возможным использование библиотеки вне Java-экосистемы (например для генерации отчетов в PHP);
  • Интегрироваться с IoC-фреймворками (Spring, Guice).

Эта библиотека используется в платформе CUBA в качестве основы для движка отчетов. Мы развиваем ее с 2010 года, но совсем недавно решили сделать ее открытой, и выложили ее код на GitHub с лицензией Apache 2.0.
Данная статья призвана привлечь к ней внимание сообщества.

Читать дальше →

Несколько интересностей и полезностей для веб-разработчика #17

Reading time5 min
Views35K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Intercooler.js


Кто нибудь помнит FullAjax — разработку Руслана Синицкого sirus (нынешний основатель Jelastic)? Вкратце это библиотека для работы с AJAX с помощью объявления определенных атрибутов у элементов, а подробнее об этом написано в постах «Прямые ссылки на AJAX веб-сайтах – наша технология Fullajax Direct Link», «Полный AJAX. Теория и Примеры. Фишки и Фичи» и «Fly AJAX — пишите меньше, имейте больше. Нестандартный AJAX и индексация поисковиками». Вернемся к Intercooler, это нечто похожее:

<div id="targetDiv">Results Div...</div>
<i id="indicator" style="display:none" class="fa fa-spinner fa-spin">
<input id="hiddenInput" type="hidden" name="hidden" value="42"/>

<div ic-trigger-on="click" ic-verb="POST" ic-src="/example" ic-include="#hiddenInput" ic-indicator="#indicator" ic-target="#targetDiv" ic-transition="none">
    Click Me!
</div>

После клика по div, отправляется POST запрос со значением поля с #hiddenInput, а в процессе будет отображаться #indicator. Ответ будет передан в блок #targetDiv. Разве не здорово?

Читать дальше →

Инверсная кинематика: простой и быстрый алгоритм

Reading time7 min
Views53K
Что такое «Инверсная кинематика»?

Задачей инверсной кинематики является поиск такого набора конфигураций сочленений, который обеспечил бы максимально мягкое, быстрое и точное движение к заданным точкам. Однако, множество существующих ныне методов страдают от таких недостатков как высокая вычислительная сложность и неестественность результирующих поз. В этой статье описан новый (вероятно, на момент написания статьи — 2010 г.) эвристический метод под названием «Метод прямого и обратного следования» ( Forward and Backward Reaching Inverse Kinematics, далее просто FABRIK),
FABRIK избегает использования вращений и матриц в пользу непосредственного получения точки на прямой. Благораря этому, дело обходится всего несколькими итерациями, имеет низкую стоимость вычислений и визуально естественную позу в результате. FABRIK так-же без проблем справляется с наложением ограничений а так-же использованием нескольких цепей и/или конечных точек. Именно об этом методе этот пост.
Читать дальше →

Вкладки (страницы) на одной странице на html/css с помощью :target

Reading time2 min
Views148K
Рассмотрим один из вариантов создания нескольких страниц или вкладок (в том числе вложенных) на html и css без скриптов, списков и таблиц, на одной html странице. Только дивы, только хардкор. Подходит для небольших портфолио и элементов интерфейса. Не будьте буратинами используя это везде подряд.
Суть:

image
Читать дальше →

Unity3d. Уроки от Unity 3D Student (B25-B28)

Reading time7 min
Views60K
Всем привет. Это заключительная серия базовых уроков по Unity 3D от сайта Unity3DStudent. Далее будут еще два урока среднего уровня. Upd: планы изменились, этих уроков не будет, так как второй урок (по анимации) уже довольно сильно устарел, а выкладывать перевод только одного урока не вижу смысла. Пусть он останется на самостоятельное изучение =)

Ссылки на предыдущие уроки:

Читать дальше →

10 способов сделать резервную копию в PostgreSQL

Reading time5 min
Views286K
Многие разговоры про бэкапы начинаются с присказки что люди делятся на две категории… так вот я отношусь к тем людям которые делают бэкапы. Правильно настроенное резервное копирование и проверка резервных копий укрепляет сон. А наличие заранее написаных и проигранных инструкций по восстановлению вообще укрепляет пищеварение и иммунитет. Так вот, за время работы с PostgreSQL мне довелось часто настраивать резервное копирование, при этом условия и требования были самые разные. Однако при этом набор инструментов за редким исключением оставался неизменным. В этой статье поделюсь своим опытом в деле, как можно брать резервные копии PostgreSQL.
image

Читать дальше →

Information

Rating
Does not participate
Location
Иркутск, Иркутская обл., Россия
Registered
Activity