Рубрика «php» - 201

В сети легко находится множество источников, где приводится современная статистика использования языков программирования в мире. Одним из самых известных индикаторов является TIOBE Programming Community Index. Однако все это в большинстве — общемировая статистика, а как обстоит дело в России? Отличается ли Россия от остального мира, и если да, то как?

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

  • продажи или наименования книг
  • предложения вакансий
  • проекты с открытым кодом в GitHub
  • группы и форумы

Основой для предлагаемой читателям оценки являются темы на сайтах вопросов и ответов по программированию универсальной направленности (независимо от языка или платформы) в мире и в России, а именно StackOverflow.com и HashCode.ru. Почему взяты именно эти сайты?

Stackoverflow.com — это оригинальный сайт, где на высоком профессиональном уровне спрашиваются и отвечаются вопросы, связанные с разработкой программного обеспечения. Сайт содержит более 2 миллионов вопросов, из них 81% отвечено (согласно критериям принятым на сайте).

HashCode.ru — это наиболее успешная попытка в России из известных автору (самый популярный сайт подобного рода) перенести оригинальную идею на местную почву: сайт содержит порядка 30 тысяч вопросов, из них 80% отвечено. На форуме общаются более 12 тысяч профессиональных программистов.

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

  1. Считается общее количество вопросов
  2. Считается количество вопросов по метке
  3. Считается удельный вес (доля) вопросов по ярлыку на сайте
  4. Языки ранжируются в соответствии с удельным весом на сайте

Полученная оценка будет отражать популярность языка программирования, в случае StackOverflow — в мире, в случае ХэшКода — в России. Эта оценка будет достаточно грубой, поскольку заранее неизвестно насколько статистически представительна взятая выборка (так же как трудно оценить результаты голосования в целом по стране, зная результаты выборов в отдельном поселке).
Читать полностью »

Отголоски прошлого — получение данных из framework database 3В данной статье я хочу рассказать вам об недавно приключившейся со мной ситуации и принятому пути ее решения. Я не профессиональный программист, однако небольшой опыт мне помог решить данную задачу.

Сразу хочется обратить ваше внимание, что речь в данной статье не пойдет о «популярном фреймворке» для какого-либо языка программирования, речь пойдет о стареньком «framework» для ms dos и разборе формата, в котором оной хранит данные с дальнейшим преобразованием этих данных к одному из современных форматов баз данных.
Читать полностью »

Вывод постов вордпресс за пределами сайта

Задача:

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

Пример реализации вы можете посмотреть на моём сайте game.tobefun.org открыв любую игру.

Как видите я применил этот алгоритм для вывода определённого количества (оно задаётся параметрами вашего окна) случайных миниатюр, которые являются ссылками на записи для которых они заданы.
Читать полностью »

Основное, что может отпугнуть сильных веб-разработчиков от перехода на CMS 1С-Битрикс — это количество и качество кода, необходимое для выполнения стандартных процедур для манипуляции с данными (создание, изменение, удаление и просмотр).

В самом деле, эти GetList’ы в сложных компонентах превращаются в бесконечный поток кода, по-сути не выполняющего никакой бизнес-логики.

Мы нашли решение, а точнее создали его. Встречайте Bataline Framework.
Читать полностью »

Всем привет!

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

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

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

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

Читать полностью »

Собственно, изучая данную тему, было перерыто много сайтов, но нигде толком ничего не объяснялось, либо информация была по устаревшим ныне протоколам. Это и послужило своеобразным пинком для создания этого HowTo. Это будет не детальный разбор всех возможных проблем, но немного теории и описание некоторых вещей которые для кого-то являются банальщиной, а у кого-то (вроде меня) вызвали трудности и потерю времени на поиск решения. Сразу предупрежу — здесь не рассматривается как поднять сокет-сервер на PHP, подобной информации в интернете навалом. Буду исходить из того, что сокет-сервер уже существует и надо лишь научить его общаться через вебсокеты.
Итак, хватит лирики, теперь к делу!
Читать полностью »

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

Давайте создадим альтернативный способ определения класса. Самый простой способ определения, разрешённый в PHP, выглядит следующим образом:

<?php
class ClassName {}

Мы можем упростить синтаксис и заменить фигурные скобки на точку с запятой.

<?php
class ClassName;

Если вы попытаетесь выполнить этот код, то он, очевидно, выдаст ошибку. Не проблема, мы можем это исправить.
Читать полностью »

Один из наших сервисов занимается построением ежедневных отчетов анализируя данные из Highrise.
Данные из Highrise можно получать несколькими способами:

  • Использовать экспорт в CSV
  • Использовать API

CSV нами даже не рассматривался и мы попытались найти удобный метод для ежедневного обновления нашей базы через API.
Придумали следующее:

  • Получаем XML фид и парсим его.
  • Все непосредственные дочерние поля мы считаем полями в таблице.
  • Все вложенные элементы мы считаем связанными таблицами

Читать полностью »

в 10:48, , рубрики: php, sandbox, Песочница, метки: ,

В одном из наших проектов существует возможность написания плагинов для расширения функционала сервиса.
Пользователи создают плагины-приложения в нашем интерфейсе и описывают их логику на PHP.
Необходимо было ограничить возможности PHP, чтобы никто нам случайно не нашкодил.
Существует некоторое количество инструментов для исполнения кода PHP в защищенной среде: выполнение в отдельном процессе, сохранение кода в файле и вызов через cli с урезанными возможностями или использование специализированных расширений для PHP.
В силу специфики сервиса и приложений а так же для возможности использования песочницы на всех ОС (процессы и расширения для sandbox не работают в Windows) с базовыми настройками PHP был написан небольшой класс: Ext_Sandbox_PHPValidator.
Читать полностью »

image
Коллеги! Помогите выбрать интересные доклады DevConf 2013, уже 77 заявок — и надо выбрать полезные
для WEB и мобильных разработчиков
devconf.ru/offers/

В отличие от других конференций — наша конференция сообществ разработчиков — кому дать право голоса решаем только мы ;-)
Если у вас идет вся команда разработчиков — голосуйте коллегиально и/или индивидуально.

Отличный повод собраться и определить — какие из направлений для развития интересны вашей команде.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js