Pull to refresh
64
0
Дмитрий Стропалов @helions8

Инженер

Send message

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

Reading time 3 min
Views 41K
Некоторые опции Bash хорошо известны и часто используются. Например, многие в начале скрипта пишут

set -o xtrace

для отладки,

set -o errexit

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

set -o errunset

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

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

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

Reading time 7 min
Views 5.8K

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

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

Индексы в PostgreSQL — 1

Reading time 17 min
Views 385K

Предисловие


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

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

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

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

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

Reading time 13 min
Views 46K


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

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

Введение в fetch

Reading time 5 min
Views 296K

Прощай, XMLHttpRequest!


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

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

Reading time 1 min
Views 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.
Total votes 130: ↑104 and ↓26 +78
Comments 53

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

Reading time 5 min
Views 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 вполне реально и дешево.
Читать дальше →
Total votes 85: ↑78 and ↓7 +71
Comments 93

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

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

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

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

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

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

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

image

image
Читать дальше →
Total votes 54: ↑51 and ↓3 +48
Comments 40

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

Reading time 8 min
Views 92K


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

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

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

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

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

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

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

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

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

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

image

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

Читать дальше →
Total votes 108: ↑80 and ↓28 +52
Comments 130

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

Reading time 3 min
Views 4.7K
Доброе время суток!

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

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

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

Читать дальше →
Total votes 8: ↑7 and ↓1 +6
Comments 10

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

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

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

Просим всех украинских предпринимателей под кат.
Total votes 47: ↑35 and ↓12 +23
Comments 23

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

Reading time 4 min
Views 22K

Ist das Emacs? Sehr gut!



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

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

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

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

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

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

Читать дальше →
Total votes 85: ↑67 and ↓18 +49
Comments 57

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

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

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

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

Information

Rating
Does not participate
Location
Донецк, Донецкая обл., Украина
Date of birth
Registered
Activity