Search
Write a publication
Pull to refresh
-1
0
Send message

Ограничения (сonstraints) PostgreSQL: exclude, частичный unique, отложенные ограничения и др

Reading time4 min
Views72K
Целостность данных легко нарушить. Бывает так, что в поле price попадает значение 0 из-за ошибки в коде приложения (периодически всплывают новости, как в том или ином инет-магазине продавали товары по 0 долларов). Или бывает, что удалили юзера из таблицы, но какие-то данные о нем остались в других таблицах, и эти данные вылезли в каком-то интерфейсе.

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

1. Кастомный подтип через ключевое слово DOMAIN

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

Как приготовить тосты и заодно визуализировать ИТ-системы

Reading time10 min
Views8.3K
Приветствую, уважаемые читатели! В этом материале я хочу поделиться историей о приготовлении тостов и рассказать, каким образом мы расширили функционал Zabbix с помощью мотка провода и интегральной микросхемы Open Source решений. Обо всем по порядку, прошу под кат.

Image1.jpg
Открыть в себе системный подход

Книга «Распределенные алгоритмы. Интуитивный подход»

Reading time5 min
Views18K
image Эта книга рассчитана на курс по распределенным алгоритмам для студентов старших курсов и аспирантов по специальностям, связанным с информатикой и программной инженерией. Она также может быть использована в качестве справочника исследователями в этих областях. Книга делает упор на базовые алгоритмы и результаты, полученные в сфере распределенных вычислений. Рассматриваемые в ней алгоритмы в основном относятся к «классическим» и были выбраны в первую очередь потому, что поучительны с точки зрения проектирования алгоритмов для распределенных систем или проливают свет на ключевые проблемы в распределенном и параллельном программировании.

Книга состоит из двух частей. Первая часть посвящена взаимодействию процессов посредством передачи сообщений. Она сформировалась на основе курса, читаемого в университете Врийе (Амстердам), изначально основанного на учебнике «Введение в распределенные алгоритмы» Герарда Теля. Вторая часть посвящена архитектурам с общей памятью.
Читать дальше →

На видео — разработчица одного из блоков внутри российского микропроцессора Байкал-Т

Reading time2 min
Views14K
Сейчас вы увидите нечто экслюзивное. Девушка справа на видео — разработчица одного из блоков внутри load-store unit микропроцессорного ядра MIPS P5600, которое является частью системы на кристалле российского микропроцессора Байкал-Т, который используется в офисном принтере «Катюша», терминале «Таволга», системы контроля станков с ЧПУ «Ресурс-30», промышленном контроллере для газовой отрасли «Акситех» КАМ 300 и других устройствах.

А два мужика на видео приезжают в Москву, Санкт-Петербург и Киев для серии семинаров, описывающий все этапы проектирования и производства микросхем: создание спецификации, описание цифровой логики на языках описания аппаратуры Verilog и VHDL на уровне регистровых передач, логический синтез, размещение и трассировка, создание фотошаблонов и производство микросхем на фабрике. Cреди организаторов: РОСНАНО, еНАНО, Imagination Technologies (компания известная как разработчик GPU внутри Apple iPhone), МИСиС, МГУ, МФТИ, МИЭТ, ИТМО, Казахский НТУ, Киевский КПИ и Киевский КНУ. Участники семинара познакомятся с реальными кейсами российских компаний, использующих инструменты САПР: ООО «ЛАБСИСТЕМС», АО «НИИМА «Прогресс», ОАО НПЦ «ЭЛВИС» и АО «БАЙКАЛ ЭЛЕКТРОНИКС». Подробности — http://edunano.ru/doc/6335690702352234538 и https://habrahabr.ru/post/311562.



Под катом — картинки, показывающие какой именно блок проектирует девушка по имени Смрити Оджа, а также (впервые!) часть слайдов Чарльза Данчека (это лектор слева), переведенные на русский язык доцентом Киевского Национального Университета имени Шевченко Александром Барабановым:

Какая-такая Data? Или ещё раз про MapReduce

Reading time10 min
Views20K
Big Fish Small Fry by John Pollack Если Вы последние 10 лет провели на удаленном острове, без интернета и в отрыве от цивилизации, то специально для Вас мы попытаемся еще раз рассказать про концепцию MapReduce. Введение будет небольшим, в объеме достаточном, для реализации концепции MapReduce в среде InterSystems Caché. Если же Вы не сильно далеко удалялись последние 10 лет, то сразу переходите ко 2ой части, где мы создаем основы инфраструктуры.


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

Лекции Техносферы. 1 семестр. Введение в анализ данных (весна 2016)

Reading time3 min
Views44K
Слушайте и смотрите новую подборку лекций Техносферы Mail.Ru. На этот раз представляем в открытом доступе весенний курс «Введение в анализ данных», на котором слушателей знакомят со сферой анализа данных, основными инструментами, задачами и методами, с которыми сталкивается любой исследователь данных в работе. Курс преподают Евгений Завьялов (аналитик проекта Поиск Mail.Ru, занимающийся извлечением полезных бизнесу знаний из данных, генерируемых поисковым движком и десктопными приложениями), Михаил Гришин (программист-исследователь из отдела анализа данных) и Сергей Рыбалкин (старший программист из студии Allods Team).

Лекция 1. Введение в Python


Из первой лекции вы узнаете, что такое анализ данных, какие инструменты используют для анализа данных, а также как работает Python.


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

Главное о стратегии The New York Times: конкуренция с новыми медиа и расширение бизнеса

Reading time5 min
Views4.6K
image

«Ведомости» опубликовали рассказ о планах гендиректора The New York Times Марка Томпсона по развитию бизнеса. Выбрали ключевые моменты статьи, которые помогут понять стратегию издания.
Читать дальше →

Принципы реактивного программирования на примере простого RSS-агрегатора с использованием ReactiveX для Python

Reading time7 min
Views25K

В последние годы реактивное программирование в целом, а технология ReactiveX в частности, обретает всё большую популярность среди разработчиков. Одни уже активно используют все преимущества этого подхода, а другие только “что-то слышали”. Со своей стороны я постараюсь помочь вам представить, насколько некоторые концепции реактивного программирования способны изменить взгляд на привычные, казалось бы, вещи.
Читать дальше →

Структуры данных для самых маленьких

Reading time22 min
Views346K
James Kyle как-то раз взял и написал пост про структуры данных, добавив их реализацию на JavaScript. А я взял и перевёл.

Дисклеймер: в посте много ascii-графики. Не стоит его читать с мобильного устройства — вас разочарует форматирование текста.


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

Современная операционная система: что надо знать разработчику

Reading time22 min
Views68K

Александр Крижановский (NatSys Lab.)


Александр Крижановский

Нас сегодня будет интересовать операционная система – ее внутренности, что там происходит… Хочется поделиться идеями, над которыми мы сейчас работаем, и отсюда небольшое вступление – я расскажу о том, из чего состоит современный Linux, как его можно потюнить?

По моему мнению, современная ОС – это плохая штука.




Дело в том, что на картинке изображены графики сайта Netmap (это штуковина, которая позволяет вам очень быстро захватывать и отправлять пакеты сетевого адаптера), т.е. эта картинка показывает, что на одном ядре с разной тактовой частотой до 3 ГГц Netmap позволяет 10 Гбит – 14 млн. пакетов в сек. отрабатывать уже на 500 МГц. Синенькая линия – это pktgen – самое быстрое, что, вообще, есть в ядре Linux’а. Это такая штуковина – генератор трафика, который берет один пакет и отправляет его в адаптер много раз, т.е. никаких копирований, никакого создания новых пакетов, т.е., вообще, ничего – только отправка одного и того же пакета в адаптер. И вот оно настолько сильно проседает по сравнению с Netmap (то, что делается в user-space показано розовой линией), и оно вообще где-то там внизу находится. Соответственно, люди, которые работают с очень быстрыми сетевыми приложениями, переезжают на Netmap, Pdpdk, PF_RING – таких технологий море сейчас.
Читать дальше →

Книга «Многопользовательские игры. Разработка сетевых приложений»

Reading time5 min
Views27K
image Привет, Хаброжители! Ранее мы Вас спрашивали переводить ли книгу «Multiplayer Game Programming: Architecting Networked Games (Game Design)». Недавно новинка пришла из типографии.

В этой книге подробно рассматриваются все основные понятия, необходимые для создания сетевых многопользовательских игр. Вначале мы познакомимся с основами сетевых взаимодействий: как работает Интернет и как выполняется пересылка данных на другие компьютеры. Далее, после закладки фундамента, будут рассмотрены основы передачи данных в играх, как подготавливать игровые данные к передаче по сети, как изменять содержимое игровых объектов по сети и как организовать взаимодействие компьютеров, вовлеченных в игру. Затем мы поговорим о том, как компенсировать ненадежность соединения и задержки при передаче данных по сети и как обеспечить масштабируемость и безопасность игрового кода. В главах 12 и 13 рассматриваются службы объединения игроков для выделенных серверов и использование облачного хостинга — две темы, чрезвычайно важные для современных сетевых игр.
Читать дальше →

Как мы делали поиск в elasticsearch на vulners.com

Reading time6 min
Views25K

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

И в отличии от классических SQL баз данных или noSQL типа MongoDB здесь очень удобно делать неточный поиск по всему документу. Для этого используется синтаксис Query DSL. Для полнотекстового поиска по всему документу есть несколько поисковых запросов. У себя на сайте мы используем тип query_string. Этот запрос поддерживает Lucene синтаксис, который позволяет и нам и пользователю создавать сложные запросы в google-style. Вот примеры таких запросов:

title:apache AND title:vulnerability
type:centos cvss.score:[8 TO 10]

Можно сделать вот такой простой запрос и все:

{
  "query": {
    "query_string": {
      "query": "exploit wordpress"
    }
  }
}

Но начав впервые использовать query_string, вы столкнетесь с тем, что поиск выдает не то, что вы хотите видеть. Как же добиться от elasticsearch внятного результата поиска?
Читать дальше →

Майкл Прайор, Trello: Как построить продукт для массового рынка

Reading time10 min
Views12K
Нет сомнений, что вы слышали о Trello — как-никак, у него уже более 16 миллионов пользователей. Каково это – разработать, запустить и продвигать такой массовый продукт? Как правильно приоритизировать фичи продукта со столь широким спектром вариантов использования? Как проводить монетизацию по принципу ценности для потребителя? Об этом и о многом другом соучредитель сервиса Intercom поговорил с исполнительным директором Trello Майклом Прайором. А мы, компания-локализатор Alconost, все это перевели.



Публикуем перевод без сокращений и изменений, а если у вас совсем нет времени, вот вам пять ключевых выводов:
Читать дальше →

43 полезных сервиса для управления проектами. Без эпитетов

Reading time13 min
Views694K
Дано: собственные и аутсорс-проекты, некоторые участники работают удаленно.

Требуется: необходимо быстро назначать задачи исполнителям, планировать спринты, трекать выполнение и статусы, визуализировать процессы и делиться результатами с заказчиками.

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

Изначально сервисов было более 100, но постепенно список сокращался, и мы остановили наш выбор на трех, удовлетворяющих вместе наши нужды лучше всего: Jira, Slack и GanttPro. Но, если вдруг эти сервисы не помогут вам в планировании задач и работы с командой, делюсь с вами полным списком:

Процесс поиска очень часто усложняется тем, что все сервисы, как один, пишут «Лучший сервис, помогающий превратить ваши идеи в реальность и реализовать ваши проекты. Сегодня.». Так, а что вы делаете-то? Поэтому в этом списке без лишних эпитетов, только что какой сервис умеет. :)




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

Пишите код, который легко удалять, а не дополнять

Reading time14 min
Views53K
image«Всякая строка кода рождается без причины, продолжается в слабости и удаляется случайно», — Жан-Поль Сартр программирует на ANSI C.

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

Чем больше у вашего API пользователей, тем больше кода приходится переписывать для введения новых изменений. Верно и обратное: чем больше вы полагаетесь на сторонний API, тем больше проблем испытываете когда он изменяется. Упорядочивание взаимодействия и взаимосвязей разных частей кода является серьезной проблемой в больших системах. И по мере развития проекта, растет и масштаб этой проблемы.

Перевод статьи на русский язык подготовлен компанией PayOnline, провайдером платежных решений для вашего онлайн-бизнеса.
Читать дальше →

Главные характеристики качественного кода

Reading time3 min
Views30K


Как часто вы поражаетесь, читая чужой код, и думаете «господи, ну и каша...». Скорее всего, достаточно часто. И можете ли вы быть уверенным, что никто не думал также когда читал ваш код? Другими словами, насколько вы уверены в чистоте своего кода? Можно быть уверенным только если полностью понимаешь, что значит чистый код.


Сложно дать точное определение чистому коду, и, скорее всего, сколько программистов — столько определений. Однако, некоторые принципы достаточно универсальны. Я собрал девять самых релевантных и описал ниже.


1.Плохой код делает слишком много, чистый код сфокусирован


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


Но я бы не ограничивал определение классами. В свой последней статье Ральф Вестфал (Ralf Westphal) представил более широкое определение принципа единственной обязанности:


Функциональная единица на определенном уровне абстракции должна отвечать за один аспект требований системы. Аспект требований это признак или свойство требования, которое может изменяться независимо от других аспектов.
Читать дальше →

Обзор децентрализованных крипто-платформ. Часть1: Waves

Reading time7 min
Views26K
Этим постом я хотел бы открыть цикл обзоров блокчейн-платформ, основная цель которого — рассказать о возможностях практического применения технологии блокчейн для построения не только отдельных сервисов, но и целых цифровых экосистем. В своих обзорах мы будем рассказывать о системах, которые незаслуженно обделены вниманием на Хабре, но широко известны и обсуждаются в криптовалютной тусовке.

В первом материале цикла речь пойдет об open source блокчейн-платформе Waves, которой к июню этого года в рамках краудфандинговой кампании удалось привлечь финансирование в размере 29 445 BTC, что по действовавшему на тот момент курсу составило более $15 млн.

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

В отличие от базирующегося в Канаде ядра команды Ethereum и немецкой команды Lisk, костяк команды Waves работает в Москве.
Читать дальше →

Badoo открывает исходные коды Live Streaming Daemon

Reading time7 min
Views16K


Для того чтобы мы могли считать статистику, наш сайт в своей работе генерирует огромное количество событий. Например, при отправке сообщения другому пользователю, при заходе пользователя на сайт, при смене местоположения и т.д. События представляют из себя строку в формате JSON или GPB (Google Protocol Buffers) и содержат время отправки, идентификатор пользователя, тип события, а также поля, относящиеся непосредственно к самому событию (например, координаты пользователя).

Каждую секунду генерируются сотни тысяч событий, и нам нужны инструменты, чтобы их собирать и анализировать эффективно и с минимальной задержкой. Мы рассматривали несколько существующих решений для этой задачи и до недавнего времени использовали демон под названием Scribe от Facebook. Он в целом нас устраивал и позволял делать все, что нам нужно. Однако в какой-то момент Facebook забросил свою разработку, и при некоторых условиях Scribe начал у нас падать (например, при перегрузке upstream-серверов). Самостоятельно устранить причину падений демона у нас не получилось, поэтому мы начали искать альтернативу.
Читать дальше →

Тестирование производительности баз данных при помощи tSQLt и SQLQueryStress

Reading time15 min
Views40K


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

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

В итоге работа с БД может стать узким местом в производительности нашего приложения.

Чтобы избавить себя от подобного рода проблем, я предлагаю рассмотреть различные аспекты тестирования баз данных. К которым можно отнести нагрузочное тестирование и проверку производительности SQL Server в целом при помощи юнит-тестов.
Подробнее

Программист на Марсе: Shutdown Dammit Until

Reading time10 min
Views16K
— Хьюстон, у нас проблемы.
— Нет, Марк, это у тебя проблемы.


Как спится программистам и тестировщикам марсохода за 400 миллионов долларов? Особенно если на 18 сол аппарат не вышел на связь.



Марк Адлер — американский разработчик программного обеспечения, который работает в сфере исследования космоса. Более всего он известен благодаря своей работе в области сжатия данных, являясь автором хеш-функции Adler-32, а так же как со-автор библиотеки для сжатия данных zlib и gzip. Он участвовал в разработке Info-ZIP и формата изображений Portable Network Graphics (PNG). Адлер также был ответственным за миссию марсохода «Спирит» в рамках программы «Mars Exploration Rover».

Расскажем вам о разработчике ПО марсохода и о том, как развивались события, когда пытались исправить ошибку софта на расстоянии 225 миллионов километров.

Information

Rating
Does not participate
Date of birth
Registered
Activity