• Точное определение региона по GPS координатам

      При разработке одного приложения возникла проблема разграничения доступа для регионов.

      Встала проблема определения принадлежности объекта к какому-либо региону России по его GPS координатам

      Первое, что мы начали использовать — это API Google,
      после того как прописали алиасы к возвращаемым строкам и оплаты доступа (чтобы убрать лимит на запросы) все заработало.
      И все было нормально пока гугл не сменил выдачу, например было раньше: Moskovskaya oblast', стало Moscow oblast'
      Тут то и было решено не надеяться на гугл, а определять регион своими силами.


      как мы решили эту задачу
    • Нейронная сеть Хопфилда на пальцах

      • Tutorial

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


      Читать дальше →
    • Различные опыты с приемом и передачей радиосигналов в ПЛИС


        Поскольку сегодня, 7-го мая, мы отмечаем День Радио, то позвольте представить вашему вниманию серию проектов для FPGA плат, которые были выполнены мной в разное время, но так или иначе связаны с радио. На этом видео выше есть демонстрация маленького чуда — сеанс радиосвязи на столе. Две одинаковые платы с ПЛИС служат одна передатчиком, а другая радиоприемником.
        Далее расскажу, как я это сделал.
        Читать дальше →
        • +19
        • 14.9k
        • 6
      • Все уроки по ардуино

          Однажды появилась необходимость собрать все уроки, обучающие материалы (tutorials) с habrahabr и geektimes в одном месте и немного их систематизировать. В этом сборнике обучаек представлены более 100 статей на тему ардуино с пометкой «tutorial», либо содержащие несложные для новичков проекты на ардуино, а также немного видеоуроков по смежным темам. Статьи разделены на 10 тематик по сферам применения собранных устройств. Также хочется напомнить, что весь обучающий материал, опубликованный на habrahabr и geektimes является интерактивным: в любой момент можно задать вопрос автору в комментариях к статье. Как правило авторы на них отвечают. Этот сборник будет дополняться новыми обучайками (tutorials) по мере их публикации.

          Читать дальше →
        • Построение Android приложений шаг за шагом, часть вторая



            В первой части статьи мы разработали приложение для работы с github, состоящее из двух экранов, разделенное по слоям с применением паттерна MVP. Мы использовали RxJava для упрощения взаимодействия с сервером и две модели данных для разных слоев. Во второй части мы внедрим Dagger 2, напишем unit тесты, посмотрим на MockWebServer, JaCoCo и Robolectric.
            Читать дальше →
          • Все способы вертикального выравнивания в CSS

              image

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

              Да, для вертикального выравнивания в CSS есть специальное свойство vertical-align с множеством значений. Однако на практике оно работает совсем не так, как ожидается. Давайте попробуем в этом разобраться.

              Читать дальше →
            • Основы Linux от основателя Gentoo. Часть 2 (4/5): Обработка текста и перенаправления

              • Translation
              В этом отрывке вы узнаете про множество интересных и полезных команд по работе с текстовыми данными в Linux. Также даны основы работы с потоками ввода-вывода в bash.



              Навигация по основам Linux от основателя Gentoo:

              Часть I
              1. BASH: основы навигации (вступление)
              2. Управление файлами и директориями
              3. Ссылки, а также удаление файлов и директорий
              4. Glob-подстановки (итоги и ссылки)

              Часть II
              1. Регулярные выражения (вступление)
              2. Назначения папок, поиск файлов
              3. Управление процессами
              4. Обработка текста и перенаправления
              5. Модули ядра (итоги и ссылки)


              Читать дальше →
            • Исследуем результат работы php-транслятора

              Здравствуйте. Думаю, что большинство веб-программистов знает, как работает php-интерпретатор.

              Для тех, кто не знает:
              Вначале, написанный нами код разбирается лексическим анализатором. Далее, полученные лексемы, передаются в синтаксический анализатор. Если синтаксический анализатор дал добро, то лексемы передаются транслятору, а он, в свою очередь, генерирует так называемые opcodes (operation codes). И только после этого, в дело вступает виртуальная машина PHP (та самая Zend Engine) которая и выполняет наш алгоритм из получившихся opcodes. Opcodes так же называют эдаким php-шным ассемблером.
              Данная статья расскажет вам о том, какие opcodes и в каких случаях генерируются. Конечно, рассказать про все opcodes в рамках одной статьи не получится, но в данной статье будет рассмотрен конкретный пример и на его основе мы попытаемся разобраться что к чему у этих opcodes. На мой взгляд, самое главное, что вы узнаете прочитав статью, это то, как на самом деле происходит выполнение ваших исходных текстов и, возможно, это поможет вам в лучшем понимании языка php.

              Советую вам налить себе чашечку капучино или просто зеленого чая, т.к. под катом листинги opcodes и php-кода…
              Читать дальше →
            • Лекции Технопарка. 2 семестр. Базы данных

              • Tutorial


              Очередной пост в рамках нашей постоянной рубрики «Лекции Технопарка». В этот раз предлагаем вашему вниманию лекции, посвящённые базам данных. Цель курса — получение студентами знаний в области проектирования реляционных баз данных, эффективной работы с базами данных, оптимизации запросов и схем данных, изучение особенностей использования баз данных в проектах с высокой нагрузкой и/или использующих большие массивы данных, noSQL и его применение для решения прикладных задач в WWW.
              Читать дальше →
            • Лекции Технопарка. 3 семестр. Проектирование высоконагруженных систем

              • Tutorial


              И снова в эфире наша постоянная рубрика «Лекции Технопарка». На этот раз предлагаем вам ознакомиться с материалами курса «Проектирование высоконагруженных систем». Цель курса — получение студентами навыков проектирования высокоэффективных программных систем.
              Читать дальше →
              • +50
              • 66.4k
              • 5
            • Власть над демонами или автозапуск в Linux

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

                  Думаю многие знают, как работает CGI взаимодействие между клиентом и сервером: клиент получает от сервера и отдает серверу данные через стандартные stdin и stdout. Многие наверное даже сами писали CGI клиентов, ведь по сути — любой скрипт для веб-сервера это и есть CGI-клиент.
                  А многие ли задавались вопросом, как именно происходит эта «магия»? Каким образом стандартные функции для ввода/вывода вместо экрана взаимодействуют с сервером?

                  Результаты поиска ответа в сети меня не удовлетворили и я решил сам написать простейший CGI сервер, который сможет:
                  • Запускать дочерний процес — CGI скрипт
                  • Передавать скрипту переменные окружения и переменные командной строки
                  • Принимать от скрипта ответ
                  • Завершаться, когда завершится процесс клиента

                  Кроме этого, мне хотелось, чтобы клиент и сервер компилировались как в Windows, так и в Linux.
                  Подробности
                • Если вы решили перейти с PHP на Python, то к чему следует подготовиться

                    Думали ли вы когда-нибудь о том, что однажды слишком быстро втянулись в веб-программирование на PHP? И вот уже прошло много лет, у вас хороший опыт, и вы не думаете ни о каких других способах „делать“ веб, кроме как на PHP. Может быть, у вас возникают сомнения в правильности выбора, однако непонятно, как найти способ быстро его проверить. А хочется примеров, хочется знать, как изменятся конкретные аспекты деятельности.

                    Сегодня я попробую ответить на вопрос: «А что если вместо PHP писать на Python?».

                    Сам я долгое время задавался этим вопросом. Я писал на PHP 11 лет и даже являюсь сертифицированным специалистом. Я научился его «готовить» так, чтобы он работал в точности, как мне надо. И когда я в очередной раз читал на Хабре перевод статьи о том, как всё в PHP плохо, я просто недоумевал. Однако подвернулся случай пересесть на Ruby, а потом и на Python. На последнем я и остановился, и теперь попробую рассказать вам PHP-шникам, как нам питонистам живётся.


                    Python с точки зрения PHP-программиста...
                  • Android UI thread

                      Большая часть кода Android приложения работает в контексте компонент, таких как Activity, Service, ContentProvider или BroadcastReceiver. Рассмотрим, как в системе Android организованно взаимодействие этих компонент с потоками.
                      Читать дальше →
                    • Основы верстки для нативных андроид приложений

                      В этом посте будут рассмотрены вопросы верстки при создании нативных приложений для android. Той верстки, которая описывается в xml файлах из директории res/layout/ Итак начнем:
                      Существует пять стандартных типов верстки:
                      • AbsoluteLayout
                      • FrameLayout
                      • LinearLayout
                      • RelativeLayout
                      • TableLayout

                      Дальше
                    • Пишем своё первое приложение на Android


                      Предисловие


                      Цель данного поста — с одной стороны поделиться своим успешным опытом старта разработки приложений на платформе Android и с другой стороны поспособствовать развитию рынка софта для этой замечательной и бурно растущей платформы за счёт (без ложной скромности скажу) возможно Вас, прочитавших данный пост. В сети, конечно, можно найти материалы на тему разработки приложения «чуть сложнее, чем helloworld», но как правило они разрозненные и в них не описываются различные мелкие подводные камешки. В данном посте мы рассмотрим полный цикл разработки приложения, начиная с чистого компьютера до готового apk-файла. Под катом скрины.
                      Читать дальше →
                      • +108
                      • 1653k
                      • 95
                    • Оптимизируем VPS за 5$ (512MB RAM / 1 CPU) так, что сайт на wordpress выдерживает нагрузку в 42,735,587 хитов в день

                      Когда вы приобретаете сервер VPS с 256MB или 512MB оперативной памяти на борту и лишь часть мощности процессора, то использовать для таких сервисов как MySQL/PHP/Apache настройки по умолчанию является очень плохой идеей. В настоящее время у меня запущено 3 сайта на самом дешевом тарифном плане с 512MB RAM/1 CPU. Не уверен полностью, но посещаемость составляет порядка 5-10 тысяч посетителей в день. Далее я хочу поделиться инструкцией как оптимизировать LAMP используя всего лишь 512 MB и при этом не уходя в swap. Обычно при такой настройки используется 256 – 378Mb памяти и все работает довольно быстро.

                      Определяем доступную память и активность swap.

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

                      $ free -m

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

                      $ ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r | less


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

                      Первый и очевидный вопрос, который необходимо задать — это «какие сервисы мне не нужны в использовании?». Недавно, я обнаружил очень удобную утилиту для управления сервисами. Она называется "sysv-rc-conf" и управляет сервисами при помощи псевдографики и флажками. Выгдялит вот так:



                      Здесь представлен список сервисов, которые я изменил.

                      • Postfix. Этот сервис позволяет отправлять и получать почтовые email сообщения для домена. Я использую для этих целей Google Apps для отправки почты и mailchimp для новостных подписчиков. Таким образом я остановил и отключил этот сервис.
                      • Bind9. Он нужен для управления DNS записями Вашего домена. Его можно отключить, так как все DNS записи хранятся у хостера.
                      • SSHD. Имеются и другие реализации, которые используют гораздо меньше памяти, но они не поддерживают sftp, поэтому данный сервис я оставил без изменений.


                      Не запускайте X-сервер, выключите все ненужные сервисы и настройте Apache, MySQL, PHP только с базовой необходимой функциональностью.
                      Читать дальше →
                    • Папа, а почему на ноль делить нельзя?

                      Моя трёхлетняя дочка София в последнее время частенько упоминает «ноль», например, в таком контексте:
                      — Соня, вот ты вроде сначала не послушалась, а затем послушалась, что же получается?..
                      — Ну… ноль!

                      Т.е. ощущение отрицательных чисел и нейтральности нуля уже имеет, о как. Скоро поинтересуется: почему же это на ноль делить нельзя?
                      И вот решил я простыми словами записать всё, что я ещё помню про деление на ноль и всё такое.
                      Читать дальше →
                    • Эксперимент, который навсегда изменил наше представление о реальности

                      • Translation
                      Принцип неопределенности говорит, что мы не можем знать определённые свойства квантовой системы в один и тот же момент времени. Например, мы не можем одновременно узнать положение частицы и ее скорость. Но что это говорит нам о реальном мире? Если бы мы могли заглянуть за кулисы квантовой теории, обнаружили бы мы, что объекты действительно обладают определенным положением и скоростью? Или принцип неопределенности означает, что на фундаментальном уровне объекты просто не имеют четкой координаты и импульса одновременно. Другими словами, неполна ли наша теория или реальность «размыта» на самом деле?

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