Comments 112
Хотел бы услышать мнение сообщества: не является ли использование С# в данном случае стрельбой из пушки по воробьям? Во времена WinXP тянуть за собой жирный дотнет для использования пары функций WinAPI было моветоном. Как дела обстоят сейчас?
Сейчас .NET Framework есть в современных системах в том или ином виде всегда. Времена Windows XP таки прошли.
Да в том то и дело, что с одной стороны для приложения используется целая виртуальная машина, и куча кода вдобавок. Но с другой — уже даже для Seven такой подход нормален, дотнет сразу есть в наличии и запущен… Нужно ли тогда писать низкоуровневые приложения на WinAPI на Си, если и на C# сойдёт?..
Нужно писать на том, что оправдано.
Вообще-то мы уже 6 лет пишем на яве для мобилок!!!
Что уж говорить про шарп на винде.

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

P.S.
Хотя я до самого конца буду максимум на сишечке писать. :(
Да? Странно. Wikipedia утверждает обратное:
Затем код либо исполняется виртуальной машиной Common Language Runtime (CLR), либо транслируется утилитой NGen.exe. Использование виртуальной машины предпочтительно.
Ну это не та же «virtual machine» что и в JVM.
В дотнете байткод переводится в машинный, потом работает машинный.
Если этот JIT-компилятор желаете называть виртуальной машиной — пускай так, спорить не буду.
Ну это не та же «virtual machine» что и в JVM.
И в чём же, я извиняюсь, отличие?

В дотнете байткод переводится в машинный, потом работает машинный.
В Java2 (появившейся за три года до выхода самой первой версии .NETа) всё происходит точно так же.

.NET 1.0 — это в чистом виде «Java2 от Microsoft с блэкджеком и шлюхами», не больше, не меньше. В последующих версиях они чуток разошлись, но основа осталась той же.
А готового exe-файла нет? Не все же будут ставить Visual Studio, чтобы получить его.
Так и в компилятор могли вшить такую штуку, которая при сборке вашего переключателя вшивает туда кейлоггер.
Согласен, и в сам процессор тоже можно напихать всего. Но с гораздо меньшей вероятностью.
Скорее опыт и знания, а не убеждения. Не все современные разработчики на C# знают, что msbuild это отдельная утилита и что сборка студией и msbuild'ом из консоли это вообще разные вещи.
Вообще не такие уж и разные.
За исключением нескольких проектов, студия для сборки не нужна, но возможно не все разработчики это знают.
Все-таки вещи это разные.

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

А студия собирает решение с помощью devenv. И ее тоже можно юзать из консоли. Вот дока по вызову из комнадной строки.
Так было раньше. И даже это не совсем так — студия все равно загружала в себя движок мсбилда и прогоняла все через его пайплайн, за исключением пары проектов (которые уже морально устарели имхо). Т.е. тогда было 2 хоста для движка — студия и msbuild.exe. Это приводило к тому, что окружение проектов отличалось — студия подсовывала кучу переменных окружения.

Но сейчас это не так — студия, по крайней мере современные ее версии, собирает проекты при помощи честного msbuild.exe, причем можно увидеть отдельные параллельные процессы msbuild.exe запущенные студией с определенными параметрами.

Да, солюшен это не мсбилд скрипт, но его преобразование происходит в msbuild.exe, а не в devenv.exe

В итоге — всё собирается одним и тем же движком, просто вызывается(лся) этот движок из разных врапперов — msbuild.exe и devenv.exe. Теперь один враппер вызывает другой, вместо того чтобы хостить Core engine в себе. Это и есть принципиальная разница?

PS: Господа минусующие, зачем портите дискуссию?
Да, тут я не уточнил какие версии имею в виду. В последних версиях они действительно сделали все честно.

Я последний раз глубоко копался в этом процессе еще 10-й студии. Даже приходилось дебажить скрипты msbuild. То еще развлечение должен я вам сказать.
Я когда-то делал то же, но на winapi. Правда для полноценной работы и в консольных прогах типа Far нужен dll агент был. Не знаю как с .Net сейчас, упростилось наверное. В общем, это был просто флаг с изменяемой прозрачностью, перемещаемый по экрану. Сначала это была просто программа, но потом я переделал её под плагин для Far, так как в консоли прога не работала.

Потом punto switcher стал делать всё то же, но со свистелками и перделками. Я перешёл на него, но перделки все отключаю.

Если кому надо, могу поискать исходники, может сделаете то же, но без .net.
Посмотрел код, я ошибся. У меня был просто плавающий индикатор текущей раскладки в виде флага. Для печати не хватало удобного индикатора перед глазами, чтоб туда сюда не переключаться.
Мне тоже не нравится современный Punto — даже если элементарно посмтреть насколько вырос размер exe-шника, то закрадываются подозрения, что там содержится не только прямой функционал. А может и нет — но паранойя не спит.
Поставил старую версию ещё дояндексовой эпохи — к сожалению, в Win7 она работает наполовину (не действует в Far, Sublime и еще где-то).
Наугад.
Быть может это как-то связано с «Дополнительными текстовыми службами»?..
Эх, еще бы кто сделал аналог PuntoSwitcher для MacOs — он там настолько тормозит, что не продержался у меня и 15 минут.
Тоже самое, оставил только переключение раскладки предыдущего слова, отключил звуки, подсказки и всё такое.
В осиксе гораздо больше раздражает необучаемый автоматический спелчекер
эм, и как он автоматически меняет раскладку?
Кстати, он по capslock раскладку меняет, здорово, но и капс оставляет...
Он оказывается не меняет ее, а просто показывает :(
Капс не оставляет, перезагрузитесь или перелогиньтесь, а автоматически раскладку не меняет
Уже второй год этой приблудой пользуюсь, отлично работает.
Полтора года назад перелез с винды на убунту и макос. До этого все время сидел на винде. Адекватно Punto Switcher работал только на Mac OS — очень удобно переключение только по Alt, и выделенного текста и просто переключение (да еще и повсеместно), тогда как в винде два шорта, как минимум. Хуже работы xneur для убунты я не испытывал.
Вы пользовались автопереключением раскладки в нём, и он тормозил при этом? Или при переключении раскладки у выделенного текста тормоза были? Просто интересно знать, при каком использовании он может ощутимо тормозить.
Именно авто-исправление раскладки (когда уже введенный текст переводится в нужную расладку).
Странно, может я какой-то не тот Puntoswitcher ставил.
Сейчас поставил который от Yandex — работает отлично.
Всем пардон.
А я вот этой улиткой давно пользуюсь и очень доволен Recaps А поначалу тоже думал что-то свое писать, Punto бесит. ))
UFO landed and left these words here
Касательно паранойи… может я чего-то не понимаю, но какой смысл жизни у кейлоггера без доступа к интернету? Если поставить антивирь который выдает интернет программам исключительно по нотариально заверенным юзером талонам, то кейлоггер делает свою работу напрасно, даже если он есть. или все равно будут какие-то лазейки?
UFO landed and left these words here
Именно поэтому оружие и инструменты снабжают предохранителями. Я бы не хотел пользоваться прессом или гильотиной без защитного ограждения. Конечно, есть определенная вероятность, что ко мне на смену забежит Терминатор, чтобы по-быстрому расправить суставы на столе гидравлического пресса. Но куда вероятнее, что именно от моей руки останется невосстановимая лепешка. :)
Пунто, нинзя и т.п. хороши еще и тем, что позволяют выключить автоматику и просто выбрать удобную пользователю систему переключения. Например, мне очень редко приходится (но приходится) печатать по-казахски. Поэтому у меня английская и русская раскладки настроены на отдельные клавиши, а циклическое переключение всех трех языков лежит на стандартных.
Так что вполне можно пользоваться самыми разными инструментами, если хорошо их знать.
UFO landed and left these words here
Так про автоматику никто и не говорит. Я тоже против автопереключения. Но зачем контролировать раскладку клавиатуры, если можно нажать «перенабрать» после написанного слова? Чтобы была привычка перед набором текста все время смотреть в трей? Контр-аргумент: дополнительное время и переключение внимания.
UFO landed and left these words here
Зачем куда-то смотреть, если можно просто выбрать? У меня латиница висит на CapsLock, русский — на ShiftCapsLock, потому мне не нужно никуда смотреть и что-либо переключать пост-фактум, я просто перед набором слова нажимаю CapsLock или ShiftCapsLock и набираю слово, вот и всё. И меня совершенно не волнует какая была раскладка до того.
UFO landed and left these words here
«Машина никогда не поймёт, что ты хотел написать»
Громкое заявление. Напомнило про 640кб.
UFO landed and left these words here
Полностью поддерживаю. Никогда не понимал надобности в этом софте. Тем более если есть хоть какой-то навык набора вслепую
UFO landed and left these words here
UFO landed and left these words here
Linux-way, однако. Если сказал системе sudo shoot the leg, значит надо стрелять без лишних вопросов.
Вы все еще о пунтосвитчере… Его дело продолжила КейбоардНинзя, на смену которой еще лет пять назад пришел просто KeySwitcher.
Последний пока свистоперделками не грешит… :) Правда, все три не всегда успевают переключать языки на автомате, поэтому все работали в свое время в ручном режиме. :)
UFO landed and left these words here
Не помогает. Вот набрал я слепым методом один-два слога (мышечная память — очень быстрая штука), и даже пробел нажал. Теперь надо бекспейсить, жать хоткей и перенабирать. Ну или развить привычку смотреть на трей перед набором. Но мне легче было свитчер накодить.
UFO landed and left these words here
Но ведь даже без ухода в себя, время обработки сигнала от глаз «набрано не в той раскладке» — заведомо больше, чем время набора трех-четырех букв. Особенно это проявляется в адресной строке браузера, где комментарии пишутся в русской раскладке, а урл — в английской.
UFO landed and left these words here
Пишу слогами (не 10-пальцевым методом), но вслепую, лет шесть как минимум, так что ставлю на разницу в скорости восприятия визуальной информации.
UFO landed and left these words here
У меня, например, переключение раскладки на Ctrl+Shift, а ещё я люблю передвигаться по тексту и выделять с помощью Ctrl+Shift+стрелки. И частенько Ctrl+Shift срабатывает не как навигация, а как переключение раскладки. Это к слову о случайном переключении раскладки. Если о контроле — то зачем я освоил слепой набор, чтобы при этом ещё и в экран пялиться неотрывно? =) Я при этом часто отвлекаюсь по сторонам или вообще «вникуда», продумывая текст, который набираю. Или, например, набираю текст в строке поиска, а сам при этом смотрю на страницу следя за тем, где что выделится
У меня, например, переключение раскладки на Ctrl+Shift, а ещё я люблю передвигаться по тексту и выделять с помощью Ctrl+Shift+стрелки.
А это уже называется ССЗБ. Зачем вы себе выбрали переключение раскладок, которое можно нажать случайно, да ещё и не идемпотентное. Повесьте себе английскую раскладку на одну комбинацию, русскую — на другую (у меня — CapsLock и ShiftCapsLock соответственно) и не парьтесь.
Зачем вы себе выбрали переключение раскладок, которое можно нажать случайно
Потому что единственная штатная альтернатива в Windows — Shift+Alt, при которой вообще при каждом нажатии может сработать «Левый Alt = переход в главное меню окна». Ну, или остаться без тильды и буквы Ё.
Я с Windows уже лет пять как не общаюсь, но я не верю, что там больше не осталось программ, которые могут настроить всё «как надо».

То есть я понимаю — почему можно захотеть выбрать CTRL + SHIFT на системах, на которые вы не можете никакого софта ставить (действительно это почти что самое меньшее из всех зол), но тогда и «ультралёгкий переключатель клавиатуры» (требующий ресурсов примерно как приличный офисный пакет лет 15-20 назад, да) вы не поставите. А если уже что-то ставить, то почему не сделать себе удобно?
Что вы хотели этим сказать? =) Я просто объяснил, откуда под Windows проблемы с переключением раскладки. Они раздражают, но не настолько, чтобы ставить какую-то дополнительную утилиту на все компьютеры, за которыми мне приходится работать. Да ещё и страдать потом от этой привычки, когда буду работать за чужим (а у меня это случается регулярно).
Судя по вашему же описанию вы решаете проблему «да ещё и страдать потом от этой привычки, когда буду работать за чужим» путём перевода её в проблему «да ещё и страдать всегда», что как-то недалеко ушло от «выколю себе глаз, пусть у моей тёщи будет зять кривой».

Если вы работаете на чужих компьютерах, то да, приходится мириться и с Ctrl-Shift и с Alt-Shift. Но как же нужно себя не любить, чтобы на своём собственном компьютере всё не отстроить?

У меня есть знакомый, который под себя даже специальную раскладку сделал! Я до этого не предлагаю доходить, но зачем же терпеть проблемы, когда можно этого не делать?
Последнее набранное слово? Ctrl+Backspace? В ворде, фаре, даже здесь в редакторе. :) В командной строке не работает… :)
Не всегда работает — многие поля вставляют при этом какой-то юникодный символ. Но есть Ctrl+Shift+стрелка_влево — выделяет последнее слово, если дальше набирать текст, то он как раз его затрёт.
UFO landed and left these words here
В текстовых редакторах зажатый Ctrl предполагает работу с целым словом. Стрелки — перемещение, Ctrl+Backspace — стереть слово, Ctrl+Shift+(left|right) — выделить слово. Вопрос только в том что редактор считает словом
UFO landed and left these words here
Я бы не сказал, что со словом. контрол-вверх и контрол-вниз перемещают на один абзац
Тогда группой до ближайшего разделителя более высокого порядка.=) По горизонтали разделители — это пробелы, точки и т.д., по вертикали — края абзацев. Для Home и End — края файла.
А я как за автомобилем, когда заводятся на нейтралке, сначала по win+space переключаю раскладки и боковым зрением выбираю нужную.
UFO landed and left these words here
Никак. У меня выставлены две кнопки — русская раскладка и английская раскладка. Каждая из них делает заданную раскладку, а не гоняет её туда-сюда. По этому количество слов «не в той раскладке» стремится к несущественному (в пределах опечаток). Я обычно нажимаю нужную кнопку перед набором текста на нужном мне языке.
Мне кажется, привычка убеждаться в правильной раскладке заранее (кнопкой, или взглядом), лишняя. Но на вкус и цвет.
При тех словах, которые я обычно печатаю, догадаться о раскладке не всегда возможно. Так что проще просто перед печатью говорить, на каком языке ввод, чем потом исправлять «перекодирование» command mode у vim'а.
У меня уже давно плавающий индикатор в виде флага по центру экрана (панель задач сверху и всегда скрыта). Он нужен для того, чтобы знать текущую раскладку в окне. Сам я владею слепой печатью и одна из проблем как раз: знать какая раскладка в окне, куда ты переключился.

Смотреть в трей — зло, смотреть на клаву — зло в квадрате, печатать указательными пальцами — каменный век.

Если ты чувствуешь клаву и знаешь текущую раскладку, то не наберёшь слово неправильно.

Punto Switcher у меня что-то стал криво работать и показывает раскладку не правильно.
Спасибо. Пожелание — добавить переключение выделенного текста по Shift+Pause/Break, это единственное, что мешает выключить Punto и начать проверять в ежедневной работе вашу программу.
Было бы здорово если бы:
1. Можно было самому назначать горячую клавишу. На моем ноутбуке нет клавиши Pause/Break.
2. Иконка скрывалась бы и в трее.
А еще есть вариант — Comfort Keys. Кроме переключателя раскладки содержит менеджер горячих клавиш, менеджер буфера обмена, менеджер текстовых шаблонов ввода(автозамена), автоподсказка слов(типа Т9), экранную клавиатуру, несколько вариантов индикации текущей раскладки. Все ненужные возможности можно отключить. Купил, заменил ею несколько других программ, менеджером хоткеев назначил переключение раскладок так, как удобно мне. Работой доволен.
С очень давних времен пользую Snoop. Опечатка by Dr.Golomin v2.711
Без перделок и свистелок, работает по выделенному тексту и горячей клавише. Очень маленькая и легкая.
Привте. Я, по ходу, подымаю некропост, но.

Заценил переключатель и он мне весьма понравился простотой и отсутствием лишнего.

Но, блин, не могу найти чего-то, что могло мне заменить пунто в таком плане:
У меня стоит три раскладки — английская, русская и украинская. Какую божественную штуку умеет делать пунто?
Там можно отдельно назначить кнопку для цикличного переключения и отдельно для английской раскладки. В итоге, я вешаю на левый контрол английскую, а на правый — остальные раскладки. И для того, чтобы врубить правильную, не нужно помнить, какая раскладка текущая.
Рефлекторно жмёшь левый контрол — у тебя английская, а затем либо один раз правый, либо два, в зависимости, что тебе нужно.

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

зы. Промазал с ответом, коммент для автора поста.
Only those users with full accounts are able to leave comments. Log in, please.