shikhalev.org
Иван Шихалев
💻 Технологии 📷 Фото 🕮 Жизнь 📚 Тексты 🎭 О себе

Содержание

  • Рубрикатор
  • Последние записи
    • Rack — основа веб-фреймворков в Ruby
    • Средства самопознания в Ruby
    • Метапрограммирование в Ruby: разбор примера
    • Ruby и многозадачность
    • Блоки и контекст в Ruby
    • Распределенный Ruby
    • Декораторы в Ruby

Atom Feeds

  • Все записи
    • Публикации

О себе

  • Иван Шихалев
  • 🖆 shikhalev@gmail.com
  • ⛰ Живу на Урале
  • 💻 Программист
  • 📷 Хобби — фотография
  • shikhalev
  • shikhalev
  • shikhalev
  • ivanshikhalev
  • shikhalev
Atom
🏠   Публикации

Публикации

Публикации в СМИ

Рубрикатор

  • «Системный администратор» (7)

Последние записи

  • 2020.01.11 | Разделы: Технологии :: Программирование :: Ruby :: Публикации :: «Системный администратор» :: Web

    Rack — основа веб-фреймворков в Ruby

    Обложка журнала

    Оригинал этой статьи опубликован в журнале «Системный администратор» №5 (150) за май 2015. Прошу обратить внимание на год — какие-то моменты могут расходиться с современными версиями языка и библиотек…

    Библиотека Rack — простой объектный интерфейс для написания веб-приложений.

    Слово «rack» в английском языке имеет множество значений, включая такие, как «пытка» и «разрушение»… Однако, надо полагать, название рассматриваемой библиотеки произошло от другой группы смыслов: «стойка», «штатив», «каркас» и т.д. Rack обеспечивает простой и в то же время удобный интерфейс, обеспечивающий взаимодействие между веб-сервером и приложением, позволяя программисту сосредоточиться исключительно на логике последнего.

    Этот интерфейс достаточно низкоуровневый и не ограничивает разработчика каким-либо заранее заданным способом организации приложения и высокоуровневыми абстракциями. Соответственно, он и не предоставляет таких абстракций — это уже дело фреймворков, которые работают поверх него: Rails, Sinatra и других.

    Читать далее »

    Теги: Rack

    Нет комментариев :: Добавить комментарий

  • 2016.03.09 | Разделы: Технологии :: Программирование :: Ruby :: Публикации :: «Системный администратор»

    Средства самопознания в Ruby

    Оригинал этой статьи опубликован в журнале «Системный администратор» №1-2 (146-147) за февраль 2015.

    Что программа может знать о самой себе?

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

    В данной статье я планирую рассмотреть те средства «самопознания», которые доступны для программ на Ruby.

    Читать далее »

    Теги: интроспекция, метапрограммирование

    Нет комментариев :: Добавить комментарий

  • 2016.01.27 | Разделы: Технологии :: Программирование :: Ruby :: Публикации :: «Системный администратор»

    Метапрограммирование в Ruby: разбор примера

    Оригинал этой статьи опубликован в журнале «Системный администратор» №12 (145) за декабрь 2014.

    Добавление собственных абстракций в объектную модель — это просто. И интересно.

    Авторы книги «Programming Ruby: The Pragmatic Programmers’ Guide» называют метапрограммированием расширение и изменение абстракций языка (тогда как собственно программирование пользуется теми, что есть). Конечно, можно поспорить о том, что считать такой абстракцией, а что нет, однако нельзя не заметить, что в современных динамических языках, таких как Ruby или, например, Python, легко делаются некоторые вещи, которые в классических языках находились именно на языковом уровне и жестко определялись компилятором. Тут можно вспомнить, для примера, декораторы, о которых я писал в сентябре прошлого года1. И сейчас мы рассмотрим нечто подобное. В процессе я буду делать обобщающие отступления, переходя от частного примера к общим принципам программирования в Ruby.

    1. Статья «Декораторы в Ruby». «Системный администратор» № 9 (130), сентябрь 2013. Стр. 68–71. ↩

    Читать далее »

    Теги: метапрограммирование

    Нет комментариев :: Добавить комментарий

  • 2015.04.04 | Разделы: Технологии :: Программирование :: Ruby :: Публикации :: «Системный администратор»

    Ruby и многозадачность

    Оригинал этой статьи опубликован в журнале «Системный администратор» №3 (136) за март 2014.

    В статье рассматриваются основные средства работы с потоками (threads) и процессами в языке и стандартной библиотеке Ruby

    Немного о терминологии: англоязычный термин «thread» на русский переводится в двух вариантах – как «поток» и как «нить». Второй вариант точнее и не вызывает неоднозначности с потоками данных (streams), однако первый уже прижился в качестве основного. Кроме того, есть еще производные термины и варианты вроде «многонитевость» (или «многонитность»), но они мне не встречались и, честно говоря, режут глаз. Поэтому я буду использовать «поток».

    Прежде, чем перейти к описаниям имеющегося инструментария, хотелось бы заметить, что Ruby создавался не как специальный язык параллельного программирования, при этом во время его создания и становления многозадачность уже стала привычной и необходимой. Из этих двух посылок, в общем-то, можно вывести текущую картину: никаких специфических концепций мы в нем не увидим, только поддержку привычной для всех языков общего назначения модели с некоторыми нюансами реализации.

    Читать далее »

    Теги: многозадачность, многопоточность, оптимизация

    Нет комментариев :: Добавить комментарий

  • 2015.04.01 | Разделы: Технологии :: Программирование :: Ruby :: Публикации :: «Системный администратор»

    Блоки и контекст в Ruby

    Оригинал этой статьи опубликован в журнале «Системный администратор» №1–2 (134–135) за январь–февраль 2014.

    Что стоит за конкретным идентификатором в данном окружении

    Давайте разберемся с программным контекстом в Ruby: какие переменные и другие объекты доступны в конкретном месте программы, и как интерпретатор их ищет? Что обозначает конкретный идентификатор, откуда он берется? Почему отсюда, а не оттуда? И чему, наконец, в этом трижды перекинутом блоке будет равен self?

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

    Читать далее »

    Теги: замыкания, контекст

    Нет комментариев :: Добавить комментарий

  • 2015.03.31 | Разделы: Технологии :: Программирование :: Ruby :: Публикации :: «Системный администратор»

    Распределенный Ruby

    Оригинал этой статьи опубликован в журнале «Системный администратор» №12 (133) за декабрь 2013.

    Технология распределенного Ruby, или dRuby (Dis­t­ri­bu­ted Ruby), позволяет вызывать методы объектов, находящихся в другом процессе и/или на другом компьютере. При этом установка соединения, передача необходимых данных и тому подобное — скрыты от программиста, и использование удаленных объектов мало чем отличается от работы с объектами, заданными внутри программы.

    Это не единственная технология RPC, доступная при про­г­рам­ми­ро­ва­нии на Ruby, однако более универсальные средства, такие как CORBA или XML-RPC, более сложны в использовании и требуют бо́льших накладных расходов (кроме того, поддержка CORBA не входит в стандартную библиотеку Ruby, соответственно, в сопровождении требует дополнительного внимания к совместимости версий и т.д.). В общем, если не требуется взаимодействие с программами, написанными на других языках, dRuby — очень хороший выбор, а с чем его едят и как правильно готовить, мы и рассмотрим в данной статье.

    Читать далее »

    Теги: RPC, dRuby, сериализация, сети

    Нет комментариев :: Добавить комментарий

  • 2015.03.30 | Разделы: Технологии :: Программирование :: Ruby :: Публикации :: «Системный администратор»

    Декораторы в Ruby

    Оригинал этой статьи опубликован в журнале «Системный администратор» №9 (130) за сентябрь 2013.

    Как известно, в языке Python существует красивый механизм декораторов, расширяющих функционал объекта без изменения интерфейса. Это довольно мощное средство, попользоваться им удобно и приятно. Но вот проблема: наш язык программирования — Ruby!

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

    … … …

    Универсальность всегда увеличивает сложность и накладные расходы. Так что мое мнение: жили мы без декораторов в Ruby и еще поживем. Тем не менее сама методика декорирования кода, безусловно, заслуживает внимания и может с успехом применяться в самых разных задачах.

    Читать далее »

    Теги: метапрограммирование

    Нет комментариев :: Добавить комментарий

  • Иван Шихалев
  • shikhalev@gmail.com

Материалы данного сайта опубликованы под лицензией CC BY-SA 4.0. Программный код непосредственно сайта — под лицензией MIT. Код основан на Jekyll c темой Minima. Также использован код allejo/jekyll-toc.

Блог. Склад текстов. И прочее городу и миру.