Как стать автором
Обновить
16
0
Виталий Дятлов @xytop

Пользователь

Отправить сообщение

Выдергивание информации из URL, в стиле Slack и Twitter

Время на прочтение3 мин
Количество просмотров17K
Многие пользуются Slack, Twitter и видели такие штуки:

Как это работает и как такое сделать самим?
Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии4

Разбор кода и построение синтаксических деревьев с PLY. Основы

Время на прочтение11 мин
Количество просмотров42K

Что такое PLY?


PLY — это аббревиатура из первых букв выражения: Python Lex-Yacc.
Фактически, это порт утилит lex и yacc на python в красивой обертке.
Работать с ply очень просто и порог входа для начала использования практически нулевой.
Написан он на чистом питоне и представляет из себя LALR(1) парсер, но кому это интересно?
Я по натуре практик (как и большинсво из вас) поэтому пошли в бой!

Что будем делать?


На сайте есть пример написания очередного калькулятора, поэтому повторяться не будем. А сделаем что-то навроде парсера очень очень узкого подмножества PHP :)
Наша задача в конце статьи построить синтаксическое дерево для такого примера:

<?php
$val = 5;
$result = substr( "foobar", 2*(7-$val) );
echo "это наш результат: $result";


Пример очень маленький и взят с потолка. Но чтобы построить дерево кода нужно много и походу мы задействуем такой механизм PLY как state.

Читать дальше →
Всего голосов 45: ↑39 и ↓6+33
Комментарии28

Создание базы данных на основе API 37signals

Время на прочтение2 мин
Количество просмотров4.3K
Один из наших сервисов занимается построением ежедневных отчетов анализируя данные из Highrise.
Данные из Highrise можно получать несколькими способами:
  • Использовать экспорт в CSV
  • Использовать API

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

Читать дальше →
Всего голосов 5: ↑4 и ↓1+3
Комментарии5

Песочница для PHP

Время на прочтение2 мин
Количество просмотров6.3K
В одном из наших проектов существует возможность написания плагинов для расширения функционала сервиса.
Пользователи создают плагины-приложения в нашем интерфейсе и описывают их логику на PHP.
Необходимо было ограничить возможности PHP, чтобы никто нам случайно не нашкодил.
Существует некоторое количество инструментов для исполнения кода PHP в защищенной среде: выполнение в отдельном процессе, сохранение кода в файле и вызов через cli с урезанными возможностями или использование специализированных расширений для PHP.
В силу специфики сервиса и приложений а так же для возможности использования песочницы на всех ОС (процессы и расширения для sandbox не работают в Windows) с базовыми настройками PHP был написан небольшой класс: Ext_Sandbox_PHPValidator.
Читать дальше →
Всего голосов 13: ↑7 и ↓6+1
Комментарии18

Информация

В рейтинге
Не участвует
Откуда
Тирасполь, Молдова, Молдова
Дата рождения
Зарегистрирован
Активность