Вопросы Kidman
4 531

На каких языках программирования написан DTF?

Кроме HTML, CSS и JS конечно же.

Какие языки программирования, фреймворки и инструменты использует DTF?

{ "author_name": "Kidman", "author_type": "self", "tags": [], "comments": 112, "likes": 48, "favorites": 15, "is_advertisement": false, "subsite_label": "ask", "id": 20657, "is_wide": true }
{ "id": 20657, "author_id": 66002, "diff_limit": 1000, "urls": {"diff":"\/comments\/20657\/get","add":"\/comments\/20657\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/20657"}, "attach_limit": 2, "max_comment_text_length": 5000 }

112 комментариев 112 комм.

Популярные

По порядку

Написать комментарий...

Твиттерский Жук

73

на шутках и мемах

Ответить

Morris

Твиттерский
14

без сексуального подтекста!

Ответить

Denis Shiryaev

Твиттерский
5

И хлебный мякиш

Ответить

Denis Shiryaev

24

Ребята поправят если что, так как я менеджер и не погромист:

— Сервер на PHP и частично Go;
— Фронт-енд на нашем же фреймворке Air;
– iOS — Swift, Android — Kotlin (Или уже, или в процессе);

Но вообще Илья где-то напишет наверное детали когда настроение будет, он у нас главный и CTO

Ответить

Ilya Chekalsky

Denis
12

Всё так. Стэк стандартный — PHP, php-fpm, nginx, postgres, redis, memcached. Раньше ещё были части веб-серверной логики на lua.

Ответить

njunkie

Ilya
0

А мемкэшд-то для чего? Вроде же редис за него (хотя возможно вы его для других целей юзаете)

Ответить

Ilya Chekalsky

njunkie
0

В редисе у нас данные, которые надо хранить долго (вечно), в мемкеш кидаем все, что не жалко потерять. А так да, разницы нет, редис можно использовать для того же

Ответить

Andrey Apanasik

Ilya
0

"В редисе у нас данные, которые надо хранить долго (вечно)"
Он у вас на диск периодически выгружает данные?

Ответить

Andrey Apanasik

Ilya
0

А подробности о машинке и диске можете сказать? А то мы в редиске персистентность отключали, т.к. в момент записи на диск просадки наблюдались. Но мы, правда, машины используем не особо дорогие.

Ответить

Ilya Chekalsky

Andrey
1

Intel Xeon E5-1650v4 3.6 ГГц
128 ГБ DDR4
SSD

Но там надо тюнить, чтобы он каждую минуту не сбрасывал на диск данные (либо тюнить чтобы сбрасывал, но правильно)

Ответить

Andrey Apanasik

Ilya
0

Неплохая машинка-то (:
Мы предпочитаем кучу дешёвых брать и пилить архитектуру на микросервисы. Впрочем, мы в Редиске держим обычно не критичные данные. Единственное, при ребуте машины оно заводится медленно.

Ответить

Ilya Chekalsky

Andrey
1

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

Ответить

Andrey Apanasik

Ilya
0

Контейнеры - докер? Чур меня. Мы игрались с Kubernetes, как-то совсем не понравилось. Концептуально вроде красиво, а на практике..ну, такое.

Ну и мы игры делаем, там слегка по-другому всё)

Ответить

Aleksey Pazdnikov

Ilya
0

Lua, серьёзно? я думал, что я один из пяти человек, пишущих сервер на lua

Ответить

Ilya Chekalsky

Aleksey
0

Ну сервер нет, только модуль для nginx. Не нашли тогда способа проще сделать достаточной гибкости фуллпейдж кэш.

Ответить

Nick Lasos

Aleksey
0

Lua очень часто в highload используется.

Ответить

Andrey Apanasik

Ilya
0

А Redis в кластере? Сентинель? Сингл ноды?

Ответить

Ilya Chekalsky

Andrey
0

Одна нода, но возможно мы как-то расширим, так как теперь каждая страница десятки раз туда ходит

Ответить

Robert Marley

Denis
5

Кстати, раз уже тему завели, подскажите пожалуйста. Сам редактор статей вы тоже делали, или есть какое то опенсорсное решение ? Очень похож на этот, но ваш круче https://ifmo.su/editor

Ответить

Ilya Chekalsky

Robert
4

Да, мы развиваем форк этого редактора, руководитель ifmo.su — один из наших разработчиков.

Ответить

Nicholas Lagunov

Robert
0

Может они его взяли за основу?
А есть ли к WP такой редактор или прикрутить подобное? Ибо плагины такое.

Ответить

Alldar

Robert
0

Это он и есть если код открыть видно что загружается codex-editor.js

Ответить

Andrey Apanasik

Denis
1

php каноничный 4 версии?

Ответить

Andrey Apanasik

Denis
0

Учитывая, что зачем-то Kotlin использовали, то может и база данных экзотическая какая-то?

Ответить

Sergey Ryabenko

Andrey
1

А чем вы против Kotlin?

Ответить

Andrey Apanasik

Sergey
0

Только Java, только хардкор!

Ответить

Александр Барановский

Andrey
1

Так Kotlin это же Java+ (а Scala это Java++)

Ответить

Sergey Ryabenko

Александр
1

Я бы сказал что Scala это brainfuck мира Java, а Kotlin - это правильная Scala.

Ответить

Andrey Apanasik

Александр
0

Не переношу функциональщину. Если на Kotlin я бы ещё мог перейти, то на Scala точно нет.

Ответить

Чукин Михаил

Andrey
1

Гугл уже бОльшую часть новых примеров в документации пишет на Kotlin. Он для Андроида столь же экзотический, сколь для iOS - Swift.

Ответить

Слава Крайнов

Andrey
1

Не, обычная SQLite. Была раньше Realm, но дебажить сложно было, может быть сейчас что-то изменилось в лучшую сторону. Для доступа используется библиотека SquiDB

Ответить

Andrey Apanasik

Слава
0

Блин, я уж было перепугался и подумал, что на серваке SQLite :D

Ответить

Donovan

one-two
1

И он не покажет вам ничего полезного или интересного...

Ответить

Nick Lasos

Denis
0

А можете пофиксить мобильную версию для ios? Когда добавляешь сайт на экран «домой», то не работает логин через социальные сети, куда-то не туда редиректит после подтверждения. До последней обновы всё работало. Просто с домашнего экрана всегда заходил и было удобно :(
На сколько я знаю, то там какая-то проблема с мета тегами. ios 11, iphone 7

Ответить

Никита Козлицкий

7

HTML, CSS – но это даже не языки программирования.

Ответить

Nikita Novokreschenov

Никита
–6

а, вообще говоря, почему?
если мыслить максимально абстрактно
Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением.

Ну да, они про внешний вид, а не про действия, и что?

Ответить

Lin

Nikita
18

Если абстрактно: то это языки, но не программирования ¯\_(ツ)_/¯

Ответить

Donovan

Lin
–6

Спорим, что ты не прав? По поводу HTML w3c как и whatwg с тобой совсем не согласны. Что такое HTML? Просто разметка? А куда ты денешь все API которые тоже часть HTML стандарта? Выкиньте пожалуйста свои методички 98 года...

Ответить

Андрей Фокин

Donovan
0

HTML API?
Ну-ка расскажи

Ответить

Donovan

Андрей
1

Давай так. Я был грубоват в формулировках и погорячился, и про язык и вообще. Если мы говорим, что HTML это только XML разметка, то да, я не прав и я трепло, нам не о чем разговаривать.

Меня просто всегда тригерит такое отношение к технологии, которая под собой содержит просто тонны человеческого труда (типа HTML - тупо разметочки накидать). Не важно HTML3, 4.2, XHTML, 5 да без разницы, это стандарт, который описывает совокупность веб технологий. Спрашиваешь про API? Открываешь w3c спеку и смотришь начиная от банальных медиа элементов, заканчивая какими-то специфическими вещами типа интерфейса вибрации, геймпада, сторов, да чего угодно. Чекаешь описания на Web IDL, нужно понимать, что банальный document.createElement() манипулирует понятиями из этой спеки (интерфейсы вроде HTMLElement HTMLUnknowElement и т.д.) и там же описан (ну скорее всего в каком нибудь DOM Level 1 или где-то рядом, тут я не уверен).

При этом это не часть ECMAScript спеки и на самом деле может быть абсолютно оторвано от конкретной реализации в виде JS.

Ответить

Stanislav

Nikita
6

а, вообще говоря, почему?

если мыслить максимально абстрактно

Зачем мыслить максимально абстрактно, если ответ на вопрос "почему?" будет просто "по определению"?

В аббревиатуре HTML последние две буквы означают "markup language", т.е. "язык разметки". В CSS последние SS означает "style sheets", т.е. "таблицы стилей".

Все три (языки разметки, и таблицы стилей, и языки программирования) объединяет то, что это всё компьютерные языки. Но в резюме лично я бы не выпендривался с классификацией и свалил всё это (а также фреймворки и софт из нужных экосистем) в графу "технологии" :)

Ответить

Nikita Novokreschenov

Stanislav
0

Ну вот например "правило 110" на чистом html + css
http://eli.fox-epste.in/rule110-full.html

Вполне себе тьюринг-полное

Ответить

Stanislav

Nikita
2

Ну, если я правильно понимаю, полным по Тьюрингу может быть любой формальный язык, необязательно для этого быть языком программирования. Правило 110 так-то клеточный автомат -- матмодель.

Ответить

tiyo miaki

Nikita
–1

Данный пример построен на присваивании свойств чекнутым/анчекнутым чекбоксам. Никакой логики там нет.

Для простоты приведу пример. Чекбокс это переключатель. Найдите у себя в комнате выключатель. Переключая его, горит 1 лампочка на потолке, переключая второй горит ещё одна. Вот это вы пытаетесь сейчас назвать языком программирования.

Надеюсь доходчиво объяснил.

Ответить

Nikita Novokreschenov

tiyo
1

Почитай, что такое "правило 110" и потом умничать лезь, ладно?

Потыкал мышкой и полез всем объяснять про выключатели...

Ответить

tiyo miaki

Nikita
2

Нарисуй на дверце шкафа нолик, а за ней единичку. Открывай и закрывай дверцу, наслаждаясь правилом 110. А потом рассказывай всем, что твой шкаф - это язык программирования.

Ответить

Nikita Novokreschenov

tiyo
4

Окей, я продолжу твою дегенератскую аналогию: если ты откроешь одну из трёх дверей шкафа, остальные две откроются/закроются в зависимости от статуса друга друга?
А вот в представленном примере именно это и происходит.

Просто ты слишком тупой, чтобы последовать совету и прочитать уже наконец, что такое "правило 110".

Ответить

tiyo miaki

Nikita
1

Омайгадбл. Как же ты бесишь. Хорошо, продолжая мою дегенеративную логику, ты забыл связать 3 дверцы веревками и шарнирами под нужным углом, так чтобы они влияли друг на друга. Как CSS связал ячейки в приведённом тобой примере.

И так, дверцы связанные по нужной схеме сделают ли шкаф языком программирования или нет? Я думаю что нет. Можно ли сделать яп из шкафа таким образом? Думаю да. Так вот я хочу сказать и с CSS тоже самое. То что на нем можно реализовать правило 110 ещё не делает его ЯП.

Ответить

Neko Natum

Nikita
0

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

Ответить

Nikita Novokreschenov

Neko
0

Там надо таб/пробел жать.
Вот "кликабельная" реализация:
https://jsfiddle.net/Camilo/eQyBa/

Ответить

Neko Natum

Nikita
0

А, я просто по ссылке на новую версию укотился, а там ничего не работает.
Интересная реализация, но это больше "чтобы все охуели", нежели что-то реально полезное. Ведь зачем забивать гвозди микроскопом?

Ответить

Nikita Novokreschenov

Neko
0

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

Ответить

Сергей Гринёв

Stanislav
0

Я знавал веб дизайнера, который в графу "какие языки знаю" велючил node.js...

Ответить

Твиттерский Жук

Nikita
2

в css есть calc() и черт знает, что ещё, ещё чуть-чуть и будет ЯП.

Ответить

Иван Мелтдаун

Твиттерский
0

html — разметка, css — оформление. js — поведение (и вот это уже тянет на язык, ООП там есть).

Ответить

Stanislav

Иван
4

Прошу пардону, с чего бы "тянет"? JS -- это и есть язык программирования, без всяких оговорок.

И ООП тут ни при чём. В функциональных языках, положим, без него прекрасно обходятся, но они от этого не перестают быть ЯП :)

Ответить

Иван Мелтдаун

Stanislav
1

это я шутканул. зная, какой своеобразный там ооп.

Ответить

Василий Пупкин

Иван
1

Там уже нормальный ООП, язык развивается понемногу.

Ответить

Евгений Абрамовских

Иван
0

Нормальный там ООП. Правда можно себе ногу отстрелить, но прототипы о******

Ответить

Ruslan Nikiforov

Nikita
0

Языком программирования считается все что лучше или равно машине Тьюринга.
Так то для этого хватит операций суммы, сравнений, условия и goto.
Мне иногда кажется что связка css и html как то вместе сможет это вытянут, если совсем заморочиться.

Ответить

Hexus

Ruslan
0

Простите, считается кем? Можно ссылку на авторитетный источник такого определения?

Ответить

Nikita Novokreschenov

Hexus
1

Господи, по всем комментам прошёлся, ссылку даже минуснул.
Неужели настолько убого тебе живётся? Помочь может чем?

Ответить

Вадим Лунёв

Ruslan
0

насколько знаю то css3 частично может заменить джс но все же для динамики он по прежнему нужен чтоб ивенты обрабатывать

Ответить

Rescor Warden

Nikita
0

Потому что это языки разметки.

Ответить

Kidman

Никита
0

Ну что ж вы так грубо...

Ответить

Озорной Лис

Kidman
0

это прозвучит странно, но у меня уже второй день вылетает хром при попытке зайти на сайт. Сейчас вот с третьей попытки получилось зайти и при загрузки сайта выскакивали дефолтные формы http base authentication.

Ответить

Stanislav

5

Чего вы ржете, мне вот тоже, (тащемта) например, любопытно.

Понятное дело, что у ребят свой движок, но на чём его писали?

Ответить

Василий Пупкин

Stanislav
0

VisualBasic, очевидно же.

Ответить

Stanislav

Василий
0

Ну, серверсайд на VB.NET -- не такой уж невероятный вариант, должен сказать.

Ответить

Василий Пупкин

Stanislav
0

Ну так-то на чем угодно можно написать, какая разница? Вряд ли они дадут исходники посмотреть.

Ответить

Stanislav

Василий
1

Так а я и не прошу. Мне просто любопытно, чья экосистема используется.

Сугубо в целях повышения образованности.

Ответить

Вячеслав Соколов

Stanislav
1

Php
А, ниже ответили уже.

Ответить

Inquisitor

4

хочешь свой дтф сделать? с блекджеком и пхп?

Ответить

Павел Одичалов

Inquisitor
0

хочешь свой дтф сделать? с блекджеком и пхп?

Скорее с блекджеком и воплями :D

Ответить

Kidman

Inquisitor
0

Нет конечно, просто интересно.

Ответить

Evgenyi V.Reshetnyak

4

HTML, CSS не языки программирования

Ответить

Павел Одичалов

3

[Здесь могла бы быть моя очередная тупая шутка, но так как я совсем не разбираюсь в программировании, ее не будет]

Ответить

Dream Green

3

Я думаю им было достаточно лишь языка программирования html.

Ответить

Кирилл Жарков

0

Frontend, backend.... Node.js? А приложение на Android, надеюсь, на Kotlin писали?

Ответить

Stanislav

Кирилл
10

И штанины, надеюсь, подворачиваете!

Ответить

Nikita Savyolov

Кирилл
0

Судя по тому, что сайт древний, это не го или нжс, а при мейнтенсе падает весь, то это не пхп, а значит какое-нибудь руби или java, а приложение на Java, в декомпиле котлина я не нашёл

Ответить

Александр Барановский

Nikita
0

а при мейнтенсе падает весь, то это не пхп

А почему нет, кстати?

или java,

Вряд-ли, JSESSIONID отсутствует

Ответить

Nikita Savyolov

Александр
0

А почему нет, кстати?

А без понятия, я на пхп никогда серьёзно не писал и не знаю как там сейчас дела обстоят

Вряд-ли, JSESSIONID отсутствует

sid может-быть разным

Ответить

Ilya Chekalsky

Nikita
0

при мейнтенсе падает весь

PHP умеет по-разному, мы кладём страницу целиком при любой неожиданной ошибке.

Ответить

Andrey Apanasik

Nikita
0

"а при мейнтенсе падает весь, то это не пхп"
Как раз наоборот.

Ответить

Nikita Savyolov

Andrey
0

Ну да, логично было бы предположить, что раз сайт имеет роутер, значит падать он может весь, да и Денис уже подтвердил

Ответить

Евгений Абрамовских

Nikita
0

Го это. И немного ПХП

Ответить

Nikita Savyolov

Евгений
0

Ещё и приложение на котлине или в процессе, во всём оказался не прав, хотя я древнюю версию приложения декомпилировал

Ответить

Кирилл Жарков

0

Интересно, а какой штаб разработчиков?

Ответить

Denis Shiryaev

Кирилл
4

У нас 10 разработчиков в команде, на все сайты — vc.ru, TJournal и DTF

Ответить

Adskiy Sotona

Кирилл
1

Секретный конечно.

Ответить

Sanjar Tolibjonov

0

И сразу вопрос: Laravel или Yii2 или Symfony или Zend?

Ответить

Ilya Chekalsky

Sanjar
3

Свой велосипед, но в том числе и с компонентами Symfony.

Ответить

Иван Мелтдаун

Ilya
4

Главное, что выдерживает хайлоад. А там хоть на чем сделано, неважно. Спасибо вам за работу!

Ответить

Geladamoria

0

Меня больше это интересует, выбивает сразу после отправки комментария, это такая мотивация?

Ответить

Denis Shiryaev

Geladamoria
2

Это рандом с вероятностью ниже процента, мы такие пасхалки любим (:

Ответить

Иван Мелтдаун

Denis
2

У меня кучу раз вылетало... Стоп, но я ведь и комментирую как угорелый!

Ответить

Alexander Mikhaylov

Denis
1

однажды я тут кому-то написал в ответ на "нет", кто обычно так отвечает, и сайт мне тоже сказал, что, дескать, отличный комментарий
ну, не поспоришь
оффтоп, после обновления движка несколько раз сталкивался, что сайт открывается с 500 в содержимом, т.е. только верхняя плашка и эфир загружаются, минут 5 (наверное) висит так, потом восстанавливается

Ответить

Иван Мелтдаун

1

На Паскале, очевидно же.

Ответить

Тайбер Девятый

0

Не важно на каком языке програмирования, главное, что на русском.
<3

Ответить

Юрец

0

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

Ответить

Sergey Nikulin

0

HTML и CSS не ЯП

Ответить

key

0

На !@#$%^ и костылях.

Ответить

SergeevichSHOW

0

Отчет Wappalyzer

Ответить

Donovan

SergeevichSHOW
0

Очень полезная инфа, просто безумно.
4 "сервиса" для трекинга пользователей, шаблончики и нгинкс, за которым вапалайзер ничего не видит. И чем это помогло? Даже FB Pixel не видит. Открыв дев тулзы больше узнать можно.

Ответить

SergeevichSHOW

Donovan
0

Самую полную инфо выдает сервис builtwith. Скорее всего, таких аналогов больше нет

Ответить

Donovan

SergeevichSHOW
0

К сожалению ни один из таких сервисов не покажет, что "под капотом", если нету явных ярлыков, которые оставляет язык/фреймворк :). Хотя и бывают полезны, наверное.

Ответить
0

Прямой эфир

Подписаться на push-уведомления
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]