Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Наймінімалістичніший симулятор друкарської машинки.

with 15 comments

Такий собі подарунок до нового року мені і подібним графоманам. Працює правда лише в лінуксах, бо curses. Сторінка проекту на Google Code. Інсталяція ручна і проста – скопіюйте файл програми собі в /usr/bin/, і дайте йому права на виконання.


скріншот чернетки цього поста. Бачите скільки опечаток проігноровано?


Недавно подивився фільм Майже знамениті. А до того ще раз послухав групу Rainbow, й тепер не розумію чому це мені раніше більше подобався Blackmore’s Night. Хоча можливо тому що я до того не чув “Temple of the king”. Rainbow – магічні. Особливо перший альбом. Там особливо багато магії – штуки яку пояснити неможливо, але яка здійснює надзвичайно відчутний вплив на свідомість. Бувають іноді такі пісні від яких шерсть на хребті встає. Хочеш зрозуміти про що вони – не розумієш. Хочеш зрозуміти чому – не розумієш. От тому це і магія.

Так от, в фільмі “Майже знамениті” є хлопець , який пише статтю про рок-групу. І от я теж хочу написати про Rainbow але все ніяк не зберусь. Rainbow занадто важлива що б писати про неї так зразу. Той хлопець у фільмі користується друкарською машинкою. Зрозуміло що робить він це тому, що інших засобів редагування тексту не тоді було взагалі. Але сама технологія друкарської машинки цілком змінює підхід до роботи. Чому? Бо друкарська машинка лінійна – текст можна тільки дописувати. Не можна нічого додати на початок, чи видалити. Для цього треба вставити новий листочок і почати все заново. Тому треба думати про те що пишеш наперед, і робити менше поимилок. Вирішив й собі спробувати такий спосіб роботи. Пошукав симулятори друкарских машинок, жоден мені не сподобався, і я вирішив написати свій.

Правда прийшлось довго вибирати на чому його писати – Qt, GTK, чи curses. Власне я почав було з curses, але в ньому є деякий геморой з Юнікодом. Бо функції curses приймають текст в конкретному кодуванні. А з клавіатури повертають коди клавіш. Для кирилиці – аж два коди на одну клавішу. Я ще хотів попробувати cursesв Python 3, в якому як відомо проблем з юнікодом менше, і я навіть читав що хтось додав туди функцію get_wch (get wide char), яка повинна повертати юнікод, але curses в третьому Python поки що не придатні для використаття взагалі. Бо screen.asddstr() потребує на вхід тип str, який відображає неправильно бо curses приймають текст в системному кодуванні, а перекодувати в байти на не дає, бо хоче str.

Потім сьогодні зранку (це було десь в першій 🙂 сонечко попало мені в очі, і я зрозумів що пора втавати готуватись до зустрічі нового року. І згадав, що в bpython ніяких проблем з кирилецею нема, хоча він теж написаний на curses. Тому те що я хочу зробити – можливо. І я таки зробив.

Тепер маю те про що завжди мріяв – власний текстовий редактор. Правда він ще простіший ніж PyRoom, має дві комбінації клавіш – Esc для виходу, і Enter для переходу на новий рядок і запису в файл. А також один параметр командного рядка – файл в який будемо писати.

Але відсутність інших функцій, як ото підтримки вкладок, чи хоча б backspace – не баг, а фіча, прямо як баг твіттера з 140 символами. Я ще хотів зробити так щоб при переході на новий рядок звучав звук повершення каретки, але це вже теж свистілка, від якої програма стане мінімум вдвічі більша за кодом, і в сотні разів більша за розміром.

Звичайно надрукований таким чином текст потребує аби його потім відкрили в нормальному редакторі і добряче так виправили. Але так повинно бути зі всіма текстами, а не лише з машинописними.

На завершення процитую трохи Москальця:

Щоранку я прокидаюся, вмикаю комп’ютер і йду заварювати чай. Після чаю відкриваю FocusWriter, один з найпростіших текстових процесорів, що сприяє зосередженій роботі, вдягаю навушники з записом голосу струмка або дощу – і вирушаю в письмо. Я не перевіряю електронної пошти, не вмикаю мобільного телефона, взагалі не під’єднуюсь до Інтернету. Спокійне сіре тло, сині літери на моніторі, жодних сторонніх звуків знадвору. Вони, звичайно, є ті звуки – двигуни і сигналізації авто, крики дикуватої, століттями не виховуваної юрби, моторошне виття дрелей і болгарок; але в моєму тихому й акуратному письмовому просторі для них не знаходиться місця, вони – Ніщо, яке безуспішно намагається прорватися в буття і окупувати його. Безуспішно, принаймні до тих пір, поки я не напишу 1000 слів.

Я не можу покинути текст і піти на прогулянку. Я не можу читати душероздираючі повідомлення в Твіттері про те, що в когось болить зуб, а хтось не може виїхати зі Львова, а когось покинула дівчина, а хтось ніяк не може знайти свого хлопця. Я не хочу витрачати обмежений час життя на новини, всуціль просякнуті політикою і недоброю чорнухою – всюди загрози демократії, скрізь відрізають голови або наліво й направо торгують людськими органами. Чи, за недавно озвученою версією, зброєю. Прислухаючись до валу океанської хвилі, що наростає в моїх навушниках, я займаюся найкращим з можливих серфінґів: утримую рівновагу на гребені слів, тримаю увагу, тобто – тримаю себе.

Ми були, як ви; ви будете, як ми

Advertisements

Written by bunyk

Грудень 31, 2011 at 16:56

Відповідей: 15

Subscribe to comments with RSS.

  1. власний, самостійно написаний текстовий редактор – це супер! вітаю! і з наступаючим Новим роком також, успіхів і здоров’я!

    Костянтин Москалець

    Грудень 31, 2011 at 17:12

  2. З наступаючим!

    До-речі, back-space в друкарській машинці присутній, проте працює як клавіша вліво. Думаю, його варто додати до списку дозволених – антуражу не сильно поменшає, а з помилками мороки менше буде. Я уявив собі, як ти сидів і виправляв помилки у своєму тексті…

    Відчуваю, що ти подумуєш якось прикрутити до своєї друкмашинки фічу з цього посту =)

    danbst

    Грудень 31, 2011 at 18:03

    • Вже прикрутив. Але про це наступного року. 🙂

      bunyk

      Грудень 31, 2011 at 18:08

    • Власне я читав що є моделі електричних друкарських машинок з пам’яттю на один рядок і білою стрічкою. В ній ти натискаєш backspace, вона пересувається на символ назад, переключається на білу стрічку і зафарбовує помилку. Але ж то зовсім не той workflow.

      Але знову ж таки – тут мета не відтворити повну модель друкарської машинки, а створити якомога швидший канал передачі інформації з голови на жорсткий диск, таким чином примусово відключаючи контроль якості. Тепер залишається навчитись цим правильно користуватись.

      bunyk

      Грудень 31, 2011 at 18:16

  3. Ого! Дуже дякую, хоча таку програму важко назвати редактором.

    Вам теж веселих свят і успіхів наступного року!

    bunyk

    Грудень 31, 2011 at 18:07

  4. “Но зачем?”
    Якщо важко передавати інформацію з голови на жорсткий диск, то можливо проблема не в лишніх функціях редактора? Візьми відпуск, розвантаж трохи голову. На мою думку, перехід до камінних знарядь праці – не вихід.

    Alexander Yakushev

    Січень 1, 2012 at 21:06

    • Проблема в неправильних звичках, які треба викорінювати в примусовому порядку.

      В мене навіть з’явилась ідея USB девайсу, який ставиться під крісло, і кусає тебе за дупу по команді з комп’ютера.

      Ти такий заходиш на YouTube поки в тебе відкритий редактор, а воно тебе струмом, і ти такий “Ой! Мені ж ще треба тут дещо дописати”. 🙂

      bunyk

      Січень 2, 2012 at 19:24

  5. задум прекрасний, навіть попри наявність інших реалізацій цієї ідеї, але у мене цей витвір кирилицю чомусь відображає не зовсім читабельно (слово “привіт” у терміналі виглядаяє як “M-PM-?M-Q~@M-PM-8M-PM-2M-Q~KM-Q~B”, і це і в іксах, і в голій консолі). А результуючий файл виходить нормальним, справжня кирилиця у справжньому UTF8.
    залежності? bpython та bpython3 в системі є, ні про що інше у пості явно не вказано

    verdakafo

    Січень 5, 2012 at 16:34

    • Що тут скажеш. Очевидно десь є помилка, але до Різдва я ніяк її не поправлю. Створив issue

      Від вас для початку ще попрошу результат роботи оцього:

      import locale
      locale.setlocale(locale.LC_ALL, '')
      print locale.getpreferredencoding()
      

      bunyk

      Січень 5, 2012 at 19:32

      • можна на «ти», навіть варто.
        Результатом, як і слід було б очікувати, є UTF-8
        У мене на машині пітону по мінімуму, дев-пакунків теж по мінімуму, лише те, що тяглось аптом задля усякого прикладного софту (не recommends, а requires). Здається, саме якісь ліби, які у тебе є і яких у мене нема, дають тобі можливість своєю поробкою щасливо користуватись, а мені — повідомляти про баги.
        Решту розмов можна перенести на гуглкодовий майданчик, де, як я бачу, уже оперативненько про баг заявлено.
        Гарного Різдва.

        verdakafo

        Січень 5, 2012 at 21:17

  6. so let’s go
    написав цей пост у твоєму редакторі, довелось підпрвити відступ в одному місці ( рядок 43). Думав, буде трохи неказуальн о його встановлювати, але потім поб
    ачив, що це просто пітонофайл. Залии^?шилось прикрутити фічу відправки тексту в Wordoress 🙂
    З.І. Писав під маком, працює, все шарно.

    Dmytro Sirenko

    Січень 9, 2012 at 16:46

    • Прикручувати до цієї програмки швидку відправку тексту в wordpress – злочин проти інтернету.

      Проблему з рядком поправив. От за те й не люблю дурну традицію замінювати табуляції на n пробілів. Бо почнеш редагувати не з того редактора – зіпсуєш програму.

      bunyk

      Січень 10, 2012 at 20:28


Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out / Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out / Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out / Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out / Змінити )

З’єднання з %s

%d блогерам подобається це: