Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 174 сообщений
Cообщения с меткой

keywords - Самое интересное в блогах

Следующие 30  »
rss_rss_hh_new

Играем с ключевыми словами в Javascript

Суббота, 07 Мая 2016 г. 12:24 (ссылка)

image

В статье рассказывается про модуль позволяющий создавать подмножество javascript с любыми ключевыми словами. Строго для безудержного веселья.

На волне статьи про rucckuu.js я обзавидовался и решил обнародовать своё творение: небольшую экосистему для создания произвольных подмножеств javascript. Если к вам давно закрадывалась мысль о том, что некоторые ключевые слова плохо подходят к контексту их применения или мысль о том, что javascript слишком многословен (всякое бывает). Если вы хотите добродушно подшутить над коллегами или просто объяснить вашей маме чем вы всё-таки занимаетесь на работе, добро пожаловать под кат.



Итак, задача транспиляции сама по себе достаточно проста — найти и заменить. Сама же транспиляция в мире современного фронтенда — неотъемлемая часть интеграции новых технологий и спецификаций: все знают что такое babel или traceur-compiler, да и каждый уважающий себя фронтенд-разработчик время от времени поглядывает в рассылку esdiscuss. Молниеносное развитие нашего стека технологий — это боль и чудо в одном флаконе, потому что от возможностей захватывает дух, а от количества возможных вариаций исполнения у некоторых опускаются руки. Очень повезло тем, у кого они опускаются прямо на любимую или просто попавшуюся под них клавиатуру. Для таких бравых героев эта статья может представлять мало академического интереса, поэтому предостерегаю — всё нижесказанное предназначено только для удовлетворение безудержной страсти к созданию интересных штук. Да.



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



Я думаю, многие слышали про esprima, парсер ECMAScript. Немного меньше людей знают про jison. Без первого мы бы не увидели jsx так скоро, а второй обязан своему появлению CoffeeScript, оба инструмента достаточно мощные, но esprima специализируется как раз на том, что мы хотим сделать — поменять внешний вид наших программ.



Скупое вступление окончено, к делу.



Создаем MeowScript




  • node, npm по моему предположению не вызывают у вас ужаса

  • npm i your-script в любую удобную директорию

  • заглянем в node_modules/your-script/lexems

  • создадим файл meowscript.lex

  • откроем javascript.lex из той же папки где-нибудь неподалёку

  • в meowscript.lex заменим определения ключевых слов на что-то вроде:



VAR meow
LET meoww
CONST meOw
FOR meowwr
...



  • any-name.js



meowScript = new translator({
to: 'meowscript'
});

let output = meowScript.parse(`
var kitty = new Kitty(); if (kitty.isHungry()) {kitty.feed()}
`, {
from: 'javascript',
to: 'meowscript'
});

console.log(output);

// stdout:
// meow kitty = MEW Kitty(); meeow (kitty.isHungry()) {kitty.feed()}


В общем, всё.

Область применения модуля ограничена вашим воображением. Под капотом находится как раз esprima, которую я уже упоминал, с тем исключением что эта версия пропатчена (вручную и с любовью) для того, чтобы поддерживать произвольный набор ключевых слов. Умолчу про объем труда, который пришлось проделать, чтобы вручную найти все hardcoded использования и заменить их на корректные референсы. После этого пришлось лишь добавить загрузчик для поддержки произвольной замены наборов ключевых слов во время исполнения. Работа достаточно простая, но кропотливая.

Помимо этого в комплекте упакован примитивный keyword провайдер с самым примитивным парсером .lex. Все модули валяются в свободном доступе и доступны для пинания всеми желающими





Фактически, с этим набором инструментов можно создавать произвольные подмножества javascript в течении нескольких минут. Единственное ограничение — неспособность модуля находить стандартные интерфейсы ноды или браузера. Так что увы, document.body.getBoundingClientRect, господа. Добавить поддержку транспиляции интерфесов тоже не так сложно, нужно всего лишь определить правила следования identifiers и осуществлять замену согласно им.



Напоследок, картинка в хедере поста неслучайна, как пример использвания your-script, я написал redscript — русское подмножество javascript. Ну и как следствие использования настоящего парсера:



var стр = 'var';


будет корректно транспилировано в:



пусть стр = 'var';


Сам модуль валяется в npm. Для затравки, пример транспилированной программы:



функция функ(икс, игрек, зет) {                         
примем и = 0;
примем икс = {0: "ноль", 1: "один"};
примем функ = функция () {
}
если (!и > 10) {
для (примем j = 0; j < 10; j++) {
переключатель (j) {
положение 0:
значение = "zero";
стоп;
положение 1:
значение = "one";
стоп;
}
примем с = джей > 5 ? "ГТ 5" : "ЛЕ 5";
}
} иначе {
примем джей = 0;
попробуй {
пока (джей < 10) {
если (и == джей || джей > 5) {
a[джей] = и + джей * 12;
}
и = (джей << 2) & 4;
джей++;
}
делай {
джей--;
} пока (джей > 0)
} лови (e) {
alert("Крах: " + e.message);
} затем {
обнулить(a, и);
}
}
}


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



лови (крах) {
КрахДетектор(крах);
}


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





Original source: habrahabr.ru.

https://habrahabr.ru/post/283108/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Комментарии (0)КомментироватьВ цитатник или сообщество
vitaly80

Метатеги Title, Description и Keywords и их роль в SEO

Четверг, 12 Февраля 2016 г. 02:49 (ссылка)
seo58.ru/sovety/7-metategi-...-rol-v-seo

Узнайте о метатегах Title, Description и Keywords и их роли в оптимизации сайтов. Какая у них длина и что туда писать.
Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Анализ больших семантических ядер, или «Робот-распознаватель»

Среда, 12 Августа 2015 г. 14:25 (ссылка)

Говорят, метатеги для целей SEO мертвы и больше нет смысла прописывать заветную строку meta keywords. Действительно, в современных многофакторных алгоритмах этот тег потерял свой вес. Но это вовсе не значит, что нужно отказываться от работы с семантическим ядром сайта — оно по-прежнему бесценно для структурирования сайта, формирования тематики (которой и интересуются поисковики) и даже для контекстной рекламы. Собрать ядро — задача не из лёгких, собрать его с умом и не превратить в «накидайте мне синонимов» — ещё сложнее. Так вот, в статье пойдет речь о макросах и формулах MS Excel, которые упростят обработку больших семантических ядер. Представляем вам небольшого Excel-робота от нашего изобретательного и не жадного специалиста отдела контекстной рекламы RealWeb Дмитрия Тумайкина. Ему и слово.

image



«Привет, Хабр! C самого начала хочу предупредить читателей, что разработка не является чем-то новым на рынке по логике и принципу работы, но имеет ряд преимуществ перед другими известными инструментами:




  • Является полностью бесплатной для всех пользователей(в отличие от KeyCollector и ряда других подобных сервисов).




  • Не требует подключения к интернету + использует локальные мощности (есть версия, созданная для Google Docs, но на больших объемах данных работает медленнее вашего компьютера, даже одноядерного, т.к. корпорация добра по привычке ограничивает процессорные мощности на 1-го пользователя.




  • Представляет собой оптимизированный (насколько позволяет знание алгоритмов вычислений Excel) алгоритм для обработки больших ядер.




Файл является одним из серии файлов для специалистов по контекстной рекламе (планируются ещё интересные и очень полезные «роботы»). К слову сказать, разработка была создана «с нуля», и уже постфактум стало известно, что на рынке уже есть схожие макросы для табличных редакторов – например, публикация Devaka (макрос для OpenOffice) и разработка команды MFC-team, являющаяся адаптацией этого макроса под MS Excel. Впрочем, ни один из файлов не мог удовлетворить мои потребности как потребности специалиста по контекстной рекламе. У нашей разработки есть свои преимущества, о чём расскажу чуть ниже.



А пока — зачем это нужно?



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




  1. «Пробежавшись» по запросам глазами, пытаемся понять общую смысловую направленность, выделяем, какие категории запросов присутствуют в ядре.




  2. Определяем и выделяем слова-маркеры, которые позволят отнести запросы к той или иной категории. Самый примитивный вариант — «целевой-нецелевой», но можно выделять и направленность слов. Например, для компаний, работающих с e-commerce, популярными будут оптовые (опт, база, склад, оптовый…), информационные (как, где, отличие, сравнение, отзывы…), покупающие (магазин, купить, цена, стоимость…), арендные (прокат, напрокат, в прокат, аренда…), гео-маркеры, и т.д…




  3. Ищем каждый из запросов в исходном списке с помощью фильтров, помечаем эти запросы. Здесь всё зависит от фантазии – если у нас всего два варианта, то достаточно запросы просто отметить разными цветами. Если же вариантов много, чтобы не допустить путаницы, мы могли бы отметить напротив запросов в соседнем столбце в той же колонке название той самой категории, к которой принадлежит слово-маркер, содержащееся в запросе. А чтобы всё было ещё более наглядно, можно указывать в дополнительном столбце и само слово-маркер. К этому в итоге я и пришёл.




  4. После того, как всё разложено «по полочкам» таким образом – используем полученные списки в своих целях. Специалисты контекстной рекламы выставляют корректировки ставок в зависимости от категории запроса (например, чем «теплее» запрос, тем выше ставка), либо «минусуют» совсем нецелевые запросы.



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



KeyСollector и СловоЁБ — многофункциональные программы, одна из задач которых – сбор семантического ядра. Первая платная, вторая является урезанной бесплатной версией. В них есть модуль «стоп-слова», позволяющий отметить фразы в таблице, содержащие данные стоп-слова.

Минусы данных программ:




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




  • Если использовать поиск, не зависящий от словоформы, то могут быть ошибки сопоставления, например, «бельё» и «белый» считаются морфемами одного слова.




http://py7.ru/tools/group/ — инструменты появились в открытом доступе совсем недавно, но завоевали нешуточную популярность. Механика работы данного инструмента немного отличается от KeyCollector-а, но проблемы те же самые – ошибки со словоформами, невозможность анализировать несколько категорий одновременно.



Вышеупомянутые макросы Devaka и MFC. Здесь основной проблемой является то, что оба макроса используют алгоритм поиска по «маске», т.е. если слово-маркер является составляющей частью любого из слов, весь запрос относится к этой категории. В итоге, чем короче слово-маркер – тем больше ошибок, со словами Б и БУ невозможно работать априори, но верхний порог по символам даже в 6 символов не избавит вас от необходимости перепроверять всё сделанное. Например, слово «ванная» встречается в сотнях отглагольных прилагательных (лакированная, гофрированная…). Понятно, что во многих случаях о релевантности и речи не идёт.



И вот именно поэтому…



… я и создал свой файл с блэкджэком формулами и макросами. Не мудрствуя лукаво, он просто анализирует, встречается ли слово в точном соответствии в вашем запросе, поэтому никаких ошибок нет априори. Многие формулы (Substring, Multicat) не написаны с нуля, а являются импортированными из надстройки PLEX (за которую отдельная благодарность ее создателю).



Теперь подробнее о разработке, комментарии на скриншоте:







Ссылка на файл: робот-распознаватель

В файле 2 макроса, действующих по простому принципу – они:




  • Делят запросы на слова (разделителем считается пробел). По принципу AdWords, только первые 10 слов.




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




  • Если находят слово в банке – возвращают его, если не находят, возвращают «две кавычки» (пустой результат).




  • Нехитрой формулой ВПР (вертикальный просмотр) возвращают категорию каждого из слов из соседнего столбца.




  • Склеивают все полученные параметры вместе (через пробел) и выводят в соответствующие столбцы напротив.



Пример формулы, которая делает всё это в одной ячейке, сохранён в верхней строке, откуда её можно просто копировать вручную. Есть и макрос, который сделает это за вас, поместив новые данные в диапазон ровно напротив вашего списка ключей (в нём не должно быть пустых ячеек!). Однако такой вариант более ресурсозатратный, и заставит вас достаточно долго ждать, если количество ключевых слов и банк минус слов, допустим, более 5000. Поэтому создан второй макрос, делающий всё то же самое «пошагово» и отбрасывающий по пути ненужные вычисления.



Рекомендации:




  • Для ускорения работы макроса рекомендуется «банк минус-слов» иметь в сортированном виде «А-Я» (по слову).




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




  • Но быть с ними внимательными (проверять итоговый список). Так, «Дели» (город) и «Делить» — для программ-нормализаторов условно — одно и то же слово. Похожие примеры — «чай» и «чаять» или «покрывала» и «покрыть»




  • Не лениться составлять собственные списки минус-слов для разных тематик и делиться ими с коллегами.




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




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



P.S.: Пожелания и багрепорты приветствуются.

На текущий момент в файле используется линейный поиск ВПР. Позже выложу версию файла с бинарным поиском, прирост скорости вычислений на больших объемах будет колоссальный. Список минус-слов, указанный в файле, не является рекомендацией и может навредить вам и/или вашему клиенту, поэтому призываю проверять публичные списки (включая этот) на соответствие тематике вашего клиента, и дополнять его новыми словами. Формулы и макросы работают только в оригинальном файле, и не будут работать в других. Использование макросов в Excel не вредит вашему здоровью :-)»



На этом и заканчивается история Дмитрия о создании полезного макроса. А мы напоминаем, что иногда самые сложные задачи имеют простые решения. MS Excel всегда был и остаётся главным помощником аналитиков, специалистов по контекстной рекламе и SEO-оптимизаторов. Его функции, формулы и макросы способны порождать интересные инструменты, облегчающие труд специалистов. Ну и, конечно, будет очень здорово, если некоторые из разработок будут выкладываться в открытый доступ и приносить реальную практическую пользу.

Original source: habrahabr.ru (comments, light).

http://habrahabr.ru/post/264591/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
svetikya

Где взять надежную защиту для рук

Пятница, 10 Июля 2015 г. 13:55 (ссылка)


logo (208x128, 29Kb)

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



Негативы, ежедневно влияющие на кожу



Ни для кого не является секретом нелегкая женская работа по дому. Нам приходится выполнять самые опасные для кожи мероприятия такие, как:



* Мытье посуды;



* Чистка плиты;



* Уборка ванной комнаты, при которой используются средства с абразивами;



* Стирка ковровых покрытий;



* Ручная стирка деликатных вещей и многое другое.



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



Именно от таких природных и других факторов необходимо беречь кожные покровы при помощи защитных кремов.



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



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



Как правильно выбрать защиту своей коже



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



* Наличие в составе крема масел и натуральных экстрактов;



* Наличие такого компонента, как гиалуроновой кислоты;



* Содержание в креме ультрафиолетовых фильтров;



* Наличие фруктовых кислот и витаминов, которые способствуют подтягиванию кожи.



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



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



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



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







 



clinic-hands-skin (465x342, 21Kb)

Метки:   Комментарии (7)КомментироватьВ цитатник или сообщество

Следующие 30  »

<keywords - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda