Pull to refresh
Козлов Василий Иосифович@saintbyteread⁠-⁠only

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

Send message

14 вопросов об индексах в SQL Server, которые вы стеснялись задать

Reading time26 min
Reach and readers1.2M
Индексы — это первое, что необходимо хорошо понимать в работе SQL Server, но странным образом базовые вопросы не слишком часто задаются на форумах и получают не так уж много ответов.
Роб Шелдон отвечает на эти, вызывающие смущение в профессиональных кругах, вопросы об индексах в SQL Server: одни из них мы просто стесняемся задать, а прежде чем задать другие сначала подумаем дважды.


От переводчика
Данный пост является компиляцией двух статей Роба Шелдона:

Если вы пишите запросы на языке T-SQL, но плохо понимаете откуда берутся данные, то стоит прочитать данный перевод.
Если же вы захотите знать больше, то в конце перевода я даю тройку книг с которых следует двигаться дальше.

Перейти к чтению

Беспилотник на базе Raspberry Pi. Часть 1

Reading time2 min
Reach and readers116K
Привет, %хабраюзер%. Хочу поделиться историей о своем беспилотнике (БЛА) на малинке.

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

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

Диапазоны Landsat 8 в работе

Reading time6 min
Reach and readers86K
Перед вами изображение Лос-Анджелеса, снятое словно бы обычной цифровой камерой (если бы в ней было в 10 раз больше мегапикселей и она находилась в космосе). Это фотография двухнедельной давности, снятая со спутника Landsat 8, который был запущен NASA в конце зимы. Landsat 8 уже стал одним из наших любимых источников данных, и не только наших: на конференции State of the map на прошлых выходных он проскакивал в разговорах людей, занимающихся самыми разными вещами. Помимо добавления свежих полноцветных фотографий с Landsat 8 в MapBox Satellite мы также используем мультиспектральные данные, которые предоставляет спутник. Данные из невидимых диапазонов спектра позволяют нам анализировать множество разных аспектов, начиная с типов поверхности, заканчивая ростом сельскохозяйственных культур и природными катастрофами по всему миру, иногда в течении нескольких часов. Этот пост описывает некоторые из возможностей Landsat 8 и позволяет взглянуть на мир через его объектив.

image

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

Как я писал клиент PeerJS(WebRTC) под Android

Reading time13 min
Reach and readers14K
Недавно пришлось писать клиентское приложение на Android для сервера, который организовал видеосвязь между пользователями с помощью библиотеки PeerJS. Эта библиотека является надстройкой над WebRTC, ну или что-то типо того.

Подошел к делу с энтузиазмом, так как до этого ничего такого сложного не делал.
Естественно, первым шагом был поиск библиотек, проектов, которые реализуют такой функционал.
Нашел sample WebRTC, но потом обнаружил проект, который попроще все это реализовывал.
Читать дальше →

Почему вам НЕ стоит использовать AngularJs

Reading time12 min
Reach and readers249K
Много времени прошло с момента появления AngularJs (в масштабах веб-технологий конечно). Сейчас в интернетах есть огромное количество постов восхваляющих этот фреймворк до небес, что это манна небесная не иначе, а критики не так уж и много как он того заслуживает. Но такие статьи уже потихоньку начинают появляться, и меня это радует, надеюсь индустрия переболеет ангуляром так же, как переболела MooTools, Prototype, %какой-нибудь новый язык под JVM%, %другая-супер-революционная-технология%. Не знаю почему, но в IT-области такие революционные технологии, которые поднимают шум, а потом пропадают, появляются довольно часто. Хороший разработчик должен уметь отличать очередную модную технологию, от работающего инструмента. И для этого очень важно критически смотреть на вещи. Моя статья — это компиляция самых весомых выводов из других статей, и моих личных умозаключений. Ангуляр создает хороший вау-эффект, когда видишь его впервые: «ух ты, я написал ng-repeat, и реализовал эту логику одними тегами и все само обновляется!», но как только приходится реализовывать реальные приложения, а не очередной TODO-лист, то все становиться очень печально. Сразу хочу сказать, что фреймворк я знаю хорошо, даже больше чем мне хотелось бы его знать, я программировал на нем в течении 2 лет. И для следующего проекта я его точно не выберу, и это хорошо, все мы учимся на ошибках. Так что же не так с ангуляром? Тут нет однозначного ответа, слишком много разных недостатков, которые создают такой облик фреймворку. Если одним словом – непродуманная архитектура. Под катом я привожу конкретику, так что устраивайтесь поудобнее. ДА НАЧНЕТСЯ ХОЛЛИ ВАР!
Читать дальше →

SuperDuino: миниатюрная плата с цветным дисплеем и акселерометром, совместимая с Arduino

Reading time2 min
Reach and readers24K


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

Одним из интересных проектов последнего времени является SuperDuino. Это миниатюрная плата (действительно миниатюрная), которая поставляется с цветным дисплеем и акселерометром. Недавно разработчики запустили кампанию на Kickstarter, по сбору средств на массовый выпуск SuperDuino, и к моменту завершения кампании было собрано в 12 раз больше денег, чем планировалось.

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

Несколько интересных особенностей MySQL

Reading time8 min
Reach and readers64K
В не очень далеком прошлом мне пришлось покопаться немного в исходном коде MySQL, и разобраться в некоторых аспектах его работы. В ходе работы лопаткой, и эксперимeнтов, я наткнулся на несколько очень интересных особенностей, часть из которых просто забавна, а в случае некоторых бывает очень интересно понять, чем руководствовался программист, который принимал решение сделать именно так.

Начнем с такого интересного типа, как ENUM.

mysql> CREATE TABLE enums(a ENUM('c', 'a', 'b'), b INT, KEY(a));
Query OK, 0 rows affected (0.36 sec)

mysql> INSERT INTO enums VALUES('a', 1), ('b', 1), ('c', 1);
Query OK, 3 rows affected (0.05 sec)
Records: 3  Duplicates: 0  Warnings: 0


Итак, у нас есть таблица, в ней есть два столбца. У первого, a, тип ENUM, у второго, b, INT. В таблице три строки, у всех трех значение b равно 1. Интересно, чему равны минимальный и максимальный элементы в столбце a?

mysql> SELECT MIN(a), MAX(a) FROM enums;
+--------+--------+
| MIN(a) | MAX(a) |
+--------+--------+
| c      | b      |
+--------+--------+
1 row in set (0.00 sec)


Кажется странным, было бы разумно, если бы самым маленьким был 'a', а самым большим — 'c'.
А что если выбрать минимум и максимум только среди тех строк, где b = 1? То есть, среди всех строк?

mysql> SELECT MIN(a), MAX(a) FROM enums WHERE b = 1;
+--------+--------+
| MIN(a) | MAX(a) |
+--------+--------+
| a      | c      |
+--------+--------+
1 row in set (0.00 sec)


Вот так мы заставили MySQL поменять свое мнение о том, как сравнивать поля в ENUM, просто добавив предикат.
Разгадка такого поведения заключается в том, что в первом случае MySQL использует индекс, а во втором нет. Это, конечно, не объясняет, почему MySQL сравнивает ENUMы по разному для сортировки в индексе, и при обычном сравнении.

Второй пример проще и лаконичнее:

mysql> (SELECT * FROM moo LIMIT 1) LIMIT 2;
+------+
| a    |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)


Когда я показал этот запрос своему коллеге, который занимается разработкой парсера SQL, его вопрос был не «почему этот запрос возвращает две строки», а «как надо написать SQL парсер так, чтобы такой запрос был валидным, без того, чтобы написать правило, специально разрешающее такой запрос».

Интересно, что далеко не любой SELECT в скобках сработает, в частности, UNION в скобках — это синтаксическая ошибка:

mysql> (SELECT * FROM moo UNION ALL SELECT * FROM hru) LIMIT 2;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION ALL SELECT * FROM hru) LIMIT 2' at line 1


Еще несколько интересных примеров под катом
Читать дальше →

W for Wikipedia

Reading time11 min
Reach and readers14K
Что такое «BigData»? Это те данные, которые нельзя просто так переварить. Или нельзя просто так приготовить. Или это вы думаете что нельзя.
Особо сильный «перекос», в этом понимании бигдаты спрятался в web-картографии, в картах на различных сайтах.
И так уж получилось — на протяжении нескольких лет я катался по различным конференциям, и рассказывал про организацию передачи данных с сервера на Карту. Иногда меня спрашивали — «а где же взять эти ваши много данных».
Это не правильные вопросы, правильные вопросы это:
— как данные хранить
— какие данные, когда и почему передавать на клиент
— что такое серверная кластеризация, как она выглядит и почему она нужна
— что с данными делать
— и зачем это все нужно %username%

А насчет откуда взять данные… Есть один такой детский стишок

Весь покрытый метками
Абсолютно весь
Остров Википедии
В океане есть


И на этом острове растет примерно десять миллионов геотегированных статей, которыми мы и воспользуемся.
Но с флорой и фауной там не все так просто — статьи растут на разных языках, в разных местах, и их на само деле много…
Поэтому мы, как настоящие герои, немного усложним задачу и добавим немного агрегатных функций, Левенштайна, Мorton кодов, esosedi и немного здравого смысла.

Поехали!

Что такое утечки памяти в android, как проверить программу на их отсутствие и как предотвратить их появление

Reading time14 min
Reach and readers91K
В этой статье для начинающих android-разработчиков я постараюсь рассказать о том, что такое «утечки памяти» в android, почему о них стоит думать на современных устройствах, выделяющих по 192МБ на приложение, как быстро найти и устранить эти утечки в малознакомом приложении и на что нужно обращать особое внимание при разработке любого приложения.


Конечная цель этой статьи — ответ на простой вопрос:
Куда нажать, чтобы узнать, какую строчку в приложении поправить?

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

Делаем собственную индикацию о входящем звонке

Reading time4 min
Reach and readers49K
После последнего поста о нашем Android-приложении у некоторых читателей статьи возник вопрос, как именно показать собственную информационную плашку во время звонка? Ну что же, сегодня мы ответим на этот вопрос.
Пст, хотите немного java-кода?

Транслируем звук по сети с помощью Java

Reading time5 min
Reach and readers36K
Стало мне интересно поэкспериментировать с передачей звука по сети.
Выбрал для этого технологию Java.
В итоге написал три компоненты — передатчик для Java SE, приемник для Java SE и приемник для Android.

В Java SE для работы со звуком использовались классы из пакета javax.sound.sampled, в Android — классы android.media.AudioFormat, android.media.AudioManager и android.media.AudioTrack.
Для работы с сетью — стандартные Socket и ServerSocket.

С помощью этих компонент удалось успешно провести сеанс голосовой связи между Дальним Востоком России и Нидерландами.

И еще одно возможное применение — если установить виртуальную звуковую карту, например, Virtual Audio Cable, можно транслировать музыку на другие устройства, и, таким образом, слушать музыку одновременно в нескольких комнатах квартиры (при наличии соответствующего количества девайсов).

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

100 приемов по управлению временем, вниманием и энергией

Reading time15 min
Reach and readers299K
Примечание переводчика: Перевод первой статьи из блога «A Year of Productivity» был благосклонно встречен хабра-сообществом, и меня попросили перевести еще несколько статей из этого блога. Приведенная ниже статья — самая большая и самая близкая к практике, её перевод затянулся у меня на несколько месяцев. Как и прошлый раз рекомендую читать комфортными порциями, записывая (или копируя куда-нибудь) советы, которые хочется попробовать применить на практике.

«Хаки» времени


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

Управление временем – хороший источник вашей продуктивности, но все три ингредиента абсолютно важны, если вы хотите быть более продуктивными на ежедневной основе. Именно поэтому в статье вы найдете набор приемов из всех трех областей.

Для начала вот несколько моих любимых приемов по тому как:
-  получить больше времени;
-  тратить время на правильные вещи.
Читать дальше →

Рецепты Django. Part 1 — AJAX формы

Reading time3 min
Reach and readers59K
Здравствуй, хабраюзер!

Возможно, у меня уже начался кризис среднего возраста, но летом я начал работу над крупным Open Source проектом. Впрочем, о нём немного позже, когда за код не будет стыдно. Итак, хочу поделиться рядом сниппетов, которые мне приходилось писать, чтобы соответсовать концепции DRYDon't Repeat Youself. Посему собираюсь написать несколько статей.
Кстати, можете обратить внимание на предыдущую мою статью.

Начну с реализации AJAX.


Сразу хочу оговориться — не так давно я нашёл на сайте джанги пример для реализации ajax формы. Как выяснилось, я сделал практически то же самое, однако я это сделал сам и я доволен=) Ниже я приведу свой пример и разберу его.
image

Прошу под кат.
Отследить полёт мысли

В Sypex Geo добавлена привязка к API ВКонтакте

Reading time3 min
Reach and readers8.3K
В Sypex Geo по просьбам трудящихся добавлена привязка к ID городов, регионов и стран, которые используются в API ВКонтакте.

Что такое и для чего нужен Sypex Geo


Sypex Geo одно из решений в области геолокации — определения географического положения (страны, города, региона) посетителя на основе IP-адреса. Используются собственный открытый формат бинарной базы данных, также доступен веб-сервис REST API, позволяющий всегда использовать самые свежие базы данных. Sypex Geo использует собственные базы данных, которые регулярно обновляются, так как местонахождение IP-адресов меняется (2 раза в месяц обновляются бесплатные базы данных, 4 раза в месяц коммерческие базы данных).

Примеры использования геолокации


  • Показывать посетителю контакты филиала из региона в котором находится посетитель.
  • В зависимости от города или региона посетителя интернет-магазин может показывать специальные предложения для данного региона
  • Фирма может устанавливать разные цены на товары и услуги, снижая цены для тех населенных пунктов, где сильны позиции конкурентов.
  • Проведение географического таргетинга при интернет-рекламе (контекстной, баннерной и т.д.).
  • Для посетителей из разных стран цены на товары и услуги могут быть указаны в разной валюте.
  • Посетители из разных стран могут быть перенаправлены на национальные зеркала основного сайта.
  • Проведение маркетинговых исследований.
Читать дальше →

Сравнение геолокационных бинарных баз и их драйверов: GeoIP, Sypex Geo, TabGeo

Reading time2 min
Reach and readers26K
Особенностью данного тестирования является некая приближенность к реальным условиям, когда есть необходимость определять страну одного посетителя на лету за один запуск скрипта, то есть: один запуск скрипта — один ip-адрес. В подобном тестировании от zapimir использовался другой принцип, который, как мне кажется, имеет мало общего с реальной необходимостью: один запуск скрипта — определение нескольких тысяч ip-адресов в цикле.
Читать дальше →

Как перестать беспокоиться и начать снимать панорамы

Reading time3 min
Reach and readers60K
image

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

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

Overclock мозга или Внутренняя виртуализация сознания

Reading time29 min
Reach and readers458K


Все помнят этот фильм? Какого черта он делает на Хабре? И вообще что тут делает подобный пост?
Наверное потому, что я считаю главным звеном в IT все таки человека, а точнее его мозги. Я попробую рассказать еще об одной возможности использовать свой мозг чуточку эффективнее. Одна из слабо задокументированных возможностей, которую мы используем каждый день, но не всегда даже об этом вспоминаем. Все описанное проверялось на мне. Если что-то я не пробовал, но рассказать об этом важно буду отмечать особо. Никаких наркотиков, аппаратов и издевательств над собой, только общедоступные легкие методики (короче, лег проспался и вперед, не вставая даже с кровати).
И да… Это до жути реалистично, на столько, что попробовав, вы не сможете не рассказать об этом.

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

Практические советы и хитрости при работе с дронами DJI и их автопилотными системами

Reading time6 min
Reach and readers49K
Приветствую всех хабровчан, и тех, кому интересна тема квадрокоптеров в частности! Так уж сложилось, что последний год я активно пользуюсь продукцией DJI, и прочитав несколько статей понял, что информации, помимо изложенной в мануале, не так уж и много. Особенно грустно читать статьи, в которых говорится как кто-то сломал\потерял свой квадрик, допустив элементарную ошибку. В связи с этим я решил написать небольшой материал, в котором опишу собственные наблюдения и постараюсь дать полезные советы начинающим DJIводам.

Дисклаймер: некоторые моменты, описанные в этом материале, могут многим показаться примитивными, однако, прочитав несколько статей на хабре о поюзе DJI'ных устройств, я сделал вывод, что ликбез не помешает. Все выводы сделаны лично мной и основаны на личном опыте использования дронов от DJI. Советы и замечания будут выделяться по ходу повествования, и для наглядности выделяться подчеркиванием. Интересно? Тогда прошу под кат.
Читать дальше →

Как начать летать самостоятельно, хоть на чем-то, с мотором

Reading time10 min
Reach and readers245K
Вторая статья для желающих начать летать самостоятельно.
Сегодня мы будем рассматривать варианты сжигания дохлых мамонтов (бензина) для приобретения кинетической энергии.

Парящий полет (первая статья)
  • Параплан
  • Дельтаплан
  • Планер

Моторный полет (под катом)
  • Самолет
  • Мотодельтаплан (дельталет)
  • Паратрайк (аэрошют)
  • Парамотор (карлсон, мотопараплан)
  • Мотопланер



Первый раз за штурвал самолета я сел в 18 лет. До первого самостоятельного вылета налетал 25 часов и совершил около 100 взлетов и посадок. Сейчас мой суммарный налет на всем, что летает — порядка 400 часов. Это жутко мало, чтобы считать себя опытным пилотом, но достаточно, чтобы подсесть на “летную иглу”. Приглашаю и вас стать авиазависимыми.
Запустить двигатель

Вышло обновление, повышающее общую безопасность Windows 7

Reading time1 min
Reach and readers247K
Доброго дня,

спешу сообщить, что Microsoft выпустило новое обновление, KB2872339.
Особенность его в том, что оно негативно повлияет на пользователей нелицензионной Windows 7
Читать дальше →

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity