<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>FirWood</title><subtitle>Пишу Просто. </subtitle><author><name>FirWood</name></author><id>https://teletype.in/atom/firwoods</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/firwoods?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@firwoods?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=firwoods"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/firwoods?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-04-21T22:05:40.861Z</updated><entry><id>firwoods:here-there-and-everywhere</id><link rel="alternate" type="text/html" href="https://teletype.in/@firwoods/here-there-and-everywhere?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=firwoods"></link><title>Here There And Everywhere</title><published>2023-07-12T09:25:23.619Z</published><updated>2023-07-12T09:25:23.619Z</updated><category term="muzyka" label="Музыка"></category><summary type="html">Решил начать выкладывать свои многочисленные записи на общедоступные платформу. Довольно сложно было выложить, зная и слыша все косяки, но я это сделал :) </summary><content type="html">
  &lt;figure id=&quot;WdbV&quot; class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://www.youtube.com/embed/BwMhVVbKlbA?autoplay=0&amp;loop=0&amp;mute=0&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;n2AG&quot;&gt;Решил начать выкладывать свои многочисленные записи на общедоступные платформу. Довольно сложно было выложить, зная и слыша все косяки, но я это сделал :) &lt;/p&gt;

</content></entry><entry><id>firwoods:heroes-concert</id><link rel="alternate" type="text/html" href="https://teletype.in/@firwoods/heroes-concert?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=firwoods"></link><title>Посетил Концерт</title><published>2023-04-07T07:28:54.955Z</published><updated>2023-04-07T07:28:54.955Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/27/3c/273c53f8-3f1b-4457-ad4f-4b9a94e6bc00.png"></media:thumbnail><category term="muzyka" label="Музыка"></category><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/d2/38/d23822bb-1129-460e-8a80-2033799fc99a.jpeg&quot;&gt;Посетил симфонический концерт, где играли композиции Пола Ромео. Билеты купил в день концерта, благодаря рекламе на Яндекс Дзен :) Так что не спешите хоронить контекстную рекламу. </summary><content type="html">
  &lt;figure id=&quot;Q07X&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d2/38/d23822bb-1129-460e-8a80-2033799fc99a.jpeg&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;5oIQ&quot;&gt;Посетил симфонический концерт, где играли композиции Пола Ромео. Билеты купил в день концерта, благодаря рекламе на Яндекс Дзен :) Так что не спешите хоронить контекстную рекламу. &lt;/p&gt;
  &lt;p id=&quot;pHUd&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;4uE8&quot;&gt;Хорошо составленные программы, всегда предполагают пару песен на бис, которых не было в программе. Обычно бонусные композиции заранее определены и не зависят от того, насколько интенсивно хлопают. Но людям приятно думать, что именно они  &amp;quot;заставили&amp;quot; продлить концерт.  &lt;/p&gt;
  &lt;p id=&quot;ZbDw&quot;&gt;Концерт шел 70 минут, без антракта. Особенно хорошо сыграно Некрополис.&lt;/p&gt;
  &lt;p id=&quot;MJ7Q&quot;&gt;Не особо люблю что-то записывать во время концерта, это довольно бессмысленно, но главную тему записал. &lt;br /&gt;&lt;a href=&quot;https://rutube.ru/video/919fa782b45b2024e86f322453757195/&quot; target=&quot;_blank&quot;&gt;https://rutube.ru/video/919fa782b45b2024e86f322453757195/&lt;/a&gt;&lt;/p&gt;
  &lt;figure id=&quot;mgGU&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://neoclassica.ru/wp-content/uploads/2019/02/314744_yandex2-e1554117945382.png&quot; width=&quot;600&quot; /&gt;
  &lt;/figure&gt;

</content></entry><entry><id>firwoods:ruby-service</id><link rel="alternate" type="text/html" href="https://teletype.in/@firwoods/ruby-service?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=firwoods"></link><title>Принципы написание сервисов на Ruby</title><published>2023-02-20T13:58:01.951Z</published><updated>2023-02-20T13:58:01.951Z</updated><category term="it" label="it"></category><summary type="html">Если пользоваться всеми возможностями язык, то получается хорошо. </summary><content type="html">
  &lt;pre id=&quot;1tvk&quot; data-lang=&quot;ruby&quot;&gt;class PrintService
  attr_accessor :output_path, :template_path, :tracker_name
  def initialize
    @template_path = &amp;#x27;template.docx&amp;#x27;
    @tracker_name = &amp;#x27;Комплект&amp;#x27;
    super
  end

  def call
    render_doc
    temp_file
  end

  private

  def render_doc
    template.render_to_file(temp_file, context)
  end

  def temp_file
    @temp_file ||= Tempfile.new(&amp;#x27;output.docx&amp;#x27;)
  end

  def context
    { items: mapped_issues }
  end
  
  def mapped_issues
    @mapped_issues ||= issues.each_with_index.map{ |v, i|
        row.new(i, v.subject, v.description, v.created_on.strftime(&amp;#x27;%d.%m.%Y&amp;#x27;))
    }
  end
  
  def row
    @row ||= Struct.new(:index, :subject, :description, :date)
  end
  
  def issues
    @issues ||= Issue.where(tracker: tracker)
  end

  def tracker
    @tracker ||= Tracker.find_by_name(tracker_name)
  end

  def template
    @template ||= Sablon.template(File.expand_path(template_path))
  end

end&lt;/pre&gt;
  &lt;p id=&quot;Po3b&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Wy1w&quot;&gt;Если пользоваться всеми возможностями язык, то получается хорошо. &lt;/p&gt;
  &lt;p id=&quot;Q7KX&quot;&gt;&lt;/p&gt;
  &lt;ol id=&quot;uzst&quot;&gt;
    &lt;li id=&quot;qK23&quot;&gt;Публичные методы, методы которые реально используется. &lt;/li&gt;
    &lt;ol id=&quot;VwrE&quot;&gt;
      &lt;li id=&quot;R8wc&quot;&gt;Их не может быть много &lt;/li&gt;
    &lt;/ol&gt;
    &lt;li id=&quot;jfrc&quot;&gt;Один класс - одна задача. &lt;/li&gt;
    &lt;li id=&quot;pBUv&quot;&gt;Один метод - одна отвественность. &lt;/li&gt;
    &lt;li id=&quot;Z57r&quot;&gt;Вложенность методов. &lt;/li&gt;
    &lt;li id=&quot;9Qak&quot;&gt;Там где возможно, использовать lazy-load. &lt;/li&gt;
    &lt;li id=&quot;HTAE&quot;&gt;Методы сортируются по высокоуровненвости.&lt;/li&gt;
    &lt;ol id=&quot;Yxno&quot;&gt;
      &lt;li id=&quot;F1JO&quot;&gt;Те, которые, вызываются первыми находятся - сверху. &lt;/li&gt;
      &lt;li id=&quot;lbhd&quot;&gt;Те, которые, вызываются последними - снизу. &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/ol&gt;

</content></entry><entry><id>firwoods:sort-method</id><link rel="alternate" type="text/html" href="https://teletype.in/@firwoods/sort-method?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=firwoods"></link><title>Методы сортировки</title><published>2023-02-20T08:00:49.239Z</published><updated>2023-02-20T08:00:49.239Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/90/60/9060da11-caf0-4ee3-b84b-b6cc32089ebf.png"></media:thumbnail><category term="it" label="it"></category><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/50/f7/50f73b12-b0d4-4320-9130-b1fa0bd6fb90.jpeg&quot;&gt;</summary><content type="html">
  &lt;figure id=&quot;QJgI&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/50/f7/50f73b12-b0d4-4320-9130-b1fa0bd6fb90.jpeg&quot; width=&quot;4488&quot; /&gt;
  &lt;/figure&gt;

</content></entry><entry><id>firwoods:rest-api</id><link rel="alternate" type="text/html" href="https://teletype.in/@firwoods/rest-api?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=firwoods"></link><title>REST Api</title><published>2023-02-20T08:00:10.388Z</published><updated>2023-02-20T08:00:10.388Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/62/ee/62ee5f76-bbbe-4075-9bda-0a41cbbde948.png"></media:thumbnail><category term="it" label="it"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/6e/9f/6e9ffaf9-5566-40f4-b5d9-f203666bf220.jpeg&quot;&gt;</summary><content type="html">
  &lt;figure id=&quot;kLZH&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6e/9f/6e9ffaf9-5566-40f4-b5d9-f203666bf220.jpeg&quot; width=&quot;4488&quot; /&gt;
  &lt;/figure&gt;

</content></entry><entry><id>firwoods:sql-cheetsheet</id><link rel="alternate" type="text/html" href="https://teletype.in/@firwoods/sql-cheetsheet?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=firwoods"></link><title>SQL Cheetsheet</title><published>2023-02-20T07:59:28.750Z</published><updated>2023-02-20T07:59:28.750Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/df/6a/df6ae49c-20e3-4790-adc7-6c30320de82c.png"></media:thumbnail><category term="it" label="it"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/86/96/86969cdb-365e-4f30-b032-ad7213c31a2d.jpeg&quot;&gt;</summary><content type="html">
  &lt;figure id=&quot;k4Ql&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/86/96/86969cdb-365e-4f30-b032-ad7213c31a2d.jpeg&quot; width=&quot;4488&quot; /&gt;
  &lt;/figure&gt;

</content></entry><entry><id>firwoods:git-cheetsheet</id><link rel="alternate" type="text/html" href="https://teletype.in/@firwoods/git-cheetsheet?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=firwoods"></link><title>git cheetsheet</title><published>2023-02-20T07:56:44.887Z</published><updated>2023-02-20T07:56:44.887Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/62/51/62511667-d4a0-47ce-9684-0a32ea27589f.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/3a/f3/3af3e0f7-c1af-4197-80d1-bb19aca59bd2.jpeg&quot;&gt;</summary><content type="html">
  &lt;figure id=&quot;LZPY&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3a/f3/3af3e0f7-c1af-4197-80d1-bb19aca59bd2.jpeg&quot; width=&quot;4488&quot; /&gt;
  &lt;/figure&gt;

</content></entry><entry><id>firwoods:rails-cheetsheet</id><link rel="alternate" type="text/html" href="https://teletype.in/@firwoods/rails-cheetsheet?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=firwoods"></link><title>Rails Cheetsheet</title><published>2023-02-20T07:56:09.020Z</published><updated>2023-02-20T07:56:09.020Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/26/a0/26a06731-321a-48c6-8adb-0b605f0be09f.png"></media:thumbnail><category term="it" label="it"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/ee/e6/eee6fa63-96e7-4ec4-bdfe-3ec79123a333.jpeg&quot;&gt;</summary><content type="html">
  &lt;figure id=&quot;agdO&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ee/e6/eee6fa63-96e7-4ec4-bdfe-3ec79123a333.jpeg&quot; width=&quot;4488&quot; /&gt;
  &lt;/figure&gt;

</content></entry><entry><id>firwoods:ruby-cheetsheet</id><link rel="alternate" type="text/html" href="https://teletype.in/@firwoods/ruby-cheetsheet?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=firwoods"></link><title>Ruby Cheetsheet</title><published>2023-02-20T07:55:34.102Z</published><updated>2023-02-20T07:55:34.102Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/9f/ec/9fec4810-6cfc-4139-a1e5-fa97ed40c00f.png"></media:thumbnail><category term="it" label="it"></category><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/3a/19/3a195899-b89f-4486-a74e-4529107bd6ad.jpeg&quot;&gt;</summary><content type="html">
  &lt;figure id=&quot;Ma02&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3a/19/3a195899-b89f-4486-a74e-4529107bd6ad.jpeg&quot; width=&quot;4488&quot; /&gt;
  &lt;/figure&gt;

</content></entry><entry><id>firwoods:rspec_cheatsheet</id><link rel="alternate" type="text/html" href="https://teletype.in/@firwoods/rspec_cheatsheet?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=firwoods"></link><title>RSPEC cheatsheet</title><published>2023-02-20T07:54:48.780Z</published><updated>2023-02-20T07:54:48.780Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/f0/ce/f0ce3cca-ad7d-4dcf-8913-7e767ce52931.png"></media:thumbnail><category term="it" label="it"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/81/6a/816aa712-b040-4f5e-a5dc-c44e7e132891.jpeg&quot;&gt;</summary><content type="html">
  &lt;figure id=&quot;PTbZ&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/81/6a/816aa712-b040-4f5e-a5dc-c44e7e132891.jpeg&quot; width=&quot;4488&quot; /&gt;
  &lt;/figure&gt;

</content></entry></feed>