Pull to refresh
21
0
Дизайнер интерфейсов @ArturSitnikoff

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

Send message

LL(*) парсер с использованием Rust макросов

Reading time10 min
Views6.5K
Wow. Such Rust. Much macro.

Wow. Such Rust. Much macro. © картинка - Твиттер аккаунт Servo


Язык Rust стремительно набирает обороты. Кто-то пророчит ему стать заменой C/C++, кому-то он просто нравится. Я скорее принадлежу ко второй группе. Разработчики стараются сделать его удобным и безопасным. В нем есть конструкции и принципы, которые еще не скоро появятся в "плюсах", ввиду инерции комитета и множества других причин. Поэтому, для всех личных проектов я предпочитаю использовать именно Rust.


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


Однажды, когда я в очередной раз застрял с синтаксическим анализатором (он же "парсер"), я подумал, что уж очень много я пишу однотипного кода. И этот однотипный код один в один ложится на грамматику в форме Бэкуса — Наура (БНФ).


Немного подумав, я решил, что мне надо написать генератор кода на основе грамматики. И для этой задачи как нельзя хорошо подходят макросы в Rust.


В статье описана реализация LL(*) парсера с использованием макросов. И реализован парсер простых математических выражений.


В итоге парсер для БНФ грамматики:


expr ::= sum
sum  ::= mul "+" sum | mul "-" sum | mul
mul  ::= atom "*" mul | atom "/" mul | atom
atom ::= "(" expr  ")" | number | neg;
neg  ::= "-" atom

Можно сгенерировать с помощью серии макросов:


rule!(expr, sum);
rule!(sum, or![
     and![(mul, token('+'), sum) => make_operator],
     and![(mul, token('-'), sum) => make_operator],
     mul
]);
rule!(mul, or![
     and![(atom, token('*'), mul) => make_operator],
     and![(atom, token('/'), mul) => make_operator],
     atom
]);
rule!(atom, or![
    and![(token('('), expr, token(')')) => |_lbrace, stat, _rbrace| Some(stat)],
    num,
    neg
]);
rule!(neg, and![(token('-'), atom) => |_, number| Some(Box::new(expression::Expression::Negate(number)))]);
Читать дальше →
Total votes 41: ↑41 and ↓0+41
Comments17

10-гигабитный Ethernet: советы новичку

Reading time5 min
Views175K


Вдохновившись интернет-запросами в стиле «как сделать спиннер из картонки», я решил рассказать о том, что близко мне: как самому построить 10-гигабитную сеть. Гигабитный Ethernet вопросов уже не вызывает – справится даже школьник: потребуется коммутатор, медная витая пара и привычные RJ-45 разъемы.

А если хочется больше? Например, 10-гигабитное соединение для небольшого офиса или серверной. Какое оборудование понадобится и как его подключать – просто и по шагам в моей сегодняшней статье.
Читать дальше →
Total votes 65: ↑62 and ↓3+59
Comments95

Видеозаписи докладов конференции Happу New Front-End: О фронтенде по-новому

Reading time2 min
Views16K


Команда проекта GeeksLab 18 января 2014 года в Одессе провела конференцию Happу New Front-End: О фронтенде по-новому!. В рамках конференции были подняты темы современной верстки, разработки фронтенда на чистом JavaScript, а также использования различных CSS и JavaScrpt фреймворков для построения фронтенда веб-проектов. С докладами выступили представители таких компаний как: rollApp, Universal Mind, DataArt, Ciklum, Elis, R2Crew, RootUA Media, WMSoftware, Electric Cloud. Презентации и видеозаписи докладов под катом.
Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments13

Минздрав и «Яндекс» готовят законопроект о легализации медицинских интернет-сервисов

Reading time2 min
Views4.2K
В ближайшие пару недель «Яндекс» вместе с Минздравом начнут работать над законопроектом о так называемой «телемедицине». Это позволит создать правовые основы для использования IT в здравоохранении. 29 февраля Минздрав разместил уведомление о начале разработки законопроекта на regulation.gov.ru.

«Мы считаем важными разработку и утверждение единого стандарта хранения и протокола обмена данными о здоровье. Это важное условие для развития телемедицины в России», сообщил «Коммерсанту» гендиректор «Яндекса» в России Александр Шульгин.

Пациент должен иметь возможность в электронном виде предоставлять согласие на доступ и обработку информации о здоровье, считает господин Шульгин. По его словам, важно обеспечить доступа пациента к электронным данным медицинской карты и урегулирование вопросов идентификации пациента и врача при оказании телемедицинских услуг.
Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments1

Управление API и SOA

Reading time9 min
Views17K
Достижение начального успеха для Сервис-ориентированной Архитектуры (Service Oriented Architecture, SOA) определяется:
  • созданием слабосвязанных соединений «потребитель-поставщик»,
  • соблюдение принципа разделения ответственностей между потребителем и поставщиком,
  • публикация набора повторно используемых, общих сервисов
  • и обеспечение того, чтобы потребители приняли и стали использовать сервис.

Множество команд разработчиков создают и используют сервисы, но до сих пор идет мучительный подбор архитектуры, при которой сервисы будут широко использованы, с потенциалом для повторного использования внутренними командами разработки. Вместо создания согласованной сервисной архитектуры и демонстрации множественного использования одних и тех же сервисов, разработчики вновь и вновь не нарочно создают «Просто Набор Веб Сервисов» (Just a Bunch of Web Services (JBOWS)) или «Просто Набор REST Сервисов» (Just a Bunch of REST Services (JBORS)).

Простое приложение чаще всего работает с неким сервисом и спагетти-сетью конечных точек, поставщиков данных этого сервиса, которые переплетены связями один-к-одному. Многие команды в этом случае сходятся во мнении что фокус на SOA и REST не то чтобы помогал в решении вопросов гибкости решений. Скорее просто происходит подмена набора IT инструментов, форматов сообщений и протоколов.

Управление SOA, API, и приложением может стать мостом между этими концепциями и улучшить архитектурную согласованность всего решения.

Сервисы, API и архитектура


Когда вы будете решать, что использовать как лучшие практики для сервис-ориентированной архитектуры, определять дизайн RESTful сервисов, когда будете формировать план по управлению ими, четко определите, как ваши сервисы и API вместе будут укладываться в общую архитектурную картину.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments2

Как создать свой собственный Dependency Injection Container

Reading time9 min
Views34K
Привет всем!
Это вольный перевод статьи How to Build Your Own Dependency Injection Container.
Т.к. это мой первый перевод для хабра, прошу указывать на ошибки, неточности.

Как создать свой собственный Dependency Injection Container.


Поиск “dependency injection container” на packagist на данный момент выдает более 95 страниц результата. С уверенностью можно сказать, что это особое “колесо” уже изобретено.

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

В этой статье мы собираемся учиться делать простой dependency injection container пакет. Весь написанный в статье код плюс PHPDoc аннотации и unit-тесты с 100% покрытием доступны на GitHub. Все это так же добавлено на Packagist.
Читать дальше →
Total votes 25: ↑17 and ↓8+9
Comments0

Почему вам НЕ стоит использовать AngularJs

Reading time12 min
Views248K
Много времени прошло с момента появления AngularJs (в масштабах веб-технологий конечно). Сейчас в интернетах есть огромное количество постов восхваляющих этот фреймворк до небес, что это манна небесная не иначе, а критики не так уж и много как он того заслуживает. Но такие статьи уже потихоньку начинают появляться, и меня это радует, надеюсь индустрия переболеет ангуляром так же, как переболела MooTools, Prototype, %какой-нибудь новый язык под JVM%, %другая-супер-революционная-технология%. Не знаю почему, но в IT-области такие революционные технологии, которые поднимают шум, а потом пропадают, появляются довольно часто. Хороший разработчик должен уметь отличать очередную модную технологию, от работающего инструмента. И для этого очень важно критически смотреть на вещи. Моя статья — это компиляция самых весомых выводов из других статей, и моих личных умозаключений. Ангуляр создает хороший вау-эффект, когда видишь его впервые: «ух ты, я написал ng-repeat, и реализовал эту логику одними тегами и все само обновляется!», но как только приходится реализовывать реальные приложения, а не очередной TODO-лист, то все становиться очень печально. Сразу хочу сказать, что фреймворк я знаю хорошо, даже больше чем мне хотелось бы его знать, я программировал на нем в течении 2 лет. И для следующего проекта я его точно не выберу, и это хорошо, все мы учимся на ошибках. Так что же не так с ангуляром? Тут нет однозначного ответа, слишком много разных недостатков, которые создают такой облик фреймворку. Если одним словом – непродуманная архитектура. Под катом я привожу конкретику, так что устраивайтесь поудобнее. ДА НАЧНЕТСЯ ХОЛЛИ ВАР!
Читать дальше →
Total votes 305: ↑242 and ↓63+179
Comments387

IBM запускает 50 проектов для сообщества разработчиков Open Source

Reading time4 min
Views15K
image

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

developerWorks Open – облачная площадка, где разработчикам открыт доступ к последним решениям IBM, техническим знаниям и опыту компании. Кроме того, платформа позволяет взаимодействовать с глобальной сетью программистов для ускорения создания и реализации проектов. Разработчики смогут не только загрузить код, но и посетить блоги, посмотреть видеоматериалы, получить доступ к инструментам и методике, которые помогут им в работе. Благодаря платформе программисты смогут более оперативно создавать и внедрять приложения с открытым исходным кодом, которые отвечали бы различным бизнес-требованиям клиентов.
Читать дальше →
Total votes 19: ↑16 and ↓3+13
Comments0

PHP библиотека для интеграции с API Новой Почты

Reading time8 min
Views30K
Привет друзья.
Хочу поделиться PHP библиотекой (SDK) для интеграции с API 2 Новой Почты (НП). Но сначала несколько слов о Новой Почте.
Новая Почта является лидером экспресс-доставки и перевозки грузов по всей Украине. В Новой Почте много услуг, что делает ее лидером на украинском рынке перевозок. Склады есть во всех городах Украины, очень быстрая курьерская служба. Основные услуги, которые компания надает: доставка и возврат грузов в розничных сетях; доставка паллетированного груза; обратная доставка,; наложенный платёж за товар; вызов машины; хранение груза; упаковка груза, доставка груза по городу и прочее. Для упрощения создание ТТН можно использовать API компании, что даст возможность оптимизировать создания ТТН.

Возможности которые дает SDK:
  • Работа с адресами
  • Работа со справочниками
  • Работа с контрагентами
  • Методы для получения печатных форм документов
  • Работа с реестрами экспресс-накладных
  • Работа с экспресс-накладными:
    • создавать экспресс-накладные
    • редактировать данные в созданных экспресс-накладные (до передачи отправления)
    • удалять/отменять созданные экспресс-накладные (до передачи отправления)
    • загружать списки документов используя фильтры
    • отслеживать статусы отправления



Читать дальше →
Total votes 23: ↑17 and ↓6+11
Comments17

Шпионские штучки в Wolfram Language, или как спрятать в картинке всё что угодно

Reading time4 min
Views26K

Перевод поста Джона Маклуна (Jon McLoone) "Doing Spy Stuff with Mathematica".
Код, приведенный в статье, можно скачать здесь.
Выражаю огромную благодарность Кириллу Гузенко KirillGuzenko за помощь в переводе.

Я читал о IT проблемах недавно арестованных, как заявлялось, русских шпионов. Говорилось, что они пользовались не самыми надёжными инструментами цифровой стеганографии (вики). И мне стало интересно — насколько быстро я смогу реализовать стеганографию через цифровые изображения в Mathematica, используя метод, известный как "вставка младшего бита" (least significant bit insertion).

Идея стеганографии основывается на том, чтобы спрятать сообщения в какой-то другой информации таким образом, чтобы никто факта коммуникации не заметил. Само слово происходит от латино-греческий комбинации, означающей «скрытное письмо»; данным термином назывался процесс нанесения секретного сообщения на лысую голову человека, на которой затем отрастали волосы и, тем самым, прятали сообщение. В случае цифровой стеганографии всё делается посредством математики.
Читать дальше →
Total votes 27: ↑23 and ↓4+19
Comments3

OpenSource проект может развиваться и приносить прибыль?

Reading time3 min
Views17K
Уже довольно долгое время я задаюсь вопросом: «Может ли в наших суровых реалиях жить и развиваться Open Source проект?». Этот вопрос меня периодически тревожит, так как я сам являюсь автором одного такого проекта — WysiBB. Я задавал подобный вопрос на различных ресурсах, были вопросы и на Тостере. Но по сути все сводилось к тому, что в русскоязычном сегменте интернета не работают кнопки «Поддержать проект», «Пожертвовать» и т.д. и развиваться могут только проекты с огромной аудиторией и/или платными функциями.

image

В чем суть?

Но вот наконец в один прекрасный день, я наткнулся на интересную идею, как можно получать некоторые финансовые вливания в развитие и видеть, какие фичи наиболее востребованы пользователями. Эту идею я увидел на сайте Robomongo(кто не знает, это GUI для MongoDB). И ее суть заключается в следующем: пользователю предоставляется возможность выбрать из списка issues(с джитхаба) наиболее его тревожащую и пожертвовать средства на ее доработку. Когда пользователь делает пожертвование, рейтинг приоритетности этой фичи повышается. Так автор проекта получает средства на свой кошелек и видит какие фичи имеют наивысший приоритет(больше всего пожертвований) и соответственно являются наиболее востребованными. Автор приступает к их разработке в первую очередь, проект развивается, а пользователь получает долгожданную фичу. Мне эта идея понравилась и я решил реализовать подобный механизм на своем проекте, а когда начал работу над этим сервисом, понял что такой сервис может быть полезен не только для меня. Так появился на свет GitFund.
Читать дальше →
Total votes 45: ↑34 and ↓11+23
Comments54

Почему непросто показать все цвета в одномерном пространстве, и сколько раз это можно сделать

Reading time7 min
Views41K
Яндекс умеет подсказывать цвета по их названию и находить близкие к ним. Некоторое время назад эту подсказку (внутри себя мы называем такие штуки «колдунщиками») пришлось переделывать, чтобы она соответствовала виду поисковых результатов после их редизайна. И мы воспользовались этим поводом, чтобы поработать над ним всерьёз, — ведь оказалось, что расположить цвета линейно — очень нетривиальная задача.







В этом посте я хочу рассказать, какую интересную алгоритмическую задачу, которая потребовала погружения в теорию цвета, нам пришлось решать почти всем Яндексом, чтобы сделать новый колдунщик таким, каким его задумала команда.
Читать дальше →
Total votes 71: ↑68 and ↓3+65
Comments31

Зачем регистрировать программу для ЭВМ? Актуально на 2021 год

Reading time3 min
Views112K
Статья актуальна на 2021 год!

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

Это наиболее очевидный и простой способ защиты прав на ПО. Но насколько этот способ защиты действенный и какие преимущества в защите прав дает регистрация?

Внимание! Апгрейд статьи в связи с изменением порядка регистрации с 18 июля 2016 г. здесь.

image

Попробуем разобраться
Total votes 47: ↑38 and ↓9+29
Comments34

Сколько же на самом деле стоит facebook?

Reading time7 min
Views21K


Второй квартал 2012 года уже вовсю идет, количество слухов вокруг IPO социальной сети №1 увеличивается. Давайте вспомним, что происходило с этой сетью и попробуем посчитать сколько же она на самом деле стоит. Откуда взялась цифра в 100 млрд. $ и почему она, мягко говоря, завышена.

Читать дальше →
Total votes 128: ↑101 and ↓27+74
Comments107

Айтишник 60 уровня. Что дальше?

Reading time5 min
Views130K
У многих из нас есть родители или родственники, которые находятся в одном шаге от пенсии. Хотя мне еще только немного за 30, я предлагаю вам немного расширить кругозор и, может быть, что-то пересмотреть в своей жизни.



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

Да да, именно вы решили, потому что вы стареете именно потому, что вы этого ожидаете.

А главный бонус в том, что можно увеличить продуктивный период жизни в 2 раза, причем на приличные еще 30 лет(!) и более. Т.е. в 60 лет у вас будет 35-40 лет продуктивной жизни, а здесь я расскажу как эту продуктивность сохранить до 90 лет и более. Интересно?

Внимание! Возрастное ограничение 30+, ваша психика может пострадать.
Читайте пост на свой страх и риск!



Читаем подробный лайфхак.
Total votes 162: ↑120 and ↓42+78
Comments153

Как работает инжектор?

Reading time10 min
Views185K
В заметке пойдет речь о работе «мозгов», управляющих двигателем вашего автомобиля или мотоцикла. Попытаюсь на пальцах и в общем объяснить что же и как происходит.

Чем занимаются те самые «мозги» и для чего они нужны? Электроника — альтернатива другим системам, выполняющим те же функции. Дозированием топлива занимался карбюратор, зажиганием управлял механический или вакуумный корректор угла опережения зажигания. В общем не электроникой единой возможно реализовать все это и достаточно продолжительное время именно так и было. На автомобилях, мотоциклах, бензопилах, бензогенераторах и во многих многих других местах работали и продолжают работать те самые системы, которые призван заменить инжектор.
Зачем же понадобилось что-то менять? Зачем сносить существующие проверенные и весьма надежные системы? Все просто — гонка за экономичностью, экологичностью и мощностью. Точность работы описанных выше систем недостаточна для обеспечения желаемого уровня экологичности и мощности, а сами по себе электронные системы управления двигателем начали появляться достаточно давно.
Читать дальше →
Total votes 200: ↑184 and ↓16+168
Comments101

Правильное продвижение или как пригласить порнозвезду на выпускной

Reading time3 min
Views10K


До чего же странная штука твиттер! В одном профиле нет ничего, кроме коротких сообщений, как его владелец пошел в туалет и вернулся счастливым. В другом, президент США общается с американцами.

А один простой восемнадцатилетний школьник Майк Стоун воспользовался твиттером, чтобы на выпускной бал пригласить в качестве подружки порно звезду!
Читать дальше →
Total votes 310: ↑237 and ↓73+164
Comments130

Новый альбом Madonna «MDNA» — легально и бесплатно

Reading time1 min
Views6K
Довольно интересную акцию устроил сервис Яндекс.Музыка

За три дня до мировой премьеры, Мадонна представляет свой новый альбом MDNA эксклюзивно на Яндекс.Музыке.

Новые песни Мадонны доступны на Яндекс.Музыке не только для бесплатного прослушивания. Впервые в истории сервиса 100 тысяч пользователей смогут также скачать альбом в хорошем качестве.


clubs.ya.ru/company/replies.xml?item_no=44946
Total votes 88: ↑66 and ↓22+44
Comments87

Ещё 6 стартапов, которые получат гранты от Мильнера и Дурова

Reading time1 min
Views3.8K
Об условиях участия в программе можно почитать здесь. Новости здесь. Первый пост здесь.

Напомню, что размер безвозмездного гранта для каждого проекта составляет 25 000 $.

Animating Touch — анимационный редактор (мобильное приложение), в котором можно создавать короткие мультики с участием заданных персонажей для платформы Android. Основатель: Евгений Баландин;

Keycaptcha.com — сервис защиты от спама с помощью весьма интерактивной капчи в виде пазла со встроенной возможностью монетизации. Основатели: Николай Прайс, Максим Владыкин, Игорь Никифоров;
Читать дальше →
Total votes 41: ↑31 and ↓10+21
Comments50

Обучаем HID устройство (читай BT-клавиатуру) работать правильно

Reading time6 min
Views80K
Приветствую, хабралюди!
На ДР, мне друзья подарили BT-клавиатуру. Маленькая, беленькая, симпатичная, Удобная!
Подключил ее к своему Android 2.3.5 (SGSII), стал с ее помощью лазить по меню, запускать программы, дошел до Вконтакте и решил написать сообщение… а вот переключить на русский язык не смог, но как оказалось позже, это еще были только цветочки! Но кое-что мне удалось. Интересно как?
Вперед по кат...
Total votes 100: ↑93 and ↓7+86
Comments82
1
23 ...

Information

Rating
Does not participate
Location
Россия
Registered
Activity