• «Hello, (real) world!» на php в 2017 году

      Вы наверняка думаете, что писать на php — это просто. И «hello, world» выглядит примерно так так:

      <?php
      echo 'Hello, world!';
      

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

      Читать дальше →
    • Работа с сервером с помощью Alamofire на Swift


      Сразу хочу сказать, данная статья предназначена прежде всего для новичков. Здесь не будет best practice, создание сервисов, репозиториев и прочей оптимизации кода. Расскажу про основы работы с запросами и покажу применение на примерах.


      Содержание


      Читать дальше →
    • Нахождение похожих имен средствами MySQL+PHP

      Тема, озвученная в заголовке статьи, не нова. На просторах Интернета можно найти множество вопросов, как ее реализовать, а вот ответов несколько меньше. И не редко они сводятся к советам использовать продукты сторонних разработчиков, например, Sphinx. Но зачастую в использовании таких громоздких надстроек нет необходимости.
      Читать дальше →
    • 33 iOS библиотеки с открытым исходным кодом, которые будут популярны в 2017 году

      • Перевод
      Отличного пятничного настроения, друзья!
      Сегодня мы приготовили для вас полезный перевод поста основателя Ecler Studios Paweł Białecki, в котором он предлагает нашему вниманию 33 open source проекта для iOS разработчиков.
      С помощью своего аккаунта в GitHub он открыл для себя множество перспективных инструментов и отобрал, по его мнению, лучшие из них для своих читателей.


      Читать дальше →
    • Что такое SEO

        “Здравствуйте, Оксана! Несмотря на сложную ситуацию с алгоритмами ранжирования (многие сайты, которые неправильно продвигались, забанили), удается удерживать позиции в Топ10 Яндекс по 75% запросов и в Гугле по 77%”.
        ЧТо такое SEO@
        Это цитата из письма, которое специалист по SEO высылал одному из моих клиентов.
        На мой взгляд, эта цитата и этот частный пример очень хорошо демонстрируют ситуацию в целом, сложившуюся сейчас в России:

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


        Почему возникла такая ситуация?
        Читать дальше →
      • Коллекция практических советов и заметок по вёрстке

          CSS Refresher


          Это большая коллекция практических советов и заметок по вёрстке. Своеобразная памятка для тех, кто каждодневно использует CSS. Освещаются самые разные темы, от деталей поведения плавающих элементов до использования SVG и спрайтов. Проект постоянно обновляется, активное сообщество github также принимает в нем участие, там добавляются интересные замечания, о которых, возможно, вы и не слышали.

          От переводчика


          Приветствую всех, меня зовут Максим Иванов, и сегодня я подготовил для вас перевод заметок разработчика из Сан-Франциско Васанта Кришнамурти (Vasanth Krishnamoorthy) «CSS Refresher». Web-программирование одна из самых быстро развивающихся отраслей в наше время. Казалось бы, возьми какой-нибудь видеокурс на tuts+ и освой html-верстку, однако, как говорил разработчик Opera Software Вадим Макеев, выступая на конференции CodeFest, они все равно это делают плохо. Но давайте посмотрим, может мы итак все это знаем.

          Содержание


          1. Позиционирование (position)
          2. Отображение элемента в документе (display)
          3. Плавающие элементы (float)
          4. CSS селекторы
          5. Эффективные селекторы
          6. Переотрисовка и перерасчет
          7. CSS3 свойства
          8. CSS3 медиа-запросы
          9. Адаптивный web-дизайн
          10. CSS3 переходы
          11. CSS3 анимации
          12. Масштабируемая векторная графика (SVG)
          13. CSS спрайты
          14. Вертикальное выравнивание
          15. Известные проблемы

          Читать дальше →
        • ipgeobase в Nginx

            Когда возникает задача — по адресу посетителя получать его город и налоговый (автомобильный) код региона, кажется — да это же просто, в инете полно таких штук!
            А потом смотришь: одни платные, другие нельзя у себя развернуть, третьи можно, но это ресурсозатратно, четвертые о регионах РФ ничего не знают…
            И тут на помощь спешит больной мозг программиста с навязчивой идеей: «Нет у других — сделай сам»

            Читать дальше →
            • +22
            • 14,9k
            • 9
          • Психологическая деформация программистов. Взгляд с обеих сторон баррикад

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

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

              И что же них такого деформированного?
            • «Используйте стандартный контрол» или как мы воровали календарь у Apple

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

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

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

              Всех заинтересованных прошу под кат.
              Читать дальше →
              • +32
              • 18,2k
              • 6
            • Разбираемся с rtorrent всерьёз

              • Tutorial
              Об установке и базовой настройке rtorrent на хабре хватает статей, как и споров о том, стоит ли вообще связываться с хардкорным rtorrent или лучше обойтись чем-нибудь более дружественным к пользователю. Лично я много лет назад пересмотрел все качалки и в результате rtorrent оказался самым стабильным и эффективным. Интерфейс у него не самый удобный, но достаточно понятный и юзабельный чтобы это не стало серьёзной проблемой. Альтернативные интерфейсы вроде rutorrent у меня как-то не прижились - ставить php только ради rutorrent неохота, а остальные варианты выглядят совсем слабо (и ни одного кроме rutorrent даже нет в портаж Gentoo).

                

              Одно из основных преимуществ rtorrent — очень гибкие возможности по его настройке и автоматизации. К сожалению, синтаксис ~/.rtorrent.rc достаточно нестандартный, нормальная документация отсутствует, поэтому обычно настройка сводится к поиску и копированию (попытка что-то в них изменить кроме констант/путей к каталогам обычно проваливается) готовых рецептов или вообще ограничивается редактированием констант в базовой конфигурации.

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

              Читать дальше →
            • Разрабатываем хабраклавиатуру под iOS

              • Tutorial

              Зачастую для чтения хабра я использую мобильное приложение Хабрахабр для iPhone и iPad. Оно достаточно удобное для чтения статей, но не очень удобное для написания комментариев, особенно если хочется написать что-нибудь этакое, с использованием тегов форматирования. Неудобно, потому что все теги необходимо набирать вручную, поэтому очень легко ошибиться и, как результат, оставить некрасивый комментарий.

              Так у меня появилась идея написать свою клавиатуру, в которой по нажатию на клавишу добавляется открывающийся и закрывающийся тег в текстовое поле. Курсор при этом должен стать прямо между ними, чтобы сразу же приступить к написанию текста. Также необходимо иметь возможность перемещать курсор с помощью жестов свайпа, субъективно это удобней, чем тянуть палец к полю, ожидать появления лупы, перемещать палец и надеяться, что курсор попадет куда надо. И наконец, пора бы уже разобраться с тегами «Сарказм» и «Зануда», которые не поддерживаются парсером хабра. Клавиатура должна иметь специальные клавиши для этих целей, а оформление тегов должно быть конфигурируемым в настройках клавиатуры, чтобы каждый мог указать тот вид, который ему нравится.

              С выходом iOS 8 Apple открывает новый API, который позволяет разрабатывать расширения к приложениям. Клавиатура (Custom Keyboard) является одним из представителей таких расширений. О ней и пойдет речь. В статье вы узнаете о том, какие возможности, ограничения и баги предоставляет новый API, как разработать хабраклавиатуру, и как сделать так, чтобы ваша клавиатура появилась в AppStore, а следовательно и на устройствах ваших пользователей.
              Читать дальше →
            • Как сервисы-рассылки относятся к правилам

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

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

                С чего начинают расти грибы

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

                Теперь, даже, копируя фотографию из бесплатного фотобанка, я запрашиваю разрешение на использование у его владельца. Смешно, но паранойя и осторожность берут верх.
                Читать дальше →
              • Двухпанельный веб-файл менеджер Cloud Commander

                  Файловых менеджеров много, но есть один, о котором, думаю, будет многим интересно узнать. Ведь он двухпанельный, работает в браузере, оснащён редактором (с подсветкой синтаксиса) и консолью, состоит из клиента и сервера, а написан на JavaScript/Node.js.



                  Читать дальше
                • Django на production. uWSGI + nginx. Подробное руководство

                  • Перевод
                  • Tutorial
                  Перед вами руководство по настройке production окружения для Django. Здесь будут описаны необходимые шаги по настройке Django, uWSGI и nginx. Руководство охватывает все три компонента — полный стек серверного ПО для веб-приложений.

                  Подразумевается, что вы используете Unix-подобную операционную систему и менеджер пакетов, эквивалентный aptitude. Найти эквивалент aptitude почти для любой операционной системы, в том числе и для Mac OS X, для вас не составит никакого труда.

                  Руководство написно для версий Django 1.4 или выше. Если вы используете более раннюю версию, то вам придется самостоятельно найти wsgi модуль для нее. Также вы заметите, что файловая структура проекта будет немного отличаться от представленной здесь.

                  Общая идея


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

                  Для выполнения этих задач был разработан Web Server Gateway Interface — WSGI — стандарт взаимодействия Python программ и веб-сервра.

                  uWSGI — одна из реализаций WSGI. В этом руководстве мы установим и настроим uWSGI для создания Unix сокета и взаимодействия с веб-сервером по протоколу WSGI.
                  Читать дальше →
                • Представляем Sencha Ext JS 5

                  • Перевод


                  От имени компании Sencha и всей команды Ext JS я горд объявить, что сегодня мы выпускаем Ext JS 5. Ext JS 5 — это гигантский шаг вперёд и мы хотим воспользоваться случаем и поблагодарить наше сообщество за отзывы и постоянную поддержку. Это было самое крупное бета-тестирование в нашей истории с более чем 100K загрузок. Вместе мы создали самый продвинутый в мире multi-device JavaScript-фреймворк. Вы все сделали неоценимый вклад в создание самого лучшего фреймворка Ext JS.
                  Читать дальше →
                • Ускоряем Nginx за 5 минут

                    image
                    Попытайтесь повторить это сами

                    Как правило, настроенный должным образом сервер Nginx на Linux, может обрабатывать 500,000 — 600,000 запросов в секунду. Но этот показатель можно весьма ощутимо увеличить. Хотел бы обратить внимание на тот факт, что настройки описанные ниже, применялись в тестовой среде и, возможно, для ваших боевых серверов они не подойдут.

                    Минутка банальности.

                    yum -y install nginx
                    

                    На всякий пожарный, создадим бэкап исходного конфига.

                    cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
                    vim /etc/nginx/nginx.conf
                    

                    А теперь можно и похимичить!
                    Бдыжь-бдыжь
                  • Mediabox

                      Mediabox – GPL3 web-приложение, позволяющее хранить файлы, воспроизводить audio и video в форматах, которые воспроизводит medialement js, показывать изображения, делать пометки на них, добавлять теги и писать комментарии.



                      Mediabox продолжает идеи прошлых Ostora FM и Photo, а также является немного измененным Mediabox, созданной для компании Xvid.

                      Читать дальше →
                    • Новый выделенный сервер: приемка и проверка

                      • Tutorial
                      Новый сервер: приемка и проверка

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

                      В этой статье мы расскажем о том, как можно получить спецификацию Linux-сервера в командной строке.
                      Читать дальше →
                    • Юнит-тестирование в PHP

                        Язык PHP очень легок для изучения. Это, а так же обилие литературы «Освой _что_угодно_ за 24 часа» породило большое количество, мягко говоря, некачественного кода. Как следствие, рано или поздно любой программист, который выходит за рамки создания гостевой книги или сайта-визитки сталкивается с вопросом: «а если я здесь немножко добавлю, все остальное не ляжет?» Дать ответ на этот вопрос и на многие другие может юнит-тестирование.

                        В самом начале хочется оговориться — здесь речь не будет идти о TDD и методологиях разработки ПО. В данной статье я попробую показать начинающему PHP-разработчику основы использования модульного тестирования на базе фреймворка PHPUnit
                        Начнем?..
                      • Marionette.js. Drag&Drop сортировка моделей в коллекции



                          Достаточно распространенная задача — поменять местами элементы в списке. Но как правило эта задача решается жуткими костылями, особенно если это Drag&Drop.
                          Сейчас я расскажу вам очень простой и гибкий способ сделать это, используя Marionette.js и jQuery UI Sortable.
                          Читать дальше →
                          • +17
                          • 13,9k
                          • 7