• «Сделано в России» — язык программирования WBASIC для разработки серверных веб-приложений

      Здравствуй, Хабр!


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

      WBASIC — Акроним Web Beginner's All-purpose Symbolic Instruction Code.
      Высокоуровневый язык программирования применяемый для разработки серверных веб-приложений.

      Это диалект языка BASIC, разработаный с учетом работы в сети Интернет в 2017 году, а сам синтаксис языка в 1964.

      image

      Философия языка — это должно быть просто для начинающих. И надеюсь, мне это удалось. Вся документация по языку умещается на сегодня всего в 9 разделах и освоить их можно за один-два дня.
      Читать дальше →
    • Нужно поднимать Kubernetes кластер, но я всего лишь программист кода. Выход есть

      • Tutorial


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

      Ключевые слова — AWS + Terraform + kops . Если это полезно мне — возможно будет полезно кому-нибудь еще. Добро пожаловать в комментарии.
      Читать дальше →
    • PHP-Дайджест № 139 (3 – 17 сентября 2018)


        Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.3 RC 1, PhpStorm 2018.3 EAP, Laravel 5.7 и другие релизы, HHVM прекращает поддержку PHP, типизированные свойства в PHP, порция полезных инструментов, видеозаписи докладов, и многое другое.
        Приятного чтения!

        Читать дальше →
      • Как подружить PHPstorm, xDebug и удаленные ветки, собранные через Docker? Слишком просто…

        • Tutorial
        Доброго времени суток, Хабр!

        Еще год назад мой процесс отладки кода в PHP заключался в двух строчках:

        var_dump($variable);
        die();

        Периодически, конечно, приходилось использовать более «сложные» конструкции:

        console.log(data);
        

        echo json_encode($variable, JSON_UNESCAPED_UNICODE);
        exit();

        Нет, что вы! Я знал — в наше время не подобает культурному программисту заниматься этим

        древним ремеслом
        шутка про другое древнейшее ремесло

        Но, честно говоря, я всегда боялся того, что не понимаю. В том числе и принтеров xDebug, в особенности, как все это дело настроить. В один прекрасный день у меня получилось это сделать на своей машине и в локальном проекте — радости не было предела. Спустя много месяцев я столкнулся с новой проблемой, как заниматься отладкой в PHPstorm через xDebug, если проект собирается удаленно докером через CI.

        Если Вы так же, как и я, испытываете трудности с настройкой разных штук, добро пожаловать под кат, я расскажу о своем опыте настройки окружения отладки с такими страшными словами, как Docker, xDebug, CI.
        Читать дальше →
      • Аргументы функций в виде битовых констант в PHP

        Привет, Хабр! Представляю вашему вниманию перевод статьи Лиама Хамметта (Liam Hammett): Bitmask Constant Arguments in PHP.

        PHP содержит множество стандартных функций, которые принимают аргументы логического типа (boolean) в форме встроенных констант со значениями двоичных чисел.
        Эти значения комбинируются в единый аргумент функции с целью передачи нескольких булевых флагов компактным образом.


        Они могут работать немного не так, как многие представляют и используют в своем коде, поэтому предлагаю рассмотреть, как на самом деле это устроено.

        Читать дальше →
      • Глобальные объекты в PHP

          global stars

          В сообщении пойдет речь о фундаментальном в программировании — глобальных объектах. Я бы сказал, это научный вопрос, который хотелось бы обсудить. Итак, чтобы не «отстрелить себе ноги», программисты не программируют в глобальной области. Ок, все понятно и предельно просто, остановимся на этом? Не в этом материале. Как известно любое действие вызывает цепь событий и логических следствий.

          Во первых, зачем создавать догму, которую можно не создавать? Вместо нее, давайте создадим функцию stop_globals(), например для языка PHP. Фреймворк, вначале выполнения своего кода, может ее выполнить, а дальнейшие попытки работы с глобальной областью, будут вызывать ошибки PHP. Хорошо ли данное решение?

          Это еще далеко не все, что можно было бы обсудить.
          Читать дальше →
        • Расширение PHP и Kotlin Native. Часть третья, наверное финальная

            В первой части рассказываются совсем базовые вещи про настройку инструментария и общие концепции.

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

            В этой статье будет чуть больше хардкора про интероп Си и K/N, много макросов, боли, безысходности и «лучей добра». Конечно же будет глава с рассказом о достижениях (сам себя не похвалишь… и в качестве бонуса рассказ о эпичном факапе.
            Читать дальше →
          • Книга «Современный PHP»

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

              Мое знакомство с книгой «Современный PHP» состоялось в судьбоносный для меня момент возврата к программированию на PHP после почти десятилетней работы вне активного кодинга. Мне нужен был краткий обзор того, что произошло в PHP за последнее время и я его получил с лихвой.

              Несмотря на то, что книга выпущена «на западе» аж в 2015 году, а в России в 2016 и, казалось бы, о каком «современном PHP» может идти речь? Но я могу заверить, книга составлена удивительна удачно, и принципиально она устареть не может.

              Давайте заглянем внутрь и разберемся, почему это так.
              Читать дальше →
            • PHP 7.3. Что нового

              • Перевод


              Синтаксис


              1. Смягчение требований к синтаксису Heredoc и Nowdoc
              2. Поддержка конечных запятых в вызовах функций и методов
              3. Ссылки в list()

              Устаревшие возможности (deprecated)


              1. Функция image2wbmp() объявлена устаревшей
              2. Флаги FILTER_FLAG_SCHEME_REQUIRED и FILTER_FLAG_HOST_REQUIRED при использовании FILTER_VALIDATE_URL объявлены устаревшими
              3. Регистро-независимые константы объявлены устаревшими

              Новые возможности


              1. Опциональный выброс исключений при ошибках в функциях json_encode и json_decode
              2. Добавление функции is_countable()
              3. Добавление функций array_key_first() и array_key_last()
              Читать дальше →
            • Как я боролся с воровством… с помощью php


              Когда мы платим ежедневно за услуги — это покупка услуг.
              Когда мы платим ежедневно за ничего (порой даже не подозревая об этом) — это воровство.

              Добрый день, читатели Хабра!

              С чего всё началось


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

              О котором из «воровств» я? О том, где мы, гуляя по интернету, нажимаем на кнопочку «смотреть видео»,  грузится какая-то страница, видео почему-то не проигрывается, мы уходим и гуляем дальше, а на самом деле мы «добровольно» подключили себе услугу получать что-то, что никто никогда не видел за символическую плату 30 рублей в день со счёта своего мобильного. У людей это называется wap-click или мобильные подписки, а сотовые операторы придумывают разнообразные красивые названия. Ещё бы, не включать же в список услуг «воровство по видеокнопке».
              Читать дальше →
            • PHP-Дайджест № 138 (20 августа – 2 сентября 2018)


                Свежая подборка со ссылками на новости и материалы. В выпуске: последняя бета PHP 7.3, Laravel Nova, сайт с идеями для следующих версий PHP, новости о Yii 3, порция полезных инструментов, видео, и многое другое. Приятного чтения!


                Читать дальше →
              • Как интегрировать ReactJS в 1С-Битрикс с автоматической генерацией шаблонов на back-end на примере сети Глобус

                  В этом году впервые начали внедрение ReactJS для интернет-магазина сети гипермаркетов Глобус. Проект интересен тем, что расширяет возможности платформы Битрикс и при этом сохраняет возможность генерации страниц для поисковиков и не захламляет дублированием кода и верстки. В этой статье рассказываем о том, как связать компоненты Битрикса с компонентами ReactJS при помощи модуля v8js для php и сохранить основную фронтовую часть сайта.
                  Читать дальше →
                • Вечная тема с PHP и MySQL

                  Всем привет! Наверняка каждый из тех, кто много и постоянно пишет на PHP сталкивался с вопросом оптимизации и упрощения запросов в базы данных MySQL. Кто-то написал уже себе удобные классы/процедуры, кто-то нашел что-нибудь на просторах сети.

                  Поскольку у меня скрипты на PHP все больше и больше начинают сворачиваться к одной задаче — выборке из базы данных и передаче этих данных клиентским Java-скриптам, я себе облегчил участь тем, что создал удобный (для меня, конечно) класс по работе с базами данных MySQL.

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

                  Вашему вниманию предлагается класс exDBase, это по сути своей оболочка для класса mysqli. Сразу оговорюсь — я программист начинающий, и готов в комментариях или личных сообщениях получить массу критики за написанный код. Я не очень владею RegExp например, которые сильно бы упростили код, возможно есть и другие претензии. Но, тем не менее…
                  Читать дальше →
                • Docker для Symfony 4 — от локалки до production

                  Предистория


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

                  Исходный стек технологий:

                  — Docker
                  — Symfony 4
                  — nginx
                  — php-fpm
                  — postgresql
                  — elasticsearch
                  — rabbitmq
                  — jenkins

                  Железо:

                  — ноутбук под ОС Ubuntu 16.04
                  — продакшн сервер на хостинге KVM

                  Почему кроме технологического стека я перечислил ещё и стек железа?

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

                  Первый и наверно самый важный аспект при начале работы с докером — это операционная система вашего ноутбука. Проще всего работать с докером именно на linux системах. Если вы работаете на Windows или Mac то у вас 100 % будут некоторые сложности, но эти сложности не будут являться критическими и при желании «нагуглить» как это исправляется не составит никаких проблем.

                  Второй вопрос — это хостинг. Зачем нужен Hosting именно с типом виртуализации KVM? Причина в том, что виртуализация VPS разительно отличается от KVM и установить сам docker на VPS у вас попросту не выйдет, так как VPS распределяет ресурсы сервера динамически.

                  Подитог: для самого быстрого старта на докере резоннее всего выбирать Ubuntu в качестве локальной операционки и KVM хостинг (либо собственный сервер). Далее рассказ пойдёт опираясь именно на эти две составляющие.
                  Читать дальше →
                • Совместное использование аутентификации yii1/yii2

                  • Tutorial
                  image

                  Это статья не имеет смысла без первой части, в которой есть ответ «зачем это делать».

                  Она про методику плавной миграцию проекта с yii1 на yii2. Ее суть в том, что ветки проекта на yii1 и его новой версии на yii2 работают совместно на одном домене в одном виртуальном хосте, а миграция производится постепенно, мелкими шагами (по страницам, контролерам, модулям и т.п.).

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

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

                  Дублированию дизайна отводится первое место по скучности. Если не повезло, то можно просто скопировать / переверстать старый «1 в 1». Лично я всегда совмещал с редизайном. Т.е. интерфейс и дизайн значительно обновлялся и в этом плане, работа не тупая. Но тут каждому свое – я большое внимание уделяю интерфейсу и дизайну, кто-то наоборот, любит больше backend и консоль. Тем не менее, не зависимо от предпочтений, мимо этой задачи не пройти — сделать интерфейс придется, и объем работы будет достаточно большой.

                  Сквозная аутентификация немного интереснее, а работы будет поменьше. Как и в первой статье, тут не будет никаких откровений. Характер статьи: tutorial для тех, кто решает такую задачу в первый раз.

                  Если это ваш случай, то подробнее под катом
                  Читать дальше →
                • PHP-Дайджест № 137 (6 – 20 августа 2018)


                    PHP 7.3.0 Beta 2 и другие релизы, предложение из PHP Internals, порция полезных инструментов, видеозапись «Пишем блокчейн на PHP», и многое другое.
                    Приятного чтения!


                    Читать дальше →
                    • +51
                    • 11,9k
                    • 8
                  • Почти OCR для получения пароля VPNBook. PHP + Mikrotik

                      Недавно VPNBook стал публиковать пароль вместо прямого текста в виде изображения. «Ну как же так» — подумал я и начал искать пути решения этой проблемы. Распознаем «картиночный» пароль VPNBook на PHP. И, конечно, скрипт для Mikrotik.
                      Читать дальше →
                      • +14
                      • 3,1k
                      • 9
                    • PHP, YII2 и формирование больших excel-файлов

                      Начало


                      Одна поддерживаемая нашей компанией учетно-отчетная система начала очень быстро разрастаться в количестве хранимых данных. Система написана на PHP с использованием фреймворка Yii2. Изначально отчеты строились через библиотеку PhpSpreadsheet, которая пришла на смену, уже давно ставшему deprecated, PhpExcel.

                      Среди разного вида отчетности был один очень крупный – фактически полный набор всех хранящихся в БД данных должен выгружаться в одну excel-таблицу. На начальном этапе проблем не возникало, но когда объем стал превышать многие сотни тысяч записей, то скрипт формирования выгрузки стал отваливаться в timeout limit.
                      Читать дальше →
                    • Разные цены для складов в многоскладовости. Доработка 1С-Битрикс

                        Были интернет-магазин и b2b платформа у одной компании на системе 1с-Битрикс. Компания росла и появились свои склады и добавились еще склады партнеров которые нужно было отображать. Возникла необходимость отображения остатков по нескольким складам.

                        И что нам говорит Битрикс: Пожалуйста переходите на редакцию «Бизнес» и будет всё замечательно и сразу. На редакцию перешли и оказалось, что многоценновость и многоскладовость в 1С-Битрикс живут отдельной жизнью. Первая нужна для отображения разных цен для разных групп пользователей, а второе для отображения остатков на разных складах.

                        Нам нужно было выводить остатки со своей ценой по каждому складу, так как цена у партнеров и у нас может отличаться на одну и ту же позицию. Штатного такого функционала оказалось, что нет.
                        Читать дальше →
                      • Что не так с популярными статьями, рассказывающими что foo быстрее чем bar?

                        • Перевод

                        Примечание переводчика: я тоже думал, что время статей "Что быстрее — двойные или одинарные кавычки?" прошло еще 10 лет назад. Но вот подобная статья ("What performance tricks actually work") недавно собрала на Реддите относительно большой рейтинг и даже попала в PHP дайджест на Хабре. Соответственно, я решил перевести статью с критическим разбором этих и подобных им "тестов".


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


                        Главная проблема


                        Такие тесты являются неверными по многим причинам, начиная с постановки вопроса и заканчивая ошибками реализации. Но что важнее всего — подобные тесты бессмысленны и в то же время вредны.


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

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

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

                      Самое читаемое