October 2025
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
2/23/18 10:38 pm
Текстовый редактор FOTON для DOS
Охрененная софтина была для 1989 года. Макросы, возможность компиляции программ, не выходя из бассейна из редактора и множество передовых фишек для того времени. А самое главное, в нем есть одна штука, которой до сей поры нет ни в одном более современном текстовом редакторе. Выделение прямоугольных блоков текста! Которые можно переносить, вставлять и т.д. Вот нет такого больше нигде и все, а надо иногда. Причем настолько надо, что периодически пользуюсь сим олдовым произведением программерского искусства. Хоть сам бери и пиши редактор с подобной функцией, блин.UPD. Есть, оказывается. Не знаю насчет vim и emacs, правда, но Notepad++ делает как надо. И Far (по Аlt+стрелки). А вот Студия делает, но не совсем так.
Его собственная внутренняя демка: https://youtu.be/vc5ONlBnPrgСкачатьЭто репост с сайта http://tolik-punkoff.com Оригинал: http://tolik-punkoff.com/2018/02/23/tekstovyj-redaktor-foton-dlya-dos/
2/23/18, 09:43 pm
Ага, выше написали.
Однако совершенно ненужная штука Нужная, и совершенно не для форматирования. Для форматирования и Word есть. Например, когда куча переменных присваивается соответствующим полям элементов управления в форме, а потом из этих элементов надо данные вытащить и куда-нибудь деть, в БД, например, записать.
Вон как тут например где в form_load устанавливаются значения параметров элемента управления, а по нажатию ОК наоборот.
2/24/18, 01:06 am
ага. это называется «i cannot into regular expressions, and my editor sucks cocks».
2/24/18, 01:27 am
Насчет редактора соглашусь, насчет регулярных выражений не уверен, можно, конечно, все контролы в цикле обойти через массив Controls, но чтоб регулярными выражениями Oo. И то, обход в цикле хорош, когда у тебя куча однотипных контролов, text- или checkbox'ы какие-нибудь и в таблицу не добавится какое-нибудь поле, или на форму контрол, что бывает.
2/24/18, 01:33 am
этот код вообще ужасен абсолютно весь, сверху донизу. пример того, как никогда не надо делать data binding.
2/24/18, 01:47 am
А что там такого ужасного, поясни, если не влом, мы подправим. Я, конечно, универ давно закончил, но Лешину программу вполне бы приняли на какой-нибудь практической :) Были там изначально проблемы и косяки, которые Леха сам подправить не мог, но я вроде исправил все.
Впрочем меня больше data binding интересует. Сам всегда так делал - из полей базы берем, в какие нужно переменные записываем, и обратно...
2/24/18, 02:22 am
>программу вполне бы приняли на какой‐нибудь практической тю. если человек умеет делать нормальный код, он не квасит яйца в универах. там учат дебилы, и принимают дебилы. в лучшем случае они отстали лет на сорок, но обычно всё проще, и они не умеют вообще нихуя.
>из полей базы берем, в какие нужно переменные записываем, и обратно вот как только в этой части появляется «руками» (а там всё, блджад, руками сделано), то можно заканчивать, и выгонять из профессии за профнепригодность. и да, использование языка, в котором нельзя отпердолить исходник во время компиляции не оправдание, а дополнительная гиря к профнепригодности.
hint: declarative programming. задача программера — описать маппинг полей в переменные. всё остальное должен сделать компилятор. НИКАКОГО ручного кода быть нахер не должно.
2/24/18, 02:56 am
там учат дебилы, и принимают дебилы Вот поэтому я и спрашиваю, про то, что ужасного в Лешином коде, это ж я его учил, а я программирую от случая к случаю и вообще дикий любитель, когда-то краем биографии зацепивший универ.
2/24/18, 03:04 am
если упростить, то так: когда есть больше одного места, которое надо поправить руками — год говнище. можно спокойно считать, что ты уже проебал какую‐то правку. если говноязык не умеет обрабатывать свой код на стадии компиляции — значит, должен быть генератор, который выплёвывает data bindings на основе декларативного описания. но НИКОГДА не должно быть ручной каши с правкой. потому что делать такое — работа для машины. человек не должен этим заниматься.
2/24/18, 04:39 am
Справедливости ради, контролы к DataSet и вправду можно прибиндить, а вот насчет самодельного класса типа "Задания" в исходнике, я хз. Я и контролы редко биндил, т.к. мне казалось, что нагляднее как раз в коде все сделать. Но мысль вообще правильная, надо посмотреть, как это все можно оптимизировать. Мне ж казалось, что что-то делается не так... Теперь ты меня в этом уверил.
2/24/18, 09:50 am
>можно, конечно, все контролы в цикле обойти через массив Controls,
Не можно, а нужно. То есть вместо всех этих однотипных присваиваний =false/=true вешаешь на контрол флаг, а дальше ANDишь его со значением состояния. И никаких ручных простыней.
2/25/18, 08:06 pm
Это более-менее ясно, хоть тут и немного не тот случай, в форму данные не непосредственно из БД загружаются, а из объекта.
А как вот с объектом быть, как в этой программе, например. Есть класс "Задание" с кучей полей, его описывающих. Состояние объекта сохраняется в DataSet, в классе, соответственно, есть две функции, FromDataSet и ToDataSet, которые забирают/сохраняют все нужные значения полей из/в БД, вот там куча ручных присваиваний и сидит...
2/27/18, 02:02 am
хм... интересно, надо проэкспериментировать.
Ой, чтоб два раза не вставать, может подскажешь. Решаем в четыре головы учебную задачку, че-то никто толком нормального решения не подсказал.
Необходимо написать программу, отображающую все символы заданной кодовой таблицы. С однобайтными кодировками просто. тыц В функции FillTable перебираю 256 байт, генерирую символ Encoding'ом. А как быть с многобайтными кодировками? Пробовал тупо брутфорсом все возможные варианты перебрать, но это получилось жутко долго, может есть способ как нибудь оптимизировать?
2/27/18, 10:16 pm
А что имеется в виду под кодовой таблицей в твоём случае?
То есть для однобайтовых это понятие имело смысл: у нас есть ограниченный набор кодов, которыми надо отобразить более широкий набор символов. Конкретный отображаемый набор и будет являться кодовой таблицей.
Впрочем, есть такие же многобайтовые кодовые таблицы для всякого мунспика -- типа Shift_JIS и GB18030. У них более хитрое устройство -- спецификацию гугли, я в это не лазил никогда
И есть разные варианты Юникода, начиная с UTF-8 и кончая USC-32, которые означают одно и то же, и которых столько, что ими кодировать можно хоть небо, хоть Аллаха. Там всё просто: так как доступное пространство кодировани огроменно, оно разбито на чарты, которые полностью или частично заняты символами. Их всегда можно найти тут: http://www.unicode.org/charts/
2/27/18, 11:28 pm
А что имеется в виду под кодовой таблицей в твоём случае? В моем случае имеется ввиду, что программа должна разобраться, какую кодировку вводит пользователь (в смысле пользователь вводит CodePage, которую принимает Encoding.GetEncoding, или выбирает из списка доступных) и отобразить все символы, которые только есть в виде таблицы, как я сделал в примере для однобайтовых. В принципе, начало положено. Однобайтовые можно отделить от других флагом IsSingleByte, с Юникодовскими я тоже примерно представляю как решить, взять диапазоны для чартов и каждый отображать отдельно.
Остается два вопроса 1. Как отделить варианты Юникода от других кодировок. Флага IsUnicode вроде нет, а как я понямаю, UTF-16, UTF-8, UTF-7 или UTF-32 кодируют одно и то же, только разными способами, посему набор символов один для всех. Можно эту самую страничку с charts прямо с сайта скачать и распарсить. На том же unicode.org вроде где-то был файлик в plaintext или csv с тем же содержимым. 2. Про многобайтовые CP для мунспиков. Или переложить на плечи студента пояснительную записку, по типу "а хз что это такое, спецификации на китайском", или как-то эффективно их "сбрутфорсить", отобразить все возможные комбинации. Получится что-то типа RAW-просмотра, но хоть что-то.
Да, препод ебнутый, студент тупой, мы случайно оказались "в ответе за того, кого приручили", к тому же желательно решить без лямбда-выражений, потому что и студент не дошел еще до них, и мы не сталкивались, и учебник у них столетний по .NET Framework 2.0
2/28/18, 06:51 pm
А вообще под виндой есть charmap, можешь там подсмотреть как сделано.
Студент хоть ебабельный? ;)
2/28/18, 10:03 pm
charmap немного не то, он выводит все символы заданного шрифта. По чармапам видел неплохие примеры на C#
К сожалению нет. Это пожилой и страшненький капитан какого-то второстепенного военного корыта. Он вроде даже на ЛЖР есть.
2/28/18, 10:37 pm
> он выводит все символы заданного шрифта Отнюдь нет. Если тыцнешь галочку advanced, то там как раз появится выпадающий список с кодовыми таблицами.
И, кстати, шрифт это весьма важный вопрос -- если у тебя есть символ, но нет отображающего его глифа, как ты его будешь показывать?
2/28/18, 11:39 pm
>Если тыцнешь галочку advanced Привязанный к данному шрифту. Если шрифт не может в Юникод, как Fixedsys, например, то комбобокс с выбором кодировки будет неактивен.
Важный, потому на этот случай должна быть возможность выбора шрифта (и уже сделана), а так же, какой-нибудь встроенный шрифт, умеющий в Юникод (т.к. Encoding все равно перекодирует все символы в Юникод, ЕМНИС UTF-16, и их уже использует в программе, в т.ч. и отображает).
|