Архив за 15 марта 2012 - 2

Введение, или зачем нужны синтаксические анализаторы

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

Эта часть посвящена базису, общей теории computer science. Возможно, что это даже преподаётся в школах/вузах России. Самая мякота пойдет со второй части.

Итак, зачем же кому-то может понадобиться писать парсер и что вообще это такое? Парсер — это код, который наделяет входящий набор символов семантическим смыслом. То есть, происходит анализ этих символов, и на основе этого анализа программа понимает как интерпретировать эти буквы и цифры. Простой пример — «1+2», после или во время процесса парсинга знак "+" это не просто символ плюса, но обозначение бинарноого оператора сложения, а в "+3" это унарный оператор знака числа. Большинству людей это очевидно, машине — нет.

Парсеры используются всюду — в Word'e для анализа приложений, словоформ, формул, etc; практически на любом сайте при валидации входных данных: email'а, телефонного номера, номера кредитки; конфигурационные файлы; сериализованные данные (например, в xml); во многих играх — скриптовые ролики, скрипты ИИ, консоль. В общем, это неотъемлемая часть computer science.

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

Проблема

В настоящей статье хотел поделиться своим опытом разработки веб-приложений с использованием JQuery.
В ходе процесса написания бизнес-логики для веб-приложения возникла необходимость грамотно построить код для дальнейшего развития и рефакторинга проекта. Поскольку это был первый опыт работы в «веб-индустрии», решено было идти напролом. Спустя некторое время, стало понятно, что время на поиск необходимого фрагмента уходит гораздо больше, нежели на разработку. Далее хотелось бы предложить свое видение правильной организации и структуризации JQuery-кода.
Читать полностью »

Трансплантация IP адресов с сервера на сервер Допустим, есть задача присутствия удаленных сервисов в каком-то локальном сегменте Internet. Или наоборот — задача присутствия локальных сервисов в удаленном сегменте Internet — как кому нравится.

Блоками IP мы не рулим, с BGP заморачиваться не охота.

То есть нам надо предоставить IP адрес IP1_2 сервера SERVER1 как один из действующих IP адресов сервера SERVER2. Ну и тоже самое — для IP1_3 и SERVER3.

Сами сервера могут быть расположены где угодно по отношению друг к другу. Локальные айпишники IP1_1, IP2_1, IP2_2, IP3_1, IP3_2 должны работать и отвечать как ни в чем ни бывало.

Мы просто добавим на сервера SERVER2 и SERVER3 по одному айпишнику с сервера SERVER1. В добавок еще и тоннель зашифруем.
Читать полностью »

Предыстория

Сразу извиняюсь за сложность, но сложна как сама ситуация для применения этого, так и способ решения, но получается в результате красиво и эффективно :)

Началось с того, что описал одну проблемку о проблемах ООП. Потом случайно благодаря разговорам тут начал обдумывать паттерны проектирования. И в связи с темой «полное копирование объекта» вышел на паттерн Flyweight. Кто не знает — прошу вначале читайте о нем в Приемы объектно-ориентированного проектирования. Паттерны проектирования (Не в вики, а в оригинале).

Основная идея там такова:

Паттерн Flyweight описывает, как совместно разделять очень мелкие объекты без чрезмерно высоких издержек. Каждый объект-приспособленец имеет две части: внутреннее и внешнее состояния. Внутреннее состояние хранится (разделяется) в приспособленце и состоит из информации, не зависящей от его контекста. Внешнее состояние хранится или вычисляется объектами-клиентами и передается приспособленцу при вызове его методов.

Задача

Мы рассмотрим как это улучшить на конкретном примере. О биовычислениях буду говорить очень мало — но пример будет построен на этом. Суть биовычислений попытаюсь полностью вытравить, оставив только схему.

P.S. Если кому то интересна проблематика самих биовычислений по задаче сворачивания РНК/белков — делайте заказ напишу тогда отдельную статью.

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

Предыстория

Сразу извиняюсь за сложность, но сложна как сама ситуация для применения этого, так и способ решения, но получается в результате красиво и эффективно :)

Началось с того, что описал одну проблемку о проблемах ООП. Потом случайно благодаря разговорам тут начал обдумывать паттерны проектирования. И в связи с темой «полное копирование объекта» вышел на паттерн Flyweight. Кто не знает — прошу вначале читайте о нем в Приемы объектно-ориентированного проектирования. Паттерны проектирования (Не в вики, а в оригинале).

Основная идея там такова:

Паттерн Flyweight описывает, как совместно разделять очень мелкие объекты без чрезмерно высоких издержек. Каждый объект-приспособленец имеет две части: внутреннее и внешнее состояния. Внутреннее состояние хранится (разделяется) в приспособленце и состоит из информации, не зависящей от его контекста. Внешнее состояние хранится или вычисляется объектами-клиентами и передается приспособленцу при вызове его методов.

Задача

Мы рассмотрим как это улучшить на конкретном примере. О биовычислениях буду говорить очень мало — но пример будет построен на этом. Суть биовычислений попытаюсь полностью вытравить, оставив только схему.

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

Правильно люди говорят: «Все новое — это хорошо забытое старое»

Возможность встраивания удалённых ресурсов (например картинок с других сайтов) на страницу своего сайта — очень плохая практика. Которая может в определённый момент привести к довольно серьёзным последствиям для сайта. Еще 10 лет назад, я с удивлением читал о том, что такое возможно. И вот прошло 10 лет, ничего не изменилось, и похоже на то, что это вряд ли когда то изменится.

Детали под катомЧитать полностью »

image
Уважаемыее, в этой статье нашего аналитика Вячеслава Медведева мы хотели бы поделиться с вами несколькими мыслями о специфике работы современных сисадминов с антивирусными ПО в компаниях среднего и малого бизнеса. Любые комментарии приветствуются. Вопросы, которые обсуждаются в материале, весьма дискуссионные.

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

Но во многих случаях должность сисадмина — вершина карьерного роста, ведь эти замечательные ребята крайне редко становятся техническими директорами компаний. Более того, иногда начальниками ИТ-отделов становятся люди, ничего не понимающие в настройке и установке железа и программ. Почему же так происходит?
Читать полностью »

Недавно появилась задача реализовать некоторые функции Kerio в linux, а именно авторизацию
пользователей прокси сервера Squid в режиме transparent. Это сделать довольно просто и на
просторах интернета много статей как это сделать, но появилась проблема в режиме transparent
(прозрачный прокси) авторизация не работает. Конечно если у Вас небольшое количество пользователей
это не является проблемой, отключил transparent прописал у всех прокси сервер в браузерах и все.
Но когда пользователей и компьютеров становиться много и прописывать прокси сервер у всех нет
возможности/времени, тут приходиться искать решения. Одно из решений это связка Squid+PHP+NAT.
Читать полностью »

Наверное, каждый сталкивался с такой ситуацией: садишься вечерком за компьютер с намерением отправить пару писем, а отрываешься от монитора уже только тогда, когда за окном начинает светать. И первый вопрос, который приходит в голову в тот момент: чёрт, и что я делал всё это время в интернете?! Самое забавное, что точного ответа обычно не бывает: вроде, там немного почитал, сюда заглянул, туда сходил… А время, отведённое на крепкий и здоровый сон, безвозвратно ушло. Впрочем, теперь появилось средство, позволяющее этого избежать. Точнее, рассветы встречать вы всё равно не перестанете, но зато хотя бы будете знать, куда были бесцельно потрачены драгоценные часы. И всё это благодаря расширению «Web Timer», краткое описание которого под катом.
Читать полностью »

Важной новостью последнего времени для людей, занятых в сфере IP-телефонии, стало открытие удобной в использование и, на данный момент, не раздражающей рекламой Интернет биржи труда voipguru.ru
Из-за узкой специализации этой сферы, клиентам, работодателям и специалистам, готовым предоставить свои услуги, было трудно найти друг друга. На прочих сайтах по фрилансу, объявления терялись в общем бурном потоке. При запросе «фриланс», Яндекс выдает большой список сайтов. На пяти верхних, а значит самых популярных, можно, если постараться, найти одну-две вакансии в конкретно сфере IP-телефонии.
image
Читать полностью »


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