• Вычислите длину окружности
    0
    Вариант с «#define» плох тем, что, если «задефайненная» константа используется, утрируя, в пятидесяти местах в коде — препроцессор понавставит ее напрямую в пятьдесят мест, и, я сомневаюсь, что позже, при оптимизации, компилятор будет искать одинаковые числа.
    Когда же используется «const», компилятор видит, что это одна и та же переменная, и не станет ее дублировать 50 раз.
  • Что Mono 4.0.0 нам готовит
    0
    Если бы к MonoDevelop можно было бы прикручивать плагины от VisualStudio, думаю, это решило бы почти все проблемы с комфортом. Увы, на данный момент с плагинами там крайне туго.
  • XMonad + XMobar = ❤
    0
    Но он не имеет отношения к Haskell :/ Меня ведь Awesome WM полностью устраивает — удобен, легок в понимании и настройке, много конфигов и туториалов на интернетах. Я пытался перейти на XMonad исключительно из материальных соображений изучения Haskell'а.
  • XMonad + XMobar = ❤
    0
    Я думаю, я вернусь на Awesome. Я собачусь с XMonad уже около месяца, но до сих пор так и не получил нормальное рабочее окружение. На половину моих вопросов, заданных в IRC, я слышу либо ответ о том, как это непросто будет реализовать, либо вообще молчание, никто ничего не знает. Наверное можно было бы все это как-то перетерпеть, но я засел в специфичные для XMonad проблемы, и за весь месяц ничуть не выучил Хаскелл — мою главную цель миграции с Awesome на XMonad. Из прочитанных бесед в IRC у меня сложилось впечатление, что этот менеджер умирает, и держится исключительно на энтузиастах/разработчиках; но т.к. ядро/StackSet никто не станет переписывать, он обречен.
    У меня, в общем-то, еще была идея заняться текстовым редактором yi, так что, на чем потренироваться в Haskell, у меня есть. За напрасно потраченное время только обидно, но надо уметь остановиться…
  • XMonad + XMobar = ❤
    0
    Можно поподробнее про SimpleFloat? В каком смысле перетащить? Вот есть у меня, скажем, два окна в SimpleLayout, мне надо, чтобы при нажатии M-j, окно, на которое перешел фокус, всплыло выше предыдущего. Среди таких приложений я могу назвать pdf читалку и офис, т.к. их не имеет смысла делать меньше полного экрана (по-крайней мере на моем рабочем 1366×768 дисплее), но я бы не рискнул составлять полный список приложений по разным причинам. Мне просто надо, чтобы на SimpleFloat у меня работало переключение между приложениями, вне зависимости от того, какие это.

    Про мини-значок — я имел ввиду трэй. Есть ряд приложений, которые при их «закрытии» просто уходят в этот трэй, и проблема, что я не могу видеть список этих приложений. Ну, или, у меня там стоит klipper, которым я пользуюсь довольно часто.
    На самом деле я этим вечером наконец смог заставить работать taffybar. Я некоторые шаги напишу здесь, на случай, если кто пойдет по моим стопам: во-первых на сегодняшний день не стоит ставить с репозитория taffybar. Он там версии 0.2, а все примеры на гитхаб под версию 0.4, они просто не заработают. Во-вторых качать исходники тоже не надо. taffybar устанавливается в два шага: вначале используем команду «cabal install tafybar», затем скачиваем с гитхаб «taffybar.hs» (при желании редактируем, что надо), и компилируем командой «ghc taffybar.hs». Если все пройдет нормально, это выдаст исполняемый файл собственно панельки — исполняем его, и наслаждаемся. «taffybar.rc» с гитхаб должен находиться в директории «~/.config/taffybar/», так же не забываем глянуть в пример там же «xmonad.hs».
    По непонятным причинам автор не счел нужным оставить доки на гитхаб, и все это пришлось либо угадывать самому, либо спрашивать на IRC, так что, думаю, кому-то это очень пригодиться.

    Понятия не имею, как комментарий ушел в верхний уровень… Полагаю, причина в том, что я случайно закрыл окно, и хабр, к счастью, сохранил мой комментарий, но сдвинул его в самый низ, на что я даже не обратил внимания…
  • XMonad + XMobar = ❤
    0
    Я так же добавлю, что даже до нынешнего, до сих пор слабо-юзабельного, состояния, мне его пришлось настраивать вечерами недели полторы-две. При наличии конкуренции со стороны, к примеру, Awesome, который до всего мной перечисленного настраивается простым копированием откуда-то из /etc/ конфига по-умолчанию, который дальше уже без проблем можно подредактировать под себя, это делает XMonad просто ужасным менеджером.
  • XMonad + XMobar = ❤
    0
    Пользовал несколько месяцев Awesome, решил перейти на XMonad, т.к. заинтересовался Haskell. Вроде более-менее настроил, работает, и… Вы уж извините, но, как-то, не дотягивает он до Awesome.
    Во-первых: там нет функции (achtung!)«пред. лэйаут». Да. Есть функция «след. лэйаут», есть сброс на некий дефолтный лэйаут; но функции возврата нет. Я задал об этом вопрос на IRC #xmonad, чем вызвал 15 бурное минутное обсуждение, из которого я понял, что α) Это невозможно реализовать в принципе ( geekosaur: (they're actually functions. ever tried to run a function backwards?)© ) β) Ядро XMonad реализовано ввиде некоего мат. концепта StackSet, который очень красивый, будучи представленным в вакууме, но был ужасной идеей для имплементации UI (geekosaur: and most of the problems people have with window behavior boil down to the StackSet being a lovely theoretical concept and a horrible UI implementation© )
    Во-вторых: XMobar не показывает, элементарно, свернутые приложения. Я имею ввиду те, что сворачиваются в некий мини-значок, как правило это всякие чаты, торренты, и пр. Гугление по этому поводу мне выдало, что нужно запускать какое-то отдельное приложение, но лично мне его запуск ничего не дал. Так же, вроде бы как, это проблема XMobar, и якобы она отсутствует в TaffyBar. Попытки сконфигурировать и запустить последний, за пред. несколько вечеров еще не достигли успеха.
    В-третьих: XMonad сдает мод клавишу VirtualBox'у. Как чинить это, я не имею ни малейшего понятия, Awesome WM из коробки не позволял VB перехватывать свои комбинации. Это очень болезненно, т.к. в VB у меня обычно запущена WinXP c Visual Studio. Я в IRC задавал вопрос на каналах обоих менеджеров, и нагуглил на stackexchange заданный кем-то вопрос — никто ничего об этом не знает.
    В-четвертых: в SimpleFloat layout, который я обычно оставляю для некоторых приложений, окна каким-то чудесным образом просто не переключаются. Т.е. я жму кнопку «след. окно», вижу в XMobar'e, что я, вроде бы, переключился, но передо мной по прежнему продолжает висеть окно предыдущего приложения.

    Конечно я очень надеюсь, что смогу его довести до более-менее работоспособного состояния, но, если кто-то впервые желает попробовать тайловый оконный менеджер лучше о XMonad даже и не думайте. Я все еще не сбежал с него исключительно из-за своего желания научиться и попрактиковать Haskell.
  • Как я полюбил vim, Emacs и клавиатуру
    0
    Сразу оговорюсь, что буду толковать про «company-mode», а не про «autocomplete-mode», потому что предположительно он проще в конфигурации, ну и я привык его использовать. Впрочем для «autocomplete-mode» принцип должен быть схожим. На всякий случай добавлю, что «company-mode» имеется
    в Elpa и Melpa, т.е. для установки достаточно ввести «package-list-packages», и выбрать его для установки(только ссылки на сайты должны быть настроены).
    В принципе, я нашел только два варианта, и в обоих случаях пути к инклудам вам придется добавлять вручную. Первый — использование, собственно, clang. Это backend «company-clang». Пути к хедерам можно прописать в переменной «company-clang-arguments». Она хранит список аргументов, которые будут переданы в clang. Делается это приблизительно следующим образом:
    (setq company-clang-arguments (list "-I/path/number/one/" "-I/path/number/two/"))
    

    Для тех, кто не знает: «list» создает список из последующих аргументов, коих может быть сколько угодно. Для «company-irony»(альтернатива к «company-clang». Так же использует «clang», плюс «irony-mode». Работает асинхронно), вероятно, надо использовать «irony-additional-clang-options». Хотя вообще в описании переменной стоит просьба этого не делать — я полагаю, что пути настраиваются в самом «irony-mode»; на его страничке упоминаются какие-то базы данных, но из краткого описания не понятно, как их использовать, а в подробности я вдаваться не стал.
    Второй вариант — использование «company-semantic». Для этого предварительно надо включить «semantic-mode». Пути инклудов добавляются командой
    (semantic-add-system-include "/my/path/")
    

    Рекомендую так же включить «global-semanticdb-minor-mode» для кэширования, и «global-semantic-idle-scheduler-mode», чтобы semantic периодически заново парсил буферы, если были внесены изменения.
    Вручную упомянутые бэкенды в переменную «company-backends» добавлять не надо, они там уже есть — если только не доустанавливаете что-то новое, вроде «company-irony». «company-mode» спрашивает поочередно со всех бэкендов, есть ли у него дополнение для кода, и, если какой-то бэкенд их возвращает, остальные спрашиваться не будут.
    Так же упомяну переменную «company-idle-delay», которая означает время прежде, чем появятся дополнения. У меня в «.emacs» файле есть код
    (setq-default company-idle-delay 0.5)
    

    Так же добавлю, что по туториалам не так уж все и печально. Например вот тут имеется один просто восхитительный о том, как настроить Емакс для программирования с С/С++. Achtung — очень много текста и GIF-анимаций.
  • Как я полюбил vim, Emacs и клавиатуру
    0
    Дык я ж менее кустарный способ выше и предлагал, вы сказали, что это не комильфо.
    Лично мне больше, чем на «1920×1080» редактора не нужно, просто ответил к вопросу о мультимониторной конфигурации.
  • Как я полюбил vim, Emacs и клавиатуру
    0
    Иногда одними сплит-скринами сыт не будешь. Например, дома у меня стоит монитор «1920×1080», а рядом ноутбучный дисплей «1366×768». Растянуть программу на два экрана, конечно, можно (у меня так против моего желания поступает Xonotic, в который я изредка играюсь), но ничего хорошего из этого не выйдет.
    А на работе у меня один монитор, и браузер обычно растянут на полный экран на отдельном рабочем столе.
  • Как я полюбил vim, Emacs и клавиатуру
    0
    Кстати, как у emacs с поддержкой нескольких мониторов?

    Не уверен, что правильно понял вопрос, но можно открыть несколько отдельных окон одной инстанции Емакса. Еще можно запускать Емакс сервер, и проассоциировать файлы с «emacsclient» → в этом случае каждый раз при двойном щелчке по файлу будет запускаться клиент, и подсоединяться к уже запущенному Емаксу.
  • Как я полюбил vim, Emacs и клавиатуру
    0
    Во-первых лично у меня упомянутые мной заметки выглядят очень мусорно. Я могу просто оставить, скажем, пару ключевых слов в буфере «*scratch*», чтобы возвратившись с обеда что-то вспомнить и доделать. Создавать ради таких мелочей целую отдельную заметку как-то… Может быть, конечно, иногда и правильно, но мне лично не по душе. Впрочем, это субъективно.
    Во-вторых, что более важно, мне не надо переключаться в отдельную программу для заметок, или тестирования регулярок. Нужно оттестировать регулярное выражение? Пожалуйста, скинуть в тот же черновик пример ключевых слов, затем «M-x re-builder» — он так же покажет результат, семантически, с отдельной подсветкой каждой группы. Справедливости ради, впрочем, его можно включить в любом буфере, но иногда так удобней.
  • Как я полюбил vim, Emacs и клавиатуру
    +2
    Ух, мышка с крылышками ε:
    Я тоже раньше частенько путал «y» c «u». Дело опыта, не больше не меньше. Обычно я каждый раз, когда промахиваюсь, хотя по ощущениям не должен был, я всегда кладу пальцы, как они были только что на клавиатуре, и пытаюсь понять, как вышло, что расстояние до одной клавиши я спутал с расстоянием до соседней клавиши; давлю их еще раз, сначала одну, потом другую (что бы за клавиши это не были, всегда можно потом сделать undo). Это полезно, т.к. в конце-концов привыкаешь чувствовать это небольшое расстояние, и промахи становятся все реже и реже.
    Еще один момент: доверяйте своей памяти. Если вы чувствуете, что это правильное расположение, но боитесь промахнуться, просто жмите — а там уже, если все плохо, действуйте, как я описал выше.
  • Как я полюбил vim, Emacs и клавиатуру
    +2
    Вы меня заинтриговали. Ничего не могу ответить на этот счет сразу, но я на выходных попробую настроить свой Emacs под такой случай; о результатах отпишусь.
  • Как я полюбил vim, Emacs и клавиатуру
    +1
    Чего не хватает до QtCreator? Для автодополнения устанавливается «company-mode», у него есть набор бэкендов, с которых он может брать дополнения. Из них для семантического дополнения С++ приходят в голову «company-clang» и «company-gtags»(последний берет дополнения из GTAGS, которыми надо предварительно пропарсить проект). Проверка синтаксиса реализуется с помощью «flycheck-mode».
    Как я уже упомянул, Емакс действительно предварительно надо настраивать, по-умолчанию там ничего нет. Зато его можно применять для разработки на любом языке, чего не скажешь о большинстве IDE, которые, в основном, узкоспециализированы. И, как результат, сегодня вы, скажем, писали на С++ в VS, а завтра будете писать на Perl, разумеется в другой IDE, с другими шорткатами, другим интерфейсом, и, возможно, отличающимся функционалом.
  • Как я полюбил vim, Emacs и клавиатуру
    0
    Во-первых все намного проще: в Vim «одним словом» будет, собственно, слово, либо набор символов, находящихся рядом (например «>=» будет словом). Во-вторых никто их специально не считает, они оцениваются навскидку, «на глаз». Конечно, как наберетесь опыта, будете промахиваться очень редко, а до тех пор иногда придется доводить курсор вручную. Но даже в этих случаях вы будете в выигрыше, как правило.