Как стать автором
Обновить
172
Eugene @hardexread⁠-⁠only

Пользователь

Отправить сообщение

Простейший способ добавить WebSocket в Django

Время на прочтение4 мин
Количество просмотров29K
Примечение переводчика: вебсокеты и Django — это довольно сложная тема, которая уже не раз поднималась на хабрахабре и основной идеей является написание параллельного бэкенда для вебсокетов. Автор же предлагает довольно лаконичное решение этой проблемы, которому правда еще предстоит проверка временем.

TL;DR — Я пришел к очень простому решению для работы с вебсокетами в Django. Все что вам нужно — это установить django-websocket-request, запустить скрипт, и теперь ваше приложение поддерживает вебсокеты! Это решение заставляет Django думать, будто он получает нормальный (в какой-то мере) HTTP-запрос, поэтому оно будет совместимо почти со всем вашим существующим кодом. Решение работает нормально как с Django Rest Framework, так и с обычными функциями-представлениями и представлениями, основанными на классах (Class Based Views).
Читать дальше →
Всего голосов 33: ↑26 и ↓7+19
Комментарии13

Пишем красивый идиоматический Python

Время на прочтение4 мин
Количество просмотров112K

Иногда сложно найти в Сети правильные, а главное актуальные «best practices» для языка. Документация, конечно же, содержит всю необходимую информацию, но отсеять нужную вещь в абзацах подробного (на то она и документация) описания довольно сложно. Но недавно мне улыбнулся поиск Google, и я наткнулся на очень полезные «паттерны» языка Python от одного из core разработчиков — Raymond Hettinger.

Примечание: Все рекомендации даны в нескольких вариантах: сначала идут самые «плохие» варианты, а дальше предлагается лучшая альтернатива. Актуально для версии языка 2.7, отличия для версии 3.3 читайте в примечаниях к конкретному «паттерну».
Читать дальше →
Всего голосов 125: ↑99 и ↓26+73
Комментарии71

Абстрактный UI. Новый фреймворк для C#, который назвали XWT

Время на прочтение5 мин
Количество просмотров26K
Если посмотреть на существующие современные фреймворки для реализации пользовательских интерфейсов (WPF, GTK, Qt, wxWidgets, да даже модные веб-решения), то легко заметить, что они похожи друг на друга как близнецы. Любой фреймворк содержит кнопки, поля, чекбоксы, переключатели, характеризуемые идентичной с точки зрения пользователя логикой. Отличия заключаются только в низкоуровневой реализации.

Когда где-то в мире программирования появляется что-то слишком похожее, то это стремятся обернуть в слой абстракции. И вот я случайно наткнулся на подобное решение, созданное парнями из Xamarin. Теми самыми, которые продают C# фреймворк для iOS и Android. Решение это назвали Xwt — судя по всему, это расшифровывается как Xamarin Window Toolkit.

Читать дальше →
Всего голосов 41: ↑37 и ↓4+33
Комментарии42

Отзывчивое Android-приложение или 1001 способ загрузить картинку

Время на прочтение16 мин
Количество просмотров55K
О реализации многопоточности при разработки Android-приложений уже написано немало. В этой же статье хочется провести сравнение нескольких распространенных на сегодня способов скачать/прочитать/сохранить/посчитать, при этом не дав пользователю повода для раздражения. Постараться понять, когда то или иное решение будет уместным, а чего лучше не делать вовсе. Попытаемся показать, почему привычных вещей, таких как класс Thread и пакет java.util.concurrent оказывается недостаточно, когда речь заходит об Android-приложении.

Читать дальше →
Всего голосов 38: ↑36 и ↓2+34
Комментарии17

Nested routing в AngularJS

Время на прочтение2 мин
Количество просмотров27K
image
В AngularJS, как известно, нет возможности штатными средствами сделать многоуровневую маршрутизацию, в которой перезагрузка нижних уровней маршрутов бы не приводила к пересозданию элементов верхнего уровня. Стандартный сервис $route инициализирует вид, контроллер и его scope целиком каждый раз, когда изменяется URL страницы.

Для решения этой проблемы написано несколько сторонних решений, включая известный ui-router. По ряду причин ни одно из решений для некоторых моих проектов не подошло, и я написал собственную библиотеку, которую здесь и представляю: angular-route-segment.

Что она позволяет делать?
Читать дальше →
Всего голосов 29: ↑27 и ↓2+25
Комментарии19

Переводим ActionBar на следующий уровень

Время на прочтение9 мин
Количество просмотров37K
Еще в ноябре 2012 года, я написал сообщение в блоге озаглавленное как "ActionBar в движении". Эта статья в основном касалась методики того, как красиво и уникально оживить ваш ActionBar . Хотя я упомянул некоторые из возможностей применения данного эффекта, я никогда не имел времени, чтобы добавить данный вид анимации ActionBar к какому-либо из моих собственных приложений. Но я видел в Play Store приложение использовавшее его.

Будучи на Google I/O, я наконец нашел приложение, использующее в ActionBar технику анимации. Давайте будем честными, это буквально взорвало мой взгляд когда я в первый раз это увидел. Я влюбился в хороший, тонкий и чрезвычайно полезный анимационный эффект, и, вероятно, даже больше, чем в само приложение! Я уверен, вы знаете приложение о котором я говорю, так как оно было представлено во время Google I/O. Это приложение Play Music!

Последнее обновление Play Music (v5.0) претерпело полный редизайн и внешний вид страниц с описанием исполнителя и альбома. Если вы откроете такую страницу, то вы заметите, что ActionBar изначально невидим и наслаивается на большое изображение, описывающее исполнителя или альбом. Но как только вы начинаете прокручивать страницу вниз (если это возможно), то ActionBar постепенно проявляется. ActionBar оказывается полностью непрозрачным, когда изображение становится прокрученным за экран.
Читать далее
Всего голосов 30: ↑26 и ↓4+22
Комментарии6

Бездисковая загрузка с использованием PXE и iSCSI на примере Ubuntu

Время на прочтение17 мин
Количество просмотров51K
Здравствуйте.

В этой статье будет рассказано, как запилить сервер, который будет при включении грузиться по PXE, потом монтировать корневую файловую систему по iSCSI и спокойно жить дальше.

Что необходимо?


Для загрузки системы нужны три компонента: ядро, initramfs и корневая файловая система.
Ядро и initramfs мы передадим по TFTP, а корневую файловую систему — по iSCSI.

iSCSI-таргеты


Небольшой ликбез по iSCSI
iSCSI — реализация протокола SCSI поверх TCP. Сам протокол SCSI весьма универсален, теоретически с его помощью можно подключить устройство любого типа. Тем не менее, в большинстве случаев SCSI используется для доступа к тем или иным устройствам хранения данных (жёсткие диски, приводы CD и DVD и т. п.). Для примера Mass Storage Device, использующийся в USB-устройствах, является реализацией SCSI поверх USB. Поэтому, кстати, флешки в Linux опознаются как /dev/sdX-устройства. Использующаяся на серверах шина SAS также является реализацией SCSI (собственно, это видно из названия — Serial Attached SCSI).
В iSCSI различаются понятия таргета (target, целевое устройство, осуществляет приём и выполнение запросов) и инициатора (initiator, порождает запросы). В более привычных терминах таргет — это сервер, а инициатор — клиент.
Таргеты и инициаторы бывают разных видов. iSCSI-таргетом может выступать обычный компьютер, сервер или система хранения данных. Инициаторами обычно выступают сетевые карты (в их ROM бывает прошит необходимый код) или software-реализации.

Для Ubuntu возможно использовать различные iSCSI-таргеты. Вот неполный их список:
  • ISCSI Enterprise Target — одна из самых старых реализаций iSCSI-таргета на Linux. Насколько мне известно, жива и здравствует, однако требует установки (в Ubuntu) через DKMS и совсем лёгкого дребезга бубнов. На opennet.ru есть рабочий HOWTO, применимый и к более поздним версиям ОС (Precise)
  • SCSI Target Framework (STGT/TGT) — реализация iSCSI-таргета, портированная из BSD-систем. В отличии от IET, позволяет использовать не только iSCSI, но и другие родственные технологии (такие, как, например, SRP). К сожалению, код STGT в части iSCSI в линуксе работает в userspace. Как следствие, производительность получается где-то в районе плинтуса.
  • SCST — новая реализация универсального таргета для Linux. По заявлениям разработчиков обладает массой преимуществ и фишек. В ядро не включена, для установки требует патчей исходников ядра и продолжительного зубодробительного секса. По слухам, мила, прекрасна и похожа на сакуру. Когда-то давно ее использовали, например, в Оверсан-Скалакси (их опыт вкратце описан на хабре). Пакеты для Ubuntu перестали поддерживаться около полутора лет назад, в SVN есть некоторая активность, то есть проект жив и здравствует. Кстати, разработчики — русские парни :)
  • LIO — Linux Unified Target, универсальная система, реализующая iSCSI, SRP, FCoE и несколько других вариантов экспорта устройств в сеть. Официально включена в ядро и является стандартным таргетом, начиная с версии 2.6.38. К ней есть определенные претензии в плане того, что на официальном сайте активно продвигается проприетарная сборка, обладающая большим функционалом, но оставим вопли RMS.

Читать дальше →
Всего голосов 39: ↑36 и ↓3+33
Комментарии16

Развёртывание репозиториев Linux

Время на прочтение2 мин
Количество просмотров21K
Без синхронизаций и т.д., в варианте «есть хостинг» или «файловая помойка» и надо быстро выкатить хранилище пакетов для дистрибутива Linux (так чтобы можно было подключиться к этому репозиторию и поставить оттуда всё необходимое). Иногда обновляться в ручном режиме — копированием по тому же адресу с перезаписью. Раз в полгода или год. Задача типовая и я её опишу в полуавтоматическом режиме.
Читать дальше →
Всего голосов 57: ↑41 и ↓16+25
Комментарии24

Linux :: два, три, пять… указателей мыши

Время на прочтение3 мин
Количество просмотров66K
Не знаю зачем мне это пригодится, но очень вдруг захотелось иметь два указателя мыши в Linux, ведь две «мыши» у меня есть — собственно беспроводная мышь и тач-пад. Идея пришла в тот момент, когда я подключил вторую мышь, т.е. третье устройство управления указателем.
Я тоже подключу десять мышей и запутаюсь в указателях
Всего голосов 140: ↑134 и ↓6+128
Комментарии93

Краткая, неполная, и в основном неверная история языков программирования

Время на прочтение5 мин
Количество просмотров19K
Представляю вашему вниманию вольный перевод юмористической статьи James Iry «A Brief, Incomplete, and Mostly Wrong History of Programming Languages» — статья старая, и если кто-либо укажет на уже существующий перевод — буду очень благодарен, ибо сам не нашел.
Читать дальше →
Всего голосов 104: ↑99 и ↓5+94
Комментарии26

Голографические свойства бит-реверсивной перестановки

Время на прочтение4 мин
Количество просмотров45K
Об экспериментах с компьютерной голографией писалось неоднократно. [1, 2, 3] Мне эта тема просто любопытна. Я как-то экспериментировал с бит-реверсивной перестановкой (bit-reversal permutation) изображений и случайно обнаружил голографические свойства. Но обо всем по порядку.
Читать дальше →
Всего голосов 136: ↑131 и ↓5+126
Комментарии30

Git up и все все все

Время на прочтение2 мин
Количество просмотров26K
Комманда git up (аналог svn up) добавляется так:
git config --global alias.up '!(git add . && git stash && git pull --rebase >&2) | grep -v "No local changes to save" && git stash pop'

git up при надобности ныкает все ещё незакоммиченные изменения в stash, обновляет локальную ветку до свежайшей и восстанавливает локальные изменения назад. В том числе переносит ещё неотправленные локальные коммиты в самый конец, делая историю линейной как в Subversion, т.е. избегая лишних веток и merge-коммитов.
Читать дальше →
Всего голосов 98: ↑88 и ↓10+78
Комментарии64

Как обойтись без капчи?

Время на прочтение2 мин
Количество просмотров130K
К сожалению, на многих сайтах без особой необходимости используют капчи. Хотя можно побороть спам и незаметными для пользователя способами. Особенно, капчу больно видеть на небольших коммерческих сайтах в форме обратной связи, поскольку, капча заметно снижает конверсию таких сайтов. Для больших сайтов, которые могут специально спамить, такие методы не применимы. Однако, в большинстве случаев, без капчи можно обойтись

Читать дальше →
Всего голосов 159: ↑137 и ↓22+115
Комментарии187

Система уведомлений о событиях на сайте (на примере аудиоплеера ВКонтакте)

Время на прочтение2 мин
Количество просмотров37K
Приветствую.

Думаю, многие, кто имеет аккаунт ВКонтакте и слушает там музыку, замечали, что если на одной вкладке включить трек, а затем уже на другой включить второй, первый трек уйдет в паузу. Примерно то же самое происходит с различными уведомлениями (новое сообщение, ответ на комментарий/запись и т.д.) — отображается оно только в активной вкладке. Кому интересно как это работет и каким образом сделать подобное у себя на сайте, милости просим за хабракат.
Читать дальше →
Всего голосов 94: ↑90 и ↓4+86
Комментарии38

Создание минидампов в проектах на C# 4.0, разрабатываемых в VS 2010

Время на прочтение4 мин
Количество просмотров11K
Для создания минидампов в управляемой среде используются возможности библиотеки DbgHelp.dll. Рассмотрим применение ее функционала на примере готового проекта на WinForms.

Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии8

Восстановление расфокусированных и смазанных изображений. Повышаем качество

Время на прочтение5 мин
Количество просмотров210K
Представляю вашему вниманию заключительную статью из трилогии «Восстановление расфокусированных и смазанных изображений». Первые две вызвали заметный интерес — область, действительно, интересная. В этой части я рассмотрю семейство методов, которые дают лучшее качество, по сравнении со стандартным Винеровским фильтром — это методы, основанные на Total Variaton prior.
Также по традиции я выложил новую версию SmartDeblur (вместе с исходниками в open-source) в которой реализовал этот метод. Итоговое качество получилось на уровне коммерческих аналогов типа Topaz InFocus. Вот пример обработки реального изображения с очень большим размытием:


Читать дальше →
Всего голосов 355: ↑352 и ↓3+349
Комментарии86

Android — Сontinuous Integration. Часть 2

Время на прочтение11 мин
Количество просмотров20K
Первая часть, рассказывающая для чего все это нужно здесь.

Содержание


  • Подготовка
  • Maven
    • Root
      • Build profiles
      • Plugins
    • App
      • Resource filtering
    • Lib
    • Test
  • Заключение
  • Ссылки


Пост рассчитан на читателей уже знакомых с основами maven’а и в ходе статьи акцент будет делаться на каких-то специфических, именно для андроида, моментах, а не на общих вопросах самого мавена. Если же вы до этого ни разу не работали с мавеном, то для начала можно почитать здесь и здесь.

Так же я не буду рассматривать установку и базовую настройку инструментов — JDK, Android SDK, Maven и IntelliJ IDEA должны быть установлены и работать. У вас должны быть настроены соответствующим образом переменные окружения JAVA_HOME, M2, M2_HOME и ANDROID_HOME. Так же, для удобства работы, рекомендую добавить в Path директории %ANDROID_HOME%/tools и %ANDROID_HOME%/platform-tools.

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

Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии11

Модель освещения для двумерных хоррор-игр

Время на прочтение2 мин
Количество просмотров20K
image
Самым нетерпеливым: лагающая демка, написанная под хром. На моей машине загружается секунд 20.

Эта идея пришла ко мне года 2 назад. Я обратил внимание на то, что, в условиях недостаточного освещения, я воспринимаю видимые объекты преимущественно в синеватых тонах и с небольшой потерей резкости. Возможно, это чисто психологическое восприятие, но мы сейчас не об этом. Мне стало любопытно, как выглядела бы 2D игра с такими особенностями освещения. С целью выяснить это, я, так и не разобравшись с шейдерами, набросал демку на самом удобном для меня языке — javascript. Поскольку эффект применяется к слабоосвещенным участкам, он не самый заметный из происходящего на экране, но вполне ощутимый шарм он добавляет.
Читать дальше →
Всего голосов 49: ↑44 и ↓5+39
Комментарии15

Space Engine — Вселенная на ладони

Время на прочтение8 мин
Количество просмотров99K
My God, it's full of stars!
Arthur C. Clarke

Кто из нас в детстве не мечтал «бороздить просторы вселенной», как капитан Пикард, прогуливаться по неизведанным планетам далёких миров, встречать рассветы двойных или тройных звёзд, погружаться в атмосферы газовых гигантов, ронять корабли в чёрные дыры? И я тоже не исключение. Конечно, частично эту мечту воплощали книги, фильмы и «Элит»-ные игры. Но вся романтика в них разрушалась банальными купи-продай и «пиу-пиу» в «жидком» космосе на скоростях самолётов времён первой мировой войны. Да и тем немногим виртуальным миркам не хватало свободы, детальности и масштабов реальной вселенной.

В начале тысячелетия я познакомился с MojoWorld и был шокирован его возможностями. Наконец-то, можно было бродить по другим планетам и фотографировать местные достопримечательности. Он стал первой ласточкой, дававшей надежду на то, что полномасштабные космические миры технически возможны. Но, к сожалению, производительности железа десятилетней давности было не достаточно для передачи всех красот в реальном времени. Да и планеты оставались всего лишь мёртвыми пейзажами.

Но вот, чуть больше года назад, я совершенно случайно наткнулся на вселенную Space Engine, и она просто взорвала мне мозг и размазала его по полу своим масштабом и невероятной детализацией.
Читать дальше →
Всего голосов 195: ↑190 и ↓5+185
Комментарии88

UICloud: Самая большая база пользовательских интерфейсов

Время на прочтение1 мин
Количество просмотров34K


UICloud — это база бесплатных пользовательских интерфейсов с поисковой системой, рейтингом и каталогизатором в которой собрано все от исходников в формате PSD, до готовых решений на HTML, CSS или jQuery: формы, слайдеры, кнопки, календари, элементы и полноценные интерфейсы для мобильных и веб приложений. В проекте уже сейчас можно найти практически все что нужно для облегчения процесса разработки дизайнерам и разработчикам.

На данный момент в базе 23586 элементов и почти тысяча UI-сэтов включающие в себя готовые решения в едином стиле. Проект создан Британской студией Double-J Design целью проекта является создание самой обширной UI базы.
Всего голосов 163: ↑161 и ↓2+159
Комментарии40

Информация

В рейтинге
Не участвует
Откуда
Düsseldorf, Nordrhein-Westfalen, Германия
Зарегистрирован
Активность