• Практическая оптимизация MySQL: измерять, чтобы ускорять



      Петр Зайцев (Percona)


      Сегодня мы поговорим о производительности.

      Мы посмотрим на то, как подойти правильно к оптимизации MySQL, а также посмотрим на некоторые практические подходы к этому делу. Почему я считаю, что это важно? Дело в том, что когда у вас есть специфическая проблема, вы хотите, например, спросить: «А какой же мне установить размер кэша в MySQL?». Такой вопрос всегда можно ввести в Google или Yandex, и получить на него разумный ответ. Но как получить ответ об общем, о схеме анализа и оптимизации MySQL? Это куда более сложно.
      Читать дальше →
      • +26
      • 26,3k
      • 2
    • Как новичку собрать квадрокоптер ZMR250 / QAV250 с Aliexpress (1 часть)

      Пролог


      Сейчас в интернете можно найти несколько полезных туториалов (все ссылки в конце статьи) на тему того, как самому собрать дрон на 250 раме. Но, собирая свой первый квадрик по этим статьям, я столкнулся с проблемами, которые не были никак освещены. А именно: я не нашел полный лист деталей и дополнительного оборудования, который мне нужен, цену полной сборки, а также некоторые практические и теоретические вопросы. Именно поэтому было решено сделать данную статью в виде обобщения моего личного опыта и опыта других людей, дабы помочь новичкам (таким как я) как можно продуктивнее построить свой первый дрон.

      1 часть будет посвящена подбору деталей, оборудования, сборке и подключению всех узлов коптера. Программная сторона будет рассмотрена во 2 части.

      Сразу отчет о том, что у меня получилось:


      На видео заметно, что во время полета у дрона пропали ножки, но об этом позже

      Список часто задаваемых вопросов:

      В: Не проще ли купить готовый квадрик и летать?
      О: Проще, только если вы не собираетесь продолжать улучшать свой дрон и строить другие. То есть хотите просто полетать, а не ломать себе голову и тратить дорогое время. Магазинный дрон в любом случае легче в освоении и проще в эксплуатации. В качестве альтернативы могу предложить MJX Bugs 3. Обзор на него здесь. Цена от ~120$.

      В: Нужно ли паять?
      О: Да, нужно!

      В: Собрать квадрик самому дешевле, чем купить в магазине?
      О: Нет! Считаю это заблуждением. Если вы новичок, а раз вы читаете эту статью, скорее всего так оно и есть, то кроме деталей для квадрокоптера вам понадобится еще уйма всего. Прилагаю список ниже.
      Читать дальше →
    • UNIX-подобные системы содержат кучу костылей. Крах «философии UNIX»

        UPD от 2017-03-04: кто-то выполнил английский перевод. Обсуждение на Hacker News.

        В первой части статьи перечислю кучу костылей UNIX, и вообще разных недостатков. Во второй — про «философию UNIX». Статья написана наскоро, «полировать» дальше не хочу, скажите спасибо, что написал. Поэтому многие факты привожу без ссылок.

        Костыли в UNIX начали возникать ещё с момента появления UNIX, а это было ещё раньше появления не только Windows, но даже вроде бы Microsoft DOS (вроде бы, мне лень проверять, проверяйте сами). Если лень читать, хотя бы просмотрите все пункты, что-нибудь интересное найдёте. Это далеко не полный список, это просто те косяки, который я захотел упомянуть.
        Читать дальше →
      • Хакеры опубликовали инструменты Cellebrite для взлома iOS


          UFED Touch Ultimate: комплексное решение для мобильной криминалистики

          Около месяца назад группа неизвестных хакеров объявила о взломе израильской компании Cellebrite, которая продаёт правоохранительным органам по всему миру программно-аппаратный комплекс Universal Forensic Extraction Device (UFED) для взлома и копирования данных с любых мобильных телефонов. Аналогичные инструменты для криминалистической экспертизы делает российская компания «Элкомсофт». Именно Cellebrite, по слухам, помогла ФБР взломать телефон iPhone 5C под iOS 9, принадлежащий террористу из Сан-Бернардино, который стал камнем преткновения в громком конфликте между Apple и ФБР.
          Читать дальше →
        • Настройка FullMesh сети на Mikrotik через EoIP туннели

          Начальная ситуация такая: есть 8 офисов в разных частях страны, надо их свести в единую сеть так, чтобы доступность каждого офиса была максимальной при любых катаклизмах. В качестве роутеров во всех офисах стоят Mikrotik. На основной площадке — CCR CCR1036-12G, на остальных — 1100 AHx2

          Во избежание проблем с интернетом было протянуто по 2 канала от разных провайдеров, питание тоже зарезервировали и пришли к вопросу “а какую сеть-то строить?”. Как видно из названия статьи, в итоге решили строить FullMesh.

          Эта схема полностью удовлетворяет требованиям руководства — при выходе из строя любого интернет-канала или даже любого офиса сеть остается связной. Остался только вопрос с маршрутизацией. Из вариантов был всеобщий бридж с RSTP, OSPF и статические маршруты. Естественно я в итоге выбрал OSPF — меньше проблем, чем на статике и меньше нагрузки для маршрутизаторов, чем при RSTP.

          Сама настройка и готовый конфиг под катом.
          Читать дальше →
        • Гейзенбаг, или как Луна портит код

            Луна убывает, такое бывает… ©Земфира

            Гейзенбагом называют ту разновидность программных глюков, которая возникает не пойми откуда, не поддается отладке и обнаружению. Словом, ведет себя как тот самый Неуловимый Джо или кроковский кот из недавнего поста. Мне по работе приходилось сталкиваться с такими и про себя я называл это эффектом квантовой механики до тех пор, пока не узнал, что близкое по смыслу название уже давно придумали. Бывает, посылаешь заказчику отладочный бинарник, который всего лишь записывает в журнал больше событий вокруг предполагаемого источника проблемы и после этого проблема исчезает!

            heisenbug /hi:'zen-buhg/ n.
            A bug that disappears or alters its behavior when one attempts to probe or isolate it.




            Предлагаю вашему вниманию свою небольшую познавательную коллекцию квантовых эффектов в программировании.


            Эпизод I, OpenOffice не печатает во вторник


            Историю этого замечательного багрепорта можно почитать на Ubuntu Launchpad, а я вкратце изложу суть для тех, кому не сподручно читать по ссылке. В системной утилите file был баг из-за которого, файлы содержащие в 4-м байте Tue определялись как Erlang JAM. Дефект присутствовал в версиях file 4.21 и 4.24 и был вызван ошибкой в magic файле.

            Читать дальше →
          • Пишите меньше кода, блин

            • Перевод

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


            А еще я ленивый — мед, да еще и ложкой (я решил использовать в статье аналогии с едой).


            Но, оказывается, что единственный гарантированный способ повысить производительность в вебе — это писать меньше кода. Минифицировать? Окей. Сжимать? Ну, да. Кэшировать? Звучит неплохо. Вообще отказываться кодить или использовать чужой код изначально? А вот теперь — в яблочко! Что есть на входе — должно выйти на выходе в той или иной форме, независимо от того, смог ли ваш сборщик растворить и переварить это своими желудочными соками (я, пожалуй, откажусь от пищевых аналогий).


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


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


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

            Читать дальше →
          • Вечер 31 декабря



              Админ: А давайте прошивки роутеров обновим.
              CIO: Пятница 31 декабря, вечер. Конечно, давай, что может случиться?
              Админ: Вот видишь, всё нормально работает. А ты пяяятница, вееечер…
              CIO: Иди сюда.
              Админ: Чего?
              CIO: Иди-иди. Читай.
              Админ: Коннекшн фаулт. Ну, отвалилось чего-то. Это чья консоль?
              CIO: Это – продакшн-сервера.
              Читать дальше →
            • Нейронные сети на Javascript

                image
                Идея для написания этой статьи возникла прошлым летом, когда я слушал доклад на конференции BigData по нейронным сетям. Лектор «посыпал» слушателей непривычными словечками «нейрон», «обучающая выборка», «тренировать модель»… «Ничего не понял — пора в менеджеры», — подумал я. Но недавно тема нейронных сетей все же коснулась моей работы и я решил на простом примере показать, как использовать этот инструмент на языке JavaScript.

                Мы создадим нейронную сеть, с помощью которой будем распознавать ручное написание цифры от 0 до 9. Рабочий пример займет несколько строк. Код будет понятен даже тем программистам, которые не имели дело с нейронными сетями ранее. Как это все работает, можно будет посмотреть прямо в браузере.
                Читать дальше →
              • Разработка игр на Rust. Обзор экосистемы


                  Здравствуйте! Я занимаюсь разработкой игры на Rust и хочу рассказать об этом.


                  Моя первая статья будет полезна тем, кто хочет начать делать игру на Rust, но не уверен, какие из пакетов (крейтов) стоит использовать и что вообще происходит в экосистеме Rust для игрового разработчика.

                  Читать дальше →
                • Язык описания шаблонов Snakeskin

                    Snakeskin

                    This is Frank, a snake-cowboy who loves templates.




                    Привет! Хочу рассказать о своей разработке — языке программирования текстовых шаблонов «Snakeskin». Проекту больше трех лет, всеми детскими болезнями, я полагаю, он благополучно переболел (и излечился), поэтому хочу поделиться результатом.


                    Демка


                    Основной репозиторий


                    Документация


                    Плагины для Gulp, Grunt, Webpack и прочее


                    Gitter — здесь можно задать любой интересующий вопрос

                    Читать дальше →
                  • Правильная обработка ошибок в JavaScript

                    • Перевод
                    Обработка ошибок в JavaScript — дело рискованное. Если вы верите в закон Мёрфи, то прекрасно знаете: если что-то может пойти не так, именно это и случится! В этой статье мы рассмотрим подводные камни и правильные подходы в сфере обработки ошибок в JS. А напоследок поговорим об асинхронном коде и Ajax.

                    Я считаю, что событийная парадигма JS добавляет языку определённое богатство. Мне нравится представлять браузер в виде машины, управляемой событиями, в том числе и ошибками. По сути, ошибка — это невозникновение какого-то события, хотя кто-то с этим и не согласится. Если такое утверждение кажется вам странным, то пристегните ремни, эта поездка будет для вас необычной.

                    Все примеры будут рассмотрены применительно к клиентскому JavaScript. В основу повествования легли идеи, озвученные в статье «Исключительная обработка событий в JavaScript». Название можно перефразировать так: «При возникновении исключения JS проверяет наличие обработчика в стеке вызовов». Если вы незнакомы с базовыми понятиями, то рекомендую сначала прочитать ту статью. Здесь же мы будем рассматривать вопрос глубже, не ограничиваясь простыми потребностями в обработке исключений. Так что когда в следующий раз вам опять попадётся блок try...catch, то вы уже подойдёте к нему с оглядкой.
                    Читать дальше →
                  • Test lab v.9 — обратный отсчет



                      20 мая 2016 г. будет запущена лаборатория «Test lab v.9» — открытая площадка для проверки и закрепления навыков тестирования на проникновение. Как и предыдущие версии, новая лаборатория будет представлять собой корпоративную сеть с заложенными уязвимостями и ошибками конфигураций. Принять участие сможет любой желающий.

                      Лаборатории «Test lab» позволяют специалистам в области информационной безопасности проверить навыки тестирования на проникновение информационных систем и подготовиться к отражению кибер-угроз на свои системы. Концепция заложенных актуальных уязвимостей способствует осознанию слабых мест и улучшению защитных средств, а также адекватной оценке собственных навыков пентеста легально, не нарушая законодательство, в среде, максимально приближенной к реальным.
                      Читать дальше →
                      • +10
                      • 7,6k
                      • 2
                    • Коллбэки в JavaScript на примере миньонов

                      • Перевод
                      • Tutorial


                      Коллбэки. Асинхронные. Неблокирующие. Давайте говорить начистоту: все эти JS-концепции заставляют вас рвать волосы на голове каждый раз, когда ваш код СНОВА не работает. Меня тоже посещали подобные чувства. Мне нужна была какая-то простая аналогия, которая помогла бы мне легче понять эту абстрактную идею. Конечно, в сети есть много хороших учебных материалов (например, этот, или этот). Но все они обычно сразу начинаются с довольно сложных вещей.

                      Мне нужно было что-то более близкое, понятное.

                      Мне нужны были миньоны.
                      Читать дальше →
                    • Доллар



                        Последние два года вся страна пристально следит за курсом доллара. Новостные выпуски пестрят громкими репортажами о долларе. Все говорят о долларе. А что, если мы на фоне горячего интереса, разберемся с тем, как формируется цена доллара, посмотрим кто и как торгует валютой?! Все результаты, представленные в данной статье, получены на основе официальных торговых данных full orders log (полный журнал заявок), купленные на Московской Бирже. Мы покажем реальные торги изнутри. Параллельно, познакомимся со стандартными методами анализа рынка. Такая аналитика стоит не малых денег и её могут позволить ограниченное число «компаний».

                        Инструментом для анализа данных будет Java. Анализируемый биржевой инструмент — USDRUB_TOM. Наша задача вытащить любопытные детали из имеющихся данных и попробовать сделать определенные выводы.
                        Читать дальше →
                      • Лучшие бесплатные коллекции векторных иконок

                          Привет, Хабр! Сегодня я хочу представить вам огромную коллекцию из 51 набора бесплатных векторных иконок. Да, есть потрясающие ресурсы Flaticon или Iconfinder, но бывают случаи, когда необходима именно группа иконок в едином стилистическом оформлении. Определиться с выбором, вам поможет эта подборка. Я старался собрать не как можно больше, а действительно самое лучшее.

                          Среди веб-разработчиков существует много споров о том, что лучше: иконочный шрифт или SVG спрайты? Четкого ответа на этот вопрос нет. Каждый выбирает свое. Данные наборы иконок вас неограничиывают в выборе, поскольку представлены в различных форматах: @font-face, SVG, EPS, AI, PSD, Sketch.

                          В целом данная подборка содержит более 10 000 иконок, охватывающих множество категорий: интерфейсы, технологии, наука, спорт, маркетинг, среда, транспорт и тд. Полые, заполненные, цветные, во Flat, Material, Elegant, Cartoon, Hand drawing стилях.

                          Responsive Icons (100 иконок, PSD, AI, EPS, SVG)


                          Responsive Icons

                          Читать дальше →
                        • Kolab Groupware (Часть 1 — Обзор)



                            Привет, Хабр! Хочу рассказать тебе о довольно интересной и функциональной замене MS Exchange, полностью свободной и к тому же с красивой web-мордой. Разговор пойдет про Kolab — свободный почтовый сервер с поддержкой совместной работы, календарей, списков дел, WebDAV, ActiveSync синхронизацией и прочими плюшками, который можно использовать как для работы, так и для дома.

                            Осторожно, в посте много картинок...
                            Уже хочу!
                          • Rust на примерах. Часть 1

                            • Перевод
                            • Tutorial
                            Этот цикл статей является вольным переводом книги «Rust by Example», которую пишет Хорхе Апарисио на Github.

                            На момент написания этого топика автор книги создал 49 глав, в первой части будет перевод первых пяти. Убедитесь, что Rust установлен и под рукой имеется документация.

                            Давайте начинать!
                            Читать дальше →
                            • +39
                            • 23,5k
                            • 8
                          • Руководство по сетевой загрузке предустановочной среды Windows (WinPE)

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

                            Последовательность сетевой загрузки WinPE, начиная с версии 2.0, следующая:
                            1. загружается сетевое ядро pxeboot.com;
                            2. сетевое ядро загружает стандартный диспетчер загрузки bootmgr.exe, далее сетевая загрузка практически не отличается от загрузки с других носителей;
                            3. диспетчер загрузки читает файл BCD (boot configuration data), где прописана конфигурационная информация (расположение загрузочных файлов), загружает необходимый шрифт (wgl4_boot.ttf) и драйвер виртуального диска boot.sdi, потом загружается образ WinPE;
                            4. диспетчер загрузки передает управление программе, указанной в параметре path BCD-файла.

                            Читать дальше →
                          • 50+ лучших дополнений к Bootstrap



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

                              Для статьи я подобрал наиболее полезные дополнения «на все случаи жизни».
                              Читать дальше →