All streams
Search
Write a publication
Pull to refresh
90
0
Бушуев Стас @Xitsa

User

Send message
Как показал мой опыт учить команды пришлось только поначалу и мне потребовалось выучить их не так уж и много для начала.
А потом я просто использовал VIM (первые две недели в принудительном порядке только в нём, чтобы не сорваться) и команды ушли в мышечную память.
Я использую далеко не все его возможности, но даже этого мне не хватает в других редакторах, ощущаешь себя как в кандалах.
К списку литературы можно добавить интересную статью про проблемы этих алгоритмов: James Mickens — The Saddest Moment (pdf).

Иллюстрация оттуда:
image
А через год будет совсем день Пи: 3.14.15, если по американской записи.
Да, конечно, нажатие на символ быстрее, но туда ещё надо попасть, а граффити достаточно устойчив к небрежности, можно быстро писать широкими взмахами.
Я в основном сравниваю граффити с клавиатурой WinMobile :), после перехода с Palm на WinMobile я ощущал дискомфорт. По крайней мере, на Palm'е я часто писал заметки и прочее, а на WinMobile писал только если вынужден.
Русское граффити
image
А вот мне достаточно легко представить: на Palm'е с помощью граффити текст набирался очень быстро, практически, со скоростью письма.
Не смотрели AsciiDoc?
Он позволяет писать в удобном текстовом формате, который потом преобразовывается в DocBook.
Также можно его запускать для куска текста, что удобно, чтобы править DocBook'и напрямую.
Да, это принципиально, из Acme FAQ:
Q: Is there syntax highlighting?
A: No. The creator of main users of Acme find syntax highlighting unhelpful and distracting.

Я сомневаюсь, что это возможно — это всё-таки индивидуальная вещь, которая по мере применения меняется, подстраиваясь под писца: свои сокращения/соглашения и т.п.
Читать QR–коды не могу, максимум, могу опознать структуру
> P.S. — «надо будет сделать фото этой страницы на память» :)
А мне нравятся QR–коды, я их даже в блокнотике рисую:
А я порекоменду книгу Craig A. Finseth — The Craft of Text Editing.
В этой книге рассказывается о том, как написать текстовый редактор: реализация, алгоритмы, организация данных и прочее (автор правда подводит к мысли, что EMACS — это лучший и надо ориентироваться на него).
Метод, Buffer Gap там также упоминается, см. главу 6.
Нашёл ссылку на StackOverflow, которая меня тогда смутила:

Ныне, основная проблема с установкой собственного почтового сервера не техническая, а проблема доверия.

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

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

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

Если хотите публичный почтовый сервер, который посылает письма во внешний мир, то готовьтесь выполнить гораздо больше работы, чем просто настройка сервера.

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

В своё время, когда я тоже хотел соорудить нечто подобное, меня остановила следующая информация:
велика вероятность того, что сервер может попасть в чёрные списки, из-за разных настроек, которые необходимо постоянно мониторить.
Хотелось бы узнать, это преувеличенная проблема или в этом варианте достаточно однократно настроить и больше не возвращаться?
А зачем нужно отламывать угол? Никак не могу догадаться
Они обычно ждут с неделю, перед тем как выкладывать в каналы распространения.
Мне так не кажется: тотальная слежка это мечта многих властей, но ранее это натыкалось на технические трудности, такие как необходимость содержать большой штат агентов, устанавливать прослушивающие устройства и прочие ограничения. Сейчас же, когда есть возможность через ограниченное количество мест проводить сбор данных, это естественно, что будет делаться, как например, у нас с помощью СОРМ.
Такие громкие крики в Америке только потому, что они не привыкли думать, что живут в тоталитарном государстве (в процессе становления) и пытаются как могут этому противостоять.
Мне кажется, что Сноуден это уже бренд, под которым сливают информацию, которую раньше нельзя было выдавать, чтобы не засветить источник.
Поделюсь своим любимым комментарием из исходников .Net. Мне кажется, что если комментарии и должны быть, то только такими:
Ok, this class needs some explanation…
    /// <devdoc> 
    ///    Ok, this class needs some explanation.  We share message loops with other applications through 
    ///    an interface called IMsoComponentManager. A "component' is fairly coarse here:  Windows Forms
    ///    is a single component.  The component manager is the application that owns and runs the message 
    ///    loop.  And, consequently, an IMsoComponent is a component that plugs into that message loop
    ///    to listen in on Windows messages.  So far, so good.
    ///
    ///    Because message loops are per-thread, IMsoComponentManager is also per-thread, which means 
    ///    we will register a new IMsoComponent for each thread that is running a message loop.
    /// 
    ///    In a purely managed application, we satisfy both halves of the equation:  Windows Forms 
    ///    implements both the IMsoComponentManager and the IMsoComponent.  Things start
    ///    to get complicated when the IMsoComponentManager comes from the COM world. 
    ///
    ///    There's a wrinkle with this design, however:  It is illegal to call IMsoComponentManager on a
    ///    different thread than it expects. In fact, it will throw an exception.  That's a probolem for key
    ///    events that we receive during shutdown, like app domain unload and process exit.  These 
    ///    events occur on a thread pool thread, and because as soon as we return from that thread the
    ///    domain will typically be torn down, we don't have much of a chance to marshal the call to 
    ///    the right thread. 
    ///
    ///    That's where this set of classes comes in.  We actually maintain a single process-wide 
    ///    application domain, and within this app domain is where we keep all of our precious
    ///    IMsoComponent objects.  These objects can marshal to other domains and that is how
    ///    all other user-created Windows Forms app domains talke to the component manager.
    ///    When one of these user-created domains is shut down, it notifies a proxied 
    ///    IMsoComponent, which simply decrements a ref count.  When the ref count reaches zero,
    ///    the component waits until a new message comes into it from the component manager. 
    ///    At that point it knows that it is on the right thread, and it unregisters itself from the 
    ///    component manager.
    /// 
    ///    If all this sounds expensive and complex, you should get a gold star.  It is.  But, we take
    ///    some care to only do it if we absolutely have to. For example, If we only need the additional
    ///    app domain if there is no executing assembly (so there is no managed entry point) and if
    ///    the component manager we get is a native COM object. 
    ///
    ///    So, if you're with me so far you probably want to know how it all works, probably due to some 
    ///    nasty bug I introduced.  Sorry about that. 
    ///
    ///    There are two main classes here:  ComponentManagerBroker and ComponentManagerProxy. 
    ///
    ///    ComponentManagerBroker:
    ///    This class has a static API that can be used to retrieve a component manager proxy.
    ///    The API uses managed remoting to attempt to communicate with our secondary domain. 
    ///    It will create the domain if it doesn't exist.  It communicates with an instance of itself
    ///    on the other side of the domain.  That instance maintains a ComponentManagerProxy 
    ///    object for each thread that comes in with a request. 
    ///
    ///    ComponentManagerProxy: 
    ///    This class implements both IMsoComponentManager and IMsoComponent. It implements
    ///    IMsoComponent so it can register with with the real IMsoComponentManager that was
    ///    passed into this method.  After registering itself it will return an instance of itself
    ///    as IMsoComponentManager.  After that the component manager broker stays 
    ///    out of the picture.  Here's a diagram to help:
    /// 
    ///    UCM <-> CProxy / CMProxy <-> AC 
    ///
    ///    UCM: Unmanaged component manager 
    ///    CProxy: IMsoComponent half of ComponentManagerProxy
    ///    CMProxy: IMsoComponentManager half of ComponentManagerProxy
    ///    AC: Application's IMsoComponent implementation
    /// </devdoc> 



Из …\ndp\fx\src\WinForms\Managed\System\WinForms\ComponentManagerBroker.cs\1305376\componentmanagerbroker.cs

Information

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