• Как подружить Linq-to-Entities и Regex

      Entity Framework сильно облегчает разработку систем, использующих базы данных. Не будем сейчас спорить о достоинствах и недостатках этого фреймворка (коих, конечно, немало), а рассмотрим одну из практических задач, которую мне пришлось решать при разработке такой системы.

      Предположим, у нас есть база данных SQLite с довольно большим количеством записей, и эта база используется в нашем .NET приложении через System.Data.SQLite и Entity Framework 6.0. И вот приходит заказчик и сообщает, что ему нужна новая функция поиска записей в базе, да такая, чтобы можно было искать с использованием стандартных регулярных выражений.

      В этой статье я расскажу, как я добился того, что процессинг регулярного выражения, задаваемого в Linq-запросе, происходит на стороне сервера, что позволяет ускорить его обработку и не допустить бессмысленного раздувания памяти клиентского приложения из-за предварительного скачивания всех данных.
      Читать дальше →
      • +22
      • 10.4k
      • 6
    • Как создать круглую Progress Button

      • Translation
      • Tutorial
      Урок по реализации круглой кнопки загрузки (далее progress button) by Colin Garven. Будем использовать, описанную by Jake Archibald, технику анимации SVG линий для того, чтобы анимировать progress button и показать пользователю состояния «success and fail».

      image
      Читать дальше →
      • +8
      • 38.1k
      • 8
    • Должность — тимлид

        Тимлид (aka ведущий разработчик, team leader) — один из таких «специалистов», обязанности которого многие видят по-разному. Думаю, что складываются различные представления примерно так: поработал кто-то в команде под руководством тимлида, который хорошо справлялся с задачами проектирования системы, и считает теперь, что это именно то, что должен делать тимлид; в другой же команде тимлид плохо справлялся с планированием спринтов, а с другими обязанностями более или менее, и стали считать сотрудники, что планирование — не то, чем должен заниматься тимлид.

        От разработчиков, проработавших долгое время в рамках одной компании или даже одной команды чаще услышишь четкое мнение о том, кто такой тимлид и в чем заключаются его обязанности. Повидавшие же разные проекты разработчики и менеджеры постепенно приходят к пониманию, что тимлид может заниматься много чем, какая-то деятельность лучше вписывается в его роль, какая-то хуже, и уже не готовы давать точное определение роли тимлида.
        В чем же заключается должность тимлида?
      • Летающие панельки от нас улетели… О навигации и кнопке «Назад» в C#/XAML приложениях Windows 10


          Если вы захотите вынести настройки своего приложения UWP в «летающую панельку» Flyout, то я вас огорчу. Летающие панельки точно так же как и «волшебные Charm панельки» ушли в прошлое и теперь вместо них необходимо использовать другой способ отображения информации – навигацию. Про то, что и как читайте дальше
          Читать дальше →
          • +14
          • 18.4k
          • 7
        • Фурье-вычисления для сравнения изображений

            Традиционная техника “начального уровня”, сравнения текущего изображения с эталоном основывается на рассмотрении изображений как двумерных функций яркости (дискретных двумерных матриц интенсивности). При этом измеряется либо расстояние между изображениями, либо мера их близости.

            Как правило, для вычисления расстояний между изображениями используется формула, являющаяся суммой модулей или квадратов разностей интенсивности:
            d(X,Y) = SUM ( X[i,j] — Y[i,j] )^2

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

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

            Наличие большого числа библиотек, реализующих Фурье преобразований (во всевозможных вариантах быстрых версий), делает реализацию алгоритмов сравнения изображений не очень сложной задачей для программирования.
            Читать дальше →
          • Работа с базой данных SQLite с помощью обертки SQLitePCL


              SQLite это кроссплатформенный (Windows, iOS, Android, Python, Mono и др.) движок базы данных с открытым исходным кодом. Он поддерживает множественные таблицы, индексы, триггеры и представления.
              Поддерживаются ACID транзакции (Atomicity/Атомарность, Consistency/Согласованность, Isolation/Изолированность, Durability/Надежность).
              SQLitePCL – это библиотека Portable Class Library с открытым исходным кодом, доступным по адресу https://sqlitepcl.codeplex.com/, которая позволяет работать с базами SQLite единым образом и в .Net приложениях и в WP, Windows Store, UAP, а также Android/iOS (с помощью Xamarin). Другими словами, это обертка/wrapper библиотеки C, которая упрощает разработку и экономит время. Обертка довольно новая. Ранее для приложений .Net и Windows Store можно было использовать обертку sqlite-net.
              Читать дальше →
              • +9
              • 21.8k
              • 6
            • Забудьте о DAO, используйте Repository

                Недавно задумался о том, чем отличаются паттерны, позволяющие абстрагироваться от работы с хранилищем данных. Много раз поверхностно читал описания и различные реализации DAO и Repository, даже применял их в своих проектах, видимо, до конца не понимая концептуальных отличий. Решил разобраться, закопался в Google и нашел статью, которая для меня разъяснила все. Подумал, что неплохо было бы перевести ее на русский. Оригинал для англочитающих здесь. Остальным интересующимся добро пожаловать под кат.
                Читать дальше →
              • Преобразование девиации и его использование для определения системы координат по набору расстояний

                Введение


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

                Допустим, у нас имеется n > 2 точек и известны все расстояния между ними. Потенциальная мерность пространства равна n-1. Надо определить, пространству какой мерности принадлежат заданные точки, а также координаты точек в данном пространстве.
                Одним из косвенных способов определения мерности пространства на основании расстояний между точками является вычисление определителя Кэли-Менгера (КМ). Однако данный способ малопригоден для анализа пространств большой размерности.
                Читать дальше →
                • +15
                • 15k
                • 8
              • Топ-10 data mining-алгоритмов простым языком

                • Translation


                Примечание переводчика: Мы довольно часто пишем об алгоритмической торговле (вот, например, список литературы по этой теме и соответствующие аналитические материалы) и API для создания торговых роботов, сегодня же речь пойдет непосредственно об алгоритмах, которые можно использовать для анализа различных данных (в том числе на финансовом рынке). Материал является адаптированным переводом статьи американского раработчика и аналитика Рэя Ли.

                Сегодня я постараюсь объяснить простыми словами принципы работы 10 самых эффективных data mining-алгоритмов, которые описаны в этом докладе.

                Когда вы узнаете, что они собой представляют, как работают, что делают и где применяются, я надеюсь, что вы используете эту статью в качестве отправной точки для дальнейшего изучения принципов data mining.
                Читать дальше →
                • +43
                • 113k
                • 8
              • Инструкция по сборке 3D принтера Prism Uni(часть 1-механика)

                • Tutorial
                Для людей, которым интересен процесс сборки 3D принтера, имеющих время и желающих сэкономить, компания 3Dquality разместила на своем сайте исходные файлы корпусных и пластмассовых деталей, различные версии прошивки 3D принтера Prism Uni и прочую информацию, необходимую для самостоятельного изготовления 3D принтера. Все желающие могут самостоятельно переделать конструкцию 3D принтера под свои требования и исправить проблемы при необходимости. В данной статье отражен порядок сборки механической части 3D принтера.
                1-я сб. операция. Установка рельса с кареткой.
                Читать дальше →
              • Типичные взаимные блокировки в MS SQL и способы борьбы с ними

                  Чаще всего deadlock описывают примерно следующим образом:
                  Процесс 1 блокирует ресурс А.
                  Процесс 2 блокирует ресурс Б.
                  Процесс 1 пытается получить доступ к ресурсу Б.
                  Процесс 2 пытается получить доступ к ресурсу А.
                  В итоге один из процессов должен быть прерван, чтобы другой мог продолжить выполнение.
                  Но это простейший вариант взаимной блокировки, в реальности приходится сталкиваться с более сложными случаями. В этой статье мы расскажем с какими взаимными блокировками в MS SQL нам приходилось встречаться и как мы с ними боремся.


                  Читать дальше →
                • Telegram открыл платформу для ботов

                    Сервисами мгновенных сообщений пользуются не только люди, но и боты. Создатели IM-клиента Telegram учли этот факт и первыми среди конкурентов открыли API для ботов. Теперь сторонние разработчики могут спокойно создавать своих ботов и подключать их к Telegram.

                    Для ботоводов открыт специальный раздел со справочной информацией по созданию ботов.

                    Боты — обычные аккаунты Telegram, которыми управляют не люди, а программы, и у них часто есть элементы ИИ. Они могут делать что угодно — преподавать, играть, искать информацию, транслировать сообщения на широкую аудиторию, напоминать о событиях, подключаться к другим сервисам, даже передавать команды в Интернет вещей, рассказывают разработчики Telegram.
                    Читать дальше →
                  • 52 вопроса, которые вы должны задать на собеседовании

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



                      Задавать вопросы бывает сложно. Мы это знаем. Для того, чтобы упростить вам это задание, мы приводим список ключевых вопросов для интервью. Мы определённо не рекомендуем задавать их все. Пожалейте рекрутера!
                      Читать дальше →
                    • 7 тенденций веб-дизайна в ближайшем будущем

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

                      1. Жесты вместо кликов


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

                      image

                      В 2015 прокручивать проще, чем кликать. На мобильном можно делать прокрутку большим пальцем. А попасть точно в цель тяжелее – ровно наоборот по сравнению с десктопом.

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

                      image

                      Эта тенденция продолжится, поскольку мобильных устройств становится больше. На современных сайтах меньше мест для кликов, и больше прокрутки. Меньше ссылок, больше кнопок, больших кликабельных областей и высоких страниц, которые надо прокручивать.
                      Читать дальше →
                    • Деревянный кодовый замок



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

                        Кстати, никто не мешает изготовить всё из железных деталей по тому же принципу — получится настоящий кодовый замок, который можно использовать в деле!
                        Читать дальше →
                      • Примеры использования MongoDB в e-commerce (часть 2)

                        • Tutorial


                        [ Первая часть ]

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

                        Случаи использования разделены там на восемь статей, которые условно можно разделить на три группы. Мне показались самыми интересными для перевода три материала, связанные с e-commerce.

                        1. Операторы в aggregation framework
                        2. Каталог продуктов
                        3. Корзина и управления остатками на складе
                        4. Иерархия категорий

                        Читать дальше
                        • +10
                        • 22.2k
                        • 7
                      • Cистема образования в США: Младшая и Средняя школа — чему и как учат? Часть 1

                          image

                          Как то несколько лет назад зашел разговор с сыном шестиклассником о русских дворовых поговорках и задачках.
                          Для затравки я взял классическую дворовую считалку:

                          А И Б сидели на трубе
                          А упала, Б пропала
                          Кто остался на трубе?


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

                          A N' B were on a tree.
                          A fell down, so did B.
                          Who is left on the tree?


                          Результат несколько меня ошеломил после чего я решил делать эти записки о системе общеобразовательной (очень хорошей школы) в США.
                          Читать дальше →
                        • Фильтр Маджвика

                          • Translation

                          Предисловие от переводчика


                          Здесь представлен один из новейших методов расчёта ориентации в пространстве по показаниям датчиков акселерометра, гироскопа и компаса — фильтр Маджвика, который, по словам автора, даёт результат лучший, чем применение фильтра на основе метода Калмана в результатах и производительности. Автор — Себастьян Маджвик (его интернет-магазин). Метод описан в статье на английском. Данная работа защищена в Университете г. Бристоля Перевода я не нашёл. Переводчик из меня так себе, особенно таких сложных текстов. Но нам же интересно, что за метод?

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


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