Как стать автором
Обновить
64
0
Дмитрий Стропалов @helions8

Инженер

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

Восемь малоизвестных опций Bash

Время на прочтение 3 мин
Количество просмотров 42K
Некоторые опции Bash хорошо известны и часто используются. Например, многие в начале скрипта пишут

set -o xtrace

для отладки,

set -o errexit

для выхода по ошибке или

set -o errunset

для выхода, если вызванная переменная не установлена.

Но есть много других опций. Иногда они слишком путано описаны в манах, поэтому я собрал здесь некоторые из наиболее полезных, с объяснением.
Читать дальше →
Всего голосов 82: ↑79 и ↓3 +76
Комментарии 13

Erlang-like микросервисы в Clojure приложении: это просто

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

Как известно в кругу Erlang разработчиков: только Erlang разработчики знают как "жить" правильно а все остальные "живут" — неправильно. Не пытаясь оспаривать этот факт, приведем пример Clojure приложения в стиле Erlang, используя библиотеку Otplike.

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

Spring: вопросы к собеседованию

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

image
Этот небольшой список вопросов даст вам понимание самых важных концепций Spring, а так же поможет подготовится к собеседованию

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

Индексы в PostgreSQL — 1

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

Предисловие


В этой серии статей речь пойдет об индексах в PostgreSQL.

Любой вопрос можно рассматривать с разных точек зрения. Мы будем говорить о том, что должно интересовать прикладного разработчика, использующего СУБД: какие индексы существуют, почему в PostgreSQL их так много разных, и как их использовать для ускорения запросов. Пожалуй, тему можно было бы раскрыть и меньшим числом слов, но мы втайне надеемся на любознательного разработчика, которому также интересны и подробности внутреннего устройства, тем более, что понимание таких подробностей позволяет не только прислушиваться к чужому мнению, но и делать собственные выводы.

За скобками обсуждения останутся вопросы разработки новых типов индексов. Это требует знания языка Си и относится скорее к компетенции системного программиста, а не прикладного разработчика. По этой же причине мы практически не будем рассматривать программные интерфейсы, а остановимся только на том, что имеет значение для использования уже готовых к употреблению индексов.

В этой части мы поговорим про разделение сфер ответственности между общим механизмом индексирования, относящимся к ядру СУБД, и отдельными методами индексного доступа, которые в PostgreSQL можно добавлять как расширения. В следующей части мы рассмотрим интерфейс метода доступа и такие важные понятия, как классы и семейства операторов. После такого длинного, но необходимого введения мы подробно рассмотрим устройство и применение различных типов индексов: Hash, B-tree, GiST, SP-GiST, GIN и RUM, BRIN и Bloom.
Читать дальше →
Всего голосов 104: ↑103 и ↓1 +102
Комментарии 59

M* — алгоритм поиска кратчайшего пути, через весь мир, на смартфоне

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


При поиске кратчайшего пути на графах большого размера плохо работает традиционная оценка стоимости т.к. данные заведомо не помещаются в памяти и общая стоимость больше зависит от числа обращений к диску нежели от числа просмотренных рёбер. А число дисковых операций — весьма субъективный фактор, зависимый от сложно формализуемой пригодности графа к хранению на диске в форме удобной для конкретного алгоритма. Кроме того, очень важным становится компактность — количество информации в расчете на ребро и вершину.

Под катом представлена обобщенная эвристика к алгоритму A*, полезная именно в свете практической пригодности на больших графах при ограниченных ресурсах, например, на мобилке.
Читать дальше →
Всего голосов 110: ↑109 и ↓1 +108
Комментарии 48

Введение в fetch

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

Прощай, XMLHttpRequest!


fetch() позволяет вам делать запросы, схожие с XMLHttpRequest (XHR). Основное отличие заключается в том, что Fetch API использует Promises (Обещания), которые позволяют использовать более простое и чистое API, избегать катастрофического количества callback'ов и необходимости помнить API для XMLHttpRequest.
Читать дальше →
Всего голосов 35: ↑30 и ↓5 +25
Комментарии 145

ВКонтактеID = ВКонтакте + OpenID

Время на прочтение 1 мин
Количество просмотров 9.5K
OpenID logo Идея OpenID провайдера на основе социальной сети ВКонтакте, учитывая её пользовательскую базу, бродит давно.

Пробная её реализация была осуществлена ещё в 2008 году, как только появился User API. Но, к сожалению, проект не был одобрен (не то что бы отклонен, а просто проигнорирован, ни одного случая одобрения сайта на основе User API мне не известно).

В связи с недавним появлением Open API я решил возродить проект, тем более каждый третий комментарий был «а почему не стандартный OpenID?!».

Итак, на всех сайтах принимающих OpenID достаточно вводить адрес VKontakteID.ru и вы будете идентифицированы с помошью вашего аккаунта ВКонтакте. Для устаревших консумеров OpenID 1.x надо вводить адрес VKontakteID.ru/idXXXXXX, где XXXXXX ваш идентификатор ВКонтакте. Но таких сайтов уже меньшинство.

Аутентификация производится через официальный Open API, логин и пароль передаются напрямую на сервера ВКонтакте, а если вы залогинены там и у вас стоят куки, то их вообще вводить не придётся.

P.S. Поддержки SReg и AX (передача дополнительных данных о пользователе) пока нет.
P.P.S. Поддержка SReg и AX уже добавлена.
P.P.P.S. Также добавлена поддержка OpenID Immediate Mode.
Всего голосов 130: ↑104 и ↓26 +78
Комментарии 53

Broadcom Crystal HD: аппаратное ускорение HD видео «от А до Я»

Время на прочтение 5 мин
Количество просмотров 76K
image

Думаю, многие знают, что HD (720p) H.264 видео так просто на нетбуке не посмотришь. Мощности Intel Atom просто не хватает на декодирование. Я использую свой Acer Aspire One в качестве видеоплеера во время командировок и длинных поездок и тоже с этим сталкивался. Есть несколько способов решить эту проблему:
  • перекодировать с более низким разрешением/битрейтом
  • использовать программные ухищрения
  • использовать аппаратное ускорение

Первый способ слишком медленный и унизительный (т.к. типичен для портативных плееров вроде iPod и т.п.).

Второй — не универсален и ограничен. Мне известны два способа — установка кодека CoreAVC и опережающий воспроизведение буфер Crystal Player-а (см. Настройка нетбука на максимальную производительность для HDTV). В принципе, это вполне сносное решение для 720p. Однако, есть два больших минуса: 100% загрузки процессора и полная несостоятельность в случае с 1080p.

Третий кажется мне наиболее «правильным». Можно сразу купить нетбук с Nvidia ION — универсальное решение, которое дает дополнительные плюшки вроде вычислений CUDA и возможности играть в 3D игры (впрочем, удовольствие на маленьком экранчике сомнительное). К сожалению, Nvidia ION-powered нетбуки появились лишь недавно и пока еще дороги. Да и что поделать, если уже купил себе нетбук без всяких «понтов»?

Есть выход! Называется он Broadcom Crystal HD, и «ускорить» им свой EEE PC или Aspire One вполне реально и дешево.
Читать дальше →
Всего голосов 85: ↑78 и ↓7 +71
Комментарии 93

Безразмерная флэшка

Время на прочтение 1 мин
Количество просмотров 2.8K
Большими USB-накопителями сейчас уже никого не удивить, но даже USB-HDD имеет ограниченный объем. И к тому же, немалые физические размеры. Что, если вы хотите посмотреть HD-фильм, хранящийся на домашнем компьютере, а телевизор у вас на кухне? Если у телевизора есть USB-вход либо он подключен к аппаратному плееру, вы возьмете флэшку, освободите на ней место, запишете фильм и понесете на кухню. Посмотрев, удалите и на следующий день запишете новый. В случае хранения фильмов на USB-HDD, ничего переписывать не придется, но таскать его по квартире банально неудобно.

Всего этого можно избежать, если воспользоваться представленным устройством. Вы вставляете его, как обычно, в USB-вход, и все ресурсы, которые доступны в вашей домашней Wi-Fi сети, будут виртуально доступны и на этой «флэшке». Если коллекция фильмов организована на NAS c Wi-Fi, то вообще не придется ничего делать дополнительно. Объем флэшки ограничен лишь объемом доступных сетевых ресурсов.

Дата выхода гаджета — 1 марта. Цена пока неизвестна, но вряд ли будет дорого.

P.S. Я понимаю, что все подобные гаджеты можно назвать излишествами, и что когда-то мы записывали и смотрели кино через «видик» и были очень счастливы. Но, елки-палки, удобно же! :)
Всего голосов 94: ↑83 и ↓11 +72
Комментарии 67

F-Droid, сетевой репозиторий пакетов открытого ПО для Android, aka «Маркет» для тех, кто шлет патчи

Время на прочтение 4 мин
Количество просмотров 43K
Тема альтернативных источников программного обеспечения для Android и альтернативных «маркетов» в частности уже несколько раз поднималась на Хабре, но большинство их описываемых сайтов были откровенно варезными рассадниками (поэтому ссылки не даю). Здесь же я хотел бы рассказать о проекте F-Droid.org, который ставит своей целью собрать и сделать легко доступными для пользователей приложения с открытым исходным кодом (Open Source) и четкими лицензиями использования и изменения.

image

image
Читать дальше →
Всего голосов 54: ↑51 и ↓3 +48
Комментарии 40

Место сценариста в команде разработки игр

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


Здравствуйте, меня зовут Мария Кочакова, я сценарист проекта Skyforge в Allods Team. Эта статья подытоживает два года моей работы игровым сценаристом. Все это суровые реалии жизни сценаристов компьютерных игр, то, с чем мы сталкиваемся ежедневно. Категоричность формы продиктована важностью содержания.

Сценарий компьютерной игры

Нарративная (повествовательная) часть игры состоит из сеттинга, сюжета и текста.

Сеттинг — это мир игры, его законы и реалии. Примеры сеттинга: постапокалипсис, фэнтези-средневековье, киберпанк…
Читать дальше →
Всего голосов 76: ↑62 и ↓14 +48
Комментарии 64

Clojure — последовательности (sequences)

Время на прочтение 7 мин
Количество просмотров 7.6K
Clojure является диалектом Lisp, поэтому совершенно не удивительно, что работе со списками отводится ключевое место в языке. Правда, в отличии от традиционных диалектов (CL или Scheme), вместо классических двухслотовых списков в Clojure используется абстракция Sequence — «логический список». Фактически, это интерфейс, предоставляющий методы для работы с неизменяемыми, ленивыми и, возможно, бесконечными последовательностями. Данная статья описывает внутреннее устройство этих сущностей.
Читать дальше →
Всего голосов 24: ↑24 и ↓0 +24
Комментарии 2

Какой Java поток нагружает мой процессор

Время на прочтение 3 мин
Количество просмотров 27K
Что Вы делаете, когда Ваше Java приложение потребляет 100% ЦП? Оказывается Вы легко можете найти проблемные потоки, используя встроенные Unix и JDK утилиты. Никакие инструменты профилирования не потребуются.
С целью тестирования мы будем использовать простую программу:
Читать дальше →
Всего голосов 34: ↑30 и ↓4 +26
Комментарии 13

Ремесло писателя. Как научиться писать?

Время на прочтение 7 мин
Количество просмотров 153K
Писатель мало чем отличается от плотника: один тешет доски, другой – слова. Постараюсь это доказать. За все время моей трудовой деятельности, моя работа так или иначе была связанна с написанием текстов. Нужно было учиться писать. Постараюсь поделиться своим опытом в получении навыка в данном деле.

image

На моем пути встречались самые разные люди пишущих профессий: от редакторов, копирайтеров, райтеров просто до настоящих писателей. Приставал ко всем с просьбой научить писать, и вразумительного ответа, как жеж таки писать? — я не услышал, но все ответы можно как-то ранжировать.

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

Объединение CKEditor 3.6.3, prettyPhoto и AjexFileManager

Время на прочтение 3 мин
Количество просмотров 4.7K
Доброе время суток!

CKEditor 3.6.3 — С помощью визуального редактора встроенного в сайт очень легко и удобно добавлять и редактировать различную информацию. Например его можно использовать в форме добавления комментариев или новостном блоке, не говоря уже о применении его в администраторском разделе.

prettyPhoto — Красивая фото галерея.

AjexFileManager — Файловый менеджер. В Нашем случае он будет грузить картинки.

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

Taxer – сдача годового отчета в пенсионный фонд Украины онлайн

Время на прочтение 8 мин
Количество просмотров 3K
image
Сегодня ровно год, как Таксер был представлен на суд общественности. Наш первый анонс состоялся на Хабре и, поэтому, спустя год мы снова тут. Как и самый первый пост, эта публикация будет посвящена годовому отчету в пенсионный фонд. Но если год назад мы всего лишь напомнили украинским предпринимателям о необходимости этот отчет сдать, то сейчас мы имеем все необходимые инструменты для того, чтобы отправить его в электронном виде прямо в браузере. В этом году последний день сдачи — 2-ое апреля.

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

Просим всех украинских предпринимателей под кат.
Всего голосов 47: ↑35 и ↓12 +23
Комментарии 23

Emacs для начинающих: введение

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

Ist das Emacs? Sehr gut!



Начну с небольшой истории. Лет так 15 назад ездил я на подработку сисадмином программистом в славный городе Mannheim, West Germany. Когда я приехал на работу и развернул своё рабочее окружение, большинство дойчей вообще не сильно поняли в чём я работаю, а вот директор конторы сразу мне сказал: «Ist das Emacs? Sehr gut!», добавив также что никто кто из текущих программистов не смог его освоить. А по честному, не такой уж я особенный — мне просто повезло: готовый конфиг мне дал один добрый человек, и помог мне разобраться с редактором на первых шагах. Я, в свою очередь хочу поделиться своим опытом с остальными, и решил сделать серию статей для начинающих и не очень, с рассмотрением разных полезных фич emacs.

В этой статье я также хочу пошатнуть сложившийся миф — что Emacs — сложный в работе/настройке редактор. Я считаю, что правильно начав, процесс изучения не будет сложным, и надеюсь, доставит Вам массу удовольствия от использования удобного, мощного и быстрого инструмента как в работе так в жизни.
Читать дальше →
Всего голосов 60: ↑56 и ↓4 +52
Комментарии 134

Архитектурный изьян CouchDB

Время на прочтение 3 мин
Количество просмотров 5.8K
Моя любимая тема в программировании — копаться в негативных эффектах, которые преподносят нам самые, на наш взгляд, тривиальные операции.

Один из таких вопросов — удаление записей в базе данных. Данная операция, по мнению большинства программистов, ускоряет работу с базой и делает её компактнее. Фокус состоит в том, что это неправда. И если с реляционными базами это неправда только отчасти, то с NoSQL это может быть полнейшим враньём.

Вот о такой проблеме в Apache CouchDB мы и поговорим далее.
Картинка в тему:

Читать дальше →
Всего голосов 85: ↑67 и ↓18 +49
Комментарии 57

Пишем плагины для Android

Время на прочтение 4 мин
Количество просмотров 7.2K
По долгу службы мне уже полтора года доводится писать для платформы Android, и вроде бы знания мои в данной области обширны, но и на хабре объем уже охваченных тем не мал. В общем-то после долгих рассуждений решил я поведать хабралюдям о данной теме.
Читать дальше →
Всего голосов 33: ↑31 и ↓2 +29
Комментарии 6

Валидаторы ввода под Android

Время на прочтение 3 мин
Количество просмотров 8.9K
Validation
Не так давно мне понадобилось добавить в андроид-приложение валидаторы для полей ввода (EditText), но ничего подходящего в сети не нашлось: пришлось писать свои собственные. Теперь, когда все готово, можно раздать результаты всем желающим под Apache лицензией и немного рассказать, как все устроено. Тех, кому интересно,
прошу под кат
Всего голосов 47: ↑41 и ↓6 +35
Комментарии 11

Информация

В рейтинге
Не участвует
Откуда
Донецк, Донецкая обл., Украина
Дата рождения
Зарегистрирован
Активность